@kingsoftcloud/ksadk-web 0.2.9 → 0.2.11
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/CHANGELOG.md +27 -0
- package/dist-ksadk/assets/{ArtifactsPanel-SSyx1aCo.js → ArtifactsPanel-BF4v3fIu.js} +1 -1
- package/dist-ksadk/assets/{CodeBlock-YQ5vXzYH.js → CodeBlock-MkPxZeyx.js} +1 -1
- package/dist-ksadk/assets/{MathMessageMarkdown-CflwKEe7.js → MathMessageMarkdown-BtAniUMT.js} +1 -1
- package/dist-ksadk/assets/{MermaidBlock-nbjqLbuu.js → MermaidBlock-B7_vB2SD.js} +6 -6
- package/dist-ksadk/assets/NativeTerminalPanel-DKuFni1-.js +1 -0
- package/dist-ksadk/assets/{arc-QSfvB8Et.js → arc-DcxNT_so.js} +1 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-BHyTI6bf.js +1 -0
- package/dist-ksadk/assets/{architectureDiagram-3BPJPVTR-CILqFpDC.js → architectureDiagram-3BPJPVTR-BrLH3CLV.js} +1 -1
- package/dist-ksadk/assets/{blockDiagram-GPEHLZMM-DD53Zgkb.js → blockDiagram-GPEHLZMM-D4lvcIrU.js} +1 -1
- package/dist-ksadk/assets/{c4Diagram-AAUBKEIU-DjS3CJER.js → c4Diagram-AAUBKEIU-v644IW0m.js} +1 -1
- package/dist-ksadk/assets/channel-BH5WJ3h3.js +1 -0
- package/dist-ksadk/assets/{chunk-2J33WTMH-CBEtb1wr.js → chunk-2J33WTMH-CI4vAXF2.js} +1 -1
- package/dist-ksadk/assets/{chunk-4BX2VUAB-CqF_-u4a.js → chunk-4BX2VUAB-B7f3Nw20.js} +1 -1
- package/dist-ksadk/assets/{chunk-55IACEB6-lR2vu_yR.js → chunk-55IACEB6-Ba9KW173.js} +1 -1
- package/dist-ksadk/assets/{chunk-727SXJPM-DvjC_wor.js → chunk-727SXJPM-CBkuHlWy.js} +1 -1
- package/dist-ksadk/assets/{chunk-AQP2D5EJ-BVUaV9p1.js → chunk-AQP2D5EJ-cWD88O0R.js} +1 -1
- package/dist-ksadk/assets/{chunk-FMBD7UC4-Cc8_1XC_.js → chunk-FMBD7UC4-BUrLnsHX.js} +1 -1
- package/dist-ksadk/assets/{chunk-ND2GUHAM-CAHh5eAF.js → chunk-ND2GUHAM-B_uYv3IA.js} +1 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-yZAr1Dj8.js +1 -0
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-Cav8Io0V.js +1 -0
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-Cav8Io0V.js +1 -0
- package/dist-ksadk/assets/{cose-bilkent-S5V4N54A-CW6wiY80.js → cose-bilkent-S5V4N54A-Ob1AOX07.js} +1 -1
- package/dist-ksadk/assets/{dagre-BM42HDAG-BH_tWldy.js → dagre-BM42HDAG-Cw2ELnlF.js} +1 -1
- package/dist-ksadk/assets/{diagram-2AECGRRQ-ljY0ga-3.js → diagram-2AECGRRQ-BIR6If7W.js} +1 -1
- package/dist-ksadk/assets/{diagram-5GNKFQAL-BjZ8yg4e.js → diagram-5GNKFQAL-CaECh3Vg.js} +1 -1
- package/dist-ksadk/assets/{diagram-KO2AKTUF-D5-e50p6.js → diagram-KO2AKTUF-D3V-rrkc.js} +1 -1
- package/dist-ksadk/assets/{diagram-LMA3HP47-CIMbgA2R.js → diagram-LMA3HP47-BzEyff8c.js} +1 -1
- package/dist-ksadk/assets/{diagram-OG6HWLK6-CHAv8n8N.js → diagram-OG6HWLK6-Bgthbllv.js} +1 -1
- package/dist-ksadk/assets/{dist-CjTwd1ba.js → dist-B4yXtSg3.js} +1 -1
- package/dist-ksadk/assets/{dist-Bh8Jo1Hy.js → dist-B8ZWpW4i.js} +1 -1
- package/dist-ksadk/assets/{dist-B-8AvGwU.js → dist-BE76hYy3.js} +1 -1
- package/dist-ksadk/assets/{dist-lBacVcOX.js → dist-BI5M27-4.js} +1 -1
- package/dist-ksadk/assets/{dist-C-TuGFEP.js → dist-BZzeSVME.js} +1 -1
- package/dist-ksadk/assets/{dist-CSdL9G4U.js → dist-BbsQ32yZ.js} +1 -1
- package/dist-ksadk/assets/{dist-DHqMtxSi.js → dist-Br4tabXH.js} +1 -1
- package/dist-ksadk/assets/{dist-BFWeVh8Y.js → dist-C1FbzTlR.js} +1 -1
- package/dist-ksadk/assets/{dist-miJcQ_QT.js → dist-CJVD8Qen.js} +1 -1
- package/dist-ksadk/assets/{dist-CwcMj9TX.js → dist-CQj_mZtX.js} +1 -1
- package/dist-ksadk/assets/{dist-DkE5j5qa.js → dist-CltMulHu.js} +1 -1
- package/dist-ksadk/assets/{dist-CA7FMnEq.js → dist-CprtF_Yw.js} +1 -1
- package/dist-ksadk/assets/{dist-YCkBmRQg.js → dist-Cs_CrFvx.js} +1 -1
- package/dist-ksadk/assets/{dist-BQFXkYCL.js → dist-CtpPIyFY.js} +1 -1
- package/dist-ksadk/assets/{dist-CPGAEeVO.js → dist-DNQ5Xgkl.js} +1 -1
- package/dist-ksadk/assets/{dist-DxbIq1y9.js → dist-DhwceB_X.js} +1 -1
- package/dist-ksadk/assets/{dist-DplOU2XC.js → dist-FWZSQYuG.js} +1 -1
- package/dist-ksadk/assets/{dist-k2YXzXki.js → dist-FgO6dUv_.js} +1 -1
- package/dist-ksadk/assets/{dist-CefsMd33.js → dist-SOaE0trD.js} +1 -1
- package/dist-ksadk/assets/{dist-CH8X1hMv.js → dist-loAWb-yY.js} +1 -1
- package/dist-ksadk/assets/{dist-8fhwk8tR.js → dist-qmkcKPdJ.js} +1 -1
- package/dist-ksadk/assets/{dist-Gtm38p17.js → dist-xjcaveNh.js} +1 -1
- package/dist-ksadk/assets/{erDiagram-TEJ5UH35-Buxp9SL_.js → erDiagram-TEJ5UH35-C_N1U6ND.js} +1 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-D4JVqRuD.js +1 -0
- package/dist-ksadk/assets/{flowDiagram-I6XJVG4X-CNQ7RUqk.js → flowDiagram-I6XJVG4X-Cu2-GdOp.js} +1 -1
- package/dist-ksadk/assets/{ganttDiagram-6RSMTGT7-BR4K2g25.js → ganttDiagram-6RSMTGT7-CFMrfxGE.js} +1 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-Dhb2APoT.js +1 -0
- package/dist-ksadk/assets/{gitGraphDiagram-PVQCEYII-D5xJeGM-.js → gitGraphDiagram-PVQCEYII-DMfMwZL3.js} +1 -1
- package/dist-ksadk/assets/{index-CAl5bzeo.css → index-DAURbCsP.css} +1 -1
- package/dist-ksadk/assets/index-NDLr6qy9.js +165 -0
- package/dist-ksadk/assets/info-J43DQDTF-Bd0FU_kK.js +1 -0
- package/dist-ksadk/assets/{infoDiagram-5YYISTIA-Dx3WJJ7c.js → infoDiagram-5YYISTIA-cBZXniHy.js} +1 -1
- package/dist-ksadk/assets/{ishikawaDiagram-YF4QCWOH-CinAgPok.js → ishikawaDiagram-YF4QCWOH-Byt-LQw-.js} +1 -1
- package/dist-ksadk/assets/{journeyDiagram-JHISSGLW-CvHK1ISY.js → journeyDiagram-JHISSGLW-BtY3m69h.js} +1 -1
- package/dist-ksadk/assets/{kanban-definition-UN3LZRKU-CdVmYG0i.js → kanban-definition-UN3LZRKU-C6iN0sWn.js} +1 -1
- package/dist-ksadk/assets/{katex-j3gWbtq2.js → katex-DJ8K3DD_.js} +1 -1
- package/dist-ksadk/assets/{linear-CSzugA0M.js → linear-CUfNl6zg.js} +1 -1
- package/dist-ksadk/assets/{mermaid-parser.core-x5RuQqLN.js → mermaid-parser.core-xgL8Vh_R.js} +2 -2
- package/dist-ksadk/assets/{mindmap-definition-RKZ34NQL-DHeHLEl4.js → mindmap-definition-RKZ34NQL-BkGzz7Z2.js} +1 -1
- package/dist-ksadk/assets/packet-YPE3B663-BLs1Uxy0.js +1 -0
- package/dist-ksadk/assets/pie-LRSECV5Y-DwzfGu6H.js +1 -0
- package/dist-ksadk/assets/{pieDiagram-4H26LBE5-Bn-CBt6T.js → pieDiagram-4H26LBE5-BIH7P3Lx.js} +1 -1
- package/dist-ksadk/assets/{quadrantDiagram-W4KKPZXB-DvSMM3_k.js → quadrantDiagram-W4KKPZXB-C2xbbI2c.js} +1 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-eGejGVHG.js +1 -0
- package/dist-ksadk/assets/{requirementDiagram-4Y6WPE33-Bs1Umaod.js → requirementDiagram-4Y6WPE33-ByFUrTNV.js} +1 -1
- package/dist-ksadk/assets/{sankeyDiagram-5OEKKPKP-uM4nwFIR.js → sankeyDiagram-5OEKKPKP-vGZbAxiz.js} +1 -1
- package/dist-ksadk/assets/{sequenceDiagram-3UESZ5HK-CUM1cPop.js → sequenceDiagram-3UESZ5HK-ZkwUIiu3.js} +1 -1
- package/dist-ksadk/assets/{stateDiagram-AJRCARHV-BMhsQxg0.js → stateDiagram-AJRCARHV-BdbKWYq8.js} +1 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-DiPVQ0cz.js +1 -0
- package/dist-ksadk/assets/{timeline-definition-PNZ67QCA-DqOyQzFY.js → timeline-definition-PNZ67QCA-B5QfJdJp.js} +1 -1
- package/dist-ksadk/assets/treeView-BLDUP644-C6UbCLlZ.js +1 -0
- package/dist-ksadk/assets/treemap-LRROVOQU-Bk3Xcttl.js +1 -0
- package/dist-ksadk/assets/{vennDiagram-CIIHVFJN-CL6ie2Ap.js → vennDiagram-CIIHVFJN-zcCHPgCd.js} +1 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-DpJI-Lu5.js +1 -0
- package/dist-ksadk/assets/{wardleyDiagram-YWT4CUSO-CoLkaHQx.js → wardleyDiagram-YWT4CUSO-CUTRM1sP.js} +1 -1
- package/dist-ksadk/assets/{xychartDiagram-2RQKCTM6-D3W-LOH6.js → xychartDiagram-2RQKCTM6-gvfSgBXS.js} +1 -1
- package/dist-ksadk/index.html +2 -2
- package/dist-lib/App.d.ts +3 -1
- package/dist-lib/App.d.ts.map +1 -1
- package/dist-lib/{ArtifactsPanel--CQyb4ZY.js → ArtifactsPanel-yLxSIEFw.js} +4 -4
- package/dist-lib/{CodeBlock-Bwiebu9v.js → CodeBlock-CKy7sFkN.js} +1 -1
- package/dist-lib/{MathMessageMarkdown-BYzR9y8h.js → MathMessageMarkdown-D0fGt004.js} +2 -2
- package/dist-lib/{NativeTerminalPanel-BctkNn1k.js → NativeTerminalPanel-Bzdmm_Au.js} +105 -81
- package/dist-lib/{WorkspacePanelContainer-CtS_M-Qt.js → WorkspacePanelContainer-BTxXY3RS.js} +926 -833
- package/dist-lib/api/events.d.ts +12 -1
- package/dist-lib/api/events.d.ts.map +1 -1
- package/dist-lib/api/session.d.ts +11 -2
- package/dist-lib/api/session.d.ts.map +1 -1
- package/dist-lib/components/chat/ChatHeader.d.ts.map +1 -1
- package/dist-lib/components/chat/ChatMessageList.d.ts.map +1 -1
- package/dist-lib/components/chat/ChatSidebar.d.ts +6 -1
- package/dist-lib/components/chat/ChatSidebar.d.ts.map +1 -1
- package/dist-lib/components/chat/ConnectedMessageList.d.ts +2 -1
- package/dist-lib/components/chat/ConnectedMessageList.d.ts.map +1 -1
- package/dist-lib/components/chat/ConnectedSidebar.d.ts +2 -1
- package/dist-lib/components/chat/ConnectedSidebar.d.ts.map +1 -1
- package/dist-lib/components/native/NativeTerminalPanel.d.ts +3 -1
- package/dist-lib/components/native/NativeTerminalPanel.d.ts.map +1 -1
- package/dist-lib/components.js +3 -3
- package/dist-lib/core/api/facade.d.ts +13 -4
- package/dist-lib/core/api/facade.d.ts.map +1 -1
- package/dist-lib/core/api/types.d.ts +13 -1
- package/dist-lib/core/api/types.d.ts.map +1 -1
- package/dist-lib/hooks/useSessionLifecycle.d.ts +2 -0
- package/dist-lib/hooks/useSessionLifecycle.d.ts.map +1 -1
- package/dist-lib/runtime.js +1108 -817
- package/dist-lib/stores/checkpoint.d.ts.map +1 -1
- package/dist-lib/stores/session.d.ts +35 -1
- package/dist-lib/stores/session.d.ts.map +1 -1
- package/dist-lib/styles.css +1 -1
- package/dist-lib/utils/message-virtualization.d.ts +21 -0
- package/dist-lib/utils/message-virtualization.d.ts.map +1 -0
- package/dist-lib/utils/session-list.d.ts.map +1 -1
- package/dist-lib/utils/session-pagination.d.ts +20 -0
- package/dist-lib/utils/session-pagination.d.ts.map +1 -0
- package/dist-lib/utils/terminal-session.d.ts +1 -0
- package/dist-lib/utils/terminal-session.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist-ksadk/assets/NativeTerminalPanel-DxAh9H8z.js +0 -1
- package/dist-ksadk/assets/architecture-7EHR7CIX-C19PcYz-.js +0 -1
- package/dist-ksadk/assets/channel-eJj5zetk.js +0 -1
- package/dist-ksadk/assets/chunk-QZHKN3VN-D4mip6Il.js +0 -1
- package/dist-ksadk/assets/classDiagram-4FO5ZUOK-33PbfFSW.js +0 -1
- package/dist-ksadk/assets/classDiagram-v2-Q7XG4LA2-33PbfFSW.js +0 -1
- package/dist-ksadk/assets/eventmodeling-FCH6USID-DmbjPnMI.js +0 -1
- package/dist-ksadk/assets/gitGraph-WXDBUCRP-Bc_9dlTu.js +0 -1
- package/dist-ksadk/assets/index-B6Jvzl61.js +0 -165
- package/dist-ksadk/assets/info-J43DQDTF-B8Y6xmyb.js +0 -1
- package/dist-ksadk/assets/packet-YPE3B663-BrYG7omE.js +0 -1
- package/dist-ksadk/assets/pie-LRSECV5Y-_wNpvHX3.js +0 -1
- package/dist-ksadk/assets/radar-GUYGQ44K-BaVGJTci.js +0 -1
- package/dist-ksadk/assets/stateDiagram-v2-BHNVJYJU-B1hvuTKv.js +0 -1
- package/dist-ksadk/assets/treeView-BLDUP644-SGPboZ5y.js +0 -1
- package/dist-ksadk/assets/treemap-LRROVOQU-DuxD3lqD.js +0 -1
- package/dist-ksadk/assets/wardley-L42UT6IY-D9w6kgpb.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./mermaid-parser.core-
|
|
1
|
+
import{t as e}from"./mermaid-parser.core-xgL8Vh_R.js";import{t}from"./chunk-4BX2VUAB-B7f3Nw20.js";import{An as n,Jt as r,N as i,Zt as a,_n as o,en as s,hn as c,in as l,kn as u,mn as d,mt as f,nn as p,on as m,rn as h,tn as g}from"./MermaidBlock-B7_vB2SD.js";var _=u((e,t)=>{let n=e<=1?e*100:e;if(n<0||n>100)throw Error(`${t} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${e}`);return n},`toPercent`),v=u((e,t,n)=>({x:_(t,`${n} evolution`),y:_(e,`${n} visibility`)}),`toCoordinates`),y=u(e=>{if(e){if(e===`+<>`)return`bidirectional`;if(e===`+<`)return`backward`;if(e===`+>`)return`forward`}},`getFlowFromPort`),b=u(e=>{if(!e?.startsWith(`+`))return{};let t=/^\+'([^']*)'/.exec(e)?.[1];return e.includes(`<>`)?{flow:`bidirectional`,label:t}:e.includes(`<`)?{flow:`backward`,label:t}:e.includes(`>`)?{flow:`forward`,label:t}:{label:t}},`extractFlowFromArrow`),x=u((e,n)=>{if(t(e,n),e.size&&n.setSize(e.size.width,e.size.height),e.evolution){let t=e.evolution.stages.map(e=>e.secondName?`${e.name.trim()} / ${e.secondName.trim()}`:e.name.trim()),r=e.evolution.stages.filter(e=>e.boundary!==void 0).map(e=>e.boundary);n.updateAxes({stages:t,stageBoundaries:r})}if(e.anchors.forEach(e=>{let t=v(e.visibility,e.evolution,`Anchor "${e.name}"`);n.addNode(e.name,e.name,t.x,t.y,`anchor`)}),e.components.forEach(e=>{let t=v(e.visibility,e.evolution,`Component "${e.name}"`),r=e.label?(e.label.negX?-1:1)*e.label.offsetX:void 0,i=e.label?(e.label.negY?-1:1)*e.label.offsetY:void 0,a=e.decorator?.strategy;n.addNode(e.name,e.name,t.x,t.y,`component`,r,i,e.inertia,a)}),e.notes.forEach(e=>{let t=v(e.visibility,e.evolution,`Note "${e.text}"`);n.addNote(e.text,t.x,t.y)}),e.pipelines.forEach(e=>{let t=n.getNode(e.parent);if(!t||typeof t.y!=`number`)throw Error(`Pipeline "${e.parent}" must reference an existing component with coordinates.`);let r=t.y;n.startPipeline(e.parent),e.components.forEach(t=>{let i=`${e.parent}_${t.name}`,a=t.label?(t.label.negX?-1:1)*t.label.offsetX:void 0,o=t.label?(t.label.negY?-1:1)*t.label.offsetY:void 0,s=_(t.evolution,`Pipeline component "${t.name}" evolution`);n.addNode(i,t.name,s,r,`pipeline-component`,a,o),n.addPipelineComponent(e.parent,i)})}),e.links.forEach(e=>{let t=!!e.arrow&&(e.arrow.includes(`-.->`)||e.arrow.includes(`.-.`)),r=y(e.fromPort)??y(e.toPort),{flow:i,label:a}=b(e.arrow);!r&&i&&(r=i);let o=e.linkLabel,s=a??o;n.addLink(n.resolveNodeId(e.from),n.resolveNodeId(e.to),t,s,r)}),e.evolves.forEach(e=>{let t=n.getNode(e.component);if(t?.y!==void 0){let r=_(e.target,`Evolve target for "${e.component}"`);n.addTrend(e.component,r,t.y)}}),e.annotations.length>0){let t=e.annotations[0],r=v(t.x,t.y,`Annotations box`);n.setAnnotationsBox(r.x,r.y)}e.annotation.forEach(e=>{let t=v(e.x,e.y,`Annotation ${e.number}`);n.addAnnotation(e.number,[{x:t.x,y:t.y}],e.text)}),e.accelerators.forEach(e=>{let t=v(e.x,e.y,`Accelerator "${e.name}"`);n.addAccelerator(e.name,t.x,t.y)}),e.deaccelerators.forEach(e=>{let t=v(e.x,e.y,`Deaccelerator "${e.name}"`);n.addDeaccelerator(e.name,t.x,t.y)})},`populateDb`),S={parser:{yy:void 0},parse:u(async t=>{let r=await e(`wardley`,t);n.debug(r);let i=S.parser?.yy;if(!i||typeof i.addNode!=`function`)throw Error(`parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);x(r,i)},`parse`)},C=new class{constructor(){this.nodes=new Map,this.links=[],this.trends=new Map,this.pipelines=new Map,this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.axes={}}static{u(this,`WardleyBuilder`)}addNode(e){let t=this.nodes.get(e.id)??{id:e.id,label:e.label},n={...t,...e,className:e.className??t.className,labelOffsetX:e.labelOffsetX??t.labelOffsetX,labelOffsetY:e.labelOffsetY??t.labelOffsetY};this.nodes.set(e.id,n)}addLink(e){this.links.push(e)}addTrend(e){this.trends.set(e.nodeId,e)}startPipeline(e){this.pipelines.set(e,{nodeId:e,componentIds:[]});let t=this.nodes.get(e);t&&(t.isPipelineParent=!0)}addPipelineComponent(e,t){let n=this.pipelines.get(e);n&&n.componentIds.push(t);let r=this.nodes.get(t);r&&(r.inPipeline=!0)}addAnnotation(e){this.annotations.push(e)}addNote(e){this.notes.push(e)}addAccelerator(e){this.accelerators.push(e)}addDeaccelerator(e){this.deaccelerators.push(e)}setAnnotationsBox(e,t){this.annotationsBox={x:e,y:t}}setAxes(e){this.axes={...this.axes,...e}}setSize(e,t){this.size={width:e,height:t}}getNode(e){return this.nodes.get(e)}resolveNodeId(e){if(this.nodes.has(e))return e;for(let[t,n]of this.nodes)if(n.label===e)return t;return e}build(){let e=[];for(let t of this.nodes.values()){if(typeof t.x!=`number`||typeof t.y!=`number`)throw Error(`Node "${t.label}" is missing coordinates`);e.push(t)}return{nodes:e,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}};function w(){return h()[`wardley-beta`]}u(w,`getConfig`);function T(e,t,n,r,i,a,o,s,c){C.addNode({id:e,label:t,x:n,y:r,className:i,labelOffsetX:a,labelOffsetY:o,inertia:s,sourceStrategy:c})}u(T,`addNode`);function E(e,t,n=!1,r,i){C.addLink({source:e,target:t,dashed:n,label:r,flow:i})}u(E,`addLink`);function D(e,t,n){C.addTrend({nodeId:e,targetX:t,targetY:n})}u(D,`addTrend`);function O(e,t,n){C.addAnnotation({number:e,coordinates:t,text:n})}u(O,`addAnnotation`);function k(e,t,n){C.addNote({text:e,x:t,y:n})}u(k,`addNote`);function A(e,t,n){C.addAccelerator({name:e,x:t,y:n})}u(A,`addAccelerator`);function j(e,t,n){C.addDeaccelerator({name:e,x:t,y:n})}u(j,`addDeaccelerator`);function M(e,t){C.setAnnotationsBox(e,t)}u(M,`setAnnotationsBox`);function N(e,t){C.setSize(e,t)}u(N,`setSize`);function P(e){C.startPipeline(e)}u(P,`startPipeline`);function F(e,t){C.addPipelineComponent(e,t)}u(F,`addPipelineComponent`);function I(e){C.setAxes(e)}u(I,`updateAxes`);function L(e){return C.getNode(e)}u(L,`getNode`);function R(e){return C.resolveNodeId(e)}u(R,`resolveNodeId`);function z(){return C.build()}u(z,`getWardleyData`);function B(){C.clear(),r()}u(B,`clear`);var V={getConfig:w,addNode:T,addLink:E,addTrend:D,addAnnotation:O,addNote:k,addAccelerator:A,addDeaccelerator:j,setAnnotationsBox:M,setSize:N,startPipeline:P,addPipelineComponent:F,updateAxes:I,getNode:L,resolveNodeId:R,getWardleyData:z,clear:B,setAccTitle:c,getAccTitle:g,setDiagramTitle:o,getDiagramTitle:l,getAccDescription:s,setAccDescription:d},H=[`Genesis`,`Custom Built`,`Product`,`Commodity`],U=u(()=>{let{themeVariables:e}=h();return{backgroundColor:e.wardley?.backgroundColor??e.background??`#fff`,axisColor:e.wardley?.axisColor??`#000`,axisTextColor:e.wardley?.axisTextColor??e.primaryTextColor??`#222`,gridColor:e.wardley?.gridColor??`rgba(100, 100, 100, 0.2)`,componentFill:e.wardley?.componentFill??`#fff`,componentStroke:e.wardley?.componentStroke??`#000`,componentLabelColor:e.wardley?.componentLabelColor??e.primaryTextColor??`#222`,linkStroke:e.wardley?.linkStroke??`#000`,evolutionStroke:e.wardley?.evolutionStroke??`#dc3545`,annotationStroke:e.wardley?.annotationStroke??`#000`,annotationTextColor:e.wardley?.annotationTextColor??e.primaryTextColor??`#222`,annotationFill:e.wardley?.annotationFill??e.background??`#fff`}},`getTheme`),W=u(()=>{let e=h()[`wardley-beta`];return{width:e?.width??900,height:e?.height??600,padding:e?.padding??48,nodeRadius:e?.nodeRadius??6,nodeLabelOffset:e?.nodeLabelOffset??8,axisFontSize:e?.axisFontSize??12,labelFontSize:e?.labelFontSize??10,showGrid:e?.showGrid??!1,useMaxWidth:e?.useMaxWidth??!0}},`getConfigValues`),G={parser:S,db:V,renderer:{draw:u((e,t,r,i)=>{n.debug(`Rendering Wardley map
|
|
2
2
|
`+e);let o=W(),s=U(),c=o.nodeRadius*1.6,l=i.db,d=l.getWardleyData(),p=l.getDiagramTitle(),m=d.size?.width??o.width,h=d.size?.height??o.height,g=f(t);g.selectAll(`*`).remove(),a(g,h,m,o.useMaxWidth),g.attr(`viewBox`,`0 0 ${m} ${h}`);let _=g.append(`g`).attr(`class`,`wardley-map`),v=g.append(`defs`);v.append(`marker`).attr(`id`,`arrow-${t}`).attr(`viewBox`,`0 0 10 10`).attr(`refX`,9).attr(`refY`,5).attr(`markerWidth`,6).attr(`markerHeight`,6).attr(`orient`,`auto-start-reverse`).append(`path`).attr(`d`,`M 0 0 L 10 5 L 0 10 z`).attr(`fill`,s.evolutionStroke).attr(`stroke`,`none`),v.append(`marker`).attr(`id`,`link-arrow-end-${t}`).attr(`viewBox`,`0 0 10 10`).attr(`refX`,9).attr(`refY`,5).attr(`markerWidth`,5).attr(`markerHeight`,5).attr(`orient`,`auto`).append(`path`).attr(`d`,`M 0 0 L 10 5 L 0 10 z`).attr(`fill`,s.linkStroke).attr(`stroke`,`none`),v.append(`marker`).attr(`id`,`link-arrow-start-${t}`).attr(`viewBox`,`0 0 10 10`).attr(`refX`,1).attr(`refY`,5).attr(`markerWidth`,5).attr(`markerHeight`,5).attr(`orient`,`auto`).append(`path`).attr(`d`,`M 10 0 L 0 5 L 10 10 z`).attr(`fill`,s.linkStroke).attr(`stroke`,`none`),_.append(`rect`).attr(`class`,`wardley-background`).attr(`width`,m).attr(`height`,h).attr(`fill`,s.backgroundColor);let y=m-o.padding*2,b=h-o.padding*2;p&&_.append(`text`).attr(`class`,`wardley-title`).attr(`x`,m/2).attr(`y`,o.padding/2).attr(`fill`,s.axisTextColor).attr(`font-size`,o.axisFontSize*1.05).attr(`font-weight`,`bold`).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(p);let x=u(e=>o.padding+e/100*y,`projectX`),S=u(e=>h-o.padding-e/100*b,`projectY`),C=_.append(`g`).attr(`class`,`wardley-axes`);C.append(`line`).attr(`x1`,o.padding).attr(`x2`,m-o.padding).attr(`y1`,h-o.padding).attr(`y2`,h-o.padding).attr(`stroke`,s.axisColor).attr(`stroke-width`,1),C.append(`line`).attr(`x1`,o.padding).attr(`x2`,o.padding).attr(`y1`,o.padding).attr(`y2`,h-o.padding).attr(`stroke`,s.axisColor).attr(`stroke-width`,1);let w=d.axes.xLabel??`Evolution`,T=d.axes.yLabel??`Visibility`;C.append(`text`).attr(`class`,`wardley-axis-label wardley-axis-label-x`).attr(`x`,o.padding+y/2).attr(`y`,h-o.padding/4).attr(`fill`,s.axisTextColor).attr(`font-size`,o.axisFontSize).attr(`font-weight`,`bold`).attr(`text-anchor`,`middle`).text(w),C.append(`text`).attr(`class`,`wardley-axis-label wardley-axis-label-y`).attr(`x`,o.padding/3).attr(`y`,o.padding+b/2).attr(`fill`,s.axisTextColor).attr(`font-size`,o.axisFontSize).attr(`font-weight`,`bold`).attr(`text-anchor`,`middle`).attr(`transform`,`rotate(-90 ${o.padding/3} ${o.padding+b/2})`).text(T);let E=d.axes.stages&&d.axes.stages.length>0?d.axes.stages:H;if(E.length>0){let e=_.append(`g`).attr(`class`,`wardley-stages`),t=d.axes.stageBoundaries,n=[];if(t&&t.length===E.length){let e=0;t.forEach(t=>{n.push({start:e,end:t}),e=t})}else{let e=1/E.length;E.forEach((t,r)=>{n.push({start:r*e,end:(r+1)*e})})}E.forEach((t,r)=>{let i=n[r],a=o.padding+i.start*y,c=(a+(o.padding+i.end*y))/2;r>0&&e.append(`line`).attr(`x1`,a).attr(`x2`,a).attr(`y1`,o.padding).attr(`y2`,h-o.padding).attr(`stroke`,`#000`).attr(`stroke-width`,1).attr(`stroke-dasharray`,`5 5`).attr(`opacity`,.8),e.append(`text`).attr(`class`,`wardley-stage-label`).attr(`x`,c).attr(`y`,h-o.padding/1.5).attr(`fill`,s.axisTextColor).attr(`font-size`,o.axisFontSize-2).attr(`text-anchor`,`middle`).text(t)})}if(o.showGrid){let e=_.append(`g`).attr(`class`,`wardley-grid`);for(let t=1;t<4;t++){let n=t/4,r=o.padding+y*n;e.append(`line`).attr(`x1`,r).attr(`x2`,r).attr(`y1`,o.padding).attr(`y2`,h-o.padding).attr(`stroke`,s.gridColor).attr(`stroke-dasharray`,`2 6`),e.append(`line`).attr(`x1`,o.padding).attr(`x2`,m-o.padding).attr(`y1`,h-o.padding-b*n).attr(`y2`,h-o.padding-b*n).attr(`stroke`,s.gridColor).attr(`stroke-dasharray`,`2 6`)}}let D=new Map;if(d.nodes.forEach(e=>{D.set(e.id,{x:x(e.x),y:S(e.y),node:e})}),d.pipelines.length>0){let e=_.append(`g`).attr(`class`,`wardley-pipelines`),t=_.append(`g`).attr(`class`,`wardley-pipeline-links`);d.pipelines.forEach(n=>{if(n.componentIds.length===0)return;let r=n.componentIds.map(e=>({id:e,pos:D.get(e),node:d.nodes.find(t=>t.id===e)})).filter(e=>e.pos&&e.node).sort((e,t)=>e.node.x-t.node.x);for(let e=0;e<r.length-1;e++){let n=r[e],i=r[e+1];t.append(`line`).attr(`class`,`wardley-pipeline-evolution-link`).attr(`x1`,n.pos.x).attr(`y1`,n.pos.y).attr(`x2`,i.pos.x).attr(`y2`,i.pos.y).attr(`stroke`,s.linkStroke).attr(`stroke-width`,1).attr(`stroke-dasharray`,`4 4`)}let i=1/0,a=-1/0,l=0;if(n.componentIds.forEach(e=>{let t=D.get(e);t&&(i=Math.min(i,t.x),a=Math.max(a,t.x),l=t.y)}),i!==1/0&&a!==-1/0){let t=o.nodeRadius*4,r=l-t/2,u=D.get(n.nodeId);u&&(u.x=(i+a)/2,u.y=r-c/6),e.append(`rect`).attr(`class`,`wardley-pipeline-box`).attr(`x`,i-15).attr(`y`,r).attr(`width`,a-i+30).attr(`height`,t).attr(`fill`,`none`).attr(`stroke`,s.axisColor).attr(`stroke-width`,1.5).attr(`rx`,4).attr(`ry`,4)}})}let O=_.append(`g`).attr(`class`,`wardley-links`),k=new Map;d.pipelines.forEach(e=>{k.set(e.nodeId,new Set(e.componentIds))});let A=d.links.filter(e=>!(!D.has(e.source)||!D.has(e.target)||k.get(e.target)?.has(e.source)));O.selectAll(`line`).data(A).enter().append(`line`).attr(`class`,e=>`wardley-link${e.dashed?` wardley-link--dashed`:``}`).attr(`x1`,e=>{let t=D.get(e.source),n=D.get(e.target),r=d.nodes.find(t=>t.id===e.source).isPipelineParent?c/Math.sqrt(2):o.nodeRadius,i=n.x-t.x,a=n.y-t.y,s=Math.sqrt(i*i+a*a);return t.x+i/s*r}).attr(`y1`,e=>{let t=D.get(e.source),n=D.get(e.target),r=d.nodes.find(t=>t.id===e.source).isPipelineParent?c/Math.sqrt(2):o.nodeRadius,i=n.x-t.x,a=n.y-t.y,s=Math.sqrt(i*i+a*a);return t.y+a/s*r}).attr(`x2`,e=>{let t=D.get(e.source),n=D.get(e.target),r=d.nodes.find(t=>t.id===e.target).isPipelineParent?c/Math.sqrt(2):o.nodeRadius,i=t.x-n.x,a=t.y-n.y,s=Math.sqrt(i*i+a*a);return n.x+i/s*r}).attr(`y2`,e=>{let t=D.get(e.source),n=D.get(e.target),r=d.nodes.find(t=>t.id===e.target).isPipelineParent?c/Math.sqrt(2):o.nodeRadius,i=t.x-n.x,a=t.y-n.y,s=Math.sqrt(i*i+a*a);return n.y+a/s*r}).attr(`stroke`,s.linkStroke).attr(`stroke-width`,1).attr(`stroke-dasharray`,e=>e.dashed?`6 6`:null).attr(`marker-end`,e=>e.flow===`forward`||e.flow===`bidirectional`?`url(#link-arrow-end-${t})`:null).attr(`marker-start`,e=>e.flow===`backward`||e.flow===`bidirectional`?`url(#link-arrow-start-${t})`:null),O.selectAll(`text`).data(A.filter(e=>e.label)).enter().append(`text`).attr(`class`,`wardley-link-label`).attr(`x`,e=>{let t=D.get(e.source),n=D.get(e.target),r=(t.x+n.x)/2,i=n.y-t.y,a=n.x-t.x;return r+i/Math.sqrt(a*a+i*i)*8}).attr(`y`,e=>{let t=D.get(e.source),n=D.get(e.target),r=(t.y+n.y)/2,i=n.x-t.x,a=n.y-t.y,o=Math.sqrt(i*i+a*a);return r+-i/o*8}).attr(`fill`,s.axisTextColor).attr(`font-size`,o.labelFontSize).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).attr(`transform`,e=>{let t=D.get(e.source),n=D.get(e.target),r=(t.x+n.x)/2,i=(t.y+n.y)/2,a=n.x-t.x,o=n.y-t.y,s=Math.sqrt(a*a+o*o),c=o/s,l=-a/s,u=r+c*8,d=i+l*8,f=Math.atan2(o,a)*180/Math.PI;return(f>90||f<-90)&&(f+=180),`rotate(${f} ${u} ${d})`}).text(e=>e.label);let j=_.append(`g`).attr(`class`,`wardley-trends`),M=d.trends.map(e=>{let t=D.get(e.nodeId);if(!t)return null;let n=x(e.targetX),r=S(e.targetY),i=n-t.x,a=r-t.y,s=Math.sqrt(i*i+a*a),c=o.nodeRadius+2;return{origin:t,targetX:n,targetY:r,adjustedX2:s>c?n-i/s*c:n,adjustedY2:s>c?r-a/s*c:r}}).filter(e=>e!==null);j.selectAll(`line`).data(M).enter().append(`line`).attr(`class`,`wardley-trend`).attr(`x1`,e=>e.origin.x).attr(`y1`,e=>e.origin.y).attr(`x2`,e=>e.adjustedX2).attr(`y2`,e=>e.adjustedY2).attr(`stroke`,s.evolutionStroke).attr(`stroke-width`,1).attr(`stroke-dasharray`,`4 4`).attr(`marker-end`,`url(#arrow-${t})`);let N=_.append(`g`).attr(`class`,`wardley-nodes`).selectAll(`g`).data(d.nodes).enter().append(`g`).attr(`class`,e=>[`wardley-node`,e.className?`wardley-node--${e.className}`:``].filter(Boolean).join(` `));N.filter(e=>e.sourceStrategy===`outsource`).append(`circle`).attr(`class`,`wardley-outsource-overlay`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius*2).attr(`fill`,`#666`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),N.filter(e=>e.sourceStrategy===`buy`).append(`circle`).attr(`class`,`wardley-buy-overlay`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius*2).attr(`fill`,`#ccc`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),N.filter(e=>e.sourceStrategy===`build`).append(`circle`).attr(`class`,`wardley-build-overlay`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius*2).attr(`fill`,`#eee`).attr(`stroke`,`#000`).attr(`stroke-width`,1);let P=N.filter(e=>e.sourceStrategy===`market`);P.append(`circle`).attr(`class`,`wardley-market-overlay`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius*2).attr(`fill`,`white`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),N.filter(e=>!e.isPipelineParent&&e.sourceStrategy!==`market`&&e.className!==`anchor`).append(`circle`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y).attr(`r`,o.nodeRadius).attr(`fill`,s.componentFill).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1);let F=o.nodeRadius*.7,I=o.nodeRadius*1.2;if(P.append(`line`).attr(`class`,`wardley-market-line`).attr(`x1`,e=>D.get(e.id).x).attr(`y1`,e=>D.get(e.id).y-I).attr(`x2`,e=>D.get(e.id).x-I*Math.cos(Math.PI/6)).attr(`y2`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),P.append(`line`).attr(`class`,`wardley-market-line`).attr(`x1`,e=>D.get(e.id).x-I*Math.cos(Math.PI/6)).attr(`y1`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`x2`,e=>D.get(e.id).x+I*Math.cos(Math.PI/6)).attr(`y2`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),P.append(`line`).attr(`class`,`wardley-market-line`).attr(`x1`,e=>D.get(e.id).x+I*Math.cos(Math.PI/6)).attr(`y1`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`x2`,e=>D.get(e.id).x).attr(`y2`,e=>D.get(e.id).y-I).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),P.append(`circle`).attr(`class`,`wardley-market-dot`).attr(`cx`,e=>D.get(e.id).x).attr(`cy`,e=>D.get(e.id).y-I).attr(`r`,F).attr(`fill`,`white`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,2),P.append(`circle`).attr(`class`,`wardley-market-dot`).attr(`cx`,e=>D.get(e.id).x-I*Math.cos(Math.PI/6)).attr(`cy`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`r`,F).attr(`fill`,`white`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,2),P.append(`circle`).attr(`class`,`wardley-market-dot`).attr(`cx`,e=>D.get(e.id).x+I*Math.cos(Math.PI/6)).attr(`cy`,e=>D.get(e.id).y+I*Math.sin(Math.PI/6)).attr(`r`,F).attr(`fill`,`white`).attr(`stroke`,s.componentStroke).attr(`stroke-width`,2),N.filter(e=>e.isPipelineParent===!0).append(`rect`).attr(`x`,e=>D.get(e.id).x-c/2).attr(`y`,e=>D.get(e.id).y-c/2).attr(`width`,c).attr(`height`,c).attr(`fill`,s.componentFill).attr(`stroke`,s.componentStroke).attr(`stroke-width`,1),N.filter(e=>e.inertia===!0).append(`line`).attr(`class`,`wardley-inertia`).attr(`x1`,e=>{let t=D.get(e.id),n=e.isPipelineParent?c/2+15:o.nodeRadius+15;return e.sourceStrategy&&(n+=o.nodeRadius+10),t.x+n}).attr(`y1`,e=>{let t=D.get(e.id),n=e.isPipelineParent?c:o.nodeRadius*2;return t.y-n/2}).attr(`x2`,e=>{let t=D.get(e.id),n=e.isPipelineParent?c/2+15:o.nodeRadius+15;return e.sourceStrategy&&(n+=o.nodeRadius+10),t.x+n}).attr(`y2`,e=>{let t=D.get(e.id),n=e.isPipelineParent?c:o.nodeRadius*2;return t.y+n/2}).attr(`stroke`,s.componentStroke).attr(`stroke-width`,6),N.append(`text`).attr(`x`,e=>{let t=D.get(e.id);if(e.className===`anchor`)return e.labelOffsetX===void 0?t.x:t.x+e.labelOffsetX;let n=o.nodeLabelOffset;e.sourceStrategy&&e.labelOffsetX===void 0&&(n+=10);let r=e.labelOffsetX??n;return t.x+r}).attr(`y`,e=>{let t=D.get(e.id);if(e.className===`anchor`)return e.labelOffsetY===void 0?t.y-3:t.y+e.labelOffsetY;let n=-o.nodeLabelOffset;e.sourceStrategy&&e.labelOffsetY===void 0&&(n-=10);let r=e.labelOffsetY??n;return t.y+r}).attr(`class`,`wardley-node-label`).attr(`fill`,e=>e.className===`evolved`?s.evolutionStroke:e.className===`anchor`?`#000`:s.componentLabelColor).attr(`font-size`,o.labelFontSize).attr(`font-weight`,e=>e.className===`anchor`?`bold`:`normal`).attr(`text-anchor`,e=>e.className===`anchor`?`middle`:`start`).attr(`dominant-baseline`,e=>e.className===`anchor`?`middle`:`auto`).text(e=>e.label),d.annotations.length>0){let e=_.append(`g`).attr(`class`,`wardley-annotations`);if(d.annotations.forEach(t=>{let n=t.coordinates.map(e=>({x:x(e.x),y:S(e.y)}));if(n.length>1)for(let t=0;t<n.length-1;t++)e.append(`line`).attr(`class`,`wardley-annotation-line`).attr(`x1`,n[t].x).attr(`y1`,n[t].y).attr(`x2`,n[t+1].x).attr(`y2`,n[t+1].y).attr(`stroke`,s.axisColor).attr(`stroke-width`,1.5).attr(`stroke-dasharray`,`4 4`);n.forEach(n=>{let r=e.append(`g`).attr(`class`,`wardley-annotation`);r.append(`circle`).attr(`cx`,n.x).attr(`cy`,n.y).attr(`r`,10).attr(`fill`,`white`).attr(`stroke`,s.axisColor).attr(`stroke-width`,1.5),r.append(`text`).attr(`x`,n.x).attr(`y`,n.y).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`central`).attr(`font-size`,10).attr(`fill`,s.axisTextColor).attr(`font-weight`,`bold`).text(t.number)})}),d.annotationsBox){let t=x(d.annotationsBox.x),n=S(d.annotationsBox.y),r=e.append(`g`).attr(`class`,`wardley-annotations-box`),i=[...d.annotations].filter(e=>e.text).sort((e,t)=>e.number-t.number),a=[];if(i.forEach((e,i)=>{let o=r.append(`text`).attr(`x`,t+10).attr(`y`,n+10+(i+1)*16).attr(`font-size`,11).attr(`fill`,s.axisTextColor).attr(`text-anchor`,`start`).attr(`dominant-baseline`,`middle`).text(`${e.number}. ${e.text}`);a.push(o)}),a.length>0){let e=0,c=0;a.forEach(t=>{let n=t.node(),r=n.getComputedTextLength();e=Math.max(e,r);let i=n.getBBox();c=Math.max(c,i.height)});let l=e+20+105,u=i.length*16+20+c/2,d=o.padding,f=m-o.padding-l,p=o.padding,g=h-o.padding-u;t=Math.max(d,Math.min(t,f)),n=Math.max(p,Math.min(n,g)),a.forEach((e,r)=>{e.attr(`x`,t+10).attr(`y`,n+10+(r+1)*16)}),r.insert(`rect`,`text`).attr(`x`,t).attr(`y`,n).attr(`width`,l).attr(`height`,u).attr(`fill`,`white`).attr(`stroke`,s.axisColor).attr(`stroke-width`,1.5).attr(`rx`,4).attr(`ry`,4)}}}if(d.notes.length>0){let e=_.append(`g`).attr(`class`,`wardley-notes`);d.notes.forEach(t=>{let n=x(t.x),r=S(t.y);e.append(`text`).attr(`x`,n).attr(`y`,r).attr(`text-anchor`,`start`).attr(`font-size`,11).attr(`fill`,s.axisTextColor).attr(`font-weight`,`bold`).text(t.text)})}if(d.accelerators.length>0){let e=_.append(`g`).attr(`class`,`wardley-accelerators`);d.accelerators.forEach(t=>{let n=x(t.x),r=S(t.y),i=`
|
|
3
3
|
M ${n} ${r-30/2}
|
|
4
4
|
L ${n+60-20} ${r-30/2}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./linear-
|
|
1
|
+
import{t as e}from"./linear-CUfNl6zg.js";import{t}from"./ordinal-hYBb2elL.js";import{t as n}from"./init-D6jRqBbL.js";import{$t as r,An as i,Jt as a,N as o,T as s,Zt as c,_n as l,en as u,gt as d,hn as f,in as p,kn as m,mn as h,mt as g,nn as _,on as v,pn as y,tn as b}from"./MermaidBlock-B7_vB2SD.js";function x(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r<i;)a[r]=e+r*n;return a}function S(){var e=t().unknown(void 0),r=e.domain,i=e.range,a=0,o=1,s,c,l=!1,u=0,d=0,f=.5;delete e.unknown;function p(){var e=r().length,t=o<a,n=t?o:a,p=t?a:o;s=(p-n)/Math.max(1,e-u+d*2),l&&(s=Math.floor(s)),n+=(p-n-s*(e-u))*f,c=s*(1-u),l&&(n=Math.round(n),c=Math.round(c));var m=x(e).map(function(e){return n+s*e});return i(t?m.reverse():m)}return e.domain=function(e){return arguments.length?(r(e),p()):r()},e.range=function(e){return arguments.length?([a,o]=e,a=+a,o=+o,p()):[a,o]},e.rangeRound=function(e){return[a,o]=e,a=+a,o=+o,l=!0,p()},e.bandwidth=function(){return c},e.step=function(){return s},e.round=function(e){return arguments.length?(l=!!e,p()):l},e.padding=function(e){return arguments.length?(u=Math.min(1,d=+e),p()):u},e.paddingInner=function(e){return arguments.length?(u=Math.min(1,e),p()):u},e.paddingOuter=function(e){return arguments.length?(d=+e,p()):d},e.align=function(e){return arguments.length?(f=Math.max(0,Math.min(1,e)),p()):f},e.copy=function(){return S(r(),[a,o]).round(l).paddingInner(u).paddingOuter(d).align(f)},n.apply(p(),arguments)}var C=(function(){var e=m(function(e,t,n,r){for(n||={},r=e.length;r--;n[e[r]]=t);return n},`o`),t=[1,10,12,14,16,18,19,21,23],n=[2,6],r=[1,3],i=[1,5],a=[1,6],o=[1,7],s=[1,5,10,12,14,16,18,19,21,23,34,35,36],c=[1,25],l=[1,26],u=[1,28],d=[1,29],f=[1,30],p=[1,31],h=[1,32],g=[1,33],_=[1,34],v=[1,35],y=[1,36],b=[1,37],x=[1,43],S=[1,42],C=[1,47],w=[1,50],T=[1,10,12,14,16,18,19,21,23,34,35,36],E=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],D=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],O=[1,64],k={trace:m(function(){},`trace`),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:`error`,5:`XYCHART`,8:`CHART_ORIENTATION`,10:`title`,12:`X_AXIS`,14:`Y_AXIS`,16:`LINE`,18:`BAR`,19:`acc_title`,20:`acc_title_value`,21:`acc_descr`,22:`acc_descr_value`,23:`acc_descr_multiline_value`,24:`SQUARE_BRACES_START`,26:`SQUARE_BRACES_END`,27:`NUMBER_WITH_DECIMAL`,28:`COMMA`,31:`ARROW_DELIMITER`,34:`NEWLINE`,35:`SEMI`,36:`EOF`,38:`STR`,39:`MD_STR`,41:`AMP`,42:`NUM`,43:`ALPHA`,44:`PLUS`,45:`EQUALS`,46:`MULT`,47:`DOT`,48:`BRKT`,49:`MINUS`,50:`UNDERSCORE`},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:m(function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 5:r.setOrientation(a[s]);break;case 9:r.setDiagramTitle(a[s].text.trim());break;case 12:r.setLineData({text:``,type:`text`},a[s]);break;case 13:r.setLineData(a[s-1],a[s]);break;case 14:r.setBarData({text:``,type:`text`},a[s]);break;case 15:r.setBarData(a[s-1],a[s]);break;case 16:this.$=a[s].trim(),r.setAccTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),r.setAccDescription(this.$);break;case 19:this.$=a[s-1];break;case 20:this.$=[Number(a[s-2]),...a[s]];break;case 21:this.$=[Number(a[s])];break;case 22:r.setXAxisTitle(a[s]);break;case 23:r.setXAxisTitle(a[s-1]);break;case 24:r.setXAxisTitle({type:`text`,text:``});break;case 25:r.setXAxisBand(a[s]);break;case 26:r.setXAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 27:this.$=a[s-1];break;case 28:this.$=[a[s-2],...a[s]];break;case 29:this.$=[a[s]];break;case 30:r.setYAxisTitle(a[s]);break;case 31:r.setYAxisTitle(a[s-1]);break;case 32:r.setYAxisTitle({type:`text`,text:``});break;case 33:r.setYAxisRangeData(Number(a[s-2]),Number(a[s]));break;case 37:this.$={text:a[s],type:`text`};break;case 38:this.$={text:a[s],type:`text`};break;case 39:this.$={text:a[s],type:`markdown`};break;case 40:this.$=a[s];break;case 41:this.$=a[s-1]+``+a[s];break}},`anonymous`),table:[e(t,n,{3:1,4:2,7:4,5:r,34:i,35:a,36:o}),{1:[3]},e(t,n,{4:2,7:4,3:8,5:r,34:i,35:a,36:o}),e(t,n,{4:2,7:4,6:9,3:10,5:r,8:[1,11],34:i,35:a,36:o}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(s,[2,34]),e(s,[2,35]),e(s,[2,36]),{1:[2,1]},e(t,n,{4:2,7:4,3:21,5:r,34:i,35:a,36:o}),{1:[2,3]},e(s,[2,5]),e(t,[2,7],{4:22,34:i,35:a,36:o}),{11:23,37:24,38:c,39:l,40:27,41:u,42:d,43:f,44:p,45:h,46:g,47:_,48:v,49:y,50:b},{11:39,13:38,24:x,27:S,29:40,30:41,37:24,38:c,39:l,40:27,41:u,42:d,43:f,44:p,45:h,46:g,47:_,48:v,49:y,50:b},{11:45,15:44,27:C,33:46,37:24,38:c,39:l,40:27,41:u,42:d,43:f,44:p,45:h,46:g,47:_,48:v,49:y,50:b},{11:49,17:48,24:w,37:24,38:c,39:l,40:27,41:u,42:d,43:f,44:p,45:h,46:g,47:_,48:v,49:y,50:b},{11:52,17:51,24:w,37:24,38:c,39:l,40:27,41:u,42:d,43:f,44:p,45:h,46:g,47:_,48:v,49:y,50:b},{20:[1,53]},{22:[1,54]},e(T,[2,18]),{1:[2,2]},e(T,[2,8]),e(T,[2,9]),e(E,[2,37],{40:55,41:u,42:d,43:f,44:p,45:h,46:g,47:_,48:v,49:y,50:b}),e(E,[2,38]),e(E,[2,39]),e(D,[2,40]),e(D,[2,42]),e(D,[2,43]),e(D,[2,44]),e(D,[2,45]),e(D,[2,46]),e(D,[2,47]),e(D,[2,48]),e(D,[2,49]),e(D,[2,50]),e(D,[2,51]),e(T,[2,10]),e(T,[2,22],{30:41,29:56,24:x,27:S}),e(T,[2,24]),e(T,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:c,39:l,40:27,41:u,42:d,43:f,44:p,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,11]),e(T,[2,30],{33:60,27:C}),e(T,[2,32]),{31:[1,61]},e(T,[2,12]),{17:62,24:w},{25:63,27:O},e(T,[2,14]),{17:65,24:w},e(T,[2,16]),e(T,[2,17]),e(D,[2,41]),e(T,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},e(T,[2,31]),{27:[1,69]},e(T,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},e(T,[2,15]),e(T,[2,26]),e(T,[2,27]),{11:59,32:72,37:24,38:c,39:l,40:27,41:u,42:d,43:f,44:p,45:h,46:g,47:_,48:v,49:y,50:b},e(T,[2,33]),e(T,[2,19]),{25:73,27:O},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:m(function(e,t){if(t.recoverable)this.trace(e);else{var n=Error(e);throw n.hash=t,n}},`parseError`),parse:m(function(e){var t=this,n=[0],r=[],i=[null],a=[],o=this.table,s=``,c=0,l=0,u=0,d=2,f=1,p=a.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(g.yy[_]=this.yy[_]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,h.yylloc===void 0&&(h.yylloc={});var v=h.yylloc;a.push(v);var y=h.options&&h.options.ranges;typeof g.yy.parseError==`function`?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function b(e){n.length-=2*e,i.length-=e,a.length-=e}m(b,`popStack`);function x(){var e=r.pop()||h.lex()||f;return typeof e!=`number`&&(e instanceof Array&&(r=e,e=r.pop()),e=t.symbols_[e]||e),e}m(x,`lex`);for(var S,C,w,T,E,D={},O,k,A,j;;){if(w=n[n.length-1],this.defaultActions[w]?T=this.defaultActions[w]:(S??=x(),T=o[w]&&o[w][S]),T===void 0||!T.length||!T[0]){var M=``;for(O in j=[],o[w])this.terminals_[O]&&O>d&&j.push(`'`+this.terminals_[O]+`'`);M=h.showPosition?`Parse error on line `+(c+1)+`:
|
|
2
2
|
`+h.showPosition()+`
|
|
3
3
|
Expecting `+j.join(`, `)+`, got '`+(this.terminals_[S]||S)+`'`:`Parse error on line `+(c+1)+`: Unexpected `+(S==f?`end of input`:`'`+(this.terminals_[S]||S)+`'`),this.parseError(M,{text:h.match,token:this.terminals_[S]||S,line:h.yylineno,loc:v,expected:j})}if(T[0]instanceof Array&&T.length>1)throw Error(`Parse Error: multiple actions possible at state: `+w+`, token: `+S);switch(T[0]){case 1:n.push(S),i.push(h.yytext),a.push(h.yylloc),n.push(T[1]),S=null,C?(S=C,C=null):(l=h.yyleng,s=h.yytext,c=h.yylineno,v=h.yylloc,u>0&&u--);break;case 2:if(k=this.productions_[T[1]][1],D.$=i[i.length-k],D._$={first_line:a[a.length-(k||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(k||1)].first_column,last_column:a[a.length-1].last_column},y&&(D._$.range=[a[a.length-(k||1)].range[0],a[a.length-1].range[1]]),E=this.performAction.apply(D,[s,l,c,g.yy,T[1],i,a].concat(p)),E!==void 0)return E;k&&(n=n.slice(0,-1*k*2),i=i.slice(0,-1*k),a=a.slice(0,-1*k)),n.push(this.productions_[T[1]][0]),i.push(D.$),a.push(D._$),A=o[n[n.length-2]][n[n.length-1]],n.push(A);break;case 3:return!0}}return!0},`parse`)};k.lexer=(function(){return{EOF:1,parseError:m(function(e,t){if(this.yy.parser)this.yy.parser.parseError(e,t);else throw Error(e)},`parseError`),setInput:m(function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match=``,this.conditionStack=[`INITIAL`],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},`setInput`),input:m(function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},`input`),unput:m(function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},`unput`),more:m(function(){return this._more=!0,this},`more`),reject:m(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError(`Lexical error on line `+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:``,token:null,line:this.yylineno});return this},`reject`),less:m(function(e){this.unput(this.match.slice(e))},`less`),pastInput:m(function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?`...`:``)+e.substr(-20).replace(/\n/g,``)},`pastInput`),upcomingInput:m(function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?`...`:``)).replace(/\n/g,``)},`upcomingInput`),showPosition:m(function(){var e=this.pastInput(),t=Array(e.length+1).join(`-`);return e+this.upcomingInput()+`
|
package/dist-ksadk/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="./favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
|
7
7
|
<title>AgentEngine</title>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-NDLr6qy9.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="./assets/index-DAURbCsP.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/dist-lib/App.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export type AgentWorkbenchFeatureFlags = Record<string, boolean>;
|
|
3
|
+
export type AgentWorkbenchInitialSurface = 'chat' | 'tui' | 'workspace';
|
|
3
4
|
export type AgentWorkbenchProps = {
|
|
4
5
|
apiAdapter?: import('./core/api/types.js').ApiFacade;
|
|
5
6
|
featureFlags?: AgentWorkbenchFeatureFlags;
|
|
7
|
+
initialSurface?: AgentWorkbenchInitialSurface;
|
|
6
8
|
routeShell?: React.ComponentType<{
|
|
7
9
|
children: React.ReactNode;
|
|
8
10
|
}>;
|
|
9
11
|
};
|
|
10
|
-
export declare function AgentWorkbench({ apiAdapter, routeShell: RouteShell }?: AgentWorkbenchProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function AgentWorkbench({ apiAdapter, initialSurface, routeShell: RouteShell }?: AgentWorkbenchProps): import("react/jsx-runtime").JSX.Element;
|
|
11
13
|
export default function App(): import("react/jsx-runtime").JSX.Element;
|
|
12
14
|
//# sourceMappingURL=App.d.ts.map
|
package/dist-lib/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6D,MAAM,OAAO,CAAC;AA0DlF,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjE,MAAM,MAAM,4BAA4B,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,OAAO,qBAAqB,EAAE,SAAS,CAAC;IACrD,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,cAAc,CAAC,EAAE,4BAA4B,CAAC;IAC9C,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;CACjE,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,cAAuB,EAAE,UAAU,EAAE,UAAU,EAAE,GAAE,mBAAwB,2CA+VvH;AAED,MAAM,CAAC,OAAO,UAAU,GAAG,4CAE1B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as e, i as t, k as n } from "./WorkspacePanelContainer-BTxXY3RS.js";
|
|
2
2
|
import { t as r } from "./artifact-BfFsPe5A.js";
|
|
3
3
|
import { Download as i, X as a } from "lucide-react";
|
|
4
4
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
@@ -6,10 +6,10 @@ import { useRef as c } from "react";
|
|
|
6
6
|
//#region src/components/artifacts/ArtifactsPanel.tsx
|
|
7
7
|
function l() {
|
|
8
8
|
let l = r((e) => e.visible), u = r((e) => e.content), d = r((e) => e.type), f = r((e) => e.hide), p = c(null);
|
|
9
|
-
if (
|
|
10
|
-
let m =
|
|
9
|
+
if (e(p), !l || !u) return null;
|
|
10
|
+
let m = t(u);
|
|
11
11
|
return /* @__PURE__ */ s("aside", {
|
|
12
|
-
className:
|
|
12
|
+
className: n("flex h-full flex-shrink-0 flex-col border-l border-slate-200/30 bg-white dark:border-slate-800/40 dark:bg-slate-950", "w-[min(42rem,50vw)]"),
|
|
13
13
|
children: [/* @__PURE__ */ s("div", {
|
|
14
14
|
className: "flex h-14 flex-shrink-0 items-center justify-between border-b border-slate-200/30 px-4 dark:border-slate-800/40",
|
|
15
15
|
children: [/* @__PURE__ */ s("div", {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as e,
|
|
1
|
+
import { a as e, d as t, i as n } from "./WorkspacePanelContainer-BTxXY3RS.js";
|
|
2
2
|
import { Check as r, Copy as i, Eye as a, X as o } from "lucide-react";
|
|
3
3
|
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
4
4
|
import { useEffect as l, useRef as u, useState as d } from "react";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CodeBlock as t } from "./CodeBlock-
|
|
1
|
+
import { S as e } from "./WorkspacePanelContainer-BTxXY3RS.js";
|
|
2
|
+
import { CodeBlock as t } from "./CodeBlock-CKy7sFkN.js";
|
|
3
3
|
import { MermaidBlock as n } from "./MermaidBlock-BFNE1NN8.js";
|
|
4
4
|
import { jsx as r } from "react/jsx-runtime";
|
|
5
5
|
import i from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { k as e } from "./WorkspacePanelContainer-BTxXY3RS.js";
|
|
2
2
|
import { CheckCircle2 as t, PlugZap as n, Plus as r, RefreshCw as i, TerminalSquare as a, Trash2 as o, X as s } from "lucide-react";
|
|
3
3
|
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
4
4
|
import { useCallback as u, useEffect as d, useMemo as f, useRef as p, useState as m } from "react";
|
|
@@ -28,9 +28,15 @@ function S(e = {}) {
|
|
|
28
28
|
}, n = String(e.sessionId || e.session_id || "").trim();
|
|
29
29
|
n && (t.session_id = n);
|
|
30
30
|
let r = String(e.cwd || "").trim();
|
|
31
|
-
return r && (t.cwd = r), e.options && typeof e.options == "object" && (t.options = e.options), t;
|
|
31
|
+
return r && (t.cwd = r), e.options && typeof e.options == "object" && (t.options = e.options), (e.forceNew === !0 || e.force_new === !0) && (t.force_new = !0), t;
|
|
32
32
|
}
|
|
33
|
-
function C(e) {
|
|
33
|
+
function C(e = {}, t) {
|
|
34
|
+
let n = t || (typeof window < "u" ? window.location : { href: "http://localhost/" }), r = new URL(_, n.href || "http://localhost/"), i = String(e.sessionId || e.session_id || "").trim();
|
|
35
|
+
i && r.searchParams.set("session_id", i);
|
|
36
|
+
let a = String(e.mode || "").trim();
|
|
37
|
+
return a && r.searchParams.set("mode", a), r.pathname + r.search;
|
|
38
|
+
}
|
|
39
|
+
function w(e) {
|
|
34
40
|
return (Array.isArray(e?.sessions) ? e.sessions : Array.isArray(e?.Sessions) ? e.Sessions : []).map((e) => ({
|
|
35
41
|
terminal_session_id: String(e?.terminal_session_id || e?.TerminalSessionId || "").trim(),
|
|
36
42
|
mode: String(e?.mode || e?.Mode || "tui").trim() || "tui",
|
|
@@ -47,7 +53,7 @@ function C(e) {
|
|
|
47
53
|
return n === r ? x(t) - x(e) : r - n;
|
|
48
54
|
});
|
|
49
55
|
}
|
|
50
|
-
function
|
|
56
|
+
function T(e = "/_ksadk/terminal/ws", t, n) {
|
|
51
57
|
let r = n || (typeof window < "u" ? window.location : {
|
|
52
58
|
href: "http://localhost/",
|
|
53
59
|
protocol: "http:"
|
|
@@ -56,16 +62,16 @@ function w(e = "/_ksadk/terminal/ws", t, n) {
|
|
|
56
62
|
let a = String(t || "").trim();
|
|
57
63
|
return a && i.searchParams.set("terminal_session_id", a), i.toString();
|
|
58
64
|
}
|
|
59
|
-
function
|
|
65
|
+
function E(e) {
|
|
60
66
|
return String(e || "").replace(v, "").replace(y, "");
|
|
61
67
|
}
|
|
62
68
|
//#endregion
|
|
63
69
|
//#region src/components/native/NativeTerminalPanel.tsx
|
|
64
|
-
var
|
|
65
|
-
function
|
|
70
|
+
var D = /* @__PURE__ */ g({ NativeTerminalPanel: () => j }), O = 2e4;
|
|
71
|
+
function k(e) {
|
|
66
72
|
return typeof e == "string" ? Promise.resolve(e) : e instanceof Blob ? e.text() : Promise.resolve(new TextDecoder().decode(e));
|
|
67
73
|
}
|
|
68
|
-
async function
|
|
74
|
+
async function A(e) {
|
|
69
75
|
let t = await e.text();
|
|
70
76
|
if (!t) return {};
|
|
71
77
|
try {
|
|
@@ -74,29 +80,64 @@ async function k(e) {
|
|
|
74
80
|
return {};
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
|
-
function
|
|
78
|
-
let [
|
|
79
|
-
|
|
83
|
+
function j({ capability: h, open: g, onClose: v, sessionId: y, autoCreateWhenEmpty: b = !0 }) {
|
|
84
|
+
let [x, D] = m("idle"), [j, M] = m([]), [N, P] = m(null), [F, I] = m(!1), L = p(null), R = p(null), z = p(null), B = p(null), V = p([]), H = p(null), U = p(!1), W = f(() => j.find((e) => e.terminal_session_id === N) || null, [N, j]), G = u(async ({ forceNew: e = !1 } = {}) => {
|
|
85
|
+
U.current = !0, D("connecting");
|
|
86
|
+
let t = await fetch(_, {
|
|
87
|
+
method: "POST",
|
|
88
|
+
headers: { "Content-Type": "application/json" },
|
|
89
|
+
body: JSON.stringify(S({
|
|
90
|
+
mode: h.Mode || "tui",
|
|
91
|
+
sessionId: y,
|
|
92
|
+
forceNew: e
|
|
93
|
+
}))
|
|
94
|
+
});
|
|
95
|
+
if (!t.ok) {
|
|
96
|
+
D("error");
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
let n = (await A(t))?.session;
|
|
100
|
+
if (!n?.terminal_session_id) {
|
|
101
|
+
D("error");
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
await H.current?.(), P(n.terminal_session_id);
|
|
105
|
+
}, [h.Mode, y]), K = u(async () => {
|
|
106
|
+
I(!0);
|
|
80
107
|
try {
|
|
81
|
-
let e = await fetch(
|
|
108
|
+
let e = await fetch(C({
|
|
109
|
+
sessionId: y,
|
|
110
|
+
mode: h.Mode || "tui"
|
|
111
|
+
}));
|
|
82
112
|
if (!e.ok) throw Error(`HTTP ${e.status}`);
|
|
83
|
-
let t =
|
|
84
|
-
|
|
113
|
+
let t = w(await A(e));
|
|
114
|
+
M(t), P((e) => e && t.some((t) => t.terminal_session_id === e) ? e : t[0]?.terminal_session_id || null), g && h.Enabled && b && t.length === 0 && !U.current && (U.current = !0, await G());
|
|
85
115
|
} catch {
|
|
86
|
-
|
|
116
|
+
D("error");
|
|
87
117
|
} finally {
|
|
88
|
-
|
|
118
|
+
I(!1);
|
|
89
119
|
}
|
|
90
|
-
}, [
|
|
120
|
+
}, [
|
|
121
|
+
b,
|
|
122
|
+
h.Enabled,
|
|
123
|
+
h.Mode,
|
|
124
|
+
G,
|
|
125
|
+
g,
|
|
126
|
+
y
|
|
127
|
+
]);
|
|
91
128
|
d(() => {
|
|
92
|
-
|
|
93
|
-
}, [
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
129
|
+
V.current = j;
|
|
130
|
+
}, [j]), d(() => {
|
|
131
|
+
H.current = K;
|
|
132
|
+
}, [K]), d(() => {
|
|
133
|
+
(!g || !h.Enabled) && (U.current = !1);
|
|
134
|
+
}, [h.Enabled, g]);
|
|
135
|
+
let q = u(async (e) => {
|
|
136
|
+
if (!L.current) return () => {};
|
|
137
|
+
D("connecting");
|
|
97
138
|
let t = !1, n = null, r = null, i = null, a = null, o = null, s = null, c = null, l = null;
|
|
98
|
-
return
|
|
99
|
-
if (t || !
|
|
139
|
+
return R.current?.close(1e3, "switch terminal session"), R.current = null, z.current?.dispose(), z.current = null, B.current = null, L.current.innerHTML = "", Promise.all([import("@xterm/xterm"), import("@xterm/addon-fit")]).then(([u, d]) => {
|
|
140
|
+
if (t || !L.current) return;
|
|
100
141
|
let { Terminal: f } = u, { FitAddon: p } = d;
|
|
101
142
|
n = new f({
|
|
102
143
|
cursorBlink: !0,
|
|
@@ -129,7 +170,7 @@ function A({ capability: h, open: g, onClose: v }) {
|
|
|
129
170
|
brightCyan: "#67e8f9",
|
|
130
171
|
brightWhite: "#ffffff"
|
|
131
172
|
}
|
|
132
|
-
}), r = new p(), n.loadAddon(r), n.open(
|
|
173
|
+
}), r = new p(), n.loadAddon(r), n.open(L.current), z.current = n, B.current = r;
|
|
133
174
|
let m = () => {
|
|
134
175
|
try {
|
|
135
176
|
r?.fit();
|
|
@@ -149,40 +190,40 @@ function A({ capability: h, open: g, onClose: v }) {
|
|
|
149
190
|
}));
|
|
150
191
|
});
|
|
151
192
|
};
|
|
152
|
-
window.setTimeout(v, 0), o = new WebSocket(
|
|
193
|
+
window.setTimeout(v, 0), o = new WebSocket(T(h.Path || "/_ksadk/terminal/ws", e.terminal_session_id), h.Protocol || "ks-terminal.v1"), R.current = o, o.addEventListener("open", () => {
|
|
153
194
|
m(), o?.send(JSON.stringify({
|
|
154
195
|
type: "attach",
|
|
155
196
|
terminal_session_id: e.terminal_session_id,
|
|
156
197
|
cols: n?.cols || e.cols || 80,
|
|
157
198
|
rows: n?.rows || e.rows || 24
|
|
158
|
-
})), v(),
|
|
199
|
+
})), v(), D("connected"), n?.focus();
|
|
159
200
|
}), o.addEventListener("message", (e) => {
|
|
160
201
|
if (typeof e.data == "string") try {
|
|
161
202
|
let t = JSON.parse(e.data);
|
|
162
203
|
if (t?.type === "ready") {
|
|
163
|
-
|
|
204
|
+
D("connected");
|
|
164
205
|
return;
|
|
165
206
|
}
|
|
166
207
|
if (t?.type === "pong") return;
|
|
167
208
|
if (t?.type === "exit") {
|
|
168
|
-
|
|
209
|
+
D("closed");
|
|
169
210
|
return;
|
|
170
211
|
}
|
|
171
212
|
if (t?.type === "error") {
|
|
172
|
-
|
|
213
|
+
D("error"), n?.writeln(`\r\n${t.message || "Terminal error"}`);
|
|
173
214
|
return;
|
|
174
215
|
}
|
|
175
216
|
} catch {}
|
|
176
|
-
|
|
217
|
+
k(e.data).then((e) => {
|
|
177
218
|
e && n?.write(e);
|
|
178
219
|
});
|
|
179
220
|
}), o.addEventListener("close", () => {
|
|
180
|
-
|
|
221
|
+
D((e) => e === "error" ? e : "closed"), R.current = null;
|
|
181
222
|
}), o.addEventListener("error", () => {
|
|
182
|
-
|
|
223
|
+
D("error");
|
|
183
224
|
});
|
|
184
225
|
let y = (e) => {
|
|
185
|
-
let t =
|
|
226
|
+
let t = E(e);
|
|
186
227
|
t && o?.readyState === WebSocket.OPEN && o.send(new TextEncoder().encode(t));
|
|
187
228
|
};
|
|
188
229
|
i = n.onData((e) => {
|
|
@@ -191,57 +232,40 @@ function A({ capability: h, open: g, onClose: v }) {
|
|
|
191
232
|
y(e);
|
|
192
233
|
}), l = window.setInterval(() => {
|
|
193
234
|
o?.readyState === WebSocket.OPEN && o.send(JSON.stringify({ type: "ping" }));
|
|
194
|
-
},
|
|
235
|
+
}, O), s = () => {
|
|
195
236
|
_();
|
|
196
237
|
}, window.addEventListener("resize", s), c = new ResizeObserver(() => {
|
|
197
238
|
v();
|
|
198
|
-
}), c.observe(
|
|
239
|
+
}), c.observe(L.current);
|
|
199
240
|
}), () => {
|
|
200
|
-
t = !0, i?.dispose(), a?.dispose(), s && window.removeEventListener("resize", s), l !== null && window.clearInterval(l), c?.disconnect(), o && (o.readyState === WebSocket.OPEN || o.readyState === WebSocket.CONNECTING) && o.close(1e3, "panel closed"),
|
|
241
|
+
t = !0, i?.dispose(), a?.dispose(), s && window.removeEventListener("resize", s), l !== null && window.clearInterval(l), c?.disconnect(), o && (o.readyState === WebSocket.OPEN || o.readyState === WebSocket.CONNECTING) && o.close(1e3, "panel closed"), R.current === o && (R.current = null), n?.dispose(), z.current = null, B.current = null;
|
|
201
242
|
};
|
|
202
243
|
}, [h.Path, h.Protocol]);
|
|
203
244
|
d(() => {
|
|
204
|
-
!g || !h.Enabled ||
|
|
245
|
+
!g || !h.Enabled || K();
|
|
205
246
|
}, [
|
|
206
247
|
h.Enabled,
|
|
207
248
|
g,
|
|
208
|
-
|
|
249
|
+
K
|
|
209
250
|
]), d(() => {
|
|
210
|
-
let e =
|
|
251
|
+
let e = V.current.find((e) => e.terminal_session_id === N) || null;
|
|
211
252
|
if (!g || !e) return;
|
|
212
253
|
let t = () => {}, n = !1;
|
|
213
|
-
return
|
|
254
|
+
return q(e).then((e) => {
|
|
214
255
|
t = e, n && t();
|
|
215
256
|
}), () => {
|
|
216
257
|
n = !0, t();
|
|
217
258
|
};
|
|
218
259
|
}, [
|
|
219
|
-
|
|
220
|
-
|
|
260
|
+
N,
|
|
261
|
+
q,
|
|
221
262
|
g
|
|
222
263
|
]);
|
|
223
|
-
let
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
method: "POST",
|
|
227
|
-
headers: { "Content-Type": "application/json" },
|
|
228
|
-
body: JSON.stringify(S({ mode: h.Mode || "tui" }))
|
|
229
|
-
});
|
|
230
|
-
if (!e.ok) {
|
|
231
|
-
b("error");
|
|
232
|
-
return;
|
|
233
|
-
}
|
|
234
|
-
let t = (await k(e))?.session;
|
|
235
|
-
if (!t?.terminal_session_id) {
|
|
236
|
-
b("error");
|
|
237
|
-
return;
|
|
238
|
-
}
|
|
239
|
-
await B(), j(t.terminal_session_id);
|
|
240
|
-
}, U = async (e) => {
|
|
241
|
-
let t = x.filter((t) => t.terminal_session_id !== e);
|
|
242
|
-
E(t), A === e && (j(t[0]?.terminal_session_id || null), t.length === 0 && b("idle"), F.current?.close(1e3, "terminal session deleted"), F.current = null, I.current?.dispose(), I.current = null, L.current = null, P.current && (P.current.innerHTML = ""));
|
|
264
|
+
let J = async (e) => {
|
|
265
|
+
let t = j.filter((t) => t.terminal_session_id !== e);
|
|
266
|
+
M(t), N === e && (P(t[0]?.terminal_session_id || null), t.length === 0 && D("idle"), R.current?.close(1e3, "terminal session deleted"), R.current = null, z.current?.dispose(), z.current = null, B.current = null, L.current && (L.current.innerHTML = ""));
|
|
243
267
|
let n = await fetch(`${_}/${e}`, { method: "DELETE" });
|
|
244
|
-
!n.ok && n.status !== 404 &&
|
|
268
|
+
!n.ok && n.status !== 404 && D("error"), await K();
|
|
245
269
|
};
|
|
246
270
|
return g ? /* @__PURE__ */ l("div", {
|
|
247
271
|
className: "fixed inset-0 z-50 overflow-hidden border border-slate-800 bg-slate-950 text-slate-100 shadow-2xl shadow-slate-950/40 sm:inset-3 sm:rounded-3xl",
|
|
@@ -259,7 +283,7 @@ function A({ capability: h, open: g, onClose: v }) {
|
|
|
259
283
|
children: "Native TUI"
|
|
260
284
|
}), /* @__PURE__ */ l("div", {
|
|
261
285
|
className: "flex items-center gap-1.5 text-xs text-slate-400",
|
|
262
|
-
children: [/* @__PURE__ */ c(n, { className: "h-3 w-3" }),
|
|
286
|
+
children: [/* @__PURE__ */ c(n, { className: "h-3 w-3" }), x]
|
|
263
287
|
})]
|
|
264
288
|
})]
|
|
265
289
|
}), /* @__PURE__ */ l("div", {
|
|
@@ -267,14 +291,14 @@ function A({ capability: h, open: g, onClose: v }) {
|
|
|
267
291
|
children: [
|
|
268
292
|
/* @__PURE__ */ c("button", {
|
|
269
293
|
type: "button",
|
|
270
|
-
onClick: () => void
|
|
294
|
+
onClick: () => void K(),
|
|
271
295
|
className: "rounded-xl p-2 text-slate-400 transition hover:bg-slate-800 hover:text-slate-100",
|
|
272
296
|
"aria-label": "刷新会话列表",
|
|
273
|
-
children: /* @__PURE__ */ c(i, { className: e("h-4 w-4",
|
|
297
|
+
children: /* @__PURE__ */ c(i, { className: e("h-4 w-4", F && "animate-spin") })
|
|
274
298
|
}),
|
|
275
299
|
/* @__PURE__ */ c("button", {
|
|
276
300
|
type: "button",
|
|
277
|
-
onClick: () => void
|
|
301
|
+
onClick: () => void G({ forceNew: !0 }),
|
|
278
302
|
className: "rounded-xl p-2 text-slate-400 transition hover:bg-slate-800 hover:text-slate-100",
|
|
279
303
|
"aria-label": "新建终端会话",
|
|
280
304
|
children: /* @__PURE__ */ c(r, { className: "h-4 w-4" })
|
|
@@ -297,19 +321,19 @@ function A({ capability: h, open: g, onClose: v }) {
|
|
|
297
321
|
children: "会话"
|
|
298
322
|
}), /* @__PURE__ */ l("div", {
|
|
299
323
|
className: "min-h-0 flex-1 overflow-y-auto p-2",
|
|
300
|
-
children: [
|
|
324
|
+
children: [j.length === 0 ? /* @__PURE__ */ l("button", {
|
|
301
325
|
type: "button",
|
|
302
|
-
onClick: () => void
|
|
326
|
+
onClick: () => void G({ forceNew: !0 }),
|
|
303
327
|
className: "flex w-full items-center justify-center gap-2 rounded-2xl border border-dashed border-slate-700 px-3 py-5 text-sm text-slate-400 transition hover:bg-slate-900",
|
|
304
328
|
children: [/* @__PURE__ */ c(r, { className: "h-4 w-4" }), "新建终端会话"]
|
|
305
|
-
}) : null,
|
|
329
|
+
}) : null, j.map((n) => /* @__PURE__ */ l("div", {
|
|
306
330
|
role: "button",
|
|
307
331
|
tabIndex: 0,
|
|
308
|
-
onClick: () =>
|
|
332
|
+
onClick: () => P(n.terminal_session_id),
|
|
309
333
|
onKeyDown: (e) => {
|
|
310
|
-
(e.key === "Enter" || e.key === " ") && (e.preventDefault(),
|
|
334
|
+
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), P(n.terminal_session_id));
|
|
311
335
|
},
|
|
312
|
-
className: e("group mb-2 rounded-2xl border px-3 py-3 text-left transition",
|
|
336
|
+
className: e("group mb-2 rounded-2xl border px-3 py-3 text-left transition", N === n.terminal_session_id ? "border-emerald-400/50 bg-emerald-500/10" : "border-slate-800 bg-slate-900/60 hover:bg-slate-900"),
|
|
313
337
|
children: [/* @__PURE__ */ l("div", {
|
|
314
338
|
className: "flex items-start justify-between gap-2",
|
|
315
339
|
children: [/* @__PURE__ */ l("div", {
|
|
@@ -326,7 +350,7 @@ function A({ capability: h, open: g, onClose: v }) {
|
|
|
326
350
|
children: [n.status === "running" ? /* @__PURE__ */ c(t, { className: "h-3.5 w-3.5 text-emerald-400" }) : null, /* @__PURE__ */ c("button", {
|
|
327
351
|
type: "button",
|
|
328
352
|
onClick: (e) => {
|
|
329
|
-
e.stopPropagation(),
|
|
353
|
+
e.stopPropagation(), J(n.terminal_session_id);
|
|
330
354
|
},
|
|
331
355
|
className: "rounded-lg p-1.5 text-slate-500 opacity-0 transition hover:bg-slate-800 hover:text-rose-300 group-hover:opacity-100",
|
|
332
356
|
title: "关闭会话",
|
|
@@ -366,19 +390,19 @@ function A({ capability: h, open: g, onClose: v }) {
|
|
|
366
390
|
className: "flex items-center gap-2",
|
|
367
391
|
children: [/* @__PURE__ */ c("span", {
|
|
368
392
|
className: "rounded-full border border-slate-700 px-2 py-0.5",
|
|
369
|
-
children:
|
|
370
|
-
}), /* @__PURE__ */ c("span", { children:
|
|
393
|
+
children: W?.terminal_session_id || "no session"
|
|
394
|
+
}), /* @__PURE__ */ c("span", { children: W?.status || "idle" })]
|
|
371
395
|
}), /* @__PURE__ */ c("div", {
|
|
372
396
|
className: "text-slate-500",
|
|
373
|
-
children:
|
|
397
|
+
children: W?.cwd || W?.session_id || "attach to a terminal session"
|
|
374
398
|
})]
|
|
375
399
|
}), /* @__PURE__ */ l("div", {
|
|
376
400
|
className: "relative min-h-0 flex-1",
|
|
377
|
-
children: [
|
|
401
|
+
children: [x === "connecting" ? /* @__PURE__ */ c("div", {
|
|
378
402
|
className: "absolute left-5 top-5 z-10 rounded-full bg-slate-900/90 px-3 py-1 text-xs text-slate-400",
|
|
379
403
|
children: "正在连接原生 TUI..."
|
|
380
404
|
}) : null, /* @__PURE__ */ c("div", {
|
|
381
|
-
ref:
|
|
405
|
+
ref: L,
|
|
382
406
|
className: "h-full w-full overflow-hidden bg-slate-950"
|
|
383
407
|
})]
|
|
384
408
|
})]
|
|
@@ -388,4 +412,4 @@ function A({ capability: h, open: g, onClose: v }) {
|
|
|
388
412
|
}) : null;
|
|
389
413
|
}
|
|
390
414
|
//#endregion
|
|
391
|
-
export {
|
|
415
|
+
export { D as n, j as t };
|