@vheins/local-memory-mcp 0.8.43 → 0.8.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ @import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;700&display=swap";:root{--glass-bg:#ffffff85;--glass-bg-strong:#ffffffb8;--glass-bg-ultra:#ffffffe0;--glass-border:#fff6;--glass-border-inner:#ffffffb3;--glass-shadow:0 20px 70px #0f172a1a, 0 4px 16px #0f172a0f;--glass-shadow-elevated:0 32px 96px #0f172a29, 0 8px 32px #0f172a14;--glass-blur:blur(28px) saturate(1.2);--panel-dark:#060c1cb3;--panel-dark-strong:#040916e0;--panel-dark-ultra:#020610f5;--panel-dark-border:#94a3b81a;--panel-dark-border-glow:#38bdf833;--panel-dark-shadow:0 28px 90px #02061799, inset 0 1px 0 #94a3b80f;--glow-primary:#0ea5e959;--glow-accent:#6366f159;--glow-success:#10b98159;--glow-danger:#ef444459;--glow-purple:#a855f759;--glow-cyan:#06b6d459;--sidebar-width:280px;--sidebar-collapsed-width:72px;--header-height:60px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-2xl:24px;--color-bg:#f0f8ff;--color-surface:#fff;--color-border:#e1ecf7;--color-text:#0a1628;--color-text-muted:#556f8a;--color-text-faint:#8faec4;--color-primary:#0ea5e9;--color-primary-dark:#0284c7;--color-primary-light:#38bdf8;--color-accent:#6366f1;--color-accent-dark:#4f46e5;--color-success:#10b981;--color-warning:#f59e0b;--color-danger:#ef4444;--color-purple:#a855f7;--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-smooth:cubic-bezier(.4, 0, .2, 1);--ease-expo:cubic-bezier(.16, 1, .3, 1);--duration-fast:.15s;--duration-base:.25s;--duration-slow:.4s}.dark{--color-bg:#010c1e;--color-surface:#070f1f;--color-border:#94a3b81a;--color-text:#e9f1fa;--color-text-muted:#7fa3be;--color-text-faint:#4a6782;--color-primary:#38bdf8;--color-primary-dark:#0ea5e9;--color-primary-light:#7dd3fc}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(at 8% 10%,#38bdf847 0%,#0000 38%),radial-gradient(at 92% 8%,#6366f12e 0%,#0000 32%),radial-gradient(at 75% 88%,#a855f71f 0%,#0000 28%),radial-gradient(at 20% 75%,#0ea5e91a 0%,#0000 26%),linear-gradient(160deg,#eef8ff 0%,#f0f4ff 45%,#f5f0ff 100%) fixed;min-height:100vh;font-family:Inter,system-ui,sans-serif;font-size:16px;line-height:1.5;transition:background .5s}html.dark{background:radial-gradient(at 8% 10%,#0ea5e924 0%,#0000 38%),radial-gradient(at 92% 8%,#4338ca1f 0%,#0000 32%),radial-gradient(at 75% 88%,#581c871a 0%,#0000 28%),radial-gradient(at 20% 75%,#0ea5e90f 0%,#0000 26%),linear-gradient(160deg,#010c1e 0%,#040d1e 45%,#050c1a 100%) fixed}body{min-height:100vh;color:var(--color-text);transition:color var(--duration-base) ease;background:0 0;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.3}code,pre{font-family:JetBrains Mono,Fira Code,monospace}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-dark)}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#94a3b840;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#94a3b873}.dark ::-webkit-scrollbar-thumb{background:#3341558c}.glass{background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:var(--glass-blur);position:relative}.glass:before{content:"";border-radius:inherit;border:1px solid var(--glass-border-inner);opacity:.6;pointer-events:none;z-index:0;border-bottom-color:#0000;border-right-color:#0000;position:absolute;inset:0}.dark .glass{background:var(--panel-dark);border-color:var(--panel-dark-border);box-shadow:var(--panel-dark-shadow)}.dark .glass:before{opacity:.8;border-color:#94a3b812 #0000 #0000 #94a3b812}.glass-strong{background:var(--glass-bg-strong)!important}.dark .glass-strong{background:var(--panel-dark-strong)!important}.glass-card{border-radius:var(--radius-lg);padding:20px;position:relative;overflow:hidden}.glass-card:after{content:"";border-radius:inherit;pointer-events:none;z-index:0;background:linear-gradient(135deg,#ffffff14 0%,#0000 60%);position:absolute;inset:0}.dark .glass-card:after{background:linear-gradient(135deg,#94a3b80a 0%,#0000 60%)}.app-layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);height:100dvh;transition:width .3s var(--ease-smooth);z-index:40;position:fixed;top:0;left:0;overflow:hidden}.sidebar.collapsed{width:var(--sidebar-collapsed-width)}.main-content{min-width:0;margin-left:var(--sidebar-width);transition:margin-left .3s var(--ease-smooth);flex:1}.dashboard-shell{min-width:0;min-height:100vh;padding:20px}.sidebar.collapsed~.main-content,.main-content.sidebar-collapsed{margin-left:var(--sidebar-collapsed-width)}@media (width<=1024px){.app-layout>.sidebar{display:none!important}.main-content{margin-left:0!important}}.mobile-sidebar-shell{z-index:39;flex-direction:column;width:min(320px,86vw);height:100dvh;display:flex;position:fixed;inset:0 auto 0 0}.mobile-sidebar-shell .sidebar{width:100%!important;height:100dvh!important;display:flex!important;position:relative!important}.top-bar{z-index:30;position:sticky;top:0}.tab-nav{border-radius:var(--radius-md);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f1f5f9b3;border:1px solid #e2e8f0cc;gap:3px;padding:4px;display:flex}.tabs-wrap{scrollbar-width:none;max-width:100%;margin-bottom:20px;overflow:auto hidden}.tabs-wrap::-webkit-scrollbar{display:none}.dark .tab-nav{background:#0f172a99;border-color:#94a3b81a}.tab-btn{color:var(--color-text-muted);transition:all var(--duration-base) var(--ease-smooth);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:9px;align-items:center;gap:6px;padding:7px 14px;font-size:.8rem;font-weight:600;display:flex;position:relative;overflow:hidden}.tab-btn:after{content:"";opacity:0;transition:opacity var(--duration-base) ease;pointer-events:none;background:radial-gradient(circle,#0ea5e91f,#0000 70%);position:absolute;inset:0}.tab-btn:hover{color:var(--color-text)}.tab-btn:hover:after{opacity:1}.dark .tab-btn:hover{color:var(--color-text)}.tab-btn.active{color:var(--color-primary);background:#fff;box-shadow:0 2px 10px #00000012,0 1px 3px #0000000d}.tab-btn.active:after{opacity:0}.dark .tab-btn.active{color:#7dd3fc;background:#0a1226f2;box-shadow:0 0 0 1px #38bdf833,0 4px 12px #00000059}.btn{border-radius:var(--radius-md);transition:all var(--duration-base) var(--ease-smooth);cursor:pointer;white-space:nowrap;border:1px solid #0000;align-items:center;gap:6px;padding:8px 16px;font-size:.8rem;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";opacity:0;transition:opacity var(--duration-fast) ease;pointer-events:none;background:linear-gradient(135deg,#ffffff26 0%,#0000 100%);position:absolute;inset:0}.btn:hover:after{opacity:1}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);color:#fff;box-shadow:0 4px 14px var(--glow-primary), inset 0 1px 0 #fff3;border-color:#0284c780}.btn-primary:hover{box-shadow:0 6px 20px var(--glow-primary), inset 0 1px 0 #fff3;transform:translateY(-1px)}.dark .btn-primary{color:#7dd3fc;background:linear-gradient(135deg,#0ea5e933 0%,#0284c71f 100%);border-color:#0ea5e966;box-shadow:inset 0 0 0 1px #0ea5e926,0 4px 14px #0ea5e92e}.dark .btn-primary:hover{color:#bae6fd;background:linear-gradient(135deg,#0ea5e94d 0%,#0284c733 100%);box-shadow:inset 0 0 0 1px #38bdf840,0 6px 20px #0ea5e947}.btn-accent{background:linear-gradient(135deg, var(--color-accent) 0%, var(--color-accent-dark) 100%);color:#fff;box-shadow:0 4px 14px var(--glow-accent), inset 0 1px 0 #fff3;border-color:#4f46e580}.btn-accent:hover{box-shadow:0 6px 20px var(--glow-accent), inset 0 1px 0 #fff3;transform:translateY(-1px)}.dark .btn-accent{color:#a5b4fc;background:linear-gradient(135deg,#6366f138 0%,#4f46e524 100%);border-color:#6366f16b;box-shadow:inset 0 0 0 1px #6366f126}.dark .btn-accent:hover{color:#c7d2fe;background:linear-gradient(135deg,#6366f152 0%,#4f46e538 100%);box-shadow:inset 0 0 0 1px #818cf84d,0 6px 20px #6366f147}.btn-ghost{color:var(--color-text-muted);border-color:var(--color-border);background:0 0}.btn-ghost:hover{color:var(--color-text);background:#f1f5f9cc;border-color:#0ea5e933}.dark .btn-ghost:hover{background:#1e293bb3;border-color:#94a3b833}.btn-sm{padding:5px 10px;font-size:.72rem}.btn-icon{border-radius:var(--radius-sm);padding:7px}.btn-icon-lg{border-radius:var(--radius-md);padding:9px}.form-input,.form-select,.form-textarea{border-radius:var(--radius-md);border:1px solid var(--color-border);width:100%;color:var(--color-text);transition:all var(--duration-base) var(--ease-smooth);background:#ffffffa6;outline:none;padding:8px 12px;font-family:inherit;font-size:.85rem}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-primary);background:#ffffffd9;box-shadow:0 0 0 3px #0ea5e924,0 2px 8px #0ea5e914}.dark .form-input,.dark .form-select,.dark .form-textarea{color:var(--color-text);background:#0a1226a6;border-color:#94a3b82e}.dark .form-input:focus,.dark .form-select:focus,.dark .form-textarea:focus{background:#0a1226d9;border-color:#38bdf880;box-shadow:0 0 0 3px #38bdf81f,0 0 16px #38bdf814}.card{border-radius:var(--radius-lg);padding:20px}.stat-card{border-radius:var(--radius-md);transition:transform var(--duration-base) var(--ease-spring), box-shadow var(--duration-base) ease;padding:12px 14px}.stat-card:hover{box-shadow:var(--glass-shadow-elevated);transform:translateY(-3px)}.dark .stat-card:hover{box-shadow:0 32px 96px #020617b3,0 0 24px #38bdf80f}.type-chip{text-transform:uppercase;letter-spacing:.07em;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all var(--duration-base) ease;border:1px solid #0000;border-radius:9999px;align-items:center;gap:4px;padding:.2rem .6rem;font-size:.62rem;font-weight:700;display:inline-flex}.type-decision{color:#1565c0;background:linear-gradient(135deg,#2196f324,#1976d214);border-color:#2196f34d}.type-mistake{color:#c62828;background:linear-gradient(135deg,#f4433624,#d32f2f14);border-color:#f443364d}.type-code_fact{color:#6a1b9a;background:linear-gradient(135deg,#9c27b024,#7b1fa214);border-color:#9c27b04d}.type-pattern{color:#1b5e20;background:linear-gradient(135deg,#388e3c24,#1b5e2014);border-color:#388e3c4d}.type-file_claim{color:#006064;background:linear-gradient(135deg,#00bcd424,#0097a714);border-color:#00bcd44d}.type-task_archive{color:#3e2723;background:linear-gradient(135deg,#79554824,#5d403714);border-color:#7955484d}.dark .type-decision{color:#7dd3fc;background:linear-gradient(135deg,#38bdf833,#0ea5e914);border-color:#38bdf852}.dark .type-mistake{color:#fda4af;background:linear-gradient(135deg,#fb718533,#f43f5e14);border-color:#fb718552}.dark .type-code_fact{color:#d8b4fe;background:linear-gradient(135deg,#c084fc33,#a78bfa14);border-color:#c084fc52}.dark .type-pattern{color:#6ee7b7;background:linear-gradient(135deg,#34d39933,#10b98114);border-color:#34d39952}.dark .type-file_claim{color:#67e8f9;background:linear-gradient(135deg,#22d3ee33,#06b6d414);border-color:#22d3ee52}.dark .type-task_archive{color:#d4a08a;background:linear-gradient(135deg,#b4786433,#965a4614);border-color:#b4786452}.status-chip{text-transform:uppercase;letter-spacing:.05em;transition:all var(--duration-base) ease;border-radius:9999px;align-items:center;gap:4px;padding:2px 10px;font-size:.62rem;font-weight:700;display:inline-flex}.status-chip:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:5px;height:5px;display:inline-block}.status-backlog{color:#64748b;background:#64748b1f;border:1px solid #64748b47}.status-pending{color:#475569;background:#94a3b81f;border:1px solid #94a3b847}.status-inprogress{color:#0284c7;background:#38bdf81f;border:1px solid #38bdf847}.status-completed{color:#059669;background:#10b9811f;border:1px solid #10b98147}.status-blocked{color:#dc2626;background:#ef44441f;border:1px solid #ef444447}.status-canceled{color:#9ca3af;background:#9ca3af14;border:1px solid #9ca3af2e}.status-default{color:#94a3b8;background:#cbd5e11f;border:1px solid #cbd5e147}.dark .status-backlog{color:#94a3b8;background:#64748b2e}.dark .status-pending{color:#cbd5e1;background:#94a3b82e}.dark .status-inprogress{color:#7dd3fc;background:#38bdf82e}.dark .status-completed{color:#6ee7b7;background:#10b9812e}.dark .status-blocked{color:#fca5a5;background:#ef44442e}.dark .status-canceled{color:#6b7280;background:#9ca3af1f}.repo-item{border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-base) var(--ease-smooth);border:1px solid #0000;align-items:center;gap:10px;padding:9px 11px;display:flex;position:relative;overflow:hidden}.repo-item:before{content:"";opacity:0;transition:opacity var(--duration-base) ease;pointer-events:none;background:linear-gradient(90deg,#0ea5e90f 0%,#0000 100%);position:absolute;inset:0}.repo-item:hover:before{opacity:1}.repo-item:hover{border-color:#0ea5e91f}.dark .repo-item:hover{background:#0ea5e90a;border-color:#38bdf824}.repo-item.active{background:#ffffffe6;border-color:#0ea5e938;box-shadow:0 4px 14px #0f172a0f,inset 0 1px #fffc}.dark .repo-item.active{background:#0ea5e912;border-color:#38bdf847;box-shadow:inset 0 0 0 1px #38bdf81a,0 4px 16px #0ea5e914}.repo-avatar{border-radius:var(--radius-sm);color:#fff;width:34px;height:34px;transition:box-shadow var(--duration-base) ease, transform var(--duration-base) var(--ease-spring);background:linear-gradient(135deg,#0ea5e9 0%,#6366f1 100%);flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:800;display:flex;position:relative;box-shadow:0 4px 12px #0ea5e947}.repo-item:hover .repo-avatar{transform:scale(1.06);box-shadow:0 4px 16px #0ea5e966}.repo-active-indicator{background:linear-gradient(180deg, var(--color-primary-light) 0%, var(--color-primary) 100%);width:3px;height:22px;box-shadow:2px 0 8px var(--glow-primary);border-radius:0 4px 4px 0;position:absolute;top:50%;left:0;transform:translateY(-50%)}.repo-item.collapsed{justify-content:center;padding:8px}.stat-number{letter-spacing:-.03em;font-size:1.75rem;font-weight:900;line-height:1}.stat-label{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);font-size:.68rem;font-weight:700}.kanban-board{grid-auto-columns:minmax(280px,1fr);grid-auto-flow:column;gap:16px;padding-bottom:8px;display:grid;overflow-x:auto}@media (width<=900px){.kanban-board{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;grid-auto-columns:280px;grid-auto-flow:column}}.kanban-col{border-radius:var(--radius-lg);flex-direction:column;min-height:200px;display:flex}@media (width<=900px){.kanban-col{scroll-snap-align:center}}.task-card{border-radius:var(--radius-md);border:1px solid var(--color-border);cursor:pointer;transition:all var(--duration-base) var(--ease-smooth);background:#ffffff9e;flex-shrink:0;padding:14px;position:relative;overflow:hidden}.task-card:before{content:"";background:linear-gradient(90deg, var(--color-primary), var(--color-accent));opacity:0;height:2px;transition:opacity var(--duration-base) ease;position:absolute;top:0;left:0;right:0}.task-card:hover:before{opacity:1}.dark .task-card{background:#0a122a8c;border-color:#94a3b81a}.task-card:hover{border-color:#0ea5e938;transform:translateY(-3px);box-shadow:0 10px 28px #0000001a,0 0 0 1px #0ea5e92e}.dark .task-card:hover{border-color:#38bdf83d;transform:translateY(-3px);box-shadow:0 10px 28px #00000059,0 0 0 1px #38bdf838}.markdown-body{color:#374151;word-break:break-word;font-size:.875rem;line-height:1.75}.dark .markdown-body{color:#d1d5db}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{color:#111827;margin:1.2em 0 .5em;font-weight:700;line-height:1.3}.dark .markdown-body h1,.dark .markdown-body h2,.dark .markdown-body h3,.dark .markdown-body h4{color:#f9fafb}.markdown-body h1{border-bottom:2px solid #e5e7eb;padding-bottom:.4rem;font-size:1.25rem}.markdown-body h2{border-bottom:1px solid #e5e7eb;padding-bottom:.3rem;font-size:1.1rem}.markdown-body h3{font-size:.95rem}.markdown-body p{margin:.6em 0}.markdown-body ul,.markdown-body ol{margin:.5em 0;padding-left:1.5rem}.markdown-body ul{list-style-type:disc}.markdown-body ol{list-style-type:decimal}.markdown-body li{margin:.25em 0}.markdown-body code{color:#6d28d9;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:5px;padding:.15em .4em;font-family:JetBrains Mono,monospace;font-size:.8rem}.dark .markdown-body code{color:#c4b5fd;background:#8b5cf624;border-color:#8b5cf638}.markdown-body pre{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;margin:.75em 0;padding:1rem;overflow-x:auto}.dark .markdown-body pre{background:#0a121e;border-color:#1e2d40}.markdown-body pre code{color:inherit;background:0 0;border:none;padding:0;font-size:.82rem}.markdown-body blockquote{color:#4b5563;background:#0ea5e90d;border-left:3px solid #0ea5e9;border-radius:0 8px 8px 0;margin:.75em 0;padding:.5rem 1rem;font-style:italic}.dark .markdown-body blockquote{color:#9ca3af;background:#0ea5e914}.markdown-body a{color:#0ea5e9;text-underline-offset:2px;text-decoration:underline}.markdown-body strong{color:#111827;font-weight:700}.dark .markdown-body strong{color:#f9fafb}.markdown-body table{border-collapse:collapse;width:100%;margin:.75em 0;font-size:.8rem}.markdown-body th{text-align:left;background:#f1f5f9;border:1px solid #e5e7eb;padding:.5rem .75rem;font-weight:700}.dark .markdown-body th{background:#1e293b;border-color:#334155}.markdown-body td{border:1px solid #e5e7eb;padding:.4rem .75rem}.dark .markdown-body td{border-color:#334155}.markdown-body tr:nth-child(2n){background:#f8fafc}.dark .markdown-body tr:nth-child(2n){background:#1e293b66}.chat-bubble{border-radius:1.25rem;max-width:85%;padding:.75rem 1rem;font-size:.875rem;line-height:1.5;box-shadow:0 2px 8px #0000000f}.chat-bubble-agent{color:#fff;border-bottom-right-radius:.25rem;align-self:flex-end}.chat-bubble-mcp{color:#1e293b;background:#f1f5f9e6;border:1px solid #e2e8f0;border-bottom-left-radius:.25rem;align-self:flex-start}.dark .chat-bubble-mcp{color:#f1f5f9;background:#1e293bd9;border-color:#334155b3}.skeleton{background:linear-gradient(90deg,#f1f5f9 25%,#e8ecf0 50%,#f1f5f9 75%) 0 0/200% 100%;border-radius:8px;animation:1.8s ease-in-out infinite skeleton-pulse}.dark .skeleton{background:linear-gradient(90deg,#12213a 25%,#1a2f4a 50%,#12213a 75%) 0 0/200% 100%}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-scale{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes slide-in-right{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 6px #0ea5e94d}50%{box-shadow:0 0 18px #0ea5e999,0 0 30px #0ea5e933}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes status-blink{0%,to{opacity:1}50%{opacity:.4}}@keyframes orbit-glow{0%{transform:translate(-50%,-50%)rotate(0)translate(12px)rotate(0)}to{transform:translate(-50%,-50%)rotate(360deg)translate(12px)rotate(-360deg)}}.animate-fade-in{animation:fade-in-up var(--duration-slow) var(--ease-expo)}.animate-fade-in-scale{animation:fade-in-scale var(--duration-slow) var(--ease-expo)}.animate-slide-in{animation:slide-in-right var(--duration-slow) var(--ease-expo)}.animate-spin{animation:.8s linear infinite spin}.animate-float{animation:3s ease-in-out infinite float}.animate-pulse-glow{animation:2s ease-in-out infinite pulse-glow}.animate-status-blink{animation:1.8s ease-in-out infinite status-blink}.stagger-item:first-child{animation-delay:0s}.stagger-item:nth-child(2){animation-delay:50ms}.stagger-item:nth-child(3){animation-delay:.1s}.stagger-item:nth-child(4){animation-delay:.15s}.stagger-item:nth-child(5){animation-delay:.2s}.stagger-item:nth-child(n+6){animation-delay:.25s}.drawer-overlay{z-index:50;-webkit-backdrop-filter:blur(6px);background:#010c1e8c;position:fixed;inset:0}.drawer-panel{-webkit-backdrop-filter:blur(20px);z-index:51;background:#fffffff5;border-left:1px solid #e2e8f0cc;flex-direction:column;width:min(620px,95vw);height:100dvh;display:flex;position:fixed;top:0;right:0;overflow:hidden;box-shadow:-20px 0 60px #00000024,-1px 0 #0ea5e914}.dark .drawer-panel{background:#060c1cf5;border-color:#94a3b81a;box-shadow:-20px 0 60px #00000080,-1px 0 #38bdf81f}.dark table thead tr{background:#0a1226e6!important}.dark table th{color:var(--color-text-muted);border-bottom-color:#94a3b81f!important}.dark table td{color:var(--color-text);border-bottom-color:#94a3b812!important}.dark table tbody tr:hover td{background:#0ea5e90a}.dark table tbody tr:nth-child(2n) td{background:#080f2059}.dark table tbody tr:nth-child(2n):hover td{background:#0ea5e90f}.dark table input[type=checkbox]{accent-color:#0ea5e9}.badge{letter-spacing:.03em;border-radius:9999px;align-items:center;padding:1px 8px;font-size:.62rem;font-weight:700;display:inline-flex}.section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);font-size:.68rem;font-weight:700}.status-dot{border-radius:9999px;flex-shrink:0;width:8px;height:8px}.status-dot-online{background:#10b981;animation:2.4s ease-in-out infinite pulse-glow;box-shadow:0 0 0 3px #10b9812e}.icon-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;transition:all var(--duration-base) var(--ease-smooth);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{color:var(--color-text);background:#f1f5f9e6;transform:scale(1.1)}.dark .icon-btn:hover{background:#1e293bcc}.icon-btn svg{transition:transform var(--duration-base) var(--ease-spring)}.icon-btn:hover svg{transform:scale(1.05)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.min-w-0{min-width:0}.flex{display:flex}.flex-col{flex-direction:column}.flex-1{flex:1}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-5{gap:20px}.p-2{padding:8px}.p-3{padding:12px}.p-4{padding:16px}.p-5{padding:20px}.px-3{padding-left:12px;padding-right:12px}.px-4{padding-left:16px;padding-right:16px}.py-2{padding-top:8px;padding-bottom:8px}.py-3{padding-top:12px;padding-bottom:12px}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.text-sm{font-size:.875rem}.text-xs{font-size:.75rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.w-full{width:100%}.h-full{height:100%}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:12px}.rounded-xl{border-radius:16px}.relative{position:relative}.absolute{position:absolute}.inset-0{inset:0}.z-10{z-index:10}.z-50{z-index:50}.hidden{display:none}.grid{display:grid}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.pointer-events-none{pointer-events:none}.shrink-0{flex-shrink:0}.text-center{text-align:center}.priority-dot{border-radius:9999px;flex-shrink:0;width:8px;height:8px}.priority-1{background:#94a3b8}.priority-2{background:#3b82f6;box-shadow:0 0 6px #3b82f680}.priority-3{background:#f59e0b;box-shadow:0 0 6px #f59e0b80}.priority-4{background:#f97316;box-shadow:0 0 6px #f9731680}.priority-5{background:#ef4444;animation:2s ease-in-out infinite pulse-glow;box-shadow:0 0 8px #ef444499}.divider{background:var(--color-border);height:1px;margin:12px 0}.dark .divider{background:#94a3b81a}.hover-glow{transition:box-shadow var(--duration-base) ease}.hover-glow:hover{box-shadow:var(--glass-shadow-elevated), 0 0 24px #0ea5e914}.dark .hover-glow:hover{box-shadow:var(--panel-dark-shadow), 0 0 24px #38bdf814}.text-success{color:var(--color-success)!important}.text-danger{color:var(--color-danger)!important}.text-primary{color:var(--color-primary)!important}.text-accent{color:var(--color-accent)!important}.btn-icon:hover{background:#0ea5e914;transform:scale(1.1)}@media (width<=760px){html,body,#app,.app-layout,.main-content{max-width:100vw;overflow-x:hidden}.dashboard-shell{padding:12px}.tabs-wrap{margin:0 -12px 12px;padding:0 12px}.tab-nav{max-width:max-content}.tab-btn{padding:7px 10px;font-size:.74rem}.card{border-radius:var(--radius-lg);padding:14px}}.sidebar-header.svelte-vbr9x3{justify-content:space-between;align-items:center;min-height:60px;padding:14px 16px;display:flex}.brand-icon.svelte-vbr9x3{color:#fff;background:linear-gradient(135deg,#0ea5e9,#6366f1);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;transition:box-shadow .2s,transform .2s;display:flex;box-shadow:0 4px 12px #0ea5e94d}.brand-icon.svelte-vbr9x3:hover{transform:scale(1.05);box-shadow:0 4px 18px #0ea5e980}.collapse-btn.svelte-vbr9x3{flex-shrink:0}.search-wrapper.svelte-vbr9x3{position:relative}.search-icon.svelte-vbr9x3{color:var(--color-text-muted);pointer-events:none;display:flex;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search-input.svelte-vbr9x3{background:#ffffff80;padding-left:32px;font-size:.8rem}html.dark .search-input.svelte-vbr9x3{background:#0a122680}.group-label.svelte-vbr9x3{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);opacity:.75;align-items:center;gap:5px;padding:6px 10px 4px;font-size:.6rem;font-weight:700;display:flex}.repo-count-chip.svelte-vbr9x3{color:#0ea5e9;background:#0ea5e91f;border:1px solid #0ea5e938;border-radius:9999px;padding:1px 7px;font-size:.62rem;font-weight:700}.pin-star.svelte-vbr9x3{color:#fff;background:#0ea5e9;border-radius:9999px;justify-content:center;align-items:center;width:14px;height:14px;font-size:8px;line-height:1;display:flex;position:absolute;top:-4px;right:-4px;box-shadow:0 2px 6px #0ea5e966}.task-badges.svelte-vbr9x3{flex-wrap:wrap;gap:3px;margin-top:4px;display:flex}.task-badge.svelte-vbr9x3{white-space:nowrap;border:1px solid #0000;border-radius:9999px;align-items:center;gap:2px;padding:1px 5px;font-size:.6rem;font-weight:700;transition:all .15s;display:inline-flex}.task-badge.active.svelte-vbr9x3{color:#a855f7;background:#a855f71f;border-color:#a855f740}.task-badge.todo.svelte-vbr9x3{color:#0ea5e9;background:#0ea5e91f;border-color:#0ea5e940}.task-badge.blocked.svelte-vbr9x3{color:#ef4444;background:#ef44441f;border-color:#ef444440}.task-badge.backlog.svelte-vbr9x3{color:#64748b;background:#64748b1f;border-color:#64748b40}html.dark .task-badge.active.svelte-vbr9x3{color:#c084fc;background:#a855f72e}html.dark .task-badge.todo.svelte-vbr9x3{color:#7dd3fc;background:#38bdf82e}html.dark .task-badge.blocked.svelte-vbr9x3{color:#fca5a5;background:#fca5a52e}html.dark .task-badge.backlog.svelte-vbr9x3{color:#94a3b8;background:#94a3b82e}.pin-btn.svelte-vbr9x3{opacity:0;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:5px;transition:opacity .15s,transform .15s,color .15s;display:flex}.repo-item.svelte-vbr9x3:hover .pin-btn:where(.svelte-vbr9x3){opacity:1}@media (hover:none),(width<=1024px){.pin-btn.svelte-vbr9x3{opacity:1}}.pin-btn.svelte-vbr9x3:hover{color:#0ea5e9;background:#0ea5e91a;transform:scale(1.15)}.top-bar-inner.svelte-2va9hf{justify-content:space-between;align-items:center;gap:12px;min-height:60px;padding:10px 20px;display:flex}.current-repo.svelte-2va9hf{align-items:center;gap:8px;min-width:0;display:flex}.current-repo-name.svelte-2va9hf{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:.82rem;overflow:hidden}.top-actions.svelte-2va9hf,.refresh-group.svelte-2va9hf,.top-status.svelte-2va9hf{align-items:center;gap:8px;display:flex}.top-actions.svelte-2va9hf{min-width:0}.top-separator.svelte-2va9hf{background:var(--color-border);opacity:.6;width:1px;height:20px}@media (width<=1024px){#mobileMenuBtn.svelte-2va9hf{display:flex!important}}@media (width<=760px){.top-bar-inner.svelte-2va9hf{padding:8px 12px}.current-repo-name.svelte-2va9hf{max-width:112px}.ext-links-group.svelte-2va9hf,.top-separator.svelte-2va9hf,.db-path-label.svelte-2va9hf,.top-status.svelte-2va9hf span:where(.svelte-2va9hf){display:none!important}.top-actions.svelte-2va9hf{flex-shrink:0;gap:6px}}@media (width<=420px){.current-repo-name.svelte-2va9hf{max-width:82px}}.ext-links-group.svelte-2va9hf{border:1px solid var(--color-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f1f5f9bf;border-radius:10px;align-items:center;gap:0;display:flex;overflow:hidden}html.dark .ext-links-group.svelte-2va9hf{background:#0f172abf;border-color:#94a3b81f}.ext-link-btn.svelte-2va9hf{color:var(--color-text-muted);white-space:nowrap;align-items:center;gap:5px;padding:5px 10px;font-size:.72rem;font-weight:600;line-height:1;text-decoration:none;transition:background .15s,color .15s;display:flex}.ext-link-btn.svelte-2va9hf:hover{color:var(--color-text);background:#0ea5e914}html.dark .ext-link-btn.svelte-2va9hf:hover{background:#0ea5e91f}.ext-link-star.svelte-2va9hf:hover{color:#ca8a04!important;background:#eab3081a!important}html.dark .ext-link-star.svelte-2va9hf:hover{color:#fbbf24!important;background:#eab3081f!important}.ext-link-npm.svelte-2va9hf:hover{color:#cb2431!important;background:#cb243114!important}html.dark .ext-link-npm.svelte-2va9hf:hover{color:#f87171!important;background:#cb24311f!important}.ext-link-divider.svelte-2va9hf{background:var(--color-border);opacity:.6;flex-shrink:0;width:1px;height:20px}.ext-link-label.svelte-2va9hf{font-size:.7rem}.npm-dl-badge.svelte-2va9hf{color:inherit;align-items:center;gap:3px;display:flex}.npm-dl-skeleton.svelte-2va9hf{background:#94a3b82e;border-radius:4px;width:36px;height:10px;animation:1.4s ease-in-out infinite svelte-2va9hf-skeleton-pulse;display:inline-block}@keyframes svelte-2va9hf-skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.countdown-bar.svelte-2va9hf{border:1px solid var(--color-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f1f5f9bf;border-radius:10px;align-items:center;gap:6px;padding:5px 10px;display:flex}html.dark .countdown-bar.svelte-2va9hf{background:#0f172abf;border-color:#94a3b81f}.countdown-track.svelte-2va9hf{background:#94a3b82e;border-radius:9999px;width:52px;height:3px;overflow:hidden}.countdown-fill.svelte-2va9hf{border-radius:9999px;height:100%;transition:width 1s linear,background .3s}.countdown-label.svelte-2va9hf{width:26px;font-size:.65rem;font-weight:600;transition:color .3s}.btn.refreshing.svelte-2va9hf{color:var(--color-primary)}@media (width<=640px){.ext-links-group.svelte-2va9hf{display:none}}@media (width<=760px){.countdown-bar.svelte-2va9hf{padding:5px 8px}.countdown-track.svelte-2va9hf{width:32px}}@media (width<=420px){.countdown-label.svelte-2va9hf{display:none}}.priority-bar.svelte-1797zcc{opacity:0;border-radius:12px 12px 0 0;height:2px;transition:opacity .2s;position:absolute;top:0;left:0;right:0}.task-card.svelte-1797zcc:hover .priority-bar:where(.svelte-1797zcc){opacity:1}.card-header.svelte-1797zcc{justify-content:space-between;align-items:center;gap:6px;margin-bottom:7px;display:flex}.code-row.svelte-1797zcc{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.status-icon-dot.svelte-1797zcc{opacity:.85;flex-shrink:0;display:inline-flex}.task-code-text.svelte-1797zcc{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:110px;font-family:JetBrains Mono,monospace;font-size:.64rem;font-weight:700;overflow:hidden}.task-title.svelte-1797zcc{color:var(--color-text);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-bottom:4px;font-size:.82rem;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.task-desc.svelte-1797zcc{color:var(--color-text-muted);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-bottom:12px;font-size:.72rem;line-height:1.4;display:-webkit-box;overflow:hidden}.phase-chip.svelte-1797zcc{color:#6366f1;letter-spacing:.02em;white-space:nowrap;background:#6366f11a;border:1px solid #6366f133;border-radius:9999px;flex-shrink:0;padding:2px 6px;font-size:.58rem;font-weight:700}html.dark .phase-chip.svelte-1797zcc{color:#a5b4fc;background:#818cf826;border-color:#818cf840}.hierarchy-row.svelte-1797zcc{flex-wrap:wrap;gap:4px;margin-bottom:8px;display:flex}.h-badge.svelte-1797zcc{border-radius:4px;align-items:center;gap:3px;padding:1px 6px;font-family:JetBrains Mono,monospace;font-size:.58rem;font-weight:700;display:inline-flex}.h-badge.parent.svelte-1797zcc{color:#10b981;background:#10b9811a;border:1px solid #10b98133}.h-badge.depends.svelte-1797zcc{color:#f59e0b;background:#f59e0b1a;border:1px solid #f59e0b33}.card-footer.svelte-1797zcc{justify-content:space-between;align-items:center;margin-top:8px;display:flex}.agent-row.svelte-1797zcc{align-items:center;gap:4px;display:flex}.agent-avatar.svelte-1797zcc{color:#fff;background:linear-gradient(135deg,#6366f1,#0ea5e9);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;display:flex}.agent-name.svelte-1797zcc{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:80px;font-size:.64rem;overflow:hidden}.time-row.svelte-1797zcc{color:var(--color-text-faint);align-items:center;gap:3px;font-size:.62rem;display:flex}.token-row.svelte-1797zcc{margin-top:6px}.token-badge.svelte-1797zcc{color:#0ea5e9;background:#38bdf81a;border:1px solid #38bdf833;border-radius:9999px;align-items:center;gap:3px;padding:2px 7px;font-size:.6rem;font-weight:600;display:inline-flex}html.dark .token-badge.svelte-1797zcc{color:#7dd3fc;background:#38bdf81f;border-color:#38bdf838}.search-wrap.svelte-173w724{position:relative}.search-icon-inner.svelte-173w724{color:var(--color-text-muted);pointer-events:none;display:flex;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.col-count.svelte-173w724{border-radius:9999px;padding:1px 8px;font-size:.65rem;font-weight:700}.empty-col.svelte-173w724{text-align:center;flex-direction:column;align-items:center;padding:28px 8px;display:flex}.drag-over.svelte-173w724{border-color:var(--color-accent)!important;background:#6366f11a!important}.glassy-badge.svelte-1imzu92{-webkit-backdrop-filter:blur(12px);border:1px solid var(--badge-color);cursor:default;background:#ffffff0a;border-radius:9999px;padding:4px 12px;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 12px #0000000d,inset 0 0 0 1px #ffffff0d}html.dark .glassy-badge.svelte-1imzu92{box-shadow:0 8px 16px #0003, inset 0 0 0 1px var(--badge-color);background:#0003;border-color:#ffffff1a}.glassy-badge.svelte-1imzu92:hover{box-shadow:0 6px 16px #00000014, inset 0 0 0 1px var(--badge-color);background:#ffffff14;transform:translateY(-1px)}.indicator-dot.svelte-1imzu92{background:var(--badge-color);width:6px;height:6px;box-shadow:0 0 10px var(--badge-color);border-radius:9999px;position:relative}.indicator-dot.svelte-1imzu92:after{content:"";border:1px solid var(--badge-color);opacity:0;border-radius:9999px;animation:2s infinite svelte-1imzu92-pulse;position:absolute;inset:-2px}@keyframes svelte-1imzu92-pulse{0%{opacity:.5;transform:scale(1)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(3)}}.count.svelte-1imzu92{color:var(--badge-color);letter-spacing:-.01em;font-size:.75rem;font-weight:900}.label.svelte-1imzu92{color:var(--color-text);text-transform:uppercase;letter-spacing:.06em;opacity:.7;font-size:.62rem;font-weight:700}.metrics-grid.svelte-9j0inj{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px;display:grid}.compact-empty.svelte-9j0inj{min-height:56px;color:var(--color-text-muted);justify-content:center;align-items:center;font-size:.75rem;display:flex}@media (width<=640px){.metrics-grid.svelte-9j0inj{grid-template-columns:1fr}}.mem-table-wrap.svelte-83aj9g{border:1px solid var(--color-border);border-radius:14px;overflow-x:auto}.mem-table.svelte-83aj9g{border-collapse:collapse;width:100%;min-width:600px}.mem-thead-row.svelte-83aj9g{border-bottom:1px solid var(--color-border);background:#f8fafce6}html.dark .mem-thead-row.svelte-83aj9g{background:#0a1226d9}.mem-th.svelte-83aj9g{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);white-space:nowrap;-webkit-user-select:none;user-select:none;padding:10px 12px;font-size:.7rem;font-weight:700}.mem-th.sortable.svelte-83aj9g{cursor:pointer}.mem-th.sortable.svelte-83aj9g:hover{color:var(--color-text)}.mem-td.svelte-83aj9g{border-bottom:1px solid var(--color-border);padding:10px 12px}html.dark .mem-td.svelte-83aj9g{border-color:#94a3b814}.mem-row.svelte-83aj9g{cursor:pointer;transition:background .15s}.mem-row.svelte-83aj9g:hover{background:#f1f5f9b3}html.dark .mem-row.svelte-83aj9g:hover,.mem-row.selected.svelte-83aj9g{background:#0ea5e90d}html.dark .mem-row.selected.svelte-83aj9g{background:#0ea5e914}.mem-row.svelte-83aj9g:last-child .mem-td:where(.svelte-83aj9g){border-bottom:none}.row-actions.svelte-83aj9g{opacity:0;white-space:nowrap;align-items:center;gap:4px;transition:opacity .15s;display:flex}.mem-row.svelte-83aj9g:hover .row-actions:where(.svelte-83aj9g){opacity:1}.row-action-btn.svelte-83aj9g{cursor:pointer;width:28px;height:28px;color:var(--color-text-muted);background:0 0;border:none;border-radius:7px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.edit-btn.svelte-83aj9g:hover{color:#0ea5e9;background:#0ea5e91a}html.dark .edit-btn.svelte-83aj9g:hover{color:#38bdf8;background:#0ea5e926}.delete-btn.svelte-83aj9g:hover{color:#ef4444;background:#ef44441a}html.dark .delete-btn.svelte-83aj9g:hover{color:#fca5a5;background:#ef444426}.bulk-actions-bar.svelte-83aj9g{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:1000;color:#fff;background:#1e293bf2;border:1px solid #ffffff1a;border-radius:9999px;align-items:center;gap:8px;padding:10px 16px;font-size:.85rem;animation:.3s cubic-bezier(.16,1,.3,1) forwards svelte-83aj9g-slideUp;display:flex;position:fixed;bottom:32px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0000004d}html:not(.dark) .bulk-actions-bar.svelte-83aj9g{color:var(--color-text);border-color:var(--color-border);background:#fffffff2;box-shadow:0 10px 30px #0000001a}@keyframes svelte-83aj9g-slideUp{0%{opacity:0;transform:translate(-50%,20px)scale(.95)}to{opacity:1;transform:translate(-50%)scale(1)}}.markdown-body.svelte-d5v60e{line-height:1.6}.markdown-body.svelte-d5v60e p:where(.svelte-d5v60e){margin-bottom:1em}.markdown-body.svelte-d5v60e code:where(.svelte-d5v60e){background-color:#0000000d;border-radius:3px;padding:.2em .4em;font-family:monospace}.markdown-body.svelte-d5v60e pre:where(.svelte-d5v60e){background-color:#0000000d;border-radius:5px;padding:1em;overflow:auto}.markdown-body.svelte-d5v60e table:where(.svelte-d5v60e){border-collapse:collapse;width:100%;margin-bottom:1em}.markdown-body.svelte-d5v60e th:where(.svelte-d5v60e),.markdown-body.svelte-d5v60e td:where(.svelte-d5v60e){text-align:left;border:1px solid #ddd;padding:8px}.markdown-body.svelte-d5v60e blockquote:where(.svelte-d5v60e){color:#666;border-left:4px solid #ddd;margin:1em 0;padding-left:1em}.chat-container-viewport.svelte-h6z84x{scroll-behavior:smooth;background:#00000005;flex-direction:column;flex:1;padding:24px 32px;display:flex;overflow-y:auto}html.dark .chat-container-viewport.svelte-h6z84x{background-color:#0b141a;background-image:radial-gradient(#ffffff08 1px,#0000 1px);background-size:20px 20px}.chat-container.svelte-h6z84x{flex-direction:column;gap:12px;min-height:min-content;padding-bottom:20px;display:flex}.date-header.svelte-h6z84x{z-index:10;justify-content:center;margin:24px 0 12px;display:flex;position:sticky;top:-12px}.date-header.svelte-h6z84x span:where(.svelte-h6z84x){-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#54656f;text-transform:uppercase;letter-spacing:.06em;background:#fffffff2;border:1px solid #0000000d;border-radius:10px;padding:6px 14px;font-size:.7rem;font-weight:700;box-shadow:0 1px 3px #00000014}html.dark .date-header.svelte-h6z84x span:where(.svelte-h6z84x){color:#8696a0;background:#182229}.bubble-row.svelte-h6z84x{align-items:flex-end;gap:8px;width:100%;margin-bottom:4px;display:flex}.bubble-row-right.svelte-h6z84x{justify-content:flex-end}.bubble-row-left.svelte-h6z84x{justify-content:flex-start}.bubble-wrap.svelte-h6z84x{max-width:80%;position:relative}.chat-bubble.svelte-h6z84x{border-radius:12px;padding:8px 10px 18px;font-size:.875rem;line-height:1.4;transition:transform .2s;position:relative;box-shadow:0 1px .5px #00000021}.chat-bubble-action.svelte-h6z84x{background:var(--bubble-bg-light);color:#111b21;border-top-right-radius:0}.chat-bubble-mcp.svelte-h6z84x{background:var(--bubble-bg-light);color:#111b21;border-top-left-radius:0}html.dark .chat-bubble-action.svelte-h6z84x,html.dark .chat-bubble-mcp.svelte-h6z84x{background:var(--bubble-bg-dark);color:#e9edef}.tail.svelte-h6z84x{width:12px;height:12px;position:absolute;top:0}.tail-right.svelte-h6z84x{background:radial-gradient(circle at 100% 0,#0000 8px,#dcf8c6 8px);right:-8px}.tail-left.svelte-h6z84x{background:radial-gradient(circle at 0 0,#0000 8px,#fff 8px);left:-8px}html.dark .chat-bubble-action.svelte-h6z84x{--bubble-bg-dark:#056162}html.dark .tail-right.svelte-h6z84x{background:radial-gradient(circle at 100% 0,#0000 8px,#056162 8px)}html.dark .tail-left.svelte-h6z84x{background:radial-gradient(circle at 0 0,#0000 8px,#202c33 8px)}.chat-avatar.svelte-h6z84x{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex;box-shadow:0 2px 8px #0000001a}.agent-avatar.svelte-h6z84x{color:#fff;background:linear-gradient(135deg,#0ea5e9,#6366f1)}.mcp-avatar.svelte-h6z84x{color:#54656f;background:#f0f2f5}html.dark .mcp-avatar.svelte-h6z84x{color:#8696a0;background:#182229}.action-badge.svelte-h6z84x{text-transform:uppercase;letter-spacing:.05em;border-radius:4px;align-items:center;gap:4px;margin-bottom:4px;padding:2px 6px;font-size:.62rem;font-weight:800;display:inline-flex}.action-main.svelte-h6z84x{color:inherit;word-break:break-word;font-weight:600}.action-sub.svelte-h6z84x{opacity:.7;margin-top:2px;font-size:.75rem}.mcp-sender.svelte-h6z84x{color:#34b7f1;text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:4px;margin-bottom:6px;font-size:.72rem;font-weight:800;display:flex}.read-more-btn.svelte-h6z84x{color:#34b7f1;cursor:pointer;text-align:left;background:0 0;border:none;width:100%;margin-top:4px;padding:4px 0;font-size:.75rem;font-weight:700;display:block}.read-more-btn.svelte-h6z84x:hover{text-decoration:underline}.bubble-meta.svelte-h6z84x{pointer-events:none;align-items:center;gap:3px;display:flex;position:absolute;bottom:4px;right:7px}.bubble-time.svelte-h6z84x{color:#667781;font-size:.65rem}html.dark .bubble-time.svelte-h6z84x{color:#ffffff80}.bubble-status.svelte-h6z84x{color:#53bdeb;display:flex}.load-more-spinner.svelte-h6z84x{color:var(--color-text-muted);opacity:.8;justify-content:center;align-items:center;gap:8px;padding:12px;font-size:.75rem;font-weight:600;display:flex}@keyframes svelte-h6z84x-slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes svelte-h6z84x-slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.animate-slide-in-right.svelte-h6z84x{animation:.3s ease-out forwards svelte-h6z84x-slideInRight}.animate-slide-in-left.svelte-h6z84x{animation:.3s ease-out forwards svelte-h6z84x-slideInLeft}.drawer-header.svelte-9n99wb{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px;display:flex}.drawer-title.svelte-9n99wb{color:var(--color-text);font-size:1rem;font-weight:700;line-height:1.3}.editable-title.svelte-9n99wb{cursor:pointer;border-radius:6px;align-items:center;gap:6px;margin:-2px -4px;padding:2px 4px;transition:background .15s;display:flex}.editable-title.svelte-9n99wb:hover{background:#6366f112}.edit-hint.svelte-9n99wb{opacity:0;font-size:.7rem;transition:opacity .15s}.editable-title.svelte-9n99wb:hover .edit-hint:where(.svelte-9n99wb){opacity:1}.drawer-body.svelte-9n99wb{flex:1;padding:20px;overflow-y:auto}.meta-grid.svelte-9n99wb{grid-template-columns:1fr 1fr;gap:10px;display:grid}.meta-cell.svelte-9n99wb{border:1px solid var(--color-border);background:#f1f5f9cc;border-radius:10px;padding:10px}.dark .meta-cell.svelte-9n99wb{background:#1e293bcc}.meta-label.svelte-9n99wb{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:2px;font-size:.65rem;font-weight:700}.meta-value.svelte-9n99wb{color:var(--color-text);font-size:.85rem;font-weight:600}.section-label.svelte-9n99wb{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:8px;font-size:.65rem;font-weight:700}.tag-chip.svelte-9n99wb{color:#6366f1;background:#6366f11a;border:1px solid #6366f133;border-radius:9999px;padding:2px 10px;font-size:.72rem}.md-card.svelte-9n99wb{border:1px solid var(--color-border);background:#f8fafccc;border-radius:12px;padding:16px}.dark .md-card.svelte-9n99wb{background:#0f172acc}.json-pre.svelte-9n99wb{border:1px solid var(--color-border);color:var(--color-text);background:#f8fafccc;border-radius:12px;padding:12px;font-family:JetBrains Mono,monospace;font-size:.75rem;overflow-x:auto}.dark .json-pre.svelte-9n99wb{background:#0f172acc}.comment-card.svelte-9n99wb{border:1px solid var(--color-border);background:#f1f5f980;border-radius:10px;padding:10px 14px}.dark .comment-card.svelte-9n99wb{background:#1e293b80}.comment-avatar.svelte-9n99wb{color:#fff;background:linear-gradient(135deg,#6366f1,#0ea5e9);border-radius:9999px;justify-content:center;align-items:center;width:20px;height:20px;font-size:9px;font-weight:700;display:flex}.comment-compose.svelte-9n99wb{border:1px solid var(--color-border);background:#f1f5f980;border-radius:10px;padding:12px}.dark .comment-compose.svelte-9n99wb{background:#1e293b66}.drawer-header.svelte-17ad9lv{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px;display:flex}.drawer-title.svelte-17ad9lv{color:var(--color-text);word-break:break-all;font-size:1rem;font-weight:700;line-height:1.3}.type-chip.svelte-17ad9lv{text-transform:uppercase;letter-spacing:.05em;color:#0ea5e9;background:#0ea5e91a;border-radius:20px;padding:3px 8px;font-size:.7rem;font-weight:700}.drawer-body.svelte-17ad9lv{flex-direction:column;gap:20px;padding:20px 24px;display:flex;overflow-y:auto}.drawer-section.svelte-17ad9lv{flex-direction:column;gap:8px;display:flex}.section-label.svelte-17ad9lv{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:4px;font-size:.75rem;font-weight:700}.md-card.svelte-17ad9lv{border:1px solid var(--color-border);background:#f8fafccc;border-radius:12px;padding:16px}.dark .md-card.svelte-17ad9lv{background:#0f172acc}.modal-backdrop.svelte-intd6h{z-index:58;-webkit-backdrop-filter:blur(4px);background:#010c1e73;position:fixed;inset:0}.modal-panel.svelte-intd6h{z-index:59;background:var(--color-surface,#fff);border:1px solid var(--color-border);border-radius:20px;flex-direction:column;width:600px;max-width:96vw;max-height:92vh;display:flex;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 32px 96px #010c1e33,0 8px 32px #010c1e1f,inset 0 1px #ffffffb3}html.dark .modal-panel.svelte-intd6h{background:#070f1f;border-color:#94a3b81f;box-shadow:0 32px 96px #0009,0 8px 32px #0006,inset 0 1px #ffffff0a}.modal-header.svelte-intd6h{border-bottom:1px solid var(--color-border);flex-shrink:0;align-items:center;gap:12px;padding:18px 20px 16px;display:flex}.modal-header-icon.svelte-intd6h{color:#fff;background:linear-gradient(135deg,#6366f1,#a855f7);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex;box-shadow:0 4px 12px #6366f159}.modal-mode-label.svelte-intd6h{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);margin-bottom:4px;font-size:.62rem;font-weight:700}.modal-title-input.svelte-intd6h{width:100%;padding:5px 10px;font-size:.92rem;font-weight:700}.modal-title-text.svelte-intd6h{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:700;line-height:1.3;overflow:hidden}.modal-header-actions.svelte-intd6h{flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:flex}.danger-btn.svelte-intd6h{color:#ef4444!important}.modal-close-btn.svelte-intd6h{width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.modal-close-btn.svelte-intd6h:hover{color:#ef4444;background:#ef44441a}.modal-body.svelte-intd6h{flex-direction:column;flex:1;gap:14px;padding:18px 20px;display:flex;overflow-y:auto}.field-grid-2.svelte-intd6h{grid-template-columns:1fr 1fr;gap:12px;display:grid}.field-group.svelte-intd6h{flex-direction:column;gap:5px;display:flex}.field-label.svelte-intd6h{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);align-items:center;gap:4px;font-size:.68rem;font-weight:700;display:flex}.required.svelte-intd6h{color:#ef4444;font-size:.7rem}.field-hint.svelte-intd6h{text-transform:none;letter-spacing:0;color:var(--color-text-faint);margin-left:2px;font-size:.62rem;font-style:italic;font-weight:400}.importance-badge.svelte-intd6h{border-radius:9999px;margin-left:4px;padding:1px 7px;font-size:.72rem;font-weight:800}.importance-slider.svelte-intd6h{cursor:pointer;background:0 0;border:none;border-radius:9999px;outline:none;width:100%;height:4px;margin-top:4px;padding:0}.importance-ticks.svelte-intd6h{color:var(--color-text-muted);justify-content:space-between;margin-top:2px;padding:0 2px;font-size:.6rem;display:flex}.importance-ticks.svelte-intd6h span:where(.svelte-intd6h){font-weight:600;transition:color .2s}.importance-ticks.svelte-intd6h span.active:where(.svelte-intd6h){color:var(--color-text)}.content-label-row.svelte-intd6h{justify-content:space-between;align-items:center;margin-bottom:2px;display:flex}.preview-btn.svelte-intd6h{padding:3px 8px;font-size:.65rem}.content-textarea.svelte-intd6h{resize:vertical;min-height:140px;font-family:JetBrains Mono,monospace;font-size:.82rem;line-height:1.6}.meta-grid.svelte-intd6h{grid-template-columns:1fr 1fr;gap:10px;display:grid}.meta-cell.svelte-intd6h{border:1px solid var(--color-border);background:#f1f5f9cc;border-radius:10px;padding:10px 12px}html.dark .meta-cell.svelte-intd6h{background:#1e293bcc}.meta-label.svelte-intd6h{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:2px;font-size:.62rem;font-weight:700}.meta-value.svelte-intd6h{color:var(--color-text);font-size:.85rem;font-weight:600}.section-block.svelte-intd6h{flex-direction:column;gap:6px;display:flex}.tags-row.svelte-intd6h{flex-wrap:wrap;gap:6px;display:flex}.tag-chip.svelte-intd6h{color:#6366f1;background:#6366f11a;border:1px solid #6366f133;border-radius:9999px;padding:2px 10px;font-size:.72rem}html.dark .tag-chip.svelte-intd6h{color:#a5b4fc;background:#6366f12e;border-color:#6366f14d}.md-card.svelte-intd6h{border:1px solid var(--color-border);background:#f8fafccc;border-radius:12px;padding:16px}html.dark .md-card.svelte-intd6h{background:#0f172acc}.json-pre.svelte-intd6h{border:1px solid var(--color-border);color:var(--color-text);background:#f8fafccc;border-radius:12px;padding:12px;font-family:JetBrains Mono,monospace;font-size:.75rem;overflow-x:auto}html.dark .json-pre.svelte-intd6h{background:#0f172acc}.mem-error.svelte-intd6h{color:#ef4444;background:#ef444414;border:1px solid #ef444438;border-radius:10px;align-items:center;gap:8px;padding:10px 14px;font-size:.8rem;display:flex}.modal-footer.svelte-intd6h{border-top:1px solid var(--color-border);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:14px 20px;display:flex}.modal-save-btn.svelte-intd6h:disabled{opacity:.45;pointer-events:none}.modal-backdrop.svelte-lenod{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:2000;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content.svelte-lenod{background:var(--color-bg);border:1px solid var(--color-border);border-radius:20px;flex-direction:column;width:700px;max-width:95vw;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 30px 60px #00000080}.modal-header.svelte-lenod{border-bottom:1px solid var(--color-border);background:linear-gradient(90deg,#0ea5e914,#0000);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.header-icon.svelte-lenod{background:#0ea5e91a;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.modal-header.svelte-lenod h3:where(.svelte-lenod){color:var(--color-text);margin:0;font-size:1.15rem;font-weight:700}.close-btn.svelte-lenod{opacity:.6;transition:opacity .2s}.close-btn.svelte-lenod:hover{opacity:1}.drop-zone.svelte-lenod{border:2px dashed var(--color-border);background:#f1f5f908;border-radius:16px;justify-content:center;align-items:center;width:100%;height:240px;transition:all .3s;display:flex}.drop-zone.svelte-lenod:hover{background:#0ea5e908;border-color:#0ea5e9}.drop-zone-content.svelte-lenod{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.drop-zone-content.svelte-lenod p:where(.svelte-lenod){color:var(--color-text);margin:0;font-size:.95rem}.preview-container.svelte-lenod{border:1px solid var(--color-border);background:var(--color-bg-secondary);border-radius:12px;overflow:hidden}.preview-header.svelte-lenod{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border);background:#0000000d;padding:8px 12px;font-size:.75rem;font-weight:700}.table-wrapper.svelte-lenod{max-height:200px;overflow-y:auto}table.svelte-lenod{border-collapse:collapse;width:100%;font-size:.75rem}th.svelte-lenod{text-align:left;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);z-index:1;background:#00000005;padding:8px 12px;font-weight:600;position:sticky;top:0}td.svelte-lenod{border-bottom:1px solid var(--color-border);color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;max-width:200px;padding:8px 12px;overflow:hidden}tr.svelte-lenod:last-child td:where(.svelte-lenod){border-bottom:none}.modal-footer.svelte-lenod{border-top:1px solid var(--color-border);background:#00000005;justify-content:flex-end;gap:12px;padding:16px 24px;display:flex}.error-msg.svelte-lenod{color:#f87171;background:#ef444414;border:1px solid #ef444433;border-radius:8px;margin-top:16px;padding:10px 14px;font-size:.8rem;font-weight:500}.spinner.svelte-lenod{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.8s linear infinite svelte-lenod-spin}@keyframes svelte-lenod-spin{to{transform:rotate(360deg)}}.hidden.svelte-lenod{display:none}.modal-backdrop.svelte-l0ytfo{z-index:58;-webkit-backdrop-filter:blur(4px);background:#010c1e73;position:fixed;inset:0}.modal-panel.svelte-l0ytfo{z-index:59;background:var(--color-surface,#fff);border:1px solid var(--color-border);border-radius:20px;flex-direction:column;width:520px;max-width:95vw;max-height:92vh;display:flex;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%);box-shadow:0 32px 96px #010c1e33,0 8px 32px #010c1e1f,inset 0 1px #ffffffb3}html.dark .modal-panel.svelte-l0ytfo{background:#070f1f;border-color:#94a3b81f;box-shadow:0 32px 96px #0009,0 8px 32px #0006,inset 0 1px #ffffff0a}.modal-header.svelte-l0ytfo{border-bottom:1px solid var(--color-border);flex-shrink:0;align-items:center;gap:12px;padding:18px 20px 16px;display:flex}.modal-header-icon.svelte-l0ytfo{color:#fff;background:linear-gradient(135deg,#0ea5e9,#6366f1);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex;box-shadow:0 4px 12px #0ea5e94d}.modal-title.svelte-l0ytfo{color:var(--color-text);letter-spacing:-.01em;font-size:.9rem;font-weight:800}.modal-subtitle.svelte-l0ytfo{color:var(--color-text-muted);margin-top:1px;font-size:.68rem}.modal-close-btn.svelte-l0ytfo{width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:background .15s,color .15s;display:flex}.modal-close-btn.svelte-l0ytfo:hover{color:#ef4444;background:#ef44441a}.modal-body.svelte-l0ytfo{flex-direction:column;flex:1;gap:14px;padding:18px 20px;display:flex}.field-grid-2.svelte-l0ytfo{grid-template-columns:1fr 1fr;gap:12px;display:grid}.field-group.svelte-l0ytfo{flex-direction:column;gap:5px;display:flex}.field-label.svelte-l0ytfo{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);align-items:center;gap:4px;font-size:.68rem;font-weight:700;display:flex}.required.svelte-l0ytfo{color:#ef4444;font-size:.7rem}.field-hint.svelte-l0ytfo{color:var(--color-text-faint);text-transform:none;letter-spacing:0;margin-left:auto;font-size:.62rem;font-weight:500}.modal-textarea.svelte-l0ytfo{resize:vertical;min-height:96px;font-size:.82rem;line-height:1.55}.modal-footer.svelte-l0ytfo{border-top:1px solid var(--color-border);flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;padding:14px 20px;display:flex}.modal-save-btn.svelte-l0ytfo:disabled{opacity:.45;pointer-events:none}.ref-header.svelte-w0wd5z{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.ref-total-badge.svelte-w0wd5z{color:#0ea5e9;background:#0ea5e91a;border:1px solid #0ea5e933;border-radius:9999px;padding:2px 8px;font-size:.62rem;font-weight:700}.ref-search-wrap.svelte-w0wd5z{flex:1;max-width:300px;position:relative}.ref-search-icon.svelte-w0wd5z{color:var(--color-text-muted);pointer-events:none;display:flex;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.ref-search-input.svelte-w0wd5z{width:100%;padding-left:32px;padding-right:28px;font-size:.8rem}.ref-clear-btn.svelte-w0wd5z{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-radius:4px;padding:2px;transition:color .15s;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.ref-clear-btn.svelte-w0wd5z:hover{color:var(--color-text)}.ref-body.svelte-w0wd5z{grid-template-columns:160px 1fr;align-items:start;gap:16px;display:grid}@media (width<=700px){.ref-body.svelte-w0wd5z{grid-template-columns:1fr}}.ref-sidebar.svelte-w0wd5z{border:1px solid var(--color-border);border-radius:16px;flex-direction:column;gap:3px;padding:12px;display:flex;position:sticky;top:80px}.ref-sidebar-label.svelte-w0wd5z{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);padding:4px 8px 8px;font-size:.6rem;font-weight:700}.ref-cat-btn.svelte-w0wd5z{color:var(--color-text-muted);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:9px;align-items:center;gap:7px;width:100%;padding:7px 10px;font-size:.8rem;font-weight:600;transition:all .15s;display:flex}.ref-cat-btn.svelte-w0wd5z:hover{color:var(--color-text);background:#0ea5e90f}.ref-cat-btn.active.svelte-w0wd5z{color:#0ea5e9;background:#0ea5e91a;border:1px solid #0ea5e933}html.dark .ref-cat-btn.active.svelte-w0wd5z{color:#38bdf8;background:#0ea5e926;border-color:#38bdf840}.ref-cat-count.svelte-w0wd5z{color:var(--color-text-muted);background:#64748b1f;border-radius:9999px;margin-left:auto;padding:1px 6px;font-size:.62rem;font-weight:700}.ref-main.svelte-w0wd5z{flex-direction:column;display:flex}.ref-section-header.svelte-w0wd5z{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);align-items:center;gap:6px;margin-bottom:10px;font-size:.72rem;font-weight:700;display:flex}.ref-section-count.svelte-w0wd5z{color:var(--color-text-muted);background:#64748b1a;border-radius:9999px;padding:1px 6px;font-size:.6rem;font-weight:700}.ref-grid.svelte-w0wd5z{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;display:grid}.ref-card.svelte-w0wd5z{cursor:pointer;background:#fff;border:1px solid #0000000f;border-radius:16px;flex-direction:column;gap:8px;padding:18px 20px;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative;overflow:hidden;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -2px #00000008}.ref-card.svelte-w0wd5z:before{content:"";background:0 0;height:3px;transition:all .2s;position:absolute;top:0;left:0;right:0}.ref-card.svelte-w0wd5z:hover{border-color:#00000014;transform:translateY(-2px);box-shadow:0 12px 24px -4px #00000014,0 8px 12px -6px #0000000a}html.dark .ref-card.svelte-w0wd5z{background:#0a1226cc;border:1px solid #ffffff14;box-shadow:0 4px 12px #0003}html.dark .ref-card.svelte-w0wd5z:hover{border-color:#ffffff26;box-shadow:0 10px 30px #0006}.ref-card-tool.svelte-w0wd5z:hover:before{background:linear-gradient(90deg,#6366f1,#a855f7)}.ref-card-prompt.svelte-w0wd5z:hover:before{background:linear-gradient(90deg,#a855f7,#ec4899)}.ref-card-resource.svelte-w0wd5z:hover:before{background:linear-gradient(90deg,#10b981,#3b82f6)}.ref-card-top.svelte-w0wd5z{align-items:center;gap:6px;display:flex}.ref-type-badge.svelte-w0wd5z{text-transform:uppercase;letter-spacing:.06em;border:1px solid #0000;border-radius:9999px;align-items:center;gap:4px;padding:2px 7px;font-size:.6rem;font-weight:700;display:inline-flex}.ref-type-tool.svelte-w0wd5z{color:#6366f1;background:#6366f11a;border-color:#6366f133}.ref-type-prompt.svelte-w0wd5z{color:#a855f7;background:#a855f71a;border-color:#a855f733}html.dark .ref-type-tool.svelte-w0wd5z{color:#818cf8}html.dark .ref-type-prompt.svelte-w0wd5z{color:#c084fc}.ref-card-name.svelte-w0wd5z{color:var(--color-text);word-break:break-word;font-size:.82rem;font-weight:700}.ref-card-desc.svelte-w0wd5z{color:var(--color-text-muted);font-size:.72rem;line-height:1.55}.ref-params.svelte-w0wd5z{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.ref-param-tag.svelte-w0wd5z{color:#0ea5e9;background:#0ea5e914;border:1px solid #0ea5e92e;border-radius:5px;padding:1px 6px;font-family:JetBrains Mono,Fira Code,monospace;font-size:.65rem}.ref-param-more.svelte-w0wd5z{color:var(--color-text-muted);background:#64748b1a;border-color:#64748b33}html.dark .ref-param-tag.svelte-w0wd5z{color:#38bdf8;background:#0ea5e91f;border-color:#38bdf833}.fab-backdrop.svelte-10ega5z{z-index:49;cursor:default;background:0 0;position:fixed;inset:0}.fab-container.svelte-10ega5z{z-index:50;flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:fixed;bottom:28px;right:28px}.fab-actions.svelte-10ega5z{flex-direction:column;align-items:flex-end;gap:10px;display:flex}.fab-action-item.svelte-10ega5z{opacity:0;pointer-events:none;align-items:center;gap:10px;transition:opacity .2s,transform .2s;display:flex;transform:translateY(12px)scale(.92)}.fab-container.open.svelte-10ega5z .fab-action-item:where(.svelte-10ega5z){opacity:1;pointer-events:auto;transform:translateY(0)scale(1)}.fab-action-label.svelte-10ega5z{color:var(--color-text);background:var(--color-surface,#fff);border:1px solid var(--color-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;letter-spacing:.01em;border-radius:8px;padding:4px 10px;font-size:.72rem;font-weight:700;box-shadow:0 2px 8px #0000001a}html.dark .fab-action-label.svelte-10ega5z{color:#e2e8f0;background:#0f172aeb}.fab-action-btn.svelte-10ega5z{cursor:pointer;color:#fff;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;transition:transform .2s,box-shadow .2s;display:flex}.fab-action-btn.memory.svelte-10ega5z{background:linear-gradient(135deg,#6366f1,#8b5cf6);box-shadow:0 4px 14px #6366f166}.fab-action-btn.task.svelte-10ega5z{background:linear-gradient(135deg,#0ea5e9,#06b6d4);box-shadow:0 4px 14px #0ea5e966}.fab-action-btn.svelte-10ega5z:hover{transform:scale(1.1)}.fab-action-btn.memory.svelte-10ega5z:hover{box-shadow:0 6px 20px #6366f18c}.fab-action-btn.task.svelte-10ega5z:hover{box-shadow:0 6px 20px #0ea5e98c}.fab-main.svelte-10ega5z{cursor:pointer;color:#fff;background:linear-gradient(135deg,#0ea5e9,#6366f1);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;transition:transform .2s,box-shadow .2s;display:flex;box-shadow:0 4px 20px #0ea5e973,0 0 #0ea5e900}.fab-main.svelte-10ega5z:hover{transform:scale(1.08);box-shadow:0 6px 28px #0ea5e999,0 0 #0ea5e900}.fab-main.svelte-10ega5z:active{transform:scale(.96)}.fab-icon.svelte-10ega5z{justify-content:center;align-items:center;transition:transform .25s cubic-bezier(.4,0,.2,1);display:flex}.fab-icon.rotated.svelte-10ega5z{transform:rotate(45deg)}.fab-container.svelte-10ega5z:not(.open) .fab-main:where(.svelte-10ega5z):after{content:"";pointer-events:none;border:2px solid #0ea5e966;border-radius:50%;animation:2.4s ease-out infinite svelte-10ega5z-fab-pulse;position:absolute;inset:-4px}@keyframes svelte-10ega5z-fab-pulse{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.45)}}@media (width<=640px){.fab-container.svelte-10ega5z{bottom:max(18px, env(safe-area-inset-bottom));right:14px}.fab-main.svelte-10ega5z{width:48px;height:48px}.fab-container.svelte-10ega5z:not(.open) .fab-main:where(.svelte-10ega5z):after{display:none}}.feature-shell.svelte-owkwhr{flex-direction:column;gap:14px;display:flex}.feature-toolbar.svelte-owkwhr{grid-template-columns:1fr auto;align-items:start;gap:14px;padding:16px;display:grid}.toolbar-title.svelte-owkwhr{align-items:center;gap:10px;display:flex}.toolbar-action.svelte-owkwhr{justify-self:end}.toolbar-subtitle.svelte-owkwhr{color:var(--color-text-muted);margin-top:2px;font-size:.72rem;font-weight:600}.toolbar-controls.svelte-owkwhr{grid-column:1/-1;grid-template-columns:minmax(220px,1.2fr) minmax(130px,.6fr) minmax(180px,1fr) minmax(140px,.6fr);gap:10px;display:grid}.feature-grid.svelte-owkwhr{grid-template-columns:minmax(320px,.9fr) minmax(0,1.25fr);align-items:start;gap:14px;display:grid}.panel-card.svelte-owkwhr{min-width:0;padding:16px}.panel-heading.svelte-owkwhr{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.form-grid.svelte-owkwhr{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 10px;display:grid}label.svelte-owkwhr span:where(.svelte-owkwhr){color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:.68rem;font-weight:800;display:block}.content-input.svelte-owkwhr{resize:vertical;min-height:150px;margin-bottom:10px}.content-label.svelte-owkwhr{display:block}.list-panel.svelte-owkwhr,.detail-panel.svelte-owkwhr{min-height:460px}.standard-list.svelte-owkwhr{flex-direction:column;gap:8px;max-height:650px;margin-top:12px;display:flex;overflow:auto}.standard-row.svelte-owkwhr{text-align:left;border:1px solid var(--color-border);cursor:pointer;color:var(--color-text);background:#ffffff7a;border-radius:8px;padding:12px}.standard-row.svelte-owkwhr:hover,.standard-row.selected.svelte-owkwhr{background:#0ea5e914;border-color:#0ea5e973}.row-title.svelte-owkwhr{margin-bottom:6px;font-size:.9rem;font-weight:800}.row-meta.svelte-owkwhr{color:var(--color-text-muted);flex-wrap:wrap;gap:8px;font-size:.72rem;font-weight:600;display:flex}.tag-row.svelte-owkwhr{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.mini-chip.svelte-owkwhr,.scope-pill.svelte-owkwhr{border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:999px;padding:2px 7px;font-size:.68rem;font-weight:700}.detail-heading.svelte-owkwhr{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.detail-title.svelte-owkwhr{color:var(--color-text);margin-bottom:6px;font-size:1rem;font-weight:850}.muted-state.svelte-owkwhr{color:var(--color-text-muted);text-align:center;padding:24px 4px;font-size:.85rem}.empty-state.svelte-owkwhr{min-height:260px;color:var(--color-text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.empty-title.svelte-owkwhr{color:var(--color-text);font-size:.92rem;font-weight:850}.empty-copy.svelte-owkwhr{max-width:260px;font-size:.78rem;line-height:1.45}.detail-empty.svelte-owkwhr{min-height:360px}.error-banner.svelte-owkwhr{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px 12px;font-size:.82rem;font-weight:700}html.dark .standard-row.svelte-owkwhr{background:#0f172a73}html.dark .standard-row.svelte-owkwhr:hover,html.dark .standard-row.selected.svelte-owkwhr{background:#0ea5e91f}@media (width<=1100px){.toolbar-controls.svelte-owkwhr,.feature-grid.svelte-owkwhr,.form-grid.svelte-owkwhr,.feature-toolbar.svelte-owkwhr{grid-template-columns:1fr}.toolbar-action.svelte-owkwhr{justify-content:center;justify-self:stretch}.list-panel.svelte-owkwhr,.detail-panel.svelte-owkwhr{min-height:auto}}.feature-shell.svelte-1ik2acm{flex-direction:column;gap:14px;display:flex}.feature-toolbar.svelte-1ik2acm{grid-template-columns:1fr auto;align-items:start;gap:14px;padding:16px;display:grid}.toolbar-title.svelte-1ik2acm{align-items:center;gap:10px;display:flex}.toolbar-subtitle.svelte-1ik2acm{color:var(--color-text-muted);margin-top:2px;font-size:.72rem;font-weight:600}.toolbar-actions.svelte-1ik2acm{justify-content:flex-end;align-items:center;gap:8px;display:flex}.toolbar-controls.svelte-1ik2acm{grid-column:1/-1;grid-template-columns:160px minmax(180px,1fr) auto;align-items:center;gap:10px;display:grid}.action-grid.svelte-1ik2acm{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.feature-grid.svelte-1ik2acm{grid-template-columns:minmax(360px,.95fr) minmax(0,1.05fr);align-items:start;gap:14px;display:grid}.panel-card.svelte-1ik2acm{min-width:0;padding:16px}.action-panel.svelte-1ik2acm{min-height:0}.panel-heading.svelte-1ik2acm{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.form-stack.svelte-1ik2acm{flex-direction:column;gap:8px;margin-top:12px;display:flex}label.svelte-1ik2acm span:where(.svelte-1ik2acm){color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:.68rem;font-weight:800;display:block}.summary-input.svelte-1ik2acm{resize:vertical;min-height:92px}.json-input.svelte-1ik2acm{resize:vertical;min-height:86px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem}.handoff-list.svelte-1ik2acm{flex-direction:column;gap:8px;max-height:650px;margin-top:12px;display:flex;overflow:auto}.handoff-row.svelte-1ik2acm{text-align:left;border:1px solid var(--color-border);cursor:pointer;color:var(--color-text);background:#ffffff7a;border-radius:8px;padding:12px}.handoff-row.svelte-1ik2acm:hover,.handoff-row.selected.svelte-1ik2acm{background:#0ea5e914;border-color:#0ea5e973}.handoff-top.svelte-1ik2acm{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.status-pill.svelte-1ik2acm{text-transform:uppercase;border:1px solid var(--color-border);border-radius:999px;padding:2px 8px;font-size:.67rem;font-weight:850}.status-pending.svelte-1ik2acm{color:#0369a1;background:#0ea5e91f}.status-accepted.svelte-1ik2acm{color:#047857;background:#10b9811f}.status-rejected.svelte-1ik2acm{color:#b91c1c;background:#ef44441f}.status-expired.svelte-1ik2acm{color:#64748b;background:#64748b1f}.row-title.svelte-1ik2acm{margin-bottom:6px;font-size:.9rem;font-weight:800;line-height:1.35}.row-meta.svelte-1ik2acm{color:var(--color-text-muted);flex-wrap:wrap;gap:8px;font-size:.72rem;font-weight:600;display:flex}.row-date.svelte-1ik2acm{color:var(--color-text-muted);font-size:.7rem;font-weight:700}.claim-result.svelte-1ik2acm,.linked-task.svelte-1ik2acm{background:#10b98114;border:1px solid #10b98140;border-radius:8px;margin-top:14px;padding:12px}.detail-title.svelte-1ik2acm{color:var(--color-text);margin-bottom:14px;font-size:1rem;font-weight:850;line-height:1.35}.detail-grid.svelte-1ik2acm{grid-template-columns:1fr 1fr;gap:10px;display:grid}.detail-grid.svelte-1ik2acm div:where(.svelte-1ik2acm){border:1px solid var(--color-border);border-radius:8px;padding:10px}.detail-grid.svelte-1ik2acm span:where(.svelte-1ik2acm){color:var(--color-text-muted);text-transform:uppercase;margin-bottom:4px;font-size:.68rem;font-weight:750;display:block}.detail-grid.svelte-1ik2acm strong:where(.svelte-1ik2acm){color:var(--color-text);word-break:break-word;font-size:.82rem}.muted-state.svelte-1ik2acm{color:var(--color-text-muted);text-align:center;padding:24px 4px;font-size:.85rem}.empty-state.svelte-1ik2acm{min-height:260px;color:var(--color-text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.empty-title.svelte-1ik2acm{color:var(--color-text);font-size:.92rem;font-weight:850}.empty-copy.svelte-1ik2acm{max-width:260px;font-size:.78rem;line-height:1.45}.detail-empty.svelte-1ik2acm{min-height:260px}.error-banner.svelte-1ik2acm{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px 12px;font-size:.82rem;font-weight:700}html.dark .handoff-row.svelte-1ik2acm{background:#0f172a73}html.dark .handoff-row.svelte-1ik2acm:hover,html.dark .handoff-row.selected.svelte-1ik2acm{background:#0ea5e91f}@media (width<=1280px){.feature-toolbar.svelte-1ik2acm{grid-template-columns:1fr}.toolbar-actions.svelte-1ik2acm{justify-content:stretch}.toolbar-actions.svelte-1ik2acm .btn:where(.svelte-1ik2acm){flex:1;justify-content:center}}@media (width<=760px){.toolbar-controls.svelte-1ik2acm,.feature-grid.svelte-1ik2acm,.detail-grid.svelte-1ik2acm,.action-grid.svelte-1ik2acm{grid-template-columns:1fr}.toolbar-actions.svelte-1ik2acm{flex-direction:column}.toolbar-actions.svelte-1ik2acm .btn:where(.svelte-1ik2acm){width:100%}}@media (width<=900px){.dashboard-grid.svelte-1m88iwd{grid-template-columns:1fr!important}}
@@ -8,8 +8,8 @@
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com">
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
10
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
11
- <script type="module" crossorigin src="/assets/index-CQDb0GgE.js"></script>
12
- <link rel="stylesheet" crossorigin href="/assets/index-DIfGHeNi.css">
11
+ <script type="module" crossorigin src="/assets/index-BESxlve8.js"></script>
12
+ <link rel="stylesheet" crossorigin href="/assets/index-DSdSQ0sh.css">
13
13
  </head>
14
14
  <body>
15
15
  <div id="app"></div>
@@ -8,7 +8,7 @@ import {
8
8
  createFileSink,
9
9
  listResources,
10
10
  logger
11
- } from "../chunk-77L3ENIX.js";
11
+ } from "../chunk-RHTFBGAQ.js";
12
12
 
13
13
  // src/dashboard/server.ts
14
14
  import express from "express";
@@ -29,6 +29,7 @@ var MAX_RESTARTS = 3;
29
29
  var REQUEST_TIMEOUT_MS = 1e4;
30
30
  var MCPClient = class {
31
31
  process = null;
32
+ starting = null;
32
33
  requestId = 0;
33
34
  pendingRequests = /* @__PURE__ */ new Map();
34
35
  isInitialized = false;
@@ -38,6 +39,16 @@ var MCPClient = class {
38
39
  this.serverPathOverride = serverPath;
39
40
  }
40
41
  async start() {
42
+ if (this.isInitialized && this.process) return;
43
+ if (this.starting) return this.starting;
44
+ this.starting = this.startInternal();
45
+ try {
46
+ await this.starting;
47
+ } finally {
48
+ this.starting = null;
49
+ }
50
+ }
51
+ async startInternal() {
41
52
  if (this.process) return;
42
53
  const serverPath = this.serverPathOverride || (fs.existsSync(path.join(__dirname, "../mcp/server.js")) ? path.join(__dirname, "../mcp/server.js") : path.join(__dirname, "./server.js"));
43
54
  this.process = spawn("node", [serverPath], {
@@ -53,6 +64,7 @@ var MCPClient = class {
53
64
  logger.error("MCP server process closed unexpectedly", { code, restartCount: this.restartCount });
54
65
  this.process = null;
55
66
  this.isInitialized = false;
67
+ this.starting = null;
56
68
  if (this.restartCount < MAX_RESTARTS) {
57
69
  this.restartCount++;
58
70
  logger.info("Attempting to restart MCP server", { attempt: this.restartCount });
@@ -48,7 +48,7 @@ import {
48
48
  setLogLevel,
49
49
  updateSessionFromInitialize,
50
50
  updateSessionRoots
51
- } from "../chunk-77L3ENIX.js";
51
+ } from "../chunk-RHTFBGAQ.js";
52
52
 
53
53
  // src/mcp/server.ts
54
54
  import readline from "readline";
@@ -18,8 +18,10 @@ ONLY call MCP tools. No prose, no code, no plans outside MCP.
18
18
 
19
19
  ## 1. PRE-ANALYSIS
20
20
  1. **Search Memory**: Call `memory-search` (architecture/history).
21
- 2. **Research Codebase**: Read relevant source files to verify current implementation and paths.
22
- 3. **De-duplicate**: Call `task-list`. DO NOT duplicate existing tasks. Link related tasks via `parent_id`/`depends_on`.
21
+ 2. **Search Standards**: Call `standard-search` when coding conventions may constrain the task.
22
+ 3. **Check Handoffs**: Call `handoff-list` for pending context that may already describe the work.
23
+ 4. **Research Codebase**: Read relevant source files to verify current implementation and paths.
24
+ 5. **De-duplicate**: Call `task-list`. DO NOT duplicate existing tasks. Link related tasks via `parent_id`/`depends_on`.
23
25
 
24
26
  ## 2. TASK DESIGN
25
27
  - **Atomic**: One logical change per task.
@@ -43,7 +45,7 @@ ONLY call MCP tools. No prose, no code, no plans outside MCP.
43
45
  - **Testing**: Scenarios.
44
46
 
45
47
  ## 4. MEMORY
46
- Log architectural/feature changes as `type: decision` via `memory-store`. Skip for simple bug fixes.
48
+ Log architectural/feature changes as `type: decision` via `memory-store`. Store reusable implementation rules via `standard-store`. Skip for simple bug fixes.
47
49
 
48
50
  ## 5. MULTI-TASK
49
51
  - Parent/Child logic for complex directives.
@@ -17,13 +17,17 @@ You are a memory-aware agent. Memory is project truth, not a suggestion.
17
17
  6. **Search Mechanics**: Hybrid Search (70% Cosine, 30% BM25). 0.55 similarity threshold prevents duplication.
18
18
 
19
19
  ## Execution Policy
20
- 1. **Search**: Call `memory-search` with `current_file_path` and `current_tags` before coding.
21
- 2. **Retrieve**: Use `memory-detail` for full content if search snippets are insufficient.
22
- 3. **Select**: Use ONLY highly relevant memories.
20
+ 1. **Orient**: Call `task-list` for active work and `handoff-list` for pending transfers when starting a repository session.
21
+ 2. **Claim**: Use `task-claim` before taking ownership of a concrete task.
22
+ 3. **Search**: Call `memory-search` with `current_file_path` and `current_tags` before coding.
23
+ 4. **Standards**: Call `standard-search` when implementation may be governed by coding standards.
24
+ 5. **Retrieve**: Use `memory-detail` for full content if search pointer rows are insufficient.
25
+ 6. **Select**: Use ONLY highly relevant memories and standards.
23
26
 
24
27
  ## Creation Policy
25
28
  Store memory ONLY if knowledge is durable (architecture, patterns, fixes) and affects future behavior.
26
29
  1. **Categorize**: Use technology `tags`.
27
30
  2. **Maintain**: Use `supersedes` for overrides.
31
+ 3. **Separate concerns**: Use `standard-store` for normative coding rules and `handoff-create` for agent transfer context. Do not store these as generic memories.
28
32
 
29
33
  Protect codebase health by respecting project history.
@@ -10,6 +10,8 @@ agent: Code Auditor
10
10
  Audit {{file_path}} against stored project knowledge.
11
11
 
12
12
  Steps:
13
- 1. **Search**: Call `memory-search` using `current_file_path='{{file_path}}'`.
14
- 2. **Evaluate**: Check for compliance with established patterns and avoidance of documented mistakes.
15
- 3. **Feedback**: Suggest fixes for any decision violations found.
13
+ 1. **Search Memory**: Call `memory-search` using `current_file_path='{{file_path}}'`.
14
+ 2. **Hydrate**: Call `memory-detail` for any relevant pointer row before enforcing it.
15
+ 3. **Search Standards**: Call `standard-search` with inferred language/stack/repo filters.
16
+ 4. **Evaluate**: Check for compliance with established patterns, documented mistakes, and applicable coding standards.
17
+ 5. **Feedback**: Suggest fixes for violations, citing whether the source is memory or standard.
@@ -13,7 +13,7 @@ agent: Memory Auditor
13
13
 
14
14
  ## ✅ MANDATORY
15
15
  Only store durable, project-specific knowledge.
16
- - **Types**: `code_fact`, `decision`, `mistake`, `pattern`, `task_archive`.
16
+ - **Types**: `code_fact`, `decision`, `mistake`, `pattern`, `file_claim`, `task_archive`.
17
17
  - **Content**: Architecture, UI/UX choices, stack patterns, hard-won bug fixes.
18
18
  - **Global**: Set `is_global` only if applicable across repositories (e.g., framework anti-patterns).
19
19
  - **Categorization**: Use accurate technology tags.
@@ -22,3 +22,5 @@ Only store durable, project-specific knowledge.
22
22
  - Do **not** store agent coordination state as memory.
23
23
  - Use `handoff-create` and `handoff-list` for agent handoffs.
24
24
  - Use `task-claim` for task ownership instead of encoding claims in memory metadata.
25
+ - Use `standard-store` for normative coding standards; do not bury implementation rules in generic `decision` memories.
26
+ - Use `standard-search` as the standards navigation layer before applying or creating standards.
@@ -7,7 +7,10 @@ agent: Session Concierge
7
7
  Initialize session in repository.
8
8
 
9
9
  Briefing Steps:
10
- 1. **Discover**: Call `memory-search` (current repo) to find recent decisions, patterns, and mistakes.
11
- 2. **Backlog**: Call `task-list` to see active/pending tasks.
12
- 3. **Core Context**: Summarize the top 3 architectural decisions found.
13
- 4. **Action**: Propose next steps based on backlog.
10
+ 1. **Repository**: Identify current repo from context.
11
+ 2. **Tasks**: Call `task-list` for `in_progress,pending` tasks.
12
+ 3. **Handoffs**: Call `handoff-list` with `status=pending` to surface transfer context.
13
+ 4. **Memory**: Call `memory-search` or `memory-recap` for recent decisions, patterns, and mistakes; hydrate important entries with `memory-detail`.
14
+ 5. **Standards**: Call `standard-search` with current repo/stack when implementation guidance is needed.
15
+ 6. **Core Context**: Summarize active task, pending handoffs, applicable standards, and top architectural decisions.
16
+ 7. **Action**: Propose next steps based on the active queue.
@@ -12,18 +12,21 @@ agent: Quality Auditor
12
12
  ## 1. ANALYSIS
13
13
  1. **Sequential Discovery**: Explore docs and code sequentially. NO parallel sub-agents.
14
14
  2. **UX Audit**: Use `chrome-dev-tools` for visual, navigation, and responsiveness checks.
15
- 3. **Compare**: Match docs + code findings against live UI to find gaps/misalignments.
15
+ 3. **Reference Audit**: Check current tool/prompt/resource definitions through code or the dashboard Reference flow.
16
+ 4. **Compare**: Match docs + code findings against live UI to find gaps/misalignments.
16
17
 
17
18
  ## 🚫 FORBIDDEN: NON-EXECUTION
18
19
  DO NOT edit/create/delete files, run commands, or implement code.
19
- **Allowed**: Read code, `chrome-dev-tools`, `task-create`, `memory-store`, `task-list`, `memory-search`.
20
+ **Allowed**: Read code, `chrome-dev-tools`, `task-create`, `memory-store`, `task-list`, `memory-search`, `standard-search`, `handoff-list`.
20
21
 
21
22
  ## ✅ OUTPUT: MCP ONLY
22
23
  ONLY call MCP tools. No prose, code, or external plans.
23
24
 
24
25
  ## 2. PRE-TASK ANALYSIS
25
26
  1. **Search**: Call `memory-search` (Hybrid Search). 0.55 similarity threshold.
26
- 2. **De-duplicate**: Call `task-list`. Skip existing/redundant tasks. Link via `parent_id`/`depends_on`.
27
+ 2. **Standards**: Call `standard-search` when implementation conventions are relevant.
28
+ 3. **Handoffs**: Call `handoff-list` for pending transfer context related to the target.
29
+ 4. **De-duplicate**: Call `task-list`. Skip existing/redundant tasks. Link via `parent_id`/`depends_on`.
27
30
 
28
31
  ## 3. TASK DESIGN & FORMAT
29
32
  - **Atomic**: One change per task.
@@ -41,6 +44,7 @@ ONLY call MCP tools. No prose, code, or external plans.
41
44
 
42
45
  ## 4. LOGGING & MULTI-TASK
43
46
  - Log architectural/feature changes as `type: decision` via `memory-store`.
47
+ - Log reusable coding rules as `standard-store` only when the rule is durable and source-backed.
44
48
  - Use Parent/Child structure for complex gaps.
45
49
 
46
50
  ## 5. SELF-CHECK
@@ -10,9 +10,12 @@ agent: Strategy Lead
10
10
  Plan execution for: '{{objective}}'.
11
11
 
12
12
  Steps:
13
- 1. **Analyze**: Break into 3-7 atomic, verifiable tasks.
14
- 2. **Phase**: Group into 'research', 'implementation', 'validation'.
15
- 3. **Hierarchy**: Use `parent_id` / `depends_on` for sequencing.
16
- 4. **Create**: Use `task-create` in current repo.
13
+ 1. **Orient**: Call `task-list` to avoid duplicate active/backlog work.
14
+ 2. **Standards**: Call `standard-search` if the objective touches implementation conventions.
15
+ 3. **Handoffs**: Call `handoff-list` for pending context that may affect sequencing.
16
+ 4. **Analyze**: Break into 3-7 atomic, verifiable tasks.
17
+ 5. **Phase**: Group into `research`, `implementation`, and `validation`.
18
+ 6. **Hierarchy**: Use `parent_id` / `depends_on` for sequencing.
19
+ 7. **Create**: Use `task-create` in current repo with stable `task_code`, tags, and acceptance criteria.
17
20
 
18
21
  Display final plan to user.
@@ -8,16 +8,20 @@ agent: Project Manager
8
8
 
9
9
  ## 1. NAVIGATION (`task-list`)
10
10
  - **Sync**: Call `task-list` at every session start (default: `in_progress,pending`).
11
- - **Format**: Compact table (IDs only). Use `query` for keyword search.
11
+ - **Format**: Compact pointer table: `id`, `task_code`, `title`, `status`, `priority`, `updated_at`, `comments_count`. Use `query` for keyword search.
12
12
  - **Retrieve**: Fetch full context via `task-detail` AFTER selecting a task.
13
- - **Coordination**: NEVER work on `in_progress` tasks assigned to others. Focus on ONE task at a time.
13
+ - **Coordination**: Check active ownership with task metadata and `task-claim`. NEVER work on tasks claimed by others. Focus on ONE task at a time.
14
14
 
15
15
  ## 2. DETAIL TOOLS
16
16
  - **Tasks**: Call `task-detail` for history/comments (ID or `task_code`).
17
17
  - **Memory**: Call `memory-detail` for full entry content.
18
+ - **Standards**: Call `standard-search` before implementation when coding standards may apply.
19
+ - **Handoffs**: Call `handoff-list` to discover pending context transfers before starting a task.
18
20
 
19
21
  ## 3. WORKFLOW
20
22
  - **Planning**: Create tasks for full lifecycle (Research → Strategy → Execution → Validation).
21
23
  - **Transition Safety**: MUST move from `backlog/pending` → `in_progress` → `completed`. Skipping `in_progress` is forbidden.
22
- - **Validation**: Only `complete` after passing tests.
24
+ - **Claiming**: Use `task-claim` when taking ownership of a task, with `task_code` when working from human-visible queues.
25
+ - **Handoff**: Use `handoff-create` when pausing, transferring ownership, or leaving structured context for another agent.
26
+ - **Validation**: Only mark `completed` after passing tests or explicitly documenting why verification could not run.
23
27
  - **Archiving**: Completion triggers auto-archive to `task_archive` memory with token reporting.
@@ -9,7 +9,8 @@ agent: Task Executor
9
9
  ## 1. SYNC & FILTER
10
10
  1. **Identify**: Get repo name (git/context).
11
11
  2. **List**: Call `task-list` ONCE for active tasks.
12
- 3. **Audit**: Identify stale `in_progress` tasks (>30m no update). Hydrate via `task-detail` to check timestamps.
12
+ 3. **Handoffs**: Call `handoff-list` with `status=pending` and inspect relevant transfer context before selecting work.
13
+ 4. **Audit**: Identify stale `in_progress` tasks (>30m no update). Hydrate via `task-detail` to check timestamps.
13
14
 
14
15
  ## Task Cache (MANDATORY)
15
16
  - `task-detail` MUST be called at most ONCE per task
@@ -23,24 +24,28 @@ agent: Task Executor
23
24
  - **Spawn Limit**: The total number of parallel sub-agents MUST NOT exceed 4. Each sub-agent executes EXACTLY ONE task at a time.
24
25
  - **Fallback**: If the current agent CANNOT spawn sub-agents, it MUST execute tasks sequentially (exactly ONE concurrent task) until the queue is clear.
25
26
  2. **Hydrate**: Fetch full context via `task-detail` for the assigned task.
26
- 3. **Start**: `task-update` status to `in_progress` (MUST transition: `pending` `in_progress`). Add agent/role metadata.
27
- 4. **Research**: Call `memory-search` (Hybrid Search).
28
- 5. **Execute**:
27
+ 3. **Claim**: Use `task-claim` with `task_code` or `task_id` before implementation.
28
+ 4. **Start**: `task-update` status to `in_progress` (MUST transition: `pending` → `in_progress`). Add agent/role metadata.
29
+ 5. **Research**: Call `memory-search` (Hybrid Search) and hydrate relevant results with `memory-detail`.
30
+ 6. **Standards**: Call `standard-search` for language/stack/repo conventions and apply only relevant standards.
31
+ 7. **Execute**:
29
32
  - **Trace**: Inspect logic, call sites, and docs. DO NOT infer from file presence.
30
33
  - **Logic**: Implement per description/intent.
31
- 6. **Validate**:
34
+ 8. **Validate**:
32
35
  - Trace path end-to-end.
33
36
  - Run tests/linters/type-checks.
34
37
  - Logic audit for all affected paths.
35
- - **Browser Verification (MANDATORY)**: If the task involves UI/UX changes, use `browser-subagent` (Chrome DevTools) to verify the feature is functional and consumable by the user. Check for console errors, layout issues, and interactive behavior. see credential in seeder
36
- 7. **Finalize**:
38
+ - **Browser Verification (MANDATORY)**: If the task involves UI/UX changes, use Playwright or Chrome DevTools to verify the feature is functional and consumable by the user. Check console errors, layout overflow, responsive behavior, and core interactions.
39
+ 9. **Finalize**:
37
40
  - **Evidence**: `task-update` status to `completed` with detailed 'comment' (inspected files, verified logic, test results).
38
41
  - **Memory**: Store insights as `code_fact`/`pattern` via `memory-store`.
42
+ - **Standards**: Store durable implementation rules via `standard-store`, not generic memory.
43
+ - **Handoff**: If work remains or ownership changes, create `handoff-create` with concise summary and structured context.
39
44
  - **Retrospective**: Invoke `learning-retrospective`.
40
45
  - **Commit**: Atomic git commit. The commit message MUST include the task code (for example: `fix: ... [TASK-123]`).
41
46
  - **GitHub Issue Traceability**: If task metadata contains a GitHub Issue reference, the commit message MUST also include the issue hashtag in `#123` format.
42
47
  - **Issue Number Extraction**: Read the issue number from task metadata when available. If metadata only contains a GitHub Issue URL, extract the trailing issue number from that URL before committing.
43
- 8. **Repeat**: Claim next task from `task-list`.
48
+ 10. **Repeat**: Claim next task from `task-list`.
44
49
 
45
50
  ## 3. BACKLOG MAINTENANCE
46
51
  If active queue is empty:
@@ -11,5 +11,7 @@ Scout for relevant knowledge using tags: [{{tags}}].
11
11
 
12
12
  Steps:
13
13
  1. **Search**: Call `memory-search` with `current_tags=[{{tags}}]`.
14
- 2. **Filter**: Identify applicable 'patterns' or 'decisions' from other repos.
15
- 3. **Adapt**: Explain adaptation of these practices to current project.
14
+ 2. **Standards**: Call `standard-search` with `stack=[{{tags}}]` to find reusable coding standards.
15
+ 3. **Hydrate**: Use `memory-detail` for relevant memory pointer rows.
16
+ 4. **Filter**: Identify applicable `pattern`, `decision`, and coding standard entries from similar stacks.
17
+ 5. **Adapt**: Explain adaptation of these practices to current project and clearly separate memory-derived guidance from standards.
@@ -6,17 +6,34 @@ agent: System Architect
6
6
  ---
7
7
  # Tool Usage Standards
8
8
 
9
- 1. **`memory-store`**:
10
- - Tag by tech-stack.
11
- - `is_global` ONLY for universal rules.
12
- - Use `supersedes` for overrides.
9
+ Use the tools in the same flow exposed by the dashboard: navigate with compact lists/search, hydrate only selected records, then mutate through the dedicated create/update tools.
13
10
 
14
- 2. **`memory-search`**:
15
- - Provide `current_file_path` for scoped ranking.
16
- - Use `current_tags` for affinity-based discovery.
11
+ ## 1. Memory Flow
12
+ - **Navigate**: Use `memory-recap` for repository overview and `memory-search` for targeted lookup. Search returns pointer rows only.
13
+ - **Hydrate**: Use `memory-detail` with `id` or `code` before relying on full content.
14
+ - **Store**: Use `memory-store` only for durable project knowledge. Tag by tech stack, keep titles human-readable, and put auxiliary context in `metadata`.
15
+ - **Scope**: Set `is_global=true` only for rules that apply across repositories.
16
+ - **Maintain**: Use `memory-update` or `supersedes` when knowledge changes. Avoid duplicate memories.
17
+ - **Acknowledge**: After using memory to generate code, call `memory-acknowledge` with `used`, `irrelevant`, or `contradictory`.
17
18
 
18
- 3. **`memory-acknowledge`**:
19
- - **Mandatory**. Report `used` or `contradictory`.
19
+ ## 2. Task Flow
20
+ - **Navigate**: Start with `task-list` using active statuses (`in_progress,pending`) or explicit filters.
21
+ - **Hydrate**: Use `task-detail` after selecting a task from the list. Do not treat list rows as full task context.
22
+ - **Mutate**: Use `task-create`, `task-update`, and `task-delete` for lifecycle changes.
23
+ - **Transitions**: Move `backlog/pending/blocked` to `in_progress` before `completed`; include validation evidence and token estimate on completion.
20
24
 
21
- 4. **`memory-update`**:
22
- - Maintain accuracy. Avoid duplicates.
25
+ ## 3. Standards Flow
26
+ - **Search first**: Use `standard-search` to find coding standards by `query`, `language`, `stack`, `repo`, and `is_global`.
27
+ - **Apply precisely**: Treat standards as implementation rules, not generic documentation summaries.
28
+ - **Store atomically**: Use `standard-store` for one rule per entry with `name`, `content`, `context`, `version`, `language`, `stack`, `tags`, and correct repo/global scope.
29
+ - **Scope**: Prefer repo-specific standards for local conventions; use global standards only for cross-repo rules.
30
+
31
+ ## 4. Handoff & Claim Flow
32
+ - **Queue**: Use `handoff-list` as the handoff navigation layer. Filter by `status`, `from_agent`, or `to_agent`.
33
+ - **Create handoff**: Use `handoff-create` when work needs context transfer. Include `from_agent`, optional `to_agent`, optional `task_code` or `task_id`, concise `summary`, and structured `context`.
34
+ - **Claim task**: Use `task-claim` for task ownership. Do not encode claims in memory metadata.
35
+ - **Linkage**: Prefer `task_code` for human workflows and `task_id` when already hydrated.
36
+
37
+ ## 5. Reference Flow
38
+ - Use the dashboard Reference tab as the canonical index of available tools, prompts, resources, schemas, and descriptions.
39
+ - Keep prompt and tool definitions aligned with actual schemas so agents and UI users see the same workflow contract.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vheins/local-memory-mcp",
3
- "version": "0.8.43",
3
+ "version": "0.8.44",
4
4
  "description": "MCP Local Memory Service for coding copilot agents",
5
5
  "mcpName": "io.github.vheins/local-memory-mcp",
6
6
  "type": "module",