besser-agentic-framework-ui 0.1.0 → 0.2.1

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.
@@ -1,6 +1,19 @@
1
+ import type { ChatMessage } from '../types/agent';
2
+ import type { ConnectionStatus } from '../hooks/useWebSocket';
3
+ interface ChatWidgetProps {
4
+ messages: ChatMessage[];
5
+ setMessages: React.Dispatch<React.SetStateAction<ChatMessage[]>>;
6
+ send: (action: string, message: unknown) => void;
7
+ status: ConnectionStatus;
8
+ }
1
9
  interface GUIRendererProps {
2
10
  content: unknown;
3
11
  onInteract?: (eventJson: string) => void;
12
+ messageId?: string;
13
+ chatProps?: ChatWidgetProps;
14
+ /** When true, backgrounds and explicit text colors are stripped so the GUI
15
+ * blends with the surrounding chat interface typography and color scheme. */
16
+ chatMode?: boolean;
4
17
  }
5
- export declare function GUIRenderer({ content, onInteract }: GUIRendererProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function GUIRenderer({ content, onInteract, messageId, chatProps, chatMode }: GUIRendererProps): import("react/jsx-runtime").JSX.Element;
6
19
  export {};
package/dist/style.css CHANGED
@@ -1,2 +1,2 @@
1
- .baf-chat{--bg:#f8f9fa;--surface:#fff;--border:#e2e8f0;--code-bg:#f1f5f9;--text-primary:#1a202c;--text-secondary:#64748b;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-bg:#2563eb14;--error:#ef4444;--error-bg:#ef44441a}@media (prefers-color-scheme:dark){.baf-chat{--bg:#0f172a;--surface:#1e293b;--border:#334155;--code-bg:#1a2535;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--accent:#3b82f6;--accent-hover:#2563eb;--accent-bg:#3b82f61a;--error:#f87171;--error-bg:#f871711a}}.baf-chat *,.baf-chat :before,.baf-chat :after{box-sizing:border-box;margin:0;padding:0}.btn{cursor:pointer;border:none;border-radius:8px;padding:9px 18px;font-family:inherit;font-size:.9rem;font-weight:500;transition:background .15s,opacity .15s,color .15s}.btn--primary{background:var(--accent);color:#fff}.btn--primary:hover:not(:disabled){background:var(--accent-hover)}.btn--primary:disabled{opacity:.45;cursor:not-allowed}.btn--secondary{background:var(--border);color:var(--text-primary)}.btn--secondary:hover{filter:brightness(.93)}.btn--ghost{color:var(--text-secondary);background:0 0;padding:8px 12px}.btn--ghost:hover{background:var(--border);color:var(--text-primary)}.agent-selector{background:var(--bg);flex-direction:column;align-items:center;min-height:100vh;padding:64px 24px 40px;display:flex}.agent-selector__header{text-align:center;margin-bottom:48px}.agent-selector__title{color:var(--text-primary);margin-bottom:8px;font-size:2rem;font-weight:700}.agent-selector__subtitle{color:var(--text-secondary);font-size:1rem}.agent-selector__username-bar{align-items:center;gap:12px;width:100%;max-width:360px;margin-top:20px;display:flex}.agent-selector__username-label{color:var(--text-secondary);white-space:nowrap;font-size:.875rem;font-weight:500}.agent-selector__username-input{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;flex:1;padding:8px 12px;font-size:.9rem;transition:border-color .15s}.agent-selector__username-input:focus{border-color:var(--accent)}.agent-selector__grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;width:100%;max-width:900px;display:grid}.agent-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;text-align:left;width:100%;color:var(--text-primary);border-radius:12px;align-items:center;gap:14px;padding:20px;font-family:inherit;transition:box-shadow .2s,border-color .2s;display:flex;position:relative}.agent-card:hover{border-color:var(--accent);box-shadow:0 4px 16px #00000012}.agent-card--add{color:var(--text-secondary);background:0 0;border-style:dashed;flex-direction:column;justify-content:center;gap:6px;font-size:.95rem}.agent-card--add:hover{color:var(--accent)}.agent-card__icon{flex-shrink:0;font-size:1.8rem}.agent-card__plus{font-size:2rem;line-height:1}.agent-card__info{flex:1;min-width:0}.agent-card__name{margin-bottom:4px;font-size:1rem;font-weight:600}.agent-card__url{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-family:monospace;font-size:.8rem;overflow:hidden}.agent-card__remove{width:24px;height:24px;color:var(--text-secondary);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.2rem;line-height:1;transition:opacity .15s,background .15s,color .15s;display:flex;position:absolute;top:8px;right:8px}.agent-card:hover .agent-card__remove{opacity:1}.agent-card__remove:hover{background:var(--error-bg);color:var(--error)}.modal-overlay{z-index:100;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:16px;width:100%;max-width:440px;padding:32px;box-shadow:0 20px 60px #00000026}.modal__title{color:var(--text-primary);margin-bottom:24px;font-size:1.25rem;font-weight:700}.modal__form{flex-direction:column;gap:16px;display:flex}.modal__label{color:var(--text-secondary);flex-direction:column;gap:6px;font-size:.88rem;font-weight:500;display:flex}.modal__input{border:1px solid var(--border);background:var(--bg);color:var(--text-primary);border-radius:8px;outline:none;padding:10px 14px;font-family:inherit;font-size:.95rem;transition:border-color .15s}.modal__input:focus{border-color:var(--accent)}.modal__input--error{border-color:var(--error)!important}.modal__error{color:var(--error);margin-top:2px;font-size:.82rem}.modal__actions{justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.chat-layout{background:var(--bg);flex-direction:column;height:100vh;display:flex}.chat-layout__header{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:12px;padding:10px 16px;display:flex}.chat-layout__agent-info{flex-direction:column;flex:1;min-width:0;display:flex}.chat-layout__agent-name{color:var(--text-primary);font-size:1rem;font-weight:600}.chat-layout__agent-url{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-family:monospace;font-size:.78rem;overflow:hidden}.chat-layout__body{flex:1;display:flex;overflow:hidden}.status-badge{flex-shrink:0;align-items:center;gap:7px;font-size:.85rem;font-weight:500;display:flex}.status-badge__dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.session-sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:240px;display:flex}.session-sidebar__header{border-bottom:1px solid var(--border);flex-direction:column;gap:10px;padding:14px 16px;display:flex}.session-sidebar__title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);font-size:.8rem;font-weight:600}.session-sidebar__new{flex-direction:column;gap:6px;display:flex}.session-sidebar__name-input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;outline:none;padding:6px 10px;font-size:.825rem;transition:border-color .15s}.session-sidebar__name-input:focus{border-color:var(--accent)}.session-sidebar__start-btn{width:100%;padding:6px 10px;font-size:.825rem}.session-sidebar__empty{color:var(--text-secondary);flex:1;justify-content:center;align-items:center;font-size:.875rem;display:flex}.session-sidebar__body{flex-direction:column;flex:1;padding:6px 0;display:flex;overflow-y:auto}.session-sidebar__status{color:var(--text-secondary);text-align:center;padding:12px 16px;font-size:.825rem}.session-sidebar__status--error{color:#ef4444}.session-item{border-left:3px solid #0000;flex-direction:row;align-items:center;transition:background .15s,border-color .15s;display:flex}.session-item:hover{background:var(--border)}.session-item--active{border-left-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.session-item__content{all:unset;cursor:pointer;flex-direction:column;flex:1;gap:2px;min-width:0;padding:8px 16px;display:flex}.session-item__delete{all:unset;width:28px;height:28px;color:var(--text-secondary);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-right:8px;transition:background .15s,color .15s;display:flex}.session-item__delete:hover{color:#ef4444;background:#ef444426}.session-item__id{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-family:monospace;font-size:.75rem;overflow:hidden}.session-item__meta{color:var(--text-secondary);font-size:.7rem}.agent-card__username{color:var(--text-secondary);margin-top:2px;font-size:.75rem}.start-session{background:var(--bg);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.start-session__name-input{background:var(--surface);border:1px solid var(--border);width:280px;color:var(--text);text-align:center;border-radius:8px;outline:none;padding:10px 14px;font-size:.9rem;transition:border-color .15s}.start-session__name-input:focus{border-color:var(--accent)}.start-session__btn{padding:14px 36px;font-size:1rem}.chat-area{background:var(--bg);flex-direction:column;flex:1;display:flex;overflow:hidden}.chat-area__messages{flex-direction:column;flex:1;gap:16px;padding:24px 1%;display:flex;overflow-y:auto}.chat-area__empty{color:var(--text-secondary);text-align:center;margin:auto;font-size:.95rem}.chat-area__input-row{background:0 0;border-top:none;align-items:flex-end;gap:10px;padding:14px 10%;display:flex}.chat-area__textarea{resize:none;border:1px solid var(--border);background:var(--bg);color:var(--text-primary);border-radius:10px;outline:none;flex:1;min-height:42px;max-height:160px;padding:10px 14px;font-family:inherit;font-size:.95rem;line-height:1.5;transition:border-color .15s;overflow-y:auto}.chat-area__textarea:focus{border-color:var(--accent)}.chat-area__textarea:disabled{opacity:.5;cursor:not-allowed}.chat-area__send-btn{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;padding:0;font-size:1.2rem;line-height:1;display:flex}.chat-area__composer{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.chat-area__input-line{align-items:flex-end;display:flex}.chat-area__input-line .chat-area__textarea{flex:1}.chat-area__attachments{flex-wrap:wrap;gap:6px;padding:0 2px;display:flex}.attachment-chip{background:var(--code-bg);border:1px solid var(--border);border-radius:20px;align-items:center;gap:5px;max-width:220px;padding:4px 8px;font-size:.82rem;display:inline-flex}.attachment-chip__icon{flex-shrink:0}.attachment-chip__name{text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary);overflow:hidden}.attachment-chip__remove{all:unset;cursor:pointer;color:var(--text-secondary);border-radius:50%;flex-shrink:0;padding:1px 2px;font-size:.75rem;line-height:1;transition:color .1s}.attachment-chip__remove:hover{color:#ef4444}.chat-area__icon-btn{width:42px;height:42px;color:var(--text-secondary);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:1.5rem;font-weight:400;line-height:1;transition:background .15s,color .15s;display:flex}.chat-area__icon-btn:hover:not(:disabled){background:var(--border);color:var(--text-primary)}.chat-area__icon-btn:disabled{opacity:.4;cursor:not-allowed}.chat-area__mic-btn{color:var(--text-secondary)}.chat-area__mic-btn--recording{color:#ef4444;background:#ef444414;border-color:#ef4444;animation:1.2s ease-in-out infinite mic-pulse}@keyframes mic-pulse{0%,to{box-shadow:0 0 #ef444459}50%{box-shadow:0 0 0 6px #ef444400}}.attach-menu-anchor{flex-shrink:0;position:relative}.attach-menu{background:var(--surface);border:1px solid var(--border);z-index:100;border-radius:10px;min-width:160px;position:absolute;bottom:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 4px 16px #0000001f}.attach-menu__item{all:unset;width:100%;color:var(--text-primary);cursor:pointer;box-sizing:border-box;align-items:center;gap:10px;padding:10px 14px;font-size:.9rem;transition:background .12s;display:flex}.attach-menu__item:hover{background:var(--border)}.attach-menu__item-icon{font-size:1rem}.message{gap:10px;max-width:78%;display:flex}.message--user{flex-direction:row-reverse;align-self:flex-end}.message--agent{align-self:flex-start}.message__avatar{display:none}.message__body{flex-direction:column;display:flex}.message__timestamp{color:var(--text-secondary);white-space:nowrap;opacity:0;pointer-events:none;flex-shrink:0;align-self:center;font-size:.72rem;transition:opacity .2s,transform .2s;transform:translate(-8px)}.message__timestamp--user{transform:translate(8px)}.message:hover .message__timestamp{opacity:1;transform:translate(0)}.message__bubble{word-break:break-word;font-size:.95rem;line-height:1.55}.message__bubble--user{background:var(--accent);color:#fff;border-radius:16px 16px 4px;padding:10px 14px}.message__bubble--agent{color:var(--text-primary);background:0 0;border:none;padding:2px 0}.msg-text{margin:0}.msg-text--muted{color:var(--text-secondary);font-style:italic}.msg-markdown{line-height:1.6}.msg-markdown p{margin:0 0 6px}.msg-markdown p:last-child{margin-bottom:0}.msg-markdown h1,.msg-markdown h2,.msg-markdown h3{margin:8px 0 4px;font-size:1em}.msg-markdown ul,.msg-markdown ol{margin:4px 0;padding-left:20px}.msg-markdown li{margin:2px 0}.msg-markdown code{background:var(--code-bg);border-radius:4px;padding:1px 5px;font-family:monospace;font-size:.87em}.msg-markdown pre{background:var(--code-bg);border-radius:6px;margin:6px 0;padding:10px 12px;overflow-x:auto}.msg-markdown pre code{background:0 0;padding:0;font-size:.85em}.msg-markdown blockquote{border-left:3px solid var(--border);color:var(--text-secondary);margin:4px 0;padding-left:10px}.msg-markdown table{border-collapse:collapse;width:100%;font-size:.88em}.msg-markdown th,.msg-markdown td{border:1px solid var(--border);text-align:left;padding:4px 8px}.msg-markdown th{background:var(--code-bg)}.msg-markdown a{color:var(--accent)}.msg-html{line-height:1.55}.msg-html a{color:var(--accent)}.msg-file-btn{background:var(--accent-bg);border:1px solid var(--accent);color:var(--accent);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:9px 16px;font-family:inherit;font-size:.9rem;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.msg-file-btn:hover{background:var(--accent);color:#fff}.msg-image img{border-radius:8px;max-width:100%;max-height:360px;display:block}.msg-table-wrapper{max-width:100%;overflow-x:auto}.msg-table{border-collapse:collapse;width:100%;font-size:.84rem}.msg-table th,.msg-table td{border:1px solid var(--border);text-align:left;white-space:nowrap;padding:6px 10px}.msg-table th{background:var(--code-bg);font-weight:600}.msg-table__th{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.msg-table__th:hover{background:color-mix(in srgb, var(--accent) 10%, var(--code-bg))}.msg-table__th--sorted{color:var(--accent)}.msg-table__sort-icon{opacity:.6;margin-left:4px;font-size:.75em;display:inline-block}.msg-table__th--sorted .msg-table__sort-icon{opacity:1}.msg-table tr:nth-child(2n){background:var(--code-bg)}.msg-plotly{border-radius:8px;width:100%;min-height:360px;overflow:hidden}.msg-code{background:var(--code-bg);color:var(--text-primary);border-radius:6px;margin-top:6px;padding:10px 12px;font-family:monospace;font-size:.82rem;overflow-x:auto}.msg-options{flex-wrap:wrap;gap:8px;display:flex}.msg-option-btn{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:20px;padding:7px 14px;font-family:inherit;font-size:.9rem;transition:background .15s,color .15s}.msg-option-btn:hover{background:var(--accent);color:#fff}.msg-location{flex-direction:column;gap:8px;display:flex}.msg-location__map{border:1px solid var(--border);border-radius:8px;width:100%;height:300px;display:block}.msg-location__link{color:var(--accent);font-size:.88rem}.msg-audio{flex-direction:column;gap:6px;display:flex}.msg-audio__player{width:100%;min-width:260px;accent-color:var(--accent)}.msg-audio__meta{color:var(--text-secondary);font-size:.78rem}.message__bubble--media{box-shadow:none!important;background:0 0!important;border:none!important;padding:4px 0!important}.msg-rag__answer{margin:0 0 10px;line-height:1.6}.msg-rag__details{border:1px solid var(--border);border-radius:8px;overflow:hidden}.msg-rag__summary{cursor:pointer;width:100%;color:var(--text-secondary);background:var(--code-bg);text-align:left;-webkit-user-select:none;user-select:none;border:none;align-items:center;gap:6px;padding:8px 12px;font-size:.85rem;font-weight:500;display:flex}.msg-rag__summary-arrow{font-size:.65rem;transition:transform .25s;display:inline-block}.msg-rag__summary--open .msg-rag__summary-arrow{transform:rotate(90deg)}.msg-rag__body-wrapper{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.msg-rag__body-wrapper--open{grid-template-rows:1fr}.msg-rag__body-inner{overflow:hidden}.msg-rag__details-body{flex-direction:column;gap:10px;padding:12px;display:flex}.msg-rag__rag-answer-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-size:.78rem;font-weight:700}.msg-rag__llm-row{align-items:center;gap:8px;display:flex}.msg-rag__llm-label{color:var(--text-secondary);font-size:.8rem}.msg-rag__llm-badge{background:var(--code-bg);border:1px solid var(--border);color:var(--accent);border-radius:4px;padding:1px 6px;font-size:.78rem}.msg-rag__context-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.msg-rag__docs{flex-direction:column;gap:8px;display:flex}.msg-rag__doc-card{border:1px solid var(--border);border-radius:6px;font-size:.85rem;overflow:hidden}.msg-rag__doc-header{color:var(--text-secondary);background:var(--code-bg);border-bottom:1px solid var(--border);padding:5px 10px;font-size:.78rem;font-weight:600}.msg-rag__doc-row{border-bottom:1px solid var(--border);gap:8px;padding:5px 10px;line-height:1.5;display:flex}.msg-rag__doc-row:last-child{border-bottom:none}.msg-rag__doc-key{width:58px;color:var(--text-secondary);flex-shrink:0;padding-top:1px;font-size:.78rem;font-weight:600}.msg-rag__doc-value{word-break:break-word;flex:1}.msg-rag__doc-content{white-space:pre-wrap}.gui-renderer{border:1px solid var(--border);background:#fff;border-radius:10px;flex-direction:column;max-width:100%;font-size:.9rem;display:flex;overflow:hidden}.gui-renderer__header{background:var(--code-bg);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:8px 14px;display:flex}.gui-renderer__title{color:var(--text-primary);font-size:.82rem;font-weight:600}.gui-renderer__description{color:var(--text-secondary);font-size:.78rem}.gui-renderer__tabs{background:var(--code-bg);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:2px;padding:6px 10px 0;display:flex}.gui-renderer__tab{color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;align-items:center;gap:5px;padding:5px 12px;font-size:.8rem;transition:background .15s,color .15s;display:flex}.gui-renderer__tab:hover{background:var(--border);color:var(--text-primary)}.gui-renderer__tab--active{border-color:var(--border);color:var(--accent);background:#fff;font-weight:600}.gui-renderer__tab-badge{background:var(--accent);color:#fff;border-radius:4px;padding:1px 5px;font-size:.68rem}.gui-renderer__screen{background:#fff;min-width:280px;min-height:200px;padding:0;overflow-x:auto}.gui-chart-placeholder{background:var(--code-bg);border:1px dashed var(--border);min-height:120px;color:var(--text-secondary);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:16px;font-size:.85rem;display:flex}.gui-chart-placeholder__icon{font-size:2rem;line-height:1}.gui-chart-placeholder__title{color:var(--text-primary);font-size:.9rem;font-weight:600}.gui-chart-placeholder__type{color:var(--text-secondary);font-size:.75rem}.gui-chart-placeholder__series{color:var(--text-secondary);font-size:.75rem;font-style:italic}.gui-metric-card{border:1px solid var(--border);background:#fff;border-radius:8px;flex-direction:column;gap:4px;padding:16px;display:flex}.gui-metric-card__title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem}.gui-metric-card__value{font-size:2em;font-weight:700;line-height:1.1}.gui-metric-card__format{color:var(--text-secondary);font-size:.75rem}.gui-agent-component{border:1px dashed var(--border);color:var(--text-secondary);border-radius:8px;align-items:center;gap:8px;padding:12px 14px;font-size:.85rem;display:flex}.message--reasoning .message__body{width:100%;margin:4px 0}.reasoning-trace{border:1px dashed var(--border);color:var(--text-secondary);background:#7d7d7d0d;border-radius:8px;font-size:.82rem;overflow:hidden}.reasoning-trace--live{background:#6366f10f;border-style:solid;border-color:#6366f159}.reasoning-trace__summary{cursor:pointer;width:100%;font:inherit;color:var(--text-secondary);text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.reasoning-trace__summary:disabled{cursor:default}.reasoning-trace__summary:not(:disabled):hover{background:#7d7d7d0f}.reasoning-trace__icon{font-size:.95rem}.reasoning-trace--live .reasoning-trace__icon{animation:1.4s ease-in-out infinite reasoning-pulse}@keyframes reasoning-pulse{0%,to{opacity:1}50%{opacity:.45}}.reasoning-trace__label{flex:1;font-style:italic;font-weight:500}.reasoning-trace__chevron{font-size:.65rem;transition:transform .25s}.reasoning-trace__summary--open .reasoning-trace__chevron{transform:rotate(90deg)}.reasoning-trace__body-wrapper{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.reasoning-trace__body-wrapper--open{grid-template-rows:1fr}.reasoning-trace__body-inner{overflow:hidden}.reasoning-trace__steps{flex-direction:column;gap:10px;padding:0 12px 10px;display:flex}.reasoning-trace__step-group{flex-direction:column;gap:2px;display:flex}.reasoning-trace__step-header{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);opacity:.6;border-left:2px solid var(--border);font-variant-numeric:tabular-nums;padding:2px 0 2px 8px;font-size:.65rem;font-weight:700}.reasoning-trace__step-list{flex-direction:column;gap:2px;margin:0;padding:0 0 0 10px;list-style:none;display:flex}.reasoning-trace__step{flex-direction:column;display:flex}.reasoning-trace__step-line{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:baseline;gap:8px;padding:3px 6px;display:flex}.reasoning-trace__step-line:disabled{cursor:default}.reasoning-trace__step-line:not(:disabled):hover{background:#7d7d7d14}.reasoning-trace__step-icon{flex-shrink:0;font-size:.85rem}.reasoning-trace__step-summary{word-break:break-word;flex:1;font-size:.82rem;font-style:italic}.reasoning-trace__step-list--nested{border-left:2px solid #7d7d7d33;margin-top:2px;padding-left:20px}.reasoning-trace__step-details{white-space:pre-wrap;word-break:break-word;background:#0000000a;border-radius:6px;max-height:240px;margin:4px 0 6px 32px;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;overflow:auto}.task-panel{border:1px solid var(--border);background:#7d7d7d0f;border-radius:6px;margin:4px 12px 12px;padding:10px 12px}.task-panel__header{align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.task-panel__title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);font-size:.7rem;font-weight:700}.task-panel__counts{color:var(--text-secondary);gap:6px;font-size:.72rem;display:flex}.task-panel__count{background:#7d7d7d1a;border-radius:4px;padding:1px 6px}.task-panel__count--completed{color:#16a34a}.task-panel__count--skipped{color:#ea580c}.task-panel__count--pending{opacity:.7}.task-panel__list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.task-panel__item{word-break:break-word;align-items:flex-start;gap:8px;font-size:.82rem;line-height:1.35;display:flex}.task-panel__text{flex:1;display:inline}.task-panel__item--completed .task-panel__description{color:var(--text-secondary);-webkit-text-decoration:line-through #16a34a66;text-decoration:line-through #16a34a66}.task-panel__item--skipped .task-panel__description{color:var(--text-secondary);-webkit-text-decoration:line-through #ea580c66;text-decoration:line-through #ea580c66}.task-panel__box{border:1.5px solid var(--border);background:0 0;border-radius:3px;flex-shrink:0;width:12px;height:12px;display:inline-block;position:relative;top:1px}.task-panel__box--pending,.task-panel__box--in_progress{border-color:var(--border);background:0 0}.task-panel__box--in_progress{background:#6366f126;border-color:#6366f1}.task-panel__box--completed{background:#16a34a;border-color:#16a34a}.task-panel__box--completed:after{content:"✓";color:#fff;justify-content:center;align-items:center;font-size:9px;font-weight:800;line-height:1;display:flex;position:absolute;inset:0}.task-panel__box--skipped{background:#ea580c;border-color:#ea580c}.task-panel__box--skipped:after{content:"⊘";color:#fff;justify-content:center;align-items:center;font-size:10px;font-weight:700;line-height:1;display:flex;position:absolute;inset:0}.task-panel__id{font-variant-numeric:tabular-nums;opacity:.55;margin-right:6px;font-size:.7rem}.task-panel__description{word-break:break-word}.task-panel__result{color:var(--text-secondary);opacity:.85;margin-top:2px;font-size:.74rem;font-style:italic;display:block}
1
+ .baf-chat{--bg:#f8f9fa;--surface:#fff;--border:#e2e8f0;--code-bg:#f1f5f9;--text-primary:#1a202c;--text-secondary:#64748b;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-bg:#2563eb14;--error:#ef4444;--error-bg:#ef44441a}@media (prefers-color-scheme:dark){html:not([data-theme=light]) .baf-chat{--bg:#0f172a;--surface:#1e293b;--border:#334155;--code-bg:#1a2535;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--accent:#3b82f6;--accent-hover:#2563eb;--accent-bg:#3b82f61a;--error:#f87171;--error-bg:#f871711a}}[data-theme=dark] .baf-chat{--bg:#0f172a;--surface:#1e293b;--border:#334155;--code-bg:#1a2535;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--accent:#3b82f6;--accent-hover:#2563eb;--accent-bg:#3b82f61a;--error:#f87171;--error-bg:#f871711a}[data-theme=light] .baf-chat{--bg:#f8f9fa;--surface:#fff;--border:#e2e8f0;--code-bg:#f1f5f9;--text-primary:#1a202c;--text-secondary:#64748b;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-bg:#2563eb14;--error:#ef4444;--error-bg:#ef44441a}.baf-chat *,.baf-chat :before,.baf-chat :after{box-sizing:border-box;margin:0;padding:0}.btn{cursor:pointer;border:none;border-radius:8px;padding:9px 18px;font-family:inherit;font-size:.9rem;font-weight:500;transition:background .15s,opacity .15s,color .15s}.btn--primary{background:var(--accent);color:#fff}.btn--primary:hover:not(:disabled){background:var(--accent-hover)}.btn--primary:disabled{opacity:.45;cursor:not-allowed}.btn--secondary{background:var(--border);color:var(--text-primary)}.btn--secondary:hover{filter:brightness(.93)}.btn--ghost{color:var(--text-secondary);background:0 0;padding:8px 12px}.btn--ghost:hover{background:var(--border);color:var(--text-primary)}.btn--icon{flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;padding:0;display:inline-flex}.gui-agent-widget{min-height:300px}.gui-agent-widget .chat-area{min-height:0}.gui-agent-widget .chat-area__messages{max-height:420px}.gui-agent-layout__content{flex:1;padding:16px;overflow:auto}.gui-agent-layout__placeholder{height:100%;color:var(--text-secondary);justify-content:center;align-items:center;font-size:.95rem;display:flex}.agent-selector{background:var(--bg);flex-direction:column;align-items:center;min-height:100vh;padding:64px 24px 40px;display:flex;position:relative}.agent-selector__topbar{position:absolute;top:16px;right:16px}.agent-selector__header{text-align:center;margin-bottom:48px}.agent-selector__title{color:var(--text-primary);margin-bottom:8px;font-size:2rem;font-weight:700}.agent-selector__subtitle{color:var(--text-secondary);font-size:1rem}.agent-selector__username-bar{align-items:center;gap:12px;width:100%;max-width:360px;margin-top:20px;display:flex}.agent-selector__username-label{color:var(--text-secondary);white-space:nowrap;font-size:.875rem;font-weight:500}.agent-selector__username-input{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;flex:1;padding:8px 12px;font-size:.9rem;transition:border-color .15s}.agent-selector__username-input:focus{border-color:var(--accent)}.agent-selector__grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;width:100%;max-width:900px;display:grid}.agent-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;text-align:left;width:100%;color:var(--text-primary);border-radius:12px;align-items:center;gap:14px;padding:20px;font-family:inherit;transition:box-shadow .2s,border-color .2s;display:flex;position:relative}.agent-card:hover{border-color:var(--accent);box-shadow:0 4px 16px #00000012}.agent-card--add{color:var(--text-secondary);background:0 0;border-style:dashed;flex-direction:column;justify-content:center;gap:6px;font-size:.95rem}.agent-card--add:hover{color:var(--accent)}.agent-card__icon{flex-shrink:0;font-size:1.8rem}.agent-card__plus{font-size:2rem;line-height:1}.agent-card__info{flex:1;min-width:0}.agent-card__name{margin-bottom:4px;font-size:1rem;font-weight:600}.agent-card__url{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-family:monospace;font-size:.8rem;overflow:hidden}.agent-card__remove{width:24px;height:24px;color:var(--text-secondary);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.2rem;line-height:1;transition:opacity .15s,background .15s,color .15s;display:flex;position:absolute;top:8px;right:8px}.agent-card:hover .agent-card__remove{opacity:1}.agent-card__remove:hover{background:var(--error-bg);color:var(--error)}.agent-card__mode-badge{letter-spacing:.02em;border-radius:999px;flex-shrink:0;margin-right:4px;padding:2px 7px;font-size:.72rem;font-weight:600}.agent-card__mode-badge--chat{color:#0369a1;background:#e0f2fe}.agent-card__mode-badge--gui{color:#7c3aed;background:#f3e8ff}.agent-selector__toolbar{justify-content:space-between;align-items:center;gap:12px;width:100%;max-width:900px;margin-bottom:16px;display:flex}.agent-selector__toolbar-actions{gap:10px;display:flex}.view-toggle{border:1px solid var(--border);border-radius:8px;display:flex;overflow:hidden}.view-toggle__btn{background:var(--surface);width:38px;height:36px;color:var(--text-secondary);cursor:pointer;border:none;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.view-toggle__btn+.view-toggle__btn{border-left:1px solid var(--border)}.view-toggle__btn--active{background:var(--accent);color:#fff}.view-toggle__btn:not(.view-toggle__btn--active):hover{background:var(--border);color:var(--text-primary)}.agent-selector__list{flex-direction:column;gap:12px;width:100%;max-width:900px;display:flex}.agent-selector__list .agent-card{width:100%}.agent-selector__list .agent-card--add{flex-direction:row;gap:10px;padding:16px 20px}.agent-card--edit{cursor:default;align-items:flex-start}.agent-card--edit:hover{border-color:var(--border);box-shadow:none}.agent-card--edit.agent-card--drag-over{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg)}.agent-card--edit.agent-card--dragging{opacity:.45}.agent-card--edit .agent-card__remove{opacity:1}.agent-card__drag-handle{width:28px;height:28px;color:var(--text-secondary);cursor:grab;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-top:4px;transition:background .15s,color .15s;display:flex}.agent-card__drag-handle:hover{background:var(--border);color:var(--text-primary)}.agent-card__drag-handle:active{cursor:grabbing}.agent-card__edit-fields{flex-direction:column;flex:1;gap:10px;min-width:0;padding-right:28px;display:flex}.agent-card__edit-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;flex-direction:column;gap:4px;font-size:.75rem;font-weight:600;display:flex}.agent-card__edit-label .modal__error{text-transform:none;letter-spacing:normal;font-weight:400}.agent-card__edit-input{border:1px solid var(--border);text-transform:none;letter-spacing:normal;background:var(--bg);color:var(--text-primary);border-radius:7px;outline:none;padding:8px 10px;font-family:inherit;font-size:.88rem;font-weight:400;transition:border-color .15s}.agent-card__edit-input:focus{border-color:var(--accent)}.mode-toggle{border:1px solid var(--border);border-radius:8px;gap:0;margin-top:2px;display:flex;overflow:hidden}.mode-toggle__btn{background:var(--bg);color:var(--text-secondary);cursor:pointer;border:none;flex:1;padding:8px 12px;font-family:inherit;font-size:.88rem;font-weight:500;transition:background .15s,color .15s}.mode-toggle__btn+.mode-toggle__btn{border-left:1px solid var(--border)}.mode-toggle__btn--active{background:var(--accent);color:#fff}.mode-toggle__btn:not(.mode-toggle__btn--active):hover{background:var(--border);color:var(--text-primary)}.mode-toggle--sm .mode-toggle__btn{padding:6px 10px;font-size:.8rem}.modal__hint{color:var(--text-secondary);margin:0;font-size:.8rem;line-height:1.45}.modal-overlay{z-index:100;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:16px;width:100%;max-width:440px;padding:32px;box-shadow:0 20px 60px #00000026}.modal__title{color:var(--text-primary);margin-bottom:24px;font-size:1.25rem;font-weight:700}.modal__form{flex-direction:column;gap:16px;display:flex}.modal__label{color:var(--text-secondary);flex-direction:column;gap:6px;font-size:.88rem;font-weight:500;display:flex}.modal__input{border:1px solid var(--border);background:var(--bg);color:var(--text-primary);border-radius:8px;outline:none;padding:10px 14px;font-family:inherit;font-size:.95rem;transition:border-color .15s}.modal__input:focus{border-color:var(--accent)}.modal__input--error{border-color:var(--error)!important}.modal__error{color:var(--error);margin-top:2px;font-size:.82rem}.modal__actions{justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.chat-layout{background:var(--bg);flex-direction:column;height:100vh;display:flex}.chat-layout__header{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:12px;padding:10px 16px;display:flex}.chat-layout__agent-info{flex-direction:column;flex:1;min-width:0;display:flex}.chat-layout__agent-name{color:var(--text-primary);font-size:1rem;font-weight:600}.chat-layout__agent-url{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-family:monospace;font-size:.78rem;overflow:hidden}.chat-layout__body{flex:1;display:flex;overflow:hidden}.status-badge{flex-shrink:0;align-items:center;gap:7px;font-size:.85rem;font-weight:500;display:flex}.status-badge__dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.session-sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:240px;display:flex}.session-sidebar__header{border-bottom:1px solid var(--border);flex-direction:column;gap:10px;padding:14px 16px;display:flex}.session-sidebar__title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);font-size:.8rem;font-weight:600}.session-sidebar__new{flex-direction:column;gap:6px;display:flex}.session-sidebar__name-input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;outline:none;padding:6px 10px;font-size:.825rem;transition:border-color .15s}.session-sidebar__name-input:focus{border-color:var(--accent)}.session-sidebar__start-btn{width:100%;padding:6px 10px;font-size:.825rem}.session-sidebar__empty{color:var(--text-secondary);flex:1;justify-content:center;align-items:center;font-size:.875rem;display:flex}.session-sidebar__body{flex-direction:column;flex:1;padding:6px 0;display:flex;overflow-y:auto}.session-sidebar__status{color:var(--text-secondary);text-align:center;padding:12px 16px;font-size:.825rem}.session-sidebar__status--error{color:#ef4444}.session-item{border-left:3px solid #0000;flex-direction:row;align-items:center;transition:background .15s,border-color .15s;display:flex}.session-item:hover{background:var(--border)}.session-item--active{border-left-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent)}.session-item__content{all:unset;cursor:pointer;flex-direction:column;flex:1;gap:2px;min-width:0;padding:8px 16px;display:flex}.session-item__delete{all:unset;width:28px;height:28px;color:var(--text-secondary);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-right:8px;transition:background .15s,color .15s;display:flex}.session-item__delete:hover{color:#ef4444;background:#ef444426}.session-item__id{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-family:monospace;font-size:.75rem;overflow:hidden}.session-item__meta{color:var(--text-secondary);font-size:.7rem}.agent-card__username{color:var(--text-secondary);margin-top:2px;font-size:.75rem}.start-session{background:var(--bg);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.start-session__name-input{background:var(--surface);border:1px solid var(--border);width:280px;color:var(--text);text-align:center;border-radius:8px;outline:none;padding:10px 14px;font-size:.9rem;transition:border-color .15s}.start-session__name-input:focus{border-color:var(--accent)}.start-session__btn{padding:14px 36px;font-size:1rem}.chat-area{background:var(--bg);flex-direction:column;flex:1;display:flex;overflow:hidden}.chat-area__messages{flex-direction:column;flex:1;gap:16px;padding:24px 1%;display:flex;overflow-y:auto}.chat-area__empty{color:var(--text-secondary);text-align:center;margin:auto;font-size:.95rem}.chat-area__input-row{background:0 0;border-top:none;align-items:flex-end;gap:10px;padding:14px 10%;display:flex}.chat-area__textarea{resize:none;border:1px solid var(--border);background:var(--bg);color:var(--text-primary);border-radius:10px;outline:none;flex:1;min-height:42px;max-height:160px;padding:10px 14px;font-family:inherit;font-size:.95rem;line-height:1.5;transition:border-color .15s;overflow-y:auto}.chat-area__textarea:focus{border-color:var(--accent)}.chat-area__textarea:disabled{opacity:.5;cursor:not-allowed}.chat-area__send-btn{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;padding:0;font-size:1.2rem;line-height:1;display:flex}.chat-area__composer{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.chat-area__input-line{align-items:flex-end;display:flex}.chat-area__input-line .chat-area__textarea{flex:1}.chat-area__attachments{flex-wrap:wrap;gap:6px;padding:0 2px;display:flex}.attachment-chip{background:var(--code-bg);border:1px solid var(--border);border-radius:20px;align-items:center;gap:5px;max-width:220px;padding:4px 8px;font-size:.82rem;display:inline-flex}.attachment-chip__icon{flex-shrink:0}.attachment-chip__name{text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary);overflow:hidden}.attachment-chip__remove{all:unset;cursor:pointer;color:var(--text-secondary);border-radius:50%;flex-shrink:0;padding:1px 2px;font-size:.75rem;line-height:1;transition:color .1s}.attachment-chip__remove:hover{color:#ef4444}.chat-area__icon-btn{width:42px;height:42px;color:var(--text-secondary);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:1.5rem;font-weight:400;line-height:1;transition:background .15s,color .15s;display:flex}.chat-area__icon-btn:hover:not(:disabled){background:var(--border);color:var(--text-primary)}.chat-area__icon-btn:disabled{opacity:.4;cursor:not-allowed}.chat-area__mic-btn{color:var(--text-secondary)}.chat-area__mic-btn--recording{color:#ef4444;background:#ef444414;border-color:#ef4444;animation:1.2s ease-in-out infinite mic-pulse}@keyframes mic-pulse{0%,to{box-shadow:0 0 #ef444459}50%{box-shadow:0 0 0 6px #ef444400}}.attach-menu-anchor{flex-shrink:0;position:relative}.attach-menu{background:var(--surface);border:1px solid var(--border);z-index:100;border-radius:10px;min-width:160px;position:absolute;bottom:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 4px 16px #0000001f}.attach-menu__item{all:unset;width:100%;color:var(--text-primary);cursor:pointer;box-sizing:border-box;align-items:center;gap:10px;padding:10px 14px;font-size:.9rem;transition:background .12s;display:flex}.attach-menu__item:hover{background:var(--border)}.attach-menu__item-icon{font-size:1rem}.message{gap:10px;max-width:78%;display:flex}.message--user{flex-direction:row-reverse;align-self:flex-end}.message--agent{align-self:flex-start}.message__avatar{display:none}.message__body{flex-direction:column;display:flex}.message__timestamp{color:var(--text-secondary);white-space:nowrap;opacity:0;pointer-events:none;flex-shrink:0;align-self:center;font-size:.72rem;transition:opacity .2s,transform .2s;transform:translate(-8px)}.message__timestamp--user{transform:translate(8px)}.message:hover .message__timestamp{opacity:1;transform:translate(0)}.message__bubble{word-break:break-word;font-size:.95rem;line-height:1.55}.message__bubble--user{background:var(--accent);color:#fff;border-radius:16px 16px 4px;padding:10px 14px}.message__bubble--agent{color:var(--text-primary);background:0 0;border:none;padding:2px 0}.msg-text{margin:0}.msg-text--muted{color:var(--text-secondary);font-style:italic}.msg-markdown{line-height:1.6}.msg-markdown p{margin:0 0 6px}.msg-markdown p:last-child{margin-bottom:0}.msg-markdown h1,.msg-markdown h2,.msg-markdown h3{margin:8px 0 4px;font-size:1em}.msg-markdown ul,.msg-markdown ol{margin:4px 0;padding-left:20px}.msg-markdown li{margin:2px 0}.msg-markdown code{background:var(--code-bg);border-radius:4px;padding:1px 5px;font-family:monospace;font-size:.87em}.msg-markdown pre{background:var(--code-bg);border-radius:6px;margin:6px 0;padding:10px 12px;overflow-x:auto}.msg-markdown pre code{background:0 0;padding:0;font-size:.85em}.msg-markdown blockquote{border-left:3px solid var(--border);color:var(--text-secondary);margin:4px 0;padding-left:10px}.msg-markdown table{border-collapse:collapse;width:100%;font-size:.88em}.msg-markdown th,.msg-markdown td{border:1px solid var(--border);text-align:left;padding:4px 8px}.msg-markdown th{background:var(--code-bg)}.msg-markdown a{color:var(--accent)}.msg-html{line-height:1.55}.msg-html a{color:var(--accent)}.msg-file-btn{background:var(--accent-bg);border:1px solid var(--accent);color:var(--accent);cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:9px 16px;font-family:inherit;font-size:.9rem;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.msg-file-btn:hover{background:var(--accent);color:#fff}.msg-image img{border-radius:8px;max-width:100%;max-height:360px;display:block}.msg-table-wrapper{max-width:100%;overflow-x:auto}.msg-table{border-collapse:collapse;width:100%;font-size:.84rem}.msg-table th,.msg-table td{border:1px solid var(--border);text-align:left;white-space:nowrap;padding:6px 10px}.msg-table th{background:var(--code-bg);font-weight:600}.msg-table__th{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.msg-table__th:hover{background:color-mix(in srgb, var(--accent) 10%, var(--code-bg))}.msg-table__th--sorted{color:var(--accent)}.msg-table__sort-icon{opacity:.6;margin-left:4px;font-size:.75em;display:inline-block}.msg-table__th--sorted .msg-table__sort-icon{opacity:1}.msg-table tr:nth-child(2n){background:var(--code-bg)}.msg-plotly{border-radius:8px;width:100%;min-height:360px;overflow:hidden}.msg-code{background:var(--code-bg);color:var(--text-primary);border-radius:6px;margin-top:6px;padding:10px 12px;font-family:monospace;font-size:.82rem;overflow-x:auto}.msg-options{flex-wrap:wrap;gap:8px;display:flex}.msg-option-btn{border:1px solid var(--accent);color:var(--accent);cursor:pointer;background:0 0;border-radius:20px;padding:7px 14px;font-family:inherit;font-size:.9rem;transition:background .15s,color .15s}.msg-option-btn:hover{background:var(--accent);color:#fff}.msg-location{flex-direction:column;gap:8px;display:flex}.msg-location__map{border:1px solid var(--border);border-radius:8px;width:100%;height:300px;display:block}.msg-location__link{color:var(--accent);font-size:.88rem}.msg-audio{flex-direction:column;gap:6px;display:flex}.msg-audio__player{width:100%;min-width:260px;accent-color:var(--accent)}.msg-audio__meta{color:var(--text-secondary);font-size:.78rem}.message__bubble--media{box-shadow:none!important;background:0 0!important;border:none!important;padding:4px 0!important}.msg-rag__answer{margin:0 0 10px;line-height:1.6}.msg-rag__details{border:1px solid var(--border);border-radius:8px;overflow:hidden}.msg-rag__summary{cursor:pointer;width:100%;color:var(--text-secondary);background:var(--code-bg);text-align:left;-webkit-user-select:none;user-select:none;border:none;align-items:center;gap:6px;padding:8px 12px;font-size:.85rem;font-weight:500;display:flex}.msg-rag__summary-arrow{font-size:.65rem;transition:transform .25s;display:inline-block}.msg-rag__summary--open .msg-rag__summary-arrow{transform:rotate(90deg)}.msg-rag__body-wrapper{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.msg-rag__body-wrapper--open{grid-template-rows:1fr}.msg-rag__body-inner{overflow:hidden}.msg-rag__details-body{flex-direction:column;gap:10px;padding:12px;display:flex}.msg-rag__rag-answer-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-size:.78rem;font-weight:700}.msg-rag__llm-row{align-items:center;gap:8px;display:flex}.msg-rag__llm-label{color:var(--text-secondary);font-size:.8rem}.msg-rag__llm-badge{background:var(--code-bg);border:1px solid var(--border);color:var(--accent);border-radius:4px;padding:1px 6px;font-size:.78rem}.msg-rag__context-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.msg-rag__docs{flex-direction:column;gap:8px;display:flex}.msg-rag__doc-card{border:1px solid var(--border);border-radius:6px;font-size:.85rem;overflow:hidden}.msg-rag__doc-header{color:var(--text-secondary);background:var(--code-bg);border-bottom:1px solid var(--border);padding:5px 10px;font-size:.78rem;font-weight:600}.msg-rag__doc-row{border-bottom:1px solid var(--border);gap:8px;padding:5px 10px;line-height:1.5;display:flex}.msg-rag__doc-row:last-child{border-bottom:none}.msg-rag__doc-key{width:58px;color:var(--text-secondary);flex-shrink:0;padding-top:1px;font-size:.78rem;font-weight:600}.msg-rag__doc-value{word-break:break-word;flex:1}.msg-rag__doc-content{white-space:pre-wrap}.gui-renderer{background:#fff;flex-direction:column;max-width:100%;font-size:.9rem;display:flex;overflow:hidden}.gui-renderer__header{background:var(--code-bg);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:8px 14px;display:flex}.gui-renderer__title{color:var(--text-primary);font-size:.82rem;font-weight:600}.gui-renderer__description{color:var(--text-secondary);font-size:.78rem}.gui-renderer__tabs{background:var(--code-bg);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:2px;padding:6px 10px 0;display:flex}.gui-renderer__tab{color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;align-items:center;gap:5px;padding:5px 12px;font-size:.8rem;transition:background .15s,color .15s;display:flex}.gui-renderer__tab:hover{background:var(--border);color:var(--text-primary)}.gui-renderer__tab--active{border-color:var(--border);color:var(--accent);background:#fff;font-weight:600}.gui-renderer__tab-badge{background:var(--accent);color:#fff;border-radius:4px;padding:1px 5px;font-size:.68rem}.gui-renderer__screen{color:#1a202c;background:#fff;min-width:280px;min-height:200px;padding:0;overflow-x:auto}.gui-renderer--chat{background:0 0;border:none;border-radius:0}.gui-renderer--chat .gui-renderer__screen{color:inherit;background:0 0;min-width:0;min-height:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:.95rem;line-height:1.55}.gui-renderer--chat .gui-renderer__header{border-bottom:1px solid var(--border);background:0 0;margin-bottom:8px;padding:0 0 6px}.gui-renderer--chat .gui-renderer__tabs{border-bottom:1px solid var(--border);background:0 0;margin-bottom:8px}.gui-renderer--chat input:not([type=radio]):not([type=checkbox]):not([type=range]):not([type=color]):not([type=file]),.gui-renderer--chat textarea,.gui-renderer--chat select{background:var(--surface)!important;color:var(--text-primary)!important;border-color:var(--border)!important}.gui-renderer--chat label,.gui-renderer--chat label>span{color:var(--text-primary)!important}.gui-renderer--chat .gui-ms-list{background:var(--surface)!important;border-color:var(--border)!important}.gui-renderer--chat .gui-ms-item{background:var(--surface)!important;color:var(--text-primary)!important;border-color:var(--border)!important}.gui-renderer--chat .gui-ms-item--selected,.gui-renderer--chat .gui-chip{background:var(--accent-bg,#1e3a5f)!important;color:var(--accent)!important}.gui-renderer--chat .gui-tags-container{background:var(--surface)!important;border-color:var(--border)!important}.gui-chart-placeholder{background:var(--code-bg);border:1px dashed var(--border);min-height:120px;color:var(--text-secondary);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:16px;font-size:.85rem;display:flex}.gui-chart-placeholder__icon{font-size:2rem;line-height:1}.gui-chart-placeholder__title{color:var(--text-primary);font-size:.9rem;font-weight:600}.gui-chart-placeholder__type{color:var(--text-secondary);font-size:.75rem}.gui-chart-placeholder__series{color:var(--text-secondary);font-size:.75rem;font-style:italic}.gui-metric-card{border:1px solid var(--border);background:#fff;border-radius:8px;flex-direction:column;gap:4px;padding:16px;display:flex}.gui-metric-card__title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem}.gui-metric-card__value{font-size:2em;font-weight:700;line-height:1.1}.gui-metric-card__format{color:var(--text-secondary);font-size:.75rem}.gui-agent-component{border:1px dashed var(--border);color:var(--text-secondary);border-radius:8px;align-items:center;gap:8px;padding:12px 14px;font-size:.85rem;display:flex}.gui-form-btn{cursor:pointer;appearance:none;white-space:nowrap;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:8px 20px;font-family:inherit;font-size:.875rem;font-weight:500;transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s;display:inline-flex}.gui-form-btn--submit{background:var(--accent);color:#fff;border-color:var(--accent)}.gui-form-btn--submit:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 2px 8px #2563eb47}.gui-form-btn--submit:active:not(:disabled){box-shadow:none;opacity:.9}.gui-form-btn--submit:disabled{opacity:.45;cursor:not-allowed}.gui-form-btn--cancel{color:var(--text-secondary);border-color:var(--border);background:0 0}.gui-form-btn--cancel:hover:not(:disabled){background:var(--border);color:var(--text-primary)}.gui-form-btn--outlined{color:var(--accent);border-color:var(--accent);background:0 0}.gui-form-btn--outlined:hover:not(:disabled){background:var(--accent-bg)}.gui-form-btn--outlined:disabled{opacity:.45;cursor:not-allowed}.gui-form-btn--flat{color:var(--accent);background:0 0;border-color:#0000;padding:8px 16px}.gui-form-btn--flat:hover:not(:disabled){background:var(--accent-bg)}.gui-form-btn--flat:disabled{opacity:.45;cursor:not-allowed}.gui-form-btn--fab{background:var(--accent);color:#fff;border-color:var(--accent);border-radius:50%;width:56px;height:56px;padding:0;box-shadow:0 4px 12px #2563eb59}.gui-form-btn--fab:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 6px 16px #2563eb66}.gui-form-btn--fab:active:not(:disabled){box-shadow:0 2px 6px #2563eb4d}.gui-form-btn--fab:disabled{opacity:.45;cursor:not-allowed}.gui-renderer input[type=file]::file-selector-button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;margin-right:10px;padding:5px 12px;font-family:inherit;font-size:.82rem;font-weight:500;transition:background .15s,box-shadow .15s}.gui-renderer input[type=file]::file-selector-button:hover{background:var(--accent-hover);box-shadow:0 2px 6px #2563eb40}.message--reasoning .message__body{width:100%;margin:4px 0}.reasoning-trace{border:1px dashed var(--border);color:var(--text-secondary);background:#7d7d7d0d;border-radius:8px;font-size:.82rem;overflow:hidden}.reasoning-trace--live{background:#6366f10f;border-style:solid;border-color:#6366f159}.reasoning-trace__summary{cursor:pointer;width:100%;font:inherit;color:var(--text-secondary);text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.reasoning-trace__summary:disabled{cursor:default}.reasoning-trace__summary:not(:disabled):hover{background:#7d7d7d0f}.reasoning-trace__icon{font-size:.95rem}.reasoning-trace--live .reasoning-trace__icon{animation:1.4s ease-in-out infinite reasoning-pulse}@keyframes reasoning-pulse{0%,to{opacity:1}50%{opacity:.45}}.reasoning-trace__label{flex:1;font-style:italic;font-weight:500}.reasoning-trace__chevron{font-size:.65rem;transition:transform .25s}.reasoning-trace__summary--open .reasoning-trace__chevron{transform:rotate(90deg)}.reasoning-trace__body-wrapper{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.reasoning-trace__body-wrapper--open{grid-template-rows:1fr}.reasoning-trace__body-inner{overflow:hidden}.reasoning-trace__steps{flex-direction:column;gap:10px;padding:0 12px 10px;display:flex}.reasoning-trace__step-group{flex-direction:column;gap:2px;display:flex}.reasoning-trace__step-header{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);opacity:.6;border-left:2px solid var(--border);font-variant-numeric:tabular-nums;padding:2px 0 2px 8px;font-size:.65rem;font-weight:700}.reasoning-trace__step-list{flex-direction:column;gap:2px;margin:0;padding:0 0 0 10px;list-style:none;display:flex}.reasoning-trace__step{flex-direction:column;display:flex}.reasoning-trace__step-line{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:baseline;gap:8px;padding:3px 6px;display:flex}.reasoning-trace__step-line:disabled{cursor:default}.reasoning-trace__step-line:not(:disabled):hover{background:#7d7d7d14}.reasoning-trace__step-icon{flex-shrink:0;font-size:.85rem}.reasoning-trace__step-summary{word-break:break-word;flex:1;font-size:.82rem;font-style:italic}.reasoning-trace__step-list--nested{border-left:2px solid #7d7d7d33;margin-top:2px;padding-left:20px}.reasoning-trace__step-details{white-space:pre-wrap;word-break:break-word;background:#0000000a;border-radius:6px;max-height:240px;margin:4px 0 6px 32px;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;overflow:auto}.task-panel{border:1px solid var(--border);background:#7d7d7d0f;border-radius:6px;margin:4px 12px 12px;padding:10px 12px}.task-panel__header{align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.task-panel__title{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);font-size:.7rem;font-weight:700}.task-panel__counts{color:var(--text-secondary);gap:6px;font-size:.72rem;display:flex}.task-panel__count{background:#7d7d7d1a;border-radius:4px;padding:1px 6px}.task-panel__count--completed{color:#16a34a}.task-panel__count--skipped{color:#ea580c}.task-panel__count--pending{opacity:.7}.task-panel__list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.task-panel__item{word-break:break-word;align-items:flex-start;gap:8px;font-size:.82rem;line-height:1.35;display:flex}.task-panel__text{flex:1;display:inline}.task-panel__item--completed .task-panel__description{color:var(--text-secondary);-webkit-text-decoration:line-through #16a34a66;text-decoration:line-through #16a34a66}.task-panel__item--skipped .task-panel__description{color:var(--text-secondary);-webkit-text-decoration:line-through #ea580c66;text-decoration:line-through #ea580c66}.task-panel__box{border:1.5px solid var(--border);background:0 0;border-radius:3px;flex-shrink:0;width:12px;height:12px;display:inline-block;position:relative;top:1px}.task-panel__box--pending,.task-panel__box--in_progress{border-color:var(--border);background:0 0}.task-panel__box--in_progress{background:#6366f126;border-color:#6366f1}.task-panel__box--completed{background:#16a34a;border-color:#16a34a}.task-panel__box--completed:after{content:"✓";color:#fff;justify-content:center;align-items:center;font-size:9px;font-weight:800;line-height:1;display:flex;position:absolute;inset:0}.task-panel__box--skipped{background:#ea580c;border-color:#ea580c}.task-panel__box--skipped:after{content:"⊘";color:#fff;justify-content:center;align-items:center;font-size:10px;font-weight:700;line-height:1;display:flex;position:absolute;inset:0}.task-panel__id{font-variant-numeric:tabular-nums;opacity:.55;margin-right:6px;font-size:.7rem}.task-panel__description{word-break:break-word}.task-panel__result{color:var(--text-secondary);opacity:.85;margin-top:2px;font-size:.74rem;font-style:italic;display:block}
2
2
  /*$vite$:1*/
@@ -2,6 +2,7 @@ export interface Agent {
2
2
  id: string;
3
3
  name: string;
4
4
  url: string;
5
+ mode: 'chat' | 'gui';
5
6
  }
6
7
  export interface ChatMessage {
7
8
  id: string;
@@ -17,8 +17,9 @@ export declare const PayloadAction: {
17
17
  readonly AGENT_REPLY_REASONING_STEP: "agent_reply_reasoning_step";
18
18
  readonly AGENT_REPLY_TASK_LIST_UPDATE: "agent_reply_task_list_update";
19
19
  readonly AGENT_REPLY_AUDIO: "agent_reply_audio";
20
- readonly AGENT_REPLY_UI: "agent_reply_ui";
21
- readonly USER_UPDATE_UI: "user_update_ui";
20
+ readonly AGENT_REPLY_GUI: "agent_reply_gui";
21
+ readonly AGENT_REPLY_GUI_UPDATE: "agent_reply_gui_update";
22
+ readonly USER_GUI_EVENT: "user_gui_event";
22
23
  readonly FETCH_USER_MESSAGES: "fetch_user_messages";
23
24
  };
24
25
  export type PayloadAction = (typeof PayloadAction)[keyof typeof PayloadAction];
@@ -27,4 +28,5 @@ export interface Payload {
27
28
  message: unknown;
28
29
  history?: boolean;
29
30
  timestamp?: string;
31
+ message_id?: string;
30
32
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "besser-agentic-framework-ui",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "React chat UI components for the BESSER Agentic Framework",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -8,7 +8,9 @@
8
8
  "url": "https://github.com/BESSER-PEARL/BESSER-Agentic-Framework-UI.git"
9
9
  },
10
10
  "type": "module",
11
- "files": ["dist"],
11
+ "files": [
12
+ "dist"
13
+ ],
12
14
  "main": "./dist/besser-agentic-framework-ui.js",
13
15
  "module": "./dist/besser-agentic-framework-ui.js",
14
16
  "types": "./dist/lib.d.ts",
@@ -24,7 +26,8 @@
24
26
  "build": "tsc -b && vite build",
25
27
  "build:lib": "vite build --config vite.config.lib.ts && tsc --project tsconfig.lib.json",
26
28
  "lint": "eslint .",
27
- "preview": "vite preview"
29
+ "preview": "vite preview",
30
+ "prepublishOnly": "npm run build:lib"
28
31
  },
29
32
  "peerDependencies": {
30
33
  "react": ">=18",