1import{w as S,b as V}from"./runtime-dom.esm-bundler-DF9jAoLn.js";import{_ as A}from"./index-CdFf6ajF.js";import{_ as D}from"./AppSidebarLayout.vue_vue_type_script_setup_true_lang-C9t7LDYR.js";import{C as U,D as j,i as E,g as I}from"./index-9Jv__W49.js";import{h as L,u as q}from"./index.esm-DEpV9LmX.js";import{a as b}from"./index-C44AX5GR.js";import{d as z,h as H,o as r,c as a,f as T,u as i,i as n,t as d,F as c,r as h,n as K,e as v,B as W,w as G,b as J,g as C,j as g,p as O}from"./runtime-core.esm-bundler-BUvReHWE.js";import"./utils-CbKt2VT1.js";import"./index-DbCWOK1g.js";import"./index-C_ruiPkq.js";import"./Primitive-Df2ZtYIB.js";import"./index-BHQBzW9e.js";import"./loader-circle-BAWv281s.js";import"./createLucideIcon-CccRPEsi.js";import"./SidebarProvider.vue_vue_type_script_setup_true_lang-Cd_6gxzh.js";import"./index-CKGhAOWA.js";import"./TooltipTrigger-BzgAonwi.js";import"./useForwardPropsEmits-Bs-ETVDb.js";import"./useForwardExpose-EU6gKQUl.js";import"./PopperContent-CnWgbpq2.js";import"./createContext-DotT5HnY.js";import"./useDirection-BajPvpr3.js";import"./Presence-C94u67O_.js";import"./floating-ui.vue-BDzmPUf6.js";import"./floating-ui.core-DCxx1uK7.js";import"./Teleport-DBROd62h.js";import"./VisuallyHidden-BTThHY0S.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";import"./Sonner-aBveEqPT.js";import"./index-DwAqpwV7.js";import"./x-9b06GRG8.js";import"./triangle-alert-QxDeVQre.js";import"./info-gsN3FbMr.js";import"./circle-check-BIsXtuSU.js";import"./panel-preferences-Bt_XhXna.js";/* empty css */import"./index.min-Bz6HI3KO.js";import"./index-BRYcmm05.js";import"./DropdownMenuTrigger-DNBlKlGE.js";import"./FocusScope-Cs0kAqFs.js";import"./getActiveElement-FUKBWQwh.js";import"./utils-DNyje9Vd.js";import"./useFocusGuards-Zx43C-zy.js";import"./useTypeahead-BP0g_Hrs.js";import"./RovingFocusGroup-DMg0bC4f.js";import"./Collection-Cy86eJQv.js";import"./usePrimitiveElement-Bhd42cIk.js";import"./utils-CC-pqV_U.js";import"./chevrons-up-down-BwW3959k.js";import"./SheetTitle-BtPsMhPO.js";import"./DialogTitle-CcNjIHvO.js";import"./DialogDescription-saL4Th7I.js";import"./Switch-BLEMyNls.js";import"./useFormControl-CQzcO_1L.js";import"./useForwardScopeId-DM5mWMHG.js";import"./VisuallyHiddenInput-CmwcWgOj.js";import"./chevron-right-DKVEio2w.js";import"./useLayoutState-BmgBCaET.js";import"./_commonjsHelpers-DsqdWQfm.js";const Q={class:"flex h-full flex-col"},R={class:"border-b p-4"},X={class:"text-sm text-muted-foreground"},Y={class:"mx-auto max-w-3xl space-y-4"},Z={class:"whitespace-pre-wrap"},tt={key:0},et={key:1,class:"block text-xs text-muted-foreground"},ot={key:0,class:"mt-2 flex flex-wrap gap-2"},st={key:0,class:"mr-auto rounded-lg bg-muted p-3 text-sm text-muted-foreground"},rt={key:1,class:"rounded-lg border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive"},at={class:"border-t p-4"},it=["disabled"],ce=z({layout:D,__name:"Prototype",setup(nt){const w=q(),P=C(()=>w.props.user),$=C(()=>w.props.landscapeAuth),m=g(""),u=g(null),x=g(null),p=g(null),f=g(null);function y(t){return E(t)}function k(t){return`${t.type==="dynamic-tool"?I(t):t.type.startsWith("tool-")?t.type.slice(5):t.type} ${t.state==="output-error"?"failed":t.state==="output-available"?"result":"running"}`}function M(t){return t.parts.some(y)}function N(t,e,o){return`${t}-${e.toolCallId||e.type}-${o}`}const s=new U({transport:new j({api:"/amyga/api/v1/chat/stream/cookie",credentials:"include",body:()=>({user_id:P.value.id,meeting_uuid:u.value,channel:u.value?`assistant.meeting.${u.value}`:void 0,landscape_auth:$.value})}),onFinish:async({message:t})=>{if(!x.value||!u.value)return;const e=t.parts.filter(o=>o.type==="text").map(o=>"text"in o?o.text:"").join(` 2 3`);try{await b.put(route("assistant.prototype.meetings.messages.update",{meeting:u.value,message:x.value}),{content:e})}catch(o){console.error("Failed to persist response:",o)}},onError:t=>{p.value=t.message}});function B(){O(()=>{f.value&&(f.value.scrollTop=f.value.scrollHeight)})}H(()=>s.messages,()=>B(),{deep:!0});async function F(){const t=m.value.trim();if(!(!t||s.status==="streaming"||s.status==="submitted")){m.value="",p.value=null;try{let e;u.value?e=await b.post(route("assistant.prototype.meetings.messages.store",{meeting:u.value}),{query:t}):e=await b.post(route("assistant.prototype.meetings.store"),{query:t}),u.value=e.data.meeting_uuid,x.value=e.data.assistant_message_uuid}catch(e){p.value="Failed to create message records",console.error(e);return}await s.sendMessage({text:t})}}return(t,e)=>(r(),a(c,null,[T(i(L),{title:"Prototype"}),n("div",Q,[n("div",R,[e[1]||(e[1]=n("h1",{class:"text-lg font-semibold"}," Amyga Streaming Prototype ",-1)),n("p",X," Meeting: "+d(u.value??"Not started"),1)]),n("div",{ref_key:"messageContainer",ref:f,class:"flex-1 overflow-y-auto p-4"},[n("div",Y,[(r(!0),a(c,null,h(i(s).messages,o=>(r(),a("div",{key:o.id,class:K(["rounded-lg p-3 text-sm",o.role==="user"?"ml-auto max-w-[80%] bg-primary text-primary-foreground":"mr-auto max-w-[80%] bg-muted"])},[n("div",Z,[(r(!0),a(c,null,h(o.parts,(l,_)=>(r(),a(c,{key:_},[l.type==="text"?(r(),a("span",tt,d(l.text),1)):y(l)?(r(),a("span",et,d(k(l)),1)):v("",!0)],64))),128))]),M(o)?(r(),a("div",ot,[(r(!0),a(c,null,h(o.parts.filter(l=>y(l)),(l,_)=>(r(),a("span",{key:N(o.id,l,_),class:"rounded-md border border-border bg-background/60 px-2 py-1 text-xs text-muted-foreground"},d(k(l)),1))),128))])):v("",!0)],2))),128)),i(s).status==="submitted"?(r(),a("div",st," Thinking... ")):v("",!0),p.value||i(s).error?(r(),a("div",rt,d(p.value||i(s).error?.message),1)):v("",!0)])],512),n("div",at,[n("form",{class:"mx-auto flex max-w-3xl gap-2",onSubmit:S(F,["prevent"])},[W(n("input",{"onUpdate:modelValue":e[0]||(e[0]=o=>m.value=o),type:"text",placeholder:"Type a message...",class:"flex-1 rounded-lg border bg-background px-4 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary",disabled:i(s).status==="streaming"||i(s).status==="submitted"},null,8,it),[[V,m.value]]),T(i(A),{type:"submit",disabled:i(s).status==="streaming"||i(s).status==="submitted"||!m.value.trim()},{default:G(()=>[...e[2]||(e[2]=[J(" Send ",-1)])]),_:1},8,["disabled"])],32)])])],64))}});
3export{ce as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.