@telepath-computer/television 0.1.34 → 0.1.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ artifact-view{display:flex;flex-direction:column;width:100%;height:100%;border-radius:10px;overflow:hidden;box-shadow:0 0 0 .5px var(--color-border, #e1e1e1),0 4px 6px -2px #0000001f,0 40px 60px -16px #00000038;transition:box-shadow .15s ease,transform .15s ease}artifact-view .artifact-title-bar{display:flex;align-items:center;justify-content:space-between;height:30px;padding:0 10px;background:linear-gradient(180deg,var(--color-highlight),transparent),color-mix(in oklch,var(--color-surface-muted),transparent 30%);backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);box-shadow:inset 0 .5px 0 var(--color-border, #e1e1e1),inset 0 1.5px 0 var(--color-highlight);font-size:12px;font-weight:500;touch-action:none;-webkit-user-select:none;user-select:none}artifact-view[dragging=true]{box-shadow:0 0 0 .5px var(--color-border, #e1e1e1),0 6px 16px #00000024,0 20px 56px #0000003d}artifact-view[dragging=true] .artifact-title-bar{background:linear-gradient(180deg,var(--color-highlight),transparent),var(--color-surface-muted);backdrop-filter:none;-webkit-backdrop-filter:none}artifact-view .artifact-title-group{display:flex;align-items:center;gap:6px;min-width:0}artifact-view .artifact-title-icon{display:inline-flex;flex:none;color:var(--color-text-muted)}artifact-view .artifact-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}artifact-view .artifact-close-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:inherit;border-radius:4px}artifact-view .artifact-close-btn:hover{background:var(--color-hover, rgba(0, 0, 0, .05))}artifact-view .artifact-content{flex:1;min-height:0;overflow:auto;background:var(--color-surface)}artifact-view iframe.artifact-frame{border:0;width:100%;display:block}artifact-view .artifact-placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-text-muted, #888);font-size:12px}layout-view{width:100%;flex:1;min-width:0;min-height:0;display:flex;align-items:flex-start;overflow:hidden;outline:none;position:relative;--layout-unit-x: 120px;--layout-unit-y: 120px;--layout-gap: 16px;--layout-drag-transition-ms: 0ms;--color-drag-target: color-mix( in srgb, var(--color-border, var(--neutral-300, #cbd5e1)) 55%, transparent )}layout-view .track{display:flex;align-items:start;gap:var(--layout-gap);flex-shrink:0;width:max-content;will-change:transform;transition:transform .2s ease}layout-view .node{display:grid;grid-template-columns:repeat(4,var(--layout-unit-x));grid-template-rows:repeat(6,var(--layout-unit-y));gap:var(--layout-gap);align-self:start;width:calc(var(--layout-unit-x) * 4 + var(--layout-gap) * 3);will-change:transform}layout-view .card-slot{border-radius:12px;box-sizing:border-box;cursor:default;min-width:0;min-height:0;position:relative;z-index:1}layout-view .card-slot artifact-view{width:100%;height:100%}layout-view .card-placeholder{border-radius:12px;background:var(--color-drag-target);position:relative;z-index:0}layout-view .card-placeholder[data-layout-placeholder-ghost=true]{background:transparent;border:0;opacity:0;pointer-events:none}layout-view .drag-preview{position:fixed;z-index:10;pointer-events:none}layout-view .drag-preview>*{width:100%;height:100%}screen-view{width:100%;flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}screen-view [data-testid=empty-screen]{margin:0;padding:1rem}message-history{position:relative;display:flex;flex-direction:column;min-height:0;color:#ffffffe6;line-height:1.5}message-history:not(:has(.message)){display:none}message-history .history-scroll{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:12px;padding:24px 8px 12px;overflow-y:auto;mask-image:linear-gradient(to bottom,transparent 0,black 24px,black calc(100% - 24px),transparent 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0,black 24px,black calc(100% - 24px),transparent 100%)}message-history[data-pinned] .history-scroll{mask-image:linear-gradient(to bottom,transparent 0,black 24px);-webkit-mask-image:linear-gradient(to bottom,transparent 0,black 24px)}message-history .message{padding:6px 10px;border-radius:var(--radius-8);word-wrap:break-word}message-history .message-user{align-self:flex-start;max-width:85%;background:#ffffff1a;white-space:pre-wrap}message-history .message-assistant{align-self:stretch}message-history .message-assistant>:first-child{margin-top:0}message-history .message-assistant>:last-child{margin-bottom:0}message-history .message-assistant p,message-history .message-assistant ul,message-history .message-assistant ol,message-history .message-assistant pre,message-history .message-assistant blockquote{margin:0 0 8px}message-history .message-assistant h1,message-history .message-assistant h2,message-history .message-assistant h3,message-history .message-assistant h4{margin:12px 0 4px;font-weight:600;line-height:1.3}message-history .message-assistant ul,message-history .message-assistant ol{padding-left:20px}message-history .message-assistant code{padding:1px 4px;border-radius:3px;background:#ffffff1a;font-family:var(--font-mono);font-size:.9em}message-history .message-assistant pre{padding:8px 10px;border-radius:var(--radius-8);background:#ffffff14;overflow-x:auto}message-history .message-assistant pre code{padding:0;background:none}message-history .message-assistant blockquote{padding-left:10px;border-left:2px solid rgba(255,255,255,.2);color:#ffffffb3}message-history .message-assistant a{color:#fffffff2;text-decoration:underline;text-underline-offset:2px}message-history .history-jump{position:absolute;right:8px;bottom:8px;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:999px;background:#ffffff26;color:#ffffffe6;transition:opacity .15s ease}message-history .history-jump:hover{background:#ffffff40}message-history[data-pinned] .history-jump{opacity:0;pointer-events:none}command-panel{position:absolute;bottom:8px;right:8px;display:flex;width:320px;padding:6px 10px;border-radius:var(--radius-8);background:linear-gradient(180deg,rgba(0,0,0,.03),transparent),#0000000f;border:1px solid rgba(0,0,0,.1);box-shadow:inset 0 1px #0000000a,inset 0 -1px #ffffff2e}command-panel .trigger{flex:1;min-width:0;min-height:0;margin:0;padding:0;border:none;outline:none;background:transparent;color:#00000073;font:inherit;line-height:1.4;justify-content:flex-start;gap:0;cursor:text}command-panel .trigger:hover{background:transparent}command-panel[open]{width:380px;padding:8px;flex-direction:column;background:#000c;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:12px;box-shadow:0 8px 20px #0006}command-panel[open] message-history{max-height:min(60vh,480px);margin:-8px -8px 0}command-panel[open] .input{flex:0 0 auto;min-width:0;max-height:12rem;padding:8px 10px;border-radius:var(--radius-8);resize:none;border:none;outline:none;background:#000;color:#ffffffe6;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:1.4;field-sizing:content}command-panel[open] .input::placeholder{color:#ffffff73}app-toolbar{position:relative;display:flex;align-items:center;gap:8px;padding:8px 336px 8px 8px;min-height:46px;flex-shrink:0;-webkit-user-select:none;user-select:none}television-app{width:100%;height:100%;display:block;background:url(./gradient-j-DX-EI0uV.jpg) center / cover no-repeat}screen-picker,screen-picker [trigger],button[variant=toolbar],.settings-server-remove-button,.settings-submit-button,.settings-cancel-button,.settings-connect-button,.settings-field input{-webkit-app-region:no-drag}screen-picker dropdown-menu::part(panel){min-width:18rem}screen-picker [trigger],screen-picker [trigger][data-dropdown-trigger]{min-width:0;padding:0;border:none;background:transparent;font-size:13px;font-weight:600}screen-picker [trigger] .trigger-label{white-space:nowrap}dropdown-group{display:block;padding:4px 0}dropdown-label{display:block;padding:0 10px 4px;font-size:12px;color:color-mix(in srgb,currentColor 60%,transparent)}dropdown-item{display:block;padding:6px 10px;border-radius:4px}dropdown-item[selected]{background:color-mix(in srgb,var(--color-border) 70%,white)}television-app>main{width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}television-app>main>screen-view{flex:1 1 auto;min-height:0}television-app>main>app-toolbar{flex:0 0 auto}television-app>main.auth-gate{align-items:center;justify-content:center}.settings-panel{width:min(32rem,100%);display:flex;flex-direction:column;padding:20px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-bg)}.screen-modal,.auth-modal{width:min(24rem,100%);display:flex;flex-direction:column;padding:20px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-bg)}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-modal-title,.auth-modal-copy{margin:0}.auth-token-input-invalid{border-color:#c74343}.screen-form{display:flex;flex-direction:column;gap:12px}.screen-form-actions{display:flex;gap:8px}.screen-modal-title,.screen-delete-copy,.screen-delete-warning,.screen-delete-error{margin:0}.screen-delete-warning,.screen-delete-error{font-size:13px}.screen-delete-error{color:#c74343}.settings-section-title{margin:0}.settings-section,.settings-server-list,.settings-add-server-form{display:flex;flex-direction:column;gap:12px}.settings-form-actions{display:flex;gap:8px}.settings-card{padding:12px;border:1px solid var(--color-border);border-radius:8px}.settings-server{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-server-details{min-width:0}.settings-server-name{font-weight:600}.settings-server-url{font-size:13px;word-break:break-word;color:color-mix(in srgb,currentColor 70%,transparent)}.settings-server-remove-button,.settings-submit-button,.settings-cancel-button,.settings-connect-button{padding:8px 12px;border-radius:8px}.settings-field{display:flex;flex-direction:column;gap:6px}.settings-field input{width:100%;padding:8px 10px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg);color:inherit;font:inherit;box-sizing:border-box}.settings-submit-button,.settings-cancel-button,.settings-connect-button{align-self:flex-start}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%}h1,h2,h3,h4,h5,h6,p,ul,ol,blockquote,pre,hr{margin:0}button,input,textarea,select{font:inherit;color:inherit}@font-face{font-family:Hind;src:url(./Hind-Variable-C47b_dt9.woff2) format("woff2-variations");font-weight:300 700;font-style:normal;font-display:swap}:root{--font-sans: "Hind", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-brand: var(--font-sans);--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;--text-base: 14px;--text-scale: 1.125;--text-sm: round(calc(var(--text-base) / var(--text-scale)), 1px);--text-lg: round(calc(var(--text-base) * var(--text-scale)), 1px);--text-xl: round(calc(var(--text-lg) * var(--text-scale)), 1px);--leading-base: 1.5;--space-2: 2px;--space-4: 4px;--space-6: 6px;--space-8: 8px;--space-12: 12px;--space-16: 16px;--space-24: 24px;--space-32: 32px;--space-48: 48px;--space-64: 64px;--radius-4: 4px;--radius-6: 6px;--radius-8: 8px;--layer-popover: 10;--layer-modal: 1000;--shadow-popover: 0 12px 32px rgb(0 0 0 / .14);--shadow-modal: 0 24px 64px rgb(0 0 0 / .2);--black: #000000;--white: #ffffff;--neutral-50: oklch(.985 0 0);--neutral-100: oklch(.97 0 0);--neutral-200: oklch(.923 0 0);--neutral-300: oklch(.869 0 0);--neutral-350: oklch(.79 0 0);--neutral-400: oklch(.709 0 0);--neutral-500: oklch(.553 0 0);--neutral-600: oklch(.444 0 0);--neutral-700: oklch(.374 0 0);--neutral-800: oklch(.268 0 0);--neutral-900: oklch(.216 0 0);--neutral-950: oklch(.147 0 0);--red-50: oklch(.969 .015 12.422);--red-100: oklch(.941 .03 12.58);--red-200: oklch(.892 .058 10.001);--red-300: oklch(.81 .117 11.638);--red-400: oklch(.712 .194 13.428);--red-500: oklch(.645 .246 16.439);--red-600: oklch(.586 .253 17.585);--red-700: oklch(.514 .222 16.935);--red-800: oklch(.455 .188 13.697);--red-900: oklch(.41 .159 10.272);--red-950: oklch(.271 .105 12.094);--orange-50: oklch(.98 .016 73.684);--orange-100: oklch(.954 .038 75.164);--orange-200: oklch(.901 .076 70.697);--orange-300: oklch(.837 .128 66.29);--orange-400: oklch(.75 .183 55.934);--orange-500: oklch(.705 .213 47.604);--orange-600: oklch(.646 .222 41.116);--orange-700: oklch(.553 .195 38.402);--orange-800: oklch(.47 .157 37.304);--orange-900: oklch(.408 .123 38.172);--orange-950: oklch(.266 .079 36.259);--yellow-50: oklch(.987 .026 102.212);--yellow-100: oklch(.973 .071 103.193);--yellow-200: oklch(.945 .129 101.54);--yellow-300: oklch(.905 .182 98.111);--yellow-400: oklch(.852 .199 91.936);--yellow-500: oklch(.795 .184 86.047);--yellow-600: oklch(.681 .162 75.834);--yellow-700: oklch(.554 .135 66.442);--yellow-800: oklch(.476 .114 61.907);--yellow-900: oklch(.421 .095 57.708);--yellow-950: oklch(.286 .066 53.813);--green-50: oklch(.979 .021 166.113);--green-100: oklch(.95 .052 163.051);--green-200: oklch(.905 .093 164.15);--green-300: oklch(.845 .143 164.978);--green-400: oklch(.765 .177 163.223);--green-500: oklch(.696 .17 162.48);--green-600: oklch(.596 .145 163.225);--green-700: oklch(.508 .118 165.612);--green-800: oklch(.432 .095 166.913);--green-900: oklch(.378 .077 168.94);--green-950: oklch(.262 .051 172.552);--blue-50: oklch(.97 .014 254.604);--blue-100: oklch(.932 .032 255.585);--blue-200: oklch(.882 .059 254.128);--blue-300: oklch(.809 .105 251.813);--blue-400: oklch(.707 .165 254.624);--blue-500: oklch(.623 .214 259.815);--blue-600: oklch(.546 .245 262.881);--blue-700: oklch(.488 .243 264.376);--blue-800: oklch(.424 .199 265.638);--blue-900: oklch(.379 .146 265.522);--blue-950: oklch(.282 .091 267.935);--purple-50: oklch(.969 .016 293.756);--purple-100: oklch(.943 .029 294.588);--purple-200: oklch(.894 .057 293.283);--purple-300: oklch(.811 .111 293.571);--purple-400: oklch(.702 .183 293.541);--purple-500: oklch(.606 .25 292.717);--purple-600: oklch(.541 .281 293.009);--purple-700: oklch(.491 .27 292.581);--purple-800: oklch(.432 .232 292.759);--purple-900: oklch(.38 .189 293.745);--purple-950: oklch(.283 .141 291.089)}:root{--color-bg: var(--neutral-50);--color-bg-muted: var(--neutral-100);--color-surface: var(--white);--color-surface-muted: var(--neutral-100);--color-interactive: var(--neutral-200);--color-interactive-hover: var(--neutral-300);--color-border: var(--neutral-300);--color-border-muted: var(--neutral-200);--color-text: var(--neutral-900);--color-text-muted: var(--neutral-500);--color-link: inherit;--color-focus-ring: var(--neutral-500);--color-overlay-backdrop: rgb(0 0 0 / .5);--color-highlight: rgb(255 255 255 / .5);--color-danger: var(--red-600);color-scheme:light}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-base);color:var(--color-text);background:var(--color-bg)}a{color:var(--color-link);text-underline-offset:.15em;text-decoration-thickness:.08em}h1,h2,h3,h4,h5,h6{font-weight:600;color:var(--color-text)}code{font-family:var(--font-mono);font-size:.9em;background:var(--color-bg-muted);padding:var(--space-2) var(--space-4);border-radius:var(--radius-4)}pre{font-family:var(--font-mono);background:var(--color-bg-muted);padding:var(--space-12);border-radius:var(--radius-8);overflow-x:auto}pre code{background:none;padding:0}blockquote{padding-left:var(--space-16);border-left:3px solid var(--color-border);color:var(--color-text-muted)}hr{border:none;border-top:1px solid var(--color-border)}table{border-collapse:collapse}th,td{padding:var(--space-8) var(--space-12);border:1px solid var(--color-border);text-align:left}th{background:var(--color-bg-muted);font-weight:600}button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-4);background:var(--color-bg);color:inherit}button:hover{background:var(--color-interactive)}button[variant=toolbar]{border:none;background:transparent;color:#0009}button[size=sm]{min-height:26px;padding:var(--space-2) var(--space-6)}button[size=md]{min-height:32px;padding:var(--space-6) var(--space-12)}[data-ui-icon]{display:inline-block;vertical-align:middle}.prose{line-height:var(--leading-base)}.prose h1{font-size:var(--text-xl);margin-bottom:var(--space-8)}.prose h2{font-size:var(--text-lg);margin-top:var(--space-24);margin-bottom:var(--space-8)}.prose h3,.prose h4,.prose h5,.prose h6{font-size:var(--text-base);margin-top:var(--space-24);margin-bottom:var(--space-8)}.prose p{margin:var(--space-12) 0}.prose ul,.prose ol{padding-left:var(--space-24);margin:var(--space-12) 0}.prose blockquote,.prose pre{margin:var(--space-12) 0}.prose hr{margin:var(--space-24) 0}.prose table{width:100%;margin:var(--space-12) 0}.prose img{max-width:100%;height:auto}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}dropdown-menu{position:relative;display:inline-block;color:inherit}dropdown-group{display:grid;gap:var(--space-4)}dropdown-label{display:block;padding:var(--space-4) var(--space-8);color:var(--color-text-muted);font:inherit;font-size:var(--text-sm);font-weight:600;letter-spacing:.04em;text-transform:uppercase}dropdown-divider{display:block;height:1px;margin:var(--space-4) 0;background:var(--color-border)}[data-dropdown-trigger],dropdown-item{color:inherit;font:inherit;line-height:1.2}[data-dropdown-trigger],dropdown-menu::part(trigger){display:inline-flex;align-items:center;gap:var(--space-6);margin:0;padding:.375rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-4);background:var(--color-surface);color:#0009;box-shadow:none}[data-dropdown-trigger]:hover,dropdown-menu::part(trigger):hover{background:var(--color-interactive-hover)}dropdown-menu[open] [data-dropdown-trigger],dropdown-menu[open]::part(trigger){background:var(--color-interactive)}[data-dropdown-trigger-label],dropdown-menu::part(trigger-label){min-width:0}[data-dropdown-trigger-icon],dropdown-menu::part(trigger-icon){display:inline-flex;align-items:center;justify-content:center;flex:none}[data-dropdown-trigger]:focus-visible,dropdown-menu::part(trigger):focus-visible,dropdown-item:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}dropdown-menu::part(panel){position:absolute;left:0;z-index:var(--layer-popover);min-width:12rem;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-8);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-popover)}dropdown-menu::part(panel-bottom){top:calc(100% + var(--space-4))}dropdown-menu::part(panel-top){bottom:calc(100% + var(--space-4))}dropdown-item{display:block;margin:0;padding:.375rem .5rem;border-radius:var(--radius-4);-webkit-user-select:none;user-select:none}dropdown-item:hover{background:var(--color-interactive-hover)}dropdown-item[selected]{background:var(--color-interactive)}dropdown-item[action]{color:color-mix(in srgb,currentColor 50%,transparent)}dropdown-item[danger]{color:var(--color-danger)}modal-overlay{color:inherit}modal-overlay::part(backdrop){position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--layer-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-16);background:var(--color-overlay-backdrop)}panel-view{display:block}panel-view::part(panel){display:flex;flex-direction:column;gap:var(--space-16);color:var(--color-text)}panel-view::part(header){display:flex;align-items:center;justify-content:space-between;gap:var(--space-12)}panel-view::part(title){margin:0;font:inherit;font-size:var(--text-lg);font-weight:600;color:var(--color-text)}panel-view::part(button){display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;margin:0;border:1px solid var(--color-border);border-radius:var(--radius-4);background:var(--color-surface);color:var(--color-text);box-shadow:none}panel-view::part(button):hover{background:var(--color-interactive-hover)}panel-view::part(button):focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}panel-view::part(icon){display:inline-flex;align-items:center;justify-content:center;flex:none}ui-pill{display:inline-block;vertical-align:baseline;margin:2px 0;padding:0 var(--space-8);font-size:var(--text-sm);font-weight:500;line-height:1.7;border-radius:999px;border:1px solid var(--neutral-300);background:var(--neutral-200);color:var(--neutral-900);white-space:nowrap}ui-pill[color=gray]{border-color:var(--neutral-300);background:var(--neutral-200);color:var(--neutral-900)}ui-pill[color=red]{border-color:var(--red-200);background:var(--red-100);color:var(--red-950)}ui-pill[color=orange]{border-color:var(--orange-200);background:var(--orange-100);color:var(--orange-950)}ui-pill[color=yellow]{border-color:var(--yellow-200);background:var(--yellow-100);color:var(--yellow-950)}ui-pill[color=green]{border-color:var(--green-200);background:var(--green-100);color:var(--green-950)}ui-pill[color=blue]{border-color:var(--blue-200);background:var(--blue-100);color:var(--blue-950)}ui-pill[color=purple]{border-color:var(--purple-200);background:var(--purple-100);color:var(--purple-950)}:root{--color-bg: var(--neutral-200);--color-border: var(--neutral-300)}
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Television</title>
7
- <script type="module" crossorigin src="./assets/index-CtP6T8MN.js"></script>
8
- <link rel="stylesheet" crossorigin href="./assets/index-B2ud1GTM.css">
7
+ <script type="module" crossorigin src="./assets/index-BJvMtRbp.js"></script>
8
+ <link rel="stylesheet" crossorigin href="./assets/index-CfQyq4ej.css">
9
9
  </head>
10
10
  <body></body>
11
11
  </html>
package/package.json CHANGED
@@ -1,12 +1,8 @@
1
1
  {
2
2
  "name": "@telepath-computer/television",
3
- "version": "0.1.34",
3
+ "version": "0.1.36",
4
4
  "type": "module",
5
- "workspaces": [
6
- "packages/*",
7
- "storybook"
8
- ],
9
- "main": "dist/electron.cjs",
5
+ "main": "dist/cli.cjs",
10
6
  "bin": {
11
7
  "tv": "dist/cli.cjs"
12
8
  },
@@ -14,77 +10,21 @@
14
10
  "dist/**",
15
11
  "skill/**"
16
12
  ],
13
+ "exports": {
14
+ ".": "./src/index.ts"
15
+ },
17
16
  "scripts": {
18
- "start:server": "scripts/dev-server.sh",
19
- "start:electron": "scripts/dev-electron.sh",
20
- "layout": "npm --workspace @telepath-computer/television-layout run dev",
21
- "storybook": "npm --workspace @telepath-computer/storybook run dev",
22
- "build:layout-demo": "npm --workspace @telepath-computer/television-layout run build",
23
- "build": "npm run build:renderer && npm run build:views && npm run build:cli && npm run build:electron",
24
- "build:views": "node scripts/build-views.mjs",
25
- "prepack": "npm run build",
26
- "lint": "eslint . --ext .ts --max-warnings=0",
27
- "lint:fix": "npm run lint -- --fix",
28
- "type-check": "tsc --noEmit",
29
- "test:setup": "playwright install chromium",
30
- "test": "vitest run && npm run test --workspaces --if-present",
31
- "test:e2e": "vitest run test/e2e-node/ && playwright test --config=playwright.config.ts && npm run test:e2e --workspaces --if-present",
32
- "test:agent": "vitest run --config test/e2e-agent/vitest.config.ts",
33
- "test:all": "npm test && npm run test:e2e && npm run test:agent",
34
- "verify": "npm run lint && npm run type-check && npm run test:all",
35
- "build:renderer": "vite build --config packages/web/vite.config.ts",
36
- "build:electron": "esbuild packages/desktop/src/index.ts --bundle --platform=node --target=node18 --format=cjs --outfile=dist/electron.cjs --external:electron --external:@rupertsworld/electron-ipc",
37
- "build:cli": "node scripts/build-cli.mjs"
17
+ "build": "node build.mjs",
18
+ "build:views": "node build-views.mjs",
19
+ "type-check": "tsc -p tsconfig.json --noEmit"
38
20
  },
39
- "dependencies": {
40
- "@agentclientprotocol/sdk": "^0.18.1",
41
- "@milkdown/crepe": "^7.20.0",
42
- "@modelcontextprotocol/sdk": "^1.26.0",
21
+ "dependencies": {},
22
+ "devDependencies": {
43
23
  "@rupertsworld/daemon": "^0.1.1",
44
- "@rupertsworld/dependencies": "^0.2.0",
45
- "@rupertsworld/electron-ipc": "^0.2.1",
46
- "@rupertsworld/event-target": "^0.1.0",
47
- "@rupertsworld/observable": "^0.1.2",
48
- "@telepath-computer/disposable": "*",
49
24
  "@telepath-computer/television-artifact": "*",
50
- "@telepath-computer/television-cli": "*",
51
- "@telepath-computer/television-desktop": "*",
52
- "@telepath-computer/television-layout": "*",
53
25
  "@telepath-computer/television-server": "*",
54
26
  "@telepath-computer/television-shared": "*",
55
- "@telepath-computer/television-view-text": "*",
56
27
  "@telepath-computer/television-web": "*",
57
- "@telepath-computer/ui": "*",
58
- "commander": "^14.0.3",
59
- "disposablestack": "^1.1.6",
60
- "dompurify": "^3.3.3",
61
- "express": "^4.21.0",
62
- "lit-html": "^3.3.2",
63
- "marked": "^17.0.4",
64
- "ulid": "^3.0.2",
65
- "watcher": "^2.3.1",
66
- "ws": "^8.19.0",
67
- "zod": "^4.3.6"
68
- },
69
- "devDependencies": {
70
- "@eslint/js": "^9.39.4",
71
- "@playwright/test": "^1.58.2",
72
- "@types/dompurify": "^3.0.5",
73
- "@types/express": "^5.0.0",
74
- "@types/node": "^22.0.0",
75
- "@types/supertest": "^6.0.0",
76
- "@types/ws": "^8.18.1",
77
- "@vitest/eslint-plugin": "^1.6.12",
78
- "electron": "^35.0.0",
79
- "esbuild": "^0.24.0",
80
- "eslint": "^9.39.4",
81
- "globals": "^17.4.0",
82
- "jsdom": "^28.1.0",
83
- "supertest": "^7.0.0",
84
- "tsx": "^4.19.0",
85
- "typescript": "^5.6.0",
86
- "typescript-eslint": "^8.57.0",
87
- "vite": "^5.4.21",
88
- "vitest": "^2.0.0"
28
+ "commander": "^14.0.3"
89
29
  }
90
30
  }
package/README.md DELETED
@@ -1,75 +0,0 @@
1
- # Television
2
-
3
- Television is a virtual display for agents. You can run it as a local desktop app or as a standalone server, then create, update, and remove persistent artifacts in screens.
4
-
5
- See [docs/architecture.md](docs/architecture.md) for the system overview and [docs/api.md](docs/api.md) for the network API.
6
-
7
- ## Environment
8
-
9
- - **Runtime.** Electron 35+ (Chromium renderer, Node.js main process) for desktop, or Node.js 18+ (22 recommended) for the standalone server.
10
- - **Package manager.** npm screens under `packages/*` (`cli`, `desktop`, `layout`, `server`, `shared`, `web`).
11
- - **Build.** Vite builds the renderer to `dist/browser/` (with `base: "./"` so Electron can load it over `file://`). esbuild bundles the Electron main process to `dist/electron.cjs` and the `tv` CLI to `dist/cli.cjs`.
12
- - **Tests.** Vitest for unit/integration and server tests, Playwright for browser e2e.
13
-
14
- ## Getting Started
15
-
16
- Requirements:
17
- - Node.js 18+ (Node 22 recommended)
18
- - npm
19
-
20
- ### Desktop app (Electron)
21
-
22
- ```bash
23
- npm install
24
- npm run start:electron
25
- ```
26
-
27
- Starts Vite HMR for the renderer and launches Electron. Changes to renderer code and CSS update live. Changes to Electron main process or server code require restarting.
28
-
29
- ### Standalone server (browser)
30
-
31
- ```bash
32
- npm install
33
- npm run start:server
34
- ```
35
-
36
- Starts Vite HMR for the renderer, the Television server, and an artifact runtime watcher. Open the printed URL in a browser.
37
-
38
- ### CLI
39
-
40
- Build and link the CLI, then use it against a running server:
41
-
42
- ```bash
43
- npm run build
44
- npm link
45
- tv serve
46
- tv status
47
- tv list-screens
48
- ```
49
-
50
- After pulling changes, rerun `npm run build && npm link` to refresh the installed `tv` binary — it bundles skill content and CLI logic at build time, so the installed binary can drift from the source tree between releases.
51
-
52
- Artifacts are created and edited by agents using the `tv create-internal-artifact`, `tv edit-internal-artifact`, and `tv commit-pending-artifact` lifecycle. Run `tv help` for the full agent workflow; see [docs/cli.md](docs/cli.md) for the CLI reference.
53
-
54
- ### System service
55
-
56
- ```bash
57
- tv serve --persist
58
- tv status
59
- tv stop
60
- ```
61
-
62
- ### Verification
63
-
64
- Use these commands depending on how much coverage you want:
65
-
66
- ```bash
67
- npm run test:setup # one-time Playwright browser install
68
- npm test # Vitest unit/integration tests (root + all screens)
69
- npm run test:e2e # all e2e: node (vitest) + browser (Playwright) + screen e2e
70
- npm run test:agent # ACP bridge agent e2e (requires openclaw on PATH)
71
- npm run test:all # everything: test + test:e2e + agent
72
- npm run verify # lint + type-check + test:all
73
- ```
74
-
75
- CI currently runs `npm run lint`, `npm run type-check`, and `npm test`. The other suites are available for local verification.
@@ -1 +0,0 @@
1
- artifact-view{display:flex;flex-direction:column;width:100%;height:100%;border-radius:10px;overflow:hidden;box-shadow:0 0 0 .5px var(--color-border, #e1e1e1),0 4px 6px -2px #0000001f,0 40px 60px -16px #00000038;transition:box-shadow .15s ease,transform .15s ease}artifact-view .artifact-title-bar{display:flex;align-items:center;justify-content:space-between;height:30px;padding:0 10px;background:linear-gradient(180deg,var(--color-highlight),transparent),color-mix(in oklch,var(--color-surface-muted),transparent 30%);backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);box-shadow:inset 0 .5px 0 var(--color-border, #e1e1e1),inset 0 1.5px 0 var(--color-highlight);font-size:12px;font-weight:500;touch-action:none;-webkit-user-select:none;user-select:none}artifact-view[dragging=true]{box-shadow:0 0 0 .5px var(--color-border, #e1e1e1),0 6px 16px #00000024,0 20px 56px #0000003d}artifact-view[dragging=true] .artifact-title-bar{background:linear-gradient(180deg,var(--color-highlight),transparent),var(--color-surface-muted);backdrop-filter:none;-webkit-backdrop-filter:none}artifact-view .artifact-title-group{display:flex;align-items:center;gap:6px;min-width:0}artifact-view .artifact-title-icon{display:inline-flex;flex:none;color:var(--color-text-muted)}artifact-view .artifact-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}artifact-view .artifact-close-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:inherit;border-radius:4px}artifact-view .artifact-close-btn:hover{background:var(--color-hover, rgba(0, 0, 0, .05))}artifact-view .artifact-content{flex:1;min-height:0;overflow:auto;background:var(--color-surface)}artifact-view iframe.artifact-frame{border:0;width:100%;display:block}artifact-view .artifact-placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-text-muted, #888);font-size:12px}layout-view{width:100%;flex:1;min-width:0;min-height:0;display:flex;align-items:flex-start;overflow:hidden;outline:none;position:relative;--layout-unit-x: 120px;--layout-unit-y: 120px;--layout-gap: 16px;--layout-drag-transition-ms: 0ms;--color-drag-target: color-mix( in srgb, var(--color-border, var(--neutral-300, #cbd5e1)) 55%, transparent )}layout-view .track{display:flex;align-items:start;gap:var(--layout-gap);flex-shrink:0;width:max-content;will-change:transform;transition:transform .2s ease}layout-view .node{display:grid;grid-template-columns:repeat(4,var(--layout-unit-x));grid-template-rows:repeat(6,var(--layout-unit-y));gap:var(--layout-gap);align-self:start;width:calc(var(--layout-unit-x) * 4 + var(--layout-gap) * 3);will-change:transform}layout-view .card-slot{border-radius:12px;box-sizing:border-box;cursor:default;min-width:0;min-height:0;position:relative;z-index:1}layout-view .card-slot artifact-view{width:100%;height:100%}layout-view .card-placeholder{border-radius:12px;background:var(--color-drag-target);position:relative;z-index:0}layout-view .card-placeholder[data-layout-placeholder-ghost=true]{background:transparent;border:0;opacity:0;pointer-events:none}layout-view .drag-preview{position:fixed;z-index:10;pointer-events:none}layout-view .drag-preview>*{width:100%;height:100%}screen-view{width:100%;flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}screen-view [data-testid=empty-screen]{margin:0;padding:1rem}message-history{position:relative;display:flex;flex-direction:column;min-height:0;color:#ffffffe6;line-height:1.5}message-history:not(:has(.message)){display:none}message-history .history-scroll{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:12px;padding:24px 8px 12px;overflow-y:auto;mask-image:linear-gradient(to bottom,transparent 0,black 24px,black calc(100% - 24px),transparent 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0,black 24px,black calc(100% - 24px),transparent 100%)}message-history[data-pinned] .history-scroll{mask-image:linear-gradient(to bottom,transparent 0,black 24px);-webkit-mask-image:linear-gradient(to bottom,transparent 0,black 24px)}message-history .message{padding:6px 10px;border-radius:var(--radius-8);word-wrap:break-word}message-history .message-user{align-self:flex-start;max-width:85%;background:#ffffff1a;white-space:pre-wrap}message-history .message-assistant{align-self:stretch}message-history .message-assistant>:first-child{margin-top:0}message-history .message-assistant>:last-child{margin-bottom:0}message-history .message-assistant p,message-history .message-assistant ul,message-history .message-assistant ol,message-history .message-assistant pre,message-history .message-assistant blockquote{margin:0 0 8px}message-history .message-assistant h1,message-history .message-assistant h2,message-history .message-assistant h3,message-history .message-assistant h4{margin:12px 0 4px;font-weight:600;line-height:1.3}message-history .message-assistant ul,message-history .message-assistant ol{padding-left:20px}message-history .message-assistant code{padding:1px 4px;border-radius:3px;background:#ffffff1a;font-family:var(--font-mono);font-size:.9em}message-history .message-assistant pre{padding:8px 10px;border-radius:var(--radius-8);background:#ffffff14;overflow-x:auto}message-history .message-assistant pre code{padding:0;background:none}message-history .message-assistant blockquote{padding-left:10px;border-left:2px solid rgba(255,255,255,.2);color:#ffffffb3}message-history .message-assistant a{color:#fffffff2;text-decoration:underline;text-underline-offset:2px}message-history .history-jump{position:absolute;right:8px;bottom:8px;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:999px;background:#ffffff26;color:#ffffffe6;transition:opacity .15s ease}message-history .history-jump:hover{background:#ffffff40}message-history[data-pinned] .history-jump{opacity:0;pointer-events:none}command-panel{position:absolute;bottom:8px;right:8px;display:flex;width:320px;padding:6px 10px;border-radius:var(--radius-8);background:linear-gradient(180deg,rgba(0,0,0,.03),transparent),#0000000f;border:1px solid rgba(0,0,0,.1);box-shadow:inset 0 1px #0000000a,inset 0 -1px #ffffff2e}command-panel .trigger{flex:1;min-width:0;min-height:0;margin:0;padding:0;border:none;outline:none;background:transparent;color:#00000073;font:inherit;line-height:1.4;justify-content:flex-start;gap:0;cursor:text}command-panel .trigger:hover{background:transparent}command-panel[open]{width:380px;padding:8px;flex-direction:column;background:#000c;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:12px;box-shadow:0 8px 20px #0006}command-panel[open] message-history{max-height:min(60vh,480px);margin:-8px -8px 0}command-panel[open] .input{flex:0 0 auto;min-width:0;max-height:12rem;padding:8px 10px;border-radius:var(--radius-8);resize:none;border:none;outline:none;background:#000;color:#ffffffe6;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:1.4;field-sizing:content}command-panel[open] .input::placeholder{color:#ffffff73}app-toolbar{position:relative;display:flex;align-items:center;gap:8px;padding:8px 336px 8px 8px;min-height:46px;flex-shrink:0;-webkit-user-select:none;user-select:none}television-app{width:100%;height:100%;display:block;background:url(./gradient-j-DX-EI0uV.jpg) center / cover no-repeat}screen-picker,screen-picker [trigger],button[variant=toolbar],.settings-server-remove-button,.settings-submit-button,.settings-cancel-button,.settings-connect-button,.settings-field input{-webkit-app-region:no-drag}screen-picker dropdown-menu::part(panel){min-width:18rem}screen-picker [trigger],screen-picker [trigger][data-dropdown-trigger]{min-width:0;padding:0;border:none;background:transparent;font-size:13px;font-weight:600}screen-picker [trigger] .trigger-label{white-space:nowrap}dropdown-group{display:block;padding:4px 0}dropdown-label{display:block;padding:0 10px 4px;font-size:12px;color:color-mix(in srgb,currentColor 60%,transparent)}dropdown-item{display:block;padding:6px 10px;border-radius:4px}dropdown-item[selected]{background:color-mix(in srgb,var(--color-border) 70%,white)}television-app>main{width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}television-app>main>screen-view{flex:1 1 auto;min-height:0}television-app>main>app-toolbar{flex:0 0 auto}television-app>main.auth-gate{align-items:center;justify-content:center}.settings-panel{width:min(32rem,100%);display:flex;flex-direction:column;padding:20px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-bg)}.screen-modal,.auth-modal{width:min(24rem,100%);display:flex;flex-direction:column;padding:20px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-bg)}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-modal-title,.auth-modal-copy{margin:0}.auth-token-input-invalid{border-color:#c74343}.screen-form{display:flex;flex-direction:column;gap:12px}.screen-form-actions{display:flex;gap:8px}.screen-modal-title,.screen-delete-copy,.screen-delete-warning,.screen-delete-error{margin:0}.screen-delete-warning,.screen-delete-error{font-size:13px}.screen-delete-error{color:#c74343}.settings-section-title{margin:0}.settings-section,.settings-server-list,.settings-add-server-form{display:flex;flex-direction:column;gap:12px}.settings-form-actions{display:flex;gap:8px}.settings-card{padding:12px;border:1px solid var(--color-border);border-radius:8px}.settings-server{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-server-details{min-width:0}.settings-server-name{font-weight:600}.settings-server-url{font-size:13px;word-break:break-word;color:color-mix(in srgb,currentColor 70%,transparent)}.settings-server-remove-button,.settings-submit-button,.settings-cancel-button,.settings-connect-button{padding:8px 12px;border-radius:8px}.settings-field{display:flex;flex-direction:column;gap:6px}.settings-field input{width:100%;padding:8px 10px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg);color:inherit;font:inherit;box-sizing:border-box}.settings-submit-button,.settings-cancel-button,.settings-connect-button{align-self:flex-start}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%}h1,h2,h3,h4,h5,h6,p,ul,ol,blockquote,pre,hr{margin:0}button,input,textarea,select{font:inherit;color:inherit}@font-face{font-family:Supreme;src:url(./Supreme-Variable-D6OPM70K.woff2) format("woff2-variations");font-weight:100 800;font-style:normal;font-display:swap}@font-face{font-family:Supreme;src:url(./Supreme-VariableItalic-BM_OJs3z.woff2) format("woff2-variations");font-weight:100 800;font-style:italic;font-display:swap}:root{--font-sans: "Supreme", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-brand: var(--font-sans);--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;--text-base: 14px;--text-scale: 1.125;--text-sm: round(calc(var(--text-base) / var(--text-scale)), 1px);--text-lg: round(calc(var(--text-base) * var(--text-scale)), 1px);--text-xl: round(calc(var(--text-lg) * var(--text-scale)), 1px);--leading-base: 1.5;--space-2: 2px;--space-4: 4px;--space-6: 6px;--space-8: 8px;--space-12: 12px;--space-16: 16px;--space-24: 24px;--space-32: 32px;--space-48: 48px;--space-64: 64px;--radius-4: 4px;--radius-6: 6px;--radius-8: 8px;--layer-popover: 10;--layer-modal: 1000;--shadow-popover: 0 12px 32px rgb(0 0 0 / .14);--shadow-modal: 0 24px 64px rgb(0 0 0 / .2);--black: #000000;--white: #ffffff;--neutral-50: oklch(.985 0 0);--neutral-100: oklch(.97 0 0);--neutral-200: oklch(.923 0 0);--neutral-300: oklch(.869 0 0);--neutral-350: oklch(.79 0 0);--neutral-400: oklch(.709 0 0);--neutral-500: oklch(.553 0 0);--neutral-600: oklch(.444 0 0);--neutral-700: oklch(.374 0 0);--neutral-800: oklch(.268 0 0);--neutral-900: oklch(.216 0 0);--neutral-950: oklch(.147 0 0);--red-50: oklch(.969 .015 12.422);--red-100: oklch(.941 .03 12.58);--red-200: oklch(.892 .058 10.001);--red-300: oklch(.81 .117 11.638);--red-400: oklch(.712 .194 13.428);--red-500: oklch(.645 .246 16.439);--red-600: oklch(.586 .253 17.585);--red-700: oklch(.514 .222 16.935);--red-800: oklch(.455 .188 13.697);--red-900: oklch(.41 .159 10.272);--red-950: oklch(.271 .105 12.094);--orange-50: oklch(.98 .016 73.684);--orange-100: oklch(.954 .038 75.164);--orange-200: oklch(.901 .076 70.697);--orange-300: oklch(.837 .128 66.29);--orange-400: oklch(.75 .183 55.934);--orange-500: oklch(.705 .213 47.604);--orange-600: oklch(.646 .222 41.116);--orange-700: oklch(.553 .195 38.402);--orange-800: oklch(.47 .157 37.304);--orange-900: oklch(.408 .123 38.172);--orange-950: oklch(.266 .079 36.259);--yellow-50: oklch(.987 .026 102.212);--yellow-100: oklch(.973 .071 103.193);--yellow-200: oklch(.945 .129 101.54);--yellow-300: oklch(.905 .182 98.111);--yellow-400: oklch(.852 .199 91.936);--yellow-500: oklch(.795 .184 86.047);--yellow-600: oklch(.681 .162 75.834);--yellow-700: oklch(.554 .135 66.442);--yellow-800: oklch(.476 .114 61.907);--yellow-900: oklch(.421 .095 57.708);--yellow-950: oklch(.286 .066 53.813);--green-50: oklch(.979 .021 166.113);--green-100: oklch(.95 .052 163.051);--green-200: oklch(.905 .093 164.15);--green-300: oklch(.845 .143 164.978);--green-400: oklch(.765 .177 163.223);--green-500: oklch(.696 .17 162.48);--green-600: oklch(.596 .145 163.225);--green-700: oklch(.508 .118 165.612);--green-800: oklch(.432 .095 166.913);--green-900: oklch(.378 .077 168.94);--green-950: oklch(.262 .051 172.552);--blue-50: oklch(.97 .014 254.604);--blue-100: oklch(.932 .032 255.585);--blue-200: oklch(.882 .059 254.128);--blue-300: oklch(.809 .105 251.813);--blue-400: oklch(.707 .165 254.624);--blue-500: oklch(.623 .214 259.815);--blue-600: oklch(.546 .245 262.881);--blue-700: oklch(.488 .243 264.376);--blue-800: oklch(.424 .199 265.638);--blue-900: oklch(.379 .146 265.522);--blue-950: oklch(.282 .091 267.935);--purple-50: oklch(.969 .016 293.756);--purple-100: oklch(.943 .029 294.588);--purple-200: oklch(.894 .057 293.283);--purple-300: oklch(.811 .111 293.571);--purple-400: oklch(.702 .183 293.541);--purple-500: oklch(.606 .25 292.717);--purple-600: oklch(.541 .281 293.009);--purple-700: oklch(.491 .27 292.581);--purple-800: oklch(.432 .232 292.759);--purple-900: oklch(.38 .189 293.745);--purple-950: oklch(.283 .141 291.089)}:root{--color-bg: var(--neutral-50);--color-bg-muted: var(--neutral-100);--color-surface: var(--white);--color-surface-muted: var(--neutral-100);--color-interactive: var(--neutral-200);--color-interactive-hover: var(--neutral-300);--color-border: var(--neutral-300);--color-border-muted: var(--neutral-200);--color-text: var(--neutral-900);--color-text-muted: var(--neutral-500);--color-link: inherit;--color-focus-ring: var(--neutral-500);--color-overlay-backdrop: rgb(0 0 0 / .5);--color-highlight: rgb(255 255 255 / .5);--color-danger: var(--red-600);color-scheme:light}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-base);color:var(--color-text);background:var(--color-bg)}a{color:var(--color-link);text-underline-offset:.15em;text-decoration-thickness:.08em}h1,h2,h3,h4,h5,h6{font-weight:600;color:var(--color-text)}code{font-family:var(--font-mono);font-size:.9em;background:var(--color-bg-muted);padding:var(--space-2) var(--space-4);border-radius:var(--radius-4)}pre{font-family:var(--font-mono);background:var(--color-bg-muted);padding:var(--space-12);border-radius:var(--radius-8);overflow-x:auto}pre code{background:none;padding:0}blockquote{padding-left:var(--space-16);border-left:3px solid var(--color-border);color:var(--color-text-muted)}hr{border:none;border-top:1px solid var(--color-border)}table{border-collapse:collapse}th,td{padding:var(--space-8) var(--space-12);border:1px solid var(--color-border);text-align:left}th{background:var(--color-bg-muted);font-weight:600}button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-4);background:var(--color-bg);color:inherit}button:hover{background:var(--color-interactive)}button[variant=toolbar]{border:none;background:transparent;color:#0009}button[size=sm]{min-height:26px;padding:var(--space-2) var(--space-6)}button[size=md]{min-height:32px;padding:var(--space-6) var(--space-12)}[data-ui-icon]{display:inline-block;vertical-align:middle}.prose{line-height:var(--leading-base)}.prose h1{font-size:var(--text-xl);margin-bottom:var(--space-8)}.prose h2{font-size:var(--text-lg);margin-top:var(--space-24);margin-bottom:var(--space-8)}.prose h3,.prose h4,.prose h5,.prose h6{font-size:var(--text-base);margin-top:var(--space-24);margin-bottom:var(--space-8)}.prose p{margin:var(--space-12) 0}.prose ul,.prose ol{padding-left:var(--space-24);margin:var(--space-12) 0}.prose blockquote,.prose pre{margin:var(--space-12) 0}.prose hr{margin:var(--space-24) 0}.prose table{width:100%;margin:var(--space-12) 0}.prose img{max-width:100%;height:auto}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}dropdown-menu{position:relative;display:inline-block;color:inherit}dropdown-group{display:grid;gap:var(--space-4)}dropdown-label{display:block;padding:var(--space-4) var(--space-8);color:var(--color-text-muted);font:inherit;font-size:var(--text-sm);font-weight:600;letter-spacing:.04em;text-transform:uppercase}dropdown-divider{display:block;height:1px;margin:var(--space-4) 0;background:var(--color-border)}[data-dropdown-trigger],dropdown-item{color:inherit;font:inherit;line-height:1.2}[data-dropdown-trigger],dropdown-menu::part(trigger){display:inline-flex;align-items:center;gap:var(--space-6);margin:0;padding:.375rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-4);background:var(--color-surface);color:#0009;box-shadow:none}[data-dropdown-trigger]:hover,dropdown-menu::part(trigger):hover{background:var(--color-interactive-hover)}dropdown-menu[open] [data-dropdown-trigger],dropdown-menu[open]::part(trigger){background:var(--color-interactive)}[data-dropdown-trigger-label],dropdown-menu::part(trigger-label){min-width:0}[data-dropdown-trigger-icon],dropdown-menu::part(trigger-icon){display:inline-flex;align-items:center;justify-content:center;flex:none}[data-dropdown-trigger]:focus-visible,dropdown-menu::part(trigger):focus-visible,dropdown-item:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}dropdown-menu::part(panel){position:absolute;left:0;z-index:var(--layer-popover);min-width:12rem;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-8);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-popover)}dropdown-menu::part(panel-bottom){top:calc(100% + var(--space-4))}dropdown-menu::part(panel-top){bottom:calc(100% + var(--space-4))}dropdown-item{display:block;margin:0;padding:.375rem .5rem;border-radius:var(--radius-4);-webkit-user-select:none;user-select:none}dropdown-item:hover{background:var(--color-interactive-hover)}dropdown-item[selected]{background:var(--color-interactive)}dropdown-item[action]{color:color-mix(in srgb,currentColor 50%,transparent)}dropdown-item[danger]{color:var(--color-danger)}modal-overlay{color:inherit}modal-overlay::part(backdrop){position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--layer-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-16);background:var(--color-overlay-backdrop)}panel-view{display:block}panel-view::part(panel){display:flex;flex-direction:column;gap:var(--space-16);color:var(--color-text)}panel-view::part(header){display:flex;align-items:center;justify-content:space-between;gap:var(--space-12)}panel-view::part(title){margin:0;font:inherit;font-size:var(--text-lg);font-weight:600;color:var(--color-text)}panel-view::part(button){display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;margin:0;border:1px solid var(--color-border);border-radius:var(--radius-4);background:var(--color-surface);color:var(--color-text);box-shadow:none}panel-view::part(button):hover{background:var(--color-interactive-hover)}panel-view::part(button):focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}panel-view::part(icon){display:inline-flex;align-items:center;justify-content:center;flex:none}ui-pill{display:inline-block;vertical-align:baseline;margin:2px 0;padding:0 var(--space-8);font-size:var(--text-sm);font-weight:500;line-height:1.7;border-radius:999px;border:1px solid var(--neutral-300);background:var(--neutral-200);color:var(--neutral-900);white-space:nowrap}ui-pill[color=gray]{border-color:var(--neutral-300);background:var(--neutral-200);color:var(--neutral-900)}ui-pill[color=red]{border-color:var(--red-200);background:var(--red-100);color:var(--red-950)}ui-pill[color=orange]{border-color:var(--orange-200);background:var(--orange-100);color:var(--orange-950)}ui-pill[color=yellow]{border-color:var(--yellow-200);background:var(--yellow-100);color:var(--yellow-950)}ui-pill[color=green]{border-color:var(--green-200);background:var(--green-100);color:var(--green-950)}ui-pill[color=blue]{border-color:var(--blue-200);background:var(--blue-100);color:var(--blue-950)}ui-pill[color=purple]{border-color:var(--purple-200);background:var(--purple-100);color:var(--purple-950)}:root{--color-bg: var(--neutral-200);--color-border: var(--neutral-300)}