heyiam 0.1.4 → 0.1.6

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
+ :root{--surface:#f8f9fb;--surface-container-lowest:#fff;--surface-container-low:#f3f4f6;--surface-container:#edeef0;--surface-container-high:#e7e8ea;--surface-container-highest:#e1e2e4;--surface-dim:#d9dadc;--surface-tint:#316190;--primary:#084471;--on-primary:#fff;--primary-container:#2b5c8a;--on-primary-container:#b0d4ff;--primary-fixed:#d0e4ff;--primary-fixed-dim:#9dcaff;--secondary:#006a61;--on-secondary:#fff;--secondary-container:#93f4e6;--tertiary:#663500;--on-tertiary:#fff;--tertiary-fixed:#ffdcc3;--tertiary-fixed-dim:#ffb77d;--on-tertiary-fixed:#2f1500;--on-tertiary-fixed-variant:#6e3900;--on-surface:#191c1e;--on-surface-variant:#42474e;--outline:#72787e;--outline-variant:#c2c7d0;--error:#ba1a1a;--error-container:#ffdad6;--on-error:#fff;--inverse-surface:#2e3132;--inverse-on-surface:#f0f1f3;--inverse-primary:#9dcaff;--font-display:"Space Grotesk", sans-serif;--font-body:"Inter", sans-serif;--font-mono:"IBM Plex Mono", monospace;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--spacing-1:.25rem;--spacing-2:.5rem;--spacing-3:.75rem;--spacing-4:1rem;--spacing-5:1.25rem;--spacing-6:1.5rem;--spacing-8:2rem;--spacing-10:2.5rem;--spacing-12:3rem;--spacing-16:4rem;--spacing-20:5rem;--spacing-24:5.5rem;--shadow-ambient:0 12px 40px #191c1e0f;--shadow-sm:0 1px 3px #191c1e0a;--ghost-border:1px solid #c2c7d026;font-family:var(--font-body);color:var(--on-surface);background:var(--surface);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;margin:0;overflow:hidden}#root{flex-direction:column;min-height:100vh;display:flex}::selection{background:var(--primary-container);color:var(--on-primary-fixed)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#c2c7d04d;border-radius:10px}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.app-shell{background:var(--surface);flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-shell__body{flex:1;min-height:0;display:flex}.app-header{padding:var(--spacing-3) var(--spacing-6);background:var(--surface);z-index:40;flex-shrink:0;justify-content:space-between;align-items:center;height:3.5rem;display:flex;position:sticky;top:0}.app-header__left{align-items:center;gap:var(--spacing-6);display:flex}.app-header__logo{font-family:var(--font-display);color:var(--on-surface);letter-spacing:-.03em;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:1.25rem;font-weight:700;text-decoration:none}.app-header__back{width:2rem;height:2rem;color:var(--on-surface-variant);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;transition:background-color .15s;display:flex}.app-header__back:hover{background:var(--surface-container-low)}.app-header__back svg{width:1.25rem;height:1.25rem}.app-header__title{font-family:var(--font-display);color:var(--on-surface-variant);letter-spacing:-.01em;font-size:.875rem;font-weight:600}.app-header__right{align-items:center;gap:var(--spacing-3);display:flex}.app-header__auth-indicator{align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);font-size:.625rem;display:flex}.app-header__auth-dot{background:var(--outline-variant);border-radius:50%;width:.5rem;height:.5rem}.app-header__auth-dot--active{background:var(--secondary)}.app-header__icon-btn{width:2rem;height:2rem;color:var(--on-surface-variant);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;transition:background-color .15s;display:flex}.app-header__icon-btn:hover{background:var(--surface-container-low)}.app-header__icon-btn svg{width:1.25rem;height:1.25rem}.app-sidebar{background:var(--surface-container-low);border-right:var(--ghost-border);flex-direction:column;flex-shrink:0;width:16rem;display:flex;overflow-y:auto}.app-sidebar--collapsed{width:0;overflow:hidden}.app-sidebar__section{padding:var(--spacing-6)}.app-sidebar__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--on-surface-variant);margin-bottom:var(--spacing-4);font-size:.625rem}.app-sidebar__list{gap:var(--spacing-1);flex-direction:column;list-style:none;display:flex}.app-sidebar__item{align-items:center;gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);color:var(--on-surface);border-radius:var(--radius-md);cursor:pointer;text-align:start;background:0 0;border:none;width:100%;font-size:.875rem;font-weight:500;transition:background-color .15s;display:flex}.app-sidebar__item:hover{background:var(--surface-container)}.app-sidebar__item--active{background:var(--surface-container-high);color:var(--primary)}.app-sidebar__dot{background:var(--outline-variant);border-radius:50%;flex-shrink:0;width:.375rem;height:.375rem}.app-sidebar__item--active .app-sidebar__dot,.app-sidebar__item:hover .app-sidebar__dot{background:var(--primary)}.app-sidebar__footer{padding:var(--spacing-6);border-top:var(--ghost-border);margin-top:auto}.app-main{background:var(--surface);flex:1;min-width:0;overflow:hidden auto}.app-main__header{padding:var(--spacing-6) var(--spacing-8);justify-content:space-between;align-items:flex-end;display:flex}.app-main__title{font-family:var(--font-display);color:var(--on-surface);letter-spacing:-.02em;font-size:1.875rem;font-weight:700}.app-main__subtitle{color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.875rem}.app-bottom-bar{padding:var(--spacing-4) var(--spacing-6);z-index:30;justify-content:center;display:flex;position:sticky;bottom:0;left:0;right:0}.app-bottom-bar__inner{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:var(--ghost-border);box-shadow:var(--shadow-lg);border-radius:var(--radius-md);padding:var(--spacing-4) var(--spacing-6);align-items:center;gap:var(--spacing-8);background:#fffc;width:100%;max-width:42rem;display:flex}.session-card{padding:var(--spacing-4);background:var(--surface-container-lowest);border-radius:var(--radius-sm);cursor:pointer;border:var(--ghost-border);align-items:center;gap:var(--spacing-4);transition:background-color .15s;display:flex}.session-card:hover{background:var(--surface-container-high)}.session-card--selected{background:var(--surface-container-lowest);box-shadow:inset 0 0 0 1px #08447133}.session-card__identity{flex:2;min-width:0}.session-card__title{font-family:var(--font-display);color:var(--on-surface);white-space:nowrap;text-overflow:ellipsis;font-size:.9375rem;font-weight:600;overflow:hidden}.session-card__date{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--on-surface-variant);margin-top:.125rem;font-size:.625rem}.session-card__metrics{align-items:center;gap:var(--spacing-4);font-family:var(--font-mono);color:var(--on-surface-variant);flex:1;font-size:.75rem;display:flex}.session-card__metric{align-items:center;gap:var(--spacing-1);white-space:nowrap;display:flex}.session-card__status{flex-shrink:0}.raw-log{background:var(--inverse-surface);color:var(--inverse-on-surface);border-radius:var(--radius-sm);font-family:var(--font-mono);flex-direction:column;font-size:.8125rem;line-height:1.6;display:flex;overflow-y:auto}.raw-log__header{padding:var(--spacing-4);border-bottom:1px solid #ffffff14;justify-content:space-between;align-items:center;display:flex}.raw-log__header-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--primary-container);font-size:.625rem;font-weight:700}.raw-log__dots{gap:var(--spacing-2);display:flex}.raw-log__dot{opacity:.5;border-radius:50%;width:.5rem;height:.5rem}.raw-log__dot--red{background:var(--error)}.raw-log__dot--yellow{background:var(--tertiary)}.raw-log__dot--blue{background:var(--primary)}.raw-log__content{padding:var(--spacing-4);flex:1;overflow-y:auto}.raw-log__line{gap:var(--spacing-4);display:flex}.raw-log__line-num{text-align:end;opacity:.3;-webkit-user-select:none;user-select:none;flex-shrink:0;width:2rem}.raw-log__line-text{color:var(--inverse-on-surface)}.raw-log__cursor{background:var(--primary);vertical-align:middle;width:.5rem;height:1rem;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.editor-panel{flex:1;grid-template-columns:1fr 2fr;min-height:0;display:grid}.editor-panel__raw{background:var(--inverse-surface);color:var(--inverse-on-surface);font-family:var(--font-mono);border-inline-end:1px solid #ffffff0d;flex-direction:column;font-size:.75rem;display:flex;overflow-y:auto}.editor-panel__raw-header{padding:0 var(--spacing-4);background:var(--inverse-surface);border-bottom:1px solid #ffffff0f;flex-shrink:0;justify-content:space-between;align-items:center;height:2.5rem;display:flex}.editor-panel__raw-label{text-transform:uppercase;letter-spacing:.04em;opacity:.6;font-size:.625rem}.editor-panel__raw-content{padding:var(--spacing-4);flex:1;line-height:1.6;overflow-y:auto}.editor-panel__draft{background:var(--surface-container-low);position:relative;overflow-y:auto}.editor-panel__draft-content{max-width:56rem;padding:var(--spacing-12);margin:0 auto;padding-bottom:8rem}.btn{justify-content:center;align-items:center;gap:var(--spacing-2);font-family:var(--font-body);padding:var(--spacing-2) var(--spacing-5);border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;border:none;font-size:.875rem;font-weight:600;line-height:1.4;text-decoration:none;transition:opacity .15s,transform .1s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover{opacity:.9}.btn-secondary{color:var(--primary);border:var(--ghost-border);background:0 0}.btn-secondary:hover{background:var(--surface-container)}.btn-tertiary{color:var(--on-surface-variant);font-family:var(--font-mono);padding:var(--spacing-1) var(--spacing-2);background:0 0;border:none;font-size:.75rem;text-decoration:none}.btn-tertiary:hover{color:var(--primary);text-decoration:underline}.btn--lg{padding:var(--spacing-3) var(--spacing-8);font-size:.9375rem}.btn--full{width:100%}.btn--icon{padding:var(--spacing-2);width:2.5rem;height:2.5rem}.chip{align-items:center;gap:var(--spacing-1);padding:var(--spacing-1) var(--spacing-3);background:var(--surface-container-high);border-radius:var(--radius-xs);font-family:var(--font-mono);color:var(--on-surface);border:var(--ghost-border);white-space:nowrap;font-size:.625rem;font-weight:700;display:inline-flex}.chip__dot{background:var(--primary);border-radius:50%;width:.25rem;height:.25rem}.chip--primary{color:var(--primary);background:#08447114}.chip--published,.chip--sealed{background:var(--secondary-container);color:var(--secondary);font-weight:600}.chip--draft{background:var(--tertiary-fixed);color:var(--tertiary)}.chip--enhanced{color:var(--primary);background:#0844711f}.chip--archived{background:var(--surface-container-highest);color:var(--on-surface-variant)}.chip--success{background:var(--secondary-container);color:var(--secondary)}.stats-grid{gap:var(--spacing-4);grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));display:grid}.stat-card__value{font-family:var(--font-display);color:var(--on-surface);font-size:2rem;font-weight:700;line-height:1}.stat-card__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--on-surface-variant);margin-top:var(--spacing-2);font-size:.625rem}.terminal{background:var(--inverse-surface);color:var(--inverse-on-surface);border-radius:var(--radius-md);font-family:var(--font-mono);padding:var(--spacing-5);font-size:.8125rem;line-height:1.6;overflow-x:auto}.terminal__prompt{color:var(--primary-container)}.terminal__success{color:var(--secondary);font-weight:700}.terminal__error{color:var(--error-container)}.terminal__warn{color:var(--tertiary-container)}.terminal__muted{opacity:.4}.exec-path{gap:var(--spacing-4);flex-direction:column;display:flex}.exec-path__step{gap:var(--spacing-6);padding:var(--spacing-4);border-radius:var(--radius-sm);align-items:flex-start;transition:background-color .15s;display:flex}.exec-path__step:hover{background:var(--surface-container-lowest)}.exec-path__step-icon{background:var(--secondary-container);border-radius:var(--radius-md);width:2.5rem;height:2.5rem;color:var(--secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.exec-path__step-content{flex:1;min-width:0}.exec-path__step-num{font-family:var(--font-mono);color:var(--primary);font-size:.75rem;font-weight:700}.exec-path__step-title{font-family:var(--font-display);color:var(--on-surface);margin-top:var(--spacing-1);font-size:.9375rem;font-weight:700}.exec-path__step-desc{color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.875rem;line-height:1.5}.badge{align-items:center;gap:var(--spacing-1);padding:.125rem var(--spacing-2);border-radius:var(--radius-xs);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.02em;font-size:.625rem;font-weight:700;display:inline-flex}.badge--sealed{background:var(--primary-container);color:var(--on-primary-fixed);border:1px solid #0844711a}.badge--draft{background:var(--surface-container-high);color:var(--on-surface-variant)}.badge--published{background:var(--secondary-container);color:var(--secondary)}.badge--archived{background:var(--surface-container-highest);color:var(--on-surface-variant)}.label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--on-surface-variant);font-size:.625rem}.label--primary{color:var(--primary);font-weight:700}.input{font-family:var(--font-body);padding:var(--spacing-2) var(--spacing-4);background:var(--surface-container-lowest);border-radius:var(--radius-md);color:var(--on-surface);border:none;width:100%;font-size:.875rem;transition:box-shadow .15s;box-shadow:inset 0 0 0 1px #c2c7d033}.input:focus{outline:none;box-shadow:inset 0 0 0 1px #08447166}.input::placeholder{color:var(--outline-variant);opacity:.6}.textarea{font-family:var(--font-body);padding:var(--spacing-4);color:var(--on-surface);resize:none;background:0 0;border:none;width:100%;font-size:1rem;line-height:1.6}.textarea:focus{outline:none}.textarea::placeholder{color:var(--on-surface-variant);opacity:.7}.card{background:var(--surface-container-lowest);border-radius:var(--radius-sm);border:var(--ghost-border);padding:var(--spacing-6)}.card--elevated{box-shadow:var(--shadow-ambient)}.divider{height:1px;margin:var(--spacing-6) 0;background:#c2c7d026;border:none}.blueprint-grid{z-index:-1;pointer-events:none;opacity:.03;background-image:radial-gradient(var(--primary) .5px, transparent .5px);background-size:24px 24px;position:fixed;inset:0}.glass-panel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:var(--ghost-border);background:#fffc}.text-display-lg{font-family:var(--font-display);letter-spacing:-.02em;color:var(--on-surface);font-size:3.5rem;font-weight:700;line-height:1.1}.text-headline{font-family:var(--font-display);letter-spacing:-.02em;color:var(--on-surface);font-size:1.875rem;font-weight:700}.text-title{font-family:var(--font-body);color:var(--on-surface);font-size:1.25rem;font-weight:600}.text-body{font-family:var(--font-body);color:var(--on-surface);font-size:.875rem;line-height:1.5}.text-label{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.75rem}.text-label-sm{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--on-surface-variant);font-size:.625rem}.text-mono{font-family:var(--font-mono)}.setup-banner{background:var(--tertiary-fixed);padding:var(--spacing-4) var(--spacing-6);border-radius:var(--radius-sm);margin-bottom:var(--spacing-8);align-items:center;gap:var(--spacing-3);display:flex}.setup-banner__icon{color:var(--tertiary);flex-shrink:0;font-size:1rem;font-weight:600}.setup-banner__text{color:var(--tertiary);font-size:.875rem}.setup-banner__action{flex-shrink:0;margin-left:auto}.empty-state__desc{color:var(--on-surface-variant);max-width:400px;font-size:.9375rem;line-height:1.6}.empty-state__cmd{margin-top:var(--spacing-8)}.empty-state__cmd code{font-family:var(--font-mono);color:var(--on-surface-variant);background:var(--surface-container-low);padding:var(--spacing-3) var(--spacing-5);border-radius:var(--radius-sm);font-size:.8125rem;display:inline-block}.chip--queued{background:var(--surface-container-highest);color:var(--on-surface-variant);opacity:.7}.chip--processing{color:#006a61;background:#006a6126;animation:1.2s ease-in-out infinite chip-pulse}@keyframes chip-pulse{0%,to{opacity:1}50%{opacity:.5}}.chip--uploaded{background:var(--secondary-container);color:var(--secondary);font-weight:600}.chip--failed{color:#ba1a1a;background:#ba1a1a1f;font-weight:600}.sidebar-stats{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.75rem;line-height:2}.sidebar-stats strong{color:var(--on-surface)}.terminal-line{line-height:1.8}.terminal-line--prompt{color:#34d399}.terminal-line--ai{color:#60a5fa}.terminal-line--dim{color:#ffffff4d}.terminal-line--success{color:#34d399;font-weight:600}.settings-page{max-width:40rem;padding:var(--spacing-8);gap:var(--spacing-8);flex-direction:column;margin:0 auto;display:flex}.settings-section{gap:var(--spacing-4);flex-direction:column;display:flex}.settings-row{justify-content:space-between;align-items:center;display:flex}.settings-row__label{font-family:var(--font-body);color:var(--on-surface-variant);font-size:.875rem}.settings-row__value{font-family:var(--font-mono);color:var(--on-surface);font-size:.8125rem}.settings-input-group{gap:var(--spacing-2);flex-direction:column;display:flex}.settings-input-wrapper{position:relative}.settings-input-wrapper .input{padding-right:3rem}.settings-input-toggle{right:var(--spacing-2);color:var(--on-surface-variant);cursor:pointer;padding:var(--spacing-1);font-family:var(--font-mono);text-transform:uppercase;background:0 0;border:none;font-size:.625rem;position:absolute;top:50%;transform:translateY(-50%)}.settings-help{color:var(--outline);font-size:.75rem;line-height:1.4}.collapsible{background:var(--surface-container-lowest);border-radius:var(--radius-sm);border:1px solid #c2c7d026;overflow:hidden}.collapsible__summary{padding:var(--spacing-4);cursor:pointer;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;font-size:.75rem;font-weight:700;list-style:none;transition:background-color .15s;display:flex}.collapsible__summary:hover{background:var(--surface-container-low)}.collapsible__summary::-webkit-details-marker{display:none}.collapsible__chevron{color:var(--on-surface-variant);font-size:1.25rem;transition:transform .2s}details[open]>.collapsible__summary .collapsible__chevron{transform:rotate(180deg)}.collapsible__content{padding:var(--spacing-4);border-top:1px solid #c2c7d01a;padding-top:0}.file-list{font-family:var(--font-mono);gap:var(--spacing-2);padding-top:var(--spacing-4);flex-direction:column;font-size:.8125rem;display:flex}.file-list__item{align-items:center;gap:var(--spacing-3);display:flex}.file-list__additions{color:var(--secondary);text-align:end;min-width:3rem;font-weight:600}.file-list__deletions{color:var(--error);text-align:end;min-width:3rem;font-weight:600}.file-list__path{color:var(--on-surface)}.tool-bar{gap:var(--spacing-3);padding-top:var(--spacing-4);flex-direction:column;display:flex}.tool-bar__item{align-items:center;gap:var(--spacing-3);display:flex}.tool-bar__name{font-family:var(--font-mono);color:var(--on-surface-variant);min-width:4rem;font-size:.75rem}.tool-bar__track{background:var(--surface-container-high);border-radius:var(--radius-xs);flex:1;height:.375rem;overflow:hidden}.tool-bar__fill{background:var(--primary);border-radius:var(--radius-xs);height:100%;transition:width .3s}.tool-bar__count{font-family:var(--font-mono);color:var(--on-surface-variant);text-align:end;min-width:2rem;font-size:.6875rem}.timeline-list{gap:var(--spacing-3);padding-top:var(--spacing-4);flex-direction:column;display:flex}.timeline-list__item{align-items:flex-start;gap:var(--spacing-3);display:flex}.timeline-list__time{font-family:var(--font-mono);color:var(--outline);min-width:3.5rem;padding-top:.125rem;font-size:.625rem}.timeline-list__content{background:var(--surface-container);padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--on-surface-variant);flex:1;font-size:.75rem}.timeline-list__content--prompt{color:var(--primary);background:#0844710f}.enhance-layout{flex:1;grid-template-columns:5fr 7fr;min-height:0;display:grid}@media (width<=768px){.enhance-layout{grid-template-columns:1fr}}.enhance-layout__left{background:var(--inverse-surface);color:var(--inverse-on-surface);font-family:var(--font-mono);flex-direction:column;font-size:.8125rem;display:flex;overflow-y:auto}.enhance-layout__left-header{padding:var(--spacing-4) var(--spacing-5);border-bottom:1px solid #ffffff0f;flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.enhance-layout__left-label{text-transform:uppercase;letter-spacing:.08em;opacity:.6;font-size:.6875rem}.enhance-layout__left-id{color:var(--outline);font-size:.625rem}.enhance-layout__left-content{padding:var(--spacing-5);flex:1;line-height:1.6;overflow-y:auto}.enhance-layout__right{background:var(--surface-container-low);padding:var(--spacing-8);overflow-y:auto}.enhance-layout__right-inner{max-width:42rem;margin:0 auto}.enhance-status{border-radius:var(--radius-md);padding:var(--spacing-5);align-items:center;gap:var(--spacing-4);margin-bottom:var(--spacing-8);background:#0844710d;border:1px solid #0844711a;display:flex}.enhance-status__icon{background:var(--primary);width:2.5rem;height:2.5rem;color:var(--on-primary);border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;font-size:1.25rem;display:flex}.enhance-status__title{font-family:var(--font-display);color:var(--primary);font-size:.875rem;font-weight:700}.enhance-status__desc{color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.75rem}.enhance-question{background:var(--surface-container-lowest);border-radius:var(--radius-sm);padding:var(--spacing-6);margin-bottom:var(--spacing-4);border:1px solid #c2c7d026}.enhance-question__text{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-3);font-size:.9375rem;font-weight:600}.enhance-question__suggested{color:var(--outline);margin-bottom:var(--spacing-3);font-size:.8125rem;font-style:italic}.enhance-question__textarea{font-family:var(--font-body);padding:var(--spacing-3) var(--spacing-4);background:var(--surface-container-low);border-radius:var(--radius-sm);color:var(--on-surface);resize:vertical;border:1px solid #c2c7d04d;width:100%;min-height:4rem;font-size:.875rem;line-height:1.5}.enhance-question__textarea:focus{border-color:#08447166;outline:none}.enhance-question__textarea::placeholder{color:var(--on-surface-variant);opacity:.7}.enhance-question__skip{font-family:var(--font-mono);color:var(--outline);cursor:pointer;text-transform:uppercase;letter-spacing:.04em;margin-top:var(--spacing-2);background:0 0;border:none;font-size:.6875rem}.enhance-question__skip:hover{color:var(--primary);text-decoration:underline}.enhance-streaming__item{opacity:0;transition:opacity .3s,transform .3s;transform:translateY(4px)}.enhance-streaming__item--visible{opacity:1;transform:translateY(0)}.enhance-actions{padding-top:var(--spacing-6);margin-top:var(--spacing-8);border-top:1px solid #c2c7d026;justify-content:space-between;align-items:center;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=768px){.app-sidebar{border-right:none;border-bottom:var(--ghost-border);width:100%;max-height:3rem;transition:max-height .2s;overflow:hidden}.app-sidebar--expanded{max-height:50vh;overflow-y:auto}.app-shell__body{flex-direction:column}.app-main__header{padding:var(--spacing-4)}.app-main__title{font-size:1.5rem}}@media (width<=375px){.session-card{padding:var(--spacing-3);gap:var(--spacing-3)}.session-card__metrics{display:none}.session-card__title{font-size:.875rem}.app-bottom-bar{padding:var(--spacing-2) var(--spacing-3)}.app-bottom-bar__inner{padding:var(--spacing-3) var(--spacing-4);gap:var(--spacing-4);border-radius:var(--radius-sm)}.app-main__header{padding:var(--spacing-3)}.app-main__title{font-size:1.25rem}.app-sidebar__section{padding:var(--spacing-3)}}.tool-breakdown-rows{flex-direction:column;gap:4px;display:flex}.tool-breakdown-row{align-items:center;gap:var(--spacing-3);display:flex}.tool-breakdown-row__label{font-family:var(--font-mono);color:var(--on-surface-variant);text-align:right;flex-shrink:0;width:60px;font-size:.75rem}.tool-breakdown-row__track{background:var(--surface-container-low);border-radius:3px;flex:1;height:6px;overflow:hidden}.tool-breakdown-row__bar{background:var(--primary);border-radius:3px;height:100%}.tool-breakdown-row__count{font-family:var(--font-mono);width:30px;font-size:.75rem}.turn-timeline-entries{flex-direction:column;display:flex}.turn-timeline-entry{align-items:flex-start;gap:var(--spacing-3);padding:var(--spacing-2) 0;border-bottom:1px solid var(--ghost-border);display:flex}.turn-timeline-entry__num{font-family:var(--font-mono);color:var(--on-surface-variant);text-align:right;flex-shrink:0;width:24px;font-size:.6875rem}.turn-timeline-entry__content{flex:1;font-size:.8125rem}.turn-timeline-entry__tools{flex-shrink:0;gap:2px;display:flex}.chip--sm{padding:1px 6px;font-size:.5625rem}.turn-timeline-more{padding:var(--spacing-3) 0;font-family:var(--font-mono);color:var(--on-surface-variant);text-align:center;font-size:.75rem}.files-changed-list{flex-direction:column;display:flex}.files-changed-row{padding:var(--spacing-1) 0;font-family:var(--font-mono);justify-content:space-between;font-size:.75rem;display:flex}.files-changed-row__path{color:var(--on-surface)}.files-changed-row__count{color:var(--on-surface-variant)}.dashboard{max-width:960px;padding:var(--spacing-8);margin:0 auto}.dashboard__title{font-family:var(--font-display);margin-bottom:var(--spacing-2);font-size:2rem;font-weight:700}.dashboard__subtitle{color:var(--on-surface-variant);margin-bottom:var(--spacing-8);font-size:.9375rem;line-height:1.6}.dashboard__cards{gap:var(--spacing-4);flex-direction:column;display:flex}.dashboard-banner{font-family:var(--font-mono,monospace);color:#92400e;padding:var(--spacing-3) var(--spacing-4);margin-bottom:var(--spacing-4);text-align:center;background:#fef3c7;border-radius:4px;font-size:.8125rem}.dashboard-banner__link{color:#084471;font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:600;text-decoration:underline}.dashboard-loading,.dashboard-error{padding:var(--spacing-20) 0;color:var(--on-surface-variant);justify-content:center;align-items:center;font-size:.9375rem;display:flex}.empty-state{padding:var(--spacing-20) 0;text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state__icon{background:var(--surface-container-low);width:64px;height:64px;margin-bottom:var(--spacing-6);color:var(--on-surface-variant);border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;display:flex}.empty-state__title{font-family:var(--font-display);margin-bottom:var(--spacing-3);font-size:1.5rem;font-weight:700}.empty-state__text{color:var(--on-surface-variant);max-width:400px;font-size:.9375rem;line-height:1.6}.empty-state__text code{font-family:var(--font-mono);background:var(--surface-container-low);border-radius:var(--radius-sm);padding:2px 6px;font-size:.8125rem}.empty-state__hint{margin-top:var(--spacing-8)}.empty-state__hint code{font-family:var(--font-mono);color:var(--on-surface-variant);background:var(--surface-container-low);padding:var(--spacing-3) var(--spacing-5);border-radius:var(--radius-sm);font-size:.8125rem;display:inline-block}.project-card{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-6);cursor:pointer;transition:box-shadow .15s}.project-card:hover{box-shadow:var(--shadow-sm)}.project-card__header{margin-bottom:var(--spacing-4);justify-content:space-between;align-items:flex-start;display:flex}.project-card__title-row{align-items:center;gap:var(--spacing-3);margin-bottom:var(--spacing-2);display:flex}.project-card__dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.project-card__name{font-family:var(--font-display);font-size:1.25rem;font-weight:700}.project-card__desc{color:var(--on-surface-variant);font-size:.875rem;line-height:1.5}.project-card__date{font-family:var(--font-mono);color:var(--on-surface-variant);margin-top:var(--spacing-2);font-size:.6875rem}.project-card__date-ago{opacity:.5}.project-card__actions{gap:var(--spacing-2);flex-shrink:0;display:flex}.project-card__upload-btn{padding:var(--spacing-2) var(--spacing-5);flex-shrink:0;font-size:.8125rem}.project-card__badge{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;background:var(--primary-container,#e0ecf6);color:var(--primary,#084471);border-radius:3px;padding:2px 8px;font-size:.625rem;font-weight:600}.project-card__badge--stale{color:#92400e;background:#fef3c7}.project-card__badge--published{color:#16a34a;background:#dcfce7}.triage-item__published-badge{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:#16a34a;margin-left:var(--spacing-2,.5rem);vertical-align:middle;background:#dcfce7;border-radius:3px;padding:1px 6px;font-size:.6rem;font-weight:600}@keyframes wtLegendaryFade{0%{opacity:0}15%{opacity:.92}50%{opacity:.92}to{opacity:0}}@keyframes wtLegendaryText{0%{opacity:0;transform:scale(.7)}12%{opacity:1;transform:scale(1.05)}20%{transform:scale(1)}55%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.02)}}.work-timeline__scroll-controls{gap:var(--spacing-2,.5rem);margin-bottom:var(--spacing-2,.5rem);justify-content:flex-end;display:flex}.work-timeline__scroll-btn{color:#374151;width:32px;height:28px;font-family:var(--font-mono,monospace);cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:4px;justify-content:center;align-items:center;font-size:.875rem;transition:background .1s;display:flex}.work-timeline__scroll-btn:hover{background:#f3f4f6}.work-timeline__scroll-btn:active{background:#e5e7eb}.project-card__stats{gap:var(--spacing-4);margin-bottom:var(--spacing-4);grid-template-columns:repeat(4,1fr);display:grid}.project-card__stat-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);font-size:.5625rem}.project-card__stat-value{font-family:var(--font-display);font-size:1.25rem;font-weight:700}.project-card__skills{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.upload-flow{max-width:800px;padding:var(--spacing-8);margin:0 auto}.upload-flow__label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-bottom:var(--spacing-2);font-size:.6875rem}.upload-flow__title{font-family:var(--font-display);margin-bottom:var(--spacing-2);font-size:1.75rem;font-weight:700}.upload-flow__date{font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-3);font-size:.6875rem}.upload-flow__desc{color:var(--on-surface-variant);margin-bottom:var(--spacing-8);font-size:.9375rem;line-height:1.6}.upload-flow__stat-grid{gap:var(--spacing-4);margin-bottom:var(--spacing-8);grid-template-columns:repeat(4,1fr);display:grid}.upload-flow__section-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);margin-bottom:var(--spacing-3);font-size:.625rem}.upload-flow__section-label--selected{color:var(--secondary)}.upload-flow__scan-status{align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);color:var(--secondary);margin-bottom:var(--spacing-4);font-size:.6875rem;display:flex}.upload-flow__auto-select-banner{font-family:var(--font-mono);color:var(--secondary);padding:var(--spacing-3) var(--spacing-4);background:var(--surface-container,#f5f7fa);margin-bottom:var(--spacing-3);border-radius:6px;font-size:.75rem}.upload-flow__actions{gap:var(--spacing-3);margin-top:var(--spacing-8);justify-content:flex-end;display:flex}.stat-card{background:var(--surface-container-lowest);padding:var(--spacing-5);border-radius:var(--radius-sm);border:1px solid var(--ghost-border)}.stat-card__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);margin-bottom:var(--spacing-1);font-size:.625rem}.stat-card__value{font-family:var(--font-display);font-size:1.5rem;font-weight:700}.session-table{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);margin-bottom:var(--spacing-8);max-height:320px;overflow-y:auto}.session-table__header{padding:var(--spacing-2) var(--spacing-4);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);background:var(--surface-container-low);grid-template-columns:1fr 70px 60px 60px 60px;font-size:.625rem;display:grid;position:sticky;top:0}.session-table__row{padding:var(--spacing-3) var(--spacing-4);border-bottom:1px solid var(--ghost-border);grid-template-columns:1fr 70px 60px 60px 60px;font-size:.8125rem;display:grid}.session-table__name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.session-table__cell{text-align:right;font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.75rem}.phase-bar{gap:var(--spacing-1);margin-bottom:var(--spacing-6);display:flex}.phase-bar__segment{background:var(--surface-container-high);border-radius:2px;flex:1;height:3px}.phase-bar__segment--active{background:var(--primary)}.triage-method-banner{align-items:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-4);margin-bottom:var(--spacing-4);border-radius:var(--radius-sm);background:var(--surface-container,#f5f7fa);border:1px solid var(--outline-variant);color:var(--on-surface-variant);font-size:.8125rem;display:flex}.triage-method-banner__icon{flex-shrink:0;font-size:1rem}.triage-method-banner__link{color:var(--primary);white-space:nowrap;text-decoration:underline}.triage-list{gap:var(--spacing-2);margin-bottom:var(--spacing-8);flex-direction:column;display:flex}.triage-item{align-items:flex-start;gap:var(--spacing-3);padding:var(--spacing-4);border-radius:var(--radius-sm);flex-wrap:wrap;display:flex}.triage-item--selected{background:var(--surface-container-lowest);border:1px solid #006a6126}.triage-item--skipped{background:var(--surface-container-low);opacity:.7}.triage-item__checkbox{accent-color:var(--secondary);flex-shrink:0;width:16px;height:16px}.triage-item__info{flex:1;min-width:200px}.triage-item__name{text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:600;overflow:hidden}.triage-item__stats{font-family:var(--font-mono);color:var(--on-surface-variant);white-space:nowrap;font-size:.6875rem}.triage-item__reason{font-family:var(--font-mono);border-radius:var(--radius-sm);max-width:280px;padding:2px 8px;font-size:.625rem;line-height:1.4}.triage-item__reason--selected{color:var(--secondary);background:#006a6114}.triage-item__reason--skipped{background:var(--surface-container-high);color:var(--on-surface-variant);font-size:.5625rem}.triage-item__reason--expandable{cursor:pointer}.triage-item__reason--expandable:hover{opacity:.85}.triage-skipped{margin-bottom:var(--spacing-8)}.triage-skipped__summary{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);cursor:pointer;align-items:center;gap:var(--spacing-2);font-size:.625rem;list-style:none;display:flex}.triage-skipped__summary::-webkit-details-marker{display:none}.enhance-split{grid-template-columns:340px 1fr;height:calc(100vh - 3.5rem);display:grid}@media (width<=768px){.enhance-split{grid-template-columns:1fr}}.enhance-split__left{background:var(--inverse-surface);color:#fffc;padding:var(--spacing-6);flex-direction:column;height:100%;display:flex;overflow:hidden}.enhance-split__left-header{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:#fff6;margin-bottom:var(--spacing-5);font-size:.6875rem}.enhance-split__feed{gap:var(--spacing-4);scroll-behavior:smooth;flex-direction:column;flex:1;display:flex;overflow-y:auto}.enhance-feed-item--pending{opacity:.3}.enhance-feed-item__row{align-items:center;gap:var(--spacing-2);margin-bottom:var(--spacing-1);display:flex}.enhance-feed-item__check{color:#34d399;flex-shrink:0;font-size:.75rem}.enhance-feed-item__spinner{border:2px solid #fbbf24;border-top-color:#0000;border-radius:50%;flex-shrink:0;width:12px;height:12px;animation:1s linear infinite spin;display:inline-block}.enhance-feed-item__circle{color:#fff6;flex-shrink:0;font-size:.75rem}.enhance-feed-item__title{font-family:var(--font-mono);color:#fffc;font-size:.75rem}.enhance-feed-item__title--active{color:#fbbf24}.enhance-feed-item__detail{font-family:var(--font-mono);color:#ffffff59;padding-inline-start:var(--spacing-5);font-size:.625rem}.enhance-split__narrative-box{margin-top:var(--spacing-8);padding:var(--spacing-4);border-radius:var(--radius-sm);background:#ffffff0d}.enhance-split__narrative-label{font-family:var(--font-mono);color:#fff6;margin-bottom:var(--spacing-2);font-size:.625rem}.enhance-split__narrative-status{align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);color:#ffffff80;font-size:.6875rem;display:flex}.enhance-split__blink-dot{background:var(--secondary);border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:1.2s infinite blink;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.enhance-split__right{padding:var(--spacing-8);overflow-y:auto}.enhance-split__narrative-text{color:var(--on-surface-variant);margin-bottom:var(--spacing-6);border-inline-start:2px solid var(--surface-container-high);padding-inline-start:var(--spacing-4);font-size:.9375rem;line-height:1.7}.enhance-split__skills{gap:var(--spacing-2);margin-bottom:var(--spacing-6);flex-wrap:wrap;display:flex}.enhance-split__arc{gap:var(--spacing-3);margin-bottom:var(--spacing-6);flex-direction:column;display:flex}.enhance-split__arc-item{gap:var(--spacing-3);align-items:flex-start;display:flex}.enhance-split__arc-item--generating{opacity:.4}.enhance-split__arc-num{border-radius:var(--radius-sm);width:24px;height:24px;color:var(--primary);background:#08447114;flex-shrink:0;justify-content:center;align-items:center;font-size:.625rem;font-weight:600;display:flex}.enhance-split__arc-title{font-size:.875rem;font-weight:600}.enhance-split__arc-desc{color:var(--on-surface-variant);font-size:.75rem}.questions-list{gap:var(--spacing-6);margin-bottom:var(--spacing-8);flex-direction:column;display:flex}.question-card__tag-row{align-items:center;gap:var(--spacing-2);margin-bottom:var(--spacing-2);display:flex}.question-card__tag{font-family:var(--font-mono);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.08em;padding:2px 6px;font-size:.5625rem}.question-card__tag--pattern{background:var(--tertiary-fixed);color:var(--tertiary)}.question-card__tag--architecture{color:var(--primary);background:#08447114}.question-card__tag--evolution{background:var(--secondary-container);color:var(--secondary)}.question-card__text{margin-bottom:var(--spacing-3);font-size:.9375rem;font-weight:600;line-height:1.4}.question-card__textarea{width:100%;min-height:80px;padding:var(--spacing-3);border:1px solid var(--surface-container-high);border-radius:var(--radius-sm);font-family:var(--font-body);resize:vertical;background:var(--surface-container-low);color:var(--on-surface);font-size:.875rem;line-height:1.6}.question-card__textarea:focus{border-color:#08447166;outline:none}.question-card__textarea::placeholder{color:var(--on-surface-variant);opacity:.7}.timeline{margin-bottom:var(--spacing-8);padding-inline-start:var(--spacing-8);position:relative}.timeline__line{inset-inline-start:10px;background:var(--outline-variant);width:2px;position:absolute;top:0;bottom:0}.timeline__period{margin-bottom:var(--spacing-8)}.timeline__period:last-child{margin-bottom:0}.timeline__period-header{align-items:baseline;gap:var(--spacing-2);margin-bottom:var(--spacing-4);display:flex}.timeline__period-date{font-family:var(--font-mono);color:var(--on-surface);letter-spacing:.02em;font-size:.75rem;font-weight:600}.timeline__period-sep{color:var(--on-surface-variant);font-size:.75rem}.timeline__period-label{font-family:var(--font-mono);color:var(--on-surface-variant);letter-spacing:.02em;font-size:.75rem}.timeline__featured{align-items:flex-start;gap:var(--spacing-4);margin-bottom:var(--spacing-4);display:flex;position:relative}.timeline__dot--large{inset-inline-start:calc(-1 * var(--spacing-8) - 1px);top:var(--spacing-2);background:var(--primary);border:3px solid var(--surface);z-index:1;border-radius:50%;flex-shrink:0;width:22px;height:22px;position:absolute}.timeline__card{background:var(--surface-container-lowest);border:var(--ghost-border);border-radius:var(--radius-md);padding:var(--spacing-4) var(--spacing-5);flex:1}.timeline__card-header{align-items:center;gap:var(--spacing-3);margin-bottom:var(--spacing-2);display:flex}.timeline__card-title{font-family:var(--font-display);color:var(--on-surface);font-size:1rem;font-weight:600}.timeline__card-tag{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--tertiary);background:var(--tertiary-fixed);border-radius:var(--radius-sm);white-space:nowrap;padding:2px 8px;font-size:.5625rem;font-weight:600}.timeline__card-meta{gap:var(--spacing-3);font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-2);font-size:.6875rem;display:flex}.timeline__card-desc{color:var(--on-surface-variant);margin-bottom:var(--spacing-3);font-size:.875rem;line-height:1.6}.timeline__card-skills{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.timeline__collapsed{align-items:center;gap:var(--spacing-4);margin-bottom:var(--spacing-3);display:flex;position:relative}.timeline__dot--small{inset-inline-start:calc(-1 * var(--spacing-8) + 4px);background:var(--surface-container-high);border:2px solid var(--surface);z-index:1;border-radius:50%;flex-shrink:0;width:12px;height:12px;position:absolute;top:50%;transform:translateY(-50%)}.timeline__collapsed-text{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.6875rem;line-height:1.5}.review-card{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-6);margin-bottom:var(--spacing-6)}.review-card__name{font-family:var(--font-display);margin-bottom:var(--spacing-3);font-size:1.5rem;font-weight:700}.review-card__narrative{color:var(--on-surface-variant);margin-bottom:var(--spacing-6);font-size:.9375rem;line-height:1.6}.review-card__skills{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.review-checklist{background:var(--surface-container-low);border-radius:var(--radius-sm);padding:var(--spacing-5) var(--spacing-6);margin-bottom:var(--spacing-6)}.review-checklist__item{align-items:center;gap:var(--spacing-3);padding:var(--spacing-2) 0;color:var(--on-surface);font-size:.875rem;display:flex}.review-checklist__item--skipped{color:var(--on-surface-variant)}.review-checklist__icon{text-align:center;flex-shrink:0;width:1.25rem;font-size:.875rem}.review-checklist__icon--checked{color:var(--secondary);font-weight:700}.review-checklist__icon--skipped{color:var(--on-surface-variant)}.review-details{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-6);margin-bottom:var(--spacing-6)}.review-details__header{margin-bottom:var(--spacing-5);justify-content:space-between;align-items:baseline;display:flex}.review-details__optional{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);font-size:.625rem}.review-field{margin-bottom:var(--spacing-5)}.review-field:last-child{margin-bottom:0}.review-field__label{align-items:center;gap:var(--spacing-2);margin-bottom:var(--spacing-2);color:var(--on-surface);font-size:.8125rem;font-weight:600;display:flex}.review-field__badge{font-family:var(--font-mono);color:var(--secondary);border-radius:var(--radius-sm);background:#006a6114;padding:2px 8px;font-size:.625rem;font-weight:600}.review-field__input{width:100%;padding:var(--spacing-3) var(--spacing-4);font-family:var(--font-body);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--on-surface);outline:none;font-size:.875rem;transition:border-color .15s;display:block}.review-field__input:focus{border-color:var(--primary)}.review-field__input::placeholder{color:var(--on-surface-variant);opacity:.6}.review-field__hint{font-family:var(--font-mono);color:var(--on-surface-variant);padding:var(--spacing-3) 0;font-size:.75rem}.review-dropzone{justify-content:center;align-items:center;gap:var(--spacing-2);padding:var(--spacing-8) var(--spacing-6);border:2px dashed var(--ghost-border);border-radius:var(--radius-sm);cursor:pointer;flex-direction:column;transition:border-color .15s,background .15s;display:flex}.review-dropzone:hover,.review-dropzone:focus-visible{border-color:var(--primary);background:#08447108;outline:none}.review-dropzone__icon{opacity:.5;font-size:1.5rem}.review-dropzone__text{color:var(--on-surface-variant);font-size:.8125rem}.review-dropzone--active{border-color:var(--primary);background:#0844710f}.review-screenshot-actions{gap:var(--spacing-3);flex-direction:column;display:flex}.review-screenshot-preview{border-radius:var(--radius-sm);border:1px solid var(--ghost-border);position:relative;overflow:hidden}.review-screenshot-preview__img{object-fit:cover;object-position:top;width:100%;height:auto;max-height:300px;display:block}.review-screenshot-preview__remove{top:var(--spacing-2);right:var(--spacing-2);color:#fff;cursor:pointer;background:#0009;border:none;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:1rem;display:flex;position:absolute}.review-screenshot-preview__remove:hover{background:#000c}.review-auth{margin:var(--spacing-5) 0}.review-auth__card{border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-5) var(--spacing-6);background:var(--surface)}.review-auth__title{font-family:var(--font-heading);margin:0 0 var(--spacing-3) 0;font-size:1rem;font-weight:600}.review-auth__instructions{color:var(--on-surface-variant);margin:0 0 var(--spacing-4) 0;font-size:.875rem;line-height:1.5}.review-auth__instructions a{color:var(--primary);text-decoration:underline}.review-auth__code{font-family:var(--font-mono);letter-spacing:.15em;text-align:center;padding:var(--spacing-4);background:var(--bg);border-radius:var(--radius-sm);margin-bottom:var(--spacing-3);font-size:1.5rem;font-weight:700}.review-auth__polling{color:var(--on-surface-variant);text-align:center;margin:0;font-size:.8125rem}.upload-flow__error{padding:var(--spacing-3) var(--spacing-4);margin:var(--spacing-4) 0;border:1px solid var(--error,#dc2626);border-radius:var(--radius-sm);color:var(--error,#dc2626);background:#dc26260d;align-items:center;font-size:.875rem;display:flex}.enhance-error{padding:var(--spacing-4);border:1px solid var(--error,#dc2626);border-radius:var(--radius-sm);background:#dc26260d}.enhance-error__message{color:var(--error,#dc2626);margin-bottom:var(--spacing-3);font-size:.875rem}.enhance-feed-item--failed{opacity:1}.enhance-feed-item__fail{color:#dc2626;margin-right:var(--spacing-2);font-weight:700}.enhance-feed-item__title--failed,.enhance-feed-item__detail--failed{color:#dc2626}.enhance-split__failure-recovery{margin-top:var(--spacing-4);padding:var(--spacing-4);border:1px solid var(--outline-variant);border-radius:var(--radius-sm);background:var(--surface-container,#f5f7fa)}.enhance-split__failure-text{color:var(--on-surface-variant);margin:0 0 var(--spacing-3);font-size:.875rem}.publish-error{padding:var(--spacing-4);margin:var(--spacing-4) 0;border:1px solid var(--error,#dc2626);border-radius:var(--radius-sm);background:#dc26260d}.publish-error__message{color:var(--error,#dc2626);margin-bottom:var(--spacing-3);font-size:.875rem;font-weight:600}.publish-error__sessions{gap:var(--spacing-2);margin-bottom:var(--spacing-3);flex-direction:column;display:flex}.publish-error__session-row{align-items:center;gap:var(--spacing-2);font-size:.8125rem;font-family:var(--font-mono);display:flex}.publish-error__icon--published{color:var(--success-fg,#16a34a)}.publish-error__icon--failed{color:var(--error,#dc2626)}.publish-error__session-title{flex:1}.publish-error__session-error{color:var(--on-surface-variant);font-size:.75rem}.publish-error__actions{gap:var(--spacing-3);flex-wrap:wrap;display:flex}.publish-progress{margin:var(--spacing-4) 0;padding:var(--spacing-4);background:var(--surface-container,#f5f7fa);border-radius:var(--radius-sm)}.publish-progress__sessions{gap:var(--spacing-2);flex-direction:column;display:flex}.publish-progress__row{align-items:center;gap:var(--spacing-2);font-size:.8125rem;font-family:var(--font-mono);display:flex}.success-card{text-align:center;max-width:480px;margin:var(--spacing-8) auto;flex-direction:column;align-items:center;display:flex}.success-card__icon{margin-bottom:var(--spacing-4)}.success-card__title{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-2);font-size:1.5rem;font-weight:700}.success-card__subtitle{color:var(--on-surface-variant);margin-bottom:var(--spacing-6);font-size:.9375rem;line-height:1.6}.success-card__preview{background:linear-gradient(135deg, var(--primary-fixed,#d3e3f4) 0%, var(--surface-container-low) 100%);border:var(--ghost-border);border-radius:var(--radius-md);width:100%;padding:var(--spacing-5) var(--spacing-6);margin-bottom:var(--spacing-4);text-align:left}.success-card__preview-name{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-2);font-size:1.125rem;font-weight:700}.success-card__preview-narrative{color:var(--on-surface-variant);margin-bottom:var(--spacing-4);font-size:.8125rem;line-height:1.6}.success-card__preview-stats{gap:var(--spacing-3);grid-template-columns:repeat(4,1fr);display:grid}.success-card__preview-stat{flex-direction:column;align-items:center;gap:2px;display:flex}.success-card__preview-stat-value{font-family:var(--font-mono);color:var(--on-surface);font-size:1rem;font-weight:700}.success-card__preview-stat-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);font-size:.5625rem}.success-card__url-bar{background:var(--surface-container-lowest);border:var(--ghost-border);border-radius:var(--radius-sm);width:100%;padding:var(--spacing-2) var(--spacing-3);margin-bottom:var(--spacing-4);align-items:center;display:flex}.success-card__url-text{font-family:var(--font-mono);color:var(--on-surface);text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.8125rem;overflow:hidden}.success-card__url-copy{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--primary);border:1px solid var(--primary);border-radius:var(--radius-sm);padding:var(--spacing-1) var(--spacing-3);cursor:pointer;background:0 0;flex-shrink:0;font-size:.6875rem;font-weight:600;transition:background .15s}.success-card__url-copy:hover{background:#0844710f}.success-card__meta{align-items:center;gap:var(--spacing-3);margin-bottom:var(--spacing-6);justify-content:center;width:100%;display:flex}.success-card__badge{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--success-fg,#16a34a);background:var(--success-bg,#dcfce7);border-radius:var(--radius-sm);padding:2px 8px;font-size:.5625rem;font-weight:600}.success-card__meta-text{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.6875rem}.success-card__actions{gap:var(--spacing-3);width:100%;display:flex}.distribution-helpers{width:100%;border-top:1px solid var(--outline-variant);margin-block-start:var(--spacing-6);padding-block-start:var(--spacing-6)}.distribution-helpers__header{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);margin-block-end:var(--spacing-4);font-size:.6875rem;font-weight:600}.distribution-helpers__item{margin-block-end:var(--spacing-4)}.distribution-helpers__label{color:var(--on-surface);margin-block-end:var(--spacing-1);font-size:.75rem;font-weight:600}.distribution-helpers__snippet{align-items:flex-start;gap:var(--spacing-2);background:var(--surface-container,#f0f2f5);border-radius:var(--radius-sm,4px);padding:var(--spacing-2) var(--spacing-3);display:flex}.distribution-helpers__snippet code{font-family:var(--font-mono);color:var(--on-surface);word-break:break-all;white-space:pre-wrap;flex:1;font-size:.6875rem;line-height:1.5}.distribution-helpers__copy{font-family:var(--font-mono);color:var(--primary,#084471);cursor:pointer;white-space:nowrap;background:0 0;border:none;flex-shrink:0;padding:0;font-size:.6875rem;font-weight:600}.distribution-helpers__copy:hover{text-decoration:underline}.triage-terminal{background:var(--inverse-surface);color:var(--inverse-on-surface);border-radius:var(--radius-lg,12px);padding:var(--spacing-6);max-width:640px;margin:var(--spacing-8) auto;font-family:var(--font-mono);font-size:.8125rem;line-height:1.7}.triage-terminal__feed{scrollbar-width:thin;scrollbar-color:#ffffff26 transparent;max-height:480px;overflow-y:auto}.triage-terminal__line{white-space:pre;min-height:1.7em}.triage-terminal__prompt{color:var(--inverse-primary,#9dcaff);margin-bottom:var(--spacing-2);font-weight:600}.triage-terminal__section{color:#ffffff80;font-weight:600}.triage-terminal__line--passed{color:#34d399}.triage-terminal__line--skipped{color:#f87171}.triage-terminal__line--active{color:#fbbf24}@media (prefers-reduced-motion:reduce){.triage-terminal__line--active{animation:none}}.project-preview{background:var(--surface);z-index:100;position:fixed;inset:0;overflow-y:auto}.project-preview__close{top:var(--spacing-4);right:var(--spacing-6);z-index:101;font-family:var(--font-mono);color:var(--on-surface-variant);background:var(--surface-container-low);border:1px solid var(--surface-container-high);padding:var(--spacing-2) var(--spacing-4);cursor:pointer;border-radius:.375rem;font-size:.8125rem;transition:color .15s;position:fixed}.project-preview__close:hover{color:var(--on-surface)}.project-preview__close:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.project-preview__content{max-width:1000px;padding:var(--spacing-8);margin:0 auto}.project-preview__breadcrumb{font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-2);font-size:.75rem}.project-preview__title{font-family:var(--font-display);letter-spacing:-.02em;color:var(--on-surface);margin:0 0 var(--spacing-4) 0;font-size:2.5rem;font-weight:700;line-height:1.15}.project-preview__links{align-items:center;gap:var(--spacing-4);margin-bottom:var(--spacing-6);display:flex}.project-preview__link{align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);color:var(--primary);font-size:.8125rem;text-decoration:none;display:inline-flex}.project-preview__link:hover{text-decoration:underline}.project-preview__narrative{font-family:var(--font-body);color:var(--on-surface);border-left:3px solid var(--primary);padding-left:var(--spacing-4);margin-bottom:var(--spacing-6);font-size:1rem;line-height:1.65}.project-preview__skills{gap:var(--spacing-2);margin-bottom:var(--spacing-6);flex-wrap:wrap;display:flex}.project-preview__hero-stats{gap:var(--spacing-4);margin-bottom:var(--spacing-8);grid-template-columns:repeat(4,1fr);display:grid}.project-preview__hero-stat{text-align:center;padding:var(--spacing-4);border:1px solid var(--ghost-border);border-radius:.375rem}.project-preview__hero-value{font-family:var(--font-mono);color:var(--on-surface);font-size:1.5rem;font-weight:700;line-height:1.2}.project-preview__hero-value--primary{color:var(--primary)}.project-preview__hero-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.5625rem}.project-preview__timeline-heading{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--on-surface-variant);margin-bottom:var(--spacing-4);font-size:.6875rem;font-weight:600}.review-preview-link{text-align:center;margin-bottom:var(--spacing-6);font-family:var(--font-mono);color:var(--primary);cursor:pointer;padding:var(--spacing-2) 0;background:0 0;border:none;font-size:.8125rem;display:block}.review-preview-link:hover{text-decoration:underline}.review-preview-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:.25rem}.typewriter-cursor{background:var(--primary);vertical-align:text-bottom;width:2px;height:1.1em;margin-inline-start:2px;animation:.8s step-end infinite cursor-blink;display:inline-block}@keyframes cursor-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.typewriter-cursor{opacity:1;animation:none}}.project-preview__banner{background:var(--primary-fixed);color:var(--primary);text-align:center;padding:var(--spacing-2) var(--spacing-4);font-family:var(--font-mono);letter-spacing:.03em;font-size:.6875rem}.project-preview__screenshot{margin-bottom:var(--spacing-6);background:var(--surface-container-low);border-radius:var(--radius-sm);border:1px solid var(--ghost-border);overflow:hidden}.project-preview__screenshot-inner{height:280px;color:var(--on-surface-variant);justify-content:center;align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);background:linear-gradient(135deg,#0844710a,#08447114);flex-direction:column;font-size:.6875rem;display:flex}.project-preview .timeline__card:hover{box-shadow:var(--shadow-sm);border-color:#08447140}.project-preview .timeline__card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.project-preview .timeline__card{transition:box-shadow .15s,border-color .15s}.enhance-split__narrative-placeholder{align-items:center;gap:var(--spacing-3);padding:var(--spacing-4) var(--spacing-5);background:var(--surface-container-low);border-radius:var(--radius-sm);border-left:3px solid var(--primary);color:var(--on-surface-variant);margin-bottom:var(--spacing-6);font-size:.875rem;line-height:1.5;display:flex}.project-preview__sessions-heading{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-top:var(--spacing-8);margin-bottom:var(--spacing-4);font-size:.6875rem;font-weight:600}.project-preview__sessions-grid{gap:var(--spacing-4);margin-bottom:var(--spacing-8);grid-template-columns:repeat(2,1fr);display:grid}.project-preview__session-card{background:var(--surface-container-lowest);border:1px solid var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-6);transition:box-shadow .15s}.project-preview__session-card:hover{box-shadow:var(--shadow-sm)}.project-preview__session-bar{height:4px;margin-bottom:var(--spacing-4);border-radius:2px}.project-preview__session-title{font-family:var(--font-display);color:var(--on-surface);margin:0 0 var(--spacing-2) 0;font-size:1.125rem;font-weight:700;line-height:1.3}.project-preview__session-stats{font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-3);font-size:.8125rem}.project-preview__session-skills{gap:var(--spacing-2);margin-top:var(--spacing-3);flex-wrap:wrap;display:flex}.growth-chart{gap:var(--spacing-6);margin-bottom:var(--spacing-8);align-items:center;display:flex}.growth-chart__svg-container{flex:1;min-width:0}.growth-chart__summary{text-align:right;flex-shrink:0;width:200px}.growth-chart__total-value{font-family:var(--font-mono);color:var(--primary);font-size:2.5rem;font-weight:700;line-height:1.1}.growth-chart__total-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.5625rem;font-weight:600}.growth-chart__stat{margin-top:var(--spacing-4)}.growth-chart__stat-value{font-family:var(--font-mono);color:var(--on-surface);font-size:1.5rem;font-weight:700;line-height:1.2}.growth-chart__stat-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.5625rem;font-weight:600}.dir-heatmap{margin-bottom:var(--spacing-8)}.dir-heatmap__empty{font-family:var(--font-mono);color:var(--on-surface-variant);padding:var(--spacing-4) 0;font-size:.75rem}.dir-heatmap__grid{margin-bottom:var(--spacing-3);gap:2px;display:grid;overflow-x:auto}.dir-heatmap__session-label{font-family:var(--font-mono);text-align:center;color:var(--on-surface-variant);text-overflow:ellipsis;white-space:nowrap;padding-bottom:var(--spacing-2);font-size:.625rem;overflow:hidden}.dir-heatmap__dir-label{font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;color:var(--on-surface);align-self:center;padding-inline-end:var(--spacing-2);font-size:.75rem;overflow:hidden}.dir-heatmap__cell{cursor:default;border-radius:2px;min-width:80px;min-height:32px;position:relative}.dir-heatmap__cell:hover{outline:1px solid var(--primary,#084471)}.dir-heatmap__legend{align-items:center;gap:var(--spacing-3);font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-6);font-size:.6875rem;display:flex}.dir-heatmap__top-files{margin-bottom:var(--spacing-8)}.dir-heatmap__top-files-summary{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);cursor:pointer;margin-bottom:var(--spacing-3);font-size:.6875rem;font-weight:600}.dir-heatmap__top-files-summary:hover{color:var(--on-surface)}.dir-heatmap__file-row{padding:var(--spacing-2) 0;border-bottom:var(--ghost-border);font-family:var(--font-mono);justify-content:space-between;font-size:.75rem;display:flex}.dir-heatmap__file-path{text-overflow:ellipsis;white-space:nowrap;color:var(--on-surface);margin-inline-end:var(--spacing-3);overflow:hidden}.dir-heatmap__file-count{color:var(--on-surface-variant);flex-shrink:0}.session-detail-overlay{background:var(--surface);z-index:110;flex-direction:column;display:flex;position:fixed;inset:0}.session-detail__header{padding:var(--spacing-3) var(--spacing-6);border-bottom:1px solid var(--outline-variant);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.session-detail__back{font-family:var(--font-mono);color:var(--on-surface-variant);cursor:pointer;padding:var(--spacing-1) var(--spacing-2);border-radius:var(--radius-sm);background:0 0;border:none;font-size:.8125rem;transition:color .15s}.session-detail__back:hover{color:var(--on-surface)}.session-detail__close{color:var(--on-surface-variant);cursor:pointer;padding:var(--spacing-1) var(--spacing-2);border-radius:var(--radius-sm);background:0 0;border:none;font-size:1.25rem;line-height:1;transition:color .15s}.session-detail__close:hover{color:var(--on-surface)}.session-detail__scroll{padding:var(--spacing-8) var(--spacing-6) var(--spacing-12);flex:1;width:100%;max-width:1100px;margin:0 auto;overflow-y:auto}.session-detail__layout{gap:var(--spacing-8);grid-template-columns:2fr 1fr;display:grid}.session-detail__main,.session-detail__sidebar{min-width:0}.session-detail__breadcrumb{font-family:var(--font-mono);color:var(--on-surface-variant);margin-bottom:var(--spacing-2);letter-spacing:.01em;font-size:.75rem}.session-detail__title{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-6);font-size:2rem;font-weight:600;line-height:1.2}.session-detail__stats-grid{gap:var(--spacing-4);margin-bottom:var(--spacing-6);grid-template-columns:repeat(4,1fr);display:grid}.session-detail__stat{padding:var(--spacing-3) var(--spacing-4);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md)}.session-detail__stat-value{font-family:var(--font-display);color:var(--on-surface);font-size:1.25rem;font-weight:600}.session-detail__stat-label{font-family:var(--font-mono);color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.04em;margin-top:var(--spacing-1);font-size:.6875rem}.session-detail__section{margin-bottom:var(--spacing-6)}.session-detail__section-label{font-family:var(--font-mono);color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--spacing-3);font-size:.6875rem;font-weight:600}.session-detail__take{font-family:var(--font-body);color:var(--on-surface);border-inline-start:3px solid var(--primary);margin:0;padding-inline-start:var(--spacing-4);font-size:.9375rem;line-height:1.6}.session-detail__context{font-family:var(--font-body);color:var(--on-surface-variant);font-size:.875rem;line-height:1.6}.session-detail__skills{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.session-detail__qa-list{gap:var(--spacing-4);flex-direction:column;display:flex}.session-detail__qa-pair{padding-bottom:var(--spacing-4);border-bottom:1px solid var(--outline-variant)}.session-detail__qa-pair:last-child{border-bottom:none;padding-bottom:0}.session-detail__qa-question{font-family:var(--font-body);color:var(--on-surface);margin-bottom:var(--spacing-2);font-size:.875rem;font-weight:600}.session-detail__qa-answer{font-family:var(--font-body);color:var(--on-surface-variant);padding-inline-start:var(--spacing-4);font-size:.875rem;line-height:1.6}.session-detail__highlights{gap:var(--spacing-4);padding-bottom:var(--spacing-2);scrollbar-width:thin;display:flex;overflow-x:auto}.session-detail__highlight-card{padding:var(--spacing-4);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);flex:0 0 240px}.session-detail__highlight-step{font-family:var(--font-mono);color:var(--primary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--spacing-1);font-size:.625rem}.session-detail__highlight-title{font-family:var(--font-display);color:var(--on-surface);margin-bottom:var(--spacing-2);font-size:.875rem;font-weight:600}.session-detail__highlight-desc{font-family:var(--font-body);color:var(--on-surface-variant);font-size:.8125rem;line-height:1.5}.session-detail__sidebar-section{margin-bottom:var(--spacing-6)}.session-detail__exec-path{padding-inline-start:var(--spacing-5);position:relative}.session-detail__exec-path:before{content:"";inset-inline-start:5px;background:var(--outline-variant);width:1px;position:absolute;top:8px;bottom:8px}.session-detail__exec-step{padding-bottom:var(--spacing-4);position:relative}.session-detail__exec-step:last-child{padding-bottom:0}.session-detail__exec-dot{inset-inline-start:calc(var(--spacing-5) * -1 + 2px);background:var(--primary);border-radius:50%;width:7px;height:7px;position:absolute;top:6px}.session-detail__exec-title{font-family:var(--font-body);color:var(--on-surface);font-size:.8125rem;font-weight:600;line-height:1.3}.session-detail__exec-desc{font-family:var(--font-body);color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.75rem;line-height:1.5}.session-detail__raw-log{background:var(--inverse-surface);color:var(--inverse-on-surface);border-radius:var(--radius-md);padding:var(--spacing-3) var(--spacing-4);font-family:var(--font-mono);font-size:.6875rem;line-height:1.6;overflow:hidden}.session-detail__raw-line{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.session-detail__raw-more{margin-top:var(--spacing-3);color:var(--inverse-primary);cursor:default;font-size:.6875rem}.session-detail__source-list{gap:var(--spacing-2);flex-direction:column;display:flex}.session-detail__source-row{justify-content:space-between;align-items:baseline;font-size:.8125rem;display:flex}.session-detail__source-key{font-family:var(--font-mono);color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.04em;font-size:.6875rem}.session-detail__source-val{font-family:var(--font-body);color:var(--on-surface);font-size:.8125rem}.session-detail__full-width{margin-top:var(--spacing-8);gap:var(--spacing-4);flex-direction:column;display:flex}.session-detail__collapsible{border:1px solid var(--outline-variant);border-radius:var(--radius-md);overflow:hidden}.session-detail__collapsible-summary{font-family:var(--font-mono);color:var(--on-surface);padding:var(--spacing-3) var(--spacing-4);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--surface-container-low);font-size:.8125rem;font-weight:600;list-style:none}.session-detail__collapsible-summary::-webkit-details-marker{display:none}.session-detail__collapsible-summary:before{content:"▶";margin-inline-end:var(--spacing-2);font-size:.625rem;transition:transform .15s;display:inline-block}.session-detail__collapsible[open]>.session-detail__collapsible-summary:before{transform:rotate(90deg)}.session-detail__tool-list{padding:var(--spacing-3) var(--spacing-4);gap:var(--spacing-2);flex-direction:column;display:flex}.session-detail__tool-row{align-items:center;gap:var(--spacing-3);grid-template-columns:140px 1fr 40px;display:grid}.session-detail__tool-name{font-family:var(--font-mono);color:var(--on-surface);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.session-detail__tool-bar-track{background:var(--surface-container-high);border-radius:3px;height:6px;overflow:hidden}.session-detail__tool-bar{background:var(--primary);border-radius:3px;height:100%;transition:width .2s}.session-detail__tool-count{font-family:var(--font-mono);color:var(--on-surface-variant);text-align:end;font-size:.75rem}.session-detail__file-list{padding:var(--spacing-3) var(--spacing-4);gap:var(--spacing-1);flex-direction:column;display:flex}.session-detail__file-row{gap:var(--spacing-3);font-family:var(--font-mono);padding:var(--spacing-1) 0;grid-template-columns:1fr auto auto;align-items:baseline;font-size:.75rem;display:grid}.session-detail__file-path{color:var(--on-surface);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.session-detail__file-additions{color:var(--secondary);font-weight:600}.session-detail__file-deletions{color:var(--error);font-weight:600}.project-preview__session-card--clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s}.project-preview__session-card--clickable:hover{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.project-preview__session-card--clickable:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (width<=720px){.session-detail__layout{grid-template-columns:1fr}.session-detail__stats-grid{grid-template-columns:repeat(2,1fr)}.session-detail__scroll{padding:var(--spacing-4) var(--spacing-4) var(--spacing-8)}.session-detail__tool-row{grid-template-columns:100px 1fr 36px}}.agent-activity{margin-bottom:var(--spacing-8)}.agent-activity__card{background:var(--surface-container-lowest);border:var(--ghost-border);border-radius:var(--radius-sm);padding:var(--spacing-5)}.agent-activity__legend{gap:var(--spacing-4);margin-bottom:var(--spacing-4);flex-wrap:wrap;display:flex}.agent-activity__legend-item{font-family:var(--font-mono);color:var(--on-surface-variant);align-items:center;gap:4px;font-size:.5625rem;display:flex}.agent-activity__legend-dot{border-radius:50%;width:8px;height:8px}.agent-activity__timelines{gap:var(--spacing-2);-webkit-overflow-scrolling:touch;padding-bottom:var(--spacing-2);flex-direction:column;display:flex;overflow-x:auto}.agent-activity__session{flex-direction:column;gap:2px;min-width:fit-content;display:flex}.agent-activity__session-label{font-family:var(--font-mono);letter-spacing:.04em;color:var(--on-surface-variant);text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;max-width:50%;font-size:.5625rem;font-weight:600;overflow:hidden}.agent-activity__summary{gap:var(--spacing-3);margin-top:var(--spacing-4);padding-top:var(--spacing-4);border-top:var(--ghost-border);grid-template-columns:repeat(4,1fr);display:grid}.agent-activity__summary-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-variant);margin-top:var(--spacing-1);font-size:.5625rem;font-weight:600}.agent-activity__summary-value{color:var(--on-surface);font-weight:700}.time-page{max-width:960px;padding:var(--spacing-8) var(--spacing-6);height:100vh;margin:0 auto;overflow-y:auto}.time-page__loading,.time-page__empty{text-align:center;padding:var(--spacing-8);font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.875rem}.time-page__header{margin-block-end:var(--spacing-8)}.time-page__title{font-family:var(--font-display);color:var(--on-surface);margin:0;font-size:1.75rem;font-weight:700}.time-page__subtitle{font-family:var(--font-mono);color:var(--on-surface-variant);margin:var(--spacing-2) 0 0 0;font-size:.75rem}.time-page__hero{align-items:center;gap:var(--spacing-6);padding:var(--spacing-6);background:var(--surface-container,#f0f2f5);border-radius:var(--radius-md,8px);margin-block-end:var(--spacing-6);display:flex}.time-page__hero-stat{text-align:center}.time-page__hero-value{font-family:var(--font-mono);color:var(--on-surface);font-size:2rem;font-weight:700}.time-page__hero-value--primary{color:var(--primary,#084471)}.time-page__hero-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);margin-block-start:var(--spacing-1);font-size:.6875rem;font-weight:600}.time-page__hero-divider{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:2rem;font-weight:300}.time-page__chips{gap:var(--spacing-2);flex-wrap:wrap;margin-block-end:var(--spacing-8);display:flex}.time-page__chip{font-family:var(--font-mono);padding:var(--spacing-1) var(--spacing-3);background:var(--surface-container,#f0f2f5);border-radius:var(--radius-sm,4px);color:var(--on-surface-variant);font-size:.6875rem}.time-page__table{border:1px solid var(--outline-variant);border-radius:var(--radius-md,8px);margin-block-end:var(--spacing-8);overflow:hidden}.time-page__table-header{gap:var(--spacing-3);padding:var(--spacing-3) var(--spacing-4);background:var(--surface-container,#f0f2f5);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);grid-template-columns:2fr 1fr .7fr .8fr .8fr .7fr;font-size:.625rem;font-weight:600;display:grid}.time-page__table-row{gap:var(--spacing-3);padding:var(--spacing-3) var(--spacing-4);border-top:1px solid var(--outline-variant);grid-template-columns:2fr 1fr .7fr .8fr .8fr .7fr;align-items:center;display:grid}.time-page__table-row:hover{background:var(--surface-container-low,#f8f9fb)}.time-page__project-name{color:var(--on-surface);text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:600;overflow:hidden}.time-page__section-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);margin-block-end:var(--spacing-3);font-size:.6875rem;font-weight:600}.time-page__roles{margin-block-end:var(--spacing-8)}.time-page__role-chips{gap:var(--spacing-2);flex-wrap:wrap;display:flex}.time-page__footer{text-align:center;border-top:1px solid var(--outline-variant);padding-block-start:var(--spacing-6)}.time-page__footer-text{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:.6875rem}.time-page__actions{justify-content:space-between;align-items:center;gap:var(--spacing-3);flex-wrap:wrap;margin-block-end:var(--spacing-6);display:flex}.time-page__toggle{align-items:center;gap:var(--spacing-2);font-family:var(--font-mono);color:var(--on-surface-variant);cursor:pointer;font-size:.75rem;display:flex}.time-page__toggle input{accent-color:var(--primary)}.time-page__action-buttons{gap:var(--spacing-2);display:flex}.time-page__publish-result{font-family:var(--font-mono);padding:var(--spacing-3) var(--spacing-4);background:var(--success-bg,#dcfce7);color:var(--success-fg,#16a34a);border-radius:var(--radius-sm,4px);margin-block-end:var(--spacing-6);font-size:.75rem}.time-page__publish-result a{color:inherit;font-weight:600}.time-page__publish-result--error{color:#dc2626;background:#fef2f2}.time-page__capture{padding:var(--spacing-4);background:#fff}
@@ -11,8 +11,8 @@
11
11
  href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600;700&display=swap"
12
12
  rel="stylesheet"
13
13
  />
14
- <script type="module" crossorigin src="/assets/index-Cv-3KLuW.js"></script>
15
- <link rel="stylesheet" crossorigin href="/assets/index-DopBsBwR.css">
14
+ <script type="module" crossorigin src="/assets/index-CEQyTkgN.js"></script>
15
+ <link rel="stylesheet" crossorigin href="/assets/index-DLh5xRE8.css">
16
16
  </head>
17
17
  <body>
18
18
  <div id="root"></div>
@@ -26,7 +26,7 @@ export interface SessionAnalysis {
26
26
  turns: ParsedTurn[];
27
27
  filesChanged: ParsedFileChange[];
28
28
  rawLog: string[];
29
- childSessions?: SessionAnalysis[];
29
+ childAnalyses?: SessionAnalysis[];
30
30
  agentRole?: string;
31
31
  parentSessionId?: string | null;
32
32
  /** Working directory where the session was started */
@@ -52,6 +52,13 @@ export interface FileChange {
52
52
  additions: number;
53
53
  deletions: number;
54
54
  }
55
+ export interface AgentChild {
56
+ sessionId: string;
57
+ role: string;
58
+ durationMinutes: number;
59
+ linesOfCode: number;
60
+ date?: string;
61
+ }
55
62
  export interface Session {
56
63
  id: string;
57
64
  title: string;
@@ -80,7 +87,7 @@ export interface Session {
80
87
  question: string;
81
88
  answer: string;
82
89
  }>;
83
- childSessions?: Session[];
90
+ children?: AgentChild[];
84
91
  parentSessionId?: string | null;
85
92
  agentRole?: string;
86
93
  isOrchestrated?: boolean;
package/dist/analyzer.js CHANGED
@@ -219,8 +219,15 @@ export function computeLinesOfCode(filesChanged) {
219
219
  // ── Main analyzer ──────────────────────────────────────────────
220
220
  export function analyzeSession(analysis) {
221
221
  const toolTurns = analysis.turns.filter((t) => t.type === 'tool');
222
- const childSessions = analysis.childSessions?.map(analyzeSession);
223
- const isOrchestrated = childSessions !== undefined && childSessions.length > 0;
222
+ const childAnalyses = analysis.childAnalyses?.map(analyzeSession);
223
+ const children = childAnalyses?.map(c => ({
224
+ sessionId: c.id,
225
+ role: c.agentRole ?? 'agent',
226
+ durationMinutes: c.durationMinutes,
227
+ linesOfCode: c.linesOfCode,
228
+ date: c.date,
229
+ }));
230
+ const isOrchestrated = children !== undefined && children.length > 0;
224
231
  return {
225
232
  id: analysis.id,
226
233
  title: analysis.title,
@@ -239,7 +246,7 @@ export function analyzeSession(analysis) {
239
246
  filesChanged: analysis.filesChanged,
240
247
  turnTimeline: buildTurnTimeline(analysis.turns),
241
248
  toolCalls: toolTurns.length,
242
- ...(childSessions && childSessions.length > 0 ? { childSessions } : {}),
249
+ ...(children && children.length > 0 ? { children } : {}),
243
250
  ...(analysis.parentSessionId != null ? { parentSessionId: analysis.parentSessionId } : {}),
244
251
  ...(analysis.agentRole ? { agentRole: analysis.agentRole } : {}),
245
252
  ...(isOrchestrated ? { isOrchestrated } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"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"}
package/dist/bridge.d.ts CHANGED
@@ -8,6 +8,23 @@ export interface BridgeOptions {
8
8
  parentSessionId?: string;
9
9
  }
10
10
  export declare function bridgeToAnalyzer(parsed: ParserOutput, opts: BridgeOptions): AnalyzerInput;
11
+ /**
12
+ * Strip AI-internal XML tags from assistant text content.
13
+ * These tags are harness/model internals that shouldn't appear in user-facing output.
14
+ * Returns cleaned text, or empty string if nothing remains.
15
+ */
16
+ export declare function cleanAssistantText(text: string): string;
17
+ /**
18
+ * Canonical dedup key for child agents. Buckets by role and 30-second
19
+ * time window so worktree clones collapse into one entry.
20
+ *
21
+ * NOTE: server.ts ~line 1057 has a similar dedup pattern but uses
22
+ * `c.agentRole ?? c.sessionId` for the key while storing `c.agentRole ?? 'agent'`
23
+ * for display — this inconsistency means two children without agentRole get
24
+ * separate keys (different UUIDs) but identical display roles ('agent').
25
+ * Use this helper in both places to keep behavior consistent.
26
+ */
27
+ export declare function childDedupeKey(agentRole: string | undefined, startTime: string): string;
11
28
  /**
12
29
  * Deduplicate worktree clones: agents with same role and start time within
13
30
  * 30 seconds are considered duplicates. Keep the one with more turns.
@@ -15,15 +32,18 @@ export declare function bridgeToAnalyzer(parsed: ParserOutput, opts: BridgeOptio
15
32
  export declare function deduplicateChildren(children: Session[]): Session[];
16
33
  /** Parse, bridge, and analyze each child session. Attaches results to parent. */
17
34
  export declare function bridgeChildSessions(parentMeta: SessionMeta, projectName: string): Promise<Session[]>;
18
- /** Lightweight child summary for list endpointsno full parse needed. */
19
- export interface ChildSessionSummary {
35
+ /** Canonical type for child/agent dataused everywhere. */
36
+ export interface AgentChild {
20
37
  sessionId: string;
21
- role?: string;
22
- title?: string;
23
- durationMinutes?: number;
24
- linesOfCode?: number;
38
+ role: string;
39
+ durationMinutes: number;
40
+ linesOfCode: number;
25
41
  date?: string;
26
42
  }
43
+ /** @deprecated Use AgentChild instead */
44
+ export type ChildSessionSummary = AgentChild;
45
+ /** Convert a fully-parsed Session into the canonical AgentChild shape. */
46
+ export declare function toAgentChild(session: Session): AgentChild;
27
47
  /** Compute aggregated stats from fully-parsed child sessions. */
28
48
  export declare function aggregateChildStats(children: Session[]): {
29
49
  totalLoc: number;
package/dist/bridge.js CHANGED
@@ -2,11 +2,13 @@
2
2
  // into the analyzer's input format (SessionAnalysis from analyzer.ts)
3
3
  import { analyzeSession } from "./analyzer.js";
4
4
  import { parseSession } from "./parsers/index.js";
5
+ import { stripHomePath, stripHomePathsInText } from "./redact.js";
5
6
  export function bridgeToAnalyzer(parsed, opts) {
6
- const turns = entriesToTurns(parsed.raw_entries);
7
- const filesChanged = computePerFileChanges(parsed.tool_calls, parsed.loc_stats);
7
+ const cwd = parsed.cwd;
8
+ const turns = entriesToTurns(parsed.raw_entries, cwd);
9
+ const filesChanged = computePerFileChanges(parsed.tool_calls, parsed.loc_stats, cwd);
8
10
  const title = extractTitle(parsed.raw_entries);
9
- const rawLog = extractRawLog(parsed.raw_entries);
11
+ const rawLog = extractRawLog(parsed.raw_entries, cwd);
10
12
  const wallClockMinutes = parsed.wall_clock_ms > 0
11
13
  ? Math.max(1, Math.round(parsed.wall_clock_ms / 60_000))
12
14
  : undefined;
@@ -29,6 +31,29 @@ export function bridgeToAnalyzer(parsed, opts) {
29
31
  source: parsed.source,
30
32
  };
31
33
  }
34
+ /**
35
+ * Strip AI-internal XML tags from assistant text content.
36
+ * These tags are harness/model internals that shouldn't appear in user-facing output.
37
+ * Returns cleaned text, or empty string if nothing remains.
38
+ */
39
+ export function cleanAssistantText(text) {
40
+ let cleaned = text;
41
+ // Remove all <antml_*>...</antml_*> blocks (thinking, reasoning, etc.)
42
+ cleaned = cleaned.replace(/<antml_[a-z_]+>[\s\S]*?<\/antml_[a-z_]+>/g, "");
43
+ // Remove <system-reminder>...</system-reminder>
44
+ cleaned = cleaned.replace(/<system-reminder>[\s\S]*?<\/system-reminder>/g, "");
45
+ // Remove <teammate-message ...>...</teammate-message>
46
+ cleaned = cleaned.replace(/<teammate-message[^>]*>[\s\S]*?<\/teammate-message>/g, "");
47
+ // Remove <function_calls>...</function_calls>
48
+ cleaned = cleaned.replace(/<function_calls>[\s\S]*?<\/function_calls>/g, "");
49
+ // Remove <fast_mode_info>...</fast_mode_info>
50
+ cleaned = cleaned.replace(/<fast_mode_info>[\s\S]*?<\/fast_mode_info>/g, "");
51
+ // Remove <user-prompt-submit-hook>...</user-prompt-submit-hook>
52
+ cleaned = cleaned.replace(/<user-prompt-submit-hook>[\s\S]*?<\/user-prompt-submit-hook>/g, "");
53
+ // Collapse excessive whitespace left behind
54
+ cleaned = cleaned.replace(/\n{3,}/g, "\n\n").trim();
55
+ return cleaned;
56
+ }
32
57
  function isToolUseBlock(block) {
33
58
  return block.type === "tool_use";
34
59
  }
@@ -38,16 +63,19 @@ function getContentBlocks(entry) {
38
63
  return [];
39
64
  return content;
40
65
  }
41
- function entriesToTurns(entries) {
66
+ function entriesToTurns(entries, cwd) {
42
67
  const turns = [];
43
68
  for (const entry of entries) {
44
69
  if (entry.type === "user") {
45
70
  const content = entry.message?.content;
46
71
  if (typeof content === "string") {
72
+ const cleaned = cleanAssistantText(content);
73
+ if (!cleaned)
74
+ continue;
47
75
  turns.push({
48
76
  timestamp: entry.timestamp,
49
77
  type: "prompt",
50
- content,
78
+ content: cleaned,
51
79
  });
52
80
  }
53
81
  // tool_result user entries are skipped — they're plumbing, not meaningful turns
@@ -56,14 +84,19 @@ function entriesToTurns(entries) {
56
84
  const blocks = getContentBlocks(entry);
57
85
  for (const block of blocks) {
58
86
  if (block.type === "text") {
87
+ const cleaned = cleanAssistantText(block.text);
88
+ if (!cleaned)
89
+ continue;
59
90
  turns.push({
60
91
  timestamp: entry.timestamp,
61
92
  type: "response",
62
- content: block.text,
93
+ content: cleaned,
63
94
  });
64
95
  }
65
96
  else if (isToolUseBlock(block)) {
66
- const toolInput = extractToolInput(block);
97
+ let toolInput = extractToolInput(block);
98
+ if (toolInput)
99
+ toolInput = stripHomePath(toolInput, cwd);
67
100
  turns.push({
68
101
  timestamp: entry.timestamp,
69
102
  type: "tool",
@@ -89,7 +122,7 @@ function extractToolInput(block) {
89
122
  return input.path;
90
123
  return undefined;
91
124
  }
92
- function computePerFileChanges(toolCalls, locStats) {
125
+ function computePerFileChanges(toolCalls, locStats, cwd) {
93
126
  const files = new Map();
94
127
  // Track writes for dedup (last write wins)
95
128
  const writeLineCounts = new Map();
@@ -124,7 +157,7 @@ function computePerFileChanges(toolCalls, locStats) {
124
157
  }
125
158
  }
126
159
  const result = [...files.entries()]
127
- .map(([path, stats]) => ({ path, ...stats }))
160
+ .map(([path, stats]) => ({ path: stripHomePath(path, cwd), ...stats }))
128
161
  .sort((a, b) => a.path.localeCompare(b.path));
129
162
  // When tool-call-based computation yields nothing, fall back to
130
163
  // the parser's loc_stats (which may have data from workspace metadata
@@ -135,7 +168,7 @@ function computePerFileChanges(toolCalls, locStats) {
135
168
  const perFile = Math.ceil(locStats.loc_added / locStats.files_changed.length);
136
169
  const perFileDel = Math.ceil(locStats.loc_removed / locStats.files_changed.length);
137
170
  return locStats.files_changed.map((path) => ({
138
- path,
171
+ path: stripHomePath(path, cwd),
139
172
  additions: perFile,
140
173
  deletions: perFileDel,
141
174
  }));
@@ -151,37 +184,62 @@ function extractTitle(entries) {
151
184
  for (const entry of entries) {
152
185
  if (entry.type === "user") {
153
186
  const content = entry.message?.content;
154
- if (typeof content === "string" && content.trim().length > 0) {
155
- const title = content.trim();
156
- return title.length > 120 ? title.slice(0, 117) + "..." : title;
187
+ if (typeof content === "string") {
188
+ const cleaned = cleanAssistantText(content);
189
+ if (cleaned.length > 0) {
190
+ return cleaned.length > 120 ? cleaned.slice(0, 117) + "..." : cleaned;
191
+ }
157
192
  }
158
193
  }
159
194
  }
160
195
  return "Untitled session";
161
196
  }
162
- function extractRawLog(entries) {
197
+ function extractRawLog(entries, cwd) {
163
198
  const log = [];
164
199
  for (const entry of entries) {
165
200
  if (entry.type === "user") {
166
201
  const content = entry.message?.content;
167
202
  if (typeof content === "string") {
168
- log.push(`> ${content}`);
203
+ const cleaned = cleanAssistantText(content);
204
+ if (cleaned)
205
+ log.push(`> ${cleaned}`);
169
206
  }
170
207
  }
171
208
  else if (entry.type === "assistant") {
172
209
  const blocks = getContentBlocks(entry);
173
210
  for (const block of blocks) {
174
211
  if (block.type === "text") {
175
- log.push(block.text);
212
+ const cleaned = cleanAssistantText(block.text);
213
+ if (!cleaned)
214
+ continue;
215
+ log.push(stripHomePathsInText(cleaned, cwd));
176
216
  }
177
217
  else if (isToolUseBlock(block)) {
178
- log.push(`[${block.name}] ${extractToolInput(block) ?? ""}`);
218
+ let input = extractToolInput(block);
219
+ if (input)
220
+ input = stripHomePath(input, cwd);
221
+ log.push(`[${block.name}] ${input ?? ""}`);
179
222
  }
180
223
  }
181
224
  }
182
225
  }
183
226
  return log;
184
227
  }
228
+ /**
229
+ * Canonical dedup key for child agents. Buckets by role and 30-second
230
+ * time window so worktree clones collapse into one entry.
231
+ *
232
+ * NOTE: server.ts ~line 1057 has a similar dedup pattern but uses
233
+ * `c.agentRole ?? c.sessionId` for the key while storing `c.agentRole ?? 'agent'`
234
+ * for display — this inconsistency means two children without agentRole get
235
+ * separate keys (different UUIDs) but identical display roles ('agent').
236
+ * Use this helper in both places to keep behavior consistent.
237
+ */
238
+ export function childDedupeKey(agentRole, startTime) {
239
+ const role = agentRole ?? 'agent';
240
+ const bucket = Math.floor(new Date(startTime).getTime() / 30_000);
241
+ return `${role}::${bucket}`;
242
+ }
185
243
  /**
186
244
  * Deduplicate worktree clones: agents with same role and start time within
187
245
  * 30 seconds are considered duplicates. Keep the one with more turns.
@@ -189,8 +247,7 @@ function extractRawLog(entries) {
189
247
  export function deduplicateChildren(children) {
190
248
  const seen = new Map();
191
249
  for (const child of children) {
192
- const startBucket = Math.floor(new Date(child.date).getTime() / 30_000);
193
- const key = `${child.agentRole ?? 'agent'}::${startBucket}`;
250
+ const key = childDedupeKey(child.agentRole, child.date);
194
251
  const existing = seen.get(key);
195
252
  if (!existing || child.turns > existing.turns) {
196
253
  seen.set(key, child);
@@ -220,6 +277,16 @@ export async function bridgeChildSessions(parentMeta, projectName) {
220
277
  }
221
278
  return deduplicateChildren(results);
222
279
  }
280
+ /** Convert a fully-parsed Session into the canonical AgentChild shape. */
281
+ export function toAgentChild(session) {
282
+ return {
283
+ sessionId: session.id,
284
+ role: session.agentRole ?? 'agent',
285
+ durationMinutes: session.durationMinutes,
286
+ linesOfCode: session.linesOfCode,
287
+ date: session.date,
288
+ };
289
+ }
223
290
  /** Compute aggregated stats from fully-parsed child sessions. */
224
291
  export function aggregateChildStats(children) {
225
292
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}