agim-cli 1.2.131 → 1.2.133

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 (188) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/dist/core/llm/agent-loop.d.ts.map +1 -1
  3. package/dist/core/llm/agent-loop.js +16 -5
  4. package/dist/core/llm/agent-loop.js.map +1 -1
  5. package/dist/web/public/assets/{a2a-Rq5d7Xk5.js → a2a-TmaKRhXV.js} +2 -2
  6. package/dist/web/public/assets/{a2a-Rq5d7Xk5.js.map → a2a-TmaKRhXV.js.map} +1 -1
  7. package/dist/web/public/assets/{activity-FCJjBNRM.js → activity-Cckc7fGG.js} +2 -2
  8. package/dist/web/public/assets/{activity-FCJjBNRM.js.map → activity-Cckc7fGG.js.map} +1 -1
  9. package/dist/web/public/assets/{admins-9fFdLRCv.js → admins-1hMCDolP.js} +2 -2
  10. package/dist/web/public/assets/{admins-9fFdLRCv.js.map → admins-1hMCDolP.js.map} +1 -1
  11. package/dist/web/public/assets/{agents-CiWiDAvY.js → agents-3sUHlKzx.js} +2 -2
  12. package/dist/web/public/assets/{agents-CiWiDAvY.js.map → agents-3sUHlKzx.js.map} +1 -1
  13. package/dist/web/public/assets/{approvals-4gNB4E5r.js → approvals-CY-_Lg4Y.js} +2 -2
  14. package/dist/web/public/assets/{approvals-4gNB4E5r.js.map → approvals-CY-_Lg4Y.js.map} +1 -1
  15. package/dist/web/public/assets/{arrow-down-CL6JRd2c.js → arrow-down-BkZ50IzL.js} +2 -2
  16. package/dist/web/public/assets/{arrow-down-CL6JRd2c.js.map → arrow-down-BkZ50IzL.js.map} +1 -1
  17. package/dist/web/public/assets/{arrow-up-B47-Pj-X.js → arrow-up-NWC5K6Jw.js} +2 -2
  18. package/dist/web/public/assets/{arrow-up-B47-Pj-X.js.map → arrow-up-NWC5K6Jw.js.map} +1 -1
  19. package/dist/web/public/assets/{asks-DPTxh_Os.js → asks-VzAmpsEh.js} +2 -2
  20. package/dist/web/public/assets/{asks-DPTxh_Os.js.map → asks-VzAmpsEh.js.map} +1 -1
  21. package/dist/web/public/assets/{audit-Dw3mL-g7.js → audit-fOn2LH4D.js} +2 -2
  22. package/dist/web/public/assets/{audit-Dw3mL-g7.js.map → audit-fOn2LH4D.js.map} +1 -1
  23. package/dist/web/public/assets/{bell-ojwGPpS7.js → bell-FF7PJo1N.js} +2 -2
  24. package/dist/web/public/assets/{bell-ojwGPpS7.js.map → bell-FF7PJo1N.js.map} +1 -1
  25. package/dist/web/public/assets/{bgjobs-DDTjejCS.js → bgjobs-L0v-UwPW.js} +2 -2
  26. package/dist/web/public/assets/{bgjobs-DDTjejCS.js.map → bgjobs-L0v-UwPW.js.map} +1 -1
  27. package/dist/web/public/assets/{brain-wzaKeCbt.js → brain-CdkDpFr1.js} +2 -2
  28. package/dist/web/public/assets/{brain-wzaKeCbt.js.map → brain-CdkDpFr1.js.map} +1 -1
  29. package/dist/web/public/assets/{briefcase-CCAq-ik6.js → briefcase-BXbOdl7E.js} +2 -2
  30. package/dist/web/public/assets/{briefcase-CCAq-ik6.js.map → briefcase-BXbOdl7E.js.map} +1 -1
  31. package/dist/web/public/assets/{chat-CbSvPFpG.js → chat-BazMi-ik.js} +3 -3
  32. package/dist/web/public/assets/{chat-CbSvPFpG.js.map → chat-BazMi-ik.js.map} +1 -1
  33. package/dist/web/public/assets/{chevron-left-bpKHh9Bu.js → chevron-left-Di1Tz64J.js} +2 -2
  34. package/dist/web/public/assets/{chevron-left-bpKHh9Bu.js.map → chevron-left-Di1Tz64J.js.map} +1 -1
  35. package/dist/web/public/assets/{chevron-right-CUlLpETY.js → chevron-right-BLjhBkqs.js} +2 -2
  36. package/dist/web/public/assets/{chevron-right-CUlLpETY.js.map → chevron-right-BLjhBkqs.js.map} +1 -1
  37. package/dist/web/public/assets/{circle-check-D98QQwz0.js → circle-check-BaxzYLlE.js} +2 -2
  38. package/dist/web/public/assets/{circle-check-D98QQwz0.js.map → circle-check-BaxzYLlE.js.map} +1 -1
  39. package/dist/web/public/assets/{circle-check-big-BP-0K1le.js → circle-check-big-C4BGLUvw.js} +2 -2
  40. package/dist/web/public/assets/{circle-check-big-BP-0K1le.js.map → circle-check-big-C4BGLUvw.js.map} +1 -1
  41. package/dist/web/public/assets/{circle-x-Et3rwVPd.js → circle-x-THl-PO3_.js} +2 -2
  42. package/dist/web/public/assets/{circle-x-Et3rwVPd.js.map → circle-x-THl-PO3_.js.map} +1 -1
  43. package/dist/web/public/assets/clock-iitpdQjZ.js +7 -0
  44. package/dist/web/public/assets/clock-iitpdQjZ.js.map +1 -0
  45. package/dist/web/public/assets/{confirm-dialog-6dKowsEt.js → confirm-dialog-r9HgkIYf.js} +2 -2
  46. package/dist/web/public/assets/{confirm-dialog-6dKowsEt.js.map → confirm-dialog-r9HgkIYf.js.map} +1 -1
  47. package/dist/web/public/assets/{copy-kCWCP9Wu.js → copy-DwyF4MOL.js} +2 -2
  48. package/dist/web/public/assets/{copy-kCWCP9Wu.js.map → copy-DwyF4MOL.js.map} +1 -1
  49. package/dist/web/public/assets/{data-table-BbNkr6tW.js → data-table-B80M8zdu.js} +2 -2
  50. package/dist/web/public/assets/{data-table-BbNkr6tW.js.map → data-table-B80M8zdu.js.map} +1 -1
  51. package/dist/web/public/assets/dialog-fGS0IXOo.js +6 -0
  52. package/dist/web/public/assets/{dialog-Cv87qelJ.js.map → dialog-fGS0IXOo.js.map} +1 -1
  53. package/dist/web/public/assets/{download-Cv8u9PxC.js → download-5ihiF2Gj.js} +2 -2
  54. package/dist/web/public/assets/{download-Cv8u9PxC.js.map → download-5ihiF2Gj.js.map} +1 -1
  55. package/dist/web/public/assets/{email-BS3f2y7i.js → email-LmRMqLRU.js} +3 -3
  56. package/dist/web/public/assets/{email-BS3f2y7i.js.map → email-LmRMqLRU.js.map} +1 -1
  57. package/dist/web/public/assets/{empty-state-CRnid5FY.js → empty-state-CrPnUC6d.js} +2 -2
  58. package/dist/web/public/assets/{empty-state-CRnid5FY.js.map → empty-state-CrPnUC6d.js.map} +1 -1
  59. package/dist/web/public/assets/{external-link-CzQc-c_P.js → external-link-DIJK1MAH.js} +2 -2
  60. package/dist/web/public/assets/{external-link-CzQc-c_P.js.map → external-link-DIJK1MAH.js.map} +1 -1
  61. package/dist/web/public/assets/{eye-DEBkfJiC.js → eye-DJJw0Ald.js} +2 -2
  62. package/dist/web/public/assets/{eye-DEBkfJiC.js.map → eye-DJJw0Ald.js.map} +1 -1
  63. package/dist/web/public/assets/{facts-O3FFqdD1.js → facts-BzImxpJD.js} +2 -2
  64. package/dist/web/public/assets/{facts-O3FFqdD1.js.map → facts-BzImxpJD.js.map} +1 -1
  65. package/dist/web/public/assets/{goals-pr5ky9rG.js → goals-C6p21B9N.js} +2 -2
  66. package/dist/web/public/assets/{goals-pr5ky9rG.js.map → goals-C6p21B9N.js.map} +1 -1
  67. package/dist/web/public/assets/{health-D_rfBsgq.js → health-D-ugz2Gp.js} +2 -2
  68. package/dist/web/public/assets/{health-D_rfBsgq.js.map → health-D-ugz2Gp.js.map} +1 -1
  69. package/dist/web/public/assets/{heart-pulse-203oH09r.js → heart-pulse-DlZXcdL0.js} +2 -2
  70. package/dist/web/public/assets/{heart-pulse-203oH09r.js.map → heart-pulse-DlZXcdL0.js.map} +1 -1
  71. package/dist/web/public/assets/{heartbeat-B5yJoH-X.js → heartbeat-DSasg-3y.js} +2 -2
  72. package/dist/web/public/assets/{heartbeat-B5yJoH-X.js.map → heartbeat-DSasg-3y.js.map} +1 -1
  73. package/dist/web/public/assets/{hot-CXGeh4Oo.js → hot-D67pYtaV.js} +2 -2
  74. package/dist/web/public/assets/{hot-CXGeh4Oo.js.map → hot-D67pYtaV.js.map} +1 -1
  75. package/dist/web/public/assets/{index-CuNnG-5O.js → index-CqwhfPlr.js} +9 -9
  76. package/dist/web/public/assets/index-CqwhfPlr.js.map +1 -0
  77. package/dist/web/public/assets/{installed-CQKXZNEU.js → installed-CrIsSoQE.js} +2 -2
  78. package/dist/web/public/assets/{installed-CQKXZNEU.js.map → installed-CrIsSoQE.js.map} +1 -1
  79. package/dist/web/public/assets/{jobs-DPxN8Ko0.js → jobs-yAwphb1W.js} +2 -2
  80. package/dist/web/public/assets/{jobs-DPxN8Ko0.js.map → jobs-yAwphb1W.js.map} +1 -1
  81. package/dist/web/public/assets/{layout-CxQy-DtV.js → layout-BXZKGQAk.js} +2 -2
  82. package/dist/web/public/assets/{layout-CxQy-DtV.js.map → layout-BXZKGQAk.js.map} +1 -1
  83. package/dist/web/public/assets/layout-CL5HFvHN.js +2 -0
  84. package/dist/web/public/assets/layout-CL5HFvHN.js.map +1 -0
  85. package/dist/web/public/assets/{layout-CQXWA5Ak.js → layout-CrtmlC8G.js} +2 -2
  86. package/dist/web/public/assets/{layout-CQXWA5Ak.js.map → layout-CrtmlC8G.js.map} +1 -1
  87. package/dist/web/public/assets/{layout-4C_GhacH.js → layout-awbFImGg.js} +2 -2
  88. package/dist/web/public/assets/{layout-4C_GhacH.js.map → layout-awbFImGg.js.map} +1 -1
  89. package/dist/web/public/assets/{layout-VOwsqNph.js → layout-cacmfseo.js} +2 -2
  90. package/dist/web/public/assets/{layout-VOwsqNph.js.map → layout-cacmfseo.js.map} +1 -1
  91. package/dist/web/public/assets/{llm-i15cVS6k.js → llm-C19AX6q2.js} +2 -2
  92. package/dist/web/public/assets/{llm-i15cVS6k.js.map → llm-C19AX6q2.js.map} +1 -1
  93. package/dist/web/public/assets/{loader-circle-CVEo3Hwx.js → loader-circle-U-jPjmeD.js} +2 -2
  94. package/dist/web/public/assets/{loader-circle-CVEo3Hwx.js.map → loader-circle-U-jPjmeD.js.map} +1 -1
  95. package/dist/web/public/assets/{map-pin-BlmDrPGJ.js → map-pin-4rE1NK87.js} +2 -2
  96. package/dist/web/public/assets/{map-pin-BlmDrPGJ.js.map → map-pin-4rE1NK87.js.map} +1 -1
  97. package/dist/web/public/assets/{mcp-9MlUdHAS.js → mcp-B94wc6Vi.js} +2 -2
  98. package/dist/web/public/assets/{mcp-9MlUdHAS.js.map → mcp-B94wc6Vi.js.map} +1 -1
  99. package/dist/web/public/assets/{memos-MDYe436b.js → memos-CrG4zgfI.js} +3 -3
  100. package/dist/web/public/assets/{memos-MDYe436b.js.map → memos-CrG4zgfI.js.map} +1 -1
  101. package/dist/web/public/assets/{messengers-D0F-cgJ0.js → messengers-UWarJd_C.js} +2 -2
  102. package/dist/web/public/assets/{messengers-D0F-cgJ0.js.map → messengers-UWarJd_C.js.map} +1 -1
  103. package/dist/web/public/assets/{mobile-Bezz5MnW.js → mobile-QhAUKqcJ.js} +2 -2
  104. package/dist/web/public/assets/{mobile-Bezz5MnW.js.map → mobile-QhAUKqcJ.js.map} +1 -1
  105. package/dist/web/public/assets/{native-agent-bRS7DRfj.js → native-agent-DMf0u4dm.js} +2 -2
  106. package/dist/web/public/assets/{native-agent-bRS7DRfj.js.map → native-agent-DMf0u4dm.js.map} +1 -1
  107. package/dist/web/public/assets/{network-3O1O1jsk.js → network-l6l5gLHO.js} +2 -2
  108. package/dist/web/public/assets/{network-3O1O1jsk.js.map → network-l6l5gLHO.js.map} +1 -1
  109. package/dist/web/public/assets/{outbox-D2iX9mcs.js → outbox-BenX_yUQ.js} +2 -2
  110. package/dist/web/public/assets/{outbox-D2iX9mcs.js.map → outbox-BenX_yUQ.js.map} +1 -1
  111. package/dist/web/public/assets/{pagination-79ms7QFI.js → pagination-B4g1CBsi.js} +2 -2
  112. package/dist/web/public/assets/{pagination-79ms7QFI.js.map → pagination-B4g1CBsi.js.map} +1 -1
  113. package/dist/web/public/assets/{persona-D37NzRbz.js → persona--3cjtl9q.js} +2 -2
  114. package/dist/web/public/assets/{persona-D37NzRbz.js.map → persona--3cjtl9q.js.map} +1 -1
  115. package/dist/web/public/assets/plans-DsHtDRlS.js +12 -0
  116. package/dist/web/public/assets/plans-DsHtDRlS.js.map +1 -0
  117. package/dist/web/public/assets/{play-BedplEoY.js → play-BG0hyTnO.js} +2 -2
  118. package/dist/web/public/assets/{play-BedplEoY.js.map → play-BG0hyTnO.js.map} +1 -1
  119. package/dist/web/public/assets/{plus-4GdEpvTV.js → plus-Dof9AQvU.js} +2 -2
  120. package/dist/web/public/assets/{plus-4GdEpvTV.js.map → plus-Dof9AQvU.js.map} +1 -1
  121. package/dist/web/public/assets/{policy-Gmd4rmzp.js → policy-BzHy4WbV.js} +2 -2
  122. package/dist/web/public/assets/{policy-Gmd4rmzp.js.map → policy-BzHy4WbV.js.map} +1 -1
  123. package/dist/web/public/assets/{qr-code-DVgHWDky.js → qr-code-yD_ztCf6.js} +2 -2
  124. package/dist/web/public/assets/{qr-code-DVgHWDky.js.map → qr-code-yD_ztCf6.js.map} +1 -1
  125. package/dist/web/public/assets/{refresh-ccw-DZHRYuFA.js → refresh-ccw-CBiHL1tY.js} +2 -2
  126. package/dist/web/public/assets/{refresh-ccw-DZHRYuFA.js.map → refresh-ccw-CBiHL1tY.js.map} +1 -1
  127. package/dist/web/public/assets/reminders-CDJlFR2Y.js +7 -0
  128. package/dist/web/public/assets/reminders-CDJlFR2Y.js.map +1 -0
  129. package/dist/web/public/assets/{save-DQlBAXAl.js → save-DVHI3V6o.js} +2 -2
  130. package/dist/web/public/assets/{save-DQlBAXAl.js.map → save-DVHI3V6o.js.map} +1 -1
  131. package/dist/web/public/assets/{schedules-BtuWAAd7.js → schedules-DYf64Fpr.js} +2 -2
  132. package/dist/web/public/assets/{schedules-BtuWAAd7.js.map → schedules-DYf64Fpr.js.map} +1 -1
  133. package/dist/web/public/assets/{search-dBGBHpnH.js → search-BYPDbBkC.js} +2 -2
  134. package/dist/web/public/assets/{search-dBGBHpnH.js.map → search-BYPDbBkC.js.map} +1 -1
  135. package/dist/web/public/assets/{search-DJXxphzz.js → search-aw0y39Qs.js} +2 -2
  136. package/dist/web/public/assets/{search-DJXxphzz.js.map → search-aw0y39Qs.js.map} +1 -1
  137. package/dist/web/public/assets/{security-CP0MP_Gx.js → security-DhN1kRac.js} +2 -2
  138. package/dist/web/public/assets/{security-CP0MP_Gx.js.map → security-DhN1kRac.js.map} +1 -1
  139. package/dist/web/public/assets/{service-BJFnNe7Y.js → service-BhvI7Mb5.js} +2 -2
  140. package/dist/web/public/assets/{service-BJFnNe7Y.js.map → service-BhvI7Mb5.js.map} +1 -1
  141. package/dist/web/public/assets/{shield-alert-DRh8fC8Z.js → shield-alert-DjqqnTMk.js} +2 -2
  142. package/dist/web/public/assets/{shield-alert-DRh8fC8Z.js.map → shield-alert-DjqqnTMk.js.map} +1 -1
  143. package/dist/web/public/assets/{status-badge-CTRG6Pb2.js → status-badge-nSFUUEfy.js} +2 -2
  144. package/dist/web/public/assets/{status-badge-CTRG6Pb2.js.map → status-badge-nSFUUEfy.js.map} +1 -1
  145. package/dist/web/public/assets/{subtasks-BiZ2mCPs.js → subtasks-C_x1RLJA.js} +2 -2
  146. package/dist/web/public/assets/{subtasks-BiZ2mCPs.js.map → subtasks-C_x1RLJA.js.map} +1 -1
  147. package/dist/web/public/assets/{table-Dbriy3Jz.js → table-BNqo2xb8.js} +2 -2
  148. package/dist/web/public/assets/{table-Dbriy3Jz.js.map → table-BNqo2xb8.js.map} +1 -1
  149. package/dist/web/public/assets/{topn-BEi7Uvlg.js → topn-NGtwNz38.js} +2 -2
  150. package/dist/web/public/assets/{topn-BEi7Uvlg.js.map → topn-NGtwNz38.js.map} +1 -1
  151. package/dist/web/public/assets/{trash-2-BgltvQpz.js → trash-2-BoFq2ZOF.js} +2 -2
  152. package/dist/web/public/assets/{trash-2-BgltvQpz.js.map → trash-2-BoFq2ZOF.js.map} +1 -1
  153. package/dist/web/public/assets/use-background-tasks-CY2gWPBZ.js +2 -0
  154. package/dist/web/public/assets/{use-background-tasks-DHo3Hnu9.js.map → use-background-tasks-CY2gWPBZ.js.map} +1 -1
  155. package/dist/web/public/assets/{use-llm-admin-EU1V1WQ5.js → use-llm-admin-CA5tUbEU.js} +2 -2
  156. package/dist/web/public/assets/{use-llm-admin-EU1V1WQ5.js.map → use-llm-admin-CA5tUbEU.js.map} +1 -1
  157. package/dist/web/public/assets/{use-memory-D0FD5n0A.js → use-memory-CxasvYqR.js} +2 -2
  158. package/dist/web/public/assets/{use-memory-D0FD5n0A.js.map → use-memory-CxasvYqR.js.map} +1 -1
  159. package/dist/web/public/assets/{use-observability-CZg_sS2t.js → use-observability-BOepIjX5.js} +2 -2
  160. package/dist/web/public/assets/{use-observability-CZg_sS2t.js.map → use-observability-BOepIjX5.js.map} +1 -1
  161. package/dist/web/public/assets/{use-settings-D3vI1Dwg.js → use-settings-DBXvAYm9.js} +2 -2
  162. package/dist/web/public/assets/{use-settings-D3vI1Dwg.js.map → use-settings-DBXvAYm9.js.map} +1 -1
  163. package/dist/web/public/assets/{use-workspace-DWm4dRVD.js → use-workspace-dw_69jpb.js} +2 -2
  164. package/dist/web/public/assets/{use-workspace-DWm4dRVD.js.map → use-workspace-dw_69jpb.js.map} +1 -1
  165. package/dist/web/public/assets/{useQuery-DIlm0vJ-.js → useQuery-Ds6-WURB.js} +2 -2
  166. package/dist/web/public/assets/{useQuery-DIlm0vJ-.js.map → useQuery-Ds6-WURB.js.map} +1 -1
  167. package/dist/web/public/assets/{vector-CaijGbpn.js → vector-C5WBAtlL.js} +2 -2
  168. package/dist/web/public/assets/{vector-CaijGbpn.js.map → vector-C5WBAtlL.js.map} +1 -1
  169. package/dist/web/public/assets/{viewer-nU6uZJWq.js → viewer-DQG9P7-t.js} +2 -2
  170. package/dist/web/public/assets/{viewer-nU6uZJWq.js.map → viewer-DQG9P7-t.js.map} +1 -1
  171. package/dist/web/public/assets/{workspace-BluXJmIg.js → workspace-Dku83Qqr.js} +3 -3
  172. package/dist/web/public/assets/{workspace-BluXJmIg.js.map → workspace-Dku83Qqr.js.map} +1 -1
  173. package/dist/web/public/assets/{workspaces-B2nSpx9t.js → workspaces-ClLQ253x.js} +2 -2
  174. package/dist/web/public/assets/{workspaces-B2nSpx9t.js.map → workspaces-ClLQ253x.js.map} +1 -1
  175. package/dist/web/public/assets/{x-D_eFtxsK.js → x-ClXUlQDe.js} +2 -2
  176. package/dist/web/public/assets/{x-D_eFtxsK.js.map → x-ClXUlQDe.js.map} +1 -1
  177. package/dist/web/public/index.html +1 -1
  178. package/dist/web/server.d.ts.map +1 -1
  179. package/dist/web/server.js +28 -0
  180. package/dist/web/server.js.map +1 -1
  181. package/package.json +1 -1
  182. package/dist/web/public/assets/dialog-Cv87qelJ.js +0 -6
  183. package/dist/web/public/assets/index-CuNnG-5O.js.map +0 -1
  184. package/dist/web/public/assets/layout-tAyuz3-F.js +0 -2
  185. package/dist/web/public/assets/layout-tAyuz3-F.js.map +0 -1
  186. package/dist/web/public/assets/reminders-C00V-Fs9.js +0 -12
  187. package/dist/web/public/assets/reminders-C00V-Fs9.js.map +0 -1
  188. package/dist/web/public/assets/use-background-tasks-DHo3Hnu9.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"hot-CXGeh4Oo.js","sources":["../../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 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":["Flame","createLucideIcon","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","Copy","n"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"hot-D67pYtaV.js","sources":["../../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 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":["Flame","createLucideIcon","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","Copy","n"],"mappings":"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","x_google_ignoreList":[0,1]}