chatroom-cli 1.94.2 → 1.95.0
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
|
+
/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-widest:.1em;--radius-4xl:2rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-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}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}.chatroom-root *,.chatroom-root :before,.chatroom-root :after{box-sizing:border-box}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}html,body,#root{height:100%}body{background-color:var(--chatroom-bg-primary);color:var(--chatroom-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.isolate{isolation:isolate}.z-50{z-index:50}.row-1{grid-row:1}.m-1{margin:var(--spacing)}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mb-1{margin-bottom:var(--spacing)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-\[28px\]{height:28px}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-\[60vh\]{max-height:60vh}.min-h-0{min-height:0}.min-h-\[400px\]{min-height:400px}.min-h-screen{min-height:100vh}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[14rem\]{max-width:14rem}.max-w-\[40\%\]{max-width:40%}.min-w-0{min-width:0}.min-w-\[8rem\]{min-width:8rem}.min-w-\[10rem\]{min-width:10rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0{gap:0}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded-4xl{border-radius:var(--radius-4xl)}.rounded-md,.rounded-none{border-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-border{border-color:var(--border)}.border-chatroom-border{border-color:var(--chatroom-border)}.border-chatroom-status-error\/30{border-color:var(--chatroom-status-error)}@supports (color:color-mix(in lab,red,red)){.border-chatroom-status-error\/30{border-color:color-mix(in oklab,var(--chatroom-status-error) 30%,transparent)}}.border-chatroom-status-error\/40{border-color:var(--chatroom-status-error)}@supports (color:color-mix(in lab,red,red)){.border-chatroom-status-error\/40{border-color:color-mix(in oklab,var(--chatroom-status-error) 40%,transparent)}}.border-chatroom-status-info\/40{border-color:var(--chatroom-status-info)}@supports (color:color-mix(in lab,red,red)){.border-chatroom-status-info\/40{border-color:color-mix(in oklab,var(--chatroom-status-info) 40%,transparent)}}.border-chatroom-status-success{border-color:var(--chatroom-status-success)}.border-chatroom-status-warning\/40{border-color:var(--chatroom-status-warning)}@supports (color:color-mix(in lab,red,red)){.border-chatroom-status-warning\/40{border-color:color-mix(in oklab,var(--chatroom-status-warning) 40%,transparent)}}.border-transparent{border-color:#0000}.bg-background{background-color:var(--background)}.bg-chatroom-bg-hover{background-color:var(--chatroom-bg-hover)}.bg-chatroom-bg-primary{background-color:var(--chatroom-bg-primary)}.bg-chatroom-bg-secondary{background-color:var(--chatroom-bg-secondary)}.bg-chatroom-bg-tertiary{background-color:var(--chatroom-bg-tertiary)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.p-0{padding:0}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:var(--spacing)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-chatroom-accent{color:var(--chatroom-accent)}.text-chatroom-status-error{color:var(--chatroom-status-error)}.text-chatroom-status-info{color:var(--chatroom-status-info)}.text-chatroom-status-success{color:var(--chatroom-status-success)}.text-chatroom-status-warning{color:var(--chatroom-status-warning)}.text-chatroom-text-muted{color:var(--chatroom-text-muted)}.text-chatroom-text-primary{color:var(--chatroom-text-primary)}.text-chatroom-text-secondary{color:var(--chatroom-text-secondary)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline-offset-4{text-underline-offset:4px}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-30{transition-delay:30ms}.delay-60{transition-delay:60ms}.delay-90{transition-delay:90ms}.outline-none{--tw-outline-style:none;outline-style:none}.\[claude\:role\@short-id\]{claude:role@short-id}.\[claude\:role\]{claude:role}.\[cursor-sdk\:builder\@c1\]{cursor-sdk:builder@c1}.delay-30{animation-delay:30ms}.delay-60{animation-delay:60ms}.delay-90{animation-delay:90ms}.running{animation-play-state:running}.placeholder\:text-chatroom-text-muted::placeholder{color:var(--chatroom-text-muted)}@media (hover:hover){.hover\:border-chatroom-border-strong:hover{border-color:var(--chatroom-border-strong)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-chatroom-bg-hover:hover{background-color:var(--chatroom-bg-hover)}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-chatroom-accent:focus{border-color:var(--chatroom-accent)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-chatroom-bg-hover:focus-visible{background-color:var(--chatroom-bg-hover)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-closed\:animate-out[data-closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-closed\:fade-out-0[data-closed]{--tw-exit-opacity:0}.data-closed\:zoom-out-95[data-closed]{--tw-exit-scale:.95}.data-open\:animate-in[data-open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-open\:fade-in-0[data-open]{--tw-enter-opacity:0}.data-open\:zoom-in-95[data-open]{--tw-enter-scale:.95}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}}:root{--radius:0px;--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--ring:oklch(55.6% 0 0)}.dark{--chatroom-bg-primary:#09090b;--chatroom-bg-secondary:#18181b80;--chatroom-bg-tertiary:#18181b;--chatroom-bg-hover:#27272a;--chatroom-bg-surface:#18181bcc;--chatroom-border:#fafafa1a;--chatroom-border-strong:#fafafa33;--chatroom-text-primary:#fafafa;--chatroom-text-secondary:#a1a1aa;--chatroom-text-muted:#71717a;--chatroom-status-success:#34d399;--chatroom-status-warning:#fbbf24;--chatroom-status-error:#f87171;--chatroom-status-info:#60a5fa;--chatroom-accent:#fafafa;color-scheme:dark}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" class="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Chatroom Daemon</title>
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-C3Kp4LqQ.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DvCxOxT9.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
package/dist/index.js
CHANGED
|
@@ -78205,6 +78205,7 @@ var init_participant = __esm(() => {
|
|
|
78205
78205
|
ONLINE_OR_STARTING_STATUSES = new Set([
|
|
78206
78206
|
"agent.waiting",
|
|
78207
78207
|
"agent.requestStart",
|
|
78208
|
+
"agent.restart",
|
|
78208
78209
|
"agent.started",
|
|
78209
78210
|
"task.acknowledged",
|
|
78210
78211
|
"task.inProgress",
|
|
@@ -79042,6 +79043,32 @@ var init_builder_to_planner = __esm(() => {
|
|
|
79042
79043
|
init_role_guidance_disclosure();
|
|
79043
79044
|
});
|
|
79044
79045
|
|
|
79046
|
+
// ../../services/backend/prompts/enhancer/defragmentation-reference.ts
|
|
79047
|
+
function renderDefragmentationHandoffReference() {
|
|
79048
|
+
return [
|
|
79049
|
+
"### Defragmentation workflow checklist",
|
|
79050
|
+
'Complete the optional **Defragmentation** section when the planner check-in addresses a large or multi-surface system revision, including refactoring, consolidation, or consistency work. Write exactly "Not Applicable." only when no such revision is proposed.',
|
|
79051
|
+
"",
|
|
79052
|
+
"1. **Study surfaces** — map all call sites, use cases, and complexity variants before proposing slices; name every relevant file/module",
|
|
79053
|
+
"2. **Golden implementation** — build a standalone canonical solution first; introduce canonical domain entities/types only when the studied variants require them, then shared use cases, UI components, or utilities; do not patch duplicates in place",
|
|
79054
|
+
"3. **Migrate callers** — refactor all consumers to the golden path; each slice must be shippable end-to-end",
|
|
79055
|
+
"4. **Delete legacy** — remove old implementations only after migration is complete; no dead-code leftovers",
|
|
79056
|
+
"",
|
|
79057
|
+
"### Anti-patterns to flag",
|
|
79058
|
+
"- Incremental copy-paste fixes across N files without a golden SSOT",
|
|
79059
|
+
"- New abstraction without studying all existing variants",
|
|
79060
|
+
'- Leaving old code "for safety" after migration',
|
|
79061
|
+
"- Slices that add helpers/infra without a runnable end-to-end outcome",
|
|
79062
|
+
"- Parallel implementations coexisting without a deletion plan",
|
|
79063
|
+
"",
|
|
79064
|
+
"### Structural decisions",
|
|
79065
|
+
"- Identify SSOT locations for domain entities, shared use cases, and UI components",
|
|
79066
|
+
"- Align with `structural-decisions` glossary: folder structure, file naming, interface locations",
|
|
79067
|
+
"- Flag when the plan scatters the canonical implementation across unrelated modules"
|
|
79068
|
+
].join(`
|
|
79069
|
+
`);
|
|
79070
|
+
}
|
|
79071
|
+
|
|
79045
79072
|
// ../../services/backend/prompts/enhancer/webapp-ux-reference.ts
|
|
79046
79073
|
function renderWebappUxHandoffReference() {
|
|
79047
79074
|
return [
|
|
@@ -79140,7 +79167,7 @@ function getEnhancerFeedbackTemplateBody() {
|
|
|
79140
79167
|
<specific misreadings or missing constraints — what the user asked vs what the planner proposed>
|
|
79141
79168
|
</handoff-overview>
|
|
79142
79169
|
|
|
79143
|
-
<!-- UI collapses proofs, direction, ux, and notes by default; overview and action required are expanded -->
|
|
79170
|
+
<!-- UI collapses proofs, direction, ux, defragmentation, and notes by default; overview and action required are expanded -->
|
|
79144
79171
|
|
|
79145
79172
|
<handoff-proofs>
|
|
79146
79173
|
## Reasoning review
|
|
@@ -79167,6 +79194,20 @@ function getEnhancerFeedbackTemplateBody() {
|
|
|
79167
79194
|
- **Bulk safeguards:** <batch/multi-item operations gated by confirm with count/impact summary; cite missing confirms>
|
|
79168
79195
|
</handoff-ux>
|
|
79169
79196
|
|
|
79197
|
+
<handoff-defragmentation>
|
|
79198
|
+
<!-- Optional — write exactly "Not Applicable." when no large or multi-surface system revision is proposed -->
|
|
79199
|
+
<!-- When revision work is proposed: specific findings tied to the planner's proposal. No code blocks (use Suggested edits). -->
|
|
79200
|
+
- **Surfaces:** <call sites and modules identified; gaps in surface mapping>
|
|
79201
|
+
- **Golden path:** <whether planner builds standalone canonical implementation first>
|
|
79202
|
+
- **Domain model:** <canonical types/entities needed or "not needed">
|
|
79203
|
+
- **Shared components:** <shared abstractions planned (use cases, UI, utilities)>
|
|
79204
|
+
- **Slice ordering:** <study → golden → migrate → delete sequence respected?>
|
|
79205
|
+
- **Migration plan:** <how all callers move to golden path>
|
|
79206
|
+
- **Deletion plan:** <old implementations slated for removal>
|
|
79207
|
+
- **Duplication:** <existing duplicates to eliminate; risk of new duplication>
|
|
79208
|
+
- **Structural decisions:** <folder/module boundaries; SSOT locations>
|
|
79209
|
+
</handoff-defragmentation>
|
|
79210
|
+
|
|
79170
79211
|
<handoff-notes>
|
|
79171
79212
|
## Knowledge gaps
|
|
79172
79213
|
<specific facts, files, or research to verify — name what to check and why>
|
|
@@ -79205,10 +79246,12 @@ ${getHandoffReportTemplateIntro("Planning Feedback (Enhancer → Planner)")}
|
|
|
79205
79246
|
|
|
79206
79247
|
The planner sent you three XML sections. Your job is **advisory adversarial review** — raise risks, challenge assumptions, align with user intent. Be **specific and targeted**: cite concrete claims, files, UX choices, and gaps from the check-in so the planner can improve the plan without re-synthesizing vague feedback.
|
|
79207
79248
|
|
|
79208
|
-
Give **concrete, actionable recommendations** in every section. End with **Recommendations** (second-last: summarized suggestions, tradeoffs, and considerations) then **Suggested edits** (last: proposed edits to grounding and the builder-handoff with file paths and code snippets). For UI work, complete the optional **UX** section using the reference below. **Do not rewrite their full builder brief.** The planner makes the final call.
|
|
79249
|
+
Give **concrete, actionable recommendations** in every section. End with **Recommendations** (second-last: summarized suggestions, tradeoffs, and considerations) then **Suggested edits** (last: proposed edits to grounding and the builder-handoff with file paths and code snippets). For UI work, complete the optional **UX** section using the reference below. For large or multi-surface revision work, complete the optional **Defragmentation** section using its reference below. **Do not rewrite their full builder brief.** The planner makes the final call.
|
|
79209
79250
|
|
|
79210
79251
|
${renderWebappUxHandoffReference()}
|
|
79211
79252
|
|
|
79253
|
+
${renderDefragmentationHandoffReference()}
|
|
79254
|
+
|
|
79212
79255
|
\`\`\`markdown
|
|
79213
79256
|
${getEnhancerFeedbackTemplateBody()}
|
|
79214
79257
|
\`\`\`
|
|
@@ -80254,6 +80297,24 @@ var init_generator = __esm(() => {
|
|
|
80254
80297
|
init_review_guidelines();
|
|
80255
80298
|
});
|
|
80256
80299
|
|
|
80300
|
+
// src/infrastructure/deps/create-convex-command-deps.ts
|
|
80301
|
+
async function createConvexCommandDeps() {
|
|
80302
|
+
const client4 = await getConvexClient();
|
|
80303
|
+
const backend2 = {
|
|
80304
|
+
mutation: (endpoint, args2) => client4.mutation(endpoint, args2),
|
|
80305
|
+
query: (endpoint, args2) => client4.query(endpoint, args2)
|
|
80306
|
+
};
|
|
80307
|
+
const session2 = { getSessionId, getConvexUrl, getOtherSessionUrls };
|
|
80308
|
+
return {
|
|
80309
|
+
backend: backend2,
|
|
80310
|
+
session: session2
|
|
80311
|
+
};
|
|
80312
|
+
}
|
|
80313
|
+
var init_create_convex_command_deps = __esm(() => {
|
|
80314
|
+
init_storage();
|
|
80315
|
+
init_client2();
|
|
80316
|
+
});
|
|
80317
|
+
|
|
80257
80318
|
// src/commands/handoff/index.ts
|
|
80258
80319
|
var exports_handoff = {};
|
|
80259
80320
|
__export(exports_handoff, {
|
|
@@ -80261,18 +80322,7 @@ __export(exports_handoff, {
|
|
|
80261
80322
|
handoff: () => handoff
|
|
80262
80323
|
});
|
|
80263
80324
|
async function createDefaultDeps10() {
|
|
80264
|
-
|
|
80265
|
-
return {
|
|
80266
|
-
backend: {
|
|
80267
|
-
mutation: (endpoint, args2) => client4.mutation(endpoint, args2),
|
|
80268
|
-
query: (endpoint, args2) => client4.query(endpoint, args2)
|
|
80269
|
-
},
|
|
80270
|
-
session: {
|
|
80271
|
-
getSessionId,
|
|
80272
|
-
getConvexUrl,
|
|
80273
|
-
getOtherSessionUrls
|
|
80274
|
-
}
|
|
80275
|
-
};
|
|
80325
|
+
return createConvexCommandDeps();
|
|
80276
80326
|
}
|
|
80277
80327
|
function handleHandoffError(err) {
|
|
80278
80328
|
return exports_Effect.sync(() => {
|
|
@@ -80389,8 +80439,7 @@ var init_handoff = __esm(() => {
|
|
|
80389
80439
|
init_values();
|
|
80390
80440
|
init_esm();
|
|
80391
80441
|
init_api3();
|
|
80392
|
-
|
|
80393
|
-
init_client2();
|
|
80442
|
+
init_create_convex_command_deps();
|
|
80394
80443
|
init_services();
|
|
80395
80444
|
init_error_formatting();
|
|
80396
80445
|
});
|
|
@@ -81687,18 +81736,7 @@ __export(exports_skill, {
|
|
|
81687
81736
|
activateSkill: () => activateSkill
|
|
81688
81737
|
});
|
|
81689
81738
|
async function createDefaultDeps15() {
|
|
81690
|
-
|
|
81691
|
-
return {
|
|
81692
|
-
backend: {
|
|
81693
|
-
mutation: (endpoint, args2) => client4.mutation(endpoint, args2),
|
|
81694
|
-
query: (endpoint, args2) => client4.query(endpoint, args2)
|
|
81695
|
-
},
|
|
81696
|
-
session: {
|
|
81697
|
-
getSessionId,
|
|
81698
|
-
getConvexUrl,
|
|
81699
|
-
getOtherSessionUrls
|
|
81700
|
-
}
|
|
81701
|
-
};
|
|
81739
|
+
return createConvexCommandDeps();
|
|
81702
81740
|
}
|
|
81703
81741
|
function handleListSkillsError(err) {
|
|
81704
81742
|
return exports_Effect.sync(() => {
|
|
@@ -81824,8 +81862,7 @@ var listSkillsEffect = (chatroomId, _options) => exports_Effect.gen(function* ()
|
|
|
81824
81862
|
var init_skill = __esm(() => {
|
|
81825
81863
|
init_esm();
|
|
81826
81864
|
init_api3();
|
|
81827
|
-
|
|
81828
|
-
init_client2();
|
|
81865
|
+
init_create_convex_command_deps();
|
|
81829
81866
|
init_services();
|
|
81830
81867
|
init_convex_error();
|
|
81831
81868
|
});
|
|
@@ -81883,6 +81920,111 @@ var init_send = __esm(() => {
|
|
|
81883
81920
|
init_client2();
|
|
81884
81921
|
});
|
|
81885
81922
|
|
|
81923
|
+
// ../../services/backend/src/domain/usecase/message/serialize-message.ts
|
|
81924
|
+
function attachmentContext(options) {
|
|
81925
|
+
return { chatroomId: options.chatroomId ?? "", role: options.role ?? "" };
|
|
81926
|
+
}
|
|
81927
|
+
function serializeLinearMessage(message, options) {
|
|
81928
|
+
const target = message.targetRole ? ` → ${message.targetRole}` : "";
|
|
81929
|
+
const attachments = message.attachments ? renderDeliveryAttachmentsBlock(message.attachments, attachmentContext(options)).join(`
|
|
81930
|
+
`) : "";
|
|
81931
|
+
return `${new Date(message._creationTime).toISOString()} | ${message.senderRole}${target}
|
|
81932
|
+
${attachments ? `${attachments}
|
|
81933
|
+
` : ""}
|
|
81934
|
+
${message.content}`;
|
|
81935
|
+
}
|
|
81936
|
+
function serializeTaskOriginMessage(message) {
|
|
81937
|
+
return `<message sender="${escapeXmlAttribute(message.senderRole)}" message-id="${escapeXmlAttribute(message._id)}">
|
|
81938
|
+
<message-content>
|
|
81939
|
+
${escapeXmlText(message.content)}
|
|
81940
|
+
</message-content>
|
|
81941
|
+
</message>`;
|
|
81942
|
+
}
|
|
81943
|
+
function serializeContextXmlMessage(message, options) {
|
|
81944
|
+
const indent = options.indent ?? " ";
|
|
81945
|
+
const attrs = contextMessageAttributes(message);
|
|
81946
|
+
const task = contextTaskBlock(message, indent);
|
|
81947
|
+
const attachmentLines = contextAttachmentLines(message, options, indent);
|
|
81948
|
+
return [
|
|
81949
|
+
`<message ${attrs}>`,
|
|
81950
|
+
task,
|
|
81951
|
+
...attachmentLines,
|
|
81952
|
+
`${indent}Content:`,
|
|
81953
|
+
`${indent}<message-content>`,
|
|
81954
|
+
`${indent}${indent}${escapeXmlText(message.content)}`,
|
|
81955
|
+
`${indent}</message-content>`,
|
|
81956
|
+
`</message>`
|
|
81957
|
+
].filter(Boolean).join(`
|
|
81958
|
+
`);
|
|
81959
|
+
}
|
|
81960
|
+
function contextMessageAttributes(message) {
|
|
81961
|
+
const target = message.targetRole ? ` to="${escapeXmlAttribute(message.targetRole)}"` : "";
|
|
81962
|
+
return `id="${escapeXmlAttribute(message._id)}" from="${escapeXmlAttribute(message.senderRole)}"${target} type="${escapeXmlAttribute(message.type)}"`;
|
|
81963
|
+
}
|
|
81964
|
+
function contextTaskBlock(message, indent) {
|
|
81965
|
+
if (!message.task)
|
|
81966
|
+
return "";
|
|
81967
|
+
return `
|
|
81968
|
+
${indent}<task id="${escapeXmlAttribute(message.task._id)}" status="${escapeXmlAttribute(message.task.status)}">
|
|
81969
|
+
${indent}${indent}${escapeXmlText(message.task.content)}
|
|
81970
|
+
${indent}</task>`;
|
|
81971
|
+
}
|
|
81972
|
+
function contextAttachmentLines(message, options, indent) {
|
|
81973
|
+
if (!message.attachments)
|
|
81974
|
+
return [];
|
|
81975
|
+
return renderDeliveryAttachmentsBlock(message.attachments, attachmentContext(options)).map((line) => line ? indent + line : "");
|
|
81976
|
+
}
|
|
81977
|
+
function serializeMessage(message, options) {
|
|
81978
|
+
switch (options.profile) {
|
|
81979
|
+
case "linear":
|
|
81980
|
+
return serializeLinearMessage(message, options);
|
|
81981
|
+
case "task-origin":
|
|
81982
|
+
return serializeTaskOriginMessage(message);
|
|
81983
|
+
case "context-xml":
|
|
81984
|
+
return serializeContextXmlMessage(message, options);
|
|
81985
|
+
}
|
|
81986
|
+
}
|
|
81987
|
+
var init_serialize_message = __esm(() => {
|
|
81988
|
+
init_render_delivery_attachments();
|
|
81989
|
+
});
|
|
81990
|
+
|
|
81991
|
+
// ../../services/backend/src/domain/usecase/message/to-serializable-message.ts
|
|
81992
|
+
function normalizeDeliveryAttachments(input) {
|
|
81993
|
+
const attachments = {
|
|
81994
|
+
attachedTasks: input.attachedTasks?.map((item) => ({
|
|
81995
|
+
_id: item._id,
|
|
81996
|
+
content: item.content,
|
|
81997
|
+
status: item.status ?? item.backlogStatus ?? ""
|
|
81998
|
+
})),
|
|
81999
|
+
attachedBacklogItems: input.attachedBacklogItems?.map((item) => ({
|
|
82000
|
+
_id: item._id ?? item.id ?? "",
|
|
82001
|
+
content: item.content,
|
|
82002
|
+
status: item.status
|
|
82003
|
+
})),
|
|
82004
|
+
attachedMessages: input.attachedMessages,
|
|
82005
|
+
attachedSnippets: input.attachedSnippets
|
|
82006
|
+
};
|
|
82007
|
+
return Object.values(attachments).some((items) => items && items.length > 0) ? attachments : undefined;
|
|
82008
|
+
}
|
|
82009
|
+
function normalizeTask(input) {
|
|
82010
|
+
if (!input.taskId || input.taskStatus == null || input.taskContent == null)
|
|
82011
|
+
return;
|
|
82012
|
+
return { _id: input.taskId, status: input.taskStatus, content: input.taskContent };
|
|
82013
|
+
}
|
|
82014
|
+
function toSerializableMessage(input) {
|
|
82015
|
+
const attachments = normalizeDeliveryAttachments(input);
|
|
82016
|
+
return {
|
|
82017
|
+
_id: input._id,
|
|
82018
|
+
_creationTime: input._creationTime,
|
|
82019
|
+
senderRole: input.senderRole,
|
|
82020
|
+
targetRole: input.targetRole,
|
|
82021
|
+
type: input.type,
|
|
82022
|
+
content: input.content,
|
|
82023
|
+
...attachments ? { attachments } : {},
|
|
82024
|
+
...normalizeTask(input) ? { task: normalizeTask(input) } : {}
|
|
82025
|
+
};
|
|
82026
|
+
}
|
|
82027
|
+
|
|
81886
82028
|
// src/commands/messages/messages-fs-service.ts
|
|
81887
82029
|
import * as nodeFs2 from "node:fs/promises";
|
|
81888
82030
|
function messageFilename(msg) {
|
|
@@ -81890,13 +82032,6 @@ function messageFilename(msg) {
|
|
|
81890
82032
|
const receiver = msg.targetRole ?? "all";
|
|
81891
82033
|
return `${sortPrefix}_${msg.senderRole}-to-${receiver}_${msg._id}.md`;
|
|
81892
82034
|
}
|
|
81893
|
-
function buildLinearMessageContent(msg) {
|
|
81894
|
-
const ts = new Date(msg._creationTime).toISOString();
|
|
81895
|
-
const receiver = msg.targetRole ? ` → ${msg.targetRole}` : "";
|
|
81896
|
-
return `${ts} | ${msg.senderRole}${receiver}
|
|
81897
|
-
|
|
81898
|
-
${msg.content}`;
|
|
81899
|
-
}
|
|
81900
82035
|
var MessagesFsService, MessagesFsServiceLive, SORT_KEY_MAX = 9999999999999;
|
|
81901
82036
|
var init_messages_fs_service = __esm(() => {
|
|
81902
82037
|
init_esm();
|
|
@@ -82073,7 +82208,11 @@ var PAGE_SIZE = 50, SINCE_PAGE_SIZE = 500, ABSOLUTE_MAX = 5000, DEFAULT_LIMIT =
|
|
|
82073
82208
|
const manifestEntries = [];
|
|
82074
82209
|
for (const msg of messages) {
|
|
82075
82210
|
const file = messageFilename(msg);
|
|
82076
|
-
const content =
|
|
82211
|
+
const content = serializeMessage(toSerializableMessage(msg), {
|
|
82212
|
+
profile: "linear",
|
|
82213
|
+
chatroomId,
|
|
82214
|
+
role: options.role
|
|
82215
|
+
});
|
|
82077
82216
|
const filePath = nodePath2.join(outputDir, file);
|
|
82078
82217
|
yield* fs11.writeFile(filePath, content).pipe(exports_Effect.mapError((cause3) => ({
|
|
82079
82218
|
_tag: "WriteFailed",
|
|
@@ -82131,6 +82270,7 @@ var PAGE_SIZE = 50, SINCE_PAGE_SIZE = 500, ABSOLUTE_MAX = 5000, DEFAULT_LIMIT =
|
|
|
82131
82270
|
});
|
|
82132
82271
|
});
|
|
82133
82272
|
var init_download = __esm(() => {
|
|
82273
|
+
init_serialize_message();
|
|
82134
82274
|
init_esm();
|
|
82135
82275
|
init_messages_fs_service();
|
|
82136
82276
|
init_api3();
|
|
@@ -82442,18 +82582,19 @@ __export(exports_context2, {
|
|
|
82442
82582
|
inspectContext: () => inspectContext
|
|
82443
82583
|
});
|
|
82444
82584
|
async function createDefaultDeps18() {
|
|
82445
|
-
|
|
82446
|
-
|
|
82447
|
-
|
|
82448
|
-
|
|
82449
|
-
|
|
82450
|
-
|
|
82451
|
-
|
|
82452
|
-
|
|
82453
|
-
|
|
82454
|
-
|
|
82455
|
-
}
|
|
82456
|
-
|
|
82585
|
+
return createConvexCommandDeps();
|
|
82586
|
+
}
|
|
82587
|
+
function requireAuthenticatedChatroom(chatroomId) {
|
|
82588
|
+
return exports_Effect.gen(function* () {
|
|
82589
|
+
const sessionId = yield* requireSessionIdEffect(() => ({
|
|
82590
|
+
_tag: "NotAuthenticated"
|
|
82591
|
+
}));
|
|
82592
|
+
yield* validateChatroomIdEffect(chatroomId, (id3) => ({
|
|
82593
|
+
_tag: "InvalidChatroomId",
|
|
82594
|
+
id: id3
|
|
82595
|
+
}));
|
|
82596
|
+
return sessionId;
|
|
82597
|
+
});
|
|
82457
82598
|
}
|
|
82458
82599
|
function handleContextError(err) {
|
|
82459
82600
|
return exports_Effect.sync(() => {
|
|
@@ -82506,13 +82647,7 @@ async function inspectContext(chatroomId, options, deps) {
|
|
|
82506
82647
|
}
|
|
82507
82648
|
var readContextEffect = (chatroomId, options) => exports_Effect.gen(function* () {
|
|
82508
82649
|
const backend2 = yield* BackendService;
|
|
82509
|
-
const sessionId = yield*
|
|
82510
|
-
_tag: "NotAuthenticated"
|
|
82511
|
-
}));
|
|
82512
|
-
yield* validateChatroomIdEffect(chatroomId, (id3) => ({
|
|
82513
|
-
_tag: "InvalidChatroomId",
|
|
82514
|
-
id: id3
|
|
82515
|
-
}));
|
|
82650
|
+
const sessionId = yield* requireAuthenticatedChatroom(chatroomId);
|
|
82516
82651
|
const context5 = yield* backend2.query(api.messages.getContextForRole, {
|
|
82517
82652
|
sessionId,
|
|
82518
82653
|
chatroomId,
|
|
@@ -82559,47 +82694,12 @@ var readContextEffect = (chatroomId, options) => exports_Effect.gen(function* ()
|
|
|
82559
82694
|
\uD83D\uDCAC Chat History:`);
|
|
82560
82695
|
console.log("─".repeat(60));
|
|
82561
82696
|
for (const message of context5.messages) {
|
|
82562
|
-
const
|
|
82563
|
-
|
|
82564
|
-
|
|
82565
|
-
|
|
82566
|
-
|
|
82567
|
-
|
|
82568
|
-
console.log(` Status: ${message.taskStatus}`);
|
|
82569
|
-
}
|
|
82570
|
-
if (message.taskContent) {
|
|
82571
|
-
const safeTaskContent = sanitizeForTerminal(message.taskContent);
|
|
82572
|
-
console.log(` Content:`);
|
|
82573
|
-
console.log(` <task-content>`);
|
|
82574
|
-
console.log(safeTaskContent.split(`
|
|
82575
|
-
`).map((l) => ` ${l}`).join(`
|
|
82576
|
-
`));
|
|
82577
|
-
console.log(` </task-content>`);
|
|
82578
|
-
}
|
|
82579
|
-
}
|
|
82580
|
-
if (message.attachedTasks && message.attachedTasks.length > 0) {
|
|
82581
|
-
console.log(` Attachments:`);
|
|
82582
|
-
for (const task of message.attachedTasks) {
|
|
82583
|
-
console.log(` \uD83D\uDD39 Task ID: ${task._id}`);
|
|
82584
|
-
console.log(` Type: Task`);
|
|
82585
|
-
const contentLines = sanitizeForTerminal(task.content).split(`
|
|
82586
|
-
`);
|
|
82587
|
-
console.log(` Content:`);
|
|
82588
|
-
console.log(` <task-content>`);
|
|
82589
|
-
for (const line of contentLines) {
|
|
82590
|
-
console.log(` ${line}`);
|
|
82591
|
-
}
|
|
82592
|
-
console.log(` </task-content>`);
|
|
82593
|
-
}
|
|
82594
|
-
}
|
|
82595
|
-
console.log(` Content:`);
|
|
82596
|
-
console.log(` <message-content>`);
|
|
82597
|
-
const safeMessageContent = sanitizeForTerminal(message.content);
|
|
82598
|
-
console.log(safeMessageContent.split(`
|
|
82599
|
-
`).map((l) => ` ${l}`).join(`
|
|
82600
|
-
`));
|
|
82601
|
-
console.log(` </message-content>`);
|
|
82602
|
-
console.log(`</message>`);
|
|
82697
|
+
const serialized = serializeMessage(toSerializableMessage(message), {
|
|
82698
|
+
profile: "context-xml",
|
|
82699
|
+
chatroomId,
|
|
82700
|
+
role: options.role
|
|
82701
|
+
});
|
|
82702
|
+
console.log(sanitizeForTerminal(serialized));
|
|
82603
82703
|
}
|
|
82604
82704
|
console.log(`
|
|
82605
82705
|
` + "═".repeat(60));
|
|
@@ -82607,13 +82707,7 @@ var readContextEffect = (chatroomId, options) => exports_Effect.gen(function* ()
|
|
|
82607
82707
|
});
|
|
82608
82708
|
}), newContextEffect = (chatroomId, options) => exports_Effect.gen(function* () {
|
|
82609
82709
|
const backend2 = yield* BackendService;
|
|
82610
|
-
const sessionId = yield*
|
|
82611
|
-
_tag: "NotAuthenticated"
|
|
82612
|
-
}));
|
|
82613
|
-
yield* validateChatroomIdEffect(chatroomId, (id3) => ({
|
|
82614
|
-
_tag: "InvalidChatroomId",
|
|
82615
|
-
id: id3
|
|
82616
|
-
}));
|
|
82710
|
+
const sessionId = yield* requireAuthenticatedChatroom(chatroomId);
|
|
82617
82711
|
if (!options.content || options.content.trim().length === 0) {
|
|
82618
82712
|
return yield* exports_Effect.fail({ _tag: "EmptyContent" });
|
|
82619
82713
|
}
|
|
@@ -82724,11 +82818,11 @@ var readContextEffect = (chatroomId, options) => exports_Effect.gen(function* ()
|
|
|
82724
82818
|
});
|
|
82725
82819
|
});
|
|
82726
82820
|
var init_context2 = __esm(() => {
|
|
82821
|
+
init_serialize_message();
|
|
82727
82822
|
init_esm();
|
|
82728
82823
|
init_format_new_context_error();
|
|
82729
82824
|
init_api3();
|
|
82730
|
-
|
|
82731
|
-
init_client2();
|
|
82825
|
+
init_create_convex_command_deps();
|
|
82732
82826
|
init_services();
|
|
82733
82827
|
});
|
|
82734
82828
|
|
|
@@ -82857,18 +82951,7 @@ __export(exports_artifact, {
|
|
|
82857
82951
|
createArtifact: () => createArtifact
|
|
82858
82952
|
});
|
|
82859
82953
|
async function createDefaultDeps20() {
|
|
82860
|
-
|
|
82861
|
-
return {
|
|
82862
|
-
backend: {
|
|
82863
|
-
mutation: (endpoint, args2) => client4.mutation(endpoint, args2),
|
|
82864
|
-
query: (endpoint, args2) => client4.query(endpoint, args2)
|
|
82865
|
-
},
|
|
82866
|
-
session: {
|
|
82867
|
-
getSessionId,
|
|
82868
|
-
getConvexUrl,
|
|
82869
|
-
getOtherSessionUrls
|
|
82870
|
-
}
|
|
82871
|
-
};
|
|
82954
|
+
return createConvexCommandDeps();
|
|
82872
82955
|
}
|
|
82873
82956
|
function handleArtifactError(err) {
|
|
82874
82957
|
return exports_Effect.sync(() => {
|
|
@@ -83019,8 +83102,7 @@ var createArtifactEffect = (chatroomId, options) => exports_Effect.gen(function*
|
|
|
83019
83102
|
var init_artifact = __esm(() => {
|
|
83020
83103
|
init_esm();
|
|
83021
83104
|
init_api3();
|
|
83022
|
-
|
|
83023
|
-
init_client2();
|
|
83105
|
+
init_create_convex_command_deps();
|
|
83024
83106
|
init_services();
|
|
83025
83107
|
init_file_content();
|
|
83026
83108
|
artifactErrorHandlers = {
|
|
@@ -98511,9 +98593,11 @@ function parseAssignedTaskSignal(raw) {
|
|
|
98511
98593
|
return assignedTaskSignalSchema.parse(raw);
|
|
98512
98594
|
}
|
|
98513
98595
|
function parseAssignedTaskPresenceSignal(raw) {
|
|
98596
|
+
const full = assignedTaskPresenceSignalSchema.safeParse(raw);
|
|
98597
|
+
if (full.success)
|
|
98598
|
+
return full.data;
|
|
98514
98599
|
const delta = assignedTaskPresenceDeltaSchema.safeParse(raw);
|
|
98515
|
-
|
|
98516
|
-
if (delta.success && !hasFullWireFields) {
|
|
98600
|
+
if (delta.success) {
|
|
98517
98601
|
const presenceUpdatedAt = Number(delta.data.presenceKey.split(":")[0]);
|
|
98518
98602
|
const resolvedAt = Number.isFinite(presenceUpdatedAt) ? presenceUpdatedAt : 0;
|
|
98519
98603
|
return {
|
|
@@ -99436,11 +99520,13 @@ async function runRestartOrchestrator(deps, event) {
|
|
|
99436
99520
|
markRestartOrchestratorInFlight(chatroomId, role, event.correlationId);
|
|
99437
99521
|
try {
|
|
99438
99522
|
resetRoleDeliveryState(chatroomId, role);
|
|
99523
|
+
await emitPhase(deps, event, "reset");
|
|
99439
99524
|
await deps.agentMgr.stop({
|
|
99440
99525
|
chatroomId,
|
|
99441
99526
|
role,
|
|
99442
99527
|
reason: "user.restart"
|
|
99443
99528
|
});
|
|
99529
|
+
await emitPhase(deps, event, "spawn");
|
|
99444
99530
|
const spawnResult = await exports_Effect.runPromise(deps.agentMgr.ensureRunning({
|
|
99445
99531
|
chatroomId,
|
|
99446
99532
|
role,
|
|
@@ -99454,13 +99540,17 @@ async function runRestartOrchestrator(deps, event) {
|
|
|
99454
99540
|
await emitPhase(deps, event, "failed", spawnResult.error ?? "spawn failed");
|
|
99455
99541
|
return;
|
|
99456
99542
|
}
|
|
99543
|
+
await emitPhase(deps, event, "await_session");
|
|
99457
99544
|
const harnessSessionId = await waitForHarnessSessionId(deps, event, spawnResult.pid);
|
|
99458
99545
|
if (!harnessSessionId) {
|
|
99459
99546
|
await emitPhase(deps, event, "failed", "harnessSessionId timeout");
|
|
99460
99547
|
return;
|
|
99461
99548
|
}
|
|
99462
99549
|
await forceNativeWaiting(deps, event);
|
|
99550
|
+
await emitPhase(deps, event, "ready");
|
|
99551
|
+
await emitPhase(deps, event, "deliver");
|
|
99463
99552
|
const deliveredTaskIds = await deliverPendingTasks(deps, event);
|
|
99553
|
+
await emitPhase(deps, event, "completed");
|
|
99464
99554
|
await deps.session.backend.mutation(api.machines.emitRestartCompleted, {
|
|
99465
99555
|
sessionId: deps.session.sessionId,
|
|
99466
99556
|
machineId: deps.session.machineId,
|
|
@@ -127310,13 +127400,13 @@ import { dirname as dirname15, join as join27 } from "node:path";
|
|
|
127310
127400
|
import { fileURLToPath as fileURLToPath7 } from "node:url";
|
|
127311
127401
|
function clientDistCandidates(here) {
|
|
127312
127402
|
return [
|
|
127403
|
+
join27(here, "client/build"),
|
|
127313
127404
|
join27(here, "../client/build"),
|
|
127314
|
-
join27(here, "../src/daemon/local-web/client/build")
|
|
127315
|
-
join27(here, "../../../src/daemon/local-web/client/build")
|
|
127405
|
+
join27(here, "../src/daemon/local-web/client/build")
|
|
127316
127406
|
];
|
|
127317
127407
|
}
|
|
127318
|
-
function resolveClientDistDir() {
|
|
127319
|
-
const candidates = clientDistCandidates(
|
|
127408
|
+
function resolveClientDistDir(here = dirname15(fileURLToPath7(import.meta.url))) {
|
|
127409
|
+
const candidates = clientDistCandidates(here);
|
|
127320
127410
|
for (const dir of candidates) {
|
|
127321
127411
|
if (existsSync9(join27(dir, "index.html")))
|
|
127322
127412
|
return dir;
|
|
@@ -127598,7 +127688,7 @@ async function startLocalWebServer(config4, deps = {}) {
|
|
|
127598
127688
|
throw new Error(`local-web must bind to 127.0.0.1 only (got ${config4.host})`);
|
|
127599
127689
|
}
|
|
127600
127690
|
const streamHub = deps.streamHub ?? createStreamHub();
|
|
127601
|
-
const clientDistDir = resolveClientDistDir();
|
|
127691
|
+
const clientDistDir = deps.clientDistDir ?? resolveClientDistDir();
|
|
127602
127692
|
const server2 = createServer((req, res) => {
|
|
127603
127693
|
if (tryServeStatic(req, res, clientDistDir))
|
|
127604
127694
|
return;
|
|
@@ -128935,4 +129025,4 @@ program2.hook("preAction", async (_thisCommand, actionCommand) => {
|
|
|
128935
129025
|
});
|
|
128936
129026
|
program2.parse();
|
|
128937
129027
|
|
|
128938
|
-
//# debugId=
|
|
129028
|
+
//# debugId=3C5E79A2AC47FADE64756E2164756E21
|