Spaces:
Running
Running
Thang6822
feat: cancel in-flight forecast tasks immediately when switching symbol/interval and fix DXY sources config
4d10530 | <html lang="en" data-theme="dark"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Workflow Tree β AI Forecast</title> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | |
| <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
| <script src="https://cdn.jsdelivr.net/npm/mermaid@10.2.4/dist/mermaid.min.js"></script> | |
| <script>mermaid.initialize({startOnLoad:true,theme:'dark',securityLevel:'loose',flowchart:{useMaxWidth:true,htmlLabels:true,curve:'cardinal'}});</script> | |
| <style> | |
| :root{--bg:#0b0f19;--bg2:#0f1322;--card:rgba(22,30,49,0.7);--card2:rgba(30,40,60,0.5);--border:rgba(255,255,255,0.08);--border2:rgba(255,255,255,0.12);--pri:#6366f1;--pri2:#818cf8;--green:#10b981;--green2:#34d399;--amber:#f59e0b;--amber2:#fbbf24;--red:#ef4444;--pink:#d946ef;--cyan:#06b6d4;--text:#f3f4f6;--text2:#d1d5db;--muted:#9ca3af;--shadow:0 10px 30px rgba(0,0,0,0.3);--radius:20px;--search-bg:rgba(0,0,0,0.4);--input-bg:rgba(255,255,255,0.05)} | |
| [data-theme="light"]{--bg:#f8fafc;--bg2:#e2e8f0;--card:rgba(255,255,255,0.85);--card2:rgba(241,245,249,0.9);--border:rgba(0,0,0,0.08);--border2:rgba(0,0,0,0.12);--text:#1e293b;--text2:#334155;--muted:#64748b;--shadow:0 4px 20px rgba(0,0,0,0.08);--search-bg:rgba(255,255,255,0.6);--input-bg:rgba(0,0,0,0.03)} | |
| *{box-sizing:border-box;margin:0;padding:0} | |
| body{background:var(--bg);background-image:radial-gradient(at 0% 0%,rgba(99,102,241,0.15) 0px,transparent 50%),radial-gradient(at 100% 100%,rgba(16,185,129,0.1) 0px,transparent 50%);color:var(--text);min-height:100vh;font-family:'Outfit',sans-serif;transition:background 0.3s,color 0.3s} | |
| .topbar{position:sticky;top:0;z-index:100;background:var(--card);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);padding:0.6rem 1.5rem;display:flex;align-items:center;gap:0.8rem;flex-wrap:wrap} | |
| .topbar .logo{font-size:1.1rem;font-weight:800;background:linear-gradient(135deg,#a5b4fc,#6366f1,#34d399);-webkit-background-clip:text;-webkit-text-fill-color:transparent;white-space:nowrap} | |
| .topbar .search-wrap{flex:1;min-width:200px;position:relative} | |
| .topbar .search-wrap input{width:100%;padding:0.5rem 0.8rem 0.5rem 2.2rem;border-radius:10px;border:1px solid var(--border);background:var(--search-bg);color:var(--text);font-family:'Outfit',sans-serif;font-size:0.85rem;transition:all 0.2s} | |
| .topbar .search-wrap input:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 3px rgba(99,102,241,0.15)} | |
| .topbar .search-wrap i{position:absolute;left:0.7rem;top:50%;transform:translateY(-50%);color:var(--muted);font-size:0.8rem} | |
| .topbar .search-clear{position:absolute;right:0.5rem;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--muted);cursor:pointer;font-size:0.8rem;display:none;padding:0.2rem 0.4rem;border-radius:4px} | |
| .topbar .search-clear:hover{color:var(--text);background:rgba(255,255,255,0.1)} | |
| .topbar .search-clear.visible{display:block} | |
| .topbar .tb-btn{display:inline-flex;align-items:center;gap:0.35rem;padding:0.4rem 0.7rem;border-radius:8px;border:1px solid var(--border);background:rgba(255,255,255,0.03);color:var(--muted);cursor:pointer;font-family:'Outfit',sans-serif;font-size:0.78rem;white-space:nowrap;transition:all 0.15s} | |
| .topbar .tb-btn:hover{background:rgba(99,102,241,0.12);border-color:var(--pri);color:#fff} | |
| .topbar .tb-btn.active{background:rgba(99,102,241,0.2);border-color:var(--pri);color:var(--pri2)} | |
| .topbar .tb-sep{width:1px;height:20px;background:var(--border);margin:0 0.2rem} | |
| header{text-align:center;padding:1.5rem 1.5rem 0.8rem;max-width:1000px;margin:0 auto} | |
| h1{font-size:2rem;font-weight:800;background:linear-gradient(135deg,#a5b4fc 0%,#6366f1 50%,#34d399 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:0.3rem} | |
| .subtitle{color:var(--muted);font-size:0.9rem} | |
| .legend-row{display:flex;gap:1.5rem;flex-wrap:wrap;justify-content:center;margin-top:0.6rem;font-size:0.78rem;color:var(--muted)} | |
| .legend-row span{display:flex;align-items:center;gap:0.35rem} | |
| .leg-dot{width:10px;height:10px;border-radius:3px} | |
| .leg-tab{background:var(--pri)}.leg-dec{background:var(--pink)}.leg-err{background:var(--red)}.leg-ok{background:var(--green)}.leg-fold{background:var(--amber)}.leg-ai{background:var(--cyan)} | |
| .main-layout{display:grid;grid-template-columns:1fr;gap:1.2rem;padding:0.8rem 1.5rem 2rem;max-width:1600px;margin:0 auto} | |
| @media(min-width:1200px){.main-layout{grid-template-columns:1.4fr 1fr}} | |
| .panel{background:var(--card);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem;box-shadow:var(--shadow);display:flex;flex-direction:column;transition:border-color 0.2s} | |
| .panel:hover{border-color:var(--border2)} | |
| .panel.full{grid-column:1/-1} | |
| .panel-title{font-size:1.15rem;font-weight:700;margin-bottom:0.8rem;display:flex;align-items:center;gap:0.5rem;color:#fff;border-bottom:1px solid var(--border);padding-bottom:0.5rem} | |
| .panel-title i{color:var(--pri)} | |
| .panel-title .spacer{flex:1} | |
| .diagram-tabs{display:flex;gap:0.3rem;margin-bottom:0.5rem;flex-wrap:wrap} | |
| .diagram-tab{padding:0.25rem 0.6rem;border-radius:6px;border:1px solid var(--border);background:rgba(255,255,255,0.02);color:var(--muted);cursor:pointer;font-size:0.72rem;font-family:'Outfit',sans-serif;transition:all 0.15s} | |
| .diagram-tab:hover{background:rgba(99,102,241,0.1);border-color:var(--pri)} | |
| .diagram-tab.active{background:rgba(99,102,241,0.18);border-color:var(--pri);color:var(--pri2);font-weight:600} | |
| .diagram-wrap{background:rgba(10,15,26,0.5);border-radius:12px;padding:0.5rem;overflow:hidden;border:1px solid rgba(255,255,255,0.03);max-height:80vh;cursor:grab;position:relative;user-select:none;min-height:100px} | |
| [data-theme="light"] .diagram-wrap{background:rgba(255,255,255,0.5)} | |
| .diagram-wrap:active,.diagram-wrap.panning{cursor:grabbing} | |
| .diagram-inner{transform-origin:0 0;width:fit-content;min-width:100%;will-change:transform} | |
| .diagram-wrap svg{max-width:none;height:auto;display:block} | |
| .diagram-hint{position:absolute;bottom:4px;right:8px;color:rgba(255,255,255,0.1);font-size:0.6rem;pointer-events:none;z-index:0} | |
| .diagram-panel{display:none}.diagram-panel.active{display:block} | |
| .zoom-group{display:inline-flex;align-items:center;gap:1px;margin-left:auto} | |
| .zoom-group button{width:22px;height:20px;border-radius:3px;border:1px solid var(--border);background:rgba(255,255,255,0.03);color:var(--muted);cursor:pointer;font-size:0.65rem;display:inline-flex;align-items:center;justify-content:center;transition:all 0.15s;padding:0;line-height:1} | |
| .zoom-group button:hover{background:rgba(99,102,241,0.2);border-color:var(--pri);color:#fff} | |
| .zoom-group .zoom-pct{min-width:32px;text-align:center;font-weight:600;color:var(--muted);font-size:0.65rem} | |
| .kbd-hint{font-size:0.6rem;color:rgba(255,255,255,0.15);pointer-events:none} | |
| .info-card{background:rgba(255,255,255,0.02);border-left:3px solid var(--pri);padding:0.5rem 0.8rem;margin:0.35rem 0;border-radius:0 8px 8px 0;font-size:0.82rem;transition:border-color 0.2s} | |
| .info-card.filtered{display:none!important} | |
| .info-card.success{border-left-color:var(--green)}.info-card.warning{border-left-color:var(--amber)}.info-card.danger{border-left-color:var(--red)} | |
| .info-card.queue{border-left-color:var(--cyan);background:rgba(6,182,212,0.05)} | |
| .info-card.ai{border-left-color:#a855f7;background:rgba(168,85,247,0.05)} | |
| .info-card strong{color:#fff;display:block;margin-bottom:0.15rem} | |
| .info-card code{background:rgba(255,255,255,0.06);padding:0.1rem 0.4rem;border-radius:4px;font-size:0.78rem;color:#fbbf24} | |
| .info-card pre,.info-card .path-block{background:rgba(0,0,0,0.3);border-radius:6px;padding:0.35rem 0.6rem;margin:0.25rem 0;font-family:'JetBrains Mono','Consolas',monospace;font-size:0.72rem;color:#34d399;line-height:1.5;overflow-x:auto;white-space:pre} | |
| .info-card ul{padding-left:1.2rem;margin-top:0.15rem} | |
| .info-card ul li{margin-bottom:0.1rem} | |
| .info-card table{width:100%;font-size:0.77rem;border-collapse:collapse;margin-top:0.3rem} | |
| .info-card table td{padding:2px 6px;border-bottom:1px solid rgba(255,255,255,0.04)} | |
| .info-card p{margin:0.2rem 0} | |
| .tree-root{overflow-y:auto;max-height:78vh;padding-right:0.5rem} | |
| .tree-node{list-style:none;position:relative;padding-left:1.6rem;margin:0.35rem 0} | |
| .tree-node::before{content:"";position:absolute;left:0;top:14px;width:14px;height:1px;background:var(--border)} | |
| .tree-node::after{content:"";position:absolute;left:0;top:0;width:1px;height:100%;background:var(--border)} | |
| .tree-node:last-child::after{height:14px} | |
| .tree-node.filtered{display:none!important} | |
| .tree-toggle{cursor:pointer;display:flex;align-items:center;gap:0.5rem;padding:0.4rem 0.6rem;background:rgba(255,255,255,0.02);border:1px solid var(--border);border-radius:8px;font-weight:500;color:var(--text);transition:all 0.2s;user-select:none;font-size:0.85rem} | |
| .tree-toggle:hover{background:rgba(99,102,241,0.1);border-color:var(--pri);transform:translateX(2px)} | |
| .tree-toggle.active i.fa-chevron-right{transform:rotate(90deg)} | |
| .tree-toggle i.fa-chevron-right{font-size:0.7rem;transition:all 0.2s;color:var(--muted)} | |
| .tree-content{display:none;padding:0.35rem 0.3rem 0.3rem 1.5rem;color:var(--muted);font-size:0.82rem;line-height:1.55} | |
| .tree-content.show{display:block;animation:slideDown 0.3s ease-out} | |
| .tree-content ul{padding-left:1.2rem;margin-top:0.3rem;list-style:none} | |
| .tree-content ul li{margin-bottom:0.2rem;position:relative;padding-left:1.1rem} | |
| .tree-content ul li::before{content:"βΈ";position:absolute;left:0;color:var(--pri2);font-size:0.65rem;top:0.25rem} | |
| .badge{font-size:0.65rem;padding:0.1rem 0.4rem;border-radius:20px;font-weight:700;text-transform:uppercase;white-space:nowrap} | |
| .badge-tab{background:rgba(99,102,241,0.2);color:#818cf8;border:1px solid rgba(99,102,241,0.3)} | |
| .badge-seq{background:rgba(217,70,239,0.2);color:#e879f9;border:1px solid rgba(217,70,239,0.3)} | |
| .badge-folder{background:rgba(245,158,11,0.2);color:#fbbf24;border:1px solid rgba(245,158,11,0.3)} | |
| .badge-queue{background:rgba(6,182,212,0.2);color:#22d3ee;border:1px solid rgba(6,182,212,0.3)} | |
| .badge-ai{background:rgba(168,85,247,0.2);color:#c084fc;border:1px solid rgba(168,85,247,0.3)} | |
| .badge-entry{background:rgba(34,197,94,0.2);color:#4ade80;border:1px solid rgba(34,197,94,0.3)} | |
| .arch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0.7rem;margin-top:0.4rem} | |
| .arch-card{background:rgba(255,255,255,0.02);border:1px solid var(--border);border-radius:12px;overflow:hidden;border-left:3px solid var(--pri);transition:all 0.2s} | |
| .arch-card:hover{border-color:rgba(99,102,241,0.3);transform:translateY(-1px)} | |
| .arch-card.filtered{display:none!important} | |
| .arch-entry{border-left-color:#34d399!important}.arch-tab{border-left-color:#818cf8!important}.arch-queue{border-left-color:#06b6d4!important}.arch-folder{border-left-color:#f59e0b!important}.arch-media{border-left-color:#60a5fa!important}.arch-orphan{border-left-color:#ef4444!important;background:rgba(239,68,68,0.05)} | |
| .arch-card-header{display:flex;justify-content:space-between;align-items:center;padding:0.45rem 0.75rem;border-bottom:1px solid var(--border);font-weight:600;font-size:0.85rem} | |
| .arch-count{font-size:0.68rem;color:var(--muted);white-space:nowrap} | |
| .arch-card-body{padding:0.35rem 0.75rem;font-size:0.75rem;line-height:1.7} | |
| .arch-card-body code{font-size:0.7rem;color:#34d399} | |
| .arch-toggle{cursor:pointer;color:var(--pri2);font-size:0.7rem;padding:0.25rem 0.35rem;margin:0.25rem 0 0 0;user-select:none;display:flex;align-items:center;gap:0.3rem;transition:all 0.15s;border-radius:4px;background:rgba(255,255,255,0.02)} | |
| .arch-toggle:hover{color:#fff;background:rgba(99,102,241,0.1)} | |
| .arch-toggle i{font-size:0.45rem;transition:transform 0.2s;color:var(--muted)} | |
| .arch-toggle.open i{transform:rotate(180deg)} | |
| .arch-full-list{max-height:200px;overflow-y:auto;padding:0.25rem 0.5rem;background:rgba(0,0,0,0.2);border-radius:6px;border:1px solid var(--border);margin-top:0.15rem;display:block} | |
| .arch-full-list code{display:block;padding:0.06rem 0.15rem;font-size:0.68rem;cursor:pointer;transition:background 0.1s;border-radius:3px} | |
| .arch-full-list code:hover{background:rgba(99,102,241,0.15)} | |
| .arch-copy-btn{font-size:0.58rem;padding:0.1rem 0.4rem;margin-bottom:0.2rem;border-radius:4px;border:1px solid var(--border);background:rgba(255,255,255,0.04);color:var(--muted);cursor:pointer;transition:all 0.15s} | |
| .arch-copy-btn:hover{background:rgba(99,102,241,0.2);color:#fff;border-color:var(--pri)} | |
| .arch-copy-btn.copied{background:rgba(16,185,129,0.15);color:#34d399;border-color:var(--green)} | |
| .file-tree-container{max-height:60vh;overflow-y:auto;font-family:'JetBrains Mono','Consolas',monospace;font-size:0.76rem;background:rgba(0,0,0,0.3);border-radius:10px;padding:0.5rem 0.7rem} | |
| .file-tree-container ul{list-style:none;padding-left:1.2rem;margin:0} | |
| .file-tree-container>ul{padding-left:0.2rem} | |
| .tree-branch{margin:0.1rem 0}.tree-leaf{margin:0.05rem 0;padding-left:0.2rem;line-height:1.5} | |
| .tree-leaf.filtered,.tree-branch.filtered{display:none!important} | |
| .dir-toggle{cursor:pointer;display:inline-flex;align-items:center;gap:0.35rem;padding:0.15rem 0.4rem;border-radius:4px;transition:background 0.2s;user-select:none} | |
| .dir-toggle:hover{background:rgba(99,102,241,0.1)} | |
| .dir-toggle i.fa-chevron-right{font-size:0.55rem;transition:transform 0.2s;color:var(--muted);width:0.55rem;text-align:center} | |
| .dir-toggle.expanded i.fa-chevron-right{transform:rotate(90deg)} | |
| .dir-name{color:#60a5fa;font-weight:600}.tree-meta{color:rgba(255,255,255,0.25);font-size:0.68rem;font-style:italic} | |
| .tree-file{color:#818cf8}.tree-file.py{color:#818cf8}.tree-file.js{color:#facc15}.tree-file.ts{color:#60a5fa}.tree-file.json{color:#f59e0b}.tree-file.md{color:#34d399}.tree-file.css{color:#fb923c}.tree-file.yaml{color:#f59e0b}.tree-file.yml{color:#f59e0b}.tree-file.go{color:#06b6d4}.tree-file.rs{color:#fbbf24} | |
| .metrics-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:0.6rem;margin-top:0.4rem} | |
| .metric-card{background:rgba(255,255,255,0.02);border:1px solid var(--border);border-radius:10px;padding:0.6rem 0.8rem;text-align:center} | |
| .metric-card .metric-value{font-size:1.5rem;font-weight:800;color:var(--pri2)}.metric-card .metric-label{font-size:0.7rem;color:var(--muted);margin-top:0.2rem} | |
| .api-table{width:100%;border-collapse:collapse;font-size:0.78rem;margin-top:0.4rem} | |
| .api-table th{text-align:left;padding:0.4rem 0.6rem;border-bottom:1px solid var(--border);color:var(--muted);font-weight:600;font-size:0.72rem;text-transform:uppercase;cursor:pointer} | |
| .api-table td{padding:0.3rem 0.6rem;border-bottom:1px solid var(--border);color:var(--text2)} | |
| .api-method{font-weight:700;font-size:0.7rem;padding:0.1rem 0.4rem;border-radius:4px} | |
| .api-method.GET{background:rgba(16,185,129,0.15);color:#34d399}.api-method.POST{background:rgba(99,102,241,0.15);color:#818cf8} | |
| .api-method.PUT,.api-method.PATCH{background:rgba(245,158,11,0.15);color:#fbbf24}.api-method.DELETE{background:rgba(239,68,68,0.15);color:#f87171} | |
| .tech-tags{display:flex;flex-wrap:wrap;gap:0.35rem}.tech-tag{padding:0.15rem 0.5rem;border-radius:15px;font-size:0.7rem;font-weight:500;border:1px solid} | |
| .tech-tag.lang{background:rgba(99,102,241,0.1);border-color:rgba(99,102,241,0.3);color:#818cf8} | |
| .tech-tag.fw{background:rgba(16,185,129,0.1);border-color:rgba(16,185,129,0.3);color:#34d399} | |
| .tech-tag.db{background:rgba(6,182,212,0.1);border-color:rgba(6,182,212,0.3);color:#22d3ee} | |
| .tech-tag.ai{background:rgba(168,85,247,0.1);border-color:rgba(168,85,247,0.3);color:#c084fc} | |
| .dropdown{position:relative;display:inline-block} | |
| .dropdown-menu{display:none;position:absolute;right:0;top:100%;margin-top:4px;background:var(--card);backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:10px;min-width:150px;z-index:200;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,0.4)} | |
| .dropdown-menu.show{display:block} | |
| .dropdown-menu button{display:block;width:100%;padding:0.5rem 0.8rem;border:none;background:none;color:var(--text);font-family:'Outfit',sans-serif;font-size:0.8rem;text-align:left;cursor:pointer;transition:background 0.15s} | |
| .dropdown-menu button:hover{background:rgba(99,102,241,0.15)} | |
| .dropdown-menu button i{margin-right:0.5rem;color:var(--muted);width:16px;text-align:center} | |
| .toast{position:fixed;bottom:1.5rem;right:1.5rem;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:0.6rem 1rem;color:var(--text);font-size:0.82rem;z-index:400;opacity:0;transform:translateY(10px);transition:all 0.3s;box-shadow:0 10px 30px rgba(0,0,0,0.3)} | |
| .toast.show{opacity:1;transform:translateY(0)} | |
| @keyframes slideDown{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}} | |
| ::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.08);border-radius:3px} | |
| </style> | |
| </head> | |
| <body> | |
| <div class="topbar"> | |
| <span class="logo">π CodeGraph</span> | |
| <div class="search-wrap"> | |
| <i class="fa-solid fa-search"></i> | |
| <input type="text" id="globalSearch" placeholder="Search everything... (/) " oninput="onSearch(this.value)" onkeydown="onSearchKey(event)"> | |
| <button class="search-clear" id="searchClear" onclick="clearSearch()">β</button> | |
| </div> | |
| <button class="tb-btn" onclick="toggleTheme()" title="Toggle theme (t)"><i class="fa-solid fa-moon"></i><span class="hide-mobile">Theme</span></button> | |
| <span class="tb-sep"></span> | |
| <button class="tb-btn" onclick="expandAll()" title="Expand all (f)"><i class="fa-solid fa-arrows-to-dot"></i><span class="hide-mobile">Expand</span></button> | |
| <button class="tb-btn" onclick="collapseAll()" title="Collapse all (Shift+F)"><i class="fa-solid fa-arrows-to-line"></i></button> | |
| <span class="tb-sep"></span> | |
| <button class="tb-btn" onclick="zoomReset()" title="Reset zoom (r)"><i class="fa-solid fa-rotate"></i><span class="hide-mobile">Reset</span></button> | |
| <div class="dropdown"> | |
| <button class="tb-btn" onclick="toggleDropdown('exportMenu')"><i class="fa-solid fa-download"></i><span class="hide-mobile">Export</span> <i class="fa-solid fa-caret-down" style="font-size:0.5rem"></i></button> | |
| <div class="dropdown-menu" id="exportMenu"> | |
| <button onclick="exportJSON()"><i class="fa-solid fa-code"></i> Export JSON</button> | |
| <button onclick="exportMarkdown()"><i class="fa-solid fa-file-lines"></i> Export Markdown</button> | |
| <button onclick="exportPNG()"><i class="fa-solid fa-image"></i> Export Diagram PNG</button> | |
| </div> | |
| </div> | |
| </div> | |
| <header> | |
| <h1>π SΖ‘ Δα» Workflow β AI Forecast</h1> | |
| <p class="subtitle">Generated 2026-06-22 08:58:12 Β· 287 files Β· 5435 symbols Β· 1562 imports</p> | |
| <div class="legend-row"> | |
| <span><span class="leg-dot leg-tab"></span> Module / Tab</span> | |
| <span><span class="leg-dot leg-dec"></span> Δiα»u kiα»n</span> | |
| <span><span class="leg-dot leg-err"></span> Dα»«ng / Lα»i</span> | |
| <span><span class="leg-dot leg-ok"></span> ThΓ nh cΓ΄ng</span> | |
| <span><span class="leg-dot leg-fold"></span> Files</span> | |
| <span><span class="leg-dot leg-ai"></span> AI / Queue</span> | |
| </div> | |
| </header> | |
| <div class="main-layout"> | |
| <!-- LEFT: PRIMARY WORKFLOW DIAGRAM --> | |
| <div class="panel"> | |
| <div class="panel-title"> | |
| <i class="fa-solid fa-diagram-project"></i> SΖ‘ Δα» Luα»ng Workflow Tα»ng Thα» | |
| <div class="spacer"></div> | |
| <div class="zoom-group"> | |
| <button onclick="zoomOut()" title="Zoom Out">β</button> | |
| <span class="zoom-pct" id="zoomLevel">100%</span> | |
| <button onclick="zoomIn()" title="Zoom In">+</button> | |
| <button onclick="zoomReset()" title="Reset">βΊ</button> | |
| </div> | |
| </div> | |
| <div class="diagram-wrap" id="diagramWrap0"> | |
| <div class="diagram-inner" id="diagramInner0"> | |
| <div class="mermaid">graph TD | |
| classDef tab fill:#1e1b4b,stroke:#818cf8,stroke-width:2px,color:#e0e7ff | |
| classDef step fill:#111827,stroke:#374151,stroke-width:1px,color:#f3f4f6 | |
| classDef folder fill:#1e1b0a,stroke:#f59e0b,stroke-width:2px,color:#fefce8 | |
| classDef queue fill:#0a1e2e,stroke:#06b6d4,stroke-width:2px,color:#e0f7ff | |
| classDef ai fill:#1a0a2e,stroke:#a855f7,stroke-width:2px,color:#f3e8ff | |
| classDef ok fill:#064e3b,stroke:#34d399,stroke-width:2px,color:#ecfdf5 | |
| classDef err fill:#450a0a,stroke:#f87171,stroke-width:2px,color:#fef2f2 | |
| L0["π Entry Points\n1 files"]:::tab | |
| L1["UI / Frontend β frontend/\n5 files"]:::tab | |
| L0 -->L1 | |
| L2["[chronos-forecasting] Core / Business Logic β libs/\n39 files"]:::folder | |
| L1 -->L2 | |
| L3["[timesfm] Core / Business Logic β libs/\n58 files"]:::folder | |
| L2 -->L3 | |
| L4["Infrastructure β scripts/\n6 files"]:::queue | |
| L3 -->L4 | |
| L5["UI / Frontend β scratch/ 1r\n107 files"]:::tab | |
| L4 -->L5 | |
| L6["backend/\n70 files"]:::folder | |
| L5 -->L6 | |
| L7[".codegraph/\n1 files"]:::folder | |
| L6 -->L7 | |
| L8["π Zero-Symbol Files\n17 files"]:::tab | |
| L7 -->L8 | |
| L5 -.->|route_handler| L6 | |
| L1 -.->|calls| L6 | |
| L1 -.->|calls| L5 | |
| L5 -.->|route_handler| L1 | |
| L6 -.->|route_handler| L5 | |
| AI["π€ AI: anthropic, deepseek, google_ai"]:::ai | |
| L8 -.->AI | |
| API["π 31 API endpoints"]:::ok</div> | |
| </div> | |
| <div class="diagram-hint">π± scroll zoom Β· drag pan</div> | |
| </div> | |
| </div> | |
| <!-- RIGHT: DETAILED WORKFLOW TREE --> | |
| <div class="panel"> | |
| <div class="panel-title"><i class="fa-solid fa-folder-tree"></i> CαΊ₯u TrΓΊc Chi TiαΊΏt & ThΓ nh PhαΊ§n</div> | |
| <div class="tree-root"> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">TAB</span><span>UI / Frontend β frontend/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">frontend/ai-session-runtime.js</div> | |
| <div class="path-block">frontend/analysis-runtime.js</div> | |
| <div class="path-block">frontend/app.js</div> | |
| <div class="path-block">frontend/forecast-models.js</div> | |
| <div class="path-block">frontend/workspace.js</div></div><div class="info-card folder"><strong>π Key Components</strong><ul><li><b>PaneState</b> β class in <code>frontend/workspace.js</code></li> | |
| <li><code>apiJsonRequest</code> β function in <code>frontend/app.js</code></li> | |
| <li><code>apiRequest</code> β function in <code>frontend/app.js</code></li> | |
| <li><code>applyHeaderVisibility</code> β function in <code>frontend/app.js</code></li> | |
| <li><code>applySymbolToActivePane</code> β function in <code>frontend/app.js</code></li> | |
| <li><code>applyTheme</code> β function in <code>frontend/app.js</code></li> | |
| <li><code>buildGaugeSvg</code> β function in <code>frontend/app.js</code></li></ul></div><div class="info-card warning"><strong>π€ Cross-Layer Dependencies</strong><code>DELETE /api/cache</code>, <code>GET /</code></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ frontend/ | |
| βββ ai-session-runtime.js | |
| βββ analysis-runtime.js | |
| βββ app.js | |
| βββ forecast-models.js | |
| βββ workspace.js</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span>[chronos-forecasting] Core / Business Logic β libs/ β Overview</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/chronos-forecasting/.github/ISSUE_TEMPLATE/config.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/ci.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/eval-model.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/publish-to-pypi.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/ci/evaluate/backtest_config.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/agg-relative-score.py</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/configs/in-domain.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/configs/zero-shot.yaml</div></div><div class="info-card folder"><strong>π Key Components</strong><ul><li><b>MLP</b> β class in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><b>AttentionOutput</b> β class in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><b>Chronos2LayerNorm</b> β class in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><b>FeedForward</b> β class in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><code>download_model_files_from_cloudfront</code> β function in <code>libs/chronos-forecasting/src/chronos/boto_utils.py</code></li> | |
| <li><code>__init__</code> β method in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><code>_eager_attention</code> β method in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><code>_sdpa_attention</code> β method in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><code>apply_rotary_pos_emb</code> β method in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><code>forward</code> β method in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><code>rotate_half</code> β method in <code>libs/chronos-forecasting/src/chronos/chronos2/layers.py</code></li> | |
| <li><code>batchify</code> β function in <code>libs/chronos-forecasting/src/chronos/base.py</code></li></ul></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ chronos-forecasting/ | |
| βββ .github/ | |
| β βββ ISSUE_TEMPLATE/ | |
| β β βββ config.yml | |
| β βββ workflows/ | |
| β βββ ci.yml | |
| β βββ eval-model.yml | |
| β βββ publish-to-pypi.yml | |
| βββ ci/ | |
| β βββ evaluate/ | |
| β βββ backtest_config.yaml | |
| βββ scripts/ | |
| βββ evaluation/ | |
| β βββ configs/ | |
| β β βββ in-domain.yaml | |
| β β βββ zero-shot.yaml | |
| β βββ agg-relative-score.py | |
| β βββ evaluate.py | |
| βββ training/ | |
| β βββ configs/ | |
| β βββ chronos-gpt2.yaml | |
| β βββ chronos-t5-base.yaml | |
| βββ kernel-synth.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ .github/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/chronos-forecasting/.github/ISSUE_TEMPLATE/config.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/ci.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/eval-model.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/publish-to-pypi.yml</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ chronos-forecasting/ | |
| βββ .github/ | |
| βββ ISSUE_TEMPLATE/ | |
| β βββ config.yml | |
| βββ workflows/ | |
| βββ ci.yml | |
| βββ eval-model.yml | |
| βββ publish-to-pypi.yml</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ scripts/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/chronos-forecasting/scripts/evaluation/agg-relative-score.py</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/configs/in-domain.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/configs/zero-shot.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/evaluate.py</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/kernel-synth.py</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/training/configs/chronos-gpt2.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/training/configs/chronos-t5-base.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/training/configs/chronos-t5-large.yaml</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ chronos-forecasting/ | |
| βββ scripts/ | |
| βββ evaluation/ | |
| β βββ configs/ | |
| β β βββ in-domain.yaml | |
| β β βββ zero-shot.yaml | |
| β βββ agg-relative-score.py | |
| β βββ evaluate.py | |
| βββ training/ | |
| β βββ configs/ | |
| β β βββ chronos-gpt2.yaml | |
| β β βββ chronos-t5-base.yaml | |
| β β βββ chronos-t5-large.yaml | |
| β β βββ chronos-t5-mini.yaml | |
| β β βββ chronos-t5-small.yaml | |
| β β βββ chronos-t5-tiny.yaml | |
| β βββ train.py | |
| βββ kernel-synth.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ src/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/chronos-forecasting/src/chronos/__about__.py</div> | |
| <div class="path-block">libs/chronos-forecasting/src/chronos/__init__.py</div> | |
| <div class="path-block">libs/chronos-forecasting/src/chronos/base.py</div> | |
| <div class="path-block">libs/chronos-forecasting/src/chronos/boto_utils.py</div> | |
| <div class="path-block">libs/chronos-forecasting/src/chronos/chronos.py</div> | |
| <div class="path-block">libs/chronos-forecasting/src/chronos/chronos2/__init__.py</div> | |
| <div class="path-block">libs/chronos-forecasting/src/chronos/chronos2/config.py</div> | |
| <div class="path-block">libs/chronos-forecasting/src/chronos/chronos2/dataset.py</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ chronos-forecasting/ | |
| βββ src/ | |
| βββ chronos/ | |
| βββ chronos2/ | |
| β βββ __init__.py | |
| β βββ config.py | |
| β βββ dataset.py | |
| β βββ layers.py | |
| β βββ model.py | |
| β βββ pipeline.py | |
| β βββ trainer.py | |
| βββ __about__.py | |
| βββ __init__.py | |
| βββ base.py | |
| βββ boto_utils.py | |
| βββ chronos.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ test/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/chronos-forecasting/test/__init__.py</div> | |
| <div class="path-block">libs/chronos-forecasting/test/test_chronos.py</div> | |
| <div class="path-block">libs/chronos-forecasting/test/test_chronos2.py</div> | |
| <div class="path-block">libs/chronos-forecasting/test/test_chronos_bolt.py</div> | |
| <div class="path-block">libs/chronos-forecasting/test/test_df_utils.py</div> | |
| <div class="path-block">libs/chronos-forecasting/test/test_utils.py</div> | |
| <div class="path-block">libs/chronos-forecasting/test/util.py</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ chronos-forecasting/ | |
| βββ test/ | |
| βββ __init__.py | |
| βββ test_chronos.py | |
| βββ test_chronos2.py | |
| βββ test_chronos_bolt.py | |
| βββ test_df_utils.py | |
| βββ test_utils.py | |
| βββ util.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span>[timesfm] Core / Business Logic β libs/ β Overview</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/timesfm/.github/workflows/main.yml</div> | |
| <div class="path-block">libs/timesfm/.github/workflows/manual_publish.yml</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/__init__.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/configs.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/flax/__init__.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/flax/dense.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/flax/normalization.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/flax/transformer.py</div></div><div class="info-card folder"><strong>π Key Components</strong><ul><li><b>CheckResult</b> β class in <code>libs/timesfm/timesfm-forecasting/scripts/check_system.py</code></li> | |
| <li><b>MEMORYSTATUSEX</b> β class in <code>libs/timesfm/timesfm-forecasting/scripts/check_system.py</code></li> | |
| <li><b>TestDecodeCache</b> β class in <code>libs/timesfm/tests/test_torch_utils.py</code></li> | |
| <li><b>TestRevIN</b> β class in <code>libs/timesfm/tests/test_torch_utils.py</code></li> | |
| <li><code>normalize</code> β function in <code>libs/timesfm/src/timesfm/utils/xreg_lib.py</code></li> | |
| <li><code>_get_total_ram_gb</code> β function in <code>libs/timesfm/timesfm-forecasting/scripts/check_system.py</code></li> | |
| <li><code>passed</code> β method in <code>libs/timesfm/timesfm-forecasting/scripts/check_system.py</code></li> | |
| <li><code>evaluate</code> β function in <code>libs/timesfm/timesfm-forecasting/examples/finetuning/finetune_lora.py</code></li> | |
| <li><code>load_retail_sales</code> β function in <code>libs/timesfm/timesfm-forecasting/examples/finetuning/finetune_lora.py</code></li> | |
| <li><code>_ar_decode</code> β function in <code>libs/timesfm/src/timesfm/timesfm_2p5/timesfm_2p5_flax.py</code></li> | |
| <li><code>_normalize</code> β function in <code>libs/timesfm/v1/src/timesfm/timesfm_base.py</code></li> | |
| <li><code>_renormalize</code> β function in <code>libs/timesfm/v1/src/timesfm/timesfm_base.py</code></li></ul></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ timesfm/ | |
| βββ .github/ | |
| β βββ workflows/ | |
| β βββ main.yml | |
| β βββ manual_publish.yml | |
| βββ src/ | |
| βββ timesfm/ | |
| βββ flax/ | |
| β βββ __init__.py | |
| β βββ dense.py | |
| β βββ normalization.py | |
| β βββ transformer.py | |
| β βββ util.py | |
| βββ timesfm_2p5/ | |
| β βββ timesfm_2p5_base.py | |
| β βββ timesfm_2p5_flax.py | |
| β βββ timesfm_2p5_torch.py | |
| βββ __init__.py | |
| βββ configs.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ .github/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/timesfm/.github/workflows/main.yml</div> | |
| <div class="path-block">libs/timesfm/.github/workflows/manual_publish.yml</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ src/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/timesfm/src/timesfm/__init__.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/configs.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/flax/__init__.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/flax/dense.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/flax/normalization.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/flax/transformer.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/flax/util.py</div> | |
| <div class="path-block">libs/timesfm/src/timesfm/timesfm_2p5/timesfm_2p5_base.py</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ timesfm/ | |
| βββ src/ | |
| βββ timesfm/ | |
| βββ flax/ | |
| β βββ __init__.py | |
| β βββ dense.py | |
| β βββ normalization.py | |
| β βββ transformer.py | |
| β βββ util.py | |
| βββ timesfm_2p5/ | |
| β βββ timesfm_2p5_base.py | |
| β βββ timesfm_2p5_flax.py | |
| β βββ timesfm_2p5_torch.py | |
| βββ torch/ | |
| β βββ __init__.py | |
| β βββ dense.py | |
| βββ __init__.py | |
| βββ configs.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ tests/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/timesfm/tests/__init__.py</div> | |
| <div class="path-block">libs/timesfm/tests/test_base_utils.py</div> | |
| <div class="path-block">libs/timesfm/tests/test_configs.py</div> | |
| <div class="path-block">libs/timesfm/tests/test_torch_layers.py</div> | |
| <div class="path-block">libs/timesfm/tests/test_torch_utils.py</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ timesfm/ | |
| βββ tests/ | |
| βββ __init__.py | |
| βββ test_base_utils.py | |
| βββ test_configs.py | |
| βββ test_torch_layers.py | |
| βββ test_torch_utils.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ timesfm-forecasting/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/timesfm/timesfm-forecasting/examples/anomaly-detection/detect_anomalies.py</div> | |
| <div class="path-block">libs/timesfm/timesfm-forecasting/examples/covariates-forecasting/demo_covariates.py</div> | |
| <div class="path-block">libs/timesfm/timesfm-forecasting/examples/finetuning/finetune_lora.py</div> | |
| <div class="path-block">libs/timesfm/timesfm-forecasting/examples/global-temperature/generate_animation_data.py</div> | |
| <div class="path-block">libs/timesfm/timesfm-forecasting/examples/global-temperature/generate_gif.py</div> | |
| <div class="path-block">libs/timesfm/timesfm-forecasting/examples/global-temperature/generate_html.py</div> | |
| <div class="path-block">libs/timesfm/timesfm-forecasting/examples/global-temperature/run_forecast.py</div> | |
| <div class="path-block">libs/timesfm/timesfm-forecasting/examples/global-temperature/visualize_forecast.py</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ timesfm/ | |
| βββ timesfm-forecasting/ | |
| βββ examples/ | |
| β βββ anomaly-detection/ | |
| β β βββ detect_anomalies.py | |
| β βββ covariates-forecasting/ | |
| β β βββ demo_covariates.py | |
| β βββ finetuning/ | |
| β β βββ finetune_lora.py | |
| β βββ global-temperature/ | |
| β βββ generate_animation_data.py | |
| β βββ generate_gif.py | |
| β βββ generate_html.py | |
| β βββ run_forecast.py | |
| β βββ visualize_forecast.py | |
| βββ scripts/ | |
| βββ check_system.py | |
| βββ forecast_csv.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ v1/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/timesfm/v1/experiments/baselines/__init__.py</div> | |
| <div class="path-block">libs/timesfm/v1/experiments/baselines/timegpt_pipeline.py</div> | |
| <div class="path-block">libs/timesfm/v1/experiments/extended_benchmarks/run_timegpt.py</div> | |
| <div class="path-block">libs/timesfm/v1/experiments/extended_benchmarks/run_timesfm.py</div> | |
| <div class="path-block">libs/timesfm/v1/experiments/extended_benchmarks/utils.py</div> | |
| <div class="path-block">libs/timesfm/v1/experiments/long_horizon_benchmarks/run_eval.py</div> | |
| <div class="path-block">libs/timesfm/v1/peft/finetune.py</div> | |
| <div class="path-block">libs/timesfm/v1/src/adapter/__init__.py</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ timesfm/ | |
| βββ v1/ | |
| βββ experiments/ | |
| β βββ baselines/ | |
| β β βββ __init__.py | |
| β β βββ timegpt_pipeline.py | |
| β βββ extended_benchmarks/ | |
| β β βββ run_timegpt.py | |
| β β βββ run_timesfm.py | |
| β β βββ utils.py | |
| β βββ long_horizon_benchmarks/ | |
| β βββ run_eval.py | |
| βββ peft/ | |
| β βββ finetune.py | |
| βββ src/ | |
| βββ adapter/ | |
| β βββ __init__.py | |
| β βββ dora_layers.py | |
| β βββ lora_layers.py | |
| β βββ utils.py | |
| βββ finetuning/ | |
| βββ __init__.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span>Infrastructure β scripts/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">scripts/check_timesfm_env.py</div> | |
| <div class="path-block">scripts/patch_timesfm.py</div> | |
| <div class="path-block">scripts/playwright_smoke.js</div> | |
| <div class="path-block">scripts/scratch_cleanup.py</div> | |
| <div class="path-block">scripts/test_scratch_cleanup.py</div> | |
| <div class="path-block">scripts/verify_local.py</div></div><div class="info-card folder"><strong>π Key Components</strong><ul><li><b>Check</b> β class in <code>scripts/verify_local.py</code></li> | |
| <li><b>CleanupError</b> β class in <code>scripts/scratch_cleanup.py</code></li> | |
| <li><b>CleanupResult</b> β class in <code>scripts/scratch_cleanup.py</code></li> | |
| <li><code>_resolve_command</code> β function in <code>scripts/verify_local.py</code></li> | |
| <li><code>_run_check</code> β function in <code>scripts/verify_local.py</code></li> | |
| <li><code>build_checks</code> β function in <code>scripts/verify_local.py</code></li> | |
| <li><code>main</code> β function in <code>scripts/verify_local.py</code></li> | |
| <li><code>_build_argument_parser</code> β function in <code>scripts/scratch_cleanup.py</code></li> | |
| <li><code>_build_cleanup_target</code> β function in <code>scripts/scratch_cleanup.py</code></li></ul></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ scripts/ | |
| βββ check_timesfm_env.py | |
| βββ patch_timesfm.py | |
| βββ playwright_smoke.js | |
| βββ scratch_cleanup.py | |
| βββ test_scratch_cleanup.py | |
| βββ verify_local.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span>UI / Frontend β scratch/ 1r β Overview</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">scratch/Kronos-upstream/examples/get_akshare_date_2024-2025_x.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/get_date_new.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_akshare_2024-2025.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_batch_example.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_cn_markets_day.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_example.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_new.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_new_GUI.py</div></div><div class="info-card folder"><strong>π Key Components</strong><ul><li><b>InvestDebateState</b> β class in <code>scratch/tradingagents-audit/tradingagents/agents/utils/agent_states.py</code></li> | |
| <li><b>RiskDebateState</b> β class in <code>scratch/tradingagents-audit/tradingagents/agents/utils/agent_states.py</code></li> | |
| <li><b>EnhancedMarketFactorAnalyzer</b> β class in <code>scratch/Kronos-upstream/examples/prediction_new.py</code></li> | |
| <li><b>StockPredictorGUI</b> β class in <code>scratch/Kronos-upstream/examples/prediction_new_GUI.py</code></li> | |
| <li><code>enhance_prediction_with_market_factors</code> β function in <code>scratch/Kronos-upstream/examples/prediction_new.py</code></li> | |
| <li><code>ensure_output_directory</code> β function in <code>scratch/Kronos-upstream/examples/prediction_new.py</code></li> | |
| <li><code>create_question_box</code> β function in <code>scratch/tradingagents-audit/cli/main.py</code></li> | |
| <li><code>load_models</code> β function in <code>scratch/Kronos-upstream/finetune/qlib_test.py</code></li> | |
| <li><code>make_log</code> β function in <code>scratch/tradingagents-audit/tests/test_memory_log.py</code></li> | |
| <li><code>test_decision_with_markdown_separator</code> β method in <code>scratch/tradingagents-audit/tests/test_memory_log.py</code></li> | |
| <li><code>test_fetch_returns_valid_ticker</code> β method in <code>scratch/tradingagents-audit/tests/test_memory_log.py</code></li> | |
| <li><code>test_full_cycle_store_resolve_inject</code> β method in <code>scratch/tradingagents-audit/tests/test_memory_log.py</code></li></ul></div><div class="info-card warning"><strong>π€ Cross-Layer Dependencies</strong><code>DELETE /api/cache</code>, <code>getModelSignatureFromPane</code></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ scratch/ | |
| βββ Kronos-upstream/ | |
| βββ examples/ | |
| β βββ yuce/ | |
| β β βββ historical_backtest.py | |
| β βββ get_akshare_date_2024-2025_x.py | |
| β βββ get_date_new.py | |
| β βββ prediction_akshare_2024-2025.py | |
| β βββ prediction_batch_example.py | |
| β βββ prediction_cn_markets_day.py | |
| β βββ prediction_example.py | |
| β βββ prediction_new.py | |
| β βββ prediction_new_GUI.py | |
| β βββ prediction_wo_vol_example.py | |
| β βββ run_backtest_kronos.py | |
| βββ finetune/ | |
| βββ config.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ Kronos-upstream/ π 1r</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">scratch/Kronos-upstream/examples/get_akshare_date_2024-2025_x.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/get_date_new.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_akshare_2024-2025.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_batch_example.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_cn_markets_day.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_example.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_new.py</div> | |
| <div class="path-block">scratch/Kronos-upstream/examples/prediction_new_GUI.py</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ scratch/ | |
| βββ Kronos-upstream/ | |
| βββ examples/ | |
| β βββ yuce/ | |
| β β βββ historical_backtest.py | |
| β βββ get_akshare_date_2024-2025_x.py | |
| β βββ get_date_new.py | |
| β βββ prediction_akshare_2024-2025.py | |
| β βββ prediction_batch_example.py | |
| β βββ prediction_cn_markets_day.py | |
| β βββ prediction_example.py | |
| β βββ prediction_new.py | |
| β βββ prediction_new_GUI.py | |
| β βββ prediction_wo_vol_example.py | |
| β βββ run_backtest_kronos.py | |
| βββ finetune/ | |
| βββ config.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ tradingagents-audit/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">scratch/tradingagents-audit/cli/__init__.py</div> | |
| <div class="path-block">scratch/tradingagents-audit/cli/announcements.py</div> | |
| <div class="path-block">scratch/tradingagents-audit/cli/config.py</div> | |
| <div class="path-block">scratch/tradingagents-audit/cli/main.py</div> | |
| <div class="path-block">scratch/tradingagents-audit/cli/models.py</div> | |
| <div class="path-block">scratch/tradingagents-audit/cli/stats_handler.py</div> | |
| <div class="path-block">scratch/tradingagents-audit/cli/utils.py</div> | |
| <div class="path-block">scratch/tradingagents-audit/docker-compose.yml</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ scratch/ | |
| βββ tradingagents-audit/ | |
| βββ cli/ | |
| β βββ __init__.py | |
| β βββ announcements.py | |
| β βββ config.py | |
| β βββ main.py | |
| β βββ models.py | |
| β βββ stats_handler.py | |
| β βββ utils.py | |
| βββ scripts/ | |
| β βββ smoke_structured_output.py | |
| βββ tests/ | |
| β βββ conftest.py | |
| βββ docker-compose.yml | |
| βββ main.py | |
| βββ test.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span>backend/ β Overview</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">backend/__init__.py</div> | |
| <div class="path-block">backend/analysis_engine.py</div> | |
| <div class="path-block">backend/analysis_report.py</div> | |
| <div class="path-block">backend/api_facade.py</div> | |
| <div class="path-block">backend/api_models.py</div> | |
| <div class="path-block">backend/cache_utils.py</div> | |
| <div class="path-block">backend/catalog_utils.py</div> | |
| <div class="path-block">backend/forecast_service.py</div></div><div class="info-card folder"><strong>π Key Components</strong><ul><li><b>APIKeyPool</b> β class in <code>backend/main.py</code></li> | |
| <li><b>CircuitBreaker</b> β class in <code>backend/main.py</code></li> | |
| <li><b>ConnectionManager</b> β class in <code>backend/main.py</code></li> | |
| <li><b>GlobalHTTPClient</b> β class in <code>backend/main.py</code></li> | |
| <li><code>_ip_cleanup_loop</code> β function in <code>backend/main.py</code></li> | |
| <li><code>_parse_timestamp</code> β function in <code>backend/main.py</code></li> | |
| <li><code>_round</code> β function in <code>backend/main.py</code></li> | |
| <li><code>_s</code> β function in <code>backend/main.py</code></li> | |
| <li><code>_warmup_chronos</code> β function in <code>backend/main.py</code></li> | |
| <li><code>clear_symbol_cache</code> β function in <code>backend/main.py</code></li> | |
| <li><code>download_analysis_report</code> β function in <code>backend/main.py</code></li> | |
| <li><code>fetch_binance</code> β function in <code>backend/main.py</code></li></ul></div><div class="info-card warning"><strong>π€ Cross-Layer Dependencies</strong><code>route_to_vendor</code></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ backend/ | |
| βββ forecasting/ | |
| β βββ __init__.py | |
| βββ __init__.py | |
| βββ analysis_engine.py | |
| βββ analysis_report.py | |
| βββ api_facade.py | |
| βββ api_models.py | |
| βββ cache_utils.py | |
| βββ catalog_utils.py | |
| βββ forecast_service.py | |
| βββ forecast_worker_entry.py | |
| βββ forecast_worker_protocol.py | |
| βββ forecast_worker_supervisor.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ forecasting/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">backend/forecasting/__init__.py</div> | |
| <div class="path-block">backend/forecasting/ai_score_utils.py</div> | |
| <div class="path-block">backend/forecasting/config.py</div> | |
| <div class="path-block">backend/forecasting/ohlc4_utils.py</div> | |
| <div class="path-block">backend/forecasting/providers/__init__.py</div> | |
| <div class="path-block">backend/forecasting/providers/chronos_provider.py</div> | |
| <div class="path-block">backend/forecasting/providers/timesfm_provider.py</div> | |
| <div class="path-block">backend/forecasting/rules.py</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ backend/ | |
| βββ forecasting/ | |
| βββ providers/ | |
| β βββ __init__.py | |
| β βββ chronos_provider.py | |
| β βββ timesfm_provider.py | |
| βββ __init__.py | |
| βββ ai_score_utils.py | |
| βββ config.py | |
| βββ ohlc4_utils.py | |
| βββ rules.py | |
| βββ runtime_availability.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span> β³ kronos_core/</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">backend/kronos_core/__init__.py</div> | |
| <div class="path-block">backend/kronos_core/model/__init__.py</div> | |
| <div class="path-block">backend/kronos_core/model/kronos.py</div> | |
| <div class="path-block">backend/kronos_core/model/module.py</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ backend/ | |
| βββ kronos_core/ | |
| βββ model/ | |
| β βββ __init__.py | |
| β βββ kronos.py | |
| β βββ module.py | |
| βββ __init__.py</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-tab">MODULE</span><span>π Zero-Symbol Files</span></div><div class="tree-content"><div class="info-card "><strong>π₯ Files</strong><div class="path-block">libs/chronos-forecasting/.github/ISSUE_TEMPLATE/config.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/ci.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/eval-model.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/publish-to-pypi.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/ci/evaluate/backtest_config.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/configs/in-domain.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/configs/zero-shot.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/training/configs/chronos-gpt2.yaml</div></div><div class="info-card folder"><strong>π Structure</strong><div class="path-block">βββ libs/ | |
| βββ chronos-forecasting/ | |
| βββ .github/ | |
| β βββ ISSUE_TEMPLATE/ | |
| β β βββ config.yml | |
| β βββ workflows/ | |
| β βββ ci.yml | |
| β βββ eval-model.yml | |
| β βββ publish-to-pypi.yml | |
| βββ ci/ | |
| β βββ evaluate/ | |
| β βββ backtest_config.yaml | |
| βββ scripts/ | |
| βββ evaluation/ | |
| β βββ configs/ | |
| β βββ in-domain.yaml | |
| β βββ zero-shot.yaml | |
| βββ training/ | |
| βββ configs/ | |
| βββ chronos-gpt2.yaml | |
| βββ chronos-t5-base.yaml | |
| βββ chronos-t5-large.yaml | |
| βββ chronos-t5-mini.yaml | |
| βββ chronos-t5-small.yaml</div></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-seq">PIPELINE</span><span>Pipeline: scratch β frontend β backend</span></div><div class="tree-content"><div class="info-card queue"><strong>π Data Flow</strong><code>scratch</code> β <code>frontend</code> β <code>backend</code></div><div class="info-card "><strong>π Layers</strong>Cross-layer call chain detected from CodeGraph edges</div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-seq">PIPELINE</span><span>Pipeline: frontend β backend β scratch</span></div><div class="tree-content"><div class="info-card queue"><strong>π Data Flow</strong><code>frontend</code> β <code>backend</code> β <code>scratch</code></div><div class="info-card "><strong>π Layers</strong>Cross-layer call chain detected from CodeGraph edges</div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-seq">PIPELINE</span><span>Pipeline: frontend β scratch β backend</span></div><div class="tree-content"><div class="info-card queue"><strong>π Data Flow</strong><code>frontend</code> β <code>scratch</code> β <code>backend</code></div><div class="info-card "><strong>π Layers</strong>Cross-layer call chain detected from CodeGraph edges</div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-seq">PIPELINE</span><span>Pipeline: backend β scratch β frontend</span></div><div class="tree-content"><div class="info-card queue"><strong>π Data Flow</strong><code>backend</code> β <code>scratch</code> β <code>frontend</code></div><div class="info-card "><strong>π Layers</strong>Cross-layer call chain detected from CodeGraph edges</div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-ai">AI</span><span>π€ AI / LLM Integration</span></div><div class="tree-content"><div class="info-card ai"><strong>π§ Detected AI Components</strong><code>ADMIN_TOKEN</code>, <code>ADMIN_TOKEN_ENV_KEY</code>, <code>AIRuleDocument</code>, <code>AIRuleRegistry</code>, <code>AI_SCORE_FIELD_DEFAULTS</code>, <code>AI_SCORING_VERSION</code>, <code>AVAILABLE_MODELS</code>, <code>AnthropicClient</code>, <code>ApiModelsTests</code>, <code>AverageAiScoreFieldsTests</code>, <code>AzureOpenAIClient</code>, <code>BaseLLMClient</code>, <code>CHRONOS2_MODEL_MARKER</code>, <code>CHRONOS_AVAILABLE</code>, <code>Chronos2Model</code></div><div class="info-card ai"><strong>π Integration Pattern</strong>AI/LLM calls detected via import analysis and symbol naming patterns</div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-queue">INTERVENTION</span><span>Manual Intervention Points</span></div><div class="tree-content"><div class="info-card warning"><strong>β _retry</strong><code>backend/main.py</code> (line 1231) β function</div><div class="info-card warning"><strong>β FX_PRIMARY_FALLBACK_SOURCES</strong><code>backend/main.py</code> (line 873) β variable</div><div class="info-card danger"><strong>β TORCH_IMPORT_ERROR</strong><code>backend/main.py</code> (line 213) β variable</div><div class="info-card danger"><strong>β TORCH_IMPORT_ERROR</strong><code>backend/main.py</code> (line 216) β variable</div><div class="info-card danger"><strong>β AlphaVantageRateLimitError</strong><code>scratch/tradingagents-audit/tradingagents/dataflows/alpha_vantage_common.py</code> (line 38) β class</div><div class="info-card warning"><strong>β test_crypto_dynamic_source_mappings_are_derived_for_hf_safe_fallbacks</strong><code>backend/test_api_regressions.py</code> (line 842) β method</div><div class="info-card warning"><strong>β test_crypto_historical_fetch_on_hf_uses_hf_safe_fallback_first</strong><code>backend/test_api_regressions.py</code> (line 859) β method</div><div class="info-card danger"><strong>β test_finalize_forecast_error_payload_omits_legacy_forecast_candles_field</strong><code>backend/test_api_regressions.py</code> (line 1684) β method</div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-entry">ENTRY</span><span>π Application Entry Points</span></div><div class="tree-content"><div class="info-card entry"><strong>π Entry Files</strong><div class="path-block">app.py</div></div><div class="info-card entry"><strong>π Count</strong>1 entry-point files detected</div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-entry">ENTRY</span><span>π Application Entry Points</span></div><div class="tree-content"><div class="info-card entry"><strong>π Entry Files</strong><div class="path-block">libs/chronos-forecasting/.github/ISSUE_TEMPLATE/config.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/ci.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/eval-model.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/.github/workflows/publish-to-pypi.yml</div> | |
| <div class="path-block">libs/chronos-forecasting/ci/evaluate/backtest_config.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/configs/in-domain.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/evaluation/configs/zero-shot.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/training/configs/chronos-gpt2.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/training/configs/chronos-t5-base.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/training/configs/chronos-t5-large.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/training/configs/chronos-t5-mini.yaml</div> | |
| <div class="path-block">libs/chronos-forecasting/scripts/training/configs/chronos-t5-small.yaml</div></div><div class="info-card entry"><strong>π Count</strong>17 entry-point files detected</div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-folder">EXTERNAL</span><span>π Databases</span></div><div class="tree-content"><div class="info-card folder"><strong>Database Systems</strong><code>typeorm</code></div></div></div> | |
| <div class="tree-node"><div class="tree-toggle" onclick="toggleNode(this)"><i class="fa-solid fa-chevron-right"></i><span class="badge badge-folder">EXTERNAL</span><span>π€ AI/LLM Services</span></div><div class="tree-content"><div class="info-card folder"><strong>External AI APIs</strong><code>anthropic</code>, <code>deepseek</code>, <code>google_ai</code>, <code>huggingface</code>, <code>langchain</code>, <code>openai</code></div></div></div> | |
| <div class="info-card success" style="margin:0.2rem 0">β VALIDATION: <code>_validate_cache_target</code> β data validation in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">β VALIDATION: <code>_validate_symbol_and_interval</code> β data validation in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>DELETE /api/cache</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>DELETE /api/cache/{symbol}/{interval}</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/ai/rules</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/analysis-report/{symbol}</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/analysis/{symbol}</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/backtest/{symbol}</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/cache/stats</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/forecast/{symbol}</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/forecasting/rules</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/health</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/historical/{symbol}</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/indicators/{symbol}</code> β API endpoint in <code>backend/main.py</code></div> | |
| <div class="info-card success" style="margin:0.2rem 0">π ROUTE: <code>GET /api/market-peers</code> β API endpoint in <code>backend/main.py</code></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="main-layout"> | |
| <div class="panel full"> | |
| <div class="panel-title"><i class="fa-solid fa-cubes"></i> KiαΊΏn TrΓΊc Auto-Detect (9 layers)</div> | |
| <div class="arch-grid"> | |
| <div class="arch-card arch-entry"> | |
| <div class="arch-card-header"><span>π Entry Points</span><span class="arch-count">1 files</span></div> | |
| <div class="arch-card-body"> | |
| <div class="arch-toggle open" onclick="toggleArchFiles(this)"><i class="fa-solid fa-chevron-down"></i> π 1 files</div> | |
| <div class="arch-full-list"> | |
| <button class="arch-copy-btn" onclick="copyArchFiles(this,'π Entry Points')">π Copy All</button> | |
| <div><code>app.py</code></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="arch-card arch-tab"> | |
| <div class="arch-card-header"><span>UI / Frontend β frontend/</span><span class="arch-count">5 files</span></div> | |
| <div class="arch-card-body"> | |
| <div class="arch-toggle open" onclick="toggleArchFiles(this)"><i class="fa-solid fa-chevron-down"></i> π 5 files</div> | |
| <div class="arch-full-list"> | |
| <button class="arch-copy-btn" onclick="copyArchFiles(this,'UI / Frontend β frontend/')">π Copy All</button> | |
| <div><code>frontend/ai-session-runtime.js</code></div><div><code>frontend/analysis-runtime.js</code></div><div><code>frontend/app.js</code></div><div><code>frontend/forecast-models.js</code></div><div><code>frontend/workspace.js</code></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="arch-card arch-folder"> | |
| <div class="arch-card-header"><span>[chronos-forecasting] Core / Business Logic β libs/</span><span class="arch-count">39 files</span></div> | |
| <div class="arch-card-body"> | |
| <div class="arch-toggle open" onclick="toggleArchFiles(this)"><i class="fa-solid fa-chevron-down"></i> π 39 files</div> | |
| <div class="arch-full-list"> | |
| <button class="arch-copy-btn" onclick="copyArchFiles(this,'[chronos-forecasting] Core / Business Logic β libs/')">π Copy All</button> | |
| <div><code>libs/chronos-forecasting/.github/ISSUE_TEMPLATE/config.yml</code></div><div><code>libs/chronos-forecasting/.github/workflows/ci.yml</code></div><div><code>libs/chronos-forecasting/.github/workflows/eval-model.yml</code></div><div><code>libs/chronos-forecasting/.github/workflows/publish-to-pypi.yml</code></div><div><code>libs/chronos-forecasting/ci/evaluate/backtest_config.yaml</code></div><div><code>libs/chronos-forecasting/scripts/evaluation/agg-relative-score.py</code></div><div><code>libs/chronos-forecasting/scripts/evaluation/configs/in-domain.yaml</code></div><div><code>libs/chronos-forecasting/scripts/evaluation/configs/zero-shot.yaml</code></div><div><code>libs/chronos-forecasting/scripts/evaluation/evaluate.py</code></div><div><code>libs/chronos-forecasting/scripts/kernel-synth.py</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-gpt2.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-base.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-large.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-mini.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-small.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-tiny.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/train.py</code></div><div><code>libs/chronos-forecasting/src/chronos/__about__.py</code></div><div><code>libs/chronos-forecasting/src/chronos/__init__.py</code></div><div><code>libs/chronos-forecasting/src/chronos/base.py</code></div> | |
| <div style="color:var(--muted)">+ 19 more</div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="arch-card arch-folder"> | |
| <div class="arch-card-header"><span>[timesfm] Core / Business Logic β libs/</span><span class="arch-count">58 files</span></div> | |
| <div class="arch-card-body"> | |
| <div class="arch-toggle open" onclick="toggleArchFiles(this)"><i class="fa-solid fa-chevron-down"></i> π 58 files</div> | |
| <div class="arch-full-list"> | |
| <button class="arch-copy-btn" onclick="copyArchFiles(this,'[timesfm] Core / Business Logic β libs/')">π Copy All</button> | |
| <div><code>libs/timesfm/.github/workflows/main.yml</code></div><div><code>libs/timesfm/.github/workflows/manual_publish.yml</code></div><div><code>libs/timesfm/src/timesfm/__init__.py</code></div><div><code>libs/timesfm/src/timesfm/configs.py</code></div><div><code>libs/timesfm/src/timesfm/flax/__init__.py</code></div><div><code>libs/timesfm/src/timesfm/flax/dense.py</code></div><div><code>libs/timesfm/src/timesfm/flax/normalization.py</code></div><div><code>libs/timesfm/src/timesfm/flax/transformer.py</code></div><div><code>libs/timesfm/src/timesfm/flax/util.py</code></div><div><code>libs/timesfm/src/timesfm/timesfm_2p5/timesfm_2p5_base.py</code></div><div><code>libs/timesfm/src/timesfm/timesfm_2p5/timesfm_2p5_flax.py</code></div><div><code>libs/timesfm/src/timesfm/timesfm_2p5/timesfm_2p5_torch.py</code></div><div><code>libs/timesfm/src/timesfm/torch/__init__.py</code></div><div><code>libs/timesfm/src/timesfm/torch/dense.py</code></div><div><code>libs/timesfm/src/timesfm/torch/normalization.py</code></div><div><code>libs/timesfm/src/timesfm/torch/transformer.py</code></div><div><code>libs/timesfm/src/timesfm/torch/util.py</code></div><div><code>libs/timesfm/src/timesfm/utils/xreg_lib.py</code></div><div><code>libs/timesfm/tests/__init__.py</code></div><div><code>libs/timesfm/tests/test_base_utils.py</code></div> | |
| <div style="color:var(--muted)">+ 38 more</div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="arch-card arch-queue"> | |
| <div class="arch-card-header"><span>Infrastructure β scripts/</span><span class="arch-count">6 files</span></div> | |
| <div class="arch-card-body"> | |
| <div class="arch-toggle open" onclick="toggleArchFiles(this)"><i class="fa-solid fa-chevron-down"></i> π 6 files</div> | |
| <div class="arch-full-list"> | |
| <button class="arch-copy-btn" onclick="copyArchFiles(this,'Infrastructure β scripts/')">π Copy All</button> | |
| <div><code>scripts/check_timesfm_env.py</code></div><div><code>scripts/patch_timesfm.py</code></div><div><code>scripts/playwright_smoke.js</code></div><div><code>scripts/scratch_cleanup.py</code></div><div><code>scripts/test_scratch_cleanup.py</code></div><div><code>scripts/verify_local.py</code></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="arch-card arch-tab"> | |
| <div class="arch-card-header"><span>UI / Frontend β scratch/ 1r</span><span class="arch-count">107 files</span></div> | |
| <div class="arch-card-body"> | |
| <div class="arch-toggle open" onclick="toggleArchFiles(this)"><i class="fa-solid fa-chevron-down"></i> π 107 files</div> | |
| <div class="arch-full-list"> | |
| <button class="arch-copy-btn" onclick="copyArchFiles(this,'UI / Frontend β scratch/ 1r')">π Copy All</button> | |
| <div><code>scratch/Kronos-upstream/examples/get_akshare_date_2024-2025_x.py</code></div><div><code>scratch/Kronos-upstream/examples/get_date_new.py</code></div><div><code>scratch/Kronos-upstream/examples/prediction_akshare_2024-2025.py</code></div><div><code>scratch/Kronos-upstream/examples/prediction_batch_example.py</code></div><div><code>scratch/Kronos-upstream/examples/prediction_cn_markets_day.py</code></div><div><code>scratch/Kronos-upstream/examples/prediction_example.py</code></div><div><code>scratch/Kronos-upstream/examples/prediction_new.py</code></div><div><code>scratch/Kronos-upstream/examples/prediction_new_GUI.py</code></div><div><code>scratch/Kronos-upstream/examples/prediction_wo_vol_example.py</code></div><div><code>scratch/Kronos-upstream/examples/run_backtest_kronos.py</code></div><div><code>scratch/Kronos-upstream/examples/yuce/historical_backtest.py</code></div><div><code>scratch/Kronos-upstream/finetune/config.py</code></div><div><code>scratch/Kronos-upstream/finetune/dataset.py</code></div><div><code>scratch/Kronos-upstream/finetune/qlib_data_preprocess.py</code></div><div><code>scratch/Kronos-upstream/finetune/qlib_test.py</code></div><div><code>scratch/Kronos-upstream/finetune/train_predictor.py</code></div><div><code>scratch/Kronos-upstream/finetune/train_tokenizer.py</code></div><div><code>scratch/Kronos-upstream/finetune/utils/__init__.py</code></div><div><code>scratch/Kronos-upstream/finetune/utils/training_utils.py</code></div><div><code>scratch/Kronos-upstream/finetune_csv/config_loader.py</code></div> | |
| <div style="color:var(--muted)">+ 87 more</div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="arch-card arch-folder"> | |
| <div class="arch-card-header"><span>backend/</span><span class="arch-count">70 files</span></div> | |
| <div class="arch-card-body"> | |
| <div class="arch-toggle open" onclick="toggleArchFiles(this)"><i class="fa-solid fa-chevron-down"></i> π 70 files</div> | |
| <div class="arch-full-list"> | |
| <button class="arch-copy-btn" onclick="copyArchFiles(this,'backend/')">π Copy All</button> | |
| <div><code>backend/__init__.py</code></div><div><code>backend/analysis_engine.py</code></div><div><code>backend/analysis_report.py</code></div><div><code>backend/api_facade.py</code></div><div><code>backend/api_models.py</code></div><div><code>backend/cache_utils.py</code></div><div><code>backend/catalog_utils.py</code></div><div><code>backend/forecast_service.py</code></div><div><code>backend/forecast_worker_entry.py</code></div><div><code>backend/forecast_worker_protocol.py</code></div><div><code>backend/forecast_worker_supervisor.py</code></div><div><code>backend/forecasting/__init__.py</code></div><div><code>backend/forecasting/ai_score_utils.py</code></div><div><code>backend/forecasting/config.py</code></div><div><code>backend/forecasting/ohlc4_utils.py</code></div><div><code>backend/forecasting/providers/__init__.py</code></div><div><code>backend/forecasting/providers/chronos_provider.py</code></div><div><code>backend/forecasting/providers/timesfm_provider.py</code></div><div><code>backend/forecasting/rules.py</code></div><div><code>backend/forecasting/runtime_availability.py</code></div> | |
| <div style="color:var(--muted)">+ 50 more</div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="arch-card arch-folder"> | |
| <div class="arch-card-header"><span>.codegraph/</span><span class="arch-count">1 files</span></div> | |
| <div class="arch-card-body"> | |
| <div class="arch-toggle open" onclick="toggleArchFiles(this)"><i class="fa-solid fa-chevron-down"></i> π 1 files</div> | |
| <div class="arch-full-list"> | |
| <button class="arch-copy-btn" onclick="copyArchFiles(this,'.codegraph/')">π Copy All</button> | |
| <div><code>.codegraph/cg_shim.py</code></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="arch-card arch-entry"> | |
| <div class="arch-card-header"><span>π Zero-Symbol Files</span><span class="arch-count">17 files</span></div> | |
| <div class="arch-card-body"> | |
| <div class="arch-toggle open" onclick="toggleArchFiles(this)"><i class="fa-solid fa-chevron-down"></i> π 17 files</div> | |
| <div class="arch-full-list"> | |
| <button class="arch-copy-btn" onclick="copyArchFiles(this,'π Zero-Symbol Files')">π Copy All</button> | |
| <div><code>libs/chronos-forecasting/.github/ISSUE_TEMPLATE/config.yml</code></div><div><code>libs/chronos-forecasting/.github/workflows/ci.yml</code></div><div><code>libs/chronos-forecasting/.github/workflows/eval-model.yml</code></div><div><code>libs/chronos-forecasting/.github/workflows/publish-to-pypi.yml</code></div><div><code>libs/chronos-forecasting/ci/evaluate/backtest_config.yaml</code></div><div><code>libs/chronos-forecasting/scripts/evaluation/configs/in-domain.yaml</code></div><div><code>libs/chronos-forecasting/scripts/evaluation/configs/zero-shot.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-gpt2.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-base.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-large.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-mini.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-small.yaml</code></div><div><code>libs/chronos-forecasting/scripts/training/configs/chronos-t5-tiny.yaml</code></div><div><code>libs/timesfm/.github/workflows/main.yml</code></div><div><code>libs/timesfm/.github/workflows/manual_publish.yml</code></div><div><code>scratch/Kronos-upstream/finetune_csv/configs/config_ali09988_candle-5min.yaml</code></div><div><code>scratch/tradingagents-audit/docker-compose.yml</code></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="main-layout"> | |
| <div class="panel full"> | |
| <div class="panel-title"><i class="fa-solid fa-folder-open"></i> File Tree</div> | |
| <div class="file-tree-container"><ul><li class="tree-leaf"><span class="tree-file py">app.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">.codegraph/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">cg_shim.py</span> <span class="tree-meta">16 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">backend/ <span class="tree-meta">(70)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">1 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">analysis_engine.py</span> <span class="tree-meta">119 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">analysis_report.py</span> <span class="tree-meta">34 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">api_facade.py</span> <span class="tree-meta">4 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">api_models.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">cache_utils.py</span> <span class="tree-meta">28 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">catalog_utils.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">forecast_service.py</span> <span class="tree-meta">30 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">forecast_worker_entry.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">forecast_worker_protocol.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">forecast_worker_supervisor.py</span> <span class="tree-meta">40 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">frontend_assets.py</span> <span class="tree-meta">20 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">kronos_adapter.py</span> <span class="tree-meta">39 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">launcher.py</span> <span class="tree-meta">35 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">main.py</span> <span class="tree-meta">378 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">market_data_contracts.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">market_utils.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">observability_utils.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">price_sanity.py</span> <span class="tree-meta">14 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">runtime_utils.py</span> <span class="tree-meta">34 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">security_utils.py</span> <span class="tree-meta">12 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">server_runtime.py</span> <span class="tree-meta">18 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">startup_utils.py</span> <span class="tree-meta">15 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">symbol_utils.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">system_integration.py</span> <span class="tree-meta">35 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_ai_score_utils.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_api_models.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_api_regressions.py</span> <span class="tree-meta">121 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_cache_utils.py</span> <span class="tree-meta">16 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_catalog_utils.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_chronos_provider.py</span> <span class="tree-meta">22 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_env_example_contract.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_forecast_service.py</span> <span class="tree-meta">32 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_frontend_assets.py</span> <span class="tree-meta">15 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_frontend_resource_contract.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_frontend_static_contract.py</span> <span class="tree-meta">28 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_kronos_meta_compat.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_launcher.py</span> <span class="tree-meta">17 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_market_utils.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_observability_utils.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_ohlc4_utils.py</span> <span class="tree-meta">11 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_playwright_smoke_contract.py</span> <span class="tree-meta">11 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_price_sanity.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_runtime_health_contract.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_runtime_resource_contract.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_runtime_unavailable_messages.py</span> <span class="tree-meta">12 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_runtime_utils.py</span> <span class="tree-meta">16 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_security_utils.py</span> <span class="tree-meta">14 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_server_runtime.py</span> <span class="tree-meta">23 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_startup_utils.py</span> <span class="tree-meta">22 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_static_quality_contract.py</span> <span class="tree-meta">9 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_symbol_utils.py</span> <span class="tree-meta">9 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_system_integration.py</span> <span class="tree-meta">12 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_timesfm_env.py</span> <span class="tree-meta">11 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_timesfm_provider.py</span> <span class="tree-meta">19 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_timesfm_setup_contract.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">timesfm_env.py</span> <span class="tree-meta">18 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">forecasting/ <span class="tree-meta">(9)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">4 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">ai_score_utils.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">config.py</span> <span class="tree-meta">9 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">ohlc4_utils.py</span> <span class="tree-meta">12 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">rules.py</span> <span class="tree-meta">10 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">runtime_availability.py</span> <span class="tree-meta">3 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">providers/ <span class="tree-meta">(3)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">4 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">chronos_provider.py</span> <span class="tree-meta">51 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">timesfm_provider.py</span> <span class="tree-meta">42 syms</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">kronos_core/ <span class="tree-meta">(4)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">1 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">model/ <span class="tree-meta">(3)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">4 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">kronos.py</span> <span class="tree-meta">34 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">module.py</span> <span class="tree-meta">67 syms</span></li></ul></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">frontend/ <span class="tree-meta">(5)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file js">ai-session-runtime.js</span> <span class="tree-meta">26 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file js">analysis-runtime.js</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file js">app.js</span> <span class="tree-meta">288 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file js">forecast-models.js</span> <span class="tree-meta">4 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file js">workspace.js</span> <span class="tree-meta">55 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">libs/ <span class="tree-meta">(97)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">chronos-forecasting/ <span class="tree-meta">(39)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">.github/ <span class="tree-meta">(4)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">ISSUE_TEMPLATE/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file yaml">config.yml</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">workflows/ <span class="tree-meta">(3)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file yaml">ci.yml</span></li> | |
| <li class="tree-leaf"><span class="tree-file yaml">eval-model.yml</span></li> | |
| <li class="tree-leaf"><span class="tree-file yaml">publish-to-pypi.yml</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">ci/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">evaluate/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file yaml">backtest_config.yaml</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">scripts/ <span class="tree-meta">(12)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">kernel-synth.py</span> <span class="tree-meta">21 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">evaluation/ <span class="tree-meta">(4)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">agg-relative-score.py</span> <span class="tree-meta">9 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">evaluate.py</span> <span class="tree-meta">27 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">configs/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(2 files -- depth limit)</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">training/ <span class="tree-meta">(7)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">train.py</span> <span class="tree-meta">51 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">configs/ <span class="tree-meta">(6)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(6 files -- depth limit)</span></li></ul></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">src/ <span class="tree-meta">(15)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">chronos/ <span class="tree-meta">(15)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__about__.py</span> <span class="tree-meta">2 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">base.py</span> <span class="tree-meta">26 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">boto_utils.py</span> <span class="tree-meta">16 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">chronos.py</span> <span class="tree-meta">39 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">chronos_bolt.py</span> <span class="tree-meta">41 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">df_utils.py</span> <span class="tree-meta">9 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">utils.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">chronos2/ <span class="tree-meta">(7)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(7 files -- depth limit)</span></li></ul></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">test/ <span class="tree-meta">(7)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">1 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_chronos.py</span> <span class="tree-meta">22 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_chronos2.py</span> <span class="tree-meta">47 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_chronos_bolt.py</span> <span class="tree-meta">27 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_df_utils.py</span> <span class="tree-meta">22 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_utils.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">util.py</span> <span class="tree-meta">12 syms</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">timesfm/ <span class="tree-meta">(58)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">.github/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">workflows/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file yaml">main.yml</span></li> | |
| <li class="tree-leaf"><span class="tree-file yaml">manual_publish.yml</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">src/ <span class="tree-meta">(16)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">timesfm/ <span class="tree-meta">(16)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">configs.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">flax/ <span class="tree-meta">(5)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(5 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">timesfm_2p5/ <span class="tree-meta">(3)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(3 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">torch/ <span class="tree-meta">(5)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(5 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">utils/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(1 files -- depth limit)</span></li></ul></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">tests/ <span class="tree-meta">(5)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">1 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_base_utils.py</span> <span class="tree-meta">21 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_configs.py</span> <span class="tree-meta">18 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_torch_layers.py</span> <span class="tree-meta">24 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_torch_utils.py</span> <span class="tree-meta">25 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">timesfm-forecasting/ <span class="tree-meta">(10)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">examples/ <span class="tree-meta">(8)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">anomaly-detection/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(1 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">covariates-forecasting/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(1 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">finetuning/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(1 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">global-temperature/ <span class="tree-meta">(5)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(5 files -- depth limit)</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">scripts/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">check_system.py</span> <span class="tree-meta">35 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">forecast_csv.py</span> <span class="tree-meta">14 syms</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">v1/ <span class="tree-meta">(25)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">experiments/ <span class="tree-meta">(6)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">baselines/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(2 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">extended_benchmarks/ <span class="tree-meta">(3)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(3 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">long_horizon_benchmarks/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(1 files -- depth limit)</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">peft/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">finetune.py</span> <span class="tree-meta">38 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">src/ <span class="tree-meta">(16)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">adapter/ <span class="tree-meta">(4)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(4 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">finetuning/ <span class="tree-meta">(3)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(3 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">timesfm/ <span class="tree-meta">(9)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(9 files -- depth limit)</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">tests/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">test_data_loader.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_timesfm.py</span> <span class="tree-meta">8 syms</span></li></ul></li></ul></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">scratch/ <span class="tree-meta">(107)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">Kronos-upstream/ <span class="tree-meta">(31)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">examples/ <span class="tree-meta">(11)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">get_akshare_date_2024-2025_x.py</span> <span class="tree-meta">21 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">get_date_new.py</span> <span class="tree-meta">19 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">prediction_akshare_2024-2025.py</span> <span class="tree-meta">17 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">prediction_batch_example.py</span> <span class="tree-meta">19 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">prediction_cn_markets_day.py</span> <span class="tree-meta">26 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">prediction_example.py</span> <span class="tree-meta">17 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">prediction_new.py</span> <span class="tree-meta">44 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">prediction_new_GUI.py</span> <span class="tree-meta">66 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">prediction_wo_vol_example.py</span> <span class="tree-meta">17 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">run_backtest_kronos.py</span> <span class="tree-meta">18 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">yuce/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">historical_backtest.py</span> <span class="tree-meta">18 syms</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">finetune/ <span class="tree-meta">(8)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">config.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">dataset.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">qlib_data_preprocess.py</span> <span class="tree-meta">17 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">qlib_test.py</span> <span class="tree-meta">34 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">train_predictor.py</span> <span class="tree-meta">20 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">train_tokenizer.py</span> <span class="tree-meta">23 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">utils/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">1 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">training_utils.py</span> <span class="tree-meta">13 syms</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">finetune_csv/ <span class="tree-meta">(5)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">config_loader.py</span> <span class="tree-meta">26 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">finetune_base_model.py</span> <span class="tree-meta">32 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">finetune_tokenizer.py</span> <span class="tree-meta">27 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">train_sequential.py</span> <span class="tree-meta">23 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">configs/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file yaml">config_ali09988_candle-5min.yaml</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">model/ <span class="tree-meta">(3)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">4 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">kronos.py</span> <span class="tree-meta">29 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">module.py</span> <span class="tree-meta">67 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">tests/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">test_kronos_regression.py</span> <span class="tree-meta">30 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">data/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">generate_regression_output.py</span> <span class="tree-meta">21 syms</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">webui/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">app.py</span> <span class="tree-meta">39 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">run.py</span> <span class="tree-meta">9 syms</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">tradingagents-audit/ <span class="tree-meta">(76)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file yaml">docker-compose.yml</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">main.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">cli/ <span class="tree-meta">(7)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">1 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">announcements.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">config.py</span> <span class="tree-meta">2 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">main.py</span> <span class="tree-meta">67 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">models.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">stats_handler.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">utils.py</span> <span class="tree-meta">26 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">scripts/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">smoke_structured_output.py</span> <span class="tree-meta">16 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">tests/ <span class="tree-meta">(10)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">conftest.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_checkpoint_resume.py</span> <span class="tree-meta">19 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_deepseek_reasoning.py</span> <span class="tree-meta">22 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_google_api_key.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_memory_log.py</span> <span class="tree-meta">87 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_model_validation.py</span> <span class="tree-meta">15 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_safe_ticker_component.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_signal_processing.py</span> <span class="tree-meta">18 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_structured_agents.py</span> <span class="tree-meta">25 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_ticker_symbol_handling.py</span> <span class="tree-meta">8 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">tradingagents/ <span class="tree-meta">(55)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">1 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">default_config.py</span> <span class="tree-meta">4 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">agents/ <span class="tree-meta">(23)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">16 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">schemas.py</span> <span class="tree-meta">12 syms</span></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">analysts/ <span class="tree-meta">(4)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(4 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">managers/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(2 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">researchers/ <span class="tree-meta">(2)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(2 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">risk_mgmt/ <span class="tree-meta">(3)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(3 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">trader/ <span class="tree-meta">(1)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(1 files -- depth limit)</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">utils/ <span class="tree-meta">(9)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-meta">(9 files -- depth limit)</span></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">dataflows/ <span class="tree-meta">(13)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">1 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">alpha_vantage.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">alpha_vantage_common.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">alpha_vantage_fundamentals.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">alpha_vantage_indicator.py</span> <span class="tree-meta">3 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">alpha_vantage_news.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">alpha_vantage_stock.py</span> <span class="tree-meta">4 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">config.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">interface.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">stockstats_utils.py</span> <span class="tree-meta">18 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">utils.py</span> <span class="tree-meta">15 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">y_finance.py</span> <span class="tree-meta">17 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">yfinance_news.py</span> <span class="tree-meta">8 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">graph/ <span class="tree-meta">(8)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">8 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">checkpointer.py</span> <span class="tree-meta">15 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">conditional_logic.py</span> <span class="tree-meta">10 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">propagation.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">reflection.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">setup.py</span> <span class="tree-meta">10 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">signal_processing.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">trading_graph.py</span> <span class="tree-meta">34 syms</span></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">llm_clients/ <span class="tree-meta">(9)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">__init__.py</span> <span class="tree-meta">4 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">anthropic_client.py</span> <span class="tree-meta">12 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">azure_client.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">base_client.py</span> <span class="tree-meta">11 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">factory.py</span> <span class="tree-meta">5 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">google_client.py</span> <span class="tree-meta">11 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">model_catalog.py</span> <span class="tree-meta">7 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">openai_client.py</span> <span class="tree-meta">21 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">validators.py</span> <span class="tree-meta">4 syms</span></li></ul></li></ul></li></ul></li></ul></li> | |
| <li class="tree-branch"><span class="dir-toggle" onclick="toggleDir(this)"><i class="fa-solid fa-chevron-right"></i><span class="dir-name">scripts/ <span class="tree-meta">(6)</span></span></span><ul class="dir-children" style="display:none"><li class="tree-leaf"><span class="tree-file py">check_timesfm_env.py</span> <span class="tree-meta">6 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">patch_timesfm.py</span> <span class="tree-meta">13 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file js">playwright_smoke.js</span> <span class="tree-meta">15 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">scratch_cleanup.py</span> <span class="tree-meta">31 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">test_scratch_cleanup.py</span> <span class="tree-meta">21 syms</span></li> | |
| <li class="tree-leaf"><span class="tree-file py">verify_local.py</span> <span class="tree-meta">13 syms</span></li></ul></li></ul></div> | |
| </div> | |
| </div> | |
| <div class="toast" id="toast"></div> | |
| <script> | |
| var zoom=1.0,panX=0,panY=0,MAX_ZOOM=5.0,MIN_ZOOM=0.3,ZOOM_STEP=0.25,isPanning=false,startX=0,startY=0,activeDiagram=0; | |
| var totalDiagrams=1; | |
| var allWraps=[],allInners=[],allSvgs=[]; | |
| function init(){ | |
| for(var i=0;i<totalDiagrams;i++){ | |
| var w=document.getElementById('diagramWrap'+i),inn=document.getElementById('diagramInner'+i); | |
| if(w&&inn){allWraps.push(w);allInners.push(inn);setupPanZoom(w,i);} | |
| } | |
| setTimeout(function(){ | |
| var nodes=document.querySelectorAll('.tree-root .tree-toggle'); | |
| for(var j=0;j<Math.min(5,nodes.length);j++)toggleNode(nodes[j]); | |
| var top=document.querySelectorAll('.file-tree-container>ul>.tree-branch'); | |
| for(var k=0;k<Math.min(5,top.length);k++){var t=top[k].querySelector('.dir-toggle');if(t)toggleDir(t);} | |
| },500); | |
| document.addEventListener('keydown',onGlobalKey); | |
| } | |
| function setupPanZoom(wrap,idx){ | |
| wrap.addEventListener('wheel',function(e){onWheel(e);},{passive:false}); | |
| wrap.addEventListener('mousedown',function(e){onPanStart(e);}); | |
| window.addEventListener('mousemove',function(e){onPanMove(e);}); | |
| window.addEventListener('mouseup',onPanEnd); | |
| } | |
| function waitForSvg(inner,cb){var s=inner.querySelector('svg');if(s){cb(s);return}var obs=new MutationObserver(function(ms,o){var s=inner.querySelector('svg');if(s){o.disconnect();cb(s)}});obs.observe(inner,{childList:true,subtree:true});setTimeout(function(){obs.disconnect();var s=inner.querySelector('svg');if(s)cb(s)},3000)} | |
| function collectSvgs(){allSvgs=[];for(var i=0;i<allInners.length;i++){var s=allInners[i].querySelectorAll('svg');for(var j=0;j<s.length;j++)allSvgs.push(s[j])}} | |
| function applyTransform(){for(var i=0;i<allInners.length;i++)allInners[i].style.transform='translate('+panX+'px,'+panY+'px)';for(var j=0;j<allSvgs.length;j++){allSvgs[j].style.transform='scale('+zoom+')';allSvgs[j].style.transformOrigin='0 0'}var d=document.getElementById('zoomLevel');if(d)d.textContent=Math.round(zoom*100)+'%'} | |
| function onWheel(e){e.preventDefault();var wrap=allWraps[activeDiagram]||allWraps[0];if(!wrap)return;var rect=wrap.getBoundingClientRect(),mx=e.clientX-rect.left,my=e.clientY-rect.top,old=zoom;if(e.deltaY<0)zoom=Math.min(MAX_ZOOM,zoom+ZOOM_STEP);else zoom=Math.max(MIN_ZOOM,zoom-ZOOM_STEP);var ratio=zoom/old;panX=mx-ratio*(mx-panX);panY=my-ratio*(my-panY);applyTransform()} | |
| function onPanStart(e){if(e.target.closest('button,.zoom-group'))return;isPanning=true;startX=e.clientX-panX;startY=e.clientY-panY;var wrap=allWraps[activeDiagram]||allWraps[0];if(wrap)wrap.classList.add('panning');e.preventDefault()} | |
| function onPanMove(e){if(!isPanning)return;panX=e.clientX-startX;panY=e.clientY-startY;applyTransform()} | |
| function onPanEnd(){isPanning=false;for(var i=0;i<allWraps.length;i++)allWraps[i].classList.remove('panning')} | |
| function zoomIn(){if(zoom<MAX_ZOOM){zoom=Math.min(MAX_ZOOM,zoom+ZOOM_STEP);applyTransform()}} | |
| function zoomOut(){if(zoom>MIN_ZOOM){zoom=Math.max(MIN_ZOOM,zoom-ZOOM_STEP);applyTransform()}} | |
| function zoomReset(){zoom=1.0;panX=0;panY=0;applyTransform()} | |
| function switchDiagram(idx){activeDiagram=idx;for(var i=0;i<totalDiagrams;i++){var p=document.getElementById('diagramPanel'+i);if(p)p.classList.toggle('active',i===idx)}var tabs=document.querySelectorAll('.diagram-tab');for(var j=0;j<tabs.length;j++)tabs[j].classList.toggle('active',j===idx);zoom=1.0;panX=0;panY=0;setTimeout(function(){collectSvgs();applyTransform()},200)} | |
| function toggleNode(el){el.classList.toggle('active');var c=el.nextElementSibling;if(c)c.classList.toggle('show')} | |
| function toggleDir(el){el.classList.toggle('expanded');var c=el.nextElementSibling;if(c)c.style.display=c.style.display==='none'?'block':'none'} | |
| function toggleArchFiles(el){el.classList.toggle('open');var list=el.nextElementSibling;if(list)list.style.display=el.classList.contains('open')?'block':'none'} | |
| function expandAll(){document.querySelectorAll('.tree-toggle').forEach(function(t){if(!t.classList.contains('active'))toggleNode(t)});document.querySelectorAll('.dir-toggle').forEach(function(d){if(!d.classList.contains('expanded'))toggleDir(d)});document.querySelectorAll('.arch-toggle').forEach(function(a){if(!a.classList.contains('open'))toggleArchFiles(a)});toastMsg('All nodes expanded')} | |
| function collapseAll(){document.querySelectorAll('.tree-toggle.active').forEach(function(t){toggleNode(t)});document.querySelectorAll('.dir-toggle.expanded').forEach(function(d){toggleDir(d)});document.querySelectorAll('.arch-toggle.open').forEach(function(a){toggleArchFiles(a)});toastMsg('All nodes collapsed')} | |
| function copyArchFiles(btn,label){var list=btn.parentElement,codes=list.querySelectorAll('code'),paths=[];for(var i=0;i<codes.length;i++)paths.push(codes[i].textContent);navigator.clipboard.writeText(paths.join('\n')).then(function(){btn.textContent='β Copied!';btn.classList.add('copied');setTimeout(function(){btn.textContent='π Copy All';btn.classList.remove('copied')},2000)}).catch(function(){var ta=document.createElement('textarea');ta.value=paths.join('\n');ta.style.position='fixed';ta.style.opacity='0';document.body.appendChild(ta);ta.select();document.execCommand('copy');document.body.removeChild(ta);btn.textContent='β Copied!';btn.classList.add('copied');setTimeout(function(){btn.textContent='π Copy All';btn.classList.remove('copied')},2000)})} | |
| function onSearch(val){var clear=document.getElementById('searchClear');if(clear)clear.classList.toggle('visible',val.length>0);var q=val.toLowerCase().trim();if(!q){clearFilter();return} | |
| document.querySelectorAll('.tree-leaf,.tree-branch,.arch-card,.info-card,.tree-node').forEach(function(el){el.classList.toggle('filtered',!el.textContent.toLowerCase().includes(q))}); | |
| document.querySelectorAll('.api-table tbody tr').forEach(function(el){el.classList.toggle('filtered',!el.textContent.toLowerCase().includes(q))})} | |
| function clearFilter(){document.getElementById('globalSearch').value='';document.getElementById('searchClear').classList.remove('visible');document.querySelectorAll('.filtered').forEach(function(el){el.classList.remove('filtered')})} | |
| function clearSearch(){clearFilter();document.getElementById('globalSearch').focus()} | |
| function onSearchKey(e){if(e.key==='Escape')clearSearch()} | |
| function toggleTheme(){var html=document.documentElement,current=html.getAttribute('data-theme'),next=current==='dark'?'light':'dark';html.setAttribute('data-theme',next);localStorage.setItem('codegraph-theme',next);try{mermaid.initialize({theme:next==='dark'?'dark':'default',securityLevel:'loose',flowchart:{useMaxWidth:true,htmlLabels:true,curve:'cardinal'}})}catch(e){};setTimeout(function(){collectSvgs();applyTransform()},100);toastMsg('Theme: '+next)} | |
| function exportJSON(){var data={project_name:'AI Forecast',generation_time:'2026-06-22 08:58:12'};downloadFile('workflow_tree.json','application/json',JSON.stringify(data,null,2));toastMsg('JSON exported')} | |
| function exportMarkdown(){var md='# Workflow Tree β AI Forecast\n\nGenerated: 2026-06-22 08:58:12\n\n## Statistics\n- Files: 287\n- Symbols: 5435\n- Imports: 1562\n- Edges: 13503\n';downloadFile('workflow_tree.md','text/markdown',md);toastMsg('Markdown exported')} | |
| function exportPNG(){var svg=allSvgs[0];if(!svg){toastMsg('No diagram to export');return}var svgData=new XMLSerializer().serializeToString(svg),canvas=document.createElement('canvas'),ctx=canvas.getContext('2d'),img=new Image();img.onload=function(){canvas.width=img.width*2;canvas.height=img.height*2;ctx.scale(2,2);ctx.drawImage(img,0,0);canvas.toBlob(function(blob){var url=URL.createObjectURL(blob),a=document.createElement('a');a.href=url;a.download='workflow_diagram.png';a.click();URL.revokeObjectURL(url);toastMsg('PNG exported')},'image/png')};img.src='data:image/svg+xml;base64,'+btoa(unescape(encodeURIComponent(svgData)))} | |
| function downloadFile(name,mime,content){var blob=new Blob([content],{type:mime}),url=URL.createObjectURL(blob),a=document.createElement('a');a.href=url;a.download=name;a.click();URL.revokeObjectURL(url)} | |
| function toggleDropdown(id){var menu=document.getElementById(id),wasOpen=menu.classList.contains('show');document.querySelectorAll('.dropdown-menu.show').forEach(function(m){m.classList.remove('show')});if(!wasOpen)menu.classList.add('show')} | |
| function toastMsg(msg){var el=document.getElementById('toast');el.textContent=msg;el.classList.add('show');clearTimeout(el._timeout);el._timeout=setTimeout(function(){el.classList.remove('show')},2000)} | |
| function onGlobalKey(e){if(e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA'){if(e.key==='Escape'){e.target.blur();clearFilter()}return}switch(e.key){case '/':e.preventDefault();document.getElementById('globalSearch').focus();break;case 't':case 'T':toggleTheme();break;case 'f':case 'F':if(e.shiftKey)collapseAll();else expandAll();break;case 'r':case 'R':zoomReset();break;case 'Escape':clearFilter();break}} | |
| document.addEventListener('click',function(e){if(!e.target.closest('.dropdown'))document.querySelectorAll('.dropdown-menu.show').forEach(function(m){m.classList.remove('show')})}); | |
| (function(){var saved=localStorage.getItem('codegraph-theme');if(saved)document.documentElement.setAttribute('data-theme',saved)})(); | |
| document.addEventListener('DOMContentLoaded',function(){init();waitForSvg(allInners[0]||document.getElementById('diagramInner0'),function(){collectSvgs();applyTransform()})}); | |
| </script> | |
| </body> | |
| </html> | |