@frumu/tandem-panel 0.5.3 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/setup.js +21 -4
- package/dist/assets/AutomationsPage-6mRHsh9V.js +946 -0
- package/dist/assets/BugMonitorPage-B9mcxV8k.js +4 -0
- package/dist/assets/ChannelsPage-oJ5a717t.js +1 -0
- package/dist/assets/ChatInterfacePanel-3nvwn0cJ.js +1 -0
- package/dist/assets/ChatPage-CGKFC9ev.js +1 -0
- package/dist/assets/CodingWorkflowsPage-DosUtoeO.js +8 -0
- package/dist/assets/ControlPanelDialogs-BBIPHXnw.js +1 -0
- package/dist/assets/DashboardPage-Cv9_TUZQ.js +1 -0
- package/dist/assets/ExperimentsPage-DuYHzo7d.js +84 -0
- package/dist/assets/FilesPage-NAInb3WU.js +1 -0
- package/dist/assets/IntentPlannerPage-BwlF9wfW.js +5 -0
- package/dist/assets/LazyJson-DYncL_RR.js +1 -0
- package/dist/assets/MarketplacePage-Wo7biaBa.js +1 -0
- package/dist/assets/McpToolAllowlistEditor-B3qCkiFT.js +1 -0
- package/dist/assets/MemoryImportDialog-BWT93PW1.js +1 -0
- package/dist/assets/MemoryPage-gSBH1OKG.js +1 -0
- package/dist/assets/OrchestratorPage-HDyjjwF-.js +3 -0
- package/dist/assets/PacksPage-BWnL4dRB.js +3 -0
- package/dist/assets/PlannerDiagnosticsPanel-VyacxaCM.js +1 -0
- package/dist/assets/ProviderModelSelector-B_IE0-e7.js +1 -0
- package/dist/assets/RunsPage-B6ttNeUJ.js +1 -0
- package/dist/assets/SettingsPage-DhAKDQHw.js +5 -0
- package/dist/assets/TaskBoard-DSRrmiyQ.js +1 -0
- package/dist/assets/TeamsPage-CwMnVES9.js +4472 -0
- package/dist/assets/TimezoneField-DKINpKxU.js +1 -0
- package/dist/assets/WorkflowStudioPage-CyWDhEEE.js +1854 -0
- package/dist/assets/WorkflowsPage-BWGWH8uD.js +2 -0
- package/dist/assets/api-CpR5ozpc.js +1 -0
- package/dist/assets/chatPageHelpers-D-NhHk4M.js +1 -0
- package/dist/assets/explorerHandoff-KpFRPNQc.js +1 -0
- package/dist/assets/format-CimuGHiH.js +1 -0
- package/dist/assets/fullcalendar-Bn75j0xM.js +1 -0
- package/dist/assets/index-DAWzCKcg.css +1 -0
- package/dist/assets/index-picB46b5.js +3 -0
- package/dist/assets/messages-AWZpX-Rw.js +3 -0
- package/dist/assets/motion-B3ZE8SGR.js +9 -0
- package/dist/assets/plannerShared-1kHFyAp-.js +1 -0
- package/dist/assets/preact-vendor-DaCG_P2o.js +1 -0
- package/dist/assets/react-query-BIbNygEJ.js +1 -0
- package/dist/assets/sse-B1wvyjPI.js +2 -0
- package/dist/assets/ui-CV-Z6sqF.js +1 -0
- package/dist/assets/useEngineStream-ChEkuUVV.js +1 -0
- package/dist/assets/vendor-DSaYtO9f.js +156 -0
- package/dist/assets/workflowStability-Dsk2DR6F.js +2 -0
- package/dist/index.html +10 -7
- package/lib/automations/workflow-list.js +147 -0
- package/lib/setup/control-panel-preferences.js +4 -0
- package/package.json +3 -3
- package/server/routes/capabilities.js +1 -0
- package/server/routes/knowledgebase.js +7 -1
- package/dist/assets/index-D6sUkBw6.css +0 -1
- package/dist/assets/index-gUgdIB3_.js +0 -7379
- package/dist/assets/motion-CBnf8hfk.js +0 -9
- package/dist/assets/preact-vendor-B239Onrg.js +0 -1
- package/dist/assets/react-query-_hsOQSt5.js +0 -1
- package/dist/assets/vendor-DeUDWccs.js +0 -156
- /package/dist/assets/{markdown-Dd89TVib.js → markdown-DJurGVIJ.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}input:where([type=text]),input:where(:not([type])),input:where([type=email]),input:where([type=url]),input:where([type=password]),input:where([type=number]),input:where([type=date]),input:where([type=datetime-local]),input:where([type=month]),input:where([type=search]),input:where([type=tel]),input:where([type=time]),input:where([type=week]),select:where([multiple]),textarea,select{appearance:none;--tw-shadow:0 0 #0000;background-color:#fff;border-width:1px;border-color:#6b7280;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem}input:where([type=text]):focus,input:where(:not([type])):focus,input:where([type=email]):focus,input:where([type=url]):focus,input:where([type=password]):focus,input:where([type=number]):focus,input:where([type=date]):focus,input:where([type=datetime-local]):focus,input:where([type=month]):focus,input:where([type=search]):focus,input:where([type=tel]):focus,input:where([type=time]):focus,input:where([type=week]):focus,select:where([multiple]):focus,textarea:focus,select:focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-color:#2563eb;outline:2px solid #0000}input::-moz-placeholder{color:#6b7280;opacity:1}textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-year-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-month-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-day-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-hour-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-minute-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-second-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-millisecond-field{padding-top:0;padding-bottom:0}::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{-webkit-print-color-adjust:exact;print-color-adjust:exact;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem}select:where([multiple]),select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;-webkit-print-color-adjust:unset;print-color-adjust:unset;padding-right:.75rem}input:where([type=checkbox]),input:where([type=radio]){appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;vertical-align:middle;-webkit-user-select:none;user-select:none;color:#2563eb;--tw-shadow:0 0 #0000;background-color:#fff;background-origin:border-box;border-width:1px;border-color:#6b7280;flex-shrink:0;width:1rem;height:1rem;padding:0;display:inline-block}input:where([type=checkbox]){border-radius:0}input:where([type=radio]){border-radius:100%}input:where([type=checkbox]):focus,input:where([type=radio]):focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);outline:2px solid #0000}input:where([type=checkbox]):checked,input:where([type=radio]):checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}input:where([type=checkbox]):checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors:active){input:where([type=checkbox]):checked{appearance:auto}}input:where([type=radio]):checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors:active){input:where([type=radio]):checked{appearance:auto}}input:where([type=checkbox]):checked:hover,input:where([type=checkbox]):checked:focus,input:where([type=radio]):checked:hover,input:where([type=radio]):checked:focus{background-color:currentColor;border-color:#0000}input:where([type=checkbox]):indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}@media (forced-colors:active){input:where([type=checkbox]):indeterminate{appearance:auto}}input:where([type=checkbox]):indeterminate:hover,input:where([type=checkbox]):indeterminate:focus{background-color:currentColor;border-color:#0000}input:where([type=file]){background:unset;border-color:inherit;font-size:unset;line-height:inherit;border-width:0;border-radius:0;padding:0}input:where([type=file]):focus{outline:1px solid buttontext;outline:1px auto -webkit-focus-ring-color}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-background:#121212;--color-surface:#141414;--color-surface-elevated:#1a1a1a;--color-border:#f5f5f51a;--color-border-subtle:#f5f5f50f;--color-primary:#f59e0b;--color-primary-hover:#d97706;--color-primary-muted:#b45309;--color-secondary:#ef4444;--color-secondary-hover:#dc2626;--color-success:#10b981;--color-warning:#f59e0b;--color-error:#ef4444;--color-text:#f5f5f5;--color-text-muted:#f5f5f5b3;--color-text-subtle:#f5f5f580;--color-glass:#ffffff08;--color-glass-border:#ffffff14;--font-sans:"Manrope", "Geist Sans", "Inter", system-ui, -apple-system, sans-serif;--font-display:"Rubik", "Geist Sans", "Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Geist Mono", "Fira Code", ui-monospace, SFMono-Regular, Menlo, monospace;--radius:0px;--border-width:1px;--border-width-strong:2px;--shadow-offset:2px 2px 0 #00000052;--shadow-offset-lg:4px 4px 0 #00000052;--clip-primary-cta:polygon(10% 0, 100% 0, 100% 100%, 0 100%, 0 25%);--tcp-glow-a:#f59e0b29;--tcp-glow-b:#ef44441f}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--color-text);font-family:var(--font-sans);letter-spacing:.003em;background:var(--color-background);min-height:100vh}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background-color:#334155b3;border-radius:9999px}::-webkit-scrollbar-track{background-color:#0000}.tcp-shell{background:linear-gradient(180deg, color-mix(in srgb, var(--color-background) 98%, black 2%), var(--color-background));min-height:100vh;display:grid;position:relative;overflow:clip}.tcp-shell-chat{height:100dvh;overflow:hidden}@media (width>=1024px){.tcp-shell{grid-template-columns:300px minmax(0,1fr)}}@media (width>=1280px){.tcp-shell{grid-template-columns:76px minmax(0,1fr)}}.tcp-glow-layer{display:none}.tcp-shell-background{overflow:hidden}.tcp-shell-glow{display:none}.tcp-icon-rail,.tcp-context-rail,.tcp-main-shell{z-index:1;position:relative}.tcp-icon-rail{border-right:1px solid color-mix(in srgb, var(--color-border-subtle) 86%, transparent);background:color-mix(in srgb, var(--color-surface) 94%, #000 6%);flex-direction:column;align-items:center;gap:1rem;padding:1rem .9rem;display:flex}.tcp-rail-brand{justify-content:center;align-items:center;width:100%;padding:.1rem 0;display:flex}.tcp-rail-nav{justify-items:center;gap:.55rem;width:100%;display:grid}.tcp-rail-icon{isolation:isolate;width:2.9rem;height:2.9rem;color:var(--color-text-muted);background:0 0;border:1px solid #0000;border-radius:0;justify-content:center;align-items:center;transition:transform .18s,color .18s,border-color .18s;display:inline-flex;position:relative}.tcp-rail-icon:hover{color:var(--color-text);border-color:color-mix(in srgb, var(--color-primary) 26%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 72%, var(--color-primary) 8%);transform:translateY(-1px)}.tcp-rail-icon.active{color:var(--color-text)}.tcp-rail-icon.\!active{color:var(--color-text)!important}.tcp-rail-icon-indicator{z-index:0;pointer-events:none;border:1px solid color-mix(in srgb, var(--color-primary) 38%, transparent);background:color-mix(in srgb, var(--color-primary) 10%, var(--color-surface-elevated) 90%);box-shadow:var(--shadow-offset);border-radius:0;position:absolute;inset:0}.tcp-rail-icon>i,.tcp-rail-icon>svg{z-index:1;position:relative}.tcp-rail-icon svg,.tcp-icon-btn svg{width:17px;height:17px}.tcp-rail-footer{justify-items:center;gap:.55rem;width:100%;margin-top:auto;display:grid}.tcp-icon-btn{width:2.5rem;height:2.5rem;color:var(--color-text-muted);border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%);border-radius:0;justify-content:center;align-items:center;transition:transform .16s,border-color .16s,color .16s;display:inline-flex}.tcp-icon-btn:hover{color:var(--color-text);border-color:color-mix(in srgb, var(--color-primary) 40%, transparent);transform:translateY(-1px)}.tcp-icon-btn:disabled{cursor:not-allowed;opacity:.45;transform:none}.tcp-context-rail{border-right:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface) 94%, #000 6%);flex-direction:column;gap:1rem;padding:1.15rem;display:flex}.tcp-context-hero,.tcp-page-header,.tcp-panel-card,.tcp-mobile-topbar,.tcp-topbar{border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 92%, #000 8%);box-shadow:var(--shadow-offset);position:relative;overflow:hidden}.tcp-context-hero{border-radius:0;padding:1rem}.tcp-context-hero-glow{display:none}.tcp-context-section{gap:.55rem;display:grid}.tcp-context-section-label,.tcp-page-eyebrow{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--color-text-subtle);font-size:11px;line-height:1}.tcp-context-link{min-height:2.8rem;color:var(--color-text-muted);background:0 0;border:1px solid #0000;border-radius:0;justify-content:space-between;align-items:center;gap:.8rem;padding:.75rem .9rem;transition:transform .16s,border-color .16s,background-color .16s,color .16s;display:flex}.tcp-context-link:hover{border-color:color-mix(in srgb, var(--color-primary) 24%, transparent);color:var(--color-text);background:color-mix(in srgb, var(--color-surface-elevated) 80%, var(--color-primary) 8%);transform:translate(2px)}.tcp-context-link.active{border-color:color-mix(in srgb, var(--color-primary) 42%, transparent);color:var(--color-text);background:color-mix(in srgb, var(--color-primary) 12%, var(--color-surface-elevated) 88%)}.tcp-context-link.\!active{border-color:color-mix(in srgb, var(--color-primary) 42%, transparent)!important;color:var(--color-text)!important;background:color-mix(in srgb, var(--color-primary) 12%, var(--color-surface-elevated) 88%)!important}.tcp-context-link-dot{background:var(--color-primary);width:.5rem;height:.5rem;box-shadow:0 0 18px color-mix(in srgb, var(--color-primary) 58%, transparent);border-radius:9999px}.tcp-context-stat{border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%);border-radius:0;justify-content:space-between;align-items:center;gap:.75rem;min-height:2.75rem;padding:.75rem .85rem;display:flex}.tcp-main-shell{flex-direction:column;gap:1rem;min-width:0;padding:1rem;display:flex}.tcp-main-shell-fill{flex:auto;height:100%;min-height:0;overflow:hidden}@media (width>=1024px){.tcp-shell{min-height:100dvh}.tcp-icon-rail,.tcp-context-rail,.tcp-main-shell{min-height:0}.tcp-icon-rail,.tcp-context-rail{align-self:start;height:100dvh;position:sticky;top:0;overflow:hidden}.tcp-main-shell{min-height:0}}.tcp-mobile-topbar,.tcp-topbar{border-radius:0;padding:1rem 1.1rem}.tcp-mobile-topbar{align-items:center;gap:.85rem;display:flex}.tcp-topbar{display:none}@media (width>=1024px){.tcp-topbar{justify-content:space-between;align-items:end;gap:1rem;padding:1.15rem 1.25rem;display:flex}}.tcp-page-header-glow{display:none}.tcp-main-title,.tcp-page-title{font-family:var(--font-display);letter-spacing:-.03em;color:var(--color-text);font-size:clamp(1.75rem,3vw,2.7rem);line-height:1}.tcp-topbar-status{flex-wrap:wrap;justify-content:flex-start;gap:.55rem;display:flex}.tcp-bug-monitor-pill{letter-spacing:.02em;border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%);min-height:2rem;color:var(--color-text);border-radius:9999px;align-items:center;gap:.45rem;padding:.34rem .72rem;font-size:.72rem;font-weight:700;transition:border-color .15s,background .15s,color .15s,box-shadow .15s;display:inline-flex}.tcp-bug-monitor-pill:hover{border-color:color-mix(in srgb, var(--color-primary) 42%, var(--color-border-subtle) 58%);background:color-mix(in srgb, var(--color-surface-elevated) 82%, var(--color-primary) 18%)}.tcp-bug-monitor-pill svg{width:14px;height:14px}.tcp-bug-monitor-dot{background:currentColor;border-radius:9999px;width:.42rem;height:.42rem;animation:2.4s ease-out infinite tcpPulseDot;box-shadow:0 0}.tcp-bug-monitor-pill.watching{color:color-mix(in srgb, var(--color-primary) 76%, white 24%);border-color:color-mix(in srgb, var(--color-primary) 42%, transparent)}.tcp-bug-monitor-pill.incidents{color:#fca5a5;background:color-mix(in srgb, #7f1d1d 24%, var(--color-surface-elevated) 76%);border-color:#ef44446b}.tcp-bug-monitor-pill.\!incidents{color:#fca5a5!important;background:color-mix(in srgb, #7f1d1d 24%, var(--color-surface-elevated) 76%)!important;border-color:#ef44446b!important}.tcp-bug-monitor-pill.blocked{color:#fcd34d;border-color:#f59e0b6b}.tcp-bug-monitor-pill.paused{color:color-mix(in srgb, var(--color-text-muted) 86%, white 14%)}.tcp-bug-monitor-pill.ready{color:#86efac;border-color:#22c55e57}.tcp-bug-monitor-pill.\!ready{color:#86efac!important;border-color:#22c55e57!important}.tcp-approval-pill{letter-spacing:.02em;color:#fde68a;background:color-mix(in srgb, #78350f 22%, var(--color-surface-elevated) 78%);border:1px solid #f59e0b7a;border-radius:9999px;align-items:center;gap:.42rem;min-height:2rem;padding:.34rem .72rem;font-size:.72rem;font-weight:800;transition:border-color .15s,background .15s,color .15s,box-shadow .15s;display:inline-flex;box-shadow:0 0 0 1px #f59e0b14}.tcp-approval-pill:hover{background:color-mix(in srgb, #78350f 32%, var(--color-surface-elevated) 68%);border-color:#fbbf24a3;box-shadow:0 0 0 1px #f59e0b2e}.tcp-approval-pill svg{width:14px;height:14px}.tcp-main-content{align-content:start;gap:1rem;min-width:0;min-height:0;padding-bottom:1rem;display:grid}.tcp-main-content-fill{flex-direction:column;flex:auto;min-height:0;padding-bottom:0;display:flex;overflow:hidden}@media (width>=1024px){.tcp-main-content{flex:none}.tcp-main-content-fill{flex:auto}}.tcp-toolbar{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.tcp-panel-card{border-radius:1.4rem;padding:1.15rem}.tcp-panel-card-head{flex-wrap:wrap;justify-content:space-between;align-items:start;gap:.9rem;margin-bottom:.9rem;display:flex}.tcp-panel-card-head>.min-w-0{flex:240px}.tcp-page-header{border-radius:1.6rem;padding:1.2rem}.tcp-page-header-glow{background:radial-gradient(circle at top right, color-mix(in srgb, var(--tcp-glow-a) 46%, transparent), transparent 36%), radial-gradient(circle at bottom left, color-mix(in srgb, var(--tcp-glow-b) 34%, transparent), transparent 42%)}.tcp-status-pulse{letter-spacing:.02em;border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 86%, #000 14%);border-radius:9999px;align-items:center;gap:.45rem;padding:.34rem .62rem;font-size:.72rem;font-weight:600;display:inline-flex}.tcp-status-pulse-dot{background:currentColor;border-radius:9999px;width:.42rem;height:.42rem;animation:2.4s ease-out infinite tcpPulseDot;box-shadow:0 0}.tcp-status-pulse.ok{color:#86efac}.tcp-status-pulse.\!ok{color:#86efac!important}.tcp-status-pulse.warn{color:#fcd34d}.tcp-status-pulse.live{color:color-mix(in srgb, var(--color-primary) 78%, white 22%)}.tcp-status-pulse.info{color:var(--color-text)}.tcp-card{border-radius:var(--radius);--tw-shadow:var(--tw-shadow-colored);--tw-shadow-colored:var(--shadow-offset);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow);--tw-shadow-color:var(--color-border-subtle);border:1px solid color-mix(in srgb, var(--color-border-subtle) 92%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 94%, #000 6%);padding:1.25rem}.tcp-chat-container{flex-direction:column;height:100%;min-height:0;display:flex}.tcp-chat-fill{flex:auto;min-height:0;overflow:hidden}.tcp-input{border-radius:var(--radius);width:100%;padding:.375rem .75rem;font-size:.875rem;line-height:1.25}.tcp-input::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.tcp-input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.tcp-input{border:1px solid color-mix(in srgb, var(--color-border) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%);min-height:2.25rem;color:var(--color-text);--tw-ring-color:color-mix(in srgb, var(--color-primary) 45%, transparent)}select.tcp-input,select.tcp-select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23cbd5e1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'></polyline></svg>");background-position:right .6rem center;background-repeat:no-repeat;background-size:12px 12px;padding-right:2rem}.tcp-input.h-7,.tcp-input.h-8,.tcp-select.h-7,.tcp-select.h-8{min-height:0}.tcp-select{border-radius:var(--radius);width:100%;padding:.375rem .75rem;font-size:.875rem;line-height:1.25}.tcp-select::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.tcp-select:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.tcp-select{border:1px solid color-mix(in srgb, var(--color-border) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%);min-height:2.25rem;color:var(--color-text);--tw-ring-color:color-mix(in srgb, var(--color-primary) 45%, transparent)}select.tcp-select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23cbd5e1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'></polyline></svg>");background-position:right .6rem center;background-repeat:no-repeat;background-size:12px 12px;padding-right:2rem}.tcp-select.h-7,.tcp-select.h-8{min-height:0}.tcp-select{border-radius:0;padding-right:2.5rem}.tcp-btn{border-radius:var(--radius);--tw-shadow:var(--tw-shadow-colored);--tw-shadow-colored:var(--shadow-offset);height:2.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow);--tw-shadow-color:var(--color-border-subtle);justify-content:center;align-items:center;gap:.375rem;padding-left:.875rem;padding-right:.875rem;font-size:13px;font-weight:600;line-height:1;transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex}.tcp-btn:active{--tw-translate-y:1px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tcp-btn:disabled{cursor:not-allowed;opacity:.5}.tcp-btn{border:1px solid color-mix(in srgb, var(--color-border-subtle) 92%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 94%, #000 6%);color:var(--color-text)}.tcp-btn:hover{border-color:color-mix(in srgb, var(--color-primary) 40%, var(--color-border-subtle) 60%);background:color-mix(in srgb, var(--color-surface-elevated) 88%, var(--color-primary) 12%)}.tcp-btn svg{width:14px;height:14px}.tcp-btn-primary{border-radius:var(--radius);--tw-shadow:var(--tw-shadow-colored);--tw-shadow-colored:var(--shadow-offset);height:2.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow);--tw-shadow-color:var(--color-border-subtle);justify-content:center;align-items:center;gap:.375rem;padding-left:.875rem;padding-right:.875rem;font-size:13px;font-weight:600;line-height:1;transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex}.tcp-btn-primary:active{--tw-translate-y:1px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tcp-btn-primary:disabled{cursor:not-allowed;opacity:.5}.tcp-btn-primary{border:1px solid color-mix(in srgb, var(--color-border-subtle) 92%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 94%, #000 6%);color:var(--color-text)}.tcp-btn-primary:hover{border-color:color-mix(in srgb, var(--color-primary) 40%, var(--color-border-subtle) 60%);background:color-mix(in srgb, var(--color-surface-elevated) 88%, var(--color-primary) 12%)}.tcp-btn-primary svg{width:14px;height:14px}.tcp-btn-primary{--tw-text-opacity:1;color:rgb(17 17 17/var(--tw-text-opacity,1));--tw-shadow:var(--shadow-offset-lg);--tw-shadow-colored:var(--shadow-offset-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow);border-color:color-mix(in srgb, var(--color-primary) 56%, transparent);background:color-mix(in srgb, var(--color-primary) 94%, white 6%);border-radius:0}.tcp-btn-primary:hover{background:color-mix(in srgb, var(--color-primary-hover) 94%, white 6%)}.tcp-btn-danger{border-radius:var(--radius);--tw-shadow:var(--tw-shadow-colored);--tw-shadow-colored:var(--shadow-offset);height:2.25rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow);--tw-shadow-color:var(--color-border-subtle);justify-content:center;align-items:center;gap:.375rem;padding-left:.875rem;padding-right:.875rem;font-size:13px;font-weight:600;line-height:1;transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex}.tcp-btn-danger:active{--tw-translate-y:1px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tcp-btn-danger:disabled{cursor:not-allowed;opacity:.5}.tcp-btn-danger{border:1px solid color-mix(in srgb, var(--color-border-subtle) 92%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 94%, #000 6%);color:var(--color-text)}.tcp-btn-danger:hover{border-color:color-mix(in srgb, var(--color-primary) 40%, var(--color-border-subtle) 60%);background:color-mix(in srgb, var(--color-surface-elevated) 88%, var(--color-primary) 12%)}.tcp-btn-danger svg{width:14px;height:14px}.tcp-btn-danger{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity,1));background:color-mix(in srgb, #7f1d1d 74%, var(--color-surface-elevated) 26%);border-color:#f43f5e80;border-radius:0}.tcp-btn-danger:hover{background:color-mix(in srgb, #991b1b 78%, var(--color-surface-elevated) 22%)}.tcp-badge{border-radius:var(--radius);border-width:1px;align-items:center;gap:.25rem;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem;display:inline-flex}.tcp-badge-ok{border-radius:var(--radius);--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity,1));border-width:1px;border-color:#65a30d99;border-radius:0;align-items:center;gap:.25rem;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem;display:inline-flex}.tcp-badge-warn{border-radius:var(--radius);--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1));border-width:1px;border-color:#d9770699;border-radius:0;align-items:center;gap:.25rem;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem;display:inline-flex}.tcp-badge-err{border-radius:var(--radius);--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity,1));border-width:1px;border-color:#e11d4899;border-radius:0;align-items:center;gap:.25rem;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem;display:inline-flex}.tcp-badge-info{border-radius:var(--radius);border-width:1px;border-color:color-mix(in srgb, var(--color-primary) 38%, transparent);color:color-mix(in srgb, var(--color-primary) 76%, var(--color-text) 24%);border-radius:0;align-items:center;gap:.25rem;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem;display:inline-flex}.tcp-badge-blocked{border-radius:var(--radius);--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity,1));border-width:1px;border-color:#818cf899;border-radius:0;align-items:center;gap:.25rem;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem;display:inline-flex}.tcp-badge-ghost{border-color:color-mix(in srgb, var(--color-border-subtle) 90%, transparent);color:var(--color-text-muted);background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%)}.tcp-title{letter-spacing:-.025em;--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity,1));font-size:1.125rem;font-weight:600;line-height:1.75rem}.tcp-subtle{color:var(--color-text-muted);font-size:.875rem;line-height:1.25rem}.tcp-list{gap:.75rem;display:grid}.tcp-panel-card-head>.tcp-list-item{flex:240px}.tcp-list-item{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--color-border) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 86%, #000 14%);min-width:0;padding:.75rem;transition:transform .16s,border-color .16s,background-color .16s;overflow:hidden}.tcp-list-item:hover{border-color:color-mix(in srgb, var(--color-primary) 28%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 82%, var(--color-primary) 6%);transform:translateY(-1px)}.tcp-code{border-radius:var(--radius);font-family:var(--font-mono);border:1px solid color-mix(in srgb, var(--color-border) 85%, transparent);background:color-mix(in srgb, var(--color-surface) 75%, #000 25%);color:var(--color-text-muted);padding:.75rem;font-size:.75rem;line-height:1rem}.nav-item.\!active{color:var(--color-text)!important;border-color:color-mix(in srgb, var(--color-primary) 52%, transparent)!important;background:color-mix(in srgb, var(--color-primary) 18%, var(--color-surface-elevated) 82%)!important;box-shadow:inset 0 1px #ffffff14!important}.nav-item.active{color:var(--color-text);border-color:color-mix(in srgb, var(--color-primary) 52%, transparent);background:color-mix(in srgb, var(--color-primary) 18%, var(--color-surface-elevated) 82%);box-shadow:inset 0 1px #ffffff14}.toast{border-radius:var(--radius);--tw-shadow:var(--tw-shadow-colored);--tw-shadow-colored:var(--shadow-offset);max-width:24rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow);--tw-shadow-color:var(--color-border-subtle);border-width:1px;border-color:color-mix(in srgb, var(--color-border) 95%, transparent);background:color-mix(in srgb, var(--color-surface) 95%, transparent);padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem}.tcp-empty-state{border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%), color-mix(in srgb, var(--color-surface) 94%, #000 6%));border-radius:1.2rem;padding:1rem;position:relative;overflow:hidden}.tcp-empty-state-orb{background:radial-gradient(circle, color-mix(in srgb, var(--tcp-glow-a) 72%, transparent), transparent 70%);filter:blur(12px);opacity:.65;border-radius:9999px;width:7rem;height:7rem;display:none;position:absolute;top:-1rem;right:-1rem}.tcp-empty-state-title{font-family:var(--font-display);color:var(--color-text);font-size:1.05rem}.tcp-filter-chip{min-height:2rem;color:var(--color-text-muted);border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%);border-radius:0;align-items:center;gap:.4rem;padding:.35rem .82rem;font-size:.78rem;transition:color .16s,border-color .16s,background-color .16s;display:inline-flex}.tcp-filter-chip.active{color:var(--color-text);border-color:color-mix(in srgb, var(--color-primary) 42%, transparent);background:color-mix(in srgb, var(--color-primary) 14%, var(--color-surface-elevated) 86%)}.tcp-filter-chip.\!active{color:var(--color-text)!important;border-color:color-mix(in srgb, var(--color-primary) 42%, transparent)!important;background:color-mix(in srgb, var(--color-primary) 14%, var(--color-surface-elevated) 86%)!important}.tcp-split-view{gap:1rem;display:grid}@media (width>=1280px){.tcp-split-view{grid-template-columns:minmax(0,1fr) minmax(320px,.84fr)}.tcp-split-view.tcp-split-view--solo{grid-template-columns:minmax(0,1fr)}}.tcp-drawer-root{z-index:160;position:fixed;inset:0}.tcp-drawer-backdrop{background:#0000008c;position:absolute;inset:0}.tcp-drawer-panel{border-left:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 92%, transparent), color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%));flex-direction:column;width:min(520px,94vw);display:flex;position:absolute;top:0;bottom:0;right:0}.tcp-drawer-head{border-bottom:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);justify-content:space-between;align-items:center;gap:.8rem;padding:1rem;display:flex}.tcp-theme-tile{border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 92%, transparent), color-mix(in srgb, var(--color-surface-elevated) 92%, #000 8%));text-align:left;border-radius:0;gap:.9rem;padding:1rem;display:grid;position:relative;overflow:hidden}.tcp-theme-tile.active{border-color:color-mix(in srgb, var(--color-primary) 42%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--color-primary) 18%, transparent)}.tcp-theme-tile.\!active{border-color:color-mix(in srgb, var(--color-primary) 42%, transparent)!important;box-shadow:0 0 0 1px color-mix(in srgb, var(--color-primary) 18%, transparent)!important}.tcp-theme-tile-top{justify-content:space-between;align-items:start;gap:.8rem;display:flex}.tcp-theme-tile-title{color:var(--color-text);font-weight:700}.tcp-theme-swatch{border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);border-radius:0;width:.9rem;height:.9rem}.tcp-theme-preview{border-radius:0;overflow:hidden}.tcp-theme-preview-bg{min-height:5.8rem;padding:.85rem}.tcp-theme-preview-card{border:1px solid;border-radius:.8rem;gap:.45rem;width:72%;padding:.7rem;display:grid;box-shadow:0 10px 24px #0000002e}.tcp-theme-preview-line{opacity:.6;border-radius:9999px;width:100%;height:.42rem;display:block}.tcp-theme-preview-line.short{opacity:1;width:58%}.tcp-theme-preview-pill{border-radius:9999px;width:3.4rem;height:1rem}.tcp-theme-active{color:#101010;background:linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 88%, white 12%), color-mix(in srgb, var(--color-primary-hover) 92%, black 8%));border-radius:9999px;align-items:center;gap:.35rem;padding:.35rem .62rem;font-size:.72rem;font-weight:700;display:inline-flex;position:absolute;bottom:.85rem;right:.85rem}.tcp-mobile-drawer{z-index:150;position:fixed;inset:0}.tcp-mobile-drawer-backdrop{background:#0000008f;position:absolute;inset:0}.tcp-mobile-drawer-panel{background:linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 92%, transparent), color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%));border-right:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);flex-direction:column;gap:1rem;width:min(92vw,360px);padding:1rem;display:flex;position:absolute;top:0;bottom:0;left:0}.chat-layout{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--color-border) 82%, transparent);background:color-mix(in srgb, var(--color-surface) 92%, #000 8%);min-height:0;position:relative;overflow:hidden}.chat-layout-fill{flex:auto;height:100%;min-height:0}.tcp-panel-card-head>.chat-workspace{flex:240px}.chat-workspace{grid-template-columns:minmax(0,1fr);min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.chat-sessions-panel{z-index:30;border-right:1px solid color-mix(in srgb, var(--color-border) 80%, transparent);background:color-mix(in srgb, var(--color-surface) 96%, #000 4%);flex-direction:column;width:280px;max-width:92vw;padding:.75rem;transition:transform .18s;display:flex;position:absolute;top:0;bottom:0;left:0;transform:translate(-104%)}.chat-sessions-panel.open{transform:translate(0)}.chat-sessions-panel.\!open{transform:translate(0)!important}.chat-scrim{pointer-events:none;z-index:20;opacity:0;background-color:#00000073;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);position:absolute;inset:0}.chat-scrim.open,.chat-scrim.\!open{pointer-events:auto;opacity:1}.chat-sessions-header{border-bottom:1px solid color-mix(in srgb, var(--color-border-subtle) 92%, transparent);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;padding-bottom:.5rem;display:flex}.chat-sessions-title{color:var(--color-text);align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;line-height:1.25rem;display:inline-flex}.chat-sessions-title svg{width:14px;height:14px;color:var(--color-text-subtle)}.chat-session-list{flex:1;grid-auto-rows:max-content;align-content:start;gap:.35rem;min-height:0;padding-right:.25rem;display:grid;overflow-y:auto}.tcp-panel-card-head>.chat-session-row{flex:240px}.chat-session-row{align-items:center;gap:.375rem;min-width:0;display:flex}.tcp-panel-card-head>.chat-session-btn{flex:240px}.chat-session-btn{text-overflow:ellipsis;white-space:nowrap;border-radius:var(--radius);text-align:left;border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 84%, #000 16%);min-width:0;color:var(--color-text-muted);flex:1;padding:.375rem .625rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);overflow:hidden}.chat-session-btn.active{border-color:color-mix(in srgb, var(--color-primary) 44%, var(--color-border) 56%);background:color-mix(in srgb, var(--color-surface-elevated) 72%, var(--color-primary) 8%);color:var(--color-text)}.chat-session-btn.\!active{border-color:color-mix(in srgb, var(--color-primary) 44%, var(--color-border) 56%)!important;background:color-mix(in srgb, var(--color-surface-elevated) 72%, var(--color-primary) 8%)!important;color:var(--color-text)!important}.tcp-input.chat-session-del,.tcp-select.chat-session-del{min-height:0}.chat-session-del{border-radius:var(--radius);--tw-text-opacity:1;width:2rem;height:2rem;color:rgb(253 164 175/var(--tw-text-opacity,1));background-color:#88133740;border-width:1px;border-color:#88133780;justify-content:center;align-items:center;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex}.chat-session-del:hover{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity,1));border-color:#be123cb3}.chat-main-shell{border-right:1px solid color-mix(in srgb, var(--color-border-subtle) 92%, transparent);background:color-mix(in srgb, var(--color-surface) 86%, #000 14%);flex:1;min-height:0;display:flex}.chat-main-header{border-bottom:1px solid color-mix(in srgb, var(--color-border-subtle) 92%, transparent);align-items:center;gap:.5rem;margin-bottom:0;padding:.625rem .75rem;display:flex}.chat-main-dot{background:var(--color-primary);border-radius:9999px;flex-shrink:0;width:.375rem;height:.375rem}.tcp-panel-card-head>.chat-main-title{flex:240px}.chat-main-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:1rem;line-height:1.5rem;overflow:hidden}.chat-main-tools{border-radius:var(--radius);text-transform:uppercase;letter-spacing:.05em;border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%);color:var(--color-text-muted);font-size:10px;font-family:var(--font-mono);flex-shrink:0;padding:.125rem .375rem}.chat-messages{background:color-mix(in srgb, var(--color-surface) 84%, #000 16%)}.chat-empty-state{text-align:center;width:min(100%,28rem);margin:auto}.chat-right-rail{border-left:1px solid color-mix(in srgb, var(--color-border-subtle) 92%, transparent);background:color-mix(in srgb, var(--color-surface) 92%, #000 8%);padding:.75rem}.chat-rail-section{min-height:0;overflow:hidden}.chat-rail-tools-section{flex:0 auto;max-height:clamp(6.75rem,24vh,13rem)}.chat-rail-approvals-section{flex:none;max-height:clamp(5.75rem,18vh,10rem)}.chat-rail-scroll-section{flex-direction:column;flex:1 1 0;min-height:5.5rem;display:flex}.chat-rail-label{text-transform:uppercase;letter-spacing:.18em;color:var(--color-text-subtle);font-size:10px;font-family:var(--font-mono)}.chat-rail-count{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);color:var(--color-text-muted);font-size:10px;font-family:var(--font-mono);padding:.125rem .375rem}.chat-tools-list{flex-wrap:wrap;gap:.3rem;max-height:min(8.5rem,100%);padding-right:.25rem;display:flex;overflow:auto}.chat-tool-pill{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%);color:var(--color-text-muted);font-size:10px;font-family:var(--font-mono);align-items:center;gap:.25rem;padding:.125rem .375rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex}.chat-tool-pill:hover{border-color:color-mix(in srgb, var(--color-primary) 42%, transparent);color:var(--color-text)}.chat-tool-pill.selected{border-color:color-mix(in srgb, var(--color-primary) 72%, transparent);background:color-mix(in srgb, var(--color-primary) 18%, var(--color-surface-elevated));color:var(--color-text)}.chat-tool-pill.\!selected{border-color:color-mix(in srgb, var(--color-primary) 72%, transparent)!important;background:color-mix(in srgb, var(--color-primary) 18%, var(--color-surface-elevated))!important;color:var(--color-text)!important}.chat-planner-nudge{border-width:1px;border-color:color-mix(in srgb, var(--color-primary) 34%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%);max-width:100%;color:var(--color-text-muted);align-items:center;gap:.5rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;display:inline-flex}.chat-planner-nudge-action,.chat-planner-nudge-dismiss{color:var(--color-text);align-items:center;gap:.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex}.chat-planner-nudge-action:hover,.chat-planner-nudge-dismiss:hover{color:var(--color-primary)}.chat-planner-nudge-hint{text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-subtle);overflow:hidden}.chat-tools-activity{flex:1;align-content:start;gap:.3rem;min-height:0;padding-right:.25rem;display:grid;overflow:auto}.chat-tool-event{border-radius:var(--radius);border-width:1px;padding:.25rem .375rem;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px}.chat-tool-event summary{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;gap:.5rem;list-style:none;display:grid}.chat-tool-event summary::-webkit-details-marker{display:none}.chat-tool-event-body{margin-top:.25rem}.chat-tool-event-body>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.chat-tool-event-body{color:var(--color-text-subtle)}.chat-tool-event-body pre{white-space:pre-wrap;overflow-wrap:break-word;border-width:1px;border-color:color-mix(in srgb, var(--color-border-subtle) 84%, transparent);background:color-mix(in srgb, var(--color-surface) 78%, #000 22%);max-height:6rem;padding:.25rem;overflow:auto}.chat-tool-chip-running{border-color:color-mix(in srgb, var(--color-border-subtle) 85%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 72%, transparent);color:var(--color-text-muted)}.chat-tool-chip-ok{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1));background-color:#10b9811a;border-color:#10b98159}.chat-tool-chip-failed{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity,1));background-color:#f43f5e1a;border-color:#f43f5e59}.chat-rail-empty{color:var(--color-text-subtle);font-size:11px}.chat-composer{border-top:1px solid color-mix(in srgb, var(--color-border-subtle) 92%, transparent);background:color-mix(in srgb, var(--color-surface) 94%, #000 6%);padding:.5rem .75rem}.chat-attach-row{align-items:center;gap:.25rem;display:flex;overflow:hidden}.chat-input-wrap{position:relative}.chat-input-with-clip{padding-left:2.75rem}.chat-input-modern{border-radius:var(--radius);border-color:color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%);min-height:46px;max-height:180px;padding-top:.625rem;padding-bottom:.625rem;padding-right:3rem;line-height:1.625}.tcp-input.chat-icon-btn,.tcp-select.chat-icon-btn{min-height:0}.chat-icon-btn{border-radius:var(--radius);border-width:1px;border-color:color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%);width:2rem;height:2rem;color:var(--color-text-muted);justify-content:center;align-items:center;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex}.chat-icon-btn:hover{border-color:color-mix(in srgb, var(--color-primary) 42%, transparent);color:var(--color-text)}.tcp-input.chat-icon-btn-inner,.tcp-select.chat-icon-btn-inner{min-height:0}.chat-icon-btn-inner{z-index:10;width:1.75rem;height:1.75rem;position:absolute;top:.5rem;left:.5rem}.tcp-input.chat-send-btn,.tcp-select.chat-send-btn{min-height:0}.chat-send-btn{border-radius:var(--radius);border-width:1px;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex;position:absolute;top:.5rem;right:.5rem}.chat-send-btn:disabled{cursor:not-allowed;opacity:.45}.chat-send-btn{border-color:color-mix(in srgb, var(--color-primary) 45%, transparent);background:color-mix(in srgb, var(--color-primary-muted) 72%, transparent);color:var(--color-text)}.chat-send-btn:hover{background:color-mix(in srgb, var(--color-primary-hover) 76%, transparent)}.chat-file-pill{border-radius:var(--radius);border-width:1px;border-color:color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%);max-width:280px;color:var(--color-text);flex-shrink:0;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.75rem;line-height:1rem;display:inline-flex}.chat-file-pill-name{text-overflow:ellipsis;white-space:nowrap;max-width:160px;overflow:hidden}.chat-file-pill-size{color:var(--color-text-subtle);font-size:10px}.chat-file-pill-btn{border-radius:var(--radius);border-width:1px;border-color:color-mix(in srgb, var(--color-border-subtle) 90%, transparent);width:18px;height:18px;color:var(--color-text-muted);justify-content:center;align-items:center;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-flex}.chat-file-pill-btn:hover{border-color:color-mix(in srgb, var(--color-primary) 42%, transparent);color:var(--color-text)}.chat-file-pill-btn-danger{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity,1));border-color:#f43f5e99}.chat-file-pill-btn-danger:hover{--tw-border-opacity:1;border-color:rgb(251 113 133/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity,1))}.chat-msg{border-width:1px;border-color:color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 92%, #000 8%);max-width:84%;color:var(--color-text);border-radius:12px;padding:.625rem .75rem;font-size:.875rem;line-height:1.25rem}.chat-msg.assistant{margin-right:auto}.chat-msg.user{border-color:color-mix(in srgb, var(--color-primary) 38%, var(--color-border) 62%);background:color-mix(in srgb, var(--color-surface-elevated) 80%, var(--color-primary) 6%);margin-left:auto}.chat-msg-role{text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-subtle);margin-bottom:.25rem;font-size:10px}.chat-msg.user .chat-msg-role{color:var(--color-text-muted)}.chat-msg-pre{white-space:pre-wrap;word-break:break-all;max-width:100%;font-family:var(--font-mono);color:var(--color-text);font-size:.75rem}.chat-auto-approve-label{color:var(--color-text-muted);align-items:center;gap:.375rem;font-size:11px;display:inline-flex}.chat-auto-approve-checkbox{width:.875rem;height:.875rem;accent-color:var(--color-primary)}.chat-pack-event-card,.chat-timeline-card{border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 86%, #000 14%);border-radius:.125rem;padding:.375rem .5rem}.chat-pack-event-title{color:var(--color-text);font-size:11px}.chat-pack-event-time,.chat-pack-event-summary{color:var(--color-text-subtle);font-size:10px}.chat-avatar-ring{border:1px solid color-mix(in srgb, var(--color-border) 85%, transparent)}.tcp-icon-rail,.tcp-context-rail,.tcp-context-hero,.tcp-context-link,.tcp-context-stat,.tcp-page-header,.tcp-panel-card,.tcp-mobile-topbar,.tcp-topbar,.tcp-card,.tcp-panel,.tcp-input,.tcp-btn,.tcp-btn-primary,.tcp-btn-danger,.tcp-badge,.tcp-badge-info,.tcp-badge-ok,.tcp-badge-warn,.tcp-badge-err,.tcp-badge-blocked,.tcp-badge-ghost,.tcp-list-item,.tcp-code,.tcp-empty-state,.tcp-filter-chip,.tcp-confirm-dialog,.tcp-verification-modal,.tcp-workflow-editor-modal,.tcp-run-debugger-modal,.tcp-doc-dialog,.tcp-theme-tile,.tcp-theme-preview,.tcp-theme-preview-card,.tcp-theme-active,.tcp-brand-avatar,.tcp-bug-monitor-pill,.tcp-approval-pill,.tcp-status-pulse,.tcp-icon-btn,.tcp-shell-glass,.tcp-drawer-panel,.tcp-mobile-drawer-panel,.chat-msg,.chat-session-btn,.chat-session-del,.chat-main-tools,.chat-rail-count,.chat-tool-pill,.chat-tool-chip,.chat-tool-event,.chat-planner-nudge,.chat-icon-btn,.chat-send-btn,.chat-file-pill,.chat-file-pill-btn,.chat-upload-card,.fc .fc-timegrid-more-link,.fc .tcp-calendar-more-link{border-radius:0!important}.tcp-confirm-overlay,.tcp-doc-overlay,.tcp-drawer-backdrop,.tcp-mobile-drawer-backdrop,.tcp-icon-rail,.tcp-context-rail,.tcp-shell-glass{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-top-3{top:-.75rem}.bottom-6{bottom:1.5rem}.bottom-\[8\%\]{bottom:8%}.left-0{left:0}.left-0\.5{left:.125rem}.left-4{left:1rem}.left-\[6\%\]{left:6%}.right-0{right:0}.right-3{right:.75rem}.right-4{right:1rem}.right-\[6\%\]{right:6%}.top-0\.5{top:.125rem}.top-1\/2{top:50%}.top-9{top:2.25rem}.top-\[8\%\]{top:8%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.col-span-2{grid-column:span 2/span 2}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.-mt-1{margin-top:-.25rem}.-mt-3{margin-top:-.75rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-auto{margin-top:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[34\%\]{height:34%}.h-\[420px\]{height:420px}.h-\[500px\]{height:500px}.h-\[calc\(100\%-4\.5rem\)\]{height:calc(100% - 4.5rem)}.h-\[calc\(100dvh-1rem\)\]{height:calc(100dvh - 1rem)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-24{max-height:6rem}.max-h-28{max-height:7rem}.max-h-32{max-height:8rem}.max-h-36{max-height:9rem}.max-h-40{max-height:10rem}.max-h-44{max-height:11rem}.max-h-48{max-height:12rem}.max-h-56{max-height:14rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.max-h-80,.max-h-\[20rem\]{max-height:20rem}.max-h-\[220px\]{max-height:220px}.max-h-\[260px\]{max-height:260px}.max-h-\[28rem\]{max-height:28rem}.max-h-\[320px\]{max-height:320px}.max-h-\[360px\]{max-height:360px}.max-h-\[420px\]{max-height:420px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[520px\]{max-height:520px}.max-h-\[56vh\]{max-height:56vh}.max-h-\[68vh\]{max-height:68vh}.max-h-\[90vh\]{max-height:90vh}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-20{min-height:5rem}.min-h-28{min-height:7rem}.min-h-32{min-height:8rem}.min-h-40{min-height:10rem}.min-h-48{min-height:12rem}.min-h-8{min-height:2rem}.min-h-\[1\.2rem\]{min-height:1.2rem}.min-h-\[108px\]{min-height:108px}.min-h-\[10rem\]{min-height:10rem}.min-h-\[110px\]{min-height:110px}.min-h-\[120px\]{min-height:120px}.min-h-\[12rem\]{min-height:12rem}.min-h-\[140px\]{min-height:140px}.min-h-\[16rem\]{min-height:16rem}.min-h-\[180px\]{min-height:180px}.min-h-\[200px\]{min-height:200px}.min-h-\[220px\]{min-height:220px}.min-h-\[24rem\]{min-height:24rem}.min-h-\[28rem\]{min-height:28rem}.min-h-\[340px\]{min-height:340px}.min-h-\[360px\]{min-height:360px}.min-h-\[40vh\]{min-height:40vh}.min-h-\[5rem\]{min-height:5rem}.min-h-\[72px\]{min-height:72px}.min-h-\[8\.5rem\]{min-height:8.5rem}.min-h-\[80px\]{min-height:80px}.min-h-\[84px\]{min-height:84px}.min-h-\[88px\]{min-height:88px}.min-h-\[92px\]{min-height:92px}.min-h-\[96px\]{min-height:96px}.min-h-\[calc\(100vh-240px\)\]{min-height:calc(100vh - 240px)}.min-h-\[calc\(100vh-4rem\)\]{min-height:calc(100vh - 4rem)}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0\.5{width:.125rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-40{width:10rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[320px\]{width:320px}.w-\[34\%\]{width:34%}.w-\[calc\(100vw-1rem\)\]{width:calc(100vw - 1rem)}.w-\[min\(34rem\,96vw\)\]{width:min(34rem,96vw)}.w-\[min\(36rem\,calc\(100vw-2rem\)\)\]{width:min(36rem,100vw - 2rem)}.w-\[min\(40rem\,96vw\)\]{width:min(40rem,96vw)}.w-\[min\(42rem\,96vw\)\]{width:min(42rem,96vw)}.w-\[min\(44rem\,96vw\)\]{width:min(44rem,96vw)}.w-\[min\(64rem\,96vw\)\]{width:min(64rem,96vw)}.w-fit{width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-48,.min-w-\[12rem\]{min-width:12rem}.min-w-\[190px\]{min-width:190px}.min-w-\[20rem\]{min-width:20rem}.min-w-\[220px\]{min-width:220px}.min-w-\[320px\]{min-width:320px}.min-w-\[4rem\]{min-width:4rem}.min-w-\[5\.5rem\]{min-width:5.5rem}.min-w-\[min\(100\%\,18rem\)\]{min-width:min(100%,18rem)}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-\[17rem\]{max-width:17rem}.max-w-\[24rem\]{max-width:24rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-none{max-width:none}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-left{transform-origin:0}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-4{--tw-translate-x:1rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-mt-24{scroll-margin-top:6rem}.list-none{list-style-type:none}.appearance-none{appearance:none}.auto-rows-max{grid-auto-rows:max-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-3{row-gap:.75rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded,.rounded-2xl{border-radius:var(--radius)}.rounded-\[0\.65rem\]{border-radius:.65rem}.rounded-\[1\.4rem\]{border-radius:1.4rem}.rounded-\[28px\]{border-radius:28px}.rounded-full{border-radius:9999px}.rounded-lg,.rounded-md,.rounded-none,.rounded-sm,.rounded-xl{border-radius:var(--radius)}.rounded-t-xl{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200\/80{border-color:#fde68acc}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.border-amber-300\/70{border-color:#fcd34db3}.border-amber-300\/80{border-color:#fcd34dcc}.border-amber-400{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.border-amber-400\/20{border-color:#fbbf2433}.border-amber-400\/30{border-color:#fbbf244d}.border-amber-400\/35{border-color:#fbbf2459}.border-amber-400\/40{border-color:#fbbf2466}.border-amber-400\/50{border-color:#fbbf2480}.border-amber-400\/60{border-color:#fbbf2499}.border-amber-400\/70{border-color:#fbbf24b3}.border-amber-400\/80{border-color:#fbbf24cc}.border-amber-500\/15{border-color:#f59e0b26}.border-amber-500\/20{border-color:#f59e0b33}.border-amber-500\/25{border-color:#f59e0b40}.border-amber-500\/30{border-color:#f59e0b4d}.border-amber-500\/40{border-color:#f59e0b66}.border-amber-500\/60{border-color:#f59e0b99}.border-amber-700\/40{border-color:#b4530966}.border-amber-700\/60{border-color:#b4530999}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-blue-400\/40{border-color:#60a5fa66}.border-blue-500\/30{border-color:#3b82f64d}.border-blue-500\/80{border-color:#3b82f6cc}.border-current{border-color:currentColor}.border-cyan-400\/30{border-color:#22d3ee4d}.border-cyan-400\/50{border-color:#22d3ee80}.border-cyan-400\/60{border-color:#22d3ee99}.border-cyan-400\/70{border-color:#22d3eeb3}.border-cyan-500\/10{border-color:#06b6d41a}.border-cyan-500\/20{border-color:#06b6d433}.border-cyan-500\/30{border-color:#06b6d44d}.border-cyan-600\/50{border-color:#0891b280}.border-cyan-700\/50{border-color:#0e749080}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity,1))}.border-emerald-400{--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity,1))}.border-emerald-400\/20{border-color:#34d39933}.border-emerald-400\/25{border-color:#34d39940}.border-emerald-400\/30{border-color:#34d3994d}.border-emerald-400\/35{border-color:#34d39959}.border-emerald-400\/40{border-color:#34d39966}.border-emerald-400\/60{border-color:#34d39999}.border-emerald-400\/70{border-color:#34d399b3}.border-emerald-500\/10{border-color:#10b9811a}.border-emerald-500\/20{border-color:#10b98133}.border-emerald-500\/30{border-color:#10b9814d}.border-emerald-500\/40{border-color:#10b98166}.border-emerald-600\/50{border-color:#05966980}.border-indigo-500\/30{border-color:#6366f14d}.border-indigo-500\/35{border-color:#6366f159}.border-indigo-600\/50{border-color:#4f46e580}.border-lime-400\/30{border-color:#a3e6354d}.border-lime-500\/20{border-color:#84cc1633}.border-lime-500\/30{border-color:#84cc164d}.border-lime-500\/40{border-color:#84cc1666}.border-red-400\/30{border-color:#f871714d}.border-red-400\/40{border-color:#f8717166}.border-red-500\/20{border-color:#ef444433}.border-red-500\/40{border-color:#ef444466}.border-red-500\/50{border-color:#ef444480}.border-red-500\/60{border-color:#ef444499}.border-red-500\/70{border-color:#ef4444b3}.border-rose-400\/30{border-color:#fb71854d}.border-rose-400\/35{border-color:#fb718559}.border-rose-500\/30{border-color:#f43f5e4d}.border-rose-500\/35{border-color:#f43f5e59}.border-rose-500\/40{border-color:#f43f5e66}.border-rose-600\/50{border-color:#e11d4880}.border-rose-700\/40{border-color:#be123c66}.border-rose-700\/60{border-color:#be123c99}.border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.border-sky-400\/20{border-color:#38bdf833}.border-sky-400\/30{border-color:#38bdf84d}.border-sky-500\/20{border-color:#0ea5e933}.border-sky-500\/30{border-color:#0ea5e94d}.border-sky-500\/40{border-color:#0ea5e966}.border-sky-500\/50{border-color:#0ea5e980}.border-sky-700\/40{border-color:#0369a166}.border-sky-700\/50{border-color:#0369a180}.border-slate-200\/45{border-color:#e2e8f073}.border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity,1))}.border-slate-500\/40{border-color:#64748b66}.border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity,1))}.border-slate-600\/40{border-color:#47556966}.border-slate-600\/60{border-color:#47556999}.border-slate-600\/70{border-color:#475569b3}.border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.border-slate-700\/40{border-color:#33415566}.border-slate-700\/50{border-color:#33415580}.border-slate-700\/60{border-color:#33415599}.border-slate-700\/70{border-color:#334155b3}.border-slate-700\/80{border-color:#334155cc}.border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity,1))}.border-slate-800\/50{border-color:#1e293b80}.border-slate-800\/60{border-color:#1e293b99}.border-slate-800\/70{border-color:#1e293bb3}.border-slate-800\/80{border-color:#1e293bcc}.border-slate-900\/0{border-color:#0f172a00}.border-transparent{border-color:#0000}.border-violet-400\/30{border-color:#a78bfa4d}.border-violet-500\/20{border-color:#8b5cf633}.border-violet-900\/40{border-color:#4c1d9566}.border-white\/10{border-color:#ffffff1a}.border-white\/15{border-color:#ffffff26}.border-white\/5{border-color:#ffffff0d}.border-yellow-500\/20{border-color:#eab30833}.border-t-transparent{border-top-color:#0000}.bg-\[color\:color-mix\(in_srgb\,var\(--color-surface-elevated\)_96\%\,\#000_4\%\)\]{background-color:color-mix(in srgb,var(--color-surface-elevated) 96%,#000 4%)}.bg-amber-300{--tw-bg-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity,1))}.bg-amber-300\/35{background-color:#fcd34d59}.bg-amber-400\/10{background-color:#fbbf241a}.bg-amber-400\/15{background-color:#fbbf2426}.bg-amber-400\/5{background-color:#fbbf240d}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-amber-500\/20{background-color:#f59e0b33}.bg-amber-500\/40{background-color:#f59e0b66}.bg-amber-500\/5{background-color:#f59e0b0d}.bg-amber-950\/20{background-color:#451a0333}.bg-amber-950\/30{background-color:#451a034d}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\/10{background-color:#0000001a}.bg-black\/20{background-color:#0003}.bg-black\/25{background-color:#00000040}.bg-black\/30{background-color:#0000004d}.bg-black\/35{background-color:#00000059}.bg-black\/40{background-color:#0006}.bg-black\/60{background-color:#0009}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity,1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-cyan-400{--tw-bg-opacity:1;background-color:rgb(34 211 238/var(--tw-bg-opacity,1))}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-500{--tw-bg-opacity:1;background-color:rgb(6 182 212/var(--tw-bg-opacity,1))}.bg-cyan-500\/10{background-color:#06b6d41a}.bg-cyan-500\/5{background-color:#06b6d40d}.bg-cyan-950\/20{background-color:#08334433}.bg-cyan-950\/30{background-color:#0833444d}.bg-emerald-300{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity,1))}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity,1))}.bg-emerald-400\/10{background-color:#34d3991a}.bg-emerald-400\/5{background-color:#34d3990d}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/30{background-color:#10b9814d}.bg-emerald-500\/40{background-color:#10b98166}.bg-emerald-500\/5{background-color:#10b9810d}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.bg-emerald-950\/20{background-color:#022c2233}.bg-emerald-950\/30{background-color:#022c224d}.bg-indigo-950\/20{background-color:#1e1b4b33}.bg-indigo-950\/30{background-color:#1e1b4b4d}.bg-lime-400\/10{background-color:#a3e6351a}.bg-lime-500\/10{background-color:#84cc161a}.bg-red-400\/10{background-color:#f871711a}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/20{background-color:#ef444433}.bg-red-950\/30{background-color:#450a0a4d}.bg-rose-300{--tw-bg-opacity:1;background-color:rgb(253 164 175/var(--tw-bg-opacity,1))}.bg-rose-400{--tw-bg-opacity:1;background-color:rgb(251 113 133/var(--tw-bg-opacity,1))}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.bg-rose-500\/10{background-color:#f43f5e1a}.bg-rose-600{--tw-bg-opacity:1;background-color:rgb(225 29 72/var(--tw-bg-opacity,1))}.bg-rose-950\/20{background-color:#4c051933}.bg-rose-950\/30{background-color:#4c05194d}.bg-sky-300{--tw-bg-opacity:1;background-color:rgb(125 211 252/var(--tw-bg-opacity,1))}.bg-sky-400{--tw-bg-opacity:1;background-color:rgb(56 189 248/var(--tw-bg-opacity,1))}.bg-sky-400\/10{background-color:#38bdf81a}.bg-sky-400\/\[0\.04\]{background-color:#38bdf80a}.bg-sky-500\/10{background-color:#0ea5e91a}.bg-sky-950\/10{background-color:#082f491a}.bg-sky-950\/20{background-color:#082f4933}.bg-sky-950\/30{background-color:#082f494d}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity,1))}.bg-slate-500\/10{background-color:#64748b1a}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.bg-slate-700\/40{background-color:#33415566}.bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.bg-slate-800\/20{background-color:#1e293b33}.bg-slate-800\/40{background-color:#1e293b66}.bg-slate-800\/60{background-color:#1e293b99}.bg-slate-800\/80{background-color:#1e293bcc}.bg-slate-900\/20{background-color:#0f172a33}.bg-slate-900\/25{background-color:#0f172a40}.bg-slate-900\/30{background-color:#0f172a4d}.bg-slate-900\/35{background-color:#0f172a59}.bg-slate-900\/40{background-color:#0f172a66}.bg-slate-900\/60{background-color:#0f172a99}.bg-slate-900\/70{background-color:#0f172ab3}.bg-slate-900\/80{background-color:#0f172acc}.bg-slate-900\/95{background-color:#0f172af2}.bg-slate-950{--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity,1))}.bg-slate-950\/20{background-color:#02061733}.bg-slate-950\/25{background-color:#02061740}.bg-slate-950\/30{background-color:#0206174d}.bg-slate-950\/35{background-color:#02061759}.bg-slate-950\/40{background-color:#02061766}.bg-slate-950\/45{background-color:#02061773}.bg-slate-950\/50{background-color:#02061780}.bg-slate-950\/60{background-color:#02061799}.bg-slate-950\/70{background-color:#020617b3}.bg-slate-950\/80{background-color:#020617cc}.bg-slate-950\/95{background-color:#020617f2}.bg-transparent{background-color:#0000}.bg-violet-400\/10{background-color:#a78bfa1a}.bg-violet-900\/5{background-color:#4c1d950d}.bg-white\/10{background-color:#ffffff1a}.bg-white\/\[0\.02\]{background-color:#ffffff05}.bg-white\/\[0\.03\]{background-color:#ffffff08}.bg-yellow-500\/10{background-color:#eab3081a}.bg-\[linear-gradient\(135deg\,rgba\(255\,255\,255\,0\.04\)\,transparent_36\%\,transparent_64\%\,rgba\(245\,158\,11\,0\.08\)\)\]{background-image:linear-gradient(135deg,#ffffff0a,#0000 36% 64%,#f59e0b14)}.bg-\[linear-gradient\(90deg\,rgba\(245\,158\,11\,0\.18\)\,rgba\(255\,233\,171\,0\.94\)\,rgba\(245\,158\,11\,0\.18\)\)\]{background-image:linear-gradient(90deg,#f59e0b2e,#ffe9abf0,#f59e0b2e)}.bg-\[radial-gradient\(circle_at_center\,rgba\(148\,163\,184\,0\.16\)\,transparent_72\%\)\]{background-image:radial-gradient(circle,#94a3b829,#0000 72%)}.bg-\[radial-gradient\(circle_at_center\,rgba\(245\,158\,11\,0\.24\)\,transparent_68\%\)\]{background-image:radial-gradient(circle,#f59e0b3d,#0000 68%)}.bg-\[radial-gradient\(circle_at_top\,_rgba\(34\,211\,238\,0\.18\)\,_transparent_45\%\)\,linear-gradient\(180deg\,rgba\(15\,23\,42\,0\.9\)\,rgba\(2\,6\,23\,0\.96\)\)\]{background-image:radial-gradient(circle at top,#22d3ee2e,#0000 45%),linear-gradient(#0f172ae6,#020617f5)}.bg-gradient-to-r{background-image:linear-gradient(to right, var(--tw-gradient-stops))}.from-sky-500\/45{--tw-gradient-from:#0ea5e973 var(--tw-gradient-from-position);--tw-gradient-to:#0ea5e900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-slate-500\/45{--tw-gradient-to:#64748b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #64748b73 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-rose-400\/45{--tw-gradient-to:#fb718573 var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pl-1{padding-left:.25rem}.pl-5{padding-left:1.25rem}.pl-7{padding-left:1.75rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[0\.68rem\]{font-size:.68rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-\[0\.14em\]{letter-spacing:.14em}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.22em\]{letter-spacing:.22em}.tracking-\[0\.24em\]{letter-spacing:.24em}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.text-amber-100\/80{color:#fef3c7cc}.text-amber-100\/90{color:#fef3c7e6}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.text-amber-200\/75{color:#fde68abf}.text-amber-200\/80{color:#fde68acc}.text-amber-200\/90{color:#fde68ae6}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.text-amber-300\/90{color:#fcd34de6}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.text-amber-400\/70{color:#fbbf24b3}.text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity,1))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.text-cyan-100{--tw-text-opacity:1;color:rgb(207 250 254/var(--tw-text-opacity,1))}.text-cyan-200{--tw-text-opacity:1;color:rgb(165 243 252/var(--tw-text-opacity,1))}.text-cyan-200\/80{color:#a5f3fccc}.text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity,1))}.text-emerald-100{--tw-text-opacity:1;color:rgb(209 250 229/var(--tw-text-opacity,1))}.text-emerald-100\/70{color:#d1fae5b3}.text-emerald-100\/90{color:#d1fae5e6}.text-emerald-200{--tw-text-opacity:1;color:rgb(167 243 208/var(--tw-text-opacity,1))}.text-emerald-200\/90{color:#a7f3d0e6}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.text-emerald-300\/80{color:#6ee7b7cc}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.text-emerald-400\/70{color:#34d399b3}.text-emerald-50{--tw-text-opacity:1;color:rgb(236 253 245/var(--tw-text-opacity,1))}.text-emerald-500\/80{color:#10b981cc}.text-indigo-100{--tw-text-opacity:1;color:rgb(224 231 255/var(--tw-text-opacity,1))}.text-indigo-200{--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity,1))}.text-indigo-200\/80{color:#c7d2fecc}.text-lime-100{--tw-text-opacity:1;color:rgb(236 252 203/var(--tw-text-opacity,1))}.text-lime-200{--tw-text-opacity:1;color:rgb(217 249 157/var(--tw-text-opacity,1))}.text-lime-300{--tw-text-opacity:1;color:rgb(190 242 100/var(--tw-text-opacity,1))}.text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-400\/70{color:#f87171b3}.text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity,1))}.text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity,1))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity,1))}.text-sky-100{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity,1))}.text-sky-100\/80{color:#e0f2fecc}.text-sky-200{--tw-text-opacity:1;color:rgb(186 230 253/var(--tw-text-opacity,1))}.text-sky-200\/80{color:#bae6fdcc}.text-sky-400{--tw-text-opacity:1;color:rgb(56 189 248/var(--tw-text-opacity,1))}.text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity,1))}.text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.text-slate-200\/80{color:#e2e8f0cc}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-400\/70{color:#94a3b8b3}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity,1))}.text-transparent{color:#0000}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity,1))}.text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-white\/60{color:#fff9}.text-white\/70{color:#ffffffb3}.text-white\/75{color:#ffffffbf}.text-white\/80{color:#fffc}.text-yellow-100{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity,1))}.text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.underline-offset-2{text-underline-offset:2px}.accent-amber-400{accent-color:#fbbf24}.accent-sky-400{accent-color:#38bdf8}.accent-slate-400{accent-color:#94a3b8}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(110\,231\,183\,0\.18\)\]{--tw-shadow:0 0 0 3px #6ee7b72e;--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(125\,211\,252\,0\.2\)\]{--tw-shadow:0 0 0 3px #7dd3fc33;--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(251\,191\,36\,0\.12\)\]{--tw-shadow:0 0 0 3px #fbbf241f;--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(252\,211\,77\,0\.18\)\]{--tw-shadow:0 0 0 3px #fcd34d2e;--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(253\,164\,175\,0\.18\)\]{--tw-shadow:0 0 0 3px #fda4af2e;--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_24px_rgba\(245\,158\,11\,0\.08\)\]{--tw-shadow:0 0 24px #f59e0b14;--tw-shadow-colored:0 0 24px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_12px_36px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 12px 36px #0000001f;--tw-shadow-colored:0 12px 36px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_28px_64px_rgba\(0\,0\,0\,0\.55\)\]{--tw-shadow:0 28px 64px #0000008c;--tw-shadow-colored:0 28px 64px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(148\,163\,184\,0\.08\)\,0_0_18px_rgba\(56\,189\,248\,0\.08\)\]{--tw-shadow:inset 0 0 0 1px #94a3b814,0 0 18px #38bdf814;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color), 0 0 18px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-amber-400\/40{--tw-ring-color:#fbbf2466}.ring-emerald-400\/40{--tw-ring-color:#34d39966}.ring-sky-400\/40{--tw-ring-color:#38bdf866}.ring-sky-400\/50{--tw-ring-color:#38bdf880}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.\[text-align-last\:center\]{text-align-last:center}.nav-item.locked,.nav-item:disabled,.tcp-context-link.locked,.tcp-context-link:disabled,.tcp-rail-icon.locked,.tcp-rail-icon:disabled{opacity:.42;cursor:not-allowed}.tcp-onboarding-lock{border:1px solid color-mix(in srgb, var(--color-warning) 36%, transparent);background:color-mix(in srgb, var(--color-warning) 10%, var(--color-surface-elevated) 90%)}.toasts{z-index:60;pointer-events:none;justify-items:center;gap:10px;display:grid;position:fixed;top:16px;left:50%;transform:translate(-50%)}.tcp-sidebar{border-right:1px solid color-mix(in srgb, var(--color-border) 78%, transparent);background:color-mix(in srgb, var(--color-surface) 98%, #000 2%)}.tcp-brand-tile{border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 96%, #000 4%)}.tcp-brand-avatar{border:1px solid color-mix(in srgb, var(--color-border) 85%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 84%, #000 16%);color:var(--color-text);border-radius:0;place-items:center;display:grid;overflow:hidden}.tcp-brand-avatar img{-o-object-fit:contain;object-fit:contain;width:100%;height:100%;padding:.2rem;display:block}.tcp-shell-glass{background:linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 95%, transparent), color-mix(in srgb, var(--color-surface-elevated) 90%, #000 10%))}.tcp-soft-block{background:color-mix(in srgb, var(--color-surface-elevated) 80%, #000 20%)!important;border-color:color-mix(in srgb, var(--color-border-subtle) 90%, transparent)!important}.tcp-display{font-family:var(--font-display);letter-spacing:.01em}.tcp-sidebar-footer{border-top-color:color-mix(in srgb, var(--color-border-subtle) 80%, transparent)!important}.tcp-view-surface{align-content:start}.agents-tab-panel{border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 84%, #000 16%);border-radius:.9rem;margin-top:.9rem;padding:.9rem}.tcp-loading-shell{gap:.75rem;display:grid}.tcp-skeleton{border:1px solid color-mix(in srgb, var(--color-border) 85%, transparent);background:linear-gradient(90deg, color-mix(in srgb, var(--color-surface-elevated) 86%, #000 14%) 0%, color-mix(in srgb, var(--color-surface-elevated) 72%, var(--color-primary) 12%) 50%, color-mix(in srgb, var(--color-surface-elevated) 86%, #000 14%) 100%);background-size:180% 100%;border-radius:.7rem;animation:1.15s ease-in-out infinite tcpSkeletonPulse}@keyframes tcpSkeletonPulse{0%{background-position:100% 0}to{background-position:-100% 0}}@keyframes tcpFloatGlow{0%{transform:translate(0,0)scale(1)}to{transform:translate(1.5rem,1rem)scale(1.08)}}@keyframes tcpPulseDot{0%{opacity:.95;box-shadow:0 0}70%{opacity:.82;box-shadow:0 0 0 10px #0000}to{opacity:.95;box-shadow:0 0 #0000}}@media (prefers-reduced-motion:reduce){.tcp-shell-glow,.tcp-status-pulse-dot,.tcp-skeleton{animation:none!important}}.tcp-markdown{color:var(--color-text-muted);overflow-wrap:anywhere;word-break:break-word;font-size:13px;line-height:1.68}.tcp-markdown-ai{--md-accent:color-mix(in srgb, var(--color-primary) 78%, var(--color-text) 22%);--md-accent-soft:color-mix(in srgb, var(--color-primary) 18%, transparent);--md-code-bg:color-mix(in srgb, var(--color-surface) 70%, #000 30%)}.tcp-markdown h1,.tcp-markdown h2,.tcp-markdown h3,.tcp-markdown h4,.tcp-markdown h5,.tcp-markdown h6{letter-spacing:.01em;color:var(--color-text);margin:.45rem 0;font-weight:650;line-height:1.3;position:relative}.tcp-markdown h1{font-size:1.08rem}.tcp-confirm-overlay{z-index:120;background:#0307126b;place-items:center;padding:1rem;display:grid;position:fixed;inset:0;overflow-y:auto}@media (width<=640px){.tcp-confirm-overlay{place-items:start stretch;padding:.25rem}}.tcp-confirm-backdrop{z-index:0;background:#02061052;position:absolute;inset:0}.tcp-confirm-dialog{z-index:1;border:1px solid color-mix(in srgb, var(--color-border) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 96%, #000 4%);width:min(28rem,100%);box-shadow:var(--shadow-offset-lg);border-radius:0;padding:1rem;position:relative}.tcp-verification-modal{border-color:color-mix(in srgb, var(--color-primary) 22%, var(--color-border) 78%);background:color-mix(in srgb, var(--color-surface-elevated) 96%, #000 4%);border-radius:0;flex-direction:column;width:min(72rem,96vw);max-width:min(72rem,96vw);max-height:calc(100vh - 2rem);display:flex}.tcp-workflow-editor-modal{border-radius:0;flex-direction:column;width:min(75vw,88rem);max-width:min(75vw,88rem);max-height:calc(100vh - 2rem);padding:0;display:flex;overflow:hidden}@media (width<=1024px){.tcp-workflow-editor-modal{width:96vw;max-width:96vw;max-height:calc(100vh - 1rem)}}.tcp-run-debugger-modal{border-radius:0;flex-direction:column;width:min(110rem,96vw);max-width:min(110rem,96vw);height:min(96vh,72rem);max-height:96vh;display:flex}@media (width<=640px){.tcp-run-debugger-modal{border-radius:0;width:min(100%,100vw - .5rem);max-width:min(100%,100vw - .5rem);height:calc(100dvh - .5rem);min-height:calc(100dvh - .5rem);max-height:calc(100dvh - .5rem);padding:.75rem}}.tcp-verification-content{min-height:0;padding-right:.25rem;overflow-y:auto}.tcp-verification-feedback{-webkit-overflow-scrolling:touch;max-height:16rem;overflow:auto}.tcp-verification-code{-webkit-overflow-scrolling:touch;background:color-mix(in srgb, var(--color-surface) 84%, #000 16%);max-height:56vh;color:var(--color-text);border-color:color-mix(in srgb, var(--color-border) 88%, transparent);overflow:auto}.tcp-confirm-title{color:var(--color-text);margin:0;font-size:1rem;font-weight:650}.tcp-confirm-message{color:var(--color-text-muted);margin:.65rem 0 0;font-size:.9rem;line-height:1.45}.tcp-confirm-actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.tcp-doc-overlay{z-index:125;background:#030712b8;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.tcp-doc-dialog{border:1px solid color-mix(in srgb, var(--color-border) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 96%, #000 4%);width:min(72rem,96vw);max-height:min(88vh,980px);box-shadow:var(--shadow-offset-lg);border-radius:0;grid-template-rows:auto 1fr;display:grid;overflow:hidden}.tcp-doc-header{border-bottom:1px solid color-mix(in srgb, var(--color-border) 82%, transparent);justify-content:space-between;align-items:center;gap:.75rem;padding:.8rem .9rem;display:flex}.tcp-doc-title{color:var(--color-text);margin:0;font-size:.95rem;font-weight:650}.tcp-doc-actions{align-items:center;gap:.5rem;display:flex}.tcp-doc-pre{background:color-mix(in srgb, var(--color-surface) 80%, #000 20%);color:var(--color-text-muted);font-size:12px;line-height:1.55;font-family:var(--font-mono);white-space:pre;margin:0;padding:.95rem;overflow:auto}.tcp-markdown h2{font-size:1rem}.tcp-markdown h3{font-size:.95rem}.tcp-markdown h1:after,.tcp-markdown h2:after,.tcp-markdown h3:after{content:"";background:linear-gradient(90deg, var(--md-accent,#94a3b8e0), transparent 90%);width:min(120px,38%);height:1px;margin-top:.28rem;display:block}.tcp-markdown p,.tcp-markdown ul,.tcp-markdown ol,.tcp-markdown blockquote,.tcp-markdown pre{margin:.35rem 0}.tcp-markdown ul,.tcp-markdown ol{padding-left:1.1rem}.tcp-markdown ul{padding-left:.95rem;list-style:none}.tcp-markdown ul>li{padding-left:.6rem;position:relative}.tcp-markdown ul>li:before{content:"";background:var(--md-accent,#94a3b8eb);width:.28rem;height:.28rem;box-shadow:0 0 10px var(--md-accent-soft,#94a3b82e);border-radius:9999px;position:absolute;top:.58em;left:-.06rem}.tcp-markdown li{margin:.12rem 0}.tcp-markdown a{color:color-mix(in srgb, var(--color-primary) 88%, var(--color-text) 12%);border-bottom:1px dashed color-mix(in srgb, var(--color-primary) 45%, transparent);text-decoration:none;transition:color .12s,border-color .12s}.tcp-markdown a:hover{color:color-mix(in srgb, var(--color-primary-hover) 92%, var(--color-text) 8%);border-bottom-color:color-mix(in srgb, var(--color-primary-hover) 62%, transparent)}.tcp-markdown code{border:1px solid color-mix(in srgb, var(--color-border) 92%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%);color:var(--color-text);border-radius:.375rem;padding:.05rem .3rem;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}.tcp-markdown pre{border:1px solid color-mix(in srgb, var(--color-border) 92%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--color-surface-elevated) 82%, #000 18%), color-mix(in srgb, var(--color-surface) 76%, #000 24%)), repeating-linear-gradient(0deg, transparent 0, transparent 22px, color-mix(in srgb, var(--color-border-subtle) 52%, transparent) 22px, color-mix(in srgb, var(--color-border-subtle) 52%, transparent) 23px);border-radius:.6rem;max-width:100%;padding:.62rem .72rem;overflow-x:auto;box-shadow:inset 0 1px #ffffff0d}.tcp-markdown pre code{background:0 0;border:none;border-radius:0;padding:0;font-size:.75rem}.tcp-markdown blockquote{border-left:2px solid var(--md-accent,#94a3b8cc);color:var(--color-text-muted);background:linear-gradient(90deg, var(--md-accent-soft,#94a3b829), transparent 65%);border-radius:.2rem;padding:.2rem 0 .2rem .7rem}.tcp-markdown strong{color:var(--color-text);font-weight:650}.tcp-markdown hr{background:linear-gradient(90deg,#0000,#94a3b899,#0000);border:0;height:1px;margin:.6rem 0}html[data-theme=porcelain] .tcp-markdown-ai{--md-accent:color-mix(in srgb, var(--color-primary) 70%, #1e293b 30%);--md-accent-soft:color-mix(in srgb, var(--color-primary) 22%, transparent);--md-code-bg:color-mix(in srgb, var(--color-surface-elevated) 90%, #e2e8f0 10%)}.tcp-thinking{color:#94a3b8;letter-spacing:.01em;align-items:center;gap:.38rem;font-size:.78rem;display:inline-flex}.tcp-thinking i{opacity:.3;background:#94a3b8e6;border-radius:9999px;width:.36rem;height:.36rem;animation:1s ease-in-out infinite thinkingDot}.tcp-thinking i:nth-of-type(2){animation-delay:.16s}.tcp-thinking i:nth-of-type(3){animation-delay:.32s}@media (width>=1280px){.chat-workspace{grid-template-columns:minmax(0,1fr) 230px}}@media (width<=1279px){.chat-right-rail{display:none!important}}@keyframes thinkingDot{0%,to{opacity:.28;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}.hero-svg{width:100%;height:130px}.chip-hero{overflow:visible}.chip-board{fill:#02061759;stroke:#64748b61;stroke-width:1px}.chip-grid line{stroke:#94a3b821;stroke-width:1px;animation:4s ease-in-out infinite chipGridPulse}.chip-trace{fill:none;stroke:url(#hero-trace-grad);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:9 7}.chip-trace.flow-east{animation:2.4s linear infinite chipFlowEast}.chip-trace.flow-west{animation:2.4s linear infinite chipFlowWest}.chip-trace.flow-south{animation:2.2s linear infinite chipFlowSouth}.chip-trace.flow-north{animation:2.2s linear infinite chipFlowNorth}.chip-ports circle{fill:#64748b52;stroke:#cbd5e1d1;stroke-width:1.1px;animation:2.8s ease-in-out infinite chipPortPulse}.chip-core-shell{fill:#0f172af2;stroke:#94a3b8d9;stroke-width:1.3px}.chip-core{fill:url(#hero-chip-core);stroke:#cbd5e166;stroke-width:.8px;filter:url(#hero-chip-glow)}.chip-core-wire{stroke:#e2e8f0b8;stroke-width:1px;stroke-dasharray:3 3;animation:1.2s linear infinite chipWirePulse}.chip-core-pulse{fill:none;stroke:#cbd5e180;stroke-width:1px;transform-origin:260px 80px;animation:2.1s ease-out infinite chipCorePulse}.chip-packet circle{fill:#f1f5f9f2;filter:drop-shadow(0 0 6px #e2e8f0b8)}.packet-east-a{animation:2s linear infinite chipPacketEastA}.packet-east-b{animation:2.4s linear infinite chipPacketEastB}.packet-west-a{animation:2.1s linear infinite chipPacketWestA}.packet-west-b{animation:2.5s linear infinite chipPacketWestB}.packet-south{animation:2.2s linear infinite chipPacketSouth}.packet-north{animation:2.2s linear infinite chipPacketNorth}.dashboard-bars{gap:.6rem;display:grid}.dashboard-bar-row{gap:.28rem;display:grid}.dashboard-bar-meta{color:var(--color-text);justify-content:space-between;align-items:center;font-size:.76rem;display:flex}.dashboard-bar-count{color:var(--color-text-muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace}.dashboard-bar-track{border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:color-mix(in srgb, var(--color-surface) 90%, #000 10%);border-radius:9999px;height:.48rem;overflow:hidden}.dashboard-bar-fill{border-radius:9999px;height:100%;display:block}.dashboard-bar-fill.completed{background:linear-gradient(90deg,#10b98185,#6ee7b7f2)}.dashboard-bar-fill.failed{background:linear-gradient(90deg,#f43f5e85,#fb7185f2)}.dashboard-bar-fill.running{background:linear-gradient(90deg, color-mix(in srgb, var(--color-primary) 50%, transparent), color-mix(in srgb, var(--color-primary-hover) 88%, transparent))}.dashboard-bar-fill.queued{background:linear-gradient(90deg,#f59e0b85,#fde047eb)}.dashboard-bar-fill.scheduled{background:linear-gradient(90deg,#f59e0b8c,#fbbf24f2)}.dashboard-bar-fill.manual{background:linear-gradient(90deg,#64748b99,#94a3b8f2)}.dashboard-bar-fill.paused{background:linear-gradient(90deg,#d977068c,#fbbf24f2)}.dashboard-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.dashboard-kpis>div{border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 96%, #000 4%);border-radius:.5rem;gap:.1rem;padding:.45rem .55rem;display:grid}.dashboard-kpis strong{font-size:1rem;line-height:1.2}.dashboard-kpi-label{color:var(--color-text-subtle);text-transform:uppercase;letter-spacing:.06em;font-size:.7rem}.dashboard-histogram{border:1px solid color-mix(in srgb, var(--color-border-subtle) 88%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 95%, #000 5%);border-radius:.8rem;grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;gap:.35rem;height:172px;padding:.5rem .45rem .45rem;display:grid}.dashboard-histogram-bin{grid-template-rows:auto 1fr auto;align-items:end;gap:.2rem;height:100%;display:grid}.dashboard-histogram-count{text-align:center;color:var(--color-text-muted);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.66rem}.dashboard-histogram-bar{border:1px solid color-mix(in srgb, var(--color-primary) 42%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 82%, transparent), color-mix(in srgb, var(--color-primary-muted) 96%, transparent));border-radius:.38rem .38rem .2rem .2rem;width:100%;min-height:8%;display:block}.dashboard-histogram-label{text-align:center;color:var(--color-text-subtle);font-size:.62rem}.agents-tabs{flex-wrap:wrap;gap:.5rem;display:flex}.agents-tab-btn{border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 84%, #000 16%);color:var(--color-text-muted);border-radius:9999px;padding:.45rem .8rem;font-size:.78rem;line-height:1;transition:border-color .12s,background-color .12s,color .12s}.agents-tab-btn:hover{border-color:color-mix(in srgb, var(--color-primary) 38%, transparent);color:var(--color-text)}.agents-tab-btn.active{border-color:color-mix(in srgb, var(--color-primary) 46%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 24%, var(--color-surface-elevated) 76%), color-mix(in srgb, var(--color-surface) 88%, #000 12%));color:var(--color-text)}.agents-steps{flex-wrap:wrap;gap:.45rem;display:flex}.agents-step-chip{border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);color:var(--color-text-subtle);background:color-mix(in srgb, var(--color-surface-elevated) 80%, #000 20%);border-radius:9999px;padding:.28rem .65rem;font-size:.72rem}.agents-step-chip.active{border-color:color-mix(in srgb, var(--color-primary) 46%, transparent);color:var(--color-text);background:color-mix(in srgb, var(--color-surface-elevated) 72%, var(--color-primary) 10%)}.agents-theme .text-slate-500,.agents-theme .text-zinc-500{color:var(--color-text-subtle)!important}.agents-theme .text-slate-400,.agents-theme .text-zinc-400,.agents-theme .text-slate-300,.agents-theme .text-zinc-300{color:var(--color-text-muted)!important}.agents-theme .text-slate-200,.agents-theme .text-zinc-200{color:var(--color-text)!important}.agents-theme .border-slate-700\/60,.agents-theme .border-slate-700\/70,.agents-theme .border-zinc-800,.agents-theme .border-zinc-800\/80,.agents-theme .border-zinc-800\/90,.agents-theme .border-zinc-700{border-color:color-mix(in srgb, var(--color-border-subtle) 90%, transparent)!important}.agents-theme .border-slate-300\/80,.agents-theme .border-zinc-500\/55{border-color:color-mix(in srgb, var(--color-primary) 42%, transparent)!important}.agents-theme .bg-slate-900\/30,.agents-theme .bg-slate-900\/35,.agents-theme .bg-zinc-900\/65,.agents-theme .bg-zinc-900\/80,.agents-theme .bg-zinc-900\/90,.agents-theme .bg-zinc-950\/55,.agents-theme .bg-zinc-950\/70,.agents-theme .bg-zinc-950\/80,.agents-theme .bg-zinc-950\/90,.agents-theme .bg-zinc-950\/95{background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%)!important}.agents-theme .accent-slate-400,.accent-slate-400{accent-color:var(--color-primary)!important}.tcp-settings-tabs{border-bottom:1px solid color-mix(in srgb, var(--color-border) 86%, transparent);flex-wrap:wrap;gap:.5rem;padding:0 0 .2rem;display:flex}.tcp-settings-tab{height:2.1rem;color:var(--color-text-muted);letter-spacing:.01em;background:0 0;border:none;border-radius:0;justify-content:center;align-items:center;gap:.38rem;padding:0 .5rem;font-size:.8rem;font-weight:600;line-height:1;transition:color .14s,border-color .14s;display:inline-flex}.tcp-settings-tab:hover,.tcp-settings-tab.active{color:var(--color-text)}.tcp-settings-tab-underline{border-bottom:2px solid #0000;margin-bottom:-1px}.tcp-settings-tab-underline.active{border-bottom-color:var(--color-primary)}.tcp-settings-tab svg{width:13px;height:13px}.tcp-settings-tab.locked,.tcp-settings-tab:disabled{opacity:.44;cursor:not-allowed}.theme-swatch-grid{flex-wrap:wrap;gap:.45rem;display:flex}.theme-swatch{border:1px solid color-mix(in srgb, var(--color-border-subtle) 90%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 88%, #000 12%);color:var(--color-text-muted);border-radius:9999px;align-items:center;gap:.4rem;padding:.34rem .7rem;font-size:.75rem;line-height:1;transition:border-color .12s,color .12s,background-color .12s;display:inline-flex}.theme-swatch:hover{border-color:color-mix(in srgb, var(--color-primary) 40%, transparent);color:var(--color-text)}.theme-swatch.active{border-color:color-mix(in srgb, var(--color-primary) 52%, transparent);background:color-mix(in srgb, var(--color-surface-elevated) 72%, var(--color-primary) 9%);color:var(--color-text)}.theme-swatch-dot{border:1px solid color-mix(in srgb, var(--color-border) 70%, transparent);border-radius:9999px;width:.55rem;height:.55rem}#app .text-slate-500,#app .text-zinc-500,#view .text-slate-500,#view .text-zinc-500{color:var(--color-text-subtle)!important}#app .text-slate-400,#app .text-zinc-400,#view .text-slate-400,#view .text-zinc-400,#app .text-slate-300,#app .text-zinc-300,#view .text-slate-300,#view .text-zinc-300{color:var(--color-text-muted)!important}#app .text-slate-200,#app .text-zinc-200,#view .text-slate-200,#view .text-zinc-200{color:var(--color-text)!important}#app [class*=border-slate-],#app [class*=border-zinc-],#view [class*=border-slate-],#view [class*=border-zinc-]{border-color:color-mix(in srgb, var(--color-border-subtle) 88%, transparent)!important}#app [class*=bg-amber-],#view [class*=bg-amber-]{background:color-mix(in srgb, var(--color-warning) 16%, transparent)!important}#app [class*=border-amber-],#view [class*=border-amber-]{border-color:color-mix(in srgb, var(--color-warning) 36%, transparent)!important}#app [class*=bg-rose-],#view [class*=bg-rose-]{background:color-mix(in srgb, var(--color-error) 14%, transparent)!important}#app [class*=border-rose-],#view [class*=border-rose-]{border-color:color-mix(in srgb, var(--color-error) 34%, transparent)!important}#app [class*=bg-slate-],#app [class*=bg-zinc-],#view [class*=bg-slate-],#view [class*=bg-zinc-]{background:color-mix(in srgb, var(--color-surface-elevated) 86%, transparent)!important}#app [class*=text-sky-],#app [class*=text-blue-],#view [class*=text-sky-],#view [class*=text-blue-]{color:color-mix(in srgb, var(--color-primary) 82%, var(--color-text) 18%)!important}#app [class*=border-sky-],#app [class*=border-blue-],#view [class*=border-sky-],#view [class*=border-blue-]{border-color:color-mix(in srgb, var(--color-primary) 42%, transparent)!important}.wire-line-active{stroke-dasharray:10 8;animation:1.1s linear infinite wireFlow}.node-active{animation:1.5s ease-in-out infinite nodePulse}@keyframes wireFlow{0%{stroke-dashoffset:0}to{stroke-dashoffset:-18px}}@keyframes nodePulse{0%{filter:drop-shadow(0 0 #94a3b800)}50%{filter:drop-shadow(0 0 8px #94a3b88c)}to{filter:drop-shadow(0 0 #94a3b800)}}@keyframes chipGridPulse{0%,to{opacity:.56}50%{opacity:1}}@keyframes chipFlowEast{0%{stroke-dashoffset:0}to{stroke-dashoffset:-32px}}@keyframes chipFlowWest{0%{stroke-dashoffset:0}to{stroke-dashoffset:32px}}@keyframes chipFlowSouth{0%{stroke-dashoffset:0}to{stroke-dashoffset:-24px}}@keyframes chipFlowNorth{0%{stroke-dashoffset:0}to{stroke-dashoffset:24px}}@keyframes chipPortPulse{0%,to{filter:drop-shadow(0 0 #94a3b800);opacity:.85}50%{filter:drop-shadow(0 0 5px #cbd5e180);opacity:1}}@keyframes chipWirePulse{0%{stroke-dashoffset:0}to{stroke-dashoffset:-12px}}@keyframes chipCorePulse{0%{opacity:.64;transform:scale(.7)}85%{opacity:0;transform:scale(1.18)}to{opacity:0;transform:scale(1.21)}}@keyframes chipPacketEastA{0%{opacity:0;transform:translate(48px,48px)}10%{opacity:1}58%{opacity:1;transform:translate(176px,48px)}76%{transform:translate(176px,64px)}96%{opacity:0;transform:translate(220px,64px)}}@keyframes chipPacketEastB{0%,to{opacity:0;transform:translate(48px,112px)}14%{opacity:1}58%{opacity:1;transform:translate(176px,112px)}76%{transform:translate(176px,96px)}96%{opacity:0;transform:translate(220px,96px)}}@keyframes chipPacketWestA{0%,to{opacity:0;transform:translate(472px,48px)}12%{opacity:1}56%{opacity:1;transform:translate(344px,48px)}74%{transform:translate(344px,64px)}96%{opacity:0;transform:translate(300px,64px)}}@keyframes chipPacketWestB{0%,to{opacity:0;transform:translate(472px,112px)}11%{opacity:1}57%{opacity:1;transform:translate(344px,112px)}74%{transform:translate(344px,96px)}96%{opacity:0;transform:translate(300px,96px)}}@keyframes chipPacketSouth{0%,to{opacity:0;transform:translate(176px,34px)}16%{opacity:1}62%{opacity:1;transform:translate(176px,56px)}78%{transform:translate(220px,56px)}96%{opacity:0;transform:translate(220px,64px)}}@keyframes chipPacketNorth{0%,to{opacity:0;transform:translate(344px,126px)}16%{opacity:1}62%{opacity:1;transform:translate(344px,104px)}78%{transform:translate(300px,104px)}96%{opacity:0;transform:translate(300px,96px)}}.fc{--fc-border-color:#4755698c;--fc-neutral-bg-color:#0f172af2;--fc-page-bg-color:transparent;--fc-today-bg-color:#f59e0b14;--fc-now-indicator-color:#f59e0be6;color:#e2e8f0}.fc,.fc *{box-sizing:border-box}.fc .fc-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.fc .fc-toolbar-title{color:#f1f5f9;font-size:1.15rem;font-weight:700}.fc .fc-button{color:#e2e8f0;box-shadow:none;text-transform:none;background:#0f172af2;border:1px solid #475569a6;border-radius:.75rem}.fc .fc-button:hover{background:#1e293bfa}.fc .fc-button:focus{box-shadow:0 0 0 2px #f59e0b3d}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{color:#fcd34d;background:#b4791f59;border-color:#f59e0ba6}.fc .fc-scrollgrid,.fc .fc-scrollgrid-section>td{border-color:#4755698c}.fc .fc-scrollgrid{background:#02061759;border-radius:1rem;overflow:hidden}.fc .fc-col-header-cell,.fc .fc-timegrid-axis,.fc .fc-timegrid-slot{border-color:#47556973}.fc .fc-col-header-cell-cushion,.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{color:#94a3b8}.fc .fc-day-today{background:#f59e0b0f}.fc .fc-timegrid-now-indicator-line{border-color:#f59e0bf2}.fc .fc-timegrid-slot{height:1.75rem}.fc .fc-timegrid-col-frame,.fc .fc-timegrid-col-bg,.fc .fc-scrollgrid-sync-table{background:#02061733}.fc .fc-event{background:0 0;border:none}.fc .fc-event:hover{cursor:pointer}.fc .fc-view-harness{min-height:44rem}.fc .fc-timegrid-more-link,.fc .tcp-calendar-more-link{color:#bfdbfe;letter-spacing:.01em;background:#0f172adb;border:1px dashed #94a3b859;border-radius:999px;justify-content:center;align-items:center;min-height:1.5rem;margin:.125rem 0;font-size:.7rem;font-weight:600;display:inline-flex}.fc .fc-timegrid-more-link:hover,.fc .tcp-calendar-more-link:hover{color:#e0f2fe;background:#1e293bf5;border-color:#60a5fa73}.fc .tcp-calendar-slot-focus{background:linear-gradient(90deg,#f59e0b2e 0%,#f59e0b14 22%,#0f172a00 100%);box-shadow:inset 3px 0 #f59e0be6}@media (prefers-reduced-motion:reduce){.chip-grid line,.chip-trace,.chip-ports circle,.chip-core-wire,.chip-core-pulse,.packet-east-a,.packet-east-b,.packet-west-a,.packet-west-b,.packet-south,.packet-north,.tcp-thinking i,.wire-line-active,.node-active{animation:none!important}}.first\:mt-1:first-child{margin-top:.25rem}.first\:border-t-0:first-child{border-top-width:0}.first\:pt-0:first-child{padding-top:0}.focus-within\:border-amber-400\/60:focus-within{border-color:#fbbf2499}.focus-within\:border-red-400\/60:focus-within{border-color:#f8717199}.focus-within\:border-sky-400\/60:focus-within{border-color:#38bdf899}.focus-within\:border-violet-400\/60:focus-within{border-color:#a78bfa99}.hover\:border-amber-400\/60:hover{border-color:#fbbf2499}.hover\:border-emerald-400\/50:hover{border-color:#34d39980}.hover\:border-lime-400\/70:hover{border-color:#a3e635b3}.hover\:border-sky-500\/40:hover{border-color:#0ea5e966}.hover\:border-slate-300\/60:hover{border-color:#cbd5e199}.hover\:border-slate-500:hover{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity,1))}.hover\:border-slate-500\/70:hover{border-color:#64748bb3}.hover\:border-slate-600:hover{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity,1))}.hover\:border-slate-700:hover{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.hover\:border-white\/20:hover{border-color:#fff3}.hover\:bg-amber-400\/10:hover{background-color:#fbbf241a}.hover\:bg-black\/20:hover{background-color:#0003}.hover\:bg-black\/30:hover{background-color:#0000004d}.hover\:bg-emerald-500:hover{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.hover\:bg-emerald-950\/30:hover{background-color:#022c224d}.hover\:bg-red-500\/30:hover{background-color:#ef44444d}.hover\:bg-rose-500:hover{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.hover\:bg-rose-950\/20:hover{background-color:#4c051933}.hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.hover\:bg-slate-700\/30:hover{background-color:#3341554d}.hover\:bg-slate-800:hover{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.hover\:bg-slate-800\/40:hover{background-color:#1e293b66}.hover\:text-amber-200:hover{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.hover\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.hover\:text-sky-100:hover{--tw-text-opacity:1;color:rgb(224 242 254/var(--tw-text-opacity,1))}.hover\:text-slate-100:hover{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity,1))}.hover\:text-slate-200:hover{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.hover\:text-slate-300:hover{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:border-amber-400:focus{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:ring-sky-400\/70:focus{--tw-ring-color:#38bdf8b3}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.data-\[checked\]\:border-amber-400[data-checked]{--tw-border-opacity:1;border-color:rgb(251 191 36/var(--tw-border-opacity,1))}.data-\[checked\]\:bg-amber-400\/30[data-checked]{background-color:#fbbf244d}@media (width>=640px){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:inline{display:inline}.sm\:max-h-40{max-height:10rem}.sm\:max-h-\[12rem\]{max-height:12rem}.sm\:max-h-\[14rem\]{max-height:14rem}.sm\:max-h-\[18rem\]{max-height:18rem}.sm\:max-h-\[28rem\]{max-height:28rem}.sm\:min-h-\[14rem\]{min-height:14rem}.sm\:w-auto{width:auto}.sm\:min-w-\[14rem\]{min-width:14rem}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1fr\)_180px\]{grid-template-columns:minmax(0,1fr) 180px}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:.5rem}}@media (width>=768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:min-h-\[52vh\]{min-height:52vh}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-\[1fr_1fr_1fr_auto\]{grid-template-columns:1fr 1fr 1fr auto}.md\:grid-cols-\[1fr_1fr_auto\]{grid-template-columns:1fr 1fr auto}.md\:grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.md\:grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.md\:grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.md\:grid-cols-\[minmax\(0\,1fr\)_320px\]{grid-template-columns:minmax(0,1fr) 320px}.md\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.md\:items-end{align-items:flex-end}.md\:p-5{padding:1.25rem}.md\:opacity-0{opacity:0}}@media (width>=1024px){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-auto{width:auto}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[1\.05fr_0\.95fr\]{grid-template-columns:1.05fr .95fr}.lg\:grid-cols-\[1\.15fr_0\.85fr\]{grid-template-columns:1.15fr .85fr}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.lg\:grid-cols-\[minmax\(320px\,380px\)\,minmax\(0\,1fr\)\]{grid-template-columns:minmax(320px,380px) minmax(0,1fr)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:justify-end{justify-content:flex-end}.lg\:justify-between{justify-content:space-between}}@media (width>=1280px){.xl\:sticky{position:sticky}.xl\:top-4{top:1rem}.xl\:order-2{order:2}.xl\:order-3{order:3}.xl\:col-span-2{grid-column:span 2/span 2}.xl\:block{display:block}.xl\:flex{display:flex}.xl\:grid{display:grid}.xl\:hidden{display:none}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:grid-cols-\[0\.85fr_1\.15fr\]{grid-template-columns:.85fr 1.15fr}.xl\:grid-cols-\[1\.05fr_1fr\]{grid-template-columns:1.05fr 1fr}.xl\:grid-cols-\[1\.62fr_1fr\]{grid-template-columns:1.62fr 1fr}.xl\:grid-cols-\[280px_minmax\(0\,1fr\)_360px\]{grid-template-columns:280px minmax(0,1fr) 360px}.xl\:grid-cols-\[320px_minmax\(0\,1fr\)\]{grid-template-columns:320px minmax(0,1fr)}.xl\:grid-cols-\[320px_minmax\(0\,1fr\)_360px\]{grid-template-columns:320px minmax(0,1fr) 360px}.xl\:grid-cols-\[440px_1fr\]{grid-template-columns:440px 1fr}.xl\:grid-cols-\[minmax\(0\,1\.3fr\)_minmax\(18rem\,0\.95fr\)\]{grid-template-columns:minmax(0,1.3fr) minmax(18rem,.95fr)}.xl\:grid-cols-\[minmax\(0\,1\.3fr\)_minmax\(320px\,0\.9fr\)\]{grid-template-columns:minmax(0,1.3fr) minmax(320px,.9fr)}.xl\:grid-cols-\[minmax\(400px\,0\.8fr\)_minmax\(0\,1\.2fr\)\]{grid-template-columns:minmax(400px,.8fr) minmax(0,1.2fr)}.xl\:items-start{align-items:flex-start}.xl\:self-start{align-self:flex-start}}@media (width>=1536px){.\32 xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.\32 xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DashboardPage-Cv9_TUZQ.js","assets/fullcalendar-Bn75j0xM.js","assets/rolldown-runtime-Dgq8h090.js","assets/react-query-BIbNygEJ.js","assets/motion-B3ZE8SGR.js","assets/ui-CV-Z6sqF.js","assets/LazyJson-DYncL_RR.js","assets/format-CimuGHiH.js","assets/ChatPage-CGKFC9ev.js","assets/ChatInterfacePanel-3nvwn0cJ.js","assets/chatPageHelpers-D-NhHk4M.js","assets/messages-AWZpX-Rw.js","assets/explorerHandoff-KpFRPNQc.js","assets/sse-B1wvyjPI.js","assets/IntentPlannerPage-BwlF9wfW.js","assets/ProviderModelSelector-B_IE0-e7.js","assets/PlannerDiagnosticsPanel-VyacxaCM.js","assets/plannerShared-1kHFyAp-.js","assets/WorkflowsPage-BWGWH8uD.js","assets/MarketplacePage-Wo7biaBa.js","assets/WorkflowStudioPage-CyWDhEEE.js","assets/vendor-DSaYtO9f.js","assets/McpToolAllowlistEditor-B3qCkiFT.js","assets/workflowStability-Dsk2DR6F.js","assets/AutomationsPage-6mRHsh9V.js","assets/TimezoneField-DKINpKxU.js","assets/TaskBoard-DSRrmiyQ.js","assets/useEngineStream-ChEkuUVV.js","assets/api-CpR5ozpc.js","assets/ExperimentsPage-DuYHzo7d.js","assets/CodingWorkflowsPage-DosUtoeO.js","assets/ControlPanelDialogs-BBIPHXnw.js","assets/ChannelsPage-oJ5a717t.js","assets/PacksPage-BWnL4dRB.js","assets/OrchestratorPage-HDyjjwF-.js","assets/FilesPage-NAInb3WU.js","assets/MemoryImportDialog-BWT93PW1.js","assets/MemoryPage-gSBH1OKG.js","assets/RunsPage-B6ttNeUJ.js","assets/BugMonitorPage-B9mcxV8k.js","assets/TeamsPage-CwMnVES9.js","assets/SettingsPage-DhAKDQHw.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{C as e,E as t,O as n,S as r,a as i,g as a,h as o,l as s,m as c,v as l,w as u,x as d}from"./fullcalendar-Bn75j0xM.js";import{t as f}from"./preact-vendor-DaCG_P2o.js";import{a as p,i as m,n as h,t as ee}from"./react-query-BIbNygEJ.js";import{$ as te,$t as g,A as _,At as v,B as y,Bt as b,C as x,Ct as S,D as C,Dt as w,E as T,Et as E,F as D,Ft as ne,G as re,Gt as ie,H as ae,Ht as oe,I as O,It as se,J as k,Jt as ce,K as A,Kt as le,L as j,Lt as ue,M as de,Mt as fe,N as M,Nt as N,O as pe,Ot as me,P as he,Pt as ge,Q as _e,Qt as ve,R as ye,Rt as be,S as xe,St as Se,T as Ce,Tt as we,U as Te,Ut as Ee,V as P,Vt as De,W as Oe,Wt as ke,X as Ae,Xt as je,Y as Me,Yt as Ne,Z as Pe,Zt as Fe,_ as Ie,_t as Le,a as Re,an as ze,at as Be,b as Ve,bt as He,c as Ue,cn as F,ct as We,d as Ge,dn as Ke,dt as qe,en as Je,et as Ye,f as Xe,fn as I,ft as Ze,g as Qe,gt as $e,h as et,hn as tt,ht as nt,i as rt,in as it,it as at,j as ot,jt as st,k as ct,kt as lt,l as ut,ln as L,lt as dt,m as ft,mn as pt,mt,n as ht,nn as gt,nt as _t,o as vt,on as R,ot as yt,p as bt,pn as xt,pt as St,q as Ct,qt as wt,r as Tt,rn as Et,rt as Dt,s as Ot,sn as z,st as kt,tn as At,tt as jt,u as Mt,un as B,ut as Nt,v as Pt,vt as Ft,w as It,wt as Lt,x as Rt,xt as zt,y as Bt,yt as Vt,z as Ht,zt as Ut}from"./vendor-DSaYtO9f.js";import{i as V,n as H,r as U}from"./motion-B3ZE8SGR.js";import{S as Wt,_ as Gt,a as Kt,b as qt,g as Jt,h as Yt,i as Xt,n as Zt,o as Qt,p as W,s as $t,t as en,u as tn,v as nn,x as rn,y as G}from"./ui-CV-Z6sqF.js";import{n as K,t as q}from"./api-CpR5ozpc.js";import{n as an,t as on}from"./markdown-DJurGVIJ.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var sn=class extends Error{constructor(e,t,n,r){super(`Tandem API Validation Error [${t}] at ${e}: ${n.length} issues found.`),this.endpoint=e,this.status=t,this.issues=n,this.rawSnippet=r,this.name=`TandemValidationError`}},cn=I().or(B({id:I().optional(),runID:I().optional(),runId:I().optional(),run_id:I().optional(),sessionID:I().optional(),sessionId:I().optional(),session_id:I().optional(),missionID:I().optional(),missionId:I().optional(),mission_id:I().optional(),instanceID:I().optional(),instanceId:I().optional(),instance_id:I().optional()})).transform(e=>typeof e==`string`?e:e.id||e.runID||e.runId||e.run_id||e.sessionID||e.sessionId||e.session_id||e.missionID||e.missionId||e.mission_id||e.instanceID||e.instanceId||e.instance_id);R().transform(e=>e),Ke(I(),R()).transform(e=>e);var ln=B({ready:F().optional(),phase:I().optional(),workspace_root:I().optional(),workspaceRoot:I().optional()}).passthrough().transform(e=>({...e,workspaceRoot:e.workspace_root??e.workspaceRoot})),un=B({id:I(),title:I(),created_at_ms:L().optional(),createdAtMs:L().optional(),directory:I().optional(),workspace_root:I().optional(),workspaceRoot:I().optional(),source_kind:I().optional(),sourceKind:I().optional(),source_metadata:Ke(I(),pt()).optional(),sourceMetadata:Ke(I(),pt()).optional(),archived:F().optional()}).passthrough().transform(e=>({...e,createdAtMs:e.created_at_ms??e.createdAtMs??0,workspaceRoot:e.workspace_root??e.workspaceRoot,sourceKind:e.source_kind??e.sourceKind,sourceMetadata:e.source_metadata??e.sourceMetadata})),dn=xt([z(un).transform(e=>({sessions:e,count:e.length})),B({sessions:z(un).optional().default([]),count:L().optional().default(0)}).passthrough()]),fn=B({active:B({runID:I().optional(),runId:I().optional(),run_id:I().optional(),attachEventStream:I().optional()}).passthrough().nullable().optional()}).passthrough().transform(e=>e.active?{active:{...e.active,runId:e.active.runId||e.active.runID||e.active.run_id}}:{active:null}),pn=B({ok:F().optional(),dry_run:F().optional(),dryRun:F().optional(),runID:I().optional(),runId:I().optional(),run_id:I().optional(),status:I().optional()}).passthrough().transform(e=>({...e,dryRun:e.dryRun??e.dry_run,runId:e.runId||e.runID||e.run_id})),mn=B({id:I().optional(),runID:I().optional(),runId:I().optional(),run_id:I().optional(),routine_id:I().optional(),automation_id:I().optional(),status:I().optional(),started_at_ms:L().optional(),finished_at_ms:L().optional()}).passthrough().transform(e=>({...e,runId:e.runId||e.runID||e.run_id,routineId:e.routine_id,automationId:e.automation_id,startedAtMs:e.started_at_ms,finishedAtMs:e.finished_at_ms})),hn=B({ok:F().default(!0),rev:L().optional()}).passthrough(),gn=B({key:I(),value:R(),rev:L().optional(),updated_at_ms:L().optional(),updated_by:I().optional()}).passthrough().transform(e=>({...e,updatedAtMs:e.updated_at_ms,updatedBy:e.updated_by})),_n=B({items:z(gn).optional().default([]),count:L().optional().default(0)}).passthrough(),vn=B({items:z(B({id:I().optional(),text:I().optional(),content:I().optional(),user_id:I().optional(),userID:I().optional(),source_type:I().optional(),sourceType:I().optional(),tags:z(I()).optional(),source:I().optional(),session_id:I().optional(),sessionID:I().optional(),run_id:I().optional(),runID:I().optional()}).passthrough().transform(e=>({...e,text:e.text||e.content,content:e.content||e.text,userId:e.userID||e.user_id,sourceType:e.sourceType||e.source_type,sessionId:e.session_id||e.sessionID,runId:e.run_id||e.runID}))).optional().default([]),count:L().optional().default(0)}).passthrough(),yn=B({results:z(B({id:I(),text:I().optional(),content:I().optional(),score:L().optional(),source_type:I().optional(),sourceType:I().optional(),run_id:I().optional(),runID:I().optional(),tags:z(I()).optional()}).passthrough().transform(e=>({...e,text:e.text||e.content,content:e.content||e.text,sourceType:e.sourceType||e.source_type,runId:e.runID||e.run_id}))).optional().default([]),count:L().optional().default(0)}).passthrough(),bn=B({id:I(),uri:I(),parent_uri:I().optional(),node_type:I(),created_at:I(),updated_at:I(),metadata:Ke(I(),R()).optional()}).passthrough(),xn=B({l0_preview:I().optional(),l1_preview:I().optional(),has_l2:F()}).passthrough(),Sn=B({node:bn,children:z(R()).optional().default([]),layer_summary:xn.optional()}).passthrough(),Cn=B({node:bn.optional()}).passthrough(),wn=B({tree:z(Sn).optional().default([])}).passthrough(),Tn=B({ok:F(),distillation_id:I().optional(),session_id:I().optional(),facts_extracted:L().optional()}).passthrough(),En=B({type:I(),properties:Ke(I(),R()).optional().default({}),sessionID:I().optional(),session_id:I().optional(),sessionId:I().optional(),runID:I().optional(),run_id:I().optional(),runId:I().optional(),timestamp:I().optional()}).passthrough().transform(e=>({...e,properties:e.properties,sessionId:e.sessionId||e.sessionID||e.session_id,runId:e.runId||e.runID||e.run_id}));function J(e,t,n,r){let i=e.safeParse(t);if(!i.success){let e=JSON.stringify(t).substring(0,200);throw new sn(n,r,i.error.issues,e)}return i.data}function Dn(e){let t=e.trim();if(!t||t===`: keep-alive`||t.startsWith(`:`))return null;try{let e=JSON.parse(t),n=En.safeParse(e);return n.success?n.data:null}catch{return null}}async function*Y(e,t,n){let r=n?.connectTimeoutMs??3e4,i=new AbortController,a=setTimeout(()=>i.abort(),r),o=n?.signal?On([i.signal,n.signal]):i.signal,s;try{s=await fetch(e,{headers:{Accept:`text/event-stream`,Authorization:`Bearer ${t}`,"Cache-Control":`no-cache`},signal:o})}finally{clearTimeout(a)}if(!s.ok){let e=await s.text().catch(()=>``);throw Error(`SSE connect failed (${s.status} ${s.statusText}): ${e}`)}if(!s.body)throw Error(`SSE response has no body`);let c=new TextDecoder,l=s.body.getReader(),u=``;try{for(;;){let{done:e,value:t}=await l.read();if(e)break;u+=c.decode(t,{stream:!0});let n=u.split(`
|
|
3
|
+
`);u=n.pop()??``;let r=``;for(let e of n)if(e.startsWith(`data:`))r+=e.slice(5).trimStart();else if(e===``&&r){let e=Dn(r);e&&(yield e),r=``}}}finally{l.releaseLock()}}function On(e){let t=new AbortController;for(let n of e){if(n.aborted){t.abort(n.reason);break}n.addEventListener(`abort`,()=>t.abort(n.reason),{once:!0})}return t.signal}var X=e=>typeof e==`string`&&e.trim().length>0?e:null,kn=e=>new Promise(t=>setTimeout(t,e)),An=e=>{try{let t=cn.parse(e);if(t)return t}catch{let t=e.run||null;if(t)try{let e=cn.parse(t);if(e)return e}catch{}}throw Error(`Run ID missing in engine response`)},jn=class{constructor(e){this.baseUrl=e.baseUrl.replace(/\/+$/,``),this.token=e.token,this.timeoutMs=e.timeoutMs??2e4;let t=this._request.bind(this);this.sessions=new Ln(this.baseUrl,this.token,this.timeoutMs,t),this.permissions=new Rn(t),this.questions=new zn(t),this.providers=new Bn(t),this.identity=new Vn(t),this.channels=new Hn(t),this.mcp=new Un(t,this._requestText.bind(this));let n=()=>this.token;this.routines=new Xn(this.baseUrl,n,t),this.automations=new $n(this.baseUrl,n,t),this.automationsV2=new er(this.baseUrl,n,t),this.optimizations=new tr(t),this.workflowPlans=new Zn(t),this.workflowPlannerSessions=new Qn(t),this.memory=new Wn(t),this.skills=new Gn(t),this.packs=new Kn(t),this.capabilities=new qn(t),this.resources=new Jn(this.baseUrl,n,t),this.browser=new Mn(t),this.storage=new Nn(t),this.worktrees=new Pn(t),this.workflows=new Fn(this.baseUrl,n,t),this.bugMonitor=new In(t),this.coder=new Yn(t),this.agentTeams=new nr(t),this.missions=new rr(t)}setToken(e){this.token=e,this.sessions.setToken(e)}async health(){return J(ln,await this._request(`/global/health`),`/global/health`,200)}async listToolIds(){return this._request(`/tool/ids`)}async listTools(){let e=await this._request(`/tool`);return Array.isArray(e)?e:[]}async executeTool(e,t){return this._request(`/tool/execute`,{method:`POST`,body:JSON.stringify({tool:e,args:t??{}})})}stream(e,t,n){let r=new URLSearchParams({sessionID:e});return t&&r.set(`runID`,t),Y(`${this.baseUrl}/event?${r.toString()}`,this.token,n)}globalStream(e){return Y(`${this.baseUrl}/global/event`,this.token,e)}async runEvents(e,t){let n=new URLSearchParams;t?.sinceSeq!==void 0&&n.set(`since_seq`,String(t.sinceSeq)),t?.tail!==void 0&&n.set(`tail`,String(t.tail));let r=n.toString()?`?${n.toString()}`:``,i=await this._request(`/run/${encodeURIComponent(e)}/events${r}`);return Array.isArray(i)?i:[]}async _request(e,t={}){let n=t.timeoutMs??this.timeoutMs,r=new AbortController,i=setTimeout(()=>r.abort(),n),a;try{a=await fetch(`${this.baseUrl}${e}`,{...t,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${this.token}`,...t.headers??{}},signal:r.signal})}catch(t){throw t instanceof Error&&t.name===`AbortError`?Error(`Request timed out after ${n}ms: ${e}`):t}finally{clearTimeout(i)}if(a.status!==204){if(!a.ok){let t=await a.text().catch(()=>``);throw a.status===524?Error(`Engine timed out while waiting for ${e} to finish.`):Error(`Request failed (${a.status} ${a.statusText}): ${t}`)}return a.json()}}async _requestText(e,t={}){let n=t.timeoutMs??this.timeoutMs,r=new AbortController,i=setTimeout(()=>r.abort(),n),a;try{a=await fetch(`${this.baseUrl}${e}`,{...t,headers:{Authorization:`Bearer ${this.token}`,...t.headers??{}},signal:r.signal})}catch(t){throw t instanceof Error&&t.name===`AbortError`?Error(`Request timed out after ${n}ms: ${e}`):t}finally{clearTimeout(i)}if(!a.ok){let t=await a.text().catch(()=>``);throw a.status===524?Error(`Engine timed out while waiting for ${e} to finish.`):Error(`Request failed (${a.status} ${a.statusText}): ${t}`)}return a.text()}},Mn=class{constructor(e){this.req=e}async status(){return this.req(`/browser/status`)}async install(){return this.req(`/browser/install`,{method:`POST`})}async smokeTest(e){return this.req(`/browser/smoke-test`,{method:`POST`,body:JSON.stringify(e??{})})}},Nn=class{constructor(e){this.req=e}async listFiles(e){let t=new URLSearchParams;e?.path&&t.set(`path`,e.path),e?.limit!==void 0&&t.set(`limit`,String(e.limit));let n=t.toString()?`?${t.toString()}`:``;return this.req(`/global/storage/files${n}`)}async repair(e){return this.req(`/global/storage/repair`,{method:`POST`,body:JSON.stringify({force:e?.force??!1})})}},Pn=class{constructor(e){this.req=e}async cleanup(e){return this.req(`/worktree/cleanup`,{method:`POST`,body:JSON.stringify({repo_root:e?.repoRoot,dry_run:e?.dryRun??!1,remove_orphan_dirs:e?.removeOrphanDirs??!0})})}},Fn=class{constructor(e,t,n){this.baseUrl=e,this.getToken=t,this.req=n}async list(){let e=await this.req(`/workflows`)??{},t=Array.isArray(e.workflows)?e.workflows:[];return{workflows:t,count:typeof e.count==`number`?e.count:t.length}}async get(e){return(await this.req(`/workflows/${encodeURIComponent(e)}`)).workflow??{}}async validate(e){return this.req(`/workflows/validate`,{method:`POST`,body:JSON.stringify(e??{})})}async simulate(e){return this.req(`/workflows/simulate`,{method:`POST`,body:JSON.stringify(e)})}events(e){let t=new URLSearchParams,n=e?.workflow_id??e?.workflowId,r=e?.run_id??e?.runId;n&&t.set(`workflow_id`,n),r&&t.set(`run_id`,r);let i=t.toString()?`?${t.toString()}`:``;return Y(`${this.baseUrl}/workflows/events${i}`,this.getToken(),{signal:e?.signal})}async listRuns(e){let t=new URLSearchParams,n=e?.workflow_id??e?.workflowId;n&&t.set(`workflow_id`,n),e?.limit!==void 0&&t.set(`limit`,String(e.limit));let r=t.toString()?`?${t.toString()}`:``,i=await this.req(`/workflows/runs${r}`)??{},a=Array.isArray(i.runs)?i.runs:[];return{runs:a,count:typeof i.count==`number`?i.count:a.length}}async getRun(e){return(await this.req(`/workflows/runs/${encodeURIComponent(e)}`)).run??{}}async run(e,t){return this.req(`/workflows/${encodeURIComponent(e)}/run`,{method:`POST`,body:JSON.stringify(t??{})})}async listHooks(e){let t=new URLSearchParams,n=e?.workflow_id??e?.workflowId;n&&t.set(`workflow_id`,n);let r=t.toString()?`?${t.toString()}`:``,i=await this.req(`/workflow-hooks${r}`)??{},a=Array.isArray(i.hooks)?i.hooks:[];return{hooks:a,count:typeof i.count==`number`?i.count:a.length}}async patchHook(e,t){return this.req(`/workflow-hooks/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)})}},In=class{constructor(e){this.req=e}async getConfig(){return this.req(`/config/bug-monitor`)}async patchConfig(e){let t=e&&typeof e==`object`&&`bug_monitor`in e?e:{bug_monitor:e};return this.req(`/config/bug-monitor`,{method:`PATCH`,body:JSON.stringify(t)})}async getStatus(){return this.req(`/bug-monitor/status`)}async recomputeStatus(){return this.req(`/bug-monitor/status/recompute`,{method:`POST`})}async pause(){return this.req(`/bug-monitor/pause`,{method:`POST`})}async resume(){return this.req(`/bug-monitor/resume`,{method:`POST`})}async debug(){return this.req(`/bug-monitor/debug`)}async listIncidents(e){let t=e?.limit===void 0?``:`?limit=${e.limit}`;return this.req(`/bug-monitor/incidents${t}`)}async getIncident(e){return(await this.req(`/bug-monitor/incidents/${encodeURIComponent(e)}`)).incident??{}}async replayIncident(e,t){return this.req(`/bug-monitor/incidents/${encodeURIComponent(e)}/replay`,{method:`POST`,body:JSON.stringify(t??{})})}async deleteIncident(e){return this.req(`/bug-monitor/incidents/${encodeURIComponent(e)}`,{method:`DELETE`})}async bulkDeleteIncidents(e){return this.req(`/bug-monitor/incidents/bulk-delete`,{method:`POST`,body:JSON.stringify(e)})}async deleteDraft(e){return this.req(`/bug-monitor/drafts/${encodeURIComponent(e)}`,{method:`DELETE`})}async bulkDeleteDrafts(e){return this.req(`/bug-monitor/drafts/bulk-delete`,{method:`POST`,body:JSON.stringify(e)})}async deletePost(e){return this.req(`/bug-monitor/posts/${encodeURIComponent(e)}`,{method:`DELETE`})}async bulkDeletePosts(e){return this.req(`/bug-monitor/posts/bulk-delete`,{method:`POST`,body:JSON.stringify(e)})}async listDrafts(e){let t=e?.limit===void 0?``:`?limit=${e.limit}`;return this.req(`/bug-monitor/drafts${t}`)}async listPosts(e){let t=e?.limit===void 0?``:`?limit=${e.limit}`;return this.req(`/bug-monitor/posts${t}`)}async listIntakeKeys(){return this.req(`/bug-monitor/intake/keys`)}async createIntakeKey(e){return this.req(`/bug-monitor/intake/keys`,{method:`POST`,body:JSON.stringify(e)})}async disableIntakeKey(e){return this.req(`/bug-monitor/intake/keys/${encodeURIComponent(e)}/disable`,{method:`POST`})}async resetLogSourceOffset(e,t){return this.req(`/bug-monitor/log-sources/${encodeURIComponent(e)}/${encodeURIComponent(t)}/reset-offset`,{method:`POST`})}async replayLatestLogSourceCandidate(e,t){return this.req(`/bug-monitor/log-sources/${encodeURIComponent(e)}/${encodeURIComponent(t)}/replay-latest`,{method:`POST`})}async getDraft(e){return(await this.req(`/bug-monitor/drafts/${encodeURIComponent(e)}`)).draft??{}}async approveDraft(e,t){return this.req(`/bug-monitor/drafts/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify({reason:t})})}async denyDraft(e,t){return this.req(`/bug-monitor/drafts/${encodeURIComponent(e)}/deny`,{method:`POST`,body:JSON.stringify({reason:t})})}async report(e){let t=e&&typeof e==`object`&&`report`in e?e:{report:e};return this.req(`/bug-monitor/report`,{method:`POST`,body:JSON.stringify(t)})}async createTriageRun(e){return this.req(`/bug-monitor/drafts/${encodeURIComponent(e)}/triage-run`,{method:`POST`})}async createTriageSummary(e,t){return this.req(`/bug-monitor/drafts/${encodeURIComponent(e)}/triage-summary`,{method:`POST`,body:JSON.stringify(t)})}async createIssueDraft(e,t){return this.req(`/bug-monitor/drafts/${encodeURIComponent(e)}/issue-draft`,{method:`POST`,body:JSON.stringify(t??{})})}async publishDraft(e,t){return this.req(`/bug-monitor/drafts/${encodeURIComponent(e)}/publish`,{method:`POST`,body:JSON.stringify(t??{})})}async recheckMatch(e,t){return this.req(`/bug-monitor/drafts/${encodeURIComponent(e)}/recheck-match`,{method:`POST`,body:JSON.stringify(t??{})})}},Ln=class{constructor(e,t,n,r){this.baseUrl=e,this.token=t,this.timeoutMs=n,this.req=r}setToken(e){this.token=e}async create(e={}){let t={title:e.title??`Tandem SDK Session`,directory:e.directory??`.`};return e.permissions&&(t.permission=e.permissions),e.sourceKind&&(t.sourceKind=e.sourceKind),e.sourceMetadata&&(t.sourceMetadata=e.sourceMetadata),e.model&&e.provider&&(t.model={providerID:e.provider,modelID:e.model},t.provider=e.provider),(await this.req(`/session`,{method:`POST`,body:JSON.stringify(t)})).id}async list(e={}){let t=new URLSearchParams;e.q&&t.set(`q`,e.q),e.page!==void 0&&t.set(`page`,String(e.page)),e.pageSize!==void 0&&t.set(`page_size`,String(e.pageSize)),e.archived!==void 0&&t.set(`archived`,String(e.archived)),e.scope&&t.set(`scope`,e.scope),e.workspace&&t.set(`workspace`,e.workspace),e.source&&t.set(`source`,e.source);let n=t.toString()?`?${t.toString()}`:``;return J(dn,await this.req(`/session${n}`),`/session`,200)}async get(e){return J(un,await this.req(`/session/${encodeURIComponent(e)}`),`/session/${e}`,200)}async update(e,t){return J(un,await this.req(`/session/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),`/session/${e}`,200)}async archive(e){return this.update(e,{archived:!0})}async delete(e){await this.req(`/session/${encodeURIComponent(e)}`,{method:`DELETE`})}async messages(e){return this.req(`/session/${encodeURIComponent(e)}/message`)}async todos(e){let t=await this.req(`/session/${encodeURIComponent(e)}/todo`);return Array.isArray(t)?t:t.todos??[]}async activeRun(e){return J(fn,await this.req(`/session/${encodeURIComponent(e)}/run`),`/session/${e}/run`,200)}async promptAsync(e,t,n,r){return this.promptAsyncParts(e,[{type:`text`,text:t}],n,r)}async promptAsyncParts(e,t,n,r){let i={parts:t};n?.provider&&n?.model&&(i.model={providerID:n.provider,modelID:n.model}),r?.toolMode&&(i.toolMode=r.toolMode),r?.toolAllowlist?.length&&(i.toolAllowlist=r.toolAllowlist),r?.contextMode&&(i.contextMode=r.contextMode);let a=`/session/${encodeURIComponent(e)}/prompt_async?return=run`,o=new AbortController,s=setTimeout(()=>o.abort(),this.timeoutMs),c;try{c=await fetch(`${this.baseUrl}${a}`,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${this.token}`},body:JSON.stringify(i),signal:o.signal})}finally{clearTimeout(s)}if(c.status===409){let e=(await c.json().catch(()=>({}))).activeRun,t=X(e?.runID)||X(e?.runId)||X(e?.run_id);if(t)return{runId:t}}if(!c.ok){let e=await c.text().catch(()=>``);throw Error(`promptAsyncParts failed (${c.status}): ${e}`)}return{runId:An(await c.json())}}async promptSync(e,t){let n={parts:[{type:`text`,text:t}]},r=await this.req(`/session/${encodeURIComponent(e)}/prompt_sync`,{method:`POST`,body:JSON.stringify(n)});return X(r.reply)||X(r.text)||X(r.output)||``}async abort(e){return this.req(`/session/${encodeURIComponent(e)}/abort`,{method:`POST`,body:JSON.stringify({})})}async cancel(e){return this.req(`/session/${encodeURIComponent(e)}/cancel`,{method:`POST`,body:JSON.stringify({})})}async cancelRun(e,t){return this.req(`/session/${encodeURIComponent(e)}/run/${encodeURIComponent(t)}/cancel`,{method:`POST`,body:JSON.stringify({})})}async fork(e){return J(un,await this.req(`/session/${encodeURIComponent(e)}/fork`,{method:`POST`,body:JSON.stringify({})}),`/session/${e}/fork`,200)}async diff(e){return this.req(`/session/${encodeURIComponent(e)}/diff`)}async revert(e){return this.req(`/session/${encodeURIComponent(e)}/revert`,{method:`POST`,body:JSON.stringify({})})}async unrevert(e){return this.req(`/session/${encodeURIComponent(e)}/unrevert`,{method:`POST`,body:JSON.stringify({})})}async children(e){return J(dn,await this.req(`/session/${encodeURIComponent(e)}/children`),`/session/${e}/children`,200).sessions}async summarize(e){return this.req(`/session/${encodeURIComponent(e)}/summarize`,{method:`POST`,body:JSON.stringify({})})}async attach(e,t){return this.req(`/session/${encodeURIComponent(e)}/attach`,{method:`POST`,body:JSON.stringify({target_workspace:t})})}},Rn=class{constructor(e){this.req=e}async list(){return this.req(`/permission`)}async reply(e,t){let n=await this.req(`/permission/${encodeURIComponent(e)}/reply`,{method:`POST`,body:JSON.stringify({reply:t})});if(!n.ok)throw Error(`Permission reply rejected: ${n.error??e}`);return{ok:!0}}},zn=class{constructor(e){this.req=e}async list(){let e=await this.req(`/question`);return Array.isArray(e)?{questions:e}:e}async reply(e,t){return this.req(`/question/${encodeURIComponent(e)}/reply`,{method:`POST`,body:JSON.stringify({answer:t})})}async reject(e){return this.req(`/question/${encodeURIComponent(e)}/reject`,{method:`POST`,body:JSON.stringify({})})}},Bn=class{constructor(e){this.req=e}async catalog(){return this.req(`/provider`)}async config(){return this.req(`/config/providers`)}async setDefaults(e,t){await this.req(`/config`,{method:`PATCH`,body:JSON.stringify({default_provider:e,providers:{[e]:{default_model:t}}})})}async setApiKey(e,t){await this.req(`/auth/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify({apiKey:t})})}async oauthAuthorize(e){return this.req(`/provider/${encodeURIComponent(e)}/oauth/authorize`,{method:`POST`})}async oauthStatus(e,t){let n=t?`?session_id=${encodeURIComponent(t)}`:``;return this.req(`/provider/${encodeURIComponent(e)}/oauth/status${n}`)}async oauthUseLocalSession(e){return this.req(`/provider/${encodeURIComponent(e)}/oauth/session/local`,{method:`POST`})}async oauthDisconnect(e){return this.req(`/provider/${encodeURIComponent(e)}/oauth/session`,{method:`DELETE`})}async authStatus(){return this.req(`/provider/auth`)}},Vn=class{constructor(e){this.req=e}async get(){return this.req(`/config/identity`)}async patch(e){return this.req(`/config/identity`,{method:`PATCH`,body:JSON.stringify(e)})}},Hn=class{constructor(e){this.req=e}async config(){return this.req(`/channels/config`)}async status(){return this.req(`/channels/status`)}async put(e,t){return this.req(`/channels/${e}`,{method:`PUT`,body:JSON.stringify(t)})}async delete(e){return this.req(`/channels/${e}`,{method:`DELETE`})}async verify(e,t={}){return this.req(`/channels/${e}/verify`,{method:`POST`,body:JSON.stringify(t)})}async toolPreferences(e){return this.req(`/channels/${e}/tool-preferences`)}async setToolPreferences(e,t){return this.req(`/channels/${e}/tool-preferences`,{method:`PUT`,body:JSON.stringify(t)})}},Un=class{constructor(e,t){this.req=e,this.reqText=t}async list(){return this.req(`/mcp`)}async listTools(){return this.req(`/mcp/tools`)}async listResources(){let e=await this.req(`/mcp/resources`);return Array.isArray(e)?e:[]}async add(e){return this.req(`/mcp`,{method:`POST`,body:JSON.stringify(e)})}async connect(e){return this.req(`/mcp/${encodeURIComponent(e)}/connect`,{method:`POST`})}async disconnect(e){return this.req(`/mcp/${encodeURIComponent(e)}/disconnect`,{method:`POST`})}async refresh(e){return this.req(`/mcp/${encodeURIComponent(e)}/refresh`,{method:`POST`})}async patch(e,t){return this.req(`/mcp/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t??{})})}async setEnabled(e,t){return this.patch(e,{enabled:t})}async delete(e){return this.req(`/mcp/${encodeURIComponent(e)}`,{method:`DELETE`})}async auth(e,t){return this.req(`/mcp/${encodeURIComponent(e)}/auth`,{method:`POST`,body:JSON.stringify(t??{})})}async deleteAuth(e){return this.req(`/mcp/${encodeURIComponent(e)}/auth`,{method:`DELETE`})}async authCallback(e,t){return this.req(`/mcp/${encodeURIComponent(e)}/auth/callback`,{method:`POST`,body:JSON.stringify(t)})}async authenticate(e,t){return this.req(`/mcp/${encodeURIComponent(e)}/auth/authenticate`,{method:`POST`,body:JSON.stringify(t??{})})}async catalogToml(e){if(!this.reqText)throw Error(`Text request helper unavailable`);return this.reqText(`/mcp/catalog/${encodeURIComponent(e)}/toml`)}},Wn=class{constructor(e){this.req=e}async put(e){return this.req(`/memory/put`,{method:`POST`,body:JSON.stringify(e)})}async search(e){return J(yn,await this.req(`/memory/search`,{method:`POST`,body:JSON.stringify(e)}),`/memory/search`,200)}async importPath(e){let t={source:{kind:`path`,path:e.path},format:e.format??`directory`,tier:e.tier??`project`,project_id:e.projectId,session_id:e.sessionId,sync_deletes:e.syncDeletes??!1};return this.req(`/memory/import`,{method:`POST`,body:JSON.stringify(t)})}async list(e){let t=new URLSearchParams;e?.q&&t.set(`q`,e.q),e?.limit!==void 0&&t.set(`limit`,String(e.limit)),e?.offset!==void 0&&t.set(`offset`,String(e.offset)),e?.userId&&t.set(`user_id`,e.userId);let n=t.toString()?`?${t.toString()}`:``;return J(vn,await this.req(`/memory${n}`),`/memory`,200)}async delete(e){return this.req(`/memory/${encodeURIComponent(e)}`,{method:`DELETE`})}async promote(e){return this.req(`/memory/promote`,{method:`POST`,body:JSON.stringify(e)})}async demote(e){let t={id:e.id,run_id:e.runId};return this.req(`/memory/demote`,{method:`POST`,body:JSON.stringify(t)})}async audit(e){let t=new URLSearchParams;e?.run_id&&t.set(`run_id`,e.run_id),e?.limit!==void 0&&t.set(`limit`,String(e.limit));let n=t.toString()?`?${t.toString()}`:``,r=await this.req(`/memory/audit${n}`);return Array.isArray(r)?{entries:r,count:r.length}:r}async contextResolveUri(e){return J(Cn,await this.req(`/memory/context/resolve`,{method:`POST`,body:JSON.stringify({uri:e})}),`/memory/context/resolve`,200)}async contextTree(e,t){let n=new URLSearchParams;n.set(`uri`,e),t!==void 0&&n.set(`max_depth`,String(t));let r=n.toString()?`?${n.toString()}`:``;return J(wn,await this.req(`/memory/context/tree${r}`),`/memory/context/tree`,200)}async contextGenerateLayers(e){return this.req(`/memory/context/layers/generate`,{method:`POST`,body:JSON.stringify({node_id:e})})}async contextDistill(e,t){return J(Tn,await this.req(`/memory/context/distill`,{method:`POST`,body:JSON.stringify({session_id:e,conversation:t})}),`/memory/context/distill`,200)}},Gn=class{constructor(e){this.req=e}async list(e){let t=e?`?location=${encodeURIComponent(e)}`:``,n=await this.req(`/skills${t}`);return Array.isArray(n)?{skills:n,count:n.length}:n}async get(e){return this.req(`/skills/${encodeURIComponent(e)}`)}async import(e){let t={content:e.content,file_or_path:e.file_or_path??e.fileOrPath,location:e.location,namespace:e.namespace,conflict_policy:e.conflict_policy??e.conflictPolicy};return this.req(`/skills/import`,{method:`POST`,body:JSON.stringify(t)})}async preview(e){let t={content:e.content,file_or_path:e.file_or_path??e.fileOrPath,location:e.location,namespace:e.namespace,conflict_policy:e.conflict_policy??e.conflictPolicy};return this.req(`/skills/import/preview`,{method:`POST`,body:JSON.stringify(t)})}async templates(){let e=await this.req(`/skills/templates`);return Array.isArray(e)?{templates:e,count:e.length}:e}async catalog(){let e=await this.req(`/skills/catalog`),t=Array.isArray(e)?e:[];return{skills:t,count:t.length}}async validate(e){let t={content:e.content,file_or_path:e.file_or_path??e.fileOrPath};return this.req(`/skills/validate`,{method:`POST`,body:JSON.stringify(t)})}async match(e){let t={goal:e.goal,max_matches:e.max_matches??e.maxMatches,threshold:e.threshold};return this.req(`/skills/router/match`,{method:`POST`,body:JSON.stringify(t)})}async evalBenchmark(e){let t={threshold:e.threshold,cases:e.cases.map(e=>({prompt:e.prompt,expected_skill:e.expected_skill??e.expectedSkill}))};return this.req(`/skills/evals/benchmark`,{method:`POST`,body:JSON.stringify(t)})}async evalTriggers(e){let t={skill_name:e.skill_name??e.skillName,prompts:e.prompts,threshold:e.threshold};return this.req(`/skills/evals/triggers`,{method:`POST`,body:JSON.stringify(t)})}async compile(e){let t={skill_name:e.skill_name??e.skillName,goal:e.goal,threshold:e.threshold,max_matches:e.max_matches??e.maxMatches,schedule:e.schedule};return this.req(`/skills/compile`,{method:`POST`,body:JSON.stringify(t)})}async generate(e){return this.req(`/skills/generate`,{method:`POST`,body:JSON.stringify(e)})}async generateInstall(e){let t={prompt:e.prompt,threshold:e.threshold,location:e.location,conflict_policy:e.conflictPolicy,artifacts:e.artifacts?{"SKILL.md":e.artifacts[`SKILL.md`],"workflow.yaml":e.artifacts[`workflow.yaml`],"automation.example.yaml":e.artifacts[`automation.example.yaml`]}:void 0};return this.req(`/skills/generate/install`,{method:`POST`,body:JSON.stringify(t)})}},Kn=class{constructor(e){this.req=e}async list(){return this.req(`/packs`)}async inspect(e){return this.req(`/packs/${encodeURIComponent(e)}`)}async install(e){return this.req(`/packs/install`,{method:`POST`,body:JSON.stringify(e)})}async installFromAttachment(e){return this.req(`/packs/install_from_attachment`,{method:`POST`,body:JSON.stringify(e)})}async uninstall(e){return this.req(`/packs/uninstall`,{method:`POST`,body:JSON.stringify(e)})}async export(e){return this.req(`/packs/export`,{method:`POST`,body:JSON.stringify(e)})}async detect(e){return this.req(`/packs/detect`,{method:`POST`,body:JSON.stringify(e)})}async updates(e){let t=await this.req(`/packs/${encodeURIComponent(e)}/updates`)||{},n=Array.isArray(t.updates)?t.updates:[];return{pack_id:X(t.pack_id)??void 0,name:X(t.name)??void 0,current_version:X(t.current_version)??void 0,updates:n}}async update(e,t){let n=await this.req(`/packs/${encodeURIComponent(e)}/update`,{method:`POST`,body:JSON.stringify(t??{})});return{updated:!!n.updated,pack_id:X(n.pack_id)??void 0,name:X(n.name)??void 0,current_version:X(n.current_version)??void 0,target_version:X(n.target_version)??void 0,reason:X(n.reason)??void 0}}},qn=class{constructor(e){this.req=e}async getBindings(){return(await this.req(`/capabilities/bindings`)).bindings}async setBindings(e){return this.req(`/capabilities/bindings`,{method:`PUT`,body:JSON.stringify(e)})}async discovery(){return this.req(`/capabilities/discovery`)}async resolve(e){return this.req(`/capabilities/resolve`,{method:`POST`,body:JSON.stringify(e)})}async readiness(e){return this.req(`/capabilities/readiness`,{method:`POST`,body:JSON.stringify(e)})}},Jn=class{constructor(e,t,n){this.baseUrl=e,this.getToken=t,this.req=n}async list(e){let t=new URLSearchParams;e?.prefix&&t.set(`prefix`,e.prefix),e?.limit!==void 0&&t.set(`limit`,String(e.limit));let n=t.toString()?`?${t.toString()}`:``;return J(_n,await this.req(`/resource${n}`),`/resource`,200)}async write(e){return this.req(`/resource`,{method:`PUT`,body:JSON.stringify(e)})}async get(e){return J(gn,await this.req(`/resource/${encodeURIComponent(e)}`),`/resource/${e}`,200)}async putKey(e,t,n){return J(hn,await this.req(`/resource/${encodeURIComponent(e)}`,{method:`PUT`,body:JSON.stringify({value:t,...n??{}})}),`/resource/${e}`,200)}async patchKey(e,t){return J(hn,await this.req(`/resource/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),`/resource/${e}`,200)}async delete(e,t){return this.req(`/resource`,{method:`DELETE`,body:JSON.stringify({key:e,...t})})}async deleteKey(e){return this.req(`/resource/${encodeURIComponent(e)}`,{method:`DELETE`})}events(e){let t=new URLSearchParams;e?.sinceSeq!==void 0&&t.set(`since_seq`,String(e.sinceSeq)),e?.tail!==void 0&&t.set(`tail`,String(e.tail));let n=t.toString()?`?${t.toString()}`:``;return Y(`${this.baseUrl}/resource/events${n}`,this.getToken())}},Yn=class{constructor(e){this.req=e}async createRun(e){return this.req(`/coder/runs`,{method:`POST`,body:JSON.stringify(e)})}async listRuns(e){let t=new URLSearchParams;e?.limit!==void 0&&t.set(`limit`,String(e.limit));let n=e?.workflow_mode??e?.workflowMode,r=e?.repo_slug??e?.repoSlug;n&&t.set(`workflow_mode`,n),r&&t.set(`repo_slug`,r);let i=t.toString()?`?${t.toString()}`:``,a=await this.req(`/coder/runs${i}`)??{},o=Array.isArray(a.runs)?a.runs:[];return{runs:o,count:typeof a.count==`number`?a.count:o.length}}async getRun(e){let t=await this.req(`/coder/runs/${encodeURIComponent(e)}`)??{};return{...t,coderRun:t.coder_run??void 0,coder_run:t.coder_run??void 0,run:t.run??void 0}}async getProjectBinding(e){let t=await this.req(`/coder/projects/${encodeURIComponent(e)}/bindings`)??{};return{...t,binding:t.binding??null}}async putProjectBinding(e,t){let n=await this.req(`/coder/projects/${encodeURIComponent(e)}/bindings`,{method:`PUT`,body:JSON.stringify(t)})??{};return{...n,binding:n.binding}}async getProjectGithubInbox(e){let t=await this.req(`/coder/projects/${encodeURIComponent(e)}/github-project/inbox`)??{};return{...t,items:Array.isArray(t.items)?t.items:[],binding:t.binding,project_id:String(t.project_id||t.projectId||``),schema_drift:!!(t.schema_drift??t.schemaDrift),live_schema_fingerprint:String(t.live_schema_fingerprint||t.liveSchemaFingerprint||``)}}async intakeProjectItem(e,t){let n=await this.req(`/coder/projects/${encodeURIComponent(e)}/github-project/intake`,{method:`POST`,body:JSON.stringify(t)})??{};return{...n,coder_run:n.coder_run??void 0,coderRun:n.coder_run??void 0,run:n.run??void 0}}async executeNext(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/execute-next`,{method:`POST`,body:JSON.stringify(t??{})})}async executeAll(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/execute-all`,{method:`POST`,body:JSON.stringify(t??{})})}async createFollowOnRun(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/follow-on-run`,{method:`POST`,body:JSON.stringify(t)})}async approveRun(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify({reason:t})})}async cancelRun(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/cancel`,{method:`POST`,body:JSON.stringify({reason:t})})}async listArtifacts(e){let t=await this.req(`/coder/runs/${encodeURIComponent(e)}/artifacts`)??{},n=Array.isArray(t.artifacts)?t.artifacts:[];return{...t,artifacts:n,count:typeof t.count==`number`?t.count:n.length}}async getMemoryHits(e,t){let n=new URLSearchParams;t?.query&&n.set(`q`,t.query),t?.limit!==void 0&&n.set(`limit`,String(t.limit));let r=n.toString()?`?${n.toString()}`:``,i=await this.req(`/coder/runs/${encodeURIComponent(e)}/memory-hits${r}`)??{},a=Array.isArray(i.hits)?i.hits:[];return{...i,hits:a,count:typeof i.count==`number`?i.count:a.length}}async createTriageInspectionReport(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/triage-inspection-report`,{method:`POST`,body:JSON.stringify(t)})}async createTriageReproductionReport(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/triage-reproduction-report`,{method:`POST`,body:JSON.stringify(t)})}async createTriageSummary(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/triage-summary`,{method:`POST`,body:JSON.stringify(t)})}async createPrReviewEvidence(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/pr-review-evidence`,{method:`POST`,body:JSON.stringify(t)})}async createPrReviewSummary(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/pr-review-summary`,{method:`POST`,body:JSON.stringify(t)})}async createIssueFixValidationReport(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/issue-fix-validation-report`,{method:`POST`,body:JSON.stringify(t)})}async createIssueFixSummary(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/issue-fix-summary`,{method:`POST`,body:JSON.stringify(t)})}async createPrDraft(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/pr-draft`,{method:`POST`,body:JSON.stringify(t??{})})}async submitPr(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/pr-submit`,{method:`POST`,body:JSON.stringify(t??{})})}async createMergeReadinessReport(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/merge-readiness-report`,{method:`POST`,body:JSON.stringify(t)})}async createMergeRecommendationSummary(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/merge-recommendation-summary`,{method:`POST`,body:JSON.stringify(t)})}async listMemoryCandidates(e){let t=await this.req(`/coder/runs/${encodeURIComponent(e)}/memory-candidates`)??{},n=Array.isArray(t.candidates)?t.candidates:[];return{...t,candidates:n,count:typeof t.count==`number`?t.count:n.length}}async createMemoryCandidate(e,t){return this.req(`/coder/runs/${encodeURIComponent(e)}/memory-candidates`,{method:`POST`,body:JSON.stringify(t)})}async promoteMemoryCandidate(e,t,n){return this.req(`/coder/runs/${encodeURIComponent(e)}/memory-candidates/${encodeURIComponent(t)}/promote`,{method:`POST`,body:JSON.stringify(n??{})})}},Xn=class{constructor(e,t,n){this.baseUrl=e,this.getToken=t,this.req=n}async list(){return this.req(`/routines`)}async create(e){let t={...e};return`prompt`in t&&!(`entrypoint`in t)&&(t.entrypoint=t.prompt),this.req(`/routines`,{method:`POST`,body:JSON.stringify(t)})}async update(e,t){return this.req(`/routines/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)})}async delete(e){await this.req(`/routines/${encodeURIComponent(e)}`,{method:`DELETE`})}async runNow(e){return J(pn,await this.req(`/routines/${encodeURIComponent(e)}/run_now`,{method:`POST`,body:JSON.stringify({})}),`/routines/${e}/run_now`,200)}async listRuns(e){let t=new URLSearchParams;e?.routine_id&&t.set(`routine_id`,e.routine_id),e?.limit!==void 0&&t.set(`limit`,String(e.limit));let n=t.toString()?`?${t.toString()}`:``;return this.req(`/routines/runs${n}`)}async getRunsForRoutine(e,t=25){return this.req(`/routines/${encodeURIComponent(e)}/runs?limit=${t}`)}async getRun(e){return J(mn,await this.req(`/routines/runs/${encodeURIComponent(e)}`),`/routines/runs/${e}`,200)}async listArtifacts(e){return this.req(`/routines/runs/${encodeURIComponent(e)}/artifacts`)}async approveRun(e,t){return this.req(`/routines/runs/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async denyRun(e,t){return this.req(`/routines/runs/${encodeURIComponent(e)}/deny`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async pauseRun(e,t){return this.req(`/routines/runs/${encodeURIComponent(e)}/pause`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async resumeRun(e,t){return this.req(`/routines/runs/${encodeURIComponent(e)}/resume`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async history(e,t){let n=t===void 0?``:`?limit=${t}`,r=await this.req(`/routines/${encodeURIComponent(e)}/history${n}`);return Array.isArray(r)?{history:r,count:r.length}:r}events(e){let t=new URLSearchParams,n=e?.routine_id??e?.routineId;n&&t.set(`routine_id`,n);let r=t.toString()?`?${t.toString()}`:``;return Y(`${this.baseUrl}/routines/events${r}`,this.getToken(),{signal:e?.signal})}addArtifact(e,t){return this.req(`/routines/runs/${encodeURIComponent(e)}/artifacts`,{method:`POST`,body:JSON.stringify(t)})}},Zn=class{constructor(e){this.req=e,this.planSessionIds=new Map,this.chatProjectSlug=`workflow-plans-chat`}plannerSessions(){return new Qn(this.req)}rememberSession(e,t){let n=X(e),r=X(t?.session_id);!n||!r||this.planSessionIds.set(n,r)}chatSessionTitle(e){let t=e.trim().replace(/\s+/g,` `);return t?t.length>80?`${t.slice(0,77)}...`:t:`Workflow planner chat`}async ensureChatSession(e){let t=X(e);if(!t)throw Error(`Workflow planner plan ID is required`);let n=this.planSessionIds.get(t);if(n)return n;let r=await this.get(t),i=await this.plannerSessions().create({projectSlug:this.chatProjectSlug,project_slug:this.chatProjectSlug,title:X(r.plan?.title)??`Workflow planner chat`,goal:X(r.plan?.title)??``,plan_source:`workflow_plans_chat`,plan:r.plan,conversation:r.conversation,planner_diagnostics:r.planner_diagnostics??void 0,plan_revision:Number(r.plan?.plan_revision??1)||1,last_success_materialization:null}),a=X(i.session?.session_id);if(!a)throw Error(`Workflow planner session creation failed`);return this.rememberSession(t,i.session),a}async preview(e){return this.req(`/workflow-plans/preview`,{method:`POST`,body:JSON.stringify({prompt:e.prompt,schedule:e.schedule,plan_source:e.plan_source??e.planSource,allowed_mcp_servers:e.allowed_mcp_servers??e.allowedMcpServers,workspace_root:e.workspace_root??e.workspaceRoot,operator_preferences:e.operator_preferences??e.operatorPreferences})})}async apply(e){return this.req(`/workflow-plans/apply`,{method:`POST`,body:JSON.stringify({plan_id:e.plan_id??e.planId,plan:e.plan,creator_id:e.creator_id??e.creatorId,pack_builder_export:e.pack_builder_export??e.packBuilderExport,overlap_decision:e.overlap_decision??e.overlapDecision})})}async chatStart(e){let t=X((await this.plannerSessions().create({projectSlug:this.chatProjectSlug,project_slug:this.chatProjectSlug,title:this.chatSessionTitle(e.prompt),workspace_root:e.workspace_root??e.workspaceRoot,goal:e.prompt,plan_source:e.plan_source??e.planSource??`workflow_plans_chat`,allowed_mcp_servers:e.allowed_mcp_servers??e.allowedMcpServers,operator_preferences:e.operator_preferences??e.operatorPreferences})).session?.session_id);if(!t)throw Error(`Workflow planner session creation failed`);let n=await this.plannerSessions().start(t,e);return this.rememberSession(n.plan?.plan_id,n.session),n}async get(e){return this.req(`/workflow-plans/${encodeURIComponent(e)}`)}async chatMessage(e){let t=e.plan_id??e.planId,n=await this.ensureChatSession(t??``),r=await this.plannerSessions().message(n,{message:e.message});return this.rememberSession(r.plan?.plan_id??t,r.session),r}async chatReset(e){let t=e.plan_id??e.planId,n=await this.ensureChatSession(t??``),r=await this.plannerSessions().reset(n);return this.rememberSession(r.plan?.plan_id??t,r.session),r}async importPreview(e){return this.req(`/workflow-plans/import/preview`,{method:`POST`,body:JSON.stringify({bundle:e.bundle,creator_id:e.creator_id??e.creatorId,project_slug:e.project_slug??e.projectSlug,title:e.title})})}async importPlan(e){return this.req(`/workflow-plans/import`,{method:`POST`,body:JSON.stringify({bundle:e.bundle,creator_id:e.creator_id??e.creatorId,project_slug:e.project_slug??e.projectSlug,title:e.title})})}async exportPack(e){return this.req(`/workflow-plans/export/pack`,{method:`POST`,body:JSON.stringify({session_id:e.session_id??e.sessionId,plan_id:e.plan_id??e.planId,name:e.name,title:e.title,version:e.version,description:e.description,creator_id:e.creator_id??e.creatorId,cover_image_path:e.cover_image_path??e.coverImagePath})})}async importPackPreview(e){return this.req(`/workflow-plans/import/pack/preview`,{method:`POST`,body:JSON.stringify({path:e.path,selected_workflow_ids:e.selected_workflow_ids??e.selectedWorkflowIds??[],creator_id:e.creator_id??e.creatorId,project_slug:e.project_slug??e.projectSlug,title:e.title})})}async importPack(e){return this.req(`/workflow-plans/import/pack`,{method:`POST`,body:JSON.stringify({path:e.path,selected_workflow_ids:e.selected_workflow_ids??e.selectedWorkflowIds??[],creator_id:e.creator_id??e.creatorId,project_slug:e.project_slug??e.projectSlug,title:e.title})})}},Qn=class{constructor(e){this.req=e,this.kickoffTimeoutMs=2e4,this.operationTimeoutMs=62e4,this.operationPollIntervalMs=1500}async awaitOperation(e,t){let n=X(e);if(!n)throw Error(`Workflow planner session ID is required`);let r=Date.now()+this.operationTimeoutMs;for(;Date.now()<r;){let e=(await this.get(n)).session,r=e?.operation;if(!r){await kn(this.operationPollIntervalMs);continue}let i=X(r.request_id);if(t&&i&&i!==t)throw Error(`Workflow planner session was replaced by a newer operation`);let a=(X(r.status)??``).toLowerCase();if(a===`completed`){let t=r.response;if(!t||typeof t!=`object`||Array.isArray(t))throw Error(`Workflow planner completed without a usable response payload`);return Object.assign({},t,{session:e})}if(a===`failed`)throw Error(X(r.error)??`Workflow planner failed during background execution`);await kn(this.operationPollIntervalMs)}throw Error(`Workflow planner timed out before completion`)}async list(e){let t=new URLSearchParams,n=e?.project_slug??e?.projectSlug;n&&t.set(`project_slug`,n);let r=t.toString()?`?${t.toString()}`:``;return this.req(`/workflow-plans/sessions${r}`)}async create(e){return this.req(`/workflow-plans/sessions`,{method:`POST`,body:JSON.stringify({project_slug:e.project_slug??e.projectSlug,title:e.title,workspace_root:e.workspace_root??e.workspaceRoot,goal:e.goal,notes:e.notes,planner_provider:e.planner_provider??e.plannerProvider,planner_model:e.planner_model??e.plannerModel,plan_source:e.plan_source??e.planSource,plan:e.plan,conversation:e.conversation,planner_diagnostics:e.planner_diagnostics??e.plannerDiagnostics,plan_revision:e.plan_revision??e.planRevision,last_success_materialization:e.last_success_materialization??e.lastSuccessMaterialization,allowed_mcp_servers:e.allowed_mcp_servers??e.allowedMcpServers,operator_preferences:e.operator_preferences??e.operatorPreferences,planning:e.planning})})}async get(e){return this.req(`/workflow-plans/sessions/${encodeURIComponent(e)}`)}async patch(e,t){return this.req(`/workflow-plans/sessions/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({title:t.title,workspace_root:t.workspace_root??t.workspaceRoot,goal:t.goal,notes:t.notes,planner_provider:t.planner_provider??t.plannerProvider,planner_model:t.planner_model??t.plannerModel,plan_source:t.plan_source??t.planSource,allowed_mcp_servers:t.allowed_mcp_servers??t.allowedMcpServers,operator_preferences:t.operator_preferences??t.operatorPreferences,planning:t.planning,current_plan_id:t.current_plan_id??t.currentPlanId,draft:t.draft,published_at_ms:t.published_at_ms??t.publishedAtMs,published_tasks:t.published_tasks??t.publishedTasks})})}async duplicate(e,t){return this.req(`/workflow-plans/sessions/${encodeURIComponent(e)}/duplicate`,{method:`POST`,body:JSON.stringify({title:t?.title})})}async delete(e){return this.req(`/workflow-plans/sessions/${encodeURIComponent(e)}`,{method:`DELETE`})}async start(e,t){let n=await this.req(`/workflow-plans/sessions/${encodeURIComponent(e)}/start-async`,{method:`POST`,timeoutMs:this.kickoffTimeoutMs,body:JSON.stringify({prompt:t.prompt,schedule:t.schedule,plan_source:t.plan_source??t.planSource,allowed_mcp_servers:t.allowed_mcp_servers??t.allowedMcpServers,workspace_root:t.workspace_root??t.workspaceRoot,operator_preferences:t.operator_preferences??t.operatorPreferences})});return this.awaitOperation(e,n.session?.operation?.request_id??null)}async message(e,t){let n=await this.req(`/workflow-plans/sessions/${encodeURIComponent(e)}/message-async`,{method:`POST`,timeoutMs:this.kickoffTimeoutMs,body:JSON.stringify({message:t.message})});return this.awaitOperation(e,n.session?.operation?.request_id??null)}async reset(e){return this.req(`/workflow-plans/sessions/${encodeURIComponent(e)}/reset`,{method:`POST`})}},$n=class{constructor(e,t,n){this.baseUrl=e,this.getToken=t,this.req=n}async list(){return this.req(`/automations`)}async create(e){return this.req(`/automations`,{method:`POST`,body:JSON.stringify(e)})}async update(e,t){return this.req(`/automations/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)})}async delete(e){await this.req(`/automations/${encodeURIComponent(e)}`,{method:`DELETE`})}async runNow(e){return J(pn,await this.req(`/automations/${encodeURIComponent(e)}/run_now`,{method:`POST`,body:JSON.stringify({})}),`/automations/${e}/run_now`,200)}async listRuns(e){let t=new URLSearchParams;e?.automation_id&&t.set(`automation_id`,e.automation_id),e?.limit!==void 0&&t.set(`limit`,String(e.limit));let n=t.toString()?`?${t.toString()}`:``;return this.req(`/automations/runs${n}`)}async getRunsForAutomation(e,t=25){return this.req(`/automations/${encodeURIComponent(e)}/runs?limit=${t}`)}async getRun(e){return J(mn,await this.req(`/automations/runs/${encodeURIComponent(e)}`),`/automations/runs/${e}`,200)}async listArtifacts(e){return this.req(`/automations/runs/${encodeURIComponent(e)}/artifacts`)}async approveRun(e,t){return this.req(`/automations/runs/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async denyRun(e,t){return this.req(`/automations/runs/${encodeURIComponent(e)}/deny`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async pauseRun(e,t){return this.req(`/automations/runs/${encodeURIComponent(e)}/pause`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async resumeRun(e,t){return this.req(`/automations/runs/${encodeURIComponent(e)}/resume`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async history(e,t){let n=t===void 0?``:`?limit=${t}`,r=await this.req(`/automations/${encodeURIComponent(e)}/history${n}`);return Array.isArray(r)?{history:r,count:r.length}:r}events(e){let t=new URLSearchParams,n=e?.automation_id??e?.automationId,r=e?.run_id??e?.runId;n&&t.set(`automation_id`,n),r&&t.set(`run_id`,r);let i=t.toString()?`?${t.toString()}`:``;return Y(`${this.baseUrl}/automations/events${i}`,this.getToken(),{signal:e?.signal})}addArtifact(e,t){return this.req(`/automations/runs/${encodeURIComponent(e)}/artifacts`,{method:`POST`,body:JSON.stringify(t)})}},er=class{constructor(e,t,n){this.baseUrl=e,this.getToken=t,this.req=n}async create(e){return this.req(`/automations/v2`,{method:`POST`,body:JSON.stringify(e)})}async list(){return this.req(`/automations/v2`)}async get(e){return this.req(`/automations/v2/${encodeURIComponent(e)}`)}async update(e,t){return this.req(`/automations/v2/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)})}async delete(e){return this.req(`/automations/v2/${encodeURIComponent(e)}`,{method:`DELETE`})}async runNow(e,t){let n={dry_run:t?.dryRun===!0};return t?.executionProfile&&(n.execution_profile=t.executionProfile),this.req(`/automations/v2/${encodeURIComponent(e)}/run_now`,{method:`POST`,body:JSON.stringify(n)})}async pause(e,t){return this.req(`/automations/v2/${encodeURIComponent(e)}/pause`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async resume(e){return this.req(`/automations/v2/${encodeURIComponent(e)}/resume`,{method:`POST`,body:JSON.stringify({})})}async listRuns(e,t=50){return this.req(`/automations/v2/${encodeURIComponent(e)}/runs?limit=${t}`)}async getRun(e){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}`)}async pauseRun(e,t){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/pause`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async resumeRun(e,t){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/resume`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async recoverRun(e,t){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/recover`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async repairRun(e,t){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/repair`,{method:`POST`,body:JSON.stringify(t)})}async retryTask(e,t,n){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/tasks/${encodeURIComponent(t)}/retry`,{method:`POST`,body:JSON.stringify({reason:n??``})})}async previewTaskReset(e,t){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/tasks/${encodeURIComponent(t)}/reset_preview`)}async continueTask(e,t,n){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/tasks/${encodeURIComponent(t)}/continue`,{method:`POST`,body:JSON.stringify({reason:n??``})})}async requeueTask(e,t,n){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/tasks/${encodeURIComponent(t)}/requeue`,{method:`POST`,body:JSON.stringify({reason:n??``})})}async setTaskDisposition(e,t,n,r){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/tasks/${encodeURIComponent(t)}/disposition`,{method:`PATCH`,body:JSON.stringify({disposition:n,reason:r??``})})}async graduationSummary(e){let t=new URLSearchParams;e?.windowHours!==void 0&&t.set(`window_hours`,String(e.windowHours)),e?.automationId&&t.set(`automation_id`,e.automationId),e?.limit!==void 0&&t.set(`limit`,String(e.limit));let n=t.toString();return this.req(`/automations/v2/graduation/summary${n?`?${n}`:``}`)}async claimBacklogTask(e,t,n){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/backlog/tasks/${encodeURIComponent(t)}/claim`,{method:`POST`,body:JSON.stringify(n||{})})}async requeueBacklogTask(e,t,n){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/backlog/tasks/${encodeURIComponent(t)}/requeue`,{method:`POST`,body:JSON.stringify({reason:n??``})})}async cancelRun(e,t){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/cancel`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async gateDecide(e,t){return this.req(`/automations/v2/runs/${encodeURIComponent(e)}/gate`,{method:`POST`,body:JSON.stringify(t)})}async listHandoffs(e){return this.req(`/automations/v2/${encodeURIComponent(e)}/handoffs`)}events(e){let t=new URLSearchParams,n=e?.automation_id??e?.automationId,r=e?.run_id??e?.runId;n&&t.set(`automation_id`,n),r&&t.set(`run_id`,r);let i=t.toString()?`?${t.toString()}`:``;return Y(`${this.baseUrl}/automations/v2/events${i}`,this.getToken(),{signal:e?.signal})}},tr=class{constructor(e){this.req=e}async list(){return this.req(`/optimizations`)}async create(e){return this.req(`/optimizations`,{method:`POST`,body:JSON.stringify(e)})}async get(e){return this.req(`/optimizations/${encodeURIComponent(e)}`)}async action(e,t){return this.req(`/optimizations/${encodeURIComponent(e)}/actions`,{method:`POST`,body:JSON.stringify(t)})}async listExperiments(e){return this.req(`/optimizations/${encodeURIComponent(e)}/experiments`)}async getExperiment(e,t){return this.req(`/optimizations/${encodeURIComponent(e)}/experiments/${encodeURIComponent(t)}`)}async applyWinner(e,t){return this.req(`/optimizations/${encodeURIComponent(e)}/experiments/${encodeURIComponent(t)}`,{method:`POST`,body:JSON.stringify({})})}},nr=class{constructor(e){this.req=e}async listTemplates(e){let t=new URLSearchParams,n=String(e?.workspaceRoot||``).trim();n&&t.set(`workspaceRoot`,n);let r=t.toString()?`?${t.toString()}`:``;return this.req(`/agent-team/templates${r}`)}async createTemplate(e,t){let n=new URLSearchParams,r=String(t?.workspaceRoot||``).trim();r&&n.set(`workspaceRoot`,r);let i=n.toString()?`?${n.toString()}`:``;return this.req(`/agent-team/templates${i}`,{method:`POST`,body:JSON.stringify(e)})}async updateTemplate(e,t,n){let r=new URLSearchParams,i=String(n?.workspaceRoot||``).trim();i&&r.set(`workspaceRoot`,i);let a=r.toString()?`?${r.toString()}`:``;return this.req(`/agent-team/templates/${encodeURIComponent(e)}${a}`,{method:`PATCH`,body:JSON.stringify(t)})}async deleteTemplate(e,t){let n=new URLSearchParams,r=String(t?.workspaceRoot||``).trim();r&&n.set(`workspaceRoot`,r);let i=n.toString()?`?${n.toString()}`:``;return this.req(`/agent-team/templates/${encodeURIComponent(e)}${i}`,{method:`DELETE`})}async composeStandup(e){return this.req(`/agent-standup/compose`,{method:`POST`,body:JSON.stringify({name:e.name,workspace_root:e.workspaceRoot,schedule:e.schedule,participant_template_ids:e.participantTemplateIds,report_path_template:e.reportPathTemplate,model_policy:e.modelPolicy})})}async listInstances(e){let t=new URLSearchParams;e?.missionID&&t.set(`missionID`,e.missionID),e?.parentInstanceID&&t.set(`parentInstanceID`,e.parentInstanceID),e?.status&&t.set(`status`,e.status);let n=t.toString()?`?${t.toString()}`:``;return this.req(`/agent-team/instances${n}`)}async listMissions(){return this.req(`/agent-team/missions`)}async listApprovals(){return this.req(`/agent-team/approvals`)}async spawn(e){return this.req(`/agent-team/spawn`,{method:`POST`,body:JSON.stringify(e)})}async approveSpawn(e,t){return this.req(`/agent-team/approvals/spawn/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify({reason:t??``})})}async denySpawn(e,t){return this.req(`/agent-team/approvals/spawn/${encodeURIComponent(e)}/deny`,{method:`POST`,body:JSON.stringify({reason:t??``})})}},rr=class{constructor(e){this.req=e}async list(){return this.req(`/mission`)}async create(e){return this.req(`/mission`,{method:`POST`,body:JSON.stringify(e)})}async get(e){return this.req(`/mission/${encodeURIComponent(e)}`)}async applyEvent(e,t){return this.req(`/mission/${encodeURIComponent(e)}/event`,{method:`POST`,body:JSON.stringify({event:t})})}};function ir({loginMutation:e,savedToken:t,onCheckEngine:n,controlPanelName:r,controlPanelMode:i,controlPanelModeReason:a}){let[o,s]=l(t),[c,u]=l(!0),[d,f]=l(``),[p,m]=l(!1);return V(`main`,{className:`relative min-h-screen overflow-hidden px-5 py-8`,children:[V(Kt,{className:`tcp-shell-background`,children:[V(`div`,{className:`tcp-shell-glow tcp-shell-glow-a`}),V(`div`,{className:`tcp-shell-glow tcp-shell-glow-b`})]}),V(`div`,{className:`relative z-10 mx-auto grid min-h-[calc(100vh-4rem)] w-full max-w-6xl items-center gap-6 lg:grid-cols-[1.05fr_0.95fr]`,children:[V(`section`,{className:`grid gap-4`,children:[V(`div`,{className:`tcp-page-eyebrow`,children:`Tandem Control`}),V(`h1`,{className:`tcp-page-title max-w-3xl`,children:`Sign in to continue.`}),V(`p`,{className:`tcp-subtle max-w-2xl text-base`,children:`Enter your engine token to access chat, task board, automations, runs, memory, and settings.`})]}),V(tn,{title:r,subtitle:i===`aca`?`ACA install detected. Authenticate against your Tandem engine to continue.`:`Standalone install detected. Authenticate against your Tandem engine to continue.`,children:V(`form`,{className:`grid gap-3`,onSubmit:t=>{if(t.preventDefault(),!o.trim()){m(!1),f(`Token is required.`);return}e.mutate({token:o.trim(),remember:c})},children:[V(`label`,{className:`text-sm tcp-subtle`,children:`Engine token`}),V(`input`,{className:`tcp-input`,type:`password`,value:o,onInput:e=>s(e.target.value),placeholder:`tk_...`,autoComplete:`off`}),V(`label`,{className:`inline-flex items-center gap-2 text-xs tcp-subtle`,children:[V(`input`,{type:`checkbox`,className:`h-4 w-4 accent-slate-400`,checked:c,onChange:e=>u(e.target.checked)}),`Remember token on this browser`]}),V(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[V(`button`,{disabled:e.isPending,type:`submit`,className:`tcp-btn-primary w-full`,children:[V(`i`,{"data-lucide":`key-round`}),`Sign in`]}),V(`button`,{type:`button`,className:`tcp-btn w-full`,onClick:async()=>{try{let e=await n();m(!0),f(e)}catch(e){m(!1),f(e instanceof Error?e.message:String(e))}},children:[V(`i`,{"data-lucide":`activity`}),`Check engine`]})]}),V(`div`,{className:`min-h-[1.2rem] text-sm ${p?`text-lime-300`:`text-rose-300`}`,children:e.error?.message||d}),V(`div`,{className:`rounded-xl border border-slate-700/60 bg-slate-950/30 p-3`,children:[V(`div`,{className:`mb-2 flex items-center justify-between gap-3`,children:[V(`div`,{className:`font-medium`,children:`Readiness`}),V(W,{tone:p?`ok`:`warn`,text:p?`Engine reachable`:`Waiting`})]}),V(`p`,{className:`tcp-subtle text-xs`,children:`Connectivity checks are non-destructive and help verify the local panel can reach the engine before authentication.`}),a?V(`p`,{className:`tcp-subtle mt-2 text-xs`,children:a}):null]})]})})]})]})}function ar(t){e(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),t())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t])}function or({open:t,onClose:n,actions:r}){let[i,o]=l(``);e(()=>{t||o(``)},[t]),e(()=>{if(!t)return;let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,n]);let s=a(()=>{let e=i.trim().toLowerCase();return e?r.filter(t=>`${t.label} ${t.group}`.toLowerCase().includes(e)):r},[r,i]);return V(U,{children:t?V(H.div,{className:`tcp-confirm-overlay`,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:n,children:V(H.div,{className:`tcp-doc-dialog w-[min(44rem,96vw)]`,initial:{opacity:0,y:8,scale:.98},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:6,scale:.98},transition:{duration:.16,ease:`easeOut`},onClick:e=>e.stopPropagation(),children:[V(`div`,{className:`tcp-doc-header`,children:[V(`h3`,{className:`tcp-doc-title`,children:`Command Palette`}),V(`kbd`,{className:`tcp-subtle text-xs`,children:`Ctrl/Cmd + K`})]}),V(`div`,{className:`p-3`,children:[V(`input`,{autoFocus:!0,value:i,onInput:e=>o(e.target.value),placeholder:`Jump to route or action`,className:`tcp-input`}),V(`div`,{className:`mt-3 grid max-h-[50vh] gap-2 overflow-auto`,children:[s.map(e=>V(`button`,{type:`button`,className:`tcp-btn w-full justify-between`,onClick:()=>{e.onSelect(),n()},children:[V(`span`,{className:`inline-flex items-center gap-1.5`,children:[V(`i`,{"data-lucide":`list`}),V(`span`,{children:e.label})]}),V(`span`,{className:`tcp-subtle text-xs`,children:e.group})]},e.id)),s.length?null:V(`p`,{className:`tcp-subtle px-1 py-2`,children:`No matching action.`})]})]})]})}):null})}var sr=[[`dashboard`,`Dashboard`,`home`],[`chat`,`Chat`,`message-square`],[`planner`,`Planner`,`compass`],[`workflows`,`Workflows`,`network`],[`marketplace`,`Marketplace`,`globe`],[`studio`,`Studio`,`blocks`],[`automations`,`Automations`,`bot`],[`experiments`,`Experiments`,`flask-conical`],[`coding`,`Coder`,`code`],[`agents`,`Agents`,`users`],[`orchestrator`,`Task Board`,`workflow`],[`files`,`Files`,`folder`],[`memory`,`Memory`,`database`],[`runs`,`Runs`,`activity`],[`approvals`,`Approvals`,`shield-check`],[`settings`,`Settings`,`settings`],[`packs`,`Packs`,`package`],[`teams`,`Teams`,`users`],[`channels`,`Channels`,`message-circle`],[`mcp`,`MCP`,`link`],[`bug-monitor`,`Bug Monitor`,`bug-play`],[`packs-detail`,`Packs`,`package`],[`teams-detail`,`Teams`,`users`]],cr=[`dashboard`,`chat`,`planner`,`workflows`,`marketplace`,`studio`,`automations`,`experiments`,`coding`,`agents`,`orchestrator`,`bug-monitor`,`files`,`memory`,`runs`,`approvals`,`settings`].map(e=>{let t=sr.find(([t])=>t===e);if(!t)throw Error(`Missing navigation route: ${e}`);return t}),lr={openai:{label:`OpenAI`,keyUrl:`https://platform.openai.com/api-keys`,placeholder:`sk-proj-...`},"openai-codex":{label:`Codex Account`,keyUrl:``,placeholder:`Browser sign-in required`,authMode:`oauth`,description:`Use your ChatGPT/Codex subscription on this machine without pasting a separate API key.`},anthropic:{label:`Anthropic`,keyUrl:`https://console.anthropic.com/settings/keys`,placeholder:`sk-ant-...`},google:{label:`Google`,keyUrl:`https://aistudio.google.com/app/apikey`,placeholder:`AIza...`},groq:{label:`Groq`,keyUrl:`https://console.groq.com/keys`,placeholder:`gsk_...`},mistral:{label:`Mistral`,keyUrl:`https://console.mistral.ai/api-keys/`,placeholder:`...`},together:{label:`Together`,keyUrl:`https://api.together.xyz/settings/api-keys`,placeholder:`...`},cohere:{label:`Cohere`,keyUrl:`https://dashboard.cohere.com/api-keys`,placeholder:`...`},openrouter:{label:`OpenRouter`,keyUrl:`https://openrouter.ai/settings/keys`,placeholder:`sk-or-v1-...`},azure:{label:`Azure OpenAI`,keyUrl:`https://portal.azure.com/`,placeholder:`...`},bedrock:{label:`Bedrock`,keyUrl:`https://console.aws.amazon.com/bedrock/`,placeholder:`...`},vertex:{label:`Vertex`,keyUrl:`https://console.cloud.google.com/vertex-ai`,placeholder:`...`},copilot:{label:`GitHub Copilot`,keyUrl:`https://github.com/settings/tokens`,placeholder:`ghp_...`},llama_cpp:{label:`llama.cpp`,keyUrl:``,placeholder:`No key required`},ollama:{label:`Ollama`,keyUrl:``,placeholder:`No key required`}},ur=sr,Z=cr,dr=new Map([[`packs`,`automations`],[`teams`,`automations`],[`feed`,`runs`],[`swarm`,`orchestrator`],[`failure-reporter`,`bug-monitor`]]),fr=new Set(ur.map(([e])=>e));function pr(e,t=`dashboard`){return dr.get(String(e||``).trim())||(fr.has(e)?e:t)}function mr(e=`dashboard`){return pr((window.location.hash||`#/${e}`).replace(/^#\//,``).split(`?`)[0].split(`/`)[0].trim(),e)}function hr(e){window.location.hash=`#/${e}`}function gr(t={}){let[n,r]=l(()=>mr()),i=o(n),a=o(t.canNavigate);e(()=>{i.current=n},[n]),e(()=>{a.current=t.canNavigate},[t.canNavigate]),e(()=>{let e=mr(i.current);window.location.hash!==`#/${e}`&&hr(e)},[]);let s=d((e,t)=>{let n=i.current;return e===n?window.location.hash===`#/${n}`?(r(n),!0):(hr(n),!0):!a.current||a.current(e,n)?window.location.hash===`#/${e}`?(r(e),!0):(hr(e),!0):(t===`hashchange`&&window.location.hash!==`#/${n}`&&window.history.replaceState(null,``,`${window.location.pathname}${window.location.search}#/${n}`),!1)},[]);return e(()=>{let e=()=>{s(mr(),`hashchange`)};return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[s]),{route:n,navigate:d(e=>{s(pr(e),`navigate`)},[s])}}var _r=u({toast:()=>void 0});function vr({children:e}){let[t,n]=l([]),r=d((e,t)=>{let r=Math.random().toString(36).slice(2);n(n=>[...n,{id:r,kind:e,text:t}].slice(-4)),window.setTimeout(()=>{n(e=>e.filter(e=>e.id!==r))},3500)},[]),i=a(()=>({toast:r}),[r]);return V(_r.Provider,{value:i,children:[e,V(`div`,{className:`toasts`,"aria-live":`polite`,"aria-atomic":`true`,children:V(U,{children:t.map(e=>V(H.div,{initial:{opacity:0,y:-8,scale:.98},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-6,scale:.98},transition:{duration:.16,ease:`easeOut`},className:`toast toast-${e.kind}`,children:e.text},e.id))})})]})}function yr(){return r(_r)}on.setOptions({gfm:!0,breaks:!0});function br(e){let t=String(e||``),n=on.parse(t,{async:!1});return an.sanitize(n)}function xr({title:e,subtitle:t,children:n,actions:r,className:i,fullHeight:a}){return V(tn,{title:e,subtitle:t,actions:r,className:i||``,fullHeight:a,children:n})}function Sr({text:e,title:t,action:n}){return V(Xt,{text:e,title:t,action:n})}function Cr(e){return JSON.stringify(e,null,2)}function wr(e){let t=Math.max(0,Math.round((Date.now()-e)/1e3));if(t<60)return`${t}s ago`;let n=Math.round(t/60);if(n<60)return`${n}m ago`;let r=Math.round(n/60);return r<24?`${r}h ago`:`${Math.round(r/24)}d ago`}function Tr(e){let t=e.surface_payload?.decide_endpoint;return typeof t==`string`&&t.startsWith(`/`)?t.startsWith(`/api/engine`)?t:`/api/engine${t}`:e.source===`automation_v2`&&e.run_id?`/api/engine/automations/v2/runs/${e.run_id}/gate`:null}async function Er(e,t,n){let r=Tr(e);if(!r)throw Error(`No decide endpoint known for source=${e.source}`);try{return await q(r,{method:`POST`,body:JSON.stringify({decision:t,reason:n||void 0})}),{ok:!0}}catch(e){if(e?.status===409)return{ok:!1,alreadyDecidedBy:`another operator`,conflictBody:e?.message};throw e}}function Dr(e){switch(e){case`approve`:return`tcp-btn h-8 px-3 text-xs bg-emerald-600 text-white hover:bg-emerald-500`;case`cancel`:return`tcp-btn h-8 px-3 text-xs bg-rose-600 text-white hover:bg-rose-500`;case`rework`:return`tcp-btn h-8 px-3 text-xs`}}function Or(e){switch(e){case`approve`:return`Approve`;case`rework`:return`Rework`;case`cancel`:return`Cancel run`}}function kr({toast:e}){let t=p(),[n,r]=l({}),[i,a]=l(null),o=h({queryKey:[`approvals`,`pending`],queryFn:async()=>await q(`/api/engine/approvals/pending`)||{},refetchInterval:5e3,staleTime:0}),s=ee({mutationFn:async e=>Er(e.request,e.decision,e.reason),onSuccess:async(n,r)=>{n.ok?e(`ok`,`${Or(r.decision)}d gate ${r.request.workflow_name||r.request.run_id}`):e(`warn`,`Already decided by ${n.alreadyDecidedBy||`another operator`}.`),await t.invalidateQueries({queryKey:[`approvals`,`pending`]}),a(null)},onError:t=>{e(`err`,t?.message||String(t))}}),c=o.data?.approvals??[],u=c.length,d=o.isLoading||o.isFetching&&u===0;return V(en,{className:`grid h-full min-h-0 gap-4`,children:V(xr,{title:`Approvals Inbox`,subtitle:`Pending approvals across every workflow that has paused on a human gate. Decisions go through the authoritative subsystem handler.`,actions:V(`div`,{className:`flex items-center gap-3 text-xs`,children:[V(W,{tone:o.isFetching?`live`:u>0?`warn`:`info`,text:o.isFetching?`checking approvals`:`approvals`}),V(Zt,{tone:u>0?`warn`:`ok`,children:[u,` pending`]}),V(`button`,{className:`tcp-btn h-8 px-3 text-xs`,onClick:()=>o.refetch(),disabled:o.isFetching,children:[o.isFetching?V(Yt,{mode:`compact`,className:`h-4 w-4`,title:`Refreshing approvals`}):null,o.isFetching?`Refreshing`:`Refresh`]})]}),fullHeight:!0,children:d?V($t,{title:`Checking for pending approvals…`,text:`Polling /api/engine/approvals/pending`}):c.length===0?V(Sr,{title:`No approvals waiting`,text:`Workflows with auto-injected approval gates pause here when they reach an external action.`}):V(`div`,{className:`grid gap-4`,children:c.map(e=>V(tn,{title:e.workflow_name||e.run_id,subtitle:e.action_kind?`${Ar(e.source)} · ${e.action_kind}`:Ar(e.source),actions:V(`span`,{className:`text-xs text-tcp-text-tertiary`,children:wr(e.requested_at_ms)}),children:V(`div`,{className:`grid gap-3 text-sm`,children:[e.instructions?V(`div`,{className:`text-tcp-text-secondary`,children:e.instructions}):null,e.action_preview_markdown?V(`div`,{className:`prose prose-invert max-w-none text-sm`,dangerouslySetInnerHTML:{__html:br(e.action_preview_markdown)}}):null,V(`div`,{className:`flex flex-wrap gap-2 text-xs text-tcp-text-tertiary`,children:[V(`span`,{children:[V(`strong`,{children:`run:`}),` `,V(`code`,{children:e.run_id})]}),e.node_id?V(`span`,{children:[V(`strong`,{children:`node:`}),` `,V(`code`,{children:e.node_id})]}):null,V(`span`,{children:[V(`strong`,{children:`tenant:`}),` `,V(`code`,{children:[e.tenant.org_id,`/`,e.tenant.workspace_id]})]})]}),i===e.request_id?V(`div`,{className:`grid gap-2 rounded-md border border-tcp-border-subtle p-3`,children:[V(`label`,{className:`text-xs font-medium`,children:`Rework feedback (sent to the agent so it can revise)`}),V(`textarea`,{className:`tcp-input h-20 w-full rounded text-xs`,placeholder:`What should change before this can be approved?`,value:n[e.request_id]||``,onChange:t=>r(n=>({...n,[e.request_id]:t.target.value}))}),V(`div`,{className:`flex justify-end gap-2`,children:[V(`button`,{className:`tcp-btn h-8 px-3 text-xs`,onClick:()=>a(null),disabled:s.isPending,children:`Dismiss`}),V(`button`,{className:Dr(`rework`),onClick:()=>s.mutate({request:e,decision:`rework`,reason:n[e.request_id]||``}),disabled:s.isPending,children:`Send back for rework`})]})]}):V(`div`,{className:`flex flex-wrap items-center gap-2 pt-1`,children:(e.decisions||[`approve`,`rework`,`cancel`]).map(t=>{let n=String(t).toLowerCase();return[`approve`,`rework`,`cancel`].includes(n)?n===`rework`?V(`button`,{className:Dr(n),onClick:()=>a(e.request_id),disabled:s.isPending,children:Or(n)},n):V(`button`,{className:Dr(n),onClick:()=>s.mutate({request:e,decision:n}),disabled:s.isPending,children:Or(n)},n):null})})]})},e.request_id))})})})}function Ar(e){switch(e){case`automation_v2`:return`automation v2`;case`coder`:return`coder`;case`workflow`:return`workflow`;default:return e}}var jr=`modulepreload`,Mr=function(e){return`/`+e},Nr={},Q=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Mr(t,n),t in Nr)return;Nr[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:jr,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},$=(e,t)=>c(()=>e().then(e=>({default:e[t]}))),Pr=$(()=>Q(()=>import(`./DashboardPage-Cv9_TUZQ.js`),__vite__mapDeps([0,1,2,3,4,5,6,7])),`DashboardPage`),Fr=$(()=>Q(()=>import(`./ChatPage-CGKFC9ev.js`),__vite__mapDeps([8,1,2,3,4,9,10,11,12,13])),`ChatPage`),Ir=$(()=>Q(()=>import(`./IntentPlannerPage-BwlF9wfW.js`),__vite__mapDeps([14,1,2,3,4,5,9,15,16,17])),`IntentPlannerPage`),Lr=$(()=>Q(()=>import(`./WorkflowsPage-BWGWH8uD.js`),__vite__mapDeps([18,1,2,3,4,5,6])),`WorkflowsPage`),Rr=$(()=>Q(()=>import(`./MarketplacePage-Wo7biaBa.js`),__vite__mapDeps([19,1,2,4,5])),`MarketplacePage`),zr=$(()=>Q(()=>import(`./WorkflowStudioPage-CyWDhEEE.js`),__vite__mapDeps([20,21,2,3,1,4,22,23,17])),`WorkflowStudioPage`),Br=$(()=>Q(()=>import(`./AutomationsPage-6mRHsh9V.js`),__vite__mapDeps([24,21,2,3,1,4,5,9,22,15,6,25,10,12,26,23,17,27,13,28,7])),`AutomationsPage`),Vr=$(()=>Q(()=>import(`./ExperimentsPage-DuYHzo7d.js`),__vite__mapDeps([29,21,2,3,1,4,5,17])),`ExperimentsPage`),Hr=$(()=>Q(()=>import(`./CodingWorkflowsPage-DosUtoeO.js`),__vite__mapDeps([30,1,2,3,4,5,9,31,15,6,16,17,13])),`CodingWorkflowsPage`),Ur=$(()=>Q(()=>import(`./ChannelsPage-oJ5a717t.js`),__vite__mapDeps([32,3,1,2,4])),`ChannelsPage`),Wr=$(()=>Q(()=>import(`./PacksPage-BWnL4dRB.js`),__vite__mapDeps([33,1,2,3,4,5,6,27,13])),`PacksPage`),Gr=$(()=>Q(()=>import(`./OrchestratorPage-HDyjjwF-.js`),__vite__mapDeps([34,1,2,3,4,6,11,26,27,13])),`OrchestratorPage`),Kr=$(()=>Q(()=>import(`./FilesPage-NAInb3WU.js`),__vite__mapDeps([35,1,2,3,4,5,31,36,12])),`FilesPage`),qr=$(()=>Q(()=>import(`./MemoryPage-gSBH1OKG.js`),__vite__mapDeps([37,1,2,3,4,5,36])),`MemoryPage`),Jr=$(()=>Q(()=>import(`./RunsPage-B6ttNeUJ.js`),__vite__mapDeps([38,24,21,2,3,1,4,5,9,22,15,6,25,10,12,26,23,17,27,13,28,7])),`RunsPage`),Yr=$(()=>Q(()=>import(`./BugMonitorPage-B9mcxV8k.js`),__vite__mapDeps([39,1,2,3,4,5,31])),`BugMonitorPage`),Xr=$(()=>Q(()=>import(`./TeamsPage-CwMnVES9.js`),__vite__mapDeps([40,1,2,3,4,15,25,17,28])),`TeamsPage`),Zr=$(()=>Q(()=>import(`./SettingsPage-DhAKDQHw.js`),__vite__mapDeps([41,1,2,3,4,5,22,15,17])),`SettingsPage`);function Qr(){return V(`div`,{className:`flex min-h-[40vh] items-center justify-center`,children:V(`div`,{className:`tcp-subtle text-sm`,children:`Loading…`})})}var $r=class extends n{state={error:null};static getDerivedStateFromError(e){return{error:e}}render(){if(!this.state.error)return this.props.children;let e=String(this.state.error?.message||this.state.error||``),t=e.includes(`dynamically imported module`)||e.includes(`Loading chunk`)||e.includes(`Importing a module script failed`);return V(`div`,{className:`grid min-h-[40vh] place-items-center p-6`,children:V(`div`,{className:`max-w-lg rounded-xl border border-amber-500/30 bg-amber-500/10 p-4`,children:[V(`div`,{className:`mb-2 font-semibold text-amber-100`,children:t?`Panel update detected`:`Page failed to load`}),V(`p`,{className:`tcp-subtle text-sm`,children:t?`This page chunk was rebuilt while your browser still had the old file name cached. Reload the control panel to fetch the current assets.`:e||`The route could not be loaded.`}),V(`button`,{className:`tcp-btn mt-3`,onClick:()=>window.location.reload(),children:`Reload control panel`})]})})}};function ei(e,t){switch(e){case`chat`:return V(Fr,{...t});case`planner`:return V(Ir,{...t});case`workflows`:return V(Lr,{...t});case`marketplace`:return V(Rr,{...t});case`studio`:return V(zr,{...t});case`automations`:case`packs`:case`teams`:return V(Br,{...t});case`experiments`:return V(Vr,{...t});case`coding`:return V(Hr,{...t});case`agents`:return V(Xr,{...t});case`channels`:return V(Ur,{...t});case`mcp`:return V(Zr,{...t});case`packs-detail`:return V(Wr,{...t});case`orchestrator`:return V(Gr,{...t});case`bug-monitor`:return V(Yr,{...t});case`files`:return V(Kr,{...t});case`memory`:return V(qr,{...t});case`teams-detail`:return V(Xr,{...t});case`runs`:return V(Jr,{...t});case`approvals`:return V(kr,{...t});case`settings`:return V(Zr,{...t});default:return V(Pr,{...t})}}function ti({routeId:e,pageProps:t}){let n=pr(e);return V($r,{children:V(s,{fallback:V(Qr,{}),children:ei(n,t)})},n)}var ni={Activity:ze,Archive:it,ArrowDown:Et,ArrowLeftToLine:gt,ArrowRight:At,ArrowUpCircle:b,BadgeCheck:Je,Binary:g,Blocks:ve,Bot:je,BookOpen:Fe,Bug:ce,BugPlay:Ne,Calendar:wt,Check:le,ChevronDown:ie,ChevronLeft:ke,ChevronRight:Ee,ChevronUp:oe,ChevronsUpDown:De,ClipboardList:be,Clock:se,Clock3:ue,Code:ne,Compass:ge,CornerUpLeft:st,Copy:fe,CopyPlus:N,Cpu:v,Database:me,DatabaseZap:lt,Download:w,Eraser:E,ExternalLink:we,FilePlus:S,FileText:zt,FileInput:Lt,Files:Vt,FileSearch:Se,FileUp:He,Filter:Nt,FilterX:qe,FlaskConical:Ft,Folder:St,FolderCode:Le,FolderOpen:$e,FolderPlus:nt,FolderUp:mt,Fullscreen:Ze,Globe:dt,HardDrive:We,History:kt,Home:yt,Info:Be,KeyRound:at,Layers:Dt,Link:_t,List:te,ListChecks:jt,ListX:Ye,LoaderCircle:_e,LogOut:Pe,Menu:Ae,MessageCircle:Me,MessageSquare:k,MessagesSquare:Ct,MonitorCog:A,Network:re,Package:Te,PackagePlus:Oe,PaintBucket:ae,PanelLeft:P,Paperclip:y,Pause:Ht,Pencil:ye,Play:j,PlugZap:O,Plus:D,Radio:M,Radar:he,RefreshCw:de,Rocket:ot,RotateCcw:_,RotateCw:ct,Save:pe,Search:C,Send:T,Settings:It,Settings2:Ce,Share2:x,Shield:Ve,ShieldAlert:xe,ShieldCheck:Rt,Siren:Bt,SkipForward:Pt,SlidersHorizontal:Ie,Sparkles:Qe,Square:bt,SquareCheckBig:et,SquarePen:ft,Star:Xe,Trash2:Ge,TriangleAlert:Mt,Unlink:ut,Upload:Ue,UserPlus:Ot,Users:vt,Wrench:rt,Workflow:Re,X:Tt,XCircle:Ut},ri=new Set,ii=0;function ai(){ii=0;let e=[...ri];ri.clear();for(let t of e)ht({icons:ni,attrs:{width:`16`,height:`16`,"stroke-width":`1.8`},...t?{root:t}:{}})}function oi(e){ri.add(e||null),!ii&&(ii=window.requestAnimationFrame(ai))}var si={dashboard:{title:`Overview`,subtitle:`Command status, activity, and fast paths into the system.`},chat:{title:`Chat`,subtitle:`Session-driven conversation, tools, uploads, and live responses.`},planner:{title:`Planner`,subtitle:`Advanced long-horizon intent, multi-agent planning, and governed handoff.`},studio:{title:`Studio`,subtitle:`Advanced template-first workflow builder with reusable role prompts and visual stages.`},automations:{title:`Automations`,subtitle:`Create, Calendar, Library, and Run History.`},experiments:{title:`Experiments`,subtitle:`Hidden by default. Turn this on in Settings when you need experimental surfaces.`},coding:{title:`Coder`,subtitle:`Durable coder runs, project intake, and repository work.`},agents:{title:`Agents`,subtitle:`Search reusable roles, inspect routines, and manage workflow-ready agent drafts.`},orchestrator:{title:`Task Board`,subtitle:`Plan-driven task execution with workspace visibility and approvals.`},memory:{title:`Memory`,subtitle:`Searchable memory records and operational context snapshots.`},runs:{title:`Runs`,subtitle:`Live operations overview with queue state and per-run inspection.`},approvals:{title:`Approvals Inbox`,subtitle:`Pending human approvals across every workflow that has paused on a gate.`},settings:{title:`Settings`,subtitle:`Provider defaults, identity, themes, and runtime diagnostics.`},channels:{title:`Channels`,subtitle:`Chat integrations, tool scope, and channel configuration.`},"bug-monitor":{title:`Bug Monitor`,subtitle:`Issue detection, draft review, and GitHub publishing controls.`},packs:{title:`Packs`,subtitle:`Starter packs and pack installation paths.`},teams:{title:`Teams`,subtitle:`Team instances, approvals, and shared execution state.`},mcp:{title:`MCP`,subtitle:`Catalog, readiness, and generated integration details.`},files:{title:`Files`,subtitle:`Managed uploads, artifacts, and exports.`},"packs-detail":{title:`Packs`,subtitle:`Starter packs, installation paths, and detected attachments.`},"teams-detail":{title:`Teams`,subtitle:`Team instances, approvals, and shared execution state.`}},ci=new Set([`chat`,`automations`,`approvals`,`files`,`runs`]);function li({identity:n,currentRoute:r,providerLocked:i,navRoutes:o,onNavigate:s,onPaletteOpen:c,onThemeCycle:u,onLogout:d,statusBar:f,routeKey:p,navigationLock:m,children:h,providerGate:ee}){let[te,g]=l(!1),_=String(n.botAvatarUrl||``).trim(),[v,y]=l(_?`custom`:`default`),b=Wt(),x=!!m;e(()=>{g(!1)},[r]),e(()=>{try{oi()}catch{}},[o,r,te,f.bugMonitor?.enabled,f.bugMonitor?.monitoringActive,f.bugMonitor?.paused,f.bugMonitor?.pendingIncidents,f.bugMonitor?.blocked,f.approvals?.pendingCount,f.approvals?.checking]),e(()=>{y(_?`custom`:`default`)},[_]);let S=si[r]||{title:String(o.find(([e])=>e===r)?.[1]||`Control Panel`),subtitle:`Desktop-inspired operations UI for Tandem.`},C=a(()=>o.find(([e])=>e===r)||null,[r,o]),w=a(()=>{let e=f.bugMonitor;return e?.enabled?e.blocked?{toneClass:`blocked`,label:`Bug Monitor blocked`,shortLabel:`Blocked`}:e.paused?{toneClass:`paused`,label:`Bug Monitor paused`,shortLabel:`Paused`}:e.pendingIncidents>0?{toneClass:`incidents`,label:`Bug Monitor incidents: ${e.pendingIncidents}`,shortLabel:`${e.pendingIncidents} incident${e.pendingIncidents===1?``:`s`}`}:e.monitoringActive?{toneClass:`watching`,label:`Bug Monitor watching`,shortLabel:`Watching`}:{toneClass:`ready`,label:`Bug Monitor ready`,shortLabel:`Ready`}:null},[f.bugMonitor]),T=Math.max(0,Number(f.approvals?.pendingCount||0)),E=`${T} approval${T===1?``:`s`} pending`,D=()=>v===`fallback`?V(`span`,{className:`text-sm font-semibold uppercase`,children:String(n.botName||`T`).trim().slice(0,1)||`T`}):V(`img`,{src:v===`custom`?_:`/icon.png`,alt:n.botName||`Tandem`,className:`block h-full w-full object-contain p-0.5`,onError:()=>y(e=>e===`custom`?`default`:`fallback`)}),ne=()=>o.map(([e,t,n])=>{let a=r===e,o=i&&e!==`settings`||x;return V(`button`,{type:`button`,title:t,disabled:o,className:`tcp-rail-icon ${a?`active`:``} ${o?`locked`:``}`,onClick:()=>s(e),children:[a?V(H.span,{layoutId:`tcp-icon-indicator`,className:`tcp-rail-icon-indicator`}):null,V(`i`,{"data-lucide":n})]},e)}),re=(e=!1)=>o.map(([t,n,a])=>{let o=r===t,c=i&&t!==`settings`||x;return V(`button`,{type:`button`,disabled:c,className:`tcp-context-link ${o?`active`:``} ${c?`locked`:``}`,onClick:()=>{s(t),e&&g(!1)},children:[V(`span`,{className:`inline-flex items-center gap-2`,children:[V(`i`,{"data-lucide":a}),V(`span`,{children:n})]}),o?V(`span`,{className:`tcp-context-link-dot`}):null]},t)}),ie=(e=!1)=>V(t,{children:[e?V(`div`,{className:`tcp-context-hero`,children:[V(Kt,{className:`tcp-context-hero-glow`}),V(`div`,{className:`relative z-10 flex items-center gap-3`,children:[V(`div`,{className:`tcp-brand-avatar h-11 w-11`,children:D()}),V(`div`,{className:`min-w-0`,children:[V(`div`,{className:`truncate text-sm font-semibold`,children:n.controlPanelName||`${n.botName} Control Panel`}),V(`div`,{className:`tcp-subtle text-xs`,children:`Workspace navigation and system status`})]})]})]}):null,V(`div`,{className:`tcp-context-section ${e?``:`xl:hidden`}`.trim(),children:[V(`div`,{className:`tcp-context-section-label`,children:`Navigation`}),V(`nav`,{className:`grid gap-1`,children:re(e)})]}),e?V(`div`,{className:`tcp-context-section`,children:[V(`div`,{className:`tcp-context-section-label`,children:`System`}),V(`div`,{className:`grid gap-2`,children:[V(`div`,{className:`tcp-context-stat`,children:[V(`span`,{className:`tcp-subtle text-xs`,children:`Engine`}),f.engineHealthy?V(W,{tone:`ok`,text:`healthy`}):V(W,{tone:`warn`,text:`checking`})]}),V(`div`,{className:`tcp-context-stat`,children:[V(`span`,{className:`tcp-subtle text-xs`,children:`Provider`}),V(`span`,{className:f.providerBadge,children:f.providerText})]}),V(`div`,{className:`tcp-context-stat`,children:[V(`span`,{className:`tcp-subtle text-xs`,children:`Active runs`}),f.activeRuns>0?V(W,{tone:`live`,text:String(f.activeRuns)}):V(`span`,{className:`tcp-badge tcp-badge-ghost`,children:`idle`})]}),w?V(`div`,{className:`tcp-context-stat`,children:[V(`span`,{className:`tcp-subtle text-xs`,children:`Bug Monitor`}),V(`button`,{type:`button`,className:`tcp-bug-monitor-pill ${w.toneClass}`,disabled:x,title:f.bugMonitor?.lastError?`${w.label}: ${f.bugMonitor.lastError}`:w.label,onClick:()=>{s(`bug-monitor`),e&&g(!1)},children:[V(`i`,{"data-lucide":`bug-play`}),V(`span`,{className:`tcp-bug-monitor-dot`,"aria-hidden":`true`}),V(`span`,{children:w.shortLabel})]})]}):null,T>0?V(`div`,{className:`tcp-context-stat`,children:[V(`span`,{className:`tcp-subtle text-xs`,children:`Approvals`}),V(`button`,{type:`button`,className:`tcp-approval-pill`,disabled:x,title:E,onClick:()=>{s(`approvals`),e&&g(!1)},children:[V(`i`,{"data-lucide":`shield-alert`}),V(`span`,{children:T})]})]}):null]})]}):null,V(`div`,{className:`tcp-context-section mt-auto`,children:[V(`div`,{className:`tcp-context-section-label`,children:`Actions`}),V(`div`,{className:`grid gap-2`,children:[V(`button`,{type:`button`,className:`tcp-btn w-full justify-start`,onClick:()=>{c(),e&&g(!1)},children:[V(`i`,{"data-lucide":`search`}),`Command palette`]}),V(`button`,{type:`button`,className:`tcp-btn w-full justify-start`,onClick:()=>{u(),e&&g(!1)},children:[V(`i`,{"data-lucide":`paint-bucket`}),`Cycle theme`]}),V(`button`,{type:`button`,className:`tcp-btn w-full justify-start`,onClick:()=>{d(),e&&g(!1)},children:[V(`i`,{"data-lucide":`log-out`}),`Logout`]})]})]})]});return V(`div`,{className:`tcp-shell ${r===`chat`?`tcp-shell-chat`:``}`.trim(),children:[V(Kt,{className:`tcp-shell-background`,children:[V(`div`,{className:`tcp-shell-glow tcp-shell-glow-a`}),V(`div`,{className:`tcp-shell-glow tcp-shell-glow-b`})]}),V(`aside`,{className:`tcp-icon-rail hidden xl:flex`,children:[V(`button`,{type:`button`,className:`tcp-rail-brand`,disabled:x,onClick:()=>s(`dashboard`),children:V(`div`,{className:`tcp-brand-avatar h-10 w-10`,children:D()})}),V(`nav`,{className:`tcp-rail-nav`,children:ne()}),V(`div`,{className:`tcp-rail-footer`,children:[V(Qt,{title:`Command palette`,onClick:c,disabled:x,children:V(`i`,{"data-lucide":`search`})}),V(Qt,{title:`Cycle theme`,onClick:u,disabled:x,children:V(`i`,{"data-lucide":`paint-bucket`})}),V(Qt,{title:`Logout`,onClick:d,disabled:x,children:V(`i`,{"data-lucide":`log-out`})}),V(`div`,{className:`mt-2 flex justify-center`,children:f.engineHealthy?V(W,{tone:`ok`}):V(W,{tone:`warn`})})]})]}),V(`aside`,{className:`tcp-context-rail hidden lg:flex xl:hidden`,children:ie(!1)}),V(`main`,{className:`tcp-main-shell ${ci.has(r)?`tcp-main-shell-fill`:``}`.trim(),children:[V(`section`,{className:`tcp-mobile-topbar lg:hidden`,children:[V(`button`,{type:`button`,className:`tcp-btn h-10 px-3`,disabled:x,onClick:()=>g(!0),children:[V(`i`,{"data-lucide":`menu`}),`Menu`]}),V(`div`,{className:`min-w-0 flex-1`,children:[V(`div`,{className:`truncate text-sm font-semibold`,children:S.title}),V(`div`,{className:`tcp-subtle truncate text-xs`,children:C?.[1]||S.subtitle})]}),w?V(`button`,{type:`button`,className:`tcp-bug-monitor-pill ${w.toneClass}`,disabled:x,title:f.bugMonitor?.lastError?`${w.label}: ${f.bugMonitor.lastError}`:w.label,onClick:()=>s(`bug-monitor`),children:[V(`i`,{"data-lucide":`bug-play`}),V(`span`,{className:`tcp-bug-monitor-dot`,"aria-hidden":`true`})]}):null,T>0?V(`button`,{type:`button`,className:`tcp-approval-pill`,disabled:x,title:E,onClick:()=>s(`approvals`),children:[V(`i`,{"data-lucide":`shield-alert`}),V(`span`,{children:T})]}):null,f.activeRuns>0?V(W,{tone:`live`,text:String(f.activeRuns)}):null]}),V(`section`,{className:`tcp-topbar`,children:[V(`div`,{className:`min-w-0`,children:[V(`div`,{className:`tcp-page-eyebrow`,children:`Tandem Control`}),V(`h1`,{className:`tcp-main-title`,children:S.title}),V(`p`,{className:`tcp-subtle mt-1 line-clamp-2`,children:S.subtitle})]}),V(`div`,{className:`tcp-topbar-status`,children:[w?V(`button`,{type:`button`,className:`tcp-bug-monitor-pill ${w.toneClass}`,disabled:x,title:f.bugMonitor?.lastError?`${w.label}: ${f.bugMonitor.lastError}`:w.label,onClick:()=>s(`bug-monitor`),children:[V(`i`,{"data-lucide":`bug-play`}),V(`span`,{className:`tcp-bug-monitor-dot`,"aria-hidden":`true`}),V(`span`,{children:w.shortLabel})]}):null,T>0?V(`button`,{type:`button`,className:`tcp-approval-pill`,disabled:x,title:E,onClick:()=>s(`approvals`),children:[V(`i`,{"data-lucide":`shield-alert`}),V(`span`,{children:T}),V(`span`,{className:`hidden sm:inline`,children:[`Approval`,T===1?``:`s`]})]}):null,V(`span`,{className:f.providerBadge,children:f.providerText}),f.engineHealthy?V(W,{tone:`ok`,text:`Engine healthy`}):V(W,{tone:`warn`,text:`Checking engine`}),f.activeRuns>0?V(W,{tone:`live`,text:`${f.activeRuns} run`}):V(`span`,{className:`tcp-badge tcp-badge-ghost`,children:`No active runs`})]})]}),V(U,{initial:!1,mode:`popLayout`,children:V(H.section,{className:`tcp-main-content ${ci.has(r)?`tcp-main-content-fill`:``}`.trim(),initial:b?!1:{opacity:0,y:18},animate:b?void 0:{opacity:1,y:0},exit:b?void 0:{opacity:0,y:-14},transition:b?void 0:{duration:G.duration.normal,ease:G.easing.standard},children:h},p)})]}),V(U,{children:te?V(H.div,{className:`tcp-mobile-drawer lg:hidden`,initial:b?!1:{opacity:0},animate:b?void 0:{opacity:1},exit:b?void 0:{opacity:0},children:[V(`button`,{type:`button`,className:`tcp-mobile-drawer-backdrop`,"aria-label":`Close navigation`,onClick:()=>g(!1)}),V(H.aside,{className:`tcp-mobile-drawer-panel`,initial:b?!1:{x:`-100%`},animate:b?void 0:{x:0},exit:b?void 0:{x:`-100%`},transition:b?void 0:G.spring.drawer,children:[V(`div`,{className:`mb-3 flex items-center justify-between`,children:[V(`div`,{children:[V(`div`,{className:`text-sm font-semibold`,children:n.botName}),V(`div`,{className:`tcp-subtle text-xs`,children:S.title})]}),V(Qt,{title:`Close`,onClick:()=>g(!1),children:V(`i`,{"data-lucide":`x`})})]}),ie(!0)]})]}):null}),V(U,{children:ee||null}),V(U,{children:m?V(H.div,{className:`tcp-confirm-overlay`,style:{zIndex:180},initial:b?!1:{opacity:0},animate:b?void 0:{opacity:1},exit:b?void 0:{opacity:0},children:[V(`div`,{className:`tcp-confirm-backdrop`,"aria-hidden":`true`}),V(H.div,{className:`tcp-confirm-dialog w-[min(36rem,calc(100vw-2rem))]`,role:`alertdialog`,"aria-live":`assertive`,initial:b?!1:{opacity:0,y:10,scale:.985},animate:b?void 0:{opacity:1,y:0,scale:1},exit:b?void 0:{opacity:0,y:6,scale:.985},transition:b?void 0:{duration:G.duration.normal,ease:G.easing.standard},children:V(`div`,{className:`flex items-center gap-3`,children:[V(Yt,{className:`h-12 w-12 shrink-0`,mode:`compact`}),V(`div`,{className:`min-w-0`,children:[V(`h3`,{className:`tcp-confirm-title`,children:m.title}),V(`p`,{className:`tcp-confirm-message`,children:m.message})]})]})})]}):null})]})}function ui(e){let t=String(e||``).trim().toLowerCase();return!!t&&t!==`ollama`&&t!==`llama_cpp`&&t!==`llama.cpp`&&t!==`local`&&t!==`openai-codex`}function di(e){if(!e||typeof e!=`object`)return!1;let t=String(e.auth_kind||e.authKind||``).trim().toLowerCase(),n=String(e.status||``).trim().toLowerCase();return t!==`oauth`||n===`reauth_required`||n===`expired`||n===`error`?!1:e.connected===!0||n===`connected`||n===`configured`}function fi(e,t){let n=String(t||``).trim().toLowerCase();if(!n||!e||typeof e!=`object`)return!1;let r=e=>!e||typeof e!=`object`?!1:!!(di(e)||e.has_key===!0||e.hasKey===!0||e.configured===!0&&!ui(n));return r(e[n])||r(e.providers?.[n])}function pi(e,t){let n=String(t||``).trim().toLowerCase();if(!n||!e||typeof e!=`object`)return null;let r=e[n];if(r&&typeof r==`object`)return r;let i=e.providers?.[n];return i&&typeof i==`object`?i:null}function mi(e,t,n){let r=String(e?.default||e?.selected_model?.provider_id||``).trim(),i=e?.providers?.[r]||{},a=String(i.default_model||i.defaultModel||e?.selected_model?.model_id||``).trim(),o=new Set,s=e=>{if(!e||typeof e!=`object`)return;let t=e.providers&&typeof e.providers==`object`?e.providers:e;if(!(!t||typeof t!=`object`))for(let[e,n]of Object.entries(t)){if(!n||typeof n!=`object`)continue;let t=String(e||``).trim().toLowerCase();if(!t)continue;let r=String(n.status||n.statusText||``).trim().toLowerCase();(n.connected===!0||r===`connected`||r===`configured`)&&o.add(t)}};if(Array.isArray(t?.connected))for(let e of t.connected){let t=String(e||``).trim().toLowerCase();t&&o.add(t)}s(n);let c=pi(n,r),l=fi(n,r),u=!!r&&!!a&&(!ui(r)||l);return{ready:u,defaultProvider:r,defaultModel:a,connected:[...o],error:``,needsOnboarding:!u,defaultProviderAuthKind:String(c?.auth_kind||c?.authKind||``).trim().toLowerCase(),defaultProviderSource:String(c?.source||``).trim().toLowerCase(),defaultProviderManagedBy:String(c?.managed_by||c?.managedBy||``).trim().toLowerCase()}}var hi=`tcp.nav.visibility.v1`,gi=new Set([`dashboard`,`chat`,`workflows`,`automations`,`coding`,`files`,`bug-monitor`,`settings`]);function _i(e){let t=new Set([`planner`,`studio`,`coding`,`memory`,`files`,`marketplace`,`orchestrator`,`experiments`,`teams`]);return Object.fromEntries(Z.map(([n])=>[n,e?gi.has(n):!t.has(n)]))}function vi(e,t){let n=_i(t);if(!e||typeof e!=`object`)return n;let r=e,i={...n};for(let[e]of Z)typeof r[e]==`boolean`&&(i[e]=r[e]);return i}function yi(e){try{let t=localStorage.getItem(hi);return t?vi(JSON.parse(t),e):_i(e)}catch{return _i(e)}}function bi(e){try{localStorage.setItem(hi,JSON.stringify(e))}catch{}}function xi(e){return Z.filter(([t])=>e[t]!==!1)}function Si(e=!0){return h({queryKey:[`system`,`health`],queryFn:()=>q(`/api/system/health`),enabled:e,refetchInterval:e?15e3:!1,retry:(e,t)=>K(t)?e<6:e<2,retryDelay:e=>Math.min(1e3*2**e,1e4)})}function Ci(e=!0){return h({queryKey:[`swarm`,`status`],queryFn:()=>q(`/api/swarm/status`),enabled:e,refetchInterval:e?5e3:!1,retry:(e,t)=>K(t)?e<6:e<2,retryDelay:e=>Math.min(1e3*2**e,1e4)})}function wi(e=!0){return h({queryKey:[`system`,`capabilities`],queryFn:()=>q(`/api/capabilities`),enabled:e,refetchInterval:e?6e4:!1,staleTime:3e4})}var Ti=`tandem_control_panel_token`,Ei=new Set([`packs`,`teams`,`channels`,`mcp`,`files`,`packs-detail`,`teams-detail`]);function Di(){try{return localStorage.getItem(Ti)||``}catch{return``}}function Oi(e){try{localStorage.setItem(Ti,e)}catch{}}function ki(){try{localStorage.removeItem(Ti)}catch{}}function Ai(e,t){return h({queryKey:[`provider`,`status`],enabled:t&&!!e,refetchInterval:t?15e3:!1,queryFn:async()=>{if(!e)return{ready:!1,defaultProvider:``,defaultModel:``,connected:[],error:``,needsOnboarding:!1,defaultProviderAuthKind:``,defaultProviderSource:``,defaultProviderManagedBy:``};try{let[t,n]=await Promise.all([e.providers.config(),e.providers.authStatus().catch(()=>({}))]);return mi(t,null,n)}catch(e){return{ready:!1,defaultProvider:``,defaultModel:``,connected:[],error:e instanceof Error?e.message:String(e),needsOnboarding:!1,defaultProviderAuthKind:``,defaultProviderSource:``,defaultProviderManagedBy:``}}}})}function ji(e,t){return h({queryKey:[`identity`],enabled:t&&!!e,refetchInterval:t?3e4:!1,queryFn:async()=>{if(!e)return{botName:`Tandem`,botAvatarUrl:``,controlPanelName:`Tandem Control Panel`};try{let e=(await q(`/api/engine/config/identity`,{method:`GET`}))?.identity||{},t=String(e?.bot?.canonical_name||e?.bot?.canonicalName||``).trim(),n=e?.bot?.aliases||{},r=String(e?.bot?.avatar_url||e?.bot?.avatarUrl||``).trim(),i=String(n?.control_panel||n?.controlPanel||``).trim(),a=t||`Tandem`;return{botName:a,botAvatarUrl:r,controlPanelName:i||`${a} Control Panel`}}catch{return{botName:`Tandem`,botAvatarUrl:``,controlPanelName:`Tandem Control Panel`}}}})}function Mi(e){return h({queryKey:[`bug-monitor`,`status`],enabled:e,refetchInterval:e?1e4:!1,queryFn:async()=>{try{return await q(`/api/engine/bug-monitor/status`,{method:`GET`})}catch{return null}}})}function Ni(e){return h({queryKey:[`approvals`,`pending`,`count`],enabled:e,refetchInterval:e?5e3:!1,queryFn:async()=>{try{let e=await q(`/api/engine/approvals/pending`,{method:`GET`}),t=Array.isArray(e?.approvals)?e.approvals:[],n=Number(e?.count);return{count:Number.isFinite(n)?n:t.length}}catch{return{count:0}}}})}function Pi({controlPanelName:e,controlPanelMode:t,controlPanelModeReason:n,errorMessage:r,onRetry:i,onCheckEngine:a}){let[o,s]=l(``),[c,u]=l(!1);return V(`main`,{className:`relative min-h-screen overflow-hidden px-5 py-8`,children:[V(Kt,{className:`tcp-shell-background`,children:[V(`div`,{className:`tcp-shell-glow tcp-shell-glow-a`}),V(`div`,{className:`tcp-shell-glow tcp-shell-glow-b`})]}),V(`div`,{className:`relative z-10 mx-auto grid min-h-[calc(100vh-4rem)] w-full max-w-6xl items-center gap-6 lg:grid-cols-[1.05fr_0.95fr]`,children:[V(`section`,{className:`grid gap-4`,children:[V(`div`,{className:`tcp-page-eyebrow`,children:`Tandem Control`}),V(`h1`,{className:`tcp-page-title max-w-3xl`,children:`Reconnecting your session.`}),V(`p`,{className:`tcp-subtle max-w-2xl text-base`,children:`The control panel still has your session, but the engine is temporarily unavailable. We'll reconnect automatically as soon as it responds again.`})]}),V(tn,{title:e,subtitle:t===`aca`?`ACA install detected. Waiting for the Tandem engine to restore the existing session.`:`Standalone install detected. Waiting for the Tandem engine to restore the existing session.`,children:V(`div`,{className:`grid gap-3`,children:[V(`div`,{className:`rounded-xl border border-slate-700/60 bg-slate-950/30 p-3`,children:[V(`div`,{className:`mb-2 flex items-center justify-between gap-3`,children:[V(`div`,{className:`font-medium`,children:`Session recovery`}),V(W,{tone:c?`ok`:`warn`,text:c?`Engine reachable`:`Reconnecting`})]}),V(`p`,{className:`tcp-subtle text-xs`,children:`Existing auth is intact. The panel is waiting for the engine before reloading the app shell.`}),n?V(`p`,{className:`tcp-subtle mt-2 text-xs`,children:n}):null]}),V(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[V(`button`,{type:`button`,className:`tcp-btn-primary w-full`,onClick:i,children:[V(`i`,{"data-lucide":`refresh-cw`}),`Retry now`]}),V(`button`,{type:`button`,className:`tcp-btn w-full`,onClick:async()=>{try{let e=await a();u(!0),s(e)}catch(e){u(!1),s(e instanceof Error?e.message:String(e))}},children:[V(`i`,{"data-lucide":`activity`}),`Check engine`]})]}),V(`div`,{className:`min-h-[1.2rem] text-sm ${c?`text-lime-300`:`text-amber-200`}`,children:o||r})]})})]})]})}function Fi(){let n=p(),{toast:r}=yr(),[i,s]=l(Gt()),[c,u]=l(!1),[f,m]=l(null),[te,g]=l(!1),_=o(!1),v=o(null);v.current===null&&(v.current=Di().trim());let[y,b]=l(()=>!!v.current),{route:x,navigate:S}=gr({canNavigate:d((e,t)=>!f||e===t,[f])});e(()=>{Jt(i)},[i]);let C=h({queryKey:[`auth`,`me`],enabled:!y,retry:(e,t)=>K(t)&&e<4,retryDelay:e=>Math.min(1e3*2**e,5e3),refetchInterval:e=>K(e.state.error)?5e3:e.state.data?3e4:!1,refetchOnWindowFocus:!0,queryFn:()=>q(`/api/auth/me`,{method:`GET`,cache:`no-store`})}),w=K(C.error),T=C.data?.ok===!0,E=a(()=>T?new jn({baseUrl:`/api/engine`,token:`session`}):null,[T]),D=Ai(E,T),ne=ji(E,T),re=Si(T),ie=Ci(T),ae=Mi(T),oe=Ni(T),O=wi(),se=String(O.data?.control_panel_mode||(O.data?.aca_integration?`aca`:`standalone`)).trim()||`standalone`,k=se===`aca`,ce=o(!1),[A,le]=l(()=>yi(!1));e(()=>{!T||!O.isFetched||ce.current||(ce.current=!0,le(yi(k)))},[k,T,O.isFetched]),e(()=>{ce.current&&bi(A)},[A]),e(()=>{try{oi()}catch{}},[T,A,x]),e(()=>{f&&x!==`automations`&&m(null)},[f,x]),e(()=>{f&&u(!1)},[f]),e(()=>{if(!f)return;let e=e=>(e.preventDefault(),e.returnValue=``,``);return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[f]);let j=ee({mutationFn:async({token:e})=>{await q(`/api/auth/login`,{method:`POST`,body:JSON.stringify({token:e})})},onSuccess:(e,t)=>{t.remember?Oi(t.token):ki(),n.invalidateQueries({queryKey:[`auth`,`me`]}),r(`ok`,`Signed in.`),S(`dashboard`)},onError:e=>{let t=e instanceof Error?e.message:String(e);r(K(e)?`info`:`err`,t)}});e(()=>{if(y||T||w||j.isPending||_.current)return;let e=Di().trim();if(!e){_.current=!0;return}_.current=!0,j.mutate({token:e,remember:!0})},[y,w,T,j]),e(()=>{if(!y||j.isPending)return;let e=v.current||``;if(_.current=!0,!e){b(!1);return}j.mutate({token:e,remember:!0},{onError:()=>{ki(),v.current=``},onSettled:()=>{b(!1)}})},[y,j]);let ue=d(async()=>{await q(`/api/auth/logout`,{method:`POST`}).catch(()=>{}),n.removeQueries({queryKey:[`auth`]}),n.removeQueries({queryKey:[`control-panel`]}),n.removeQueries({queryKey:[`provider`]}),n.removeQueries({queryKey:[`identity`]}),n.invalidateQueries({queryKey:[`auth`,`me`]}),r(`info`,`Logged out.`)},[n,r]),de=a(()=>new Set([`chat`,`planner`,`studio`,`agents`,`orchestrator`,`teams`,`experiments`]),[]),fe=!!D.data?.needsOnboarding,M=T&&fe;e(()=>{if(!M){g(!1);return}de.has(x)&&(S(`settings`),te||(g(!0),r(`info`,`Set provider + default model in Providers first to unlock the control panel.`)))},[de,S,te,M,x,r]);let N=M&&de.has(x)?`settings`:x,pe=d(async()=>{await n.invalidateQueries({queryKey:[`provider`,`status`]})},[n]),me=d(async()=>{await n.invalidateQueries({queryKey:[`identity`]})},[n]),he=d((e,t)=>{le(n=>{let r={...n,[e]:t};return r[e]===n[e]?n:r})},[]),ge=d(()=>{le(e=>{let t={...e};for(let[e]of Z)t[e]=!0;return t})},[]),_e=d(()=>{le(_i(k))},[k]),ve=a(()=>xi(A),[A]),ye=a(()=>({acaMode:k,routeVisibility:A,setRouteVisibility:he,showAllSections:ge,resetNavigation:_e}),[k,A,_e,he,ge]),be=d(e=>{let t=nn(e);return s(t.id),t},[s]),xe=ne.data||{botName:`Tandem`,botAvatarUrl:``,controlPanelName:`Tandem Control Panel`},Se={client:E,api:q,toast:r,navigate:S,currentRoute:N,providerStatus:{ready:!!D.data?.ready,defaultProvider:D.data?.defaultProvider||``,defaultModel:D.data?.defaultModel||``,connected:D.data?.connected||[],error:D.data?.error||``,needsOnboarding:!!D.data?.needsOnboarding,defaultProviderAuthKind:D.data?.defaultProviderAuthKind||``,defaultProviderSource:D.data?.defaultProviderSource||``,defaultProviderManagedBy:D.data?.defaultProviderManagedBy||``},identity:xe,refreshProviderStatus:pe,refreshIdentityStatus:me,providerHints:lr,themes:qt,setTheme:be,themeId:i,navigation:ye,navigationLock:f,setNavigationLock:m},Ce=a(()=>{let e=ur.filter(([e])=>A[e]!==!1&&!Ei.has(e)).map(([e,t])=>({id:`route:${e}`,label:`Go to ${t}`,group:`Routes`,onSelect:()=>S(e)})),t=[{id:`action:new-chat`,label:`New chat session`,group:`Actions`,onSelect:()=>{window.dispatchEvent(new CustomEvent(`tcp:new-chat`)),S(`chat`)}},{id:`action:start-engine-check`,label:`Check engine health`,group:`Actions`,onSelect:async()=>{try{let e=await q(`/api/system/health`);r(`info`,`Engine ${e?.engine?.ready||e?.engine?.healthy?`healthy`:`unhealthy`}: ${e?.engineUrl||`n/a`}`)}catch(e){let t=e instanceof Error?e.message:String(e);r(K(e)?`info`:`err`,t)}}},{id:`action:open-settings`,label:`Open provider settings`,group:`Actions`,onSelect:()=>S(`settings`)},...A.orchestrator===!1?[]:[{id:`action:open-task-board`,label:`Open task board`,group:`Actions`,onSelect:()=>S(`orchestrator`)}]];return[...e,...t]},[A,S,r]);if(ar(()=>{f||u(e=>!e)}),!T)return w?V(Pi,{controlPanelName:xe.controlPanelName,controlPanelMode:se,controlPanelModeReason:String(O.data?.control_panel_mode_reason||``).trim(),errorMessage:C.error?.message||`Engine is reconnecting.`,onRetry:()=>{C.refetch()},onCheckEngine:async()=>{let e=await q(`/api/system/health`,{cache:`no-store`});return`Engine check: ${e?.engine?.ready||e?.engine?.healthy?`healthy`:`unhealthy`} at ${e?.engineUrl||`n/a`}`}}):V(ir,{loginMutation:j,savedToken:Di(),controlPanelName:xe.controlPanelName,controlPanelMode:se,controlPanelModeReason:String(O.data?.control_panel_mode_reason||``).trim(),onCheckEngine:async()=>{let e=await q(`/api/system/health`);return`Engine check: ${e?.engine?.ready||e?.engine?.healthy?`healthy`:`unhealthy`} at ${e?.engineUrl||`n/a`}`}});let we=D.data?.ready?`tcp-badge-ok`:`tcp-badge-warn`,Te=D.data?.ready?`${D.data?.defaultProvider||`none`}/${D.data?.defaultModel||`none`}`:`provider setup required`,Ee=ae.data||null,P=Ee?.status||Ee||null,De=!!P?.config?.enabled,Oe=Number(P?.runtime?.pending_incidents||0),ke=!!P?.runtime?.monitoring_active,Ae=!!P?.runtime?.paused,je=!!P?.readiness?.ingest_ready,Me=!!P?.readiness?.publish_ready,Ne=String(P?.runtime?.last_runtime_error||P?.last_error||``).trim();return V(t,{children:[V(li,{identity:xe,currentRoute:N,providerLocked:M,navRoutes:ve,onNavigate:S,onPaletteOpen:()=>u(!0),onThemeCycle:()=>be(rn(i)),onLogout:ue,navigationLock:f,statusBar:{engineHealthy:!!(re.data?.engine?.ready||re.data?.engine?.healthy),providerBadge:we,providerText:Te,activeRuns:+!![`planning`,`awaiting_approval`,`running`].includes(String(ie.data?.status||``).toLowerCase()),bugMonitor:De?{enabled:!0,monitoringActive:ke,paused:Ae,pendingIncidents:Oe,blocked:!je,lastError:ke&&!Me&&Ne?`Watching locally only. ${Ne}`:Ne}:null,approvals:{pendingCount:Number(oe.data?.count||0),checking:oe.isFetching}},routeKey:N,providerGate:M&&N!==`settings`?V(H.div,{className:`tcp-confirm-overlay`,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},children:V(H.div,{className:`tcp-confirm-dialog`,initial:{opacity:0,y:8,scale:.98},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:6,scale:.98},children:[V(`h3`,{className:`tcp-confirm-title`,children:`Provider Setup Required`}),V(`p`,{className:`tcp-confirm-message`,children:`Configure provider and default model in Providers to unlock all sections.`}),V(`div`,{className:`tcp-confirm-actions`,children:V(`button`,{className:`tcp-btn-primary`,onClick:()=>S(`settings`),children:`Open Providers`})})]})}):null,children:V(ti,{routeId:N,pageProps:Se})}),V(or,{open:c,onClose:()=>u(!1),actions:Ce})]})}function Ii(){return V(vr,{children:V(Fi,{})})}var Li=new tt({defaultOptions:{queries:{retry:1,staleTime:5e3,refetchOnWindowFocus:!1}}}),Ri=document.getElementById(`app`);if(!Ri)throw Error(`Missing #app host`);f(Ri).render(V(i,{children:V(m,{client:Li,children:V(Ii,{})})}));export{oi as a,xr as c,Z as d,lr as f,bi as i,Cr as l,Si as n,Q as o,_i as r,Sr as s,wi as t,br as u};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
function e(e){return Array.isArray(e)?e.map(e=>e?typeof e==`string`?e:typeof e.text==`string`?e.text:typeof e.delta==`string`?e.delta:typeof e.content==`string`?e.content:``:``).filter(Boolean).join(`
|
|
2
|
+
`).trim():``}function t(e){return String(e?.info?.role||e?.role||e?.message_role||e?.type||e?.author||`assistant`).trim().toLowerCase()}function n(t){let n=e(t?.parts);if(n)return n;let r=[t?.content,t?.text,t?.message,t?.delta,t?.body].map(e=>typeof e==`string`?e:``).find(e=>e.trim().length>0);if(r)return r.trim();let i=t?.content;if(Array.isArray(i)){let e=i.map(e=>e?typeof e==`string`?e:typeof e?.text==`string`?e.text:typeof e?.content==`string`?e.content:``:``).filter(Boolean);if(e.length)return e.join(`
|
|
3
|
+
`).trim()}return``}function r(e,t){return e===`assistant`?t||`Assistant`:e===`user`?`User`:e===`system`?`System`:e||`Assistant`}function i(e,i,a){let o=t(e),s=n(e),c=o===`assistant`||o===`system`;return{id:String(e?.id||e?.messageID||e?.message_id||e?.event_id||`${o}-${i}`).trim()||`${o}-${i}`,role:o,displayRole:r(o,a),text:s,markdown:c}}function a(e,t){return(Array.isArray(e)?e:Array.isArray(e?.messages)?e.messages:[]).map((e,n)=>i(e,n,t))}export{a as t};
|