aitu-app 0.6.76 → 0.6.78
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/README.md +3 -3
- package/assets/CanvasAudioPlayer-DutgwdiU.js +2 -0
- package/assets/ChatDrawer-E6Fog16I.js +11 -0
- package/assets/{ChatMessagesArea-CZkiRzmW.js → ChatMessagesArea-Bgwiz_XP.js} +3 -3
- package/assets/DeferredAIInputBar-CPkD8Cv9.js +8 -0
- package/assets/DeferredAIInputBar-szBPHiNW.css +1 -0
- package/assets/DrawnixDeferredFeatures-Cul76-88.js +2 -0
- package/assets/{KnowledgeBaseContent-Dan2DUqY.js → KnowledgeBaseContent-DcX5Jofx.js} +6 -6
- package/assets/{MVCreator-Dzjl2fXA.js → MVCreator-DllHozYg.js} +8 -8
- package/assets/{ModelBenchmarkWorkbench-oy2wue1u.js → ModelBenchmarkWorkbench-Dv9SNYTi.js} +2 -2
- package/assets/MusicAnalyzer-CHcQ5t4P.js +1 -0
- package/assets/{MusicAnalyzer-BO44f-db.js → MusicAnalyzer-DDeT6g3c.js} +2 -2
- package/assets/ResizableDivider-CaG9JQbJ.js +1 -0
- package/assets/TaskQueuePanel-BNhNzGp5.js +1 -0
- package/assets/{VideoAnalyzer-iiJpoWb6.js → VideoAnalyzer-BSLz1FaI.js} +2 -2
- package/assets/ai-generation-preferences-service-BF7QkuJp.js +1 -0
- package/assets/arc-BU2KKCa_.js +1 -0
- package/assets/arc-DmGoDCEL.js +1 -0
- package/assets/{batch-image-generation-B2R0hJW_.js → batch-image-generation-Bg68r_Ql.js} +5 -5
- package/assets/{blockDiagram-38ab4fdb-BmWPnNuS.js → blockDiagram-38ab4fdb-BCGEnMME.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-trArAOFP.js → blockDiagram-38ab4fdb-CsZR5uC5.js} +1 -1
- package/assets/board-utils-CpAtoKn2.js +1 -0
- package/assets/{browser-Dya3c6_X.js → browser-DpICcNby.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-Cvj3RMOv.js → c4Diagram-3d4e48cf-9fuiuFdV.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-CqJrO4Za.js → c4Diagram-3d4e48cf-WM4wd_GR.js} +1 -1
- package/assets/{canvas-insertion-Dq3gR9Nw.js → canvas-insertion-CdUQF7IV.js} +3 -3
- package/assets/channel-CZjE-WNp.js +1 -0
- package/assets/channel-SXZD6bG3.js +1 -0
- package/assets/classDiagram-70f12bd4-CBVHTwQu.js +2 -0
- package/assets/{classDiagram-70f12bd4-DvrRZ41d.js → classDiagram-70f12bd4-DcYDedz1.js} +2 -2
- package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +2 -0
- package/assets/classDiagram-v2-f2320105-jpCwaHEd.js +2 -0
- package/assets/{clipper-B4i11tN1.js → clipper-jvd5rF5a.js} +1 -1
- package/assets/clone-C4mvvMDb.js +1 -0
- package/assets/{createText-2e5e7dd3-D7dXlVes.js → createText-2e5e7dd3-CkXS3l7I.js} +2 -2
- package/assets/{createText-2e5e7dd3-B8gnT5hD.js → createText-2e5e7dd3-x5lOIwut.js} +1 -1
- package/assets/edges-e0da2a9e-CbrF4nbD.js +4 -0
- package/assets/{edges-e0da2a9e-CyRAzEMi.js → edges-e0da2a9e-Ch6PBwWs.js} +2 -2
- package/assets/{erDiagram-9861fffd-D8yYsjoN.js → erDiagram-9861fffd-Bq07elcI.js} +3 -3
- package/assets/{erDiagram-9861fffd-BHbAa_Ka.js → erDiagram-9861fffd-DSlNVuAZ.js} +4 -4
- package/assets/{flowDb-956e92f1-DAqb8wjP.js → flowDb-956e92f1-BqPCJlZp.js} +3 -3
- package/assets/{flowDb-956e92f1-f30uG4pp.js → flowDb-956e92f1-Ti5YC4Vv.js} +3 -3
- package/assets/{flowDiagram-66a62f08-C4Gz9mOM.js → flowDiagram-66a62f08-CPDuG3rY.js} +3 -3
- package/assets/{flowDiagram-66a62f08-CBXypoEi.js → flowDiagram-66a62f08-D3GSABFi.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-CSm5diF6.js → flowchart-elk-definition-4a651766-BH09NeLA.js} +1 -1
- package/assets/{flowchart-elk-definition-4a651766-BHB7pRxm.js → flowchart-elk-definition-4a651766-BLaLPCDV.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-CU9a9DsJ.js → ganttDiagram-c361ad54-DL9ZeaEc.js} +4 -4
- package/assets/ganttDiagram-c361ad54-Sp9M1KHP.js +257 -0
- package/assets/{gitGraphDiagram-72cf32ee-B2zj8Xnu.js → gitGraphDiagram-72cf32ee-BSf1fsDV.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BWOgrFeh.js → gitGraphDiagram-72cf32ee-BWwmRKo-.js} +1 -1
- package/assets/{graph-Bnmq4jgf.js → graph--nPw8zXQ.js} +1 -1
- package/assets/graph-g-2U7grQ.js +1 -0
- package/assets/{index-3862675e-CQLKy6RO.js → index-3862675e-BXwbZ2pz.js} +1 -1
- package/assets/{index-3862675e-BSxxidV_.js → index-3862675e-D6Zy95zZ.js} +1 -1
- package/assets/index-3eqA7Bag.js +1 -0
- package/assets/{index-D1ORCZqJ.js → index-7Q-aiwln.js} +2 -2
- package/assets/index-B2dttXd7.js +1 -0
- package/assets/index-B7V7-Vxz.js +1 -0
- package/assets/index-BHPTfCZM.js +1 -0
- package/assets/{index-vvV37Q1S.js → index-BP77pG9S.js} +4 -4
- package/assets/index-BPR_DyGD.js +1 -0
- package/assets/index-BWrcsh8u.js +1 -0
- package/assets/{index-D4qm_1m5.js → index-BXzGHPXz.js} +1 -1
- package/assets/index-BaCHOxhI.js +1 -0
- package/assets/{index-BoglETHF.js → index-Bq8mPedC.js} +2 -2
- package/assets/index-BqHZCcen.js +2 -0
- package/assets/index-Bti3m-iW.js +1 -0
- package/assets/{index-sPNG1_UN.js → index-BwSnJN93.js} +5 -5
- package/assets/{index-D5qxbeGT.js → index-C3qD42ws.js} +1 -1
- package/assets/{index-VzDb_AHs.js → index-C5eu4uSl.js} +5 -5
- package/assets/index-CLJUfzvO.js +1 -0
- package/assets/index-CfgvFFx3.js +271 -0
- package/assets/index-CmyOpFTN.js +1 -0
- package/assets/index-D4pIkh3S.js +1 -0
- package/assets/index-D7b5fX1d.js +1 -0
- package/assets/index-DH12_HTj.js +13 -0
- package/assets/index-DI0OV6F8.js +7 -0
- package/assets/index-DIiIUyb-.js +1 -0
- package/assets/index-DcZrElEK.js +2 -0
- package/assets/index-DllL1sx1.js +1 -0
- package/assets/index-DqMndQiP.js +1 -0
- package/assets/index-Dz8sghkK.js +1 -0
- package/assets/index-QkP3EC02.js +1 -0
- package/assets/index-TkfyNewx.js +1 -0
- package/assets/index-ZrVeQUWo.js +1 -0
- package/assets/index-eZfwJ9bV.js +3 -0
- package/assets/{index-VarwiJlL.js → index-gQ7LgvSv.js} +1 -1
- package/assets/{infoDiagram-f8f76790-d-BYTW2w.js → infoDiagram-f8f76790-DpFqCCNv.js} +3 -3
- package/assets/{infoDiagram-f8f76790-BMsVq8O_.js → infoDiagram-f8f76790-G2JpJJP7.js} +3 -3
- package/assets/{journeyDiagram-49397b02-DCtCkoaC.js → journeyDiagram-49397b02-BdESGMrv.js} +1 -1
- package/assets/{journeyDiagram-49397b02-CBqb8-ml.js → journeyDiagram-49397b02-DLLTobRM.js} +1 -1
- package/assets/{layout-DKqEkE_W.js → layout-CVkuImk4.js} +1 -1
- package/assets/layout-WSR0vNPO.js +1 -0
- package/assets/line-D3bnG227.js +1 -0
- package/assets/line-DQuMJveY.js +1 -0
- package/assets/{linear-C6OQYT56.js → linear-CciP-97N.js} +1 -1
- package/assets/linear-Z6vFvuwc.js +1 -0
- package/assets/{main-i0s2IJTn.css → main-8DNjLY6L.css} +1 -1
- package/assets/main-BFEkxCOK.js +56 -0
- package/assets/{mermaid.core-CI-VJEiw.js → mermaid.core-CwZQb0ud.js} +5 -5
- package/assets/{mindmap-definition-fc14e90a-k_RSypuP.js → mindmap-definition-fc14e90a-BnJ8OOTI.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-DrtlQLES.js → mindmap-definition-fc14e90a-CxQMydCW.js} +1 -1
- package/assets/model-benchmark-launcher-Ct3lYXVq.js +1 -0
- package/assets/photo-wall-splitter-BZ88W5Zy.js +1 -0
- package/assets/{pieDiagram-8a3498a8-CdknGxKY.js → pieDiagram-8a3498a8-BSDdkTeu.js} +5 -5
- package/assets/{pieDiagram-8a3498a8-Bpr5V3o5.js → pieDiagram-8a3498a8-D6VtAoja.js} +4 -4
- package/assets/ppt-generation-FzjP_rp0.js +48 -0
- package/assets/{quadrantDiagram-120e2f19-Dx3qoKDx.js → quadrantDiagram-120e2f19-BbFV0VXY.js} +3 -3
- package/assets/{quadrantDiagram-120e2f19-pVIXp9i6.js → quadrantDiagram-120e2f19-C8k2xuBd.js} +3 -3
- package/assets/{requirementDiagram-deff3bca-hM4oekUG.js → requirementDiagram-deff3bca-C3xMdzJV.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-DD6NY75P.js → requirementDiagram-deff3bca-CpjqKjYZ.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-BsvEG71N.js → sankeyDiagram-04a897e0-BBJJgsFv.js} +5 -5
- package/assets/{sankeyDiagram-04a897e0-C9uf1jU5.js → sankeyDiagram-04a897e0-Bjvig9bW.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-CNEBmz1G.js → sequenceDiagram-704730f1-DX1MmBN_.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-Bpg54z74.js → sequenceDiagram-704730f1-PFC_9IFI.js} +4 -4
- package/assets/settings-dialog-CQM4v791.js +1 -0
- package/assets/{skill-dsl-parser-DS3VOBFI.js → skill-dsl-parser-syNWYxFu.js} +10 -10
- package/assets/{stateDiagram-587899a1-BN2ZP-3x.js → stateDiagram-587899a1-Dc3mI_B_.js} +1 -1
- package/assets/stateDiagram-587899a1-SFMUVAam.js +1 -0
- package/assets/{stateDiagram-v2-d93cdb3a-BtV1Ziy9.js → stateDiagram-v2-d93cdb3a-DmnBjHpC.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-BLwIM8s1.js → stateDiagram-v2-d93cdb3a-P4Yt2p_j.js} +1 -1
- package/assets/{styles-6aaf32cf-aFVlX_lA.js → styles-6aaf32cf-C3jnr3hV.js} +1 -1
- package/assets/{styles-6aaf32cf-CGp3i5qu.js → styles-6aaf32cf-b6AdP7fu.js} +1 -1
- package/assets/{styles-9a916d00-BK7pejCH.js → styles-9a916d00-BUiD9iBe.js} +4 -4
- package/assets/{styles-9a916d00-CSwFWVnr.js → styles-9a916d00-ii0XTdIm.js} +1 -1
- package/assets/styles-c10674c1-Bt89Yy8Q.js +116 -0
- package/assets/styles-c10674c1-DbTSpy3W.js +116 -0
- package/assets/{svgDrawCommon-08f97a94-Cr4rWU-W.js → svgDrawCommon-08f97a94-BK6lD4D6.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-DypvMDvH.js → svgDrawCommon-08f97a94-D4gIV05W.js} +1 -1
- package/assets/{timeline-definition-85554ec2-D3-lXEL5.js → timeline-definition-85554ec2-Bl2y548G.js} +1 -1
- package/assets/{timeline-definition-85554ec2-DIwHE15c.js → timeline-definition-85554ec2-CWKg_JxG.js} +3 -3
- package/assets/{tool-windows-B-a9r3G3.css → tool-windows-CUNbW1Tz.css} +1 -1
- package/assets/tool-windows-DOIu9TAD.js +2975 -0
- package/assets/ttd-dialog-DI4kQSg8.js +99 -0
- package/assets/{useCharacters-DsZ779l-.js → useCharacters-Chv4Ky7x.js} +3 -3
- package/assets/useWorkflowSubmission-BizuDmuw.js +70 -0
- package/assets/video-analyze-6v3Y-rUE.js +1 -0
- package/assets/{video-generation-C7qCz-ZF.js → video-generation-DnmTlWnm.js} +2 -2
- package/assets/video-recovery-service-BeRoh0s2.js +1 -0
- package/assets/workflow-generation-utils-me381Cax.js +3 -0
- package/assets/workflow-submission-service-YOpo7g37.js +4 -0
- package/assets/{xychartDiagram-e933f94c-B17Evxfw.js → xychartDiagram-e933f94c-CJX9_9WF.js} +4 -4
- package/assets/{xychartDiagram-e933f94c-Dln5PJtU.js → xychartDiagram-e933f94c-Cep8CQEH.js} +3 -3
- package/changelog.json +50 -0
- package/idle-prefetch-manifest.json +300 -316
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/precache-manifest.json +8 -8
- package/sw.js +5 -5
- package/version.json +19 -3
- package/assets/CanvasAudioPlayer-DwM6PU4W.js +0 -2
- package/assets/ChatDrawer-BQTaa6r6.js +0 -11
- package/assets/DeferredAIInputBar-BmPgFhXr.css +0 -1
- package/assets/DeferredAIInputBar-ObyfJQ0O.js +0 -7
- package/assets/DrawnixDeferredFeatures-CFHVLxc5.js +0 -2
- package/assets/ModelDropdown-CQTTHEI7.css +0 -1
- package/assets/ModelDropdown-DjvIvi8O.js +0 -1
- package/assets/MusicAnalyzer-BU5l2wPR.js +0 -1
- package/assets/ResizableDivider-CBgTphcS.js +0 -1
- package/assets/TaskQueuePanel-CTDuSScf.js +0 -1
- package/assets/ai-generation-preferences-service-CqwXb9Cs.js +0 -5
- package/assets/arc-BBE0LXa1.js +0 -1
- package/assets/arc-h476db6P.js +0 -1
- package/assets/channel-DMTz1UNN.js +0 -1
- package/assets/channel-DQOY3XLe.js +0 -1
- package/assets/classDiagram-70f12bd4-5ACx619h.js +0 -2
- package/assets/classDiagram-v2-f2320105-4zQ4jrwi.js +0 -2
- package/assets/classDiagram-v2-f2320105-CB4rof84.js +0 -2
- package/assets/clone-fuaXEdc-.js +0 -1
- package/assets/edges-e0da2a9e-DZalSm7f.js +0 -4
- package/assets/flowDiagram-v2-96b9c2cf-C-DFFh54.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-CWjydvHB.js +0 -1
- package/assets/ganttDiagram-c361ad54-DDnbMkWm.js +0 -257
- package/assets/graph-BsYIlc-B.js +0 -1
- package/assets/index-B10kMZoq.js +0 -1
- package/assets/index-B2_XRj3U.js +0 -1
- package/assets/index-B4lLv-Sz.js +0 -1
- package/assets/index-BFZNUUCR.js +0 -1
- package/assets/index-BTSYG2Vy.js +0 -1
- package/assets/index-BY5Kvjqg.js +0 -1
- package/assets/index-Blf7J5yW.js +0 -1
- package/assets/index-BoQA7VaE.js +0 -3
- package/assets/index-BzqQ69oU.js +0 -1
- package/assets/index-CD2D1BYc.js +0 -2
- package/assets/index-CLRs5cWt.js +0 -1
- package/assets/index-CLU4LJjR.js +0 -1
- package/assets/index-CPDfMZkS.js +0 -1
- package/assets/index-CPfhqyDz.js +0 -316
- package/assets/index-CU4ySaQE.js +0 -1
- package/assets/index-CsCwwmYY.js +0 -1
- package/assets/index-Cyz_w8KS.js +0 -7
- package/assets/index-D489cJtb.js +0 -1
- package/assets/index-D6DebbcI.js +0 -1
- package/assets/index-DDtPG6Km.js +0 -1
- package/assets/index-DKhTnUBU.js +0 -1
- package/assets/index-DMIwLDS8.js +0 -13
- package/assets/index-DgsUJgRJ.js +0 -1
- package/assets/index-oT8mbA3U.js +0 -2
- package/assets/layout-B1ePJO5V.js +0 -1
- package/assets/line-C_jmJ6v1.js +0 -1
- package/assets/line-DfhCgsyz.js +0 -1
- package/assets/linear-ChY5Iu43.js +0 -1
- package/assets/main-LCg1nQGB.js +0 -69
- package/assets/model-benchmark-launcher-B2MsZXmV.js +0 -1
- package/assets/model-benchmark-service-CkIRp-Sq.js +0 -1
- package/assets/model-selection-BvdXmVGX.js +0 -1
- package/assets/photo-wall-splitter-CVrfkWnh.js +0 -1
- package/assets/prompt-optimize-dialog-DLdL2_a1.css +0 -1
- package/assets/settings-dialog-CAhU3cfG.js +0 -1
- package/assets/stateDiagram-587899a1-CMylUAYu.js +0 -1
- package/assets/styles-c10674c1-KfJINP7I.js +0 -116
- package/assets/styles-c10674c1-cccyjRUz.js +0 -116
- package/assets/tool-windows-CtLXQDGF.js +0 -2847
- package/assets/ttd-dialog-BRg3XE5k.js +0 -99
- package/assets/use-runtime-models-BH9r4Yc1.js +0 -1
- package/assets/use-runtime-models-BgWWl4Ng.css +0 -1
- package/assets/useWorkflowSubmission-BeJQ3BuO.js +0 -70
- package/assets/video-analyze-aDVIfgUi.js +0 -1
- package/assets/video-recovery-service-Dy0xiPr8.js +0 -1
- package/assets/workflow-generation-utils-CpMilOwA.js +0 -3
- package/assets/workflow-submission-service-CmBBMIis.js +0 -4
package/assets/index-CPfhqyDz.js
DELETED
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-B-a9r3G3.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as L,y,k$ as Se,l0 as te,bX as be,da as ke,bW as Ce,dp as Pe,l1 as ie,h2 as A,l2 as oe,l3 as _e,l4 as Ee,he as j,hg as Me,iE as Ae,hy as Ne,l5 as De,l6 as Ve,l7 as Le,W as Re,gf as X,hV as Ue,P as Z,G as je,bE as q,aP as ae,_ as ce,l8 as qe,h7 as N,l9 as de,h0 as E,hb as Fe,h6 as Ge,la as $e,c$ as Oe,aH as le,lb as ze,h8 as ue,lc as $,ld as Be,le as We,lf as He,bI as Xe,ai as me,lg as Y,gi as re,lh as Ye,li as Qe,lj as Ke,lk as Je,l as Ze,ll as ne,lm as O,ln as Q,lo as et,lp as tt,lq as rt,lr as nt,ls as st,lt as it,lu as ot,hL as at,lv as ct}from"./tool-windows-CtLXQDGF.js";import{videoGenerationTool as dt}from"./video-generation-C7qCz-ZF.js";import{getCanvasBoard as lt,canvasInsertionTool as ut}from"./canvas-insertion-Dq3gR9Nw.js";import{v as mt}from"./video-analyze-aDVIfgUi.js";const jr=({items:t,language:e="zh",enableHoverPreview:r=!0,className:n,onRemove:i,removableStartIndex:s=0})=>{const[a,o]=L.useState(null),c=L.useCallback((u,m)=>{if(!r)return;const l=m.currentTarget.getBoundingClientRect(),g=l.left+l.width/2,x=l.top-10;o({type:u.type,url:u.url,text:u.text,x:g,y:x})},[r]),d=L.useCallback(()=>{o(null)},[]);return t.length===0?null:y.jsxDEV(y.Fragment,{children:[r&&a&&Se.createPortal(y.jsxDEV("div",{className:`selected-content-preview__hover selected-content-preview__hover--${a.type}`,style:{left:`${a.x}px`,top:`${a.y}px`,transform:"translate(-50%, -100%)"},children:[(a.type==="image"||a.type==="graphics")&&a.url&&y.jsxDEV("img",{src:a.url,alt:"Preview"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:86,columnNumber:13},void 0),a.type==="video"&&a.url&&y.jsxDEV("div",{className:"selected-content-preview__hover-video",children:y.jsxDEV("video",{src:a.url,controls:!0,autoPlay:!0,muted:!0,loop:!0,playsInline:!0},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:92,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:91,columnNumber:13},void 0),a.type==="text"&&a.text&&y.jsxDEV("div",{className:"selected-content-preview__hover-text",children:[y.jsxDEV("div",{className:"selected-content-preview__hover-text-header",children:[y.jsxDEV(te,{size:16},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:107,columnNumber:17},void 0),y.jsxDEV("span",{children:e==="zh"?"文字内容":"Text Content"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:108,columnNumber:17},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:106,columnNumber:15},void 0),y.jsxDEV("div",{className:"selected-content-preview__hover-text-content",children:a.text},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:110,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:105,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:76,columnNumber:9},void 0),document.body),y.jsxDEV("div",{className:`selected-content-preview ${n||""}`,children:t.map((u,m)=>{const l=i&&m<s;return y.jsxDEV("div",{className:`selected-content-preview__item selected-content-preview__item--${u.type}`,onMouseEnter:g=>c(u,g),onMouseLeave:d,children:[u.type==="text"?y.jsxDEV("div",{className:"selected-content-preview__text",children:[y.jsxDEV(te,{size:14,className:"selected-content-preview__text-icon"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:136,columnNumber:19},void 0),y.jsxDEV("span",{className:"selected-content-preview__text-content",children:u.text&&u.text.length>20?`${u.text.substring(0,20)}...`:u.text},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:137,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:135,columnNumber:17},void 0):u.type==="video"?y.jsxDEV(y.Fragment,{children:[y.jsxDEV("div",{className:"selected-content-preview__video-placeholder",children:y.jsxDEV(be,{size:20},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:147,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:146,columnNumber:19},void 0),y.jsxDEV("div",{className:"selected-content-preview__video-overlay",children:y.jsxDEV(ke,{size:16,fill:"white"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:150,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:149,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:145,columnNumber:17},void 0):y.jsxDEV("img",{src:u.url,alt:u.name},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:155,columnNumber:17},void 0),u.type==="graphics"&&y.jsxDEV("span",{className:"selected-content-preview__label",children:e==="zh"?"图形":"Graphics"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:160,columnNumber:17},void 0),u.type==="video"&&y.jsxDEV("span",{className:"selected-content-preview__label selected-content-preview__label--video",children:e==="zh"?"视频":"Video"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:167,columnNumber:17},void 0),l&&y.jsxDEV("button",{className:"selected-content-preview__remove-btn",onClick:g=>{g.stopPropagation(),i(m)},onMouseDown:g=>g.preventDefault(),title:e==="zh"?"移除":"Remove",children:y.jsxDEV(Ce,{size:12},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:183,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:174,columnNumber:17},void 0)]},`${u.type}-${m}`,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:126,columnNumber:13},void 0)})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:120,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/shared/SelectedContentPreview.tsx",lineNumber:73,columnNumber:5},void 0)};function V(t){return t.tagName==="TEXTAREA"||t.tagName==="INPUT"}function pt(t){const e=t.selectionStart||0,r=t.selectionEnd||0;return t.value.substring(e,r)}function pe(t){const e=window.getSelection();if(!e||e.rangeCount===0)return"";const r=e.getRangeAt(0);return t.contains(r.commonAncestorContainer)?e.toString():""}function W(t){return V(t)?pt(t):pe(t)}function qr(t,e={}){const{enableCopy:r=!0,stopPropagation:n=!0}=e,i=L.useRef(null);return L.useEffect(()=>{const s=t.current;if(!s)return;const a=p=>!p||!(p instanceof HTMLElement)?!1:!!(["BUTTON","A","INPUT","SELECT","TEXTAREA","LABEL"].includes(p.tagName)||p.onclick||p.getAttribute("role")==="button"||p.closest('button, a, [role="button"], [onclick]')),o=()=>{const p=window.getSelection();return p!==null&&p.toString().length>0},c=p=>{n&&(a(p.target)||o()&&p.stopPropagation())},d=p=>{n&&(a(p.target)||p.stopPropagation())},u=p=>{const h=(p.ctrlKey||p.metaKey)&&p.key==="c",I=(p.ctrlKey||p.metaKey)&&p.key==="x";if(r&&(h||I)){const T=W(s);T&&Pe(T).then(()=>{}).catch(w=>{console.error("Failed to copy text:",w)}),n&&p.stopPropagation()}},m=p=>{if(r){const h=W(s);h&&p.clipboardData&&(p.clipboardData.setData("text/plain",h),p.preventDefault())}n&&p.stopPropagation()},l=p=>{if(r){const h=W(s);h&&p.clipboardData&&p.clipboardData.setData("text/plain",h)}n&&p.stopPropagation()},g=()=>{if(V(s)){const p=s.selectionStart||0,h=s.selectionEnd||0;p!==h&&(i.current={text:s.value.substring(p,h),start:p,end:h})}else{const p=pe(s);p&&(i.current={text:p})}},x=()=>{V(s)||g()};return s.addEventListener("pointerdown",d),s.addEventListener("mousedown",d),s.addEventListener("pointerup",c),s.addEventListener("pointermove",c),s.addEventListener("mouseup",c),s.addEventListener("click",c),s.addEventListener("keydown",u),s.addEventListener("copy",m),s.addEventListener("cut",l),V(s)?s.addEventListener("select",g):document.addEventListener("selectionchange",x),()=>{s.removeEventListener("pointerdown",d),s.removeEventListener("mousedown",d),s.removeEventListener("pointerup",c),s.removeEventListener("pointermove",c),s.removeEventListener("mouseup",c),s.removeEventListener("click",c),s.removeEventListener("keydown",u),s.removeEventListener("copy",m),s.removeEventListener("cut",l),V(s)?s.removeEventListener("select",g):document.removeEventListener("selectionchange",x)}},[t,r,n]),{lastSelection:i.current}}function K(){const t=j.get();return(t==null?void 0:t.audioModelName)||Me()}async function ht(t){const e=oe(t.prompt);if(e)return e;try{const r=await _e.generateAudioWithPolling({model:t.model||K(),modelRef:t.modelRef||null,prompt:t.prompt,sunoAction:t.sunoAction,notifyHook:t.notifyHook,title:t.title,tags:t.tags,mv:t.mv,continueClipId:t.continueClipId,continueTaskId:t.continueTaskId,continueAt:t.continueAt,infillStartS:t.infillStartS,infillEndS:t.infillEndS,params:{...t.params||{},...t.continueSource?{continueSource:t.continueSource}:{}}}),n=Ee(r);return{success:!0,data:{url:n.url,urls:n.urls,resultKind:n.resultKind,title:n.title,lyricsText:n.lyricsText,lyricsTitle:n.lyricsTitle,lyricsTags:n.lyricsTags,duration:n.duration,imageUrl:n.imageUrl,format:n.format||(n.resultKind==="lyrics"?"lyrics":"mp3"),providerTaskId:n.providerTaskId,primaryClipId:n.primaryClipId,clipIds:n.clipIds,clips:n.clips},type:"audio"}}catch(r){return{success:!1,error:r.message||"音频生成失败",type:"error"}}}function gt(t){return{taskType:A.AUDIO,resultType:"audio",getDefaultModel:K,maxCount:1,buildTaskPayload:()=>({prompt:t.prompt,model:t.model||K(),modelRef:t.modelRef||null,sunoAction:t.sunoAction,notifyHook:t.notifyHook,title:t.title,tags:t.tags,mv:t.mv,continueClipId:t.continueClipId,continueTaskId:t.continueTaskId,continueAt:t.continueAt,infillStartS:t.infillStartS,infillEndS:t.infillEndS,...t.params||t.continueSource?{params:{...t.params||{},...t.continueSource?{continueSource:t.continueSource}:{}}}:{}}),buildResultData:()=>({mv:t.mv})}}async function ft(t,e={}){return(e.mode||"async")==="queue"?ie(t,e,gt(t)):ht(t)}const yt={name:"generate_audio",description:"生成音频或音乐,可用于 Suno 音乐生成与续写",supportedModes:["async","queue"],inputSchema:{type:"object",properties:{prompt:{type:"string",description:"音乐描述或歌词内容"},model:{type:"string",description:"音频能力模型 ID,默认 suno_music"},title:{type:"string",description:"歌曲标题"},sunoAction:{type:"string",description:"Suno 动作类型,music 或 lyrics"},notifyHook:{type:"string",description:"歌词生成完成后的回调地址"},tags:{type:"string",description:"风格标签,逗号分隔"},mv:{type:"string",description:"Suno 版本字段,如 chirp-v5-5、chirp-v5、chirp-v4-5、chirp-v4、chirp-v3-5"},continueClipId:{type:"string",description:"续写目标 clip ID"},continueTaskId:{type:"string",description:"续写目标所属任务 task_id"},continueSource:{type:"string",description:"续写来源,clip 或 upload;upload 会自动拼接 -upload 版本"},continueAt:{type:"number",description:"从第几秒开始续写"},infillStartS:{type:"number",description:"Infill 开始秒数"},infillEndS:{type:"number",description:"Infill 结束秒数"}},required:["prompt"]},async execute(t,e){return ft(t,e)}};function J(){const t=j.get();return(t==null?void 0:t.textModelName)||Ne()}function xt(t){return typeof t=="object"&&t!==null&&typeof t.prompt=="string"}async function wt(t,e={}){const r=oe(t.prompt);if(r)return r;try{return{success:!0,data:await Ae.getFallbackExecutor().generateText({prompt:t.prompt,model:t.model||J(),modelRef:t.modelRef||null,referenceImages:t.referenceImages,params:t.params},void 0),type:"text"}}catch(n){return{success:!1,error:n.message||"文本生成失败",type:"error"}}}function vt(t){return{taskType:A.CHAT,resultType:"text",getDefaultModel:J,maxCount:1,buildTaskPayload:()=>({prompt:t.prompt,model:t.model||J(),modelRef:t.modelRef||null,referenceImages:t.referenceImages,...t.params?{params:t.params}:{}})}}async function It(t,e={}){return(e.mode||"async")==="queue"?ie(t,e,vt(t)):wt(t,e)}const Tt={name:"generate_text",description:"生成纯文本内容,可用于文章、摘要、说明、Markdown 等文本直出场景",supportedModes:["async","queue"],execute:async(t,e)=>xt(t)?It(t,e):{success:!1,error:"缺少必填参数 prompt",type:"error"},inputSchema:{type:"object",properties:{prompt:{type:"string",description:"文本生成提示词"},model:{type:"string",description:"文本模型 ID,默认使用当前文本路由模型"},referenceImages:{type:"array",description:"参考图片 URL 列表,用于图像理解后输出文本",items:{type:"string"}},params:{type:"object",description:"文本模型额外参数,如 temperature、top_p、max_tokens"}},required:["prompt"]}},St={name:"ai_analyze",description:`AI 分析工具。调用文本模型分析用户意图,决定需要执行的操作。
|
|
3
|
-
|
|
4
|
-
使用场景:
|
|
5
|
-
- 用户输入包含额外要求或复杂指令
|
|
6
|
-
- 需要 AI 理解用户意图并决定调用哪些工具
|
|
7
|
-
- 用户选择了文本内容作为生成素材
|
|
8
|
-
|
|
9
|
-
不适用场景:
|
|
10
|
-
- 简单的直接生成(使用 generate_image 或 generate_video)`,inputSchema:{type:"object",properties:{context:{type:"object",description:"Agent 执行上下文,包含用户指令、选中内容等"},textModel:{type:"string",description:"使用的文本模型 ID"},messages:{type:"array",description:"预构建的消息数组,传入时直接使用,不再生成默认系统提示词(用于 Skill 角色扮演/精准工具注入)"}},required:["context"]},supportedModes:["async"],execute:async(t,e)=>{var c;const{context:r,textModel:n,messages:i,modelRef:s}=t;if(!r)return{success:!1,error:"缺少必填参数 context",type:"error"};const a=Date.now(),o=[];try{console.log("[AIAnalyzeTool] 开始分析:",{userInstruction:(c=r.userInstruction)==null?void 0:c.substring(0,50),model:r.model,textModel:n,hasCustomMessages:!!i});const d=await De.execute(r,{model:n||r.model.id,modelRef:s||null,messages:i,onChunk:m=>{var l;(l=e==null?void 0:e.onChunk)==null||l.call(e,m)},onToolCall:m=>{var p,h,I,T;const l={...m.arguments};if(["generate_image","generate_video","generate_grid_image","generate_photo_wall"].includes(m.name)){const w=l.model,k=m.name==="generate_video",_=j.get(),S=(p=r.model)==null?void 0:p.type,v=(h=r.model)==null?void 0:h.id,b=S===(k?"video":"image")?v:void 0,f=b&&(s==null?void 0:s.modelId)===b?s:null,M=_.imageModelName||((I=Ve[0])==null?void 0:I.id)||"gemini-2.5-flash-image-vip",C=_.videoModelName||"veo3",P=b||(k?C:M);if(w){const F=Le(w);(k?F!=="video":F!=="image")?(l.model=P,f&&f.modelId===P?l.modelRef=f:delete l.modelRef):f&&f.modelId===w&&(l.modelRef=f)}else l.model=P,f&&f.modelId===P?l.modelRef=f:delete l.modelRef}const x={id:`step-tool-${Date.now()}-${Math.random().toString(36).substring(2,6)}`,mcp:m.name,args:l,description:bt(m.name,l),status:"running"};o.push(x),(T=e==null?void 0:e.onAddSteps)==null||T.call(e,[x])},onToolResult:m=>{var l;if(o.length>0){const g=o[o.length-1];g.status=m.success?"completed":"failed",(l=e==null?void 0:e.onUpdateStep)==null||l.call(e,g.id,g.status,m.data,m.error)}}}),u=Date.now()-a;return d.success?{success:!0,type:"text",data:{response:d.response,generatedSteps:o,duration:u}}:{success:!1,error:d.error||"AI 分析失败",type:"error",data:{duration:u,generatedSteps:o}}}catch(d){return console.error("[AIAnalyzeTool] Analysis failed:",d),{success:!1,error:d.message||"AI 分析失败",type:"error",data:{duration:Date.now()-a,generatedSteps:o}}}}};function bt(t,e){switch(t){case"generate_image":return`生成图片: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_video":return`生成视频: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_grid_image":return`生成宫格图: ${((e==null?void 0:e.theme)||"").substring(0,30)}...`;case"insert_svg":return"插入SVG矢量图";case"canvas_insertion":case"insert_to_canvas":return"插入到画布";default:return`执行 ${t}`}}let he=null;function Fr(t){he=t}function B(){return he}const U=20,ee=50,kt=100;function z(t,e){if(e){const i=new RegExp(`\`\`\`(?:${e}|${e.charAt(0).toUpperCase()+e.slice(1)})\\s*([\\s\\S]*?)\`\`\``,"i"),s=t.match(i);if(s)return s[1].trim()}const r=/```(?:\w+)?\s*([\s\S]*?)```/,n=t.match(r);return n?n[1].trim():t.trim()}function Ct(t,e,r=U){const n=t.x-r,i=t.x+t.width+r,s=t.y-r,a=t.y+t.height+r,o=e.x,c=e.x+e.width,d=e.y,u=e.y+e.height;return!(i<o||n>c||a<d||s>u)}function Pt(t){const e=[];if(!t.children||t.children.length===0)return e;for(const r of t.children)try{const n=q(t,[r],!1);e.push({x:n.x,y:n.y,width:n.width,height:n.height})}catch(n){console.warn("[InsertUtils] Failed to get bounding box for element:",n)}return e}function ge(t,e,r=U){for(const n of e)if(Ct(t,n,r))return!0;return!1}function _t(t,e,r,n=U,i=ee){let s=[...t],a=0;for(;a<kt;){const o={x:s[0],y:s[1],width:e.width,height:e.height};if(!ge(o,r,n))return s;s=[s[0],s[1]+i],a++}return console.warn("[InsertUtils] Max iterations reached, returning current position:",s),s}function Et(t,e){try{const r=q(t,[e],!1);return{x:r.x,y:r.y,width:r.width,height:r.height}}catch(r){return console.warn("[InsertUtils] Failed to get actual bounding box:",r),null}}function Mt(t,e){const r=[];if(!t.children||t.children.length===0)return r;for(const n of t.children){const i=n;if(!e.has(i.id))try{const s=q(t,[i],!1);r.push({x:s.x,y:s.y,width:s.width,height:s.height})}catch{}}return r}function At(t,e,r,n){try{const i=t.children.findIndex(o=>o.id===e.id);if(i<0)return console.warn("[InsertUtils] Element not found in board:",e.id),!1;const s=e.points;if(!s||s.length===0)return console.warn("[InsertUtils] Element has no points:",e.id),!1;const a=s.map(o=>[o[0]+r,o[1]+n]);return ae.setNode(t,{points:a},[i]),!0}catch(i){return console.error("[InsertUtils] Failed to move element:",i),!1}}function Nt(t){const e=Ue(t);if(e)return e;const r=Pt(t);if(r.length>0){let d=-1/0,u=0;for(const m of r){const l=m.y+m.height;l>d&&(d=l,u=m.x+m.width/2)}return[u,d+ee]}const n=Z.getBoardContainer(t).getBoundingClientRect(),i=[n.width/2,n.height/2],s=t.viewport.zoom,a=je(t),o=a[0]+i[0]/s,c=a[1]+i[1]/s;return[o,c]}function Dt(t,e){let r=!1;for(const n of e){const i=t.children.find(u=>u.id===n);if(!i)continue;const s=Et(t,i);if(!s)continue;const a=Mt(t,e);if(a.length===0||!ge(s,a,U))continue;const o=_t([s.x,s.y],{width:s.width,height:s.height},a,U,ee),c=o[0]-s.x,d=o[1]-s.y;(c!==0||d!==0)&&At(t,i,c,d)&&(r=!0)}return r}function fe(t,e,r){if(!e||e.length===0)return{success:!1,error:"没有可插入的元素"};try{const n=new Set(t.children.map(a=>a.id)),i=r||Nt(t);t.insertFragment({elements:JSON.parse(JSON.stringify(e))},i,Re.paste);const s=new Set;for(const a of t.children){const o=a;n.has(o.id)||s.add(o.id)}return s.size>0?requestAnimationFrame(()=>{const a=Dt(t,s);i&&X(t,i)}):i&&requestAnimationFrame(()=>{X(t,i)}),{success:!0,elementsCount:e.length}}catch(n){return console.error("[InsertUtils] Failed to insert elements:",n),{success:!1,error:n.message||"插入元素失败"}}}const ye={loaded:!1,api:new Promise((t,e)=>{ce(()=>import("./index-VzDb_AHs.js").then(r=>r.aq),__vite__mapDeps([0]),import.meta.url).then(r=>{ye.loaded=!0,t(r)}).catch(e)})};function Vt(t){return z(t,"mermaid")}function Lt(t){const e=t.trim().toLowerCase();return e.startsWith("flowchart")||e.startsWith("graph")?"flowchart":e.startsWith("sequencediagram")?"sequence":e.startsWith("classdiagram")?"classDiagram":e.startsWith("statediagram")?"stateDiagram":e.startsWith("erdiagram")?"erDiagram":e.startsWith("gantt")?"gantt":e.startsWith("pie")?"pie":e.startsWith("mindmap")?"mindmap":"unknown"}async function Rt(t){const e=B();if(!e)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};const{mermaid:r}=t;if(!r||typeof r!="string"||r.trim()==="")return{success:!1,error:"缺少必填参数 mermaid,请提供有效的Mermaid markdown字符串",type:"error"};try{const n=Vt(r),i=Lt(n),s=await ye.api;let a;try{a=await s.parseMermaidToDrawnix(n)}catch(d){console.warn("[MermaidTool] First parse attempt failed, retrying with quote replacement:",d.message),a=await s.parseMermaidToDrawnix(n.replace(/"/g,"'"))}const{elements:o}=a;if(!o||o.length===0)return{success:!1,error:"Mermaid代码解析成功,但未生成任何图表元素",type:"error"};const c=fe(e,o);return c.success?{success:!0,data:{diagramType:i,elementsCount:c.elementsCount,mermaidCode:n.substring(0,200)+(n.length>200?"...":"")},type:"canvas"}:{success:!1,error:c.error||"插入图表失败",type:"error"}}catch(n){return console.error("[MermaidTool] Failed to process mermaid:",n),{success:!1,error:`Mermaid转换失败: ${n.message||"未知错误"}`,type:"error"}}}const Ut={name:"insert_mermaid",description:`将Mermaid图表插入到画布工具。将Mermaid markdown语法转换为可视化图表并插入到画布中。
|
|
11
|
-
|
|
12
|
-
使用场景:
|
|
13
|
-
- 用户需要在画布上创建流程图、时序图、类图等图表
|
|
14
|
-
- 用户提供了Mermaid格式的图表代码
|
|
15
|
-
- AI生成了Mermaid代码需要展示在画布上
|
|
16
|
-
|
|
17
|
-
支持的图表类型:
|
|
18
|
-
- flowchart/graph: 流程图
|
|
19
|
-
- sequenceDiagram: 时序图(如OAuth2.0认证流程、API调用时序)
|
|
20
|
-
- classDiagram: 类图(如系统架构、对象关系)
|
|
21
|
-
- stateDiagram: 状态图(如订单状态流转)
|
|
22
|
-
- erDiagram: ER图(如数据库设计)
|
|
23
|
-
- gantt: 甘特图(如项目进度)
|
|
24
|
-
- pie: 饼图(如数据占比)
|
|
25
|
-
- mindmap: 思维导图
|
|
26
|
-
|
|
27
|
-
输入格式:
|
|
28
|
-
- 可以是纯Mermaid代码
|
|
29
|
-
- 也可以是包含\`\`\`mermaid代码块的markdown
|
|
30
|
-
|
|
31
|
-
示例输入:
|
|
32
|
-
\`\`\`mermaid
|
|
33
|
-
sequenceDiagram
|
|
34
|
-
participant Client
|
|
35
|
-
participant AuthServer
|
|
36
|
-
participant ResourceServer
|
|
37
|
-
Client->>AuthServer: 请求授权
|
|
38
|
-
AuthServer->>Client: 返回授权码
|
|
39
|
-
Client->>AuthServer: 用授权码换取Token
|
|
40
|
-
AuthServer->>Client: 返回Access Token
|
|
41
|
-
Client->>ResourceServer: 携带Token请求资源
|
|
42
|
-
ResourceServer->>Client: 返回资源
|
|
43
|
-
\`\`\``,inputSchema:{type:"object",properties:{mermaid:{type:"string",description:"Mermaid markdown字符串,可以是纯Mermaid代码或包含```mermaid代码块的markdown"}},required:["mermaid"]},execute:async t=>Rt(t)},xe={loaded:!1,api:new Promise((t,e)=>{ce(()=>import("./index-D5qxbeGT.js"),__vite__mapDeps([0]),import.meta.url).then(r=>{xe.loaded=!0,t(r)}).catch(e)})};function jt(t){const e=z(t,"markdown");return e===t.trim(),e}async function qt(t){const e=B();if(!e)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};const{markdown:r}=t;if(!r||typeof r!="string"||r.trim()==="")return{success:!1,error:"缺少必填参数 markdown,请提供有效的 Markdown 思维导图定义",type:"error"};try{const n=jt(r),i=await xe.api;let s;try{s=await i.parseMarkdownToDrawnix(n)}catch(c){console.warn("[MindmapTool] First parse attempt failed, retrying with quote replacement:",c.message),s=await i.parseMarkdownToDrawnix(n.replace(/"/g,"'"))}if(!s)return{success:!1,error:"Markdown 解析成功,但未生成思维导图元素",type:"error"};s.points=[[0,0]];const o=fe(e,[s]);return o.success?{success:!0,data:{type:"mindmap",elementsCount:o.elementsCount,markdownPreview:n.substring(0,200)+(n.length>200?"...":"")},type:"canvas"}:{success:!1,error:o.error||"插入思维导图失败",type:"error"}}catch(n){return console.error("[MindmapTool] Failed to process markdown:",n),{success:!1,error:`思维导图转换失败: ${n.message||"未知错误"}`,type:"error"}}}const Ft={name:"insert_mindmap",description:`将 Markdown 思维导图插入到画布工具。将 Markdown 语法转换为可视化思维导图并插入到画布中。
|
|
44
|
-
|
|
45
|
-
使用场景:
|
|
46
|
-
- 用户需要在画布上创建思维导图
|
|
47
|
-
- 用户提供了 Markdown 格式的思维导图定义
|
|
48
|
-
- AI 生成了思维导图内容需要展示在画布上
|
|
49
|
-
- 用户输入"创作XXX思维导图"等指令时
|
|
50
|
-
|
|
51
|
-
支持的 Markdown 语法:
|
|
52
|
-
- # 一级标题(作为根节点)
|
|
53
|
-
- ## 二级标题(作为一级分支)
|
|
54
|
-
- ### 三级标题(作为二级分支)
|
|
55
|
-
- - 无序列表项(作为子节点)
|
|
56
|
-
- 缩进表示层级关系
|
|
57
|
-
- 支持 Emoji 表情符号
|
|
58
|
-
|
|
59
|
-
输入格式:
|
|
60
|
-
- 可以是纯 Markdown 文本
|
|
61
|
-
- 也可以是包含 \`\`\`markdown 代码块的内容
|
|
62
|
-
|
|
63
|
-
示例输入:
|
|
64
|
-
\`\`\`markdown
|
|
65
|
-
# 大模型未来趋势
|
|
66
|
-
|
|
67
|
-
## 技术演进
|
|
68
|
-
- 多模态融合
|
|
69
|
-
- 视觉理解
|
|
70
|
-
- 语音交互
|
|
71
|
-
- 跨模态推理
|
|
72
|
-
- 推理能力提升
|
|
73
|
-
- 思维链
|
|
74
|
-
- 自我反思
|
|
75
|
-
|
|
76
|
-
## 应用场景
|
|
77
|
-
- 智能助手
|
|
78
|
-
- 代码生成
|
|
79
|
-
- 内容创作
|
|
80
|
-
|
|
81
|
-
## 挑战与机遇
|
|
82
|
-
- 算力成本
|
|
83
|
-
- 数据安全
|
|
84
|
-
- 伦理规范
|
|
85
|
-
\`\`\``,inputSchema:{type:"object",properties:{markdown:{type:"string",description:"Markdown 格式的思维导图定义,支持标题和列表语法"}},required:["markdown"]},execute:async t=>qt(t)};function Gt(){return qe.map(t=>`- ${t.style}(${t.labelZh}):${t.description}`).join(`
|
|
86
|
-
`)}function $t(t,e){const r=Fe.zh;return r(t,e.rows,e.cols)}function Ot(t,e){const{theme:r,rows:n=N.gridConfig.rows,cols:i=N.gridConfig.cols,layoutStyle:s=N.layoutStyle,imageSize:a=N.imageSize,imageQuality:o=N.imageQuality,referenceImages:c,model:d}=t,u=d||de();if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 theme(主题描述)",type:"error"};const m=Math.min(Math.max(2,n),5),l=Math.min(Math.max(2,i),5),g={rows:m,cols:l},x=$t(r,g),p=c==null?void 0:c.map((h,I)=>({type:"url",url:h,name:`reference-${I+1}`}));try{let h;if(e.retryTaskId){if(E.retryTask(e.retryTaskId),h=E.getTask(e.retryTaskId),!h)throw new Error(`重试任务不存在: ${e.retryTaskId}`)}else h=E.createTask({prompt:x,size:a,model:u,uploadedImages:p&&p.length>0?p:void 0,params:{resolution:o},gridImageRows:m,gridImageCols:l,gridImageLayoutStyle:s,originalTheme:r,batchId:e.batchId,globalIndex:e.globalIndex||1,autoInsertToCanvas:!0},A.IMAGE);return{success:!0,data:{taskId:h.id,theme:r,gridConfig:g,layoutStyle:s,prompt:x.substring(0,100)+"..."},type:"image",taskId:h.id,task:h}}catch(h){return console.error("[GridImageTool] Failed to create task:",h),{success:!1,error:h.message||"创建宫格图任务失败",type:"error"}}}const zt={name:"generate_grid_image",description:`宫格图生成工具。根据主题描述生成一组相关图片,并按照指定布局风格排列在画板上,形成宫格图效果。
|
|
87
|
-
|
|
88
|
-
使用场景:
|
|
89
|
-
- 用户想要创建宫格图、图片墙、产品展示墙
|
|
90
|
-
- 用户想要生成一组主题相关的图片并排列展示
|
|
91
|
-
- 用户想要创建拼贴画、图片集合、表情包
|
|
92
|
-
|
|
93
|
-
工作原理:
|
|
94
|
-
1. 根据主题生成一张包含多个元素的拼贴图
|
|
95
|
-
2. 将拼贴图按网格分割成独立图片
|
|
96
|
-
3. 按选定的布局风格计算位置
|
|
97
|
-
4. 批量插入到画板
|
|
98
|
-
|
|
99
|
-
可用布局风格:
|
|
100
|
-
${Gt()}
|
|
101
|
-
|
|
102
|
-
不适用场景:
|
|
103
|
-
- 只想生成单张图片(使用 generate_image 工具)
|
|
104
|
-
- 想要生成视频(使用 generate_video 工具)`,inputSchema:{type:"object",properties:{theme:{type:"string",description:'宫格图主题描述,如"孟菲斯风格餐具"、"可爱猫咪表情包"、"复古相机收藏"等'},rows:{type:"number",description:"网格行数,2-5 之间,默认 3",default:3},cols:{type:"number",description:"网格列数,2-5 之间,默认 3",default:3},layoutStyle:{type:"string",description:"布局风格",enum:["scattered","grid","circular"],default:"scattered"},imageSize:{type:"string",description:"生成图片的尺寸比例",enum:["1x1","16x9","9x16","3x2","4x3"],default:"1x1"},imageQuality:{type:"string",description:"图片质量",enum:["1k","2k","4k"],default:"2k"},referenceImages:{type:"array",description:"参考图片 URL 列表,用于风格参考",items:{type:"string"}},model:{type:"string",description:"图片生成模型名称(可选,默认使用当前设置的模型)"}},required:["theme"]},supportedModes:["queue"],promptGuidance:{whenToUse:"当用户想要生成多个相关主题的图片并以宫格图/拼贴画形式展示时使用。关键词:宫格图、九宫格、图片墙、表情包、产品展示、拼贴画、系列图片。",parameterGuidance:{theme:'主题描述应该具体且有多样性潜力。好的主题:描述一类事物的多种变体(如"不同品种的可爱猫咪"、"各种颜色的马卡龙")。避免:过于具体的单一描述(如"一只橘猫")。',rows:"根据内容数量决定:表情包通常3x3或4x4,产品展示2x3或3x4,大型展示4x4或5x5。",cols:"建议与rows相同创建正方形网格,或cols略大于rows创建横向布局。",layoutStyle:"scattered(散落)适合艺术感展示;grid(网格)适合产品目录;circular(环形)适合突出中心主题。"},bestPractices:['主题应强调多样性,如"各种姿态的猫咪"而非"一只猫"','描述具体的视觉风格,如"扁平插画风格"、"3D渲染"、"水彩画风"','对于表情包,明确情绪类型如"开心、惊讶、生气、困惑等表情"','对于产品展示,说明产品类别和风格如"北欧简约风格家具"'],examples:[{input:"生成一个猫咪表情包",args:{theme:"可爱猫咪表情包,包含开心、惊讶、生气、困惑、得意、卖萌等各种有趣表情,卡通风格",rows:4,cols:4,layoutStyle:"grid"},explanation:"表情包适合用网格布局,主题描述了多种表情变体"},{input:"做一个孟菲斯风格的餐具宫格图",args:{theme:"孟菲斯风格餐具,包含碗、盘、杯、勺等不同类型,色彩鲜艳,几何图案装饰,白色背景",rows:3,cols:3,layoutStyle:"scattered"},explanation:"散落布局增加艺术感,主题明确了风格和物品多样性"},{input:"创建花卉插画集",args:{theme:"水彩风格花卉插画,包含玫瑰、向日葵、郁金香、樱花、薰衣草等不同种类的花朵,柔和色彩",rows:4,cols:4,layoutStyle:"scattered"},explanation:"4x4网格提供更多展示空间,主题列举了多种花卉种类"},{input:"做个美食九宫格",args:{theme:"精致甜点美食摄影,包含蛋糕、马卡龙、泡芙、冰淇淋等各式甜品,俯视角度,浅色背景",rows:3,cols:3,layoutStyle:"grid"},explanation:"美食九宫格用网格布局更整齐,俯视角度适合食物展示"}],warnings:['避免主题过于抽象(如"美丽的东西"),应该具体到某类事物',"rows 和 cols 的乘积即生成图片数量,过大(如5x5=25张)会增加处理时间","生成后系统会自动拆分图片,请确保主题适合被分割成独立元素"]},execute:async(t,e)=>Ot(t,e||{})};function Bt(t,e){const r=$e.zh;return r(t,e)}function Wt(t,e){const{theme:r,imageCount:n=Ge.imageCount,imageSize:i="16x9",imageQuality:s="2k",referenceImages:a,model:o}=t;if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 theme(主题描述)",type:"error"};const c=Math.min(Math.max(1,n),16),d=Bt(r,c),u=o||de(),m=a==null?void 0:a.map((l,g)=>({type:"url",url:l,name:`reference-${g+1}`}));try{let l;if(e.retryTaskId){if(E.retryTask(e.retryTaskId),l=E.getTask(e.retryTaskId),!l)throw new Error(`重试任务不存在: ${e.retryTaskId}`)}else l=E.createTask({prompt:d,size:i,model:u,uploadedImages:m&&m.length>0?m:void 0,params:{resolution:s},isInspirationBoard:!0,inspirationBoardImageCount:c,inspirationBoardLayoutStyle:"inspiration-board",originalTheme:r,batchId:e.batchId,globalIndex:e.globalIndex||1,autoInsertToCanvas:!0},A.IMAGE);return{success:!0,data:{taskId:l.id,theme:r,imageCount:c,prompt:d.substring(0,100)+"..."},type:"image",taskId:l.id,task:l}}catch(l){return console.error("[InspirationBoardTool] Failed to create task:",l),{success:!1,error:l.message||"创建灵感图任务失败",type:"error"}}}const Ht={name:"generate_inspiration_board",description:`灵感图生成工具。根据主题描述生成一组等大小的高质量图片,
|
|
105
|
-
以散落的横向布局插入画板,形成有创意感的灵感板效果。
|
|
106
|
-
|
|
107
|
-
生成策略(重要):
|
|
108
|
-
- 生成紧凑的网格生产图(等大小图片 + 细分割线)
|
|
109
|
-
- 智能拆分后获得更多、更大的独立图片
|
|
110
|
-
- 拆分后以散落布局插入画布,营造创意效果
|
|
111
|
-
|
|
112
|
-
与宫格图的区别:
|
|
113
|
-
- 宫格图:整齐排列,适合展示类场景
|
|
114
|
-
- 灵感图:散落布局 + 随机旋转,更有创意感和艺术感
|
|
115
|
-
|
|
116
|
-
使用场景:
|
|
117
|
-
- 用户想要创建有创意感的灵感板、情绪板
|
|
118
|
-
- 用户想要生成主题相关的多角度、多风格图片集合
|
|
119
|
-
- 用户想要类似 Pinterest 或 Mood Board 的展示效果
|
|
120
|
-
- 用户提到"创意"、"灵感"、"艺术感"等关键词
|
|
121
|
-
|
|
122
|
-
工作原理:
|
|
123
|
-
1. 根据主题生成一张紧凑的网格拼贴图(等大图片 + 细白线分割)
|
|
124
|
-
2. 智能检测并按分割线拆分出各个独立图片
|
|
125
|
-
3. 以散落的横向布局计算位置(带旋转和层叠)
|
|
126
|
-
4. 批量插入到画板
|
|
127
|
-
|
|
128
|
-
不适用场景:
|
|
129
|
-
- 只想生成单张图片(使用 generate_image 工具)
|
|
130
|
-
- 想要整齐的网格排列(使用 generate_grid_image 工具)
|
|
131
|
-
- 想要生成视频(使用 generate_video 工具)`,inputSchema:{type:"object",properties:{theme:{type:"string",description:'灵感图主题描述,如"可爱香蕉的各种形态"、"咖啡文化"、"城市街角"等'},imageCount:{type:"number",description:"图片数量,1-16 之间,默认 9",default:9},imageSize:{type:"string",description:"生成图片的尺寸比例(建议横向)",enum:["16x9","3x2","1x1"],default:"16x9"},imageQuality:{type:"string",description:"图片质量",enum:["1k","2k","4k"],default:"2k"},referenceImages:{type:"array",description:"参考图片 URL 列表,用于风格参考",items:{type:"string"}},model:{type:"string",description:"图片生成模型,不指定时使用用户设置的模型"}},required:["theme"]},supportedModes:["queue"],promptGuidance:{whenToUse:"当用户想要生成创意灵感图、灵感板、Mood Board 效果时使用。关键词:灵感图、灵感板、创意拼贴、艺术展示、Mood Board、Pinterest 风格。",parameterGuidance:{theme:"主题描述应该具体且有多样性潜力。好的主题:描述一类事物的多种变体、不同角度或不同场景。避免过于具体的单一描述。",imageCount:"1-16 张,会自动计算最优网格布局(如 9 张 = 3x3,12 张 = 3x4)。",imageSize:"建议使用 16x9 横向比例,生成更大尺寸的图片。"},bestPractices:['主题应强调多样性和变化,如"咖啡的各种形态"而非"一杯咖啡"','可以指定风格混搭,如"写实与插画混合"、"不同时代风格"',"描述具体的视觉元素,帮助 AI 生成更丰富的内容","生成的是紧凑网格图,拆分后每张子图都是高质量大图"],examples:[{input:"生成一个可爱香蕉的灵感图",args:{theme:"可爱香蕉的各种形态,包含卡通香蕉、写实香蕉、香蕉角色、香蕉图案等不同风格",imageCount:9},explanation:"生成 3x3 网格,拆分后 9 张等大图片以散落布局插入"},{input:"做个城市街角的 Mood Board",args:{theme:"城市街角,包含不同城市、不同时间、不同天气、不同风格的街角场景",imageCount:8,imageSize:"16x9"},explanation:"生成 2x4 网格,横向布局更适合展示街景"}],warnings:["生成的是紧凑网格生产图,拆分后以散落布局插入画布","实际图片数量取决于网格布局(如 7 张会调整为 2x4 = 8 张)","建议使用横向比例(16x9)以获得更大的子图尺寸"]},execute:async(t,e)=>Wt(t,e||{})};function Xt(t){return!t||typeof t!="string"?!1:t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:image/")||t.startsWith("blob:")}async function Yt(t,e){const{imageUrl:r}=t;if(!Xt(r))return{success:!1,error:"无效的图片 URL,支持 http/https/base64/blob 格式",type:"error"};const n=lt();if(!n)return{success:!1,error:"画板未初始化",type:"error"};try{const i=await Oe(n,r,{scrollToResult:!0});return i.success?{success:!0,data:{count:i.count},type:"text"}:{success:!1,error:i.error||"拆分失败",type:"error"}}catch(i){return console.error("[SplitImageTool] Execution failed:",i),{success:!1,error:i.message||"拆分执行失败",type:"error"}}}const Qt={name:"split_image",description:`图片拆分工具。将一张包含多个元素的图片拆分成多个独立图片,并插入到画板中。
|
|
132
|
-
|
|
133
|
-
使用场景:
|
|
134
|
-
- 用户有一张九宫格/拼贴图,想要拆分成独立图片
|
|
135
|
-
- 用户想要将宫格图图片拆分后重新排列
|
|
136
|
-
- 用户有一张包含多个产品的图片,想要分开展示
|
|
137
|
-
|
|
138
|
-
功能特点:
|
|
139
|
-
- 自动检测图片中的白色/浅色分割线
|
|
140
|
-
- 支持检测灵感图格式(灰色背景 + 白边框图片)
|
|
141
|
-
- 自动去除图片四周白边
|
|
142
|
-
- 对每个拆分后的子图进行白边清理
|
|
143
|
-
- 拆分后自动滚动到结果位置
|
|
144
|
-
|
|
145
|
-
不适用场景:
|
|
146
|
-
- 想要生成图片(使用 generate_image 工具)
|
|
147
|
-
- 想要生成宫格图(使用 generate_grid_image 工具)
|
|
148
|
-
- 图片没有分割线也不是规则网格结构`,inputSchema:{type:"object",properties:{imageUrl:{type:"string",description:"要拆分的图片 URL(支持 http/https/base64/blob 格式)"}},required:["imageUrl"]},supportedModes:["direct"],execute:async(t,e)=>Yt(t)},R={DEFAULT_VERTICAL_GAP:50,SVG_DEFAULT_WIDTH:400,SVG_MAX_WIDTH:800,SVG_MIN_WIDTH:100};function Kt(t){let e=z(t,"svg");if(e===t&&(e=z(t,"xml")),e===t&&!e.trim().startsWith("<svg")){const r=e.match(/<svg[\s\S]*?<\/svg>/i);r&&(e=r[0])}return e.trim()}function Jt(t){if(!t||typeof t!="string")return{valid:!1,error:"缺少SVG代码"};const e=t.trim();return!e.startsWith("<svg")&&!e.startsWith("<?xml")?{valid:!1,error:"SVG代码格式无效,必须以<svg开头"}:e.includes("</svg>")?{valid:!0}:{valid:!1,error:"SVG代码不完整,缺少</svg>结束标签"}}function Zt(t){let e=t.trim();return e.includes("xmlns=")||(e=e.replace("<svg",'<svg xmlns="http://www.w3.org/2000/svg"')),e}function er(t){const e=t.match(/viewBox=["']([^"']+)["']/i);if(e){const[,,i,s]=e[1].split(/\s+/).map(Number);if(i&&s)return{width:i,height:s}}const r=t.match(/width=["'](\d+)(?:px)?["']/i),n=t.match(/height=["'](\d+)(?:px)?["']/i);return r&&n?{width:parseInt(r[1]),height:parseInt(n[1])}:{width:400,height:400}}function tr(t){return`data:image/svg+xml,${encodeURIComponent(t).replace(/'/g,"%27").replace(/"/g,"%22")}`}function rr(t){const e=t.appState,r=(e==null?void 0:e.lastSelectedElementIds)||[];if(r.length===0)return;const n=r.map(i=>t.children.find(s=>s.id===i)).filter(Boolean);if(n.length!==0)try{const i=q(t,n,!1),s=i.x+i.width/2,a=i.y+i.height+R.DEFAULT_VERTICAL_GAP;return[s,a]}catch(i){console.warn("[SvgTool] Error calculating start point:",i);return}}function nr(t){if(!t.children||t.children.length===0)return[100,100];let e=0,r=100;for(const n of t.children)try{const i=q(t,[n],!1),s=i.y+i.height;s>e&&(e=s,r=i.x+i.width/2)}catch{}return[r,e+R.DEFAULT_VERTICAL_GAP]}async function sr(t){const e=B();if(!e)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};const{svg:r,startPoint:n,width:i}=t,s=Jt(r);if(!s.valid)return{success:!1,error:s.error||"SVG代码无效",type:"error"};try{const a=Zt(Kt(r)),o=er(a),c=Math.min(Math.max(i||R.SVG_DEFAULT_WIDTH,R.SVG_MIN_WIDTH),R.SVG_MAX_WIDTH),d=o.height/o.width,u=c*d,m=tr(a);let l=n;l||(l=rr(e)),l||(l=nr(e)),l=[l[0]-c/2,l[1]];const g={url:m,width:c,height:u};le.insertImage(e,g,l);const x=[l[0]+c/2,l[1]+u/2];return requestAnimationFrame(()=>{X(e,x)}),{success:!0,data:{width:c,height:u,position:l,svgPreview:a.substring(0,200)+(a.length>200?"...":"")},type:"canvas"}}catch(a){return console.error("[SvgTool] Failed to process SVG:",a),{success:!1,error:`SVG插入失败: ${a.message||"未知错误"}`,type:"error"}}}const ir={name:"insert_svg",description:`将SVG矢量图插入到画布工具。将SVG代码转换为可缩放矢量图形并插入到画布中。
|
|
149
|
-
|
|
150
|
-
使用场景:
|
|
151
|
-
- 用户需要在画布上创建图标、Logo、徽章等矢量图
|
|
152
|
-
- AI生成了SVG代码需要展示在画布上
|
|
153
|
-
- 用户提供了"矢量图"、"SVG"、"图标"等关键词的请求
|
|
154
|
-
|
|
155
|
-
SVG的优势:
|
|
156
|
-
- 矢量图形,无限缩放不失真
|
|
157
|
-
- 文件体积小,适合图标和简单图形
|
|
158
|
-
- 可编辑性强,颜色和形状可以修改
|
|
159
|
-
|
|
160
|
-
输入格式:
|
|
161
|
-
- 可以是纯SVG代码
|
|
162
|
-
- 也可以是包含\`\`\`svg或\`\`\`xml代码块的markdown
|
|
163
|
-
|
|
164
|
-
示例输入:
|
|
165
|
-
\`\`\`svg
|
|
166
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
|
167
|
-
<circle cx="50" cy="50" r="40" fill="#5A4FCF"/>
|
|
168
|
-
<path d="M35 50 L45 60 L65 40" stroke="white" stroke-width="6" fill="none"/>
|
|
169
|
-
</svg>
|
|
170
|
-
\`\`\`
|
|
171
|
-
|
|
172
|
-
常用场景:
|
|
173
|
-
- 矢量图:简约风格的火箭图标 → 生成火箭SVG
|
|
174
|
-
- 图标:社交媒体图标组 → 生成多个社交图标
|
|
175
|
-
- Logo:品牌Logo设计 → 生成矢量Logo`,inputSchema:{type:"object",properties:{svg:{type:"string",description:"SVG代码字符串,可以是纯SVG代码或包含```svg代码块的markdown"},width:{type:"number",description:"目标宽度(像素),默认400,范围100-800",default:400}},required:["svg"]},promptGuidance:{whenToUse:"当用户请求生成矢量图、图标、Logo、SVG、徽章等关键词时使用此工具",parameterGuidance:{svg:"生成完整的SVG代码,确保包含xmlns属性和viewBox。使用简洁的路径和形状。",width:"根据图标复杂度调整,简单图标200-300,复杂图形400-600"},bestPractices:["使用viewBox确保SVG可缩放","颜色使用十六进制格式","图标设计保持简洁,避免过于复杂的路径","适当使用渐变和阴影增加质感"],examples:[{input:"矢量图:一个简约风格的火箭图标",args:{svg:`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
|
176
|
-
<path d="M50 10 L60 50 L55 50 L55 70 L45 70 L45 50 L40 50 Z" fill="#E67E22"/>
|
|
177
|
-
<circle cx="50" cy="35" r="5" fill="#5A4FCF"/>
|
|
178
|
-
<path d="M45 70 L40 85 L50 75 L60 85 L55 70" fill="#F39C12"/>
|
|
179
|
-
</svg>`,width:300},explanation:"生成简约火箭图标,使用品牌色彩"}],warnings:["不要生成过于复杂的SVG,可能导致渲染性能问题","确保SVG代码格式正确,包含完整的开始和结束标签"]},execute:async t=>sr(t)},we=8,or="veo3.1";function ar(t,e,r){const n=r?`
|
|
180
|
-
角色一致性要求(极其重要!):
|
|
181
|
-
- 视频中有固定角色,描述为:"${r}"
|
|
182
|
-
- 每个片段的 prompt 必须以 "The same ${r}," 开头
|
|
183
|
-
- 角色的外貌(发型、服装、体型等)在所有片段中保持完全一致,不得改变
|
|
184
|
-
`:"";return`你是一个专业的视频脚本编剧。用户会给你一个视频主题,你需要将其拆分为 ${t} 个连续的视频片段脚本。
|
|
185
|
-
|
|
186
|
-
要求:
|
|
187
|
-
1. 每个片段时长约 ${e} 秒
|
|
188
|
-
2. 片段之间要保持叙事连贯性,画面能自然衔接
|
|
189
|
-
3. 每个片段的描述要具体、可视化,包含:场景、主体、动作、镜头运动
|
|
190
|
-
4. 使用英文撰写描述以获得更好的生成效果
|
|
191
|
-
${n}
|
|
192
|
-
拼接衔接要求(极其重要!):
|
|
193
|
-
1. 视觉锚点:相邻片段之间必须有一个共同的视觉元素,确保画面连贯
|
|
194
|
-
2. 运镜方向延续:如果一个片段结尾是向右平移,下一个片段开头应继续向右或保持静止
|
|
195
|
-
3. 色调一致性:所有片段统一使用相同的色调和光线风格
|
|
196
|
-
4. 动作连贯:如果一个片段结尾主体正在做某个动作,下一个片段开头要延续
|
|
197
|
-
5. 尾帧描述:每个片段末尾需要描述最后画面的状态(因为会提取尾帧作为下一段首帧)
|
|
198
|
-
|
|
199
|
-
输出格式(严格遵循 JSON):
|
|
200
|
-
\`\`\`json
|
|
201
|
-
{
|
|
202
|
-
"segments": [
|
|
203
|
-
{
|
|
204
|
-
"index": 1,
|
|
205
|
-
"prompt": "Segment 1 description in English...",
|
|
206
|
-
"duration": ${e},
|
|
207
|
-
"transition_hint": "dissolve",
|
|
208
|
-
"end_frame_description": "Description of the last frame in English..."
|
|
209
|
-
}
|
|
210
|
-
]
|
|
211
|
-
}
|
|
212
|
-
\`\`\`
|
|
213
|
-
|
|
214
|
-
注意:
|
|
215
|
-
- 第一个片段要有好的开场
|
|
216
|
-
- 相邻片段的结尾和开头要能自然衔接(因为会用尾帧作为下一段首帧)
|
|
217
|
-
- transition_hint 从 'cut'/'dissolve'/'match_cut'/'fade_to_black' 中选择
|
|
218
|
-
- 最后一个片段的 transition_hint 设为 'fade_to_black'
|
|
219
|
-
- 最后一个片段要有完整的收尾`}function cr(t){try{const e=t.match(/```json\s*([\s\S]*?)\s*```/)||t.match(/\{[\s\S]*"segments"[\s\S]*\}/);if(!e)return console.error("[LongVideo] Failed to find JSON in response"),[];const r=e[1]||e[0],n=JSON.parse(r);return Array.isArray(n.segments)?n.segments.map((i,s)=>({index:i.index||s+1,prompt:i.prompt||"",duration:i.duration||we,transition_hint:i.transition_hint||void 0,end_frame_description:i.end_frame_description||void 0})):(console.error("[LongVideo] Invalid script format: segments is not an array"),[])}catch(e){return console.error("[LongVideo] Failed to parse script:",e),[]}}async function dr(t,e,r,n,i){const a=j.get().textModelName,c=[{role:"system",content:[{type:"text",text:ar(e,r,n)}]},{role:"user",content:[{type:"text",text:`视频主题:${t}`}]}];let d="";const u=await ue.sendChat(c,m=>{d+=m,i==null||i(m)},void 0,a);return u.choices&&u.choices.length>0&&(d=u.choices[0].message.content||d),cr(d)}function lr(t,e,r){const n=[];r&&n.push({slot:0,slotLabel:"首帧",url:r,name:"first-frame.png"});const i=e.characterReferenceUrls&&e.characterReferenceUrls.length>0?e.characterReferenceUrls:void 0;return E.createTask({prompt:t.prompt,size:e.size,duration:t.duration,model:e.model,uploadedImages:n.length>0?n:void 0,referenceImages:i,longVideoMeta:e,batchId:e.batchId,batchIndex:t.index,batchTotal:e.totalSegments},A.VIDEO)}async function ur(t,e){var u,m,l,g,x,p,h,I,T,w,k,_;const{prompt:r,totalDuration:n=60,segmentDuration:i=we,model:s=or,size:a="16x9",firstFrameImage:o,characterDescription:c}=t;if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 prompt",type:"error"};const d=ze[s];(!d||d.imageUpload.mode!=="frames")&&console.warn(`[LongVideo] Model ${s} does not support first/last frame, using veo3.1`);try{const S=Math.ceil(n/i);(u=e.onChunk)==null||u.call(e,`正在为您规划 ${n} 秒的长视频,分为 ${S} 个片段...
|
|
220
|
-
|
|
221
|
-
`);const v=await dr(r,S,i,c,e.onChunk);if(v.length===0)return{success:!1,error:"视频脚本生成失败,请重试",type:"error"};(m=e.onChunk)==null||m.call(e,`
|
|
222
|
-
|
|
223
|
-
✓ 脚本生成完成,共 ${v.length} 个片段
|
|
224
|
-
|
|
225
|
-
`);const b=`long_video_${Date.now()}`,f=v[0],M={batchId:b,segmentIndex:1,totalSegments:v.length,needsLastFrame:v.length>1,scripts:v,model:s,size:a,characterDescription:c},C=lr(f,M,o);return(l=e.onAddSteps)==null||l.call(e,[{id:C.id,mcp:"generate_video",args:{prompt:f.prompt,model:s,size:a},description:`生成视频片段 1/${v.length}: ${f.prompt.substring(0,50)}...`,status:"completed",options:{mode:"queue",batchId:b,batchIndex:1,batchTotal:v.length,globalIndex:1}}]),(g=e.onChunk)==null||g.call(e,`
|
|
226
|
-
✓ 已创建第 1 个视频生成任务
|
|
227
|
-
`),(x=e.onChunk)==null||x.call(e,`
|
|
228
|
-
📊 **长视频生成计划**:
|
|
229
|
-
`),(p=e.onChunk)==null||p.call(e,`- 总时长:${n} 秒
|
|
230
|
-
`),(h=e.onChunk)==null||h.call(e,`- 片段数:${v.length} 个(每段 ${i} 秒)
|
|
231
|
-
`),(I=e.onChunk)==null||I.call(e,`- 生成方式:串行生成(前一段完成后自动创建下一段)
|
|
232
|
-
`),(T=e.onChunk)==null||T.call(e,`
|
|
233
|
-
💡 **温馨提示**:
|
|
234
|
-
`),(w=e.onChunk)==null||w.call(e,`- 每段视频生成完成后,系统会自动提取尾帧作为下一段的首帧,确保画面连贯
|
|
235
|
-
`),(k=e.onChunk)==null||k.call(e,`- 所有片段生成完成后会自动合并并插入画布
|
|
236
|
-
`),(_=e.onChunk)==null||_.call(e,`- 您可以在任务队列中查看实时进度
|
|
237
|
-
`),{success:!0,data:{batchId:b,taskId:C.id,segmentCount:v.length,totalDuration:n,scripts:v},type:"video",taskId:C.id}}catch(S){return console.error("[LongVideo] Generation failed:",S),{success:!1,error:S.message||"长视频生成失败",type:"error"}}}const mr={name:"generate_long_video",description:`生成长视频工具。用于生成超过单个模型时长限制的长视频(如1分钟)。
|
|
238
|
-
|
|
239
|
-
使用场景:
|
|
240
|
-
- 用户想要生成1分钟或更长的视频
|
|
241
|
-
- 用户描述了一个需要多个场景的完整故事
|
|
242
|
-
- 用户明确提到"长视频"、"1分钟视频"、"完整视频"等关键词
|
|
243
|
-
|
|
244
|
-
工作原理:
|
|
245
|
-
1. 先调用文本模型将用户描述拆分为多个连续的视频片段脚本
|
|
246
|
-
2. 串行生成视频:第1段完成后提取尾帧,作为第2段首帧,以此类推
|
|
247
|
-
3. 所有视频片段分别加入任务队列,用户可以在任务面板查看进度
|
|
248
|
-
|
|
249
|
-
不适用场景:
|
|
250
|
-
- 用户只需要一个短视频(15秒以内),使用 generate_video 工具
|
|
251
|
-
- 用户只是在聊天,没有生成视频的意图`,inputSchema:{type:"object",properties:{prompt:{type:"string",description:"视频主题/故事描述,详细描述想要生成的视频内容、故事情节"},totalDuration:{type:"number",description:"目标总时长(秒),默认 60 秒",default:60},segmentDuration:{type:"number",description:"每个片段的时长(秒),默认 8 秒",default:8},model:{type:"string",description:"视频生成模型,默认使用 veo3.1(支持首尾帧)",default:"veo3.1"},size:{type:"string",description:"视频尺寸,默认 16x9",default:"16x9"},firstFrameImage:{type:"string",description:"第一段视频的首帧参考图片 URL(可选)"}},required:["prompt"]},supportedModes:["queue"],promptGuidance:{whenToUse:"当用户想要生成超过15秒的长视频时使用,特别是1分钟视频。关键词:长视频、1分钟、完整故事、多场景。",parameterGuidance:{prompt:"用户的视频主题或故事描述,可以是一个完整的故事大纲。工具会自动将其拆分为多个连贯的片段。",totalDuration:'默认60秒(1分钟)。用户说"1分钟视频"时设为60,"30秒"设为30。',segmentDuration:"每段视频时长,默认8秒。这个值通常不需要用户指定。",model:"默认使用 veo3.1,因为它支持首尾帧,能保证片段间的连贯性。",firstFrameImage:'可选参数。当用户选中图片并希望从该图片开始生成视频时使用。传递 "[图片1]" 等占位符,系统会自动替换为真实URL。'},bestPractices:["将用户的描述直接传给 prompt,工具会自动调用文本模型生成分段脚本","不需要用户提供详细的分段描述,工具会自动规划","建议提醒用户长视频生成需要较长时间(每段约1-3分钟)","如果用户选中了图片,可以将其作为 firstFrameImage 传递,这样第一段视频会从该图片开始"],examples:[{input:"帮我生成一个1分钟的视频,讲述一只猫咪从早到晚的一天",args:{prompt:"一只可爱的橘猫从早到晚的一天生活:清晨在窗台晒太阳、中午在厨房偷吃鱼、下午追逐蝴蝶玩耍、傍晚蜷缩在沙发上打盹、夜晚望着月亮",totalDuration:60}},{input:"创作一个30秒的日落延时视频",args:{prompt:"从太阳开始下山到完全落入地平线的日落延时摄影,天空从金色渐变为橙色再到粉紫色",totalDuration:30}},{input:"[图片1] 让这个场景动起来,生成30秒视频",args:{prompt:"Cinematic video starting from this scene, camera slowly panning around, natural ambient movement, objects gently swaying, dynamic lighting changes, smooth transitions",totalDuration:30,firstFrameImage:"[图片1]"}}],warnings:["长视频生成需要较长时间,每个片段约1-3分钟,且串行生成","生成完成后会产生多个独立的视频文件,需要用户手动下载或合并","确保使用支持首尾帧的模型(如 veo3.1)以保证片段间的连贯性"]},execute:async(t,e)=>ur(t,e||{})},ve=60;function pr(t){var i,s;const e=[];for(const a of t.children)Xe(a)&&e.push(me.getRectangleByPoints(a.points));if(e.length===0){const a=((i=t.viewport)==null?void 0:i.zoom)??1,o=(s=t.viewport)==null?void 0:s.origination,c=o?o[0]:0,d=o?o[1]:0,u=Z.getBoardContainer(t),m=(u==null?void 0:u.clientWidth)??1920,l=(u==null?void 0:u.clientHeight)??1080,g=c+m/2/a,x=d+l/2/a;return[g-$/2,x-Y/2]}let r=-1/0,n=0;for(const a of e){const o=a.x+a.width;o>r&&(r=o,n=a.y)}return[r+ve,n]}function hr(t,e){const r=me.getRectangleByPoints(e.points),n=80,i=Z.getBoardContainer(t),s=i.clientWidth,a=i.clientHeight,o=s/(r.width+n*2),c=a/(r.height+n*2),d=Math.min(o,c,1),u=r.x+r.width/2,m=r.y+r.height/2,l=[u-s/2/d,m-a/2/d];Ze.updateViewport(t,l,d)}async function gr(t,e,r){const i=j.get().textModelName,s=Be({pageCount:e.pageCount,language:e.language,extraRequirements:e.extraRequirements}),a=We(t,e),o=[{role:"system",content:[{type:"text",text:s}]},{role:"user",content:[{type:"text",text:a}]}];let c="";const d=await ue.sendChat(o,u=>{c=u},void 0,i);return d.choices&&d.choices.length>0&&(c=d.choices[0].message.content||c),He(c)}function fr(t,e,r,n){const i=[n,[n[0]+$,n[1]+Y]],s=e.title||`Slide ${r}`,a=re.insertFrame(t,i,s),o={x:n[0],y:n[1],width:$,height:Y},c=Ye(e,o),d=Qe(c,o);for(const l of d){const g=l.point;if(l.text==="[图片区域]")continue;const x=t.children.length,p=Ke(l);if(le.insertText(t,g,p),t.children.length>x){const h=t.children[x];h&&re.bindToFrame(t,h,a)}}const u={layout:e.layout,pageIndex:r};e.imagePrompt&&(u.imagePrompt=e.imagePrompt,u.imageStatus="placeholder"),e.notes&&(u.notes=e.notes);const m=t.children.findIndex(l=>l.id===a.id);return m!==-1&&ae.setNode(t,{pptMeta:u},[m]),e.imagePrompt&&Je(t,a,e.imagePrompt),a}async function yr(t,e){var o,c,d,u,m,l,g,x,p,h,I,T;const{topic:r,pageCount:n,language:i,extraRequirements:s}=t;if(!r||typeof r!="string")return{success:!1,error:"缺少必填参数 topic(PPT 主题)",type:"error"};const a=B();if(!a)return{success:!1,error:"画布未初始化,请先打开画布",type:"error"};try{(o=e.onChunk)==null||o.call(e,`🎯 正在为「${r}」生成 PPT 大纲...
|
|
252
|
-
|
|
253
|
-
`);const w=await gr(r,t,f=>{});(c=e.onChunk)==null||c.call(e,`
|
|
254
|
-
|
|
255
|
-
✓ 大纲生成完成,共 ${w.pages.length} 页
|
|
256
|
-
|
|
257
|
-
`),(d=e.onChunk)==null||d.call(e,`📑 **PPT 结构**:
|
|
258
|
-
`),w.pages.forEach((f,M)=>{var P;const C=f.imagePrompt?" 🖼️":"";(P=e.onChunk)==null||P.call(e,`${M+1}. ${f.title} (${f.layout})${C}
|
|
259
|
-
`)}),(u=e.onChunk)==null||u.call(e,`
|
|
260
|
-
正在创建 Frame 并布局内容...
|
|
261
|
-
|
|
262
|
-
`);const k=pr(a),_=[];for(let f=0;f<w.pages.length;f++)_.push([k[0]+f*($+ve),k[1]]);const S=new Array(w.pages.length);let v=0;for(let f=0;f<w.pages.length;f++){const M=w.pages[f],C=f+1,P=_[f],F=fr(a,M,C,P);S[f]=F,v++,(m=e.onChunk)==null||m.call(e,`✓ 第 ${v}/${w.pages.length} 页已创建
|
|
263
|
-
`)}S[0]&&hr(a,S[0]);const b=w.pages.filter(f=>f.imagePrompt).length;return(l=e.onChunk)==null||l.call(e,`
|
|
264
|
-
🎉 **PPT 生成完成!**
|
|
265
|
-
`),(g=e.onChunk)==null||g.call(e,`- 共创建 ${v} 个 Frame
|
|
266
|
-
`),b>0&&((x=e.onChunk)==null||x.call(e,`- 其中 ${b} 页可配图(在 Frame 面板中点击配图按钮)
|
|
267
|
-
`)),(p=e.onChunk)==null||p.call(e,`
|
|
268
|
-
💡 **提示**:
|
|
269
|
-
`),(h=e.onChunk)==null||h.call(e,`- 在左侧「Frame」面板查看所有页面
|
|
270
|
-
`),(I=e.onChunk)==null||I.call(e,`- 点击页面可聚焦查看
|
|
271
|
-
`),(T=e.onChunk)==null||T.call(e,`- 点击「幻灯片播放」可全屏演示
|
|
272
|
-
`),{success:!0,data:{title:w.title,pageCount:v,pagesWithImage:b,outline:w},type:"text"}}catch(w){return console.error("[PPT] Generation failed:",w),{success:!1,error:w.message||"PPT 生成失败",type:"error"}}}const xr={name:"generate_ppt",description:`生成 PPT 演示文稿工具。根据用户提供的主题或内容描述,自动生成结构化的 PPT 演示文稿。
|
|
273
|
-
|
|
274
|
-
使用场景:
|
|
275
|
-
- 用户想要创建 PPT、演示文稿、幻灯片
|
|
276
|
-
- 用户提供了一个主题,想要生成对应的演示内容
|
|
277
|
-
- 关键词:PPT、演示文稿、幻灯片、presentation、slides
|
|
278
|
-
|
|
279
|
-
工作原理:
|
|
280
|
-
1. 调用 AI 生成 PPT 大纲(包含版式、标题、正文、配图提示词)
|
|
281
|
-
2. 自动创建多个 Frame(1920x1080),每个 Frame 代表一页
|
|
282
|
-
3. 根据版式规则在 Frame 内布局文本内容
|
|
283
|
-
4. 视口自动聚焦到第一页
|
|
284
|
-
|
|
285
|
-
支持的版式:
|
|
286
|
-
- cover: 封面页
|
|
287
|
-
- toc: 目录页
|
|
288
|
-
- title-body: 标题正文页
|
|
289
|
-
- image-text: 图文页
|
|
290
|
-
- comparison: 对比页
|
|
291
|
-
- ending: 结尾页
|
|
292
|
-
|
|
293
|
-
配图说明:
|
|
294
|
-
- 生成的 PPT 默认只包含文本内容
|
|
295
|
-
- AI 会为适合配图的页面生成 imagePrompt
|
|
296
|
-
- 用户可在 Frame 面板中选择性地为页面生成配图`,inputSchema:{type:"object",properties:{topic:{type:"string",description:"PPT 主题或内容描述"},pageCount:{type:"string",description:"页数控制:short(5-7页), normal(8-12页), long(13-18页)",enum:["short","normal","long"],default:"normal"},language:{type:"string",description:"输出语言,默认中文",default:"中文"},extraRequirements:{type:"string",description:"额外要求,如风格、重点内容等"}},required:["topic"]},supportedModes:["async"],promptGuidance:{whenToUse:"当用户想要创建 PPT、演示文稿、幻灯片时使用。关键词:PPT、演示文稿、幻灯片、presentation、slides、做个汇报、生成演示。",parameterGuidance:{topic:"用户的 PPT 主题或内容描述。可以是一个简单的主题词,也可以是详细的内容大纲。",pageCount:"根据用户需求选择:short 适合简短汇报(5-7页),normal 适合常规演示(8-12页),long 适合详细讲解(13-18页)。",language:"根据用户语言偏好设置,默认中文。如果用户用英文交流,可以设为 English。",extraRequirements:'用户的额外要求,如"简洁风格"、"重点突出数据"、"适合技术分享"等。'},bestPractices:["将用户的描述直接作为 topic 传递,工具会自动规划内容结构",'如果用户提到"简短"、"快速",使用 pageCount: "short"','如果用户提到"详细"、"完整",使用 pageCount: "long"',"生成完成后提醒用户可以在 Frame 面板中为页面添加配图"],examples:[{input:"帮我做一个关于人工智能发展的 PPT",args:{topic:"人工智能发展",pageCount:"normal",language:"中文"}},{input:"生成一个简短的产品介绍幻灯片",args:{topic:"产品介绍",pageCount:"short",language:"中文"}},{input:"Create a detailed presentation about climate change",args:{topic:"Climate Change",pageCount:"long",language:"English"}},{input:"做一个关于团队年度总结的 PPT,要突出数据和成果",args:{topic:"团队年度总结",pageCount:"normal",language:"中文",extraRequirements:"突出数据展示和成果呈现"}}],warnings:["PPT 生成需要几秒钟时间,请耐心等待","生成的 PPT 默认只包含文本,配图需要用户在 Frame 面板中手动触发","每次生成会创建新的 Frame,不会覆盖已有内容"]},execute:async(t,e)=>yr(t,e||{})},wr=new Set([",","。","!","?","“","”","‘","’",";",":","(",")","、","-","—","《","》",",",".","!","?",'"',"'",";",":","(",")","&","-","/","\\","[","]","{","}"]),Ie=new Set(["啊","哎","唉","吧","比","便","不","差不多","的","得","地","对","多少","哒","对于","诶","而","而且","二","非常","否","咯","跟","哈","哈哈","哈啊","哎呀","嘿","哼","很多","后","会","唧","或","或许","哟","几","及","假如","即使","即便","就","觉得","喀","可以","可能","啦","了","呃","吗","嘛","么","每","没","没有","哪里","那","那个","那么","呢","嗯","哦","其他","或者","呕","前","若","三","啥","什么","甚","甚至","十分","是","手","太","哇","为","为什么","无论","无","嘻嘻","些","许多","呀","哎哟","一","已经","应该","咦","因为","由","于","有","有的","咋","再","再说","怎","怎么","怎么样","这","这个","这样","总","总是","总之","a","about","above","after","again","against","all","am","an","and","any","are","aren't","as","at","be","because","been","before","being","below","between","both","but","by","can't","cannot","could","couldn't","did","didn't","do","does","doesn't","doing","don't","down","during","each","few","for","from","further","had","hadn't","has","hasn't","have","haven't","having","he","he'd","he'll","he's","her","here","here's","hers","herself","him","himself","his","how","how's","i","i'd","i'll","i'm","i've","if","in","into","is","isn't","it","it's","its","itself","let's","me","more","most","mustn't","my","myself","no","nor","not","of","off","on","once","only","or","other","ought","our","ours","ourselves","out","over","own","same","shan't","she","she'd","she'll","she's","should","shouldn't","so","some","such","than","that","that's","the","their","theirs","them","themselves","then","there","there's","these","they","they'd","they'll","they're","they've","this","those","through","to","too","under","until","up","very","was","wasn't","we","we'd","we'll","we're","we've","were","weren't","what","what's","when","when's","where","where's","which","while","who","who's","whom","why","why's","with","won't","would","wouldn't","you","you'd","you'll","you're","you've","your","yours","yourself","yourselves"]);function vr(t,e=2){if(!t||t.length<e)return[];const r=[];for(let n=0;n<=t.length-e;n++)r.push(t.substring(n,n+e));return r}function Te(t,e={}){const{ngramSize:r=2}=e,n=[];if(!t)return n;let i=t;wr.forEach(a=>{i=i.replace(new RegExp(a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g")," ")}),i=i.replace(/[.,!?;:()[\]{}"'`~@#$%^&*+=|\\<>\-]/g," ");const s=i.split(/\s+/).filter(Boolean);for(const a of s){const o=a.match(/[\u4e00-\u9fa5]+|[^\u4e00-\u9fa5]+/g)||[a];for(const c of o)if(/[\u4e00-\u9fa5]/.test(c))n.push(...vr(c,r));else{const d=c.match(/^([^_\d]*)([_\d]+)$/);d?d[1]?(n.push(d[1]),n.push(d[1]+d[2])):n.push(d[2]):n.push(c)}}return n}function Ir(t,e=Ie,r={}){for(const n of t)n&&!e.has(n)&&(r[n]=(r[n]||0)+1);return r}function G(t,e={}){return t?Ir(Te(t),Ie,e):e}function D(t,e){let r=0;for(const s in t)Object.prototype.hasOwnProperty.call(e,s)&&(r+=t[s]*(e[s]||0));let n=0;for(const s in t)n+=t[s]*t[s];n=Math.sqrt(n);let i=0;for(const s in e)i+=e[s]*e[s];return i=Math.sqrt(i),n===0||i===0?0:r/(n*i)}class Tr{constructor(){this.documentFrequency={},this.idfValues={},this.docCount=0,this.isFitted=!1}fit(e){this.docCount=e.length,this.documentFrequency={},this.idfValues={};for(const r of e)for(const n of Object.keys(r))this.documentFrequency[n]=(this.documentFrequency[n]||0)+1;for(const r in this.documentFrequency){const n=this.documentFrequency[r]||0;this.idfValues[r]=Math.log((this.docCount+1)/(n+1))+1}return this.isFitted=!0,this}getIdf(e){return this.idfValues[e]||0}getIdfValues(){return this.idfValues}get fitted(){return this.isFitted}}const Sr={limit:20,minSimilarity:.1,filter:{},includeContent:!1,snippetLength:200};class br{constructor(){this.documents=[],this.tfidfVectorizer=null,this.directoryMap=new Map,this.indexedVersions=new Map,this.isIndexed=!1,this.lastIndexTime=0}async buildIndex(){const[e,r]=await Promise.all([ne(),O()]);this.directoryMap.clear();for(const i of r)this.directoryMap.set(i.id,i);this.documents=[],this.indexedVersions.clear();const n=[];for(const i of e){const s=await Q(i.id),a=(s==null?void 0:s.content)||"",o=this._buildIndexedDoc(i,a);this.documents.push(o),this.indexedVersions.set(i.id,i.updatedAt),n.push(o.combinedVector)}n.length>0&&(this.tfidfVectorizer=new Tr,this.tfidfVectorizer.fit(n)),this.isIndexed=!0,this.lastIndexTime=Date.now()}async syncIndex(){const[e,r]=await Promise.all([ne(),O()]);this.directoryMap.clear();for(const o of r)this.directoryMap.set(o.id,o);const n=new Set;let i=0,s=0;for(const o of e){n.add(o.id);const c=this.indexedVersions.get(o.id);if(c===void 0||c<o.updatedAt){const d=await Q(o.id),u=(d==null?void 0:d.content)||"",m=this._buildIndexedDoc(o,u);if(c===void 0)this.documents.push(m),i++;else{const l=this.documents.findIndex(g=>g.id===o.id);l!==-1?this.documents[l]=m:this.documents.push(m),s++}this.indexedVersions.set(o.id,o.updatedAt)}}const a=[];for(const o of this.indexedVersions.keys())n.has(o)||a.push(o);for(const o of a)this.documents=this.documents.filter(c=>c.id!==o),this.indexedVersions.delete(o);return this.lastIndexTime=Date.now(),{added:i,updated:s,removed:a.length}}async ensureIndex(){this.isIndexed?await this.syncIndex():await this.buildIndex()}async search(e,r){var a;const n={...Sr,...r};if(!e.trim())return[];if(await this.ensureIndex(),this.documents.length===0)return[];const i=G(e),s=[];for(const o of this.documents){if(n.filter.directoryId&&o.directoryId!==n.filter.directoryId||n.filter.domain&&((a=o.metadata)==null?void 0:a.domain)!==n.filter.domain)continue;const c=D(i,o.titleVector),d=D(i,o.contentVector),u=D(i,o.metadataVector),m=D(i,o.combinedVector),l=Math.max(m,c*1.5,d,u*1.3);l>=n.minSimilarity&&s.push({doc:o,similarity:l})}return s.sort((o,c)=>c.similarity-o.similarity),s.slice(0,n.limit).map(({doc:o,similarity:c})=>{var u,m;const d=this.directoryMap.get(o.directoryId);return{id:o.id,title:o.title,snippet:this._generateSnippet(o.content,e,n.snippetLength),content:n.includeContent?o.content:"",similarity:c,directoryId:o.directoryId,directoryName:d==null?void 0:d.name,sourceUrl:(u=o.metadata)==null?void 0:u.sourceUrl,domain:(m=o.metadata)==null?void 0:m.domain,updatedAt:o.updatedAt,createdAt:o.createdAt,metadata:o.metadata}})}async getRelatedNotes(e,r=5){await this.ensureIndex();const n=this.documents.find(s=>s.id===e);if(!n)return[];const i=[];for(const s of this.documents){if(s.id===e)continue;const a=D(n.combinedVector,s.combinedVector);a>.1&&i.push({doc:s,similarity:a})}return i.sort((s,a)=>a.similarity-s.similarity),i.slice(0,r).map(({doc:s,similarity:a})=>{var c,d;const o=this.directoryMap.get(s.directoryId);return{id:s.id,title:s.title,snippet:s.content.substring(0,200)+(s.content.length>200?"...":""),content:"",similarity:a,directoryId:s.directoryId,directoryName:o==null?void 0:o.name,sourceUrl:(c=s.metadata)==null?void 0:c.sourceUrl,domain:(d=s.metadata)==null?void 0:d.domain,updatedAt:s.updatedAt,createdAt:s.createdAt,metadata:s.metadata}})}addNote(e,r,n,i,s,a,o){this.documents=this.documents.filter(d=>d.id!==e);const c={id:e,title:r,directoryId:i,updatedAt:s,createdAt:a,metadata:o};this.documents.push(this._buildIndexedDoc(c,n)),this.indexedVersions.set(e,s)}removeNote(e){this.documents=this.documents.filter(r=>r.id!==e),this.indexedVersions.delete(e)}getStats(){return{documentCount:this.documents.length,isIndexed:this.isIndexed,lastIndexTime:this.lastIndexTime}}clearIndex(){this.documents=[],this.indexedVersions.clear(),this.tfidfVectorizer=null,this.isIndexed=!1,this.lastIndexTime=0}_buildIndexedDoc(e,r){const n=G(e.title),i=G(r),s=this._buildMetadataText(e.metadata),a=G(s),o={};for(const[c,d]of Object.entries(n))o[c]=(o[c]||0)+d*2;for(const[c,d]of Object.entries(i))o[c]=(o[c]||0)+d;for(const[c,d]of Object.entries(a))o[c]=(o[c]||0)+d*1.5;return{id:e.id,title:e.title,content:r,directoryId:e.directoryId,updatedAt:e.updatedAt,createdAt:e.createdAt,metadata:e.metadata,titleVector:n,contentVector:i,metadataVector:a,combinedVector:o}}_buildMetadataText(e){if(!e)return"";const r=[];return e.domain&&r.push(e.domain),e.tags&&r.push(...e.tags),r.join(" ")}_generateSnippet(e,r,n){if(!e)return"";const i=Te(r),s=e.toLowerCase();let a=0,o=0;for(const m of i){const l=s.indexOf(m.toLowerCase());if(l!==-1){const g=Math.max(0,l-50),x=Math.min(e.length,l+50),p=s.substring(g,x);let h=0;for(const I of i)p.includes(I.toLowerCase())&&h++;h>o&&(o=h,a=l)}}const c=Math.max(0,a-Math.floor(n/2)),d=Math.min(e.length,c+n);let u=e.substring(c,d);return c>0&&(u="..."+u),d<e.length&&(u=u+"..."),u}}let H=null;function kr(){return H||(H=new br),H}const Cr={name:"search_notes",description:`在知识库中搜索笔记。使用语义搜索(TF-IDF + 余弦相似度)返回最相关的笔记摘要。
|
|
297
|
-
|
|
298
|
-
使用场景:
|
|
299
|
-
- 用户问到"我之前保存过…"、"关于XX的笔记"
|
|
300
|
-
- 需要查找知识库中的信息用于回答问题
|
|
301
|
-
- 查找与某个主题相关的所有笔记`,inputSchema:{type:"object",properties:{query:{type:"string",description:"搜索关键词或语义查询"},limit:{type:"number",description:"返回结果数量上限,默认 10"},directoryId:{type:"string",description:"限制在指定目录中搜索(可选)"}},required:["query"]},promptGuidance:{whenToUse:"当用户需要搜索知识库中的信息时使用,支持语义搜索",parameterGuidance:{query:"尽量使用核心关键词或简短的自然语言描述",limit:"一般用默认值即可,除非用户明确说了需要几条"},bestPractices:["优先使用核心词搜索,避免过长的句子","如果搜索不到结果,尝试换关键词","结合 get_note 工具获取完整内容"],examples:[{input:"搜索关于 React 的笔记",args:{query:"React"},explanation:"使用核心关键词搜索"},{input:"找一下上周保存的 AI 文章",args:{query:"AI 文章"},explanation:"自然语言搜索"}]},execute:async t=>{const e=t.query,r=t.limit||10,n=t.directoryId;if(!(e!=null&&e.trim()))return{success:!1,error:"搜索关键词不能为空",type:"error"};try{const s=await kr().search(e,{limit:r,filter:n?{directoryId:n}:{},includeContent:!1,snippetLength:200});return s.length>0?{success:!0,type:"text",data:s.map(d=>({id:d.id,title:d.title,excerpt:d.snippet,similarity:Math.round(d.similarity*100)/100,directoryName:d.directoryName,domain:d.domain,updatedAt:new Date(d.updatedAt).toISOString()}))}:{success:!0,type:"text",data:(await et(e)).slice(0,r).map(c=>({id:c.id,title:c.title,directoryId:c.directoryId,updatedAt:new Date(c.updatedAt).toISOString()}))}}catch(i){return{success:!1,error:`搜索失败: ${i.message}`,type:"error"}}}},Pr={name:"get_note",description:`获取知识库中某篇笔记的完整内容。
|
|
302
|
-
|
|
303
|
-
使用场景:
|
|
304
|
-
- 搜索到笔记后需要查看完整内容
|
|
305
|
-
- 用户指定了笔记 ID 要查看详情`,inputSchema:{type:"object",properties:{id:{type:"string",description:"笔记 ID"}},required:["id"]},promptGuidance:{whenToUse:"在 search_notes 返回结果后,需要获取某篇笔记的完整内容时使用",parameterGuidance:{id:"使用 search_notes 返回结果中的 id 字段"},examples:[{input:"查看笔记详情",args:{id:"note_12345"},explanation:"传入 search_notes 返回的笔记 ID"}]},execute:async t=>{const e=t.id;if(!e)return{success:!1,error:"笔记 ID 不能为空",type:"error"};try{const r=await Q(e);return r?{success:!0,type:"text",data:{id:r.id,title:r.title,content:r.content,directoryId:r.directoryId,createdAt:new Date(r.createdAt).toISOString(),updatedAt:new Date(r.updatedAt).toISOString(),metadata:r.metadata}}:{success:!1,error:"笔记不存在",type:"error"}}catch(r){return{success:!1,error:`获取笔记失败: ${r.message}`,type:"error"}}}},_r={name:"create_note",description:`在知识库中创建新笔记。支持 Markdown 格式内容、指定目录、标签和来源 URL。
|
|
306
|
-
|
|
307
|
-
使用场景:
|
|
308
|
-
- 用户要求保存内容到知识库
|
|
309
|
-
- AI 对话中用户说"帮我记住这个"
|
|
310
|
-
- 保存 AI 生成的内容供后续参考`,inputSchema:{type:"object",properties:{title:{type:"string",description:"笔记标题"},content:{type:"string",description:"笔记内容(支持 Markdown 格式)"},directoryName:{type:"string",description:'目录名称(不存在则自动创建),默认为"笔记"'},tags:{type:"array",description:"标签列表(字符串数组,不存在则自动创建)"},sourceUrl:{type:"string",description:"来源 URL(可选)"}},required:["title","content"]},promptGuidance:{whenToUse:"当用户要求将信息保存到知识库时使用",parameterGuidance:{title:"简洁明了的标题,概括笔记核心内容",content:"完整的笔记内容,建议使用 Markdown 格式",directoryName:"根据内容类型推断合适的目录名称",tags:"提取内容中的核心主题作为标签"},bestPractices:["自动为笔记生成 2-4 个有意义的标签","标题控制在 50 字以内","内容保持完整结构化"],examples:[{input:"帮我保存这段关于 React Hooks 的笔记",args:{title:"React Hooks 使用指南",content:`## React Hooks
|
|
311
|
-
|
|
312
|
-
核心 Hook 包括...`,directoryName:"技术笔记",tags:["React","Hooks","前端"]}}]},execute:async t=>{const e=t.title,r=t.content,n=t.directoryName||"笔记",i=t.tags,s=t.sourceUrl;if(!(e!=null&&e.trim()))return{success:!1,error:"标题不能为空",type:"error"};if(!(r!=null&&r.trim()))return{success:!1,error:"内容不能为空",type:"error"};try{let o=(await O()).find(u=>u.name===n);o||(o=await tt(n));const c=s?{sourceUrl:s}:void 0,d=await rt(e,o.id,r,c);if(i&&i.length>0)for(const u of i){const m=await nt(u);await st(d.id,m.id)}return{success:!0,type:"text",data:{id:d.id,title:d.title,message:"笔记创建成功"}}}catch(a){return{success:!1,error:`创建笔记失败: ${a.message}`,type:"error"}}}},Er={name:"list_directories",description:`列出知识库中的所有目录。
|
|
313
|
-
|
|
314
|
-
使用场景:
|
|
315
|
-
- 需要了解知识库的目录结构
|
|
316
|
-
- 创建笔记前查看可用目录`,inputSchema:{type:"object",properties:{}},execute:async()=>{try{return{success:!0,type:"text",data:(await O()).map(e=>({id:e.id,name:e.name,isDefault:e.isDefault,createdAt:new Date(e.createdAt).toISOString()}))}}catch(t){return{success:!1,error:`获取目录失败: ${t.message}`,type:"error"}}}},Mr=[Cr,Pr,_r,Er];function Ar(t){const e=t.prompt||ot;if(!t.audioData&&!t.audioCacheUrl)return{success:!1,error:"需要提供 audioData 或 audioCacheUrl",type:"error"};const r=E.createTask({prompt:t.taskLabel||"音频分析",model:t.model,modelRef:t.modelRef||null,mimeType:t.mimeType||"audio/mpeg",audioData:t.audioData,audioCacheUrl:t.audioCacheUrl,musicAnalyzerAction:"analyze",musicAnalyzerPrompt:e,musicAnalyzerSource:t.musicAnalyzerSource,musicAnalyzerSourceLabel:t.musicAnalyzerSourceLabel,musicAnalyzerSourceSnapshot:t.musicAnalyzerSourceSnapshot,autoInsertToCanvas:!1},A.CHAT);return{success:!0,data:{taskId:r.id,prompt:t.taskLabel||"音频分析",model:t.model},type:"text",taskId:r.id,task:r}}const Nr={name:"audio_analyze",description:"分析音频内容,返回结构化的音乐风格、情绪、Suno 标签和歌词改写建议",supportedModes:["async","queue"],inputSchema:{type:"object",properties:{audioData:{type:"string",description:"base64 编码的音频数据(不含 data: 前缀)"},mimeType:{type:"string",description:"音频 MIME 类型,默认 audio/mpeg",default:"audio/mpeg"},audioCacheUrl:{type:"string",description:"本地缓存的音频 URL(队列模式)"},prompt:{type:"string",description:"自定义分析 prompt(可选,有内置默认值)"},model:{type:"string",description:"Gemini 多模态模型 ID,默认使用当前文本模型"}},required:[]},execute:async(t,e)=>(e==null?void 0:e.mode)==="queue"?Ar(t):it(t)};let se=!1;function Gr(){se||(se=!0,at.registerAll([ct,dt,yt,Tt,mr,ut,St,Ut,Ft,zt,Ht,Qt,ir,xr,...Mr,mt,Nr]))}export{jr as S,kr as g,Gr as i,Fr as s,qr as u};
|
package/assets/index-CU4ySaQE.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{T as P,X as g,a8 as l,R as q,P as r}from"./index-vvV37Q1S.js";import{html as c}from"./index-B10kMZoq.js";import{javascriptLanguage as s}from"./index-DMIwLDS8.js";import{L as R,E as p}from"./index-D489cJtb.js";import"./tool-windows-CtLXQDGF.js";import"./katex-Cu_Erd72.js";import"./index-D4qm_1m5.js";import"./browser-Dya3c6_X.js";/* empty css */import"./index-CLU4LJjR.js";const m=1,b=33,$=34,v=35,x=36,W=new p(O=>{let t=O.pos;for(;;){if(O.next==10){O.advance();break}else if(O.next==123&&O.peek(1)==123||O.next<0)break;O.advance()}O.pos>t&&O.acceptToken(m)});function n(O,t,a){return new p(e=>{let u=e.pos;for(;e.next!=O&&e.next>=0&&(a||e.next!=38&&(e.next!=123||e.peek(1)!=123));)e.advance();e.pos>u&&e.acceptToken(t)})}const d=n(39,b,!1),f=n(34,$,!1),C=n(39,v,!0),T=n(34,x,!0),A=R.deserialize({version:14,states:"(jOVOqOOOeQpOOOvO!bO'#CaOOOP'#Cx'#CxQVOqOOO!OQpO'#CfO!WQpO'#ClO!]QpO'#CrO!bQpO'#CsOOQO'#Cv'#CvQ!gQpOOQ!lQpOOQ!qQpOOOOOV,58{,58{O!vOpO,58{OOOP-E6v-E6vO!{QpO,59QO#TQpO,59QOOQO,59W,59WO#YQpO,59^OOQO,59_,59_O#_QpOOO#_QpOOO#gQpOOOOOV1G.g1G.gO#oQpO'#CyO#tQpO1G.lOOQO1G.l1G.lO#|QpO1G.lOOQO1G.x1G.xO$UO`O'#DUO$ZOWO'#DUOOQO'#Co'#CoQOQpOOOOQO'#Cu'#CuO$`OtO'#CwO$qOrO'#CwOOQO,59e,59eOOQO-E6w-E6wOOQO7+$W7+$WO%SQpO7+$WO%[QpO7+$WOOOO'#Cp'#CpO%aOpO,59pOOOO'#Cq'#CqO%fOpO,59pOOOS'#Cz'#CzO%kOtO,59cOOQO,59c,59cOOOQ'#C{'#C{O%|OrO,59cO&_QpO<<GrOOQO<<Gr<<GrOOQO1G/[1G/[OOOS-E6x-E6xOOQO1G.}1G.}OOOQ-E6y-E6yOOQOAN=^AN=^",stateData:"&d~OvOS~OPROSQOVROWRO~OZTO[XO^VOaUOhWO~OR]OU^O~O[`O^aO~O[bO~O[cO~O[dO~ObeO~ObfO~ObgO~ORhO~O]kOwiO~O[lO~O_mO~OynOzoO~OysOztO~O[uO~O]wOwiO~O_yOwiO~OtzO~Os|O~OSQOV!OOW!OOr!OOy!QO~OSQOV!ROW!ROq!ROz!QO~O_!TOwiO~O]!UO~Oy!VO~Oz!VO~OSQOV!OOW!OOr!OOy!XO~OSQOV!ROW!ROq!ROz!XO~O]!ZO~O",goto:"#dyPPPPPzPPPP!WPPPPP!WPP!Z!^!a!d!dP!g!j!m!p!v#Q#WPPPPPPPP#^SROSS!Os!PT!Rt!SRYPRqeR{nR}oRZPRqfR[PRqgQSOR_SQj`SvjxRxlQ!PsR!W!PQ!StR!Y!SQpeRrf",nodeNames:"⚠ Text Content }} {{ Interpolation InterpolationContent Entity InvalidEntity Attribute BoundAttributeName [ Identifier ] ( ) ReferenceName # Is ExpressionAttributeValue AttributeInterpolation AttributeInterpolation EventName DirectiveName * StatementAttributeValue AttributeName AttributeValue",maxTerm:42,nodeProps:[["openedBy",3,"{{",15,"("],["closedBy",4,"}}",14,")"],["isolate",-4,5,19,25,27,""]],skippedNodes:[0],repeatNodeCount:4,tokenData:"0r~RyOX#rXY$mYZ$mZ]#r]^$m^p#rpq$mqr#rrs%jst&Qtv#rvw&hwx)zxy*byz*xz{+`{}#r}!O+v!O!P-]!P!Q#r!Q![+v![!]+v!]!_#r!_!`-s!`!c#r!c!}+v!}#O.Z#O#P#r#P#Q.q#Q#R#r#R#S+v#S#T#r#T#o+v#o#p/X#p#q#r#q#r0Z#r%W#r%W;'S+v;'S;:j-V;:j;=`$g<%lO+vQ#wTUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rQ$ZSO#q#r#r;'S#r;'S;=`$g<%lO#rQ$jP;=`<%l#rR$t[UQvPOX#rXY$mYZ$mZ]#r]^$m^p#rpq$mq#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR%qTyPUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR&XTaPUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR&oXUQWPOp'[pq#rq!]'[!]!^#r!^#q'[#q#r(d#r;'S'[;'S;=`)t<%lO'[R'aXUQOp'[pq#rq!]'[!]!^'|!^#q'[#q#r(d#r;'S'[;'S;=`)t<%lO'[R(TTVPUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR(gXOp'[pq#rq!]'[!]!^'|!^#q'[#q#r)S#r;'S'[;'S;=`)t<%lO'[P)VUOp)Sq!])S!]!^)i!^;'S)S;'S;=`)n<%lO)SP)nOVPP)qP;=`<%l)SR)wP;=`<%l'[R*RTzPUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR*iT^PUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR+PT_PUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR+gThPUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR+}b[PUQO}#r}!O+v!O!Q#r!Q![+v![!]+v!]!c#r!c!}+v!}#R#r#R#S+v#S#T#r#T#o+v#o#q#r#q#r$W#r%W#r%W;'S+v;'S;:j-V;:j;=`$g<%lO+vR-YP;=`<%l+vR-dTwPUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR-zTUQbPO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR.bTZPUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR.xT]PUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR/^VUQO#o#r#o#p/s#p#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#rR/zTSPUQO#q#r#q#r$W#r;'S#r;'S;=`$g<%lO#r~0^TO#q#r#q#r0m#r;'S#r;'S;=`$g<%lO#r~0rOR~",tokenizers:[W,d,f,C,T,0,1],topRules:{Content:[0,2],Attribute:[1,9]},tokenPrec:0}),V=s.parser.configure({top:"SingleExpression"}),Q=A.configure({props:[q({Text:r.content,Is:r.definitionOperator,AttributeName:r.attributeName,"AttributeValue ExpressionAttributeValue StatementAttributeValue":r.attributeValue,Entity:r.character,InvalidEntity:r.invalid,"BoundAttributeName/Identifier":r.attributeName,"EventName/Identifier":r.special(r.attributeName),"ReferenceName/Identifier":r.variableName,"DirectiveName/Identifier":r.keyword,"{{ }}":r.brace,"( )":r.paren,"[ ]":r.bracket,"# '*'":r.punctuation})]}),o={parser:V},w={parser:s.parser},U=Q.configure({wrap:l((O,t)=>O.name=="InterpolationContent"?o:null)}),y=Q.configure({wrap:l((O,t)=>{var a;return O.name=="InterpolationContent"?o:O.name!="AttributeInterpolation"?null:((a=O.node.parent)===null||a===void 0?void 0:a.name)=="StatementAttributeValue"?w:o}),top:"Attribute"}),E={parser:U},N={parser:y},i=c({selfClosingTags:!0});function S(O){return O.configure({wrap:l(z)},"angular")}const k=S(i.language);function z(O,t){switch(O.name){case"Attribute":return/^[*#(\[]|\{\{/.test(t.read(O.from,O.to))?N:null;case"Text":return E}return null}function M(O={}){let t=i;if(O.base){if(O.base.language.name!="html"||!(O.base.language instanceof P))throw new RangeError("The base option must be the result of calling html(...)");t=O.base}return new g(t.language==i.language?k:S(t.language),[t.support,t.language.data.of({closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/})])}export{M as angular,k as angularLanguage};
|
package/assets/index-CsCwwmYY.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{T as t,X as i,_ as n,$,a0 as y,a3 as m,R as P,P as O}from"./index-vvV37Q1S.js";import{defineCSSCompletionSource as X}from"./index-CLU4LJjR.js";import{L as c,E as S}from"./index-D489cJtb.js";import"./tool-windows-CtLXQDGF.js";import"./katex-Cu_Erd72.js";import"./index-D4qm_1m5.js";import"./browser-Dya3c6_X.js";/* empty css */const f=110,l=1,s=2,r=[9,10,11,12,13,32,133,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288];function e(T){return T>=65&&T<=90||T>=97&&T<=122||T>=161}function p(T){return T>=48&&T<=57}const W=new S((T,Q)=>{if(T.next==40){let a=T.peek(-1);(e(a)||p(a)||a==95||a==45)&&T.acceptToken(s,1)}}),d=new S(T=>{if(r.indexOf(T.peek(-1))>-1){let{next:Q}=T;(e(Q)||Q==95||Q==35||Q==46||Q==91||Q==58||Q==45)&&T.acceptToken(f)}}),Z=new S(T=>{if(r.indexOf(T.peek(-1))<0){let{next:Q}=T;if(Q==37&&(T.advance(),T.acceptToken(l)),e(Q)){do T.advance();while(e(T.next));T.acceptToken(l)}}}),w=P({"import charset namespace keyframes media supports when":O.definitionKeyword,"from to selector":O.keyword,NamespaceName:O.namespace,KeyframeName:O.labelName,TagName:O.tagName,ClassName:O.className,PseudoClassName:O.constant(O.className),IdName:O.labelName,"FeatureName PropertyName PropertyVariable":O.propertyName,AttributeName:O.attributeName,NumberLiteral:O.number,KeywordQuery:O.keyword,UnaryQueryOp:O.operatorKeyword,"CallTag ValueName":O.atom,VariableName:O.variableName,"AtKeyword Interpolation":O.special(O.variableName),Callee:O.operatorKeyword,Unit:O.unit,"UniversalSelector NestingSelector":O.definitionOperator,MatchOp:O.compareOperator,"ChildOp SiblingOp, LogicOp":O.logicOperator,BinOp:O.arithmeticOperator,Important:O.modifier,"Comment LineComment":O.blockComment,ColorLiteral:O.color,"ParenthesizedContent StringLiteral":O.string,Escape:O.special(O.string),": ...":O.punctuation,"PseudoOp #":O.derefOperator,"; ,":O.separator,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace}),z={__proto__:null,lang:40,"nth-child":40,"nth-last-child":40,"nth-of-type":40,"nth-last-of-type":40,dir:40,"host-context":40,and:244,or:244,not:74,only:74,url:86,"url-prefix":86,domain:86,regexp:86,when:117,selector:142,from:172,to:174},h={__proto__:null,"@import":126,"@plugin":126,"@media":152,"@charset":156,"@namespace":160,"@keyframes":166,"@supports":178},g=c.deserialize({version:14,states:"@^O!gQWOOO!nQaO'#CeOOQP'#Cd'#CdO$RQWO'#CgO$xQaO'#EaO%cQWO'#CiO%kQWO'#DZO%pQWO'#D^O%uQaO'#DfOOQP'#Es'#EsO'YQWO'#DlO'yQWO'#DyO(QQWO'#D{O(xQWO'#D}O)TQWO'#EQO'bQWO'#EWO)YQ`O'#FTO)]Q`O'#FTO)hQ`O'#FTO)vQWO'#EYOOQO'#Er'#ErOOQO'#FV'#FVOOQO'#Ec'#EcO){QWO'#EqO*WQWO'#EqQOQWOOOOQP'#Ch'#ChOOQP,59R,59RO$RQWO,59RO*bQWO'#EdO+PQWO,58|O+_QWO,59TO%kQWO,59uO%pQWO,59xO*bQWO,59{O*bQWO,59}OOQO'#De'#DeO*bQWO,5:OO,bQpO'#E}O,iQWO'#DkOOQO,58|,58|O(QQWO,58|O,pQWO,5:{OOQO,5:{,5:{OOQT'#Cl'#ClO-UQeO,59TO.cQ[O,59TOOQP'#D]'#D]OOQP,59u,59uOOQO'#D_'#D_O.hQpO,59xOOQO'#EZ'#EZO.pQ`O,5;oOOQO,5;o,5;oO/OQWO,5:WO/VQWO,5:WOOQS'#Dn'#DnO/rQWO'#DsO/yQ!fO'#FRO0eQWO'#DtOOQS'#FS'#FSO+YQWO,5:eO'bQWO'#DrOOQS'#Cu'#CuO(QQWO'#CwO0jQ!hO'#CyO2^Q!fO,5:gO2oQWO'#DWOOQS'#Ex'#ExO(QQWO'#DQOOQO'#EP'#EPO2tQWO,5:iO2yQWO,5:iOOQO'#ES'#ESO3RQWO,5:lO3WQ!fO,5:rO3iQ`O'#EkO.pQ`O,5;oOOQO,5:|,5:|O3zQWO,5:tOOQO,5:},5:}O4XQWO,5;]OOQO-E8a-E8aOOQP1G.m1G.mOOQP'#Ce'#CeO5RQaO,5;OOOQP'#Df'#DfOOQO-E8b-E8bOOQO1G.h1G.hO(QQWO1G.hO5fQWO1G.hO5nQeO1G.oO.cQ[O1G.oOOQP1G/a1G/aO6{QpO1G/dO7fQaO1G/gO8cQaO1G/iO9`QaO1G/jO:]Q!fO'#FOO:yQ!fO'#ExOOQO'#FO'#FOOOQO,5;i,5;iO<^QWO,5;iO<iQWO,5:VO<nQ!fO1G.hOOQO1G0g1G0gO=PQWO'#CnOOQP1G.o1G.oO=WQWO'#CqOOQP1G/d1G/dO(QQWO1G/dO=_Q`O1G1ZOOQO1G1Z1G1ZO=mQWO1G/rO=rQ!fO'#FQO>WQWO1G/rO>]Q!fO'#DnO>qQWO,5:ZO>vQ!fO,5:_OOQO'#DP'#DPO'bQWO,5:]O?XQWO'#DwOOQS,5:b,5:bO?`QWO,5:dO'bQWO'#EiO?gQWO,5;mO*bQWO,5:`OOQO1G0P1G0PO?uQ!fO,5:^O@aQ!fO,59cOOQS,59e,59eO(QQWO,59iOOQS,59n,59nO@rQWO,59pOOQO1G0R1G0RO@yQ#tO,59rOARQ!fO,59lOOQO1G0T1G0TOBrQWO1G0TOBwQWO'#ETOOQO1G0W1G0WOOQO1G0^1G0^OOQO,5;V,5;VOOQO-E8i-E8iOCVQ!fO1G0bOCvQWO1G0`O%kQWO'#E_O$RQWO'#E`OEZQWO'#E^OOQO1G0b1G0bPEkQWO'#EcO<nQ!fO7+$SOOQO7+$S7+$SO(QQWO7+$SOOQP7+$Z7+$ZOOQP7+%O7+%OO(QQWO7+%OOEpQ!fO'#EeOF}QWO,5;jO(QQWO,5;jOOQO,5;j,5;jO+gQpO'#EgOG[QWO1G1TOOQO1G1T1G1TOOQO1G/q1G/qOGgQaO'#EvOGnQWO,59YOGsQWO'#EwOG}QWO,59]OHSQ!fO7+%OOOQO7+&u7+&uOOQO7+%^7+%^O(QQWO'#EhOHeQWO,5;lOHmQWO7+%^O(QQWO1G/uOOQS1G/y1G/yOOQS1G/w1G/wOHrQWO,5:cOHwQ!fO1G0OOOQS1G0O1G0OOIYQ!fO,5;TOOQO-E8g-E8gOItQaO1G/zOOQS1G.}1G.}OOQS1G/T1G/TOI{Q!fO1G/[OOQS1G/[1G/[OJ^QWO1G/^OOQO7+%o7+%oOJcQYO'#CyO+YQWO'#EjOJkQWO,5:oOOQO,5:o,5:oOJyQ!fO'#ElO(QQWO'#ElOL^QWO7+%|OOQO7+%|7+%|OOQO7+%z7+%zOOQO,5:y,5:yOOQO,5:z,5:zOLqQaO,5:xOOQO,5:x,5:xOOQO<<Gn<<GnO<nQ!fO<<GnOMRQ!fO<<HjOOQO-E8c-E8cOMdQWO1G1UOOQO,5;R,5;ROOQO-E8e-E8eOOQO7+&o7+&oOMqQWO,5;bOOQP1G.t1G.tO(QQWO'#EfOMyQWO,5;cOOQT1G.w1G.wOOQP<<Hj<<HjONRQ!fO,5;SOOQO-E8f-E8fO/OQWO<<HxONgQWO7+%aOOQS1G/}1G/}OOQS7+%j7+%jOOQS7+%f7+%fOOQS7+$v7+$vOOQS7+$x7+$xOOQO,5;U,5;UOOQO-E8h-E8hOOQO1G0Z1G0ZONnQ!fO,5;WOOQO-E8j-E8jOOQO<<Ih<<IhOOQO1G0d1G0dOOQOAN=YAN=YOOQPAN>UAN>UO!!RQWO,5;QOOQO-E8d-E8dO!!]QWOAN>dOOQS<<H{<<H{OOQOG24OG24O",stateData:"!!n~O#dOSROSSOS~OVXOYXO^TO_TOfaOgbOoaOpWOyVO!OUO!aYO!nZO!p[O!r]O!u^O!{_O#hPO#iRO~O#a#eP~P]O^XX^!}X_XXcXXjXXp!}XyXX!OXX!UXX!ZXX![XX!^XX#PXX#aXX#bXX#iXX#oXX#pXX#p!}X#x!}X!]XX~O#hjO~O^oO_oOcmOyqO!OpO!UrO#bsO#ilO#otO#ptO~OjvO![yO!^wO#P{O!Z#TX#a#TX!]#TX~P$WOd!OO#h|O~O#h!PO~O#h!RO~O#h!TO#p!VO#x!VO^!YX^#wX_!YXc!YXj!YXy!YX!O!YX!U!YX!Z!YX![!YX!^!YX#P!YX#a!YX#b!YX#i!YX#o!YX#p!YX!]!YX~Oj!XOn!WO~Og!^Oj!ZOo!^Op!^Ou!`O!i!]O#h!YO~O!^#uP~P'bOf!fOg!fOh!fOj!bOl!fOn!fOo!fOp!fOu!gO{!eO#h!aO#m!cO~On!iO{!eO#h!hO~O#h!kO~Op!nO#p!VO#x!VO^#wX~OjvO#p!VO#x!VO^#wX~O^!qO~O!Z!rO#a#eX!]#eX~O#a#eX!]#eX~P]OVXOYXO^TO_TOp!xOyVO!OUO#h!vO#iRO~OcmOjvO![!{O!^wO~Od#OO#h|O~Of!fOg#VOh!fOj!bOl!fOn!fOo!fOp!fOu!gO{!eO#h!aO#m!cO#s#WO~Oa#XO~P+gO!]#eP~P]O![!{O!^wO#P#]O!Z#Ta#a#Ta!]#Ta~OQ#^O^]a_]ac]aj]ay]a!O]a!U]a!Z]a![]a!^]a#P]a#a]a#b]a#i]a#o]a#p]a!]]aa]a~OQ#`O~Ow#aO!S#bO~Op!nO#p#dO#x#dO^#wa~O!Z#uP~P'bOa#tP~P(QOg!^Oj!ZOo!^Op!^Ou!`O!i!]O~O#h#hO~P/^OQ#mOc#pOr#lOy#oO#n#kO!^#uX!Z#uXa#uX~Oj#rO~OP#vOQmXrmXymX!ZmX#nmX^mXamXcmXfmXgmXhmXjmXlmXnmXomXpmXumX{mX#hmX#mmX!^mX#PmX#amXwmX!]mX~OQ#`Or#wOy#yO!Z#zO#n#kO~Oj#{O~O!Z#}O~On$OO{!eO~O!^$PO~OQ#mOr#lOy#oO!^wO#n#kO~O#h!TO^#_Xp#_X#p#_X#x#_X~O!O$WO!^wO#i$XO~P(QO!Z!rO#a#ea!]#ea~O^oO_oOyqO!OpO!UrO#bsO#ilO#otO#ptO~Oc#Waj#Wa![#Wa!^#Waa#Wa~P4dO![$_O!^wO~OQ#^O^]i_]ic]ij]iy]i!O]i!U]i!Z]i![]i!^]i#P]i#a]i#b]i#i]i#o]i#p]i!]]ia]i~Ow$aO!S$bO~O^oO_oOyqO!OpO#ilO~Oc!Tij!Ti!U!Ti!Z!Ti![!Ti!^!Ti#P!Ti#a!Ti#b!Ti#o!Ti#p!Ti!]!Tia!Ti~P7TOc!Vij!Vi!U!Vi!Z!Vi![!Vi!^!Vi#P!Vi#a!Vi#b!Vi#o!Vi#p!Vi!]!Via!Vi~P7TOc!Wij!Wi!U!Wi!Z!Wi![!Wi!^!Wi#P!Wi#a!Wi#b!Wi#o!Wi#p!Wi!]!Wia!Wi~P7TOQ#`O^$eOr#wOy#yO#n#kOa#rXc#rX!Z#rX~P(QO#s$fOQ#lX^#lXa#lXc#lXf#lXg#lXh#lXj#lXl#lXn#lXo#lXp#lXr#lXu#lXy#lX{#lX!Z#lX#h#lX#m#lX#n#lX~Oa$iOc$gO!Z$gO~O!]$jO~OQ#`Or#wOy#yO!^wO#n#kO~Oa#jP~P*bOa#kP~P(QOp!nO#p$pO#x$pO^#wi~O!Z$qO~OQ#`Oc$rOr#wOy#yO#n#kOa#tX~Oa$tO~OQ!bX^!dXa!bXr!bXy!bX#n!bX~O^$uO~OQ#mOa$vOr#lOy#oO#n#kO~Oa#uP~P'bOw$zO~P(QOc#pO!^#ua!Z#uaa#ua~OQ#mOr#lOy#oO#n#kOc!fa!^!fa!Z!faa!fa~OQ#`Oa%OOr#wOy#yO#n#kO~Ow%RO~P(QOn%SO|%SO~OQ#`Or#wOy#yO#n#kO!Zta^taatactaftagtahtajtaltantaotaptauta{ta#hta#mta!^ta#Pta#atawta!]ta~O!Z%TO~O!]%XO!x%VO!y%VO#m%UO~OQ#`Oc%ZOr#wOy#yO#P%]O#n#kO!Z#Oi#a#Oi!]#Oi~P(QO!Z%^OV!|iY!|i^!|i_!|if!|ig!|io!|ip!|iy!|i!O!|i!a!|i!n!|i!p!|i!r!|i!u!|i!{!|i#a!|i#h!|i#i!|i!]!|i~OjvO!Z#QX#a#QX!]#QX~P*bO!Z!rO~OQ#`Or#wOy#yO#n#kOa#XXc#XXf#XXg#XXh#XXj#XXl#XXn#XXo#XXp#XXu#XX{#XX!Z#XX#h#XX#m#XX~Oa#rac#ra!Z#ra~P(QOa%jOc$gO!Z$gO~Oa#jX~P$WOa%lO~Oc%mOa#kX~P(QOa%oO~OQ#`Or#wOw%pOy#yO#n#kO~Oc$rOa#ta~On%sO~Oa%uO~OQ#`Or#wOw%vOy#yO#n#kO~OQ#mOr#lOy#oO#n#kOc#]a!^#]a!Z#]aa#]a~Oa%wO~P4dOQ#`Or#wOw%xOy#yO#n#kO~Oa%yO~OP#vO!^mX~O!]%|O!x%VO!y%VO#m%UO~OQ#`Or#wOy#yO#n#kOc#`Xf#`Xg#`Xh#`Xj#`Xl#`Xn#`Xo#`Xp#`Xu#`X{#`X!Z#`X#P#`X#a#`X#h#`X#m#`X!]#`X~Oc%ZO#P&PO!Z#Oq#a#Oq!]#Oq~P(QOjvO!Z#Qa#a#Qa!]#Qa~P4dOQ#`Or#wOw&SOy#yO#n#kO~Oa#ric#ri!Z#ri~P(QOcmOa#ja~Oc%mOa#ka~OQ#`Or#wOy#yO#n#kOa#[ac#[a~Oa&WO~P(QOQ#`Or#wOy#yO#n#kOc#`af#`ag#`ah#`aj#`al#`an#`ao#`ap#`au#`a{#`a!Z#`a#P#`a#a#`a#h#`a#m#`a!]#`a~Oa#Yac#Ya~P(QO!Z&XO~Of#dpg#m|#iRSRr~",goto:"0^#zPPPPPP#{P$Q$^P$Q$j$QPP$sP$yPP%PPPP%jP%jP&ZPPP%jP'O%jP%jP%jP'jPP$QP(a$Q(jP$QP$Q$Q(p$QPPPP(w#{P)f)f)q)f)f)f)fP)f)t)f#{P#{P#{P){#{P*O*RPP#{P#{*U*aP*f*i*i*a*a*l*s*}+e+k+q+w+},T,_PPPP,e,k,pPP-[-_-bPPPP.u/UP/[/_/k0QP0VVdOhweXOhmrsuw#^#r$YeQOhmrsuw#^#r$YQkRQ!ulR%`$XQ}TR!}oQ#_}R$`!}Q#_!Or#x!d#U#[#f#u#|$U$]$c$o$y%Q%Y%d%e%q%}R$`#O!]!f[vy!X!b!g!q!{#U#`#b#o#w#y$U$_$b$d$e$g$m$r$u%Z%[%g%m%t&T![!f[vy!X!b!g!q!{#U#`#b#o#w#y$U$_$b$d$e$g$m$r$u%Z%[%g%m%t&TT%V$P%WY#l![!m#j#t${s#w!d#U#[#f#u#|$U$]$c$o$y%Q%Y%d%e%q%}![!f[vy!X!b!g!q!{#U#`#b#o#w#y$U$_$b$d$e$g$m$r$u%Z%[%g%m%t&TQ!i]R$O!jQ!QUQ#PpR%_$WQ!SVR#QqZuS!w$k$}%aQxSS!znzQ#s!_Q$R!mQ$V!qS$^!|#[Q%c$]Q%z%VR&R%dc!^Z_!W!Z!`#l#m#p%sR#i!ZZ#n![!m#j#t${R!j]R!l^R$Q!lU`OhwQ!UWR$S!nVeOhwR$Z!qR$Y!qShOwR!thQnSS!yn%kR%k$kQ$d#UQ$m#`Y%f$d$m%g%t&TQ%g$eQ%t$uR&T%mQ%n$mR&U%nQ$h#YR%i$hQ$s#fR%r$sQ#q![R$|#qQ%W$PR%{%WQ!o`Q#c!UT$T!o#cQ%[$UR&O%[QiOR#ZwVfOhwUSOhwQ!wmQ#RrQ#SsQ#TuQ$k#^Q$}#rR%a$YR$l#^R$n#`Q!d[S#Uv$gQ#[yQ#f!XQ#u!bQ#|!gQ$U!qQ$]!{d$c#U#`$d$e$m$u%g%m%t&TQ$o#bQ$y#oQ%P#wQ%Q#yS%Y$U%[Q%d$_Q%e$bQ%q$rR%}%ZQzSQ!pbQ!|nQ%b$YR&Q%aQ#YvR%h$gR#g!XQ!_ZQ#e!WQ$x#mR&V%sW![Z!W#m%sQ!m_Q#j!ZQ#t!`Q$w#lR${#pVcOhwSgOwR!sh",nodeNames:"⚠ Unit ( Comment LineComment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector ClassName PseudoClassSelector : :: PseudoClassName ) ArgList , PseudoClassName ArgList VariableName AtKeyword PropertyVariable ValueName ( ParenthesizedValue ColorLiteral NumberLiteral StringLiteral Escape Interpolation BinaryExpression BinOp LogicOp UnaryExpression UnaryQueryOp CallExpression ] SubscriptExpression [ CallLiteral CallTag ParenthesizedContent IdSelector # IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp InterpolatedSelector ; when } { Block ImportStatement import KeywordQuery FeatureQuery FeatureName BinaryQuery UnaryQuery ParenthesizedQuery SelectorQuery selector CallQuery ArgList SubscriptQuery MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList from to SupportsStatement supports DetachedRuleSet PropertyName Declaration Important Inclusion IdSelector ClassSelector Inclusion CallExpression",maxTerm:133,nodeProps:[["isolate",-3,3,4,30,""],["openedBy",17,"(",59,"{"],["closedBy",26,")",60,"}"]],propSources:[w],skippedNodes:[0,3,4],repeatNodeCount:10,tokenData:"!2q~R!ZOX$tX^%l^p$tpq%lqr)Ors-xst/ltu6Zuv$tvw8^wx:Uxy;syz<Uz{<Z{|<t|}BQ}!OBc!O!PDo!P!QFY!Q![Jw![!]Kr!]!^Ln!^!_MP!_!`M{!`!aNl!a!b$t!b!c! m!c!}!&R!}#O!'y#O#P$t#P#Q!([#Q#R!(m#R#T$t#T#o!&R#o#p!)S#p#q!(m#q#r!)e#r#s!)v#s#y$t#y#z%l#z$f$t$f$g%l$g#BY$t#BY#BZ%l#BZ$IS$t$IS$I_%l$I_$I|$t$I|$JO%l$JO$JT$t$JT$JU%l$JU$KV$t$KV$KW%l$KW&FU$t&FU&FV%l&FV;'S$t;'S;=`!2k<%lO$t`$wSOy%Tz;'S%T;'S;=`%f<%lO%T`%YS|`Oy%Tz;'S%T;'S;=`%f<%lO%T`%iP;=`<%l%T~%qh#d~OX%TX^']^p%Tpq']qy%Tz#y%T#y#z']#z$f%T$f$g']$g#BY%T#BY#BZ']#BZ$IS%T$IS$I_']$I_$I|%T$I|$JO']$JO$JT%T$JT$JU']$JU$KV%T$KV$KW']$KW&FU%T&FU&FV']&FV;'S%T;'S;=`%f<%lO%T~'dh#d~|`OX%TX^']^p%Tpq']qy%Tz#y%T#y#z']#z$f%T$f$g']$g#BY%T#BY#BZ']#BZ$IS%T$IS$I_']$I_$I|%T$I|$JO']$JO$JT%T$JT$JU']$JU$KV%T$KV$KW']$KW&FU%T&FU&FV']&FV;'S%T;'S;=`%f<%lO%Tk)RUOy%Tz#]%T#]#^)e#^;'S%T;'S;=`%f<%lO%Tk)jU|`Oy%Tz#a%T#a#b)|#b;'S%T;'S;=`%f<%lO%Tk*RU|`Oy%Tz#d%T#d#e*e#e;'S%T;'S;=`%f<%lO%Tk*jU|`Oy%Tz#c%T#c#d*|#d;'S%T;'S;=`%f<%lO%Tk+RU|`Oy%Tz#f%T#f#g+e#g;'S%T;'S;=`%f<%lO%Tk+jU|`Oy%Tz#h%T#h#i+|#i;'S%T;'S;=`%f<%lO%Tk,RU|`Oy%Tz#T%T#T#U,e#U;'S%T;'S;=`%f<%lO%Tk,jU|`Oy%Tz#b%T#b#c,|#c;'S%T;'S;=`%f<%lO%Tk-RU|`Oy%Tz#h%T#h#i-e#i;'S%T;'S;=`%f<%lO%Tk-lS#PZ|`Oy%Tz;'S%T;'S;=`%f<%lO%T~-{WOY-xZr-xrs.es#O-x#O#P.j#P;'S-x;'S;=`/f<%lO-x~.jOn~~.mRO;'S-x;'S;=`.v;=`O-x~.yXOY-xZr-xrs.es#O-x#O#P.j#P;'S-x;'S;=`/f;=`<%l-x<%lO-x~/iP;=`<%l-xo/qY!OROy%Tz!Q%T!Q![0a![!c%T!c!i0a!i#T%T#T#Z0a#Z;'S%T;'S;=`%f<%lO%Tm0fY|`Oy%Tz!Q%T!Q![1U![!c%T!c!i1U!i#T%T#T#Z1U#Z;'S%T;'S;=`%f<%lO%Tm1ZY|`Oy%Tz!Q%T!Q![1y![!c%T!c!i1y!i#T%T#T#Z1y#Z;'S%T;'S;=`%f<%lO%Tm2QYl]|`Oy%Tz!Q%T!Q![2p![!c%T!c!i2p!i#T%T#T#Z2p#Z;'S%T;'S;=`%f<%lO%Tm2wYl]|`Oy%Tz!Q%T!Q![3g![!c%T!c!i3g!i#T%T#T#Z3g#Z;'S%T;'S;=`%f<%lO%Tm3lY|`Oy%Tz!Q%T!Q![4[![!c%T!c!i4[!i#T%T#T#Z4[#Z;'S%T;'S;=`%f<%lO%Tm4cYl]|`Oy%Tz!Q%T!Q![5R![!c%T!c!i5R!i#T%T#T#Z5R#Z;'S%T;'S;=`%f<%lO%Tm5WY|`Oy%Tz!Q%T!Q![5v![!c%T!c!i5v!i#T%T#T#Z5v#Z;'S%T;'S;=`%f<%lO%Tm5}Sl]|`Oy%Tz;'S%T;'S;=`%f<%lO%Tm6^YOy%Tz!_%T!_!`6|!`!c%T!c!}7a!}#T%T#T#o7a#o;'S%T;'S;=`%f<%lO%Td7TS!SS|`Oy%Tz;'S%T;'S;=`%f<%lO%Tm7h[h]|`Oy%Tz}%T}!O7a!O!Q%T!Q![7a![!c%T!c!}7a!}#T%T#T#o7a#o;'S%T;'S;=`%f<%lO%Ta8c[YPOy%Tz}%T}!O9X!O!Q%T!Q![9X![!c%T!c!}9X!}#T%T#T#o9X#o;'S%T;'S;=`%f<%lO%Ta9`[YP|`Oy%Tz}%T}!O9X!O!Q%T!Q![9X![!c%T!c!}9X!}#T%T#T#o9X#o;'S%T;'S;=`%f<%lO%T~:XWOY:UZw:Uwx.ex#O:U#O#P:q#P;'S:U;'S;=`;m<%lO:U~:tRO;'S:U;'S;=`:};=`O:U~;QXOY:UZw:Uwx.ex#O:U#O#P:q#P;'S:U;'S;=`;m;=`<%l:U<%lO:U~;pP;=`<%l:Uo;xSj_Oy%Tz;'S%T;'S;=`%f<%lO%T~<ZOa~m<bUVPrWOy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f<%lO%To<{Y#pQrWOy%Tz!O%T!O!P=k!P!Q%T!Q![@p![#R%T#R#SAm#S;'S%T;'S;=`%f<%lO%Tm=pU|`Oy%Tz!Q%T!Q![>S![;'S%T;'S;=`%f<%lO%Tm>ZY#m]|`Oy%Tz!Q%T!Q![>S![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f<%lO%Tm?OY|`Oy%Tz{%T{|?n|}%T}!O?n!O!Q%T!Q![@V![;'S%T;'S;=`%f<%lO%Tm?sU|`Oy%Tz!Q%T!Q![@V![;'S%T;'S;=`%f<%lO%Tm@^U#m]|`Oy%Tz!Q%T!Q![@V![;'S%T;'S;=`%f<%lO%Tm@w[#m]|`Oy%Tz!O%T!O!P>S!P!Q%T!Q![@p![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f<%lO%TbAtS#xQ|`Oy%Tz;'S%T;'S;=`%f<%lO%TkBVScZOy%Tz;'S%T;'S;=`%f<%lO%TmBhXrWOy%Tz}%T}!OCT!O!P=k!P!Q%T!Q![@p![;'S%T;'S;=`%f<%lO%TmCYW|`Oy%Tz!c%T!c!}Cr!}#T%T#T#oCr#o;'S%T;'S;=`%f<%lO%TmCy[f]|`Oy%Tz}%T}!OCr!O!Q%T!Q![Cr![!c%T!c!}Cr!}#T%T#T#oCr#o;'S%T;'S;=`%f<%lO%ToDtW#iROy%Tz!O%T!O!PE^!P!Q%T!Q![>S![;'S%T;'S;=`%f<%lO%TlEcU|`Oy%Tz!O%T!O!PEu!P;'S%T;'S;=`%f<%lO%TlE|S#s[|`Oy%Tz;'S%T;'S;=`%f<%lO%T~F_VrWOy%Tz{Ft{!P%T!P!QIl!Q;'S%T;'S;=`%f<%lO%T~FyU|`OyFtyzG]z{Hd{;'SFt;'S;=`If<%lOFt~G`TOzG]z{Go{;'SG];'S;=`H^<%lOG]~GrVOzG]z{Go{!PG]!P!QHX!Q;'SG];'S;=`H^<%lOG]~H^OR~~HaP;=`<%lG]~HiW|`OyFtyzG]z{Hd{!PFt!P!QIR!Q;'SFt;'S;=`If<%lOFt~IYS|`R~Oy%Tz;'S%T;'S;=`%f<%lO%T~IiP;=`<%lFt~IsV|`S~OYIlYZ%TZyIlyzJYz;'SIl;'S;=`Jq<%lOIl~J_SS~OYJYZ;'SJY;'S;=`Jk<%lOJY~JnP;=`<%lJY~JtP;=`<%lIlmJ|[#m]Oy%Tz!O%T!O!P>S!P!Q%T!Q![@p![!g%T!g!h>y!h#X%T#X#Y>y#Y;'S%T;'S;=`%f<%lO%TkKwU^ZOy%Tz![%T![!]LZ!];'S%T;'S;=`%f<%lO%TcLbS_R|`Oy%Tz;'S%T;'S;=`%f<%lO%TkLsS!ZZOy%Tz;'S%T;'S;=`%f<%lO%ThMUUrWOy%Tz!_%T!_!`Mh!`;'S%T;'S;=`%f<%lO%ThMoS|`rWOy%Tz;'S%T;'S;=`%f<%lO%TlNSW!SSrWOy%Tz!^%T!^!_Mh!_!`%T!`!aMh!a;'S%T;'S;=`%f<%lO%TjNsV!UQrWOy%Tz!_%T!_!`Mh!`!a! Y!a;'S%T;'S;=`%f<%lO%Tb! aS!UQ|`Oy%Tz;'S%T;'S;=`%f<%lO%To! rYg]Oy%Tz!b%T!b!c!!b!c!}!#R!}#T%T#T#o!#R#o#p!$O#p;'S%T;'S;=`%f<%lO%Tm!!iWg]|`Oy%Tz!c%T!c!}!#R!}#T%T#T#o!#R#o;'S%T;'S;=`%f<%lO%Tm!#Y[g]|`Oy%Tz}%T}!O!#R!O!Q%T!Q![!#R![!c%T!c!}!#R!}#T%T#T#o!#R#o;'S%T;'S;=`%f<%lO%To!$TW|`Oy%Tz!c%T!c!}!$m!}#T%T#T#o!$m#o;'S%T;'S;=`%f<%lO%To!$r^|`Oy%Tz}%T}!O!$m!O!Q%T!Q![!$m![!c%T!c!}!$m!}#T%T#T#o!$m#o#q%T#q#r!%n#r;'S%T;'S;=`%f<%lO%To!%uSp_|`Oy%Tz;'S%T;'S;=`%f<%lO%To!&W[#h_Oy%Tz}%T}!O!&|!O!Q%T!Q![!&|![!c%T!c!}!&|!}#T%T#T#o!&|#o;'S%T;'S;=`%f<%lO%To!'T[#h_|`Oy%Tz}%T}!O!&|!O!Q%T!Q![!&|![!c%T!c!}!&|!}#T%T#T#o!&|#o;'S%T;'S;=`%f<%lO%Tk!(OSyZOy%Tz;'S%T;'S;=`%f<%lO%Tm!(aSw]Oy%Tz;'S%T;'S;=`%f<%lO%Td!(pUOy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f<%lO%Tk!)XS!^ZOy%Tz;'S%T;'S;=`%f<%lO%Tk!)jS!]ZOy%Tz;'S%T;'S;=`%f<%lO%To!){Y#oQOr%Trs!*ksw%Twx!.wxy%Tz!_%T!_!`6|!`;'S%T;'S;=`%f<%lO%Tm!*pZ|`OY!*kYZ%TZr!*krs!+csy!*kyz!+vz#O!*k#O#P!-j#P;'S!*k;'S;=`!.q<%lO!*km!+jSo]|`Oy%Tz;'S%T;'S;=`%f<%lO%T]!+yWOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d<%lO!+v]!,hOo]]!,kRO;'S!+v;'S;=`!,t;=`O!+v]!,wXOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d;=`<%l!+v<%lO!+v]!-gP;=`<%l!+vm!-oU|`Oy!*kyz!+vz;'S!*k;'S;=`!.R;=`<%l!+v<%lO!*km!.UXOY!+vZr!+vrs!,cs#O!+v#O#P!,h#P;'S!+v;'S;=`!-d;=`<%l!*k<%lO!+vm!.tP;=`<%l!*km!.|Z|`OY!.wYZ%TZw!.wwx!+cxy!.wyz!/oz#O!.w#O#P!1^#P;'S!.w;'S;=`!2e<%lO!.w]!/rWOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W<%lO!/o]!0_RO;'S!/o;'S;=`!0h;=`O!/o]!0kXOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W;=`<%l!/o<%lO!/o]!1ZP;=`<%l!/om!1cU|`Oy!.wyz!/oz;'S!.w;'S;=`!1u;=`<%l!/o<%lO!.wm!1xXOY!/oZw!/owx!,cx#O!/o#O#P!0[#P;'S!/o;'S;=`!1W;=`<%l!.w<%lO!/om!2hP;=`<%l!.w`!2nP;=`<%l$t",tokenizers:[d,Z,W,0,1,2,3,4],topRules:{StyleSheet:[0,5]},specialized:[{term:116,get:T=>z[T]||-1},{term:23,get:T=>h[T]||-1}],tokenPrec:2180}),o=t.define({name:"less",parser:g.configure({props:[n.add({Declaration:y()}),$.add({Block:m})]}),languageData:{commentTokens:{block:{open:"/*",close:"*/"},line:"//"},indentOnInput:/^\s*\}$/,wordChars:"@-"}}),u=X(T=>T.name=="VariableName"||T.name=="AtKeyword");function E(){return new i(o,o.data.of({autocomplete:u}))}export{E as less,u as lessCompletionSource,o as lessLanguage};
|