@mymuse/cli 1.0.41 → 1.0.42

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 (68) hide show
  1. package/README.md +21 -17
  2. package/package.json +9 -9
  3. package/web/dist/assets/AssistantsView-Ct3BBpYf.js +1 -0
  4. package/web/dist/assets/AutomationView-CO-jVhee.js +3 -0
  5. package/web/dist/assets/ChannelConfigView-Ct1W584x.js +8 -0
  6. package/web/dist/assets/ChartsView-CAc37Sam.js +1 -0
  7. package/web/dist/assets/ConnectorsView-DP4bbh58.js +1 -0
  8. package/web/dist/assets/FileTreeView-DwsYfssO.js +1 -0
  9. package/web/dist/assets/HookConfigView-uFsqieii.js +2 -0
  10. package/web/dist/assets/InputArea-BY8quOiH.js +14 -0
  11. package/web/dist/assets/MemoryView-Bgd_lcTf.js +1 -0
  12. package/web/dist/assets/{MessageBubble-CV16DZMG.js → MessageBubble-CVGXupVH.js} +20 -20
  13. package/web/dist/assets/ModelsView-B271UV9L.js +1 -0
  14. package/web/dist/assets/PluginsView-Dz4fqQR1.js +2 -0
  15. package/web/dist/assets/ProjectsView-DF-YCV8y.js +1 -0
  16. package/web/dist/assets/SessionGrid-BIREstN2.js +4 -0
  17. package/web/dist/assets/SettingsModal-ZJeoZcCd.js +4 -0
  18. package/web/dist/assets/SkillsView-CH2ghYL2.js +1 -0
  19. package/web/dist/assets/TemplatesTab-BGe7_67s.js +1 -0
  20. package/web/dist/assets/ThreadsView-XditIHZ4.js +2 -0
  21. package/web/dist/assets/ToolsView-BBzsFdVZ.js +1 -0
  22. package/web/dist/assets/{agentIconSet-Btsb_SC4.js → agentIconSet-B5GUQwel.js} +1 -1
  23. package/web/dist/assets/{api-CCt9DRQm.js → api-plEYhRn0.js} +1 -1
  24. package/web/dist/assets/common-Bbatsa0-.js +192 -0
  25. package/web/dist/assets/{icons-BvYhTENi.js → icons-CYDRRPKW.js} +1 -1
  26. package/web/dist/assets/index-CTbLW314.js +133 -0
  27. package/web/dist/assets/index-DdzVrZye.css +1 -0
  28. package/web/dist/assets/{markdown-DAQZeY5V.js → markdown-N5__3T-w.js} +1 -1
  29. package/web/dist/assets/{panels-DYiQiVWh.js → panels-CIPgN61N.js} +1 -1
  30. package/web/dist/assets/{react-vendor-BlngCquv.js → react-vendor-CB4cLN-6.js} +1 -1
  31. package/web/dist/assets/settingsStore-Xqln0d91.js +1 -0
  32. package/web/dist/assets/{state-_ZfNVAsd.js → state-CSZ50keL.js} +1 -1
  33. package/web/dist/assets/sttLanguages-CSNMgUTz.js +2 -0
  34. package/web/dist/assets/ttsSettings-BwXYpDnk.js +2 -0
  35. package/web/dist/assets/useConfirm-Da8iQ_DZ.js +1 -0
  36. package/web/dist/assets/{useTranslation-BGmCDuQI.js → useTranslation-B-mfApCn.js} +1 -1
  37. package/web/dist/assets/{websocket-C9e3h7VU.js → websocket-BnDwh01e.js} +1 -1
  38. package/web/dist/assets/whatsNewStore-LpdLRLGl.js +1 -0
  39. package/web/dist/index.html +18 -18
  40. package/web/dist/vendor/MANIFEST.json +24 -0
  41. package/web/dist/vendor/d3.min.js +2 -0
  42. package/web/dist/vendor/echarts.min.js +45 -0
  43. package/web/dist/assets/AssistantsView-dhdYVIy0.js +0 -1
  44. package/web/dist/assets/AutomationView-D1dU5ZV7.js +0 -1
  45. package/web/dist/assets/ChannelConfigView-CEPVZntU.js +0 -8
  46. package/web/dist/assets/ChartsView-DdN-beHW.js +0 -1
  47. package/web/dist/assets/ConnectorsView-CseCss9C.js +0 -1
  48. package/web/dist/assets/FileTreeView-Dnc3-gRF.js +0 -1
  49. package/web/dist/assets/HookConfigView-DA2h4HdJ.js +0 -1
  50. package/web/dist/assets/InputArea-DAgOOjOc.js +0 -14
  51. package/web/dist/assets/MemoryView-D6OUBi4-.js +0 -1
  52. package/web/dist/assets/ModelsView-BuqD9vWl.js +0 -1
  53. package/web/dist/assets/PluginsView-CIziDHFJ.js +0 -2
  54. package/web/dist/assets/ProjectsView-c6faWy32.js +0 -1
  55. package/web/dist/assets/SessionGrid-BZJHcklh.js +0 -4
  56. package/web/dist/assets/SettingsModal-BqdGEGW-.js +0 -4
  57. package/web/dist/assets/SkillsView-CB6CKkmb.js +0 -1
  58. package/web/dist/assets/TemplatesTab-B8efVwVZ.js +0 -1
  59. package/web/dist/assets/ThreadsView-CDoM0aNb.js +0 -2
  60. package/web/dist/assets/ToolsView-BG-xsWsO.js +0 -1
  61. package/web/dist/assets/cn-rx4uumOJ.js +0 -1
  62. package/web/dist/assets/common-BHXgEvgk.js +0 -192
  63. package/web/dist/assets/index-BNI6CNsY.css +0 -1
  64. package/web/dist/assets/index-BX-d2OBW.js +0 -130
  65. package/web/dist/assets/settingsStore-RLUAWgIk.js +0 -1
  66. package/web/dist/assets/sttLanguages-aqoVC79g.js +0 -2
  67. package/web/dist/assets/ttsSettings-DHo3OsOq.js +0 -15
  68. package/web/dist/assets/whatsNewStore-Bf_7lW8o.js +0 -1
package/README.md CHANGED
@@ -1166,31 +1166,35 @@ reader's own language instead of being translated on the fly.
1166
1166
 
1167
1167
  ## What's New · 更新日志
1168
1168
 
1169
- ### 1.0.41 — 2026-10-23
1169
+ ### 1.0.42 — 2026-10-25
1170
1170
 
1171
- 收藏与日历、品牌标识工作室、key 轮换与技能安全修复
1171
+ 知识包与记忆重排、看板刷新与数据源、桌面托盘常驻与多语言安装包
1172
1172
 
1173
- Favorites & calendar, brand-icon studio, provider key rotation and skill hardening
1173
+ Knowledge packs and memory rerank, dashboard refresh with data sources, desktop tray and a multi-language installer
1174
1174
 
1175
1175
  **English**
1176
1176
 
1177
- - Favorites and retrieval: sessions and artifacts can be starred into their own view, with sorting and a favorites toolbar in the artifact list; sidebar and panels are unified under a rebuilt app shell with fuller bilingual copy.
1178
- - Automation calendar: scheduled tasks gain a calendar view with a day-agenda sidebar, so you can see at a glance what runs when and what already ran.
1179
- - Brand-icon studio: the app icon can be recolored and relettered from settings, previewed live and persisted.
1180
- - Turn-bound suggestions: a ghost suggestion no longer reappears in a later turn — it renders only for the turn it was produced in.
1181
- - Server and CLI: the daemon starts on login; question_answer is broadcast so answering on one client dismisses the prompt everywhere; the compaction progress line moves to the end of the output area instead of displacing the status line.
1182
- - Provider key rotation: a throttled or dead key rolls over to the next one without breaking the session, plus a profile-append tool and a reviewer actor.
1183
- - Skill hardening: `skill_define` rejects newline injection and its overwrite guard now also checks registered skills; a skill whose frontmatter repeats a top-level key is rejected wholesale instead of silently overwritten.
1177
+ - Knowledge packs: 17 built-in content packs (legal, finance, sales, bio-research, small business and more) install from the plugin market as whole skill sets — content packs register skills only, never tools or memory writes.
1178
+ - Memory recall rerank: queries and memories are segmented into words instead of character bigrams, adjacent hits are boosted, near-duplicate items collapse via MMR, and relevance is normalised against the batch maximum so on-topic memories are no longer outranked by merely fresh, high-confidence ones.
1179
+ - Dashboards: script-backed dashboards refresh with one click (only the fixed script runs — never a client-supplied command), panels can refresh on a schedule, SQL / CSV / Excel files are queryable as data sources, and the card wall adapts to 1 / 2 / 4 columns.
1180
+ - Charts gain a table view and a list/tabs display switch; the preference is stored locally and falls back to the list instead of a blank page when it is corrupted.
1181
+ - The hook editor's dry run now executes the draft rule itself (same matcher and failure policy as production) and reports allow / deny / ask / no-match / error / unsupported; PROMPT and AGENT rules report "unsupported" instead of a false green.
1182
+ - Scheduled tasks can run a workflow template directly (`workflow:<template id>` as the name, inputs as JSON in instructions), with progress still surfacing in the workflow view.
1183
+ - Web interactions: the split-pane divider is draggable and remembered as a ratio, pins are written back to the server so they survive restarts and other clients, an interrupted stream resumes generation, risky actions share one confirm dialog, and checklist bubbles diff the store so `update_plan` and goal progress surface too.
1184
+ - CLI: Alt+S delivers a queued message into the running turn (Alt+I still copies it into the input box), and the compaction block now lives inside the transcript — a progress bar with a cursor while running, a 12-second before/after summary when done.
1185
+ - Desktop: closing the window hides it to the system tray and keeps the backend serving (`settings.desktop.closeToTray`, on by default), with a tray menu to reopen, open in browser or quit; tray and splash copy follow the UI language (English by default, Chinese only for Chinese speakers); the Windows installer now ships 12 languages behind an install-time language selector.
1184
1186
 
1185
1187
  **中文**
1186
1188
 
1187
- - 收藏与检索:会话 / 产物可加星收藏并单独成栏,产物清单支持排序与收藏工具条;侧栏与面板随 App 壳重构统一,界面文案补齐中英对照。
1188
- - 自动化日历:定时任务从列表升级为日历视图,配「当日议程」侧栏,按天看清什么时候会跑、跑过没有。
1189
- - 品牌标识工作室:应用图标可在设置里换色换字形,改动即时预览并落盘。
1190
- - 会话建议按回合判过期:上一轮给出的「幽灵建议」不会在新回合收场后重新冒出来,只在它所属的那一轮显示。
1191
- - 服务端与 CLI:登录即拉起 daemon;question_answer 改为广播,任一客户端作答后其余端同步收起提问;压缩进度行落到输出区尾部,不再顶掉状态行。
1192
- - provider key 轮换:单个 key 被限流或失效时自动切到下一个,不中断会话;新增画像追加工具与评审线程 actor。
1193
- - 技能安全加固:`skill_define` 拒收换行注入,overwrite 守卫也看已注册技能;技能 frontmatter 出现重复顶层 key 时整份拒收,不再静默覆盖。
1189
+ - 知识包:内置 17 个内容包(法务 / 财务 / 销售 / 生命科学 / 小微企业等),从插件市场一键安装即得整套技能;内容包只注册技能,不注册工具、不写记忆。
1190
+ - 记忆召回重排:查询与记忆改按词切分(不再靠字符 bigram),相邻词命中额外加权,近似重复条目按 MMR 收敛;相关度按本批最大值归一,真正「对题」的记忆不再被「新鲜 + 置信度高」的条目压过去。
1191
+ - 看板:带取数脚本的看板可一键刷新(只跑写死的脚本,不接受客户端传命令);面板支持定时刷新,SQL / CSV / Excel 可作为数据源直接查;右侧卡片墙按容器宽度自适应 1 / 2 / 4 列。
1192
+ - 图表页新增表格视图与「清单 / 标签页」显示切换;显示偏好落本地,被写坏时一律回落清单,不会白屏。
1193
+ - Hook 编辑器的「试运行」改为真的跑那条草稿规则(匹配与失败策略同线上),返回 放行 / 拦截 / 询问 / 未命中 / 出错 / 不支持;PROMPT、AGENT 类规则明确回报「不支持」,不再假绿灯。
1194
+ - 定时任务可直接跑一份工作流模板(name 写 `workflow:<模板 id>`,模板输入放 instructions 的 JSON),进度照旧出现在工作流视图里。
1195
+ - Web 交互:分屏分隔条可拖动并按占比记忆;会话置顶写回服务端,重启与换端后仍在;流式断线后自动续上生成;危险操作统一走确认框;清单气泡改由 store 差量驱动,`update_plan` 与 goal 推进也会冒泡。
1196
+ - CLI:Alt+S 把排队消息立即送进当前回合(Alt+I 仍是插回输入框);压缩进度块移进输出区随对话滚动,进行中显示进度条与游标,收场保留 12 秒的前后对比。
1197
+ - 桌面端:关窗改为收进系统托盘、后台继续盯着端口(`settings.desktop.closeToTray`,默认开),托盘菜单可打开主窗口 / 在浏览器打开 / 退出;托盘与启动页文案跟随界面语言(默认英文,中文用户才出中文);Windows 安装包支持 12 种语言并带安装时语言选择。
1194
1198
 
1195
1199
  _Earlier releases: see the version list on this package page, or `CHANGELOG.md` in the repository (generated from the same source)._
1196
1200
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mymuse/cli",
3
- "version": "1.0.41",
3
+ "version": "1.0.42",
4
4
  "description": "DeepSeekCode — local-first AI coding agent for your terminal: one local runtime with a TUI, a web UI and an API, a permission/approval layer, read-only plan mode, and any OpenAI-compatible model.",
5
5
  "keywords": [
6
6
  "deepseekcode",
@@ -36,14 +36,14 @@
36
36
  "xterm": "5.3.0"
37
37
  },
38
38
  "optionalDependencies": {
39
- "@mymuse/cli-darwin-arm64": "1.0.41",
40
- "@mymuse/cli-darwin-x64": "1.0.41",
41
- "@mymuse/cli-linux-x64": "1.0.41",
42
- "@mymuse/cli-linux-arm64": "1.0.41",
43
- "@mymuse/cli-linux-x64-musl": "1.0.41",
44
- "@mymuse/cli-linux-arm64-musl": "1.0.41",
45
- "@mymuse/cli-win32-x64": "1.0.41",
46
- "@mymuse/cli-win32-arm64": "1.0.41"
39
+ "@mymuse/cli-darwin-arm64": "1.0.42",
40
+ "@mymuse/cli-darwin-x64": "1.0.42",
41
+ "@mymuse/cli-linux-x64": "1.0.42",
42
+ "@mymuse/cli-linux-arm64": "1.0.42",
43
+ "@mymuse/cli-linux-x64-musl": "1.0.42",
44
+ "@mymuse/cli-linux-arm64-musl": "1.0.42",
45
+ "@mymuse/cli-win32-x64": "1.0.42",
46
+ "@mymuse/cli-win32-arm64": "1.0.42"
47
47
  },
48
48
  "files": [
49
49
  "bin/",
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{B as t,Kr as n,Mr as r,Nt as i,R as a,St as o,Z as s,_ as c,d as l,f as u,ht as d,lt as f,n as p,nt as m,wr as h}from"./icons-CYDRRPKW.js";import{t as g}from"./useTranslation-B-mfApCn.js";import{a as _,t as v}from"./useConfirm-Da8iQ_DZ.js";import{t as y}from"./api-plEYhRn0.js";import{I as b}from"./markdown-N5__3T-w.js";import{f as x,r as S}from"./common-Bbatsa0-.js";import{n as C,t as w}from"./channelMeta-BGQXQxgj.js";import{i as T}from"./index-CTbLW314.js";var E=e(n(),1),D=b(),O=(0,E.memo)(function({selectedSessionId:e,onSelectionChange:t,onOpenSession:n,onNavigate:i,onCollapse:a,onDeleted:s}){let{t:c}=g(),[l,u]=(0,E.useState)([]),[d,p]=(0,E.useState)(!0),[h,_]=(0,E.useState)(null),[b,S]=(0,E.useState)(null),[C,w]=(0,E.useState)(null),[T,O]=(0,E.useState)(!1),[k,j]=(0,E.useState)(null),[M,N]=(0,E.useState)(null),P=(0,E.useCallback)(async()=>{try{let e=await y.assistants.list();e.success&&Array.isArray(e.data)?(u(e.data),_(null)):_(e.error||c(`assistants.loadFailed`))}catch(e){_(e instanceof Error?e.message:String(e))}finally{p(!1)}},[c]);(0,E.useEffect)(()=>{P();let e=window.setInterval(()=>{P()},8e3);return()=>window.clearInterval(e)},[P]);let F=(0,E.useCallback)(async(e,t)=>{(await y.assistants.update(e,t)).success&&P()},[P]),I=(0,E.useCallback)(async()=>{O(!0),N(null);try{let e=await y.assistants.create({title:c(`assistants.newAssistantTitle`)});e.success&&e.data?(await P(),t(e.data),w(e.data.sessionId)):N(e.error||c(`assistants.createFailed`))}catch(e){N(e instanceof Error?e.message:String(e))}finally{O(!1)}},[P,t,c]),L=(0,E.useCallback)(async(e,t)=>{N(null);try{let n=await y.assistants.rename(e,t);n.success?(w(null),await P()):N(n.error||c(`assistants.renameFailed`))}catch(e){N(e instanceof Error?e.message:String(e))}},[P,c]),[R,z]=v(),B=(0,E.useCallback)(async(t,n)=>{if(await z({message:c(`assistants.deleteConfirm`,{title:n}),variant:`danger`})){N(null),j(t);try{let n=await y.assistants.remove(t);n.success?(C===t&&w(null),e===t&&s?.(t),await P()):N(n.error||c(`assistants.deleteFailed`))}catch(e){N(e instanceof Error?e.message:String(e))}finally{j(null)}}},[C,e,s,P,z,c]);return(0,E.useEffect)(()=>{if(!e)return;let n=l.find(t=>t.sessionId===e);n&&t(n)},[l,e,t]),(0,D.jsxs)(`div`,{className:`flex h-full flex-col overflow-hidden`,children:[R,(0,D.jsxs)(`div`,{className:`flex items-center justify-between border-b border-dark-border px-4 py-2.5`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,D.jsx)(r,{size:16,className:`text-accent-blue`,"aria-hidden":`true`}),(0,D.jsx)(`h2`,{className:`text-sm font-semibold text-dark-text`,children:c(`assistants.title`)}),!d&&(0,D.jsx)(`span`,{className:`rounded-full bg-dark-hover px-1.5 py-0.5 text-badge text-dark-muted`,children:l.length})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,D.jsxs)(`button`,{type:`button`,onClick:()=>void I(),disabled:T,className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-accent-blue hover:bg-dark-hover disabled:opacity-50`,title:c(`assistants.newAssistantHint`),"data-testid":`assistants-create`,children:[(0,D.jsx)(f,{size:12,"aria-hidden":`true`}),c(`assistants.newAssistant`)]}),(0,D.jsxs)(`button`,{type:`button`,onClick:()=>void P(),className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-dark-muted hover:bg-dark-hover hover:text-dark-text`,title:c(`common.refresh`),children:[(0,D.jsx)(m,{size:12,className:d?`animate-spin`:``,"aria-hidden":`true`}),c(`common.refresh`)]}),a&&(0,D.jsx)(`button`,{type:`button`,onClick:a,className:`rounded p-1 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,title:c(`assistants.collapseList`),"aria-label":c(`assistants.collapseList`),"aria-expanded":!0,"data-testid":`assistants-list-collapse`,children:(0,D.jsx)(o,{size:13,"aria-hidden":`true`})})]})]}),M&&(0,D.jsx)(`div`,{className:`border-b border-dark-border px-4 py-1.5 text-meta text-accent-red`,role:`alert`,children:M}),(0,D.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto p-2`,children:d&&l.length===0?(0,D.jsx)(`div`,{className:`py-2`,role:`status`,"aria-label":c(`assistants.loading`),children:(0,D.jsx)(x,{count:4})}):h&&l.length===0?(0,D.jsx)(`div`,{className:`py-8 text-center text-xs text-accent-red`,children:h}):l.length===0?(0,D.jsxs)(`div`,{className:`py-10 text-center text-xs text-dark-muted`,children:[(0,D.jsx)(r,{size:24,className:`mx-auto mb-2 text-dark-muted`,"aria-hidden":`true`}),(0,D.jsx)(`p`,{children:c(`assistants.empty`)}),(0,D.jsx)(`p`,{className:`mt-1 text-meta`,children:c(`assistants.emptyHint`)}),(0,D.jsx)(`button`,{type:`button`,onClick:()=>i(`channels`),className:`mt-3 rounded border border-dark-border px-2.5 py-1 text-meta text-dark-text hover:bg-dark-hover`,children:c(`assistants.goChannels`)})]}):(0,D.jsx)(`div`,{className:`flex flex-col gap-2`,children:l.map(r=>(0,D.jsx)(A,{assistant:r,selected:e===r.sessionId,onSelect:()=>t(r),expanded:b===r.sessionId,onToggleExpand:()=>S(b===r.sessionId?null:r.sessionId),onOpen:()=>n(r.sessionId,r.title),onUpdate:e=>void F(r.sessionId,e),editing:C===r.sessionId,onStartRename:()=>w(r.sessionId),onCancelRename:()=>w(null),onRename:e=>void L(r.sessionId,e),deleting:k===r.sessionId,onDelete:()=>void B(r.sessionId,r.title)},r.sessionId))})})]})});function k(e){if(e===`running`)return`running`;if(e===`paused`)return`waiting`;if(e===`error`)return`failed`}var A=(0,E.memo)(function({assistant:e,selected:n,onSelect:o,expanded:s,onToggleExpand:f,onOpen:p,onUpdate:m,editing:h,onStartRename:_,onCancelRename:v,onRename:y,deleting:b,onDelete:x}){let{t:E}=g(),O=e.channel?.peerKind===`group`,A=e.kind===`home`;return(0,D.jsxs)(`div`,{className:`rounded-lg border bg-dark-surface transition-colors ${n?`border-accent-blue/60 ring-1 ring-accent-blue/30`:`border-dark-border`}`,children:[(0,D.jsxs)(`button`,{type:`button`,onClick:o,"aria-current":n?`true`:void 0,className:`flex w-full items-center gap-2 rounded-t-lg px-3 py-2 text-start focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/60 ${n?`bg-accent-blue/5`:`hover:bg-dark-hover/40`}`,children:[(0,D.jsx)(S,{sessionId:e.sessionId,status:k(e.status),size:40}),(0,D.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[e.channel?(0,D.jsx)(`span`,{className:`text-base leading-none`,"aria-hidden":`true`,children:w(e.channel.type)}):(0,D.jsx)(r,{size:14,className:`shrink-0 text-dark-muted`,"aria-hidden":`true`}),(0,D.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium text-dark-text`,title:e.title,children:e.title}),(0,D.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 rounded-full ${T(e.status)}`,title:E(`assistants.status.${e.status}`,{defaultValue:e.status})}),e.channel&&(O?(0,D.jsx)(l,{size:11,className:`shrink-0 text-dark-muted`,"aria-label":E(`assistants.group`)}):(0,D.jsx)(u,{size:11,className:`shrink-0 text-dark-muted`,"aria-label":E(`assistants.dm`)}))]}),(0,D.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-1.5 text-badge text-dark-muted`,children:[(0,D.jsx)(`span`,{className:`shrink-0`,children:e.channel?C(e.channel.type):E(A?`assistants.homeLabel`:`assistants.localLabel`)}),(0,D.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:e.channel?.peerId,children:e.channel?e.channel.peerId:E(A?`assistants.homeHint`:`assistants.localHint`)}),e.stats.unread>0&&(0,D.jsx)(`span`,{className:`shrink-0 rounded-full bg-accent-red/15 px-1.5 text-avatar font-medium text-accent-fg`,children:e.stats.unread})]}),e.preview&&(0,D.jsx)(`p`,{className:`mt-1 line-clamp-2 text-meta leading-snug text-dark-muted`,title:e.preview,children:e.preview})]}),(0,D.jsx)(M,{mode:e.mode}),e.trust.level===`owner`?(0,D.jsx)(a,{size:12,className:`shrink-0 text-accent-green`,"aria-label":E(`assistants.trust.owner`)}):e.trust.level===`public`?(0,D.jsx)(t,{size:12,className:`shrink-0 text-accent-yellow`,"aria-label":E(`assistants.trust.public`)}):(0,D.jsx)(a,{size:12,className:`shrink-0 text-accent-blue`,"aria-label":E(`assistants.trust.team`)})]}),(0,D.jsxs)(`div`,{className:`flex items-center gap-1.5 border-t border-dark-border px-3 py-1.5`,children:[(0,D.jsxs)(`button`,{type:`button`,onClick:p,className:`flex items-center gap-1 rounded px-2 py-0.5 text-meta text-accent-blue hover:bg-dark-hover`,children:[(0,D.jsx)(i,{size:11,"aria-hidden":`true`}),E(`assistants.openSession`)]}),(0,D.jsx)(`button`,{type:`button`,onClick:f,className:`flex items-center gap-1 rounded px-2 py-0.5 text-meta text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:E(`assistants.policy`)}),!A&&(0,D.jsx)(`button`,{type:`button`,onClick:h?v:_,className:`flex items-center gap-1 rounded px-2 py-0.5 text-meta text-dark-muted hover:bg-dark-hover hover:text-dark-text`,title:E(`assistants.rename`),"aria-label":E(`assistants.rename`),"aria-pressed":h,"data-testid":`assistant-rename-${e.sessionId}`,children:(0,D.jsx)(d,{size:11,"aria-hidden":`true`})}),!A&&(0,D.jsx)(`button`,{type:`button`,onClick:x,disabled:b,className:`flex items-center gap-1 rounded px-2 py-0.5 text-meta text-dark-muted hover:bg-accent-red/10 hover:text-accent-red disabled:opacity-50`,title:E(`assistants.deleteHint`),"aria-label":E(`assistants.delete`),"data-testid":`assistant-delete-${e.sessionId}`,children:(0,D.jsx)(c,{size:11,"aria-hidden":`true`})}),(0,D.jsx)(`span`,{className:`flex-1`}),(0,D.jsx)(`span`,{className:`text-badge text-dark-muted`,children:E(`assistants.groupPolicy`,{mention:String(O?e.policy.mentionRequired:!1)})})]}),s&&(0,D.jsx)(N,{assistant:e,isGroup:O,onUpdate:m}),h&&(0,D.jsx)(j,{initial:e.title,onSubmit:y,onCancel:v})]})});function j({initial:e,onSubmit:t,onCancel:n}){let{t:r}=g(),[i,a]=(0,E.useState)(e),o=()=>{let r=i.trim();!r||r===e?n():t(r)};return(0,D.jsxs)(`div`,{className:`flex items-center gap-1.5 border-t border-dark-border px-3 py-1.5`,children:[(0,D.jsx)(`input`,{autoFocus:!0,type:`text`,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`?(e.preventDefault(),o()):e.key===`Escape`&&(e.preventDefault(),n())},"aria-label":r(`assistants.renameLabel`),"data-testid":`assistant-rename-input`,className:`min-w-0 flex-1 rounded border border-dark-border bg-dark-surface px-1.5 py-0.5 text-meta text-dark-text`}),(0,D.jsx)(`button`,{type:`button`,onClick:o,className:`rounded p-1 text-accent-blue hover:bg-dark-hover`,title:r(`common.save`),"aria-label":r(`common.save`),"data-testid":`assistant-rename-save`,children:(0,D.jsx)(h,{size:12,"aria-hidden":`true`})}),(0,D.jsx)(`button`,{type:`button`,onClick:n,className:`rounded p-1 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,title:r(`common.cancel`),"aria-label":r(`common.cancel`),children:(0,D.jsx)(p,{size:12,"aria-hidden":`true`})})]})}function M({mode:e}){let{t}=g();return(0,D.jsx)(`span`,{className:`shrink-0 rounded px-1.5 py-0.5 text-avatar font-medium ${e===`delegate`?`bg-accent-blue/15 text-accent-blue`:`bg-dark-hover text-dark-muted`}`,children:t(`assistants.mode.${e}`)})}function N({assistant:e,isGroup:t,onUpdate:n}){let{t:r}=g(),[i,a]=(0,E.useState)(e.mode),[o,c]=(0,E.useState)(e.policy.mentionRequired),[l,u]=(0,E.useState)(String(e.policy.cooldownSeconds)),[d,f]=(0,E.useState)((e.policy.keywords??[]).join(`, `)),[p,m]=(0,E.useState)(!1);return(0,D.jsxs)(`div`,{className:`border-t border-dark-border px-3 py-2.5 text-meta`,children:[(0,D.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-2`,children:[(0,D.jsxs)(`label`,{className:`flex items-center gap-1.5 text-dark-muted`,children:[r(`assistants.mode.label`),(0,D.jsxs)(`select`,{value:i,onChange:e=>a(e.target.value),className:`rounded border border-dark-border bg-dark-surface px-1.5 py-0.5 text-dark-text`,children:[(0,D.jsx)(`option`,{value:`delegate`,children:r(`assistants.mode.delegate`)}),(0,D.jsx)(`option`,{value:`direct`,children:r(`assistants.mode.direct`)})]})]}),t&&(0,D.jsxs)(`label`,{className:`flex items-center gap-1.5 text-dark-muted`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:o,onChange:e=>c(e.target.checked)}),r(`assistants.mentionRequired`)]}),(0,D.jsxs)(`label`,{className:`flex items-center gap-1.5 text-dark-muted`,children:[r(`assistants.cooldown`),(0,D.jsx)(`input`,{type:`number`,min:0,value:l,onChange:e=>u(e.target.value),className:`w-14 rounded border border-dark-border bg-dark-surface px-1.5 py-0.5 text-dark-text`}),`s`]})]}),(0,D.jsxs)(`label`,{className:`mt-2 flex items-center gap-1.5 text-dark-muted`,children:[r(`assistants.keywords`),(0,D.jsx)(`input`,{type:`text`,value:d,placeholder:r(`assistants.keywordsPlaceholder`)??``,onChange:e=>f(e.target.value),className:`min-w-0 flex-1 rounded border border-dark-border bg-dark-surface px-1.5 py-0.5 text-dark-text`})]}),(0,D.jsx)(`div`,{className:`mt-2 flex justify-end`,children:(0,D.jsx)(_,{size:`sm`,variant:`accent`,onClick:()=>{m(!0),n({mode:i,policy:{mentionRequired:t?o:!1,cooldownSeconds:Math.max(0,Number(l)||0),...d.trim()?{keywords:d.split(/[,,]/).map(e=>e.trim()).filter(Boolean)}:{}}}),window.setTimeout(()=>m(!1),600)},loading:p,leftIcon:(0,D.jsx)(s,{size:11,"aria-hidden":`true`}),children:r(`common.save`)})})]})}export{O as AssistantsView};
@@ -0,0 +1,3 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{Ar as t,Jn as n,Kr as r,Lr as i,Or as a,R as o,Rr as s,Sr as c,Ut as l,Wt as u,_ as d,cn as f,dt as p,h as m,ht as h,i as g,k as _,kr as v,lt as y,n as b,nt as ee,pr as te,rr as ne,st as x,ut as re,vn as ie,x as ae,xn as oe,xr as se,yt as ce}from"./icons-CYDRRPKW.js";import{r as le}from"./react-vendor-CB4cLN-6.js";import{t as S}from"./useTranslation-B-mfApCn.js";import{a as ue,c as C,o as de,t as fe}from"./useConfirm-Da8iQ_DZ.js";import{t as w}from"./api-plEYhRn0.js";import{I as pe}from"./markdown-N5__3T-w.js";import"./common-Bbatsa0-.js";import{h as me}from"./index-CTbLW314.js";var he=6048e5,ge=864e5,_e=Symbol.for(`constructDateFrom`);function T(e,t){return typeof e==`function`?e(t):e&&typeof e==`object`&&_e in e?e[_e](t):e instanceof Date?new e.constructor(t):new Date(t)}function E(e,t){return T(t||e,e)}function ve(e,t,n){let r=E(e,n?.in);return isNaN(t)?T(n?.in||e,NaN):(t&&r.setDate(r.getDate()+t),r)}function ye(e,t,n){let r=E(e,n?.in);if(isNaN(t))return T(n?.in||e,NaN);if(!t)return r;let i=r.getDate(),a=T(n?.in||e,r.getTime());return a.setMonth(r.getMonth()+t+1,0),i>=a.getDate()?a:(r.setFullYear(a.getFullYear(),a.getMonth(),i),r)}var be={};function D(){return be}function O(e,t){let n=D(),r=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,i=E(e,t?.in),a=i.getDay(),o=(a<r?7:0)+a-r;return i.setDate(i.getDate()-o),i.setHours(0,0,0,0),i}function k(e,t){return O(e,{...t,weekStartsOn:1})}function xe(e,t){let n=E(e,t?.in),r=n.getFullYear(),i=T(n,0);i.setFullYear(r+1,0,4),i.setHours(0,0,0,0);let a=k(i),o=T(n,0);o.setFullYear(r,0,4),o.setHours(0,0,0,0);let s=k(o);return n.getTime()>=a.getTime()?r+1:n.getTime()>=s.getTime()?r:r-1}function Se(e){let t=E(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-n}function A(e,...t){let n=T.bind(null,e||t.find(e=>typeof e==`object`));return t.map(n)}function j(e,t){let n=E(e,t?.in);return n.setHours(0,0,0,0),n}function Ce(e,t,n){let[r,i]=A(n?.in,e,t),a=j(r),o=j(i),s=+a-Se(a),c=+o-Se(o);return Math.round((s-c)/ge)}function we(e,t){let n=xe(e,t),r=T(t?.in||e,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),k(r)}function Te(e,t,n){return ve(e,t*7,n)}function Ee(e){return T(e,Date.now())}function M(e,t,n){let[r,i]=A(n?.in,e,t);return+j(r)==+j(i)}function De(e){return e instanceof Date||typeof e==`object`&&Object.prototype.toString.call(e)===`[object Date]`}function Oe(e){return!(!De(e)&&typeof e!=`number`||isNaN(+E(e)))}function ke(e,t){let n=E(e,t?.in);return n.setHours(23,59,59,999),n}function N(e,t){let[n,r]=A(e,t.start,t.end);return{start:n,end:r}}function Ae(e,t){let{start:n,end:r}=N(t?.in,e),i=+n>+r,a=i?+n:+r,o=i?r:n;o.setHours(0,0,0,0);let s=t?.step??1;if(!s)return[];s<0&&(s=-s,i=!i);let c=[];for(;+o<=a;)c.push(T(n,o)),o.setDate(o.getDate()+s),o.setHours(0,0,0,0);return i?c.reverse():c}function P(e,t){let n=E(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function je(e,t){let n=E(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}var F={lessThanXSeconds:{one:`less than a second`,other:`less than {{count}} seconds`},xSeconds:{one:`1 second`,other:`{{count}} seconds`},halfAMinute:`half a minute`,lessThanXMinutes:{one:`less than a minute`,other:`less than {{count}} minutes`},xMinutes:{one:`1 minute`,other:`{{count}} minutes`},aboutXHours:{one:`about 1 hour`,other:`about {{count}} hours`},xHours:{one:`1 hour`,other:`{{count}} hours`},xDays:{one:`1 day`,other:`{{count}} days`},aboutXWeeks:{one:`about 1 week`,other:`about {{count}} weeks`},xWeeks:{one:`1 week`,other:`{{count}} weeks`},aboutXMonths:{one:`about 1 month`,other:`about {{count}} months`},xMonths:{one:`1 month`,other:`{{count}} months`},aboutXYears:{one:`about 1 year`,other:`about {{count}} years`},xYears:{one:`1 year`,other:`{{count}} years`},overXYears:{one:`over 1 year`,other:`over {{count}} years`},almostXYears:{one:`almost 1 year`,other:`almost {{count}} years`}},Me=(e,t,n)=>{let r,i=F[e];return r=typeof i==`string`?i:t===1?i.one:i.other.replace(`{{count}}`,t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?`in `+r:r+` ago`:r};function Ne(e){return(t={})=>{let n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var Pe={date:Ne({formats:{full:`EEEE, MMMM do, y`,long:`MMMM do, y`,medium:`MMM d, y`,short:`MM/dd/yyyy`},defaultWidth:`full`}),time:Ne({formats:{full:`h:mm:ss a zzzz`,long:`h:mm:ss a z`,medium:`h:mm:ss a`,short:`h:mm a`},defaultWidth:`full`}),dateTime:Ne({formats:{full:`{{date}} 'at' {{time}}`,long:`{{date}} 'at' {{time}}`,medium:`{{date}}, {{time}}`,short:`{{date}}, {{time}}`},defaultWidth:`full`})},I={lastWeek:`'last' eeee 'at' p`,yesterday:`'yesterday at' p`,today:`'today at' p`,tomorrow:`'tomorrow at' p`,nextWeek:`eeee 'at' p`,other:`P`},Fe=(e,t,n,r)=>I[e];function L(e){return(t,n)=>{let r=n?.context?String(n.context):`standalone`,i;if(r===`formatting`&&e.formattingValues){let t=e.defaultFormattingWidth||e.defaultWidth,r=n?.width?String(n.width):t;i=e.formattingValues[r]||e.formattingValues[t]}else{let t=e.defaultWidth,r=n?.width?String(n.width):e.defaultWidth;i=e.values[r]||e.values[t]}let a=e.argumentCallback?e.argumentCallback(t):t;return i[a]}}var Ie={ordinalNumber:(e,t)=>{let n=Number(e),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+`st`;case 2:return n+`nd`;case 3:return n+`rd`}return n+`th`},era:L({values:{narrow:[`B`,`A`],abbreviated:[`BC`,`AD`],wide:[`Before Christ`,`Anno Domini`]},defaultWidth:`wide`}),quarter:L({values:{narrow:[`1`,`2`,`3`,`4`],abbreviated:[`Q1`,`Q2`,`Q3`,`Q4`],wide:[`1st quarter`,`2nd quarter`,`3rd quarter`,`4th quarter`]},defaultWidth:`wide`,argumentCallback:e=>e-1}),month:L({values:{narrow:[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`],abbreviated:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],wide:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`]},defaultWidth:`wide`}),day:L({values:{narrow:[`S`,`M`,`T`,`W`,`T`,`F`,`S`],short:[`Su`,`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`],abbreviated:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],wide:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`]},defaultWidth:`wide`}),dayPeriod:L({values:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`}},defaultWidth:`wide`,formattingValues:{narrow:{am:`a`,pm:`p`,midnight:`mi`,noon:`n`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},abbreviated:{am:`AM`,pm:`PM`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`},wide:{am:`a.m.`,pm:`p.m.`,midnight:`midnight`,noon:`noon`,morning:`in the morning`,afternoon:`in the afternoon`,evening:`in the evening`,night:`at night`}},defaultFormattingWidth:`wide`})};function R(e){return(t,n={})=>{let r=n.width,i=r&&e.matchPatterns[r]||e.matchPatterns[e.defaultMatchWidth],a=t.match(i);if(!a)return null;let o=a[0],s=r&&e.parsePatterns[r]||e.parsePatterns[e.defaultParseWidth],c=Array.isArray(s)?Re(s,e=>e.test(o)):Le(s,e=>e.test(o)),l;l=e.valueCallback?e.valueCallback(c):c,l=n.valueCallback?n.valueCallback(l):l;let u=t.slice(o.length);return{value:l,rest:u}}}function Le(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function Re(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return n}function ze(e){return(t,n={})=>{let r=t.match(e.matchPattern);if(!r)return null;let i=r[0],a=t.match(e.parsePattern);if(!a)return null;let o=e.valueCallback?e.valueCallback(a[0]):a[0];o=n.valueCallback?n.valueCallback(o):o;let s=t.slice(i.length);return{value:o,rest:s}}}var Be={code:`en-US`,formatDistance:Me,formatLong:Pe,formatRelative:Fe,localize:Ie,match:{ordinalNumber:ze({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:e=>parseInt(e,10)}),era:R({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:`any`}),quarter:R({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:`wide`,parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:`any`,valueCallback:e=>e+1}),month:R({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:`any`}),day:R({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:`wide`,parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:`any`}),dayPeriod:R({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:`any`,parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:`any`})},options:{weekStartsOn:0,firstWeekContainsDate:1}};function Ve(e,t){let n=E(e,t?.in);return Ce(n,je(n))+1}function He(e,t){let n=E(e,t?.in),r=+k(n)-we(n);return Math.round(r/he)+1}function Ue(e,t){let n=E(e,t?.in),r=n.getFullYear(),i=D(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??i.firstWeekContainsDate??i.locale?.options?.firstWeekContainsDate??1,o=T(t?.in||e,0);o.setFullYear(r+1,0,a),o.setHours(0,0,0,0);let s=O(o,t),c=T(t?.in||e,0);c.setFullYear(r,0,a),c.setHours(0,0,0,0);let l=O(c,t);return+n>=+s?r+1:+n>=+l?r:r-1}function We(e,t){let n=D(),r=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,i=Ue(e,t),a=T(t?.in||e,0);return a.setFullYear(i,0,r),a.setHours(0,0,0,0),O(a,t)}function Ge(e,t){let n=E(e,t?.in),r=+O(n,t)-We(n,t);return Math.round(r/he)+1}function z(e,t){return(e<0?`-`:``)+Math.abs(e).toString().padStart(t,`0`)}var B={y(e,t){let n=e.getFullYear(),r=n>0?n:1-n;return z(t===`yy`?r%100:r,t.length)},M(e,t){let n=e.getMonth();return t===`M`?String(n+1):z(n+1,2)},d(e,t){return z(e.getDate(),t.length)},a(e,t){let n=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.toUpperCase();case`aaa`:return n;case`aaaaa`:return n[0];default:return n===`am`?`a.m.`:`p.m.`}},h(e,t){return z(e.getHours()%12||12,t.length)},H(e,t){return z(e.getHours(),t.length)},m(e,t){return z(e.getMinutes(),t.length)},s(e,t){return z(e.getSeconds(),t.length)},S(e,t){let n=t.length,r=e.getMilliseconds();return z(Math.trunc(r*10**(n-3)),t.length)}},V={am:`am`,pm:`pm`,midnight:`midnight`,noon:`noon`,morning:`morning`,afternoon:`afternoon`,evening:`evening`,night:`night`},Ke={G:function(e,t,n){let r=+(e.getFullYear()>0);switch(t){case`G`:case`GG`:case`GGG`:return n.era(r,{width:`abbreviated`});case`GGGGG`:return n.era(r,{width:`narrow`});default:return n.era(r,{width:`wide`})}},y:function(e,t,n){if(t===`yo`){let t=e.getFullYear(),r=t>0?t:1-t;return n.ordinalNumber(r,{unit:`year`})}return B.y(e,t)},Y:function(e,t,n,r){let i=Ue(e,r),a=i>0?i:1-i;return t===`YY`?z(a%100,2):t===`Yo`?n.ordinalNumber(a,{unit:`year`}):z(a,t.length)},R:function(e,t){return z(xe(e),t.length)},u:function(e,t){return z(e.getFullYear(),t.length)},Q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`Q`:return String(r);case`QQ`:return z(r,2);case`Qo`:return n.ordinalNumber(r,{unit:`quarter`});case`QQQ`:return n.quarter(r,{width:`abbreviated`,context:`formatting`});case`QQQQQ`:return n.quarter(r,{width:`narrow`,context:`formatting`});default:return n.quarter(r,{width:`wide`,context:`formatting`})}},q:function(e,t,n){let r=Math.ceil((e.getMonth()+1)/3);switch(t){case`q`:return String(r);case`qq`:return z(r,2);case`qo`:return n.ordinalNumber(r,{unit:`quarter`});case`qqq`:return n.quarter(r,{width:`abbreviated`,context:`standalone`});case`qqqqq`:return n.quarter(r,{width:`narrow`,context:`standalone`});default:return n.quarter(r,{width:`wide`,context:`standalone`})}},M:function(e,t,n){let r=e.getMonth();switch(t){case`M`:case`MM`:return B.M(e,t);case`Mo`:return n.ordinalNumber(r+1,{unit:`month`});case`MMM`:return n.month(r,{width:`abbreviated`,context:`formatting`});case`MMMMM`:return n.month(r,{width:`narrow`,context:`formatting`});default:return n.month(r,{width:`wide`,context:`formatting`})}},L:function(e,t,n){let r=e.getMonth();switch(t){case`L`:return String(r+1);case`LL`:return z(r+1,2);case`Lo`:return n.ordinalNumber(r+1,{unit:`month`});case`LLL`:return n.month(r,{width:`abbreviated`,context:`standalone`});case`LLLLL`:return n.month(r,{width:`narrow`,context:`standalone`});default:return n.month(r,{width:`wide`,context:`standalone`})}},w:function(e,t,n,r){let i=Ge(e,r);return t===`wo`?n.ordinalNumber(i,{unit:`week`}):z(i,t.length)},I:function(e,t,n){let r=He(e);return t===`Io`?n.ordinalNumber(r,{unit:`week`}):z(r,t.length)},d:function(e,t,n){return t===`do`?n.ordinalNumber(e.getDate(),{unit:`date`}):B.d(e,t)},D:function(e,t,n){let r=Ve(e);return t===`Do`?n.ordinalNumber(r,{unit:`dayOfYear`}):z(r,t.length)},E:function(e,t,n){let r=e.getDay();switch(t){case`E`:case`EE`:case`EEE`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`EEEEE`:return n.day(r,{width:`narrow`,context:`formatting`});case`EEEEEE`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},e:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`e`:return String(a);case`ee`:return z(a,2);case`eo`:return n.ordinalNumber(a,{unit:`day`});case`eee`:return n.day(i,{width:`abbreviated`,context:`formatting`});case`eeeee`:return n.day(i,{width:`narrow`,context:`formatting`});case`eeeeee`:return n.day(i,{width:`short`,context:`formatting`});default:return n.day(i,{width:`wide`,context:`formatting`})}},c:function(e,t,n,r){let i=e.getDay(),a=(i-r.weekStartsOn+8)%7||7;switch(t){case`c`:return String(a);case`cc`:return z(a,t.length);case`co`:return n.ordinalNumber(a,{unit:`day`});case`ccc`:return n.day(i,{width:`abbreviated`,context:`standalone`});case`ccccc`:return n.day(i,{width:`narrow`,context:`standalone`});case`cccccc`:return n.day(i,{width:`short`,context:`standalone`});default:return n.day(i,{width:`wide`,context:`standalone`})}},i:function(e,t,n){let r=e.getDay(),i=r===0?7:r;switch(t){case`i`:return String(i);case`ii`:return z(i,t.length);case`io`:return n.ordinalNumber(i,{unit:`day`});case`iii`:return n.day(r,{width:`abbreviated`,context:`formatting`});case`iiiii`:return n.day(r,{width:`narrow`,context:`formatting`});case`iiiiii`:return n.day(r,{width:`short`,context:`formatting`});default:return n.day(r,{width:`wide`,context:`formatting`})}},a:function(e,t,n){let r=e.getHours()/12>=1?`pm`:`am`;switch(t){case`a`:case`aa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`});case`aaa`:return n.dayPeriod(r,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`aaaaa`:return n.dayPeriod(r,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(r,{width:`wide`,context:`formatting`})}},b:function(e,t,n){let r=e.getHours(),i;switch(i=r===12?V.noon:r===0?V.midnight:r/12>=1?`pm`:`am`,t){case`b`:case`bb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`bbb`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`}).toLowerCase();case`bbbbb`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},B:function(e,t,n){let r=e.getHours(),i;switch(i=r>=17?V.evening:r>=12?V.afternoon:r>=4?V.morning:V.night,t){case`B`:case`BB`:case`BBB`:return n.dayPeriod(i,{width:`abbreviated`,context:`formatting`});case`BBBBB`:return n.dayPeriod(i,{width:`narrow`,context:`formatting`});default:return n.dayPeriod(i,{width:`wide`,context:`formatting`})}},h:function(e,t,n){if(t===`ho`){let t=e.getHours()%12;return t===0&&(t=12),n.ordinalNumber(t,{unit:`hour`})}return B.h(e,t)},H:function(e,t,n){return t===`Ho`?n.ordinalNumber(e.getHours(),{unit:`hour`}):B.H(e,t)},K:function(e,t,n){let r=e.getHours()%12;return t===`Ko`?n.ordinalNumber(r,{unit:`hour`}):z(r,t.length)},k:function(e,t,n){let r=e.getHours();return r===0&&(r=24),t===`ko`?n.ordinalNumber(r,{unit:`hour`}):z(r,t.length)},m:function(e,t,n){return t===`mo`?n.ordinalNumber(e.getMinutes(),{unit:`minute`}):B.m(e,t)},s:function(e,t,n){return t===`so`?n.ordinalNumber(e.getSeconds(),{unit:`second`}):B.s(e,t)},S:function(e,t){return B.S(e,t)},X:function(e,t,n){let r=e.getTimezoneOffset();if(r===0)return`Z`;switch(t){case`X`:return Je(r);case`XXXX`:case`XX`:return H(r);default:return H(r,`:`)}},x:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`x`:return Je(r);case`xxxx`:case`xx`:return H(r);default:return H(r,`:`)}},O:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`O`:case`OO`:case`OOO`:return`GMT`+qe(r,`:`);default:return`GMT`+H(r,`:`)}},z:function(e,t,n){let r=e.getTimezoneOffset();switch(t){case`z`:case`zz`:case`zzz`:return`GMT`+qe(r,`:`);default:return`GMT`+H(r,`:`)}},t:function(e,t,n){return z(Math.trunc(e/1e3),t.length)},T:function(e,t,n){return z(+e,t.length)}};function qe(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=Math.trunc(r/60),a=r%60;return a===0?n+String(i):n+String(i)+t+z(a,2)}function Je(e,t){return e%60==0?(e>0?`-`:`+`)+z(Math.abs(e)/60,2):H(e,t)}function H(e,t=``){let n=e>0?`-`:`+`,r=Math.abs(e),i=z(Math.trunc(r/60),2),a=z(r%60,2);return n+i+t+a}var Ye=(e,t)=>{switch(e){case`P`:return t.date({width:`short`});case`PP`:return t.date({width:`medium`});case`PPP`:return t.date({width:`long`});default:return t.date({width:`full`})}},Xe=(e,t)=>{switch(e){case`p`:return t.time({width:`short`});case`pp`:return t.time({width:`medium`});case`ppp`:return t.time({width:`long`});default:return t.time({width:`full`})}},Ze={p:Xe,P:(e,t)=>{let n=e.match(/(P+)(p+)?/)||[],r=n[1],i=n[2];if(!i)return Ye(e,t);let a;switch(r){case`P`:a=t.dateTime({width:`short`});break;case`PP`:a=t.dateTime({width:`medium`});break;case`PPP`:a=t.dateTime({width:`long`});break;default:a=t.dateTime({width:`full`})}return a.replace(`{{date}}`,Ye(r,t)).replace(`{{time}}`,Xe(i,t))}},Qe=/^D+$/,$e=/^Y+$/,U=[`D`,`DD`,`YY`,`YYYY`];function W(e){return Qe.test(e)}function et(e){return $e.test(e)}function G(e,t,n){let r=tt(e,t,n);if(console.warn(r),U.includes(e))throw RangeError(r)}function tt(e,t,n){let r=e[0]===`Y`?`years`:`days of the month`;return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}var nt=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,rt=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,it=/^'([^]*?)'?$/,at=/''/g,ot=/[a-zA-Z]/;function K(e,t,n){let r=D(),i=n?.locale??r.locale??Be,a=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,s=E(e,n?.in);if(!Oe(s))throw RangeError(`Invalid time value`);let c=t.match(rt).map(e=>{let t=e[0];if(t===`p`||t===`P`){let n=Ze[t];return n(e,i.formatLong)}return e}).join(``).match(nt).map(e=>{if(e===`''`)return{isToken:!1,value:`'`};let t=e[0];if(t===`'`)return{isToken:!1,value:st(e)};if(Ke[t])return{isToken:!0,value:e};if(t.match(ot))throw RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}});i.localize.preprocessor&&(c=i.localize.preprocessor(s,c));let l={firstWeekContainsDate:a,weekStartsOn:o,locale:i};return c.map(r=>{if(!r.isToken)return r.value;let a=r.value;(!n?.useAdditionalWeekYearTokens&&et(a)||!n?.useAdditionalDayOfYearTokens&&W(a))&&G(a,t,String(e));let o=Ke[a[0]];return o(s,a,i.localize,l)}).join(``)}function st(e){let t=e.match(it);return t?t[1].replace(at,`'`):e}function ct(e,t,n){let[r,i]=A(n?.in,e,t);return+O(r,n)==+O(i,n)}function lt(e,t,n){let[r,i]=A(n?.in,e,t);return r.getFullYear()===i.getFullYear()&&r.getMonth()===i.getMonth()}function ut(e,t){return M(T(t?.in||e,e),Ee(t?.in||e))}var q=e(r(),1),dt=le(),ft=2e3;function pt(e){return`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`}function J(e,t,n){return Number.isInteger(e)&&e>=t&&e<=n}function Y(e,t,n){let r=e.trim();if(!r)return null;let i=new Set;for(let e of r.split(`,`)){let r=e.trim();if(!r)return null;if(r===`*`||r===`?`){for(let e=t;e<=n;e++)i.add(e);continue}let a=r.match(/^(\*|\d+|\d+-\d+)\/(\d+)$/);if(a){let e=parseInt(a[2]??``,10);if(!J(e,1,n))return null;let r=a[1]??``,o,s;if(r===`*`)o=t,s=n;else if(r.includes(`-`)){let[e,t]=r.split(`-`).map(Number);o=e??NaN,s=t??NaN}else o=Number(r),s=n;if(!J(o,t,n)||!J(s,t,n)||o>s)return null;for(let t=o;t<=s;t+=e)i.add(t);continue}let o=r.match(/^(\d+)-(\d+)$/);if(o){let e=parseInt(o[1]??``,10),r=parseInt(o[2]??``,10);if(!J(e,t,n)||!J(r,t,n)||e>r)return null;for(let t=e;t<=r;t++)i.add(t);continue}let s=Number(r);if(!J(s,t,n))return null;i.add(s)}return i.size>0?[...i].sort((e,t)=>e-t):null}function mt(e){let t=e.trim().split(/\s+/);if(t.length!==5)return null;let n=Y(t[0]??``,0,59),r=Y(t[1]??``,0,23),i=Y(t[2]??``,1,31),a=Y(t[3]??``,1,12),o=Y(t[4]??``,0,7);return!n||!r||!i||!a||!o?null:{minutes:n,hours:r,daysOfMonth:i,months:a,daysOfWeek:[...new Set(o.map(e=>e===7?0:e))].sort((e,t)=>e-t)}}function ht(e,t){return e.months.includes(t.getMonth()+1)&&e.daysOfMonth.includes(t.getDate())&&e.daysOfWeek.includes(t.getDay())}function gt(e,t){if(e.kind===`once`){if(!e.fireAt)return[];let n=new Date(e.fireAt);return Number.isNaN(n.getTime())?[]:M(n,t)?[n]:[]}let n=mt(e.cron??``);if(!n||!ht(n,t))return[];let r=[];for(let e of n.hours)for(let i of n.minutes)r.push(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,i,0,0));return r}function _t(e,t,n){let r=j(t),i=ke(n);if(r.getTime()>i.getTime())return[];let a=[],o=Ae({start:r,end:i});for(let t of e){let e=0;for(let n of o){if(e>=ft)break;for(let o of gt(t.schedule,n))if(!(o.getTime()<r.getTime()||o.getTime()>i.getTime())&&(a.push({key:`${t.id}@${o.toISOString()}`,automationId:t.id,at:o,automation:t}),e+=1,e>=ft))break}}return a.sort((e,t)=>e.at.getTime()-t.at.getTime()||e.automation.name.localeCompare(t.automation.name)),a}var vt=e=>e===`*`||e===`?`;function yt(e,t){let n=e.schedule;if(n.kind===`once`){let e=n.fireAt?new Date(n.fireAt):null;if(!e||Number.isNaN(e.getTime()))return{ok:!1,reason:`unparsable`};if(M(e,t))return{ok:!1,reason:`noop-day`};let r=new Date(t.getFullYear(),t.getMonth(),t.getDate(),e.getHours(),e.getMinutes(),0,0);return{ok:!0,schedule:{...n,kind:`once`,fireAt:r.toISOString()}}}let r=(n.cron??``).trim().split(/\s+/);if(r.length!==5)return{ok:!1,reason:`unparsable`};let i=r[2]??``,a=r[3]??``,o=r[4]??``;if(!vt(i)||!vt(a))return{ok:!1,reason:`locked-cron`};let s=t.getDay();if(!vt(o)){if(/^\d+$/.test(o)){if(Number(o)%7===s)return{ok:!1,reason:`noop-day`}}else if(o===`1-5`){if(s>=1&&s<=5)return{ok:!1,reason:`noop-day`}}else return{ok:!1,reason:`locked-cron`}}let c=[...r];return c[4]=String(s),{ok:!0,schedule:{...n,kind:`cron`,cron:c.join(` `)}}}function bt(e){return pt(e)}function xt(e){let t=new Map;for(let n of e){let e=pt(n.at),r=t.get(e);r?r.push(n):t.set(e,[n])}return t}var St=[`automation.dow.monday`,`automation.dow.tuesday`,`automation.dow.wednesday`,`automation.dow.thursday`,`automation.dow.friday`,`automation.dow.saturday`,`automation.dow.sunday`],Ct=e=>(e.getDay()+6)%7;function wt(e){let t=O(P(e),{weekStartsOn:1});return Array.from({length:42},(e,n)=>ve(t,n))}function Tt(e){let t=O(e,{weekStartsOn:1});return Array.from({length:7},(e,n)=>ve(t,n))}var X=pe(),Et=3,Z=e=>K(e,`HH:mm`),Dt=e=>`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`;function Ot(e){return e.status===`enabled`?e.schedule.kind===`once`?`once`:`enabled`:`disabled`}var kt={enabled:`border-accent-blue bg-accent-blue/10 text-dark-text`,once:`border-accent-yellow bg-accent-yellow/10 text-dark-text`,disabled:`border-dark-border bg-dark-hover text-dark-muted`};function At({occurrence:e,onSelectDay:t,extra:n,onUnpack:r,onDragStart:i,onDragEnd:a}){let{t:o}=S(),s=n=>{n.stopPropagation(),r?r():t(e.at)},c=!!i,l=c?o(`automation.dragHint`):r?o(`automation.unpackHint`):``;return(0,X.jsxs)(`button`,{type:`button`,onClick:s,draggable:c,onDragStart:t=>{i&&(t.stopPropagation(),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`,t.dataTransfer.setData(`text/plain`,e.key)),i(e))},onDragEnd:()=>a?.(),title:`${Z(e.at)} ${e.automation.name}${l?` · ${l}`:``}`,className:`flex w-full items-center gap-1 truncate rounded border-s-2 px-1.5 py-[3px] text-start text-badge hover:brightness-110 ${kt[Ot(e.automation)]} ${c?`cursor-grab active:cursor-grabbing`:``}`,children:[(0,X.jsx)(`span`,{className:`shrink-0 tabular-nums opacity-70`,children:Z(e.at)}),(0,X.jsx)(`span`,{className:`truncate`,children:e.automation.name}),n!==void 0&&n>0&&(0,X.jsx)(`span`,{className:`shrink-0 opacity-70`,children:o(`automation.moreCount`,{count:n})})]})}function jt({anchor:e,selectedDay:t,byDay:n,onSelectDay:r,onFocusSlot:i,onMoveOccurrence:a}){let{t:o}=S(),s=(0,q.useMemo)(()=>wt(e),[e]),[c,l]=(0,q.useState)(null),[u,d]=(0,q.useState)(null),f=()=>{l(null),d(null)};return(0,X.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-dark-border bg-dark-surface`,children:[(0,X.jsx)(`div`,{className:`grid grid-cols-7 border-b border-dark-border bg-dark-hover/40`,children:St.map(e=>(0,X.jsx)(`div`,{className:`px-2 py-2 text-center text-meta font-medium text-dark-muted`,children:o(e)},e))}),(0,X.jsx)(`div`,{className:`grid grid-cols-7`,children:s.map((s,p)=>{let m=Dt(s),h=n.get(m)??[],g=Mt(h),_=g.slice(0,Et),v=g.slice(Et).reduce((e,t)=>e+t.items.length,0),y=lt(s,e),b=M(s,t),ee=ut(s),te=u===m;return(0,X.jsxs)(`div`,{"data-day":m,role:`button`,tabIndex:0,onClick:()=>r(s),onDragOver:e=>{c&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),d(m))},onDragLeave:()=>d(e=>e===m?null:e),onDrop:e=>{if(!c)return;e.preventDefault();let t=c;f(),a?.(t,s)},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),r(s))},className:[`flex min-h-28 cursor-pointer flex-col gap-1 border-b border-e border-dark-border p-1.5`,p%7==6?`border-e-0`:``,p>=35?`border-b-0`:``,y?`bg-dark-surface`:`bg-dark-bg/50`,te?`bg-accent-blue/10 ring-2 ring-inset ring-accent-blue/70`:b?`ring-1 ring-inset ring-accent-blue/50`:`hover:bg-dark-hover/40`].join(` `),children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,X.jsx)(`span`,{className:[`flex h-5 w-5 items-center justify-center rounded-full text-meta tabular-nums`,ee?`bg-accent-blue font-semibold text-accent-fg`:y?`text-dark-text`:`text-dark-muted/60`].join(` `),children:s.getDate()}),h.length>0&&(0,X.jsx)(`span`,{className:`text-badge tabular-nums text-dark-muted/50`,children:h.length})]}),(0,X.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[_.map(e=>{let t=e.items[0],n=e.items.length>1;return(0,X.jsx)(At,{occurrence:t,onSelectDay:r,extra:e.items.length-1,onDragStart:a&&!n?l:void 0,onDragEnd:f,onUnpack:n&&i?()=>i(s,Z(e.at)):void 0},`${m}-${Z(e.at)}`)}),v>0&&(0,X.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),r(s)},className:`px-1 text-start text-badge text-dark-muted hover:text-accent-blue`,children:o(`automation.moreCount`,{count:v})})]})]},s.toISOString())})})]})}function Mt(e){let t=new Map;for(let n of e){let e=Z(n.at),r=t.get(e);r?r.items.push(n):t.set(e,{at:n.at,items:[n]})}return[...t.values()].sort((e,t)=>e.at.getTime()-t.at.getTime())}function Nt({anchor:e,selectedDay:t,byDay:n,onSelectDay:r,onFocusSlot:i,onMoveOccurrence:a}){let{t:o}=S(),s=(0,q.useMemo)(()=>Tt(e),[e]),c=(0,q.useMemo)(()=>Array.from({length:24},(e,t)=>t),[]),[l,u]=(0,q.useState)(null),[d,f]=(0,q.useState)(null),p=()=>{u(null),f(null)};return(0,X.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-dark-border bg-dark-surface`,children:[(0,X.jsxs)(`div`,{className:`grid grid-cols-[3rem_repeat(7,minmax(0,1fr))] border-b border-dark-border bg-dark-hover/40`,children:[(0,X.jsx)(`div`,{}),s.map(e=>{let n=ut(e),i=M(e,t);return(0,X.jsxs)(`button`,{type:`button`,onClick:()=>r(e),className:[`border-s border-dark-border px-1 py-1.5 text-center`,i?`bg-accent-blue/10`:`hover:bg-dark-hover/60`].join(` `),children:[(0,X.jsx)(`div`,{className:`text-meta text-dark-muted`,children:o(St[Ct(e)]??``)}),(0,X.jsx)(`div`,{className:[`mx-auto mt-0.5 flex h-5 w-5 items-center justify-center rounded-full text-meta tabular-nums`,n?`bg-accent-blue font-semibold text-accent-fg`:`text-dark-text`].join(` `),children:e.getDate()})]},e.toISOString())})]}),(0,X.jsxs)(`div`,{className:`custom-scrollbar grid max-h-[62vh] grid-cols-[3rem_repeat(7,minmax(0,1fr))] overflow-y-auto`,children:[(0,X.jsx)(`div`,{className:`relative`,style:{height:`72rem`},children:c.map(e=>(0,X.jsx)(`div`,{className:`absolute end-1 -translate-y-1/2 text-badge tabular-nums text-dark-muted`,style:{top:`${e/24*100}%`},children:e===0?``:`${String(e).padStart(2,`0`)}:00`},e))}),s.map(e=>{let o=Dt(e),s=Mt(n.get(o)??[]),m=M(e,t);return(0,X.jsxs)(`div`,{"data-day":o,onDragOver:e=>{l&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),f(o))},onDragLeave:()=>f(e=>e===o?null:e),onDrop:t=>{if(!l)return;t.preventDefault();let n=l;p(),a?.(n,e)},className:[`relative border-s border-dark-border`,d===o?`bg-accent-blue/15 ring-2 ring-inset ring-accent-blue/70`:m?`bg-accent-blue/5`:``].join(` `),style:{height:`72rem`},children:[c.map(e=>(0,X.jsx)(`div`,{className:`absolute inset-x-0 border-t ${e===0?`border-transparent`:`border-dark-border/60`}`,style:{top:`${e/24*100}%`}},e)),s.map(t=>{let n=t.items[0],o=t.at.getHours()*60+t.at.getMinutes();return(0,X.jsx)(`div`,{className:`absolute inset-x-0.5 z-10`,style:{top:`${o/1440*100}%`},children:(0,X.jsx)(At,{occurrence:n,onSelectDay:r,extra:t.items.length-1,onDragStart:a&&t.items.length===1?u:void 0,onDragEnd:p,onUnpack:i&&t.items.length>1?()=>i(e,Z(t.at)):void 0})},`${e.toISOString()}-${Z(t.at)}`)})]},e.toISOString())})]})]})}var Pt=e=>K(e,`HH:mm`);function Ft({day:e,occurrences:n,focusSlot:r,onClearFocus:i,onEdit:a,onRun:o,onToggle:s,onDelete:c,onCreate:l}){let{t:u}=S(),f=r??null,m=f?n.filter(e=>Pt(e.at)===f).length:0,g=f?n.findIndex(e=>Pt(e.at)===f):-1,_=(0,q.useRef)(null);return(0,q.useEffect)(()=>{f&&_.current?.scrollIntoView?.({block:`nearest`})},[f]),(0,X.jsxs)(`aside`,{className:`flex w-full shrink-0 flex-col overflow-hidden rounded-xl border border-dark-border bg-dark-surface lg:w-72`,children:[(0,X.jsxs)(`div`,{className:`flex items-start justify-between gap-2 border-b border-dark-border px-3 py-2.5`,children:[(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsxs)(`div`,{className:`truncate text-sm font-semibold`,children:[u(St[Ct(e)]??``),` · `,K(e,`yyyy-MM-dd`)]}),(0,X.jsxs)(`div`,{className:`text-meta text-dark-muted`,children:[u(`automation.tasksCount`,{count:n.length}),ut(e)?` · ${u(`automation.today`)}`:``]})]}),(0,X.jsx)(`button`,{type:`button`,onClick:l,title:u(`automation.new`),className:`rounded-lg p-1.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,X.jsx)(y,{size:15})})]}),f&&(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-dark-border bg-accent-blue/10 px-3 py-1.5 text-meta`,children:[(0,X.jsx)(`span`,{className:`shrink-0 font-medium tabular-nums`,children:f}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-dark-muted`,children:u(`automation.slotFocus`,{count:m})}),i&&(0,X.jsx)(`button`,{type:`button`,onClick:i,title:u(`automation.clearFocus`),className:`rounded p-0.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,X.jsx)(b,{size:12})})]}),(0,X.jsx)(`div`,{className:`custom-scrollbar flex-1 overflow-y-auto p-2.5`,children:n.length===0?(0,X.jsxs)(`div`,{className:`flex flex-col items-center gap-1 px-2 py-8 text-center`,children:[(0,X.jsx)(t,{size:22,className:`text-dark-muted`}),(0,X.jsx)(`p`,{className:`text-xs text-dark-muted`,children:u(`automation.dayEmpty`)}),(0,X.jsx)(`p`,{className:`text-meta text-dark-muted/70`,children:u(`automation.dayEmptyHint`)})]}):(0,X.jsx)(`div`,{className:`space-y-2`,children:n.map((e,t)=>{let n=e.automation,r=n.status===`enabled`,i=f!==null&&Pt(e.at)===f;return(0,X.jsxs)(`div`,{ref:t===g?_:void 0,"data-focus-slot":i?f:void 0,className:[`rounded-lg border bg-dark-bg/50 px-2.5 py-2`,i?`border-accent-blue/60 ring-1 ring-inset ring-accent-blue/50`:`border-dark-border`].join(` `),children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`shrink-0 text-meta font-medium tabular-nums text-dark-muted`,children:Pt(e.at)}),(0,X.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs font-medium`,title:n.name,children:n.name}),(0,X.jsx)(`span`,{className:`shrink-0 rounded px-1 py-0.5 text-badge ${r?`bg-accent-green/20 text-accent-green`:`bg-dark-hover text-dark-muted`}`,children:u(r?`automation.enabled`:`automation.disabled`)})]}),(0,X.jsxs)(`div`,{className:`mt-2 flex items-center gap-1.5`,children:[n.nextRunAt&&(0,X.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-badge tabular-nums text-dark-muted`,children:[u(`automation.nextRun`),` `,K(new Date(n.nextRunAt),`MM-dd HH:mm`)]}),(0,X.jsxs)(`div`,{className:`ms-auto flex shrink-0 items-center gap-1`,children:[(0,X.jsx)(`button`,{type:`button`,onClick:()=>a(n),title:u(`automation.edit`),className:`rounded p-1.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,X.jsx)(h,{size:14})}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>s(n),title:u(r?`automation.disable`:`automation.enable`),className:`rounded p-1.5 text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:(0,X.jsx)(x,{size:14})}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>o(n.id),title:u(`automation.runNow`),className:`rounded p-1.5 text-accent-green hover:bg-dark-hover`,children:(0,X.jsx)(p,{size:14})}),c&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>c(n),title:u(`automation.delete`),className:`rounded p-1.5 text-dark-muted hover:bg-accent-red/10 hover:text-accent-red`,children:(0,X.jsx)(d,{size:14})})]})]})]},e.key)})})})]})}var Q={name:``,instructions:``,jobKind:`agent`,workflowTemplate:``,freq:`daily`,time:`09:00`,dow:`1`,onceAt:``,cron:`0 9 * * *`,modelRef:``,connectorIds:[],channelIds:[],workspaceDir:``,readAutoAllow:!0,runSessionMode:`home`,runSessionId:``},It=`.agent/automation-attachments`,Lt=`workflow:`;function Rt(e){return/^[a-z0-9][a-z0-9_-]*$/.test(e)}function zt(e){let t=e??``;if(!t.startsWith(Lt))return``;let n=t.slice(9).trim();return Rt(n)?n:``}var Bt=`deepseekcode:automation-view`,Vt=[{id:`month`,key:`automation.viewMonth`,Icon:v},{id:`week`,key:`automation.viewWeek`,Icon:a},{id:`list`,key:`automation.viewList`,Icon:u}];function Ht(){try{let e=localStorage.getItem(Bt);if(e===`month`||e===`week`||e===`list`)return e}catch{}return`month`}function Ut(e){try{localStorage.setItem(Bt,e)}catch{}}var $=e=>String(e).padStart(2,`0`);function Wt(e){let t=e.schedule,n=zt(e.name),r={modelRef:e.modelRef??``,connectorIds:Array.isArray(e.connectorIds)?[...e.connectorIds]:[],channelIds:Array.isArray(e.notificationChannelIds)?[...e.notificationChannelIds]:[],workspaceDir:e.workspaceDir??``,readAutoAllow:e.readAutoAllow,runSessionMode:e.runSessionMode??`home`,runSessionId:e.runSessionId??``,workflowTemplate:n,jobKind:n?`workflow`:`agent`};if(t.kind===`once`&&t.fireAt){let n=new Date(t.fireAt);return{...Q,name:e.name,instructions:e.instructions,freq:`once`,time:`${$(n.getHours())}:${$(n.getMinutes())}`,onceAt:`${n.getFullYear()}-${$(n.getMonth()+1)}-${$(n.getDate())}T${$(n.getHours())}:${$(n.getMinutes())}`,...r}}let i=(t.cron||``).trim().split(/\s+/),a={...Q,name:e.name,instructions:e.instructions,...r};if(i.length===5){let e=i[0]??``,t=i[1]??``,n=i[4]??``,r=`${$(parseInt(t,10)||0)}:${$(parseInt(e,10)||0)}`;if(n===`*`)return{...a,freq:`daily`,time:r};if(n===`1-5`)return{...a,freq:`weekdays`,time:r};if(/^\d+$/.test(n))return{...a,freq:`weekly`,time:r,dow:n}}return{...a,freq:`custom`,cron:t.cron||``}}function Gt(e){let[t,n]=e.time.split(`:`),r=parseInt(t??``,10),i=parseInt(n??``,10);switch(e.freq){case`daily`:return Number.isInteger(r)&&Number.isInteger(i)?{kind:`cron`,cron:`${i} ${r} * * *`}:null;case`weekdays`:return Number.isInteger(r)&&Number.isInteger(i)?{kind:`cron`,cron:`${i} ${r} * * 1-5`}:null;case`weekly`:return Number.isInteger(r)&&Number.isInteger(i)?{kind:`cron`,cron:`${i} ${r} * * ${e.dow}`}:null;case`once`:return e.onceAt?{kind:`once`,fireAt:new Date(e.onceAt).toISOString()}:null;case`custom`:return e.cron.trim()?{kind:`cron`,cron:e.cron.trim()}:null}}function Kt(e,t){if(e.kind===`once`&&e.fireAt){let n=new Date(e.fireAt);return`${t(`automation.badgeOnce`)} ${n.toLocaleString()}`}let n=(e.cron||``).trim().split(/\s+/);if(n.length!==5)return e.cron||``;let r=n[0]??``,i=n[1]??``,a=n[4]??``,o=`${$(parseInt(i,10)||0)}:${$(parseInt(r,10)||0)}`;return a===`*`?t(`automation.badgeDaily`,{time:o}):a===`1-5`?t(`automation.badgeWeekdays`,{time:o}):/^\d+$/.test(a)?t(`automation.badgeWeekly`,{day:t(`automation.dow.${[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`][parseInt(a,10)%7]}`),time:o}):e.cron||``}var qt=[{value:`1`,key:`automation.dow.monday`},{value:`2`,key:`automation.dow.tuesday`},{value:`3`,key:`automation.dow.wednesday`},{value:`4`,key:`automation.dow.thursday`},{value:`5`,key:`automation.dow.friday`},{value:`6`,key:`automation.dow.saturday`},{value:`0`,key:`automation.dow.sunday`}];function Jt(e){let t=e.replace(/[\\/]+$/,``),n=Math.max(t.lastIndexOf(`\\`),t.lastIndexOf(`/`));return n===-1?t:t.slice(n+1)}function Yt({isOpen:e,initial:t,onClose:n,onConfirm:r}){let{t:i}=S(),{visible:a,phase:o}=de(e),[c,u]=(0,q.useState)(t),[d,p]=(0,q.useState)(null),[m,h]=(0,q.useState)([]),[g,_]=(0,q.useState)(!1),[v,y]=(0,q.useState)(``),[ee,te]=(0,q.useState)(t),ne=(0,q.useRef)(null),x=async e=>{_(!0),y(``);try{let t=await w.dirs.list(e);if(!t.success||!t.data){y(t.error||`加载目录失败`);return}u(t.data.path),p(t.data.parent),h(t.data.dirs||[]),te(t.data.path)}catch(e){y(e instanceof Error?e.message:`加载目录失败`)}finally{_(!1)}};return(0,q.useEffect)(()=>{e&&x(t)},[e,t]),(0,q.useEffect)(()=>{ne.current?.focus()},[]),(0,q.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),n())};return document.addEventListener(`keydown`,t),document.body.style.overflow=`hidden`,()=>{document.removeEventListener(`keydown`,t),document.body.style.overflow=``}},[e,n]),a?(0,X.jsxs)(`div`,{className:`fixed inset-0 z-[60] flex items-center justify-center overflow-hidden p-4`,role:`dialog`,"aria-modal":`true`,children:[(0,X.jsx)(`div`,{className:`absolute inset-0 ui-scrim ui-overlay-backdrop`,"data-phase":o,onClick:n}),(0,X.jsxs)(`div`,{className:`relative w-full max-w-lg mx-4 bg-dark-overlay ui-surface-overlay border border-dark-border rounded-xl shadow-pop flex flex-col max-h-[70vh] ui-overlay-panel`,"data-phase":o,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2.5 border-b border-dark-border shrink-0`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-2 text-compact font-semibold text-dark-text`,children:[(0,X.jsx)(oe,{size:15,className:`text-accent-blue`}),i(`automation.workspacePick`)]}),(0,X.jsx)(`button`,{type:`button`,onClick:n,className:`rounded p-1 text-dark-muted hover:bg-dark-hover`,children:(0,X.jsx)(b,{size:15})})]}),(0,X.jsxs)(`div`,{className:`p-4 flex flex-col gap-3 min-h-0 flex-1`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsxs)(`div`,{className:`relative flex-1`,children:[(0,X.jsx)(f,{size:13,className:`absolute start-2.5 top-1/2 -translate-y-1/2 text-dark-muted/60`}),(0,X.jsx)(`input`,{ref:ne,value:ee,onChange:e=>te(e.target.value),onKeyDown:e=>{e.key===`Enter`&&x(ee.trim())},spellCheck:!1,className:`w-full rounded-lg border border-dark-border bg-dark-surface ps-8 pe-2.5 py-1.5 text-xs font-mono focus:outline-none focus:border-accent-blue/50`})]}),(0,X.jsx)(`button`,{type:`button`,onClick:()=>void x(ee.trim()),disabled:g||!ee.trim(),className:`shrink-0 rounded-lg border border-dark-border px-2.5 py-1.5 text-xs text-dark-muted hover:bg-dark-hover disabled:opacity-40`,children:i(`chat.dirPickerGo`)})]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`flex-1 truncate font-mono text-meta text-dark-muted bg-dark-surface rounded-md px-2 py-1 border border-dark-border`,title:c,children:c||`—`}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>d&&void x(d),disabled:g||!d,className:`shrink-0 flex items-center gap-1 rounded-md border border-dark-border px-2 py-1 text-meta text-dark-muted hover:bg-dark-hover disabled:opacity-40`,children:[(0,X.jsx)(s,{size:12}),i(`chat.dirPickerUp`)]})]}),(0,X.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto rounded-lg border border-dark-border bg-dark-surface divide-y divide-dark-border/60`,children:g?(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 py-6 text-xs text-dark-muted`,children:[(0,X.jsx)(l,{size:14,className:`animate-spin`}),i(`chat.loading`)]}):v?(0,X.jsx)(`div`,{className:`px-3 py-4 text-xs text-accent-red`,children:v}):m.length===0?(0,X.jsx)(`div`,{className:`px-3 py-4 text-xs text-dark-muted/60 text-center`,children:`—`}):m.map(e=>{let t=c.includes(`\\`)?`\\`:`/`,n=c.endsWith(t)?c+e:c+t+e;return(0,X.jsxs)(`button`,{type:`button`,onClick:()=>void x(n),className:`w-full flex items-center gap-2 px-3 py-1.5 text-start text-xs text-dark-text hover:bg-dark-hover`,children:[(0,X.jsx)(ie,{size:13,className:`shrink-0 text-accent-yellow/80`}),(0,X.jsx)(`span`,{className:`truncate`,children:e})]},e)})}),(0,X.jsx)(ue,{variant:`accent`,className:`w-full`,onClick:()=>r(c),disabled:!c,loading:g,children:i(`chat.dirPickerConfirm`)})]})]})]}):null}function Xt(){let{t:e}=S(),{automations:r,runsByAutomation:a,fetchAutomations:s,createAutomation:u,updateAutomation:v,deleteAutomation:ie,toggleAutomation:le,runAutomation:pe,fetchRuns:he,error:ge}=me(),[_e,T]=(0,q.useState)(!1),{visible:E,phase:ve}=de(_e),[be,D]=(0,q.useState)(null),[O,k]=(0,q.useState)(Q),[xe,Se]=(0,q.useState)(null),[A,j]=(0,q.useState)(``),[Ce,we]=(0,q.useState)(!1),[Ee,M]=fe(),De=async t=>{await M({message:e(`automation.deleteConfirm`,{name:t.name}),variant:`danger`})&&await ie(t.id)},[Oe,ke]=(0,q.useState)(!1),[N,Ae]=(0,q.useState)(Ht),[P,je]=(0,q.useState)(()=>new Date),[F,Me]=(0,q.useState)(()=>new Date),[Ne,Pe]=(0,q.useState)(null),I=e=>{Me(e),Pe(null)};(0,q.useEffect)(()=>{Ut(N)},[N]);let Fe=(0,q.useMemo)(()=>{if(N===`month`){let e=wt(P);return{from:e[0],to:e[e.length-1]}}if(N===`week`){let e=Tt(P);return{from:e[0],to:e[e.length-1]}}return null},[N,P]),L=(0,q.useMemo)(()=>Fe?_t(r,Fe.from,Fe.to):[],[r,Fe]),Ie=(0,q.useMemo)(()=>xt(L),[L]),R=(0,q.useMemo)(()=>Ie.get(bt(F))??[],[Ie,F]),Le=e=>{let t=N===`week`?Te(P,e):ye(P,e);je(t),(N===`week`?ct(F,t,{weekStartsOn:1}):lt(F,t))||I(t)},Re=()=>{let e=new Date;je(e),I(e)},ze=async(t,n)=>{let r=yt(t.automation,n);if(!r.ok){r.reason===`noop-day`?C.info(e(`automation.dragNoop`)):C.warning(e(`automation.dragLocked`));return}let i=Kt(t.automation.schedule,e);await v(t.automation.id,{schedule:r.schedule})&&(I(n),C.success(e(`automation.dragMoved`,{name:t.automation.name,from:i,to:Kt(r.schedule,e)})))},Be=(0,q.useMemo)(()=>{if(N===`week`){let e=Tt(P);return`${K(e[0],`yyyy-MM-dd`)} → ${K(e[e.length-1],`MM-dd`)}`}return K(P,`yyyy-MM`)},[N,P]),[Ve,He]=(0,q.useState)([]),[Ue,We]=(0,q.useState)([]),[Ge,z]=(0,q.useState)([]),[B,V]=(0,q.useState)([]),[Ke,qe]=(0,q.useState)(!1),[Je,H]=(0,q.useState)([]),[Ye,Xe]=(0,q.useState)(!1),[Ze,Qe]=(0,q.useState)(!1),$e=async()=>{if(Ye)return;Xe(!0);let e=await w.sessions.list().catch(()=>({success:!1,data:void 0}));e.success&&Array.isArray(e.data)&&H(e.data.filter(e=>!e.id.startsWith(`__automation_run__`)))},[U,W]=(0,q.useState)([]),et=(0,q.useRef)(null);(0,q.useEffect)(()=>{s()},[s]);let G=async e=>{D(null),k(e?{...e.form}:{...Q}),W([]),T(!0),await rt()},tt=async e=>{D(e.id),k(Wt(e)),W((e.attachments??[]).map((e,t)=>({id:`existing-${t}-${e}`,name:Jt(e),file:null,uploading:!1,path:e}))),T(!0),await rt(),e.runSessionMode===`fixed`&&$e()},nt=()=>{T(!1),D(null),k(Q),W([]),ke(!1)},rt=async()=>{Qe(!0);try{let e=w.templates?.list?w.templates.list().catch(()=>({success:!1,data:void 0})):Promise.resolve({success:!1,data:void 0}),[t,n,r,i]=await Promise.all([w.models.list().catch(()=>({success:!1,data:void 0})),w.connectors.list().catch(()=>({success:!1,data:void 0})),w.channels.list().catch(()=>({success:!1,data:void 0})),e]);t.success&&t.data?.models?He(t.data.models.filter(e=>e.enabled!==!1)):He([]),n.success&&n.data?.connectors?We(n.data.connectors.filter(e=>e.installed)):We([]),r.success&&Array.isArray(r.data)?z(r.data):z([]),i.success&&Array.isArray(i.data)?V(i.data):V([]),qe(!0)}finally{Qe(!1)}},it=e=>{k(t=>{if(t.jobKind===e)return t;let n=e===`agent`&&!zt(t.name);return{...t,jobKind:e,workflowTemplate:``,instructions:``,name:n?t.name:``}})},at=()=>{let e=B.find(e=>e.id===O.workflowTemplate),t={};for(let n of e?.inputs??[])t[n.name]=n.default===void 0?``:n.default;k(e=>({...e,instructions:JSON.stringify(t,null,2)}))},ot=async()=>{let t=Gt(O);if(!t)return;let n=O.jobKind===`workflow`;if(n&&!O.workflowTemplate)return;if(n){let t=O.instructions.trim();if(t){let n;try{n=JSON.parse(t)}catch{C.warning(e(`automation.workflowJsonInvalid`));return}if(!n||typeof n!=`object`||Array.isArray(n)){C.warning(e(`automation.workflowJsonNotObject`));return}}}else if(!O.name.trim()||!O.instructions.trim())return;if(U.some(e=>e.uploading)){C.warning(`附件上传中,请稍候…`);return}let r=U.filter(e=>e.error).map(e=>e.name);if(r.length>0){C.warning(`附件上传失败:${r.join(`, `)}`);return}we(!0);let i={name:n?`${Lt}${O.workflowTemplate}`:O.name.trim(),instructions:O.instructions.trim(),schedule:t,workspaceDir:O.workspaceDir.trim(),readAutoAllow:O.readAutoAllow,modelRef:O.modelRef.trim()||null,attachments:U.map(e=>e.path).filter(e=>!!e),connectorIds:[...O.connectorIds],notificationChannelIds:[...O.channelIds],runSessionMode:O.runSessionMode,runSessionId:O.runSessionMode===`fixed`&&O.runSessionId.trim()||null},a=be?await v(be,i):await u(i)!==null;we(!1),a&&nt()},st=async e=>{let t=A.trim();if(!t)return;let[n,...r]=t.split(/\s+/),i=r.join(` `);n&&i&&(await fetch(`/api/automations/${encodeURIComponent(e)}/permissions`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({tool:n,target:i})})).ok&&(j(``),await s())},ut=async(e,t)=>{(await fetch(`/api/automations/${encodeURIComponent(e)}/permissions`,{method:`DELETE`,headers:{"content-type":`application/json`},body:JSON.stringify({entry:t})})).ok&&await s()},ft=async e=>{let t=xe===e?null:e;Se(t),t&&await he(e)},pt=async e=>{if(!e||e.length===0)return;let t=Array.from(e).map(e=>({id:`f-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,name:e.name,file:e,uploading:!0}));W(e=>[...e,...t]);for(let e of t){let t=`${It}/${e.name}`;try{let n=await w.files.upload(e.file,t);if(n.success&&n.data?.path){let t=n.data.path.replace(/\\/g,`/`);W(n=>n.map(n=>n.id===e.id?{...n,uploading:!1,path:t}:n))}else W(t=>t.map(t=>t.id===e.id?{...t,uploading:!1,error:n.error||`upload failed`}:t))}catch(t){let n=t instanceof Error?t.message:`upload failed`;W(t=>t.map(t=>t.id===e.id?{...t,uploading:!1,error:n}:t))}}},J=e=>{W(t=>t.filter(t=>t.id!==e))},Y=[{id:`movie`,nameKey:`automation.tplMovieName`,descKey:`automation.tplMovieDesc`,form:{...Q,name:e(`automation.tplMovieName`),instructions:e(`automation.tplMovieInstr`),freq:`daily`,time:`20:00`}},{id:`health`,nameKey:`automation.tplHealthName`,descKey:`automation.tplHealthDesc`,form:{...Q,name:e(`automation.tplHealthName`),instructions:e(`automation.tplHealthInstr`),freq:`daily`,time:`14:00`}},{id:`why`,nameKey:`automation.tplWhyName`,descKey:`automation.tplWhyDesc`,form:{...Q,name:e(`automation.tplWhyName`),instructions:e(`automation.tplWhyInstr`),freq:`daily`,time:`16:00`}},{id:`git`,nameKey:`automation.tplGitName`,descKey:`automation.tplGitDesc`,form:{...Q,name:e(`automation.tplGitName`),instructions:e(`automation.tplGitInstr`),freq:`weekdays`,time:`09:00`}}],mt=B.find(e=>e.id===O.workflowTemplate),ht=(O.jobKind===`workflow`?!!O.workflowTemplate:!!(O.name.trim()&&O.instructions.trim()))&&(O.freq===`custom`?!!O.cron.trim():O.freq!==`once`||!!O.onceAt);return(0,X.jsxs)(`div`,{className:`flex-1 min-h-0 flex flex-col overflow-y-auto p-6`,children:[Ee,(0,X.jsxs)(`div`,{className:`max-w-7xl w-full mx-auto`,children:[(0,X.jsxs)(`div`,{className:`flex items-start justify-between mb-1`,children:[(0,X.jsxs)(`h2`,{className:`text-xl font-semibold flex items-center gap-2`,children:[(0,X.jsx)(ne,{size:20,className:`text-accent-blue`}),e(`automation.title`)]}),(0,X.jsx)(`button`,{onClick:()=>void s(),className:`p-2 rounded-lg hover:bg-dark-hover text-dark-muted`,title:e(`automation.refresh`),children:(0,X.jsx)(ee,{size:16})})]}),(0,X.jsx)(`p`,{className:`text-sm text-dark-muted mb-4`,children:e(`automation.subtitle`)}),(0,X.jsx)(`div`,{className:`mb-4`,children:r.length===0?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`mb-2 flex items-center gap-2`,children:[(0,X.jsx)(_,{size:15,className:`text-accent-yellow`}),(0,X.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`automation.recommendedTitle`)})]}),(0,X.jsx)(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2 xl:grid-cols-4`,children:Y.map(t=>(0,X.jsxs)(`button`,{onClick:()=>void G(t),className:`flex flex-col gap-1 rounded-xl border border-dark-border bg-dark-surface p-2.5 text-start transition-colors hover:border-accent-blue/60 hover:bg-dark-hover/50`,children:[(0,X.jsx)(`span`,{className:`text-xs font-semibold`,children:e(t.nameKey)}),(0,X.jsx)(`span`,{className:`text-meta leading-relaxed text-dark-muted line-clamp-1`,children:e(t.descKey)}),(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 self-start rounded bg-dark-hover px-1.5 py-0.5 text-badge text-dark-muted`,children:[(0,X.jsx)(ne,{size:11}),` `,Kt(Gt(t.form),e)]})]},t.id))})]}):(0,X.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-1.5 pe-1 text-meta font-medium text-dark-muted`,children:[(0,X.jsx)(_,{size:13,className:`text-accent-yellow`}),e(`automation.recommendedTitle`)]}),Y.map(t=>(0,X.jsxs)(`button`,{onClick:()=>void G(t),title:e(t.descKey),className:`flex items-center gap-1.5 rounded-lg border border-dark-border bg-dark-surface px-2 py-1 text-meta text-dark-muted transition-colors hover:border-accent-blue/60 hover:text-dark-text`,children:[(0,X.jsx)(y,{size:11}),e(t.nameKey),(0,X.jsx)(`span`,{className:`text-badge tabular-nums opacity-60`,children:Kt(Gt(t.form),e)})]},t.id))]})}),ge&&(0,X.jsxs)(`div`,{className:`mb-4 p-3 rounded-lg bg-accent-red/10 text-accent-red text-sm flex items-center gap-2`,children:[(0,X.jsx)(m,{size:16}),` `,ge]}),(0,X.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center gap-2`,children:[(0,X.jsx)(`div`,{className:`flex items-center rounded-lg border border-dark-border bg-dark-surface p-0.5`,children:Vt.map(({id:t,key:n,Icon:r})=>(0,X.jsxs)(`button`,{onClick:()=>Ae(t),"aria-pressed":N===t,className:`flex items-center gap-1 rounded-md px-2.5 py-1 text-xs transition-colors ${N===t?`bg-accent-blue/15 text-accent-blue font-medium`:`text-dark-muted hover:text-dark-text`}`,children:[(0,X.jsx)(r,{size:13}),` `,e(n)]},t))}),N!==`list`&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(`button`,{onClick:()=>Le(-1),title:e(`automation.prevPeriod`),className:`rounded-lg border border-dark-border bg-dark-surface p-1.5 text-dark-muted hover:text-dark-text`,children:(0,X.jsx)(c,{size:14})}),(0,X.jsx)(`button`,{onClick:Re,className:`rounded-lg border border-dark-border bg-dark-surface px-2 py-1.5 text-xs text-dark-muted hover:text-dark-text`,children:e(`automation.today`)}),(0,X.jsx)(`button`,{onClick:()=>Le(1),title:e(`automation.nextPeriod`),className:`rounded-lg border border-dark-border bg-dark-surface p-1.5 text-dark-muted hover:text-dark-text`,children:(0,X.jsx)(se,{size:14})})]}),(0,X.jsx)(`span`,{className:`text-sm font-medium tabular-nums`,children:Be})]}),(0,X.jsxs)(`div`,{className:`ms-auto flex items-center gap-2`,children:[(0,X.jsx)(`span`,{className:`text-xs text-dark-muted`,children:e(`automation.tasksCount`,{count:r.length})}),(0,X.jsxs)(`button`,{onClick:()=>void G(),className:`flex items-center gap-1 rounded-lg bg-accent-blue px-3 py-1.5 text-xs font-medium text-accent-fg hover:brightness-110`,children:[(0,X.jsx)(y,{size:14}),` `,e(`automation.new`)]})]})]}),N!==`list`&&(0,X.jsxs)(`div`,{className:`mb-6 flex flex-col gap-4 lg:flex-row lg:items-start`,children:[(0,X.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[N===`month`?(0,X.jsx)(jt,{anchor:P,selectedDay:F,byDay:Ie,onSelectDay:I,onFocusSlot:(e,t)=>{Me(e),Pe(t)},onMoveOccurrence:(e,t)=>void ze(e,t)}):(0,X.jsx)(Nt,{anchor:P,selectedDay:F,byDay:Ie,onSelectDay:I,onFocusSlot:(e,t)=>{Me(e),Pe(t)},onMoveOccurrence:(e,t)=>void ze(e,t)}),r.length===0&&(0,X.jsxs)(`div`,{className:`mt-3 flex items-center gap-2 rounded-lg border border-dashed border-dark-border px-3 py-2 text-xs text-dark-muted`,children:[(0,X.jsx)(t,{size:14}),e(`automation.emptyTitle`),` · `,e(`automation.emptyDesc`)]})]}),(0,X.jsx)(Ft,{day:F,occurrences:R,focusSlot:Ne,onClearFocus:()=>Pe(null),onEdit:e=>void tt(e),onRun:e=>void pe(e),onToggle:e=>void le(e.id,e.status!==`enabled`),onDelete:e=>void De(e),onCreate:()=>void G()})]}),N===`list`&&(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,X.jsx)(`h3`,{className:`text-sm font-semibold`,children:e(`automation.mineTitle`)}),(0,X.jsx)(`span`,{className:`text-xs text-dark-muted`,children:r.length})]}),r.length===0?(0,X.jsxs)(`div`,{className:`rounded-xl border border-dashed border-dark-border py-12 flex flex-col items-center gap-2 text-center`,children:[(0,X.jsx)(t,{size:32,className:`text-dark-muted`}),(0,X.jsx)(`p`,{className:`text-sm font-medium`,children:e(`automation.emptyTitle`)}),(0,X.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`automation.emptyDesc`)}),(0,X.jsxs)(`button`,{onClick:()=>void G(),className:`mt-2 flex items-center gap-1 px-4 py-1.5 rounded-lg border border-dark-border bg-dark-surface hover:bg-dark-hover text-sm font-medium`,children:[(0,X.jsx)(y,{size:15}),` `,e(`automation.new`)]})]}):(0,X.jsx)(`div`,{className:`space-y-2`,children:r.map(t=>(0,X.jsxs)(`div`,{className:`rounded-xl border border-dark-border bg-dark-surface`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between p-3`,children:[(0,X.jsxs)(`button`,{onClick:()=>void ft(t.id),className:`flex items-center gap-2 min-w-0 text-start`,children:[(0,X.jsx)(ne,{size:16,className:`text-accent-blue shrink-0`}),(0,X.jsx)(`span`,{className:`font-medium text-sm truncate`,children:t.name}),(0,X.jsx)(`span`,{className:`text-xs px-1.5 py-0.5 rounded shrink-0 ${t.status===`enabled`?`bg-accent-green/20 text-accent-green`:`bg-dark-hover text-dark-muted`}`,children:t.status===`enabled`?e(`automation.enabled`):e(`automation.disabled`)}),(0,X.jsx)(`span`,{className:`text-xs text-dark-muted shrink-0 hidden md:inline`,children:Kt(t.schedule,e)})]}),(0,X.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[t.nextRunAt&&(0,X.jsxs)(`span`,{className:`text-xs text-dark-muted hidden lg:inline me-1`,children:[e(`automation.nextRun`),`: `,new Date(t.nextRunAt).toLocaleString()]}),(0,X.jsx)(`button`,{onClick:()=>void tt(t),className:`p-1.5 rounded-lg hover:bg-dark-hover text-dark-muted`,title:e(`automation.edit`),children:(0,X.jsx)(h,{size:15})}),(0,X.jsx)(`button`,{onClick:()=>void le(t.id,t.status!==`enabled`),className:`p-1.5 rounded-lg hover:bg-dark-hover text-dark-muted`,title:t.status===`enabled`?e(`automation.disable`):e(`automation.enable`),children:(0,X.jsx)(x,{size:15})}),(0,X.jsx)(`button`,{onClick:()=>void pe(t.id),className:`p-1.5 rounded-lg hover:bg-dark-hover text-accent-green`,title:e(`automation.runNow`),children:(0,X.jsx)(p,{size:15})}),(0,X.jsx)(`button`,{onClick:()=>void De(t),className:`p-1.5 rounded-lg hover:bg-dark-hover text-accent-red`,title:e(`automation.delete`),children:(0,X.jsx)(d,{size:15})})]})]}),xe===t.id&&(0,X.jsxs)(`div`,{className:`px-3 pb-3 space-y-3 border-t border-dark-border pt-3`,children:[zt(t.name)?(0,X.jsxs)(`div`,{className:`space-y-1`,children:[(0,X.jsxs)(`p`,{className:`text-xs text-dark-muted flex items-center gap-1.5`,children:[(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-1.5 py-0.5 rounded bg-accent-blue/10 text-accent-blue`,children:[(0,X.jsx)(g,{size:11}),` `,e(`automation.jobKindWorkflow`)]}),(0,X.jsx)(`code`,{children:zt(t.name)})]}),t.instructions.trim()&&(0,X.jsx)(`pre`,{className:`text-badge text-dark-muted whitespace-pre-wrap font-mono`,children:t.instructions})]}):(0,X.jsx)(`p`,{className:`text-xs text-dark-muted whitespace-pre-wrap`,children:t.instructions}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`h4`,{className:`text-xs font-semibold text-dark-muted mb-1 flex items-center gap-1`,children:[(0,X.jsx)(ae,{size:12}),` `,e(`automation.historyTitle`)]}),(a[t.id]||[]).length===0&&(0,X.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`automation.noRuns`)}),(a[t.id]||[]).slice(0,10).map(e=>(0,X.jsxs)(`div`,{className:`flex items-center gap-2 text-xs py-1`,children:[(0,X.jsxs)(`span`,{className:`px-1.5 py-0.5 rounded flex items-center gap-1 ${e.status===`ok`?`bg-accent-green/20 text-accent-green`:e.status===`error`?`bg-accent-red/20 text-accent-red`:`bg-accent-yellow/20 text-accent-yellow`}`,children:[e.status===`ok`&&(0,X.jsx)(te,{size:11}),e.status]}),(0,X.jsx)(`span`,{className:`text-dark-muted`,children:new Date(e.startedAt).toLocaleString()}),(0,X.jsxs)(`span`,{className:`text-dark-muted truncate flex-1`,children:[`#`,e.id.slice(0,8),` · `,e.trigger]})]},e.id))]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`h4`,{className:`text-xs font-semibold text-dark-muted mb-1`,children:e(`automation.permissionsTitle`)}),t.permissions.length===0&&(0,X.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`automation.permissionsEmpty`)}),(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1 mb-1`,children:t.permissions.map(e=>(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded bg-accent-blue/10 text-accent-blue text-xs`,children:[e,(0,X.jsx)(`button`,{onClick:()=>void ut(t.id,e),className:`hover:text-accent-red`,children:(0,X.jsx)(b,{size:12})})]},e))}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(`input`,{value:A,onChange:e=>j(e.target.value),placeholder:e(`automation.permissionPlaceholder`),className:`flex-1 px-2 py-1.5 rounded-lg bg-dark-bg border border-dark-border text-xs focus:outline-none focus:border-accent-blue`}),(0,X.jsx)(`button`,{onClick:()=>void st(t.id),className:`px-3 py-1.5 rounded-lg bg-dark-hover text-dark-muted hover:text-dark-text text-xs`,children:e(`automation.add`)})]})]})]})]},t.id))})]})]}),E&&(0,X.jsxs)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4`,onClick:nt,children:[(0,X.jsx)(`div`,{className:`absolute inset-0 ui-scrim ui-overlay-backdrop`,"data-phase":ve,"aria-hidden":`true`}),(0,X.jsxs)(`div`,{className:`relative w-full max-w-2xl rounded-xl border border-dark-border bg-dark-overlay ui-surface-overlay p-5 space-y-4 shadow-pop max-h-[90vh] overflow-y-auto custom-scrollbar ui-overlay-panel`,"data-phase":ve,onClick:e=>e.stopPropagation(),children:[(0,X.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`h3`,{className:`text-base font-semibold`,children:e(be?`automation.editTitle`:`automation.createTitle`)}),(0,X.jsx)(`p`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`automation.subtitle`)})]}),(0,X.jsx)(`button`,{onClick:nt,className:`p-1.5 rounded-lg hover:bg-dark-hover text-dark-muted`,children:(0,X.jsx)(b,{size:16})})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.jobKindLabel`)}),(0,X.jsx)(`div`,{className:`flex gap-1.5`,children:[{id:`agent`,label:e(`automation.jobKindAgent`),hint:e(`automation.jobKindAgentHint`)},{id:`workflow`,label:e(`automation.jobKindWorkflow`),hint:e(`automation.jobKindWorkflowHint`)}].map(e=>{let t=O.jobKind===e.id;return(0,X.jsxs)(`button`,{type:`button`,title:e.hint,onClick:()=>it(e.id),className:`flex-1 px-3 py-2 rounded-lg border text-sm flex items-center justify-center gap-1.5 ${t?`border-accent-blue bg-accent-blue/10 text-accent-blue`:`border-dark-border bg-dark-surface text-dark-muted hover:bg-dark-hover`}`,children:[e.id===`workflow`?(0,X.jsx)(g,{size:13}):(0,X.jsx)(_,{size:13}),e.label]},e.id)})})]}),O.jobKind===`workflow`&&(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.workflowTemplateLabel`)}),(0,X.jsxs)(`select`,{value:O.workflowTemplate,onChange:e=>{let t=e.target.value;k(e=>({...e,workflowTemplate:t,name:t?`${Lt}${t}`:``}))},className:`w-full px-3 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,children:[(0,X.jsx)(`option`,{value:``,children:e(`automation.workflowTemplateNone`)}),B.map(e=>(0,X.jsx)(`option`,{value:e.id,children:(e.nameOverride||e.name||e.id)+(e.category?` · ${e.category}`:``)},e.id))]}),Ke&&B.length===0&&(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.workflowTemplateEmpty`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.nameLabel`)}),(0,X.jsx)(`input`,{autoFocus:O.jobKind===`agent`,value:O.name,onChange:e=>k(t=>({...t,name:e.target.value})),placeholder:e(`automation.namePlaceholder`),disabled:O.jobKind===`workflow`,className:`w-full px-3 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue disabled:opacity-60`}),O.jobKind===`workflow`&&(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.workflowNameHint`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.scheduleLabel`)}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsxs)(`select`,{value:O.freq,onChange:e=>k(t=>({...t,freq:e.target.value})),className:`px-2.5 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,children:[(0,X.jsx)(`option`,{value:`daily`,children:e(`automation.freqDaily`)}),(0,X.jsx)(`option`,{value:`weekly`,children:e(`automation.freqWeekly`)}),(0,X.jsx)(`option`,{value:`weekdays`,children:e(`automation.freqWeekdays`)}),(0,X.jsx)(`option`,{value:`once`,children:e(`automation.freqOnce`)}),(0,X.jsx)(`option`,{value:`custom`,children:e(`automation.freqCustom`)})]}),O.freq===`weekly`&&(0,X.jsx)(`select`,{value:O.dow,onChange:e=>k(t=>({...t,dow:e.target.value})),className:`px-2.5 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,children:qt.map(t=>(0,X.jsx)(`option`,{value:t.value,children:e(t.key)},t.value))}),(O.freq===`daily`||O.freq===`weekly`||O.freq===`weekdays`)&&(0,X.jsx)(`input`,{type:`time`,value:O.time,onChange:e=>k(t=>({...t,time:e.target.value})),className:`flex-1 px-3 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`}),O.freq===`once`&&(0,X.jsx)(`input`,{type:`datetime-local`,value:O.onceAt,onChange:e=>k(t=>({...t,onceAt:e.target.value})),className:`flex-1 px-3 py-2 rounded-lg bg-dark-surface border border-dark-border text-sm focus:outline-none focus:border-accent-blue`}),O.freq===`custom`&&(0,X.jsx)(`input`,{value:O.cron,onChange:e=>k(t=>({...t,cron:e.target.value})),placeholder:`*/30 * * * *`,className:`flex-1 px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm font-mono focus:outline-none focus:border-accent-blue`})]})]}),O.jobKind===`agent`?(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`label`,{className:`block text-xs font-medium text-dark-muted mb-1.5`,children:e(`automation.instructionLabel`)}),(0,X.jsx)(`textarea`,{value:O.instructions,onChange:e=>k(t=>({...t,instructions:e.target.value})),placeholder:e(`automation.instructionsPlaceholder`),rows:4,className:`w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm focus:outline-none focus:border-accent-blue resize-none`})]}):(0,X.jsxs)(`div`,{className:`rounded-lg border border-dark-border bg-dark-surface/40 p-3 space-y-2`,children:[(0,X.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,X.jsx)(`label`,{className:`text-xs font-medium text-dark-muted`,children:e(`automation.workflowInputsLabel`)}),(mt?.inputs.length??0)>0&&(0,X.jsx)(`button`,{type:`button`,onClick:at,className:`text-badge text-accent-blue hover:underline`,children:e(`automation.workflowInputsFillDefaults`)})]}),mt&&mt.inputs.length>0?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`ul`,{className:`space-y-0.5`,children:mt.inputs.map(e=>(0,X.jsxs)(`li`,{className:`text-badge text-dark-muted`,children:[(0,X.jsx)(`code`,{className:`text-accent-blue`,children:e.name}),e.label&&(0,X.jsx)(`span`,{className:`ms-1`,children:e.label}),e.required&&(0,X.jsx)(`span`,{className:`ms-1 text-accent-red`,children:`*`}),e.description&&(0,X.jsxs)(`span`,{className:`ms-1 text-dark-muted/60`,children:[`— `,e.description]})]},e.name))}),(0,X.jsx)(`textarea`,{value:O.instructions,onChange:e=>k(t=>({...t,instructions:e.target.value})),placeholder:`{
2
+ "key": "value"
3
+ }`,rows:4,className:`w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-xs font-mono focus:outline-none focus:border-accent-blue resize-none`}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70`,children:e(`automation.workflowInputsHint`)})]}):(0,X.jsx)(`p`,{className:`text-xs text-dark-muted/70`,children:e(`automation.workflowNoInputs`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(ce,{size:12}),` `,e(`automation.attachmentsLabel`)]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.attachmentsHint`)}),U.length===0?(0,X.jsx)(`div`,{className:`text-xs text-dark-muted/60 italic`,children:e(`automation.attachmentsEmpty`)}):(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1.5 mb-2`,children:U.map(e=>(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 px-2 py-1 rounded-md text-xs ${e.error?`bg-accent-red/10 text-accent-red`:e.uploading?`bg-dark-hover text-dark-muted`:`bg-accent-blue/10 text-accent-blue`}`,title:e.path??e.error,children:[(0,X.jsx)(ce,{size:11}),(0,X.jsx)(`span`,{className:`truncate max-w-[180px]`,children:e.name}),e.uploading&&(0,X.jsx)(l,{size:11,className:`animate-spin`}),e.error&&(0,X.jsx)(m,{size:11}),(0,X.jsx)(`button`,{onClick:()=>J(e.id),className:`hover:text-accent-red ms-0.5`,children:(0,X.jsx)(b,{size:11})})]},e.id))}),(0,X.jsx)(`input`,{ref:et,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{pt(e.target.files),e.target.value=``}}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>et.current?.click(),className:`inline-flex items-center gap-1 px-2.5 py-1 rounded-lg border border-dashed border-dark-border text-xs text-dark-muted hover:border-accent-blue/60 hover:text-accent-blue`,children:[(0,X.jsx)(y,{size:12}),` `,e(`automation.attachmentsAdd`)]})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(n,{size:12}),` `,e(`automation.modelLabel`)]}),(0,X.jsxs)(`select`,{value:O.modelRef,onChange:e=>k(t=>({...t,modelRef:e.target.value})),className:`w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm focus:outline-none focus:border-accent-blue disabled:opacity-50 disabled:cursor-not-allowed`,disabled:Ze||O.runSessionMode!==`new`,children:[(0,X.jsx)(`option`,{value:``,children:e(`automation.modelAuto`)}),Ve.map(e=>(0,X.jsxs)(`option`,{value:`${e.provider}:${e.id}`,children:[e.name,` · `,e.provider]},`${e.provider}:${e.id}`))]}),O.runSessionMode!==`new`&&(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.modelFollowsSession`)}),!Ze&&Ve.length===0&&(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.modelNoModels`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(f,{size:12}),` `,e(`automation.runSessionLabel`)]}),(0,X.jsxs)(`select`,{value:O.runSessionMode,onChange:e=>{let t=e.target.value;k(e=>({...e,runSessionMode:t})),t===`fixed`&&$e()},className:`w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,children:[(0,X.jsx)(`option`,{value:`home`,children:e(`automation.runSessionHome`)}),(0,X.jsx)(`option`,{value:`new`,children:e(`automation.runSessionNew`)}),(0,X.jsx)(`option`,{value:`fixed`,children:e(`automation.runSessionFixed`)})]}),O.runSessionMode===`fixed`&&(0,X.jsxs)(`select`,{value:O.runSessionId,onChange:e=>k(t=>({...t,runSessionId:e.target.value})),className:`mt-2 w-full px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm focus:outline-none focus:border-accent-blue`,disabled:Ze,children:[(0,X.jsx)(`option`,{value:``,children:e(`automation.runSessionPick`)}),Je.map(e=>(0,X.jsx)(`option`,{value:e.id,children:e.title||e.id},e.id))]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mt-1`,children:e(`automation.runSessionHint`)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(re,{size:12}),` `,e(`automation.connectorsLabel`)]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.connectorsHint`)}),Ue.length===0?(0,X.jsx)(`div`,{className:`text-xs text-dark-muted/60 italic`,children:e(`automation.connectorsEmpty`)}):(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Ue.map(e=>{let t=O.connectorIds.includes(e.id);return(0,X.jsxs)(`button`,{type:`button`,onClick:()=>k(n=>({...n,connectorIds:t?n.connectorIds.filter(t=>t!==e.id):[...n.connectorIds,e.id]})),className:`inline-flex items-center gap-1 px-2 py-1 rounded-md text-xs transition-colors ${t?`bg-accent-blue/15 text-accent-blue border border-accent-blue/40`:`bg-dark-bg text-dark-muted border border-dark-border hover:border-accent-blue/40 hover:text-accent-blue`}`,children:[(0,X.jsx)(re,{size:11}),e.name]},e.id)})})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(i,{size:12}),` `,e(`automation.channelsLabel`)]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.channelsHint`)}),Ge.length===0?(0,X.jsx)(`div`,{className:`text-xs text-dark-muted/60 italic`,children:e(`automation.channelsEmpty`)}):(0,X.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Ge.map(e=>{let t=O.channelIds.includes(e.id);return(0,X.jsxs)(`button`,{type:`button`,disabled:!e.enabled,onClick:()=>k(n=>({...n,channelIds:t?n.channelIds.filter(t=>t!==e.id):[...n.channelIds,e.id]})),className:`inline-flex items-center gap-1 px-2 py-1 rounded-md text-xs transition-colors ${t?`bg-accent-blue/15 text-accent-blue border border-accent-blue/40`:e.enabled?`bg-dark-bg text-dark-muted border border-dark-border hover:border-accent-blue/40 hover:text-accent-blue`:`bg-dark-bg text-dark-muted/50 border border-dark-border opacity-60 cursor-not-allowed`}`,children:[(0,X.jsx)(i,{size:11}),e.name,!e.enabled&&(0,X.jsx)(`span`,{className:`text-avatar`,children:`·off`})]},e.id)})})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(oe,{size:12}),` `,e(`automation.workspaceLabel`)]}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/70 mb-1.5`,children:e(`automation.workspaceHint`)}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(`input`,{value:O.workspaceDir,onChange:e=>k(t=>({...t,workspaceDir:e.target.value})),placeholder:`留空使用当前工作目录`,className:`flex-1 px-3 py-2 rounded-lg bg-dark-bg border border-dark-border text-sm font-mono focus:outline-none focus:border-accent-blue`}),(0,X.jsxs)(`button`,{type:`button`,onClick:()=>ke(!0),className:`shrink-0 inline-flex items-center gap-1 px-3 py-2 rounded-lg border border-dark-border text-xs text-dark-muted hover:bg-dark-hover hover:text-dark-text`,children:[(0,X.jsx)(oe,{size:12}),` `,e(`automation.workspacePick`)]}),O.workspaceDir&&(0,X.jsx)(`button`,{type:`button`,onClick:()=>k(e=>({...e,workspaceDir:``})),className:`shrink-0 inline-flex items-center gap-1 px-2 py-2 rounded-lg border border-dark-border text-xs text-dark-muted hover:bg-dark-hover hover:text-accent-red`,title:e(`automation.workspaceClear`),children:(0,X.jsx)(b,{size:12})})]})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs font-medium text-dark-muted mb-1.5`,children:[(0,X.jsx)(o,{size:12}),` `,e(`automation.permissionAccess`)]}),(0,X.jsxs)(`div`,{className:`flex items-start gap-2 p-2.5 rounded-lg border border-dark-border bg-dark-bg`,children:[(0,X.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":O.readAutoAllow,onClick:()=>k(e=>({...e,readAutoAllow:!e.readAutoAllow})),className:`relative shrink-0 mt-0.5 inline-flex h-5 w-9 items-center rounded-full transition-colors ${O.readAutoAllow?`bg-accent-blue`:`bg-dark-hover`}`,children:(0,X.jsx)(`span`,{className:`inline-block h-4 w-4 transform rounded-full bg-white transition-transform ${O.readAutoAllow?`translate-x-4`:`translate-x-0.5`}`})}),(0,X.jsxs)(`div`,{className:`flex-1`,children:[(0,X.jsx)(`div`,{className:`text-xs font-medium text-dark-text`,children:e(`automation.fullAccessLabel`)}),(0,X.jsx)(`p`,{className:`text-badge text-dark-muted/80 mt-0.5`,children:e(`automation.fullAccessHint`)})]})]})]}),(0,X.jsxs)(`div`,{className:`flex justify-end gap-2 pt-1`,children:[(0,X.jsx)(`button`,{onClick:nt,className:`px-4 py-2 rounded-lg bg-dark-hover text-dark-muted hover:text-dark-text text-sm`,children:e(`automation.cancel`)}),(0,X.jsx)(ue,{variant:`accent`,onClick:()=>void ot(),disabled:!ht,loading:Ce,children:e(`automation.save`)})]})]})]}),(0,dt.createPortal)((0,X.jsx)(Yt,{isOpen:Oe&&_e,initial:O.workspaceDir||``,onClose:()=>ke(!1),onConfirm:e=>{k(t=>({...t,workspaceDir:e})),ke(!1)}}),document.body)]})}export{Xt as AutomationView};
@@ -0,0 +1,8 @@
1
+ import{i as e,t}from"./rolldown-runtime-COiEfhsA.js";import{Gr as n,Kr as r,Z as i,_ as a,a as o,at as s,h as c,lt as l,nt as u,o as d,ut as f,wn as p}from"./icons-CYDRRPKW.js";import{t as m}from"./useTranslation-B-mfApCn.js";import{a as h,c as g,r as _,t as v}from"./useConfirm-Da8iQ_DZ.js";import{t as y}from"./api-plEYhRn0.js";import{I as b}from"./markdown-N5__3T-w.js";import"./common-Bbatsa0-.js";import{n as x,r as S,t as C}from"./channelMeta-BGQXQxgj.js";import{m as w}from"./index-CTbLW314.js";var T=e(r(),1),E=b(),D=[{labelKey:`im`,types:[`wechat`,`feishu`,`dingtalk`]},{labelKey:`international`,types:[`telegram`,`discord`,`slack`,`signal`,`whatsapp`]},{labelKey:`eastAsia`,types:[`line`,`qqbot`]},{labelKey:`collaboration`,types:[`matrix`,`mattermost`,`msteams`,`googlechat`]},{labelKey:`classic`,types:[`irc`,`imessage`,`sms`]},{labelKey:`other`,types:[`nextcloud-talk`,`nostr`,`synology-chat`,`tlon`,`twitch`,`zalo`,`zalouser`]},{labelKey:`builtin`,types:[`clickclack`,`raft`,`qa-channel`]}];function O(){let{t:e}=m(),{channels:t,availableTypes:n,typesLoaded:r,selectedType:i,selectType:a,loadTypes:o}=w();(0,T.useEffect)(()=>{o()},[o]);let s=(0,T.useMemo)(()=>{if(n.length===0)return[];let e=new Set(n),t=D.map(t=>({...t,types:t.types.filter(t=>e.has(t))})).filter(e=>e.types.length>0),r=new Set(D.flatMap(e=>e.types)),i=n.filter(e=>!r.has(e));return i.length>0?[...t,{labelKey:`plugins`,types:i}]:t},[n]),c=(0,T.useMemo)(()=>{let e=new Map;for(let n of t){let t=e.get(n.type)??{count:0,connected:0};e.set(n.type,{count:t.count+1,connected:t.connected+ +!!n.connected})}return e},[t]),l=n.length>0,u=(0,T.useMemo)(()=>l?t.filter(e=>n.includes(e.type)):[],[l,t,n]);return(0,E.jsxs)(`div`,{className:`flex flex-col h-full min-h-0 border-e border-dark-border bg-dark-surface`,children:[(0,E.jsxs)(`div`,{className:`shrink-0 px-4 py-3 border-b border-dark-border`,children:[(0,E.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-dark-muted`,children:e(`channels.sidebar.title`)}),(0,E.jsx)(`p`,{className:`text-meta text-dark-muted mt-0.5`,children:u.length>0?e(`channels.sidebar.configuredCount`,{n:u.length}):e(l?`channels.sidebar.clickToConfigure`:`channels.sidebar.emptyHint`)})]}),(0,E.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar`,children:[r&&!l&&(0,E.jsxs)(`div`,{className:`px-4 py-10 text-center`,children:[(0,E.jsx)(`p`,{className:`text-xs text-dark-muted`,children:e(`channels.sidebar.empty`)}),(0,E.jsx)(`p`,{className:`text-meta text-dark-muted/70 mt-1.5 leading-relaxed`,children:e(`channels.sidebar.emptyHint`)})]}),s.map(t=>{let n=t.types.filter(e=>c.has(e));return n.length===0?null:(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`sticky top-0 bg-dark-surface/95 backdrop-blur px-4 py-1.5 text-badge font-semibold uppercase tracking-wider text-dark-muted/60`,children:e(`channels.categories.${t.labelKey}`)}),n.map(e=>{let t=c.get(e);return(0,E.jsx)(k,{label:x(e),icon:C(e),isSelected:i===e,experimental:S(e),info:t,onClick:()=>a(e)},e)})]},t.labelKey)}),(()=>{let t=s.flatMap(e=>e.types).filter(e=>!c.has(e));return t.length===0?null:(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`sticky top-0 bg-dark-surface/95 backdrop-blur px-4 py-1.5 text-badge font-semibold uppercase tracking-wider text-dark-muted/60`,children:e(`channels.sidebar.unconfigured`)}),t.map(e=>(0,E.jsx)(k,{label:x(e),icon:C(e),isSelected:i===e,experimental:S(e),onClick:()=>a(e)},e))]})})()]})]})}function k({label:e,icon:t,isSelected:n,experimental:r,info:i,onClick:a}){let{t:s}=m();return(0,E.jsxs)(`button`,{onClick:a,className:`w-full flex items-center gap-2.5 px-4 py-2.5 text-start transition-colors hover:bg-dark-hover ${n?`bg-accent-blue/10 border-s-2 border-accent-blue`:`border-s-2 border-transparent`}`,children:[(0,E.jsx)(`span`,{className:`text-lg shrink-0 w-7 h-7 flex items-center justify-center rounded-md bg-dark-bg`,children:t}),(0,E.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,E.jsx)(`span`,{className:`text-sm font-medium text-dark-text truncate`,children:e}),r&&(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-avatar text-accent-yellow bg-accent-yellow/15 px-1 py-0.5 rounded shrink-0`,title:s(`channels.experimentalTip`),children:[(0,E.jsx)(p,{className:`w-2.5 h-2.5`}),` `,s(`channels.experimentalShort`)]}),i&&(0,E.jsx)(`span`,{className:`text-badge text-dark-muted bg-dark-hover px-1.5 py-0.5 rounded shrink-0`,children:i.count})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-1 mt-0.5`,children:i?i.connected>0?(0,E.jsxs)(`span`,{className:`flex items-center gap-1 text-meta text-accent-green`,children:[(0,E.jsx)(o,{className:`w-3 h-3`}),i.connected===i.count?s(`channels.status.connected`):s(`channels.sidebar.partialConnected`,{connected:i.connected,count:i.count})]}):(0,E.jsxs)(`span`,{className:`flex items-center gap-1 text-meta text-dark-muted`,children:[(0,E.jsx)(d,{className:`w-3 h-3`}),s(`channels.status.disconnected`)]}):(0,E.jsx)(`span`,{className:`text-meta text-dark-muted`,children:s(`channels.sidebar.unconfigured`)})})]})]})}var A={name:``,type:`wechat`,appId:``,appSecret:``,token:``,encodingAESKey:``,enabled:!0};function j(){let{t:e}=m(),[t,n]=v(),{channels:r,selectedType:i,availableTypes:a,create:o,update:u,remove:d,toggle:g,error:_,clearError:y,openQr:b,load:D,test:O,testResult:k,testing:j}=w(),P=(0,T.useMemo)(()=>a.length>0&&!!i&&!a.includes(i),[a,i]),F=(0,T.useMemo)(()=>i?r.filter(e=>e.type===i):[],[r,i]),[I,L]=(0,T.useState)(``),[R,z]=(0,T.useState)(A),[B,V]=(0,T.useState)(!1),H=I===`__new__`,U=(0,T.useMemo)(()=>H?null:F.find(e=>e.id===I)??null,[F,I,H]);(0,T.useEffect)(()=>{L(``),z(A),V(!1),y()},[i]),(0,T.useEffect)(()=>{i===`wechat`&&F.length===0&&!P&&b(null)},[i,F.length,P,b]),(0,T.useEffect)(()=>{U?z({name:U.name,type:U.type,appId:U.appId||``,appSecret:``,token:``,encodingAESKey:U.encodingAESKey||``,enabled:U.enabled}):H&&z(e=>({...e,type:i}))},[I]);let W=(e,t)=>{y(),z(n=>({...n,[e]:t}))},G=e=>{L(e),y()},K=()=>{L(`__new__`),z({...A,type:i}),y()},q=()=>{L(``),z(A),y()},J=async()=>{if(!R.name.trim())return;V(!0);let e=U?await u(U.id,R):await o(R);V(!1),e&&(L(``),z(A))},Y=async t=>{await n({message:e(`channels.actions.deleteConfirmShort`),variant:`danger`})&&await d(t)&&I===t&&(L(``),z(A))},X=(e,t)=>{g(e,t)};return i?(0,E.jsxs)(`div`,{className:`flex-1 flex flex-col min-h-0 overflow-hidden`,children:[t,(0,E.jsx)(`div`,{className:`shrink-0 px-6 py-4 border-b border-dark-border`,children:(0,E.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,E.jsx)(`span`,{className:`text-2xl`,children:C(i)}),(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(`h2`,{className:`font-semibold text-base text-dark-text`,children:x(i)}),S(i)&&(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-badge text-accent-yellow bg-accent-yellow/15 px-1.5 py-0.5 rounded`,title:e(`channels.experimentalTip`),children:[(0,E.jsx)(p,{className:`w-3 h-3`}),` `,e(`channels.experimentalLabel`)]})]}),(0,E.jsx)(`p`,{className:`text-xs text-dark-muted mt-0.5`,children:F.length>0?e(`channels.instancesCount`,{n:F.length}):e(`channels.notConfiguredYet`)}),S(i)&&(0,E.jsx)(`p`,{className:`text-badge text-accent-yellow mt-1`,children:e(`channels.experimentalDesc`)})]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(`button`,{onClick:()=>D(),className:`text-xs px-3 py-1.5 rounded-lg border border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:e(`channels.actions.refresh`)}),(0,E.jsx)(h,{size:`sm`,variant:`accent`,onClick:K,leftIcon:(0,E.jsx)(l,{className:`w-3.5 h-3.5`}),children:e(`channels.createInstance`)})]})]})}),_&&(0,E.jsxs)(`div`,{className:`shrink-0 mx-6 mt-3 bg-accent-red/15 border border-accent-red text-accent-red px-3 py-2 rounded-lg text-sm flex justify-between items-center`,children:[(0,E.jsx)(`span`,{children:_}),(0,E.jsx)(`button`,{onClick:y,className:`text-accent-red hover:text-accent-red`,children:(0,E.jsx)(`span`,{className:`w-4 h-4 inline-flex items-center justify-center`,children:`×`})})]}),P&&(0,E.jsxs)(`div`,{className:`shrink-0 mx-6 mt-3 flex items-start gap-2 bg-accent-yellow/15 border border-accent-yellow text-accent-yellow px-3 py-2 rounded-lg text-xs`,children:[(0,E.jsx)(c,{className:`w-3.5 h-3.5 mt-0.5 shrink-0`}),(0,E.jsx)(`span`,{children:e(`channels.pluginMissingWarning`,{name:i===`wechat`?` WeChat Channel`:` ${x(i)}`})})]}),(0,E.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar p-6`,children:[F.length>1&&!H&&(0,E.jsxs)(`div`,{className:`mb-4`,children:[(0,E.jsx)(`label`,{className:`block text-xs text-dark-muted mb-1.5`,children:e(`channels.selectInstance`)}),(0,E.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[F.map(e=>(0,E.jsxs)(`button`,{onClick:()=>G(e.id),className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs border transition-colors ${I===e.id?`bg-accent-blue/10 border-accent-blue/40 text-accent-blue`:`border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover`}`,children:[(0,E.jsx)(`span`,{className:`w-1.5 h-1.5 rounded-full ${e.connected?`bg-accent-green`:`bg-dark-muted`}`}),e.name]},e.id)),(0,E.jsxs)(`button`,{onClick:K,className:`flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-xs border border-dashed border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:[(0,E.jsx)(l,{className:`w-3 h-3`}),` `,e(`channels.createShort`)]})]})]}),F.length===0&&I===``&&(0,E.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-12 text-center`,children:[(0,E.jsx)(`div`,{className:`text-4xl mb-3`,children:C(i)}),(0,E.jsx)(`p`,{className:`text-dark-text font-medium`,children:e(`channels.emptyWithType`,{type:x(i)})}),(0,E.jsx)(`p`,{className:`text-sm text-dark-muted mt-1 mb-4`,children:e(i===`wechat`?`channels.wechatBindHint`:`channels.startWithCreate`)}),i===`wechat`&&(0,E.jsxs)(`button`,{onClick:()=>b(null),className:`flex items-center gap-1.5 text-sm px-4 py-2 rounded-lg bg-accent-green/15 hover:bg-accent-green/15 text-accent-green border border-accent-green transition-colors mb-3`,children:[(0,E.jsx)(s,{className:`w-4 h-4`}),` `,e(`channels.scanToBind`)]}),(0,E.jsx)(h,{variant:`accent`,onClick:K,leftIcon:(0,E.jsx)(l,{className:`w-4 h-4`}),children:e(`channels.createInstance`)})]}),F.length===1&&I===``&&F[0]&&(0,E.jsx)(M,{channel:F[0],onEdit:()=>G(F[0].id),onDelete:()=>Y(F[0].id),onToggle:e=>X(F[0].id,e),onQr:()=>b(F[0]),onTest:()=>O(F[0].id),testResult:k[F[0].id],testing:j===F[0].id}),F.length>1&&I===``&&(0,E.jsx)(`div`,{className:`space-y-3`,children:F.map(e=>(0,E.jsx)(M,{channel:e,onEdit:()=>G(e.id),onDelete:()=>Y(e.id),onToggle:t=>X(e.id,t),onQr:()=>b(e),onTest:()=>O(e.id),testResult:k[e.id],testing:j===e.id},e.id))}),I!==``&&(H||U)&&(0,E.jsx)(N,{form:R,upd:W,saving:B,editing:!!U,channel:U??void 0,onSave:J,onCancel:q,onDelete:U?()=>Y(U.id):void 0,onQr:U?()=>b(U):void 0})]})]}):(0,E.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,E.jsxs)(`div`,{className:`text-center`,children:[(0,E.jsx)(f,{className:`w-12 h-12 mx-auto mb-3 text-dark-muted/40`}),(0,E.jsx)(`p`,{className:`text-dark-muted text-sm`,children:e(`channels.selectTypeHint`)})]})})}function M({channel:e,onEdit:t,onDelete:r,onToggle:i,onQr:l,onTest:u,testResult:f,testing:p}){let{t:h}=m();return(0,E.jsxs)(`div`,{className:`border border-dark-border rounded-lg bg-dark-surface overflow-hidden`,children:[(0,E.jsx)(`div`,{className:`p-5`,children:(0,E.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`h3`,{className:`font-medium text-dark-text`,children:e.name}),(0,E.jsxs)(`div`,{className:`flex items-center gap-3 mt-2`,children:[(0,E.jsx)(`span`,{className:`flex items-center gap-1 text-xs ${e.connected?`text-accent-green`:`text-dark-muted`}`,children:e.connected?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(o,{className:`w-3 h-3`}),` `,h(`channels.status.connected`)]}):(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(d,{className:`w-3 h-3`}),` `,h(`channels.status.disconnected`)]})}),(0,E.jsxs)(`span`,{className:`text-xs text-dark-muted`,children:[`AppID: `,e.appId||`—`]}),e.implementationStatus===`OUTBOUND_ONLY`&&(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 text-badge text-accent-yellow bg-accent-yellow/15 px-1.5 py-0.5 rounded`,title:h(`channels.outboundOnlyTip`),children:[(0,E.jsx)(c,{className:`w-3 h-3`}),` `,h(`channels.outboundOnlyLabel`)]})]}),f&&(0,E.jsxs)(`p`,{className:`mt-1.5 text-xs ${f.ok?`text-accent-green`:`text-accent-red`}`,children:[f.detail??(f.ok?h(`channels.actions.testPassed`):h(`channels.actions.testFailed`)),typeof f.latencyMs==`number`&&f.ok?` · ${f.latencyMs}ms`:``]})]}),(0,E.jsx)(`button`,{onClick:()=>i(!e.enabled),className:`w-9 h-5 rounded-full relative transition-colors shrink-0 ${e.enabled?`bg-accent-green`:`bg-dark-muted`}`,children:(0,E.jsx)(`span`,{className:`absolute top-0.5 w-4 h-4 bg-white rounded-full transition-all ${e.enabled?`start-[18px]`:`start-0.5`}`})})]})}),(0,E.jsxs)(`div`,{className:`flex items-center gap-1 px-5 py-2.5 bg-dark-bg/50 border-t border-dark-border`,children:[e.type===`wechat`&&(0,E.jsxs)(`button`,{onClick:l,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-green hover:bg-accent-green/15 transition-colors`,children:[(0,E.jsx)(s,{className:`w-3.5 h-3.5`}),` `,h(`channels.actions.qrLogin`)]}),(0,E.jsxs)(`button`,{onClick:t,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-blue hover:bg-accent-blue/10 transition-colors`,children:[(0,E.jsx)(`span`,{className:`w-3.5 h-3.5 inline-flex items-center justify-center`,children:`✎`}),` `,h(`channels.actions.edit`)]}),e.enabled&&u&&(0,E.jsxs)(`button`,{onClick:u,disabled:p,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-blue hover:bg-accent-blue/10 transition-colors disabled:opacity-50`,children:[(0,E.jsx)(n,{className:`w-3.5 h-3.5`}),` `,h(`channels.actions.test`)]}),(0,E.jsxs)(`button`,{onClick:r,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-red hover:bg-accent-red/15 transition-colors ms-auto`,children:[(0,E.jsx)(a,{className:`w-3.5 h-3.5`}),` `,h(`channels.actions.delete`)]})]})]})}function N({form:e,upd:t,saving:n,editing:r,channel:o,onSave:c,onCancel:l,onDelete:u,onQr:d}){let{t:f}=m();return(0,E.jsxs)(`div`,{className:`border border-dark-border rounded-lg bg-dark-surface overflow-hidden`,children:[(0,E.jsx)(`div`,{className:`px-5 py-4 border-b border-dark-border`,children:(0,E.jsx)(`h3`,{className:`font-medium text-dark-text`,children:f(r?`channels.editConfig`:`channels.createConfig`)})}),(0,E.jsxs)(`div`,{className:`p-5 space-y-4`,children:[(0,E.jsx)(P,{label:f(`channels.form.name`),required:!0,children:(0,E.jsx)(`input`,{value:e.name,onChange:e=>t(`name`,e.target.value),placeholder:f(`channels.form.namePlaceholderDev`),className:F})}),(0,E.jsxs)(P,{label:f(`channels.form.credentials`),children:[(0,E.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:f(`channels.form.appId`)}),(0,E.jsx)(`input`,{value:e.appId,onChange:e=>t(`appId`,e.target.value),placeholder:`AppID`,className:F})]}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:`AppSecret`}),(0,E.jsx)(`input`,{type:`password`,value:e.appSecret,onChange:e=>t(`appSecret`,e.target.value),placeholder:f(r?`channels.form.leaveBlankUnchanged`:`channels.form.appSecretValue`),className:F})]}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:`Token`}),(0,E.jsx)(`input`,{value:e.token,onChange:e=>t(`token`,e.target.value),placeholder:f(r?`channels.form.leaveBlankUnchanged`:`channels.form.tokenCallback`),className:F})]}),e.type===`wechat`&&(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-badge text-dark-muted mb-1`,children:`EncodingAESKey`}),(0,E.jsx)(`input`,{value:e.encodingAESKey,onChange:e=>t(`encodingAESKey`,e.target.value),placeholder:f(`channels.form.optionalShort`),className:F})]})]}),e.type===`wechat`&&(0,E.jsx)(`p`,{className:`text-xs text-dark-muted mt-2`,children:f(`channels.form.wechatIlinkHint`)})]}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-dark-border px-3 py-2.5`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`p`,{className:`text-sm text-dark-text`,children:f(`channels.form.enabled`)}),(0,E.jsx)(`p`,{className:`text-xs text-dark-muted`,children:f(`channels.form.enabledOffHint`)})]}),(0,E.jsx)(`button`,{onClick:()=>t(`enabled`,!e.enabled),className:`w-9 h-5 rounded-full relative transition-colors shrink-0 ${e.enabled?`bg-accent-green`:`bg-dark-muted`}`,children:(0,E.jsx)(`span`,{className:`absolute top-0.5 w-4 h-4 bg-white rounded-full transition-all ${e.enabled?`start-[18px]`:`start-0.5`}`})})]}),r&&o?.type===`wechat`&&d&&(0,E.jsxs)(`button`,{onClick:d,className:`w-full flex items-center justify-center gap-2 text-sm bg-accent-green/15 hover:bg-accent-green/15 text-accent-green border border-accent-green px-3 py-2.5 rounded-lg transition-colors`,children:[(0,E.jsx)(s,{className:`w-4 h-4`}),` `,f(`channels.qrLoginReauth`)]})]}),(0,E.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-3 bg-dark-bg/50 border-t border-dark-border`,children:[(0,E.jsx)(`div`,{children:r&&u&&(0,E.jsxs)(`button`,{onClick:u,className:`flex items-center gap-1.5 text-xs px-3 py-1.5 rounded-md text-accent-red hover:bg-accent-red/15 transition-colors`,children:[(0,E.jsx)(a,{className:`w-3.5 h-3.5`}),` `,f(`channels.actions.delete`)]})}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(`button`,{onClick:l,className:`px-4 py-2 text-sm text-dark-muted hover:text-dark-text transition-colors`,children:f(`channels.actions.cancel`)}),(0,E.jsx)(h,{variant:`accent`,onClick:c,loading:n,disabled:!e.name.trim(),leftIcon:(0,E.jsx)(i,{className:`w-3.5 h-3.5`}),children:f(`channels.save`)})]})]})]})}function P({label:e,required:t,children:n}){return(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`label`,{className:`block text-xs text-dark-muted mb-1.5`,children:[e,t&&(0,E.jsx)(`span`,{className:`text-accent-red ms-0.5`,children:`*`})]}),n]})}var F=`w-full bg-dark-bg border border-dark-border rounded-lg px-3 py-2 text-sm text-dark-text placeholder-dark-muted/60 focus:outline-none focus:border-accent-blue transition-colors`,I=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),L=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),R=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),z=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),B=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),V=t((e=>{var t=L().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),H=t((e=>{var t=L().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),U=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),W=t((e=>{var t=R(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),G=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),K=t((e=>{var t=G();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),q=t(((e,t)=>{var n=K();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),J=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),Y=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
2
+ ]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^[0-9]+$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),X=t((e=>{var t=J(),n=Y();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),Z=t((e=>{var t=L(),n=W(),r=R(),i=X(),a=J(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),Q=t((e=>{var t=L(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),ee=t(((e,t)=>{var n=X();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),te=t(((e,t)=>{var n=X(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t=0;for(;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),ne=t(((e,t)=>{var n=X();function r(e){this.mode=n.BYTE,this.data=typeof e==`string`?new TextEncoder().encode(e):new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),re=t(((e,t)=>{var n=X(),r=L();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t=0;for(;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
3
+ Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),ie=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),ae=t((e=>{var t=X(),n=ee(),r=te(),i=ne(),a=re(),o=Y(),s=L(),c=ie();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
4
+ Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=h(m(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),oe=t((e=>{var t=L(),n=R(),r=z(),i=B(),a=V(),o=H(),s=U(),c=W(),l=q(),u=Z(),d=Q(),f=X(),p=ae();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function g(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function _(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function v(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function y(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function b(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return x(a,e,n)}function x(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),_=Array(o),v=0,y=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=y.slice(h,h+t),_[e]=m.encode(g[e]),h+=t,v=Math.max(v,t)}let b=new Uint8Array(i),x=0,S,C;for(S=0;S<v;S++)for(C=0;C<o;C++)S<g[C].length&&(b[x++]=g[C][S]);for(S=0;S<p;S++)for(C=0;C<o;C++)b[x++]=_[C][S];return b}function S(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`
5
+ The chosen QR Code version cannot contain this amount of data.
6
+ Minimum version required to store current data is: `+c+`.
7
+ `);let l=b(n,r,o),d=new i(t.getSymbolSize(n));return m(d,n),h(d),g(d,n),v(d,r,0),n>=7&&_(d,n),y(d,l),isNaN(a)&&(a=s.getBestMask(d,v.bind(null,d,r))),s.applyMask(a,d),v(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),S(e,a,i,o)}})),$=t((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||(e.color={});let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[+!!a[t*i+r]]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),se=t((e=>{var t=$();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o!==void 0||i&&i.getContext||(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i!==void 0||n&&n.getContext||(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),ce=t((e=>{var t=$();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>
8
+ `;return typeof a==`function`&&a(null,p),p}})),le=e(t((e=>{var t=I(),n=oe(),r=se(),i=ce();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})}))(),1),ue=2e3,de=5;function fe({channel:e,onClose:t}){let{t:n}=m(),[r,i]=(0,T.useState)(`loading`),[a,o]=(0,T.useState)(null),[s,c]=(0,T.useState)(null),[l,u]=(0,T.useState)(``),d=(0,T.useRef)(null),f=(0,T.useRef)(0),p=(0,T.useRef)(null),h=(0,T.useRef)(!1),v=()=>{p.current&&=(clearTimeout(p.current),null),h.current=!0},b=async e=>{if(d.current)try{await le.toCanvas(d.current,e,{width:240,margin:2,color:{dark:`#000000ff`,light:`#ffffffff`}})}catch(e){console.warn(`[WechatQr] Canvas QR generation failed, falling back to URL:`,e)}},x=async()=>{if(!h.current&&s)try{let r=await y.channels.weixin.bindStatus(s),a=r?.data??r,o=a?.status??``;if(f.current=0,o===`confirmed`){if(!a?.channel_id){i(`error`),u(n(`channels.bindNoInstance`)),g.error(n(`channels.bindNoInstance`));return}i(`confirmed`),g.success(e?n(`channels.toastReauthSuccess`,{name:e.name}):n(`channels.toastBindSuccess`)),setTimeout(t,2400);return}if(o===`scaned`)i(`scanned`);else if(o===`expired`){i(`expired`);return}h.current||(p.current=setTimeout(x,ue))}catch(e){if(f.current++,console.warn(`[WechatQr] poll error (`+f.current+`/5)`,e),f.current>=de)i(`error`),u(n(`channels.pollFailedRefresh`)),g.error(n(`channels.pollFailedToast`));else if(!h.current){let e=Math.min(1e3*2**f.current,1e4);p.current=setTimeout(x,e)}}},S=()=>{v(),h.current=!1,f.current=0,p.current=setTimeout(x,1e3)},C=async()=>{i(`loading`),o(null),c(null),u(``),f.current=0;try{let e=await y.channels.weixin.bind(),t=e?.data??e,r=t?.qrcode_img_content??``,a=t?.qrcode??``;if(!r||!a){i(`error`),u(n(`channels.qrDataMissing`,{data:JSON.stringify(t)}));return}o(r),c(a),await b(r),i(`waiting`)}catch(e){i(`error`);let t=String(e?.message??e);u(t),g.error(n(`channels.fetchWechatQrFailed`,{error:t}))}},w=()=>{C()};return(0,T.useEffect)(()=>(C(),v),[]),(0,T.useEffect)(()=>(s&&S(),v),[s]),(0,E.jsx)(_,{isOpen:!0,onClose:t,title:n(`channels.bindTitle`,{name:e?.name??n(`channels.typeLabels.wechat`)}),size:`sm`,children:(0,E.jsxs)(`div`,{className:`flex flex-col items-center gap-4 py-2`,children:[(0,E.jsxs)(`div`,{className:`relative w-60 h-60 rounded-lg bg-white flex items-center justify-center overflow-hidden`,children:[r===`loading`&&(0,E.jsx)(`span`,{className:`text-dark-muted text-sm`,children:n(`channels.qr.generating`)}),r!==`error`&&r!==`expired`&&(0,E.jsx)(`canvas`,{ref:d,width:240,height:240,className:`w-full h-full object-contain ${r===`waiting`?``:`opacity-30`}`}),r===`scanned`&&(0,E.jsxs)(`div`,{className:`absolute inset-0 bg-black/70 flex flex-col items-center justify-center text-overlay-fg gap-1`,children:[(0,E.jsx)(`span`,{className:`text-2xl`,children:`✓`}),(0,E.jsx)(`span`,{className:`text-sm`,children:n(`channels.qr.scanned`)})]}),r===`confirmed`&&(0,E.jsxs)(`div`,{className:`absolute inset-0 bg-accent-green/15 flex flex-col items-center justify-center text-accent-fg gap-2 px-4 text-center`,children:[(0,E.jsx)(`span`,{className:`text-2xl`,children:`🎉`}),(0,E.jsx)(`span`,{className:`text-sm font-medium`,children:n(`channels.bindSuccess`)}),(0,E.jsx)(`span`,{className:`text-xs opacity-90`,children:e?n(`channels.connectedReady`,{name:e.name}):n(`channels.createdConnectedReady`)}),(0,E.jsx)(`button`,{onClick:t,className:`mt-1 text-xs bg-white/20 hover:bg-white/30 px-3 py-1.5 rounded-md transition-colors`,children:n(`channels.startUsing`)})]}),r===`expired`&&(0,E.jsxs)(`div`,{className:`absolute inset-0 bg-black/80 flex flex-col items-center justify-center text-overlay-fg gap-2`,children:[(0,E.jsx)(`span`,{className:`text-sm`,children:n(`channels.qr.expired`)}),(0,E.jsx)(`button`,{onClick:w,className:`text-xs bg-accent-green hover:bg-accent-green px-3 py-1 rounded`,children:n(`channels.clickToRefresh`)})]}),r===`error`&&(0,E.jsxs)(`div`,{className:`absolute inset-0 bg-black/80 flex flex-col items-center justify-center text-accent-red gap-2 px-4 text-center`,children:[(0,E.jsx)(`span`,{className:`text-xs`,children:l||n(`channels.unknownError`)}),(0,E.jsx)(`button`,{onClick:w,className:`text-xs bg-accent-blue hover:bg-accent-blue px-3 py-1 rounded text-accent-fg`,children:n(`channels.retry`)})]})]}),(0,E.jsxs)(`p`,{className:`text-sm text-dark-muted text-center`,children:[r===`waiting`&&n(`channels.waitingAuthorize`),r===`scanned`&&n(`channels.scannedConfirming`),r===`confirmed`&&n(`channels.confirmedClosing`),r===`loading`&&n(`channels.connectingIlink`),(r===`expired`||r===`error`)&&(r===`expired`?n(`channels.qr.expired`):``)]}),a&&r===`waiting`&&(0,E.jsxs)(`button`,{onClick:()=>window.open(a,`_blank`,`width=480,height=600,noopener`),className:`w-full flex items-center justify-center gap-2 text-sm bg-accent-green/15 hover:bg-accent-green/15 text-accent-green border border-accent-green px-3 py-2.5 rounded-lg transition-colors`,children:[(0,E.jsx)(`span`,{children:`🔔`}),` `,n(`channels.openInNewTabFallback`)]})]})})}function pe(){let{t:e}=m(),{load:t,loading:n,qrOpen:r,qrChannel:i,closeQr:a}=w();return(0,T.useEffect)(()=>{t()},[]),(0,E.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-dark-bg text-dark-text`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between px-6 py-4 border-b border-dark-border shrink-0`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`h2`,{className:`font-semibold text-base`,children:e(`channels.title`)}),(0,E.jsx)(`p`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`channels.viewSubtitle`)})]}),(0,E.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,E.jsx)(`button`,{onClick:()=>t(),title:e(`channels.actions.refresh`),className:`p-2 rounded-lg text-dark-muted hover:text-dark-text hover:bg-dark-hover transition-colors`,children:(0,E.jsx)(u,{className:`w-4 h-4 ${n?`animate-spin`:``}`})})})]}),(0,E.jsxs)(`div`,{className:`flex-1 flex min-h-0 overflow-hidden`,children:[(0,E.jsx)(`div`,{className:`w-[260px] shrink-0`,children:(0,E.jsx)(O,{})}),(0,E.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,E.jsx)(j,{})})]}),r&&(0,E.jsx)(fe,{channel:i,onClose:a})]})}export{pe as ChannelConfigView};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{At as t,Cr as n,Kr as r,Rt as i,Tr as a,Ut as o,_ as s,h as c,n as l,nt as u,pn as d,wr as f,xr as p}from"./icons-CYDRRPKW.js";import{t as m}from"./useTranslation-B-mfApCn.js";import{s as h}from"./useConfirm-Da8iQ_DZ.js";import{C as g}from"./MessageBubble-CVGXupVH.js";import{t as _}from"./api-plEYhRn0.js";import{I as v}from"./markdown-N5__3T-w.js";import{B as y,F as b,H as x,I as S,L as C,M as w,N as T,P as E,R as ee,j as D,z as te}from"./index-CTbLW314.js";var O=e(r(),1),k=v(),A=[];function j(e){let t=[];return e.query?t.push(e.query):e.connector&&t.push(e.connector),e.detail&&t.push(e.detail),t.join(` — `)}function ne({onApproved:e,refreshToken:t=0}){let{t:r}=m(),[i,a]=(0,O.useState)(A),[s,u]=(0,O.useState)(!0),[d,v]=(0,O.useState)(!0),[y,b]=(0,O.useState)(null),[x,S]=(0,O.useState)(null),C=(0,O.useCallback)(async()=>{u(!0);try{let e=await _.pendingArtifacts.list(`pending`);if(!e?.success)throw Error(e?.error||r(`charts.pending.loadFailed`));a(e.data?.items??A),S(null)}catch(e){S(e instanceof Error?e.message:String(e))}finally{u(!1)}},[r]);(0,O.useEffect)(()=>{C()},[C,t]);let w=(0,O.useCallback)(async(t,n)=>{b(t),S(null);try{let i=n===`approve`?await _.pendingArtifacts.approve(t):await _.pendingArtifacts.reject(t);if(!i?.success)throw Error(i?.error||r(`charts.pending.decideFailed`));a(e=>e.filter(e=>e.id!==t)),n===`approve`&&e?.(),C()}catch(e){S(e instanceof Error?e.message:String(e))}finally{b(null)}},[e,C,r]);return s&&i.length===0||i.length===0&&!x?null:(0,k.jsxs)(`div`,{"data-testid":`pending-artifacts`,className:`mx-4 mt-3 shrink-0 rounded-lg border border-accent-yellow/40 bg-accent-yellow/5`,children:[(0,k.jsxs)(`button`,{type:`button`,"data-testid":`pending-artifacts-toggle`,onClick:()=>v(e=>!e),"aria-expanded":d,className:`flex w-full items-center gap-2 px-3 py-2 text-start`,children:[(0,k.jsx)(d?n:p,{size:13,className:`shrink-0 text-accent-yellow`}),(0,k.jsx)(`span`,{className:`shrink-0 text-xs font-medium text-accent-yellow`,children:r(`charts.pending.title`,{n:i.length})}),(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-badge text-dark-muted`,children:r(`charts.pending.subtitle`)}),s&&(0,k.jsx)(o,{size:12,className:`animate-spin text-dark-muted`})]}),d&&(0,k.jsxs)(`div`,{className:`border-t border-accent-yellow/20`,children:[x&&(0,k.jsxs)(`div`,{className:`flex items-start gap-2 px-3 py-2 text-xs text-accent-red`,children:[(0,k.jsx)(c,{size:13,className:`mt-0.5 shrink-0`}),(0,k.jsx)(`span`,{className:`min-w-0 break-words`,children:x})]}),i.map(e=>{let t=y===e.id;return(0,k.jsxs)(`div`,{"data-testid":`pending-artifact-item`,className:`flex items-start gap-2.5 border-b border-accent-yellow/15 px-3 py-2 last:border-b-0`,children:[(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsx)(`p`,{className:`text-xs leading-relaxed text-dark-text`,children:e.summary}),(0,k.jsxs)(`div`,{className:`mt-0.5 flex flex-wrap items-center gap-x-2 gap-y-0.5 text-badge text-dark-muted/80`,children:[(0,k.jsx)(`span`,{className:`truncate font-mono`,children:e.targetPath}),(0,k.jsx)(`span`,{className:`shrink-0 rounded bg-dark-hover px-1 py-px`,children:e.artifactType}),(0,k.jsx)(`span`,{className:`shrink-0`,children:g(e.createdAt,Date.now(),r)})]}),e.sources.length>0?(0,k.jsx)(`ul`,{className:`mt-1 space-y-0.5`,"data-testid":`pending-artifact-sources`,children:e.sources.map((t,n)=>(0,k.jsx)(`li`,{className:`truncate font-mono text-badge text-dark-muted/70`,title:j(t),children:j(t)},`${e.id}-src-${n}`))}):(0,k.jsx)(`p`,{className:`mt-1 text-badge text-accent-yellow/80`,children:r(`charts.pending.noSources`)})]}),(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,k.jsxs)(`button`,{type:`button`,"data-testid":`pending-artifact-approve`,disabled:t,onClick:()=>void w(e.id,`approve`),title:r(`charts.pending.approveHint`),className:h(`flex items-center gap-1 rounded-md border border-accent-green/40 bg-accent-green/10 px-2 py-1 text-badge text-accent-green transition-colors hover:bg-accent-green/20`,t&&`opacity-60`),children:[t?(0,k.jsx)(o,{size:11,className:`animate-spin`}):(0,k.jsx)(f,{size:11}),r(`charts.pending.approve`)]}),(0,k.jsxs)(`button`,{type:`button`,"data-testid":`pending-artifact-reject`,disabled:t,onClick:()=>void w(e.id,`reject`),title:r(`charts.pending.rejectHint`),className:h(`flex items-center gap-1 rounded-md border border-dark-border px-2 py-1 text-badge text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,t&&`opacity-60`),children:[(0,k.jsx)(l,{size:11}),r(`charts.pending.reject`)]})]})]},e.id)})]})]})}var M=`dsc.charts.artifactOrder`,N=1;function re(){try{let e=localStorage.getItem(M);if(!e)return[];let t=JSON.parse(e);if(typeof t!=`object`||!t)return[];let n=t;return n.v!==N||!Array.isArray(n.order)?[]:n.order.filter(e=>typeof e==`string`&&e!==``)}catch{return[]}}function ie(e){try{localStorage.setItem(M,JSON.stringify({v:N,order:e}))}catch{}}function ae(e,t,n){if(t.length===0)return[...e];let r=new Map(e.map(e=>[n(e),e])),i=[];for(let e of t){let t=r.get(e);t!==void 0&&(i.push(t),r.delete(e))}for(let t of e)r.has(n(t))&&i.push(t);return i}function P(e,t,n,r){return C(e,t,n,r)}var oe=[`list`,`tabs`],F=`dsc.charts.displayMode`;function se(){try{return localStorage.getItem(F)===`tabs`?`tabs`:`list`}catch{return`list`}}function ce(e){try{localStorage.setItem(F,e)}catch{}}var le=[],ue=[{command:`dashboard`,hintKey:`chat.visualArtifactsEmptyHint_dashboard`},{command:`analysis`,hintKey:`chat.visualArtifactsEmptyHint_analysis`},{command:`motion`,hintKey:`chat.visualArtifactsEmptyHint_motion`}];function de(e){let t=new Map;for(let n of e){if(!n.locator?.path)continue;let e=t.get(n.logicalId);(!e||n.version>e.version)&&t.set(n.logicalId,n)}return[...t.values()].sort((e,t)=>e.createdAt===t.createdAt?0:e.createdAt<t.createdAt?1:-1)}function I({text:e}){return(0,k.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-accent-red/30 bg-accent-red/5 px-3 py-2.5 text-xs text-accent-red`,children:[(0,k.jsx)(c,{size:14,className:`mt-0.5 shrink-0`}),(0,k.jsx)(`span`,{className:`min-w-0 break-words`,children:e})]})}function L({path:e,content:t,readError:n,freshness:r}){let{t:i}=m();if(n)return(0,k.jsx)(I,{text:n});let a=T(e);return a===`motion`?(0,k.jsx)(w,{path:e,content:t}):a===`dashboard`?(0,k.jsx)(b,{path:e,content:t,freshness:r}):a===`analysis`?(0,k.jsx)(E,{path:e,content:t}):(0,k.jsxs)(`div`,{"data-testid":`charts-no-renderer`,className:`px-1 py-2 text-xs leading-relaxed text-dark-muted`,children:[i(`charts.noRenderer`),(0,k.jsx)(`span`,{className:`mt-1 block truncate font-mono text-badge text-dark-muted/70`,children:e})]})}function fe({records:e,activePath:t,onSelect:n,nameOf:r}){return(0,k.jsx)(`div`,{"data-testid":`charts-tabs`,role:`tablist`,className:`flex shrink-0 items-center gap-1 overflow-x-auto rounded-lg border border-dark-border bg-dark-surface p-1`,children:e.map(e=>{let i=e.locator.path,a=i===t;return(0,k.jsxs)(`button`,{type:`button`,role:`tab`,"data-testid":`charts-tab`,"aria-selected":a,"aria-current":a,title:`${i}\n${e.producer.sessionId}`,onClick:()=>n(i),className:h(`flex max-w-[14rem] shrink-0 items-center gap-1.5 rounded-md px-2 py-1 text-xs transition-colors`,a?`bg-accent-blue/15 text-accent-blue`:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`),children:[(0,k.jsx)(D,{kind:T(i),size:13}),(0,k.jsx)(`span`,{className:`min-w-0 truncate`,children:r(e)}),(0,k.jsxs)(`span`,{className:`shrink-0 text-badge opacity-60`,children:[`v`,e.version]})]},e.logicalId)})})}function R(){let{t:e}=m(),[n,r]=(0,O.useState)(le),[c,l]=(0,O.useState)(!0),[f,p]=(0,O.useState)(null),[v,b]=(0,O.useState)(0),[C,w]=(0,O.useState)(null),[E,A]=(0,O.useState)(!1),[j,M]=(0,O.useState)(null),[N,F]=(0,O.useState)(null),[R,z]=(0,O.useState)(()=>re()),[pe,B]=(0,O.useState)(null),[V,me]=(0,O.useState)(()=>se()),he=(0,O.useCallback)(e=>{e!==V&&(me(e),ce(e),B(null),U(null))},[V]),[H,U]=(0,O.useState)(null),[ge,W]=(0,O.useState)(!1),G=x(e=>e.publishedSeq),K=(0,O.useCallback)(async t=>{t?.silent||l(!0),p(null);try{let t=await _.visualArtifacts.list();if(!t?.success)throw Error(t?.error||e(`charts.loadFailed`));r(de(t.data?.items??le))}catch(e){p(e instanceof Error?e.message:String(e))}finally{l(!1)}},[e]);(0,O.useEffect)(()=>{K()},[K]),(0,O.useEffect)(()=>{G!==0&&K({silent:!0})},[G,K]);let q=(0,O.useMemo)(()=>ae(n,R,e=>e.logicalId),[n,R]),J=(0,O.useCallback)(e=>{z(e),ie(e)},[]),_e=(0,O.useCallback)(async t=>{W(!0),U(null);try{let n=await _.visualArtifacts.remove(t);if(!n?.success)throw Error(n?.error||e(`charts.removeFailed`));r(e=>e.filter(e=>e.logicalId!==t)),J(R.filter(e=>e!==t)),B(null)}catch(e){U(e instanceof Error?e.message:String(e))}finally{W(!1)}},[J,R,e]),ve=(0,O.useCallback)((e,t)=>{let n=q.map(e=>e.logicalId),r=P(n,e,t.id,t.side);r.join()!==n.join()&&J(r)},[J,q]),Y=S(ve,{vertical:!0}),ye=(0,O.useCallback)((e,t)=>{let n=q.map(e=>e.logicalId),r=n.indexOf(e);if(r<0)return;let i=n[r+t];i&&J(P(n,e,i,t<0?`before`:`after`))},[J,q]),X=(0,O.useMemo)(()=>C&&n.some(e=>e.locator.path===C)?C:q[0]?.locator.path??null,[q,n,C]);(0,O.useEffect)(()=>{if(!X){M(null),F(null);return}let t=!1;return M(null),F(null),(async()=>{try{let n=await _.files.read(X);if(t)return;n.success&&n.data!==void 0&&n.data!==null?M(String(n.data)):F(n.error||e(`charts.readFailed`))}catch(e){t||F(e instanceof Error?e.message:String(e))}})(),()=>{t=!0}},[X,e]),(0,O.useEffect)(()=>{if(!E)return;let e=e=>{e.key===`Escape`&&A(!1)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[E]);let Z=(0,O.useMemo)(()=>n.find(e=>e.locator.path===X)??null,[n,X]),be=(0,O.useMemo)(()=>n.map(e=>({path:e.locator.path??``,metadata:e.metadata,version:e.version})),[n]),xe=ee(be),Q=e=>e.locator.path?xe(e.locator.path):``,Se=Z?Q(Z):null,$=Y.draggingId?n.find(e=>e.logicalId===Y.draggingId)??null:null,Ce=Z?.locator.path===void 0?null:(0,k.jsx)(L,{path:Z.locator.path,content:j,readError:N,freshness:Z.freshness});return(0,k.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,k.jsxs)(`div`,{className:`flex shrink-0 items-start gap-3 px-4 pt-3`,children:[(0,k.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,k.jsxs)(`h1`,{className:`flex items-center gap-1.5 text-lg font-semibold text-dark-text`,children:[(0,k.jsx)(a,{size:16,className:`shrink-0 text-accent-blue`}),e(`charts.title`)]}),(0,k.jsx)(`p`,{className:`mt-0.5 text-xs leading-relaxed text-dark-muted`,children:e(`charts.subtitle`)})]}),(0,k.jsxs)(`div`,{className:`mt-0.5 flex shrink-0 items-center gap-2`,children:[n.length>0&&(0,k.jsx)(`div`,{"data-testid":`charts-display-switch`,role:`group`,"aria-label":e(`charts.displayMode`),className:`flex items-center gap-0.5 rounded-md border border-dark-border p-0.5`,children:oe.map(t=>(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-display-${t}`,"aria-pressed":V===t,onClick:()=>he(t),className:h(`rounded px-2 py-0.5 text-badge transition-colors`,V===t?`bg-accent-blue/15 text-accent-blue`:`text-dark-muted hover:bg-dark-hover hover:text-dark-text`),children:e(t===`list`?`charts.viewList`:`charts.viewTabs`)},t))}),(0,k.jsxs)(`button`,{type:`button`,"data-testid":`charts-refresh`,onClick:()=>{K(),b(e=>e+1)},className:`flex shrink-0 items-center gap-1 rounded-md border border-dark-border px-2 py-1 text-xs text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:e(`charts.refresh`),children:[c?(0,k.jsx)(o,{size:12,className:`animate-spin`}):(0,k.jsx)(u,{size:12}),e(`charts.refresh`)]})]})]}),f&&(0,k.jsx)(`div`,{className:`shrink-0 px-4 pt-2`,children:(0,k.jsx)(I,{text:f})}),(0,k.jsx)(ne,{refreshToken:v,onApproved:()=>void K()}),(0,k.jsx)(`div`,{className:h(`flex min-h-0 flex-1 gap-3 p-4`,V===`tabs`?`flex-col`:``),children:n.length===0?(0,k.jsx)(`div`,{"data-testid":`charts-empty`,className:`flex min-h-0 flex-1 items-center justify-center rounded-lg border border-dashed border-dark-border px-6`,children:c?(0,k.jsx)(o,{size:18,className:`animate-spin text-accent-blue`}):(0,k.jsxs)(`div`,{className:`max-w-md space-y-2`,children:[(0,k.jsx)(`p`,{className:`text-xs leading-relaxed text-dark-muted`,children:e(`charts.empty`)}),(0,k.jsx)(`ul`,{className:`space-y-1`,children:ue.map(({command:t,hintKey:n})=>(0,k.jsxs)(`li`,{className:`flex items-baseline gap-1.5 text-badge text-dark-muted/80`,children:[(0,k.jsxs)(`code`,{className:`shrink-0 rounded bg-dark-hover px-1 py-px font-mono text-accent-blue`,children:[`/`,t]}),(0,k.jsx)(`span`,{className:`min-w-0`,children:e(n)})]},t))})]})}):(0,k.jsxs)(k.Fragment,{children:[V===`tabs`?(0,k.jsx)(fe,{records:q,activePath:X,onSelect:w,nameOf:Q}):(0,k.jsxs)(`aside`,{"data-testid":`charts-list`,className:`flex w-64 shrink-0 flex-col overflow-y-auto rounded-lg border border-dark-border bg-dark-surface`,children:[H&&(0,k.jsx)(`div`,{className:`border-b border-dark-border/60 p-1.5`,children:(0,k.jsx)(I,{text:`${e(`charts.removeFailed`)} — ${H}`})}),q.map(t=>{let n=t.locator.path,r=n===X,i=y(t.type),a=i?e(i):t.type,o=Y.draggingId===t.logicalId,c=Y.dropTarget?.id===t.logicalId?Y.dropTarget.side:null,l=pe===t.logicalId;return(0,k.jsxs)(`div`,{"data-panel-id":t.logicalId,"data-testid":`charts-item-row`,"data-dragging":o?`true`:`false`,"data-drop-side":c??void 0,onPointerDown:e=>Y.startFromCard(e,t.logicalId),onPointerMove:Y.onPointerMove,onPointerUp:Y.onPointerUp,onPointerCancel:Y.onPointerCancel,className:h(`flex items-stretch border-b border-dark-border/60 transition-colors`,r?`bg-accent-blue/10`:`hover:bg-dark-hover`,o&&`opacity-40`,c===`before`&&`shadow-[inset_0_2px_0_0_theme(colors.accent-blue)]`,c===`after`&&`shadow-[inset_0_-2px_0_0_theme(colors.accent-blue)]`),children:[(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-grab`,"aria-label":e(`charts.dragHandle`),title:e(`charts.dragHandle`),onPointerDown:e=>Y.startFromGrip(e,t.logicalId),onKeyDown:e=>{let n=e.key===`ArrowUp`,r=e.key===`ArrowDown`;(n||r)&&(e.preventDefault(),ye(t.logicalId,n?-1:1))},style:{touchAction:`none`},className:`flex shrink-0 cursor-grab items-center px-1 text-dark-tertiary transition-colors hover:text-dark-text active:cursor-grabbing`,children:(0,k.jsx)(d,{size:12})}),l?(0,k.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-1.5 py-2 pe-2`,children:[(0,k.jsx)(`span`,{className:`min-w-0 flex-1 text-badge leading-snug text-amber-300`,children:e(`charts.removeConfirm`)}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-remove-confirm`,disabled:ge,onClick:()=>void _e(t.logicalId),className:`shrink-0 rounded border border-accent-red/40 px-1.5 py-0.5 text-badge text-accent-red transition-colors hover:bg-accent-red/10 disabled:opacity-50`,children:e(`charts.remove`)}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-remove-cancel`,onClick:()=>B(null),className:`shrink-0 rounded border border-dark-border px-1.5 py-0.5 text-badge text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,children:e(`common.cancel`)})]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`button`,{type:`button`,"data-testid":`charts-item`,"aria-current":r,onClick:()=>w(n),title:`${n}\n${t.producer.sessionId}`,className:`flex min-w-0 flex-1 items-center gap-2 py-2 pe-1 text-start`,children:[(0,k.jsx)(D,{kind:T(n),size:14}),(0,k.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,k.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,k.jsx)(`span`,{"data-testid":`charts-item-name`,className:h(`truncate text-xs`,r?`text-accent-blue`:`text-dark-text`),children:Q(t)}),(0,k.jsxs)(`span`,{className:`shrink-0 rounded bg-dark-hover px-1 py-px text-badge text-dark-muted`,children:[a,` v`,t.version]})]}),(0,k.jsxs)(`span`,{className:`mt-0.5 block truncate font-mono text-badge text-dark-muted/70`,children:[te(n),` · `,g(t.createdAt,Date.now(),e)]})]})]}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-item-remove`,onClick:()=>{U(null),B(t.logicalId)},title:e(`charts.removeHint`),"aria-label":e(`charts.removeHint`),className:`flex shrink-0 items-center px-1.5 text-dark-tertiary transition-colors hover:text-accent-red`,children:(0,k.jsx)(s,{size:12})})]})]},t.logicalId)})]}),(0,k.jsxs)(`section`,{"data-testid":`charts-canvas`,className:`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-dark-border bg-dark-surface`,children:[(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-dark-border px-3 py-1.5`,children:[(0,k.jsx)(`span`,{"data-testid":`charts-canvas-name`,className:`min-w-0 flex-1 truncate text-xs text-dark-text`,title:X??``,children:Se??X??``}),(0,k.jsx)(`button`,{type:`button`,"data-testid":`charts-fullscreen-toggle`,onClick:()=>A(!0),className:`shrink-0 rounded p-1 text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:e(`charts.fullscreen`),"aria-label":e(`charts.fullscreen`),children:(0,k.jsx)(i,{size:13})})]}),(0,k.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-3`,children:Ce})]})]})}),$&&(0,k.jsx)(`div`,{ref:Y.ghost.setElement,"data-testid":`charts-drag-ghost`,"aria-hidden":!0,className:`pointer-events-none fixed left-0 top-0 z-50 w-56 will-change-transform`,children:(0,k.jsxs)(`div`,{className:h(`flex w-full rotate-1 items-center gap-2 overflow-hidden rounded-lg border bg-dark-surface/95 px-2 py-1.5 shadow-pop`,Y.dropTarget?`border-accent-blue/70 ring-1 ring-accent-blue/30`:`border-dark-border`),children:[(0,k.jsx)(d,{size:12,className:`shrink-0 text-dark-muted`}),(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-dark-text`,children:Q($)})]})}),E&&Z?.locator.path!==void 0&&(0,k.jsxs)(`div`,{"data-testid":`charts-fullscreen`,className:`fixed inset-0 z-50 flex flex-col bg-dark-bg`,children:[(0,k.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-dark-border px-4 py-2`,children:[(0,k.jsx)(a,{size:14,className:`shrink-0 text-accent-blue`}),(0,k.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-dark-text`,title:Z.locator.path,children:Se??Z.locator.path}),(0,k.jsxs)(`button`,{type:`button`,onClick:()=>A(!1),className:`flex shrink-0 items-center gap-1 rounded-md border border-dark-border px-2 py-1 text-xs text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text`,title:e(`charts.exitFullscreen`),children:[(0,k.jsx)(t,{size:12}),e(`charts.exitFullscreen`)]})]}),(0,k.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-4`,children:(0,k.jsx)(L,{path:Z.locator.path,content:j,readError:N,freshness:Z.freshness})})]})]})}function z(){return(0,k.jsx)(`div`,{className:`flex h-full min-h-0 flex-col`,children:(0,k.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:(0,k.jsx)(R,{})})})}export{z as ChartsView};
@@ -0,0 +1 @@
1
+ import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{Bt as t,Et as n,G as r,Kr as i,T as a,Ut as o,Vn as s,Vr as c,Wn as l,_ as u,h as d,ht as f,j as p,lt as ee,mn as m,nn as h,nt as g,pr as _,q as v,r as y,t as te,ut as b}from"./icons-CYDRRPKW.js";import{t as ne}from"./useTranslation-B-mfApCn.js";import{a as x,t as re}from"./useConfirm-Da8iQ_DZ.js";import{t as S}from"./api-plEYhRn0.js";import{I as C}from"./markdown-N5__3T-w.js";import{f as w}from"./common-Bbatsa0-.js";import{V as ie}from"./index-CTbLW314.js";var T=e(i(),1),E=C();function D(e){return e.split(/[,,、]/).map(e=>e.trim()).filter(Boolean)}function O({connector:e,onRefresh:t}){let{t:n}=ne(),[r,i]=re(),[a,s]=(0,T.useState)(null),[c,l]=(0,T.useState)(null),[p,m]=(0,T.useState)(null),[g,v]=(0,T.useState)(null),y=e.accounts??[],te=(e.requiresEnv??[]).filter(e=>!e.optional),b=async(e,n)=>{s(e),l(null);let r=await n();r&&l(r),s(null),r||t()},C=()=>m({mode:`add`,label:``,tags:``,env:{}}),w=e=>m({mode:`creds`,accountId:e.id,label:e.label,tags:e.tags.join(`, `),env:{}}),ie=()=>{if(!p)return;let t=D(p.tags),n=Object.fromEntries(Object.entries(p.env).filter(([,e])=>e.trim().length>0)),r=p.accountId??`new`;b(r,async()=>{if(p.mode===`add`){let r=await S.connectors.addAccount(e.id,{...p.label.trim()?{label:p.label.trim()}:{},tags:t,...Object.keys(n).length?{env:n}:{}});if(!r.success)return r.error||`新增账号失败`}else{let r=y.find(e=>e.id===p.accountId);if(!r)return`账号已不存在,请刷新`;let i=await S.connectors.updateAccount(e.id,r.id,{label:p.label.trim()||r.label,tags:t});if(!i.success)return i.error||`保存账号失败`;if(Object.keys(n).length){let e=await S.connectors.connect(r.stateId,n);if(!e.success)return e.error||`连接账号失败`}}return m(null),null})},O=e=>{!e.enabled&&e.missingEnv?.length?w(e):b(e.id,async()=>{let t=await S.connectors.toggle(e.stateId,!e.enabled);return t.success?null:t.error||`切换 ${e.label} 失败`})},k=(t,n)=>{b(t.id,async()=>{let r=await S.connectors.updateAccount(e.id,t.id,{tags:D(n)});return r.success?null:r.error||`保存标签失败`}),v(null)},A=t=>{i({message:n(`connectors.accountsRemoveConfirm`,{label:t.label}),variant:`danger`}).then(n=>{n&&b(t.id,async()=>{let n=await S.connectors.removeAccount(e.id,t.id);return n.success?n.data?.removed===!1?`账号已不存在`:null:n.error||`删除账号失败`})})},ae=e=>e.enabled&&e.status===`ready`?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-badge text-accent-green`,children:[(0,E.jsx)(_,{size:10}),e.toolCount?n(`connectors.toolCount`,{count:e.toolCount}):`ready`]}):e.status===`error`?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-badge text-accent-red`,title:e.error,children:[(0,E.jsx)(d,{size:10}),e.error||n(`connectors.missing`)]}):e.missingEnv?.length?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-badge text-accent-yellow`,children:[(0,E.jsx)(d,{size:10}),e.missingEnv.join(`, `),` `,n(`connectors.missing`)]}):(0,E.jsx)(`span`,{className:`text-badge text-dark-muted`,children:e.status});return(0,E.jsxs)(`div`,{className:`mt-3 pt-3 border-t border-dark-border`,children:[r,(0,E.jsxs)(`div`,{className:`flex items-center justify-between gap-2 mb-2`,children:[(0,E.jsxs)(`span`,{className:`text-xs text-dark-muted inline-flex items-center gap-1`,children:[(0,E.jsx)(h,{size:12}),n(`connectors.accountsTitle`),(0,E.jsxs)(`span`,{className:`text-badge`,children:[`(`,y.length,`)`]})]}),(0,E.jsxs)(`button`,{type:`button`,onClick:C,className:`inline-flex items-center gap-1 text-meta text-accent-blue hover:underline`,children:[(0,E.jsx)(ee,{size:11}),n(`connectors.accountsAdd`)]})]}),y.length===0?(0,E.jsx)(`p`,{className:`text-badge text-dark-muted`,children:n(`connectors.accountsEmpty`)}):(0,E.jsx)(`ul`,{className:`space-y-1.5`,children:y.map(e=>(0,E.jsxs)(`li`,{className:`flex items-center gap-2 flex-wrap bg-dark-bg/60 border border-dark-border rounded-lg px-2.5 py-1.5`,children:[(0,E.jsx)(`span`,{className:`text-sm`,children:e.label}),g?.id===e.id?(0,E.jsx)(`input`,{autoFocus:!0,value:g.value,onChange:t=>v({id:e.id,value:t.target.value}),onBlur:()=>k(e,g.value),onKeyDown:t=>{t.key===`Enter`&&k(e,g.value),t.key===`Escape`&&v(null)},placeholder:n(`connectors.accountsTagsHint`),className:`px-1.5 py-0.5 bg-dark-surface border border-dark-border rounded text-badge w-40`}):(0,E.jsxs)(E.Fragment,{children:[e.tags.length?e.tags.map(e=>(0,E.jsx)(`span`,{className:`text-badge px-1.5 py-0.5 rounded bg-accent-blue/15 text-accent-blue`,children:e},e)):(0,E.jsx)(`span`,{className:`text-badge text-dark-muted`,children:n(`connectors.accountsNoTags`)}),(0,E.jsx)(`button`,{type:`button`,title:n(`connectors.accountsEditTags`),onClick:()=>v({id:e.id,value:e.tags.join(`, `)}),className:`text-dark-muted hover:text-accent-blue`,children:(0,E.jsx)(f,{size:11})})]}),e.hint?(0,E.jsx)(`span`,{className:`text-badge text-dark-muted`,children:e.hint}):null,a===e.id?(0,E.jsx)(o,{size:11,className:`animate-spin text-dark-muted`}):ae(e),(0,E.jsxs)(`span`,{className:`ms-auto flex items-center gap-1.5`,children:[(0,E.jsx)(`button`,{type:`button`,title:n(`connectors.accountsCreds`),onClick:()=>w(e),className:`p-1 rounded text-dark-muted hover:text-accent-blue hover:bg-dark-hover`,children:(0,E.jsx)(h,{size:12})}),(0,E.jsx)(`button`,{type:`button`,title:n(`connectors.accountsRemove`),onClick:()=>A(e),disabled:a!==null,className:`p-1 rounded text-dark-muted hover:text-accent-red hover:bg-accent-red/10 disabled:opacity-40`,children:(0,E.jsx)(u,{size:12})}),(0,E.jsx)(`button`,{role:`switch`,"aria-checked":e.enabled,disabled:a!==null,onClick:()=>O(e),className:`relative w-9 h-5 rounded-full transition-colors disabled:opacity-50 ${e.enabled?`bg-accent-green`:`bg-dark-border`}`,children:(0,E.jsx)(`span`,{className:`absolute top-0.5 w-4 h-4 bg-white rounded-full transition-transform ${e.enabled?`start-4`:`start-0.5`}`})})]})]},e.id))}),c?(0,E.jsx)(`p`,{className:`text-badge text-accent-red mt-2`,children:c}):null,p?(0,E.jsxs)(`div`,{className:`mt-2 border border-dark-border rounded-lg p-2.5 bg-dark-bg/60 space-y-2`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:n(`connectors.accountsLabel`)}),(0,E.jsx)(`input`,{autoFocus:!0,value:p.label,onChange:e=>m({...p,label:e.target.value}),placeholder:n(`connectors.accountsLabelHint`),className:`w-full px-2 py-1 bg-dark-surface border border-dark-border rounded text-sm focus:border-accent-blue focus:outline-none`})]}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:n(`connectors.accountsTags`)}),(0,E.jsx)(`input`,{value:p.tags,onChange:e=>m({...p,tags:e.target.value}),placeholder:n(`connectors.accountsTagsHint`),className:`w-full px-2 py-1 bg-dark-surface border border-dark-border rounded text-sm focus:border-accent-blue focus:outline-none`})]}),te.map(e=>(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e.label}),(0,E.jsx)(`input`,{type:e.secret?`password`:`text`,value:p.env[e.key]??``,onChange:t=>m({...p,env:{...p.env,[e.key]:t.target.value}}),placeholder:e.key,className:`w-full px-2 py-1 bg-dark-surface border border-dark-border rounded text-sm focus:border-accent-blue focus:outline-none`}),e.hint?(0,E.jsx)(`p`,{className:`text-badge text-dark-muted mt-0.5`,children:e.hint}):null]},e.key)),(0,E.jsxs)(`div`,{className:`flex gap-2`,children:[(0,E.jsx)(x,{variant:`accent`,disabled:a!==null,onClick:ie,children:p.mode===`add`?n(`connectors.accountsAdd`):n(`common.save`)}),(0,E.jsx)(`button`,{type:`button`,onClick:()=>m(null),className:`px-3 py-1.5 bg-dark-surface border border-dark-border rounded-lg text-sm`,children:n(`common.cancel`)})]})]}):null]})}var k={"code-intelligence":`🧠 代码智能`,filesystem:`📂 文件系统`,databases:`🗄️ 数据库`,"browser-automation":`🌐 浏览器自动化`,"knowledge-memory":`🧠 知识/记忆`,"search-web":`🔎 搜索/网页`,"cloud-platforms":`☁️ 云平台`,communication:`💬 通讯`,"developer-tools":`🛠️ 开发者工具`,security:`🔒 安全`,"test-demo":`🧪 测试/Demo`,other:`📦 其他`},A=`email-imap`;function ae(e){return(e.missingEnv?.length??0)>0||!!e.supportsOAuth&&!e.authorized}var oe=[`phone_use`,`phone_inspect`];function j(){let{t:e}=ne(),[i,f]=(0,T.useState)([]),[re,C]=(0,T.useState)(!0),[D,j]=(0,T.useState)(null),[M,N]=(0,T.useState)({}),[se,P]=(0,T.useState)(null),[F,ce]=(0,T.useState)(``),[I,le]=(0,T.useState)(null),[L,ue]=(0,T.useState)(`all`),[de,R]=(0,T.useState)(null),[fe,pe]=(0,T.useState)({}),[me,he]=(0,T.useState)(!1),[z,B]=(0,T.useState)({name:``,command:``,args:``,env:``,transport:`stdio`,url:``,headers:``}),[V,ge]=(0,T.useState)(null),[_e,H]=(0,T.useState)(!1),[ve,U]=(0,T.useState)(null),[W,ye]=(0,T.useState)(null),[be,G]=(0,T.useState)(!1),[xe,K]=(0,T.useState)(null),[q,Se]=(0,T.useState)(null),[Ce,we]=(0,T.useState)(!1),[Te,Ee]=(0,T.useState)(null),De=async()=>{H(!0),U(null);try{let e=await S.tools.get(`computer_use`);ge(e.success&&e.data?!!e.data.enabled:!1)}catch(e){U(e instanceof Error?e.message:String(e))}H(!1)},Oe=async()=>{if(V===null)return;let e=!V;H(!0),U(null);try{let t=await S.tools.toggle(`computer_use`,e);t.success?ge(e):U(t.error||`切换 Computer Use 失败`)}catch(e){U(e instanceof Error?e.message:String(e))}H(!1)},ke=async()=>{G(!0),K(null);try{let e=await S.tools.get(`phone_use`);ye(e.success&&e.data?!!e.data.enabled:!1)}catch(e){K(e instanceof Error?e.message:String(e))}G(!1)},Ae=async()=>{if(W===null)return;let t=!W;G(!0),K(null);try{let n=(await Promise.all(oe.map(e=>S.tools.toggle(e,t)))).find(e=>!e.success);n?K(n.error||e(`connectors.phoneToggleFailed`)):(ye(t),t&&je())}catch(e){K(e instanceof Error?e.message:String(e))}G(!1)},je=async()=>{we(!0),K(null);try{let t=await S.device.androidStatus();t.success&&t.data?Se(t.data):K(t.error||e(`connectors.phoneCheckFailed`))}catch(e){K(e instanceof Error?e.message:String(e))}we(!1)},Me=()=>{window.dispatchEvent(new CustomEvent(`switch-tab`,{detail:`tools`}))},Ne=()=>B({name:``,command:``,args:``,env:``,transport:`stdio`,url:``,headers:``}),Pe=e=>Object.fromEntries(e.split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.indexOf(`=`);return t>0?[e.slice(0,t).trim(),e.slice(t+1).trim()]:[e,``]})),Fe=async()=>{let t=z.transport!==`stdio`;if(!z.name.trim()||!t&&!z.command.trim()||t&&!z.url.trim())P(e(`connectors.customFormRequired`));else{N(e=>({...e,__add:!0})),P(null);try{let e=await S.connectors.addCustom({name:z.name.trim(),command:t?void 0:z.command.trim(),args:t?void 0:z.args.split(/\s+/).filter(Boolean),env:Pe(z.env),url:t?z.url.trim():void 0,transport:t?z.transport:void 0,headers:t?Pe(z.headers):void 0});e.success&&e.data?(f(t=>[...t,e.data]),he(!1),Ne()):P(e.error||`添加失败`)}catch(e){P(e instanceof Error?e.message:String(e))}finally{N(e=>({...e,__add:!1}))}}},Ie=async e=>{N(t=>({...t,[e.id]:!0}));try{let t=await S.connectors.removeCustom(e.id);t.success?f(t=>t.filter(t=>t.id!==e.id)):P(t.error||`删除失败`)}finally{N(t=>({...t,[e.id]:!1}))}},J=async()=>{C(!0),j(null);let e=await S.connectors.list();e.success&&Array.isArray(e.data?.connectors)?f(e.data.connectors):j(e.error||`加载连接器失败`),C(!1)};(0,T.useEffect)(()=>{J(),De(),ke()},[]),ie(()=>void J(),{filterServer:e=>/^(managed|custom)-connector-/.test(e)});let Y=(e,t,n,r)=>{P(n||null),f(n=>n.map(n=>n.id===e?t??{...n,enabled:!!r,status:`error`}:n))},Le=async(e,t,n)=>{P(null),N(t=>({...t,[e.id]:!0})),f(n=>n.map(n=>n.id===e.id?{...n,enabled:t,status:t?`connecting`:`installed`}:n));try{let r=await S.connectors.toggle(e.id,t,n);r.success&&r.data?f(t=>t.map(t=>t.id===e.id?r.data:t)):Y(e.id,void 0,r.error||`切换 ${e.name} 失败`,!t)}catch(n){Y(e.id,void 0,n instanceof Error?n.message:String(n),!t)}finally{N(t=>({...t,[e.id]:!1}))}},Re=e=>{!e.enabled&&e.requiresEnv?.length&&e.missingEnv?.length?R(e.id):(R(null),Le(e,!e.enabled))},ze=async(e,t)=>{R(null),P(null),N(t=>({...t,[e.id]:!0})),f(t=>t.map(t=>t.id===e.id?{...t,enabled:!0,status:`connecting`}:t));try{let n=await S.connectors.connect(e.id,t);n.success&&n.data?(f(t=>t.map(t=>t.id===e.id?n.data:t)),pe(t=>({...t,[e.id]:{}}))):Y(e.id,void 0,n.error||`连接 ${e.name} 失败`,!1)}catch(t){Y(e.id,void 0,t instanceof Error?t.message:String(t),!1)}finally{N(t=>({...t,[e.id]:!1}))}},Be=async t=>{P(null),Ee(t.id);try{let n=await S.connectors.authorize(t.id);if(!n.success||!n.data?.authUrl){P(n.error||e(`connectors.authorizeFailed`));return}window.open(n.data.authUrl,`_blank`,`noopener,noreferrer`);let r=Date.now()+12e4;for(;Date.now()<r;){await new Promise(e=>setTimeout(e,2e3));let e=(await S.connectors.list()).data?.connectors?.find(e=>e.id===t.id);if(e){if(f(n=>n.map(n=>n.id===t.id?e:n)),e.error){P(e.error);break}if(e.authorized&&e.status===`ready`)break}}}catch(e){P(e instanceof Error?e.message:String(e))}finally{Ee(null)}},Ve=t=>{let n=`inline-flex items-center gap-1 px-1.5 py-0.5 rounded text-badge`;return t.stage===`ready`?(0,E.jsxs)(`span`,{className:`${n} bg-accent-green/15 text-accent-green`,children:[(0,E.jsx)(_,{size:9}),e(`connectors.phoneBadgeReady`)]}):t.stage===`adb-missing`||t.stage===`adb-error`?(0,E.jsxs)(`span`,{className:`${n} bg-accent-red/15 text-accent-red`,children:[(0,E.jsx)(d,{size:9}),t.stage===`adb-error`?e(`connectors.phoneBadgeAdbError`):e(`connectors.phoneBadgeNoAdb`)]}):(0,E.jsxs)(`span`,{className:`${n} bg-accent-yellow/15 text-accent-yellow`,children:[(0,E.jsx)(d,{size:9}),e(`connectors.phoneBadgeWaiting`)]})},He=e=>e===`adb-error`?0:e===`adb-missing`?1:e===`no-device`?2:e===`unauthorized`||e===`device-offline`?3:e===`multiple`?4:0,Ue=t=>{switch(t.stage){case`ready`:return e(`connectors.phoneReady`,{device:t.selected?`${t.selected.serial}${t.selected.model?` · ${t.selected.model}`:``}`:`—`});case`adb-missing`:return e(`connectors.phoneAdbMissing`,{env:t.envKeys.binary});case`adb-error`:return e(`connectors.phoneAdbError`,{env:t.envKeys.binary});case`no-device`:return e(`connectors.phoneNoDevice`);case`unauthorized`:return e(`connectors.phoneUnauthorized`);case`device-offline`:return e(`connectors.phoneOffline`);case`multiple`:return e(`connectors.phoneMultiple`,{count:t.devices.filter(e=>e.state===`device`).length,serials:t.devices.filter(e=>e.state===`device`).map(e=>e.serial).join(`, `),env:t.envKeys.serial});default:return e(`connectors.phoneNoDevice`)}},We=t=>{let n=`inline-flex items-center gap-1 px-2 py-0.5 rounded text-xs font-medium`;if(!t.installed)return(0,E.jsxs)(`span`,{className:`${n} bg-dark-hover text-dark-muted`,children:[(0,E.jsx)(l,{size:12}),e(`connectors.notInstalled`)]});switch(t.status){case`ready`:return(0,E.jsxs)(`span`,{className:`${n} bg-accent-green/15 text-accent-green`,children:[(0,E.jsx)(_,{size:12}),e(`connectors.ready`)]});case`connecting`:return(0,E.jsxs)(`span`,{className:`${n} bg-accent-blue/15 text-accent-blue`,children:[(0,E.jsx)(o,{size:12,className:`animate-spin`}),e(`connectors.connecting`)]});case`error`:return(0,E.jsxs)(`span`,{className:`${n} bg-accent-red/15 text-accent-red`,children:[(0,E.jsx)(d,{size:12}),e(`connectors.error`)]});case`disabled`:return(0,E.jsx)(`span`,{className:`${n} bg-dark-hover text-dark-muted`,children:e(`connectors.disabled`)});default:return(0,E.jsx)(`span`,{className:`${n} bg-dark-hover text-dark-muted`,children:e(`connectors.installed`)})}},X=i.find(e=>e.id===A)??null,Ge=i.filter(e=>e.featured&&e.id!==A&&ae(e)),Ke=new Set(Ge.map(e=>e.id)),Z=i.filter(e=>e.id!==A&&!Ke.has(e.id)),qe=X?.missingEnv??[],Q=qe.length>0,Je=!!(X&&de===X.id),$=Z.filter(e=>L===`all`||e.kind===L),Ye=$.filter(e=>{if(F){let t=F.toLowerCase();if(![e.name,e.id,e.description,e.category??``,e.kind,...e.languages??[]].join(` `).toLowerCase().includes(t))return!1}return!(I&&e.category!==I)}).sort((e,t)=>e.enabled===t.enabled?e.name.localeCompare(t.name):e.enabled?-1:1),Xe=[...new Set($.map(e=>e.category).filter(Boolean))];if(re)return(0,E.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,role:`status`,"aria-label":e(`common.loading`),children:(0,E.jsx)(w,{count:5})});if(D)return(0,E.jsx)(`div`,{className:`flex-1 flex items-center justify-center`,children:(0,E.jsxs)(`div`,{className:`text-center`,children:[(0,E.jsx)(d,{size:32,className:`mx-auto mb-2 text-accent-red`}),(0,E.jsx)(`p`,{className:`text-accent-red mb-4`,children:D}),(0,E.jsx)(x,{variant:`accent`,onClick:()=>void J(),children:e(`common.retry`)})]})});let Ze=t=>{let n=fe[t.id]??{},r=(e,n)=>pe(r=>({...r,[t.id]:{...r[t.id]??{},[e]:n}})),i=t.requiresEnv??[],a=i.filter(e=>!e.optional),o=i.filter(e=>e.optional),s=new Set(t.configuredEnv??[]),c=Object.fromEntries(Object.entries(n).filter(([,e])=>e.trim().length>0)),l=a.filter(e=>!c[e.key]&&!s.has(e.key)),u=t=>(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`label`,{className:`flex items-center gap-1.5 text-meta text-dark-muted mb-1`,children:[(0,E.jsx)(`span`,{children:t.label}),t.optional?(0,E.jsx)(`span`,{className:`text-badge px-1 py-0.5 rounded bg-dark-hover text-dark-muted`,children:e(`connectors.envOptional`)}):null,s.has(t.key)?(0,E.jsx)(`span`,{className:`text-badge px-1 py-0.5 rounded bg-accent-green/15 text-accent-green`,children:e(`connectors.envAlreadySet`)}):null]}),(0,E.jsx)(`input`,{type:t.secret?`password`:`text`,value:n[t.key]??``,onChange:e=>r(t.key,e.target.value),placeholder:s.has(t.key)?e(`connectors.envKeepPlaceholder`):t.key,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`}),t.hint?(0,E.jsx)(`p`,{className:`text-badge text-dark-muted mt-1`,children:t.hint}):null]},t.key);return(0,E.jsxs)(`div`,{className:`mt-3 pt-3 border-t border-dark-border`,children:[(0,E.jsxs)(`div`,{className:`text-xs text-dark-muted mb-2 flex items-center gap-1`,children:[(0,E.jsx)(h,{size:12}),a.length?e(`connectors.needCredentials`):e(`connectors.envOptionalOnly`)]}),(0,E.jsx)(`div`,{className:`space-y-2`,children:a.map(u)}),o.length?(0,E.jsxs)(`details`,{className:`mt-2`,open:l.length===0&&a.length===0,children:[(0,E.jsx)(`summary`,{className:`text-meta text-dark-muted cursor-pointer select-none`,children:e(`connectors.envOptionalSection`,{count:o.length})}),(0,E.jsx)(`div`,{className:`space-y-2 mt-2`,children:o.map(u)})]}):null,l.length?(0,E.jsx)(`p`,{className:`text-badge text-accent-yellow mt-2`,children:e(`connectors.envMissingRequired`,{keys:l.map(e=>e.key).join(`, `)})}):null,(0,E.jsxs)(`div`,{className:`flex gap-2 mt-2`,children:[(0,E.jsx)(x,{variant:`accent`,disabled:l.length>0,onClick:()=>void ze(t,c),children:e(`connectors.connect`)}),(0,E.jsx)(`button`,{onClick:()=>R(null),className:`px-3 py-1.5 bg-dark-surface border border-dark-border rounded-lg text-sm`,children:e(`common.cancel`)})]})]})},Qe=(t,n=!1)=>{let i=!!M[t.id],a=de===t.id,o=new Set(t.configuredEnv??[]),c=(t.requiresEnv??[]).filter(e=>e.optional&&!o.has(e.key)).length;return(0,E.jsxs)(`div`,{className:n?``:`bg-dark-surface border border-dark-border rounded-lg p-4 transition-opacity ${t.enabled?``:`opacity-80`}`,children:[(0,E.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,E.jsxs)(`div`,{className:`flex items-start gap-3 flex-1 min-w-0`,children:[(0,E.jsx)(`span`,{className:`mt-0.5 shrink-0 px-2 py-1 rounded-md text-meta font-semibold uppercase ${t.kind===`lsp`?`bg-accent-purple/15 text-accent-purple`:`bg-accent-green/15 text-accent-green`}`,children:t.kind===`lsp`?`LSP`:`MCP`}),(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,E.jsx)(`span`,{className:`font-medium text-sm truncate`,children:t.name}),t.custom?(0,E.jsx)(`span`,{className:`text-badge px-1.5 py-0.5 rounded bg-accent-purple/15 text-accent-purple`,children:e(`connectors.custom`)}):null,t.official?(0,E.jsxs)(`span`,{title:`Official`,className:`text-badge px-1.5 py-0.5 rounded bg-accent-yellow/15 text-accent-yellow`,children:[`🎖️ `,e(`connectors.official`)]}):null,t.scope===`cloud`?(0,E.jsxs)(`span`,{title:`Cloud`,className:`inline-flex items-center gap-0.5 text-badge px-1.5 py-0.5 rounded bg-accent-blue/15 text-accent-blue`,children:[(0,E.jsx)(m,{size:9}),e(`connectors.cloud`)]}):(0,E.jsxs)(`span`,{title:`Local`,className:`inline-flex items-center gap-0.5 text-badge px-1.5 py-0.5 rounded bg-dark-hover text-dark-muted`,children:[(0,E.jsx)(r,{size:9}),e(`connectors.local`)]}),t.language?(0,E.jsx)(`span`,{className:`text-badge`,children:t.language}):null,We(t)]}),(0,E.jsx)(`p`,{className:`text-xs text-dark-muted mt-1 line-clamp-2`,children:t.description}),(0,E.jsxs)(`div`,{className:`flex items-center gap-3 mt-2 text-meta text-dark-muted flex-wrap`,children:[(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,E.jsx)(r,{size:11}),(0,E.jsx)(`code`,{className:`text-badge`,children:t.installHint})]}),t.transport&&t.transport!==`stdio`?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-accent-blue`,children:[(0,E.jsx)(m,{size:11}),t.transport===`sse`?`SSE`:`Streamable HTTP`]}):null,t.languages?.length?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,E.jsx)(te,{size:11}),t.languages.join(`, `)]}):null,t.kind===`mcp`&&t.toolCount!==void 0?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,E.jsx)(b,{size:11}),e(`connectors.toolCount`,{count:t.toolCount})]}):null,t.requiresEnv?.length?(0,E.jsxs)(`button`,{type:`button`,onClick:()=>R(a?null:t.id),className:`inline-flex items-center gap-1 hover:text-accent-blue ${t.missingEnv?.length?`text-accent-yellow`:`text-dark-muted`}`,children:[(0,E.jsx)(h,{size:11}),t.missingEnv?.length?`${t.missingEnv.join(`, `)} ${e(`connectors.missing`)}`:e(`connectors.envConfigured`),c?` · ${e(`connectors.envOptionalUnset`,{count:c})}`:null]}):null,t.docsUrl?(0,E.jsxs)(`a`,{href:t.docsUrl,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 hover:text-accent-blue`,onClick:e=>e.stopPropagation(),children:[(0,E.jsx)(s,{size:11}),e(`connectors.docs`)]}):null]}),t.error?(0,E.jsx)(`p`,{className:`text-meta text-accent-red mt-1`,children:t.error}):null,t.supportsOAuth&&!t.authorized&&!t.error?(0,E.jsx)(`p`,{className:`text-meta text-accent-yellow mt-1`,children:e(`connectors.oauthNotAuthorized`)}):null]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[t.supportsOAuth?(0,E.jsx)(x,{variant:t.authorized?`ghost`:`accent`,size:`sm`,disabled:i||Te===t.id,onClick:()=>void Be(t),children:Te===t.id?e(`connectors.authorizing`):t.authorized?e(`connectors.reauthorize`):e(`connectors.authorize`)}):null,t.custom?(0,E.jsx)(`button`,{onClick:()=>void Ie(t),disabled:i,title:e(`connectors.removeCustom`),className:`p-1.5 rounded-lg text-dark-muted hover:text-accent-red hover:bg-accent-red/10 transition-colors disabled:opacity-40`,children:(0,E.jsx)(u,{size:14})}):null,!t.installed&&t.enabled?(0,E.jsxs)(`span`,{className:`text-meta text-accent-blue flex items-center gap-1`,children:[(0,E.jsx)(l,{size:11,className:`animate-pulse`}),e(`connectors.installing`)]}):null,(0,E.jsx)(`button`,{role:`switch`,"aria-checked":t.enabled,disabled:i,onClick:()=>Re(t),className:`relative w-12 h-6 rounded-full transition-colors disabled:opacity-50 ${t.enabled?`bg-accent-green`:`bg-dark-border`}`,children:(0,E.jsx)(`span`,{className:`absolute top-1 w-4 h-4 bg-white rounded-full transition-transform ${t.enabled?`start-7`:`start-1`}`})})]})]}),a?Ze(t):null,t.supportsAccounts?(0,E.jsx)(O,{connector:t,onRefresh:()=>void J()}):null]},t.id)};return(0,E.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-y-auto custom-scrollbar p-4`,children:[(0,E.jsxs)(`div`,{className:`sticky top-0 z-20 -mx-4 -mt-4 flex items-center justify-between bg-dark-bg/90 px-4 pb-3 pt-4 backdrop-blur`,children:[(0,E.jsxs)(`h2`,{className:`text-lg font-semibold flex items-center gap-2`,children:[(0,E.jsx)(b,{size:20}),e(`nav.connectors`),(0,E.jsxs)(`span`,{className:`text-sm font-normal text-dark-muted`,children:[`· `,Z.filter(e=>e.enabled).length,`/`,Z.length]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,E.jsx)(x,{variant:`accent`,leftIcon:(0,E.jsx)(ee,{size:14}),onClick:()=>he(e=>!e),children:e(`connectors.addCustom`)}),(0,E.jsxs)(`button`,{onClick:()=>void J(),className:`flex items-center gap-2 px-3 py-1.5 bg-dark-surface border border-dark-border rounded hover:bg-dark-hover transition-colors`,children:[(0,E.jsx)(g,{size:14}),e(`common.refresh`)]})]})]}),(0,E.jsxs)(`div`,{className:`mb-4 px-3 py-2 rounded-lg bg-accent-blue/10 border border-accent-blue/20 text-xs text-dark-muted space-y-1`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-x-2 gap-y-1 flex-wrap`,children:[(0,E.jsx)(`span`,{children:e(`connectors.scopeHint`)}),(0,E.jsxs)(`button`,{type:`button`,onClick:Me,className:`inline-flex items-center gap-1 text-accent-blue hover:underline`,children:[e(`connectors.scopeHintToolsLink`),(0,E.jsx)(c,{size:11})]})]}),(0,E.jsx)(`div`,{children:e(`connectors.builtinCardHint`)})]}),(0,E.jsxs)(`div`,{className:`mb-4 p-4 bg-dark-surface border border-dark-border rounded-lg space-y-3`,children:[X?(0,E.jsxs)(`div`,{children:[(0,E.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,E.jsxs)(`div`,{className:`min-w-0 flex items-start gap-2`,children:[(0,E.jsx)(t,{size:16,className:`mt-0.5 shrink-0 ${Q?`text-accent-yellow`:`text-accent-green`}`}),(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,E.jsx)(`span`,{className:`text-sm text-dark-text`,children:e(`connectors.emailTitle`)}),We(X),Q?(0,E.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-badge px-1.5 py-0.5 rounded bg-accent-yellow/15 text-accent-yellow`,children:[(0,E.jsx)(d,{size:9}),e(`connectors.emailNeedsSetup`)]}):null]}),(0,E.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`connectors.emailDesc`)})]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,E.jsxs)(`button`,{type:`button`,onClick:()=>R(Je?null:X.id),className:`inline-flex items-center gap-1 px-2.5 py-1 rounded-lg text-meta border transition-colors ${Q?`bg-accent-yellow/15 border-accent-yellow/40 text-accent-yellow hover:bg-accent-yellow/25`:`bg-dark-bg border-dark-border text-dark-muted hover:bg-dark-hover`}`,children:[(0,E.jsx)(h,{size:11}),e(Q?`connectors.emailConfigure`:`connectors.emailEditCredentials`)]}),(0,E.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":X.enabled,disabled:!!M[X.id],onClick:()=>Re(X),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:opacity-50 ${X.enabled?`bg-accent-green`:`bg-dark-border`}`,children:M[X.id]?(0,E.jsx)(o,{size:12,className:`absolute start-[7px] top-[3px] animate-spin text-accent-fg`}):(0,E.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${X.enabled?`translate-x-[18px]`:`translate-x-0.5`}`})})]})]}),Q?(0,E.jsxs)(`div`,{className:`mt-2 flex items-start gap-2 rounded-lg bg-accent-yellow/10 border border-accent-yellow/30 px-3 py-2`,children:[(0,E.jsx)(d,{size:13,className:`text-accent-yellow mt-0.5 shrink-0`}),(0,E.jsxs)(`div`,{className:`text-xs text-accent-yellow space-y-0.5`,children:[(0,E.jsx)(`div`,{children:e(`connectors.emailNeedsSetupHint`,{keys:qe.join(`, `)})}),(0,E.jsx)(`div`,{className:`text-dark-muted`,children:e(`connectors.emailPriorityHint`)})]})]}):null,Je?Ze(X):null,X.supportsAccounts?(0,E.jsx)(O,{connector:X,onRefresh:()=>void J()}):null]}):null,Ge.length?(0,E.jsxs)(`div`,{className:`space-y-2 ${X?`pt-3 border-t border-dark-border`:``}`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-1.5 text-meta text-dark-muted`,children:[(0,E.jsx)(a,{size:11}),e(`connectors.featuredSetup`)]}),Ge.map(e=>(0,E.jsx)(`div`,{children:Qe(e,!0)},e.id))]}):null,(0,E.jsxs)(`div`,{className:`flex items-center justify-between gap-3 ${X?`pt-3 border-t border-dark-border`:``}`,children:[(0,E.jsxs)(`div`,{className:`min-w-0 flex items-start gap-2`,children:[(0,E.jsx)(n,{size:16,className:`text-accent-blue mt-0.5 shrink-0`}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`div`,{className:`text-sm text-dark-text`,children:`Computer Use`}),(0,E.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:`GUI 截屏 + 鼠标键盘操控(Windows)。每次调用需审批;需要视觉模型读屏。`})]})]}),(0,E.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":!!V,disabled:_e,onClick:()=>void Oe(),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:opacity-50 ${V?`bg-accent-blue`:`bg-dark-border`}`,children:_e?(0,E.jsx)(o,{size:12,className:`absolute start-[7px] top-[3px] animate-spin text-accent-fg`}):(0,E.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${V?`translate-x-[18px]`:`translate-x-0.5`}`})})]}),ve?(0,E.jsx)(`div`,{className:`text-xs text-accent-red bg-accent-red/10 border border-accent-red/30 rounded-lg px-3 py-2`,children:ve}):null,(0,E.jsxs)(`div`,{className:`pt-3 border-t border-dark-border space-y-2`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,E.jsxs)(`div`,{className:`min-w-0 flex items-start gap-2`,children:[(0,E.jsx)(p,{size:16,className:`text-accent-blue mt-0.5 shrink-0`}),(0,E.jsxs)(`div`,{className:`min-w-0`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,E.jsx)(`span`,{className:`text-sm text-dark-text`,children:e(`connectors.phoneTitle`)}),q?Ve(q):null]}),(0,E.jsx)(`div`,{className:`text-xs text-dark-muted mt-0.5`,children:e(`connectors.phoneDesc`)})]})]}),(0,E.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,E.jsxs)(`button`,{type:`button`,onClick:()=>void je(),disabled:Ce,className:`inline-flex items-center gap-1 px-2.5 py-1 rounded-lg text-meta bg-dark-bg border border-dark-border text-dark-muted hover:bg-dark-hover transition-colors disabled:opacity-50`,children:[Ce?(0,E.jsx)(o,{size:11,className:`animate-spin`}):(0,E.jsx)(v,{size:11}),e(Ce?`connectors.phoneChecking`:q?`connectors.phoneRecheck`:`connectors.phoneCheck`)]}),(0,E.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":!!W,disabled:be,onClick:()=>void Ae(),className:`relative w-9 h-5 rounded-full transition-colors shrink-0 disabled:opacity-50 ${W?`bg-accent-blue`:`bg-dark-border`}`,children:be?(0,E.jsx)(o,{size:12,className:`absolute start-[7px] top-[3px] animate-spin text-accent-fg`}):(0,E.jsx)(`span`,{className:`absolute top-0.5 left-0 w-4 h-4 rounded-full bg-white shadow transition-transform ${W?`translate-x-[18px]`:`translate-x-0.5`}`})})]})]}),q?(0,E.jsx)(`div`,{className:`rounded-lg border px-3 py-2 text-xs ${q.stage===`ready`?`bg-accent-green/10 border-accent-green/30 text-accent-green`:q.stage===`adb-missing`||q.stage===`adb-error`?`bg-accent-red/10 border-accent-red/30 text-accent-red`:`bg-accent-yellow/10 border-accent-yellow/30 text-accent-yellow`}`,children:(0,E.jsxs)(`div`,{className:`flex items-start gap-2`,children:[q.stage===`ready`?(0,E.jsx)(_,{size:13,className:`mt-0.5 shrink-0`}):(0,E.jsx)(d,{size:13,className:`mt-0.5 shrink-0`}),(0,E.jsxs)(`div`,{className:`min-w-0 space-y-1`,children:[(0,E.jsx)(`div`,{children:Ue(q)}),He(q.stage)>0?(0,E.jsx)(`ol`,{className:`space-y-0.5`,children:[1,2,3,4].map(t=>{let n=He(q.stage),r=t===1?{env:q.envKeys.binary}:t===4?{env:q.envKeys.serial}:{};return(0,E.jsxs)(`li`,{className:`flex items-start gap-1.5 ${t===n?`text-accent-yellow`:`text-dark-muted`}`,children:[(0,E.jsx)(`span`,{className:`shrink-0 tabular-nums`,children:t===n?`▶`:t+`.`}),(0,E.jsx)(`span`,{children:e(`connectors.phoneStep${t}`,r)})]},t)})}):null,q.devices.length>0?(0,E.jsx)(`div`,{className:`text-dark-muted`,children:e(`connectors.phoneDevices`,{list:q.devices.map(e=>`${e.serial} [${e.state}]${e.model?` · ${e.model}`:``}`).join(` | `)})}):null,q.stage!==`ready`&&q.reason?(0,E.jsx)(`div`,{className:`text-dark-muted break-words opacity-80`,children:q.reason}):null]})]})}):(0,E.jsx)(`div`,{className:`text-xs text-dark-muted ps-6`,children:e(`connectors.phoneConnectHint`)}),xe?(0,E.jsx)(`div`,{className:`text-xs text-accent-red bg-accent-red/10 border border-accent-red/30 rounded-lg px-3 py-2`,children:xe}):null]})]}),me?(0,E.jsxs)(`div`,{className:`mb-4 p-4 bg-dark-surface border border-dark-border rounded-lg`,children:[(0,E.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,E.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[(0,E.jsx)(y,{size:15,className:`text-accent-purple`}),e(`connectors.customTitle`)]}),(0,E.jsx)(`div`,{className:`flex gap-1`,children:[[`stdio`,`🖥️ `+e(`connectors.customLocal`)],[`http`,`🌐 HTTP`],[`sse`,`📡 SSE`]].map(([e,t])=>(0,E.jsx)(`button`,{onClick:()=>B(t=>({...t,transport:e})),className:`px-3 py-1.5 rounded-lg text-xs transition-colors ${z.transport===e?`bg-accent-blue text-accent-fg`:`bg-dark-bg border border-dark-border hover:bg-dark-hover`}`,children:t},e))})]}),(0,E.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customName`)}),(0,E.jsx)(`input`,{value:z.name,onChange:e=>B(t=>({...t,name:e.target.value})),placeholder:`my-server`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]}),z.transport===`stdio`?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customCommand`)}),(0,E.jsx)(`input`,{value:z.command,onChange:e=>B(t=>({...t,command:e.target.value})),placeholder:`npx -y @some/mcp-server`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]}),(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customArgs`)}),(0,E.jsx)(`input`,{value:z.args,onChange:e=>B(t=>({...t,args:e.target.value})),placeholder:`--arg value`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]})]}):(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customUrl`)}),(0,E.jsx)(`input`,{value:z.url,onChange:e=>B(t=>({...t,url:e.target.value})),placeholder:`https://mcp.example.com/mcp`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]}),z.transport===`stdio`?(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customEnv`)}),(0,E.jsx)(`input`,{value:z.env,onChange:e=>B(t=>({...t,env:e.target.value})),placeholder:`KEY=value, KEY2=value2`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]}):(0,E.jsxs)(`div`,{children:[(0,E.jsx)(`label`,{className:`block text-meta text-dark-muted mb-1`,children:e(`connectors.customHeaders`)}),(0,E.jsx)(`input`,{value:z.headers,onChange:e=>B(t=>({...t,headers:e.target.value})),placeholder:`Authorization=Bearer xxx`,className:`w-full px-3 py-1.5 bg-dark-bg border border-dark-border rounded-lg text-sm text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]})]}),(0,E.jsxs)(`div`,{className:`flex gap-2 mt-3`,children:[(0,E.jsx)(x,{variant:`accent`,onClick:()=>void Fe(),loading:!!M.__add,children:e(`connectors.add`)}),(0,E.jsx)(`button`,{onClick:()=>he(!1),className:`px-3 py-1.5 bg-dark-surface border border-dark-border rounded-lg text-sm`,children:e(`common.cancel`)})]})]}):null,(0,E.jsx)(`div`,{className:`flex gap-1 mb-3`,children:[[`all`,`${e(`connectors.all`)} (${Z.length})`],[`lsp`,`LSP (${Z.filter(e=>e.kind===`lsp`).length})`],[`mcp`,`MCP (${Z.filter(e=>e.kind===`mcp`).length})`]].map(([e,t])=>(0,E.jsx)(`button`,{onClick:()=>ue(e),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${L===e?`bg-accent-blue text-accent-fg`:`bg-dark-surface border border-dark-border hover:bg-dark-hover`}`,children:t},e))}),(0,E.jsx)(`div`,{className:`flex gap-3 mb-3`,children:(0,E.jsxs)(`div`,{className:`flex-1 relative`,children:[(0,E.jsx)(v,{size:16,className:`absolute start-3 top-1/2 -translate-y-1/2 text-dark-muted`}),(0,E.jsx)(`input`,{type:`text`,value:F,onChange:e=>ce(e.target.value),placeholder:e(`connectors.searchPlaceholder`),className:`w-full ps-10 pe-4 py-2 bg-dark-surface border border-dark-border rounded-lg text-dark-text placeholder-dark-muted focus:border-accent-blue focus:outline-none`})]})}),(0,E.jsxs)(`div`,{className:`flex gap-1 mb-4 flex-wrap`,children:[(0,E.jsxs)(`button`,{onClick:()=>le(null),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${I?`bg-dark-surface border border-dark-border hover:bg-dark-hover`:`bg-accent-blue text-accent-fg`}`,children:[e(`connectors.all`),` `,(0,E.jsxs)(`span`,{className:`opacity-70 text-xs`,children:[`(`,$.length,`)`]})]}),Xe.map(e=>{let t=$.filter(t=>t.category===e).length;return(0,E.jsxs)(`button`,{onClick:()=>le(I===e?null:e),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${I===e?`bg-accent-blue text-accent-fg`:`bg-dark-surface border border-dark-border hover:bg-dark-hover`}`,children:[k[e]??e,` `,(0,E.jsxs)(`span`,{className:`opacity-70 text-xs`,children:[`(`,t,`)`]})]},e)})]}),se?(0,E.jsx)(`div`,{className:`mb-4 px-3 py-2 bg-accent-red/10 border border-accent-red/30 rounded-lg text-accent-red text-sm`,children:se}):null,(0,E.jsx)(`div`,{children:Ye.length===0?(0,E.jsxs)(`div`,{className:`text-center text-dark-muted text-sm py-10`,children:[(0,E.jsx)(v,{size:24,className:`mx-auto mb-2 opacity-50`}),e(`connectors.noResults`)]}):(0,E.jsx)(`div`,{className:`space-y-2`,children:Ye.map(e=>Qe(e))})})]})}export{j as ConnectorsView};