agim-cli 1.2.128 → 1.2.130

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.
Files changed (218) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/dist/core/llm/agent-loop.d.ts.map +1 -1
  3. package/dist/core/llm/agent-loop.js +9 -1
  4. package/dist/core/llm/agent-loop.js.map +1 -1
  5. package/dist/web/public/assets/{a2a-CbxNgf9H.js → a2a-Bp_OpTfW.js} +2 -2
  6. package/dist/web/public/assets/{a2a-CbxNgf9H.js.map → a2a-Bp_OpTfW.js.map} +1 -1
  7. package/dist/web/public/assets/{activity-C6r508cN.js → activity-B5erGuWa.js} +2 -2
  8. package/dist/web/public/assets/{activity-C6r508cN.js.map → activity-B5erGuWa.js.map} +1 -1
  9. package/dist/web/public/assets/{admins-C0BJw6X9.js → admins-D3j7wkvL.js} +3 -3
  10. package/dist/web/public/assets/{admins-C0BJw6X9.js.map → admins-D3j7wkvL.js.map} +1 -1
  11. package/dist/web/public/assets/{agents-DOW1_NGT.js → agents-Cb3Vb2-8.js} +3 -3
  12. package/dist/web/public/assets/{agents-DOW1_NGT.js.map → agents-Cb3Vb2-8.js.map} +1 -1
  13. package/dist/web/public/assets/{approvals-CyPhYcGG.js → approvals-BZULwrl5.js} +3 -3
  14. package/dist/web/public/assets/{approvals-CyPhYcGG.js.map → approvals-BZULwrl5.js.map} +1 -1
  15. package/dist/web/public/assets/arrow-down-OdSfpgG4.js +7 -0
  16. package/dist/web/public/assets/arrow-down-OdSfpgG4.js.map +1 -0
  17. package/dist/web/public/assets/arrow-up-DtrvOH7Z.js +7 -0
  18. package/dist/web/public/assets/arrow-up-DtrvOH7Z.js.map +1 -0
  19. package/dist/web/public/assets/{asks-B6L3PSml.js → asks-BaVT-eFe.js} +3 -3
  20. package/dist/web/public/assets/{asks-B6L3PSml.js.map → asks-BaVT-eFe.js.map} +1 -1
  21. package/dist/web/public/assets/audit-CSk2rv6z.js +2 -0
  22. package/dist/web/public/assets/{audit-CCGCdw6P.js.map → audit-CSk2rv6z.js.map} +1 -1
  23. package/dist/web/public/assets/{bell-OiL3Thk2.js → bell-DifbuUaI.js} +2 -2
  24. package/dist/web/public/assets/{bell-OiL3Thk2.js.map → bell-DifbuUaI.js.map} +1 -1
  25. package/dist/web/public/assets/{bgjobs-vhVtnLSx.js → bgjobs-D3wsuZBR.js} +3 -3
  26. package/dist/web/public/assets/{bgjobs-vhVtnLSx.js.map → bgjobs-D3wsuZBR.js.map} +1 -1
  27. package/dist/web/public/assets/{brain-n56pZ1TQ.js → brain-BH9ObIfA.js} +2 -2
  28. package/dist/web/public/assets/{brain-n56pZ1TQ.js.map → brain-BH9ObIfA.js.map} +1 -1
  29. package/dist/web/public/assets/{briefcase-BscVfAjp.js → briefcase-CZqK5oy3.js} +2 -2
  30. package/dist/web/public/assets/{briefcase-BscVfAjp.js.map → briefcase-CZqK5oy3.js.map} +1 -1
  31. package/dist/web/public/assets/{browser-ponyfill-BOcGq8h9.js → browser-ponyfill-BUutOaRz.js} +2 -2
  32. package/dist/web/public/assets/{browser-ponyfill-BOcGq8h9.js.map → browser-ponyfill-BUutOaRz.js.map} +1 -1
  33. package/dist/web/public/assets/chat-gOU1pe0E.js +7 -0
  34. package/dist/web/public/assets/chat-gOU1pe0E.js.map +1 -0
  35. package/dist/web/public/assets/chevron-left-BtuaBNRZ.js +7 -0
  36. package/dist/web/public/assets/chevron-left-BtuaBNRZ.js.map +1 -0
  37. package/dist/web/public/assets/{chevron-right-trO6yoBr.js → chevron-right-uDVVnuGu.js} +2 -2
  38. package/dist/web/public/assets/{chevron-right-trO6yoBr.js.map → chevron-right-uDVVnuGu.js.map} +1 -1
  39. package/dist/web/public/assets/{circle-check-B_d7dBl5.js → circle-check-VgYKnBhy.js} +2 -2
  40. package/dist/web/public/assets/{circle-check-B_d7dBl5.js.map → circle-check-VgYKnBhy.js.map} +1 -1
  41. package/dist/web/public/assets/{circle-check-big-D6TvCoDM.js → circle-check-big-7idAFtyL.js} +2 -2
  42. package/dist/web/public/assets/{circle-check-big-D6TvCoDM.js.map → circle-check-big-7idAFtyL.js.map} +1 -1
  43. package/dist/web/public/assets/{circle-x-OcRzGLRb.js → circle-x-8dhkvHlT.js} +2 -2
  44. package/dist/web/public/assets/{circle-x-OcRzGLRb.js.map → circle-x-8dhkvHlT.js.map} +1 -1
  45. package/dist/web/public/assets/confirm-dialog-_BtUs6oW.js +2 -0
  46. package/dist/web/public/assets/{confirm-dialog-DD1ZW1XE.js.map → confirm-dialog-_BtUs6oW.js.map} +1 -1
  47. package/dist/web/public/assets/copy-Ba1min4z.js +7 -0
  48. package/dist/web/public/assets/copy-Ba1min4z.js.map +1 -0
  49. package/dist/web/public/assets/{data-table-bhqK389v.js → data-table-BVcXWtPw.js} +3 -3
  50. package/dist/web/public/assets/{data-table-bhqK389v.js.map → data-table-BVcXWtPw.js.map} +1 -1
  51. package/dist/web/public/assets/dialog-BVYFRXlI.js +6 -0
  52. package/dist/web/public/assets/{dialog-D5BsJN2q.js.map → dialog-BVYFRXlI.js.map} +1 -1
  53. package/dist/web/public/assets/{download-CcO4RAuC.js → download-DYc5g_1W.js} +3 -3
  54. package/dist/web/public/assets/{download-CcO4RAuC.js.map → download-DYc5g_1W.js.map} +1 -1
  55. package/dist/web/public/assets/{email-Dy3UoyzF.js → email-6vlGBJXY.js} +3 -3
  56. package/dist/web/public/assets/{email-Dy3UoyzF.js.map → email-6vlGBJXY.js.map} +1 -1
  57. package/dist/web/public/assets/{empty-state-CwUKG8xX.js → empty-state-WHzNYVaT.js} +2 -2
  58. package/dist/web/public/assets/{empty-state-CwUKG8xX.js.map → empty-state-WHzNYVaT.js.map} +1 -1
  59. package/dist/web/public/assets/{external-link-wf5VhNXd.js → external-link-CfQZDer8.js} +2 -2
  60. package/dist/web/public/assets/{external-link-wf5VhNXd.js.map → external-link-CfQZDer8.js.map} +1 -1
  61. package/dist/web/public/assets/{eye-8lKlwbZE.js → eye-PzqPB6N6.js} +3 -3
  62. package/dist/web/public/assets/{eye-8lKlwbZE.js.map → eye-PzqPB6N6.js.map} +1 -1
  63. package/dist/web/public/assets/facts-NmBeyMpC.js +2 -0
  64. package/dist/web/public/assets/{facts-Cfu6Lg3H.js.map → facts-NmBeyMpC.js.map} +1 -1
  65. package/dist/web/public/assets/{goals-BQkhal_h.js → goals-BfMwQtYm.js} +4 -4
  66. package/dist/web/public/assets/{goals-BQkhal_h.js.map → goals-BfMwQtYm.js.map} +1 -1
  67. package/dist/web/public/assets/health-D46iQ6Hj.js +2 -0
  68. package/dist/web/public/assets/{health-BObMAngj.js.map → health-D46iQ6Hj.js.map} +1 -1
  69. package/dist/web/public/assets/{heart-pulse-DI33Rxyr.js → heart-pulse-BHz53Ggd.js} +2 -2
  70. package/dist/web/public/assets/{heart-pulse-DI33Rxyr.js.map → heart-pulse-BHz53Ggd.js.map} +1 -1
  71. package/dist/web/public/assets/{heartbeat-Bc4SZawQ.js → heartbeat-DBpc9rKL.js} +3 -3
  72. package/dist/web/public/assets/{heartbeat-Bc4SZawQ.js.map → heartbeat-DBpc9rKL.js.map} +1 -1
  73. package/dist/web/public/assets/{hot-BXYotT26.js → hot-D_-tARKX.js} +4 -9
  74. package/dist/web/public/assets/hot-D_-tARKX.js.map +1 -0
  75. package/dist/web/public/assets/{index-CGaI-i4K.js → index-DXI13nSQ.js} +29 -29
  76. package/dist/web/public/assets/index-DXI13nSQ.js.map +1 -0
  77. package/dist/web/public/assets/index-f1K5Q2Yz.css +1 -0
  78. package/dist/web/public/assets/{installed-DswmDcea.js → installed-BtOgT0Ea.js} +2 -2
  79. package/dist/web/public/assets/{installed-DswmDcea.js.map → installed-BtOgT0Ea.js.map} +1 -1
  80. package/dist/web/public/assets/jobs-DUoPbupO.js +2 -0
  81. package/dist/web/public/assets/{jobs-DWBDqKx-.js.map → jobs-DUoPbupO.js.map} +1 -1
  82. package/dist/web/public/assets/layout-BpS7td-S.js +2 -0
  83. package/dist/web/public/assets/layout-BpS7td-S.js.map +1 -0
  84. package/dist/web/public/assets/layout-C1EVvCs8.js +2 -0
  85. package/dist/web/public/assets/{layout-D7gNMUDZ.js.map → layout-C1EVvCs8.js.map} +1 -1
  86. package/dist/web/public/assets/layout-C3e8vPrG.js +2 -0
  87. package/dist/web/public/assets/{layout-DJKxW33x.js.map → layout-C3e8vPrG.js.map} +1 -1
  88. package/dist/web/public/assets/layout-DkoRqhBs.js +2 -0
  89. package/dist/web/public/assets/{layout-B5rK_h6Q.js.map → layout-DkoRqhBs.js.map} +1 -1
  90. package/dist/web/public/assets/layout-wuoOyazR.js +2 -0
  91. package/dist/web/public/assets/{layout-ByUY6XZQ.js.map → layout-wuoOyazR.js.map} +1 -1
  92. package/dist/web/public/assets/{llm-CPOd98Hy.js → llm-iuvigJxr.js} +2 -2
  93. package/dist/web/public/assets/{llm-CPOd98Hy.js.map → llm-iuvigJxr.js.map} +1 -1
  94. package/dist/web/public/assets/{loader-circle-BBIfyATA.js → loader-circle-BS5FFFg-.js} +2 -2
  95. package/dist/web/public/assets/{loader-circle-BBIfyATA.js.map → loader-circle-BS5FFFg-.js.map} +1 -1
  96. package/dist/web/public/assets/{map-pin-Bg7JuU7F.js → map-pin-CRS6YW4i.js} +2 -2
  97. package/dist/web/public/assets/{map-pin-Bg7JuU7F.js.map → map-pin-CRS6YW4i.js.map} +1 -1
  98. package/dist/web/public/assets/{mcp-DGxGN2iX.js → mcp-PWEuZOJ_.js} +3 -3
  99. package/dist/web/public/assets/{mcp-DGxGN2iX.js.map → mcp-PWEuZOJ_.js.map} +1 -1
  100. package/dist/web/public/assets/{memos-LpUpTmYL.js → memos-C6i1hbv9.js} +3 -3
  101. package/dist/web/public/assets/{memos-LpUpTmYL.js.map → memos-C6i1hbv9.js.map} +1 -1
  102. package/dist/web/public/assets/messengers-CZ3eL15d.js +2 -0
  103. package/dist/web/public/assets/messengers-CZ3eL15d.js.map +1 -0
  104. package/dist/web/public/assets/mobile-_rEEG_kX.js +7 -0
  105. package/dist/web/public/assets/mobile-_rEEG_kX.js.map +1 -0
  106. package/dist/web/public/assets/{native-agent-CPkYGY3I.js → native-agent-B-Id8sOl.js} +4 -4
  107. package/dist/web/public/assets/{native-agent-CPkYGY3I.js.map → native-agent-B-Id8sOl.js.map} +1 -1
  108. package/dist/web/public/assets/{network-DHrX3RcZ.js → network-MVE8s4TA.js} +2 -2
  109. package/dist/web/public/assets/{network-DHrX3RcZ.js.map → network-MVE8s4TA.js.map} +1 -1
  110. package/dist/web/public/assets/{outbox-T3NnYmK0.js → outbox-BRpgAP1d.js} +3 -3
  111. package/dist/web/public/assets/{outbox-T3NnYmK0.js.map → outbox-BRpgAP1d.js.map} +1 -1
  112. package/dist/web/public/assets/pagination-dm3r6K_2.js +12 -0
  113. package/dist/web/public/assets/pagination-dm3r6K_2.js.map +1 -0
  114. package/dist/web/public/assets/persona-Oq3C-gEw.js +2 -0
  115. package/dist/web/public/assets/{persona-CHz80XDk.js.map → persona-Oq3C-gEw.js.map} +1 -1
  116. package/dist/web/public/assets/{play-BNtSkb5l.js → play-COQw7BqX.js} +2 -2
  117. package/dist/web/public/assets/{play-BNtSkb5l.js.map → play-COQw7BqX.js.map} +1 -1
  118. package/dist/web/public/assets/{plus-CYsjCf6w.js → plus-CdOyGoU1.js} +2 -2
  119. package/dist/web/public/assets/{plus-CYsjCf6w.js.map → plus-CdOyGoU1.js.map} +1 -1
  120. package/dist/web/public/assets/policy-docXezae.js +2 -0
  121. package/dist/web/public/assets/{policy-CtKRzual.js.map → policy-docXezae.js.map} +1 -1
  122. package/dist/web/public/assets/qr-code-8putJTrW.js +7 -0
  123. package/dist/web/public/assets/qr-code-8putJTrW.js.map +1 -0
  124. package/dist/web/public/assets/{react-C9F3QeMB.js → react-Cb2sDjhD.js} +2 -2
  125. package/dist/web/public/assets/{react-C9F3QeMB.js.map → react-Cb2sDjhD.js.map} +1 -1
  126. package/dist/web/public/assets/{refresh-ccw-DpPWcwTg.js → refresh-ccw-BPKXoMZa.js} +2 -2
  127. package/dist/web/public/assets/{refresh-ccw-DpPWcwTg.js.map → refresh-ccw-BPKXoMZa.js.map} +1 -1
  128. package/dist/web/public/assets/{reminders-R14lWHEJ.js → reminders-CP2qtNSr.js} +3 -3
  129. package/dist/web/public/assets/{reminders-R14lWHEJ.js.map → reminders-CP2qtNSr.js.map} +1 -1
  130. package/dist/web/public/assets/{save-beGooRNy.js → save-BXCmgeEj.js} +2 -2
  131. package/dist/web/public/assets/{save-beGooRNy.js.map → save-BXCmgeEj.js.map} +1 -1
  132. package/dist/web/public/assets/{schedules-fxKnDnxp.js → schedules-DVaY38v1.js} +3 -3
  133. package/dist/web/public/assets/{schedules-fxKnDnxp.js.map → schedules-DVaY38v1.js.map} +1 -1
  134. package/dist/web/public/assets/{search-DzgimpPy.js → search-B-wDhzjs.js} +3 -3
  135. package/dist/web/public/assets/{search-DzgimpPy.js.map → search-B-wDhzjs.js.map} +1 -1
  136. package/dist/web/public/assets/{search-BzOAg0Rb.js → search-DzexDAbr.js} +2 -2
  137. package/dist/web/public/assets/{search-BzOAg0Rb.js.map → search-DzexDAbr.js.map} +1 -1
  138. package/dist/web/public/assets/security-FHN-b43T.js +2 -0
  139. package/dist/web/public/assets/{security-Dw1mh68G.js.map → security-FHN-b43T.js.map} +1 -1
  140. package/dist/web/public/assets/{service-CB55xtmh.js → service-DXGUZTCp.js} +3 -3
  141. package/dist/web/public/assets/{service-CB55xtmh.js.map → service-DXGUZTCp.js.map} +1 -1
  142. package/dist/web/public/assets/{shield-alert-C2IO43co.js → shield-alert-BM0-khVy.js} +2 -2
  143. package/dist/web/public/assets/{shield-alert-C2IO43co.js.map → shield-alert-BM0-khVy.js.map} +1 -1
  144. package/dist/web/public/assets/{status-badge-wL5IXJx_.js → status-badge-DeESb2dc.js} +2 -2
  145. package/dist/web/public/assets/{status-badge-wL5IXJx_.js.map → status-badge-DeESb2dc.js.map} +1 -1
  146. package/dist/web/public/assets/{subtasks-CbLAkygG.js → subtasks-DOwo6FnZ.js} +3 -3
  147. package/dist/web/public/assets/{subtasks-CbLAkygG.js.map → subtasks-DOwo6FnZ.js.map} +1 -1
  148. package/dist/web/public/assets/table-oUi0mGOn.js +2 -0
  149. package/dist/web/public/assets/{table-9FRavyyI.js.map → table-oUi0mGOn.js.map} +1 -1
  150. package/dist/web/public/assets/{topn-BE7RU5cV.js → topn-D1LQXoLo.js} +3 -3
  151. package/dist/web/public/assets/{topn-BE7RU5cV.js.map → topn-D1LQXoLo.js.map} +1 -1
  152. package/dist/web/public/assets/{trash-2-DL2FAuYX.js → trash-2-CTkSvnZX.js} +2 -2
  153. package/dist/web/public/assets/{trash-2-DL2FAuYX.js.map → trash-2-CTkSvnZX.js.map} +1 -1
  154. package/dist/web/public/assets/use-background-tasks-BkUIDOxX.js +2 -0
  155. package/dist/web/public/assets/{use-background-tasks-XHuIYwrT.js.map → use-background-tasks-BkUIDOxX.js.map} +1 -1
  156. package/dist/web/public/assets/{use-event-stream-BGeFcayX.js → use-event-stream-DgGpGKop.js} +2 -2
  157. package/dist/web/public/assets/{use-event-stream-BGeFcayX.js.map → use-event-stream-DgGpGKop.js.map} +1 -1
  158. package/dist/web/public/assets/use-llm-admin-BrJMMEz5.js +2 -0
  159. package/dist/web/public/assets/{use-llm-admin-Dm8PcjN-.js.map → use-llm-admin-BrJMMEz5.js.map} +1 -1
  160. package/dist/web/public/assets/use-memory-CbTYEBTc.js +2 -0
  161. package/dist/web/public/assets/{use-memory-C3GgMqiJ.js.map → use-memory-CbTYEBTc.js.map} +1 -1
  162. package/dist/web/public/assets/{use-observability-BQa4b0Uk.js → use-observability-Bum0mmDO.js} +2 -2
  163. package/dist/web/public/assets/{use-observability-BQa4b0Uk.js.map → use-observability-Bum0mmDO.js.map} +1 -1
  164. package/dist/web/public/assets/use-settings-DJlVLnjo.js +2 -0
  165. package/dist/web/public/assets/{use-settings-CrkXdLrr.js.map → use-settings-DJlVLnjo.js.map} +1 -1
  166. package/dist/web/public/assets/use-workspace-BJZUfkqw.js +2 -0
  167. package/dist/web/public/assets/{use-workspace-Csq4sxlY.js.map → use-workspace-BJZUfkqw.js.map} +1 -1
  168. package/dist/web/public/assets/useQuery-CEwGD94N.js +2 -0
  169. package/dist/web/public/assets/{useQuery-ByZlZXlw.js.map → useQuery-CEwGD94N.js.map} +1 -1
  170. package/dist/web/public/assets/vector-BqffHZmp.js +2 -0
  171. package/dist/web/public/assets/{vector-BmpvJTWt.js.map → vector-BqffHZmp.js.map} +1 -1
  172. package/dist/web/public/assets/{viewer-BOSX-lUS.js → viewer-CKTTV-Wt.js} +4 -4
  173. package/dist/web/public/assets/{viewer-BOSX-lUS.js.map → viewer-CKTTV-Wt.js.map} +1 -1
  174. package/dist/web/public/assets/{workspace-DTbEdEyD.js → workspace-DQphgYwy.js} +3 -3
  175. package/dist/web/public/assets/{workspace-DTbEdEyD.js.map → workspace-DQphgYwy.js.map} +1 -1
  176. package/dist/web/public/assets/workspaces-BOA3TuDS.js +7 -0
  177. package/dist/web/public/assets/{workspaces-BIZGVK8F.js.map → workspaces-BOA3TuDS.js.map} +1 -1
  178. package/dist/web/public/assets/{x-BLllJ8d_.js → x-OHUicFfn.js} +2 -2
  179. package/dist/web/public/assets/{x-BLllJ8d_.js.map → x-OHUicFfn.js.map} +1 -1
  180. package/dist/web/public/index.html +3 -3
  181. package/dist/web/public/m/login.html +124 -0
  182. package/dist/web/server.d.ts.map +1 -1
  183. package/dist/web/server.js +103 -1
  184. package/dist/web/server.js.map +1 -1
  185. package/package.json +1 -1
  186. package/dist/web/public/assets/arrow-up-CZr2LH5e.js +0 -12
  187. package/dist/web/public/assets/arrow-up-CZr2LH5e.js.map +0 -1
  188. package/dist/web/public/assets/audit-CCGCdw6P.js +0 -2
  189. package/dist/web/public/assets/confirm-dialog-DD1ZW1XE.js +0 -2
  190. package/dist/web/public/assets/dialog-D5BsJN2q.js +0 -6
  191. package/dist/web/public/assets/facts-Cfu6Lg3H.js +0 -2
  192. package/dist/web/public/assets/health-BObMAngj.js +0 -2
  193. package/dist/web/public/assets/hot-BXYotT26.js.map +0 -1
  194. package/dist/web/public/assets/index-CGaI-i4K.js.map +0 -1
  195. package/dist/web/public/assets/index-De8LfCtL.css +0 -1
  196. package/dist/web/public/assets/jobs-DWBDqKx-.js +0 -2
  197. package/dist/web/public/assets/layout-B5rK_h6Q.js +0 -2
  198. package/dist/web/public/assets/layout-ByUY6XZQ.js +0 -2
  199. package/dist/web/public/assets/layout-CX3nXpWb.js +0 -2
  200. package/dist/web/public/assets/layout-CX3nXpWb.js.map +0 -1
  201. package/dist/web/public/assets/layout-D7gNMUDZ.js +0 -2
  202. package/dist/web/public/assets/layout-DJKxW33x.js +0 -2
  203. package/dist/web/public/assets/messengers-CWMsJz1e.js +0 -7
  204. package/dist/web/public/assets/messengers-CWMsJz1e.js.map +0 -1
  205. package/dist/web/public/assets/pagination-ANxQzaRV.js +0 -17
  206. package/dist/web/public/assets/pagination-ANxQzaRV.js.map +0 -1
  207. package/dist/web/public/assets/persona-CHz80XDk.js +0 -2
  208. package/dist/web/public/assets/policy-CtKRzual.js +0 -2
  209. package/dist/web/public/assets/security-Dw1mh68G.js +0 -2
  210. package/dist/web/public/assets/table-9FRavyyI.js +0 -2
  211. package/dist/web/public/assets/use-background-tasks-XHuIYwrT.js +0 -2
  212. package/dist/web/public/assets/use-llm-admin-Dm8PcjN-.js +0 -2
  213. package/dist/web/public/assets/use-memory-C3GgMqiJ.js +0 -2
  214. package/dist/web/public/assets/use-settings-CrkXdLrr.js +0 -2
  215. package/dist/web/public/assets/use-workspace-Csq4sxlY.js +0 -2
  216. package/dist/web/public/assets/useQuery-ByZlZXlw.js +0 -2
  217. package/dist/web/public/assets/vector-BmpvJTWt.js +0 -2
  218. package/dist/web/public/assets/workspaces-BIZGVK8F.js +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agim-cli",
3
- "version": "1.2.128",
3
+ "version": "1.2.130",
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,12 +0,0 @@
1
- import{z as r}from"./index-CGaI-i4K.js";/**
2
- * @license lucide-react v0.469.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const a=r("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 e=r("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);export{a as A,e as a};
12
- //# sourceMappingURL=arrow-up-CZr2LH5e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arrow-up-CZr2LH5e.js","sources":["../../node_modules/lucide-react/dist/esm/icons/arrow-down.js","../../node_modules/lucide-react/dist/esm/icons/arrow-up.js"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst 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 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"],"names":["ArrowDown","createLucideIcon","ArrowUp"],"mappings":"wCAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,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,GASK,MAACC,EAAUD,EAAiB,UAAW,CAC1C,CAAC,OAAQ,CAAE,EAAG,gBAAiB,IAAK,QAAQ,CAAE,EAC9C,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAQ,CAAE,CAC3C,CAAC","x_google_ignoreList":[0,1]}
@@ -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-CGaI-i4K.js";import{e as i}from"./react-C9F3QeMB.js";import{D as k}from"./data-table-bhqK389v.js";import{E as U}from"./empty-state-CwUKG8xX.js";import{u as $}from"./use-observability-BQa4b0Uk.js";import{L as q}from"./loader-circle-BBIfyATA.js";import{R as z}from"./refresh-ccw-DpPWcwTg.js";import{A as H}from"./activity-C6r508cN.js";import"./table-9FRavyyI.js";import"./arrow-up-CZr2LH5e.js";import"./useQuery-ByZlZXlw.js";const V=300;function it(){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{it as default};
2
- //# sourceMappingURL=audit-CCGCdw6P.js.map
@@ -1,2 +0,0 @@
1
- import{ae as y,V as a,c as r}from"./index-CGaI-i4K.js";import{e as n}from"./react-C9F3QeMB.js";import{D,a as j,d as b,e as g,b as h,c as p}from"./dialog-D5BsJN2q.js";function C({open:c,onOpenChange:t,title:d,description:i,confirmLabel:u,cancelLabel:f,intent:m="default",onConfirm:l}){const{t:e}=y("common"),[s,o]=n.useState(!1),x=n.useCallback(async()=>{o(!0);try{await l(),t(!1)}catch{}finally{o(!1)}},[l,t]);return a.jsx(D,{open:c,onOpenChange:s?()=>{}:t,children:a.jsxs(j,{children:[a.jsxs(b,{children:[a.jsx(g,{children:d}),i&&a.jsx(h,{children:i})]}),a.jsxs(p,{children:[a.jsx(r,{type:"button",variant:"secondary",onClick:()=>t(!1),disabled:s,children:f??e("actions.cancel")}),a.jsx(r,{type:"button",variant:m==="danger"?"destructive":"default",onClick:x,disabled:s,"aria-busy":s,children:s?e("states.saving"):u??e("actions.confirm")})]})]})})}C.displayName="ConfirmDialog";export{C};
2
- //# sourceMappingURL=confirm-dialog-DD1ZW1XE.js.map
@@ -1,6 +0,0 @@
1
- import{V as i,v as q,a7 as K,aa as R,f as h,P as Q,g as D,u as x,y as U,a6 as N,Q as X,R as Y,a9 as J,F as ee,D as te,x as oe,t as p}from"./index-CGaI-i4K.js";import{e as s}from"./react-C9F3QeMB.js";import{X as ne}from"./x-BLllJ8d_.js";function ae(e){const t=re(e),o=s.forwardRef((a,n)=>{const{children:r,...c}=a,l=s.Children.toArray(r),d=l.find(ie);if(d){const f=d.props.children,m=l.map(v=>v===d?s.Children.count(f)>1?s.Children.only(null):s.isValidElement(f)?f.props.children:null:v);return i.jsx(t,{...c,ref:n,children:s.isValidElement(f)?s.cloneElement(f,void 0,m):null})}return i.jsx(t,{...c,ref:n,children:r})});return o.displayName=`${e}.Slot`,o}function re(e){const t=s.forwardRef((o,a)=>{const{children:n,...r}=o;if(s.isValidElement(n)){const c=ce(n),l=le(r,n.props);return n.type!==s.Fragment&&(l.ref=a?q(a,c):c),s.cloneElement(n,l)}return s.Children.count(n)>1?s.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var se=Symbol("radix.slottable");function ie(e){return s.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===se}function le(e,t){const o={...t};for(const a in t){const n=e[a],r=t[a];/^on[A-Z]/.test(a)?n&&r?o[a]=(...l)=>{const d=r(...l);return n(...l),d}:n&&(o[a]=n):a==="style"?o[a]={...n,...r}:a==="className"&&(o[a]=[n,r].filter(Boolean).join(" "))}return{...e,...o}}function ce(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var C="Dialog",[j]=U(C),[de,u]=j(C),P=e=>{const{__scopeDialog:t,children:o,open:a,defaultOpen:n,onOpenChange:r,modal:c=!0}=e,l=s.useRef(null),d=s.useRef(null),[f,m]=K({prop:a,defaultProp:n??!1,onChange:r,caller:C});return i.jsx(de,{scope:t,triggerRef:l,contentRef:d,contentId:R(),titleId:R(),descriptionId:R(),open:f,onOpenChange:m,onOpenToggle:s.useCallback(()=>m(v=>!v),[m]),modal:c,children:o})};P.displayName=C;var O="DialogTrigger",ue=s.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,n=u(O,o),r=N(t,n.triggerRef);return i.jsx(D.button,{type:"button","aria-haspopup":"dialog","aria-expanded":n.open,"aria-controls":n.contentId,"data-state":_(n.open),...a,ref:r,onClick:x(e.onClick,n.onOpenToggle)})});ue.displayName=O;var E="DialogPortal",[fe,I]=j(E,{forceMount:void 0}),w=e=>{const{__scopeDialog:t,forceMount:o,children:a,container:n}=e,r=u(E,t);return i.jsx(fe,{scope:t,forceMount:o,children:s.Children.map(a,c=>i.jsx(h,{present:o||r.open,children:i.jsx(Q,{asChild:!0,container:n,children:c})}))})};w.displayName=E;var y="DialogOverlay",A=s.forwardRef((e,t)=>{const o=I(y,e.__scopeDialog),{forceMount:a=o.forceMount,...n}=e,r=u(y,e.__scopeDialog);return r.modal?i.jsx(h,{present:a||r.open,children:i.jsx(ge,{...n,ref:t})}):null});A.displayName=y;var pe=ae("DialogOverlay.RemoveScroll"),ge=s.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,n=u(y,o);return i.jsx(Y,{as:pe,allowPinchZoom:!0,shards:[n.contentRef],children:i.jsx(D.div,{"data-state":_(n.open),...a,ref:t,style:{pointerEvents:"auto",...a.style}})})}),g="DialogContent",T=s.forwardRef((e,t)=>{const o=I(g,e.__scopeDialog),{forceMount:a=o.forceMount,...n}=e,r=u(g,e.__scopeDialog);return i.jsx(h,{present:a||r.open,children:r.modal?i.jsx(me,{...n,ref:t}):i.jsx(xe,{...n,ref:t})})});T.displayName=g;var me=s.forwardRef((e,t)=>{const o=u(g,e.__scopeDialog),a=s.useRef(null),n=N(t,o.contentRef,a);return s.useEffect(()=>{const r=a.current;if(r)return X(r)},[]),i.jsx(S,{...e,ref:n,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:x(e.onCloseAutoFocus,r=>{r.preventDefault(),o.triggerRef.current?.focus()}),onPointerDownOutside:x(e.onPointerDownOutside,r=>{const c=r.detail.originalEvent,l=c.button===0&&c.ctrlKey===!0;(c.button===2||l)&&r.preventDefault()}),onFocusOutside:x(e.onFocusOutside,r=>r.preventDefault())})}),xe=s.forwardRef((e,t)=>{const o=u(g,e.__scopeDialog),a=s.useRef(!1),n=s.useRef(!1);return i.jsx(S,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:r=>{e.onCloseAutoFocus?.(r),r.defaultPrevented||(a.current||o.triggerRef.current?.focus(),r.preventDefault()),a.current=!1,n.current=!1},onInteractOutside:r=>{e.onInteractOutside?.(r),r.defaultPrevented||(a.current=!0,r.detail.originalEvent.type==="pointerdown"&&(n.current=!0));const c=r.target;o.triggerRef.current?.contains(c)&&r.preventDefault(),r.detail.originalEvent.type==="focusin"&&n.current&&r.preventDefault()}})}),S=s.forwardRef((e,t)=>{const{__scopeDialog:o,trapFocus:a,onOpenAutoFocus:n,onCloseAutoFocus:r,...c}=e,l=u(g,o),d=s.useRef(null),f=N(t,d);return J(),i.jsxs(i.Fragment,{children:[i.jsx(ee,{asChild:!0,loop:!0,trapped:a,onMountAutoFocus:n,onUnmountAutoFocus:r,children:i.jsx(te,{role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":_(l.open),...c,ref:f,onDismiss:()=>l.onOpenChange(!1)})}),i.jsxs(i.Fragment,{children:[i.jsx(De,{titleId:l.titleId}),i.jsx(ye,{contentRef:d,descriptionId:l.descriptionId})]})]})}),b="DialogTitle",F=s.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,n=u(b,o);return i.jsx(D.h2,{id:n.titleId,...a,ref:t})});F.displayName=b;var M="DialogDescription",W=s.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,n=u(M,o);return i.jsx(D.p,{id:n.descriptionId,...a,ref:t})});W.displayName=M;var $="DialogClose",k=s.forwardRef((e,t)=>{const{__scopeDialog:o,...a}=e,n=u($,o);return i.jsx(D.button,{type:"button",...a,ref:t,onClick:x(e.onClick,()=>n.onOpenChange(!1))})});k.displayName=$;function _(e){return e?"open":"closed"}var L="DialogTitleWarning",[Ae,V]=oe(L,{contentName:g,titleName:b,docsSlug:"dialog"}),De=({titleId:e})=>{const t=V(L),o=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
2
-
3
- If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
4
-
5
- For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return s.useEffect(()=>{e&&(document.getElementById(e)||console.error(o))},[o,e]),null},ve="DialogDescriptionWarning",ye=({contentRef:e,descriptionId:t})=>{const a=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${V(ve).contentName}}.`;return s.useEffect(()=>{const n=e.current?.getAttribute("aria-describedby");t&&n&&(document.getElementById(t)||console.warn(a))},[a,e,t]),null},Ce=P,Re=w,G=A,H=T,B=F,z=W,he=k;const Te=Ce,Ne=Re,Z=s.forwardRef(({className:e,...t},o)=>i.jsx(G,{ref:o,className:p("fixed inset-0 z-50 bg-black/50 backdrop-blur-sm","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));Z.displayName=G.displayName;const Ee=s.forwardRef(({className:e,children:t,...o},a)=>i.jsxs(Ne,{children:[i.jsx(Z,{}),i.jsxs(H,{ref:a,className:p("fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100vw-2rem)] sm:max-w-lg","translate-x-[-50%] translate-y-[-50%] gap-4","border border-border bg-surface p-4 shadow-lg","rounded-lg","max-h-[85dvh] overflow-y-auto pb-[calc(env(safe-area-inset-bottom)+1.5rem)]","duration-200","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]","data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",e),...o,children:[t,i.jsx(he,{className:p("absolute right-4 top-4 rounded-md p-1","text-text-dim hover:bg-surface-hover hover:text-text","focus:outline-none focus:ring-2 focus:ring-accent","tap-target","disabled:pointer-events-none"),"aria-label":"Close",children:i.jsx(ne,{className:"h-4 w-4"})})]})]}));Ee.displayName=H.displayName;const be=({className:e,...t})=>i.jsx("div",{className:p("flex flex-col gap-1.5 text-left",e),...t});be.displayName="DialogHeader";const _e=({className:e,...t})=>i.jsx("div",{className:p("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t});_e.displayName="DialogFooter";const je=s.forwardRef(({className:e,...t},o)=>i.jsx(B,{ref:o,className:p("text-lg font-semibold leading-snug",e),...t}));je.displayName=B.displayName;const Pe=s.forwardRef(({className:e,...t},o)=>i.jsx(z,{ref:o,className:p("text-sm text-text-dim",e),...t}));Pe.displayName=z.displayName;export{Te as D,Ee as a,Pe as b,_e as c,be as d,je as e};
6
- //# sourceMappingURL=dialog-D5BsJN2q.js.map
@@ -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-CGaI-i4K.js";import{e as r}from"./react-C9F3QeMB.js";import{D as te}from"./data-table-bhqK389v.js";import{E as B}from"./empty-state-CwUKG8xX.js";import{P as se}from"./pagination-ANxQzaRV.js";import{C as M}from"./confirm-dialog-DD1ZW1XE.js";import{d as ae,b as ne,u as ce}from"./use-memory-C3GgMqiJ.js";import{T as A}from"./trash-2-DL2FAuYX.js";import{B as R}from"./brain-n56pZ1TQ.js";import{L as re}from"./loader-circle-BBIfyATA.js";import{R as ie}from"./refresh-ccw-DpPWcwTg.js";import{S as le}from"./search-BzOAg0Rb.js";import"./table-9FRavyyI.js";import"./arrow-up-CZr2LH5e.js";import"./chevron-right-trO6yoBr.js";import"./dialog-D5BsJN2q.js";import"./x-BLllJ8d_.js";import"./useQuery-ByZlZXlw.js";const oe=["fact","preference","goal","history","profile"],me=[25,50,100],F=50,de=300;function ke(){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{ke as default};
2
- //# sourceMappingURL=facts-Cfu6Lg3H.js.map
@@ -1,2 +0,0 @@
1
- import{ae as p,ad as f,V as e,c as g,t as y}from"./index-CGaI-i4K.js";import{e as N}from"./react-C9F3QeMB.js";import{E as v}from"./empty-state-CwUKG8xX.js";import{T as w,d as C,e as h,c as i,a as M,b as o}from"./table-9FRavyyI.js";import{a as L}from"./use-observability-BQa4b0Uk.js";import{L as T}from"./loader-circle-BBIfyATA.js";import{R as k}from"./refresh-ccw-DpPWcwTg.js";import{A as D}from"./activity-C6r508cN.js";import"./useQuery-ByZlZXlw.js";function P(){const{t:s}=p(["observability","common"]),[l]=f(),n=Math.max(1,Number(l.get("days"))||7),{data:c,isLoading:u,isFetching:m,refetch:b}=L(n),a=c?.totals,d=c?.byDay??[],j=N.useMemo(()=>d.reduce((t,x)=>x.calls>t?x.calls:t,0),[d]);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("health.title")}),e.jsxs(g,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>b(),disabled:m,"aria-label":s("actions.refresh",{ns:"common"}),children:[m?e.jsx(T,{className:"h-4 w-4 animate-spin"}):e.jsx(k,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:s("actions.refresh",{ns:"common"})})]})]}),c&&e.jsxs("p",{className:"text-xs text-text-dim tabular-nums",children:[c.since," → ",c.until]})]}),u?e.jsx("div",{className:"h-48 w-full rounded-md bg-surface-2 animate-pulse"}):!a||a.calls===0&&d.length===0?e.jsx(v,{icon:e.jsx(D,{}),title:s("health.empty.title"),description:s("health.empty.description")}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3 lg:grid-cols-6",children:[e.jsx(r,{label:s("health.kpi.calls"),value:String(a.calls),tone:"info"}),e.jsx(r,{label:s("health.kpi.cost"),value:`$${a.cost.toFixed(4)}`,tone:"info"}),e.jsx(r,{label:s("health.kpi.errors"),value:String(a.errors),tone:a.errors>0?"danger":"success"}),e.jsx(r,{label:s("health.kpi.errorRate"),value:`${(a.errorRate*100).toFixed(1)}%`,tone:a.errorRate>.05?"warning":"success"}),e.jsx(r,{label:s("health.kpi.avgLatencyMs"),value:`${Math.round(a.avgLatencyMs)}ms`,tone:"info"}),e.jsx(r,{label:s("health.kpi.p95LatencyMs"),value:`${Math.round(a.p95LatencyMs)}ms`,tone:"info"})]}),e.jsxs("div",{children:[e.jsx("h2",{className:"mb-2 text-sm font-medium uppercase tracking-wide text-text-dim",children:s("health.byDay")}),e.jsxs(w,{children:[e.jsx(C,{children:e.jsxs(h,{children:[e.jsx(i,{className:"w-28",children:s("health.byDayCol.date")}),e.jsx(i,{children:s("health.byDayCol.calls")}),e.jsx(i,{className:"w-24",children:s("health.byDayCol.cost")}),e.jsx(i,{className:"w-24",children:s("health.byDayCol.errors")}),e.jsx(i,{className:"w-32",children:s("health.byDayCol.avgLatencyMs")})]})}),e.jsx(M,{children:d.map(t=>e.jsxs(h,{children:[e.jsx(o,{className:"font-mono text-xs",children:t.date}),e.jsx(o,{children:e.jsx(S,{value:t.calls,max:j})}),e.jsxs(o,{className:"tabular-nums",children:["$",t.cost.toFixed(4)]}),e.jsx(o,{className:"tabular-nums",children:e.jsx("span",{className:t.errors>0?"text-danger":"text-text-dim",children:t.errors})}),e.jsxs(o,{className:"tabular-nums",children:[Math.round(t.avgLatencyMs),"ms"]})]},t.date))})]})]})]})]})}const R={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 r({label:s,value:l,tone:n}){return e.jsxs("div",{className:y("rounded-md border bg-surface px-3 py-2",R[n]),children:[e.jsx("div",{className:"text-xs uppercase tracking-wide text-text-dim",children:s}),e.jsx("div",{className:"text-xl font-semibold tabular-nums",children:l})]})}function S({value:s,max:l}){const n=l>0?s/l*100:0;return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"relative h-3 w-full max-w-xs overflow-hidden rounded bg-surface-2",children:e.jsx("div",{className:"absolute inset-y-0 left-0 bg-accent/60",style:{width:`${n}%`}})}),e.jsx("span",{className:"tabular-nums text-sm text-text-dim",children:s})]})}export{P as default};
2
- //# sourceMappingURL=health-BObMAngj.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hot-BXYotT26.js","sources":["../../node_modules/lucide-react/dist/esm/icons/copy.js","../../node_modules/lucide-react/dist/esm/icons/flame.js","../../node_modules/lucide-react/dist/esm/icons/star.js","../../src/hooks/use-skills.ts","../../src/routes/settings/agim-skills/hot.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Copy = createLucideIcon(\"Copy\", [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n]);\n\nexport { Copy as default };\n//# sourceMappingURL=copy.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Flame = createLucideIcon(\"Flame\", [\n [\n \"path\",\n {\n d: \"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\",\n key: \"96xj49\"\n }\n ]\n]);\n\nexport { Flame as default };\n//# sourceMappingURL=flame.js.map\n","/**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Star = createLucideIcon(\"Star\", [\n [\n \"path\",\n {\n d: \"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\",\n key: \"r04s7s\"\n }\n ]\n]);\n\nexport { Star as default };\n//# sourceMappingURL=star.js.map\n","/**\n * useSkills — read-only browse of the agent skills.\n *\n * useSkills() — list of every skill on disk\n * useSkillDetail(slug) — markdown body, fetched on demand\n * when the modal opens\n *\n * No mutations: installs happen via the skillhub CLI on the host,\n * agim is strictly read-only here.\n */\n\nimport { useQuery } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type {\n ListSkillsResponse,\n RemoteHotSkillsResponse,\n SkillDetail,\n} from '@/types/api'\n\nexport const skillsKeys = {\n all: ['skills'] as const,\n list: ['skills', 'list'] as const,\n detail: (slug: string) => ['skills', 'detail', slug] as const,\n remoteHot: ['skills', 'remote', 'hot'] as const,\n}\n\nexport function useSkills() {\n return useQuery<ListSkillsResponse>({\n queryKey: skillsKeys.list,\n queryFn: () => api.listSkills(),\n })\n}\n\nexport function useSkillDetail(slug: string | null) {\n return useQuery<SkillDetail>({\n queryKey: skillsKeys.detail(slug ?? ''),\n queryFn: () => api.getSkillDetail(slug as string),\n enabled: Boolean(slug),\n })\n}\n\n/** skillhub.cn hot list. The proxy on the server caches for 5 min and\n * serves stale-while-error, so we don't need an aggressive client-side\n * refresh — the operator hits the refresh button when they want fresh\n * data. staleTime keeps tab-switch round-trips cheap. */\nexport function useSkillsRemoteHot() {\n return useQuery<RemoteHotSkillsResponse>({\n queryKey: skillsKeys.remoteHot,\n queryFn: () => api.getSkillsRemoteHot(),\n staleTime: 60_000,\n })\n}\n","/**\n * /skills/hot — read-only browse of skillhub.cn's hot list.\n *\n * Backed by /api/skills/remote/hot (server proxies upstream with a\n * 5-min cache + stale-while-error). agim never auto-runs an install:\n * the detail dialog surfaces three copy-pasteable commands and the\n * operator decides where to execute.\n *\n * Restored from v1's tasks.html in 2026-05; the v2 SPA had the\n * installed-skills view but had dropped the hot list during the\n * memory-tab port.\n */\n\nimport { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { toast } from 'sonner'\nimport {\n Copy,\n Download,\n ExternalLink,\n Flame,\n Loader2,\n RefreshCcw,\n Search,\n Star,\n} from 'lucide-react'\n\nimport { EmptyState } from '@/components/common/empty-state'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/components/ui/dialog'\nimport { Input } from '@/components/ui/input'\nimport { useSkillsRemoteHot } from '@/hooks/use-skills'\nimport type { RemoteSkill } from '@/types/api'\nimport { cn } from '@/lib/utils'\n\nexport default function SkillsHotRoute(): JSX.Element {\n const { t } = useTranslation(['skills', 'common'])\n const { data, isLoading, isFetching, refetch } = useSkillsRemoteHot()\n\n const skills: RemoteSkill[] = data?.skills ?? []\n const [q, setQ] = useState('')\n const [openSlug, setOpenSlug] = useState<string | null>(null)\n\n const filtered = useMemo(() => {\n const needle = q.trim().toLowerCase()\n if (!needle) return skills\n return skills.filter((s) =>\n s.slug.toLowerCase().includes(needle)\n || (s.name || '').toLowerCase().includes(needle)\n || (s.description || '').toLowerCase().includes(needle)\n || (s.category || '').toLowerCase().includes(needle)\n )\n }, [skills, q])\n\n const openSkill = openSlug ? skills.find((s) => s.slug === openSlug) ?? null : null\n\n return (\n <div className=\"mx-auto flex max-w-5xl flex-col gap-4\">\n <header className=\"flex flex-col gap-1\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"text-xl font-semibold inline-flex items-center gap-2\">\n <Flame className=\"h-5 w-5 text-warning\" />\n {t('hot.title')}\n </h1>\n <div className=\"ml-auto flex items-center gap-2\">\n <Button\n asChild\n variant=\"ghost\"\n size=\"sm\"\n >\n <a\n href=\"https://skillhub.cn\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n <span className=\"hidden sm:inline\">{t('hot.openHub')}</span>\n </a>\n </Button>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => refetch()}\n disabled={isFetching}\n aria-label={t('actions.refresh', { ns: 'common' })}\n >\n {isFetching ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : <RefreshCcw className=\"h-4 w-4\" />}\n <span className=\"hidden sm:inline\">{t('actions.refresh', { ns: 'common' })}</span>\n </Button>\n </div>\n </div>\n <p className=\"text-sm text-text-dim\">{t('hot.subtitle')}</p>\n {data && (\n <CacheMeta\n cached={!!data.cached}\n stale={!!data.stale}\n fetchedAt={data.fetchedAt}\n />\n )}\n </header>\n\n {skills.length > 0 && (\n <div className=\"flex flex-wrap items-end gap-2\">\n <div className=\"relative flex-1 min-w-[180px] max-w-md\">\n <Search className=\"pointer-events-none absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-text-muted\" />\n <Input\n value={q}\n onChange={(e) => setQ(e.target.value)}\n placeholder={t('actions.search', { ns: 'common' })}\n className=\"pl-7\"\n />\n </div>\n <Badge variant=\"secondary\" className=\"ml-auto\">\n {filtered.length} / {skills.length}\n </Badge>\n </div>\n )}\n\n {isLoading ? (\n <div className=\"h-48 w-full rounded-md bg-surface-2 animate-pulse\" />\n ) : skills.length === 0 ? (\n <EmptyState icon={<Flame />} title={t('hot.empty')} />\n ) : (\n <ul className=\"flex flex-col gap-2\">\n {filtered.map((s) => (\n <li key={s.slug}>\n <button\n type=\"button\"\n onClick={() => setOpenSlug(s.slug)}\n className={cn(\n 'flex w-full flex-col gap-1 rounded-md border border-border bg-surface px-3 py-2 text-left',\n 'transition-colors hover:border-border-strong hover:bg-surface-hover',\n )}\n >\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-text\">{s.name || s.slug}</span>\n {s.version && (\n <span className=\"text-text-muted text-xs font-mono\">v{s.version}</span>\n )}\n {s.category && (\n <Badge variant=\"outline\">{s.category}</Badge>\n )}\n <div className=\"ml-auto flex items-center gap-3 text-xs text-text-dim tabular-nums\">\n <span className=\"inline-flex items-center gap-1\">\n <Star className=\"h-3 w-3\" />\n {formatNum(s.stars)}\n </span>\n <span className=\"inline-flex items-center gap-1\">\n <Download className=\"h-3 w-3\" />\n {formatNum(s.installs)}\n </span>\n </div>\n </div>\n <code className=\"text-text-muted text-xs font-mono\">{s.slug}</code>\n {s.description && (\n <p className=\"line-clamp-2 text-sm text-text-dim\">{s.description}</p>\n )}\n </button>\n </li>\n ))}\n </ul>\n )}\n\n <RemoteSkillDialog\n skill={openSkill}\n onOpenChange={(open) => { if (!open) setOpenSlug(null) }}\n />\n </div>\n )\n}\n\nfunction CacheMeta({\n cached,\n stale,\n fetchedAt,\n}: {\n cached: boolean\n stale: boolean\n fetchedAt: number\n}): JSX.Element | null {\n const { t } = useTranslation('skills')\n const when = useMemo(() => {\n try {\n const d = new Date(fetchedAt)\n if (Number.isNaN(d.getTime())) return ''\n return d.toLocaleString(undefined, {\n month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit',\n })\n } catch {\n return ''\n }\n }, [fetchedAt])\n return (\n <div className=\"flex flex-wrap items-center gap-2 text-xs text-text-muted\">\n <span>{t('hot.updatedAt', { at: when })}</span>\n {cached && <Badge variant=\"outline\">{t('hot.cached')}</Badge>}\n {stale && <Badge variant=\"warning\">{t('hot.stale')}</Badge>}\n </div>\n )\n}\n\ninterface RemoteSkillDialogProps {\n skill: RemoteSkill | null\n onOpenChange: (open: boolean) => void\n}\n\nfunction RemoteSkillDialog({ skill, onOpenChange }: RemoteSkillDialogProps): JSX.Element {\n const { t } = useTranslation('skills')\n\n // Three copy-pasteable install paths. agim never executes them itself\n // — the operator chooses CLI or IM.\n const commands = useMemo(() => {\n if (!skill) return []\n return [\n { key: 'cliInstall', cmd: `skillhub install ${skill.slug}` },\n { key: 'cliSearch', cmd: `skillhub search ${skill.slug}` },\n { key: 'imAsk', cmd: `请用 skillhub 安装 ${skill.slug} 技能` },\n ]\n }, [skill])\n\n return (\n <Dialog open={skill != null} onOpenChange={onOpenChange}>\n <DialogContent className=\"sm:max-w-2xl\">\n <DialogHeader>\n <DialogTitle>{skill?.name || skill?.slug || ''}</DialogTitle>\n {skill?.description && (\n <DialogDescription>{skill.description}</DialogDescription>\n )}\n </DialogHeader>\n\n {skill && (\n <>\n <dl className=\"grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-xs\">\n <dt className=\"text-text-dim\">slug</dt>\n <dd className=\"font-mono\">{skill.slug}</dd>\n {skill.version && (\n <>\n <dt className=\"text-text-dim\">{t('hot.detail.version')}</dt>\n <dd className=\"font-mono\">v{skill.version}</dd>\n </>\n )}\n {skill.category && (\n <>\n <dt className=\"text-text-dim\">{t('hot.detail.category')}</dt>\n <dd>{skill.category}</dd>\n </>\n )}\n <dt className=\"text-text-dim\">{t('hot.detail.stars')}</dt>\n <dd className=\"tabular-nums\">{formatNum(skill.stars)}</dd>\n <dt className=\"text-text-dim\">{t('hot.detail.installs')}</dt>\n <dd className=\"tabular-nums\">{formatNum(skill.installs)}</dd>\n {skill.downloads != null && (\n <>\n <dt className=\"text-text-dim\">{t('hot.detail.downloads')}</dt>\n <dd className=\"tabular-nums\">{formatNum(skill.downloads)}</dd>\n </>\n )}\n </dl>\n\n <div className=\"mt-4 border-t border-border pt-3\">\n <h3 className=\"text-sm font-medium\">{t('hot.detail.howInstall')}</h3>\n <ul className=\"mt-2 flex flex-col gap-2\">\n {commands.map((c) => (\n <li key={c.key} className=\"flex flex-col gap-1 sm:flex-row sm:items-center sm:gap-2\">\n <span className=\"text-xs text-text-dim sm:w-40 sm:shrink-0\">\n {t(`hot.detail.label.${c.key}`)}\n </span>\n <code className=\"flex-1 rounded bg-surface-2 px-2 py-1 font-mono text-xs break-all\">\n {c.cmd}\n </code>\n <CopyButton text={c.cmd} />\n </li>\n ))}\n </ul>\n <p className=\"mt-3 text-[11px] text-text-muted\">{t('hot.detail.hint')}</p>\n </div>\n </>\n )}\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CopyButton({ text }: { text: string }): JSX.Element {\n const { t } = useTranslation('skills')\n const [copied, setCopied] = useState(false)\n async function onClick(): Promise<void> {\n try {\n await navigator.clipboard.writeText(text)\n setCopied(true)\n toast.success(t('hot.detail.copied'))\n setTimeout(() => setCopied(false), 1500)\n } catch (err) {\n toast.error(String((err as Error)?.message ?? err))\n }\n }\n return (\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => void onClick()}\n className=\"shrink-0\"\n >\n <Copy className=\"h-3 w-3\" />\n {copied ? t('hot.detail.copied') : t('hot.detail.copy')}\n </Button>\n )\n}\n\nfunction formatNum(n: number | undefined): string {\n if (n == null || !Number.isFinite(n)) return '—'\n return n.toLocaleString()\n}\n"],"names":["Copy","createLucideIcon","Flame","Star","skillsKeys","useSkillsRemoteHot","useQuery","api","SkillsHotRoute","t","useTranslation","data","isLoading","isFetching","refetch","skills","q","setQ","useState","openSlug","setOpenSlug","filtered","useMemo","needle","s","openSkill","jsxs","jsx","Button","ExternalLink","Loader2","RefreshCcw","CacheMeta","Search","Input","e","Badge","EmptyState","cn","formatNum","Download","RemoteSkillDialog","open","cached","stale","fetchedAt","when","d","skill","onOpenChange","commands","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Fragment","c","CopyButton","text","copied","setCopied","onClick","toast","err","n"],"mappings":"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","x_google_ignoreList":[0,1,2]}