cli-claw-kit 0.0.1
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.
- package/LICENSE +21 -0
- package/README.md +245 -0
- package/config/default-groups.json +1 -0
- package/config/global-agents-md.template.md +37 -0
- package/config/mount-allowlist.json +11 -0
- package/container/Dockerfile +160 -0
- package/container/agent-runner/dist/.tsbuildinfo +1 -0
- package/container/agent-runner/dist/agent-definitions.js +22 -0
- package/container/agent-runner/dist/channel-prefixes.js +16 -0
- package/container/agent-runner/dist/codex-config.js +29 -0
- package/container/agent-runner/dist/image-detector.js +96 -0
- package/container/agent-runner/dist/index.js +2587 -0
- package/container/agent-runner/dist/mcp-tools.js +1076 -0
- package/container/agent-runner/dist/stream-event.types.js +5 -0
- package/container/agent-runner/dist/stream-processor.js +867 -0
- package/container/agent-runner/dist/types.js +6 -0
- package/container/agent-runner/dist/utils.js +115 -0
- package/container/agent-runner/package.json +36 -0
- package/container/agent-runner/prompts/security-rules.md +31 -0
- package/container/agent-runner/src/agent-definitions.ts +27 -0
- package/container/agent-runner/src/channel-prefixes.ts +16 -0
- package/container/agent-runner/src/codex-config.ts +40 -0
- package/container/agent-runner/src/image-detector.ts +116 -0
- package/container/agent-runner/src/index.ts +3107 -0
- package/container/agent-runner/src/mcp-tools.ts +1295 -0
- package/container/agent-runner/src/stream-event.types.ts +10 -0
- package/container/agent-runner/src/stream-processor.ts +932 -0
- package/container/agent-runner/src/types.ts +75 -0
- package/container/agent-runner/src/utils.ts +114 -0
- package/container/agent-runner/tsconfig.json +17 -0
- package/container/build.sh +28 -0
- package/container/entrypoint.sh +64 -0
- package/container/skills/agent-browser/SKILL.md +159 -0
- package/container/skills/install-skill/SKILL.md +64 -0
- package/container/skills/post-test-cleanup/SKILL.md +121 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/agent-output-parser.js +459 -0
- package/dist/app-root.js +52 -0
- package/dist/assistant-meta-footer.js +1 -0
- package/dist/auth.js +91 -0
- package/dist/billing.js +694 -0
- package/dist/channel-prefixes.js +16 -0
- package/dist/cli.js +86 -0
- package/dist/commands.js +79 -0
- package/dist/config.js +120 -0
- package/dist/container-runner.js +981 -0
- package/dist/daily-summary.js +210 -0
- package/dist/db.js +3683 -0
- package/dist/dingtalk.js +1347 -0
- package/dist/feishu-markdown-style.js +97 -0
- package/dist/feishu-streaming-card.js +1875 -0
- package/dist/feishu.js +1628 -0
- package/dist/file-manager.js +270 -0
- package/dist/group-queue.js +1070 -0
- package/dist/group-runtime.js +35 -0
- package/dist/host-workspace-cwd.js +85 -0
- package/dist/im-channel.js +384 -0
- package/dist/im-command-utils.js +142 -0
- package/dist/im-downloader.js +45 -0
- package/dist/im-manager.js +527 -0
- package/dist/im-utils.js +53 -0
- package/dist/image-detector.js +96 -0
- package/dist/index.js +5828 -0
- package/dist/logger.js +22 -0
- package/dist/mcp-utils.js +66 -0
- package/dist/message-attachments.js +69 -0
- package/dist/message-notifier.js +36 -0
- package/dist/middleware/auth.js +85 -0
- package/dist/mount-security.js +315 -0
- package/dist/permissions.js +67 -0
- package/dist/project-memory.js +6 -0
- package/dist/provider-pool.js +189 -0
- package/dist/qq.js +826 -0
- package/dist/reset-admin.js +42 -0
- package/dist/routes/admin.js +543 -0
- package/dist/routes/agent-definitions.js +241 -0
- package/dist/routes/agents.js +533 -0
- package/dist/routes/auth.js +675 -0
- package/dist/routes/billing.js +490 -0
- package/dist/routes/browse.js +210 -0
- package/dist/routes/bug-report.js +387 -0
- package/dist/routes/config.js +1868 -0
- package/dist/routes/files.js +671 -0
- package/dist/routes/groups.js +1367 -0
- package/dist/routes/mcp-servers.js +320 -0
- package/dist/routes/memory.js +523 -0
- package/dist/routes/monitor.js +307 -0
- package/dist/routes/skills.js +777 -0
- package/dist/routes/tasks.js +509 -0
- package/dist/routes/usage.js +64 -0
- package/dist/routes/workspace-config.js +458 -0
- package/dist/runtime-build.js +112 -0
- package/dist/runtime-command-handler.js +189 -0
- package/dist/runtime-command-registry.js +1 -0
- package/dist/runtime-config.js +1777 -0
- package/dist/runtime-identity.js +52 -0
- package/dist/schemas.js +590 -0
- package/dist/script-runner.js +64 -0
- package/dist/sdk-query.js +82 -0
- package/dist/skill-utils.js +145 -0
- package/dist/sqlite-compat.js +19 -0
- package/dist/stream-event.types.js +5 -0
- package/dist/streaming-runtime-meta.js +29 -0
- package/dist/task-scheduler.js +695 -0
- package/dist/task-utils.js +13 -0
- package/dist/telegram-pairing.js +59 -0
- package/dist/telegram.js +897 -0
- package/dist/terminal-manager.js +307 -0
- package/dist/tool-step-display.js +1 -0
- package/dist/types.js +1 -0
- package/dist/utils.js +85 -0
- package/dist/web-context.js +161 -0
- package/dist/web.js +1377 -0
- package/dist/wechat-crypto.js +182 -0
- package/dist/wechat.js +589 -0
- package/dist/workspace-runtime-reset.js +35 -0
- package/package.json +107 -0
- package/shared/assistant-meta-footer.ts +127 -0
- package/shared/channel-prefixes.ts +16 -0
- package/shared/dist/assistant-meta-footer.d.ts +29 -0
- package/shared/dist/assistant-meta-footer.js +85 -0
- package/shared/dist/channel-prefixes.d.ts +4 -0
- package/shared/dist/channel-prefixes.js +16 -0
- package/shared/dist/image-detector.d.ts +20 -0
- package/shared/dist/image-detector.js +96 -0
- package/shared/dist/runtime-command-registry.d.ts +38 -0
- package/shared/dist/runtime-command-registry.js +185 -0
- package/shared/dist/stream-event.d.ts +65 -0
- package/shared/dist/stream-event.js +8 -0
- package/shared/dist/tool-step-display.d.ts +4 -0
- package/shared/dist/tool-step-display.js +11 -0
- package/shared/image-detector.ts +116 -0
- package/shared/runtime-command-registry.ts +252 -0
- package/shared/stream-event.ts +67 -0
- package/shared/tool-step-display.ts +21 -0
- package/shared/tsconfig.json +24 -0
- package/web/dist/assets/BillingPage-B1wBR_o-.js +52 -0
- package/web/dist/assets/ChatPage-6GBZ9nXN.css +32 -0
- package/web/dist/assets/ChatPage-BOJcXtaj.js +161 -0
- package/web/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/web/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/web/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/web/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/web/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/web/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/web/dist/assets/SettingsPage-DoY7FoZ_.js +153 -0
- package/web/dist/assets/ShareImageDialog-C1ga8b7l.js +22 -0
- package/web/dist/assets/TasksPage-CRivnNsx.js +14 -0
- package/web/dist/assets/_basePickBy-Bf-bSoS9.js +1 -0
- package/web/dist/assets/_baseUniq-zAOaCuKw.js +1 -0
- package/web/dist/assets/arc-Dm9mVQ9U.js +1 -0
- package/web/dist/assets/architectureDiagram-2XIMDMQ5-BLmzX1wr.js +36 -0
- package/web/dist/assets/band-CquvqAHh.js +1 -0
- package/web/dist/assets/blockDiagram-WCTKOSBZ-B9pcqm3j.js +132 -0
- package/web/dist/assets/c4Diagram-IC4MRINW-Cytx1q3b.js +10 -0
- package/web/dist/assets/channel-BOVj73LR.js +1 -0
- package/web/dist/assets/channel-meta-CQD0Pei-.js +41 -0
- package/web/dist/assets/chunk-4BX2VUAB-0ToDr6RE.js +1 -0
- package/web/dist/assets/chunk-55IACEB6-DQDjnXfS.js +1 -0
- package/web/dist/assets/chunk-FMBD7UC4-Di8ABm6c.js +15 -0
- package/web/dist/assets/chunk-JSJVCQXG-BZQN6rnX.js +1 -0
- package/web/dist/assets/chunk-KX2RTZJC-zBbcpaN_.js +1 -0
- package/web/dist/assets/chunk-NQ4KR5QH-BCrLoU88.js +220 -0
- package/web/dist/assets/chunk-QZHKN3VN-Bqk8juan.js +1 -0
- package/web/dist/assets/chunk-WL4C6EOR-D2YX-MHY.js +189 -0
- package/web/dist/assets/classDiagram-VBA2DB6C-DUUoMyaK.js +1 -0
- package/web/dist/assets/classDiagram-v2-RAHNMMFH-DUUoMyaK.js +1 -0
- package/web/dist/assets/clone-BmaCesfa.js +1 -0
- package/web/dist/assets/cose-bilkent-S5V4N54A-CTsv6qQA.js +1 -0
- package/web/dist/assets/cytoscape.esm-BQaXIfA_.js +331 -0
- package/web/dist/assets/dagre-KLK3FWXG-Ci4Jh9nu.js +4 -0
- package/web/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/web/dist/assets/diagram-E7M64L7V-BFRnfTI2.js +24 -0
- package/web/dist/assets/diagram-IFDJBPK2-B7Zhnp0b.js +43 -0
- package/web/dist/assets/diagram-P4PSJMXO-BVyP7nwq.js +24 -0
- package/web/dist/assets/erDiagram-INFDFZHY-NorKdTOF.js +70 -0
- package/web/dist/assets/error-CGD5mp5f.js +1 -0
- package/web/dist/assets/flowDiagram-PKNHOUZH-Ch97nABF.js +162 -0
- package/web/dist/assets/ganttDiagram-A5KZAMGK-BQ2pLWsy.js +292 -0
- package/web/dist/assets/gitGraphDiagram-K3NZZRJ6-bcvnBsD2.js +65 -0
- package/web/dist/assets/graph-CeAEckur.js +1 -0
- package/web/dist/assets/index-CPnL1_qC.js +768 -0
- package/web/dist/assets/index-DVevCbcO.css +10 -0
- package/web/dist/assets/infoDiagram-LFFYTUFH-CcsrFdj-.js +2 -0
- package/web/dist/assets/init-Dmth1JHB.js +1 -0
- package/web/dist/assets/ishikawaDiagram-PHBUUO56-1upyMfHN.js +70 -0
- package/web/dist/assets/journeyDiagram-4ABVD52K-CKUi-V0c.js +139 -0
- package/web/dist/assets/kanban-definition-K7BYSVSG-DOnQwXfL.js +89 -0
- package/web/dist/assets/layout-BmMMqTnJ.js +1 -0
- package/web/dist/assets/linear-DiaJloY5.js +1 -0
- package/web/dist/assets/mermaid.core-BWLV1B2v.js +254 -0
- package/web/dist/assets/mindmap-definition-YRQLILUH-BeAKHVWP.js +68 -0
- package/web/dist/assets/ordinal-DILIJJjt.js +1 -0
- package/web/dist/assets/pieDiagram-SKSYHLDU-DfiMSfWo.js +30 -0
- package/web/dist/assets/quadrantDiagram-337W2JSQ-wZxZOJxd.js +7 -0
- package/web/dist/assets/requirementDiagram-Z7DCOOCP-BK4HHm17.js +73 -0
- package/web/dist/assets/sankeyDiagram-WA2Y5GQK-BX6t2avX.js +10 -0
- package/web/dist/assets/sequenceDiagram-2WXFIKYE-BPQlkbAa.js +145 -0
- package/web/dist/assets/sheet-rI0FfB1g.js +6 -0
- package/web/dist/assets/sliders-horizontal-CuijWFNK.js +6 -0
- package/web/dist/assets/sparkles-BsMYXJoT.js +11 -0
- package/web/dist/assets/square-0CqMX1Q3.js +11 -0
- package/web/dist/assets/stateDiagram-RAJIS63D-DxkV0Vwd.js +1 -0
- package/web/dist/assets/stateDiagram-v2-FVOUBMTO-qLYoiOPe.js +1 -0
- package/web/dist/assets/step-D51IIHGA.js +1 -0
- package/web/dist/assets/tasks-D8JjBTwx.js +1 -0
- package/web/dist/assets/time-O8zIGux3.js +1 -0
- package/web/dist/assets/timeline-definition-YZTLITO2-kNp1DyFc.js +61 -0
- package/web/dist/assets/treemap-KZPCXAKY-CkrClVhk.js +162 -0
- package/web/dist/assets/utils-KGAn0XTg.js +11 -0
- package/web/dist/assets/vennDiagram-LZ73GAT5-CgdzEZz4.js +34 -0
- package/web/dist/assets/xychartDiagram-JWTSCODW-DfYGPfNB.js +7 -0
- package/web/dist/assets/zap-_hKJYy7J.js +6 -0
- package/web/dist/favicon.svg +332 -0
- package/web/dist/fonts/AlibabaPuHuiTi-3-55-Regular.woff2 +0 -0
- package/web/dist/fonts/AlibabaPuHuiTi-3-65-Medium.woff2 +0 -0
- package/web/dist/fonts/AlibabaPuHuiTi-3-75-SemiBold.woff2 +0 -0
- package/web/dist/fonts/DMSans-latin-ext.woff2 +0 -0
- package/web/dist/fonts/DMSans-latin.woff2 +0 -0
- package/web/dist/icons/README.md +20 -0
- package/web/dist/icons/apple-touch-icon-180.png +0 -0
- package/web/dist/icons/icon-128.png +0 -0
- package/web/dist/icons/icon-144.png +0 -0
- package/web/dist/icons/icon-152.png +0 -0
- package/web/dist/icons/icon-192.png +0 -0
- package/web/dist/icons/icon-192.svg +332 -0
- package/web/dist/icons/icon-384.png +0 -0
- package/web/dist/icons/icon-48.png +0 -0
- package/web/dist/icons/icon-512-maskable.png +0 -0
- package/web/dist/icons/icon-512.png +0 -0
- package/web/dist/icons/icon-512.svg +332 -0
- package/web/dist/icons/icon-72.png +0 -0
- package/web/dist/icons/icon-96.png +0 -0
- package/web/dist/icons/loading-logo.svg +332 -0
- package/web/dist/icons/logo-1024.png +0 -0
- package/web/dist/icons/logo-icon.svg +332 -0
- package/web/dist/icons/logo-text.svg +332 -0
- package/web/dist/index.html +30 -0
- package/web/dist/manifest.webmanifest +1 -0
- package/web/dist/registerSW.js +1 -0
- package/web/dist/sw.js +1 -0
- package/web/dist/workbox-08d6266a.js +1 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import{r as p,j as l,K as ce,M as le,x as L,N as ue,X as fe,h as de,f as me,Q as he,U as ge,s as D}from"./index-CPnL1_qC.js";import{d as pe}from"./ChatPage-BOJcXtaj.js";import"./square-0CqMX1Q3.js";import"./channel-meta-CQD0Pei-.js";import"./zap-_hKJYy7J.js";import"./sheet-rI0FfB1g.js";import"./error-CGD5mp5f.js";function ye(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;const r=document.implementation.createHTMLDocument(),n=r.createElement("base"),a=r.createElement("a");return r.head.appendChild(n),r.body.appendChild(a),t&&(n.href=t),a.href=e,a.href}const we=(()=>{let e=0;const t=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(e+=1,`u${t()}${e}`)})();function y(e){const t=[];for(let r=0,n=e.length;r<n;r++)t.push(e[r]);return t}let w=null;function B(e={}){return w||(e.includeStyleProperties?(w=e.includeStyleProperties,w):(w=y(window.getComputedStyle(document.documentElement)),w))}function E(e,t){const n=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(t);return n?parseFloat(n.replace("px","")):0}function be(e){const t=E(e,"border-left-width"),r=E(e,"border-right-width");return e.clientWidth+t+r}function xe(e){const t=E(e,"border-top-width"),r=E(e,"border-bottom-width");return e.clientHeight+t+r}function G(e,t={}){const r=t.width||be(e),n=t.height||xe(e);return{width:r,height:n}}function Se(){let e,t;try{t=process}catch{}const r=t&&t.env?t.env.devicePixelRatio:null;return r&&(e=parseInt(r,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}const h=16384;function Ee(e){(e.width>h||e.height>h)&&(e.width>h&&e.height>h?e.width>e.height?(e.height*=h/e.width,e.width=h):(e.width*=h/e.height,e.height=h):e.width>h?(e.height*=h/e.width,e.width=h):(e.width*=h/e.height,e.height=h))}function C(e){return new Promise((t,r)=>{const n=new Image;n.onload=()=>{n.decode().then(()=>{requestAnimationFrame(()=>t(n))})},n.onerror=r,n.crossOrigin="anonymous",n.decoding="async",n.src=e})}async function Ce(e){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(e)).then(encodeURIComponent).then(t=>`data:image/svg+xml;charset=utf-8,${t}`)}async function Re(e,t,r){const n="http://www.w3.org/2000/svg",a=document.createElementNS(n,"svg"),s=document.createElementNS(n,"foreignObject");return a.setAttribute("width",`${t}`),a.setAttribute("height",`${r}`),a.setAttribute("viewBox",`0 0 ${t} ${r}`),s.setAttribute("width","100%"),s.setAttribute("height","100%"),s.setAttribute("x","0"),s.setAttribute("y","0"),s.setAttribute("externalResourcesRequired","true"),a.appendChild(s),s.appendChild(e),Ce(a)}const m=(e,t)=>{if(e instanceof t)return!0;const r=Object.getPrototypeOf(e);return r===null?!1:r.constructor.name===t.name||m(r,t)};function ve(e){const t=e.getPropertyValue("content");return`${e.cssText} content: '${t.replace(/'|"/g,"")}';`}function je(e,t){return B(t).map(r=>{const n=e.getPropertyValue(r),a=e.getPropertyPriority(r);return`${r}: ${n}${a?" !important":""};`}).join(" ")}function Pe(e,t,r,n){const a=`.${e}:${t}`,s=r.cssText?ve(r):je(r,n);return document.createTextNode(`${a}{${s}}`)}function _(e,t,r,n){const a=window.getComputedStyle(e,r),s=a.getPropertyValue("content");if(s===""||s==="none")return;const o=we();try{t.className=`${t.className} ${o}`}catch{return}const i=document.createElement("style");i.appendChild(Pe(o,r,a,n)),t.appendChild(i)}function Te(e,t,r){_(e,t,":before",r),_(e,t,":after",r)}const M="application/font-woff",H="image/jpeg",ke={woff:M,woff2:M,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:H,jpeg:H,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function Ae(e){const t=/\.([^./]*?)$/g.exec(e);return t?t[1]:""}function A(e){const t=Ae(e).toLowerCase();return ke[t]||""}function Ie(e){return e.split(/,/)[1]}function k(e){return e.search(/^(data:)/)!==-1}function Fe(e,t){return`data:${t};base64,${e}`}async function X(e,t,r){const n=await fetch(e,t);if(n.status===404)throw new Error(`Resource "${n.url}" not found`);const a=await n.blob();return new Promise((s,o)=>{const i=new FileReader;i.onerror=o,i.onloadend=()=>{try{s(r({res:n,result:i.result}))}catch(c){o(c)}},i.readAsDataURL(a)})}const T={};function $e(e,t,r){let n=e.replace(/\?.*/,"");return r&&(n=e),/ttf|otf|eot|woff2?/i.test(n)&&(n=n.replace(/.*\//,"")),t?`[${t}]${n}`:n}async function I(e,t,r){const n=$e(e,t,r.includeQueryParams);if(T[n]!=null)return T[n];r.cacheBust&&(e+=(/\?/.test(e)?"&":"?")+new Date().getTime());let a;try{const s=await X(e,r.fetchRequestInit,({res:o,result:i})=>(t||(t=o.headers.get("Content-Type")||""),Ie(i)));a=Fe(s,t)}catch(s){a=r.imagePlaceholder||"";let o=`Failed to fetch resource: ${e}`;s&&(o=typeof s=="string"?s:s.message),o&&console.warn(o)}return T[n]=a,a}async function Le(e){const t=e.toDataURL();return t==="data:,"?e.cloneNode(!1):C(t)}async function De(e,t){if(e.currentSrc){const s=document.createElement("canvas"),o=s.getContext("2d");s.width=e.clientWidth,s.height=e.clientHeight,o==null||o.drawImage(e,0,0,s.width,s.height);const i=s.toDataURL();return C(i)}const r=e.poster,n=A(r),a=await I(r,n,t);return C(a)}async function _e(e,t){var r;try{if(!((r=e==null?void 0:e.contentDocument)===null||r===void 0)&&r.body)return await R(e.contentDocument.body,t,!0)}catch{}return e.cloneNode(!1)}async function Me(e,t){return m(e,HTMLCanvasElement)?Le(e):m(e,HTMLVideoElement)?De(e,t):m(e,HTMLIFrameElement)?_e(e,t):e.cloneNode(K(e))}const He=e=>e.tagName!=null&&e.tagName.toUpperCase()==="SLOT",K=e=>e.tagName!=null&&e.tagName.toUpperCase()==="SVG";async function Ve(e,t,r){var n,a;if(K(t))return t;let s=[];return He(e)&&e.assignedNodes?s=y(e.assignedNodes()):m(e,HTMLIFrameElement)&&(!((n=e.contentDocument)===null||n===void 0)&&n.body)?s=y(e.contentDocument.body.childNodes):s=y(((a=e.shadowRoot)!==null&&a!==void 0?a:e).childNodes),s.length===0||m(e,HTMLVideoElement)||await s.reduce((o,i)=>o.then(()=>R(i,r)).then(c=>{c&&t.appendChild(c)}),Promise.resolve()),t}function Ue(e,t,r){const n=t.style;if(!n)return;const a=window.getComputedStyle(e);a.cssText?(n.cssText=a.cssText,n.transformOrigin=a.transformOrigin):B(r).forEach(s=>{let o=a.getPropertyValue(s);s==="font-size"&&o.endsWith("px")&&(o=`${Math.floor(parseFloat(o.substring(0,o.length-2)))-.1}px`),m(e,HTMLIFrameElement)&&s==="display"&&o==="inline"&&(o="block"),s==="d"&&t.getAttribute("d")&&(o=`path(${t.getAttribute("d")})`),n.setProperty(s,o,a.getPropertyPriority(s))})}function Oe(e,t){m(e,HTMLTextAreaElement)&&(t.innerHTML=e.value),m(e,HTMLInputElement)&&t.setAttribute("value",e.value)}function We(e,t){if(m(e,HTMLSelectElement)){const n=Array.from(t.children).find(a=>e.value===a.getAttribute("value"));n&&n.setAttribute("selected","")}}function ze(e,t,r){return m(t,Element)&&(Ue(e,t,r),Te(e,t,r),Oe(e,t),We(e,t)),t}async function qe(e,t){const r=e.querySelectorAll?e.querySelectorAll("use"):[];if(r.length===0)return e;const n={};for(let s=0;s<r.length;s++){const i=r[s].getAttribute("xlink:href");if(i){const c=e.querySelector(i),u=document.querySelector(i);!c&&u&&!n[i]&&(n[i]=await R(u,t,!0))}}const a=Object.values(n);if(a.length){const s="http://www.w3.org/1999/xhtml",o=document.createElementNS(s,"svg");o.setAttribute("xmlns",s),o.style.position="absolute",o.style.width="0",o.style.height="0",o.style.overflow="hidden",o.style.display="none";const i=document.createElementNS(s,"defs");o.appendChild(i);for(let c=0;c<a.length;c++)i.appendChild(a[c]);e.appendChild(o)}return e}async function R(e,t,r){return!r&&t.filter&&!t.filter(e)?null:Promise.resolve(e).then(n=>Me(n,t)).then(n=>Ve(e,n,t)).then(n=>ze(e,n,t)).then(n=>qe(n,t))}const N=/url\((['"]?)([^'"]+?)\1\)/g,Be=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,Ge=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function Xe(e){const t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,"g")}function Ke(e){const t=[];return e.replace(N,(r,n,a)=>(t.push(a),r)),t.filter(r=>!k(r))}async function Ne(e,t,r,n,a){try{const s=r?ye(t,r):t,o=A(t);let i;return a||(i=await I(s,o,n)),e.replace(Xe(t),`$1${i}$3`)}catch{}return e}function Je(e,{preferredFontFormat:t}){return t?e.replace(Ge,r=>{for(;;){const[n,,a]=Be.exec(r)||[];if(!a)return"";if(a===t)return`src: ${n};`}}):e}function J(e){return e.search(N)!==-1}async function Q(e,t,r){if(!J(e))return e;const n=Je(e,r);return Ke(n).reduce((s,o)=>s.then(i=>Ne(i,o,t,r)),Promise.resolve(n))}async function b(e,t,r){var n;const a=(n=t.style)===null||n===void 0?void 0:n.getPropertyValue(e);if(a){const s=await Q(a,null,r);return t.style.setProperty(e,s,t.style.getPropertyPriority(e)),!0}return!1}async function Qe(e,t){await b("background",e,t)||await b("background-image",e,t),await b("mask",e,t)||await b("-webkit-mask",e,t)||await b("mask-image",e,t)||await b("-webkit-mask-image",e,t)}async function Ye(e,t){const r=m(e,HTMLImageElement);if(!(r&&!k(e.src))&&!(m(e,SVGImageElement)&&!k(e.href.baseVal)))return;const n=r?e.src:e.href.baseVal,a=await I(n,A(n),t);await new Promise((s,o)=>{e.onload=s,e.onerror=t.onImageErrorHandler?(...c)=>{try{s(t.onImageErrorHandler(...c))}catch(u){o(u)}}:o;const i=e;i.decode&&(i.decode=s),i.loading==="lazy"&&(i.loading="eager"),r?(e.srcset="",e.src=a):e.href.baseVal=a})}async function Ze(e,t){const n=y(e.childNodes).map(a=>Y(a,t));await Promise.all(n).then(()=>e)}async function Y(e,t){m(e,Element)&&(await Qe(e,t),await Ye(e,t),await Ze(e,t))}function et(e,t){const{style:r}=e;t.backgroundColor&&(r.backgroundColor=t.backgroundColor),t.width&&(r.width=`${t.width}px`),t.height&&(r.height=`${t.height}px`);const n=t.style;return n!=null&&Object.keys(n).forEach(a=>{r[a]=n[a]}),e}const V={};async function U(e){let t=V[e];if(t!=null)return t;const n=await(await fetch(e)).text();return t={url:e,cssText:n},V[e]=t,t}async function O(e,t){let r=e.cssText;const n=/url\(["']?([^"')]+)["']?\)/g,s=(r.match(/url\([^)]+\)/g)||[]).map(async o=>{let i=o.replace(n,"$1");return i.startsWith("https://")||(i=new URL(i,e.url).href),X(i,t.fetchRequestInit,({result:c})=>(r=r.replace(o,`url(${c})`),[o,c]))});return Promise.all(s).then(()=>r)}function W(e){if(e==null)return[];const t=[],r=/(\/\*[\s\S]*?\*\/)/gi;let n=e.replace(r,"");const a=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const c=a.exec(n);if(c===null)break;t.push(c[0])}n=n.replace(a,"");const s=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,o="((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})",i=new RegExp(o,"gi");for(;;){let c=s.exec(n);if(c===null){if(c=i.exec(n),c===null)break;s.lastIndex=i.lastIndex}else i.lastIndex=s.lastIndex;t.push(c[0])}return t}async function tt(e,t){const r=[],n=[];return e.forEach(a=>{if("cssRules"in a)try{y(a.cssRules||[]).forEach((s,o)=>{if(s.type===CSSRule.IMPORT_RULE){let i=o+1;const c=s.href,u=U(c).then(f=>O(f,t)).then(f=>W(f).forEach(x=>{try{a.insertRule(x,x.startsWith("@import")?i+=1:a.cssRules.length)}catch(v){console.error("Error inserting rule from remote css",{rule:x,error:v})}})).catch(f=>{console.error("Error loading remote css",f.toString())});n.push(u)}})}catch(s){const o=e.find(i=>i.href==null)||document.styleSheets[0];a.href!=null&&n.push(U(a.href).then(i=>O(i,t)).then(i=>W(i).forEach(c=>{o.insertRule(c,o.cssRules.length)})).catch(i=>{console.error("Error loading remote stylesheet",i)})),console.error("Error inlining remote css file",s)}}),Promise.all(n).then(()=>(e.forEach(a=>{if("cssRules"in a)try{y(a.cssRules||[]).forEach(s=>{r.push(s)})}catch(s){console.error(`Error while reading CSS rules from ${a.href}`,s)}}),r))}function rt(e){return e.filter(t=>t.type===CSSRule.FONT_FACE_RULE).filter(t=>J(t.style.getPropertyValue("src")))}async function nt(e,t){if(e.ownerDocument==null)throw new Error("Provided element is not within a Document");const r=y(e.ownerDocument.styleSheets),n=await tt(r,t);return rt(n)}function Z(e){return e.trim().replace(/["']/g,"")}function at(e){const t=new Set;function r(n){(n.style.fontFamily||getComputedStyle(n).fontFamily).split(",").forEach(s=>{t.add(Z(s))}),Array.from(n.children).forEach(s=>{s instanceof HTMLElement&&r(s)})}return r(e),t}async function st(e,t){const r=await nt(e,t),n=at(e);return(await Promise.all(r.filter(s=>n.has(Z(s.style.fontFamily))).map(s=>{const o=s.parentStyleSheet?s.parentStyleSheet.href:null;return Q(s.cssText,o,t)}))).join(`
|
|
2
|
+
`)}async function ot(e,t){const r=t.fontEmbedCSS!=null?t.fontEmbedCSS:t.skipFonts?null:await st(e,t);if(r){const n=document.createElement("style"),a=document.createTextNode(r);n.appendChild(a),e.firstChild?e.insertBefore(n,e.firstChild):e.appendChild(n)}}async function it(e,t={}){const{width:r,height:n}=G(e,t),a=await R(e,t,!0);return await ot(a,t),await Y(a,t),et(a,t),await Re(a,r,n)}async function ct(e,t={}){const{width:r,height:n}=G(e,t),a=await it(e,t),s=await C(a),o=document.createElement("canvas"),i=o.getContext("2d"),c=t.pixelRatio||Se(),u=t.canvasWidth||r,f=t.canvasHeight||n;return o.width=u*c,o.height=f*c,t.skipAutoScale||Ee(o),o.style.width=`${u}`,o.style.height=`${f}`,t.backgroundColor&&(i.fillStyle=t.backgroundColor,i.fillRect(0,0,o.width,o.height)),i.drawImage(s,0,0,o.width,o.height),o}async function lt(e,t={}){return(await ct(e,t)).toDataURL()}const ut={"--background":"#ffffff","--foreground":"#0f172a","--card":"#ffffff","--card-foreground":"#0f172a","--popover":"#ffffff","--popover-foreground":"#0f172a","--primary-foreground":"#ffffff","--secondary":"#f5f5f5","--secondary-foreground":"#171717","--muted":"#f5f5f5","--muted-foreground":"#737373","--accent":"#f5f5f5","--accent-foreground":"#171717","--destructive":"#dc2626","--destructive-foreground":"#ffffff","--border":"#e5e5e5","--input":"#e5e5e5","--ring":"#a3a3a3"},z={"--brand-50":"#fff7ed","--brand-100":"#ffedd5","--brand-200":"#fed7aa","--brand-300":"#fdba74","--brand-400":"#fb923c","--brand-500":"#f97316","--brand-600":"#ea580c","--brand-700":"#c2410c"};function ft(){const e=getComputedStyle(document.documentElement),t=n=>e.getPropertyValue(n).trim(),r={};for(const[n,a]of Object.entries(z))r[n]=t(n)||a;return r["--primary"]=t("--brand-500")||z["--brand-500"],r}const dt=2e4,ee=720,q=1200,mt=48,ht=`
|
|
3
|
+
.share-card-content {
|
|
4
|
+
overflow-wrap: break-word !important;
|
|
5
|
+
word-break: break-word !important;
|
|
6
|
+
}
|
|
7
|
+
.share-card-content th,
|
|
8
|
+
.share-card-content td {
|
|
9
|
+
white-space: normal !important;
|
|
10
|
+
word-break: break-word !important;
|
|
11
|
+
}
|
|
12
|
+
.share-card-content pre {
|
|
13
|
+
white-space: pre-wrap !important;
|
|
14
|
+
word-break: break-all !important;
|
|
15
|
+
}
|
|
16
|
+
.share-card-content code {
|
|
17
|
+
word-break: break-all !important;
|
|
18
|
+
}
|
|
19
|
+
.share-card-content .overflow-x-auto {
|
|
20
|
+
overflow: visible !important;
|
|
21
|
+
}
|
|
22
|
+
`,gt=p.forwardRef(function({content:t,senderName:r,timestamp:n,groupJid:a,aiEmoji:s,aiColor:o,aiImageUrl:i},c){const u=p.useMemo(()=>{const f=ft();return{...ut,...f}},[]);return l.jsxs("div",{ref:c,style:{...u,minWidth:ee,fontFamily:"'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",background:"#ffffff",color:"#0f172a",borderRadius:16,WebkitFontSmoothing:"antialiased"},children:[l.jsx("style",{children:ht}),l.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 24px",borderBottom:"1px solid #e2e8f0",background:"#f8fafc",borderRadius:"16px 16px 0 0"},children:[l.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10},children:[l.jsx(ce,{imageUrl:i,emoji:s,color:o,fallbackChar:r[0],size:"md"}),l.jsx("span",{style:{fontSize:15,fontWeight:600,color:"#0f172a"},children:r})]}),l.jsx("span",{style:{fontSize:13,color:"#64748b",whiteSpace:"nowrap",marginLeft:16},children:n})]}),l.jsxs("div",{style:{padding:"20px 24px",maxHeight:dt,position:"relative"},children:[l.jsx("div",{className:"share-card-content max-w-none",children:l.jsx(le,{content:t,groupJid:a,variant:"chat"})}),t.length>3e4&&l.jsx("div",{style:{position:"absolute",bottom:0,left:0,right:0,height:80,background:"linear-gradient(transparent, #ffffff)",pointerEvents:"none"}})]}),l.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"12px 24px",gap:"6px",borderTop:"1px solid #e2e8f0",background:"#f8fafc",borderRadius:"0 0 16px 16px"},children:[l.jsx("img",{src:"/icons/icon-192.png",alt:"cli-claw",style:{width:16,height:16,borderRadius:3}}),l.jsx("span",{style:{fontSize:12,color:"#94a3b8"},children:"Cli Claw · github.com/RyanProMax/cli-claw"})]})]})});function pt(e){return new Promise(t=>{const r=new MutationObserver(a),n=setTimeout(()=>{r.disconnect(),t()},5e3);function a(){const s=e.querySelectorAll(".animate-pulse"),o=e.querySelectorAll("img"),i=Array.from(o).every(c=>c.complete);s.length===0&&i&&(clearTimeout(n),r.disconnect(),setTimeout(t,300))}r.observe(e,{childList:!0,subtree:!0}),a()})}function Rt({onClose:e,message:t}){const[r,n]=p.useState("generating"),[a,s]=p.useState(null),[o,i]=p.useState(""),c=p.useRef(null),u=L(d=>d.user),f=L(d=>d.appearance),x=(u==null?void 0:u.ai_name)||(f==null?void 0:f.aiName)||t.sender_name||"AI",v=(u==null?void 0:u.ai_avatar_emoji)||(f==null?void 0:f.aiAvatarEmoji),te=(u==null?void 0:u.ai_avatar_color)||(f==null?void 0:f.aiAvatarColor),re=u==null?void 0:u.ai_avatar_url,ne=new Date(t.timestamp).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}).replace(/\//g,"-"),j=p.useCallback(async()=>{n("generating"),s(null),i(""),await new Promise(g=>setTimeout(g,100));const d=c.current;if(!d){n("error"),i("渲染容器未就绪");return}try{d.style.width=`${q}px`,await new Promise(S=>requestAnimationFrame(S)),await pt(d);const g=d.querySelectorAll("table");let P=0;g.forEach(S=>{P=Math.max(P,S.scrollWidth)});const oe=Math.max(ee,Math.min(P+mt,q));d.style.width=`${oe}px`,await new Promise(S=>requestAnimationFrame(S));const ie=await lt(d,{pixelRatio:2,cacheBust:!0,backgroundColor:"#ffffff"});s(ie),n("preview")}catch(g){n("error"),i(g instanceof Error?g.message:"生成图片失败")}},[]);p.useEffect(()=>{j()},[j]);const[F,$]=p.useState(!1),ae=()=>{a&&pe(a,`share-${Date.now()}.png`).catch(d=>{console.error("Share image download failed:",d),D("保存失败",d instanceof Error?d.message:"图片保存出错,请重试")})},se=async()=>{if(a)try{const g=await(await fetch(a)).blob();await navigator.clipboard.write([new ClipboardItem({[g.type]:g})]),$(!0),setTimeout(()=>$(!1),2e3)}catch(d){console.error("Share image copy failed:",d),D("复制失败","浏览器不支持复制图片到剪切板,请使用下载")}};return ue.createPortal(l.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",onClick:e,children:[l.jsxs("div",{className:"relative bg-card rounded-2xl shadow-2xl border border-border w-[90vw] max-w-2xl max-h-[85vh] flex flex-col animate-in zoom-in-95 fade-in duration-200",onClick:d=>d.stopPropagation(),children:[l.jsxs("div",{className:"flex items-center justify-between px-5 py-4 border-b border-border",children:[l.jsx("h2",{className:"text-base font-semibold text-foreground",children:"生成分享图片"}),l.jsx("button",{onClick:e,className:"w-8 h-8 rounded-lg flex items-center justify-center text-muted-foreground hover:text-foreground hover:bg-foreground/10 transition-colors cursor-pointer",children:l.jsx(fe,{className:"w-4 h-4"})})]}),l.jsxs("div",{className:"flex-1 overflow-auto p-5",children:[r==="generating"&&l.jsxs("div",{className:"flex flex-col items-center justify-center py-16 gap-3",children:[l.jsx(de,{className:"w-6 h-6 text-primary animate-spin"}),l.jsx("span",{className:"text-sm text-muted-foreground",children:"正在渲染图片..."})]}),r==="error"&&l.jsxs("div",{className:"flex flex-col items-center justify-center py-16 gap-3",children:[l.jsx("span",{className:"text-sm text-destructive",children:o}),l.jsx("button",{onClick:j,className:"px-4 py-2 text-sm bg-primary text-primary-foreground rounded-lg hover:opacity-90 transition-opacity cursor-pointer",children:"重试"})]}),r==="preview"&&a&&l.jsx("img",{src:a,alt:"分享预览",className:"w-full rounded-lg border border-border"})]}),r==="preview"&&l.jsxs("div",{className:"flex gap-3 px-5 py-4 border-t border-border",children:[l.jsxs("button",{onClick:se,className:"flex-1 flex items-center justify-center gap-2 px-4 py-2.5 text-sm font-medium border border-border rounded-lg hover:bg-accent transition-colors cursor-pointer",children:[F?l.jsx(me,{className:"w-4 h-4 text-emerald-500"}):l.jsx(he,{className:"w-4 h-4"}),F?"已复制":"复制图片"]}),l.jsxs("button",{onClick:ae,className:"flex-1 flex items-center justify-center gap-2 px-4 py-2.5 text-sm font-medium bg-primary text-primary-foreground rounded-lg hover:opacity-90 transition-opacity cursor-pointer",children:[l.jsx(ge,{className:"w-4 h-4"}),"保存图片"]})]})]}),l.jsx("div",{style:{position:"fixed",left:-9999,top:0,opacity:0,pointerEvents:"none"},children:l.jsx(gt,{ref:c,content:t.content,senderName:x,timestamp:ne,groupJid:t.chat_jid,aiEmoji:v,aiColor:te,aiImageUrl:re})})]}),document.body)}export{Rt as ShareImageDialog};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import{c as re,r as d,b as ne,j as e,X as Y,f as ie,g as ue,L as me,h as le,s as $,i as xe,E as he,k as pe,l as fe,m as ge,e as V,n as H,B as D,o as ee,S as M,q as z,t as F,v as O,w as k,I as Q,x as be,y as je,z as te,A as ve,D as ye,F as Ne}from"./index-CPnL1_qC.js";import{useTasksStore as K}from"./tasks-D8JjBTwx.js";import{Z as _e}from"./zap-_hKJYy7J.js";import{S as se,C as we}from"./sparkles-BsMYXJoT.js";import{S as Ce}from"./sliders-horizontal-CuijWFNK.js";import"./error-CGD5mp5f.js";/**
|
|
2
|
+
* @license lucide-react v0.400.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const Se=re("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);/**
|
|
7
|
+
* @license lucide-react v0.400.0 - ISC
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the ISC license.
|
|
10
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/const Te=re("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]),P=[{label:"秒",ms:1e3},{label:"分钟",ms:6e4},{label:"小时",ms:36e5},{label:"天",ms:864e5}],X=[{key:"feishu",label:"飞书"},{key:"telegram",label:"Telegram"},{key:"qq",label:"QQ"},{key:"wechat",label:"微信"},{key:"dingtalk",label:"钉钉"}];function ae(t){const n=typeof t=="string"?parseInt(t,10):t;return isNaN(n)||n<=0?String(t):n%864e5===0?`${n/864e5} 天`:n%36e5===0?`${n/36e5} 小时`:n%6e4===0?`${n/6e4} 分钟`:n%1e3===0?`${n/1e3} 秒`:`${n} 毫秒`}function G(t){const n=parseInt(t,10);if(isNaN(n)||n<=0)return{num:"",unitMs:"60000"};for(let c=P.length-1;c>=0;c--)if(n%P[c].ms===0)return{num:String(n/P[c].ms),unitMs:String(P[c].ms)};return{num:String(n/6e4),unitMs:"60000"}}function oe(t,n,c){if(t===null)return c.filter(m=>m!==n);if(t.includes(n))return t.filter(m=>m!==n);const i=[...t,n];return c.length>0&&c.every(m=>i.includes(m))?null:i}function ce(){const[t,n]=d.useState({});return d.useEffect(()=>{ne.get("/api/config/user-im/status").then(c=>{const i={};for(const m of X)i[m.key]=!!c[m.key];n(i)}).catch(()=>{})},[]),t}const J={feishu:"飞书",telegram:"Telegram",qq:"QQ",wechat:"微信",dingtalk:"钉钉"},Ie={running:{bg:"bg-blue-100 dark:bg-blue-900/40",text:"text-blue-700 dark:text-blue-300",label:"运行中"},success:{bg:"bg-green-100 dark:bg-green-900/40",text:"text-green-700 dark:text-green-300",label:"成功"},error:{bg:"bg-red-100 dark:bg-red-900/40",text:"text-red-700 dark:text-red-300",label:"失败"}};function ke({status:t}){const n=Ie[t]||{bg:"bg-muted",text:"text-muted-foreground",label:t};return e.jsx("span",{className:`inline-flex px-2 py-0.5 rounded-full text-xs font-medium ${n.bg} ${n.text}`,children:n.label})}function Ve(t){if(t<1e3)return`${t}ms`;const n=Math.round(t/1e3);if(n<60)return`${n}s`;const c=Math.floor(n/60),i=n%60;return i>0?`${c}m ${i}s`:`${c}m`}function De({task:t}){const{updateTask:n,loadLogs:c,logs:i}=K(),m=ce(),g=i[t.id]||[],[T,b]=d.useState(!1);d.useEffect(()=>{c(t.id)},[t.id,c]);const N=async()=>{b(!0);try{await c(t.id)}finally{b(!1)}},[l,p]=d.useState(!1),[y,w]=d.useState(!1),[o,f]=d.useState({prompt:t.prompt,script_command:t.script_command||"",schedule_type:t.schedule_type,schedule_value:t.schedule_value,notify_channels:t.notify_channels??null}),u=d.useMemo(()=>G(t.schedule_value),[t.schedule_value]),[C,h]=d.useState(u.num),[I,S]=d.useState(u.unitMs);d.useEffect(()=>{if(!l){f({prompt:t.prompt,script_command:t.script_command||"",schedule_type:t.schedule_type,schedule_value:t.schedule_value,notify_channels:t.notify_channels??null});const s=G(t.schedule_value);h(s.num),S(s.unitMs)}},[t,l]);const a=async()=>{w(!0);try{const s={};o.prompt!==t.prompt&&(s.prompt=o.prompt),o.script_command!==(t.script_command||"")&&(s.script_command=o.script_command||null),o.schedule_type!==t.schedule_type&&(s.schedule_type=o.schedule_type);const x=o.schedule_type==="interval"&&C?String(parseInt(C,10)*parseInt(I,10)):o.schedule_value;x!==t.schedule_value&&(s.schedule_value=x);const v=JSON.stringify(t.notify_channels??null),A=JSON.stringify(o.notify_channels);v!==A&&(s.notify_channels=o.notify_channels),Object.keys(s).length>0&&(await n(t.id,s),$("保存成功","任务已更新")),p(!1)}catch{$("保存失败","请稍后重试")}finally{w(!1)}},L=()=>{f({prompt:t.prompt,script_command:t.script_command||"",schedule_type:t.schedule_type,schedule_value:t.schedule_value,notify_channels:t.notify_channels??null});const s=G(t.schedule_value);h(s.num),S(s.unitMs),p(!1)},R=Object.keys(m).filter(s=>m[s]),E=s=>{f(x=>({...x,notify_channels:oe(x.notify_channels,s,R)}))},j=s=>{if(!s)return"-";const x=new Date(s);return Number.isNaN(x.getTime())?s:x.toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})},U=()=>{const s=l?o.schedule_type:t.schedule_type;return s==="cron"?"Cron 表达式":s==="interval"?"执行间隔":s==="once"?"执行时间":"调度值"},q=(s,x)=>s==="interval"?ae(x):s==="once"?j(x):x,W=s=>o.notify_channels===null?!0:o.notify_channels.includes(s),B=()=>{const s=t.notify_channels;if(s==null){const x=Object.entries(m).filter(([,v])=>v).map(([v])=>v);return e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsx("span",{className:"inline-flex px-2 py-0.5 rounded-full text-xs font-medium bg-muted text-muted-foreground",children:"Web"}),x.map(v=>e.jsx("span",{className:"inline-flex px-2 py-0.5 rounded-full text-xs font-medium bg-brand-50 text-primary",children:J[v]||v},v))]})}return s.length===0?e.jsx("span",{className:"inline-flex px-2 py-0.5 rounded-full text-xs font-medium bg-muted text-muted-foreground",children:"仅 Web"}):e.jsxs("div",{className:"flex flex-wrap gap-1",children:[e.jsx("span",{className:"inline-flex px-2 py-0.5 rounded-full text-xs font-medium bg-muted text-muted-foreground",children:"Web"}),s.map(x=>e.jsx("span",{className:"inline-flex px-2 py-0.5 rounded-full text-xs font-medium bg-brand-50 text-primary",children:J[x]||x},x))]})};return e.jsxs("div",{className:"p-4 bg-background space-y-4",children:[e.jsx("div",{className:"flex items-center justify-end gap-2",children:l?e.jsxs(e.Fragment,{children:[e.jsxs("button",{onClick:L,disabled:y,className:"inline-flex items-center gap-1 px-3 py-1.5 text-xs font-medium text-muted-foreground bg-muted hover:bg-muted/80 rounded-lg transition-colors cursor-pointer disabled:opacity-50",children:[e.jsx(Y,{className:"w-3.5 h-3.5"})," 取消"]}),e.jsxs("button",{onClick:a,disabled:y,className:"inline-flex items-center gap-1 px-3 py-1.5 text-xs font-medium text-white bg-primary hover:bg-primary/90 rounded-lg transition-colors cursor-pointer disabled:opacity-50",children:[e.jsx(ie,{className:"w-3.5 h-3.5"})," ",y?"保存中...":"保存"]})]}):e.jsxs("button",{onClick:()=>p(!0),className:"inline-flex items-center gap-1 px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-primary hover:bg-brand-50 rounded-lg transition-colors cursor-pointer",children:[e.jsx(ue,{className:"w-3.5 h-3.5"})," 编辑"]})}),t.execution_type==="script"&&e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-2",children:"脚本命令"}),l?e.jsx("textarea",{value:o.script_command,onChange:s=>f({...o,script_command:s.target.value}),rows:3,maxLength:4096,className:"w-full text-sm text-foreground bg-card px-3 py-2 rounded border border-border font-mono resize-none focus:outline-none focus:ring-1 focus:ring-primary"}):t.script_command&&e.jsx("pre",{className:"text-sm text-foreground bg-card px-3 py-2 rounded border border-border whitespace-pre-wrap font-mono",children:t.script_command})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-2",children:t.execution_type==="script"?"任务描述":"完整 Prompt"}),l?e.jsx("textarea",{value:o.prompt,onChange:s=>f({...o,prompt:s.target.value}),rows:6,className:"w-full text-sm text-foreground bg-card px-3 py-2 rounded border border-border resize-y min-h-[160px] max-h-[400px] overflow-y-auto focus:outline-none focus:ring-1 focus:ring-primary"}):t.prompt&&e.jsx("div",{className:"text-sm text-foreground bg-card px-3 py-2 rounded border border-border whitespace-pre-wrap max-h-[300px] overflow-y-auto",children:t.prompt})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"执行方式"}),e.jsx("div",{className:"text-sm text-foreground",children:t.execution_type==="script"?"脚本":"Agent"})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"调度类型"}),l?e.jsxs("select",{value:o.schedule_type,onChange:s=>f({...o,schedule_type:s.target.value}),className:"w-full text-sm text-foreground bg-card px-2 py-1 rounded border border-border focus:outline-none focus:ring-1 focus:ring-primary",children:[e.jsx("option",{value:"cron",children:"Cron 表达式"}),e.jsx("option",{value:"interval",children:"间隔执行"}),e.jsx("option",{value:"once",children:"单次执行"})]}):e.jsxs("div",{className:"text-sm text-foreground",children:[t.schedule_type==="cron"&&"Cron 表达式",t.schedule_type==="interval"&&"间隔执行",t.schedule_type==="once"&&"单次执行"]})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:U()}),l?e.jsxs(e.Fragment,{children:[o.schedule_type==="interval"?e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{type:"number",min:"1",value:C,onChange:s=>h(s.target.value),className:"flex-1 text-sm text-foreground bg-card px-2 py-1 rounded border border-border font-mono focus:outline-none focus:ring-1 focus:ring-primary",placeholder:"数值"}),e.jsx("select",{value:I,onChange:s=>S(s.target.value),className:"w-20 text-sm text-foreground bg-card px-2 py-1 rounded border border-border focus:outline-none focus:ring-1 focus:ring-primary",children:P.map(s=>e.jsx("option",{value:String(s.ms),children:s.label},s.ms))})]}):e.jsx("input",{type:"text",value:o.schedule_value,onChange:s=>f({...o,schedule_value:s.target.value}),className:"w-full text-sm text-foreground bg-card px-2 py-1 rounded border border-border font-mono focus:outline-none focus:ring-1 focus:ring-primary"}),o.schedule_type==="cron"&&e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"格式: 分 时 日 月 星期(北京时间)"})]}):e.jsx("div",{className:"text-sm text-foreground",children:t.schedule_type==="cron"?e.jsx("code",{className:"text-xs bg-muted px-1.5 py-0.5 rounded text-muted-foreground",children:t.schedule_value}):q(t.schedule_type,t.schedule_value)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"下次运行"}),e.jsx("div",{className:"text-sm text-foreground",children:j(t.next_run)})]}),t.last_run&&e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"上次运行"}),e.jsx("div",{className:"text-sm text-foreground",children:j(t.last_run)})]}),t.execution_mode&&e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"执行模式"}),e.jsx("div",{className:"text-sm text-foreground",children:t.execution_mode==="host"?"宿主机":"Docker 容器"})]}),t.workspace_folder&&e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"任务工作区"}),e.jsx(me,{to:`/chat/${t.workspace_folder}`,className:"text-sm text-primary hover:underline",children:t.workspace_folder})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"创建时间"}),e.jsx("div",{className:"text-sm text-foreground",children:j(t.created_at)})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"通知渠道"}),l?e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs("label",{className:"inline-flex items-center gap-1 text-sm text-muted-foreground",children:[e.jsx("input",{type:"checkbox",checked:!0,disabled:!0,className:"rounded"}),"Web"]}),Object.entries(J).filter(([s])=>m[s]).map(([s,x])=>e.jsxs("label",{className:"inline-flex items-center gap-1 text-sm text-foreground cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:W(s),onChange:()=>E(s),className:"rounded"}),x]},s))]}):B()]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"执行日志"}),e.jsx("button",{onClick:N,disabled:T,className:"p-1 text-muted-foreground hover:text-foreground transition-colors cursor-pointer disabled:opacity-50",title:"刷新日志",children:e.jsx(le,{className:`w-4 h-4 ${T?"animate-spin":""}`})})]}),g.length===0?e.jsx("p",{className:"text-xs text-muted-foreground",children:"暂无执行记录"}):e.jsx("div",{className:"border border-border rounded-lg overflow-hidden",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-brand-50 text-primary text-xs",children:[e.jsx("th",{className:"text-left px-4 py-2 font-medium",children:"运行时间"}),e.jsx("th",{className:"text-left px-4 py-2 font-medium",children:"耗时"}),e.jsx("th",{className:"text-left px-4 py-2 font-medium",children:"状态"}),e.jsx("th",{className:"text-left px-4 py-2 font-medium",children:"结果"})]})}),e.jsx("tbody",{className:"divide-y divide-border",children:g.map(s=>e.jsxs("tr",{children:[e.jsx("td",{className:"px-4 py-2.5 text-foreground whitespace-nowrap",children:j(s.run_at)}),e.jsx("td",{className:"px-4 py-2.5 text-foreground whitespace-nowrap",children:s.status==="running"?"-":Ve(s.duration_ms)}),e.jsx("td",{className:"px-4 py-2.5",children:e.jsx(ke,{status:s.status})}),e.jsx("td",{className:"px-4 py-2.5 text-foreground truncate max-w-xs",title:s.error||s.result||"",children:s.error?e.jsx("span",{className:"text-red-600 dark:text-red-400",children:s.error.slice(0,100)}):s.result?s.result.slice(0,100):s.status==="running"?e.jsx("span",{className:"text-muted-foreground",children:"执行中..."}):""})]},s.id))})]})})]})]})}function Z({task:t,onPause:n,onResume:c,onDelete:i,onRunNow:m}){const[g,T]=d.useState(!1),[b,N]=d.useState(!1),l=xe(),p=u=>{switch(u){case"active":return"bg-green-100 dark:bg-green-900/40 text-green-600 dark:text-green-400";case"parsing":return"bg-blue-100 dark:bg-blue-900/40 text-blue-600 dark:text-blue-400";case"paused":return"bg-amber-100 dark:bg-amber-900/40 text-amber-600 dark:text-amber-400";case"completed":return"bg-muted text-muted-foreground";default:return"bg-muted text-muted-foreground"}},y=u=>{switch(u){case"active":return"运行中";case"parsing":return"AI 解析中...";case"paused":return"已暂停";case"completed":return"已完成";default:return u}},w=u=>{u.stopPropagation(),t.status==="active"?n(t.id):c(t.id)},o=async u=>{if(u.stopPropagation(),!(!m||b)){N(!0);try{await m(t.id),$("任务已触发","后台执行中,稍后刷新查看结果")}finally{setTimeout(()=>N(!1),3e3)}}},f=u=>{u.stopPropagation(),i(t.id)};return e.jsxs("div",{className:"bg-card rounded-xl border border-border hover:border-primary/60 transition-colors duration-200",children:[e.jsx("button",{onClick:()=>T(!g),className:"w-full p-4 text-left cursor-pointer",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1 min-w-0 mr-4",children:[e.jsx("p",{className:"text-foreground font-semibold text-sm mb-1",children:(t.prompt||"").split(`
|
|
12
|
+
`)[0].trim().slice(0,30).trim()||t.id.slice(0,8)}),e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mb-2",children:[t.execution_type==="script"&&e.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-blue-100 dark:bg-blue-900/40 text-blue-800 dark:text-blue-300",children:"脚本"}),t.execution_mode&&e.jsx("span",{className:`inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium ${t.execution_mode==="host"?"bg-purple-100 dark:bg-purple-900/40 text-purple-800 dark:text-purple-300":"bg-cyan-100 dark:bg-cyan-900/40 text-cyan-800 dark:text-cyan-300"}`,children:t.execution_mode==="host"?"宿主机":"Docker"}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[t.schedule_type==="cron"&&t.schedule_value,t.schedule_type==="interval"&&`每 ${ae(t.schedule_value)}`,t.schedule_type==="once"&&"单次执行"]})]}),e.jsx("div",{children:e.jsx("span",{className:`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${p(t.status)}`,children:y(t.status)})})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[t.workspace_folder&&e.jsx("button",{onClick:u=>{u.stopPropagation(),l(`/chat/${t.workspace_folder}`)},className:"p-2 text-muted-foreground hover:text-primary hover:bg-brand-50 rounded-lg transition-colors cursor-pointer",title:"打开工作区","aria-label":"打开任务工作区",children:e.jsx(he,{className:"w-5 h-5"})}),m&&(t.status==="active"||t.status==="paused")&&e.jsx("button",{onClick:o,disabled:b,className:"p-2 text-muted-foreground hover:text-amber-600 dark:hover:text-amber-400 hover:bg-amber-50 dark:hover:bg-amber-950/40 rounded-lg transition-colors cursor-pointer disabled:opacity-50",title:"立即运行","aria-label":"立即运行任务",children:e.jsx(_e,{className:`w-5 h-5 ${b?"animate-pulse text-amber-500":""}`})}),(t.status==="active"||t.status==="paused")&&e.jsx("button",{onClick:w,className:"p-2 text-muted-foreground hover:text-primary hover:bg-brand-50 rounded-lg transition-colors cursor-pointer",title:t.status==="active"?"暂停":"恢复","aria-label":t.status==="active"?"暂停任务":"恢复任务",children:t.status==="active"?e.jsx(Se,{className:"w-5 h-5"}):e.jsx(Te,{className:"w-5 h-5"})}),e.jsx("button",{onClick:f,className:"p-2 text-muted-foreground hover:text-red-600 dark:hover:text-red-400 hover:bg-red-50 dark:hover:bg-red-950/40 rounded-lg transition-colors cursor-pointer",title:"删除","aria-label":"删除任务",children:e.jsx(pe,{className:"w-5 h-5"})}),e.jsx("div",{className:"ml-2",children:g?e.jsx(fe,{className:"w-5 h-5 text-muted-foreground"}):e.jsx(ge,{className:"w-5 h-5 text-muted-foreground"})})]})]})}),g&&e.jsx("div",{className:"border-t border-border",children:e.jsx(De,{task:t})})]})}function Le({onSubmit:t,onClose:n,isAdmin:c}){const[i,m]=d.useState("ai"),[g,T]=d.useState(""),[b,N]=d.useState(!1),[l,p]=d.useState({prompt:"",scheduleType:"cron",scheduleValue:"",executionType:"agent",executionMode:c?"host":"container",scriptCommand:""}),[y,w]=d.useState(""),[o,f]=d.useState("60000"),[u,C]=d.useState(""),[h,I]=d.useState({}),[S,a]=d.useState(!1),[L,R]=d.useState(null),E=ce(),j=l.executionType==="script",U=X.filter(r=>E[r.key]).map(r=>r.key),q=r=>L===null?!0:L.includes(r),W=r=>{R(_=>oe(_,r,U))},B=async()=>{if(g.trim()){N(!0);try{await ne.post("/api/tasks/ai",{description:g.trim(),notify_channels:L}),$("任务已创建","AI 正在后台解析调度参数,稍后自动激活"),n()}catch(r){$("创建失败",r instanceof Error?r.message:"请稍后重试")}finally{N(!1)}}},s=()=>{const r={};if(j?l.scriptCommand.trim()||(r.scriptCommand="请输入脚本命令"):l.prompt.trim()||(r.prompt="请输入 Prompt"),l.scheduleType==="cron")l.scheduleValue.trim()?l.scheduleValue.trim().split(" ").length<5&&(r.scheduleValue="Cron 表达式格式错误(至少需要 5 个字段)"):r.scheduleValue="请输入 Cron 表达式";else if(l.scheduleType==="interval")if(!y.trim())r.scheduleValue="请输入间隔数值";else{const _=parseInt(y);(isNaN(_)||_<=0)&&(r.scheduleValue="间隔必须是正整数")}else if(l.scheduleType==="once")if(!u)r.scheduleValue="请选择执行时间";else{const _=new Date(u);(Number.isNaN(_.getTime())||_.getTime()<=Date.now())&&(r.scheduleValue="请选择未来时间")}return I(r),Object.keys(r).length===0},x=async r=>{if(r.preventDefault(),!s())return;let _=l.scheduleValue;l.scheduleType==="interval"?_=String(parseInt(y,10)*parseInt(o,10)):l.scheduleType==="once"&&(_=new Date(u).toISOString()),a(!0);try{await t({prompt:l.prompt,scheduleType:l.scheduleType,scheduleValue:_,executionType:l.executionType,executionMode:l.executionMode,scriptCommand:l.scriptCommand,notifyChannels:L})}catch(de){console.error("Failed to create task:",de)}finally{a(!1)}},v=X.filter(r=>E[r.key]),A=()=>e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"通知渠道"}),e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsxs("label",{className:"inline-flex items-center gap-1.5 text-sm text-muted-foreground",children:[e.jsx("input",{type:"checkbox",checked:!0,disabled:!0,className:"rounded"}),"Web(始终)"]}),v.map(r=>e.jsxs("label",{className:"inline-flex items-center gap-1.5 text-sm cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:q(r.key),onChange:()=>W(r.key),className:"rounded"}),r.label]},r.key))]}),v.length===0&&e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"未绑定任何 IM 渠道,任务结果仅在 Web 工作区展示"}),v.length>0&&e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"选择任务结果推送的 IM 渠道,默认推送到所有已连接渠道"})]});return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",children:e.jsxs("div",{className:"bg-card rounded-xl shadow-xl w-full max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-border",children:[e.jsx("h2",{className:"text-xl font-bold text-foreground",children:"创建定时任务"}),e.jsx("button",{onClick:n,className:"p-2 text-muted-foreground hover:text-foreground hover:bg-muted rounded-lg transition-colors",children:e.jsx(Y,{className:"w-5 h-5"})})]}),e.jsxs("div",{className:"flex border-b border-border",children:[e.jsxs("button",{onClick:()=>m("ai"),className:V("flex-1 flex items-center justify-center gap-2 px-4 py-3 text-sm font-medium transition-colors cursor-pointer",i==="ai"?"text-primary border-b-2 border-primary bg-brand-50/50":"text-muted-foreground hover:text-foreground hover:bg-muted/50"),children:[e.jsx(se,{className:"w-4 h-4"}),"AI 智能创建"]}),e.jsxs("button",{onClick:()=>m("manual"),className:V("flex-1 flex items-center justify-center gap-2 px-4 py-3 text-sm font-medium transition-colors cursor-pointer",i==="manual"?"text-primary border-b-2 border-primary bg-brand-50/50":"text-muted-foreground hover:text-foreground hover:bg-muted/50"),children:[e.jsx(Ce,{className:"w-4 h-4"}),"手动配置"]})]}),i==="ai"&&e.jsxs("div",{className:"p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"用自然语言描述你的任务"}),e.jsx(H,{value:g,onChange:r=>T(r.target.value),rows:4,className:"resize-none",placeholder:`例如:每天早上 9 点帮我总结最新的科技新闻
|
|
13
|
+
每周一下午 2 点检查项目依赖是否有安全更新
|
|
14
|
+
每隔 2 小时检查一次服务器状态`}),e.jsx("p",{className:"mt-1.5 text-xs text-muted-foreground",children:"AI 会自动解析调度时间和任务内容,创建后在后台完成解析"})]}),A(),e.jsxs("div",{className:"flex items-center justify-end gap-3 pt-4 border-t border-border",children:[e.jsx(D,{type:"button",variant:"outline",onClick:n,children:"取消"}),e.jsx(D,{onClick:B,disabled:b||!g.trim(),children:b?e.jsxs(e.Fragment,{children:[e.jsx(ee,{className:"size-4 animate-spin"}),"创建中..."]}):e.jsxs(e.Fragment,{children:[e.jsx(se,{className:"size-4"}),"创建任务"]})})]})]}),i==="manual"&&e.jsxs("form",{onSubmit:x,className:"p-6 space-y-4",children:[c&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"执行方式"}),e.jsxs(M,{value:l.executionType,onValueChange:r=>p({...l,executionType:r}),children:[e.jsx(z,{className:"w-full",children:e.jsx(F,{})}),e.jsxs(O,{children:[e.jsx(k,{value:"agent",children:"Agent(AI 代理)"}),e.jsx(k,{value:"script",children:"脚本(Shell 命令)"})]})]}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:j?"直接执行 Shell 命令,零 API 消耗,适合确定性任务":"启动完整 Claude Agent,消耗 API tokens"})]}),c&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-foreground mb-2",children:"执行模式"}),e.jsxs(M,{value:l.executionMode,onValueChange:r=>p({...l,executionMode:r}),children:[e.jsx(z,{className:"w-full",children:e.jsx(F,{})}),e.jsxs(O,{children:[e.jsx(k,{value:"host",children:"宿主机"}),e.jsx(k,{value:"container",children:"Docker 容器"})]})]}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"宿主机模式直接在服务器上运行,Docker 容器模式在隔离环境中运行"})]}),j&&e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-foreground mb-2",children:["脚本命令 ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(H,{value:l.scriptCommand,onChange:r=>p({...l,scriptCommand:r.target.value}),rows:3,maxLength:4096,className:V("resize-none font-mono text-sm",h.scriptCommand&&"border-red-500"),placeholder:"例如: curl -s https://api.example.com/health | jq .status"}),h.scriptCommand&&e.jsx("p",{className:"mt-1 text-sm text-red-600 dark:text-red-400",children:h.scriptCommand}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"命令在群组工作目录下执行,最大 4096 字符"})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-foreground mb-2",children:[j?"任务描述":"任务 Prompt"," ",!j&&e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx(H,{value:l.prompt,onChange:r=>p({...l,prompt:r.target.value}),rows:j?2:4,className:V("resize-none",h.prompt&&"border-red-500"),placeholder:j?"可选的任务描述...":"输入任务的提示词..."}),h.prompt&&e.jsx("p",{className:"mt-1 text-sm text-red-600 dark:text-red-400",children:h.prompt})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-foreground mb-2",children:["调度类型 ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsxs(M,{value:l.scheduleType,onValueChange:r=>{w(""),C(""),p({...l,scheduleType:r,scheduleValue:""})},children:[e.jsx(z,{className:"w-full",children:e.jsx(F,{})}),e.jsxs(O,{children:[e.jsx(k,{value:"cron",children:"Cron 表达式"}),e.jsx(k,{value:"interval",children:"间隔执行"}),e.jsx(k,{value:"once",children:"单次执行"})]})]})]}),e.jsxs("div",{children:[e.jsxs("label",{className:"block text-sm font-medium text-foreground mb-2",children:["调度值 ",e.jsx("span",{className:"text-red-500",children:"*"})]}),l.scheduleType==="cron"&&e.jsxs(e.Fragment,{children:[e.jsx(Q,{type:"text",value:l.scheduleValue,onChange:r=>p({...l,scheduleValue:r.target.value}),className:V(h.scheduleValue&&"border-red-500"),placeholder:"例如: 0 9 * * * (每天 9 点)"}),e.jsxs("p",{className:"mt-1 text-xs text-muted-foreground",children:["格式: 分 时 日 月 星期(北京时间 UTC+8)。常用: ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"*/5 * * * *"})," 每5分钟, ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"0 9 * * 1-5"})," 工作日9点, ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"@daily"})," 每天"]})]}),l.scheduleType==="interval"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Q,{type:"number",min:"1",value:y,onChange:r=>w(r.target.value),className:V("flex-1",h.scheduleValue&&"border-red-500"),placeholder:"数值"}),e.jsxs(M,{value:o,onValueChange:f,children:[e.jsx(z,{className:"w-28",children:e.jsx(F,{})}),e.jsx(O,{children:P.map(r=>e.jsx(k,{value:String(r.ms),children:r.label},r.ms))})]})]}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"设置任务执行间隔"})]}),l.scheduleType==="once"&&e.jsxs(e.Fragment,{children:[e.jsx(Q,{type:"datetime-local",value:u,onChange:r=>C(r.target.value),className:V(h.scheduleValue&&"border-red-500")}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"选择任务的执行时间"})]}),h.scheduleValue&&e.jsx("p",{className:"mt-1 text-sm text-red-600 dark:text-red-400",children:h.scheduleValue})]}),A(),e.jsxs("div",{className:"flex items-center justify-end gap-3 pt-4 border-t border-border",children:[e.jsx(D,{type:"button",variant:"outline",onClick:n,children:"取消"}),e.jsxs(D,{type:"submit",disabled:S,children:[S&&e.jsx(ee,{className:"size-4 animate-spin"}),S?"创建中...":"创建任务"]})]})]})]})})}function Fe(){const{tasks:t,loading:n,error:c,loadTasks:i,createTask:m,updateTaskStatus:g,deleteTask:T,runTaskNow:b}=K(),{user:N}=be(),[l,p]=d.useState(!1),y=(N==null?void 0:N.role)==="admin";d.useEffect(()=>{i()},[i]);const w=t.some(a=>a.status==="parsing");d.useEffect(()=>{if(!w)return;const a=setInterval(i,3e3);return()=>clearInterval(a)},[w,i]);const o=async a=>{await m(a.prompt,a.scheduleType,a.scheduleValue,a.executionType,a.executionMode,a.scriptCommand,a.notifyChannels),p(!1)},f=async a=>{confirm("确定要暂停此任务吗?")&&await g(a,"paused")},u=async a=>{confirm("确定要恢复此任务吗?")&&await g(a,"active")},C=async a=>{confirm("确定要删除此任务吗?关联的工作区也会被删除,此操作不可撤销。")&&(await T(a),Ne.getState().loadGroups())},h=t.filter(a=>a.status==="active"),I=t.filter(a=>a.status==="paused"),S=t.filter(a=>a.status!=="active"&&a.status!=="paused");return e.jsxs("div",{className:"min-h-full bg-background",children:[e.jsxs("div",{className:"max-w-6xl mx-auto p-6",children:[e.jsx(je,{title:"定时任务管理",subtitle:`共 ${t.length} 个任务 · ${h.length} 运行中 · ${I.length} 已暂停`,className:"mb-6",actions:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(D,{variant:"outline",onClick:i,disabled:n,children:[e.jsx(le,{size:18,className:n?"animate-spin":""}),"刷新"]}),e.jsxs(D,{onClick:()=>p(!0),children:[e.jsx(te,{size:18}),"创建任务"]})]})}),c&&e.jsxs("div",{className:"mb-4 p-3 rounded-lg bg-error-bg border border-error/20 flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-error",children:c}),e.jsx("button",{onClick:()=>K.setState({error:null}),className:"p-1 text-error hover:text-error rounded transition-colors",children:e.jsx(Y,{size:16})})]}),n&&t.length===0?e.jsx(ve,{count:4}):t.length===0?e.jsx(ye,{icon:we,title:"还没有创建任何定时任务",action:e.jsxs(D,{onClick:()=>p(!0),children:[e.jsx(te,{size:18}),"创建第一个任务"]})}):e.jsxs("div",{className:"space-y-6",children:[h.length>0&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-semibold text-foreground mb-3",children:"运行中"}),e.jsx("div",{className:"space-y-3",children:h.map(a=>e.jsx(Z,{task:a,onPause:f,onResume:u,onDelete:C,onRunNow:b},a.id))})]}),I.length>0&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-semibold text-foreground mb-3",children:"已暂停"}),e.jsx("div",{className:"space-y-3",children:I.map(a=>e.jsx(Z,{task:a,onPause:f,onResume:u,onDelete:C,onRunNow:b},a.id))})]}),S.length>0&&e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-semibold text-foreground mb-3",children:"其他"}),e.jsx("div",{className:"space-y-3",children:S.map(a=>e.jsx(Z,{task:a,onPause:f,onResume:u,onDelete:C,onRunNow:b},a.id))})]})]})]}),l&&e.jsx(Le,{onSubmit:o,onClose:()=>{p(!1),i()},isAdmin:y})]})}export{Fe as TasksPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as E,o as N}from"./_baseUniq-zAOaCuKw.js";import{aw as g,ac as B,ax as F,ay as M,az as _,aA as l,aB as $,aC as y,aD as T,aE as S}from"./mermaid.core-BWLV1B2v.js";var z=/\s/;function C(n){for(var r=n.length;r--&&z.test(n.charAt(r)););return r}var G=/^\s+/;function H(n){return n&&n.slice(0,C(n)+1).replace(G,"")}var o=NaN,L=/^[-+]0x[0-9a-f]+$/i,R=/^0b[01]+$/i,q=/^0o[0-7]+$/i,D=parseInt;function K(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=H(n);var t=R.test(n);return t||q.test(n)?D(n.slice(2),t?2:8):L.test(n)?o:+n}var v=1/0,W=17976931348623157e292;function X(n){if(!n)return n===0?n:0;if(n=K(n),n===v||n===-v){var r=n<0?-1:1;return r*W}return n===n?n:0}function Y(n){var r=X(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,J=b.hasOwnProperty,dn=B(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&F(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=M(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||_(h,b[u])&&!J.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Q(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var U=Math.max;function Z(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:Y(t);return a<0&&(a=U(i+a,0)),p(n,m(r),a)}var hn=Q(Z);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=$(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,y,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=E(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:T(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=N(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,Y as j,un as l,gn as m,X as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{aN as S,aO as Rn,aB as T,aP as w,aA as sn,aQ as xn,aR as Cn,aS as Mn,aT as un,aU as x,ay as U,aV as mn,aW as on,aX as Fn,aY as E,aL as gn,aZ as R,aw as ln,a_ as Dn,a$ as D,b0 as Gn,b1 as Un,b2 as _,aE as Bn,b3 as Nn,az as Kn,b4 as X,b5 as jn,b6 as Hn,aD as Yn,aC as cn,aJ as Zn,b7 as M}from"./mermaid.core-BWLV1B2v.js";var qn="[object Symbol]";function B(n){return typeof n=="symbol"||S(n)&&Rn(n)==qn}function dn(n,r){for(var e=-1,t=n==null?0:n.length,a=Array(t);++e<t;)a[e]=r(n[e],e,n);return a}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function bn(n){if(typeof n=="string")return n;if(T(n))return dn(n,bn)+"";if(B(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var a=n.length,i=e+-1;++i<a;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,a=n.length;++t<a;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Cn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||B(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,ar=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,a,i){r.push(a?i.replace(ir,"$1"):t||e)}),r});function fr(n){return n==null?"":bn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:ar(fr(n))}function C(n){if(typeof n=="string"||B(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[C(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,a=n.length;++e<t;)n[a+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,a){var i=-1,f=n.length;for(e||(e=ur),a||(a=[]);++i<f;){var s=n[i];e(s)?K(a,s):t||(a[a.length]=s)}return a}function or(n,r,e,t){var a=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++a]);++a<i;)e=r(e,n[a],a,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,a=0,i=[];++e<t;){var f=n[e];r(f,e,n)&&(i[a++]=f)}return i}function hn(){return[]}var cr=Object.prototype,dr=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return dr.call(n,r)}))}:hn;function br(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Pr="[object Date]",Ir="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Cr="[object Symbol]",Mr="[object ArrayBuffer]",mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Br="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case Mr:return on(n);case Er:case Pr:return new t(+n);case mr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Br:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Ir:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Cr:return Sr(n)}}var Zr="[object Map]";function qr(n){return S(n)&&E(n)==Zr}var nn=R&&R.isMap,Xr=nn?gn(nn):qr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",ae="[object Map]",fe="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",de="[object DataView]",be="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[de]=g[re]=g[ee]=g[be]=g[pe]=g[Ae]=g[ye]=g[Te]=g[ae]=g[fe]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function m(n,r,e,t,a,i){var f,s=r&zr,u=r&Vr,d=r&kr;if(f!==void 0)return f;if(!ln(n))return n;var l=T(n);if(l){if(f=wr(n),!s)return Dn(n,f)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!a){if(f=u||c?{}:Un(n),!s)return u?Ar(n,lr(f,n)):br(n,gr(f,n))}else{if(!g[o])return a?n:{};f=Yr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,f),Wr(n)?n.forEach(function(b){f.add(m(b,r,e,b,n,i))}):Xr(n)&&n.forEach(function(b,p){f.set(p,m(b,r,e,p,n,i))});var A=d?u?yr:G:u?U:$,y=l?void 0:A(n);return pn(y||n,function(b,p){y&&(p=b,b=n[p]),Bn(f,p,m(b,r,e,p,n,i))}),f}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function P(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}P.prototype.add=P.prototype.push=Se;P.prototype.has=Ee;function Pe(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Ie=1,ve=2;function Pn(n,r,e,t,a,i){var f=e&Ie,s=n.length,u=r.length;if(s!=u&&!(f&&u>s))return!1;var d=i.get(n),l=i.get(r);if(d&&l)return d==r&&l==n;var o=-1,c=!0,h=e&ve?new P:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var b=f?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(b!==void 0){if(b)continue;c=!1;break}if(h){if(!Pe(r,function(p,O){if(!En(h,O)&&(A===p||a(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||a(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,a){e[++r]=[a,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Ce="[object Boolean]",Me="[object Date]",me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Be="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,a,i,f){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Ce:case Me:case De:return Kn(+n,+r);case me:return n.name==r.name&&n.message==r.message;case Ge:case Be:return n==r+"";case Fe:var s=Le;case Ue:var u=tℜif(s||(s=H),n.size!=r.size&&!u)return!1;var d=f.get(n);if(d)return d==r;t|=xe,f.set(n,r);var l=Pn(s(n),s(r),t,a,i,f);return f.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,Ze=Object.prototype,qe=Ze.hasOwnProperty;function Xe(n,r,e,t,a,i){var f=e&Ye,s=G(n),u=s.length,d=G(r),l=d.length;if(u!=l&&!f)return!1;for(var o=u;o--;){var c=s[o];if(!(f?c in r:qe.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var b=f;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var q=f?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(q===void 0?p===O||a(p,O,e,t,i):q)){y=!1;break}b||(b=c=="constructor")}if(y&&!b){var I=n.constructor,v=r.constructor;I!=v&&"constructor"in n&&"constructor"in r&&!(typeof I=="function"&&I instanceof I&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",an="[object Array]",L="[object Object]",Qe=Object.prototype,fn=Qe.hasOwnProperty;function We(n,r,e,t,a,i){var f=T(n),s=T(r),u=f?an:E(n),d=s?an:E(r);u=u==tn?L:u,d=d==tn?L:d;var l=u==L,o=d==L,c=u==d;if(c&&D(n)){if(!D(r))return!1;f=!0,l=!1}if(c&&!l)return i||(i=new _),f||jn(n)?Pn(n,r,e,t,a,i):He(n,r,u,e,t,a,i);if(!(e&Je)){var h=l&&fn.call(n,"__wrapped__"),A=o&&fn.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,b=A?r.value():r;return i||(i=new _),a(y,b,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,a,i)):!1}function Y(n,r,e,t,a){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,a)}var ze=1,Ve=2;function ke(n,r,e,t){var a=e.length,i=a;if(n==null)return!i;for(n=Object(n);a--;){var f=e[a];if(f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++a<i;){f=e[a];var s=f[0],u=n[s],d=f[1];if(f[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?Y(d,u,ze|Ve,t,l):o))return!1}}return!0}function In(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],a=n[t];r[e]=[t,a,In(a)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,a=r.length,i=!1;++t<a;){var f=C(r[t]);if(!(i=n!=null&&e(n,f)))break;n=n[f]}return i||++t!=a?i:(a=n==null?0:n.length,!!a&&Hn(a)&&Yn(f,a)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var at=1,ft=2;function st(n,r){return N(n)&&In(r)?vn(C(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,at|ft)}}function ut(n){return function(r){return r==null?void 0:r[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(C(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Zn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var a=e.length,i=-1,f=Object(e);++i<a&&t(f[i],i,f)!==!1;);return e}}var Z=ct(lt);function dt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Z;return e(n,dt(r))}function bt(n,r){var e=[];return Z(n,function(t,a,i){r(t,a,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:bt;return e(n,Ln(r))}function pt(n,r){return dn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,a){return a(n,function(i,f,s){e=t?(t=!1,i):r(e,i,f,s)}),e}function Pt(n,r,e){var t=T(n)?or:At,a=arguments.length<3;return t(n,Ln(r),e,a,Z)}var yt=1/0,Tt=M&&1/H(new M([,-0]))[1]==yt?function(n){return new M(n)}:Xn,ht=200;function It(n,r,e){var t=-1,a=Vn,i=n.length,f=!0,s=[],u=s;if(i>=ht){var d=r?null:Tt(n);if(d)return H(d);f=!1,a=En,u=new P}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,f&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else a(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,bt as B,Pe as C,Xn as D,P as S,It as a,m as b,Ot as c,$t as d,B as e,_t as f,Ln as g,Jn as h,Et as i,Z as j,$ as k,dn as l,tt as m,An as n,yn as o,dt as p,lt as q,Pt as r,it as s,C as t,fr as u,St as v,Vn as w,En as x,zn as y,yr as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{w as ln,p as an,a as G,s as j,b as z,h as un,e as g,t as tn,d as K,m as _,f as rn,g as o,i as on,j as sn,k as fn}from"./step-D51IIHGA.js";function cn(l){return l.innerRadius}function gn(l){return l.outerRadius}function yn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,E,q,v,A,B,a){var I=E-l,i=q-h,n=B-v,d=a-A,u=d*I-n*i;if(!(u*u<g))return u=(n*(h-A)-d*(l-v))/u,[l+u*I,h+u*i]}function V(l,h,E,q,v,A,B){var a=l-E,I=h-q,i=(B?A:-A)/K(a*a+I*I),n=i*I,d=-i*a,u=l+n,s=h+d,f=E+n,c=q+d,C=(u+f)/2,t=(s+c)/2,m=f-u,y=c-s,R=m*m+y*y,T=v-A,P=u*c-f*s,O=(y<0?-1:1)*K(on(0,T*T*R-P*P)),S=(P*y-m*O)/R,k=(-P*m-y*O)/R,w=(P*y+m*O)/R,p=(-P*m+y*O)/R,x=S-C,e=k-t,r=w-C,F=p-t;return x*x+e*e>r*r+F*F&&(S=w,k=p),{cx:S,cy:k,x01:-n,y01:-d,x11:S*(v/T-1),y11:k*(v/T-1)}}function hn(){var l=cn,h=gn,E=z(0),q=null,v=yn,A=dn,B=mn,a=null,I=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,C=rn(c-f),t=c>f;if(a||(a=n=I()),s<u&&(d=s,s=u,u=d),!(s>g))a.moveTo(0,0);else if(C>tn-g)a.moveTo(s*G(f),s*j(f)),a.arc(0,0,s,f,c,!t),u>g&&(a.moveTo(u*G(c),u*j(c)),a.arc(0,0,u,c,f,t));else{var m=f,y=c,R=f,T=c,P=C,O=C,S=B.apply(this,arguments)/2,k=S>g&&(q?+q.apply(this,arguments):K(u*u+s*s)),w=_(rn(s-u)/2,+E.apply(this,arguments)),p=w,x=w,e,r;if(k>g){var F=sn(k/u*j(S)),L=sn(k/s*j(S));(P-=F*2)>g?(F*=t?1:-1,R+=F,T-=F):(P=0,R=T=(f+c)/2),(O-=L*2)>g?(L*=t?1:-1,m+=L,y-=L):(O=0,m=y=(f+c)/2)}var H=s*G(m),J=s*j(m),M=u*G(T),N=u*j(T);if(w>g){var Q=s*G(y),U=s*j(y),W=u*G(R),X=u*j(R),D;if(C<an)if(D=pn(H,J,W,X,Q,U,M,N)){var Y=H-D[0],Z=J-D[1],$=Q-D[0],b=U-D[1],nn=1/j(fn((Y*$+Z*b)/(K(Y*Y+Z*Z)*K($*$+b*b)))/2),en=K(D[0]*D[0]+D[1]*D[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}O>g?x>g?(e=V(W,X,H,J,s,x,t),r=V(Q,U,M,N,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(H,J),a.arc(0,0,s,m,y,!t)):a.moveTo(H,J),!(u>g)||!(P>g)?a.lineTo(M,N):p>g?(e=V(M,N,Q,U,u,-p,t),r=V(H,J,W,X,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[G(d)*n,j(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:z(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:z(+n),i):h},i.cornerRadius=function(n){return arguments.length?(E=typeof n=="function"?n:z(+n),i):E},i.padRadius=function(n){return arguments.length?(q=n==null?null:typeof n=="function"?n:z(+n),i):q},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:z(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:z(+n),i):A},i.padAngle=function(n){return arguments.length?(B=typeof n=="function"?n:z(+n),i):B},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|