@bigduu/lotus 2026.5.12 → 2026.5.13
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/dist/assets/{App-D9R-_Pem.css → App-DNZiQHSs.css} +1 -1
- package/dist/assets/App-bVqmFSlk.js +224 -0
- package/dist/assets/{FeatureGuide-BNBq_PLn.js → FeatureGuide-BlFyQEho.js} +1 -1
- package/dist/assets/MetricsService-PUxHq4VE.js +1 -0
- package/dist/assets/SubAgentsPanel-B1pN_aEg.js +1 -0
- package/dist/assets/{_baseUniq-DVrw3Tro.js → _baseUniq-Rkm-pzcz.js} +1 -1
- package/dist/assets/{architectureDiagram-Q4EWVU46-BZE_2gaA.js → architectureDiagram-Q4EWVU46-Dr89vzdU.js} +1 -1
- package/dist/assets/{blockDiagram-DXYQGD6D-CI8uSrzU.js → blockDiagram-DXYQGD6D-TGOxvREa.js} +1 -1
- package/dist/assets/{c4Diagram-AHTNJAMY-DYfj69gY.js → c4Diagram-AHTNJAMY-CBv5o-M1.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-Cw-2rap4.js → chunk-4BX2VUAB-CxLevY_l.js} +1 -1
- package/dist/assets/{chunk-4TB4RGXK-jxTPHq0D.js → chunk-4TB4RGXK-CZ85N7UX.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-DmAIxchJ.js → chunk-55IACEB6-CyMcswjM.js} +1 -1
- package/dist/assets/{chunk-EDXVE4YY-FvClTRCF.js → chunk-EDXVE4YY-KspsFgAM.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-Dv-f6b4O.js → chunk-FMBD7UC4-BH440Lco.js} +1 -1
- package/dist/assets/{chunk-OYMX7WX6-CUAa_Yz6.js → chunk-OYMX7WX6-D5KuKqj-.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-D1FDs1aQ.js → chunk-QZHKN3VN-CYjk1VsY.js} +1 -1
- package/dist/assets/{chunk-YZCP3GAM-C2iPLYG9.js → chunk-YZCP3GAM-D1Ua-1JA.js} +1 -1
- package/dist/assets/classDiagram-6PBFFD2Q-D76pdmuK.js +1 -0
- package/dist/assets/classDiagram-v2-HSJHXN6E-D76pdmuK.js +1 -0
- package/dist/assets/clone-L6_2PEie.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-CidaofdU.js → cose-bilkent-S5V4N54A-DBcT_Wx0.js} +1 -1
- package/dist/assets/{dagre-KV5264BT-B5okAMLc.js → dagre-KV5264BT-DXZkFF5A.js} +1 -1
- package/dist/assets/{diagram-5BDNPKRD-DqlBY-17.js → diagram-5BDNPKRD-BsQPI1ko.js} +1 -1
- package/dist/assets/{diagram-G4DWMVQ6-BuAFDD-X.js → diagram-G4DWMVQ6-BO9UfQRh.js} +1 -1
- package/dist/assets/{diagram-MMDJMWI5-CFv_32_w.js → diagram-MMDJMWI5-DkWy2py4.js} +1 -1
- package/dist/assets/{diagram-TYMM5635-CEU-9NCq.js → diagram-TYMM5635-DkuaI_3A.js} +1 -1
- package/dist/assets/en-US-CnZu52UQ.js +3 -0
- package/dist/assets/{erDiagram-SMLLAGMA-BGcZ-Hfc.js → erDiagram-SMLLAGMA-5BQBJx-k.js} +1 -1
- package/dist/assets/{flowDiagram-DWJPFMVM-CCSeCjR1.js → flowDiagram-DWJPFMVM-CBv8eO1S.js} +1 -1
- package/dist/assets/{ganttDiagram-T4ZO3ILL-BqAoxnNO.js → ganttDiagram-T4ZO3ILL-CkWwjmoY.js} +1 -1
- package/dist/assets/{gitGraphDiagram-UUTBAWPF-DJ0V7_Rv.js → gitGraphDiagram-UUTBAWPF-Cq7iSNVm.js} +1 -1
- package/dist/assets/{graph-BxbYGKIB.js → graph-DP71R45G.js} +1 -1
- package/dist/assets/index-BBEDlZ5R.js +1 -0
- package/dist/assets/index-Bcpx4-c6.js +1 -0
- package/dist/assets/{index-DvyQfHOQ.js → index-BfCdANOc.js} +1 -1
- package/dist/assets/index-C1smAwgR.js +1 -0
- package/dist/assets/index-CIgS9N5-.js +1 -0
- package/dist/assets/index-CWTKRCxw.js +21 -0
- package/dist/assets/index-D9ODTr93.css +1 -0
- package/dist/assets/index-Dyeykeg3.js +8 -0
- package/dist/assets/index-GggL5P0b.js +1 -0
- package/dist/assets/index-Y7yrhp6h.js +1 -0
- package/dist/assets/{index-B-HCj2Sv.js → index-YqZv5PIH.js} +1 -1
- package/dist/assets/index-ZWAEbTDI.js +1 -0
- package/dist/assets/index-oQX-HGAT.js +1 -0
- package/dist/assets/index-rcVNW1p_.js +1 -0
- package/dist/assets/{index.es-BhiHSeCT.js → index.es-usLOUMSp.js} +1 -1
- package/dist/assets/{infoDiagram-42DDH7IO-Cemw9omR.js → infoDiagram-42DDH7IO-Cs719lD3.js} +1 -1
- package/dist/assets/{ishikawaDiagram-UXIWVN3A-BYRE-suN.js → ishikawaDiagram-UXIWVN3A-zTI5fHSR.js} +1 -1
- package/dist/assets/{journeyDiagram-VCZTEJTY-BRkAfzxG.js → journeyDiagram-VCZTEJTY-DINdIE0t.js} +1 -1
- package/dist/assets/{kanban-definition-6JOO6SKY-DrTcKNPa.js → kanban-definition-6JOO6SKY-BWZUu9_H.js} +1 -1
- package/dist/assets/{layout-B2E_GeCC.js → layout-QZEMSKRD.js} +1 -1
- package/dist/assets/main-BEVjNwcv.js +8 -0
- package/dist/assets/{min-5KBdYKFY.js → min-BB314uX0.js} +1 -1
- package/dist/assets/{mindmap-definition-QFDTVHPH-sq4qw8uy.js → mindmap-definition-QFDTVHPH-GgqTvonx.js} +1 -1
- package/dist/assets/{pieDiagram-DEJITSTG-C8vOtX53.js → pieDiagram-DEJITSTG-wmUFaxVG.js} +1 -1
- package/dist/assets/{quadrantDiagram-34T5L4WZ-LV5yQE3M.js → quadrantDiagram-34T5L4WZ-Bt7Nxjyo.js} +1 -1
- package/dist/assets/{requirementDiagram-MS252O5E-Bq6y8VCF.js → requirementDiagram-MS252O5E-4eb0TnXV.js} +1 -1
- package/dist/assets/{sankeyDiagram-XADWPNL6-DvABiNaK.js → sankeyDiagram-XADWPNL6-H6jXqw4X.js} +1 -1
- package/dist/assets/{sequenceDiagram-FGHM5R23-Bv9Ckauz.js → sequenceDiagram-FGHM5R23-DgqfEZPw.js} +1 -1
- package/dist/assets/{stateDiagram-FHFEXIEX-CwYUsnc5.js → stateDiagram-FHFEXIEX-CZrwRbTi.js} +1 -1
- package/dist/assets/stateDiagram-v2-QKLJ7IA2-CwhUMrAy.js +1 -0
- package/dist/assets/{timeline-definition-GMOUNBTQ-BgidC49j.js → timeline-definition-GMOUNBTQ-CMjl6c48.js} +1 -1
- package/dist/assets/vendor-antd-C8lKwvI6.js +502 -0
- package/dist/assets/{vendor-charts-BYce7JXy.js → vendor-charts-bhMup2Pu.js} +1 -1
- package/dist/assets/{vendor-markdown-DzaXAW9Q.js → vendor-markdown-DZuK0SxV.js} +1 -1
- package/dist/assets/{vendor-mermaid-De-Yacw-.js → vendor-mermaid-C1Gk9PtT.js} +4 -4
- package/dist/assets/{vendor-pdf-DHgAFQ2M.js → vendor-pdf-DB-djSmA.js} +4 -4
- package/dist/assets/{vennDiagram-DHZGUBPP-Bzkbjibi.js → vennDiagram-DHZGUBPP-CJuHv1C-.js} +1 -1
- package/dist/assets/{wardley-RL74JXVD-CBRp4POe.js → wardley-RL74JXVD-3f0MBifK.js} +1 -1
- package/dist/assets/{wardleyDiagram-NUSXRM2D-DAhT4-uz.js → wardleyDiagram-NUSXRM2D-DsfJX8FP.js} +1 -1
- package/dist/assets/{xychartDiagram-5P7HB3ND-CXfA4uSx.js → xychartDiagram-5P7HB3ND-DnywOWSH.js} +1 -1
- package/dist/assets/zh-CN-NcKxgANL.js +3 -0
- package/dist/index.html +4 -4
- package/package.json +2 -2
- package/dist/assets/App-D0lPE9xB.js +0 -223
- package/dist/assets/SubAgentsPanel-Cd3hI6oA.js +0 -1
- package/dist/assets/classDiagram-6PBFFD2Q-DVvX4wPS.js +0 -1
- package/dist/assets/classDiagram-v2-HSJHXN6E-DVvX4wPS.js +0 -1
- package/dist/assets/clone-DRAA6Q7k.js +0 -1
- package/dist/assets/en-US-DLwJLted.js +0 -3
- package/dist/assets/index-BEkwZ-K8.js +0 -1
- package/dist/assets/index-BJ91JKHM.js +0 -1
- package/dist/assets/index-BU7SwU12.js +0 -1
- package/dist/assets/index-CZebUuvC.js +0 -1
- package/dist/assets/index-CjawVLpi.js +0 -1
- package/dist/assets/index-CucuFwVZ.css +0 -1
- package/dist/assets/index-D6i0E0ol.js +0 -8
- package/dist/assets/index-DMuHtlMb.js +0 -1
- package/dist/assets/index-DYN0Kom_.js +0 -1
- package/dist/assets/index-DaK9qR94.js +0 -1
- package/dist/assets/index-sP4t2bcu.js +0 -1
- package/dist/assets/index-t4uyozr6.js +0 -21
- package/dist/assets/main-C9Xbnb0p.js +0 -6
- package/dist/assets/stateDiagram-v2-QKLJ7IA2-aegiqwuH.js +0 -1
- package/dist/assets/vendor-antd-DODjfilb.js +0 -502
- package/dist/assets/zh-CN-B74Ip0pW.js +0 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a8 as b,aC as m,aF as B,ac as C,ab as w,a7 as S,a6 as D,ao as T,ap as F,a5 as P,a4 as z,aD as A,aA as E,av as W}from"./vendor-mermaid-
|
|
1
|
+
import{a8 as b,aC as m,aF as B,ac as C,ab as w,a7 as S,a6 as D,ao as T,ap as F,a5 as P,a4 as z,aD as A,aA as E,av as W}from"./vendor-mermaid-C1Gk9PtT.js";import{p as _}from"./chunk-4BX2VUAB-CxLevY_l.js";import{p as N}from"./wardley-RL74JXVD-3f0MBifK.js";import"./vendor-antd-C8lKwvI6.js";import"./vendor-i18n-BNURlJ23.js";import"./min-BB314uX0.js";import"./_baseUniq-Rkm-pzcz.js";var L=A.packet,u,v=(u=class{constructor(){this.packet=[],this.setAccTitle=S,this.getAccTitle=D,this.setDiagramTitle=T,this.getDiagramTitle=F,this.getAccDescription=P,this.setAccDescription=z}getConfig(){const t=m({...L,...E().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){W(),this.packet=[]}},b(u,"PacketDB"),u),M=1e4,Y=b((e,t)=>{_(e,t);let o=-1,r=[],n=1;const{bitsPerRow:l}=t.getConfig();for(let{start:a,end:i,bits:d,label:c}of e.blocks){if(a!==void 0&&i!==void 0&&i<a)throw new Error(`Packet block ${a} - ${i} is invalid. End must be greater than start.`);if(a??(a=o+1),a!==o+1)throw new Error(`Packet block ${a} - ${i??a} is not contiguous. It should start from ${o+1}.`);if(d===0)throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);for(i??(i=a+(d??1)-1),d??(d=i-a+1),o=i,w.debug(`Packet block ${a} - ${o} with label ${c}`);r.length<=l+1&&t.getPacket().length<M;){const[p,s]=I({start:a,end:i,bits:d,label:c},n,l);if(r.push(p),p.end+1===n*l&&(t.pushWord(r),r=[],n++),!s)break;({start:a,end:i,bits:d,label:c}=s)}}t.pushWord(r)},"populate"),I=b((e,t,o)=>{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*o)return[e,void 0];const r=t*o-1,n=t*o;return[{start:e.start,end:r,label:e.label,bits:r-e.start},{start:n,end:e.end,label:e.label,bits:e.end-n}]},"getNextFittingBlock"),x={parser:{yy:void 0},parse:b(async e=>{var r;const t=await N("packet",e),o=(r=x.parser)==null?void 0:r.yy;if(!(o instanceof v))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");w.debug(t),Y(t,o)},"parse")},O=b((e,t,o,r)=>{const n=r.db,l=n.getConfig(),{rowHeight:a,paddingY:i,bitWidth:d,bitsPerRow:c}=l,p=n.getPacket(),s=n.getDiagramTitle(),h=a+i,g=h*(p.length+1)-(s?0:a),k=d*c+2,f=B(t);f.attr("viewBox",`0 0 ${k} ${g}`),C(f,g,k,l.useMaxWidth);for(const[y,$]of p.entries())j(f,$,y,l);f.append("text").text(s).attr("x",k/2).attr("y",g-h/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),j=b((e,t,o,{rowHeight:r,paddingX:n,paddingY:l,bitWidth:a,bitsPerRow:i,showBits:d})=>{const c=e.append("g"),p=o*(r+l)+l;for(const s of t){const h=s.start%i*a+1,g=(s.end-s.start+1)*a-n;if(c.append("rect").attr("x",h).attr("y",p).attr("width",g).attr("height",r).attr("class","packetBlock"),c.append("text").attr("x",h+g/2).attr("y",p+r/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(s.label),!d)continue;const k=s.end===s.start,f=p-2;c.append("text").attr("x",h+(k?g/2:0)).attr("y",f).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(s.start),k||c.append("text").attr("x",h+g).attr("y",f).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(s.end)}},"drawWord"),G={draw:O},H={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},K=b(({packet:e}={})=>{const t=m(H,e);return`
|
|
2
2
|
.packetByte {
|
|
3
3
|
font-size: ${t.byteFontSize};
|
|
4
4
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const e={translation:{app:{loading:"Loading...",retry:"Retry",backendNotReachable:"Backend not reachable at {{baseUrl}} (last error: {{message}})",errorBoundary:{title:"Something went wrong",description:"An unexpected error occurred in this section. You can try again or reload the page if the issue persists.",tryAgain:"Try Again",showDetails:"Show Details",hideDetails:"Hide Details"},passwordGate:{title:"Enter Access Password",description:"Password verification is required before entering the application.",passwordLabel:"Access Password",passwordPlaceholder:"Enter access password",submit:"Verify and Continue",validation:{required:"Please enter the access password",verifyFailed:"Password verification failed"}},notifications:{toolApproval:{title:"Approval Required: {{tool}}",body:"Tool {{tool}} needs your approval before execution",unknownTool:"Unknown Tool"},contextPressure:{title:"Context window nearly exhausted"},backgroundTask:{completedTitle:"Background Task Completed",completedBody:'"{{title}}" has completed',completedFallback:"A background task has completed"},clarification:{title:"Bodhi AI needs your response",fallbackBody:"Agent needs you to answer a question"},conversationSummarized:"Conversation summarized: {{messages}} messages compressed, saved {{tokens}} tokens",allTasksCompleted:"All tasks completed! Total rounds: {{rounds}}, Tool calls: {{toolCalls}}",evaluatingTasks:"Evaluating {{count}} task(s)...",evaluationCompleteUpdated:"Evaluation complete: {{count}} task(s) updated.",evaluationCompleteNoUpdates:"Evaluation complete: No updates needed"},defaultSessionTitle:"New Session"},layout:{showSidebar:"Show sidebar"},commandPalette:{searchPlaceholder:"Search sessions, settings, and actions",navigationHint:"Use ↑↓ to navigate, Enter to open, and Esc to close.",empty:"No matching commands",groups:{quickActions:"Quick actions",settings:"System settings"},badges:{quickAction:"Action",pinned:"Pinned",running:"Running",child:"Child",childSession:"Child session",rootSession:"Session"},actions:{newSession:"Create New Session",openProviderSettings:"Open Provider Settings",openMcpSettings:"Open MCP Settings",openWorkflowSettings:"Open Workflow Settings",openSessionsSettings:"Open Session Monitor",openSchedulesSettings:"Open Schedules"},errors:{actionFailed:"Command failed"}},common:{cancel:"Cancel",ok:"OK",apply:"Apply",save:"Save",delete:"Delete",saveAnyway:"Save Anyway",yes:"Yes",no:"No",home:"Home",parentDirectory:"Parent Directory",currentPath:"Current Path:",workspace:"Workspace",server:"Server:",category:"Category:",parameters:"Parameters",approve:"Approve",reject:"Reject",download:"Download",directory:"Directory",file:"File",close:"Close",clear:"Clear"},setup:{welcome:{heading:"Welcome to Bodhi",description:"Bodhi is your AI-powered development assistant. Get started by configuring an AI provider, or jump right in.",providerHint:"To start chatting, you'll need to configure an AI provider (e.g. OpenAI, Anthropic) with an API key.",proxyHint:"Behind a corporate proxy? You can configure proxy settings later in System Settings > Network."},button:{getStarted:"Get Started",configureProvider:"Configure Provider"},complete:{title:"All Set!",restartMessage:"Reloading the application..."},error:{completeFailed:"Failed to complete setup. Please try again."}},onboarding:{welcome:{title:"Welcome to Bodhi!",description:"Bodhi is your AI-powered development assistant. Let's take a quick look around."},newSession:{title:"New Session",description:"Click here to start a new chat session with the AI assistant."},taskTemplates:{title:"Task Templates",description:"Pick from pre-built templates like Code Review, Bug Investigation, Refactor, and more to jump-start your work."},modelPicker:{title:"Model Selection",description:"Switch between AI models and providers anytime from here."},sidebar:{title:"Session Sidebar",description:"Search, filter, pin, and switch between your conversations."},settings:{title:"Settings",description:"Configure AI providers, proxy settings, model mappings, MCP servers, and more."}},chat:{sidebar:{newSession:"New Session",createFailedTitle:"Failed to create session",createFailedUnknown:"Unknown error",searchPlaceholder:"Search sessions",filters:{all:"All",pinned:"Pinned",running:"Running",child:"Child"},empty:{noSessions:"No sessions yet",noMatches:"No matching sessions",hint:'Click "New Session" to get started',filterHint:"Try adjusting your search or filters"},dateGroups:{today:"Today",yesterday:"Yesterday",thisWeek:"This Week",thisMonth:"This Month",pinned:"Pinned",scheduled:"Scheduled"},actions:{collapseChildren:"Collapse child sessions",expandChildren:"Expand child sessions"},delete:{title:"Delete Session",confirm:"Are you sure you want to delete this session?"},deleteByDate:{title:"Delete sessions from {{date}}",confirm:"Are you sure you want to delete {{count}} sessions from {{date}}?"},newSessionWithPrompt:"New session with {{prompt}}"},workspace:{modalTitle:"Set Workspace Path",invalidTitle:"Invalid Workspace Path",issuesDetected:"Potential issues detected with the workspace path:",confirmSaveInvalid:"Do you still want to save this path?",errorEnterPath:"Please enter a workspace path",errorSaveFailed:"Failed to save workspace path",placeholder:"e.g. /Users/alice/Workspace/MyProject",label:"Workspace",browseFolder:"Browse folder",descriptionTitle:"Workspace Path Description",descriptionP1:"Set a workspace path so file references and workspace tools can resolve files reliably.",descriptionP2:"Choose an existing project folder. You can still continue with an invalid path, but related features may not work correctly.",checkTitle:"Workspace Path Check",checkDescription:"Workspace path validation failed.",recentTitle:"Recent Workspaces",suggestedTitle:"Suggested Workspaces",noRecentWorkspaces:"No recent workspaces",noSuggestions:"No suggestions",defaultWorkspaceName:"Workspace",validWorkspace:"Valid workspace",fileCount:"{{count}} files",folderSelected:"Folder selected successfully"},folderBrowser:{title:"Select Workspace Folder",selectCurrent:"Select Current Folder",emptyFolder:"This folder is empty",tip:'Tip: Click a folder to enter, click "Select Current Folder" to confirm',readFolderError:"Unable to read folder"},input:{placeholder:"Send a message...",placeholderWithReference:"Send a message (includes reference)",placeholderWithWorkflows:"Send a message... (type '/' for workflows)",toolCallsOnly:"Tool calls only (allowed tools: {{tools}})",autoPrefixMode:"Auto-prefix mode: {{prefix}} (type '/' to select tools)",toolSpecificMode:"Tool-specific mode (allowed tools: {{tools}})",processingFiles:"Processing files…",dropImagesHere:"Drop images here",referencing:"Referencing",addAttachments:"Add attachments",referenceWorkspaceFiles:"Reference workspace files",imageCountSingular:"{{count}} image",imageCountPlural:"{{count}} images",moreImages:"+{{count}} more",clearAllImages:"Clear all images",charLimitExceeded:"Message exceeds the maximum length of {{max}} characters.",messageFormatInvalid:"Message format is incorrect",filesAdded:"Added {{count}} file(s)",filesAttached:"Attached {{count}} file(s)",reasoningTitle:"Reasoning effort: {{label}}",reasoning:{low:"Low",medium:"Medium",high:"High",xhigh:"Very high",max:"Max"},strictToolOnlyMode:"Strict tool-only mode",toolSpecificModeLabel:"Tool-specific mode",allowedTools:"Allowed tools:",autoPrefixLabel:"Auto prefix: {{prefix}}",mustStartWithPrefix:'Message must start with "{{prefix}}"'},actions:{regenerate:"Regenerate response",retryFailed:"Retry failed request",retryOptions:"Retry options",cancelRequest:"Cancel request",sendMessage:"Send message",copyMessage:"Copy message",referenceMessage:"Reference message",unpin:"Unpin",pin:"Pin",generateTitle:"Generate AI Title",runProjectDream:"Run Project Dream",runProjectDreamRunning:"Running Project Dream...",runProjectDreamSuccess:"Project Dream updated",runProjectDreamNoChange:"No Project Dream update was needed",runProjectDreamFailed:"Failed to run Project Dream"},prompt:{selectorTitle:"Select System Prompt",createButton:"Create New Session",helperText:"Select a base system prompt for the AI. You can add or edit prompts in the System Settings.",emptyDescription:"No system prompts found. Add one in System Settings.",newSessionSelectorTitle:"Select System Prompt for New Session",defaultDescription:"Default system prompt.",loadPresetsFailed:"Failed to load presets",loadCurrentInfoFailed:"Failed to load current info",systemCard:{title:"System Prompt",viewEnhanced:"View Enhanced",viewBase:"View Base",copy:"Copy",snapshotTitle:"Prompt Snapshot",sections:{base:"Base",enhancement:"Enhancement",workspace:"Workspace",instruction:"Instruction",env:"Environment",skills:"Skills",toolGuide:"Tool Guide",dream:"Dream Notebook",sessionMemory:"Session Memory",externalMemory:"Memory Layers",taskList:"Task List",effective:"Effective Prompt"}}},fileReference:{title:"@ File Reference",setWorkspace:"Set Workspace",noMatches:"No matching files found",emptyDirectory:"Directory is empty"},imagePreview:{counter:"{{current}} of {{total}}"},filePreview:{fileCount_one:"{{count}} file",fileCount_other:"{{count}} files"},commandSelector:{loading:"Loading commands...",emptyWithSearch:'No commands found matching "{{search}}"',empty:"No commands available.",navigationHint:"Navigation: Up/Down or Ctrl+P/N | Select: Enter | Complete: Space/Tab | Cancel: Esc",types:{workflow:"Workflow",skill:"Skill",mcp:"MCP"}},model:{selectModel:"Select model",noModelSelected:"No model selected",selectModelHint:"Choose a model to start chatting.",providerNotConfigured:"Provider not configured",configureProviderHint:"Set up your provider in settings before selecting a model.",configureProvider:"Configure provider",openSettings:"Open Settings",noModelsAvailable:"No models available",selectModelBeforeSend:"Please select a model before sending.",selectModelBeforeRetry:"Please select a model before retrying."},streaming:{assistant:"Bodhi",requestCancelled:"Request cancelled",sendFailed:"Failed to send message",retryFailed:"Failed to retry request",modelConfigNotLoaded:"Model configuration not loaded",agentUnavailable:"Agent unavailable",noActiveChatTitle:"No Active Chat",noActiveChatSendContent:"Please create or select a chat before sending a message.",noActiveChatRetryContent:"Please create or select a chat before retrying.",noChatIdTitle:"Missing Chat ID",noChatIdSendContent:"Current chat is missing an ID. Please create a new chat and try again.",noChatIdRetryContent:"Current chat is missing an ID. Please create a new chat and retry."},selectionToolbar:{selectMessages:"Select messages",selectedCount:"{{selected}} selected ({{total}} total)",selectAll:"Select all",clear:"Clear",exportMarkdown:"Export Markdown",exportPdf:"Export PDF",done:"Done"},scroll:{jumpToTop:"Jump to top",backToLatest:"Back to latest",newMessages:"New messages",newMessagesWithCount_one:"{{count}} new message",newMessagesWithCount_other:"{{count}} new messages"},compression:{tag:"Context compressed",timelineDetail:"{{count}} messages archived",timelineAria:"{{detail}} at {{time}}",tooltip:"Latest compression at {{time}}: {{count}} messages archived",archivedShort:"{{count}} archived"},subAgents:{title:"Sub-agents",expand:"Expand",collapse:"Collapse",continue:"Continue here",open:"Open",retry:"Retry",hiddenHint:"{{count}} sub-agents hidden",runChildFailed:"Failed to run child session",continueChildFailed:"Failed to continue child session",fallbackTitle:"Sub-agent",statusRunning:"running",statusCompleted:"completed",statusPending:"pending",statusError:"error",statusCancelled:"cancelled",statusFailed:"failed",pinned:"Pinned",heartbeat:"heartbeat",round:"round",summaryCompleted:"{{count}} completed",summaryRunning:"{{count}} running",summaryPending:"{{count}} pending",summaryFailed:"{{count}} failed"},chatItem:{edit:"Edit",childTag:"Child"},systemPromptSelector:{defaultTag:"Default",hide:"Hide",preview:"Preview",copy:"Copy",lines:"{{count}} lines",words:"{{count}} words",chars:"{{count}} chars",noContent:"No content"},title:{updated:"Chat title updated",generateFailed:"Failed to generate chat title"},respond:{customAnswerPlaceholder:"Type your custom answer..."},emptyLauncher:{title:"Start with a task",subtitle:"Create a focused session in this pane and prefill the first message before you send it.",hint:"Nothing is sent automatically — you can edit the prompt first.",actions:{blank:{title:"Blank session",description:"Start from scratch with the default assistant and an empty composer.",sessionTitle:"New Session",prefill:""},codeReview:{title:"Code review",description:"Open a review-focused session with an editable review brief.",sessionTitle:"Code Review",prefill:"Review the relevant code changes in this workspace or repository. Start with the overall scope, then list risks, notable diffs, and the most important fixes."},tokenUsage:{title:"Token usage investigation",description:"Diagnose context growth, truncation risk, and token budget pressure.",sessionTitle:"Token Usage Investigation",prefill:"Help me investigate token usage, context growth, and truncation risk for this session or workflow. Summarize the likely drivers and recommend concrete next fixes."}},errors:{createFailed:"Failed to create session"}},multiPane:{splitHorizontal:"Split horizontally",splitVertical:"Split vertically",closePane:"Close pane",selectSessionHint:"Select a session to view messages",hoverToSplitHint:"Hover a pane to split and compare chats",selectMessagesToExport:"Select messages to export"},messageCard:{authRequired:"Authentication required",goToSettings:"Go to Settings",assistantThinking:"Assistant is thinking...",assistantCompactingContext:"Assistant is compacting context...",assistantCompactingContextDegraded:"Assistant is compacting context (degraded mode)...",assistantCompactingContextFailed:"Assistant failed to compact context. Continuing...",assistantUpdatingMemory:"Assistant is updating memory...",assistantRunningTool:"Assistant is running {{tool}}...",reasoning:"Reasoning",selected:"Selected",selectedTool:"Selected tool"},messageActions:{copy:"Copy",exportMarkdown:"Export as Markdown",exportPdf:"Export as PDF",restoreChat:"Restore chat only",restoreFilesAndChat:"Restore files and chat",deleteMessage:"Delete message",deleteFailed:"Failed to delete message",deleteNotFound:"Message no longer exists on backend. Reload and retry.",deleteConflict:"Session is running. Stop it and try deleting again.",deleteBatchFailed:"{{failed}} of {{total}} messages failed to delete.",savedFile:"Saved to {{filename}}",nothingToExport:"Nothing to export",exportFailed:"Export failed",cannotRestore:"Cannot restore this message",restorePartial:"Chat restored. {{count}} file(s) could not be restored.",restoreFilesSuccess:"Files and chat restored ({{count}} message(s) removed).",restoreSuccess:"Chat restored ({{count}} message(s) removed).",restoreFailed:"Failed to restore session",pdfUnavailable:"PDF export is unavailable in this environment",exportingPdf:"Exporting PDF..."},session:{defaultTitle:"New Session"},view:{roleUser:"You",roleAssistant:"Assistant",roleSystem:"System",roleDefault:"Message",exportSaved:"Saved: {{filename}}",providerNotConfigured:"Please configure provider first",unknownError:"Unknown error",workspacePathEmpty:"Workspace path cannot be empty",brandName:"Bodhi",subTitleUser:"Prompt",chatMessagesAria:"Chat messages",aiRespondingAria:"AI is responding",noExportableMessages:"No exportable messages",noActiveChat:"No active chat",selectAtLeastOneMessage:"Please select at least one message"},statusRail:{idle:"Ready",thinking:"Thinking…",runningTools:"Running tools…",waitingAnswer:"Waiting for your answer",runningChildren:"Running sub-agents…",completed:"Completed",error:"Error",childrenTooltip:"{{running}} running sub-agents"},systemPrompt:{preparing:"System prompt is being prepared..."},home:{running:"Running",justNow:"just now",minutesAgo:"{{count}}m ago",hoursAgo:"{{count}}h ago",daysAgo:"{{count}}d ago"}},settings:{page:{back:"Back",title:"System Settings",tabs:{config:"Config",prompts:"Prompts",mermaid:"Mermaid",skills:"Skills",workflows:"Workflows",mcp:"MCP",modelLimits:"Model Limits",metrics:"Metrics",schedules:"Schedules",sessions:"Sessions",app:"App",provider:"Provider",hooks:"Hooks",masking:"Masking",envVars:"Env Vars"},groups:{ai:"AI",toolsAndExtensions:"Tools & Extensions",securityAndPrivacy:"Security",monitoring:"Monitoring",system:"System"}},notifications:{deleteAllSuccess:"All sessions deleted (except pinned)",deleteEmptySuccess:"Empty sessions deleted (except pinned)",localStorageCleared:"Local storage has been cleared",resetSuccessReloading:"Application reset successful. Reloading...",resetFailed:"Failed to reset application",promptEnhancementSaved:"System prompt enhancement saved"},appTab:{switchOn:"ON",switchOff:"OFF",darkMode:"Dark Mode",vdiSafeMode:"Graphics compatibility mode",vdiSafeModeDesc:"Disables blur and glass effects that can break dropdowns and hover overlays in some virtual desktop, remote, or graphics-constrained environments.",vdiSafeModeEnabled:"Graphics compatibility mode enabled",vdiSafeModeDisabled:"Graphics compatibility mode disabled",darkModeDark:"Dark",darkModeLight:"Light",language:"Language",languageEnglish:"English",languageChinese:"Simplified Chinese",languageTraditionalChinese:"Traditional Chinese",languageFrench:"French",languageJapanese:"Japanese",languageHindi:"Hindi",deleteAllTitle:"Delete all sessions",deleteAllDescription:"Are you sure? This will delete all sessions except pinned.",deleteAllButton:"Delete All Sessions",deleteEmptyTitle:"Delete empty sessions",deleteEmptyDescription:"Are you sure? This will delete all sessions with no messages (except pinned).",deleteEmptyButton:"Delete Empty Sessions",clearLocalStorageTitle:"Clear Local Storage",clearLocalStorageDescription:"Are you sure? This will delete all local storage data and reset the application.",clearLocalStorageButton:"Clear Local Storage",confirmDeleteAll:"Yes, delete all",confirmDeleteEmpty:"Yes, delete empty",confirmClear:"Yes, clear it",cancel:"Cancel",dangerZone:"Danger Zone",dangerDescription:"These actions cannot be undone. All data will be permanently deleted.",resetApplicationTitle:"Reset Application",resetApplicationIntro:"Are you sure? This will:",resetStepDeleteAllSessions:"Delete ALL sessions (including pinned)",resetStepClearStorage:"Clear all local storage data",resetStepResetConfig:"Reset config.json to default",resetStepSetupFlow:"Trigger the initial setup flow on next launch",resetStepReplayGuide:"Replay feature guide",resetStepReload:"Reload the application",resetConfirm:"Yes, reset everything",resetButton:"Reset Application (All Data)",runningVersion:"Running version",runningVersionDesc:"This is the currently running Lotus frontend version."},configTab:{tabs:{general:"General",tools:"Tools"},loadConfigFailed:"Failed to load configuration",invalidConfig:"Invalid configuration",saveConfigSuccess:"Configuration saved successfully",saveConfigFailed:"Failed to save configuration",toolsLoadFailed:"Failed to load available tools",toolsReloadSuccess:"Tool list reloaded",toolsSaveSuccess:"Tool settings saved successfully",toolsSaveFailed:"Failed to save tool settings",backendSaved:"Backend URL saved",backendResetDefault:"Backend URL reset to default",backendUrlEmpty:"Backend URL cannot be empty",backendUrlInvalidProtocol:"Backend URL must start with http:// or https://",backendUrlInvalidUrl:"Backend URL is not a valid URL",backendUrlMustEndWithV1:'Backend URL must end with "/v1"',providerMovedTitle:"Provider Configuration Moved",providerMovedDescription:"GitHub Copilot and other provider settings have been moved to the Provider Settings tab. Please configure your providers there.",backendApiBaseUrlTitle:"Backend API Base URL",backendApiPlaceholder:"http://127.0.0.1:9562/v1",backendApiHint:"Must include /v1 path",accessPasswordTitle:"Access Password",accessPassword:{helperNotEnabled:"No access password is set. Once enabled, remote access requires a password while local loopback access can bypass it.",helperLocalBypass:"You are on a local connection, so you can change the access password without entering the current password.",helperRemote:"You are on a remote connection. Enter the current password before changing the access password.",loadStatusFailed:"Failed to load access status",updated:"Access password updated",enabled:"Access password set",updateFailed:"Failed to update access password",statusEnabled:"Access password enabled",statusDisabled:"Access password not enabled",currentPasswordLabel:"Current Password",newPasswordLabel:"New Password",setPasswordLabel:"Set Password",confirmPasswordLabel:"Confirm Password",updateAction:"Update Access Password",enableAction:"Enable Access Password",validation:{currentPasswordRequired:"Please enter the current password",newPasswordRequired:"Please enter a new password",confirmPasswordRequired:"Please enter the new password again",minLength:"Password must be at least 4 characters",passwordMismatch:"The passwords do not match"}},resetToDefault:"Reset to Default",save:"Save",language:"Language",languageEnglish:"English",languageChinese:"Simplified Chinese",languageTraditionalChinese:"Traditional Chinese",languageFrench:"French",languageJapanese:"Japanese",languageHindi:"Hindi",toolsTitle:"Tool Availability",toolsDescription:"Toggle whether each tool can be sent to the AI model. Disabled tools are hidden from model tool schemas.",memoryTitle:"Memory & Auto Dream",memoryDescription:"Manage Bamboo's memory layers: session memory for current-work continuity, long-term memory for durable knowledge, and Auto Dream for background Dream Notebook updates and durable memory extraction.",autoDreamEnabled:"Enable Auto Dream",autoDreamEnabledHint:"Automatically maintains the Dream Notebook and extracts long-term memory candidates in the background.",backgroundModel:"Background Memory Model",backgroundModelPlaceholder:"Leave empty to use the provider fast model",backgroundModelHint:"Optional dedicated model for memory summarization and reflection. If blank, Bamboo falls back to the current provider's fast model.",toolsEmpty:"No tools are currently available.",reloadTools:"Reload Tools",loadBambooConfigFailed:"Failed to load Bamboo config",bambooConfigSaved:"Bamboo config saved",saveBambooConfigFailed:"Failed to save Bamboo config"},networkCard:{title:"Network Settings",guideTip:"If you're behind a corporate proxy, configure your HTTP/HTTPS proxy and credentials here.",httpProxy:"HTTP Proxy",httpsProxy:"HTTPS Proxy",proxyPlaceholder:"http://proxy.example.com:8080",proxyAuthTitle:"Proxy Authentication",proxyConfiguredForUser:"Configured for user: {{username}}",clearCredentials:"Clear Credentials",username:"Username",password:"Password",apply:"Apply",credentialsStorageNote:"Proxy credentials are stored encrypted in ~/.bamboo/config.json",reload:"Reload",save:"Save"},modelMappingCard:{loadProviderFailed:"Failed to load provider configuration",loadMappingsFailed:"Failed to load existing mappings",loadModelsFailed:"Failed to load models",loadModelsHint:"Failed to load models. Please check your provider configuration.",mappingSaved:"Model mapping saved",mappingSaveFailed:"Failed to save model mapping",enterModelName:"Please enter a model name",customMappingSaved:"Custom model mapping saved",customMappingSaveFailed:"Failed to save custom model mapping",collapseTitle:"Provider Model Mapping",description:"Configure which {{provider}} models to use for provider-specific model alias resolution.",loadModelsErrorTitle:"Failed to Load Models",retry:"Retry",loadingModels:"Loading models...",modelTypeOpus:"Opus",modelTypeOpusDescription:'matches models containing "opus"',modelTypeSonnet:"Sonnet",modelTypeSonnetDescription:'matches models containing "sonnet"',modelTypeHaiku:"Haiku",modelTypeHaikuDescription:'matches models containing "haiku"',selectModelPlaceholder:"Select {{label}} model",customModelOption:"Custom model...",mappedModelNotFound:`Mapped model "{{model}}" not found in current provider's available models`,refreshModels:"Refresh Models",currentProvider:"Current Provider",loadingProvider:"Loading...",availableModels:"Available Models",cached:"(cached)",storedIn:"Stored in",customModalTitle:"Enter Custom Model Name",customModalDescription:"Enter a custom model name for {{modelType}}",customModalPlaceholder:"e.g., gpt-4-turbo-preview",customModalNote:"Note: Make sure the model name is valid for the current provider.",save:"Save",cancel:"Cancel"},modelTab:{selectModelTitle:"Select Model",loadingModels:"Loading models...",selectModelPlaceholder:"Select a model",backendApiBaseUrlTitle:"Backend API Base URL",resetToDefault:"Reset to Default",save:"Save",backendApiHint:"Must be a full base URL including /v1 (e.g. {{example}})."},mermaidTab:{title:"Mermaid Diagram Settings",description:"Customize how Mermaid diagrams are rendered in your chats",themeCardTitle:"Theme",themeLabel:"Mermaid Theme",themeTooltip:"Choose a built-in Mermaid theme. Default and Neutral auto-switch between light and dark based on app theme.",themeOptions:{default:"Default (Auto Light/Dark)",neutral:"Neutral (Auto Light/Dark)",dark:"Dark",forest:"Forest (Green Tones)",base:"Base (Minimal)"},themeDescriptionsTitle:"Theme Descriptions:",themeDescriptions:{default:"Default: Classic Mermaid look, auto-adapts to light/dark",neutral:"Neutral: Gray tones, auto-adapts to light/dark",dark:"Dark: Always dark theme",forest:"Forest: Green color scheme, good for technical diagrams",base:"Base: Minimal styling, for custom theming"},globalCardTitle:"Global Settings",fontSizeLabel:"Font Size",fontSizeTooltip:"Base font size for all diagram text (in pixels)",defaultZoomLabel:"Default Zoom",defaultZoomTooltip:"Initial zoom level for diagrams (1.0 = 100%)",responsiveWidthLabel:"Responsive Width",responsiveWidthTooltip:"Enable to make diagrams adapt to container width. Disable for fixed-width diagrams.",switchAuto:"Auto",switchFixed:"Fixed",flowchartCardTitle:"Flowchart Settings",flowchartNodeSpacingLabel:"Node Spacing",flowchartNodeSpacingTooltip:"Horizontal spacing between nodes",flowchartRankSpacingLabel:"Rank Spacing",flowchartRankSpacingTooltip:"Vertical spacing between layers",flowchartCurveTypeLabel:"Curve Type",flowchartCurveTypeTooltip:"Type of curve for connections",flowchartCurveOptions:{basis:"Smooth (Basis)",linear:"Linear",cardinal:"Cardinal"},sequenceCardTitle:"Sequence Diagram Settings",sequenceActorMarginLabel:"Actor Margin",sequenceActorMarginTooltip:"Spacing between actors",sequenceMessageMarginLabel:"Message Margin",sequenceMessageMarginTooltip:"Spacing between messages",sequenceActorWidthLabel:"Actor Width",sequenceActorWidthTooltip:"Width of each actor box",sequenceActorHeightLabel:"Actor Height",sequenceActorHeightTooltip:"Height of each actor box",ganttCardTitle:"Gantt Chart Settings",ganttBarHeightLabel:"Bar Height",ganttBarHeightTooltip:"Height of each task bar",ganttTopPaddingLabel:"Top Padding",ganttTopPaddingTooltip:"Space at the top of the chart",resetToDefaults:"Reset to Defaults",previewTitle:"Preview",previewDescription:"Changes are applied immediately. Try creating or viewing a diagram to see your settings in action."},modelLimits:{title:"Token Budget Model Limits",descriptionPrefix:"Configure per-model token limits for context budgeting. These settings are persisted globally in Bamboo",descriptionSuffix:"and used by the backend resolver.",defaultsTitle:"Model Defaults",defaultsDescription:"Preloaded with GPT-5 / GPT-4 / Gemini / Kimi / GLM defaults. You can keep editing as needed.",migratedFromLocalStorage:"Migrated model limits from local storage to global config.",loadFailed:"Failed to load model limits settings",saveSuccess:"Model limits saved to global config",saveFailed:"Failed to save model limits settings",resetSuccess:"Model limits reset to product defaults",resetFailed:"Failed to reset model limits settings",defaults:{gpt54:"Top-tier capability with reasoning depth.",gpt53Codex:"Optimized for code refactoring workflows.",gpt52Pro:"Strong logical stability for complex tasks.",gpt5Mini:"Fast and cost-efficient general-purpose option.",gpt41:"Classic large-context model with 1M window.",gpt4o:"Low latency, suitable for everyday chat.",gemini25Pro:"Strong multimodal analysis capabilities.",kimiK25:"Preferred for long-form Chinese content.",kimiCoding:"Tuned for coding-focused scenarios.",glm5:"Good for one-shot large-document generation."},columns:{vendor:"Vendor/Series",model:"Model",contextWindow:"Context Window",maxOutput:"Max Output",notes:"Notes",actions:"Actions"},placeholders:{vendor:"OpenAI / Google / Moonshot",model:"e.g. gpt-5.4-thinking",optional:"Optional"},actions:{remove:"Remove",addRow:"Add Row",save:"Save",resetToDefaults:"Reset to Defaults",reload:"Reload"},validation:{atLeastOneRow:"Please keep at least one model limit row.",modelPatternEmpty:"Model pattern cannot be empty.",duplicateModelPattern:"Duplicate model pattern: {{pattern}}",contextWindowMin:"Context window for {{pattern}} must be at least 1000.",maxOutputMin:"Max output for {{pattern}} must be at least 1.",maxOutputExceedsContext:"Max output for {{pattern}} must be less than or equal to context window.",safetyMarginNegative:"Safety margin for {{pattern}} cannot be negative.",safetyMarginTooLarge:"Safety margin for {{pattern}} must be smaller than context window."}},common:{loading:"Loading...",successful:"Successful",failed:"Failed"},systemPromptManager:{title:"System Prompt Management",addButton:"Add Prompt",defaultPromptLocked:"Default system prompts are locked and cannot be edited.",updateSuccess:"Prompt updated successfully",addSuccess:"Prompt added successfully",saveError:"Failed to save prompt. Please try again.",deleteSuccess:"Prompt deleted successfully",deleteError:"Failed to delete prompt. Please try again.",deleteConfirm:"Are you sure to delete this prompt?",defaultTag:"Default (Locked)",editTitle:"Edit System Prompt",addTitle:"Add New System Prompt",nameLabel:"Prompt Name",nameRequired:"Please input the name of the prompt!",descriptionLabel:"Prompt Description",descriptionRequired:"Please input the description of the prompt!",contentLabel:"Prompt Content",contentRequired:"Please input the content of the prompt!"},envVars:{title:"Environment Variables",description:"Variables are injected into Bash tool processes. Secret variables are encrypted at rest.",fetchError:"Failed to load environment variables",created:"Variable created",updated:"Variable updated",saveError:"Failed to save variable",deleted:"Variable deleted",deleteError:"Failed to delete variable",addButton:"Add Variable",noVars:"No environment variables configured",addTitle:"Add Environment Variable",editTitle:"Edit Variable",save:"Save",cancel:"Cancel",name:"Name",nameRequired:"Variable name is required",nameInvalid:"Must start with a letter or underscore, followed by letters, digits, or underscores",value:"Value",valueRequired:"Value is required for new variables",valueEditHint:"Leave empty to keep the existing value",valuePlaceholder:"Enter value",valuePlaceholderEdit:"Enter new value or leave empty",secret:"Secret",secretHint:"Secret variables are encrypted on disk and masked in the UI",descriptionField:"Description",descriptionPlaceholder:"Optional description",type:"Type",plain:"Plain",descriptionCol:"Description",actions:"Actions",deleteConfirm:"Delete this variable?",yes:"Yes",no:"No",notSet:"(not set)",empty:"(empty)"},promptsTab:{title:"System Prompt Enhancement",mermaidEnhancement:"Mermaid Enhancement",taskListRules:"Shared Task Rules",copilotConclusionWithOptionsBeforeFinish:"Copilot conclusion_with_options Before Finish",copilotConclusionWithOptionsBeforeFinishDescription:"When enabled for Copilot sessions, Bamboo requires the assistant to finish by calling conclusion_with_options. If the model tries to end with plain text, Bamboo stops the completion and returns a completion policy violation.",switchOn:"ON",switchOff:"OFF",enhancementPlaceholder:"Add global enhancement text to append to every system prompt.",saveEnhancement:"Save Enhancement",description:"This text is appended first, followed by enabled system enhancements before each request is sent."},hooksTab:{title:"Image Hooks",enableImagePreflight:"Enable image preflight hook",modeLabel:"Mode",description:"Placeholder mode rewrites images into text summaries (this can break tools that expect real image data). OCR is currently Windows-only.",loadFailed:"Failed to load hooks settings",updateFailed:"Failed to update hooks",modeUpdateFailed:"Failed to update hook mode",enabled:"Image hooks enabled",disabled:"Image hooks disabled",modeUpdated:"Image hook mode set to: {{mode}}",mode:{placeholder:"Placeholder",error:"Error",ocr:"OCR (Windows)",vision:"Vision (LLM)"}},keywordMaskingTab:{title:"Keyword Masking",addKeyword:"Add Keyword",description:"Configure keywords to be masked before sending to Copilot API. Use exact match for literal strings or regex for pattern matching. All matches will be replaced with [MASKED].",empty:"No keyword masking rules configured",cancel:"Cancel",patternPlaceholder:"Enter pattern to match",examples:"Examples",exactMatch:"Exact Match",regexPattern:"Regex Pattern",enabled:"Enabled",disabled:"Disabled",sampleText:"Sample text",sampleTextPlaceholder:"Enter sample text",maskedPreview:"Masked preview",emptyPattern:"(empty)",loadFailed:"Failed to load keyword masking configuration",saveFailed:"Failed to save configuration",saveSuccess:"Keyword masking configuration saved",validationFailedPrefix:"Validation failed",patternRequired:"Pattern cannot be empty",invalidRegexPattern:"Invalid regex pattern",example:{literalToken:"Mask a literal token",githubTokens:"Mask GitHub tokens",awsKeys:"Mask AWS keys",emails:"Mask email addresses"}},schedulesTab:{loadFailed:"Failed to load schedules",loadSessionsFailed:"Failed to load schedule sessions",createFailed:"Failed to create schedule",updateFailed:"Failed to update schedule",deleteFailed:"Failed to delete schedule",runNowFailed:"Failed to run schedule",taskMessageRequired:"Task message is required when Auto Execute is enabled",created:"Schedule created",updated:"Schedule updated",deleted:"Deleted schedule",enqueuedRun:"Enqueued run",loading:"Loading...",yes:"Yes",no:"No",optional:"(optional)",defaultName:"My Schedule",createTitle:"Create Schedule",listTitle:"Schedules",scheduleSessionsTitle:"Schedule Sessions",scheduleRunsTitle:"Schedule Run History",noSessionsYet:"No sessions yet.",noRunsYet:"No runs yet.",loadRunsFailed:"Failed to load schedule runs",editTitle:"Edit Schedule",nonIntervalReadOnly:"Quick interval editing is only available for interval triggers.",columns:{name:"Name",status:"Status",activity:"Activity",autoExecute:"Auto Execute",model:"Model",enabled:"Enabled",intervalSeconds:"Interval (s)",nextRun:"Next Run",lastRun:"Last Run",actions:"Actions"},triggerTypes:{interval:"Interval",daily:"Daily",weekly:"Weekly",monthly:"Monthly",cron:"Cron"},misfirePolicyOptions:{runOnce:"Run once",skip:"Skip",catchUpAll:"Catch up all",catchUpWindow:"Catch up window"},overlapPolicyOptions:{queueOne:"Queue one",skip:"Skip overlapping runs",allow:"Allow overlap"},form:{name:"Name",triggerType:"Trigger Type",intervalSeconds:"Interval Seconds",dailyHour:"Hour",dailyMinute:"Minute",weeklyWeekdays:"Weekdays",monthlyDays:"Days of Month",monthlyDaysPlaceholder:"e.g. 1, 15, 28",cronExpr:"Cron Expression",cronExprPlaceholder:"e.g. 0 9 * * 1-5",timezone:"Timezone",timezonePlaceholder:"e.g. Asia/Shanghai",startAt:"Start At",endAt:"End At",datetimePlaceholder:"RFC3339, e.g. 2026-04-05T09:00:00Z",misfirePolicy:"Misfire Policy",overlapPolicy:"Overlap Policy",catchUpWindowMaxRuns:"Catch-up Max Runs",catchUpWindowMaxLatenessSeconds:"Catch-up Max Lateness (s)",enabled:"Enabled",taskMessage:"Task Message",taskMessagePlaceholder:"(Optional) A task to run",model:"Model",modelPlaceholder:"(Optional) e.g. gpt-4o-mini",modelRequiredIfAuto:"Required if auto execute",autoExecute:"Auto Execute",systemPrompt:"System Prompt",workspacePath:"Workspace Path",enhancePrompt:"Enhance Prompt"},validation:{nameRequired:"Name is required",triggerRequired:"Trigger configuration is required",intervalRequired:"Interval is required",weekdaysRequired:"At least one weekday is required",monthDaysRequired:"At least one day of month is required",invalidMonthDays:"Month days must be comma-separated values between 1 and 31",cronRequired:"Cron expression is required"},actions:{create:"Create",refresh:"Refresh",edit:"Edit",runNow:"Run Now",sessions:"Sessions",runs:"Runs",delete:"Delete",open:"Open",save:"Save"},runHistory:{columns:{status:"Status",scheduledFor:"Scheduled For",startedAt:"Started At",completedAt:"Completed At",session:"Session",duration:"Duration",outcome:"Outcome"}},weekdays:{mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"},triggerLabels:{interval:"{{type}} · {{seconds}}s",daily:"{{type}} · {{time}}",weekly:"{{type}} · {{weekdays}}",monthly:"{{type}} · {{days}}",cron:"{{type}} · {{expr}}"},statusLabels:{running:"Running",queued:"Queued",failing:"Failing",disabled:"Disabled",healthy:"Healthy",idle:"Idle"},statusDetails:{active:"{{count}} active",pending:"{{count}} pending",consecutiveFailures:"{{count}} consecutive failures",lastRunSucceeded:"Last run succeeded"},activityLabels:{queued:"Queued: {{count}}",running:"Running: {{count}}",ok:"OK: {{count}}",fail:"Fail: {{count}}"}},sessionsTab:{currentSessionTitle:"Current Session",id:"id",kind:"kind",clearMessages:"Clear Messages",clearMessagesTitle:"Clear Session Messages",clearMessagesContent:"This clears messages/attachments for the current session but keeps the session entry.",clear:"Clear",cancel:"Cancel",sessionCleared:"Session cleared",noActiveSession:"No active session.",bulkCleanupTitle:"Bulk Cleanup",keepPinned:"Keep pinned",deleteAll:"Delete All",deleteAllTitle:"Delete All Sessions",deleteAllKeepPinned:"Deletes all sessions except pinned.",deleteAllIncludePinned:"Deletes all sessions including pinned.",deleteEmpty:"Delete Empty",deleteEmptyTitle:"Delete Empty Sessions",deleteEmptyKeepPinned:"Deletes empty sessions except pinned.",deleteEmptyIncludePinned:"Deletes empty sessions including pinned.",deleteChildren:"Delete Children",deleteChildrenTitle:"Delete Child Sessions",deleteChildrenKeepPinned:"Deletes all child sessions except pinned.",deleteChildrenIncludePinned:"Deletes all child sessions including pinned.",delete:"Delete",cleanupComplete:"Cleanup complete",devResetTitle:"Development Reset",devResetDescription:"Greenfield reset for session storage (deletes sessions/ and resets sessions.json).",devResetAction:"Dev Reset Sessions",devResetConfirmTitle:"Reset Session Storage (Dev)",devResetConfirmContent:"This deletes ALL sessions (including pinned/child) and resets the sessions index. A new empty session will be created after refresh.",reset:"Reset",devResetDone:"Session storage reset"},workflowsTab:{title:"Workflows",description:"Workflows are stored in `~/.bamboo/workflows` as Markdown files. Use `/name` to insert a workflow in chat.",loadFailed:"Failed to load workflows",loadContentFailed:"Failed to load workflow content",invalidName:"Invalid workflow name",nameAlreadyExists:"A workflow with this name already exists",saved:"Workflow saved",saveFailed:"Failed to save workflow",deleted:"Workflow deleted",deleteFailed:"Failed to delete workflow",refresh:"Refresh",newWorkflow:"New Workflow",save:"Save",empty:"No workflows found",namePlaceholder:"Workflow name",contentPlaceholder:`# Workflow Title
|
|
2
|
+
|
|
3
|
+
Describe the workflow steps here.`},providerTab:{title:"LLM Provider Configuration",description:'Configure your preferred LLM provider. Configuration will be saved and applied when you click "Save and Apply Configuration".',currentProvider:"Current Provider",activeProvider:"Active LLM Provider",selectProviderRequired:"Please select a provider",saveAndApply:"Save and Apply Configuration",loadConfigFailed:"Failed to load provider config",checkStatusFailed:"Failed to check status",startCopilotAuthFailed:"Failed to start Copilot authentication",copilotAuthSuccess:"Copilot authentication successful!",providerReloaded:"Provider reloaded with new authentication.",completeAuthFailed:"Authentication completion failed. Please try again.",userCodeCopied:"User code copied to clipboard!",copyCodeFailedPrefix:"Failed to copy code. Please manually copy:",logoutSuccess:"Logged out from Copilot",logoutFailed:"Failed to logout from Copilot",unknownError:"Unknown error",invalidConfig:"Invalid configuration",invalidConfigPrefix:"Invalid configuration",invalidRequestOverridesJson:"Invalid request_overrides JSON for {{provider}}: {{error}}",fetchModelsCopilotFailed:"Failed to fetch models. Please authenticate Copilot and try again.",fetchModelsFailed:"Failed to fetch models. Please check your API key and base URL.",noModelsReturned:"No models returned. Authenticate Copilot first, then fetch models.",foundModels:"Found {{count}} available models",fetchModelsErrorPrefix:"Failed to fetch models",saveConfigSuccess:"Configuration saved successfully",saveConfigFailed:"Failed to save configuration",saveConfigErrorPrefix:"Failed to save configuration",applyConfigSuccess:"Configuration applied successfully. Changes will take effect for new conversations.",applyConfigFailed:"Failed to apply configuration",applyConfigErrorPrefix:"Failed to apply configuration",modelUpdated:"Model updated successfully",updateModelFailed:"Failed to update model",updateModelErrorPrefix:"Failed to update model",fetchingModels:"Fetching models...",refreshModelsFrom:"Refresh available models from {{source}}",fetchModelsFrom:"Fetch available models from {{source}}",saveModelChangeFailed:"Failed to save model change",fetchModelsFailedShort:"Failed to fetch models",retry:"Retry",openaiConfigTitle:"OpenAI Configuration",openaiConfigDescription:"Enter your OpenAI API key to use GPT models. You can optionally specify a custom base URL for proxy servers.",openaiApiKey:"OpenAI API Key",openaiApiKeyRequired:"Please enter your OpenAI API key",openaiApiKeyPlaceholder:"sk-...",baseUrlOptional:"Base URL (Optional)",openaiBaseUrlPlaceholder:"https://api.openai.com/v1",openaiBaseUrlHelp:"Leave empty to use the default OpenAI API endpoint. Include full path (e.g., /v1) if needed.",defaultModel:"Default Model",modelPreferences:"Model Preferences",fastModel:"Fast Model (Optional)",fastModelHelp:"Cheaper/faster model for lightweight tasks like title generation, mermaid fix, and summarization. Uses default model when not set.",subAgentModel:"Sub Agent Model (Optional)",subAgentModelHelp:"Default model for new Sub Agents. Uses Fast Model when not set, then falls back to the default model.",visionModel:"Vision Model (Optional)",visionModelHelp:"Vision-capable model for image understanding. When hooks.image_fallback.mode is set to 'vision', this model describes images as text so text-only models can understand them. Uses default model when not set.",sameAsDefault:"Same as default model",selectModelRequired:"Please select a model",selectModel:"Select a model",responsesOnlyModelsOptional:"Responses-Only Models (Optional)",responsesOnlyModelsPlaceholder:'e.g. "gpt-5.3-codex", "gpt-5*"',responsesOnlyHelp1:"Some models only support the OpenAI Responses API (not chat/completions). Add model ids here to force Bamboo to use upstream",responsesOnlyHelp2:"Supports exact match (e.g. gpt-5.3-codex) and prefix match with a trailing * (e.g. gpt-5*).",anthropicConfigTitle:"Anthropic Configuration",anthropicConfigDescription:"Enter your Anthropic API key to use Claude models.",anthropicApiKey:"Anthropic API Key",anthropicApiKeyRequired:"Please enter your Anthropic API key",anthropicApiKeyPlaceholder:"sk-ant-...",anthropicBaseUrlPlaceholder:"https://api.anthropic.com/v1",anthropicBaseUrlHelp:"Leave empty to use the default Anthropic API endpoint. Include full path (e.g., /v1) if needed.",maxTokensOptional:"Max Tokens (Optional)",maxTokensHelp:"Maximum number of tokens to generate",maxTokensPlaceholder:"4096",geminiConfigTitle:"Google Gemini Configuration",geminiConfigDescription:"Enter your Google AI API key to use Gemini models.",geminiApiKey:"Gemini API Key",geminiApiKeyRequired:"Please enter your Gemini API key",geminiApiKeyPlaceholder:"AIza...",geminiBaseUrlPlaceholder:"https://generativelanguage.googleapis.com/v1beta",geminiBaseUrlHelp:"Leave empty to use the default Google AI API endpoint. Include full path if needed.",copilotConfigTitle:"GitHub Copilot Configuration",copilotConfigDescription:"GitHub Copilot uses OAuth authentication. No API key is required. Make sure you have an active GitHub Copilot subscription.",authStatusTitle:"Authentication Status",authenticated:"Authenticated",notAuthenticated:"Not Authenticated",logoutCopilot:"Logout from Copilot",authenticateCopilot:"Authenticate Copilot",refreshStatus:"Refresh Status",headlessAuth:"Headless Authentication",headlessAuthHelp:"Print login URL in console instead of opening browser automatically",noModelsLoaded:'No models loaded yet. Click "Fetch available models from backend".',authFirstThenFetch:"Authenticate Copilot first, then fetch models.",copilotUsageTitle:"To use GitHub Copilot:",copilotUsageStep1:"Ensure you have an active GitHub Copilot subscription",copilotUsageStep2:'Click "Authenticate Copilot" to start the device code flow',copilotUsageStep3:"Follow the instructions in your terminal to complete authentication",copilotAuthModalTitle:"Copilot Authentication",cancel:"Cancel",completedAuthorization:"I've Completed Authorization",browserOpened:"Browser opened automatically",authStep1:"A GitHub page should have opened in your browser",authStep2:"Copy the code below and paste it on the GitHub page",authStep3:'Click "Continue" on GitHub to authorize',visitUrl:"1. Visit this URL:",enterCode:"2. Enter this code:",copied:"Copied!",copyCode:"Copy Code",afterContinueHint:`After clicking "Continue" on GitHub, click the "I've Completed Authorization" button below.`,providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"},providerModelRef:"Provider Model Catalog",providerModelRefHelp:"Use catalog-based model selection from the backend. When enabled, the model picker shows available models from the provider catalog instead of manually configured models.",catalogModeInfo:"Models are sourced from the provider catalog.",fetchAllModels:"Fetch All Models",fetchingAllModels:"Fetching models...",fetchModelsSuccess:"Successfully fetched models for {{count}} providers",fetchModelsPartialSuccess:"Fetched models for {{success}} of {{total}} providers",providerNotConfigured:"Not Configured",capabilityVision:"Vision",capabilityTools:"Tools",capabilityReasoning:"Reasoning",refreshCatalog:"Refresh Catalog",noCatalogModels:"No models found. Click 'Fetch All Models' to load.",reasoningEffortDefault:"Default",reasoningEffortOptional:"Reasoning Effort (Optional)",reasoningEffortHelp:"Default reasoning effort for requests sent through this provider.",activeProviderReasoningEffort:"Active Provider Reasoning Effort",reasoningEffortUpdated:"Reasoning effort updated",updateReasoningEffortErrorPrefix:"Failed to update reasoning effort",updateReasoningEffortFailed:"Failed to update reasoning effort",advancedRequestOverrides:"Advanced Request Overrides (JSON)",advancedRequestOverridesHelp:"Customize provider request headers/body patch rules.",envVarInjection:"Env var injection:",bodhiApiKey:"Bodhi API Key",bodhiBaseUrl:"Base URL",targetProvider:"Target Provider",bodhiBaseUrlExtra:"Your Bodhi Server endpoint address",targetProviderExtra:"Which upstream provider to route through Bodhi",apiKeyRequired:"API key is required",bodhiApiKeyPlaceholder:"bhi_sk_...",bodhiBaseUrlPlaceholder:"http://localhost:8080",targetProviderPlaceholder:"openai"},mcpTab:{status:{connecting:"Connecting",ready:"Ready",degraded:"Degraded",stopped:"Stopped",error:"Error"},statusGuideTitle:"Status guide:",statusHelp:{connecting:"Server is starting or reconnecting",ready:"Server is connected and serving tools normally",degraded:"Server is partially available; some tools may fail",stopped:"Server is not running",error:"Server failed to start or encountered runtime errors"},statusLastError:"Last error: {{error}}",serverDeleted:"MCP server deleted",deleteServerFailed:"Failed to delete MCP server",connectedTo:"Connected to {{name}}",connectServerFailed:"Failed to connect MCP server",disconnected:"Disconnected {{name}}",disconnectServerFailed:"Failed to disconnect MCP server",toolsRefreshedFor:"Tools refreshed for {{name}}",refreshToolsFailed:"Failed to refresh tools",statusRefreshed:"MCP status refreshed",refreshStatusFailed:"Failed to refresh MCP status",noServerForEditing:"No server selected for editing",savedServer:"Saved {{name}}",addedServer:"Added {{name}}",saveServerFailed:"Failed to save MCP server",copiedConfig:"Copied MCP config to clipboard",clipboardUnavailable:"Clipboard not available. Export is shown in the modal.",invalidJsonPrefix:"Invalid JSON",unknownError:"Unknown error",jsonMustBeObject:"JSON must be an object",missingMcpServers:`Missing 'mcpServers'. Paste a full Claude Desktop-style config chunk: { "mcpServers": { ... } }`,importSummary:"Imported {{count}} server(s) ({{added}} added, {{updated}} updated, {{removed}} removed). {{failed}} failed to start.",importStartFailures:"Some servers did not start. Config is saved; open the server list to see errors.",importFailed:"Failed to import MCP servers",overviewTitle:"MCP Overview",overviewDescription:"Configure external MCP servers and inspect registered tool aliases.",totalServers:"Total servers: {{count}}",totalTools:"Total tools: {{count}}",serversTitle:"MCP Servers",addServer:"Add Server",refreshAll:"Refresh All",export:"Export",import:"Import",importModalTitle:"Import MCP Servers",importHint:"Paste a Claude Desktop-style config chunk. Example:",importModeMerge:"Merge (Upsert)",importModeReplace:"Replace (Delete Others)",replaceWarning:"Replace mode will remove existing MCP servers not present in the imported mcpServers."},mcpServerTable:{columns:{name:"Name",transportType:"Transport Type",status:"Status",toolCount:"Tool Count",actions:"Actions"},transportOptions:{sse:"SSE",stdio:"Stdio"},deleteTitle:"Delete MCP server",deleteDescription:'Delete server "{{name}}"?',empty:"No MCP servers configured",actions:{edit:"Edit",delete:"Delete",disconnect:"Disconnect",connect:"Connect",refreshTools:"Refresh Tools"}},mcpToolList:{title:"MCP Tools",selectServerHint:"Select a server to inspect its MCP tools",empty:"No tools found for this server",noDescription:"No description available",aliasMapping:"Alias mapping",parametersSchema:"Parameters schema"},mcpServerForm:{jsonMustBeObject:"JSON must be an object",detectedBulkConfig:"Detected mcpServers (bulk config). Use the MCP tab Import button for bulk import, or paste a single server config here.",missingIdField:"Missing or invalid id field",missingTransportField:"Missing or invalid transport field",missingTransportInfo:"Missing transport info. Expected either transport (Bodhi format) or command/url (mainstream MCP format).",invalidJson:"Invalid JSON: {{message}}",unknownError:"Unknown error",editTitle:"Edit MCP Server",addTitle:"Add MCP Server",save:"Save",modeForm:"Form",modeJson:"JSON",jsonError:"JSON Error",serverId:"Server ID",serverIdRequired:"Server ID is required",serverIdPatternError:"Use only letters, numbers, underscore, and hyphen",displayName:"Display Name",enabled:"Enabled",enabledHelp:"Disabled servers stay in config but will not be started.",transportType:"Transport Type",transportTypeRequired:"Transport type is required",transportOptions:{stdio:"Stdio",sse:"SSE"},command:"Command",commandRequired:"Command is required",arguments:"Arguments",argumentsPlaceholder:"Add an argument and press Enter",envVars:"Environment Variables",addEnv:"Add Env",keyRequired:"Key required",sseUrl:"SSE URL",sseUrlRequired:"SSE URL is required",validUrlRequired:"Please enter a valid URL",headers:"Headers",addHeader:"Add Header",headerNameRequired:"Header name required"},metricsCards:{totalSessions:"Total Sessions",chatTokens:"Chat Tokens",totalToolCalls:"Total Tool Calls",tokensSaved:"Saved Tokens",toolContextSavedTokens:"Tool Context Saved Tokens",compressionEvents:"Compression Events",avgSessionDuration:"Avg Session Duration"},forwardMetricsCards:{totalForwardRequests:"Total Forward Requests",successRate:"Success Rate",forwardTokens:"Forward Tokens",avgResponseTime:"Avg Response Time"},unifiedMetricsCards:{totalRequests:"Total Requests",totalTokens:"Total Tokens",successRate:"Success Rate",avgResponseTime:"Avg Response Time",chatSessions:"Chat Sessions",chatTokens:"Chat Tokens",toolCalls:"Tool Calls",avgSessionDuration:"Avg Session Duration",promptCachedToolOutputs:"Prompt-Cached Tool Outputs",tokensSaved:"Saved Tokens",compressionEvents:"Compression Events",totalMemories:"Total Memories",staleCandidates:"Stale Candidates",memoryProjects:"Memory Projects",lastReindex:"Last Reindex",forwardRequests:"Forward Requests",forwardTokens:"Forward Tokens",successful:"Successful",failed:"Failed"},metricsTable:{session:{columns:{session:"Session",model:"Model",status:"Status",started:"Started",duration:"Duration",tokens:"Tokens",toolCalls:"Tool Calls",messages:"Messages",action:"Action"},status:{running:"Running",awaitingResponse:"Awaiting Response",completed:"Completed",error:"Error",cancelled:"Cancelled"},view:"View"},forward:{columns:{id:"ID",endpoint:"Endpoint",model:"Model",type:"Type",status:"Status",tokens:"Tokens",duration:"Duration",started:"Started",error:"Error"},typeStream:"Stream",typeSync:"Sync",totalRequests:"{{total}} requests",empty:"No forward requests recorded for this range"}},metricsDashboard:{roundColumns:{round:"Round",status:"Status",duration:"Duration",tokens:"Tokens",toolCalls:"Tool Calls"},compactStats:{combinedTokens:"Combined Tokens",chatTokens:"Chat Tokens",forwardTokens:"Forward Tokens",avgTokensPerSession:"Avg Tokens / Session",savedTokens:"Saved Tokens",toolContextSavedTokens:"Tool Context Saved Tokens",nonToolCompressionSavedTokens:"Non-Tool Compression Saved Tokens",savedTokenRatio:"Saved / Chat Tokens",toolSavedShare:"Tool Share of Saved Tokens",promptCachedToolOutputs:"Prompt-Cached Tool Outputs",compressionEvents:"Compression Events",estimatedTimeSaved:"Est. Time Saved",estimatedEfficiencyLift:"Est. Efficiency Lift",estimatedSpeedMultiplier:"Est. Speed Multiplier",estimatedSavedWorkdays:"Est. Saved Workdays",avgRoundsPerSession:"Avg Rounds / Session",toolCallsPerSession:"Tool Calls / Session",activeSessionRate:"Active Session Rate",avgTokensPerForward:"Avg Tokens / Forward",forwardErrorRate:"Forward Error Rate",streamingRatio:"Streaming Ratio",p95ForwardLatency:"P95 Forward Latency",modelCoverage:"Model Coverage",endpointCoverage:"Endpoint Coverage"},multiplierSuffix:"x",filtersTitle:"Filters",refresh:"Refresh",startDate:"Start date",endDate:"End date",model:"Model",daysOption:"{{value}} days",granularity:{daily:"Daily",weekly:"Weekly",monthly:"Monthly"},dashboardTitle:"Dashboard",tabs:{overview:"Overview",analysis:"Analysis",records:"Records",chat:"Chat",skillsAndMcp:"Skills & MCP",forward:"Forward",memory:"Memory"},derivedMetricsTitle:"Derived Metrics (Compact)",derivedMetricsSubtitle:"More dimensions without extra page length",overviewSections:{scaleTitle:"Scale & Activity",scaleSubtitle:"Current usage volume across chat, forward, skills, and memory.",efficiencyTitle:"Compression & Efficiency Advantage",efficiencySubtitle:"Real savings from context compression, especially around tool-heavy workflows."},efficiencyHint:"These metrics now prefer direct runtime evidence: saved tokens, tool-context savings, non-tool compression savings, compression events, and workload / quality indicators across chat and forward traffic.",toolUsageTitle:"Tool Usage Frequency",noToolUsage:"No tool calls recorded for this range.",calls:"Calls",activityHeatmapTitle:"Daily Activity Heatmap",noActivity:"No activity available for this range.",sessionsCount:"{{count}} sessions",tokensAmount:"{{value}} tokens",sessionsTabLabel:"Sessions ({{count}})",chatSessionsLabel:"Chat Sessions ({{count}})",sessionsHint:"Click a session for full round detail",forwardTabLabel:"Forward Requests ({{count}})",detailedMetricsTitle:"Detailed Metrics",sessionMetricsTitle:"Session Metrics",loadingSessionDetails:"Loading session details...",sessionDetail:{sessionId:"Session ID",model:"Model",status:"Status",duration:"Duration",messages:"Messages",totalTokens:"Total Tokens",toolCalls:"Tool Calls"},noDetail:"No detail available.",skillsAndMcp:{cards:{skillLoadCalls:"Skill Loads",uniqueSkills:"Unique Skills",mcpCalls:"MCP Calls",uniqueMcpServers:"MCP Servers",uniqueMcpTools:"MCP Tools",coreToolCalls:"Core Tool Calls"},mix:{coreTools:"Core Tools",skillLoads:"Skill Loads",mcpCalls:"MCP Calls"},meta:{uniqueTools:"{{count}} tools"},usageMixTitle:"Usage Mix",usageMixSubtitle:"Compare core tools, skill loads, and MCP calls in one view.",noUsageMix:"No usage data available for this range.",topSkillsTitle:"Top Skills",topSkillsSubtitle:"Counted from load_skill calls during matching sessions.",noSkills:"No skills were loaded in this range.",topMcpServersTitle:"Top MCP Servers",topMcpServersSubtitle:"Server-level MCP call distribution.",noMcpServers:"No MCP activity recorded for this range.",topMcpToolsTitle:"Top MCP Tools",topMcpToolsSubtitle:"Most frequently called MCP tool aliases.",noMcpTools:"No MCP tools were called in this range.",topCoreToolsTitle:"Top Core Tools",topCoreToolsSubtitle:"Canonicalized built-in and server tool usage ranking.",noCoreTools:"No core tools were called in this range."},forward:{performanceTitle:"Forward Performance",performance:{p95Latency:"P95 Latency",errorRate:"Error Rate",streamingRatio:"Streaming Ratio",endpointCoverage:"Endpoint Coverage"}},memory:{breakdownTitle:"Memory Breakdown",byType:"By Type",byStatus:"By Status",byScope:"By Scope",lastDream:"Last Dream",lastReindex:"Last Reindex"}},charts:{tokenUsageOverTime:"Token Usage Over Time",unifiedTokenUsageOverTime:"Token Usage Over Time (Chat + Forward)",memoryTrendTitle:"Memory Trend",noTokenUsage:"No token usage available",noMemoryTrend:"No memory trend available",tokenUsageDescription:"Prompt, completion, and total tokens by day/period.",unifiedTokenUsageDescription:"Combined chat and forward token usage over time.",memoryTrendDescription:"Created memories, updated memories, and total durable memory over time.",total:"Total",prompt:"Prompt",completion:"Completion",chat:"Chat",forward:"Forward",totalMemories:"Total Memories",createdMemories:"Created Memories",updatedMemories:"Updated Memories",modelDistribution:"Model Distribution",noModelMetrics:"No model metrics available",modelDistributionDescription:"Share of total tokens consumed by model.",endpointDistribution:"Endpoint Distribution",noForwardMetrics:"No forward metrics available for this range."}},components:{markdown:{codeCopiedSuccess:"Code copied to clipboard",copyFailed:"Copy failed",copyCodeAriaLabel:"Copy code"},jsonSchema:{field:"Field",type:"Type",required:"Required",yes:"Yes",no:"No",default:"Default",description:"Description",noProperties:"No properties in schema"},workflowResult:{userWorkflow:"User Workflow",waitingForResult:"Waiting for workflow result...",executionFailed:"Workflow execution failed",retryWorkflow:"Retry workflow",copyParameters:"Copy parameters",copyResult:"Copy result",expandResult:"Expand result",collapseResult:"Collapse result"},toolResult:{waiting:"Waiting",waitingForResult:"Waiting for result...",executionFailed:"Tool execution failed",copyResult:"Copy result",checkpoint:"Checkpoint",checkpointNone:"None",diffTruncated:"Diff is too long and has been truncated",structuredToolResultHint:"Tool result · {{tool}}",memory:{action:{inspect:"Inspect",rebuild:"Rebuild"},totalMemories:"{{count}} memories",staleCandidates:"stale candidates: {{count}}",coverage:"Coverage",viewsLabel:"Views:",indexesLabel:"Indexes:",stateFilesLabel:"State files:",lastReindexLabel:"Last reindex:",lastDreamLabel:"Last dream:",viewFiles:"View files",indexFiles:"Index files",stateFiles:"State files",topicPaths:"Topic paths",recentMemories:"Recent memories"}},toolCall:{liveOutput:"Live output",keyParameters:"Key parameters",fullParameters:"Full parameters",copyParameters:"Copy parameters"},toolSteps:{title:"Tool Run",running:"running…",viewFullOutput:"View full output",details:"Details",preview:"Preview",parameters:"Parameters",result:"Result",noResult:"No result yet",intent:"Intent",keyParameters:"Key parameters",statusError:"error",statusFinish:"finish",statusProcess:"process",statusWait:"wait"},plan:{executionPlan:"Execution Plan",goal:"Goal",steps:"Steps",stepTitle:"Step {{number}}",reason:"Reason",estimated:"Estimated",tools:"Tools",prerequisites:"Prerequisites",potentialRisks:"Potential Risks ({{count}})",totalEstimatedTime:"Total estimated time",feedbackPlaceholder:"Tell the agent what to adjust...",sendFeedback:"Send feedback",refinePlan:"Refine plan",executePlan:"Execute plan"},question:{agentQuestion:"Agent Question",context:"Context",chooseOption:"Choose an option",recommended:"Recommended",customAnswerHint:"Need another option? Type your own answer.",customAnswerPlaceholder:"Type your custom answer...",submitAnswer:"Submit answer"},questionDialog:{selectOptionWarning:"Please select an option before submitting.",responseSubmitted:"Response submitted",responseSubmittedContinue:"Response submitted, AI will continue processing",submitFailed:"Failed to submit response",noModelConfigured:"No model configured",customAnswerTip:"Custom answer",otherTypeBelow:"Other (type below)",confirm:"Confirm"},skillManager:{title:"Skills",refresh:"Refresh",skillsRefreshed:"Skills refreshed",lastUpdated:"Last updated: {{value}}",justNow:"just now",secondsAgo:"{{count}}s ago",minutesAgo:"{{count}}m ago",searchPlaceholder:"Search skills",readOnlyHint:"Skill files remain read-only, but you can enable or disable them for prompt usage.",disabledHint:"Disabled skills stay visible here, but Bamboo filters them from system prompt skill context and blocks load_skill at runtime.",disabledTag:"Disabled",switchEnabled:"On",switchDisabled:"Off",skillStateSaved:"Skill state saved",saveFailed:"Failed to save skill state",noSkillsFound:"No skills found",noMatch:"No skills match the current search",loadFailed:"Failed to load skills",getFailed:"Failed to get skill"},skillSelector:{placeholder:"Select skills",disabledSkillsHint:"{{count}} previously selected skill is now globally disabled and has been removed."},imageGrid:{preview:"Preview",ocr:"OCR"},todoList:{title:"Task List",evaluating:"Evaluating",pin:"Pin",unpin:"Unpin",llmEvaluation:"LLM Evaluation",tools:"tools",dependsOn:"Depends on: {{deps}}",dependencies:"deps",status:{pending:"Pending",inProgress:"In Progress",completed:"Completed",blocked:"Blocked",skipped:"Skipped",failed:"Failed"},listStatus:{active:"Active",completed:"Completed",abandoned:"Abandoned"},percentComplete:"{{percent}}% Complete",progressLabel:"{{completed}} / {{total}} tasks completed",currentLabel:"Current: {{description}}"},tokenUsage:{title:"Token Usage",contextWindow:"Context window",summary:"Summary",system:"System",messages:"Messages",tokens:"tokens",usedPercent:"Used {{value}}%"},approval:{workflow:"Workflow",executionRequest:"Execution Request",aiWantsExecute:"AI wants to execute the following action"},toolSession:{title:"Tool Session",running:"Running",done:"Done",error:"Error",completedOnly:"{{completed}} completed",completedWithErrors:"{{completed}} completed (with errors)",completedProgress:"{{completed}} / {{total}} completed",noPersistedMessage:"No persisted output",deleteMessage:"Delete tool session"},mermaid:{loadingDiagram:"Loading diagram...",diagramError:"Mermaid Diagram Error",errorTitlePrefix:"Error",checkConsoleHint:"Check Mermaid syntax or open the console for details.",fixMermaid:"Fix Mermaid",renderingDiagram:"Rendering diagram...",exportSvg:"Export SVG",exportFailed:"Failed to export diagram",downloadChartAriaLabel:"Download chart"}},validation:{workspaceRequired:"Please enter a workspace path",invalidPath:"Invalid path"},error:{saveWorkspaceFailed:"Failed to save workspace path",readFolderFailed:"Unable to read folder",copyPromptFailed:"Failed to copy prompt content"},success:{promptCopied:'Copied "{{name}}" prompt'}}};export{e as enUsTranslation};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as Bt}from"./chunk-55IACEB6-DmAIxchJ.js";import{s as Ft}from"./chunk-EDXVE4YY-FvClTRCF.js";import{a8 as p,a7 as Yt,a6 as Pt,a4 as zt,a5 as Gt,ao as Kt,ap as Ut,a9 as rt,ab as V,av as Zt,at as jt,ax as Wt,ay as Qt,az as Xt,al as Ht,am as qt,aa as Jt,an as $t}from"./vendor-mermaid-De-Yacw-.js";import"./vendor-antd-DODjfilb.js";import"./vendor-i18n-BNURlJ23.js";var gt=function(){var s=p(function(I,n,a,l){for(a=a||{},l=I.length;l--;a[I[l]]=n);return a},"o"),i=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],o=[1,10],h=[1,11],c=[1,12],u=[1,13],f=[1,23],d=[1,24],k=[1,25],W=[1,26],Q=[1,27],T=[1,19],X=[1,28],B=[1,29],D=[1,20],R=[1,18],S=[1,21],x=[1,22],at=[1,36],ct=[1,37],ot=[1,38],lt=[1,39],ht=[1,40],F=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],O=[1,45],N=[1,46],Y=[1,55],P=[40,48,50,51,52,70,71],z=[1,66],G=[1,64],A=[1,61],K=[1,65],U=[1,67],H=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],bt=[65,66,67,68,69],mt=[1,84],kt=[1,83],Et=[1,81],Tt=[1,82],St=[6,10,42,47],L=[6,10,13,41,42,47,48,49],q=[1,92],J=[1,91],$=[1,90],Z=[19,58],Ot=[1,101],Nt=[1,100],ut=[19,58,60,62],dt={trace:p(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,attributeKeyType:59,",":60,ATTRIBUTE_KEY:61,COMMENT:62,cardinality:63,relType:64,ZERO_OR_ONE:65,ZERO_OR_MORE:66,ONE_OR_MORE:67,ONLY_ONE:68,MD_PARENT:69,NON_IDENTIFYING:70,IDENTIFYING:71,WORD:72,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",60:",",61:"ATTRIBUTE_KEY",62:"COMMENT",65:"ZERO_OR_ONE",66:"ZERO_OR_MORE",67:"ONE_OR_MORE",68:"ONLY_ONE",69:"MD_PARENT",70:"NON_IDENTIFYING",71:"IDENTIFYING",72:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,1],[14,1]],performAction:p(function(n,a,l,r,y,t,j){var e=t.length-1;switch(y){case 1:break;case 2:this.$=[];break;case 3:t[e-1].push(t[e]),this.$=t[e-1];break;case 4:case 5:this.$=t[e];break;case 6:case 7:this.$=[];break;case 8:r.addEntity(t[e-4]),r.addEntity(t[e-2]),r.addRelationship(t[e-4],t[e],t[e-2],t[e-3]);break;case 9:r.addEntity(t[e-8]),r.addEntity(t[e-4]),r.addRelationship(t[e-8],t[e],t[e-4],t[e-5]),r.setClass([t[e-8]],t[e-6]),r.setClass([t[e-4]],t[e-2]);break;case 10:r.addEntity(t[e-6]),r.addEntity(t[e-2]),r.addRelationship(t[e-6],t[e],t[e-2],t[e-3]),r.setClass([t[e-6]],t[e-4]);break;case 11:r.addEntity(t[e-6]),r.addEntity(t[e-4]),r.addRelationship(t[e-6],t[e],t[e-4],t[e-5]),r.setClass([t[e-4]],t[e-2]);break;case 12:r.addEntity(t[e-3]),r.addAttributes(t[e-3],t[e-1]);break;case 13:r.addEntity(t[e-5]),r.addAttributes(t[e-5],t[e-1]),r.setClass([t[e-5]],t[e-3]);break;case 14:r.addEntity(t[e-2]);break;case 15:r.addEntity(t[e-4]),r.setClass([t[e-4]],t[e-2]);break;case 16:r.addEntity(t[e]);break;case 17:r.addEntity(t[e-2]),r.setClass([t[e-2]],t[e]);break;case 18:r.addEntity(t[e-6],t[e-4]),r.addAttributes(t[e-6],t[e-1]);break;case 19:r.addEntity(t[e-8],t[e-6]),r.addAttributes(t[e-8],t[e-1]),r.setClass([t[e-8]],t[e-3]);break;case 20:r.addEntity(t[e-5],t[e-3]);break;case 21:r.addEntity(t[e-7],t[e-5]),r.setClass([t[e-7]],t[e-2]);break;case 22:r.addEntity(t[e-3],t[e-1]);break;case 23:r.addEntity(t[e-5],t[e-3]),r.setClass([t[e-5]],t[e]);break;case 24:case 25:this.$=t[e].trim(),r.setAccTitle(this.$);break;case 26:case 27:this.$=t[e].trim(),r.setAccDescription(this.$);break;case 32:r.setDirection("TB");break;case 33:r.setDirection("BT");break;case 34:r.setDirection("RL");break;case 35:r.setDirection("LR");break;case 36:this.$=t[e-3],r.addClass(t[e-2],t[e-1]);break;case 37:case 38:case 59:case 67:this.$=[t[e]];break;case 39:case 40:this.$=t[e-2].concat([t[e]]);break;case 41:this.$=t[e-2],r.setClass(t[e-1],t[e]);break;case 42:this.$=t[e-3],r.addCssStyles(t[e-2],t[e-1]);break;case 43:this.$=[t[e]];break;case 44:t[e-2].push(t[e]),this.$=t[e-2];break;case 46:this.$=t[e-1]+t[e];break;case 54:case 79:case 80:this.$=t[e].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 81:this.$=t[e];break;case 60:t[e].push(t[e-1]),this.$=t[e];break;case 61:this.$={type:t[e-1],name:t[e]};break;case 62:this.$={type:t[e-2],name:t[e-1],keys:t[e]};break;case 63:this.$={type:t[e-2],name:t[e-1],comment:t[e]};break;case 64:this.$={type:t[e-3],name:t[e-2],keys:t[e-1],comment:t[e]};break;case 65:case 66:case 69:this.$=t[e];break;case 68:t[e-2].push(t[e]),this.$=t[e-2];break;case 70:this.$=t[e].replace(/"/g,"");break;case 71:this.$={cardA:t[e],relType:t[e-1],cardB:t[e-2]};break;case 72:this.$=r.Cardinality.ZERO_OR_ONE;break;case 73:this.$=r.Cardinality.ZERO_OR_MORE;break;case 74:this.$=r.Cardinality.ONE_OR_MORE;break;case 75:this.$=r.Cardinality.ONLY_ONE;break;case 76:this.$=r.Cardinality.MD_PARENT;break;case 77:this.$=r.Identification.NON_IDENTIFYING;break;case 78:this.$=r.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},s(i,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:o,24:h,26:c,28:u,29:14,30:15,31:16,32:17,33:f,34:d,35:k,36:W,37:Q,40:T,43:X,44:B,48:D,50:R,51:S,52:x},s(i,[2,7],{1:[2,1]}),s(i,[2,3]),{9:30,11:9,22:o,24:h,26:c,28:u,29:14,30:15,31:16,32:17,33:f,34:d,35:k,36:W,37:Q,40:T,43:X,44:B,48:D,50:R,51:S,52:x},s(i,[2,5]),s(i,[2,6]),s(i,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:at,66:ct,67:ot,68:lt,69:ht}),{23:[1,41]},{25:[1,42]},{27:[1,43]},s(i,[2,27]),s(i,[2,28]),s(i,[2,29]),s(i,[2,30]),s(i,[2,31]),s(F,[2,54]),s(F,[2,55]),s(F,[2,56]),s(F,[2,57]),s(F,[2,58]),s(i,[2,32]),s(i,[2,33]),s(i,[2,34]),s(i,[2,35]),{16:44,40:O,41:N},{16:47,40:O,41:N},{16:48,40:O,41:N},s(i,[2,4]),{11:49,40:T,48:D,50:R,51:S,52:x},{16:50,40:O,41:N},{18:51,19:[1,52],53:53,54:54,58:Y},{11:56,40:T,48:D,50:R,51:S,52:x},{64:57,70:[1,58],71:[1,59]},s(P,[2,72]),s(P,[2,73]),s(P,[2,74]),s(P,[2,75]),s(P,[2,76]),s(i,[2,24]),s(i,[2,25]),s(i,[2,26]),{13:z,38:60,41:G,42:A,45:62,46:63,48:K,49:U},s(H,[2,37]),s(H,[2,38]),{16:68,40:O,41:N,42:A},{13:z,38:69,41:G,42:A,45:62,46:63,48:K,49:U},{13:[1,70],15:[1,71]},s(i,[2,17],{63:35,12:72,17:[1,73],42:A,65:at,66:ct,67:ot,68:lt,69:ht}),{19:[1,74]},s(i,[2,14]),{18:75,19:[2,59],53:53,54:54,58:Y},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:at,66:ct,67:ot,68:lt,69:ht},s(bt,[2,77]),s(bt,[2,78]),{6:mt,10:kt,39:80,42:Et,47:Tt},{40:[1,85],41:[1,86]},s(St,[2,43],{46:87,13:z,41:G,48:K,49:U}),s(L,[2,45]),s(L,[2,50]),s(L,[2,51]),s(L,[2,52]),s(L,[2,53]),s(i,[2,41],{42:A}),{6:mt,10:kt,39:88,42:Et,47:Tt},{14:89,40:q,50:J,72:$},{16:93,40:O,41:N},{11:94,40:T,48:D,50:R,51:S,52:x},{18:95,19:[1,96],53:53,54:54,58:Y},s(i,[2,12]),{19:[2,60]},s(Z,[2,61],{56:97,57:98,59:99,61:Ot,62:Nt}),s([19,58,61,62],[2,66]),s(i,[2,22],{15:[1,103],17:[1,102]}),s([40,48,50,51,52],[2,71]),s(i,[2,36]),{13:z,41:G,45:104,46:63,48:K,49:U},s(i,[2,47]),s(i,[2,48]),s(i,[2,49]),s(H,[2,39]),s(H,[2,40]),s(L,[2,46]),s(i,[2,42]),s(i,[2,8]),s(i,[2,79]),s(i,[2,80]),s(i,[2,81]),{13:[1,105],42:A},{13:[1,107],15:[1,106]},{19:[1,108]},s(i,[2,15]),s(Z,[2,62],{57:109,60:[1,110],62:Nt}),s(Z,[2,63]),s(ut,[2,67]),s(Z,[2,70]),s(ut,[2,69]),{18:111,19:[1,112],53:53,54:54,58:Y},{16:113,40:O,41:N},s(St,[2,44],{46:87,13:z,41:G,48:K,49:U}),{14:114,40:q,50:J,72:$},{16:115,40:O,41:N},{14:116,40:q,50:J,72:$},s(i,[2,13]),s(Z,[2,64]),{59:117,61:Ot},{19:[1,118]},s(i,[2,20]),s(i,[2,23],{17:[1,119],42:A}),s(i,[2,11]),{13:[1,120],42:A},s(i,[2,10]),s(ut,[2,68]),s(i,[2,18]),{18:121,19:[1,122],53:53,54:54,58:Y},{14:123,40:q,50:J,72:$},{19:[1,124]},s(i,[2,21]),s(i,[2,9]),s(i,[2,19])],defaultActions:{55:[2,65],75:[2,60]},parseError:p(function(n,a){if(a.recoverable)this.trace(n);else{var l=new Error(n);throw l.hash=a,l}},"parseError"),parse:p(function(n){var a=this,l=[0],r=[],y=[null],t=[],j=this.table,e="",et=0,At=0,Lt=2,It=1,wt=t.slice.call(arguments,1),_=Object.create(this.lexer),C={yy:{}};for(var pt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,pt)&&(C.yy[pt]=this.yy[pt]);_.setInput(n,C.yy),C.yy.lexer=_,C.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var yt=_.yylloc;t.push(yt);var Vt=_.options&&_.options.ranges;typeof C.yy.parseError=="function"?this.parseError=C.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Mt(b){l.length=l.length-2*b,y.length=y.length-b,t.length=t.length-b}p(Mt,"popStack");function Rt(){var b;return b=r.pop()||_.lex()||It,typeof b!="number"&&(b instanceof Array&&(r=b,b=r.pop()),b=a.symbols_[b]||b),b}p(Rt,"lex");for(var g,v,m,ft,w={},st,E,xt,it;;){if(v=l[l.length-1],this.defaultActions[v]?m=this.defaultActions[v]:((g===null||typeof g>"u")&&(g=Rt()),m=j[v]&&j[v][g]),typeof m>"u"||!m.length||!m[0]){var _t="";it=[];for(st in j[v])this.terminals_[st]&&st>Lt&&it.push("'"+this.terminals_[st]+"'");_.showPosition?_t="Parse error on line "+(et+1)+`:
|
|
1
|
+
import{g as Bt}from"./chunk-55IACEB6-CyMcswjM.js";import{s as Ft}from"./chunk-EDXVE4YY-KspsFgAM.js";import{a8 as p,a7 as Yt,a6 as Pt,a4 as zt,a5 as Gt,ao as Kt,ap as Ut,a9 as rt,ab as V,av as Zt,at as jt,ax as Wt,ay as Qt,az as Xt,al as Ht,am as qt,aa as Jt,an as $t}from"./vendor-mermaid-C1Gk9PtT.js";import"./vendor-antd-C8lKwvI6.js";import"./vendor-i18n-BNURlJ23.js";var gt=function(){var s=p(function(I,n,a,l){for(a=a||{},l=I.length;l--;a[I[l]]=n);return a},"o"),i=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],o=[1,10],h=[1,11],c=[1,12],u=[1,13],f=[1,23],d=[1,24],k=[1,25],W=[1,26],Q=[1,27],T=[1,19],X=[1,28],B=[1,29],D=[1,20],R=[1,18],S=[1,21],x=[1,22],at=[1,36],ct=[1,37],ot=[1,38],lt=[1,39],ht=[1,40],F=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,65,66,67,68,69],O=[1,45],N=[1,46],Y=[1,55],P=[40,48,50,51,52,70,71],z=[1,66],G=[1,64],A=[1,61],K=[1,65],U=[1,67],H=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,65,66,67,68,69],bt=[65,66,67,68,69],mt=[1,84],kt=[1,83],Et=[1,81],Tt=[1,82],St=[6,10,42,47],L=[6,10,13,41,42,47,48,49],q=[1,92],J=[1,91],$=[1,90],Z=[19,58],Ot=[1,101],Nt=[1,100],ut=[19,58,60,62],dt={trace:p(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,attributeKeyType:59,",":60,ATTRIBUTE_KEY:61,COMMENT:62,cardinality:63,relType:64,ZERO_OR_ONE:65,ZERO_OR_MORE:66,ONE_OR_MORE:67,ONLY_ONE:68,MD_PARENT:69,NON_IDENTIFYING:70,IDENTIFYING:71,WORD:72,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",60:",",61:"ATTRIBUTE_KEY",62:"COMMENT",65:"ZERO_OR_ONE",66:"ZERO_OR_MORE",67:"ONE_OR_MORE",68:"ONLY_ONE",69:"MD_PARENT",70:"NON_IDENTIFYING",71:"IDENTIFYING",72:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[55,1],[56,1],[56,3],[59,1],[57,1],[12,3],[63,1],[63,1],[63,1],[63,1],[63,1],[64,1],[64,1],[14,1],[14,1],[14,1]],performAction:p(function(n,a,l,r,y,t,j){var e=t.length-1;switch(y){case 1:break;case 2:this.$=[];break;case 3:t[e-1].push(t[e]),this.$=t[e-1];break;case 4:case 5:this.$=t[e];break;case 6:case 7:this.$=[];break;case 8:r.addEntity(t[e-4]),r.addEntity(t[e-2]),r.addRelationship(t[e-4],t[e],t[e-2],t[e-3]);break;case 9:r.addEntity(t[e-8]),r.addEntity(t[e-4]),r.addRelationship(t[e-8],t[e],t[e-4],t[e-5]),r.setClass([t[e-8]],t[e-6]),r.setClass([t[e-4]],t[e-2]);break;case 10:r.addEntity(t[e-6]),r.addEntity(t[e-2]),r.addRelationship(t[e-6],t[e],t[e-2],t[e-3]),r.setClass([t[e-6]],t[e-4]);break;case 11:r.addEntity(t[e-6]),r.addEntity(t[e-4]),r.addRelationship(t[e-6],t[e],t[e-4],t[e-5]),r.setClass([t[e-4]],t[e-2]);break;case 12:r.addEntity(t[e-3]),r.addAttributes(t[e-3],t[e-1]);break;case 13:r.addEntity(t[e-5]),r.addAttributes(t[e-5],t[e-1]),r.setClass([t[e-5]],t[e-3]);break;case 14:r.addEntity(t[e-2]);break;case 15:r.addEntity(t[e-4]),r.setClass([t[e-4]],t[e-2]);break;case 16:r.addEntity(t[e]);break;case 17:r.addEntity(t[e-2]),r.setClass([t[e-2]],t[e]);break;case 18:r.addEntity(t[e-6],t[e-4]),r.addAttributes(t[e-6],t[e-1]);break;case 19:r.addEntity(t[e-8],t[e-6]),r.addAttributes(t[e-8],t[e-1]),r.setClass([t[e-8]],t[e-3]);break;case 20:r.addEntity(t[e-5],t[e-3]);break;case 21:r.addEntity(t[e-7],t[e-5]),r.setClass([t[e-7]],t[e-2]);break;case 22:r.addEntity(t[e-3],t[e-1]);break;case 23:r.addEntity(t[e-5],t[e-3]),r.setClass([t[e-5]],t[e]);break;case 24:case 25:this.$=t[e].trim(),r.setAccTitle(this.$);break;case 26:case 27:this.$=t[e].trim(),r.setAccDescription(this.$);break;case 32:r.setDirection("TB");break;case 33:r.setDirection("BT");break;case 34:r.setDirection("RL");break;case 35:r.setDirection("LR");break;case 36:this.$=t[e-3],r.addClass(t[e-2],t[e-1]);break;case 37:case 38:case 59:case 67:this.$=[t[e]];break;case 39:case 40:this.$=t[e-2].concat([t[e]]);break;case 41:this.$=t[e-2],r.setClass(t[e-1],t[e]);break;case 42:this.$=t[e-3],r.addCssStyles(t[e-2],t[e-1]);break;case 43:this.$=[t[e]];break;case 44:t[e-2].push(t[e]),this.$=t[e-2];break;case 46:this.$=t[e-1]+t[e];break;case 54:case 79:case 80:this.$=t[e].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 81:this.$=t[e];break;case 60:t[e].push(t[e-1]),this.$=t[e];break;case 61:this.$={type:t[e-1],name:t[e]};break;case 62:this.$={type:t[e-2],name:t[e-1],keys:t[e]};break;case 63:this.$={type:t[e-2],name:t[e-1],comment:t[e]};break;case 64:this.$={type:t[e-3],name:t[e-2],keys:t[e-1],comment:t[e]};break;case 65:case 66:case 69:this.$=t[e];break;case 68:t[e-2].push(t[e]),this.$=t[e-2];break;case 70:this.$=t[e].replace(/"/g,"");break;case 71:this.$={cardA:t[e],relType:t[e-1],cardB:t[e-2]};break;case 72:this.$=r.Cardinality.ZERO_OR_ONE;break;case 73:this.$=r.Cardinality.ZERO_OR_MORE;break;case 74:this.$=r.Cardinality.ONE_OR_MORE;break;case 75:this.$=r.Cardinality.ONLY_ONE;break;case 76:this.$=r.Cardinality.MD_PARENT;break;case 77:this.$=r.Identification.NON_IDENTIFYING;break;case 78:this.$=r.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},s(i,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:o,24:h,26:c,28:u,29:14,30:15,31:16,32:17,33:f,34:d,35:k,36:W,37:Q,40:T,43:X,44:B,48:D,50:R,51:S,52:x},s(i,[2,7],{1:[2,1]}),s(i,[2,3]),{9:30,11:9,22:o,24:h,26:c,28:u,29:14,30:15,31:16,32:17,33:f,34:d,35:k,36:W,37:Q,40:T,43:X,44:B,48:D,50:R,51:S,52:x},s(i,[2,5]),s(i,[2,6]),s(i,[2,16],{12:31,63:35,15:[1,32],17:[1,33],20:[1,34],65:at,66:ct,67:ot,68:lt,69:ht}),{23:[1,41]},{25:[1,42]},{27:[1,43]},s(i,[2,27]),s(i,[2,28]),s(i,[2,29]),s(i,[2,30]),s(i,[2,31]),s(F,[2,54]),s(F,[2,55]),s(F,[2,56]),s(F,[2,57]),s(F,[2,58]),s(i,[2,32]),s(i,[2,33]),s(i,[2,34]),s(i,[2,35]),{16:44,40:O,41:N},{16:47,40:O,41:N},{16:48,40:O,41:N},s(i,[2,4]),{11:49,40:T,48:D,50:R,51:S,52:x},{16:50,40:O,41:N},{18:51,19:[1,52],53:53,54:54,58:Y},{11:56,40:T,48:D,50:R,51:S,52:x},{64:57,70:[1,58],71:[1,59]},s(P,[2,72]),s(P,[2,73]),s(P,[2,74]),s(P,[2,75]),s(P,[2,76]),s(i,[2,24]),s(i,[2,25]),s(i,[2,26]),{13:z,38:60,41:G,42:A,45:62,46:63,48:K,49:U},s(H,[2,37]),s(H,[2,38]),{16:68,40:O,41:N,42:A},{13:z,38:69,41:G,42:A,45:62,46:63,48:K,49:U},{13:[1,70],15:[1,71]},s(i,[2,17],{63:35,12:72,17:[1,73],42:A,65:at,66:ct,67:ot,68:lt,69:ht}),{19:[1,74]},s(i,[2,14]),{18:75,19:[2,59],53:53,54:54,58:Y},{55:76,58:[1,77]},{58:[2,65]},{21:[1,78]},{63:79,65:at,66:ct,67:ot,68:lt,69:ht},s(bt,[2,77]),s(bt,[2,78]),{6:mt,10:kt,39:80,42:Et,47:Tt},{40:[1,85],41:[1,86]},s(St,[2,43],{46:87,13:z,41:G,48:K,49:U}),s(L,[2,45]),s(L,[2,50]),s(L,[2,51]),s(L,[2,52]),s(L,[2,53]),s(i,[2,41],{42:A}),{6:mt,10:kt,39:88,42:Et,47:Tt},{14:89,40:q,50:J,72:$},{16:93,40:O,41:N},{11:94,40:T,48:D,50:R,51:S,52:x},{18:95,19:[1,96],53:53,54:54,58:Y},s(i,[2,12]),{19:[2,60]},s(Z,[2,61],{56:97,57:98,59:99,61:Ot,62:Nt}),s([19,58,61,62],[2,66]),s(i,[2,22],{15:[1,103],17:[1,102]}),s([40,48,50,51,52],[2,71]),s(i,[2,36]),{13:z,41:G,45:104,46:63,48:K,49:U},s(i,[2,47]),s(i,[2,48]),s(i,[2,49]),s(H,[2,39]),s(H,[2,40]),s(L,[2,46]),s(i,[2,42]),s(i,[2,8]),s(i,[2,79]),s(i,[2,80]),s(i,[2,81]),{13:[1,105],42:A},{13:[1,107],15:[1,106]},{19:[1,108]},s(i,[2,15]),s(Z,[2,62],{57:109,60:[1,110],62:Nt}),s(Z,[2,63]),s(ut,[2,67]),s(Z,[2,70]),s(ut,[2,69]),{18:111,19:[1,112],53:53,54:54,58:Y},{16:113,40:O,41:N},s(St,[2,44],{46:87,13:z,41:G,48:K,49:U}),{14:114,40:q,50:J,72:$},{16:115,40:O,41:N},{14:116,40:q,50:J,72:$},s(i,[2,13]),s(Z,[2,64]),{59:117,61:Ot},{19:[1,118]},s(i,[2,20]),s(i,[2,23],{17:[1,119],42:A}),s(i,[2,11]),{13:[1,120],42:A},s(i,[2,10]),s(ut,[2,68]),s(i,[2,18]),{18:121,19:[1,122],53:53,54:54,58:Y},{14:123,40:q,50:J,72:$},{19:[1,124]},s(i,[2,21]),s(i,[2,9]),s(i,[2,19])],defaultActions:{55:[2,65],75:[2,60]},parseError:p(function(n,a){if(a.recoverable)this.trace(n);else{var l=new Error(n);throw l.hash=a,l}},"parseError"),parse:p(function(n){var a=this,l=[0],r=[],y=[null],t=[],j=this.table,e="",et=0,At=0,Lt=2,It=1,wt=t.slice.call(arguments,1),_=Object.create(this.lexer),C={yy:{}};for(var pt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,pt)&&(C.yy[pt]=this.yy[pt]);_.setInput(n,C.yy),C.yy.lexer=_,C.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var yt=_.yylloc;t.push(yt);var Vt=_.options&&_.options.ranges;typeof C.yy.parseError=="function"?this.parseError=C.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Mt(b){l.length=l.length-2*b,y.length=y.length-b,t.length=t.length-b}p(Mt,"popStack");function Rt(){var b;return b=r.pop()||_.lex()||It,typeof b!="number"&&(b instanceof Array&&(r=b,b=r.pop()),b=a.symbols_[b]||b),b}p(Rt,"lex");for(var g,v,m,ft,w={},st,E,xt,it;;){if(v=l[l.length-1],this.defaultActions[v]?m=this.defaultActions[v]:((g===null||typeof g>"u")&&(g=Rt()),m=j[v]&&j[v][g]),typeof m>"u"||!m.length||!m[0]){var _t="";it=[];for(st in j[v])this.terminals_[st]&&st>Lt&&it.push("'"+this.terminals_[st]+"'");_.showPosition?_t="Parse error on line "+(et+1)+`:
|
|
2
2
|
`+_.showPosition()+`
|
|
3
3
|
Expecting `+it.join(", ")+", got '"+(this.terminals_[g]||g)+"'":_t="Parse error on line "+(et+1)+": Unexpected "+(g==It?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError(_t,{text:_.match,token:this.terminals_[g]||g,line:_.yylineno,loc:yt,expected:it})}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+g);switch(m[0]){case 1:l.push(g),y.push(_.yytext),t.push(_.yylloc),l.push(m[1]),g=null,At=_.yyleng,e=_.yytext,et=_.yylineno,yt=_.yylloc;break;case 2:if(E=this.productions_[m[1]][1],w.$=y[y.length-E],w._$={first_line:t[t.length-(E||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(E||1)].first_column,last_column:t[t.length-1].last_column},Vt&&(w._$.range=[t[t.length-(E||1)].range[0],t[t.length-1].range[1]]),ft=this.performAction.apply(w,[e,At,et,C.yy,m[1],y,t].concat(wt)),typeof ft<"u")return ft;E&&(l=l.slice(0,-1*E*2),y=y.slice(0,-1*E),t=t.slice(0,-1*E)),l.push(this.productions_[m[1]][0]),y.push(w.$),t.push(w._$),xt=j[l[l.length-2]][l[l.length-1]],l.push(xt);break;case 3:return!0}}return!0},"parse")},Dt=function(){var I={EOF:1,parseError:p(function(a,l){if(this.yy.parser)this.yy.parser.parseError(a,l);else throw new Error(a)},"parseError"),setInput:p(function(n,a){return this.yy=a||this.yy||{},this._input=n,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:p(function(){var n=this._input[0];this.yytext+=n,this.yyleng++,this.offset++,this.match+=n,this.matched+=n;var a=n.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),n},"input"),unput:p(function(n){var a=n.length,l=n.split(/(?:\r\n?|\n)/g);this._input=n+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;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),l.length-1&&(this.yylineno-=l.length-1);var y=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:l?(l.length===r.length?this.yylloc.first_column:0)+r[r.length-l.length].length-l[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[y[0],y[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:p(function(){return this._more=!0,this},"more"),reject:p(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:p(function(n){this.unput(this.match.slice(n))},"less"),pastInput:p(function(){var n=this.matched.substr(0,this.matched.length-this.match.length);return(n.length>20?"...":"")+n.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:p(function(){var n=this.match;return n.length<20&&(n+=this._input.substr(0,20-n.length)),(n.substr(0,20)+(n.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:p(function(){var n=this.pastInput(),a=new Array(n.length+1).join("-");return n+this.upcomingInput()+`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{g as Ht}from"./chunk-FMBD7UC4-
|
|
1
|
+
import{g as Ht}from"./chunk-FMBD7UC4-BH440Lco.js";import{a8 as m,ak as Mt,ab as J,a9 as g1,al as Xt,am as Qt,an as rt,a7 as Jt,a4 as Zt,ao as $t,a6 as te,a5 as ee,ap as se,ai as ie,aq as re,ar as ae,as as ne,at as st,aa as it,au as ue,av as le,aw as oe,ax as ce,ay as he}from"./vendor-mermaid-C1Gk9PtT.js";import{c as de}from"./chunk-YZCP3GAM-D1Ua-1JA.js";import{g as pe}from"./chunk-55IACEB6-CyMcswjM.js";import{s as fe}from"./chunk-EDXVE4YY-KspsFgAM.js";import"./vendor-antd-C8lKwvI6.js";import"./vendor-i18n-BNURlJ23.js";var ge="flowchart-",w1,be=(w1=class{constructor(){this.vertexCounter=0,this.config=g1(),this.diagramId="",this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=Jt,this.setAccDescription=Zt,this.setDiagramTitle=$t,this.getAccTitle=te,this.getAccDescription=ee,this.getDiagramTitle=se,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}sanitizeText(i){return ie.sanitizeText(i,this.config)}sanitizeNodeLabelType(i){switch(i){case"markdown":case"string":case"text":return i;default:return"markdown"}}setDiagramId(i){this.diagramId=i}lookUpDomId(i){for(const n of this.vertices.values())if(n.id===i)return this.diagramId?`${this.diagramId}-${n.domId}`:n.domId;return this.diagramId?`${this.diagramId}-${i}`:i}addVertex(i,n,a,u,o,p,c={},k){var K,E;if(!i||i.trim().length===0)return;let r;if(k!==void 0){let f;k.includes(`
|
|
2
2
|
`)?f=k+`
|
|
3
3
|
`:f=`{
|
|
4
4
|
`+k+`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a5 as ue,a4 as de,ap as fe,ao as he,a6 as me,a7 as ke,a8 as c,a9 as nt,aa as mt,G as ye,br as ge,bs as ve,ac as pe,o as Te,bt as xe,ab as et,bu as be,bv as Nt,bw as Bt,bx as we,by as _e,bz as De,bA as Ce,bB as Se,bC as Ee,bD as Ie,bE as zt,bF as Ht,bG as qt,bH as jt,bI as Gt,bJ as Me,ai as Ae,ag as Fe,av as $e,an as Le}from"./vendor-mermaid-De-Yacw-.js";import{d as P,al as Oe,am as We}from"./vendor-antd-DODjfilb.js";import{g as Qt}from"./vendor-i18n-BNURlJ23.js";var kt={exports:{}},Ye=kt.exports,Xt;function Re(){return Xt||(Xt=1,function(t,r){(function(n,i){t.exports=i()})(Ye,function(){var n="day";return function(i,a,k){var T=function(A){return A.add(4-A.isoWeekday(),n)},C=a.prototype;C.isoWeekYear=function(){return T(this).year()},C.isoWeek=function(A){if(!this.$utils().u(A))return this.add(7*(A-this.isoWeek()),n);var D,$,L,O,W=T(this),_=(D=this.isoWeekYear(),$=this.$u,L=($?k.utc:k)().year(D).startOf("year"),O=4-L.isoWeekday(),L.isoWeekday()>4&&(O+=7),L.add(O,n));return W.diff(_,"week")+1},C.isoWeekday=function(A){return this.$utils().u(A)?this.day()||7:this.day(this.day()%7?A:A-7)};var Y=C.startOf;C.startOf=function(A,D){var $=this.$utils(),L=!!$.u(D)||D;return $.p(A)==="isoweek"?L?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):Y.bind(this)(A,D)}}})}(kt)),kt.exports}var Pe=Re();const Ve=Qt(Pe);var yt={exports:{}},Ne=yt.exports,Ut;function Be(){return Ut||(Ut=1,function(t,r){(function(n,i){t.exports=i()})(Ne,function(){var n,i,a=1e3,k=6e4,T=36e5,C=864e5,Y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,A=31536e6,D=2628e6,$=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,L={years:A,months:D,days:C,hours:T,minutes:k,seconds:a,milliseconds:1,weeks:6048e5},O=function(I){return I instanceof G},W=function(I,p,f){return new G(I,f,p.$l)},_=function(I){return i.p(I)+"s"},K=function(I){return I<0},B=function(I){return K(I)?Math.ceil(I):Math.floor(I)},Q=function(I){return Math.abs(I)},H=function(I,p){return I?K(I)?{negative:!0,format:""+Q(I)+p}:{negative:!1,format:""+I+p}:{negative:!1,format:""}},G=function(){function I(f,u,y){var g=this;if(this.$d={},this.$l=y,f===void 0&&(this.$ms=0,this.parseFromMilliseconds()),u)return W(f*L[_(u)],this);if(typeof f=="number")return this.$ms=f,this.parseFromMilliseconds(),this;if(typeof f=="object")return Object.keys(f).forEach(function(o){g.$d[_(o)]=f[o]}),this.calMilliseconds(),this;if(typeof f=="string"){var v=f.match($);if(v){var m=v.slice(2).map(function(o){return o!=null?Number(o):0});return this.$d.years=m[0],this.$d.months=m[1],this.$d.weeks=m[2],this.$d.days=m[3],this.$d.hours=m[4],this.$d.minutes=m[5],this.$d.seconds=m[6],this.calMilliseconds(),this}}return this}var p=I.prototype;return p.calMilliseconds=function(){var f=this;this.$ms=Object.keys(this.$d).reduce(function(u,y){return u+(f.$d[y]||0)*L[y]},0)},p.parseFromMilliseconds=function(){var f=this.$ms;this.$d.years=B(f/A),f%=A,this.$d.months=B(f/D),f%=D,this.$d.days=B(f/C),f%=C,this.$d.hours=B(f/T),f%=T,this.$d.minutes=B(f/k),f%=k,this.$d.seconds=B(f/a),f%=a,this.$d.milliseconds=f},p.toISOString=function(){var f=H(this.$d.years,"Y"),u=H(this.$d.months,"M"),y=+this.$d.days||0;this.$d.weeks&&(y+=7*this.$d.weeks);var g=H(y,"D"),v=H(this.$d.hours,"H"),m=H(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var l=H(o,"S"),h=f.negative||u.negative||g.negative||v.negative||m.negative||l.negative,d=v.format||m.format||l.format?"T":"",x=(h?"-":"")+"P"+f.format+u.format+g.format+d+v.format+m.format+l.format;return x==="P"||x==="-P"?"P0D":x},p.toJSON=function(){return this.toISOString()},p.format=function(f){var u=f||"YYYY-MM-DDTHH:mm:ss",y={Y:this.$d.years,YY:i.s(this.$d.years,2,"0"),YYYY:i.s(this.$d.years,4,"0"),M:this.$d.months,MM:i.s(this.$d.months,2,"0"),D:this.$d.days,DD:i.s(this.$d.days,2,"0"),H:this.$d.hours,HH:i.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:i.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:i.s(this.$d.seconds,2,"0"),SSS:i.s(this.$d.milliseconds,3,"0")};return u.replace(Y,function(g,v){return v||String(y[g])})},p.as=function(f){return this.$ms/L[_(f)]},p.get=function(f){var u=this.$ms,y=_(f);return y==="milliseconds"?u%=1e3:u=y==="weeks"?B(u/L[y]):this.$d[y],u||0},p.add=function(f,u,y){var g;return g=u?f*L[_(u)]:O(f)?f.$ms:W(f,this).$ms,W(this.$ms+g*(y?-1:1),this)},p.subtract=function(f,u){return this.add(f,u,!0)},p.locale=function(f){var u=this.clone();return u.$l=f,u},p.clone=function(){return W(this.$ms,this)},p.humanize=function(f){return n().add(this.$ms,"ms").locale(this.$l).fromNow(!f)},p.valueOf=function(){return this.asMilliseconds()},p.milliseconds=function(){return this.get("milliseconds")},p.asMilliseconds=function(){return this.as("milliseconds")},p.seconds=function(){return this.get("seconds")},p.asSeconds=function(){return this.as("seconds")},p.minutes=function(){return this.get("minutes")},p.asMinutes=function(){return this.as("minutes")},p.hours=function(){return this.get("hours")},p.asHours=function(){return this.as("hours")},p.days=function(){return this.get("days")},p.asDays=function(){return this.as("days")},p.weeks=function(){return this.get("weeks")},p.asWeeks=function(){return this.as("weeks")},p.months=function(){return this.get("months")},p.asMonths=function(){return this.as("months")},p.years=function(){return this.get("years")},p.asYears=function(){return this.as("years")},I}(),Z=function(I,p,f){return I.add(p.years()*f,"y").add(p.months()*f,"M").add(p.days()*f,"d").add(p.hours()*f,"h").add(p.minutes()*f,"m").add(p.seconds()*f,"s").add(p.milliseconds()*f,"ms")};return function(I,p,f){n=f,i=f().$utils(),f.duration=function(g,v){var m=f.locale();return W(g,{$l:m},v)},f.isDuration=O;var u=p.prototype.add,y=p.prototype.subtract;p.prototype.add=function(g,v){return O(g)?Z(this,g,1):u.bind(this)(g,v)},p.prototype.subtract=function(g,v){return O(g)?Z(this,g,-1):y.bind(this)(g,v)}}})}(yt)),yt.exports}var ze=Be();const He=Qt(ze);var Dt=function(){var t=c(function(m,o,l,h){for(l=l||{},h=m.length;h--;l[m[h]]=o);return l},"o"),r=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],i=[1,27],a=[1,28],k=[1,29],T=[1,30],C=[1,31],Y=[1,32],A=[1,33],D=[1,34],$=[1,9],L=[1,10],O=[1,11],W=[1,12],_=[1,13],K=[1,14],B=[1,15],Q=[1,16],H=[1,19],G=[1,20],Z=[1,21],I=[1,22],p=[1,23],f=[1,25],u=[1,35],y={trace:c(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:c(function(o,l,h,d,x,s,F){var e=s.length-1;switch(x){case 1:return s[e-1];case 2:this.$=[];break;case 3:s[e-1].push(s[e]),this.$=s[e-1];break;case 4:case 5:this.$=s[e];break;case 6:case 7:this.$=[];break;case 8:d.setWeekday("monday");break;case 9:d.setWeekday("tuesday");break;case 10:d.setWeekday("wednesday");break;case 11:d.setWeekday("thursday");break;case 12:d.setWeekday("friday");break;case 13:d.setWeekday("saturday");break;case 14:d.setWeekday("sunday");break;case 15:d.setWeekend("friday");break;case 16:d.setWeekend("saturday");break;case 17:d.setDateFormat(s[e].substr(11)),this.$=s[e].substr(11);break;case 18:d.enableInclusiveEndDates(),this.$=s[e].substr(18);break;case 19:d.TopAxis(),this.$=s[e].substr(8);break;case 20:d.setAxisFormat(s[e].substr(11)),this.$=s[e].substr(11);break;case 21:d.setTickInterval(s[e].substr(13)),this.$=s[e].substr(13);break;case 22:d.setExcludes(s[e].substr(9)),this.$=s[e].substr(9);break;case 23:d.setIncludes(s[e].substr(9)),this.$=s[e].substr(9);break;case 24:d.setTodayMarker(s[e].substr(12)),this.$=s[e].substr(12);break;case 27:d.setDiagramTitle(s[e].substr(6)),this.$=s[e].substr(6);break;case 28:this.$=s[e].trim(),d.setAccTitle(this.$);break;case 29:case 30:this.$=s[e].trim(),d.setAccDescription(this.$);break;case 31:d.addSection(s[e].substr(8)),this.$=s[e].substr(8);break;case 33:d.addTask(s[e-1],s[e]),this.$="task";break;case 34:this.$=s[e-1],d.setClickEvent(s[e-1],s[e],null);break;case 35:this.$=s[e-2],d.setClickEvent(s[e-2],s[e-1],s[e]);break;case 36:this.$=s[e-2],d.setClickEvent(s[e-2],s[e-1],null),d.setLink(s[e-2],s[e]);break;case 37:this.$=s[e-3],d.setClickEvent(s[e-3],s[e-2],s[e-1]),d.setLink(s[e-3],s[e]);break;case 38:this.$=s[e-2],d.setClickEvent(s[e-2],s[e],null),d.setLink(s[e-2],s[e-1]);break;case 39:this.$=s[e-3],d.setClickEvent(s[e-3],s[e-1],s[e]),d.setLink(s[e-3],s[e-2]);break;case 40:this.$=s[e-1],d.setLink(s[e-1],s[e]);break;case 41:case 47:this.$=s[e-1]+" "+s[e];break;case 42:case 43:case 45:this.$=s[e-2]+" "+s[e-1]+" "+s[e];break;case 44:case 46:this.$=s[e-3]+" "+s[e-2]+" "+s[e-1]+" "+s[e];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(r,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:i,14:a,15:k,16:T,17:C,18:Y,19:18,20:A,21:D,22:$,23:L,24:O,25:W,26:_,27:K,28:B,29:Q,30:H,31:G,33:Z,35:I,36:p,37:24,38:f,40:u},t(r,[2,7],{1:[2,1]}),t(r,[2,3]),{9:36,11:17,12:n,13:i,14:a,15:k,16:T,17:C,18:Y,19:18,20:A,21:D,22:$,23:L,24:O,25:W,26:_,27:K,28:B,29:Q,30:H,31:G,33:Z,35:I,36:p,37:24,38:f,40:u},t(r,[2,5]),t(r,[2,6]),t(r,[2,17]),t(r,[2,18]),t(r,[2,19]),t(r,[2,20]),t(r,[2,21]),t(r,[2,22]),t(r,[2,23]),t(r,[2,24]),t(r,[2,25]),t(r,[2,26]),t(r,[2,27]),{32:[1,37]},{34:[1,38]},t(r,[2,30]),t(r,[2,31]),t(r,[2,32]),{39:[1,39]},t(r,[2,8]),t(r,[2,9]),t(r,[2,10]),t(r,[2,11]),t(r,[2,12]),t(r,[2,13]),t(r,[2,14]),t(r,[2,15]),t(r,[2,16]),{41:[1,40],43:[1,41]},t(r,[2,4]),t(r,[2,28]),t(r,[2,29]),t(r,[2,33]),t(r,[2,34],{42:[1,42],43:[1,43]}),t(r,[2,40],{41:[1,44]}),t(r,[2,35],{43:[1,45]}),t(r,[2,36]),t(r,[2,38],{42:[1,46]}),t(r,[2,37]),t(r,[2,39])],defaultActions:{},parseError:c(function(o,l){if(l.recoverable)this.trace(o);else{var h=new Error(o);throw h.hash=l,h}},"parseError"),parse:c(function(o){var l=this,h=[0],d=[],x=[null],s=[],F=this.table,e="",b=0,M=0,E=2,S=1,V=s.slice.call(arguments,1),w=Object.create(this.lexer),X={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(X.yy[ct]=this.yy[ct]);w.setInput(o,X.yy),X.yy.lexer=w,X.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var xt=w.yylloc;s.push(xt);var ce=w.options&&w.options.ranges;typeof X.yy.parseError=="function"?this.parseError=X.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function le(z){h.length=h.length-2*z,x.length=x.length-z,s.length=s.length-z}c(le,"popStack");function Pt(){var z;return z=d.pop()||w.lex()||S,typeof z!="number"&&(z instanceof Array&&(d=z,z=d.pop()),z=l.symbols_[z]||z),z}c(Pt,"lex");for(var N,tt,q,bt,it={},ft,U,Vt,ht;;){if(tt=h[h.length-1],this.defaultActions[tt]?q=this.defaultActions[tt]:((N===null||typeof N>"u")&&(N=Pt()),q=F[tt]&&F[tt][N]),typeof q>"u"||!q.length||!q[0]){var wt="";ht=[];for(ft in F[tt])this.terminals_[ft]&&ft>E&&ht.push("'"+this.terminals_[ft]+"'");w.showPosition?wt="Parse error on line "+(b+1)+`:
|
|
1
|
+
import{a5 as ue,a4 as de,ap as fe,ao as he,a6 as me,a7 as ke,a8 as c,a9 as nt,aa as mt,G as ye,br as ge,bs as ve,ac as pe,o as Te,bt as xe,ab as et,bu as be,bv as Nt,bw as Bt,bx as we,by as _e,bz as De,bA as Ce,bB as Se,bC as Ee,bD as Ie,bE as zt,bF as Ht,bG as qt,bH as jt,bI as Gt,bJ as Me,ai as Ae,ag as Fe,av as $e,an as Le}from"./vendor-mermaid-C1Gk9PtT.js";import{d as P,al as Oe,am as We}from"./vendor-antd-C8lKwvI6.js";import{g as Qt}from"./vendor-i18n-BNURlJ23.js";var kt={exports:{}},Ye=kt.exports,Xt;function Re(){return Xt||(Xt=1,function(t,r){(function(n,i){t.exports=i()})(Ye,function(){var n="day";return function(i,a,k){var T=function(A){return A.add(4-A.isoWeekday(),n)},C=a.prototype;C.isoWeekYear=function(){return T(this).year()},C.isoWeek=function(A){if(!this.$utils().u(A))return this.add(7*(A-this.isoWeek()),n);var D,$,L,O,W=T(this),_=(D=this.isoWeekYear(),$=this.$u,L=($?k.utc:k)().year(D).startOf("year"),O=4-L.isoWeekday(),L.isoWeekday()>4&&(O+=7),L.add(O,n));return W.diff(_,"week")+1},C.isoWeekday=function(A){return this.$utils().u(A)?this.day()||7:this.day(this.day()%7?A:A-7)};var Y=C.startOf;C.startOf=function(A,D){var $=this.$utils(),L=!!$.u(D)||D;return $.p(A)==="isoweek"?L?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):Y.bind(this)(A,D)}}})}(kt)),kt.exports}var Pe=Re();const Ve=Qt(Pe);var yt={exports:{}},Ne=yt.exports,Ut;function Be(){return Ut||(Ut=1,function(t,r){(function(n,i){t.exports=i()})(Ne,function(){var n,i,a=1e3,k=6e4,T=36e5,C=864e5,Y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,A=31536e6,D=2628e6,$=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,L={years:A,months:D,days:C,hours:T,minutes:k,seconds:a,milliseconds:1,weeks:6048e5},O=function(I){return I instanceof G},W=function(I,p,f){return new G(I,f,p.$l)},_=function(I){return i.p(I)+"s"},K=function(I){return I<0},B=function(I){return K(I)?Math.ceil(I):Math.floor(I)},Q=function(I){return Math.abs(I)},H=function(I,p){return I?K(I)?{negative:!0,format:""+Q(I)+p}:{negative:!1,format:""+I+p}:{negative:!1,format:""}},G=function(){function I(f,u,y){var g=this;if(this.$d={},this.$l=y,f===void 0&&(this.$ms=0,this.parseFromMilliseconds()),u)return W(f*L[_(u)],this);if(typeof f=="number")return this.$ms=f,this.parseFromMilliseconds(),this;if(typeof f=="object")return Object.keys(f).forEach(function(o){g.$d[_(o)]=f[o]}),this.calMilliseconds(),this;if(typeof f=="string"){var v=f.match($);if(v){var m=v.slice(2).map(function(o){return o!=null?Number(o):0});return this.$d.years=m[0],this.$d.months=m[1],this.$d.weeks=m[2],this.$d.days=m[3],this.$d.hours=m[4],this.$d.minutes=m[5],this.$d.seconds=m[6],this.calMilliseconds(),this}}return this}var p=I.prototype;return p.calMilliseconds=function(){var f=this;this.$ms=Object.keys(this.$d).reduce(function(u,y){return u+(f.$d[y]||0)*L[y]},0)},p.parseFromMilliseconds=function(){var f=this.$ms;this.$d.years=B(f/A),f%=A,this.$d.months=B(f/D),f%=D,this.$d.days=B(f/C),f%=C,this.$d.hours=B(f/T),f%=T,this.$d.minutes=B(f/k),f%=k,this.$d.seconds=B(f/a),f%=a,this.$d.milliseconds=f},p.toISOString=function(){var f=H(this.$d.years,"Y"),u=H(this.$d.months,"M"),y=+this.$d.days||0;this.$d.weeks&&(y+=7*this.$d.weeks);var g=H(y,"D"),v=H(this.$d.hours,"H"),m=H(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var l=H(o,"S"),h=f.negative||u.negative||g.negative||v.negative||m.negative||l.negative,d=v.format||m.format||l.format?"T":"",x=(h?"-":"")+"P"+f.format+u.format+g.format+d+v.format+m.format+l.format;return x==="P"||x==="-P"?"P0D":x},p.toJSON=function(){return this.toISOString()},p.format=function(f){var u=f||"YYYY-MM-DDTHH:mm:ss",y={Y:this.$d.years,YY:i.s(this.$d.years,2,"0"),YYYY:i.s(this.$d.years,4,"0"),M:this.$d.months,MM:i.s(this.$d.months,2,"0"),D:this.$d.days,DD:i.s(this.$d.days,2,"0"),H:this.$d.hours,HH:i.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:i.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:i.s(this.$d.seconds,2,"0"),SSS:i.s(this.$d.milliseconds,3,"0")};return u.replace(Y,function(g,v){return v||String(y[g])})},p.as=function(f){return this.$ms/L[_(f)]},p.get=function(f){var u=this.$ms,y=_(f);return y==="milliseconds"?u%=1e3:u=y==="weeks"?B(u/L[y]):this.$d[y],u||0},p.add=function(f,u,y){var g;return g=u?f*L[_(u)]:O(f)?f.$ms:W(f,this).$ms,W(this.$ms+g*(y?-1:1),this)},p.subtract=function(f,u){return this.add(f,u,!0)},p.locale=function(f){var u=this.clone();return u.$l=f,u},p.clone=function(){return W(this.$ms,this)},p.humanize=function(f){return n().add(this.$ms,"ms").locale(this.$l).fromNow(!f)},p.valueOf=function(){return this.asMilliseconds()},p.milliseconds=function(){return this.get("milliseconds")},p.asMilliseconds=function(){return this.as("milliseconds")},p.seconds=function(){return this.get("seconds")},p.asSeconds=function(){return this.as("seconds")},p.minutes=function(){return this.get("minutes")},p.asMinutes=function(){return this.as("minutes")},p.hours=function(){return this.get("hours")},p.asHours=function(){return this.as("hours")},p.days=function(){return this.get("days")},p.asDays=function(){return this.as("days")},p.weeks=function(){return this.get("weeks")},p.asWeeks=function(){return this.as("weeks")},p.months=function(){return this.get("months")},p.asMonths=function(){return this.as("months")},p.years=function(){return this.get("years")},p.asYears=function(){return this.as("years")},I}(),Z=function(I,p,f){return I.add(p.years()*f,"y").add(p.months()*f,"M").add(p.days()*f,"d").add(p.hours()*f,"h").add(p.minutes()*f,"m").add(p.seconds()*f,"s").add(p.milliseconds()*f,"ms")};return function(I,p,f){n=f,i=f().$utils(),f.duration=function(g,v){var m=f.locale();return W(g,{$l:m},v)},f.isDuration=O;var u=p.prototype.add,y=p.prototype.subtract;p.prototype.add=function(g,v){return O(g)?Z(this,g,1):u.bind(this)(g,v)},p.prototype.subtract=function(g,v){return O(g)?Z(this,g,-1):y.bind(this)(g,v)}}})}(yt)),yt.exports}var ze=Be();const He=Qt(ze);var Dt=function(){var t=c(function(m,o,l,h){for(l=l||{},h=m.length;h--;l[m[h]]=o);return l},"o"),r=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],i=[1,27],a=[1,28],k=[1,29],T=[1,30],C=[1,31],Y=[1,32],A=[1,33],D=[1,34],$=[1,9],L=[1,10],O=[1,11],W=[1,12],_=[1,13],K=[1,14],B=[1,15],Q=[1,16],H=[1,19],G=[1,20],Z=[1,21],I=[1,22],p=[1,23],f=[1,25],u=[1,35],y={trace:c(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:c(function(o,l,h,d,x,s,F){var e=s.length-1;switch(x){case 1:return s[e-1];case 2:this.$=[];break;case 3:s[e-1].push(s[e]),this.$=s[e-1];break;case 4:case 5:this.$=s[e];break;case 6:case 7:this.$=[];break;case 8:d.setWeekday("monday");break;case 9:d.setWeekday("tuesday");break;case 10:d.setWeekday("wednesday");break;case 11:d.setWeekday("thursday");break;case 12:d.setWeekday("friday");break;case 13:d.setWeekday("saturday");break;case 14:d.setWeekday("sunday");break;case 15:d.setWeekend("friday");break;case 16:d.setWeekend("saturday");break;case 17:d.setDateFormat(s[e].substr(11)),this.$=s[e].substr(11);break;case 18:d.enableInclusiveEndDates(),this.$=s[e].substr(18);break;case 19:d.TopAxis(),this.$=s[e].substr(8);break;case 20:d.setAxisFormat(s[e].substr(11)),this.$=s[e].substr(11);break;case 21:d.setTickInterval(s[e].substr(13)),this.$=s[e].substr(13);break;case 22:d.setExcludes(s[e].substr(9)),this.$=s[e].substr(9);break;case 23:d.setIncludes(s[e].substr(9)),this.$=s[e].substr(9);break;case 24:d.setTodayMarker(s[e].substr(12)),this.$=s[e].substr(12);break;case 27:d.setDiagramTitle(s[e].substr(6)),this.$=s[e].substr(6);break;case 28:this.$=s[e].trim(),d.setAccTitle(this.$);break;case 29:case 30:this.$=s[e].trim(),d.setAccDescription(this.$);break;case 31:d.addSection(s[e].substr(8)),this.$=s[e].substr(8);break;case 33:d.addTask(s[e-1],s[e]),this.$="task";break;case 34:this.$=s[e-1],d.setClickEvent(s[e-1],s[e],null);break;case 35:this.$=s[e-2],d.setClickEvent(s[e-2],s[e-1],s[e]);break;case 36:this.$=s[e-2],d.setClickEvent(s[e-2],s[e-1],null),d.setLink(s[e-2],s[e]);break;case 37:this.$=s[e-3],d.setClickEvent(s[e-3],s[e-2],s[e-1]),d.setLink(s[e-3],s[e]);break;case 38:this.$=s[e-2],d.setClickEvent(s[e-2],s[e],null),d.setLink(s[e-2],s[e-1]);break;case 39:this.$=s[e-3],d.setClickEvent(s[e-3],s[e-1],s[e]),d.setLink(s[e-3],s[e-2]);break;case 40:this.$=s[e-1],d.setLink(s[e-1],s[e]);break;case 41:case 47:this.$=s[e-1]+" "+s[e];break;case 42:case 43:case 45:this.$=s[e-2]+" "+s[e-1]+" "+s[e];break;case 44:case 46:this.$=s[e-3]+" "+s[e-2]+" "+s[e-1]+" "+s[e];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(r,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:i,14:a,15:k,16:T,17:C,18:Y,19:18,20:A,21:D,22:$,23:L,24:O,25:W,26:_,27:K,28:B,29:Q,30:H,31:G,33:Z,35:I,36:p,37:24,38:f,40:u},t(r,[2,7],{1:[2,1]}),t(r,[2,3]),{9:36,11:17,12:n,13:i,14:a,15:k,16:T,17:C,18:Y,19:18,20:A,21:D,22:$,23:L,24:O,25:W,26:_,27:K,28:B,29:Q,30:H,31:G,33:Z,35:I,36:p,37:24,38:f,40:u},t(r,[2,5]),t(r,[2,6]),t(r,[2,17]),t(r,[2,18]),t(r,[2,19]),t(r,[2,20]),t(r,[2,21]),t(r,[2,22]),t(r,[2,23]),t(r,[2,24]),t(r,[2,25]),t(r,[2,26]),t(r,[2,27]),{32:[1,37]},{34:[1,38]},t(r,[2,30]),t(r,[2,31]),t(r,[2,32]),{39:[1,39]},t(r,[2,8]),t(r,[2,9]),t(r,[2,10]),t(r,[2,11]),t(r,[2,12]),t(r,[2,13]),t(r,[2,14]),t(r,[2,15]),t(r,[2,16]),{41:[1,40],43:[1,41]},t(r,[2,4]),t(r,[2,28]),t(r,[2,29]),t(r,[2,33]),t(r,[2,34],{42:[1,42],43:[1,43]}),t(r,[2,40],{41:[1,44]}),t(r,[2,35],{43:[1,45]}),t(r,[2,36]),t(r,[2,38],{42:[1,46]}),t(r,[2,37]),t(r,[2,39])],defaultActions:{},parseError:c(function(o,l){if(l.recoverable)this.trace(o);else{var h=new Error(o);throw h.hash=l,h}},"parseError"),parse:c(function(o){var l=this,h=[0],d=[],x=[null],s=[],F=this.table,e="",b=0,M=0,E=2,S=1,V=s.slice.call(arguments,1),w=Object.create(this.lexer),X={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(X.yy[ct]=this.yy[ct]);w.setInput(o,X.yy),X.yy.lexer=w,X.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var xt=w.yylloc;s.push(xt);var ce=w.options&&w.options.ranges;typeof X.yy.parseError=="function"?this.parseError=X.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function le(z){h.length=h.length-2*z,x.length=x.length-z,s.length=s.length-z}c(le,"popStack");function Pt(){var z;return z=d.pop()||w.lex()||S,typeof z!="number"&&(z instanceof Array&&(d=z,z=d.pop()),z=l.symbols_[z]||z),z}c(Pt,"lex");for(var N,tt,q,bt,it={},ft,U,Vt,ht;;){if(tt=h[h.length-1],this.defaultActions[tt]?q=this.defaultActions[tt]:((N===null||typeof N>"u")&&(N=Pt()),q=F[tt]&&F[tt][N]),typeof q>"u"||!q.length||!q[0]){var wt="";ht=[];for(ft in F[tt])this.terminals_[ft]&&ft>E&&ht.push("'"+this.terminals_[ft]+"'");w.showPosition?wt="Parse error on line "+(b+1)+`:
|
|
2
2
|
`+w.showPosition()+`
|
|
3
3
|
Expecting `+ht.join(", ")+", got '"+(this.terminals_[N]||N)+"'":wt="Parse error on line "+(b+1)+": Unexpected "+(N==S?"end of input":"'"+(this.terminals_[N]||N)+"'"),this.parseError(wt,{text:w.match,token:this.terminals_[N]||N,line:w.yylineno,loc:xt,expected:ht})}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+tt+", token: "+N);switch(q[0]){case 1:h.push(N),x.push(w.yytext),s.push(w.yylloc),h.push(q[1]),N=null,M=w.yyleng,e=w.yytext,b=w.yylineno,xt=w.yylloc;break;case 2:if(U=this.productions_[q[1]][1],it.$=x[x.length-U],it._$={first_line:s[s.length-(U||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(U||1)].first_column,last_column:s[s.length-1].last_column},ce&&(it._$.range=[s[s.length-(U||1)].range[0],s[s.length-1].range[1]]),bt=this.performAction.apply(it,[e,M,b,X.yy,q[1],x,s].concat(V)),typeof bt<"u")return bt;U&&(h=h.slice(0,-1*U*2),x=x.slice(0,-1*U),s=s.slice(0,-1*U)),h.push(this.productions_[q[1]][0]),x.push(it.$),s.push(it._$),Vt=F[h[h.length-2]][h[h.length-1]],h.push(Vt);break;case 3:return!0}}return!0},"parse")},g=function(){var m={EOF:1,parseError:c(function(l,h){if(this.yy.parser)this.yy.parser.parseError(l,h);else throw new Error(l)},"parseError"),setInput:c(function(o,l){return this.yy=l||this.yy||{},this._input=o,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:c(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var l=o.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:c(function(o){var l=o.length,h=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var d=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),h.length-1&&(this.yylineno-=h.length-1);var x=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:h?(h.length===d.length?this.yylloc.first_column:0)+d[d.length-h.length].length-h[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},"unput"),more:c(function(){return this._more=!0,this},"more"),reject:c(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:c(function(o){this.unput(this.match.slice(o))},"less"),pastInput:c(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:c(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:c(function(){var o=this.pastInput(),l=new Array(o.length+1).join("-");return o+this.upcomingInput()+`
|
package/dist/assets/{gitGraphDiagram-UUTBAWPF-DJ0V7_Rv.js → gitGraphDiagram-UUTBAWPF-Cq7iSNVm.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{p as he}from"./chunk-4BX2VUAB-Cw-2rap4.js";import{I as $e}from"./chunk-QZHKN3VN-D1FDs1aQ.js";import{ap as fe,ao as ge,a4 as ue,a5 as ye,a6 as xe,a7 as me,a8 as $,aA as Q,ab as k,aa as pe,a9 as z,an as be,aB as we,av as ke,ai as L,aC as ve,aD as Ee,aE as Ce}from"./vendor-mermaid-De-Yacw-.js";import{p as Be}from"./wardley-RL74JXVD-CBRp4POe.js";import"./vendor-antd-DODjfilb.js";import"./vendor-i18n-BNURlJ23.js";import"./min-5KBdYKFY.js";import"./_baseUniq-DVrw3Tro.js";var p={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},Te=Ee.gitGraph,D=$(()=>ve({...Te,...Q().gitGraph}),"getConfig"),i=new $e(()=>{const e=D(),r=e.mainBranchName,t=e.mainBranchOrder;return{mainBranchName:r,commits:new Map,head:null,branchConfig:new Map([[r,{name:r,order:t}]]),branches:new Map([[r,null]]),currBranch:r,direction:"LR",seq:0,options:{}}});function K(){return Ce({length:7})}$(K,"getID");function ae(e,r){const t=Object.create(null);return e.reduce((o,s)=>{const d=r(s);return t[d]||(t[d]=!0,o.push(s)),o},[])}$(ae,"uniqBy");var Le=$(function(e){i.records.direction=e},"setDirection"),Me=$(function(e){k.debug("options str",e),e=e==null?void 0:e.trim(),e=e||"{}";try{i.records.options=JSON.parse(e)}catch(r){k.error("error while parsing gitGraph options",r.message)}},"setOptions"),Re=$(function(){return i.records.options},"getOptions"),Ie=$(function(e){let r=e.msg,t=e.id;const o=e.type;let s=e.tags;k.info("commit",r,t,o,s),k.debug("Entering commit:",r,t,o,s);const d=D();t=L.sanitizeText(t,d),r=L.sanitizeText(r,d),s=s==null?void 0:s.map(a=>L.sanitizeText(a,d));const n={id:t||i.records.seq+"-"+K(),message:r,seq:i.records.seq++,type:o??p.NORMAL,tags:s??[],parents:i.records.head==null?[]:[i.records.head.id],branch:i.records.currBranch};i.records.head=n,k.info("main branch",d.mainBranchName),i.records.commits.has(n.id)&&k.warn(`Commit ID ${n.id} already exists`),i.records.commits.set(n.id,n),i.records.branches.set(i.records.currBranch,n.id),k.debug("in pushCommit "+n.id)},"commit"),Oe=$(function(e){let r=e.name;const t=e.order;if(r=L.sanitizeText(r,D()),i.records.branches.has(r))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${r}")`);i.records.branches.set(r,i.records.head!=null?i.records.head.id:null),i.records.branchConfig.set(r,{name:r,order:t}),ne(r),k.debug("in createBranch")},"branch"),_e=$(e=>{let r=e.branch,t=e.id;const o=e.type,s=e.tags,d=D();r=L.sanitizeText(r,d),t&&(t=L.sanitizeText(t,d));const n=i.records.branches.get(i.records.currBranch),a=i.records.branches.get(r),l=n?i.records.commits.get(n):void 0,h=a?i.records.commits.get(a):void 0;if(l&&h&&l.branch===r)throw new Error(`Cannot merge branch '${r}' into itself.`);if(i.records.currBranch===r){const c=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},c}if(l===void 0||!l){const c=new Error(`Incorrect usage of "merge". Current branch (${i.records.currBranch})has no commits`);throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["commit"]},c}if(!i.records.branches.has(r)){const c=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:[`branch ${r}`]},c}if(h===void 0||!h){const c=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:['"commit"']},c}if(l===h){const c=new Error('Incorrect usage of "merge". Both branches have same head');throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},c}if(t&&i.records.commits.has(t)){const c=new Error('Incorrect usage of "merge". Commit with id:'+t+" already exists, use different custom id");throw c.hash={text:`merge ${r} ${t} ${o} ${s==null?void 0:s.join(" ")}`,token:`merge ${r} ${t} ${o} ${s==null?void 0:s.join(" ")}`,expected:[`merge ${r} ${t}_UNIQUE ${o} ${s==null?void 0:s.join(" ")}`]},c}const g=a||"",f={id:t||`${i.records.seq}-${K()}`,message:`merged branch ${r} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,g],branch:i.records.currBranch,type:p.MERGE,customType:o,customId:!!t,tags:s??[]};i.records.head=f,i.records.commits.set(f.id,f),i.records.branches.set(i.records.currBranch,f.id),k.debug(i.records.branches),k.debug("in mergeBranch")},"merge"),Ge=$(function(e){let r=e.id,t=e.targetId,o=e.tags,s=e.parent;k.debug("Entering cherryPick:",r,t,o);const d=D();if(r=L.sanitizeText(r,d),t=L.sanitizeText(t,d),o=o==null?void 0:o.map(l=>L.sanitizeText(l,d)),s=L.sanitizeText(s,d),!r||!i.records.commits.has(r)){const l=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw l.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},l}const n=i.records.commits.get(r);if(n===void 0||!n)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(s&&!(Array.isArray(n.parents)&&n.parents.includes(s)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");const a=n.branch;if(n.type===p.MERGE&&!s)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!t||!i.records.commits.has(t)){if(a===i.records.currBranch){const f=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw f.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},f}const l=i.records.branches.get(i.records.currBranch);if(l===void 0||!l){const f=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},f}const h=i.records.commits.get(l);if(h===void 0||!h){const f=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},f}const g={id:i.records.seq+"-"+K(),message:`cherry-picked ${n==null?void 0:n.message} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,n.id],branch:i.records.currBranch,type:p.CHERRY_PICK,tags:o?o.filter(Boolean):[`cherry-pick:${n.id}${n.type===p.MERGE?`|parent:${s}`:""}`]};i.records.head=g,i.records.commits.set(g.id,g),i.records.branches.set(i.records.currBranch,g.id),k.debug(i.records.branches),k.debug("in cherryPick")}},"cherryPick"),ne=$(function(e){if(e=L.sanitizeText(e,D()),i.records.branches.has(e)){i.records.currBranch=e;const r=i.records.branches.get(i.records.currBranch);r===void 0||!r?i.records.head=null:i.records.head=i.records.commits.get(r)??null}else{const r=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw r.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},r}},"checkout");function X(e,r,t){const o=e.indexOf(r);o===-1?e.push(t):e.splice(o,1,t)}$(X,"upsert");function Z(e){const r=e.reduce((s,d)=>s.seq>d.seq?s:d,e[0]);let t="";e.forEach(function(s){s===r?t+=" *":t+=" |"});const o=[t,r.id,r.seq];for(const s in i.records.branches)i.records.branches.get(s)===r.id&&o.push(s);if(k.debug(o.join(" ")),r.parents&&r.parents.length==2&&r.parents[0]&&r.parents[1]){const s=i.records.commits.get(r.parents[0]);X(e,r,s),r.parents[1]&&e.push(i.records.commits.get(r.parents[1]))}else{if(r.parents.length==0)return;if(r.parents[0]){const s=i.records.commits.get(r.parents[0]);X(e,r,s)}}e=ae(e,s=>s.id),Z(e)}$(Z,"prettyPrintCommitHistory");var He=$(function(){k.debug(i.records.commits);const e=se()[0];Z([e])},"prettyPrint"),Ae=$(function(){i.reset(),ke()},"clear"),Se=$(function(){return[...i.records.branchConfig.values()].map((r,t)=>r.order!==null&&r.order!==void 0?r:{...r,order:parseFloat(`0.${t}`)}).sort((r,t)=>(r.order??0)-(t.order??0)).map(({name:r})=>({name:r}))},"getBranchesAsObjArray"),De=$(function(){return i.records.branches},"getBranches"),Pe=$(function(){return i.records.commits},"getCommits"),se=$(function(){const e=[...i.records.commits.values()];return e.forEach(function(r){k.debug(r.id)}),e.sort((r,t)=>r.seq-t.seq),e},"getCommitsArray"),We=$(function(){return i.records.currBranch},"getCurrentBranch"),qe=$(function(){return i.records.direction},"getDirection"),Ne=$(function(){return i.records.head},"getHead"),oe={commitType:p,getConfig:D,setDirection:Le,setOptions:Me,getOptions:Re,commit:Ie,branch:Oe,merge:_e,cherryPick:Ge,checkout:ne,prettyPrint:He,clear:Ae,getBranchesAsObjArray:Se,getBranches:De,getCommits:Pe,getCommitsArray:se,getCurrentBranch:We,getDirection:qe,getHead:Ne,setAccTitle:me,getAccTitle:xe,getAccDescription:ye,setAccDescription:ue,setDiagramTitle:ge,getDiagramTitle:fe},Fe=$((e,r)=>{he(e,r),e.dir&&r.setDirection(e.dir);for(const t of e.statements)ze(t,r)},"populate"),ze=$((e,r)=>{const o={Commit:$(s=>r.commit(Ye(s)),"Commit"),Branch:$(s=>r.branch(je(s)),"Branch"),Merge:$(s=>r.merge(Ue(s)),"Merge"),Checkout:$(s=>r.checkout(Ke(s)),"Checkout"),CherryPicking:$(s=>r.cherryPick(Ve(s)),"CherryPicking")}[e.$type];o?o(e):k.error(`Unknown statement type: ${e.$type}`)},"parseStatement"),Ye=$(e=>({id:e.id,msg:e.message??"",type:e.type!==void 0?p[e.type]:p.NORMAL,tags:e.tags??void 0}),"parseCommit"),je=$(e=>({name:e.name,order:e.order??0}),"parseBranch"),Ue=$(e=>({branch:e.branch,id:e.id??"",type:e.type!==void 0?p[e.type]:void 0,tags:e.tags??void 0}),"parseMerge"),Ke=$(e=>e.branch,"parseCheckout"),Ve=$(e=>{var t;return{id:e.id,targetId:"",tags:((t=e.tags)==null?void 0:t.length)===0?void 0:e.tags,parent:e.parent}},"parseCherryPicking"),Xe={parse:$(async e=>{const r=await Be("gitGraph",e);k.debug(r),Fe(r,oe)},"parse")},G=10,H=40,M=4,I=2,A=8,V=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),J=12,ee=new Set(["redux-color","redux-dark-color"]),Je=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),S=$((e,r,t=!1)=>t&&e>0?(e-1)%(r-1)+1:e%r,"calcColorIndex"),B=new Map,T=new Map,j=30,N=new Map,U=[],O=0,y="LR",Qe=$(()=>{B.clear(),T.clear(),N.clear(),O=0,U=[],y="LR"},"clear"),ce=$(e=>{const r=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof e=="string"?e.split(/\\n|\n|<br\s*\/?>/gi):e).forEach(o=>{const s=document.createElementNS("http://www.w3.org/2000/svg","tspan");s.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),s.setAttribute("dy","1em"),s.setAttribute("x","0"),s.setAttribute("class","row"),s.textContent=o.trim(),r.appendChild(s)}),r},"drawText"),ie=$(e=>{let r,t,o;return y==="BT"?(t=$((s,d)=>s<=d,"comparisonFunc"),o=1/0):(t=$((s,d)=>s>=d,"comparisonFunc"),o=0),e.forEach(s=>{var n,a;const d=y==="TB"||y=="BT"?(n=T.get(s))==null?void 0:n.y:(a=T.get(s))==null?void 0:a.x;d!==void 0&&t(d,o)&&(r=s,o=d)}),r},"findClosestParent"),Ze=$(e=>{let r="",t=1/0;return e.forEach(o=>{const s=T.get(o).y;s<=t&&(r=o,t=s)}),r||void 0},"findClosestParentBT"),er=$((e,r,t)=>{let o=t,s=t;const d=[];e.forEach(n=>{const a=r.get(n);if(!a)throw new Error(`Commit not found for key ${n}`);a.parents.length?(o=tr(a),s=Math.max(o,s)):d.push(a),ar(a,o)}),o=s,d.forEach(n=>{nr(n,o,t)}),e.forEach(n=>{const a=r.get(n);if(a!=null&&a.parents.length){const l=Ze(a.parents);o=T.get(l).y-H,o<=s&&(s=o);const h=B.get(a.branch).pos,g=o-G;T.set(a.id,{x:h,y:g})}})},"setParallelBTPos"),rr=$(e=>{var o;const r=ie(e.parents.filter(s=>s!==null));if(!r)throw new Error(`Closest parent not found for commit ${e.id}`);const t=(o=T.get(r))==null?void 0:o.y;if(t===void 0)throw new Error(`Closest parent position not found for commit ${e.id}`);return t},"findClosestParentPos"),tr=$(e=>rr(e)+H,"calculateCommitPosition"),ar=$((e,r)=>{const t=B.get(e.branch);if(!t)throw new Error(`Branch not found for commit ${e.id}`);const o=t.pos,s=r+G;return T.set(e.id,{x:o,y:s}),{x:o,y:s}},"setCommitPosition"),nr=$((e,r,t)=>{const o=B.get(e.branch);if(!o)throw new Error(`Branch not found for commit ${e.id}`);const s=r+t,d=o.pos;T.set(e.id,{x:d,y:s})},"setRootPosition"),sr=$((e,r,t,o,s,d)=>{const{theme:n}=z(),a=V.has(n??""),l=ee.has(n??""),h=Je.has(n??"");if(d===p.HIGHLIGHT)e.append("rect").attr("x",t.x-10+(a?3:0)).attr("y",t.y-10+(a?3:0)).attr("width",a?14:20).attr("height",a?14:20).attr("class",`commit ${r.id} commit-highlight${S(s,A,l)} ${o}-outer`),e.append("rect").attr("x",t.x-6+(a?2:0)).attr("y",t.y-6+(a?2:0)).attr("width",a?8:12).attr("height",a?8:12).attr("class",`commit ${r.id} commit${S(s,A,l)} ${o}-inner`);else if(d===p.CHERRY_PICK)e.append("circle").attr("cx",t.x).attr("cy",t.y).attr("r",a?7:10).attr("class",`commit ${r.id} ${o}`),e.append("circle").attr("cx",t.x-3).attr("cy",t.y+2).attr("r",a?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),e.append("circle").attr("cx",t.x+3).attr("cy",t.y+2).attr("r",a?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),e.append("line").attr("x1",t.x+3).attr("y1",t.y+1).attr("x2",t.x).attr("y2",t.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),e.append("line").attr("x1",t.x-3).attr("y1",t.y+1).attr("x2",t.x).attr("y2",t.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`);else{const g=e.append("circle");if(g.attr("cx",t.x),g.attr("cy",t.y),g.attr("r",a?7:10),g.attr("class",`commit ${r.id} commit${S(s,A,l)}`),d===p.MERGE){const f=e.append("circle");f.attr("cx",t.x),f.attr("cy",t.y),f.attr("r",a?5:6),f.attr("class",`commit ${o} ${r.id} commit${S(s,A,l)}`)}if(d===p.REVERSE){const f=e.append("path"),c=a?4:5;f.attr("d",`M ${t.x-c},${t.y-c}L${t.x+c},${t.y+c}M${t.x-c},${t.y+c}L${t.x+c},${t.y-c}`).attr("class",`commit ${o} ${r.id} commit${S(s,A,l)}`)}}},"drawCommitBullet"),or=$((e,r,t,o,s)=>{var d;if(r.type!==p.CHERRY_PICK&&(r.customId&&r.type===p.MERGE||r.type!==p.MERGE)&&s.showCommitLabel){const n=e.append("g"),a=n.insert("rect").attr("class","commit-label-bkg"),l=n.append("text").attr("x",o).attr("y",t.y+25).attr("class","commit-label").text(r.id),h=(d=l.node())==null?void 0:d.getBBox();if(h&&(a.attr("x",t.posWithOffset-h.width/2-I).attr("y",t.y+13.5).attr("width",h.width+2*I).attr("height",h.height+2*I),y==="TB"||y==="BT"?(a.attr("x",t.x-(h.width+4*M+5)).attr("y",t.y-12),l.attr("x",t.x-(h.width+4*M)).attr("y",t.y+h.height-12)):l.attr("x",t.posWithOffset-h.width/2),s.rotateCommitLabel))if(y==="TB"||y==="BT")l.attr("transform","rotate(-45, "+t.x+", "+t.y+")"),a.attr("transform","rotate(-45, "+t.x+", "+t.y+")");else{const g=-7.5-(h.width+10)/25*9.5,f=10+h.width/25*8.5;n.attr("transform","translate("+g+", "+f+") rotate(-45, "+o+", "+t.y+")")}}},"drawCommitLabel"),cr=$((e,r,t,o)=>{var s;if(r.tags.length>0){let d=0,n=0,a=0;const l=[];for(const h of r.tags.reverse()){const g=e.insert("polygon"),f=e.append("circle"),c=e.append("text").attr("y",t.y-16-d).attr("class","tag-label").text(h),x=(s=c.node())==null?void 0:s.getBBox();if(!x)throw new Error("Tag bbox not found");n=Math.max(n,x.width),a=Math.max(a,x.height),c.attr("x",t.posWithOffset-x.width/2),l.push({tag:c,hole:f,rect:g,yOffset:d}),d+=20}for(const{tag:h,hole:g,rect:f,yOffset:c}of l){const x=a/2,u=t.y-19.2-c;if(f.attr("class","tag-label-bkg").attr("points",`
|
|
1
|
+
import{p as he}from"./chunk-4BX2VUAB-CxLevY_l.js";import{I as $e}from"./chunk-QZHKN3VN-CYjk1VsY.js";import{ap as fe,ao as ge,a4 as ue,a5 as ye,a6 as xe,a7 as me,a8 as $,aA as Q,ab as k,aa as pe,a9 as z,an as be,aB as we,av as ke,ai as L,aC as ve,aD as Ee,aE as Ce}from"./vendor-mermaid-C1Gk9PtT.js";import{p as Be}from"./wardley-RL74JXVD-3f0MBifK.js";import"./vendor-antd-C8lKwvI6.js";import"./vendor-i18n-BNURlJ23.js";import"./min-BB314uX0.js";import"./_baseUniq-Rkm-pzcz.js";var p={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},Te=Ee.gitGraph,D=$(()=>ve({...Te,...Q().gitGraph}),"getConfig"),i=new $e(()=>{const e=D(),r=e.mainBranchName,t=e.mainBranchOrder;return{mainBranchName:r,commits:new Map,head:null,branchConfig:new Map([[r,{name:r,order:t}]]),branches:new Map([[r,null]]),currBranch:r,direction:"LR",seq:0,options:{}}});function K(){return Ce({length:7})}$(K,"getID");function ae(e,r){const t=Object.create(null);return e.reduce((o,s)=>{const d=r(s);return t[d]||(t[d]=!0,o.push(s)),o},[])}$(ae,"uniqBy");var Le=$(function(e){i.records.direction=e},"setDirection"),Me=$(function(e){k.debug("options str",e),e=e==null?void 0:e.trim(),e=e||"{}";try{i.records.options=JSON.parse(e)}catch(r){k.error("error while parsing gitGraph options",r.message)}},"setOptions"),Re=$(function(){return i.records.options},"getOptions"),Ie=$(function(e){let r=e.msg,t=e.id;const o=e.type;let s=e.tags;k.info("commit",r,t,o,s),k.debug("Entering commit:",r,t,o,s);const d=D();t=L.sanitizeText(t,d),r=L.sanitizeText(r,d),s=s==null?void 0:s.map(a=>L.sanitizeText(a,d));const n={id:t||i.records.seq+"-"+K(),message:r,seq:i.records.seq++,type:o??p.NORMAL,tags:s??[],parents:i.records.head==null?[]:[i.records.head.id],branch:i.records.currBranch};i.records.head=n,k.info("main branch",d.mainBranchName),i.records.commits.has(n.id)&&k.warn(`Commit ID ${n.id} already exists`),i.records.commits.set(n.id,n),i.records.branches.set(i.records.currBranch,n.id),k.debug("in pushCommit "+n.id)},"commit"),Oe=$(function(e){let r=e.name;const t=e.order;if(r=L.sanitizeText(r,D()),i.records.branches.has(r))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${r}")`);i.records.branches.set(r,i.records.head!=null?i.records.head.id:null),i.records.branchConfig.set(r,{name:r,order:t}),ne(r),k.debug("in createBranch")},"branch"),_e=$(e=>{let r=e.branch,t=e.id;const o=e.type,s=e.tags,d=D();r=L.sanitizeText(r,d),t&&(t=L.sanitizeText(t,d));const n=i.records.branches.get(i.records.currBranch),a=i.records.branches.get(r),l=n?i.records.commits.get(n):void 0,h=a?i.records.commits.get(a):void 0;if(l&&h&&l.branch===r)throw new Error(`Cannot merge branch '${r}' into itself.`);if(i.records.currBranch===r){const c=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},c}if(l===void 0||!l){const c=new Error(`Incorrect usage of "merge". Current branch (${i.records.currBranch})has no commits`);throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["commit"]},c}if(!i.records.branches.has(r)){const c=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:[`branch ${r}`]},c}if(h===void 0||!h){const c=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:['"commit"']},c}if(l===h){const c=new Error('Incorrect usage of "merge". Both branches have same head');throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},c}if(t&&i.records.commits.has(t)){const c=new Error('Incorrect usage of "merge". Commit with id:'+t+" already exists, use different custom id");throw c.hash={text:`merge ${r} ${t} ${o} ${s==null?void 0:s.join(" ")}`,token:`merge ${r} ${t} ${o} ${s==null?void 0:s.join(" ")}`,expected:[`merge ${r} ${t}_UNIQUE ${o} ${s==null?void 0:s.join(" ")}`]},c}const g=a||"",f={id:t||`${i.records.seq}-${K()}`,message:`merged branch ${r} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,g],branch:i.records.currBranch,type:p.MERGE,customType:o,customId:!!t,tags:s??[]};i.records.head=f,i.records.commits.set(f.id,f),i.records.branches.set(i.records.currBranch,f.id),k.debug(i.records.branches),k.debug("in mergeBranch")},"merge"),Ge=$(function(e){let r=e.id,t=e.targetId,o=e.tags,s=e.parent;k.debug("Entering cherryPick:",r,t,o);const d=D();if(r=L.sanitizeText(r,d),t=L.sanitizeText(t,d),o=o==null?void 0:o.map(l=>L.sanitizeText(l,d)),s=L.sanitizeText(s,d),!r||!i.records.commits.has(r)){const l=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw l.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},l}const n=i.records.commits.get(r);if(n===void 0||!n)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(s&&!(Array.isArray(n.parents)&&n.parents.includes(s)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");const a=n.branch;if(n.type===p.MERGE&&!s)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!t||!i.records.commits.has(t)){if(a===i.records.currBranch){const f=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw f.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},f}const l=i.records.branches.get(i.records.currBranch);if(l===void 0||!l){const f=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},f}const h=i.records.commits.get(l);if(h===void 0||!h){const f=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},f}const g={id:i.records.seq+"-"+K(),message:`cherry-picked ${n==null?void 0:n.message} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,n.id],branch:i.records.currBranch,type:p.CHERRY_PICK,tags:o?o.filter(Boolean):[`cherry-pick:${n.id}${n.type===p.MERGE?`|parent:${s}`:""}`]};i.records.head=g,i.records.commits.set(g.id,g),i.records.branches.set(i.records.currBranch,g.id),k.debug(i.records.branches),k.debug("in cherryPick")}},"cherryPick"),ne=$(function(e){if(e=L.sanitizeText(e,D()),i.records.branches.has(e)){i.records.currBranch=e;const r=i.records.branches.get(i.records.currBranch);r===void 0||!r?i.records.head=null:i.records.head=i.records.commits.get(r)??null}else{const r=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw r.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},r}},"checkout");function X(e,r,t){const o=e.indexOf(r);o===-1?e.push(t):e.splice(o,1,t)}$(X,"upsert");function Z(e){const r=e.reduce((s,d)=>s.seq>d.seq?s:d,e[0]);let t="";e.forEach(function(s){s===r?t+=" *":t+=" |"});const o=[t,r.id,r.seq];for(const s in i.records.branches)i.records.branches.get(s)===r.id&&o.push(s);if(k.debug(o.join(" ")),r.parents&&r.parents.length==2&&r.parents[0]&&r.parents[1]){const s=i.records.commits.get(r.parents[0]);X(e,r,s),r.parents[1]&&e.push(i.records.commits.get(r.parents[1]))}else{if(r.parents.length==0)return;if(r.parents[0]){const s=i.records.commits.get(r.parents[0]);X(e,r,s)}}e=ae(e,s=>s.id),Z(e)}$(Z,"prettyPrintCommitHistory");var He=$(function(){k.debug(i.records.commits);const e=se()[0];Z([e])},"prettyPrint"),Ae=$(function(){i.reset(),ke()},"clear"),Se=$(function(){return[...i.records.branchConfig.values()].map((r,t)=>r.order!==null&&r.order!==void 0?r:{...r,order:parseFloat(`0.${t}`)}).sort((r,t)=>(r.order??0)-(t.order??0)).map(({name:r})=>({name:r}))},"getBranchesAsObjArray"),De=$(function(){return i.records.branches},"getBranches"),Pe=$(function(){return i.records.commits},"getCommits"),se=$(function(){const e=[...i.records.commits.values()];return e.forEach(function(r){k.debug(r.id)}),e.sort((r,t)=>r.seq-t.seq),e},"getCommitsArray"),We=$(function(){return i.records.currBranch},"getCurrentBranch"),qe=$(function(){return i.records.direction},"getDirection"),Ne=$(function(){return i.records.head},"getHead"),oe={commitType:p,getConfig:D,setDirection:Le,setOptions:Me,getOptions:Re,commit:Ie,branch:Oe,merge:_e,cherryPick:Ge,checkout:ne,prettyPrint:He,clear:Ae,getBranchesAsObjArray:Se,getBranches:De,getCommits:Pe,getCommitsArray:se,getCurrentBranch:We,getDirection:qe,getHead:Ne,setAccTitle:me,getAccTitle:xe,getAccDescription:ye,setAccDescription:ue,setDiagramTitle:ge,getDiagramTitle:fe},Fe=$((e,r)=>{he(e,r),e.dir&&r.setDirection(e.dir);for(const t of e.statements)ze(t,r)},"populate"),ze=$((e,r)=>{const o={Commit:$(s=>r.commit(Ye(s)),"Commit"),Branch:$(s=>r.branch(je(s)),"Branch"),Merge:$(s=>r.merge(Ue(s)),"Merge"),Checkout:$(s=>r.checkout(Ke(s)),"Checkout"),CherryPicking:$(s=>r.cherryPick(Ve(s)),"CherryPicking")}[e.$type];o?o(e):k.error(`Unknown statement type: ${e.$type}`)},"parseStatement"),Ye=$(e=>({id:e.id,msg:e.message??"",type:e.type!==void 0?p[e.type]:p.NORMAL,tags:e.tags??void 0}),"parseCommit"),je=$(e=>({name:e.name,order:e.order??0}),"parseBranch"),Ue=$(e=>({branch:e.branch,id:e.id??"",type:e.type!==void 0?p[e.type]:void 0,tags:e.tags??void 0}),"parseMerge"),Ke=$(e=>e.branch,"parseCheckout"),Ve=$(e=>{var t;return{id:e.id,targetId:"",tags:((t=e.tags)==null?void 0:t.length)===0?void 0:e.tags,parent:e.parent}},"parseCherryPicking"),Xe={parse:$(async e=>{const r=await Be("gitGraph",e);k.debug(r),Fe(r,oe)},"parse")},G=10,H=40,M=4,I=2,A=8,V=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),J=12,ee=new Set(["redux-color","redux-dark-color"]),Je=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),S=$((e,r,t=!1)=>t&&e>0?(e-1)%(r-1)+1:e%r,"calcColorIndex"),B=new Map,T=new Map,j=30,N=new Map,U=[],O=0,y="LR",Qe=$(()=>{B.clear(),T.clear(),N.clear(),O=0,U=[],y="LR"},"clear"),ce=$(e=>{const r=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof e=="string"?e.split(/\\n|\n|<br\s*\/?>/gi):e).forEach(o=>{const s=document.createElementNS("http://www.w3.org/2000/svg","tspan");s.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),s.setAttribute("dy","1em"),s.setAttribute("x","0"),s.setAttribute("class","row"),s.textContent=o.trim(),r.appendChild(s)}),r},"drawText"),ie=$(e=>{let r,t,o;return y==="BT"?(t=$((s,d)=>s<=d,"comparisonFunc"),o=1/0):(t=$((s,d)=>s>=d,"comparisonFunc"),o=0),e.forEach(s=>{var n,a;const d=y==="TB"||y=="BT"?(n=T.get(s))==null?void 0:n.y:(a=T.get(s))==null?void 0:a.x;d!==void 0&&t(d,o)&&(r=s,o=d)}),r},"findClosestParent"),Ze=$(e=>{let r="",t=1/0;return e.forEach(o=>{const s=T.get(o).y;s<=t&&(r=o,t=s)}),r||void 0},"findClosestParentBT"),er=$((e,r,t)=>{let o=t,s=t;const d=[];e.forEach(n=>{const a=r.get(n);if(!a)throw new Error(`Commit not found for key ${n}`);a.parents.length?(o=tr(a),s=Math.max(o,s)):d.push(a),ar(a,o)}),o=s,d.forEach(n=>{nr(n,o,t)}),e.forEach(n=>{const a=r.get(n);if(a!=null&&a.parents.length){const l=Ze(a.parents);o=T.get(l).y-H,o<=s&&(s=o);const h=B.get(a.branch).pos,g=o-G;T.set(a.id,{x:h,y:g})}})},"setParallelBTPos"),rr=$(e=>{var o;const r=ie(e.parents.filter(s=>s!==null));if(!r)throw new Error(`Closest parent not found for commit ${e.id}`);const t=(o=T.get(r))==null?void 0:o.y;if(t===void 0)throw new Error(`Closest parent position not found for commit ${e.id}`);return t},"findClosestParentPos"),tr=$(e=>rr(e)+H,"calculateCommitPosition"),ar=$((e,r)=>{const t=B.get(e.branch);if(!t)throw new Error(`Branch not found for commit ${e.id}`);const o=t.pos,s=r+G;return T.set(e.id,{x:o,y:s}),{x:o,y:s}},"setCommitPosition"),nr=$((e,r,t)=>{const o=B.get(e.branch);if(!o)throw new Error(`Branch not found for commit ${e.id}`);const s=r+t,d=o.pos;T.set(e.id,{x:d,y:s})},"setRootPosition"),sr=$((e,r,t,o,s,d)=>{const{theme:n}=z(),a=V.has(n??""),l=ee.has(n??""),h=Je.has(n??"");if(d===p.HIGHLIGHT)e.append("rect").attr("x",t.x-10+(a?3:0)).attr("y",t.y-10+(a?3:0)).attr("width",a?14:20).attr("height",a?14:20).attr("class",`commit ${r.id} commit-highlight${S(s,A,l)} ${o}-outer`),e.append("rect").attr("x",t.x-6+(a?2:0)).attr("y",t.y-6+(a?2:0)).attr("width",a?8:12).attr("height",a?8:12).attr("class",`commit ${r.id} commit${S(s,A,l)} ${o}-inner`);else if(d===p.CHERRY_PICK)e.append("circle").attr("cx",t.x).attr("cy",t.y).attr("r",a?7:10).attr("class",`commit ${r.id} ${o}`),e.append("circle").attr("cx",t.x-3).attr("cy",t.y+2).attr("r",a?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),e.append("circle").attr("cx",t.x+3).attr("cy",t.y+2).attr("r",a?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),e.append("line").attr("x1",t.x+3).attr("y1",t.y+1).attr("x2",t.x).attr("y2",t.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),e.append("line").attr("x1",t.x-3).attr("y1",t.y+1).attr("x2",t.x).attr("y2",t.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`);else{const g=e.append("circle");if(g.attr("cx",t.x),g.attr("cy",t.y),g.attr("r",a?7:10),g.attr("class",`commit ${r.id} commit${S(s,A,l)}`),d===p.MERGE){const f=e.append("circle");f.attr("cx",t.x),f.attr("cy",t.y),f.attr("r",a?5:6),f.attr("class",`commit ${o} ${r.id} commit${S(s,A,l)}`)}if(d===p.REVERSE){const f=e.append("path"),c=a?4:5;f.attr("d",`M ${t.x-c},${t.y-c}L${t.x+c},${t.y+c}M${t.x-c},${t.y+c}L${t.x+c},${t.y-c}`).attr("class",`commit ${o} ${r.id} commit${S(s,A,l)}`)}}},"drawCommitBullet"),or=$((e,r,t,o,s)=>{var d;if(r.type!==p.CHERRY_PICK&&(r.customId&&r.type===p.MERGE||r.type!==p.MERGE)&&s.showCommitLabel){const n=e.append("g"),a=n.insert("rect").attr("class","commit-label-bkg"),l=n.append("text").attr("x",o).attr("y",t.y+25).attr("class","commit-label").text(r.id),h=(d=l.node())==null?void 0:d.getBBox();if(h&&(a.attr("x",t.posWithOffset-h.width/2-I).attr("y",t.y+13.5).attr("width",h.width+2*I).attr("height",h.height+2*I),y==="TB"||y==="BT"?(a.attr("x",t.x-(h.width+4*M+5)).attr("y",t.y-12),l.attr("x",t.x-(h.width+4*M)).attr("y",t.y+h.height-12)):l.attr("x",t.posWithOffset-h.width/2),s.rotateCommitLabel))if(y==="TB"||y==="BT")l.attr("transform","rotate(-45, "+t.x+", "+t.y+")"),a.attr("transform","rotate(-45, "+t.x+", "+t.y+")");else{const g=-7.5-(h.width+10)/25*9.5,f=10+h.width/25*8.5;n.attr("transform","translate("+g+", "+f+") rotate(-45, "+o+", "+t.y+")")}}},"drawCommitLabel"),cr=$((e,r,t,o)=>{var s;if(r.tags.length>0){let d=0,n=0,a=0;const l=[];for(const h of r.tags.reverse()){const g=e.insert("polygon"),f=e.append("circle"),c=e.append("text").attr("y",t.y-16-d).attr("class","tag-label").text(h),x=(s=c.node())==null?void 0:s.getBBox();if(!x)throw new Error("Tag bbox not found");n=Math.max(n,x.width),a=Math.max(a,x.height),c.attr("x",t.posWithOffset-x.width/2),l.push({tag:c,hole:f,rect:g,yOffset:d}),d+=20}for(const{tag:h,hole:g,rect:f,yOffset:c}of l){const x=a/2,u=t.y-19.2-c;if(f.attr("class","tag-label-bkg").attr("points",`
|
|
2
2
|
${o-n/2-M/2},${u+I}
|
|
3
3
|
${o-n/2-M/2},${u-I}
|
|
4
4
|
${t.posWithOffset-n/2-M},${u-x-I}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{bO as T,bP as C,bQ as z,bR as R,bS as S,bT as k,bU as V,bV as L,bW as K,bX as j,bY as ee,bZ as te,b_ as re,b$ as se,c0 as ne,c1 as ie,bp as ae,c2 as oe,c3 as ue,c4 as he,c5 as y,c6 as $,c7 as v}from"./vendor-mermaid-
|
|
1
|
+
import{bO as T,bP as C,bQ as z,bR as R,bS as S,bT as k,bU as V,bV as L,bW as K,bX as j,bY as ee,bZ as te,b_ as re,b$ as se,c0 as ne,c1 as ie,bp as ae,c2 as oe,c3 as ue,c4 as he,c5 as y,c6 as $,c7 as v}from"./vendor-mermaid-C1Gk9PtT.js";import{k as c,g as Y,s as ce,e as de,f as fe,h as ge,j as le,d as be,l as _e,b as pe,m,n as g,r as ye}from"./_baseUniq-Rkm-pzcz.js";function me(t,e){return t&&T(e,c(e),t)}function je(t,e){return t&&T(e,C(e),t)}function Te(t,e){return T(t,Y(t),e)}var Oe=Object.getOwnPropertySymbols,W=Oe?function(t){for(var e=[];t;)de(e,Y(t)),t=z(t);return e}:ce;function Ae(t,e){return T(t,W(t),e)}function Ee(t){return fe(t,C,W)}var Ce=Object.prototype,Le=Ce.hasOwnProperty;function we(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&Le.call(t,"index")&&(r.index=t.index,r.input=t.input),r}function Ne(t,e){var r=e?R(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var Pe=/\w*$/;function Fe(t){var e=new t.constructor(t.source,Pe.exec(t));return e.lastIndex=t.lastIndex,e}var I=S?S.prototype:void 0,D=I?I.valueOf:void 0;function Se(t){return D?Object(D.call(t)):{}}var $e="[object Boolean]",ve="[object Date]",Ie="[object Map]",De="[object Number]",Me="[object RegExp]",Ue="[object Set]",Ge="[object String]",xe="[object Symbol]",Be="[object ArrayBuffer]",Re="[object DataView]",Ve="[object Float32Array]",Ke="[object Float64Array]",Ye="[object Int8Array]",We="[object Int16Array]",qe="[object Int32Array]",He="[object Uint8Array]",Qe="[object Uint8ClampedArray]",Xe="[object Uint16Array]",Ze="[object Uint32Array]";function Je(t,e,r){var s=t.constructor;switch(e){case Be:return R(t);case $e:case ve:return new s(+t);case Re:return Ne(t,r);case Ve:case Ke:case Ye:case We:case qe:case He:case Qe:case Xe:case Ze:return k(t,r);case Ie:return new s;case De:case Ge:return new s(t);case Me:return Fe(t);case Ue:return new s;case xe:return Se(t)}}var ze="[object Map]";function ke(t){return V(t)&&L(t)==ze}var M=j&&j.isMap,et=M?K(M):ke,tt="[object Set]";function rt(t){return V(t)&&L(t)==tt}var U=j&&j.isSet,st=U?K(U):rt,nt=1,it=2,at=4,q="[object Arguments]",ot="[object Array]",ut="[object Boolean]",ht="[object Date]",ct="[object Error]",H="[object Function]",dt="[object GeneratorFunction]",ft="[object Map]",gt="[object Number]",Q="[object Object]",lt="[object RegExp]",bt="[object Set]",_t="[object String]",pt="[object Symbol]",yt="[object WeakMap]",mt="[object ArrayBuffer]",jt="[object DataView]",Tt="[object Float32Array]",Ot="[object Float64Array]",At="[object Int8Array]",Et="[object Int16Array]",Ct="[object Int32Array]",Lt="[object Uint8Array]",wt="[object Uint8ClampedArray]",Nt="[object Uint16Array]",Pt="[object Uint32Array]",o={};o[q]=o[ot]=o[mt]=o[jt]=o[ut]=o[ht]=o[Tt]=o[Ot]=o[At]=o[Et]=o[Ct]=o[ft]=o[gt]=o[Q]=o[lt]=o[bt]=o[_t]=o[pt]=o[Lt]=o[wt]=o[Nt]=o[Pt]=!0;o[ct]=o[H]=o[yt]=!1;function O(t,e,r,s,n,a){var i,u=e&nt,h=e&it,Z=e&at;if(i!==void 0)return i;if(!ee(t))return t;var w=ae(t);if(w){if(i=we(t),!u)return te(t,i)}else{var b=L(t),N=b==H||b==dt;if(re(t))return se(t,u);if(b==Q||b==q||N&&!n){if(i=h||N?{}:ne(t),!u)return h?Ae(t,je(i,t)):Te(t,me(i,t))}else{if(!o[b])return n?t:{};i=Je(t,b,u)}}a||(a=new ie);var P=a.get(t);if(P)return P;a.set(t,i),st(t)?t.forEach(function(d){i.add(O(d,e,r,d,t,a))}):et(t)&&t.forEach(function(d,f){i.set(f,O(d,e,r,f,t,a))});var J=Z?h?Ee:le:h?C:c,F=w?void 0:J(t);return ge(F||t,function(d,f){F&&(f=d,d=t[f]),oe(i,f,O(d,e,r,f,t,a))}),i}function Ft(t,e){return be(e,function(r){return t[r]})}function A(t){return t==null?[]:Ft(t,c(t))}function _(t){return t===void 0}var St=ue(function(t){return _e(pe(t,1,he,!0))}),$t="\0",l="\0",G="";class X{constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=y(void 0),this._defaultEdgeLabelFn=y(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[l]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return $(e)||(e=y(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return c(this._nodes)}sources(){var e=this;return m(this.nodes(),function(r){return v(e._in[r])})}sinks(){var e=this;return m(this.nodes(),function(r){return v(e._out[r])})}setNodes(e,r){var s=arguments,n=this;return g(e,function(a){s.length>1?n.setNode(a,r):n.setNode(a)}),this}setNode(e,r){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=l,this._children[e]={},this._children[l][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var r=s=>this.removeEdge(this._edgeObjs[s]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],g(this.children(e),s=>{this.setParent(s)}),delete this._children[e]),g(c(this._in[e]),r),delete this._in[e],delete this._preds[e],g(c(this._out[e]),r),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(_(r))r=l;else{r+="";for(var s=r;!_(s);s=this.parent(s))if(s===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==l)return r}}children(e){if(_(e)&&(e=l),this._isCompound){var r=this._children[e];if(r)return c(r)}else{if(e===l)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return c(r)}successors(e){var r=this._sucs[e];if(r)return c(r)}neighbors(e){var r=this.predecessors(e);if(r)return St(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var s=this;g(this._nodes,function(i,u){e(u)&&r.setNode(u,i)}),g(this._edgeObjs,function(i){r.hasNode(i.v)&&r.hasNode(i.w)&&r.setEdge(i,s.edge(i))});var n={};function a(i){var u=s.parent(i);return u===void 0||r.hasNode(u)?(n[i]=u,u):u in n?n[u]:a(u)}return this._isCompound&&g(r.nodes(),function(i){r.setParent(i,a(i))}),r}setDefaultEdgeLabel(e){return $(e)||(e=y(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return A(this._edgeObjs)}setPath(e,r){var s=this,n=arguments;return ye(e,function(a,i){return n.length>1?s.setEdge(a,i,r):s.setEdge(a,i),i}),this}setEdge(){var e,r,s,n,a=!1,i=arguments[0];typeof i=="object"&&i!==null&&"v"in i?(e=i.v,r=i.w,s=i.name,arguments.length===2&&(n=arguments[1],a=!0)):(e=i,r=arguments[1],s=arguments[3],arguments.length>2&&(n=arguments[2],a=!0)),e=""+e,r=""+r,_(s)||(s=""+s);var u=p(this._isDirected,e,r,s);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,u))return a&&(this._edgeLabels[u]=n),this;if(!_(s)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[u]=a?n:this._defaultEdgeLabelFn(e,r,s);var h=vt(this._isDirected,e,r,s);return e=h.v,r=h.w,Object.freeze(h),this._edgeObjs[u]=h,x(this._preds[r],e),x(this._sucs[e],r),this._in[r][u]=h,this._out[e][u]=h,this._edgeCount++,this}edge(e,r,s){var n=arguments.length===1?E(this._isDirected,arguments[0]):p(this._isDirected,e,r,s);return this._edgeLabels[n]}hasEdge(e,r,s){var n=arguments.length===1?E(this._isDirected,arguments[0]):p(this._isDirected,e,r,s);return Object.prototype.hasOwnProperty.call(this._edgeLabels,n)}removeEdge(e,r,s){var n=arguments.length===1?E(this._isDirected,arguments[0]):p(this._isDirected,e,r,s),a=this._edgeObjs[n];return a&&(e=a.v,r=a.w,delete this._edgeLabels[n],delete this._edgeObjs[n],B(this._preds[r],e),B(this._sucs[e],r),delete this._in[r][n],delete this._out[e][n],this._edgeCount--),this}inEdges(e,r){var s=this._in[e];if(s){var n=A(s);return r?m(n,function(a){return a.v===r}):n}}outEdges(e,r){var s=this._out[e];if(s){var n=A(s);return r?m(n,function(a){return a.w===r}):n}}nodeEdges(e,r){var s=this.inEdges(e,r);if(s)return s.concat(this.outEdges(e,r))}}X.prototype._nodeCount=0;X.prototype._edgeCount=0;function x(t,e){t[e]?t[e]++:t[e]=1}function B(t,e){--t[e]||delete t[e]}function p(t,e,r,s){var n=""+e,a=""+r;if(!t&&n>a){var i=n;n=a,a=i}return n+G+a+G+(_(s)?$t:s)}function vt(t,e,r,s){var n=""+e,a=""+r;if(!t&&n>a){var i=n;n=a,a=i}var u={v:n,w:a};return s&&(u.name=s),u}function E(t,e){return p(t,e.v,e.w,e.name)}export{X as G,O as b,_ as i,A as v};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./vendor-markdown-DZuK0SxV.js";import{u as I,a}from"./vendor-i18n-BNURlJ23.js";import{C as z,A as D,H as R,L as w,S as y,I as b,D as X,j as L,E,J as M,K as A,t as C}from"./vendor-antd-C8lKwvI6.js";const{Text:x}=L,{useToken:$}=C,P=({visible:c,files:l,searchText:d,loading:h,error:g,onSelect:f,onCancel:m,onChangeWorkspace:j})=>{const{token:s}=$(),{t:i}=I(),[n,u]=a.useState(0),k=a.useRef(null),S=a.useRef(null),o=a.useMemo(()=>{const t=d.trim().toLowerCase();return t?l.filter(r=>r.name.toLowerCase().startsWith(t)):l},[l,d]);return a.useEffect(()=>{u(0)},[d,l]),a.useEffect(()=>{if(!c)return;const t=r=>{c&&(r.key==="ArrowDown"||r.key==="n"&&r.ctrlKey?(r.preventDefault(),u(p=>o.length===0?0:(p+1)%o.length)):r.key==="ArrowUp"||r.key==="p"&&r.ctrlKey?(r.preventDefault(),u(p=>o.length===0?0:(p-1+o.length)%o.length)):r.key==="Enter"||r.key==="Tab"?o[n]&&(r.preventDefault(),f(o[n])):r.key==="Escape"&&(r.preventDefault(),m()))};return window.addEventListener("keydown",t),()=>{window.removeEventListener("keydown",t)}},[c,o,n,f,m]),a.useEffect(()=>{if(!c)return;const t=S.current;t&&t.scrollIntoView({block:"nearest"})},[n,c]),c?e.jsx("div",{style:{position:"absolute",bottom:"100%",left:0,right:0,zIndex:1e3,marginBottom:s.marginXS},children:e.jsx(z,{size:"small",style:{borderRadius:s.borderRadius,border:`1px solid ${s.colorBorderSecondary}`,boxShadow:s.boxShadowSecondary},styles:{body:{padding:s.paddingXS,maxHeight:240,overflowY:"auto"}},title:e.jsxs(y,{align:"center",size:s.marginXS,children:[e.jsx(x,{strong:!0,children:i("chat.fileReference.title")}),h&&e.jsx(A,{size:"small"})]}),extra:e.jsxs(y,{size:s.marginXS,children:[j&&e.jsx(E,{type:"text",size:"small",icon:e.jsx(M,{}),onClick:j,children:i("chat.fileReference.setWorkspace")}),e.jsx(E,{type:"text",size:"small",onClick:m,children:i("common.close")})]}),children:g?e.jsx(D,{type:"error",message:g,showIcon:!0}):o.length===0&&!h?e.jsx(R,{image:R.PRESENTED_IMAGE_SIMPLE,description:i(d?"chat.fileReference.noMatches":"chat.fileReference.emptyDirectory")}):e.jsx("div",{ref:k,children:e.jsx(w,{dataSource:o,renderItem:(t,r)=>e.jsx(w.Item,{onMouseEnter:()=>u(r),onClick:()=>f(t),ref:r===n?S:void 0,style:{cursor:"pointer",backgroundColor:r===n?s.colorPrimaryBg:"transparent",borderRadius:s.borderRadiusSM,padding:`${s.paddingXXS}px ${s.paddingXS}px`},children:e.jsxs(y,{size:s.marginXS,align:"center",children:[t.is_directory?e.jsx(b,{}):e.jsx(X,{}),e.jsxs("div",{children:[e.jsx(x,{children:t.name}),e.jsx("div",{children:e.jsx(x,{type:"secondary",style:{fontSize:s.fontSizeSM},children:t.is_directory?i("common.directory"):i("common.file")})})]})]})},t.path)})})})}):null};export{P as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as n}from"./vendor-markdown-DZuK0SxV.js";import{u as d}from"./vendor-i18n-BNURlJ23.js";import{S as i,D as c,j as p,n as u,l as x,E as m,G as h,t as y}from"./vendor-antd-C8lKwvI6.js";const{Text:g}=p,{useToken:S}=y,b=({files:o,onRemove:a,onClear:r})=>{const{token:e}=S(),{t:s}=d();return o.length===0?null:n.jsx("div",{style:{marginBottom:e.marginSM,padding:`${e.paddingXXS}px ${e.paddingXS}px`,borderRadius:999,background:e.colorFillSecondary,border:`1px solid ${e.colorBorderSecondary}`},children:n.jsxs(i,{align:"center",size:e.marginXS,style:{width:"100%",justifyContent:"space-between"},children:[n.jsxs(i,{align:"center",wrap:!0,size:e.marginXS,children:[n.jsx(c,{style:{color:e.colorTextSecondary}}),n.jsx(g,{type:"secondary",style:{fontSize:e.fontSizeSM},children:s("chat.filePreview.fileCount",{count:o.length})}),o.map(t=>n.jsx(u,{title:`${t.type||"unknown"} • ${(t.size/1024).toFixed(1)} KB`,children:n.jsx(x,{closable:!0,onClose:l=>{l.preventDefault(),a(t.id)},style:{borderRadius:999,marginInlineEnd:0,maxWidth:220,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t.name})},t.id))]}),r?n.jsx(m,{type:"text",size:"small",icon:n.jsx(h,{}),onClick:r,style:{borderRadius:999},children:s("common.clear")}):null]})})};export{b as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as a}from"./vendor-markdown-
|
|
1
|
+
import{j as a}from"./vendor-markdown-DZuK0SxV.js";import{q as $,t as v,v as B}from"./App-bVqmFSlk.js";import{a as l,u as E}from"./vendor-i18n-BNURlJ23.js";import{K as T,t as M,l as L,af as D,a7 as K,I as F}from"./vendor-antd-C8lKwvI6.js";import"./vendor-mermaid-C1Gk9PtT.js";import"./main-BEVjNwcv.js";const z=({visible:p,searchText:k,onSelect:I,onCancel:f,onAutoComplete:g})=>{const[o,i]=l.useState([]),[c,R]=l.useState([]),[d,u]=l.useState(0),[N,j]=l.useState(!1),S=l.useRef(null),h=l.useRef(null);l.useEffect(()=>{if(!p)return;const s=$.getInstance();(async()=>{j(!0);try{const r=await s.listCommands();v("[CommandSelector]","[CommandSelector] Fetched commands:",r),i(r),u(0)}catch(r){console.error("[CommandSelector] Failed to fetch commands:",r),i([])}finally{j(!1)}})()},[p]),l.useEffect(()=>{const s=o.filter(e=>{var x,y,b,C,w;const r=k.toLowerCase(),n=(e.displayName??"").toLowerCase();return e.name.toLowerCase().includes(r)||n.includes(r)||e.description.toLowerCase().includes(r)||e.type==="mcp"&&[(x=e.metadata)==null?void 0:x.serverId,(y=e.metadata)==null?void 0:y.serverName,(b=e.metadata)==null?void 0:b.originalName].filter(m=>typeof m=="string").some(m=>m.toLowerCase().includes(r))||(((C=e.category)==null?void 0:C.toLowerCase().includes(r))??!1)||(((w=e.tags)==null?void 0:w.some(m=>m.toLowerCase().includes(r)))??!1)});R(s),u(0)},[o,k]),l.useEffect(()=>{if(!h.current||!S.current)return;const s=S.current,e=h.current,r=s.getBoundingClientRect(),n=e.getBoundingClientRect();n.top<r.top?e.scrollIntoView({block:"start",behavior:"smooth"}):n.bottom>r.bottom&&e.scrollIntoView({block:"end",behavior:"smooth"})},[d,c]);const t=l.useCallback(async s=>{try{I({name:s.name,type:s.type,id:s.id})}catch(e){console.error(`[CommandSelector] Failed to select command '${s.name}':`,e)}},[I]);return l.useEffect(()=>{const s=e=>{if(p)switch(e.key){case"ArrowDown":case"n":if(e.key==="n"&&!e.ctrlKey)break;e.preventDefault(),e.stopPropagation(),u(r=>r<c.length-1?r+1:0);break;case"ArrowUp":case"p":if(e.key==="p"&&!e.ctrlKey)break;e.preventDefault(),e.stopPropagation(),u(r=>r>0?r-1:c.length-1);break;case"Enter":e.preventDefault(),e.stopPropagation(),c[d]&&t(c[d]);break;case" ":case"Tab":e.preventDefault(),e.stopPropagation(),c[d]&&g&&g(c[d].name);break;case"Escape":e.preventDefault(),e.stopPropagation(),f();break}};return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[p,c,d,f,g,t]),{containerRef:S,selectedItemRef:h,filteredCommands:c,selectedIndex:d,setSelectedIndex:u,isLoading:N,handleCommandSelect:t}},{useToken:X}=M,P={workflow:{color:"blue",icon:a.jsx(F,{}),labelKey:"chat.commandSelector.types.workflow"},skill:{color:"green",icon:a.jsx(K,{}),labelKey:"chat.commandSelector.types.skill"},mcp:{color:"purple",icon:a.jsx(D,{}),labelKey:"chat.commandSelector.types.mcp"}},Q=({visible:p,onSelect:k,onCancel:I,searchText:f,onAutoComplete:g})=>{const{token:o}=X(),{t:i}=E(),{containerRef:c,selectedItemRef:R,filteredCommands:d,selectedIndex:u,setSelectedIndex:N,isLoading:j,handleCommandSelect:S}=z({visible:p,searchText:f,onSelect:k,onCancel:I,onAutoComplete:g});if(!p)return null;if(j)return a.jsxs("div",{style:{position:"absolute",bottom:"100%",left:0,right:0,background:o.colorBgContainer,border:`1px solid ${o.colorBorderSecondary}`,borderRadius:o.borderRadiusSM,boxShadow:o.boxShadowSecondary,padding:`${o.paddingSM}px ${o.paddingMD}px`,zIndex:1e3,marginBottom:o.marginXS,textAlign:"center"},children:[a.jsx(T,{size:"small"})," ",i("chat.commandSelector.loading")]});if(d.length===0)return a.jsx("div",{style:{position:"absolute",bottom:"100%",left:0,right:0,background:o.colorBgContainer,border:`1px solid ${o.colorBorderSecondary}`,borderRadius:o.borderRadiusSM,boxShadow:o.boxShadowSecondary,padding:`${o.paddingSM}px ${o.paddingMD}px`,zIndex:1e3,marginBottom:o.marginXS,textAlign:"center",color:o.colorTextSecondary},children:f?i("chat.commandSelector.emptyWithSearch",{search:f}):i("chat.commandSelector.empty")});const h=(t,s)=>{var b,C,w;const e=P[t.type],r=s===u,n=t.type==="mcp"?B(t.name):null,x=t.type==="mcp"?((b=t.metadata)==null?void 0:b.originalName)||(n==null?void 0:n.toolName)||t.displayName||t.name:null,y=t.type==="mcp"&&(((C=t.metadata)==null?void 0:C.serverName)||((w=t.metadata)==null?void 0:w.serverId)||(n==null?void 0:n.serverId))||null;return a.jsxs("div",{ref:r?R:null,className:`command-selector-item ${r?"selected":""}`,onClick:()=>S(t),onMouseEnter:()=>N(s),children:[a.jsxs("div",{className:"command-selector-item-header",children:[a.jsxs("div",{className:"command-selector-item-name",style:{color:o.colorPrimary},children:["/",t.type==="mcp"&&x?x:t.name]}),a.jsxs("div",{style:{display:"flex",gap:o.marginXS},children:[t.type==="mcp"&&y&&a.jsx(L,{color:"processing",children:y}),a.jsxs(L,{color:e.color,children:[e.icon," ",i(e.labelKey)]})]})]}),a.jsx("div",{className:"command-selector-item-description",style:{color:o.colorTextSecondary},children:t.description}),t.type==="mcp"&&y&&a.jsxs("div",{className:"command-selector-item-category",style:{color:o.colorTextTertiary},children:[i("common.server")," ",y]}),t.category&&a.jsxs("div",{className:"command-selector-item-category",style:{color:o.colorTextTertiary},children:[i("common.category")," ",t.category]}),t.tags&&t.tags.length>0&&a.jsx("div",{className:"command-selector-item-tags",children:t.tags.slice(0,3).map(m=>a.jsx(L,{children:m},m))})]},t.id)};return a.jsxs("div",{ref:c,className:"command-selector-container",style:{background:o.colorBgContainer,border:`1px solid ${o.colorBorderSecondary}`,borderRadius:o.borderRadiusSM,boxShadow:o.boxShadowSecondary},children:[a.jsx("div",{style:{padding:`${o.paddingXXS}px ${o.paddingSM}px`,borderBottom:`1px solid ${o.colorBorderSecondary}`,background:o.colorFillQuaternary,fontSize:o.fontSizeSM,color:o.colorTextTertiary},children:i("chat.commandSelector.navigationHint")}),d.map((t,s)=>h(t,s))]})};export{Q as default};
|