agim-cli 1.2.124 → 1.2.126
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 +116 -0
- package/dist/core/llm/auto-compact.d.ts +33 -0
- package/dist/core/llm/auto-compact.d.ts.map +1 -1
- package/dist/core/llm/auto-compact.js +64 -11
- package/dist/core/llm/auto-compact.js.map +1 -1
- package/dist/core/llm/web-dispatcher.d.ts +19 -0
- package/dist/core/llm/web-dispatcher.d.ts.map +1 -1
- package/dist/core/llm/web-dispatcher.js +24 -0
- package/dist/core/llm/web-dispatcher.js.map +1 -1
- package/dist/web/public/assets/{a2a-DoPVhKvM.js → a2a-DGmlA1kI.js} +3 -3
- package/dist/web/public/assets/{a2a-DoPVhKvM.js.map → a2a-DGmlA1kI.js.map} +1 -1
- package/dist/web/public/assets/{activity-CegIax_4.js → activity-s8eXJqQ-.js} +2 -2
- package/dist/web/public/assets/{activity-CegIax_4.js.map → activity-s8eXJqQ-.js.map} +1 -1
- package/dist/web/public/assets/{admins-BCOor7EH.js → admins-BSDr-HXb.js} +2 -2
- package/dist/web/public/assets/{admins-BCOor7EH.js.map → admins-BSDr-HXb.js.map} +1 -1
- package/dist/web/public/assets/{agents-BLw0_jKM.js → agents-Dp4swPPC.js} +2 -2
- package/dist/web/public/assets/{agents-BLw0_jKM.js.map → agents-Dp4swPPC.js.map} +1 -1
- package/dist/web/public/assets/{approvals-CXQok6Cz.js → approvals-BzShPdMC.js} +2 -2
- package/dist/web/public/assets/{approvals-CXQok6Cz.js.map → approvals-BzShPdMC.js.map} +1 -1
- package/dist/web/public/assets/arrow-up-B0EZtRDW.js +12 -0
- package/dist/web/public/assets/arrow-up-B0EZtRDW.js.map +1 -0
- package/dist/web/public/assets/{asks-xP2Otb6U.js → asks-BQtIx6ky.js} +2 -2
- package/dist/web/public/assets/{asks-xP2Otb6U.js.map → asks-BQtIx6ky.js.map} +1 -1
- package/dist/web/public/assets/audit-BDIEW7z9.js +2 -0
- package/dist/web/public/assets/{audit-DNYwnXg8.js.map → audit-BDIEW7z9.js.map} +1 -1
- package/dist/web/public/assets/{bell-WsDs6GmV.js → bell-Dw3rtAnD.js} +2 -2
- package/dist/web/public/assets/{bell-WsDs6GmV.js.map → bell-Dw3rtAnD.js.map} +1 -1
- package/dist/web/public/assets/{bgjobs-B2BaMU2j.js → bgjobs-DEQOeNl0.js} +3 -3
- package/dist/web/public/assets/{bgjobs-B2BaMU2j.js.map → bgjobs-DEQOeNl0.js.map} +1 -1
- package/dist/web/public/assets/{brain-B8fJEQyw.js → brain-BqR8-Zwv.js} +2 -2
- package/dist/web/public/assets/{brain-B8fJEQyw.js.map → brain-BqR8-Zwv.js.map} +1 -1
- package/dist/web/public/assets/{briefcase-Cwk6Nkg7.js → briefcase-_b-XDwyU.js} +2 -2
- package/dist/web/public/assets/{briefcase-Cwk6Nkg7.js.map → briefcase-_b-XDwyU.js.map} +1 -1
- package/dist/web/public/assets/{chevron-right-D1NFHRso.js → chevron-right-DkURvNIb.js} +2 -2
- package/dist/web/public/assets/{chevron-right-D1NFHRso.js.map → chevron-right-DkURvNIb.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-C5jWAGrG.js → circle-check-D0tRr1mi.js} +2 -2
- package/dist/web/public/assets/{circle-check-C5jWAGrG.js.map → circle-check-D0tRr1mi.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-big-BMc_m83k.js → circle-check-big-C737-DM7.js} +2 -2
- package/dist/web/public/assets/{circle-check-big-BMc_m83k.js.map → circle-check-big-C737-DM7.js.map} +1 -1
- package/dist/web/public/assets/{circle-x-DK_VnW5O.js → circle-x-KWl9wiZn.js} +2 -2
- package/dist/web/public/assets/{circle-x-DK_VnW5O.js.map → circle-x-KWl9wiZn.js.map} +1 -1
- package/dist/web/public/assets/{confirm-dialog-CBbIPd8e.js → confirm-dialog-CyTBb_Dj.js} +2 -2
- package/dist/web/public/assets/{confirm-dialog-CBbIPd8e.js.map → confirm-dialog-CyTBb_Dj.js.map} +1 -1
- package/dist/web/public/assets/data-table-Br_AhsiO.js +7 -0
- package/dist/web/public/assets/data-table-Br_AhsiO.js.map +1 -0
- package/dist/web/public/assets/{dialog-Byj1GNwS.js → dialog-ChaF-Zu5.js} +2 -2
- package/dist/web/public/assets/{dialog-Byj1GNwS.js.map → dialog-ChaF-Zu5.js.map} +1 -1
- package/dist/web/public/assets/{download-PHySCcQT.js → download-B7FO0Y5B.js} +2 -2
- package/dist/web/public/assets/{download-PHySCcQT.js.map → download-B7FO0Y5B.js.map} +1 -1
- package/dist/web/public/assets/{email-BRL-m3Nq.js → email-DIEmIapc.js} +2 -2
- package/dist/web/public/assets/{email-BRL-m3Nq.js.map → email-DIEmIapc.js.map} +1 -1
- package/dist/web/public/assets/{empty-state-C4sK7D2H.js → empty-state-CP9D3-8U.js} +2 -2
- package/dist/web/public/assets/{empty-state-C4sK7D2H.js.map → empty-state-CP9D3-8U.js.map} +1 -1
- package/dist/web/public/assets/{external-link-CFqp81U8.js → external-link-Ba2-bs-3.js} +2 -2
- package/dist/web/public/assets/{external-link-CFqp81U8.js.map → external-link-Ba2-bs-3.js.map} +1 -1
- package/dist/web/public/assets/{eye-znt0VqpD.js → eye-CcL-RUbp.js} +2 -2
- package/dist/web/public/assets/{eye-znt0VqpD.js.map → eye-CcL-RUbp.js.map} +1 -1
- package/dist/web/public/assets/facts-DqwcWab7.js +2 -0
- package/dist/web/public/assets/{facts-C-z_MHuR.js.map → facts-DqwcWab7.js.map} +1 -1
- package/dist/web/public/assets/{goals-DjW7xUUU.js → goals-DBghjX3s.js} +2 -2
- package/dist/web/public/assets/{goals-DjW7xUUU.js.map → goals-DBghjX3s.js.map} +1 -1
- package/dist/web/public/assets/{health-u3wVVbRE.js → health-DV_mII-T.js} +2 -2
- package/dist/web/public/assets/{health-u3wVVbRE.js.map → health-DV_mII-T.js.map} +1 -1
- package/dist/web/public/assets/{heart-pulse-CuRQDV1Z.js → heart-pulse-C3TFU_Th.js} +2 -2
- package/dist/web/public/assets/{heart-pulse-CuRQDV1Z.js.map → heart-pulse-C3TFU_Th.js.map} +1 -1
- package/dist/web/public/assets/{heartbeat-fKsOewwO.js → heartbeat-NRTRObLx.js} +2 -2
- package/dist/web/public/assets/{heartbeat-fKsOewwO.js.map → heartbeat-NRTRObLx.js.map} +1 -1
- package/dist/web/public/assets/{hot-ClV4mA4o.js → hot-BNH34Amf.js} +2 -2
- package/dist/web/public/assets/{hot-ClV4mA4o.js.map → hot-BNH34Amf.js.map} +1 -1
- package/dist/web/public/assets/index-De8LfCtL.css +1 -0
- package/dist/web/public/assets/{index-7yc9y9We.js → index-igqJknUt.js} +36 -36
- package/dist/web/public/assets/index-igqJknUt.js.map +1 -0
- package/dist/web/public/assets/{installed-BtgOuIiG.js → installed-B2goeV3S.js} +2 -2
- package/dist/web/public/assets/{installed-BtgOuIiG.js.map → installed-B2goeV3S.js.map} +1 -1
- package/dist/web/public/assets/jobs-CZSLi1IN.js +2 -0
- package/dist/web/public/assets/{jobs-eiyYlyJG.js.map → jobs-CZSLi1IN.js.map} +1 -1
- package/dist/web/public/assets/{layout-DuYDIza7.js → layout-BOtnmIxG.js} +2 -2
- package/dist/web/public/assets/{layout-DuYDIza7.js.map → layout-BOtnmIxG.js.map} +1 -1
- package/dist/web/public/assets/{layout-Oy_rbq06.js → layout-BboemGJs.js} +2 -2
- package/dist/web/public/assets/{layout-Oy_rbq06.js.map → layout-BboemGJs.js.map} +1 -1
- package/dist/web/public/assets/{layout-BpwuHk-s.js → layout-CBbV3YNj.js} +2 -2
- package/dist/web/public/assets/{layout-BpwuHk-s.js.map → layout-CBbV3YNj.js.map} +1 -1
- package/dist/web/public/assets/layout-CsScgPAG.js +2 -0
- package/dist/web/public/assets/layout-CsScgPAG.js.map +1 -0
- package/dist/web/public/assets/{layout-CQ-wMpff.js → layout-D8Kes1e7.js} +2 -2
- package/dist/web/public/assets/{layout-CQ-wMpff.js.map → layout-D8Kes1e7.js.map} +1 -1
- package/dist/web/public/assets/{llm-Bs-G20DR.js → llm-78WCRfgL.js} +2 -2
- package/dist/web/public/assets/{llm-Bs-G20DR.js.map → llm-78WCRfgL.js.map} +1 -1
- package/dist/web/public/assets/{loader-circle-CwM-6o9f.js → loader-circle-BMJKoafx.js} +2 -2
- package/dist/web/public/assets/{loader-circle-CwM-6o9f.js.map → loader-circle-BMJKoafx.js.map} +1 -1
- package/dist/web/public/assets/{map-pin-MuWUOLcD.js → map-pin-QiHcQUfd.js} +2 -2
- package/dist/web/public/assets/{map-pin-MuWUOLcD.js.map → map-pin-QiHcQUfd.js.map} +1 -1
- package/dist/web/public/assets/{mcp-D9ob2tYX.js → mcp-oeRvo7Aw.js} +2 -2
- package/dist/web/public/assets/{mcp-D9ob2tYX.js.map → mcp-oeRvo7Aw.js.map} +1 -1
- package/dist/web/public/assets/{memos-Bd7EttaU.js → memos-D7RJn57X.js} +3 -3
- package/dist/web/public/assets/{memos-Bd7EttaU.js.map → memos-D7RJn57X.js.map} +1 -1
- package/dist/web/public/assets/{messengers-CbnTejKi.js → messengers-BORNy_SW.js} +2 -2
- package/dist/web/public/assets/{messengers-CbnTejKi.js.map → messengers-BORNy_SW.js.map} +1 -1
- package/dist/web/public/assets/native-agent-CNPVWQ9T.js +12 -0
- package/dist/web/public/assets/native-agent-CNPVWQ9T.js.map +1 -0
- package/dist/web/public/assets/{network-Cdb-7ukZ.js → network-D--kF74M.js} +2 -2
- package/dist/web/public/assets/{network-Cdb-7ukZ.js.map → network-D--kF74M.js.map} +1 -1
- package/dist/web/public/assets/{outbox-BsdSXMUW.js → outbox-BvhcDpdc.js} +3 -3
- package/dist/web/public/assets/{outbox-BsdSXMUW.js.map → outbox-BvhcDpdc.js.map} +1 -1
- package/dist/web/public/assets/{pagination-BuNA-fxU.js → pagination-Dl8k4a91.js} +2 -2
- package/dist/web/public/assets/{pagination-BuNA-fxU.js.map → pagination-Dl8k4a91.js.map} +1 -1
- package/dist/web/public/assets/{persona-V0lGwDex.js → persona-Dy-fuCBR.js} +2 -2
- package/dist/web/public/assets/{persona-V0lGwDex.js.map → persona-Dy-fuCBR.js.map} +1 -1
- package/dist/web/public/assets/{play-BdDkAgqw.js → play-C0gIFP8e.js} +2 -2
- package/dist/web/public/assets/{play-BdDkAgqw.js.map → play-C0gIFP8e.js.map} +1 -1
- package/dist/web/public/assets/{plus-FlZ1UWzO.js → plus-DW6xBDJv.js} +2 -2
- package/dist/web/public/assets/{plus-FlZ1UWzO.js.map → plus-DW6xBDJv.js.map} +1 -1
- package/dist/web/public/assets/{policy-CpWgbIqb.js → policy-DW_kZo8b.js} +2 -2
- package/dist/web/public/assets/{policy-CpWgbIqb.js.map → policy-DW_kZo8b.js.map} +1 -1
- package/dist/web/public/assets/{refresh-ccw-l9Z6wukO.js → refresh-ccw-D6fZ_xYR.js} +2 -2
- package/dist/web/public/assets/{refresh-ccw-l9Z6wukO.js.map → refresh-ccw-D6fZ_xYR.js.map} +1 -1
- package/dist/web/public/assets/{reminders-Coh0D3Fv.js → reminders-1V1_6Rij.js} +3 -3
- package/dist/web/public/assets/{reminders-Coh0D3Fv.js.map → reminders-1V1_6Rij.js.map} +1 -1
- package/dist/web/public/assets/{save-CllPj34m.js → save-S79SG1Qr.js} +2 -2
- package/dist/web/public/assets/{save-CllPj34m.js.map → save-S79SG1Qr.js.map} +1 -1
- package/dist/web/public/assets/{schedules-0rlWAXrz.js → schedules-BsknKkCe.js} +3 -3
- package/dist/web/public/assets/{schedules-0rlWAXrz.js.map → schedules-BsknKkCe.js.map} +1 -1
- package/dist/web/public/assets/{search-DDbspILM.js → search-CKf3g91u.js} +2 -2
- package/dist/web/public/assets/{search-DDbspILM.js.map → search-CKf3g91u.js.map} +1 -1
- package/dist/web/public/assets/search-HQWlCBKK.js +17 -0
- package/dist/web/public/assets/search-HQWlCBKK.js.map +1 -0
- package/dist/web/public/assets/{security-SlM_YhUr.js → security-B8sBUf6e.js} +2 -2
- package/dist/web/public/assets/{security-SlM_YhUr.js.map → security-B8sBUf6e.js.map} +1 -1
- package/dist/web/public/assets/{service-BnbEtpH9.js → service-CB-aBmLS.js} +2 -2
- package/dist/web/public/assets/{service-BnbEtpH9.js.map → service-CB-aBmLS.js.map} +1 -1
- package/dist/web/public/assets/{status-badge-DKc8aeGe.js → status-badge-BYFw2Sxd.js} +2 -2
- package/dist/web/public/assets/{status-badge-DKc8aeGe.js.map → status-badge-BYFw2Sxd.js.map} +1 -1
- package/dist/web/public/assets/{subtasks-2PcTOMXV.js → subtasks-CBrBqNyr.js} +3 -3
- package/dist/web/public/assets/{subtasks-2PcTOMXV.js.map → subtasks-CBrBqNyr.js.map} +1 -1
- package/dist/web/public/assets/{table-BIc6RbM1.js → table-D5hzEZ1F.js} +2 -2
- package/dist/web/public/assets/{table-BIc6RbM1.js.map → table-D5hzEZ1F.js.map} +1 -1
- package/dist/web/public/assets/{topn-Bn-Y2tpa.js → topn-7_FUU4Zs.js} +2 -2
- package/dist/web/public/assets/{topn-Bn-Y2tpa.js.map → topn-7_FUU4Zs.js.map} +1 -1
- package/dist/web/public/assets/{trash-2-UPbZm-9k.js → trash-2-BkaJ1KrC.js} +2 -2
- package/dist/web/public/assets/{trash-2-UPbZm-9k.js.map → trash-2-BkaJ1KrC.js.map} +1 -1
- package/dist/web/public/assets/{use-background-tasks-DyaXWxmJ.js → use-background-tasks-Crs1dlm6.js} +2 -2
- package/dist/web/public/assets/{use-background-tasks-DyaXWxmJ.js.map → use-background-tasks-Crs1dlm6.js.map} +1 -1
- package/dist/web/public/assets/{use-llm-admin-DO9nbZeO.js → use-llm-admin-CQ3lbm_y.js} +2 -2
- package/dist/web/public/assets/{use-llm-admin-DO9nbZeO.js.map → use-llm-admin-CQ3lbm_y.js.map} +1 -1
- package/dist/web/public/assets/{use-memory-Bf-AR2xS.js → use-memory-CMOa52NU.js} +2 -2
- package/dist/web/public/assets/{use-memory-Bf-AR2xS.js.map → use-memory-CMOa52NU.js.map} +1 -1
- package/dist/web/public/assets/{use-observability-Beido9rh.js → use-observability-BTRXt3kO.js} +2 -2
- package/dist/web/public/assets/{use-observability-Beido9rh.js.map → use-observability-BTRXt3kO.js.map} +1 -1
- package/dist/web/public/assets/use-settings-D2TsP4vN.js +2 -0
- package/dist/web/public/assets/use-settings-D2TsP4vN.js.map +1 -0
- package/dist/web/public/assets/{use-workspace-BoRhOeiK.js → use-workspace-BobEMtXw.js} +2 -2
- package/dist/web/public/assets/{use-workspace-BoRhOeiK.js.map → use-workspace-BobEMtXw.js.map} +1 -1
- package/dist/web/public/assets/{useQuery-dWspFqPU.js → useQuery-B6dy499I.js} +2 -2
- package/dist/web/public/assets/{useQuery-dWspFqPU.js.map → useQuery-B6dy499I.js.map} +1 -1
- package/dist/web/public/assets/{vector-DX4RPkXe.js → vector-v7xjphrN.js} +2 -2
- package/dist/web/public/assets/{vector-DX4RPkXe.js.map → vector-v7xjphrN.js.map} +1 -1
- package/dist/web/public/assets/{viewer-CRv__j_2.js → viewer-BSC-2Lhp.js} +2 -2
- package/dist/web/public/assets/{viewer-CRv__j_2.js.map → viewer-BSC-2Lhp.js.map} +1 -1
- package/dist/web/public/assets/{workspace-DU5F-0GM.js → workspace-BtGPH9Sx.js} +2 -2
- package/dist/web/public/assets/{workspace-DU5F-0GM.js.map → workspace-BtGPH9Sx.js.map} +1 -1
- package/dist/web/public/assets/{workspaces-DCEYab_X.js → workspaces-_PTrUhIq.js} +2 -2
- package/dist/web/public/assets/{workspaces-DCEYab_X.js.map → workspaces-_PTrUhIq.js.map} +1 -1
- package/dist/web/public/assets/{x-CioZGQfq.js → x-BHW436CN.js} +2 -2
- package/dist/web/public/assets/{x-CioZGQfq.js.map → x-BHW436CN.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 +120 -1
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/web/public/assets/audit-DNYwnXg8.js +0 -2
- package/dist/web/public/assets/data-table-Dw8WxmGK.js +0 -17
- package/dist/web/public/assets/data-table-Dw8WxmGK.js.map +0 -1
- package/dist/web/public/assets/facts-C-z_MHuR.js +0 -2
- package/dist/web/public/assets/index-7yc9y9We.js.map +0 -1
- package/dist/web/public/assets/index-hiagPF9i.css +0 -1
- package/dist/web/public/assets/jobs-eiyYlyJG.js +0 -2
- package/dist/web/public/assets/layout-CChyylLw.js +0 -2
- package/dist/web/public/assets/layout-CChyylLw.js.map +0 -1
- package/dist/web/public/assets/native-agent-BmBH1fBn.js +0 -7
- package/dist/web/public/assets/native-agent-BmBH1fBn.js.map +0 -1
- package/dist/web/public/assets/use-settings-J28YEhhv.js +0 -2
- package/dist/web/public/assets/use-settings-J28YEhhv.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agim-cli",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.126",
|
|
4
4
|
"description": "Agim (阿吉姆) — universal messenger-to-agent bridge. Connect WeChat / Feishu / DingTalk / Email to Claude Code / Codex / OpenCode, or any custom agent via ACP. Installs the `agim` command.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{ae as A,ad as O,V as t,B as F,c as I,L as P,I as B,t as _}from"./index-7yc9y9We.js";import{e as i}from"./react-C9F3QeMB.js";import{D as k}from"./data-table-Dw8WxmGK.js";import{E as U}from"./empty-state-C4sK7D2H.js";import{u as $}from"./use-observability-Beido9rh.js";import{L as q}from"./loader-circle-CwM-6o9f.js";import{R as z}from"./refresh-ccw-l9Z6wukO.js";import{A as H}from"./activity-CegIax_4.js";import"./table-BIc6RbM1.js";import"./useQuery-dWspFqPU.js";const V=300;function st(){const{t:e}=A(["observability","common"]),[s,d]=O(),c=Math.max(1,Number(s.get("days"))||7),n=s.get("agent")??"",l=s.get("platform")??"",r=s.get("user")??"",o=s.get("intent")??"",[u,j]=i.useState(n),[x,b]=i.useState(l),[f,w]=i.useState(r),[h,C]=i.useState(o);i.useEffect(()=>{j(n)},[n]),i.useEffect(()=>{b(l)},[l]),i.useEffect(()=>{w(r)},[r]),i.useEffect(()=>{C(o)},[o]),i.useEffect(()=>{const a=window.setTimeout(()=>{R({agent:u||null,platform:x||null,user:f||null,intent:h||null})},V);return()=>window.clearTimeout(a)},[u,x,f,h]);const E=i.useMemo(()=>({days:c,limit:200,...n?{agent:n}:{},...l?{platform:l}:{},...r?{user:r}:{},...o?{intent:o}:{}}),[c,n,l,r,o]),{data:v,isLoading:S,isFetching:y,refetch:M}=$(E),L=v?.invocations??[],p=v?.stats;function R(a){const g=new URLSearchParams(s);for(const[D,N]of Object.entries(a))N==null||N===""?g.delete(D):g.set(D,N);d(g,{replace:!0})}const T=i.useMemo(()=>[{id:"ts",header:e("audit.col.ts"),cell:a=>t.jsx("span",{className:"text-text-dim text-xs tabular-nums",children:G(a.ts)}),headClassName:"w-32"},{id:"agent",header:e("audit.col.agent"),cell:a=>t.jsx("span",{className:"font-medium",children:a.agent}),headClassName:"w-32"},{id:"platform",header:e("audit.col.platform"),cell:a=>t.jsx("span",{className:"text-text-dim",children:a.platform}),headClassName:"w-24",hideOnMobile:!0},{id:"user",header:e("audit.col.user"),cell:a=>t.jsx("span",{className:"font-mono text-xs text-text-dim line-clamp-1",children:a.user_id}),headClassName:"w-32",hideOnMobile:!0},{id:"intent",header:e("audit.col.intent"),cell:a=>t.jsx("span",{className:"text-text-dim line-clamp-1",children:a.intent||"—"}),asCardTitle:!0},{id:"duration",header:e("audit.col.duration"),cell:a=>t.jsxs("span",{className:"tabular-nums text-text-dim",children:[Math.round(a.duration_ms),"ms"]}),headClassName:"w-20"},{id:"cost",header:e("audit.col.cost"),cell:a=>t.jsxs("span",{className:"tabular-nums text-text-dim",children:["$",a.cost.toFixed(4)]}),headClassName:"w-24",hideOnMobile:!0},{id:"outcome",header:e("audit.col.outcome"),cell:a=>t.jsx(F,{variant:a.success?"success":"danger",title:a.error??"",children:a.success?e("audit.outcome.ok"):e("audit.outcome.fail")}),headClassName:"w-20"}],[e]);return t.jsxs("div",{className:"mx-auto flex max-w-7xl flex-col gap-4",children:[t.jsx("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("audit.title")}),t.jsxs(I,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>M(),disabled:y,"aria-label":e("actions.refresh",{ns:"common"}),children:[y?t.jsx(q,{className:"h-4 w-4 animate-spin"}):t.jsx(z,{className:"h-4 w-4"}),t.jsx("span",{className:"hidden sm:inline",children:e("actions.refresh",{ns:"common"})})]})]})}),p&&t.jsxs("div",{className:"flex flex-wrap items-center gap-3 text-sm",children:[t.jsxs("span",{className:"text-text-dim",children:[e("audit.stats.total"),": ",t.jsx("span",{className:"tabular-nums font-medium text-text",children:p.total})]}),t.jsxs("span",{className:"text-text-dim",children:[e("audit.stats.totalCost"),": ",t.jsxs("span",{className:"tabular-nums font-medium text-text",children:["$",p.totalCost.toFixed(4)]})]})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-4",children:[t.jsx(m,{id:"agent",label:e("audit.filter.agent"),value:u,onChange:j}),t.jsx(m,{id:"platform",label:e("audit.filter.platform"),value:x,onChange:b}),t.jsx(m,{id:"user",label:e("audit.filter.user"),value:f,onChange:w}),t.jsx(m,{id:"intent",label:e("audit.filter.intent"),value:h,onChange:C})]}),t.jsx(k,{columns:T,rows:L,getRowId:a=>String(a.id),loading:S,emptyState:t.jsx(U,{icon:t.jsx(H,{}),title:e("audit.empty.title"),description:e("audit.empty.description")})})]})}function m({id:e,label:s,value:d,onChange:c}){return t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx(P,{htmlFor:e,className:"text-xs text-text-dim",children:s}),t.jsx(B,{id:e,value:d,onChange:n=>c(n.target.value),className:_("h-9")})]})}function G(e){try{const s=new Date(e);return Number.isNaN(s.getTime())?e:s.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return e}}export{st as default};
|
|
2
|
-
//# sourceMappingURL=audit-DNYwnXg8.js.map
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import{z as g,ae as V,V as e,t as k}from"./index-7yc9y9We.js";import{e as _}from"./react-C9F3QeMB.js";import{T as H,d as P,e as u,c as w,a as $,b}from"./table-BIc6RbM1.js";import{E as M}from"./empty-state-C4sK7D2H.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 z=g("ArrowDown",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]);/**
|
|
7
|
-
* @license lucide-react v0.469.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const B=g("ArrowUpDown",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]]);/**
|
|
12
|
-
* @license lucide-react v0.469.0 - ISC
|
|
13
|
-
*
|
|
14
|
-
* This source code is licensed under the ISC license.
|
|
15
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const F=g("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);function L({columns:i,rows:d,getRowId:h,loading:N=!1,loadingRows:y=5,emptyState:T,onRowClick:m,selection:n,onSelectionChange:v,sort:x,onSortChange:p,className:E}){const{t:f}=V("common"),t=n!==void 0&&v!==void 0,j=t&&d.length>0&&d.every(a=>n.has(h(a))),A=t&&d.some(a=>n.has(h(a)))&&!j;function U(){if(!t)return;const a=new Set(n);if(j)for(const s of d)a.delete(h(s));else for(const s of d)a.add(h(s));v(a)}function C(a){if(!t)return;const s=new Set(n);s.has(a)?s.delete(a):s.add(a),v(s)}function q(a){p&&(!x||x.id!==a?p({id:a,dir:"asc"}):x.dir==="asc"?p({id:a,dir:"desc"}):p(null))}return e.jsxs("div",{className:k("w-full",E),children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(H,{children:[e.jsx(P,{children:e.jsxs(u,{children:[t&&e.jsx(w,{className:"w-10",children:e.jsx("input",{type:"checkbox",role:"checkbox","aria-label":f("table.selectAll"),"aria-checked":A?"mixed":j,checked:j,ref:a=>{a&&(a.indeterminate=A)},onChange:U,disabled:N||d.length===0,className:"h-4 w-4 accent-accent cursor-pointer"})}),i.map(a=>e.jsx(w,{className:a.headClassName,children:a.sortable&&p?e.jsxs("button",{type:"button",onClick:()=>q(a.id),className:k("inline-flex items-center gap-1","uppercase tracking-wide","hover:text-text transition-colors"),children:[a.header,x?.id===a.id?x.dir==="asc"?e.jsx(F,{className:"h-3 w-3"}):e.jsx(z,{className:"h-3 w-3"}):e.jsx(B,{className:"h-3 w-3 opacity-50"})]}):a.header},a.id))]})}),e.jsx($,{children:N?Array.from({length:y}).map((a,s)=>e.jsxs(u,{children:[t&&e.jsx(b,{}),i.map(r=>e.jsx(b,{className:r.cellClassName,children:e.jsx("div",{className:"h-4 w-3/4 rounded bg-surface-2 animate-pulse"})},r.id))]},`skeleton-${s}`)):d.length===0?e.jsx(u,{children:e.jsx(b,{colSpan:i.length+(t?1:0),className:"p-0",children:T??e.jsx(M,{title:f("states.empty")})})}):d.map((a,s)=>{const r=h(a),o=t&&n.has(r);return e.jsxs(u,{"data-state":o?"selected":void 0,onClick:m?()=>m(a):void 0,className:m?"cursor-pointer":void 0,children:[t&&e.jsx(b,{onClick:c=>c.stopPropagation(),children:e.jsx("input",{type:"checkbox",role:"checkbox","aria-label":f("table.selectRow"),checked:o,onChange:()=>C(r),className:"h-4 w-4 accent-accent cursor-pointer"})}),i.map(c=>e.jsx(b,{className:c.cellClassName,children:c.cell(a,s)},c.id))]},r)})})]})}),e.jsx("div",{className:"md:hidden flex flex-col gap-2",children:N?Array.from({length:Math.min(3,y)}).map((a,s)=>e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3 space-y-2",children:[e.jsx("div",{className:"h-4 w-1/2 rounded bg-surface-2 animate-pulse"}),e.jsx("div",{className:"h-3 w-3/4 rounded bg-surface-2 animate-pulse"}),e.jsx("div",{className:"h-3 w-2/3 rounded bg-surface-2 animate-pulse"})]},`mskel-${s}`)):d.length===0?T??e.jsx(M,{title:f("states.empty")}):d.map((a,s)=>{const r=h(a),o=t&&n.has(r),c=i.find(l=>l.asCardTitle)??i[0],D=i.filter(l=>!l.asCardTitle&&!l.hideOnMobile&&l.id!==c?.id);return e.jsxs("div",{"data-state":o?"selected":void 0,onClick:m?()=>m(a):void 0,className:k("rounded-md border bg-surface p-3",o?"border-accent":"border-border",m&&"cursor-pointer active:bg-surface-hover"),children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[c&&e.jsx("div",{className:"font-medium text-text",children:c.cell(a,s)}),t&&e.jsx("input",{type:"checkbox",role:"checkbox","aria-label":f("table.selectRow"),checked:!!o,onChange:()=>C(r),onClick:l=>l.stopPropagation(),className:"h-4 w-4 accent-accent cursor-pointer mt-0.5"})]}),D.length>0&&e.jsx("dl",{className:"mt-2 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-sm",children:D.map(l=>e.jsxs(_.Fragment,{children:[e.jsx("dt",{className:"text-text-dim",children:l.header}),e.jsx("dd",{className:"text-text",children:l.cell(a,s)})]},l.id))})]},r)})})]})}L.displayName="DataTable";export{L as D};
|
|
17
|
-
//# sourceMappingURL=data-table-Dw8WxmGK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data-table-Dw8WxmGK.js","sources":["../../node_modules/lucide-react/dist/esm/icons/arrow-down.js","../../node_modules/lucide-react/dist/esm/icons/arrow-up-down.js","../../node_modules/lucide-react/dist/esm/icons/arrow-up.js","../../src/components/common/data-table.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 ArrowDown = createLucideIcon(\"ArrowDown\", [\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }],\n [\"path\", { d: \"m19 12-7 7-7-7\", key: \"1idqje\" }]\n]);\n\nexport { ArrowDown as default };\n//# sourceMappingURL=arrow-down.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowUpDown = createLucideIcon(\"ArrowUpDown\", [\n [\"path\", { d: \"m21 16-4 4-4-4\", key: \"f6ql7i\" }],\n [\"path\", { d: \"M17 20V4\", key: \"1ejh1v\" }],\n [\"path\", { d: \"m3 8 4-4 4 4\", key: \"11wl7u\" }],\n [\"path\", { d: \"M7 4v16\", key: \"1glfcx\" }]\n]);\n\nexport { ArrowUpDown as default };\n//# sourceMappingURL=arrow-up-down.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowUp = createLucideIcon(\"ArrowUp\", [\n [\"path\", { d: \"m5 12 7-7 7 7\", key: \"hav0vg\" }],\n [\"path\", { d: \"M12 19V5\", key: \"x0mq9r\" }]\n]);\n\nexport { ArrowUp as default };\n//# sourceMappingURL=arrow-up.js.map\n","/**\n * DataTable<T> — generic table for the M2 list pages (jobs /\n * approvals / reminders / memos). Wraps the primitive Table with:\n *\n * * Type-safe `columns` definition — header label, cell renderer,\n * optional sortable flag, optional className for both header / cell.\n * * Loading state — N skeleton rows so layout doesn't jump.\n * * Empty state — drops in <EmptyState> below the header.\n * * Row selection (optional) — `selection` + `onSelectionChange`;\n * caller manages the Set so it can be URL-state or zustand.\n * * Sort — controlled `sort: { id, dir }` + `onSortChange`. Same\n * rationale as Pagination: the URL is the source of truth.\n * * Mobile fallback — below `md` the table swaps to a vertical card\n * list. Card view uses the same column definitions but stacks\n * label / value pairs instead of a row.\n *\n * What this deliberately does NOT do:\n * * No virtualization. Expected row counts at M2 are ≤ 200; if a\n * page outgrows that, swap the render to react-window from inside\n * here without changing callers.\n * * No column resizing / hiding UX. shadcn columns are static.\n * * No filters. Filters live above the table in a dedicated\n * FilterBar (next-PR concern).\n *\n * Why hand-rolled instead of @tanstack/table-core:\n * For the M2 surface area (4 flat-data pages, ≤ 200 rows each),\n * pulling in a 13 KB head-table dep would add abstraction we don't\n * use. If virtualisation or column-pinning becomes a need, the\n * columns prop here maps 1:1 to tanstack's ColumnDef and we can\n * migrate without changing call sites.\n */\n\nimport * as React from 'react'\nimport { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react'\nimport { useTranslation } from 'react-i18next'\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table'\nimport { EmptyState } from '@/components/common/empty-state'\nimport { cn } from '@/lib/utils'\n\nexport type SortDir = 'asc' | 'desc'\n\nexport interface SortState {\n id: string\n dir: SortDir\n}\n\nexport interface DataTableColumn<T> {\n /** Stable id for sort + selection. Usually matches the row key. */\n id: string\n /** Header label. ReactNode so callers can pass <Tooltip> etc. */\n header: React.ReactNode\n /** Cell renderer. Receives the row and its index. */\n cell: (row: T, index: number) => React.ReactNode\n /** When true, the header becomes a sort button. */\n sortable?: boolean\n /** Optional className applied to the <th>. */\n headClassName?: string\n /** Optional className applied to every <td> in this column. */\n cellClassName?: string\n /** Mobile-card variant: when set, this column's value renders\n * prominently as the card's title row. Only one column should\n * use this; the rest become label/value pairs. */\n asCardTitle?: boolean\n /** Hide this column on the mobile card view. */\n hideOnMobile?: boolean\n}\n\nexport interface DataTableProps<T> {\n columns: DataTableColumn<T>[]\n rows: T[]\n /** Stable per-row id. Used for selection + React keys. */\n getRowId: (row: T) => string\n loading?: boolean\n /** Number of skeleton rows to show during loading. Default 5. */\n loadingRows?: number\n /** Empty-state slot. When omitted a default EmptyState renders. */\n emptyState?: React.ReactNode\n /** Click handler for the whole row — opens detail drawer, navigates, etc. */\n onRowClick?: (row: T) => void\n /** Controlled selection. When defined, a checkbox column auto-renders. */\n selection?: Set<string>\n onSelectionChange?: (next: Set<string>) => void\n /** Controlled sort. When omitted, sortable headers stay inert. */\n sort?: SortState | null\n onSortChange?: (next: SortState | null) => void\n className?: string\n}\n\nfunction DataTable<T>({\n columns,\n rows,\n getRowId,\n loading = false,\n loadingRows = 5,\n emptyState,\n onRowClick,\n selection,\n onSelectionChange,\n sort,\n onSortChange,\n className,\n}: DataTableProps<T>): JSX.Element {\n const { t } = useTranslation('common')\n const selectable = selection !== undefined && onSelectionChange !== undefined\n\n const allChecked = selectable && rows.length > 0 && rows.every((r) => selection.has(getRowId(r)))\n const someChecked = selectable && rows.some((r) => selection.has(getRowId(r))) && !allChecked\n\n function toggleAll(): void {\n if (!selectable) return\n const next = new Set(selection)\n if (allChecked) {\n for (const r of rows) next.delete(getRowId(r))\n } else {\n for (const r of rows) next.add(getRowId(r))\n }\n onSelectionChange(next)\n }\n\n function toggleRow(id: string): void {\n if (!selectable) return\n const next = new Set(selection)\n if (next.has(id)) next.delete(id)\n else next.add(id)\n onSelectionChange(next)\n }\n\n function toggleSort(colId: string): void {\n if (!onSortChange) return\n if (!sort || sort.id !== colId) {\n onSortChange({ id: colId, dir: 'asc' })\n } else if (sort.dir === 'asc') {\n onSortChange({ id: colId, dir: 'desc' })\n } else {\n onSortChange(null)\n }\n }\n\n return (\n <div className={cn('w-full', className)}>\n {/* Desktop / tablet — table view */}\n <div className=\"hidden md:block\">\n <Table>\n <TableHeader>\n <TableRow>\n {selectable && (\n <TableHead className=\"w-10\">\n <input\n type=\"checkbox\"\n role=\"checkbox\"\n aria-label={t('table.selectAll')}\n aria-checked={someChecked ? 'mixed' : allChecked}\n checked={allChecked}\n ref={(el) => {\n if (el) el.indeterminate = someChecked\n }}\n onChange={toggleAll}\n disabled={loading || rows.length === 0}\n className=\"h-4 w-4 accent-accent cursor-pointer\"\n />\n </TableHead>\n )}\n {columns.map((c) => (\n <TableHead key={c.id} className={c.headClassName}>\n {c.sortable && onSortChange ? (\n <button\n type=\"button\"\n onClick={() => toggleSort(c.id)}\n className={cn(\n 'inline-flex items-center gap-1',\n 'uppercase tracking-wide',\n 'hover:text-text transition-colors',\n )}\n >\n {c.header}\n {sort?.id === c.id ? (\n sort.dir === 'asc' ? <ArrowUp className=\"h-3 w-3\" /> : <ArrowDown className=\"h-3 w-3\" />\n ) : (\n <ArrowUpDown className=\"h-3 w-3 opacity-50\" />\n )}\n </button>\n ) : (\n c.header\n )}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {loading\n ? Array.from({ length: loadingRows }).map((_, i) => (\n <TableRow key={`skeleton-${i}`}>\n {selectable && <TableCell />}\n {columns.map((c) => (\n <TableCell key={c.id} className={c.cellClassName}>\n <div className=\"h-4 w-3/4 rounded bg-surface-2 animate-pulse\" />\n </TableCell>\n ))}\n </TableRow>\n ))\n : rows.length === 0\n ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (selectable ? 1 : 0)}\n className=\"p-0\"\n >\n {emptyState ?? <EmptyState title={t('states.empty')} />}\n </TableCell>\n </TableRow>\n )\n : rows.map((row, i) => {\n const id = getRowId(row)\n const isSelected = selectable && selection.has(id)\n return (\n <TableRow\n key={id}\n data-state={isSelected ? 'selected' : undefined}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n className={onRowClick ? 'cursor-pointer' : undefined}\n >\n {selectable && (\n <TableCell onClick={(e) => e.stopPropagation()}>\n <input\n type=\"checkbox\"\n role=\"checkbox\"\n aria-label={t('table.selectRow')}\n checked={isSelected}\n onChange={() => toggleRow(id)}\n className=\"h-4 w-4 accent-accent cursor-pointer\"\n />\n </TableCell>\n )}\n {columns.map((c) => (\n <TableCell key={c.id} className={c.cellClassName}>\n {c.cell(row, i)}\n </TableCell>\n ))}\n </TableRow>\n )\n })}\n </TableBody>\n </Table>\n </div>\n\n {/* Mobile — card view */}\n <div className=\"md:hidden flex flex-col gap-2\">\n {loading\n ? Array.from({ length: Math.min(3, loadingRows) }).map((_, i) => (\n <div\n key={`mskel-${i}`}\n className=\"rounded-md border border-border bg-surface p-3 space-y-2\"\n >\n <div className=\"h-4 w-1/2 rounded bg-surface-2 animate-pulse\" />\n <div className=\"h-3 w-3/4 rounded bg-surface-2 animate-pulse\" />\n <div className=\"h-3 w-2/3 rounded bg-surface-2 animate-pulse\" />\n </div>\n ))\n : rows.length === 0\n ? (emptyState ?? <EmptyState title={t('states.empty')} />)\n : rows.map((row, i) => {\n const id = getRowId(row)\n const isSelected = selectable && selection.has(id)\n const titleCol = columns.find((c) => c.asCardTitle) ?? columns[0]\n const fieldCols = columns.filter((c) => !c.asCardTitle && !c.hideOnMobile && c.id !== titleCol?.id)\n return (\n <div\n key={id}\n data-state={isSelected ? 'selected' : undefined}\n onClick={onRowClick ? () => onRowClick(row) : undefined}\n className={cn(\n 'rounded-md border bg-surface p-3',\n isSelected ? 'border-accent' : 'border-border',\n onRowClick && 'cursor-pointer active:bg-surface-hover',\n )}\n >\n <div className=\"flex items-start justify-between gap-2\">\n {titleCol && (\n <div className=\"font-medium text-text\">{titleCol.cell(row, i)}</div>\n )}\n {selectable && (\n <input\n type=\"checkbox\"\n role=\"checkbox\"\n aria-label={t('table.selectRow')}\n checked={!!isSelected}\n onChange={() => toggleRow(id)}\n onClick={(e) => e.stopPropagation()}\n className=\"h-4 w-4 accent-accent cursor-pointer mt-0.5\"\n />\n )}\n </div>\n {fieldCols.length > 0 && (\n <dl className=\"mt-2 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-sm\">\n {fieldCols.map((c) => (\n <React.Fragment key={c.id}>\n <dt className=\"text-text-dim\">{c.header}</dt>\n <dd className=\"text-text\">{c.cell(row, i)}</dd>\n </React.Fragment>\n ))}\n </dl>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\nDataTable.displayName = 'DataTable'\n\nexport { DataTable }\n"],"names":["ArrowDown","createLucideIcon","ArrowUpDown","ArrowUp","DataTable","columns","rows","getRowId","loading","loadingRows","emptyState","onRowClick","selection","onSelectionChange","sort","onSortChange","className","t","useTranslation","selectable","allChecked","r","someChecked","toggleAll","next","toggleRow","id","toggleSort","colId","cn","jsx","jsxs","Table","TableHeader","TableRow","TableHead","el","c","TableBody","_","i","TableCell","EmptyState","row","isSelected","e","titleCol","fieldCols","React.Fragment"],"mappings":"0NAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMA,EAAYC,EAAiB,YAAa,CAC9C,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,CACjD,CAAC,ECZD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAMC,EAAcD,EAAiB,cAAe,CAClD,CAAC,OAAQ,CAAE,EAAG,iBAAkB,IAAK,QAAQ,CAAE,EAC/C,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,EACzC,CAAC,OAAQ,CAAE,EAAG,eAAgB,IAAK,QAAQ,CAAE,EAC7C,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAQ,CAAE,CAC1C,CAAC,ECdD;AAAA;AAAA;AAAA;AAAA;AAAA,GASA,MAAME,EAAUF,EAAiB,UAAW,CAC1C,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAQ,CAAE,EAC9C,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,CAAC,ECmFD,SAASG,EAAa,CACpB,QAAAC,EACA,KAAAC,EACA,SAAAC,EACA,QAAAC,EAAU,GACV,YAAAC,EAAc,EACd,WAAAC,EACA,WAAAC,EACA,UAAAC,EACA,kBAAAC,EACA,KAAAC,EACA,aAAAC,EACA,UAAAC,CACF,EAAmC,CACjC,KAAM,CAAE,EAAAC,CAAA,EAAMC,EAAe,QAAQ,EAC/BC,EAAaP,IAAc,QAAaC,IAAsB,OAE9DO,EAAaD,GAAcb,EAAK,OAAS,GAAKA,EAAK,MAAOe,GAAMT,EAAU,IAAIL,EAASc,CAAC,CAAC,CAAC,EAC1FC,EAAcH,GAAcb,EAAK,KAAMe,GAAMT,EAAU,IAAIL,EAASc,CAAC,CAAC,CAAC,GAAK,CAACD,EAEnF,SAASG,GAAkB,CACzB,GAAI,CAACJ,EAAY,OACjB,MAAMK,EAAO,IAAI,IAAIZ,CAAS,EAC9B,GAAIQ,EACF,UAAWC,KAAKf,EAAMkB,EAAK,OAAOjB,EAASc,CAAC,CAAC,MAE7C,WAAWA,KAAKf,EAAMkB,EAAK,IAAIjB,EAASc,CAAC,CAAC,EAE5CR,EAAkBW,CAAI,CACxB,CAEA,SAASC,EAAUC,EAAkB,CACnC,GAAI,CAACP,EAAY,OACjB,MAAMK,EAAO,IAAI,IAAIZ,CAAS,EAC1BY,EAAK,IAAIE,CAAE,EAAGF,EAAK,OAAOE,CAAE,EAC3BF,EAAK,IAAIE,CAAE,EAChBb,EAAkBW,CAAI,CACxB,CAEA,SAASG,EAAWC,EAAqB,CAClCb,IACD,CAACD,GAAQA,EAAK,KAAOc,EACvBb,EAAa,CAAE,GAAIa,EAAO,IAAK,MAAO,EAC7Bd,EAAK,MAAQ,MACtBC,EAAa,CAAE,GAAIa,EAAO,IAAK,OAAQ,EAEvCb,EAAa,IAAI,EAErB,CAEA,cACG,MAAA,CAAI,UAAWc,EAAG,SAAUb,CAAS,EAEpC,SAAA,CAAAc,MAAC,MAAA,CAAI,UAAU,kBACb,SAAAC,EAAAA,KAACC,EAAA,CACC,SAAA,CAAAF,EAAAA,IAACG,EAAA,CACC,gBAACC,EAAA,CACE,SAAA,CAAAf,GACCW,EAAAA,IAACK,EAAA,CAAU,UAAU,OACnB,SAAAL,EAAAA,IAAC,QAAA,CACC,KAAK,WACL,KAAK,WACL,aAAYb,EAAE,iBAAiB,EAC/B,eAAcK,EAAc,QAAUF,EACtC,QAASA,EACT,IAAMgB,GAAO,CACPA,MAAO,cAAgBd,EAC7B,EACA,SAAUC,EACV,SAAUf,GAAWF,EAAK,SAAW,EACrC,UAAU,sCAAA,CAAA,EAEd,EAEDD,EAAQ,IAAKgC,GACZP,EAAAA,IAACK,EAAA,CAAqB,UAAWE,EAAE,cAChC,SAAAA,EAAE,UAAYtB,EACbgB,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,QAAS,IAAMJ,EAAWU,EAAE,EAAE,EAC9B,UAAWR,EACT,iCACA,0BACA,mCAAA,EAGD,SAAA,CAAAQ,EAAE,OACFvB,GAAM,KAAOuB,EAAE,GACdvB,EAAK,MAAQ,YAASX,EAAA,CAAQ,UAAU,UAAU,EAAK2B,MAAC9B,GAAU,UAAU,SAAA,CAAU,EAEtF8B,EAAAA,IAAC5B,EAAA,CAAY,UAAU,oBAAA,CAAqB,CAAA,CAAA,CAAA,EAIhDmC,EAAE,QAnBUA,EAAE,EAqBlB,CACD,CAAA,CAAA,CACH,CAAA,CACF,EACAP,EAAAA,IAACQ,EAAA,CACE,SAAA9B,EACG,MAAM,KAAK,CAAE,OAAQC,CAAA,CAAa,EAAE,IAAI,CAAC8B,EAAGC,WACzCN,EAAA,CACE,SAAA,CAAAf,SAAesB,EAAA,EAAU,EACzBpC,EAAQ,IAAKgC,GACZP,EAAAA,IAACW,GAAqB,UAAWJ,EAAE,cACjC,SAAAP,EAAAA,IAAC,OAAI,UAAU,8CAAA,CAA+C,CAAA,EADhDO,EAAE,EAElB,CACD,CAAA,CAAA,EANY,YAAYG,CAAC,EAO5B,CACD,EACDlC,EAAK,SAAW,EAEdwB,EAAAA,IAACI,EAAA,CACC,SAAAJ,EAAAA,IAACW,EAAA,CACC,QAASpC,EAAQ,QAAUc,EAAa,EAAI,GAC5C,UAAU,MAET,YAAcW,MAACY,EAAA,CAAW,MAAOzB,EAAE,cAAc,CAAA,CAAG,CAAA,CAAA,EAEzD,EAEAX,EAAK,IAAI,CAACqC,EAAKH,IAAM,CACnB,MAAMd,EAAKnB,EAASoC,CAAG,EACjBC,EAAazB,GAAcP,EAAU,IAAIc,CAAE,EACjD,OACEK,EAAAA,KAACG,EAAA,CAEC,aAAYU,EAAa,WAAa,OACtC,QAASjC,EAAa,IAAMA,EAAWgC,CAAG,EAAI,OAC9C,UAAWhC,EAAa,iBAAmB,OAE1C,SAAA,CAAAQ,SACEsB,EAAA,CAAU,QAAUI,GAAMA,EAAE,kBAC3B,SAAAf,EAAAA,IAAC,QAAA,CACC,KAAK,WACL,KAAK,WACL,aAAYb,EAAE,iBAAiB,EAC/B,QAAS2B,EACT,SAAU,IAAMnB,EAAUC,CAAE,EAC5B,UAAU,sCAAA,CAAA,EAEd,EAEDrB,EAAQ,IAAK,GACZyB,EAAAA,IAACW,GAAqB,UAAW,EAAE,cAChC,SAAA,EAAE,KAAKE,EAAKH,CAAC,CAAA,EADA,EAAE,EAElB,CACD,CAAA,CAAA,EArBId,CAAA,CAwBX,CAAC,CAAA,CACT,CAAA,CAAA,CACF,CAAA,CACF,QAGC,MAAA,CAAI,UAAU,gCACZ,SAAAlB,EACG,MAAM,KAAK,CAAE,OAAQ,KAAK,IAAI,EAAGC,CAAW,CAAA,CAAG,EAAE,IAAI,CAAC8B,EAAGC,IACvDT,EAAAA,KAAC,MAAA,CAEC,UAAU,2DAEV,SAAA,CAAAD,EAAAA,IAAC,MAAA,CAAI,UAAU,8CAAA,CAA+C,EAC9DA,EAAAA,IAAC,MAAA,CAAI,UAAU,8CAAA,CAA+C,EAC9DA,EAAAA,IAAC,MAAA,CAAI,UAAU,8CAAA,CAA+C,CAAA,CAAA,EALzD,SAASU,CAAC,EAAA,CAOlB,EACDlC,EAAK,SAAW,EACbI,GAAcoB,EAAAA,IAACY,EAAA,CAAW,MAAOzB,EAAE,cAAc,CAAA,CAAG,EACrDX,EAAK,IAAI,CAACqC,EAAKH,IAAM,CACnB,MAAMd,EAAKnB,EAASoC,CAAG,EACjBC,EAAazB,GAAcP,EAAU,IAAIc,CAAE,EAC3CoB,EAAWzC,EAAQ,KAAMgC,GAAMA,EAAE,WAAW,GAAKhC,EAAQ,CAAC,EAC1D0C,EAAY1C,EAAQ,OAAQgC,GAAM,CAACA,EAAE,aAAe,CAACA,EAAE,cAAgBA,EAAE,KAAOS,GAAU,EAAE,EAClG,OACEf,EAAAA,KAAC,MAAA,CAEC,aAAYa,EAAa,WAAa,OACtC,QAASjC,EAAa,IAAMA,EAAWgC,CAAG,EAAI,OAC9C,UAAWd,EACT,mCACAe,EAAa,gBAAkB,gBAC/BjC,GAAc,wCAAA,EAGhB,SAAA,CAAAoB,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACZ,SAAA,CAAAe,GACChB,EAAAA,IAAC,OAAI,UAAU,wBAAyB,WAAS,KAAKa,EAAKH,CAAC,CAAA,CAAE,EAE/DrB,GACCW,EAAAA,IAAC,QAAA,CACC,KAAK,WACL,KAAK,WACL,aAAYb,EAAE,iBAAiB,EAC/B,QAAS,CAAC,CAAC2B,EACX,SAAU,IAAMnB,EAAUC,CAAE,EAC5B,QAAUmB,GAAMA,EAAE,gBAAA,EAClB,UAAU,6CAAA,CAAA,CACZ,EAEJ,EACCE,EAAU,OAAS,GAClBjB,EAAAA,IAAC,MAAG,UAAU,gEACX,SAAAiB,EAAU,IAAKV,GACdN,EAAAA,KAACiB,EAAAA,SAAA,CACC,SAAA,CAAAlB,EAAAA,IAAC,KAAA,CAAG,UAAU,gBAAiB,SAAAO,EAAE,OAAO,EACxCP,MAAC,MAAG,UAAU,YAAa,WAAE,KAAKa,EAAKH,CAAC,CAAA,CAAE,CAAA,GAFvBH,EAAE,EAGvB,CACD,CAAA,CACH,CAAA,CAAA,EAjCGX,CAAA,CAqCX,CAAC,CAAA,CACT,CAAA,EACF,CAEJ,CACAtB,EAAU,YAAc","x_google_ignoreList":[0,1,2]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{ae as Q,ad as Y,V as e,B as D,c as b,L as E,I as J,S as W,l as X,m as Z,j as ee,k,a4 as p,G as T}from"./index-7yc9y9We.js";import{e as r}from"./react-C9F3QeMB.js";import{D as te}from"./data-table-Dw8WxmGK.js";import{E as B}from"./empty-state-C4sK7D2H.js";import{P as se}from"./pagination-BuNA-fxU.js";import{C as M}from"./confirm-dialog-CBbIPd8e.js";import{d as ae,b as ne,u as ce}from"./use-memory-Bf-AR2xS.js";import{T as A}from"./trash-2-UPbZm-9k.js";import{B as R}from"./brain-B8fJEQyw.js";import{L as re}from"./loader-circle-CwM-6o9f.js";import{R as ie}from"./refresh-ccw-l9Z6wukO.js";import{S as le}from"./search-DDbspILM.js";import"./table-BIc6RbM1.js";import"./chevron-right-D1NFHRso.js";import"./dialog-Byj1GNwS.js";import"./x-CioZGQfq.js";import"./useQuery-dWspFqPU.js";const oe=["fact","preference","goal","history","profile"],me=[25,50,100],F=50,de=300;function Ee(){const{t:s}=Q(["memory","common"]),[n,L]=Y(),c=n.get("user")??"",i=n.get("q")??"",m=n.get("cat")??null,d=Math.max(1,Number(n.get("page"))||1),l=Number(n.get("per_page"))||F,[f,I]=r.useState(i);r.useEffect(()=>{if(f===i)return;const t=window.setTimeout(()=>h({q:f||null}),de);return()=>window.clearTimeout(t)},[f]);const q=r.useMemo(()=>({user_key:c,...i?{query:i}:{},...m?{category:m}:{},limit:l,offset:(d-1)*l}),[c,i,m,d,l]),{data:S,isLoading:z,isFetching:C,refetch:U}=ae(q,{enabled:!!c}),_=S?.facts??[],P=S?.total??0,G=Math.max(1,Math.ceil(P/l)),[u,g]=r.useState(new Set);r.useEffect(()=>{g(new Set)},[c,i,m,d,l]);const j=ne(),x=ce(),[y,v]=r.useState(null),[V,O]=r.useState(!1);function h(t){const a=new URLSearchParams(n);for(const[o,w]of Object.entries(t))w==null||w===""?a.delete(o):a.set(o,w);Object.keys(t).some(o=>o!=="page")&&a.delete("page"),L(a,{replace:!1})}async function $(){if(!(y==null||!c))try{await j.mutateAsync({id:y,user_key:c}),p.success(s("facts.toast.deletedOne"))}catch(t){const{message:a}=T(t,s);throw p.error(a),t}}async function H(){if(!c||u.size===0)return;const t=Array.from(u).map(Number).filter(Number.isFinite);try{const a=await x.mutateAsync({user_key:c,body:{ids:t}});p.success(s("facts.toast.deletedMany",{count:a.deleted})),g(new Set)}catch(a){const{message:o}=T(a,s);throw p.error(o),a}}const K=r.useMemo(()=>[{id:"id",header:s("facts.col.id"),cell:t=>e.jsxs("span",{className:"tabular-nums text-text-dim",children:["#",t.id]}),headClassName:"w-16"},{id:"what",header:s("facts.col.what"),cell:t=>e.jsx("span",{className:"line-clamp-2 text-text",children:t.what}),asCardTitle:!0},{id:"category",header:s("facts.col.category"),cell:t=>e.jsx(D,{variant:"outline",children:s(`facts.category.${t.category}`,{defaultValue:t.category})}),headClassName:"w-28"},{id:"confidence",header:s("facts.col.confidence"),cell:t=>e.jsx("span",{className:"tabular-nums text-text-dim",children:t.confidence.toFixed(2)}),headClassName:"w-24",hideOnMobile:!0},{id:"source",header:s("facts.col.source"),cell:t=>e.jsx("span",{className:"text-text-dim text-xs",children:t.source}),headClassName:"w-28",hideOnMobile:!0},{id:"createdAt",header:s("facts.col.createdAt"),cell:t=>e.jsx("span",{className:"text-text-dim",children:fe(t.created_at)}),headClassName:"w-32",hideOnMobile:!0},{id:"actions",header:"",cell:t=>e.jsx("div",{className:"flex justify-end",children:e.jsxs(b,{variant:"ghost",size:"sm",onClick:a=>{a.stopPropagation(),v(t.id)},disabled:j.isPending||x.isPending,"aria-label":s("facts.action.delete"),children:[e.jsx(A,{className:"h-3 w-3"}),e.jsx("span",{className:"sr-only sm:not-sr-only sm:ml-1",children:s("facts.action.delete")})]})}),headClassName:"w-24"}],[s,j.isPending,x.isPending]);if(!c)return e.jsx("div",{className:"mx-auto max-w-3xl",children:e.jsx(B,{icon:e.jsx(R,{}),title:s("noUserSelected.title"),description:s("noUserSelected.description")})});const N=u.size;return e.jsxs("div",{className:"mx-auto flex max-w-7xl flex-col gap-4",children:[e.jsxs("header",{className:"flex flex-col gap-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("h1",{className:"text-xl font-semibold",children:s("facts.title")}),e.jsxs(b,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>U(),disabled:C,"aria-label":s("actions.refresh",{ns:"common"}),children:[C?e.jsx(re,{className:"h-4 w-4 animate-spin"}):e.jsx(ie,{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("subtitle")})]}),e.jsxs("div",{className:"flex flex-wrap items-end gap-2",children:[e.jsxs("div",{className:"relative flex-1 min-w-[200px] max-w-md",children:[e.jsx(E,{htmlFor:"search",className:"text-xs text-text-dim",children:s("facts.filter.search")}),e.jsx(le,{className:"pointer-events-none absolute left-2 bottom-2 h-4 w-4 text-text-muted"}),e.jsx(J,{id:"search",value:f,onChange:t=>I(t.target.value),className:"pl-7 mt-1"})]}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(E,{htmlFor:"category",className:"text-xs text-text-dim",children:s("facts.filter.category")}),e.jsxs(W,{value:m??"__any__",onValueChange:t=>h({cat:t==="__any__"?null:t}),children:[e.jsx(X,{id:"category",className:"w-[140px]",children:e.jsx(Z,{})}),e.jsxs(ee,{children:[e.jsx(k,{value:"__any__",children:s("facts.filter.categoryAny")}),oe.map(t=>e.jsx(k,{value:t,children:s(`facts.category.${t}`)},t))]})]})]}),N>0&&e.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[e.jsx(D,{variant:"secondary",children:s("facts.batch.selected",{count:N})}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:()=>O(!0),disabled:x.isPending,children:[e.jsx(A,{className:"h-4 w-4"}),s("facts.batch.deleteSelected")]})]})]}),e.jsx(te,{columns:K,rows:_,getRowId:t=>String(t.id),loading:z,selection:u,onSelectionChange:g,emptyState:e.jsx(B,{icon:e.jsx(R,{}),title:s("facts.empty.title"),description:s("facts.empty.description")})}),(_.length>0||d>1)&&e.jsx(se,{page:d,totalPages:G,totalRows:P,perPage:l,perPageOptions:me,onPageChange:t=>h({page:t===1?null:String(t)}),onPerPageChange:t=>h({per_page:t===F?null:String(t)})}),e.jsx(M,{open:y!=null,onOpenChange:t=>{t||v(null)},title:s("facts.action.confirmDelete"),description:s("facts.action.confirmDeleteDesc"),intent:"danger",confirmLabel:s("facts.action.delete"),onConfirm:$}),e.jsx(M,{open:V,onOpenChange:O,title:s("facts.batch.confirmDelete",{count:N}),description:s("facts.batch.confirmDeleteDesc"),intent:"danger",confirmLabel:s("facts.batch.deleteSelected"),onConfirm:H})]})}function fe(s){try{const n=new Date(s);return Number.isNaN(n.getTime())?String(s):n.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return String(s)}}export{Ee as default};
|
|
2
|
-
//# sourceMappingURL=facts-C-z_MHuR.js.map
|