@minimaxclaw/cli 1.0.42 → 1.0.44

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 (90) hide show
  1. package/README.md +19 -21
  2. package/bin/dscode.exe +4 -0
  3. package/install.cjs +15 -0
  4. package/package.json +9 -9
  5. package/web/dist/assets/AssistantsView-Y4TXobGE.js +1 -0
  6. package/web/dist/assets/AutomationView-DfAF2L92.js +3 -0
  7. package/web/dist/assets/Button-D-g7PgYh.js +1 -0
  8. package/web/dist/assets/ChannelConfigView-WJ-zUV8p.js +12 -0
  9. package/web/dist/assets/ChartsView-CSAfGqTC.js +1 -0
  10. package/web/dist/assets/ConnectorsView-DaHmxnGE.js +2 -0
  11. package/web/dist/assets/{MessageBubble-CVGXupVH.js → DiffPreview-D8tIj_aF.js} +64 -67
  12. package/web/dist/assets/FileContextMenu-C5WYeBNu.js +1 -0
  13. package/web/dist/assets/FileTreeView-B7IN0KmE.js +1 -0
  14. package/web/dist/assets/HookConfigView-9gqvrRhQ.js +2 -0
  15. package/web/dist/assets/InboxView-BcEfijbj.js +1 -0
  16. package/web/dist/assets/InputArea-D5F91Uwk.js +14 -0
  17. package/web/dist/assets/Install-Cuelo0If.js +2 -0
  18. package/web/dist/assets/MemoryView-BvZSh5-T.js +1 -0
  19. package/web/dist/assets/ModelsView-BgvMN8xv.js +1 -0
  20. package/web/dist/assets/PluginsView-C3d6e8vV.js +1 -0
  21. package/web/dist/assets/ProjectsView-CM7GOsoK.js +1 -0
  22. package/web/dist/assets/SessionGrid-BQSrCDqQ.js +4 -0
  23. package/web/dist/assets/SettingsModal-BvGXq5EE.js +4 -0
  24. package/web/dist/assets/SkillsView-87kGRliE.js +1 -0
  25. package/web/dist/assets/TemplatesTab-8MLwVNwV.js +1 -0
  26. package/web/dist/assets/ToolsView-CjdYiaNz.js +1 -0
  27. package/web/dist/assets/{agentIconSet-B5GUQwel.js → agentIconSet-CDeMxTHf.js} +1 -1
  28. package/web/dist/assets/api-ZQf0Ys8y.js +1 -0
  29. package/web/dist/assets/channelMeta-BO645sjD.js +1 -0
  30. package/web/dist/assets/common-CPZxdYLs.js +304 -0
  31. package/web/dist/assets/icons-B8Ngx6rM.js +1 -0
  32. package/web/dist/assets/imageUrl-CrQM4gmf.js +74 -0
  33. package/web/dist/assets/index-Bm7r92T3.css +1 -0
  34. package/web/dist/assets/index-STsyoFCk.js +145 -0
  35. package/web/dist/assets/installDiagnosis-ZYUVgJIJ.js +3 -0
  36. package/web/dist/assets/{markdown-N5__3T-w.js → markdown-Cps-36Z5.js} +1 -1
  37. package/web/dist/assets/{panels-CIPgN61N.js → panels-DCwx2Pbu.js} +1 -1
  38. package/web/dist/assets/{react-vendor-CB4cLN-6.js → react-vendor-CXI113IS.js} +1 -1
  39. package/web/dist/assets/sessionKind-CZ1kQQII.js +1 -0
  40. package/web/dist/assets/{settingsStore-Xqln0d91.js → settingsStore-BSdi9gNd.js} +1 -1
  41. package/web/dist/assets/src-BK8SoTFV.js +1 -0
  42. package/web/dist/assets/{state-CSZ50keL.js → state-pOTP5BEk.js} +1 -1
  43. package/web/dist/assets/statusAxesRefresh--2evRuAU.js +1 -0
  44. package/web/dist/assets/sttLanguages-BPcOF0nQ.js +2 -0
  45. package/web/dist/assets/{types-JssxRFJn.js → threads-lr33dwqg.js} +1 -1
  46. package/web/dist/assets/useConfirm-CQjBnYuP.js +1 -0
  47. package/web/dist/assets/{useTranslation-B-mfApCn.js → useTranslation-gGKZZfux.js} +1 -1
  48. package/web/dist/assets/websocket-CeKJTCdp.js +1 -0
  49. package/web/dist/assets/whatsNewStore-C0hbStfc.js +1 -0
  50. package/web/dist/assets/{workspaceSemantics-RaIRer76.js → workspaceSemantics-CW8ytHq2.js} +3 -3
  51. package/web/dist/favicon.svg +31 -14
  52. package/web/dist/icons/icon-1024.png +0 -0
  53. package/web/dist/icons/icon-180.png +0 -0
  54. package/web/dist/icons/icon-192.png +0 -0
  55. package/web/dist/icons/icon-512.png +0 -0
  56. package/web/dist/icons/icon-maskable-512.png +0 -0
  57. package/web/dist/index.html +38 -35
  58. package/web/dist/logo.svg +42 -20
  59. package/web/dist/manifest.webmanifest +2 -2
  60. package/web/dist/assets/AssistantsView-Ct3BBpYf.js +0 -1
  61. package/web/dist/assets/AutomationView-CO-jVhee.js +0 -3
  62. package/web/dist/assets/ChannelConfigView-Ct1W584x.js +0 -8
  63. package/web/dist/assets/ChartsView-CAc37Sam.js +0 -1
  64. package/web/dist/assets/ConnectorsView-DP4bbh58.js +0 -1
  65. package/web/dist/assets/FileTreeView-DwsYfssO.js +0 -1
  66. package/web/dist/assets/HookConfigView-uFsqieii.js +0 -2
  67. package/web/dist/assets/InputArea-BY8quOiH.js +0 -14
  68. package/web/dist/assets/MemoryView-Bgd_lcTf.js +0 -1
  69. package/web/dist/assets/ModelsView-B271UV9L.js +0 -1
  70. package/web/dist/assets/PluginsView-Dz4fqQR1.js +0 -2
  71. package/web/dist/assets/ProjectsView-DF-YCV8y.js +0 -1
  72. package/web/dist/assets/SessionGrid-BIREstN2.js +0 -4
  73. package/web/dist/assets/SettingsModal-ZJeoZcCd.js +0 -4
  74. package/web/dist/assets/SkillsView-CH2ghYL2.js +0 -1
  75. package/web/dist/assets/TemplatesTab-BGe7_67s.js +0 -1
  76. package/web/dist/assets/ThreadsView-XditIHZ4.js +0 -2
  77. package/web/dist/assets/ToolsView-BBzsFdVZ.js +0 -1
  78. package/web/dist/assets/api-plEYhRn0.js +0 -1
  79. package/web/dist/assets/channelMeta-BGQXQxgj.js +0 -1
  80. package/web/dist/assets/common-Bbatsa0-.js +0 -192
  81. package/web/dist/assets/icons-CYDRRPKW.js +0 -1
  82. package/web/dist/assets/index-CTbLW314.js +0 -133
  83. package/web/dist/assets/index-DdzVrZye.css +0 -1
  84. package/web/dist/assets/src-49LUQhkG.js +0 -1
  85. package/web/dist/assets/sttLanguages-CSNMgUTz.js +0 -2
  86. package/web/dist/assets/ttsSettings-BwXYpDnk.js +0 -2
  87. package/web/dist/assets/useConfirm-Da8iQ_DZ.js +0 -1
  88. package/web/dist/assets/websocket-BnDwh01e.js +0 -1
  89. package/web/dist/assets/whatsNewStore-LpdLRLGl.js +0 -1
  90. /package/web/dist/assets/{MessageBubble-CCTRbIMZ.css → DiffPreview-CCTRbIMZ.css} +0 -0
@@ -1,3 +1,3 @@
1
- var e=/^\s*\*\*\*\s+(?:Add|Update|Delete)\s+File:\s*(.+?)\s*$/,t=/^\s*\*\*\*\s+Move\s+to:\s*(.+?)\s*$/,n=/^---[ \t]+(.*)$/,r=/^\+\+\+[ \t]+(.*)$/,i=/^diff --git[ \t]+(?:"([^"]*)"|(\S+))[ \t]+(?:"([^"]*)"|(\S+))[ \t]*$/,a=/^rename (?:from|to)[ \t]+(.*)$/;function o(e){if(!e)return``;let t=e.split(` `)[0]??``;return t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`)&&(t=t.slice(1,-1)),t=t.trim(),!t||t===`/dev/null`?``:t.replace(/^[ab]\//,``)}function s(e){if(!e)return[];let t=[],s=new Set,c=e=>{let n=o(e);n&&!s.has(n)&&(s.add(n),t.push(n))},l=e.split(/\r?\n/);for(let e=0;e<l.length;e++){let t=l[e]??``;if(t.startsWith(`diff --git`)){let e=i.exec(t);e&&(c(e[1]??e[2]),c(e[3]??e[4]));continue}if(t.startsWith(`rename `)){c(a.exec(t)?.[1]);continue}let o=n.exec(t);if(!o)continue;let s=r.exec(l[e+1]??``);s&&(c(o[1]),c(s[1]),e++)}return t}function c(n){if(!n)return[];let r=[],i=new Set;for(let a of n.split(/\r?\n/)){let n=a.trim();if(!n.startsWith(`***`))continue;let o=e.exec(n),s=o?null:t.exec(n),c=o?.[1]??s?.[1];c&&(i.has(c)||(i.add(c),r.push(c)))}return r}var l=[`/etc/`,`/usr/lib/`,`/boot/`,`/dev/`,`/sys/`,`/proc/`,`C:\\Windows\\`,`C:\\Program Files\\`];function u(e){if(!e)return!1;let t=e.replace(/\\/g,`/`),n=t.toLowerCase();return l.some(e=>{let r=e.replace(/\\/g,`/`),i=r.endsWith(`/`)?r.slice(0,-1):r;return/^[a-z]:\//i.test(r)?n===i.toLowerCase()||n.startsWith(r.toLowerCase()):t===i||t.startsWith(r)})}function d(e){return e.find(e=>e&&u(e))??null}var f=[`.npmrc`,`.pypirc`,`.netrc`,`.pgpass`,`.git-credentials`,`.gitcookies`,`.htpasswd`,`id_rsa`,`id_dsa`,`id_ecdsa`,`id_ed25519`,`credentials.json`,`secrets.json`,`secrets.yaml`,`secrets.yml`,`.anthropic_oauth.json`,`.google_oauth.json`,`shadow`,`sudoers`],p=[`.ssh`,`.aws`,`.azure`,`.gcloud`,`.kube`,`.docker`,`.gnupg`],m=[`.pem`,`.key`,`.pfx`,`.p12`,`.kdbx`,`.jks`,`.keystore`],h=/(^|\/)\.env($|[^\w.])/,g=/\.(example|sample|template|dist)$|\.pub$/;function _(e){if(!e)return!1;let t=e.replace(/\\/g,`/`),n=t.toLowerCase(),r=n.split(`/`).pop()??``;return!r||g.test(r)?!1:h.test(n)||r===`.env`||r.startsWith(`.env.`)||f.some(e=>r===e.toLowerCase())||m.some(e=>r.endsWith(e))?!0:t.split(`/`).some(e=>p.includes(e.toLowerCase()))}function v(e){return e.find(e=>e&&_(e))??null}function y(e){return e===`auto-act`?`act`:e===`auto-goal`?`goal`:e}function b(e){return e===`auto-act`||e===`auto-goal`}function x(e){switch(e){case`act`:return`auto-act`;case`auto-act`:return`act`;case`goal`:return`auto-goal`;case`auto-goal`:return`goal`;case`chat`:return`chat`}}var S=[`act`,`goal`,`chat`];function C(e,t){return e===`chat`?`chat`:t?e===`act`?`auto-act`:`auto-goal`:e}function w(e){let t=[`act`,`goal`];return C(t[(t.indexOf(y(e))+1)%t.length]??`act`,b(e))}var T={act:{label:`Act`,accent:`green`},"auto-act":{label:`Auto-Act`,accent:`yellow`},goal:{label:`Goal`,accent:`magenta`},"auto-goal":{label:`Auto-Goal`,accent:`red`},chat:{label:`Chat`,accent:`cyan`}},E={low:{label:`Low`,accent:`green`},medium:{label:`Medium`,accent:`cyan`},high:{label:`High`,accent:`yellow`},critical:{label:`Critical`,accent:`red`}},D={allow:{label:`Allow`,key:`y`},deny:{label:`Deny`,key:`n`},allow_session:{label:`Allow session`,key:`s`},auto:{label:`Auto mode`,key:`a`}};function O(e){return e===`plan`||e===`auto-plan`?`act`:e===`act`||e===`auto-act`||e===`goal`||e===`auto-goal`||e===`chat`?e:`auto-act`}function k(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${Math.round(e/1e3)}K`:String(e)}function A(e){return e<=0?``:e>=100?`${Math.round(e)}tok/s`:`${e.toFixed(1)}tok/s`}function j(e){if(!e)return 0;let t=(e.match(/[\u3000-\u303f\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff00-\uffef]/g)||[]).length;return t*1.5+(e.length-t)*.25}function M(e=4e3){let t=[],n=n=>{let r=n-e;for(;t.length>0&&t[0].ts<r;)t.shift()};return{feed(e,r=Date.now()){let i=j(e);i<=0||(n(r),t.push({ts:r,tokens:i}))},rate(e=Date.now()){if(n(e),t.length===0)return 0;let r=0;for(let e of t)r+=e.tokens;let i=Math.max(e-t[0].ts,500);return r/i*1e3},reset(){t=[]}}}function N(e){if(e<=0)return``;let t=Math.round(e*10);return t<600?`${(t/10).toFixed(1)}s`:`${Math.floor(t/600)}m${(t%600/10).toFixed(1)}s`}function P(e,t){switch(e){case`bash`:case`shell`:case`PowerShell`:return`ran ${t} shell command${t>1?`s`:``}`;case`read_file`:return`read ${t} file${t>1?`s`:``}`;case`write_file`:return`wrote ${t} file${t>1?`s`:``}`;case`edit_file`:case`edit_file_line`:return`edited ${t} file${t>1?`s`:``}`;case`apply_patch`:return`patched ${t} file${t>1?`s`:``}`;default:return`ran ${t} ${e}${t>1?`s`:``}`}}function F(e){let t=Object.entries(e.toolCounts).filter(([,e])=>e>0).sort((e,t)=>t[1]-e[1]),n=e.headline||`Thought for ${N(Math.max(1,Math.round(e.durationMs/1e3)))}`,r=t.map(([e,t])=>P(e,t));return r.length>0?`${n}, ${r.join(`, `)}`:n}function I(e,t){let n=e.toLowerCase(),r=new Set(n.split(/[^a-z0-9]+/).filter(Boolean)),i=(...e)=>e.some(e=>r.has(e));return n===`apply_patch`?d(c(L(t)))?`critical`:`high`:i(`rm`,`del`,`delete`,`drop`,`truncate`,`format`,`mkfs`)?`critical`:i(`bash`,`shell`,`exec`,`cmd`,`powershell`,`terminal`)?/\b(rm\s+-rf|sudo|chmod\s+777|curl.*\|\s*(ba)?sh|wget.*-O|>\/dev\/|mkfs)\b/i.test(t)?`critical`:`high`:i(`write`,`edit`,`save`,`upload`,`deploy`,`publish`)?d(z(t))?`critical`:`high`:i(`install`,`uninstall`,`npm`,`pip`,`cargo`,`gem`,`apt`,`brew`,`choco`,`yum`,`dnf`)?`high`:i(`git`,`commit`,`push`,`merge`,`rebase`)?/\b(push|force|hard\s*reset|rebase)\b/i.test(t)?`high`:`medium`:i(`http`,`fetch`,`curl`,`wget`,`api`,`request`,`download`)?`medium`:i(`read`,`open`,`list`,`ls`,`dir`,`cat`,`view`,`search`,`find`,`grep`,`glob`)?v(z(t))?`high`:`low`:`medium`}function L(e){if(!e)return``;try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return e;let n=t,r=(n.payload&&typeof n.payload==`object`?n.payload:n).patch;return typeof r==`string`?r:e}catch{return e}}var R=new Set([`file_path`,`filePath`,`filepath`,`path`,`notebook_path`,`notebookPath`,`file`]);function z(e){if(!e)return[];let t=[],n=new Set,r=e=>{typeof e==`string`&&e.trim()&&!n.has(e)&&(n.add(e),t.push(e))},i=(e,t)=>{if(!(t>4||!e||typeof e!=`object`)){if(Array.isArray(e))for(let n of e)r(n),i(n,t+1);else for(let[n,a]of Object.entries(e))R.has(n)?(r(a),Array.isArray(a)&&a.forEach(r)):i(a,t+1)}};try{i(JSON.parse(e),0)}catch{}if(t.length===0)for(let t of e.matchAll(/(?:file_path|filePath|path|file)["\s:=]+([^\s",}]+)/gi))r(t[1]);return t}function B(e,t){if(t==null)return null;if(/apply_patch/i.test(e)){let e=L(t),n=c(e);return`${n.length>0?n.join(`
2
- `):`(no file markers found)`}\n${e.split(/\r?\n/).slice(0,12).join(`
3
- `)}`.slice(0,240)}if(/\b(bash|shell|exec|cmd|powershell|terminal)\b/i.test(e))return t||null;if(/\b(write|edit|save|create)\b/i.test(e)){let e=t.match(/(?:file_path|path|file)["\s:=]+([^\s",}]+)/i);return e?`${e[1]}\n${t.slice(0,200)}`:t.slice(0,200)||null}return t&&t.length>0?t.length>200?`${t.slice(0,200)}...`:t:null}export{c as _,y as a,B as c,F as d,b as f,C as g,x as h,E as i,k as l,O as m,S as n,I as o,w as p,T as r,M as s,D as t,A as u,s as v};
1
+ var e=/^\s*\*\*\*\s+(?:Add|Update|Delete)\s+File:\s*(.+?)\s*$/,t=/^\s*\*\*\*\s+Move\s+to:\s*(.+?)\s*$/,n=/^---[ \t]+(.*)$/,r=/^\+\+\+[ \t]+(.*)$/,i=/^diff --git[ \t]+(?:"([^"]*)"|(\S+))[ \t]+(?:"([^"]*)"|(\S+))[ \t]*$/,a=/^rename (?:from|to)[ \t]+(.*)$/;function o(e){if(!e)return``;let t=e.split(` `)[0]??``;return t.length>=2&&t.startsWith(`"`)&&t.endsWith(`"`)&&(t=t.slice(1,-1)),t=t.trim(),!t||t===`/dev/null`?``:t.replace(/^[ab]\//,``)}function s(e){if(!e)return[];let t=[],s=new Set,c=e=>{let n=o(e);n&&!s.has(n)&&(s.add(n),t.push(n))},l=e.split(/\r?\n/);for(let e=0;e<l.length;e++){let t=l[e]??``;if(t.startsWith(`diff --git`)){let e=i.exec(t);e&&(c(e[1]??e[2]),c(e[3]??e[4]));continue}if(t.startsWith(`rename `)){c(a.exec(t)?.[1]);continue}let o=n.exec(t);if(!o)continue;let s=r.exec(l[e+1]??``);s&&(c(o[1]),c(s[1]),e++)}return t}function c(n){if(!n)return[];let r=[],i=new Set;for(let a of n.split(/\r?\n/)){let n=a.trim();if(!n.startsWith(`***`))continue;let o=e.exec(n),s=o?null:t.exec(n),c=o?.[1]??s?.[1];c&&(i.has(c)||(i.add(c),r.push(c)))}return r}var l=[`/etc/`,`/usr/lib/`,`/boot/`,`/dev/`,`/sys/`,`/proc/`,`C:\\Windows\\`,`C:\\Program Files\\`];function u(e){if(!e)return!1;let t=e.replace(/\\/g,`/`),n=t.toLowerCase();return l.some(e=>{let r=e.replace(/\\/g,`/`),i=r.endsWith(`/`)?r.slice(0,-1):r;return/^[a-z]:\//i.test(r)?n===i.toLowerCase()||n.startsWith(r.toLowerCase()):t===i||t.startsWith(r)})}function d(e){return e.find(e=>e&&u(e))??null}var f=[`.npmrc`,`.pypirc`,`.netrc`,`.pgpass`,`.git-credentials`,`.gitcookies`,`.htpasswd`,`id_rsa`,`id_dsa`,`id_ecdsa`,`id_ed25519`,`credentials.json`,`secrets.json`,`secrets.yaml`,`secrets.yml`,`.anthropic_oauth.json`,`.google_oauth.json`,`shadow`,`sudoers`],p=[`.ssh`,`.aws`,`.azure`,`.gcloud`,`.kube`,`.docker`,`.gnupg`],m=[`.pem`,`.key`,`.pfx`,`.p12`,`.kdbx`,`.jks`,`.keystore`],h=/(^|\/)\.env($|[^\w.])/,g=/\.(example|sample|template|dist)$|\.pub$/;function _(e){if(!e)return!1;let t=e.replace(/\\/g,`/`),n=t.toLowerCase(),r=n.split(`/`).pop()??``;return!r||g.test(r)?!1:h.test(n)||r===`.env`||r.startsWith(`.env.`)||f.some(e=>r===e.toLowerCase())||m.some(e=>r.endsWith(e))?!0:t.split(`/`).some(e=>p.includes(e.toLowerCase()))}function v(e){return e.find(e=>e&&_(e))??null}function y(e){return e===`auto-act`?`act`:e===`auto-goal`?`goal`:e}function b(e){return e===`auto-act`||e===`auto-goal`}function x(e){switch(e){case`act`:return`auto-act`;case`auto-act`:return`act`;case`goal`:return`auto-goal`;case`auto-goal`:return`goal`;case`chat`:return`chat`}}var S=[`act`,`goal`,`chat`];function C(e,t){return e===`chat`?`chat`:t?e===`act`?`auto-act`:`auto-goal`:e}function w(e){let t=[`act`,`goal`];return C(t[(t.indexOf(y(e))+1)%t.length]??`act`,b(e))}var T={act:{label:`Act`,accent:`green`},"auto-act":{label:`Auto-Act`,accent:`yellow`},goal:{label:`Goal`,accent:`magenta`},"auto-goal":{label:`Auto-Goal`,accent:`red`},chat:{label:`Chat`,accent:`cyan`}},E={low:{label:`Low`,accent:`green`},medium:{label:`Medium`,accent:`cyan`},high:{label:`High`,accent:`yellow`},critical:{label:`Critical`,accent:`red`}},D={allow:{label:`Allow`,key:`y`},deny:{label:`Deny`,key:`n`},allow_session:{label:`Allow session`,key:`s`},auto:{label:`Auto mode`,key:`a`}};function O(e){return e===`plan`||e===`auto-plan`?`act`:e===`act`||e===`auto-act`||e===`goal`||e===`auto-goal`||e===`chat`?e:`auto-act`}function k(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${Math.round(e/1e3)}K`:String(e)}function A(e){return e<=0?``:e>=100?`${Math.round(e)}tok/s`:`${e.toFixed(1)}tok/s`}function j(e){if(!e)return 0;let t=(e.match(/[\u3000-\u303f\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff00-\uffef]/g)||[]).length;return t*1.5+(e.length-t)*.25}function M(e=4e3){let t=[],n=n=>{let r=n-e;for(;t.length>0&&t[0].ts<r;)t.shift()};return{feed(e,r=Date.now()){let i=j(e);i<=0||(n(r),t.push({ts:r,tokens:i}))},rate(e=Date.now()){if(n(e),t.length===0)return 0;let r=0;for(let e of t)r+=e.tokens;let i=Math.max(e-t[0].ts,500);return r/i*1e3},reset(){t=[]}}}function N(e){if(e<=0)return``;let t=Math.round(e*10);return t<600?`${(t/10).toFixed(1)}s`:`${Math.floor(t/600)}m${(t%600/10).toFixed(1)}s`}function P(e,t){switch(e){case`bash`:case`shell`:case`PowerShell`:return`ran ${t} shell command${t>1?`s`:``}`;case`read_file`:return`read ${t} file${t>1?`s`:``}`;case`write_file`:return`wrote ${t} file${t>1?`s`:``}`;case`edit_file`:case`edit_file_line`:return`edited ${t} file${t>1?`s`:``}`;case`apply_patch`:return`patched ${t} file${t>1?`s`:``}`;default:return`ran ${t} ${e}${t>1?`s`:``}`}}function F(e){let t=Object.entries(e.toolCounts).filter(([,e])=>e>0).sort((e,t)=>t[1]-e[1]),n=e.headline||`Thought for ${N(Math.max(1,Math.round(e.durationMs/1e3)))}`,r=t.map(([e,t])=>P(e,t));return r.length>0?`${n}, ${r.join(`, `)}`:n}function I(e,t){let n=e.toLowerCase(),r=new Set(n.split(/[^a-z0-9]+/).filter(Boolean)),i=(...e)=>e.some(e=>r.has(e));return n===`apply_patch`?d(c(L(t)))?`critical`:`high`:i(`rm`,`del`,`delete`,`drop`,`truncate`,`format`,`mkfs`)?`critical`:i(`bash`,`shell`,`exec`,`cmd`,`powershell`,`terminal`)?/\b(rm\s+-rf|sudo|chmod\s+777|curl.*\|\s*(ba)?sh|wget.*-O|>\/dev\/|mkfs)\b/i.test(t)?`critical`:`high`:i(`write`,`edit`,`save`,`upload`,`deploy`,`publish`)?d(z(t))?`critical`:`high`:i(`install`,`uninstall`,`npm`,`pip`,`cargo`,`gem`,`apt`,`brew`,`choco`,`yum`,`dnf`)?`high`:i(`git`,`commit`,`push`,`merge`,`rebase`)?/\b(push|force|hard\s*reset|rebase)\b/i.test(t)?`high`:`medium`:i(`http`,`fetch`,`curl`,`wget`,`api`,`request`,`download`)?`medium`:i(`read`,`open`,`list`,`ls`,`dir`,`cat`,`view`,`search`,`find`,`grep`,`glob`)?v(z(t))?`high`:`low`:`medium`}function L(e){if(!e)return``;try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return e;let n=t,r=(n.payload&&typeof n.payload==`object`?n.payload:n).patch;return typeof r==`string`?r:e}catch{return e}}var R=new Set([`file_path`,`filePath`,`filepath`,`path`,`notebook_path`,`notebookPath`,`file`]);function z(e){if(!e)return[];let t=[],n=new Set,r=e=>{typeof e==`string`&&e.trim()&&!n.has(e)&&(n.add(e),t.push(e))},i=(e,t)=>{if(!(t>4||!e||typeof e!=`object`)){if(Array.isArray(e))for(let n of e)r(n),i(n,t+1);else for(let[n,a]of Object.entries(e))R.has(n)?(r(a),Array.isArray(a)&&a.forEach(r)):i(a,t+1)}};try{i(JSON.parse(e),0)}catch{}if(t.length===0)for(let t of e.matchAll(/(?:file_path|filePath|path|file)["\s:=]+([^\s",}]+)/gi))r(t[1]);return t}function B(e,t,n){if(t==null)return null;let r=n?.unbounded===!0;if(/apply_patch/i.test(e)){let e=L(t),n=c(e),i=n.length>0?n.join(`
2
+ `):`(no file markers found)`;return r?`${i}\n${e}`:`${i}\n${e.split(/\r?\n/).slice(0,12).join(`
3
+ `)}`.slice(0,240)}if(/\b(bash|shell|exec|cmd|powershell|terminal)\b/i.test(e))return t||null;if(/\b(write|edit|save|create)\b/i.test(e)){let e=t.match(/(?:file_path|path|file)["\s:=]+([^\s",}]+)/i);return e?r?`${e[1]}\n${t}`:`${e[1]}\n${t.slice(0,200)}`:(r?t:t.slice(0,200))||null}return t&&t.length>0?r?t:t.length>200?`${t.slice(0,200)}...`:t:null}export{c as _,y as a,B as c,F as d,b as f,C as g,x as h,E as i,k as l,O as m,S as n,I as o,w as p,T as r,M as s,D as t,A as u,s as v};
@@ -1,19 +1,36 @@
1
- <svg width="32" height="32" viewBox="4 6 72 86" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="DeepSeekCode">
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 1024 1024" role="img" aria-label="DeepSeekCode">
2
2
  <!--
3
- 标签页图标(16–32px)。刻意只画身体 + 眼睛 + 嘴:
4
- 帽子/配件在这个尺寸上会退化成几颗彩色像素,反而让脸看不清。
5
- JS 可用时会被 useBlobFavicon 换掉(每次刷新随机一只团子);
6
- 这个文件是 no-JS / 首帧回退。
3
+ 标签页图标。同款奶白小幽灵,外面垫一层酒红圆角底 —— 桌面快捷方式/任务栏
4
+ 看到的就是这张(母版 packages/desktop/src-tauri/icons/source.svg)。
5
+
6
+ 16px 上去掉了高光、结扣和渐变细节:它们在这个尺寸只会糊成几个脏点。
7
+ 蝴蝶结留着 —— 它是这只团子唯一的识别点,掉了就只是一颗蛋。
8
+ 身体放大到 1.28(母版是 1.2):标签页比图标小得多,留白在这里是浪费。
9
+
10
+ 改这个文件 = 改「安装标识」本身;设置里打开「同步标签页图标」后,
11
+ useBlobFavicon 会临时用品牌团子的配色现画一张盖在它上面(默认关闭)。
7
12
  -->
8
13
  <defs>
9
- <radialGradient id="dsc-fav-a" cx="30%" cy="22%" r="78%">
10
- <stop stop-color="#92b5ff"/>
11
- <stop offset=".36" stop-color="#3867db"/>
12
- <stop offset="1" stop-color="#172d72"/>
13
- </radialGradient>
14
+ <linearGradient id="dsc-fav-bg" x1="0" y1="0" x2="0.3" y2="1">
15
+ <stop offset="0" stop-color="#7E1444"/>
16
+ <stop offset="1" stop-color="#3A071B"/>
17
+ </linearGradient>
14
18
  </defs>
15
- <path d="M40 11C25 11 17 22 19 35C7 43 7 59 14 71C21 84 30 88 40 88C54 88 66 78 68 62C71 49 65 39 61 34C63 20 53 11 40 11Z" fill="url(#dsc-fav-a)" stroke="#fff" stroke-opacity=".24" stroke-width="1.4"/>
16
- <ellipse cx="29" cy="38" rx="6.5" ry="7.5" fill="#fff"/>
17
- <ellipse cx="51" cy="38" rx="6.5" ry="7.5" fill="#fff"/>
18
- <path d="M39 49Q43 52 47 49" fill="none" stroke="#fff" stroke-width="2.6" stroke-linecap="round"/>
19
+
20
+ <rect x="0" y="0" width="1024" height="1024" rx="228" ry="228" fill="url(#dsc-fav-bg)"/>
21
+
22
+ <g transform="translate(512 512) scale(1.28) translate(-512 -476)">
23
+ <path d="M512 196 C596 198 700 290 736 500 C736 640 640 756 512 756 C384 756 288 640 288 500 C324 290 428 198 512 196 Z" fill="#F6EBD0"/>
24
+
25
+ <circle cx="429" cy="385" r="48" fill="#2B2430"/>
26
+ <circle cx="595" cy="385" r="48" fill="#2B2430"/>
27
+
28
+ <path d="M500 466 Q528 512 556 466" fill="none" stroke="#2B2430" stroke-width="12" stroke-linecap="round"/>
29
+
30
+ <g transform="rotate(14 620 268)">
31
+ <ellipse cx="583" cy="258" rx="60" ry="34" fill="#F97CAE" transform="rotate(-30 583 258)"/>
32
+ <ellipse cx="690" cy="272" rx="60" ry="36" fill="#FF8FBC" transform="rotate(-6 690 272)"/>
33
+ </g>
34
+ </g>
19
35
  </svg>
36
+
Binary file
Binary file
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en" class="dark" data-theme-pattern="grid">
2
+ <html lang="en" class="light" data-theme-pattern="grid">
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
@@ -11,15 +11,19 @@
11
11
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover, interactive-widget=resizes-content" />
12
12
  <meta name="mobile-web-app-capable" content="yes" />
13
13
  <meta name="apple-mobile-web-app-capable" content="yes" />
14
- <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
14
+ <!-- 状态栏跟默认外观走:'default' = 不透明、深色字,浅色首屏上可读。
15
+ 'black-translucent' 会让内容顶到状态栏下、用白字,在 #f7fbff 上几乎看不见。 -->
16
+ <meta name="apple-mobile-web-app-status-bar-style" content="default" />
15
17
  <meta name="apple-mobile-web-app-title" content="DeepSeekCode" />
16
18
  <meta name="description" content="DeepSeekCode - AI coding assistant for code generation, debugging, refactoring, and automation" />
17
19
  <meta name="keywords" content="AI, coding, code generation, assistant, DeepSeekCode" />
18
20
  <meta property="og:title" content="DeepSeekCode Web" />
19
21
  <meta property="og:description" content="AI coding workspace for local agent workflows" />
20
22
  <meta property="og:type" content="website" />
21
- <meta name="theme-color" content="#000000" />
22
- <meta name="color-scheme" content="dark light" />
23
+ <!-- 默认外观 = 浅色 + graph(坐标纸):首帧底色取 graph 的 light.bg #f7fbff,
24
+ 与 manifest 的 background_color / theme_color 同值(pwaAssets 测试跨文件对齐)。 -->
25
+ <meta name="theme-color" content="#f7fbff" />
26
+ <meta name="color-scheme" content="light dark" />
23
27
  <title>DeepSeekCode Web</title>
24
28
  <!-- 首屏主题引导:在 JS bundle 执行前,按已持久化的偏好设置 html.dark/.light,消除暗/亮首帧闪烁(FOUC)。
25
29
  存储键 'deepseekcode-settings-storage' 与 stores/settingsStore.ts、hooks/useThemeVars.ts 保持一致。
@@ -28,21 +32,17 @@
28
32
  <script>
29
33
  (function () {
30
34
  try {
31
- // 默认深色:必须与 stores/settingsStore.ts 的 SYNCED_DEFAULTS.theme 同值。
35
+ // 默认浅色:必须与 stores/settingsStore.ts 的 SYNCED_DEFAULTS.theme 同值。
32
36
  // 这里定首帧(JS 注入前)的类名,store 定 React 挂载后的值,两者漂开就会闪一帧。
33
- var mode = 'dark';
37
+ var mode = 'light';
34
38
  var presetId = null;
35
39
  var raw = localStorage.getItem('deepseekcode-settings-storage');
36
40
  if (raw) {
37
41
  var parsed = JSON.parse(raw) || {};
38
42
  var state = parsed.state;
39
43
  var t = state && state.theme;
40
- // v9:默认模式 light → dark。更早的版本会把旧默认值 'light' 一起写盘,
41
- // 分不清「显式选过」与「从没选过」—— 与 settingsStore 的 migrate 同一规则:
42
- // 旧版本里的 'light' 一律视为没选过,落到新默认 dark。
43
- // 少了这一步,这里会先按旧值切成浅色、bundle 迁移成 dark 后再翻一次:
44
- // 深 → 浅 → 深,比不迁移还闪。
45
- if ((parsed.version || 0) < 9 && t === 'light') t = null;
44
+ // 盘上的值原样使用:浅色已回到默认,曾经那条「v<9 的 'light' 视为没选过」的
45
+ // 规则随 settingsStore 的 migrate 一起下线(两份实现必须同进同退)。
46
46
  if (t === 'dark' || t === 'light' || t === 'auto') mode = t;
47
47
  presetId = (state && state.themePresetId) || null;
48
48
  }
@@ -58,31 +58,34 @@
58
58
  } catch (e) {}
59
59
  })();
60
60
  </script>
61
- <script type="module" crossorigin src="/assets/index-CTbLW314.js"></script>
61
+ <script type="module" crossorigin src="/assets/index-STsyoFCk.js"></script>
62
62
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-COiEfhsA.js">
63
- <link rel="modulepreload" crossorigin href="/assets/icons-CYDRRPKW.js">
64
- <link rel="modulepreload" crossorigin href="/assets/react-vendor-CB4cLN-6.js">
65
- <link rel="modulepreload" crossorigin href="/assets/useTranslation-B-mfApCn.js">
66
- <link rel="modulepreload" crossorigin href="/assets/state-CSZ50keL.js">
67
- <link rel="modulepreload" crossorigin href="/assets/markdown-N5__3T-w.js">
68
- <link rel="modulepreload" crossorigin href="/assets/useConfirm-Da8iQ_DZ.js">
69
- <link rel="modulepreload" crossorigin href="/assets/types-JssxRFJn.js">
70
- <link rel="modulepreload" crossorigin href="/assets/src-49LUQhkG.js">
71
- <link rel="modulepreload" crossorigin href="/assets/workspaceSemantics-RaIRer76.js">
72
- <link rel="modulepreload" crossorigin href="/assets/api-plEYhRn0.js">
73
- <link rel="modulepreload" crossorigin href="/assets/agentIconSet-B5GUQwel.js">
74
- <link rel="modulepreload" crossorigin href="/assets/settingsStore-Xqln0d91.js">
63
+ <link rel="modulepreload" crossorigin href="/assets/icons-B8Ngx6rM.js">
64
+ <link rel="modulepreload" crossorigin href="/assets/react-vendor-CXI113IS.js">
65
+ <link rel="modulepreload" crossorigin href="/assets/useTranslation-gGKZZfux.js">
66
+ <link rel="modulepreload" crossorigin href="/assets/state-pOTP5BEk.js">
67
+ <link rel="modulepreload" crossorigin href="/assets/markdown-Cps-36Z5.js">
68
+ <link rel="modulepreload" crossorigin href="/assets/Button-D-g7PgYh.js">
69
+ <link rel="modulepreload" crossorigin href="/assets/threads-lr33dwqg.js">
70
+ <link rel="modulepreload" crossorigin href="/assets/src-BK8SoTFV.js">
71
+ <link rel="modulepreload" crossorigin href="/assets/workspaceSemantics-CW8ytHq2.js">
72
+ <link rel="modulepreload" crossorigin href="/assets/api-ZQf0Ys8y.js">
73
+ <link rel="modulepreload" crossorigin href="/assets/agentIconSet-CDeMxTHf.js">
74
+ <link rel="modulepreload" crossorigin href="/assets/settingsStore-BSdi9gNd.js">
75
75
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-BLdHbfdN.js">
76
- <link rel="modulepreload" crossorigin href="/assets/ttsSettings-BwXYpDnk.js">
77
- <link rel="modulepreload" crossorigin href="/assets/websocket-BnDwh01e.js">
78
- <link rel="modulepreload" crossorigin href="/assets/common-Bbatsa0-.js">
79
- <link rel="modulepreload" crossorigin href="/assets/MessageBubble-CVGXupVH.js">
80
- <link rel="modulepreload" crossorigin href="/assets/ThreadsView-XditIHZ4.js">
81
- <link rel="modulepreload" crossorigin href="/assets/whatsNewStore-LpdLRLGl.js">
82
- <link rel="modulepreload" crossorigin href="/assets/panels-CIPgN61N.js">
83
- <link rel="modulepreload" crossorigin href="/assets/channelMeta-BGQXQxgj.js">
84
- <link rel="stylesheet" crossorigin href="/assets/MessageBubble-CCTRbIMZ.css">
85
- <link rel="stylesheet" crossorigin href="/assets/index-DdzVrZye.css">
76
+ <link rel="modulepreload" crossorigin href="/assets/imageUrl-CrQM4gmf.js">
77
+ <link rel="modulepreload" crossorigin href="/assets/sessionKind-CZ1kQQII.js">
78
+ <link rel="modulepreload" crossorigin href="/assets/FileContextMenu-C5WYeBNu.js">
79
+ <link rel="modulepreload" crossorigin href="/assets/DiffPreview-D8tIj_aF.js">
80
+ <link rel="modulepreload" crossorigin href="/assets/websocket-CeKJTCdp.js">
81
+ <link rel="modulepreload" crossorigin href="/assets/statusAxesRefresh--2evRuAU.js">
82
+ <link rel="modulepreload" crossorigin href="/assets/whatsNewStore-C0hbStfc.js">
83
+ <link rel="modulepreload" crossorigin href="/assets/useConfirm-CQjBnYuP.js">
84
+ <link rel="modulepreload" crossorigin href="/assets/common-CPZxdYLs.js">
85
+ <link rel="modulepreload" crossorigin href="/assets/panels-DCwx2Pbu.js">
86
+ <link rel="modulepreload" crossorigin href="/assets/channelMeta-BO645sjD.js">
87
+ <link rel="stylesheet" crossorigin href="/assets/DiffPreview-CCTRbIMZ.css">
88
+ <link rel="stylesheet" crossorigin href="/assets/index-Bm7r92T3.css">
86
89
  </head>
87
90
  <body>
88
91
  <div id="root"></div>
package/web/dist/logo.svg CHANGED
@@ -1,26 +1,48 @@
1
- <svg width="80" height="94" viewBox="0 0 80 94" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="DeepSeekCode">
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="470" height="564" viewBox="288 196 470 564" role="img" aria-label="DeepSeekCode">
2
2
  <!--
3
- DeepSeekCode 品牌团子 · 代码巫师(docs/blob_icon_lab_v2.html 的 wizard 主题配色)
4
- 用途:favicon 的 no-JS 回退、PWA 安装图标、桌面/VSCode 位图源。
5
- 应用内的侧栏品牌位走 <BlobBrandMark>(每次加载随机一只),不引用这个文件。
6
- 改配色请同时改 blobGlyph.tsx 里 wizard 那一行,两边保持同一只。
3
+ DeepSeekCode 品牌团子 · 奶白小幽灵(安装标识)
4
+
5
+ 与桌面图标母版是同一只:packages/desktop/src-tauri/icons/source.svg
6
+ 与标签页图标也是同一只:public/favicon.svg
7
+ (改画法请三处一起改,否则任务栏 / 标签页 / PWA 会漂成两只。)
8
+
9
+ 用途:PWA 安装图标(scripts/generate-pwa-icons.mjs 的源)、文档用的品牌图。
10
+ viewBox 已裁到画面边界(身体 + 右上蝴蝶结),不要再加内边距 —— 生成脚本负责居中垫底。
11
+
12
+ 这张是**透明版**:奶白身体 + 墨黑眼睛 + 粉蝴蝶结,不带底。生成脚本会把它垫在
13
+ 深酒红底上(`BG`),所以这里不要自己画背景,否则会盖住脚本的底。
14
+
15
+ 应用内左侧栏的品牌位走 <BlobBrandMark>(30 只主题团子),不引用这个文件。
7
16
  -->
8
17
  <defs>
9
- <radialGradient id="dsc-brand-a" cx="30%" cy="22%" r="78%">
10
- <stop stop-color="#92b5ff"/>
11
- <stop offset=".36" stop-color="#3867db"/>
12
- <stop offset="1" stop-color="#172d72"/>
13
- </radialGradient>
14
- <linearGradient id="dsc-brand-b" x1="0" y1="0" x2="1" y2="1">
15
- <stop stop-color="#fff" stop-opacity=".6"/>
16
- <stop offset=".5" stop-color="#fff" stop-opacity="0"/>
17
- <stop offset="1" stop-color="#fff" stop-opacity=".05"/>
18
+ <linearGradient id="dsc-ghost-body" x1="0.3" y1="0" x2="0.7" y2="1">
19
+ <stop offset="0" stop-color="#FFF9EC"/>
20
+ <stop offset="0.45" stop-color="#F3E7CC"/>
21
+ <stop offset="1" stop-color="#E0CBA3"/>
18
22
  </linearGradient>
23
+ <radialGradient id="dsc-ghost-gloss" cx="0.5" cy="0.5" r="0.5">
24
+ <stop offset="0" stop-color="#FFFFFF" stop-opacity="0.55"/>
25
+ <stop offset="0.6" stop-color="#FFFFFF" stop-opacity="0.2"/>
26
+ <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
27
+ </radialGradient>
19
28
  </defs>
20
- <path d="M40 11C25 11 17 22 19 35C7 43 7 59 14 71C21 84 30 88 40 88C54 88 66 78 68 62C71 49 65 39 61 34C63 20 53 11 40 11Z" fill="url(#dsc-brand-a)" stroke="#ffffff" stroke-opacity=".22" stroke-width="1.2"/>
21
- <path d="M40 12C27 12 21 23 22 34C15 42 13 54 18 65C21 73 28 79 35 80C25 65 26 52 31 43C35 34 46 28 55 31C56 19 49 12 40 12Z" fill="url(#dsc-brand-b)"/>
22
- <ellipse cx="29" cy="38" rx="6.5" ry="7.5" fill="#fff"/>
23
- <ellipse cx="51" cy="38" rx="6.5" ry="7.5" fill="#fff"/>
24
- <path d="M39 49Q43 52 47 49" fill="none" stroke="#fff" stroke-width="2.4" stroke-linecap="round"/>
25
- <ellipse cx="40" cy="88" rx="23" ry="3" fill="#172d72" opacity=".12"/>
29
+
30
+ <!-- 蛋形身体 -->
31
+ <path d="M512 196 C596 198 700 290 736 500 C736 640 640 756 512 756 C384 756 288 640 288 500 C324 290 428 198 512 196 Z" fill="url(#dsc-ghost-body)"/>
32
+ <ellipse cx="420" cy="315" rx="100" ry="70" fill="url(#dsc-ghost-gloss)" transform="rotate(-30 420 315)"/>
33
+
34
+ <!-- 眼睛 -->
35
+ <circle cx="429" cy="385" r="48" fill="#2B2430"/>
36
+ <circle cx="595" cy="385" r="48" fill="#2B2430"/>
37
+
38
+ <!-- 小 u 嘴 -->
39
+ <path d="M500 466 Q528 512 556 466" fill="none" stroke="#2B2430" stroke-width="12" stroke-linecap="round"/>
40
+
41
+ <!-- 蝴蝶结 -->
42
+ <g transform="rotate(14 620 268)">
43
+ <ellipse cx="583" cy="258" rx="60" ry="34" fill="#F97CAE" transform="rotate(-30 583 258)"/>
44
+ <ellipse cx="690" cy="272" rx="60" ry="36" fill="#FF8FBC" transform="rotate(-6 690 272)"/>
45
+ <ellipse cx="636" cy="265" rx="24" ry="27" fill="#EF6BA4"/>
46
+ </g>
26
47
  </svg>
48
+
@@ -6,8 +6,8 @@
6
6
  "start_url": "/",
7
7
  "scope": "/",
8
8
  "display": "standalone",
9
- "background_color": "#000000",
10
- "theme_color": "#000000",
9
+ "background_color": "#f7fbff",
10
+ "theme_color": "#f7fbff",
11
11
  "icons": [
12
12
  { "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" },
13
13
  { "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png" },
@@ -1 +0,0 @@
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};
@@ -1,3 +0,0 @@
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};