@vheins/local-memory-mcp 0.8.42 → 0.8.43

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}.sidebar.collapsed~.main-content,.main-content.sidebar-collapsed{margin-left:var(--sidebar-collapsed-width)}@media (width<=1024px){.sidebar{display:none}.main-content{margin-left:0!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}.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)}.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}.pin-btn.svelte-vbr9x3:hover{color:#0ea5e9;background:#0ea5e91a;transform:scale(1.15)}@media (width<=1024px){#mobileMenuBtn.svelte-2va9hf{display:flex!important}}.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}}.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}.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:20px;right:16px}}.feature-shell.svelte-owkwhr{flex-direction:column;gap:14px;display:flex}.feature-toolbar.svelte-owkwhr{flex-direction:column;gap:14px;padding:16px;display:flex}.toolbar-title.svelte-owkwhr{align-items:center;gap:10px;display:flex}.toolbar-subtitle.svelte-owkwhr{color:var(--color-text-muted);margin-top:2px;font-size:.72rem;font-weight:600}.toolbar-controls.svelte-owkwhr{grid-template-columns:1.2fr .7fr 1fr .7fr;gap:10px;display:grid}.feature-grid.svelte-owkwhr{grid-template-columns:.95fr 1fr 1.15fr;align-items:start;gap:14px;display:grid}.panel-card.svelte-owkwhr{min-width:0;padding:16px}.form-grid.svelte-owkwhr{grid-template-columns:1fr 1fr;gap:8px;margin:12px 0 8px;display:grid}.content-input.svelte-owkwhr{resize:vertical;min-height:180px;margin-bottom:10px}.list-panel.svelte-owkwhr,.detail-panel.svelte-owkwhr{min-height:430px}.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}.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{grid-template-columns:1fr}}.feature-shell.svelte-1ik2acm{flex-direction:column;gap:14px;display:flex}.feature-toolbar.svelte-1ik2acm{justify-content:space-between;align-items:center;gap:14px;padding:16px;display:flex}.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-controls.svelte-1ik2acm{grid-template-columns:160px minmax(180px,1fr) auto;align-items:center;gap:10px;min-width:min(100%,520px);display:grid}.feature-grid.svelte-1ik2acm{grid-template-columns:.85fr .85fr 1fr .9fr;align-items:start;gap:14px;display:grid}.panel-card.svelte-1ik2acm{min-width:0;min-height:360px;padding:16px}.form-stack.svelte-1ik2acm{flex-direction:column;gap:8px;margin-top:12px;display:flex}.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}.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-grid.svelte-1ik2acm{grid-template-columns:1fr 1fr}.feature-toolbar.svelte-1ik2acm{flex-direction:column;align-items:stretch}}@media (width<=760px){.toolbar-controls.svelte-1ik2acm,.feature-grid.svelte-1ik2acm,.detail-grid.svelte-1ik2acm{grid-template-columns:1fr}}@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-mXYdB6rj.js"></script>
12
- <link rel="stylesheet" crossorigin href="/assets/index-BbuGTan5.css">
11
+ <script type="module" crossorigin src="/assets/index-CQDb0GgE.js"></script>
12
+ <link rel="stylesheet" crossorigin href="/assets/index-DIfGHeNi.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-JWJOO5N5.js";
11
+ } from "../chunk-77L3ENIX.js";
12
12
 
13
13
  // src/dashboard/server.ts
14
14
  import express from "express";
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CAPABILITIES,
4
+ HandoffCreateSchema,
5
+ HandoffListSchema,
4
6
  LOG_LEVEL_VALUES,
5
7
  MCP_PROTOCOL_VERSION,
6
8
  MemoryAcknowledgeSchema,
@@ -13,7 +15,10 @@ import {
13
15
  MemorySynthesizeSchema,
14
16
  MemoryUpdateSchema,
15
17
  SQLiteStore,
18
+ StandardSearchSchema,
19
+ StandardStoreSchema,
16
20
  TOOL_DEFINITIONS,
21
+ TaskClaimSchema,
17
22
  TaskCreateInteractiveSchema,
18
23
  TaskCreateSchema,
19
24
  TaskDeleteSchema,
@@ -43,7 +48,7 @@ import {
43
48
  setLogLevel,
44
49
  updateSessionFromInitialize,
45
50
  updateSessionRoots
46
- } from "../chunk-JWJOO5N5.js";
51
+ } from "../chunk-77L3ENIX.js";
47
52
 
48
53
  // src/mcp/server.ts
49
54
  import readline from "readline";
@@ -1624,6 +1629,230 @@ async function handleMemoryDetail(args, storage) {
1624
1629
  });
1625
1630
  }
1626
1631
 
1632
+ // src/mcp/tools/handoff.manage.ts
1633
+ function buildHandoffListSummary(repo, count, status, fromAgent, toAgent) {
1634
+ const parts = [`Found ${count} handoff${count === 1 ? "" : "s"} in repo "${repo}".`];
1635
+ if (status) {
1636
+ parts.push(`Status filter: ${status}.`);
1637
+ }
1638
+ if (fromAgent) {
1639
+ parts.push(`From agent: ${fromAgent}.`);
1640
+ }
1641
+ if (toAgent) {
1642
+ parts.push(`To agent: ${toAgent}.`);
1643
+ }
1644
+ return parts.join("\n");
1645
+ }
1646
+ async function handleHandoffCreate(args, storage) {
1647
+ const validated = HandoffCreateSchema.parse(args);
1648
+ const { repo, from_agent, to_agent, task_id, task_code, summary, context, expires_at, structured } = validated;
1649
+ let resolvedTaskId = task_id ?? null;
1650
+ if (!resolvedTaskId && task_code) {
1651
+ const task = storage.tasks.getTaskByCode(repo, task_code);
1652
+ if (!task) {
1653
+ throw new Error(`Task not found: ${task_code} in repo ${repo}`);
1654
+ }
1655
+ resolvedTaskId = task.id;
1656
+ }
1657
+ const handoff = storage.handoffs.createHandoff({
1658
+ repo,
1659
+ from_agent,
1660
+ to_agent,
1661
+ task_id: resolvedTaskId,
1662
+ summary,
1663
+ context,
1664
+ expires_at
1665
+ });
1666
+ const contentSummary = [
1667
+ `Created handoff ${handoff.id}.`,
1668
+ `Repo: ${handoff.repo}`,
1669
+ `From: ${handoff.from_agent}`,
1670
+ `To: ${handoff.to_agent || "unassigned"}`,
1671
+ `Status: ${handoff.status}`,
1672
+ `Task ID: ${handoff.task_id || "-"}`,
1673
+ `Summary: ${handoff.summary}`
1674
+ ].join("\n");
1675
+ return createMcpResponse(handoff, contentSummary, {
1676
+ contentSummary,
1677
+ includeSerializedStructuredContent: structured
1678
+ });
1679
+ }
1680
+ async function handleHandoffList(args, storage) {
1681
+ const validated = HandoffListSchema.parse(args);
1682
+ const { repo, status, from_agent, to_agent, limit, offset, structured } = validated;
1683
+ const handoffs = storage.handoffs.listHandoffs({
1684
+ repo,
1685
+ status,
1686
+ from_agent,
1687
+ to_agent,
1688
+ limit,
1689
+ offset
1690
+ });
1691
+ const COLUMNS = ["id", "from_agent", "to_agent", "task_id", "status", "created_at", "summary"];
1692
+ const rows = handoffs.map((handoff) => [
1693
+ handoff.id,
1694
+ handoff.from_agent,
1695
+ handoff.to_agent,
1696
+ handoff.task_id,
1697
+ handoff.status,
1698
+ handoff.created_at,
1699
+ handoff.summary
1700
+ ]);
1701
+ const structuredData = {
1702
+ schema: "handoff-list",
1703
+ handoffs: {
1704
+ columns: [...COLUMNS],
1705
+ rows
1706
+ },
1707
+ count: rows.length,
1708
+ offset
1709
+ };
1710
+ const contentSummary = buildHandoffListSummary(repo, rows.length, status, from_agent, to_agent);
1711
+ return createMcpResponse(structuredData, contentSummary, {
1712
+ contentSummary,
1713
+ includeSerializedStructuredContent: structured
1714
+ });
1715
+ }
1716
+ async function handleTaskClaim(args, storage) {
1717
+ const validated = TaskClaimSchema.parse(args);
1718
+ const { repo, task_id, task_code, agent, role, metadata, structured } = validated;
1719
+ let taskId = task_id;
1720
+ let resolvedTaskCode;
1721
+ if (taskId) {
1722
+ const task = storage.tasks.getTaskById(taskId);
1723
+ if (!task || task.repo !== repo) {
1724
+ throw new Error(`Task not found: ${taskId} in repo ${repo}`);
1725
+ }
1726
+ resolvedTaskCode = task.task_code;
1727
+ } else if (task_code) {
1728
+ const task = storage.tasks.getTaskByCode(repo, task_code);
1729
+ if (!task) {
1730
+ throw new Error(`Task not found: ${task_code} in repo ${repo}`);
1731
+ }
1732
+ taskId = task.id;
1733
+ resolvedTaskCode = task.task_code;
1734
+ } else {
1735
+ throw new Error("Either task_id or task_code must be provided");
1736
+ }
1737
+ const claim = storage.handoffs.claimTask({
1738
+ repo,
1739
+ task_id: taskId,
1740
+ agent,
1741
+ role,
1742
+ metadata
1743
+ });
1744
+ const responseData = {
1745
+ ...claim,
1746
+ task_code: resolvedTaskCode
1747
+ };
1748
+ const contentSummary = [
1749
+ `Claimed task ${resolvedTaskCode || claim.task_id}.`,
1750
+ `Repo: ${claim.repo}`,
1751
+ `Task ID: ${claim.task_id}`,
1752
+ `Agent: ${claim.agent}`,
1753
+ `Role: ${claim.role}`,
1754
+ `Claimed At: ${claim.claimed_at}`
1755
+ ].join("\n");
1756
+ const response = createMcpResponse(responseData, contentSummary, {
1757
+ contentSummary,
1758
+ includeSerializedStructuredContent: structured
1759
+ });
1760
+ if (structured) {
1761
+ response.structuredContent = responseData;
1762
+ }
1763
+ return response;
1764
+ }
1765
+
1766
+ // src/mcp/tools/standard.store.ts
1767
+ import { randomUUID as randomUUID3 } from "crypto";
1768
+ async function handleStandardStore(params, db2) {
1769
+ const validated = StandardStoreSchema.parse(params);
1770
+ const now = (/* @__PURE__ */ new Date()).toISOString();
1771
+ const entry = {
1772
+ id: randomUUID3(),
1773
+ title: validated.name,
1774
+ content: validated.content,
1775
+ context: validated.context || "general",
1776
+ version: validated.version || "1.0.0",
1777
+ language: validated.language || null,
1778
+ stack: validated.stack || [],
1779
+ is_global: validated.is_global !== false,
1780
+ repo: validated.repo || null,
1781
+ tags: validated.tags || [],
1782
+ metadata: validated.metadata || {},
1783
+ created_at: now,
1784
+ updated_at: now,
1785
+ agent: validated.agent || "unknown",
1786
+ model: validated.model || "unknown"
1787
+ };
1788
+ db2.standards.insert(entry);
1789
+ logger.info("[Tool] standard.store - saved coding standard", {
1790
+ standardId: entry.id,
1791
+ title: entry.title,
1792
+ stack: entry.stack,
1793
+ language: entry.language
1794
+ });
1795
+ return createMcpResponse(
1796
+ {
1797
+ success: true,
1798
+ standard: entry,
1799
+ message: `Coding standard "${entry.title}" saved successfully.`
1800
+ },
1801
+ `Saved coding standard: ${entry.title}`,
1802
+ {
1803
+ structuredContentPathHint: "standard",
1804
+ includeSerializedStructuredContent: true
1805
+ }
1806
+ );
1807
+ }
1808
+
1809
+ // src/mcp/tools/standard.search.ts
1810
+ async function handleStandardSearch(params, db2) {
1811
+ const validated = StandardSearchSchema.parse(params);
1812
+ const searchOptions = {
1813
+ limit: validated.limit || 20,
1814
+ offset: validated.offset || 0
1815
+ };
1816
+ if (validated.query) {
1817
+ searchOptions.query = validated.query;
1818
+ }
1819
+ if (validated.stack && validated.stack.length > 0) {
1820
+ searchOptions.stack = validated.stack[0];
1821
+ }
1822
+ if (validated.language) {
1823
+ searchOptions.language = validated.language;
1824
+ }
1825
+ if (validated.version) {
1826
+ searchOptions.context = validated.version;
1827
+ }
1828
+ if (validated.repo !== void 0) {
1829
+ searchOptions.repo = validated.repo;
1830
+ }
1831
+ if (validated.is_global !== void 0) {
1832
+ searchOptions.is_global = validated.is_global;
1833
+ }
1834
+ const results = db2.standards.search(searchOptions);
1835
+ logger.info("[Tool] standard.search - searched coding standards", {
1836
+ resultCount: results.length,
1837
+ stack: validated.stack,
1838
+ language: validated.language,
1839
+ version: validated.version
1840
+ });
1841
+ return createMcpResponse(
1842
+ {
1843
+ success: true,
1844
+ standards: results,
1845
+ count: results.length,
1846
+ message: results.length === 0 ? "No matching coding standards found." : `Found ${results.length} matching standards.`
1847
+ },
1848
+ `Found ${results.length} coding standards matching your query`,
1849
+ {
1850
+ structuredContentPathHint: "standards",
1851
+ includeSerializedStructuredContent: true
1852
+ }
1853
+ );
1854
+ }
1855
+
1627
1856
  // src/mcp/tools/task.get.ts
1628
1857
  async function handleTaskGet(args, storage) {
1629
1858
  const validated = TaskGetSchema.parse(args);
@@ -1742,8 +1971,11 @@ function createRouter(db2, vectors2, options) {
1742
1971
  "memory-delete",
1743
1972
  "memory-bulk-delete",
1744
1973
  "memory-summarize",
1974
+ "handoff-create",
1975
+ "standard-store",
1745
1976
  "task-create",
1746
1977
  "task-create-interactive",
1978
+ "task-claim",
1747
1979
  "task-update",
1748
1980
  "task-delete"
1749
1981
  ]);
@@ -1780,6 +2012,16 @@ function createRouter(db2, vectors2, options) {
1780
2012
  return await handleMemoryDelete(args, db2, vectors2, onProgress);
1781
2013
  case "memory-detail":
1782
2014
  return await handleMemoryDetail(args, db2);
2015
+ case "handoff-create":
2016
+ return await handleHandoffCreate(args, db2);
2017
+ case "handoff-list":
2018
+ return await handleHandoffList(args, db2);
2019
+ case "task-claim":
2020
+ return await handleTaskClaim(args, db2);
2021
+ case "standard-store":
2022
+ return await handleStandardStore(args, db2);
2023
+ case "standard-search":
2024
+ return await handleStandardSearch(args, db2);
1783
2025
  case "task-create":
1784
2026
  return await handleTaskCreate(args, db2);
1785
2027
  case "task-create-interactive":
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: csl-scrapper
3
+ description: Scrape trusted documentation into atomic CSL coding standards entries.
4
+ arguments:
5
+ - name: source_title
6
+ description: Human-readable title of the documentation source.
7
+ required: true
8
+ - name: source_url
9
+ description: Canonical URL for the documentation source.
10
+ required: true
11
+ - name: documentation_content
12
+ description: Documentation excerpt or page content to normalize into atomic coding standards.
13
+ required: true
14
+ agent: Documentation Scraper
15
+ ---
16
+ Convert trusted documentation into atomic CSL (Coding Standards Library) entries for the coding_standards entity.
17
+
18
+ Source title: {{source_title}}
19
+ Source URL: {{source_url}}
20
+ Current repo: {{current_repo}}
21
+
22
+ Documentation to analyze:
23
+ {{documentation_content}}
24
+
25
+ Goal:
26
+ - Extract only source-backed coding standards from the documentation.
27
+ - Produce one atomic CSL entry per distinct rule, constraint, prohibition, or required workflow.
28
+ - Each entry must be ready for the standard-store tool shape: name, content, context, version, language, stack, tags, metadata, repo, is_global.
29
+
30
+ Atomic entry rules:
31
+ - One entry = one rule. Split bundled guidance into separate entries.
32
+ - Keep content concise, imperative, and implementation-relevant.
33
+ - Preserve the source meaning without inventing requirements.
34
+ - Ignore navigation text, marketing copy, release notes, changelog noise, and examples that do not establish a rule.
35
+ - Do not emit duplicates or near-duplicates.
36
+ - Do not infer version, language, stack, or scope unless the source makes them explicit.
37
+ - Use metadata to preserve provenance, including source_title, source_url, and a short evidence_excerpt for each entry.
38
+
39
+ Output contract:
40
+ - If tool calls are available, emit one standard-store call per accepted entry.
41
+ - If tool calls are unavailable, return a JSON array of standard-store-compatible payloads.
42
+ - Use title-like names for the "name" field and store the atomic rule text in "content".
43
+ - Use "context" for the topic area (for example: naming, error-handling, routing, testing, hooks, security).
44
+ - Default version to "1.0.0" only when the source gives no versioning signal.
45
+ - Prefer is_global=true unless the source is clearly repo-specific.
46
+
47
+ Refusal rules:
48
+ - Refuse when the material is not documentation or not clearly normative reference content.
49
+ - Refuse when the source is too incomplete to verify atomic rules.
50
+ - Refuse when the request asks you to guess, invent, or fill missing guidance from prior knowledge.
51
+ - Refuse when no source-backed coding standards can be extracted.
52
+
53
+ If you refuse, return exactly:
54
+ ```json
55
+ {
56
+ "action": "refuse",
57
+ "reason": "<short explanation>",
58
+ "missing": ["<missing evidence or source requirement>"]
59
+ }
60
+ ```
@@ -13,7 +13,12 @@ agent: Memory Auditor
13
13
 
14
14
  ## ✅ MANDATORY
15
15
  Only store durable, project-specific knowledge.
16
- - **Types**: `code_fact`, `decision`, `mistake`, `pattern`, `agent_handoff`, `agent_registered`, `file_claim`, `task_archive`.
16
+ - **Types**: `code_fact`, `decision`, `mistake`, `pattern`, `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.
20
+
21
+ ## Operational Note
22
+ - Do **not** store agent coordination state as memory.
23
+ - Use `handoff-create` and `handoff-list` for agent handoffs.
24
+ - Use `task-claim` for task ownership instead of encoding claims in memory metadata.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vheins/local-memory-mcp",
3
- "version": "0.8.42",
3
+ "version": "0.8.43",
4
4
  "description": "MCP Local Memory Service for coding copilot agents",
5
5
  "mcpName": "io.github.vheins/local-memory-mcp",
6
6
  "type": "module",