@hualinge/relay-web 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -0
  3. package/dist/assets/AgentsPage-2u2kFBCH.js +68 -0
  4. package/dist/assets/AgentsPage-2u2kFBCH.js.map +1 -0
  5. package/dist/assets/AgentsPage-BGbbVmeL.css +1 -0
  6. package/dist/assets/Alert-D88Fk6to.js +2 -0
  7. package/dist/assets/Alert-D88Fk6to.js.map +1 -0
  8. package/dist/assets/AppModal-BYZTSuch.js +2 -0
  9. package/dist/assets/AppModal-BYZTSuch.js.map +1 -0
  10. package/dist/assets/CenteredLoadingState-DHor-9vF.js +2 -0
  11. package/dist/assets/CenteredLoadingState-DHor-9vF.js.map +1 -0
  12. package/dist/assets/ChannelsPage-CbI0kqkd.js +2 -0
  13. package/dist/assets/ChannelsPage-CbI0kqkd.js.map +1 -0
  14. package/dist/assets/EmptyDataState-6mNx2Xhl.js +2 -0
  15. package/dist/assets/EmptyDataState-6mNx2Xhl.js.map +1 -0
  16. package/dist/assets/HelpPrompt-BPzDcC8F.js +2 -0
  17. package/dist/assets/HelpPrompt-BPzDcC8F.js.map +1 -0
  18. package/dist/assets/HomePage-t78sDDUj.js +2 -0
  19. package/dist/assets/HomePage-t78sDDUj.js.map +1 -0
  20. package/dist/assets/InspirationPage-BTqLpcHY.js +3 -0
  21. package/dist/assets/InspirationPage-BTqLpcHY.js.map +1 -0
  22. package/dist/assets/ModelsPage-YF0gpUxy.js +2 -0
  23. package/dist/assets/ModelsPage-YF0gpUxy.js.map +1 -0
  24. package/dist/assets/NameInitialIcon-DP-6_HQY.js +7 -0
  25. package/dist/assets/NameInitialIcon-DP-6_HQY.js.map +1 -0
  26. package/dist/assets/NoSearchResultsState-BiiYdZ_Z.js +2 -0
  27. package/dist/assets/NoSearchResultsState-BiiYdZ_Z.js.map +1 -0
  28. package/dist/assets/OverflowTooltip-CE5PjAb-.js +2 -0
  29. package/dist/assets/OverflowTooltip-CE5PjAb-.js.map +1 -0
  30. package/dist/assets/PasswordField-DmzjtnCg.js +2 -0
  31. package/dist/assets/PasswordField-DmzjtnCg.js.map +1 -0
  32. package/dist/assets/RefreshButton-BzYzeo5A.js +2 -0
  33. package/dist/assets/RefreshButton-BzYzeo5A.js.map +1 -0
  34. package/dist/assets/RightContentHeader-DoNDQ9Lo.js +3 -0
  35. package/dist/assets/RightContentHeader-DoNDQ9Lo.js.map +1 -0
  36. package/dist/assets/SchedulePage-CfW6lZVI.js +2 -0
  37. package/dist/assets/SchedulePage-CfW6lZVI.js.map +1 -0
  38. package/dist/assets/SearchInput-tux8xXH1.js +2 -0
  39. package/dist/assets/SearchInput-tux8xXH1.js.map +1 -0
  40. package/dist/assets/SkillAvatar-DwGvsY4f.js +2 -0
  41. package/dist/assets/SkillAvatar-DwGvsY4f.js.map +1 -0
  42. package/dist/assets/SkillsPage-ppqwKMvj.js +2 -0
  43. package/dist/assets/SkillsPage-ppqwKMvj.js.map +1 -0
  44. package/dist/assets/SkillsTab-c_As1DIr.css +1 -0
  45. package/dist/assets/SkillsTab-kY7MNdxy.js +2 -0
  46. package/dist/assets/SkillsTab-kY7MNdxy.js.map +1 -0
  47. package/dist/assets/Tab-FE0F2EQP.js +2 -0
  48. package/dist/assets/Tab-FE0F2EQP.js.map +1 -0
  49. package/dist/assets/ThreadPage-B0jElW5R.js +53 -0
  50. package/dist/assets/ThreadPage-B0jElW5R.js.map +1 -0
  51. package/dist/assets/UploadSkillModal-DHZL12vm.js +8 -0
  52. package/dist/assets/UploadSkillModal-DHZL12vm.js.map +1 -0
  53. package/dist/assets/XlsxDocumentPreview-BY-ht09K.js +5 -0
  54. package/dist/assets/XlsxDocumentPreview-BY-ht09K.js.map +1 -0
  55. package/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js +2 -0
  56. package/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js.map +1 -0
  57. package/dist/assets/chat-input-options-CpkOtPgQ.js +2 -0
  58. package/dist/assets/chat-input-options-CpkOtPgQ.js.map +1 -0
  59. package/dist/assets/docx-preview-zfB-orwa.js +28 -0
  60. package/dist/assets/docx-preview-zfB-orwa.js.map +1 -0
  61. package/dist/assets/exceljs.min-BY7KKJsM.js +58 -0
  62. package/dist/assets/exceljs.min-BY7KKJsM.js.map +1 -0
  63. package/dist/assets/helpers-CCilgpNy.js +2 -0
  64. package/dist/assets/helpers-CCilgpNy.js.map +1 -0
  65. package/dist/assets/hub-agent-editor.client-2DmCRGuY.js +2 -0
  66. package/dist/assets/hub-agent-editor.client-2DmCRGuY.js.map +1 -0
  67. package/dist/assets/hub-agent-editor.payload-D4sgJRSH.js +4 -0
  68. package/dist/assets/hub-agent-editor.payload-D4sgJRSH.js.map +1 -0
  69. package/dist/assets/hub-tag-editor-BBdd-aHK.js +2 -0
  70. package/dist/assets/hub-tag-editor-BBdd-aHK.js.map +1 -0
  71. package/dist/assets/index-Bed0I5IL.css +1 -0
  72. package/dist/assets/index-Bxf2_cvh.js +2 -0
  73. package/dist/assets/index-Bxf2_cvh.js.map +1 -0
  74. package/dist/assets/index-Cb4fQgom.js +103 -0
  75. package/dist/assets/index-Cb4fQgom.js.map +1 -0
  76. package/dist/assets/index-DQ2vVjmV.js +30 -0
  77. package/dist/assets/index-DQ2vVjmV.js.map +1 -0
  78. package/dist/assets/index-UBJEdbMO.js +2 -0
  79. package/dist/assets/index-UBJEdbMO.js.map +1 -0
  80. package/dist/assets/jszip.min-DPdj3o0t.js +13 -0
  81. package/dist/assets/jszip.min-DPdj3o0t.js.map +1 -0
  82. package/dist/assets/quick-actions-DzZE-zyP.js +2 -0
  83. package/dist/assets/quick-actions-DzZE-zyP.js.map +1 -0
  84. package/dist/assets/skill-options-cache-D1BJGTCU.js +2 -0
  85. package/dist/assets/skill-options-cache-D1BJGTCU.js.map +1 -0
  86. package/dist/assets/status-helpers-BILdm2MI.js +2 -0
  87. package/dist/assets/status-helpers-BILdm2MI.js.map +1 -0
  88. package/dist/assets/thread-title-Cerb2mHa.js +2 -0
  89. package/dist/assets/thread-title-Cerb2mHa.js.map +1 -0
  90. package/dist/assets/thread-utils-Ct3yp4R3.js +2 -0
  91. package/dist/assets/thread-utils-Ct3yp4R3.js.map +1 -0
  92. package/dist/assets/useAgentData-D-k9cXfg.js +2 -0
  93. package/dist/assets/useAgentData-D-k9cXfg.js.map +1 -0
  94. package/dist/assets/useEscapeKey-CEQ6-8GR.js +2 -0
  95. package/dist/assets/useEscapeKey-CEQ6-8GR.js.map +1 -0
  96. package/dist/assets/useExpertCatalog-BZdw1CYs.js +2 -0
  97. package/dist/assets/useExpertCatalog-BZdw1CYs.js.map +1 -0
  98. package/dist/assets/usePromptBlocks-5sz8Qh51.js +2 -0
  99. package/dist/assets/usePromptBlocks-5sz8Qh51.js.map +1 -0
  100. package/dist/assets/useSocket-YigidotN.css +1 -0
  101. package/dist/assets/useSocket-y3-zWhVL.js +11 -0
  102. package/dist/assets/useSocket-y3-zWhVL.js.map +1 -0
  103. package/dist/assets/utils--_pbLpCq.js +2 -0
  104. package/dist/assets/utils--_pbLpCq.js.map +1 -0
  105. package/dist/assets/vad-web-C_R267y1.js +2 -0
  106. package/dist/assets/vad-web-C_R267y1.js.map +1 -0
  107. package/dist/avatars/agent-avatar-1.png +0 -0
  108. package/dist/avatars/agent-avatar-2.png +0 -0
  109. package/dist/avatars/agent-avatar-3.png +0 -0
  110. package/dist/avatars/agent-avatar-4.png +0 -0
  111. package/dist/avatars/agent-avatar-5.png +0 -0
  112. package/dist/avatars/agent-avatar-6.png +0 -0
  113. package/dist/avatars/agent-avatar-7.png +0 -0
  114. package/dist/avatars/agent-avatar-8.png +0 -0
  115. package/dist/avatars/agent-avatar-9.png +0 -0
  116. package/dist/avatars/agentteams.png +0 -0
  117. package/dist/avatars/antig-opus.png +0 -0
  118. package/dist/avatars/antigravity.png +0 -0
  119. package/dist/avatars/assistant.svg +17 -0
  120. package/dist/avatars/codex-kawaii.png +0 -0
  121. package/dist/avatars/codex.png +0 -0
  122. package/dist/avatars/codex_box.png +0 -0
  123. package/dist/avatars/codex_iquid.png +0 -0
  124. package/dist/avatars/dare.png +0 -0
  125. package/dist/avatars/gemini-kawaii.png +0 -0
  126. package/dist/avatars/gemini.png +0 -0
  127. package/dist/avatars/gemini25.png +0 -0
  128. package/dist/avatars/gpt52.png +0 -0
  129. package/dist/avatars/jiuwenclaw.png +0 -0
  130. package/dist/avatars/office.svg +17 -0
  131. package/dist/avatars/opencode.png +0 -0
  132. package/dist/avatars/opus-45.png +0 -0
  133. package/dist/avatars/opus-kawaii.png +0 -0
  134. package/dist/avatars/opus.png +0 -0
  135. package/dist/avatars/sonnet.png +0 -0
  136. package/dist/favicon.ico +0 -0
  137. package/dist/icons/arrow-left.svg +3 -0
  138. package/dist/icons/arrow-right.svg +3 -0
  139. package/dist/icons/attach.svg +9 -0
  140. package/dist/icons/chart/dislike.svg +3 -0
  141. package/dist/icons/chart/disliked.svg +3 -0
  142. package/dist/icons/chart/folder.svg +15 -0
  143. package/dist/icons/chart/home-loading.webp +0 -0
  144. package/dist/icons/chart/like.svg +3 -0
  145. package/dist/icons/chart/liked.svg +5 -0
  146. package/dist/icons/chart/loading.svg +26 -0
  147. package/dist/icons/chart/success.svg +7 -0
  148. package/dist/icons/check-line.svg +3 -0
  149. package/dist/icons/chevron-left.svg +3 -0
  150. package/dist/icons/chevron-right.svg +3 -0
  151. package/dist/icons/collapse.svg +14 -0
  152. package/dist/icons/common-delete.svg +4 -0
  153. package/dist/icons/common-folder.svg +4 -0
  154. package/dist/icons/copy.svg +4 -0
  155. package/dist/icons/cross-line.svg +4 -0
  156. package/dist/icons/data-analysis.svg +7 -0
  157. package/dist/icons/data-visualization.svg +10 -0
  158. package/dist/icons/deep-research.svg +4 -0
  159. package/dist/icons/document-processing.svg +5 -0
  160. package/dist/icons/edit.svg +4 -0
  161. package/dist/icons/expand.svg +6 -0
  162. package/dist/icons/expert-debate.svg +4 -0
  163. package/dist/icons/eye.svg +4 -0
  164. package/dist/icons/favicon.svg +7 -0
  165. package/dist/icons/file-docx.svg +60 -0
  166. package/dist/icons/file-folder.svg +4 -0
  167. package/dist/icons/file-gitignore.svg +35 -0
  168. package/dist/icons/file-html.svg +6 -0
  169. package/dist/icons/file-ini.svg +63 -0
  170. package/dist/icons/file-json.svg +4 -0
  171. package/dist/icons/file-md.svg +68 -0
  172. package/dist/icons/file-py.svg +4 -0
  173. package/dist/icons/file-sh.svg +7 -0
  174. package/dist/icons/file-txt.svg +37 -0
  175. package/dist/icons/file-zip.svg +21 -0
  176. package/dist/icons/file.svg +4 -0
  177. package/dist/icons/files-csv.svg +14 -0
  178. package/dist/icons/files-docx.svg +10 -0
  179. package/dist/icons/files-pdf.svg +14 -0
  180. package/dist/icons/files-ppt.svg +14 -0
  181. package/dist/icons/files-txt.svg +16 -0
  182. package/dist/icons/files-xlsx.svg +14 -0
  183. package/dist/icons/financial-services.svg +8 -0
  184. package/dist/icons/flie-html.svg +60 -0
  185. package/dist/icons/guided-mode.svg +9 -0
  186. package/dist/icons/icon-192x192.png +0 -0
  187. package/dist/icons/icon-512x512.png +0 -0
  188. package/dist/icons/icon-arrow-down.svg +4 -0
  189. package/dist/icons/icon-arrow-up.svg +4 -0
  190. package/dist/icons/icon-clear-all.svg +3 -0
  191. package/dist/icons/icon-close.svg +4 -0
  192. package/dist/icons/icon-code.svg +38 -0
  193. package/dist/icons/icon-drag-file.svg +26 -0
  194. package/dist/icons/icon-help.svg +4 -0
  195. package/dist/icons/icon-md.svg +53 -0
  196. package/dist/icons/icon-refresh.svg +4 -0
  197. package/dist/icons/icon-toggle.svg +6 -0
  198. package/dist/icons/icon-top.svg +7 -0
  199. package/dist/icons/icon-upload.svg +5 -0
  200. package/dist/icons/information.svg +6 -0
  201. package/dist/icons/inspiration/icon-excel.svg +14 -0
  202. package/dist/icons/inspiration/icon-inspiration.svg +5 -0
  203. package/dist/icons/inspiration/icon-markdown.svg +12 -0
  204. package/dist/icons/inspiration/icon-word.svg +10 -0
  205. package/dist/icons/link.svg +6 -0
  206. package/dist/icons/lock.svg +4 -0
  207. package/dist/icons/menu/agents.svg +39 -0
  208. package/dist/icons/menu/channels.svg +4 -0
  209. package/dist/icons/menu/icon-inspiration.svg +5 -0
  210. package/dist/icons/menu/models.svg +4 -0
  211. package/dist/icons/menu/new-chat.svg +59 -0
  212. package/dist/icons/menu/schedule.svg +4 -0
  213. package/dist/icons/menu/skills.svg +4 -0
  214. package/dist/icons/message-error.svg +6 -0
  215. package/dist/icons/message-prompt.svg +9 -0
  216. package/dist/icons/message-success.svg +6 -0
  217. package/dist/icons/message-warn.svg +8 -0
  218. package/dist/icons/more-trigger.svg +4 -0
  219. package/dist/icons/nss/1.svg +14 -0
  220. package/dist/icons/nss/2.svg +14 -0
  221. package/dist/icons/nss/3.svg +14 -0
  222. package/dist/icons/outline.svg +6 -0
  223. package/dist/icons/query_the_optical_power_border.svg +99 -0
  224. package/dist/icons/schedule.svg +4 -0
  225. package/dist/icons/settings-feedback/feedback-bug.svg +20 -0
  226. package/dist/icons/settings-feedback/feedback-file.svg +4 -0
  227. package/dist/icons/settings-feedback/feedback-idea.svg +14 -0
  228. package/dist/icons/settings-feedback/settings-gear.svg +4 -0
  229. package/dist/icons/settings-feedback/settings-link.svg +4 -0
  230. package/dist/icons/settings-feedback/settings-memory.svg +7 -0
  231. package/dist/icons/settings-feedback/settings-privacy.svg +37 -0
  232. package/dist/icons/settings-feedback/settings-search.svg +2 -0
  233. package/dist/icons/slides.svg +4 -0
  234. package/dist/icons/status/info-error.svg +9 -0
  235. package/dist/icons/style-template.svg +11 -0
  236. package/dist/icons/tool-error.svg +4 -0
  237. package/dist/icons/userprofile/help.svg +5 -0
  238. package/dist/icons/userprofile/keep-awake.svg +4 -0
  239. package/dist/icons/userprofile/question.svg +4 -0
  240. package/dist/icons/userprofile/security.svg +7 -0
  241. package/dist/icons/userprofile/style-template.svg +11 -0
  242. package/dist/icons/userprofile/theme.svg +14 -0
  243. package/dist/icons/userprofile/usage.svg +4 -0
  244. package/dist/icons/userprofile/version.svg +85 -0
  245. package/dist/icons/video-generation.svg +4 -0
  246. package/dist/images/OfficeClaw.svg +21 -0
  247. package/dist/images/add.svg +4 -0
  248. package/dist/images/agent-management-icons/agent-check.svg +23 -0
  249. package/dist/images/agent-management-icons/agent-close.svg +4 -0
  250. package/dist/images/agent-management-icons/agent-collab.svg +4 -0
  251. package/dist/images/agent-management-icons/agent-delete.svg +18 -0
  252. package/dist/images/agent-management-icons/agent-edit.svg +18 -0
  253. package/dist/images/agent-management-icons/agent-more.svg +4 -0
  254. package/dist/images/agent-management-icons/agent-persona.svg +4 -0
  255. package/dist/images/agent-management-icons/agent-random-avatar.svg +39 -0
  256. package/dist/images/agent-management-icons/agent-refresh.svg +4 -0
  257. package/dist/images/agent-management-icons/agent-skills.svg +4 -0
  258. package/dist/images/agent-management-icons/agent-template.svg +12 -0
  259. package/dist/images/agent-management-icons/anchor-current.svg +5 -0
  260. package/dist/images/agent-management-icons/anchor-other.svg +4 -0
  261. package/dist/images/chat-empty-agent.svg +12 -0
  262. package/dist/images/chat-empty-im.svg +14 -0
  263. package/dist/images/connectors/dingtalk.png +0 -0
  264. package/dist/images/connectors/dingtalk.svg +18 -0
  265. package/dist/images/connectors/feishu.png +0 -0
  266. package/dist/images/connectors/feishu.svg +12 -0
  267. package/dist/images/connectors/imessage.png +0 -0
  268. package/dist/images/connectors/wecom-agent.png +0 -0
  269. package/dist/images/connectors/wecom-bot.png +0 -0
  270. package/dist/images/connectors/weixin.png +0 -0
  271. package/dist/images/connectors/weixin.svg +19 -0
  272. package/dist/images/connectors/xiaoyi.png +0 -0
  273. package/dist/images/connectors/xiaoyi.svg +12 -0
  274. package/dist/images/create-agent-random-avatar.svg +39 -0
  275. package/dist/images/deepseek.svg +1 -0
  276. package/dist/images/default-ppt-template.png +0 -0
  277. package/dist/images/file-browser-tree/code.svg +60 -0
  278. package/dist/images/file-browser-tree/gitignore.svg +35 -0
  279. package/dist/images/file-browser-tree/image.svg +12 -0
  280. package/dist/images/file-browser-tree/markdown.svg +68 -0
  281. package/dist/images/file-browser-tree/pdf.svg +4 -0
  282. package/dist/images/file-browser-tree/ppt.svg +4 -0
  283. package/dist/images/file-browser-tree/public-file.svg +37 -0
  284. package/dist/images/file-browser-tree/word.svg +60 -0
  285. package/dist/images/file-browser-tree/xlsx.svg +4 -0
  286. package/dist/images/html-preview-toolbar/copy.svg +4 -0
  287. package/dist/images/html-preview-toolbar/open-external.svg +4 -0
  288. package/dist/images/html-preview-toolbar/refresh.svg +4 -0
  289. package/dist/images/information.svg +4 -0
  290. package/dist/images/inspiration/blue-bg.png +0 -0
  291. package/dist/images/inspiration/doc-example.png +0 -0
  292. package/dist/images/inspiration/excel-example.png +0 -0
  293. package/dist/images/inspiration/green-bg.png +0 -0
  294. package/dist/images/inspiration/markdown-example.png +0 -0
  295. package/dist/images/inspiration/orange-bg.png +0 -0
  296. package/dist/images/inspiration/purple-bg.png +0 -0
  297. package/dist/images/inspiration/task-bg.png +0 -0
  298. package/dist/images/inspiration-bg.png +0 -0
  299. package/dist/images/inspiration-products/default.svg +11 -0
  300. package/dist/images/invitation-background-4x.png +0 -0
  301. package/dist/images/kimi.svg +1 -0
  302. package/dist/images/link-blue.svg +4 -0
  303. package/dist/images/link.svg +4 -0
  304. package/dist/images/lobster.svg +118 -0
  305. package/dist/images/login1.svg +93 -0
  306. package/dist/images/login2.svg +80 -0
  307. package/dist/images/login3.svg +44 -0
  308. package/dist/images/login4.svg +18 -0
  309. package/dist/images/mode-default-icon.svg +22 -0
  310. package/dist/images/no-data.svg +26 -0
  311. package/dist/images/no-search-results.svg +25 -0
  312. package/dist/images/ppt-preview/placeholder-main.webp +0 -0
  313. package/dist/images/ppt-preview/placeholder-thumb.webp +0 -0
  314. package/dist/images/ppt-template/dark-tech.png +0 -0
  315. package/dist/images/ppt-template/huawei.png +0 -0
  316. package/dist/images/ppt-template/light-tech.png +0 -0
  317. package/dist/images/ppt-template/paper-humanities.png +0 -0
  318. package/dist/images/ppt-template/template-default.png +0 -0
  319. package/dist/images/ppt-template/template-error.png +0 -0
  320. package/dist/images/ppt-template/template-generate-bg.svg +9639 -0
  321. package/dist/images/qwen.svg +1 -0
  322. package/dist/images/task-list/empty-state.svg +4 -0
  323. package/dist/images/task-list.svg +1 -0
  324. package/dist/images/vendor.svg +4 -0
  325. package/dist/images/version-bg.svg +85 -0
  326. package/dist/images/version.svg +9 -0
  327. package/dist/images/zhipu.svg +1 -0
  328. package/dist/index.html +74 -0
  329. package/dist/loading-point-style.webp +0 -0
  330. package/dist/loading-small.webp +0 -0
  331. package/dist/manifest.json +25 -0
  332. package/package.json +126 -0
@@ -0,0 +1,2 @@
1
+ import{r as p,d as vt,u as yt,c as We,j as r,M as Oe,a as ye,B as he}from"./index-Cb4fQgom.js";import{Q as Kt}from"./quick-actions-DzZE-zyP.js";import{a as F,O as X,A as Gt}from"./OverflowTooltip-CE5PjAb-.js";import{E as wt}from"./EmptyDataState-6mNx2Xhl.js";import{C as Zt}from"./CenteredLoadingState-DHor-9vF.js";import{A as we}from"./AppModal-BYZTSuch.js";import{u as Jt}from"./useAgentData-D-k9cXfg.js";import{f as Qt}from"./thread-utils-Ct3yp4R3.js";import{n as Xt}from"./thread-title-Cerb2mHa.js";const en=[{id:"daily-ai-news",title:"每日 AI 新闻推送",description:"关注当天 AI 领域的重要动态、模型发布与产品更新,整理重点信息后定时推送。",draft:{taskName:"每日 AI 新闻推送",prompt:"每天汇总 AI 领域的重要新闻、产品更新和模型发布,输出 3 到 5 条重点内容与简短点评。",frequency:{type:"daily",time:"09:00:00"},enabled:!0}},{id:"daily-english-words",title:"每日 5 个英语单词",description:"每天推荐 5 个高频实用英语单词,帮助积累词汇并保持稳定输入。",draft:{taskName:"每日 5 个英语单词",prompt:"每天推荐 5 个高频实用英文单词,包含音标、词义、例句和简短记忆提示。",frequency:{type:"daily",time:"08:00:00"},enabled:!0}},{id:"bedtime-story",title:"每日儿童睡前故事",description:"生成 3 到 5 分钟可读的温和睡前故事,适合在夜间固定时间播放或阅读。",draft:{taskName:"每日儿童睡前故事",prompt:"每天生成一篇适合儿童睡前阅读的温和短故事,语气轻松,结尾积极。",frequency:{type:"daily",time:"20:30:00"},enabled:!0}},{id:"weekly-work-report",title:"每周工作周报",description:"每周五汇总本周工作进展、PR 与 Issue 处理情况,并整理成简明周报。",draft:{taskName:"每周工作周报",prompt:"每周汇总本周工作进展、完成事项、风险问题和下周计划,输出结构化周报。",frequency:{type:"weekday",time:"18:00:00",weekdays:["5"]},enabled:!0}},{id:"classic-movie",title:"经典电影推荐",description:"推荐一部高分经典电影,提供简要介绍、推荐理由和观看建议。",draft:{taskName:"经典电影推荐",prompt:"定期推荐一部经典电影,包含剧情简介、推荐理由和适合观看的人群。",frequency:{type:"weekday",time:"20:00:00",weekdays:["6"]},enabled:!0}},{id:"today-in-history",title:"历史上的今天",description:"从科技、电影、音乐等领域挑选当天对应的历史事件,生成轻量内容推送。",draft:{taskName:"历史上的今天",prompt:"每天推送历史上的今天发生的重要事件,覆盖科技、电影、音乐等领域。",frequency:{type:"daily",time:"10:00:00"},enabled:!0}},{id:"family-reminder",title:"父母联系提醒",description:"每周固定提醒联系家人,避免忙碌时忘记主动问候。",draft:{taskName:"父母联系提醒",prompt:"提醒我主动联系父母,语气自然简短。",frequency:{type:"weekday",time:"10:00:00",weekdays:["7"]},enabled:!0}},{id:"medical-checkup-reminder",title:"体检预约提醒",description:"在预约日期前提醒关注体检安排、准备事项与时间节点。",draft:{taskName:"体检预约提醒",prompt:"提醒我关注体检预约时间和准备事项。",frequency:{type:"once",executeTime:"2026-04-20 09:00:00"},enabled:!0}},{id:"interview-preparation",title:"面试准备提醒",description:"工作日提醒复习面试题、项目经历和表达材料,保持准备节奏。",draft:{taskName:"面试准备提醒",prompt:"在工作日定时提醒我复习面试题、项目经历和自我介绍。",frequency:{type:"weekday",time:"20:00:00",weekdays:["1","2","3","4","5"]},enabled:!0}},{id:"meeting-prep",title:"会议前准备",description:"在固定工作日时间提醒整理会议议题、材料和待确认事项。",draft:{taskName:"会议前准备",prompt:"在会议开始前提醒我整理议题、材料和待确认问题。",frequency:{type:"weekday",time:"09:30:00",weekdays:["1","2","3","4","5"]},enabled:!0}},{id:"pet-wallpaper",title:"可爱萌宠手机壁纸",description:"随机从不同风格中挑选一张可爱萌宠壁纸,定期更新手机背景灵感。",draft:{taskName:"可爱萌宠手机壁纸",prompt:"定期推荐一张可爱萌宠风格的手机壁纸,风格清新,适合移动端。",frequency:{type:"weekday",time:"08:30:00",weekdays:["1"]},enabled:!0}},{id:"scheduled-data-fetch",title:"定时数据抓取",description:"定期抓取指定数据源并输出摘要,适合监控日常数据变化与异常波动。",draft:{taskName:"定时数据抓取",prompt:"定时抓取指定数据源并输出简要结果摘要,标记异常变化。",frequency:{type:"daily",time:"09:00:00"},enabled:!0}}];async function Ke(){return en}function Ge(e){return{source:"template",templateId:e.id,...e.draft,sessionId:null}}function tn(){return{source:"custom",taskName:"",prompt:"",frequency:{type:"daily",time:""},enabled:!0,sessionId:null}}const B={hour:3600*1e3,minute:60*1e3,second:1e3},nn={hour:"小时",minute:"分钟",second:"秒"};function Nt(e,t){return e*B[t]}function kt(e){return!Number.isFinite(e)||e<1e4?null:e%B.hour===0?{interval:e/B.hour,unit:"hour"}:e%B.minute===0?{interval:e/B.minute,unit:"minute"}:e%B.second===0?{interval:e/B.second,unit:"second"}:null}function rn(e){const t=kt(e);return t?`每隔 ${t.interval} ${nn[t.unit]}`:`每隔 ${e} 毫秒`}const jt={SUN:0,SUNDAY:0,MON:1,MONDAY:1,TUE:2,TUESDAY:2,WED:3,WEDNESDAY:3,THU:4,THURSDAY:4,FRI:5,FRIDAY:5,SAT:6,SATURDAY:6},Tt={JAN:1,JANUARY:1,FEB:2,FEBRUARY:2,MAR:3,MARCH:3,APR:4,APRIL:4,MAY:5,JUN:6,JUNE:6,JUL:7,JULY:7,AUG:8,AUGUST:8,SEP:9,SEPTEMBER:9,OCT:10,OCTOBER:10,NOV:11,NOVEMBER:11,DEC:12,DECEMBER:12},sn=["日","一","二","三","四","五","六"],ne="、";function Ct(e,t,n){const s=e<12?"上午":"下午",i=(e+11)%12+1,o=String(t).padStart(2,"0");if(typeof n=="number"){const l=String(n).padStart(2,"0");return`${s} ${i}:${o}:${l}`}return`${s} ${i}:${o}`}function U(e,t){var l;const n=e.trim().toUpperCase();if(!n)return null;const i=((l=t.nameMap)==null?void 0:l[n])??Number(n);if(!Number.isFinite(i))return null;const o=t.normalize?t.normalize(i):i;return o<t.min||o>t.max?null:o}function an(e){const t=new Set,n=[];for(const s of e)t.has(s)||(t.add(s),n.push(s));return n}function q(e,t){const n=e.trim(),s=n.toUpperCase();if(!n)return{kind:"mixed",raw:n};if(s==="*"||s==="?")return{kind:"any",raw:n};if(s.includes(",")){const a=[];for(const c of s.split(",")){const u=c.trim();if(!u||u.includes("/")||u.includes("-"))return{kind:"mixed",raw:n};const d=U(u,t);if(d===null)return{kind:"mixed",raw:n};a.push(d)}return{kind:"list",raw:n,values:an(a)}}const i=s.match(/^(.+)\/(\d+)$/);if(i){const a=Number(i[2]);if(!Number.isFinite(a)||a<=0)return{kind:"mixed",raw:n};const c=i[1].trim();if(c==="*"||c==="?")return{kind:"step",raw:n,step:a};const u=c.match(/^([A-Z0-9]+)-([A-Z0-9]+)$/);if(u){const m=U(u[1],t),f=U(u[2],t);return m===null||f===null||m>f?{kind:"mixed",raw:n}:{kind:"range-step",raw:n,from:m,to:f,step:a}}const d=U(c,t);return d===null?{kind:"mixed",raw:n}:{kind:"range-step",raw:n,from:d,to:t.max,step:a}}const o=s.match(/^([A-Z0-9]+)-([A-Z0-9]+)$/);if(o){const a=U(o[1],t),c=U(o[2],t);return a===null||c===null||a>c?{kind:"mixed",raw:n}:{kind:"range",raw:n,from:a,to:c}}const l=U(s,t);return l!==null?{kind:"single",raw:n,value:l}:{kind:"mixed",raw:n}}function R(e){return e.kind==="any"}function $t(e){return e.join(ne)}function de(e){switch(e.kind){case"single":return`${e.value}月`;case"list":return`${e.values.map(t=>`${t}月`).join(ne)}`;case"range":return`${e.from}月至${e.to}月`;case"step":return`每隔 ${e.step} 个月`;case"range-step":return`${e.from}月至${e.to}月每隔 ${e.step} 个月`;default:return null}}function ue(e){switch(e.kind){case"single":return`${e.value}号`;case"list":return`${e.values.map(t=>`${t}号`).join(ne)}`;case"range":return`${e.from}号至${e.to}号`;case"step":return`每隔 ${e.step} 天`;case"range-step":return`${e.from}号至${e.to}号每隔 ${e.step} 天`;default:return null}}function fe(e){const t=n=>sn[n]??String(n);switch(e.kind){case"single":return t(e.value);case"list":return e.values.map(n=>t(n)).join(ne);case"range":return`${t(e.from)}至${t(e.to)}`;case"step":return`每隔 ${e.step} 天`;case"range-step":return`${t(e.from)}至${t(e.to)}每隔 ${e.step} 天`;default:return null}}function Et(e){switch(e.kind){case"any":return"每秒";case"single":return`第${e.value}秒`;case"list":return`第${$t(e.values)}秒`;case"range":return`${e.from}-${e.to}秒`;case"step":return`每隔 ${e.step} 秒`;case"range-step":return`${e.from}-${e.to}秒每隔 ${e.step} 秒`;default:return null}}function J(e){switch(e.kind){case"any":return"每分钟";case"single":return`第${e.value}分钟`;case"list":return`第${$t(e.values)}分钟`;case"range":return`${e.from}-${e.to}分钟`;case"step":return`每隔 ${e.step} 分钟`;case"range-step":return`${e.from}-${e.to}分钟每隔 ${e.step} 分钟`;default:return null}}function L(e,t){if(!t||e.kind==="single"&&e.value===0)return"";const n=Et(e);return n?`(${n})`:""}function on(e,t,n){const s=R(e),i=R(t),o=R(n);if(s&&i&&o)return null;if(s&&i&&!o){const l=fe(n);return l?`每周${l}`:null}if(s&&!i&&o){const l=ue(t);return l?t.kind==="step"||t.kind==="range-step"?l:`每月${l}`:null}if(!s&&i&&o){const l=de(e);return l?e.kind==="step"||e.kind==="range-step"?l:`每年${l}`:null}if(!s&&!i&&o){const l=de(e),a=ue(t);return!l||!a?null:`${e.kind==="step"||e.kind==="range-step"?l:`每年${l}`}${a}`}if(s&&!i&&!o){const l=ue(t),a=fe(n);return!l||!a?null:`每月${l},每周${a}`}if(!s&&i&&!o){const l=de(e),a=fe(n);return!l||!a?null:`${e.kind==="step"||e.kind==="range-step"?l:`每年${l}`},每周${a}`}if(!s&&!i&&!o){const l=de(e),a=ue(t),c=fe(n);return!l||!a||!c?null:`${e.kind==="step"||e.kind==="range-step"?l:`每年${l}`}${a},每周${c}`}return null}function ln(e,t,n){return e.map(s=>Ct(s,t,n)).join(ne)}function cn(e,t,n,s,i){const o=R(e),l=R(t);if(o&&l){if(!s||n.kind==="single"&&n.value===0)return"每分钟";if(n.kind==="any")return"每秒";if(n.kind==="step")return`每隔 ${n.step} 秒`;const a=Et(n);return a?`每分钟${a}`:null}if(o){const a=J(t);if(!a)return null;let c=a;return t.kind!=="step"&&t.kind!=="any"&&(c=`每小时${a}`),`${c}${L(n,s)}`.trim()}if(e.kind==="step"){if(t.kind==="single")return`每隔 ${e.step} 小时(第${t.value}分钟)${L(n,s)}`.trim();const a=J(t);return a?`每隔 ${e.step} 小时(${a})${L(n,s)}`.trim():null}if(e.kind==="range-step"){const a=J(t);return a?`每天${e.from}点至${e.to}点每隔 ${e.step} 小时(${a})${L(n,s)}`.trim():null}if(e.kind==="single"&&t.kind==="single"){const a=s&&n.kind==="single"?n.value:void 0,u=`${i?"":"每天 "}${Ct(e.value,t.value,a)}`;return!s||n.kind==="single"?u:`${u}${L(n,s)}`}if(e.kind==="list"&&t.kind==="single"){const a=s&&n.kind==="single"?n.value:void 0,c=i?"":"每天 ",u=ln(e.values,t.value,a);return!s||n.kind==="single"?`${c}${u}`:`${c}${u}${L(n,s)}`}if(e.kind==="range"&&t.kind==="single")return`${`${i?"":"每天 "}${e.from}点至${e.to}点第${t.value}分钟`}${L(n,s)}`;if(e.kind==="range"){const a=J(t);return a?`${`${i?"":"每天 "}${e.from}点至${e.to}点${a}`}${L(n,s)}`:null}if(e.kind==="single"){const a=J(t);return a?`${`${i?"":"每天 "}${e.value}点${a}`}${L(n,s)}`:null}return null}function dn(e){const t=e.trim().split(/\s+/);if(t.length<5)return e;let n="0",s="*",i="*",o="*",l="*",a="*",c=!1;t.length===5?[s,i,o,l,a]=t:([n,s,i,o,l,a]=t,c=!0);const u=q(n,{min:0,max:59}),d=q(s,{min:0,max:59}),m=q(i,{min:0,max:23}),f=q(o,{min:1,max:31}),b=q(l,{min:1,max:12,nameMap:Tt}),h=q(a,{min:0,max:6,nameMap:jt,normalize:y=>y===7?0:y}),g=!(R(b)&&R(f)&&R(h)),v=on(b,f,h),k=cn(m,d,u,c,g);return v&&k?`${v} ${k}`.replace(/\s+/g," ").trim():v||k||e}const un=["周一","周二","周三","周四","周五","周六","周日"],fn=["MON","TUE","WED","THU","FRI","SAT","SUN"];function M(e){return String(e).padStart(2,"0")}function ee(e){return`${M(e.getHours())}:${M(e.getMinutes())}`}function te(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function It(e,t){const n=te(e).getTime(),s=te(t).getTime();return n<s?-1:n>s?1:0}function Ne(e){const t=e.trim().split(/\s+/);if(t.length<5)return null;if(t.length===5){const[c,u,d,m,f]=t;return{second:"0",minute:c,hour:u,dayOfMonth:d,month:m,dayOfWeek:f}}const[n,s,i,o,l,a]=t;return{second:n,minute:s,hour:i,dayOfMonth:o,month:l,dayOfWeek:a}}function re(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function mn(e){return`${e.getFullYear()}-${M(e.getMonth()+1)}-${M(e.getDate())}`}function ke(e){return Number.isFinite(e.getTime())}function Ze(e,t){return It(e,t)<0}function Pe(e){return e.includes("/")}function Y(e,t){const n=e.trim().toUpperCase();if(!n)return null;if(t&&n in t)return t[n];const s=Number(n);return Number.isFinite(s)?s:null}function Re(e,t,n,s,i,o){const l=e.trim().toUpperCase();if(l==="*"||l==="?")return!0;const a=l.split(",");for(const c of a){const u=c.trim();if(!u)continue;const d=u.match(/^(.+)\/(\d+)$/);if(d){const h=d[1].trim(),g=Number(d[2]);if(!Number.isFinite(g)||g<=0)continue;let v=n,k=s;if(h!=="*"&&h!=="?"){const y=h.match(/^([A-Z0-9]+)-([A-Z0-9]+)$/);if(y){const w=Y(y[1],i),x=Y(y[2],i);if(w===null||x===null)continue;v=o?o(w):w,k=o?o(x):x}else{const w=Y(h,i);if(w===null)continue;v=o?o(w):w,k=s}}if(v>k||t<v||t>k)continue;if((t-v)%g===0)return!0;continue}const m=u.match(/^([A-Z0-9]+)-([A-Z0-9]+)$/);if(m){const h=Y(m[1],i),g=Y(m[2],i);if(h===null||g===null)continue;const v=o?o(h):h,k=o?o(g):g;if(t>=v&&t<=k)return!0;continue}const f=Y(u,i);if(f===null)continue;if((o?o(f):f)===t)return!0}return!1}function ge(e,t,n){const s=e.trim().toUpperCase();if(s.includes("/"))return null;if(s==="*"||s==="?")return Array.from({length:n-t+1},(o,l)=>t+l);const i=new Set;for(const o of s.split(",")){const l=o.trim();if(!l)continue;const a=l.match(/^(\d+)-(\d+)$/);if(a){const u=Number(a[1]),d=Number(a[2]);if(u>d)continue;for(let m=u;m<=d;m+=1)m>=t&&m<=n&&i.add(m);continue}const c=Number(l);Number.isFinite(c)&&c>=t&&c<=n&&i.add(c)}return Array.from(i).sort((o,l)=>o-l)}function z(e,t,n){const s=e.trim().toUpperCase();if(s==="*"||s==="?")return Array.from({length:n-t+1},(o,l)=>t+l);const i=new Set;for(const o of s.split(",")){const l=o.trim();if(!l)continue;const a=l.match(/^(.+)\/(\d+)$/);if(a){const d=a[1].trim(),m=Number(a[2]);if(!Number.isFinite(m)||m<=0)continue;let f=t,b=n;if(d!=="*"&&d!=="?"){const h=d.match(/^(\d+)-(\d+)$/);if(h)f=Number(h[1]),b=Number(h[2]);else{const g=Number(d);if(!Number.isFinite(g))continue;f=g,b=n}}if(f>b)continue;for(let h=Math.max(f,t);h<=Math.min(b,n);h+=m)i.add(h);continue}const c=l.match(/^(\d+)-(\d+)$/);if(c){const d=Number(c[1]),m=Number(c[2]);if(d>m)continue;for(let f=d;f<=m;f+=1)f>=t&&f<=n&&i.add(f);continue}const u=Number(l);Number.isFinite(u)&&u>=t&&u<=n&&i.add(u)}return Array.from(i).sort((o,l)=>o-l)}function Mt(e){const t=Ne(e);if(!t)return"single";if(Pe(t.second)||Pe(t.minute)||Pe(t.hour))return"recurring";const n=ge(t.second,0,59),s=Rt(t);return!n||n.length!==1||s.length!==1?"recurring":"single"}function Dt(e,t){const n=new Date(e);n.setHours(0,0,0,0);const s=n.getDay(),i=s===0?-6:1-s;return n.setDate(n.getDate()+i+t*7),n}function At(e,t){const n=Dt(e,t),s=new Date(n);return s.setDate(s.getDate()+6),s.setHours(23,59,59,999),{start:n,end:s}}function pn(e,t){const{start:n,end:s}=At(e,t);return`${n.getFullYear()}年${n.getMonth()+1}月${n.getDate()}日- ${s.getFullYear()}年${s.getMonth()+1}月${s.getDate()}日`}function xn(e,t,n=370){const s=z(e.second,0,59),i=z(e.minute,0,59),o=z(e.hour,0,23);if(s.length===0||i.length===0||o.length===0)return null;const l=new Date(t.getTime()+1e3);l.setMilliseconds(0);const a=te(l);for(let c=0;c<=n;c+=1){const u=new Date(a);if(u.setDate(a.getDate()+c),!Ye(e,u))continue;const d=c===0?l.getHours():0;for(const m of o){if(m<d)continue;const f=c===0&&m===l.getHours()?l.getMinutes():0;for(const b of i){if(b<f)continue;const h=c===0&&m===l.getHours()&&b===l.getMinutes()?l.getSeconds():0;for(const g of s){if(g<h)continue;const v=new Date(u);if(v.setHours(m,b,g,0),v.getTime()>t.getTime())return v}}}}return null}function hn(e,t=new Date){if(e.type==="interval")return new Date(t.getTime()+e.ms);if(e.type==="once"){const s=new Date(e.fireAt);return ke(s)&&s.getTime()>t.getTime()?s:null}const n=Ne(e.expression);return n?xn(n,t):null}function be(e){return e==="RUN_FAILED"?"failed":e==="RUN_DELIVERED"?"completed":(e.startsWith("SKIP_"),"skipped")}function St(e){return e==="failed"?"执行失败":e==="completed"?"执行成功":e==="skipped"?"已跳过":e==="paused"?"已暂停":"待执行"}function Ft(e,t){return`${e}|${mn(t)}`}function gn(e){const t=new Map;for(const n of e){const s=new Date(n.startedAt);if(!ke(s))continue;const i=Ft(n.taskId,s),o=t.get(i);if(!o){t.set(i,{latestRun:n,latestStartedAt:s,runCount:1,state:be(n.outcome)});continue}o.runCount+=1,s.getTime()>o.latestStartedAt.getTime()&&(o.latestRun=n,o.latestStartedAt=s,o.state=be(n.outcome))}return t}function K(e,t,n){return e.get(Ft(t,n))}function Je(e,t){var n;return(t==null?void 0:t.trigger)??((n=e.task)==null?void 0:n.trigger)??null}function Qe(e,t){var s,i;const n=(i=(s=e.task)==null?void 0:s.label)==null?void 0:i.trim();return(t==null?void 0:t.taskName)??(n||e.taskId)}function bn(e){return e?e.type==="interval"?!0:e.type==="cron"?Mt(e.expression)==="recurring":!1:!1}function Xe(e){const t=new Date(e);return ke(t)?ee(t):"--:--"}function qe(e,t){if(t&&!(t.latestStartedAt.getTime()<e.getTime()))return t}function Lt(e,t,n){if(!e.effectiveEnabled)return"paused";const s=qe(t,n);return s?s.state:"pending"}function Pt(e){const t=z(e.hour,0,23);if(!t||t.length===0)return"00:00-23:59";const n=t[0],s=t[t.length-1];return`${M(n)}:00-${M(s)}:59`}function vn(e,t,n,s){if(e.trigger.type!=="interval")return"--:--";if(re(t,n)){const i=s?new Date(s).getTime():e.lastRunAt?new Date(e.lastRunAt).getTime():n.getTime();return ee(new Date(i+e.trigger.ms))}return"00:00"}function yn(e,t,n){const s=z(e.hour,0,23),i=z(e.minute,0,59);if(s.length===0||i.length===0)return"--:--";const o=re(t,n)?n.getHours()*60+n.getMinutes():-1,l=[];for(const a of s)for(const c of i)a*60+c>=o&&l.push(`${M(a)}:${M(c)}`);return l.length>0?l.sort()[0]:`${M(s[0])}:${M(i[0])}`}function et(e){return e==="failed"?"已失败":e==="completed"?"已完成":e==="skipped"?"已跳过":e==="paused"?"已暂停":"待执行"}function wn(e,t,n,s){if(!e.effectiveEnabled)return"paused";const i=It(t,n);return i<0?(s==null?void 0:s.state)??"pending":i>0?"pending":s?s.state:"pending"}function tt(e,t,n,s,i){const o=wn(e,n,s,i),l=(i==null?void 0:i.latestRun.startedAt)??e.lastRunAt,a=(i==null?void 0:i.state)??(e.lastRunOutcome?be(e.lastRunOutcome):null),c=l&&a?`上次 ${ee(new Date(l))} ${St(a)}`:l?`上次 ${ee(new Date(l))} 执行`:et(o),u=e.trigger.type==="interval"?vn(e,n,s,l??void 0):t?yn(t,n,s):"--:--",d=re(n,s),m=d||o==="pending";return{taskId:e.taskId,sourceTaskId:e.taskId,taskName:e.taskName,mode:"recurring",timeLabel:e.trigger.type==="interval"?"00:00-23:59":t?Pt(t):"00:00-23:59",state:o,lastExecutionText:d?c:et(o),nextExecutionText:m?`下次 ${u} 执行`:void 0,latestRunAt:i==null?void 0:i.latestRun.startedAt,latestRunOutcome:i==null?void 0:i.latestRun.outcome,runCount:i==null?void 0:i.runCount}}function Ye(e,t){const n=t.getMonth()+1,s=t.getDate(),i=t.getDay(),o=Re(e.month,n,1,12,Tt),l=Re(e.dayOfMonth,s,1,31),a=Re(e.dayOfWeek,i,0,6,jt,c=>c===7?0:c);return o&&l&&a}function Rt(e){const t=ge(e.hour,0,23),n=ge(e.minute,0,59);if(!t||!n||!t.length||!n.length)return[];const s=[];for(const i of t)for(const o of n)s.push({h:i,m:o});return s.sort((i,o)=>i.h===o.h?i.m-o.m:i.h-o.h)}function Nn(e,t,n,s){const i=new Date,o=ge(t.second,0,59),l=o&&o.length>0?o[0]:0;for(const a of n){if(!Ye(t,a.date))continue;const c=K(s,e.taskId,a.date),u=Rt(t);for(const d of u){const m=new Date(a.date);m.setHours(d.h,d.m,l,0);const f=qe(m,c);if(!f&&re(a.date,i)&&m.getTime()<i.getTime())continue;const b=Lt(e,m,c);a.occurrences.push({taskId:`${e.taskId}-${a.dayOfMonth}-${d.h}-${d.m}`,sourceTaskId:e.taskId,taskName:e.taskName,mode:"single",timeLabel:`${M(d.h)}:${M(d.m)}`,state:b,latestRunAt:f==null?void 0:f.latestRun.startedAt,latestRunOutcome:f==null?void 0:f.latestRun.outcome,runCount:f==null?void 0:f.runCount})}}}function kn(e,t,n){if(e.trigger.type!=="once")return;const s=new Date(e.trigger.fireAt),i=new Date;for(const o of t)if(s.getFullYear()===o.date.getFullYear()&&s.getMonth()===o.date.getMonth()&&s.getDate()===o.date.getDate()){const l=K(n,e.taskId,o.date),a=qe(s,l);if(!a&&re(o.date,i)&&s.getTime()<i.getTime())continue;const c=Lt(e,s,l);o.occurrences.push({taskId:e.taskId,sourceTaskId:e.taskId,taskName:e.taskName,mode:"single",timeLabel:ee(s),state:c,latestRunAt:a==null?void 0:a.latestRun.startedAt,latestRunOutcome:a==null?void 0:a.latestRun.outcome,runCount:a==null?void 0:a.runCount})}}function nt(e){var o;const n=(((o=e.split("-")[0])==null?void 0:o.trim())??"").match(/^(\d{1,2}):(\d{2})$/);if(!n)return Number.POSITIVE_INFINITY;const s=Number(n[1]),i=Number(n[2]);return!Number.isFinite(s)||!Number.isFinite(i)?Number.POSITIVE_INFINITY:s*60+i}function jn(e,t){const n=e.mode===t.mode?0:e.mode==="recurring"?-1:1;if(n!==0)return n;const s=nt(e.timeLabel)-nt(t.timeLabel);if(s!==0)return s;const i=e.taskName.localeCompare(t.taskName,"zh-CN");return i!==0?i:e.taskId.localeCompare(t.taskId)}function Tn(e,t){const n=new Map,s=te(e).getTime(),i=1440*60*1e3;for(const o of t){const l=new Date(o.startedAt);if(!ke(l))continue;const a=te(l).getTime(),c=Math.floor((a-s)/i);if(c<0||c>6)continue;const u=n.get(c);u?u.push(o):n.set(c,[o])}return n}function Cn(e,t,n,s,i){const o=new Set,l=[];for(const a of t){const c=n.get(a.taskId);if(i.missingTasksOnly&&c)continue;const u=Je(a,c),d=K(s,a.taskId,e.date),m=!u&&!c&&((d==null?void 0:d.runCount)??0)>1;if(bn(u)){o.add(a.taskId);continue}if(m){o.add(a.taskId);continue}l.push({run:a,task:c})}for(const a of o){const c=K(s,a,e.date);if(!c)continue;const u=n.get(a);if(i.missingTasksOnly&&u)continue;const d=Je(c.latestRun,u),m=(d==null?void 0:d.type)==="cron"?Ne(d.expression):null;e.occurrences.push({taskId:a,sourceTaskId:a,taskName:Qe(c.latestRun,u),mode:"recurring",timeLabel:(d==null?void 0:d.type)==="interval"?"00:00-23:59":m?Pt(m):"00:00-23:59",state:c.state,lastExecutionText:`上次 ${Xe(c.latestRun.startedAt)} ${St(c.state)}`,latestRunAt:c.latestRun.startedAt,latestRunOutcome:c.latestRun.outcome,runCount:c.runCount})}l.sort((a,c)=>new Date(a.run.startedAt).getTime()-new Date(c.run.startedAt).getTime()).forEach(({run:a,task:c})=>{e.occurrences.push({taskId:`${a.taskId}-${a.id}`,sourceTaskId:a.taskId,taskName:Qe(a,c),mode:"single",timeLabel:Xe(a.startedAt),state:be(a.outcome),latestRunAt:a.startedAt,latestRunOutcome:a.outcome,runCount:1})})}function _t(e,t,n,s=[]){const i=Dt(e,t),o=new Date,l=Array.from({length:7},(d,m)=>{const f=new Date(i);return f.setDate(i.getDate()+m),{date:f,dayIndex:m,labelZh:un[m],labelEn:fn[m],dayOfMonth:f.getDate(),occurrences:[]}}),a=new Map(n.map(d=>[d.taskId,d])),c=gn(s),u=Tn(i,s);for(const d of n){const m=l.filter(h=>!Ze(h.date,o));if(d.trigger.type==="interval"){for(const h of m)h.occurrences.push(tt(d,null,h.date,o,K(c,d.taskId,h.date)));continue}if(d.trigger.type==="once"){kn(d,m,c);continue}if(d.trigger.type!=="cron")continue;const f=Ne(d.trigger.expression);if(!f)continue;if(Mt(d.trigger.expression)==="recurring"){for(const h of m)Ye(f,h.date)&&h.occurrences.push(tt(d,f,h.date,o,K(c,d.taskId,h.date)));continue}Nn(d,f,m,c)}for(const d of l){const m=u.get(d.dayIndex)??[];m.length!==0&&Cn(d,m,a,c,{missingTasksOnly:!Ze(d.date,o)})}for(const d of l)d.occurrences.sort(jn);return l}const se="该定时任务仅支持通过对话进行编辑";function $n(e){return`${e.getFullYear()}-${M(e.getMonth()+1)}-${M(e.getDate())} ${M(e.getHours())}:${M(e.getMinutes())}:${M(e.getSeconds())}`}function En(e){const t=e.trim().toUpperCase();if(!t||t==="*"||t==="?"||t.includes("/")||t.includes("-"))return null;const n=new Set;for(const s of t.split(",")){const i=s.trim();if(!i)continue;const o=Number(i);if(!Number.isFinite(o))return null;if(o===0||o===7){n.add("7");continue}if(o>=1&&o<=6){n.add(String(o));continue}return null}return Array.from(n).sort((s,i)=>Number(s)-Number(i))}function In(e,t){if(!e||typeof e!="object"||!("type"in e))return null;if(e.type==="once")return{type:"once",executeTime:$n(new Date(e.fireAt))};if(e.type==="interval"){const v=kt(e.ms);return v?{type:"interval",interval:v.interval,unit:v.unit}:null}if(e.type!=="cron"||e.timezone&&t&&e.timezone!==t)return null;const n=e.expression.trim().split(/\s+/);let s="0",i="",o="",l="",a="",c="";if(n.length===5)[i,o,l,a,c]=n;else if(n.length===6)[s,i,o,l,a,c]=n;else return null;if(s!=="0")return null;const u=Number(i),d=Number(o);if(!Number.isFinite(u)||!Number.isFinite(d)||u<0||u>59||d<0||d>23)return null;const m=`${M(d)}:${M(u)}:00`,f=l.trim(),b=a.trim(),h=c.trim();if(b!=="*"||f!=="*")return null;if(h==="*"||h==="?")return{type:"daily",time:m};const g=En(h);return!g||g.length===0?null:g.length===7?{type:"daily",time:m}:{type:"weekday",time:m,weekdays:g}}function Mn(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||void 0}catch{return}}function Ue(e,t=Mn()){const n=In(e.trigger,t);return n?{editable:!0,reason:null,draft:{source:"custom",taskName:e.taskName,prompt:e.prompt,frequency:n,enabled:e.enabled,sessionId:e.deliveryThreadId??null}}:{editable:!1,draft:null,reason:se}}function Dn(e){return e&&(e.startsWith("thread-")||e.startsWith("thread:"))?e.slice(7):null}function An(e){return e.type==="interval"?rn(e.ms):e.type==="once"?new Date(e.fireAt).toLocaleString("zh-CN"):e.type==="cron"?dn(e.expression):"任务类型: 未知"}function Sn(e){var l,a,c,u,d,m,f,b,h;const t=e.dynamicTaskId??e.id,n=e.deliveryThreadId??Dn((l=e.lastRun)==null?void 0:l.subject_key),s=((a=e.threadTitle)==null?void 0:a.trim())||n||"-",i=e.trigger.type==="once",o=i?e.trigger.fireAt:null;return{taskId:t,dynamicTaskId:e.dynamicTaskId,source:e.source,deliveryThreadId:n,taskName:((u=(c=e.display)==null?void 0:c.label)==null?void 0:u.trim())||e.id,prompt:((m=(d=e.display)==null?void 0:d.description)==null?void 0:m.trim())||"暂无描述",frequency:An(e.trigger),nextExcuteTime:"-",effectiveTime:i&&o?new Date(o).toLocaleString("zh-CN"):"长期有效",status:e.effectiveEnabled?"running":"paused",enabled:e.enabled,effectiveEnabled:e.effectiveEnabled,createTime:((f=e.lastRun)==null?void 0:f.started_at)??"",sessionName:s,trigger:e.trigger,lastRunAt:((b=e.lastRun)==null?void 0:b.started_at)??null,lastRunOutcome:((h=e.lastRun)==null?void 0:h.outcome)??null}}const Fn=20;function Ln({viewMode:e,weekOffset:t}){const[n,s]=p.useState([]),[i,o]=p.useState([]),[l,a]=p.useState(!1),[c,u]=p.useState(!1),d=p.useCallback(async()=>{const f=await F("/api/schedule/tasks");if(!f.ok)return null;const h=((await f.json()).tasks??[]).map(Sn);return s(h),h},[]);p.useEffect(()=>{let f=!1;return(async()=>{a(!0);try{if(f)return;await d()}finally{f||a(!1)}})(),()=>{f=!0}},[d]),p.useEffect(()=>{if(e!=="calendar")return;let f=!1;return(async()=>{u(!0);try{const h=new Date,g=h.getDay()===0?-6:1-h.getDay(),v=new Date(h);v.setDate(h.getDate()+g+t*7),v.setHours(0,0,0,0);const k=new Date(v);k.setDate(v.getDate()+6),k.setHours(23,59,59,999);const y=v.toISOString(),w=k.toISOString();let x=null;const j=[],T=new Set;let N=0;for(;!f&&!(N>=Fn||x!=null&&T.has(x));){x!=null&&T.add(x);const C=new URLSearchParams({limit:"200",since:y,until:w});x!=null&&C.set("cursor",String(x));const E=await F(`/api/schedule/runs?${C.toString()}`);if(!E.ok)break;const I=await E.json();if(j.push(...I.runs??[]),N+=1,!I.hasMore||I.nextCursor==null||I.nextCursor===x)break;x=I.nextCursor}f||o(j)}finally{f||u(!1)}})(),()=>{f=!0}},[e,t]);const m=p.useMemo(()=>{const f={editable:!1,draft:null,reason:se};return new Map(n.map(b=>[b.taskId,b.source==="dynamic"?Ue(b):f]))},[n]);return{tasks:n,calendarRuns:i,isLoading:l,isRunsLoading:c,taskEditabilityById:m,reloadTasks:d,setTasks:s}}function Pn(e){return e.dynamicTaskId??e.taskId}function Rn(e){const t=Pn(e);return`按照以下要求修改定时任务「${e.taskName}」(任务ID:${t}):`}function _n(e){const[t="0",n="0"]=e.split(":");return{hour:Number(t)||0,minute:Number(n)||0}}function Hn(e){const[t="",n="00:00:00"]=e.split(" "),[s="0",i="1",o="1"]=t.split("-"),[l="0",a="0",c="0"]=n.split(":");return new Date(Number(s),Number(i)-1,Number(o),Number(l),Number(a),Number(c)).getTime()}function On(e){return e==="7"?"0":e}function Ht(e,t){const n=t===null?void 0:t??(Intl.DateTimeFormat().resolvedOptions().timeZone||void 0);if(e.frequency.type==="once")return{type:"once",fireAt:Hn(e.frequency.executeTime)};if(e.frequency.type==="interval")return{type:"interval",ms:Nt(e.frequency.interval,e.frequency.unit)};const{hour:s,minute:i}=_n(e.frequency.time);return e.frequency.type==="weekday"?{type:"cron",expression:`${i} ${s} * * ${e.frequency.weekdays.map(On).join(",")}`,...n?{timezone:n}:{}}:{type:"cron",expression:`${i} ${s} * * *`,...n?{timezone:n}:{}}}function Un(e,t){return{templateId:"reminder",trigger:Ht(e),params:{message:e.prompt.trim()},display:{label:e.taskName.trim(),category:"system",description:e.prompt.trim()},deliveryThreadId:t}}function Bn({reloadTasks:e,setTasks:t,getEditingTask:n,closeEditor:s}){const i=vt(),o=yt(g=>g.addToast),l=We(g=>g.setPendingChatInsert),[a,c]=p.useState(new Set),[u,d]=p.useState(!1),m=p.useCallback(async g=>{const v=g.taskId;if(!v||a.has(v))return;const k=!g.effectiveEnabled,y=k;c(w=>new Set(w).add(v)),t(w=>w.map(x=>x.taskId===v?{...x,enabled:y,effectiveEnabled:k,status:k?"running":"paused"}:x));try{if(g.source==="dynamic"){const x=await F(`/api/schedule/tasks/${encodeURIComponent(g.dynamicTaskId??v)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:y})});if(!x.ok)throw new Error(`HTTP ${x.status}`);if(k){const j=await F(`/api/schedule/control/tasks/${encodeURIComponent(v)}`,{method:"DELETE"});if(!j.ok&&j.status!==404)throw new Error(`HTTP ${j.status}`)}}else if(y){const x=await F(`/api/schedule/control/tasks/${encodeURIComponent(v)}`,{method:"DELETE"});if(!x.ok&&x.status!==404)throw new Error(`HTTP ${x.status}`)}else{const x=await F(`/api/schedule/control/tasks/${encodeURIComponent(v)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:!1})});if(!x.ok)throw new Error(`HTTP ${x.status}`)}const w=await e();if(k){const x=w==null?void 0:w.find(j=>j.taskId===v);x&&!x.effectiveEnabled&&await e()}}catch{await e()}finally{c(w=>{const x=new Set(w);return x.delete(v),x})}},[a,t,e]),f=p.useCallback(async(g,v)=>{if(!g)return;const k=g.dynamicTaskId??g.taskId;if(!k)return;const y=g.taskName;d(!0);try{const w=await F(`/api/schedule/tasks/${encodeURIComponent(k)}`,{method:"DELETE"});if(!w.ok)throw new Error(`HTTP ${w.status}`);t(x=>x.filter(j=>j.taskId!==g.taskId)),o({type:"success",title:"删除成功",message:`定时任务「${y}」已删除`,duration:2600}),v==null||v()}catch{o({type:"error",title:"删除失败",message:"定时任务删除失败,请稍后重试",duration:2600})}finally{d(!1)}},[t,o]),b=p.useCallback(async(g,v,k)=>{var j;const y=v??n(),w=!!y,x=g.taskName.trim();s();try{let T=((j=g.sessionId)==null?void 0:j.trim())??"",N=!1;if(T.startsWith("mock-new-session")){const C=await F("/api/threads",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({title:g.taskName.trim()})});if(!C.ok)throw new Error(`create_thread_failed_${C.status}`);const E=await C.json();if(!E.id)throw new Error("create_thread_missing_id");T=E.id,N=!0}if(w){const C=(y==null?void 0:y.dynamicTaskId)??(y==null?void 0:y.taskId);if(!C)throw new Error("edit_schedule_task_missing_id");const E=(y==null?void 0:y.trigger.type)==="cron"?y.trigger.timezone??null:void 0,I=await F(`/api/schedule/tasks/${encodeURIComponent(C)}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({trigger:Ht(g,E),params:{message:g.prompt.trim()},display:{label:g.taskName.trim(),description:g.prompt.trim()},deliveryThreadId:T||null,enabled:g.enabled})});if(!I.ok)throw new Error(`edit_schedule_task_failed_${I.status}`)}else{const C=await F("/api/schedule/tasks",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Un(g,T))});if(!C.ok)throw new Error(`create_schedule_task_failed_${C.status}`)}N&&typeof window<"u"&&window.dispatchEvent(new Event("office-claw:threads-refresh")),k==null||k(),await e(),o({type:"success",title:w?"编辑成功":"创建成功",message:w?`定时任务「${x}」已更新`:`定时任务「${x}」已创建`,duration:2600})}catch(T){o({type:"error",title:w?"编辑失败":"创建失败",message:w?"定时任务编辑失败,请稍后重试":"定时任务创建失败,请稍后重试",duration:2600}),console.error(w?"[schedule-task-edit]":"[schedule-task-create]",T)}},[e,o,n,s]),h=p.useCallback(g=>{var k;const v=((k=g.deliveryThreadId)==null?void 0:k.trim())??"";if(!v){o({type:"error",title:"无法跳转编辑",message:"该任务未绑定会话,无法通过对话编辑",duration:2600});return}l({threadId:v,text:Rn(g)}),i(v==="default"?"/":`/thread/${v}`,{preventScrollReset:!0})},[i,l,o]);return{togglingTaskIds:a,isDeletingTask:u,handleToggleTask:m,handleDeleteConfirm:f,handleTaskEditorConfirm:b,handleEditTaskInConversation:h}}function Wn({baseDate:e,weekOffset:t,tasks:n,runs:s}){const i=p.useMemo(()=>_t(e,t,n,s),[e,t,n,s]),o=p.useMemo(()=>pn(e,t),[e,t]),l=p.useMemo(()=>At(e,t),[e,t]);return{days:i,weekRangeText:o,weekRange:l}}function qn(){const[e,t]=p.useState(null),[n,s]=p.useState(null),[i,o]=p.useState("card"),[l,a]=p.useState(!1),[c,u]=p.useState(!1),[d,m]=p.useState(null),[f,b]=p.useState(null),h=()=>{u(!1),m(null),b(null)},g=x=>{const j=Ue(x);return j.editable?(t(null),b(x),m(j.draft),u(!0),!0):!1},v=x=>{b(null),m(x),u(!0)},k=(x,j)=>{x.source==="dynamic"&&(o(j),s(x))},y=()=>{s(null)},w=p.useMemo(()=>e?Ue(e):null,[e]);return{selectedTask:e,setSelectedTask:t,deleteTargetTask:n,setDeleteTargetTask:s,deleteDialogSourceView:i,templatePickerOpen:l,setTemplatePickerOpen:a,taskEditorOpen:c,editorDraft:d,editingTask:f,closeTaskEditor:h,openEditTask:g,openCreateTask:v,openDeleteTask:k,closeDeleteDialog:y,selectedTaskEditability:w,getEditingTask:()=>f}}function Yn({viewMode:e,weekRangeText:t,onChangeView:n,onPrevWeek:s,onNextWeek:i,onResetWeek:o,onCreateFromConversation:l,onCreateFromTemplate:a,onCreateCustom:c}){const[u,d]=p.useState(!1),m=p.useRef(null);return p.useEffect(()=>{if(!u)return;const f=b=>{var h;(h=m.current)!=null&&h.contains(b.target)||d(!1)};return document.addEventListener("mousedown",f),()=>{document.removeEventListener("mousedown",f)}},[u]),r.jsxs("div",{className:"flex items-center justify-between",children:[r.jsxs("div",{className:"flex items-center gap-3",children:[r.jsx(Vn,{viewMode:e,onChangeView:n}),e==="calendar"?r.jsx(zn,{weekRangeText:t,onPrevWeek:s,onNextWeek:i,onResetWeek:o}):null]}),r.jsxs("div",{ref:m,className:"relative",children:[r.jsxs("button",{type:"button",onClick:()=>d(f=>!f),"aria-haspopup":"menu","aria-expanded":u,"data-testid":"scheduled-task-toolbar-create",className:"inline-flex h-[32px] min-h-[32px] min-w-[112px] shrink-0 items-center justify-center gap-1.5 whitespace-nowrap break-keep rounded-full border border-[#2C3340] bg-[#181B21] px-4 text-[12px] font-medium leading-none text-white",children:[r.jsx("span",{children:"创建定时任务"}),r.jsx("svg",{className:`h-3.5 w-3.5 transition-transform ${u?"rotate-180":""}`,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:r.jsx("path",{d:"m6 9 6 6 6-6"})})]}),u?r.jsxs("div",{className:"absolute right-0 top-full z-20 mt-2 w-[160px] rounded-[12px] border border-[#ECEFF3] bg-white p-2 shadow-[0_6px_20px_rgba(31,35,41,0.12)]",children:[r.jsx("button",{type:"button",onClick:()=>{d(!1),l()},"data-testid":"scheduled-task-toolbar-create-conversation",className:"flex h-8 w-full items-center rounded-[8px] px-3 text-left text-[12px] font-medium text-[#1F2329] transition-colors hover:bg-[#F5F7FA]",children:"从对话创建"}),r.jsx("button",{type:"button",onClick:()=>{d(!1),a()},"data-testid":"scheduled-task-toolbar-create-template",className:"flex h-8 w-full items-center rounded-[8px] px-3 text-left text-[12px] font-medium text-[#1F2329] transition-colors hover:bg-[#F5F7FA]",children:"从模板创建"}),r.jsx("button",{type:"button",onClick:()=>{d(!1),c()},"data-testid":"scheduled-task-toolbar-create-custom",className:"flex h-8 w-full items-center rounded-[8px] px-3 text-left text-[12px] font-medium text-[#1F2329] transition-colors hover:bg-[#F5F7FA]",children:"自定义创建"})]}):null]})]})}function Vn({viewMode:e,onChangeView:t}){const n="inline-flex h-full min-w-[96px] items-center justify-center whitespace-nowrap px-[18px] text-[12px] leading-none";return r.jsxs("div",{className:"inline-flex h-7 items-center rounded-[6px] border border-[#ECECEC] bg-[#F7F7F8]",children:[r.jsx("button",{type:"button",onClick:()=>t("calendar"),className:`${n} rounded-[6px] ${e==="calendar"?"border border-[#ECECEC] bg-white font-semibold text-[#1F2329]":"font-medium text-[#4C5563]"}`,children:"日历视图"}),r.jsx("button",{type:"button",onClick:()=>t("card"),className:`${n} rounded-[6px] ${e==="card"?"border border-[#ECECEC] bg-white font-semibold text-[#1F2329]":"font-medium text-[#4C5563]"}`,children:"卡片视图"})]})}function zn({weekRangeText:e,onPrevWeek:t,onNextWeek:n,onResetWeek:s}){return r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsxs("div",{className:"inline-flex h-7 items-center gap-[31.5px] rounded-[6px] border border-[#F0F0F0] px-2",children:[r.jsx("button",{type:"button",onClick:t,className:"inline-flex h-5 w-5 items-center justify-center text-[#A8A8A8]",children:r.jsx(Oe,{name:"chevronLeft",className:"h-3.5 w-3.5"})}),r.jsx("span",{className:"text-[12px] font-normal text-[#191919]",children:e}),r.jsx("button",{type:"button",onClick:n,className:"inline-flex h-5 w-5 items-center justify-center text-[#A8A8A8]",children:r.jsx(Oe,{name:"chevronRight",className:"h-3.5 w-3.5"})})]}),r.jsx("button",{type:"button",onClick:s,className:"inline-flex h-7 min-h-[28px] min-w-[84px] shrink-0 items-center justify-center whitespace-nowrap break-keep rounded-[6px] border border-[#F0F0F0] px-[10px] text-[12px] font-normal leading-none text-[#191919]",children:"回到本周"})]})}function Ve({children:e,reason:t,onGoEdit:n,className:s,buttonTestId:i}){const o=t??se;return r.jsx(X,{content:o,forceShow:!0,className:s,customContent:r.jsxs("div",{className:"w-[260px]","data-schedule-unsupported-edit-tooltip":"1",children:[r.jsx("p",{className:"text-xs leading-5 text-[var(--tooltip-text)]",children:o}),r.jsx("div",{className:"mt-2 flex justify-end",children:r.jsx("button",{type:"button",onMouseDown:l=>{l.stopPropagation()},onPointerDown:l=>{l.stopPropagation()},onClick:l=>{l.stopPropagation(),n()},className:"ui-button-primary !h-7 !min-w-[72px] !px-4 !py-1 text-xs font-normal","data-testid":i,children:"去编辑"})})]}),children:e})}function Kn({task:e,taskIconMaskStyle:t,onSelectTask:n,onEditTask:s,onEditTaskInConversation:i,onToggleTask:o,onDeleteTask:l,isToggling:a,editability:c,modalOpen:u=!1}){return r.jsx("article",{role:"button",tabIndex:0,onClick:()=>n(e),onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),n(e))},className:`group h-[194px] cursor-pointer rounded-[16px] border border-[var(--card-border)] bg-[var(--card-bg)] p-6 transition-shadow hover:bg-[var(--card-hover-bg)] hover:shadow-[0_4px_16px_0_rgba(0,0,0,0.08)] ${u?"force-hover":""}`,children:r.jsxs("div",{className:"flex h-full flex-col gap-4",children:[r.jsxs("div",{className:"flex h-[48px] items-center justify-between gap-3",children:[r.jsxs("div",{className:"flex h-full min-w-0 items-center gap-3",children:[r.jsx("div",{className:"flex h-12 w-12 shrink-0 items-center justify-center rounded-[8px] bg-[var(--surface-card-muted)]",children:r.jsx("img",{src:"/icons/schedule.svg",alt:"","aria-hidden":"true",className:"h-6 w-6 shrink-0"})}),r.jsx("h3",{className:"line-clamp-1 min-w-0 text-[16px] font-semibold text-[var(--text-primary)]",children:e.taskName})]}),e.source==="dynamic"?r.jsx("button",{type:"button",role:"switch","aria-checked":e.effectiveEnabled,"aria-label":`${e.taskName}开关`,onClick:async d=>{d.stopPropagation(),await o(e)},disabled:a,className:`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors duration-200 ease-out disabled:cursor-not-allowed disabled:opacity-60 ${e.effectiveEnabled?"bg-[var(--text-accent)]":"bg-[var(--border-default)]"}`,children:r.jsx("span",{className:`absolute left-1 h-4 w-4 rounded-full bg-white shadow-[0_1px_2px_rgba(15,23,42,0.25)] transition-transform duration-200 ease-out motion-reduce:transition-none ${e.effectiveEnabled?"translate-x-5":"translate-x-0"}`})}):null]}),r.jsx("p",{className:"line-clamp-2 h-[44px] text-[14px] leading-[22px] text-[var(--text-secondary)]",children:e.prompt}),r.jsxs("div",{className:"relative h-[24px]",children:[r.jsxs("div",{className:`absolute inset-0 flex items-center gap-1.5 text-[12px] leading-6 text-[var(--text-muted)] transition-opacity ${u?"":"group-hover:opacity-0 group-hover:pointer-events-none"}`,children:[r.jsx("span",{"aria-hidden":"true",className:"h-4 w-4 shrink-0",style:t}),r.jsx("span",{children:e.frequency})]}),r.jsx("div",{className:`absolute inset-0 flex items-center transition-opacity ${u?"opacity-0 pointer-events-none":"opacity-0 pointer-events-none group-hover:opacity-100 group-hover:pointer-events-auto group-focus-within:opacity-100 group-focus-within:pointer-events-auto"}`,children:e.source==="dynamic"?r.jsxs("div",{className:"flex items-center gap-4",children:[c.editable?r.jsx("div",{role:"button",tabIndex:0,onClick:d=>{d.stopPropagation(),s(e)},onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&(d.stopPropagation(),s(e))},className:"bg-transparent p-0 text-[14px] font-normal leading-6 text-[var(--text-accent)] hover:underline","data-testid":`scheduled-task-card-edit-${e.taskId}`,children:"编辑"}):r.jsx(Ve,{reason:c.reason??se,onGoEdit:()=>i(e),className:"inline-flex",buttonTestId:`scheduled-task-card-go-edit-${e.taskId}`,children:r.jsx("span",{className:"inline-flex",children:r.jsx("div",{role:"button",tabIndex:0,"aria-disabled":"true",onClick:d=>{d.stopPropagation()},onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&d.stopPropagation()},className:"cursor-not-allowed bg-transparent p-0 text-[14px] font-normal leading-6 text-[var(--text-disabled)]","data-testid":`scheduled-task-card-edit-${e.taskId}`,children:"编辑"})})}),r.jsx("div",{role:"button",tabIndex:0,onClick:d=>{d.stopPropagation(),l(e)},onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&(d.stopPropagation(),l(e))},className:"bg-transparent p-0 text-[14px] font-normal leading-6 text-[var(--text-accent)] hover:underline",children:"删除"})]}):r.jsx("div",{className:"flex items-center gap-4",children:r.jsx("div",{role:"button",tabIndex:0,"aria-disabled":"true",onClick:d=>{d.stopPropagation()},onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&d.stopPropagation()},className:"cursor-not-allowed bg-transparent p-0 text-[14px] font-normal leading-6 text-[var(--text-disabled)]",children:"删除"})})})]})]})})}function Gn(e,t){if(e.trigger.type==="interval")return{bucket:1,timeKey:Number.POSITIVE_INFINITY};const n=hn(e.trigger,t);return{bucket:0,timeKey:n?n.getTime():Number.POSITIVE_INFINITY}}function Zn({tasks:e,taskIconMaskStyle:t,togglingTaskIds:n,taskEditabilityById:s,onSelectTask:i,onEditTask:o,onEditTaskInConversation:l,onToggleTask:a,onDeleteTask:c,isModalOpen:u=!1}){const d=p.useMemo(()=>{const m=new Date;return e.map((f,b)=>{const h=Gn(f,m);return{task:f,index:b,...h}}).sort((f,b)=>f.bucket!==b.bucket?f.bucket-b.bucket:f.timeKey!==b.timeKey?f.timeKey-b.timeKey:f.index-b.index).map(f=>f.task)},[e]);return r.jsx("div",{className:"px-1 pb-4",children:r.jsx("div",{className:"grid grid-cols-3 gap-x-4 gap-y-6",children:d.map(m=>r.jsx(Kn,{task:m,taskIconMaskStyle:t,onSelectTask:i,onEditTask:o,onEditTaskInConversation:l,onToggleTask:a,onDeleteTask:c,isToggling:n.has(m.taskId),editability:s.get(m.taskId)??{editable:!1,draft:null,reason:""},modalOpen:u},m.taskId))})})}const _e=140,He=128,rt=4,V=12,me="group flex h-8 w-full items-center gap-2 rounded-[6px] px-[16px] py-[7px] text-left text-[12px] font-medium text-[var(--overlay-text)] transition-colors enabled:hover:bg-[var(--overlay-item-hover-bg)]",Jn=`${me} enabled:hover:text-[var(--state-error-text)]`,Qn="inline-flex h-6 w-6 items-center justify-center rounded-[4px] transition-colors",Xn="bg-[var(--overlay-item-hover-bg)] text-[var(--text-accent)]",er="text-[var(--text-muted)] hover:bg-[var(--overlay-item-hover-bg)] hover:text-[var(--text-accent)]";function Ot(e){return e==="completed"?{label:"已完成",dot:"rgba(173,217,127,1)",showTimeIcon:!1}:e==="failed"?{label:"已失败",dot:"#C62828",showTimeIcon:!1}:e==="skipped"?{label:"已跳过",dot:"#C2C2C2",showTimeIcon:!1}:e==="paused"?{label:"已暂停",dot:"#C2C2C2",showTimeIcon:!1}:{label:"待执行",dot:"#C2C2C2",showTimeIcon:!0}}function Be({item:e,occurrenceKey:t,taskById:n,onEditTask:s,onEditTaskInConversation:i,onToggleTask:o,onDeleteTask:l,togglingTaskIds:a,taskEditabilityById:c,openMenuKey:u,menuPosition:d,onOpenMenu:m,onCloseMenu:f}){if(e.state!=="pending"&&e.state!=="paused")return null;const b=n.get(e.sourceTaskId);if(!b)return null;const h=b.source==="dynamic",g=c.get(b.taskId),v=a.has(b.taskId),k=u===t;return r.jsxs("div",{"data-schedule-menu-root":"1",className:"shrink-0",children:[r.jsx("button",{type:"button","aria-label":`操作 ${b.taskName}`,"aria-expanded":k,"aria-haspopup":"menu",onClick:y=>{if(y.stopPropagation(),k){f();return}m(t,y.currentTarget.getBoundingClientRect())},className:`${Qn} ${k?Xn:er}`,children:r.jsx(Oe,{name:"more",className:"h-4 w-4"})}),k&&d?r.jsxs("div",{role:"menu",className:"ui-overlay-card fixed z-40 w-[140px] rounded-[6px] px-0 py-2 shadow-[0_12px_28px_rgba(15,23,42,0.18)]",style:{top:d.top,left:d.left},children:[r.jsxs("div",{className:`${me} justify-between`,children:[r.jsx("span",{className:h?"":"text-[var(--text-disabled)]",children:"启停用"}),r.jsx("button",{type:"button",role:"switch","aria-checked":b.effectiveEnabled,"aria-label":`${b.taskName}开关`,disabled:!h||v,onClick:async y=>{y.stopPropagation(),h&&(await o(b),f())},className:`relative inline-flex h-6 w-11 shrink-0 items-center rounded-full transition-colors duration-200 ease-out disabled:cursor-not-allowed disabled:opacity-60 ${b.effectiveEnabled?"bg-[var(--text-accent)]":"bg-[var(--border-default)]"}`,children:r.jsx("span",{className:`absolute left-1 h-4 w-4 rounded-full bg-white shadow-[0_1px_2px_rgba(15,23,42,0.25)] transition-transform duration-200 ease-out motion-reduce:transition-none ${b.effectiveEnabled?"translate-x-5":"translate-x-0"}`})})]}),h?g!=null&&g.editable?r.jsx("button",{type:"button",role:"menuitem",onClick:y=>{y.stopPropagation(),s(b),f()},className:me,"data-testid":`scheduled-task-calendar-edit-${b.taskId}`,children:"编辑"}):r.jsx(Ve,{reason:(g==null?void 0:g.reason)??se,onGoEdit:()=>i(b),className:"block",buttonTestId:`scheduled-task-calendar-go-edit-${b.taskId}`,children:r.jsx("span",{className:"block",children:r.jsx("button",{type:"button",role:"menuitem",disabled:!0,"aria-disabled":"true",onClick:y=>{y.stopPropagation()},className:`${me} cursor-not-allowed text-[var(--text-disabled)]`,"data-testid":`scheduled-task-calendar-edit-${b.taskId}`,children:"编辑"})})}):null,r.jsx("button",{type:"button",role:"menuitem",disabled:!h,onClick:y=>{y.stopPropagation(),h&&(l(b),f())},className:`${Jn} ${h?"":"cursor-not-allowed text-[var(--text-disabled)]"}`,children:"删除"})]}):null]})}function tr({item:e,occurrenceKey:t,taskById:n,onSelectTask:s,onEditTask:i,onEditTaskInConversation:o,onToggleTask:l,onDeleteTask:a,togglingTaskIds:c,taskEditabilityById:u,openMenuKey:d,menuPosition:m,onOpenMenu:f,onCloseMenu:b}){const h=Ot(e.state),g=n.get(e.sourceTaskId),v=!!g;return r.jsxs("article",{role:v?"button":void 0,tabIndex:v?0:void 0,onClick:()=>{g&&s(g)},onKeyDown:k=>{g&&(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),s(g))},className:`relative flex w-full flex-col gap-2 rounded-[8px] border p-3 ${e.state==="pending"?"border-[#B6D4F2] bg-[#F4F9FF]":"border-[#E9E9E9] bg-white"}`,children:[r.jsx("div",{className:"text-[12px] font-semibold text-[#C2C2C2]",children:e.timeLabel}),r.jsx(X,{content:e.taskName,children:r.jsx("div",{className:`text-[14px] font-normal ${e.state==="pending"?"text-[rgba(25,25,25,1)]":"text-[#808080]"}`,style:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:e.taskName})}),r.jsxs("div",{className:"space-y-2 text-[10px] text-[#C2C2C2]",children:[r.jsxs("div",{className:`flex items-center gap-1 ${e.nextExecutionText?"":"justify-between"}`,children:[r.jsxs("div",{className:"flex min-w-0 items-center gap-1",children:[r.jsx("span",{className:"h-2 w-2 rounded-full ",style:{backgroundColor:h.dot}}),r.jsx("span",{className:"text-[12px]",children:e.lastExecutionText})]}),e.nextExecutionText?null:r.jsx(Be,{item:e,occurrenceKey:t,taskById:n,onSelectTask:s,onEditTask:i,onEditTaskInConversation:o,onToggleTask:l,onDeleteTask:a,togglingTaskIds:c,taskEditabilityById:u,openMenuKey:d,menuPosition:m,onOpenMenu:f,onCloseMenu:b})]}),e.nextExecutionText?r.jsxs("div",{className:"flex items-center justify-between gap-1",children:[r.jsxs("div",{className:"flex min-w-0 items-center gap-1",children:[r.jsx("img",{src:"/icons/schedule.svg",alt:"",className:"h-3 w-3"}),r.jsx("span",{className:"text-[12px]",children:e.nextExecutionText})]}),r.jsx(Be,{item:e,occurrenceKey:t,taskById:n,onSelectTask:s,onEditTask:i,onEditTaskInConversation:o,onToggleTask:l,onDeleteTask:a,togglingTaskIds:c,taskEditabilityById:u,openMenuKey:d,menuPosition:m,onOpenMenu:f,onCloseMenu:b})]}):null]})]})}function nr({item:e,occurrenceKey:t,taskById:n,onSelectTask:s,onEditTask:i,onEditTaskInConversation:o,onToggleTask:l,onDeleteTask:a,togglingTaskIds:c,taskEditabilityById:u,openMenuKey:d,menuPosition:m,onOpenMenu:f,onCloseMenu:b}){const h=Ot(e.state),g=n.get(e.sourceTaskId),v=!!g;return r.jsxs("article",{role:v?"button":void 0,tabIndex:v?0:void 0,onClick:()=>{g&&s(g)},onKeyDown:k=>{g&&(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),s(g))},className:`relative flex w-full flex-col gap-2 rounded-[8px] border p-3 ${e.state==="pending"?"border-[#B6D4F2] bg-[#F4F9FF]":"border-[#E9E9E9] bg-white"}`,children:[r.jsx("div",{className:"text-[12px] font-semibold text-[#C2C2C2]",children:e.timeLabel}),r.jsx(X,{content:e.taskName,children:r.jsx("div",{className:`text-[14px] font-normal ${e.state==="pending"?"text-[rgba(25,25,25,1)]":"text-[#808080]"}`,style:{display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:e.taskName})}),r.jsxs("div",{className:"flex items-center justify-between gap-1 text-[12px] font-normal text-[#C2C2C2]",children:[r.jsxs("div",{className:"flex min-w-0 items-center gap-1",children:[h.showTimeIcon?r.jsx("img",{src:"/icons/schedule.svg",alt:"",className:"h-3 w-3"}):r.jsx("span",{className:"h-2 w-2 rounded-full",style:{backgroundColor:h.dot}}),r.jsx("span",{children:h.label})]}),r.jsx(Be,{item:e,occurrenceKey:t,taskById:n,onSelectTask:s,onEditTask:i,onEditTaskInConversation:o,onToggleTask:l,onDeleteTask:a,togglingTaskIds:c,taskEditabilityById:u,openMenuKey:d,menuPosition:m,onOpenMenu:f,onCloseMenu:b})]})]})}function rr({day:e,taskById:t,onSelectTask:n,onEditTask:s,onEditTaskInConversation:i,onToggleTask:o,onDeleteTask:l,togglingTaskIds:a,taskEditabilityById:c,openMenuKey:u,menuPosition:d,onOpenMenu:m,onCloseMenu:f}){const b=new Date,h=e.date.getFullYear()===b.getFullYear()&&e.date.getMonth()===b.getMonth()&&e.date.getDate()===b.getDate();return r.jsxs("div",{className:"flex h-full min-h-0 flex-col border-r border-[#E9E9E9] last:border-r-0",children:[r.jsxs("div",{className:`border-b border-[#E9E9E9] px-3 py-2 ${h?"bg-[#F5F5F5]":"bg-[#F9F9F9]"}`,children:[r.jsxs("div",{className:"flex items-center gap-1 text-[12px] font-semibold text-[#4C5563]",children:[e.labelZh,"/",e.labelEn,h?r.jsx("span",{className:"text-[12px] font-normal text-[#5cb300]",children:"今日"}):null]}),r.jsx("div",{className:"text-[20px] font-semibold text-[#4C5563]",children:e.dayOfMonth})]}),r.jsx("div",{className:"flex min-h-0 flex-1 flex-col gap-3 overflow-y-auto p-3",children:e.occurrences.map(g=>{const v=`${e.dayIndex}-${g.taskId}`;return g.mode==="recurring"?r.jsx(tr,{item:g,occurrenceKey:v,taskById:t,onSelectTask:n,onEditTask:s,onEditTaskInConversation:i,onToggleTask:o,onDeleteTask:l,togglingTaskIds:a,taskEditabilityById:c,openMenuKey:u,menuPosition:d,onOpenMenu:m,onCloseMenu:f},g.taskId):r.jsx(nr,{item:g,occurrenceKey:v,taskById:t,onSelectTask:n,onEditTask:s,onEditTaskInConversation:i,onToggleTask:o,onDeleteTask:l,togglingTaskIds:a,taskEditabilityById:c,openMenuKey:u,menuPosition:d,onOpenMenu:m,onCloseMenu:f},g.taskId)})})]})}function sr({tasks:e,runs:t,baseDate:n,weekOffset:s,onSelectTask:i,onEditTask:o,onEditTaskInConversation:l,onToggleTask:a,onDeleteTask:c,togglingTaskIds:u,taskEditabilityById:d}){const[m,f]=p.useState(null),[b,h]=p.useState(null),g=_t(n,s,e,t),v=new Map(e.map(y=>[y.taskId,y])),k=y=>{const w=y.right,x=w+_e<=window.innerWidth-V,j=y.left-_e,T=x?w:j,N=V,C=Math.max(N,window.innerWidth-_e-V),E=Math.min(Math.max(T,N),C),I=y.top+rt,D=I+He<=window.innerHeight-V?I:y.top-He-rt,S=V,P=Math.max(S,window.innerHeight-He-V);return{top:Math.min(Math.max(D,S),P),left:E}};return p.useEffect(()=>{const y=x=>{const j=x.target;j!=null&&j.closest('[data-schedule-menu-root="1"]')||j!=null&&j.closest('[data-schedule-unsupported-edit-tooltip="1"]')||(f(null),h(null))},w=x=>{x.key==="Escape"&&(f(null),h(null))};return document.addEventListener("mousedown",y),document.addEventListener("keydown",w),()=>{document.removeEventListener("mousedown",y),document.removeEventListener("keydown",w)}},[]),p.useEffect(()=>{f(null),h(null)},[s]),r.jsx("div",{className:"h-full min-h-0 w-full overflow-x-auto",children:r.jsx("div",{className:"mx-auto h-full w-full min-w-[1248px]",children:r.jsx("div",{className:"h-full overflow-hidden rounded-[12px] border border-[#E6EAF0]",children:r.jsx("div",{className:"grid h-full min-h-0 grid-cols-7",children:g.map(y=>r.jsx(rr,{day:y,taskById:v,onSelectTask:i,onEditTask:o,onEditTaskInConversation:l,onToggleTask:a,onDeleteTask:c,togglingTaskIds:u,taskEditabilityById:d,openMenuKey:m,menuPosition:b,onOpenMenu:(w,x)=>{f(w),h(k(x))},onCloseMenu:()=>{f(null),h(null)}},y.dayIndex))})})})})}function ar({title:e,description:t,showTemplates:n,templateCards:s,onTemplateClick:i,emptyTemplateSectionExpanded:o,onToggleTemplates:l}){return r.jsxs("div",{className:"flex h-full min-h-[320px] flex-col",children:[r.jsx("div",{className:"flex flex-1 items-center justify-center",children:r.jsxs("div",{className:"text-center",children:[r.jsx(wt,{title:e}),t&&r.jsx("p",{className:"mt-2 text-[12px] text-[var(--text-muted)]",children:t})]})}),n&&s&&s.length>0&&r.jsxs("div",{className:"w-full px-6 pb-6 pt-5",children:[r.jsx("div",{className:"flex justify-center",children:r.jsxs("button",{type:"button",className:"inline-flex items-center gap-1 text-[14px] text-[rgba(89,89,89,1)]",onClick:l,"aria-expanded":o,"data-testid":"scheduled-task-empty-template-toggle",children:[r.jsx("span",{children:"热门模板推荐"}),r.jsx("svg",{className:["h-4 w-4 transition-transform",o?"rotate-180":""].join(" "),viewBox:"0 0 20 20",fill:"none","aria-hidden":"true",children:r.jsx("path",{d:"M5 12.5L10 7.5L15 12.5",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})})]})}),o?r.jsx("div",{className:"mt-3 grid grid-cols-4 gap-4",children:s.map(a=>r.jsxs("button",{type:"button",onClick:()=>i==null?void 0:i(a.id),className:"flex h-[214px] min-h-[214px] w-full flex-col items-start gap-5 rounded-[24px] border border-[rgba(222,236,255,0.6)] bg-[rgba(222,236,255,0.2)] px-6 pb-7 pt-7 text-left transition-colors","data-testid":`scheduled-task-empty-template-${a.id}`,children:[r.jsx("span",{className:"flex h-12 w-12 shrink-0 items-center justify-center rounded-[8px] bg-[rgba(222,236,255,1)]",children:r.jsx("img",{src:"/icons/schedule.svg",alt:"","aria-hidden":"true",className:"h-6 w-6 shrink-0"})}),r.jsx("span",{className:"block w-full text-[16px] font-bold leading-6 text-[rgba(25,25,25,1)]",children:a.title}),r.jsx("span",{className:"block w-full overflow-hidden text-[14px] leading-5 text-[rgba(89,89,89,1)]",style:{display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical"},children:a.description})]},a.id))}):null]})]})}function ir({task:e,editability:t,onClose:n,onEdit:s,onEditInConversation:i}){return r.jsx(we,{open:!!e,onClose:n,title:(e==null?void 0:e.taskName)??"任务详情",panelClassName:"w-[520px] max-w-[92vw] rounded-[12px] border border-[#E6EAF0] bg-white",bodyClassName:"pt-4 text-left",children:e?r.jsxs("div",{className:"space-y-4 text-left text-[14px] text-[#4B5565]",children:[r.jsxs("div",{className:"flex items-start gap-6",children:[r.jsx("div",{className:"w-[72px] shrink-0 text-[12px] leading-6 text-[#98A1AF]",children:"执行频率"}),r.jsx("div",{className:"min-w-0 flex-1 leading-6",children:e.frequency})]}),r.jsxs("div",{className:"flex items-start gap-6",children:[r.jsx("div",{className:"w-[72px] shrink-0 text-[12px] leading-6 text-[#98A1AF]",children:"生效时间"}),r.jsx("div",{className:"min-w-0 flex-1 leading-6",children:e.effectiveTime})]}),r.jsxs("div",{className:"flex items-start gap-6",children:[r.jsx("div",{className:"w-[72px] shrink-0 text-[12px] leading-6 text-[#98A1AF]",children:"描述"}),r.jsx("div",{className:"min-w-0 flex-1",children:r.jsx(X,{content:e.prompt,className:"inline-flex max-w-full align-top",children:r.jsx("div",{className:"min-w-0 leading-6 line-clamp-2",children:e.prompt})})})]}),r.jsxs("div",{className:"flex items-start gap-6",children:[r.jsx("div",{className:"w-[72px] shrink-0 text-[12px] leading-6 text-[#98A1AF]",children:"执行会话"}),r.jsx("div",{className:"min-w-0 flex-1",children:r.jsx(X,{content:e.sessionName,className:"inline-flex max-w-full align-top",children:r.jsx("div",{className:"min-w-0 max-w-full truncate text-[14px] leading-6 text-[#2F3A4B]",children:e.sessionName})})})]}),r.jsxs("div",{className:"flex justify-end gap-2 pt-2",children:[e.source==="dynamic"?t!=null&&t.editable?r.jsx("button",{type:"button",onClick:()=>s(e),className:"ui-button-default","data-testid":"scheduled-task-detail-edit",children:"编辑"}):r.jsx(Ve,{reason:t==null?void 0:t.reason,onGoEdit:()=>i(e),className:"inline-flex",buttonTestId:"scheduled-task-detail-go-edit",children:r.jsx("span",{className:"inline-flex",children:r.jsx("button",{type:"button",disabled:!0,"aria-disabled":"true",className:"ui-button-default cursor-not-allowed opacity-45","data-testid":"scheduled-task-detail-edit",children:"编辑"})})}):null,r.jsx("button",{type:"button",onClick:n,className:"ui-button-primary",children:"确定"})]})]}):null})}function or({task:e,isDeleting:t,sourceView:n,onClose:s,onConfirm:i}){return r.jsx(we,{open:!!e,onClose:()=>{t||s()},disableBackdropClose:t,title:r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx("svg",{className:"h-6 w-6 text-[#FAAD14]",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:r.jsx("path",{d:"M12.866 3.5a1 1 0 0 0-1.732 0l-8.25 14.5A1 1 0 0 0 3.75 19.5h16.5a1 1 0 0 0 .866-1.5l-8.25-14.5ZM12 8a1 1 0 0 1 1 1v4a1 1 0 1 1-2 0V9a1 1 0 0 1 1-1Zm0 9a1.25 1.25 0 1 1 0-2.5A1.25 1.25 0 0 1 12 17Z"})}),r.jsx("h3",{className:"text-[16px] font-bold text-gray-900",children:"确认删除任务"})]}),panelClassName:"w-[500px]",bodyClassName:"pt-5",children:r.jsxs("div",{className:"flex flex-col gap-5",children:[r.jsx("div",{className:"space-y-1",children:r.jsx("p",{className:"text-sm text-gray-600",children:n==="calendar"?"删除后,该任务在后续所有日期的计划都会一并删除,且不可恢复。":"删除后,该任务将不可恢复。"})}),r.jsxs("div",{className:"flex items-center justify-end gap-2",children:[r.jsx("button",{type:"button",onClick:s,disabled:t,className:"ui-button-default",children:"取消"}),r.jsx("button",{type:"button",onClick:i,disabled:t,className:"ui-button-primary",children:t?"删除中...":"删除"})]})]})})}const Q=["1","2","3","4","5","6","7"],lr=[{value:"1",label:"一"},{value:"2",label:"二"},{value:"3",label:"三"},{value:"4",label:"四"},{value:"5",label:"五"},{value:"6",label:"六"},{value:"7",label:"日"}],st=[{value:"hour",label:"小时"},{value:"minute",label:"分钟"},{value:"second",label:"秒"}],cr="mock-new-session-001",at=Array.from({length:24},(e,t)=>`${t}`.padStart(2,"0")),it=Array.from({length:60},(e,t)=>`${t}`.padStart(2,"0")),ot=112,lt=140,dr=24,W="h-7 rounded-[6px] border border-[rgba(194,194,194,1)] bg-white text-[14px] text-[#101828] transition hover:border-[rgba(194,194,194,1)]";function ct(e){return e?e.length===5?`${e}:00`:e:"00:00:00"}function pe(e){return e.length>=5?e.slice(0,5):e}function dt(e){const t=e.getFullYear(),n=`${e.getMonth()+1}`.padStart(2,"0"),s=`${e.getDate()}`.padStart(2,"0"),i=`${e.getHours()}`.padStart(2,"0"),o=`${e.getMinutes()}`.padStart(2,"0"),l=`${e.getSeconds()}`.padStart(2,"0");return`${t}-${n}-${s} ${i}:${o}:${l}`}function ut(e){return e?e.replace(/-/g,"/"):""}function ur(e){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return null;const[t,n,s]=e.split("-"),i=Number(t),o=Number(n),l=Number(s),a=new Date(i,o-1,l,12);return a.getFullYear()!==i||a.getMonth()!==o-1||a.getDate()!==l?null:a}function ve(e){const t=e.getFullYear(),n=`${e.getMonth()+1}`.padStart(2,"0"),s=`${e.getDate()}`.padStart(2,"0");return`${t}-${n}-${s}`}function ft(e,t){return new Date(e.getFullYear(),e.getMonth()+t,1,12)}function mt(e,t){return new Date(e.getFullYear()+t,e.getMonth(),1,12)}function fr(e){return`${e.getFullYear()}年 ${e.getMonth()+1}月`}function xe(e){const[t="00",n="00"]=pe(e||"00:00").split(":");return{hour:t,minute:n}}function pt(e,t){return`${e}:${t}`}function mr(e){if(!/^\d+$/.test(e.trim()))return null;const t=Number(e);return!Number.isInteger(t)||t<=0?null:t}function pr(e,t){const n=new Date(e);return t==="week"&&n.setDate(n.getDate()+7),t==="month"&&n.setMonth(n.getMonth()+1),t==="quarter"&&n.setMonth(n.getMonth()+3),t==="year"&&n.setFullYear(n.getFullYear()+1),n}function xr(e){if(!e)return;const t=new Date,n=pr(t,e);return{startTime:dt(t),endTime:dt(n)}}function ze(e){return[...e].sort((t,n)=>Number(t)-Number(n))}function Ut(e){return e==="existing"?"":cr}function hr(e,t,n){const[s,i]=p.useState("bottom"),[o,l]=p.useState(n.defaultPanelHeight),[a,c]=p.useState(n.defaultScrollableHeight);return p.useLayoutEffect(()=>{if(!e)return;const u=()=>{const d=t.current;if(!d)return;const m=d.getBoundingClientRect(),f=window.innerHeight,b=8,h=16,g=f-m.bottom-b-h,v=m.top-b-h,k=g<n.minimumPanelHeight&&v>g,y=Math.max(k?v:g,n.minimumPanelHeight);i(k?"top":"bottom"),l(Math.max(y,n.minimumPanelHeight)),c(Math.max(y-n.reservedHeight,n.minScrollableHeight))};return u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)},[t,e,n.defaultPanelHeight,n.defaultScrollableHeight,n.minScrollableHeight,n.minimumPanelHeight,n.reservedHeight]),{panelPlacement:s,panelMaxHeight:o,scrollableMaxHeight:a}}function gr(e,t,n,s){const[i,o]=p.useState(null),l=p.useCallback(()=>{if(!e)return;const a=t.current;if(!a)return;const c=a.getBoundingClientRect();o({top:n==="top"?c.top-8:c.bottom+8,left:c.left,width:s})},[t,e,n,s]);return p.useLayoutEffect(()=>{if(!e){o(null);return}l()},[e,l]),p.useEffect(()=>{if(!e)return;const a=()=>l();return window.addEventListener("resize",a),window.addEventListener("scroll",a,!0),()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",a,!0)}},[e,l]),i}function xt({value:e,onChange:t,testIdPrefix:n,isHourDisabled:s,isMinuteDisabled:i}){const[o,l]=p.useState(!1),[a,c]=p.useState(xe(e).hour),[u,d]=p.useState(xe(e).minute),m=p.useRef(null),f=p.useRef(null),{panelPlacement:b,panelMaxHeight:h,scrollableMaxHeight:g}=hr(o,m,{minimumPanelHeight:320,reservedHeight:188,minScrollableHeight:120,defaultPanelHeight:420,defaultScrollableHeight:220}),v=gr(o,m,b,320);p.useEffect(()=>{const x=xe(e);c(x.hour),d(x.minute)},[e]),p.useEffect(()=>{if(!o)return;const x=j=>{var N,C;const T=j.target;(N=m.current)!=null&&N.contains(T)||(C=f.current)!=null&&C.contains(T)||l(!1)};return document.addEventListener("mousedown",x),()=>document.removeEventListener("mousedown",x)},[o]);const k=p.useCallback(()=>at.find(x=>!((s==null?void 0:s(x))??!1))??"00",[s]),y=p.useCallback(x=>it.find(j=>!((i==null?void 0:i(x,j))??!1))??"00",[i]),w=p.useCallback((x,j)=>{let T=x;((s==null?void 0:s(T))??!1)&&(T=k());let N=j;return((i==null?void 0:i(T,N))??!1)&&(N=y(T)),{hour:T,minute:N}},[k,y,s,i]);return p.useEffect(()=>{if(!o)return;const x=w(a,u);x.hour!==a&&c(x.hour),x.minute!==u&&d(x.minute)},[a,u,w,o]),r.jsxs("div",{ref:m,className:"relative w-[214px]",children:[r.jsxs("button",{type:"button",onClick:()=>l(x=>!x),className:`flex w-full items-center justify-between px-3 text-[14px] ${W}`,"data-testid":`${n}-trigger`,children:[r.jsx("span",{className:e?"text-[#101828]":"text-[#98A2B3]",children:e||"00:00"}),r.jsx("img",{src:"../icons/schedule.svg",alt:"","aria-hidden":"true",className:"w-4 h-4 shrink-0"})]}),o&&v?ye.createPortal(r.jsx("div",{className:"fixed z-[70]",style:{top:v.top,left:v.left,width:v.width,transform:b==="top"?"translateY(-100%)":void 0},children:r.jsxs("div",{ref:f,className:["w-full rounded-[16px] border border-[rgba(194,194,194,1)] bg-white p-4 shadow-[0_12px_32px_rgba(16,24,40,0.14)]",b==="top"?"bottom-[calc(100%+8px)]":"top-[calc(100%+8px)]"].join(" "),style:{maxHeight:`${h}px`},"data-testid":`${n}-panel`,children:[r.jsxs("div",{className:`mb-4 flex items-center justify-between px-3 text-[14px] ${W}`,children:[r.jsx("span",{children:pt(a,u)}),r.jsx("img",{src:"../icons/schedule.svg",alt:"","aria-hidden":"true",className:"w-4 h-4 shrink-0"})]}),r.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[r.jsxs("div",{className:"flex min-w-0 flex-col",children:[r.jsx("div",{className:"mb-3 flex h-6 items-center justify-center text-[14px] font-normal text-[#98A2B3]",children:"时"}),r.jsx("div",{className:"space-y-2 overflow-y-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden",style:{maxHeight:`${g}px`},"data-testid":`${n}-hour-scroll`,children:at.map(x=>{const j=a===x,T=(s==null?void 0:s(x))??!1;return r.jsx("button",{type:"button",onClick:()=>{T||(c(x),((i==null?void 0:i(x,u))??!1)&&d(y(x)))},disabled:T,className:["flex h-10 w-full items-center justify-center rounded-full text-[14px] font-normal transition",T?"cursor-not-allowed text-[#D0D5DD]":j?"bg-[#DCEBFF] text-[#101828]":"text-[#344054] hover:bg-[#F2F4F7]"].join(" "),"data-testid":`${n}-hour-${x}`,children:x},x)})})]}),r.jsxs("div",{className:"flex min-w-0 flex-col",children:[r.jsx("div",{className:"mb-3 flex h-6 items-center justify-center text-[14px] font-normal text-[#98A2B3]",children:"分"}),r.jsx("div",{className:"space-y-2 overflow-y-auto [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden",style:{maxHeight:`${g}px`},"data-testid":`${n}-minute-scroll`,children:it.map(x=>{const j=u===x,T=(i==null?void 0:i(a,x))??!1;return r.jsx("button",{type:"button",onClick:()=>{T||d(x)},disabled:T,className:["flex h-10 w-full items-center justify-center rounded-full text-[14px] font-normal transition",T?"cursor-not-allowed text-[#D0D5DD]":j?"bg-[#DCEBFF] text-[#101828]":"text-[#344054] hover:bg-[#F2F4F7]"].join(" "),"data-testid":`${n}-minute-${x}`,children:x},x)})})]})]}),r.jsx("div",{className:"mt-4 flex justify-end border-t border-[rgba(194,194,194,1)] pt-4",children:r.jsx("button",{type:"button",onClick:()=>{const x=w(a,u);c(x.hour),d(x.minute),t(pt(x.hour,x.minute)),l(!1)},className:"inline-flex h-10 items-center justify-center rounded-full border border-[rgba(194,194,194,1)] px-6 text-[14px] font-normal text-[#101828]","data-testid":`${n}-confirm`,children:"确定"})})]})}),document.body):null]})}const br=["日","一","二","三","四","五","六"];function vr(e,t){const n=new Date(e.getFullYear(),e.getMonth(),1,12),s=new Date(n);s.setDate(n.getDate()-n.getDay());const i=ve(new Date);return Array.from({length:42},(o,l)=>{const a=new Date(s);a.setDate(s.getDate()+l);const c=ve(a);return{date:a,value:c,label:`${a.getDate()}`,currentMonth:a.getMonth()===e.getMonth(),selected:c===t,disabled:c<i}})}function yr({value:e,onChange:t}){const[n,s]=p.useState(!1),i=p.useRef(null),o=p.useRef(null),[l,a]=p.useState("bottom"),[c,u]=p.useState(560),[d,m]=p.useState(336),f=p.useMemo(()=>ur(e),[e]),[b,h]=p.useState(()=>f??new Date),g=p.useMemo(()=>vr(b,e),[b,e]),[v,k]=p.useState(null),y=p.useCallback(()=>{if(!n)return;const w=i.current;if(!w)return;const x=w.getBoundingClientRect();k({top:l==="top"?x.top-8:x.bottom+8,left:x.left,width:x.width})},[n,l]);return p.useLayoutEffect(()=>{if(!n){k(null);return}y()},[n,y]),p.useEffect(()=>{if(!n)return;const w=()=>y();return window.addEventListener("resize",w),window.addEventListener("scroll",w,!0),()=>{window.removeEventListener("resize",w),window.removeEventListener("scroll",w,!0)}},[n,y]),p.useEffect(()=>{if(!n)return;const w=x=>{var T,N;const j=x.target;(T=i.current)!=null&&T.contains(j)||(N=o.current)!=null&&N.contains(j)||s(!1)};return document.addEventListener("mousedown",w),()=>document.removeEventListener("mousedown",w)},[n]),p.useEffect(()=>{n&&h(f??new Date)},[n,f]),p.useLayoutEffect(()=>{if(!n)return;const w=()=>{const x=i.current;if(!x)return;const j=x.getBoundingClientRect(),T=window.innerHeight,N=8,C=16,E=320,I=224,A=T-j.bottom-N-C,D=j.top-N-C,S=A<E&&D>A,P=Math.max(S?D:A,E);a(S?"top":"bottom"),u(Math.max(P,E)),m(Math.max(P-I,144))};return w(),window.addEventListener("resize",w),()=>window.removeEventListener("resize",w)},[n]),r.jsxs("div",{ref:i,className:"relative w-[214px]",children:[r.jsxs("button",{type:"button",onClick:()=>s(w=>!w),className:`relative flex w-full items-center px-3 pr-11 text-left text-[14px] ${W}`,"data-testid":"schedule-editor-once-date-trigger",children:[r.jsx("span",{className:e?"text-[#101828]":"text-[#98A2B3]",children:e?ut(e):"YYYY/MM/DD"}),r.jsx("span",{className:"pointer-events-none absolute right-4 top-1/2 -translate-y-1/2 text-[#98A2B3]","aria-hidden":"true",children:r.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:r.jsx("path",{d:"M5.333 1.667V3M10.667 1.667V3M2.333 5H13.667M3.667 2.333H12.333C13.07 2.333 13.667 2.93 13.667 3.667V12.333C13.667 13.07 13.07 13.667 12.333 13.667H3.667C2.93 13.667 2.333 13.07 2.333 12.333V3.667C2.333 2.93 2.93 2.333 3.667 2.333Z",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),n&&v?ye.createPortal(r.jsx("div",{className:"fixed z-[70]",style:{top:v.top,left:v.left,width:v.width,minWidth:"340px",transform:l==="top"?"translateY(-100%)":void 0},children:r.jsxs("div",{ref:o,className:["w-full overflow-hidden rounded-[16px] border border-[rgba(194,194,194,1)] bg-white shadow-[0_12px_32px_rgba(16,24,40,0.14)]",l==="top"?"bottom-[calc(100%+8px)]":"top-[calc(100%+8px)]"].join(" "),style:{maxHeight:`${c}px`},"data-testid":"schedule-editor-once-date-panel",children:[r.jsx("div",{className:"p-6 pb-5",children:r.jsx("div",{className:`flex items-center px-3 text-[14px] text-[#98A2B3] ${W}`,children:e?ut(e):"YYYY/MM/DD"})}),r.jsxs("div",{className:"flex items-center justify-between border-b border-[rgba(194,194,194,1)] px-6 pb-5",children:[r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx("button",{type:"button",onClick:()=>h(w=>mt(w,-1)),className:"inline-flex h-9 w-9 items-center justify-center rounded-[6px] text-[22px] leading-none text-[#98A2B3] transition hover:bg-[#F9FAFB] hover:text-[#667085]","data-testid":"schedule-editor-once-date-prev-year",children:r.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none","aria-hidden":"true",children:[r.jsx("path",{d:"M11.25 4.5L6.75 9L11.25 13.5",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"}),r.jsx("path",{d:"M15 4.5L10.5 9L15 13.5",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})]})}),r.jsx("button",{type:"button",onClick:()=>h(w=>ft(w,-1)),className:"inline-flex h-9 w-9 items-center justify-center rounded-[6px] text-[22px] leading-none text-[#98A2B3] transition hover:bg-[#F9FAFB] hover:text-[#667085]","data-testid":"schedule-editor-once-date-prev-month",children:r.jsx("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none","aria-hidden":"true",children:r.jsx("path",{d:"M11.25 4.5L6.75 9L11.25 13.5",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),r.jsx("div",{className:"text-[16px] font-normal text-[#101828]","data-testid":"schedule-editor-once-date-month-label",children:fr(b)}),r.jsxs("div",{className:"flex items-center gap-2",children:[r.jsx("button",{type:"button",onClick:()=>h(w=>ft(w,1)),className:"inline-flex h-9 w-9 items-center justify-center rounded-[6px] text-[22px] leading-none text-[#98A2B3] transition hover:bg-[#F9FAFB] hover:text-[#667085]","data-testid":"schedule-editor-once-date-next-month",children:r.jsx("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none","aria-hidden":"true",children:r.jsx("path",{d:"M6.75 4.5L11.25 9L6.75 13.5",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})})}),r.jsx("button",{type:"button",onClick:()=>h(w=>mt(w,1)),className:"inline-flex h-9 w-9 items-center justify-center rounded-[6px] text-[22px] leading-none text-[#98A2B3] transition hover:bg-[#F9FAFB] hover:text-[#667085]","data-testid":"schedule-editor-once-date-next-year",children:r.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none","aria-hidden":"true",children:[r.jsx("path",{d:"M3 4.5L7.5 9L3 13.5",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"}),r.jsx("path",{d:"M6.75 4.5L11.25 9L6.75 13.5",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})]})})]})]}),r.jsxs("div",{className:"px-6 py-5",children:[r.jsx("div",{className:"mb-4 grid grid-cols-7 text-center text-[14px] text-[#98A2B3]",children:br.map(w=>r.jsx("span",{className:"flex h-10 items-center justify-center",children:w},w))}),r.jsx("div",{className:"overflow-y-auto pr-1",style:{maxHeight:`${d}px`},"data-testid":"schedule-editor-once-date-grid-scroll",children:r.jsx("div",{className:"grid grid-cols-7 gap-y-4",children:g.map(w=>r.jsx("button",{type:"button",onClick:()=>{w.disabled||(t(w.value),s(!1))},disabled:w.disabled,className:"flex h-14 items-center justify-center disabled:cursor-not-allowed","data-testid":`schedule-editor-once-date-day-${w.value}`,children:r.jsx("span",{className:["inline-flex h-10 w-10 items-center justify-center rounded-[6px] border text-[14px] transition",w.disabled?"border-transparent text-[#D0D5DD]":w.selected?"border-[1.5px] border-[rgba(20,118,255,1)] text-[#101828]":w.currentMonth?"border-transparent text-[#101828] hover:bg-[#F9FAFB]":"border-transparent text-[#98A2B3] hover:bg-[#F9FAFB]"].join(" "),children:w.label})},w.value))})})]})]})}),document.body):null]})}function Bt({value:e,placeholder:t,onClick:n,testId:s}){return r.jsxs("button",{type:"button",onClick:n,className:`relative flex w-full items-center justify-between overflow-hidden px-3 text-left outline-none before:pointer-events-none before:absolute before:right-3 before:top-1/2 before:h-5 before:w-5 before:-translate-y-1/2 before:bg-white before:content-[''] after:pointer-events-none after:absolute after:right-[18px] after:top-1/2 after:h-[7px] after:w-[7px] after:-translate-y-[62%] after:rotate-45 after:border-b-[1.6px] after:border-r-[1.6px] after:border-[#98A2B3] after:content-[''] ${W}`,"data-testid":s,children:[r.jsx("span",{className:`min-w-0 block truncate whitespace-nowrap ${e?"text-[#101828]":"text-[#98A2B3]"}`,children:e||t}),r.jsx("span",{className:"text-[#98A2B3]","aria-hidden":"true"})]})}function wr(e,t,n){const[s,i]=p.useState("bottom"),[o,l]=p.useState(n.defaultPanelHeight),[a,c]=p.useState(n.defaultScrollableHeight);return p.useLayoutEffect(()=>{if(!e)return;const u=()=>{const d=t.current;if(!d)return;const m=d.getBoundingClientRect(),f=window.innerHeight,b=8,h=16,g=f-m.bottom-b-h,v=m.top-b-h,k=g<n.minimumPanelHeight&&v>g,y=Math.max(k?v:g,n.minimumPanelHeight);i(k?"top":"bottom"),l(Math.max(y,n.minimumPanelHeight)),c(Math.max(y-n.reservedHeight,n.minScrollableHeight))};return u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)},[t,e,n.defaultPanelHeight,n.defaultScrollableHeight,n.minScrollableHeight,n.minimumPanelHeight,n.reservedHeight]),{panelPlacement:s,panelMaxHeight:o,scrollableMaxHeight:a}}function Nr(e,t,n,s){const[i,o]=p.useState(null),l=p.useCallback(()=>{if(!e)return;const a=t.current;if(!a)return;const c=a.getBoundingClientRect();o({top:n==="top"?c.top-8:c.bottom+8,left:c.left,width:c.width})},[t,e,n,s]);return p.useLayoutEffect(()=>{if(!e){o(null);return}l()},[e,l]),p.useEffect(()=>{if(!e)return;const a=()=>l();return window.addEventListener("resize",a),window.addEventListener("scroll",a,!0),()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",a,!0)}},[e,l]),i}function kr({value:e,onChange:t}){var m;const[n,s]=p.useState(!1),i=p.useRef(null),o=p.useRef(null),{panelPlacement:l,panelMaxHeight:a,scrollableMaxHeight:c}=wr(n,i,{minimumPanelHeight:160,reservedHeight:16,minScrollableHeight:120,defaultPanelHeight:240,defaultScrollableHeight:224}),u=Nr(n,i,l),d=((m=st.find(f=>f.value===e))==null?void 0:m.label)??"";return p.useEffect(()=>{if(!n)return;const f=b=>{var g,v;const h=b.target;(g=i.current)!=null&&g.contains(h)||(v=o.current)!=null&&v.contains(h)||s(!1)};return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[n]),r.jsxs("div",{ref:i,className:"relative w-[132px]",children:[r.jsx(Bt,{value:d,placeholder:"",onClick:()=>s(f=>!f),testId:"schedule-editor-interval-unit"}),n&&u?ye.createPortal(r.jsx("div",{className:"fixed z-[70]",style:{top:u.top,left:u.left,width:u.width,transform:l==="top"?"translateY(-100%)":void 0},children:r.jsx("div",{ref:o,className:["w-full rounded-[12px] border border-[rgba(194,194,194,1)] bg-white p-2 shadow-[0_12px_32px_rgba(16,24,40,0.12)]",l==="top"?"bottom-[calc(100%+8px)]":"top-[calc(100%+8px)]"].join(" "),style:{maxHeight:`${a}px`},"data-testid":"schedule-editor-interval-unit-panel",children:r.jsx("div",{style:{maxHeight:`${c}px`},className:"overflow-y-auto","data-testid":"schedule-editor-interval-unit-scroll",children:st.map(f=>r.jsx("button",{type:"button",onClick:()=>{t(f.value),s(!1)},className:"flex h-10 w-full items-center rounded-[10px] px-3 text-left text-[14px] text-[#101828] hover:bg-[#F9FAFB]","data-testid":`schedule-editor-interval-unit-option-${f.value}`,children:f.label},f.value))})})}),document.body):null]})}function ht(e){const t=e==null?void 0:e.trim();return t?t.startsWith("/uploads/")?`${Gt}${t}`:t:null}function jr(e,t,n){const[s,i]=p.useState("bottom"),[o,l]=p.useState(n.defaultPanelHeight),[a,c]=p.useState(n.defaultScrollableHeight);return p.useLayoutEffect(()=>{if(!e)return;const u=()=>{const d=t.current;if(!d)return;const m=d.getBoundingClientRect(),f=window.innerHeight,b=8,h=16,g=f-m.bottom-b-h,v=m.top-b-h,k=g<n.minimumPanelHeight&&v>g,y=Math.max(k?v:g,n.minimumPanelHeight);i(k?"top":"bottom"),l(Math.max(y,n.minimumPanelHeight)),c(Math.max(y-n.reservedHeight,n.minScrollableHeight))};return u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)},[t,e,n.defaultPanelHeight,n.defaultScrollableHeight,n.minScrollableHeight,n.minimumPanelHeight,n.reservedHeight]),{panelPlacement:s,panelMaxHeight:o,scrollableMaxHeight:a}}function Tr({value:e,onChange:t,options:n,loading:s,hasError:i}){var x,j,T;const[o,l]=p.useState(!1),[a,c]=p.useState(null),u=((x=n.find(N=>N.value===e))==null?void 0:x.label)??"",d=p.useRef(null),m=p.useRef(null),{agents:f}=Jt(),{panelPlacement:b,panelMaxHeight:h,scrollableMaxHeight:g}=jr(o,d,{minimumPanelHeight:180,reservedHeight:16,minScrollableHeight:120,defaultPanelHeight:280,defaultScrollableHeight:264}),v=p.useCallback(()=>{if(!o)return;const N=d.current;if(!N)return;const C=N.getBoundingClientRect();c({top:b==="top"?C.top-8:C.bottom+8,left:C.left,width:C.width})},[o,b]);p.useLayoutEffect(()=>{if(!o){c(null);return}v()},[o,v]),p.useEffect(()=>{if(!o)return;const N=()=>v();return window.addEventListener("resize",N),window.addEventListener("scroll",N,!0),()=>{window.removeEventListener("resize",N),window.removeEventListener("scroll",N,!0)}},[o,v]),p.useEffect(()=>{if(!o)return;const N=C=>{var I,A;const E=C.target;(I=d.current)!=null&&I.contains(E)||(A=m.current)!=null&&A.contains(E)||l(!1)};return document.addEventListener("mousedown",N),()=>document.removeEventListener("mousedown",N)},[o]);const k=p.useMemo(()=>new Map(f.map(N=>[N.id,N])),[f]),y=ht(((j=f.find(N=>N.id.toLowerCase()==="office"))==null?void 0:j.avatar)??((T=f.find(N=>N.id.toLowerCase()==="jiuwenclaw"))==null?void 0:T.avatar))??"/avatars/assistant.svg",w=p.useMemo(()=>n.map(N=>{const C=Array.isArray(N.participants)?N.participants:[],E=C.map(D=>{var S;return((S=k.get(D))==null?void 0:S.displayName)??D}).filter(D=>!!D.trim()),I=E.length>0?E.join(","):"通用助手",A=C.slice(0,4).map(D=>{var S;return ht((S=k.get(D))==null?void 0:S.avatar)??y});return{...N,subtitle:I,avatarSources:A,timeText:Qt(Number(N.lastActiveAt)||0,!0)}}),[k,y,n]);return r.jsxs("div",{ref:d,className:"relative",children:[r.jsx(Bt,{value:u,placeholder:"请选择",onClick:()=>l(N=>!N),testId:"schedule-editor-session-select"}),o&&a?ye.createPortal(r.jsx("div",{className:"fixed z-[70]",style:{top:a.top,left:a.left,width:a.width,transform:b==="top"?"translateY(-100%)":void 0},children:r.jsxs("div",{ref:m,className:["w-full rounded-[12px] border border-[rgba(194,194,194,1)] bg-white p-2 shadow-[0_12px_32px_rgba(16,24,40,0.12)]",b==="top"?"bottom-[calc(100%+8px)]":"top-[calc(100%+8px)]"].join(" "),style:{maxHeight:`${h}px`},"data-testid":"schedule-editor-session-panel",children:[s?r.jsx("div",{className:"px-3 py-2 text-[14px] text-[#667085]",children:"加载中..."}):null,!s&&i?r.jsx("div",{className:"px-3 py-2 text-[14px] text-[#667085]",children:"加载失败"}):null,!s&&!i&&n.length===0?r.jsx("div",{className:"px-3 py-2 text-[14px] text-[#667085]",children:"暂无会话"}):null,r.jsx("div",{style:{maxHeight:`${g}px`},className:"overflow-y-auto","data-testid":"schedule-editor-session-scroll",children:!s&&!i?w.map(N=>{const C=N.value===e;return r.jsxs("button",{type:"button",onClick:()=>{t(N.value),l(!1)},className:["flex w-full items-center gap-2 rounded-[8px] px-2 py-2 text-left transition",C?"bg-[#DCEBFF]":"hover:bg-[#F9FAFB]"].join(" "),"data-testid":`schedule-editor-session-option-${N.value}`,children:[r.jsx("div",{className:"relative h-8 w-8 shrink-0",children:N.avatarSources.length<=1?r.jsx("img",{src:N.avatarSources[0]??y,alt:"","aria-hidden":"true",className:"h-8 w-8 rounded-full object-cover"}):N.avatarSources.length===2?r.jsxs(r.Fragment,{children:[r.jsx("img",{src:N.avatarSources[0]??y,alt:"","aria-hidden":"true",className:"absolute left-[1px] top-[6px] h-5 w-5 rounded-full object-cover"}),r.jsx("img",{src:N.avatarSources[1]??y,alt:"","aria-hidden":"true",className:"absolute left-[11px] top-[6px] h-5 w-5 rounded-full object-cover"})]}):N.avatarSources.length===3?r.jsxs(r.Fragment,{children:[r.jsx("img",{src:N.avatarSources[0]??y,alt:"","aria-hidden":"true",className:"absolute left-[8px] top-0 h-4 w-4 rounded-full object-cover"}),r.jsx("img",{src:N.avatarSources[1]??y,alt:"","aria-hidden":"true",className:"absolute left-0 top-[16px] h-4 w-4 rounded-full object-cover"}),r.jsx("img",{src:N.avatarSources[2]??y,alt:"","aria-hidden":"true",className:"absolute left-[16px] top-[16px] h-4 w-4 rounded-full object-cover"})]}):r.jsxs(r.Fragment,{children:[r.jsx("img",{src:N.avatarSources[0]??y,alt:"","aria-hidden":"true",className:"absolute left-0 top-0 h-4 w-4 rounded-full object-cover"}),r.jsx("img",{src:N.avatarSources[1]??y,alt:"","aria-hidden":"true",className:"absolute left-[16px] top-0 h-4 w-4 rounded-full object-cover"}),r.jsx("img",{src:N.avatarSources[2]??y,alt:"","aria-hidden":"true",className:"absolute left-0 top-[16px] h-4 w-4 rounded-full object-cover"}),r.jsx("img",{src:N.avatarSources[3]??y,alt:"","aria-hidden":"true",className:"absolute left-[16px] top-[16px] h-4 w-4 rounded-full object-cover"})]})}),r.jsxs("div",{className:"min-w-0 flex-1",children:[r.jsxs("div",{className:"flex items-center justify-between gap-2",children:[r.jsx("span",{className:"block min-w-0 truncate text-[14px] font-semibold leading-5 text-[#344054]","data-testid":`schedule-editor-session-option-title-${N.value}`,children:N.label}),r.jsx("span",{className:"shrink-0 text-[14px] leading-5 text-[#344054]",children:N.timeText})]}),r.jsx("div",{className:"mt-1 truncate text-[12px] leading-5 text-[#667085]",children:N.subtitle})]})]},N.value)}):null})]})}),document.body):null]})}function gt(e){if(!e)return{source:"custom",taskName:"",prompt:"",frequencyMode:"daily",time:"",intervalValue:"1",intervalUnit:"minute",onceDate:"",onceTime:"",weekdays:[...Q],effectivePreset:"",sessionMode:"existing",sessionId:Ut("existing"),enabled:!0};const t={source:e.source,templateId:e.templateId,taskName:e.taskName,prompt:e.prompt,frequencyMode:"daily",time:"",intervalValue:"1",intervalUnit:"minute",onceDate:"",onceTime:"",weekdays:[...Q],effectivePreset:"",sessionMode:"existing",sessionId:e.sessionId??"",enabled:e.enabled};if((e.sessionId??"").startsWith("mock-new-session")&&(t.sessionMode="new"),e.frequency.type==="daily"&&(t.frequencyMode="daily",t.time=pe(e.frequency.time),t.weekdays=[...Q]),e.frequency.type==="weekday"&&(t.frequencyMode="daily",t.time=pe(e.frequency.time),t.weekdays=ze(e.frequency.weekdays)),e.frequency.type==="interval"&&(t.frequencyMode="interval",t.intervalValue=`${e.frequency.interval}`,t.intervalUnit=e.frequency.unit),e.frequency.type==="once"){const[n="",s=""]=e.frequency.executeTime.split(" ");t.frequencyMode="once",t.onceDate=n,t.onceTime=pe(s)}return t}function Cr(e){const t=ct(e.time),n=e.frequencyMode==="once"?void 0:xr(e.effectivePreset);if(e.frequencyMode==="interval")return{source:e.source,...e.templateId?{templateId:e.templateId}:{},taskName:e.taskName.trim(),prompt:e.prompt.trim(),frequency:{type:"interval",interval:Number(e.intervalValue),unit:e.intervalUnit},enabled:e.enabled,...n?{effectiveTime:n}:{},sessionId:e.sessionId};if(e.frequencyMode==="once")return{source:e.source,...e.templateId?{templateId:e.templateId}:{},taskName:e.taskName.trim(),prompt:e.prompt.trim(),frequency:{type:"once",executeTime:`${e.onceDate} ${ct(e.onceTime)}`},enabled:e.enabled,sessionId:e.sessionId};const s=ze(e.weekdays),i=s.length===Q.length?{type:"daily",time:t}:{type:"weekday",time:t,weekdays:s};return{source:e.source,...e.templateId?{templateId:e.templateId}:{},taskName:e.taskName.trim(),prompt:e.prompt.trim(),frequency:i,enabled:e.enabled,...n?{effectiveTime:n}:{},sessionId:e.sessionId}}function $r(e){const[t,n]=p.useState(()=>gt(e)),s=p.useCallback(a=>{n(gt(a))},[]),i=p.useCallback(a=>{n(c=>{const u=c.weekdays.includes(a);return u&&c.weekdays.length===1?c:{...c,weekdays:u?c.weekdays.filter(d=>d!==a):ze([...c.weekdays,a])}})},[]),o=p.useCallback(a=>{n(c=>a==="daily"?{...c,frequencyMode:"daily",weekdays:c.weekdays.length>0?c.weekdays:[...Q]}:{...c,frequencyMode:a})},[]),l=p.useCallback(a=>{n(c=>({...c,sessionMode:a,sessionId:Ut(a)}))},[]);return{editorState:t,setEditorState:n,resetEditorState:s,handleWeekdayToggle:i,handleFrequencyModeChange:o,handleSessionModeChange:l}}function Er(e){if(!e.taskName.trim()||!e.prompt.trim()||!e.sessionId)return!1;if(e.frequencyMode==="daily")return e.weekdays.length>0&&!!e.time;if(e.frequencyMode==="interval"){const a=mr(e.intervalValue);return a!==null&&Nt(a,e.intervalUnit)>=1e4}if(!e.onceDate||!e.onceTime)return!1;const t=new Date,n=ve(t);if(e.onceDate<n)return!1;if(e.onceDate>n)return!0;const{hour:s,minute:i}=xe(e.onceTime),o=`${t.getHours()}`.padStart(2,"0"),l=`${t.getMinutes()}`.padStart(2,"0");return s>o||s===o&&i>=l}function Ir(e){const[t,n]=p.useState([]),[s,i]=p.useState(!1),[o,l]=p.useState(!1),a=p.useCallback(async()=>{i(!0),l(!1);try{const c=await F("/api/threads");if(!c.ok)throw new Error("failed_to_load_threads");const u=await c.json();n((u.threads??[]).filter(d=>d.id!=="default").map(d=>({value:d.id,label:Xt(d.title)??"未命名对话",participants:Array.isArray(d.participants)?d.participants:[],lastActiveAt:d.lastActiveAt??0})))}catch{n([]),l(!0)}finally{i(!1)}},[]);return p.useEffect(()=>e?((async()=>{await a()})(),()=>{}):void 0,[e,a]),{sessionOptions:t,sessionsLoading:s,sessionsError:o,reloadSessions:a}}function Mr({open:e,draft:t,title:n="创建定时任务",onClose:s,onConfirm:i}){const{editorState:o,setEditorState:l,resetEditorState:a,handleWeekdayToggle:c,handleFrequencyModeChange:u,handleSessionModeChange:d}=$r(t),[m,f]=p.useState(lt),[b,h]=p.useState(!1),{sessionOptions:g,sessionsLoading:v,sessionsError:k}=Ir(e),y=Er(o);p.useEffect(()=>{e&&(a(t),f(lt),h(!1))},[t,e,a]);const w=p.useCallback(async()=>{if(y&&!b){h(!0);try{await i(Cr(o))}finally{h(!1)}}},[y,b,i,o]),x=p.useCallback(j=>{j.preventDefault();const T=j.clientY,N=m,C=I=>{const A=N+(I.clientY-T);f(Math.max(ot,A))},E=()=>{document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",E)};document.addEventListener("mousemove",C),document.addEventListener("mouseup",E)},[m]);return r.jsxs(we,{open:e,onClose:s,title:n,panelClassName:"w-[550px] max-h-[calc(100vh-4rem)] overflow-hidden",bodyClassName:"flex min-h-0 flex-1 flex-col overflow-hidden pt-4",panelTestId:"schedule-task-editor-modal",bodyTestId:"schedule-task-editor-modal-body",children:[r.jsxs("div",{className:"min-h-0 flex-1 space-y-5 overflow-y-auto",children:[r.jsxs("div",{children:[r.jsx("label",{className:"mb-2 block text-[14px] font-normal leading-5 text-[#101828]",children:"名称"}),r.jsx("input",{type:"text",value:o.taskName,maxLength:64,onChange:j=>l(T=>({...T,taskName:j.target.value})),className:`w-full px-3 outline-none focus:border-[#4C8DFF] ${W}`,"data-testid":"schedule-editor-task-name"})]}),r.jsxs("div",{children:[r.jsx("label",{className:"mb-2 block text-[14px] font-normal leading-5 text-[#101828]",children:"提示词"}),r.jsxs("div",{className:"relative rounded-[6px] border border-[rgba(194,194,194,1)] bg-white transition focus-within:border-[rgba(20,118,255,1)]","data-testid":"schedule-editor-prompt-container",children:[r.jsx("textarea",{value:o.prompt,maxLength:1e3,onChange:j=>l(T=>({...T,prompt:j.target.value})),className:"w-full resize-none border-0 bg-transparent px-3 pt-3 text-[14px] leading-6 text-[#101828] outline-none",style:{height:`${m}px`,minHeight:`${ot}px`,paddingBottom:`${dr+12}px`,paddingRight:"24px"},"data-testid":"schedule-editor-prompt"}),r.jsxs("div",{className:"absolute inset-x-0 bottom-0 flex h-6 items-center justify-end gap-2 rounded-b-[6px] bg-white px-3 pr-3 text-[12px] leading-none text-[#667085]",children:[r.jsxs("span",{"data-testid":"schedule-editor-prompt-count",children:[o.prompt.length,"/1000"]}),r.jsx("button",{type:"button",onMouseDown:x,className:"flex h-4 w-4 cursor-nwse-resize items-end justify-end text-[#667085]","data-testid":"schedule-editor-prompt-resize-handle","aria-label":"调整提示词输入框高度",children:r.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",children:[r.jsx("path",{d:"M4 10L10 4",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"}),r.jsx("path",{d:"M7 10L10 7",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})]})})]})]})]}),r.jsx(Dr,{editorState:o,onFrequencyModeChange:u,onWeekdayToggle:c,setEditorState:l}),null,r.jsx(Ar,{editorState:o,onSessionModeChange:d,setEditorState:l,sessionOptions:g,sessionsLoading:v,sessionsError:k})]}),r.jsxs("div",{className:"flex shrink-0 items-center justify-end gap-3 pt-5",children:[r.jsx(he,{variant:"default",onClick:s,"data-testid":"schedule-editor-cancel",children:"取消"}),r.jsx(he,{variant:"major",onClick:w,disabled:!y||b,"data-testid":"schedule-editor-confirm",children:"确定"})]})]})}function Dr({editorState:e,onFrequencyModeChange:t,onWeekdayToggle:n,setEditorState:s}){const i=ve(new Date),o=e.onceDate===i,l=`${new Date().getHours()}`.padStart(2,"0"),a=`${new Date().getMinutes()}`.padStart(2,"0");return r.jsxs("div",{children:[r.jsx("div",{className:"mb-2 block text-[14px] font-normal leading-5 text-[#101828]",children:"执行频率"}),r.jsx("div",{className:"flex flex-wrap gap-3",children:[{value:"daily",label:"重复"},{value:"interval",label:"按间隔"},{value:"once",label:"单次"}].map(c=>{const u=e.frequencyMode===c.value;return r.jsx("button",{type:"button",onClick:()=>t(c.value),className:["inline-flex items-center justify-center rounded-[6px] border px-6 py-[5px] text-[14px] font-normal transition",u?"border-[1.5px] border-[rgba(20,118,255,1)] bg-[rgba(240,247,255,1)] text-[rgba(25,25,25,1)]":"border-[rgba(194,194,194,1)] text-[rgba(89,89,89,1)]"].join(" "),"data-testid":`schedule-editor-frequency-${c.value}`,children:c.label},c.value)})}),e.frequencyMode==="daily"?r.jsxs("div",{className:"mt-3 flex items-start gap-3",children:[r.jsx(xt,{value:e.time,onChange:c=>s(u=>({...u,time:c})),testIdPrefix:"schedule-editor-daily-time"}),r.jsx("div",{className:"flex min-w-0 flex-1 gap-2",children:lr.map(c=>{const u=e.weekdays.includes(c.value);return r.jsx("button",{type:"button",onClick:()=>n(c.value),className:["inline-flex h-7 w-10 items-center justify-center rounded-[6px] border text-[14px] font-normal transition",u?"border-[1.5px] border-[rgba(20,118,255,1)] bg-[rgba(240,247,255,1)] text-[rgba(25,25,25,1)]":"border-[rgba(194,194,194,1)] text-[rgba(89,89,89,1)]"].join(" "),"data-testid":`schedule-editor-weekday-${c.value}`,children:c.label},c.value)})})]}):null,e.frequencyMode==="interval"?r.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[r.jsx("span",{className:"text-[14px] leading-5 text-[#344054]",children:"每隔"}),r.jsx("input",{type:"number",min:"1",step:"1",inputMode:"numeric",value:e.intervalValue,onChange:c=>s(u=>({...u,intervalValue:c.target.value})),className:`w-[132px] px-3 outline-none focus:border-[rgba(20,118,255,1)] ${W}`,"data-testid":"schedule-editor-interval-value"}),r.jsx(kr,{value:e.intervalUnit,onChange:c=>s(u=>({...u,intervalUnit:c}))})]}):null,e.frequencyMode==="once"?r.jsxs("div",{className:"mt-3 flex flex-col gap-3 sm:flex-row sm:items-start",children:[r.jsx("div",{className:"shrink-0",children:r.jsx(yr,{value:e.onceDate,onChange:c=>s(u=>({...u,onceDate:c}))})}),r.jsx("div",{className:"shrink-0",children:r.jsx(xt,{value:e.onceTime,onChange:c=>s(u=>({...u,onceTime:c})),testIdPrefix:"schedule-editor-once-time",isHourDisabled:c=>o&&c<l,isMinuteDisabled:(c,u)=>o&&c===l&&u<a})})]}):null]})}function Ar({editorState:e,onSessionModeChange:t,setEditorState:n,sessionOptions:s,sessionsLoading:i,sessionsError:o}){return r.jsxs("div",{children:[r.jsx("div",{className:"mb-2 block text-[14px] font-normal leading-5 text-[#101828]",children:"选择会话"}),r.jsxs("div",{className:"flex flex-wrap gap-3",children:[r.jsx("button",{type:"button",onClick:()=>t("existing"),className:["inline-flex items-center justify-center rounded-[6px] border px-6 py-[5px] text-[14px] font-normal transition",e.sessionMode==="existing"?"border-[1.5px] border-[rgba(20,118,255,1)] bg-[rgba(240,247,255,1)] text-[rgba(25,25,25,1)]":"border-[rgba(194,194,194,1)] text-[rgba(89,89,89,1)]"].join(" "),"data-testid":"schedule-editor-session-existing",children:"选择已有会话"}),r.jsx("button",{type:"button",onClick:()=>t("new"),className:["inline-flex items-center justify-center rounded-[6px] border px-6 py-[5px] text-[14px] font-normal transition",e.sessionMode==="new"?"border-[1.5px] border-[rgba(20,118,255,1)] bg-[rgba(240,247,255,1)] text-[rgba(25,25,25,1)]":"border-[rgba(194,194,194,1)] text-[rgba(89,89,89,1)]"].join(" "),"data-testid":"schedule-editor-session-new",children:"新建会话"})]}),e.sessionMode==="existing"?r.jsx("div",{className:"mt-3",children:r.jsx(Tr,{value:e.sessionId,onChange:l=>n(a=>({...a,sessionId:l})),options:s,loading:i,hasError:o})}):null]})}function Sr(e,t){return e===t}function Fr({open:e,templates:t,selectedTemplateId:n,loading:s=!1,onClose:i,onSelect:o,onConfirm:l}){return r.jsx(we,{open:e,onClose:i,title:"选择模板",panelClassName:"w-[680px] max-w-[92vw]",bodyClassName:"p-0",panelTestId:"schedule-template-modal",bodyTestId:"schedule-template-modal-body",children:s?r.jsx("div",{className:"flex h-[420px] items-center justify-center text-[13px] text-[var(--text-secondary)]","data-testid":"schedule-template-loading",children:"正在加载模板..."}):r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"grid max-h-[420px] grid-cols-2 justify-center gap-4 overflow-y-auto pr-1","data-testid":"schedule-template-grid",children:t.map(a=>{const c=Sr(n,a.id);return r.jsxs("button",{type:"button",className:["flex h-[74px] w-[300px] items-center gap-3 rounded-[8px] border bg-[rgba(250,250,250,1)] px-4 text-left transition",c?"border-[1.5px] border-[rgba(20,118,255,1)] bg-[rgba(240,247,255,1)]":"border-[1px] border-[rgba(194,194,194,1)] hover:border-[rgba(20,118,255,1)]"].join(" "),onClick:()=>o(a.id),"aria-pressed":c,"data-testid":`schedule-template-option-${a.id}`,children:[r.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-[8px] bg-[#F5F7FA]",children:r.jsx("img",{src:"/icons/schedule.svg",alt:"","aria-hidden":"true",className:"h-4 w-4 shrink-0"})}),r.jsxs("span",{className:"min-w-0 flex-1",children:[r.jsx("span",{className:"block truncate text-[16px] leading-6 text-[rgba(25,25,25,1)]",children:a.title}),r.jsx("span",{className:"block truncate whitespace-nowrap text-ellipsis text-[14px] leading-5 text-[rgba(25,25,25,0.6)]",children:a.description})]})]},a.id)})}),r.jsxs("div",{className:"mt-5 flex items-center justify-end gap-2",children:[r.jsx(he,{variant:"default",onClick:i,"data-testid":"schedule-template-cancel",children:"取消"}),r.jsx(he,{variant:"major",onClick:l,disabled:!n,"data-testid":"schedule-template-confirm",children:"确定"})]})]})})}function Lr({title:e,viewMode:t,weekRangeText:n,baseDate:s,weekOffset:i,tasks:o,calendarRuns:l,isLoading:a,isRunsLoading:c,togglingTaskIds:u,taskIconMaskStyle:d,taskEditabilityById:m,selectedTask:f,selectedTaskEditability:b,deleteTargetTask:h,deleteDialogSourceView:g,isDeletingTask:v,templatePickerOpen:k,templates:y,templatesLoading:w,selectedTemplateId:x,taskEditorOpen:j,editorDraft:T,editingTask:N,emptyTemplateSectionExpanded:C,emptyStateTemplateCards:E,onChangeView:I,onPrevWeek:A,onNextWeek:D,onResetWeek:S,onCreateFromConversation:P,onCreateFromTemplate:ae,onCreateCustom:ie,onSelectTask:oe,onEditTask:_,onEditTaskInConversation:G,onToggleTask:Z,onDeleteTask:le,onCloseDetailModal:je,onCloseDeleteDialog:Te,onConfirmDelete:Ce,onCloseTemplatePicker:$e,onSelectTemplate:Ee,onConfirmTemplateSelection:Ie,onCloseTaskEditor:Me,onConfirmTaskEditor:De,onCreateFromTemplateCard:Ae,onToggleEmptyTemplates:Se}){const ce=t==="calendar"&&c&&o.length===0,Fe=!a&&!ce&&o.length===0&&!(t==="calendar"&&l.length>0),Le=!a&&ce&&o.length===0;return r.jsxs("div",{className:"flex h-full min-h-0 flex-col gap-6",children:[r.jsxs("div",{className:"flex flex-col gap-6",children:[r.jsx("h1",{className:"ui-page-title",children:e}),r.jsx(Yn,{viewMode:t,weekRangeText:n,onChangeView:I,onPrevWeek:A,onNextWeek:D,onResetWeek:S,onCreateFromConversation:P,onCreateFromTemplate:ae,onCreateCustom:ie})]}),r.jsx("div",{className:"ui-panel flex min-h-0 flex-1 flex-col border-0 shadow-none",children:a||Le?r.jsx("div",{className:"flex min-h-[320px] items-center justify-center",children:r.jsx(Zt,{})}):t==="calendar"&&o.length===0&&l.length===0?r.jsx("div",{className:"flex flex-1 items-center justify-center",children:r.jsx("div",{className:"text-center",children:r.jsx(wt,{title:"本周暂无执行记录"})})}):Fe?r.jsx(ar,{title:"暂无定时任务",description:"暂无数据,您可以点击创建按钮新增定时任务",showTemplates:!0,templateCards:E,onTemplateClick:Ae,emptyTemplateSectionExpanded:C,onToggleTemplates:Se}):t==="card"?r.jsx(Zn,{tasks:o,taskIconMaskStyle:d,togglingTaskIds:u,taskEditabilityById:m,onSelectTask:oe,onEditTask:_,onEditTaskInConversation:G,onToggleTask:Z,onDeleteTask:le,isModalOpen:!!(h||f||j||k)}):r.jsx(sr,{tasks:o,runs:l,baseDate:s,weekOffset:i,onSelectTask:oe,onEditTask:_,onEditTaskInConversation:G,onToggleTask:Z,onDeleteTask:le,togglingTaskIds:u,taskEditabilityById:m})}),r.jsx(ir,{task:f,editability:b,onClose:je,onEdit:_,onEditInConversation:G}),r.jsx(or,{task:h,isDeleting:v,sourceView:g,onClose:Te,onConfirm:Ce}),r.jsx(Fr,{open:k,templates:y,selectedTemplateId:x,loading:w,onClose:$e,onSelect:Ee,onConfirm:Ie}),r.jsx(Mr,{open:j,draft:T,title:N?"编辑定时任务":"创建定时任务",onClose:Me,onConfirm:De})]})}const bt="/icons/schedule.svg";function Pr({onCreateTask:e}){const t=yt($=>$.addToast);We($=>$.setPendingChatInsert);const[n,s]=p.useState("calendar"),[i,o]=p.useState(0),[l,a]=p.useState([]),[c,u]=p.useState(!1),[d,m]=p.useState(null),[f,b]=p.useState(!0),h=new Date,{tasks:g,calendarRuns:v,isLoading:k,isRunsLoading:y,taskEditabilityById:w,reloadTasks:x,setTasks:j}=Ln({viewMode:n,weekOffset:i}),{weekRangeText:T}=Wn({baseDate:h,weekOffset:i,tasks:g,runs:v}),{selectedTask:N,setSelectedTask:C,deleteTargetTask:E,deleteDialogSourceView:I,templatePickerOpen:A,setTemplatePickerOpen:D,taskEditorOpen:S,editorDraft:P,editingTask:ae,closeTaskEditor:ie,openEditTask:oe,openCreateTask:_,openDeleteTask:G,closeDeleteDialog:Z,selectedTaskEditability:le,getEditingTask:je}=qn(),{togglingTaskIds:Te,isDeletingTask:Ce,handleToggleTask:$e,handleDeleteConfirm:Ee,handleTaskEditorConfirm:Ie,handleEditTaskInConversation:Me}=Bn({reloadTasks:x,setTasks:j,getEditingTask:je,closeEditor:ie}),De=()=>{e==null||e()},Ae=()=>{m(null),D(!0)},Se=()=>{_(tn())},ce=()=>{if(!d)return;const $=l.find(O=>O.id===d);if(!$)return;const H=Ge($);_(H),D(!1)},Fe=$=>{const H=l.find(zt=>zt.id===$);if(!H){m($),D(!0);return}const O=Ge(H);m($),_(O)},Le=$=>{oe($)||t({type:"error",title:"暂不支持编辑",message:"该定时任务仅支持通过对话进行编辑",duration:2600})},Wt=$=>{C($)},qt=$=>{G($,n)},Yt=p.useMemo(()=>l.slice(0,4),[l]);p.useEffect(()=>{if(n!=="card"||g.length!==0||l.length>0)return;let $=!1;return(async()=>{try{const O=await Ke();if($)return;a(O)}catch{}})(),()=>{$=!0}},[g.length,l.length,n]),p.useEffect(()=>{if(!A)return;let $=!1;return(async()=>{u(!0);try{const O=await Ke();if($)return;a(O)}finally{$||u(!1)}})(),()=>{$=!0}},[A]);const Vt=p.useMemo(()=>({WebkitMaskImage:`url(${bt})`,maskImage:`url(${bt})`,WebkitMaskRepeat:"no-repeat",maskRepeat:"no-repeat",WebkitMaskPosition:"center",maskPosition:"center",WebkitMaskSize:"contain",maskSize:"contain",backgroundColor:"var(--text-muted)"}),[]);return r.jsx(Lr,{title:"定时任务",viewMode:n,weekRangeText:T,baseDate:h,weekOffset:i,tasks:g,calendarRuns:v,isLoading:k,isRunsLoading:y,togglingTaskIds:Te,taskIconMaskStyle:Vt,taskEditabilityById:w,selectedTask:N,selectedTaskEditability:le,deleteTargetTask:E,deleteDialogSourceView:I,isDeletingTask:Ce,templatePickerOpen:A,templates:l,templatesLoading:c,selectedTemplateId:d,taskEditorOpen:S,editorDraft:P,editingTask:ae,emptyTemplateSectionExpanded:f,emptyStateTemplateCards:Yt,onChangeView:s,onPrevWeek:()=>o($=>$-1),onNextWeek:()=>o($=>$+1),onResetWeek:()=>o(0),onCreateFromConversation:De,onCreateFromTemplate:Ae,onCreateCustom:Se,onSelectTask:Wt,onEditTask:Le,onEditTaskInConversation:Me,onToggleTask:$e,onDeleteTask:qt,onCloseDetailModal:()=>C(null),onCloseDeleteDialog:Z,onConfirmDelete:()=>Ee(E,Z),onCloseTemplatePicker:()=>D(!1),onSelectTemplate:m,onConfirmTemplateSelection:ce,onCloseTaskEditor:ie,onConfirmTaskEditor:Ie,onCreateFromTemplateCard:Fe,onToggleEmptyTemplates:()=>b($=>!$)})}const Rr="__new__",_r="[[quick_action:",Hr="]]",Or="/icons/schedule.svg";function Ur(){var n;const e=Kt.find(s=>s.icon===Or),t=(n=e==null?void 0:e.label)==null?void 0:n.trim();return t?`${_r}${t}${Hr} `:null}function Jr(){const e=vt(),t=We(i=>i.setPendingChatInsert),n=p.useMemo(()=>Ur(),[]),s=()=>{n&&(t({threadId:Rr,text:n}),e("/"))};return r.jsx("div",{className:"h-full overflow-y-auto ui-shell-surface px-8 py-8",children:r.jsx(Pr,{onCreateTask:s})})}export{Jr as default};
2
+ //# sourceMappingURL=SchedulePage-CfW6lZVI.js.map