@m6d/cortex-react 1.8.0 → 1.9.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.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  import{useCallback as j,useEffect as u0,useMemo as f1,useRef as G_,useState as Q_,useSyncExternalStore as _N}from"react";function n_(_){return Promise.resolve(_.getHeaders())}function l1(_,N){let k=_.baseUrl;return(typeof k==="string"?k:k()).replace(/\/$/,"")+N}function _2(_){let N=_?.match(/filename\*\s*=\s*[^']*'[^']*'([^;\r\n]+)/i)?.[1]?.trim().replace(/^"|"$/g,"");if(N)try{return decodeURIComponent(N)}catch{}return _?.match(/filename\s*=\s*"?([^";\r\n]+)"?/i)?.[1]}function $1(_){function N(){return n_(_())}function k(L){return l1(_(),L)}async function $(L,Z){let J=new Headers(await N());if(new Headers(Z?.headers).forEach(function(W,K){J.set(K,W)}),Z?.body instanceof FormData)J.delete("Content-Type");else if(!J.has("Content-Type"))J.set("Content-Type","application/json");let X=await fetch(k(L),{...Z,headers:J});if(!X.ok)throw Error(`HTTP ${X.status}: ${X.statusText}`);let G=await X.text();return G?JSON.parse(G):void 0}return{getCapabilities(){return $("/capabilities")},listThreads(){return $("/threads")},createThread(L){return $("/threads",{method:"POST",body:JSON.stringify({prompt:L})})},deleteThread(L){return $(`/threads/${L}`,{method:"DELETE"})},listMessages(L){return $(`/threads/${L}/messages`)},listLlmRequests(L){return $(`/messages/${L}/llm-requests`)},abortStream(L){return $(`/chat/${L}/abort`,{method:"POST"})},initiateToolCall(L,Z){return $(`/chat/${L}/tools/${Z}/initiate`,{method:"POST"})},async uploadAttachment(L,Z){let J=new FormData;return J.append("file",Z),await $(`/threads/${L}/files`,{method:"POST",body:J})},deleteAttachment(L){return $(`/files/${L}`,{method:"DELETE"})},async downloadAttachment(L){let Z=await fetch(k(`/files/${L}`),{headers:await N()});if(!Z.ok)throw Error(`HTTP ${Z.status}: ${Z.statusText}`);return{blob:await Z.blob(),name:_2(Z.headers.get("Content-Disposition"))??L}},resolveHeaders:N,resolveUrl:k}}var N2={complete:"success",error:"error","approval-requested":"approval","approval-responded":"approval","awaiting-input":"pending","input-streaming":"pending","input-complete":"pending"},k2={"awaiting-input":"translate_calling","input-streaming":"translate_calling","input-complete":"translate_input_ready","approval-requested":"translate_needs_approval","approval-responded":"translate_responded",complete:"translate_completed",error:"translate_error"};function L1(_){let{state:N,approval:k}=_;return{modifier:N2[N],labelKey:N==="approval-responded"&&k?.approved?"translate_approved":k2[N],pulse:N==="awaiting-input"||N==="input-streaming"?"default":N==="approval-requested"?"violet":void 0}}function Z1(_){let N=_.output;if(N===void 0||N===null)return"";if(typeof N==="string")return N;return JSON.stringify(N,null,2)}var o1={code:"javascript",query:"cypher"};function G1(_){let N=_&&typeof _==="object"?_:null,k=N?Object.entries(o1).flatMap(([L,Z])=>{let J=N[L];return typeof J==="string"?[{key:L,lang:Z,value:J.replace(/\\n/g,`
2
- `)}]:[]}):[],$=_;if(N){let L=Object.fromEntries(Object.entries(N).filter(([Z])=>!Object.hasOwn(o1,Z)));$=Object.keys(L).length>0?L:null}return{codeSnippets:k,remainingInput:$,remainingInputText:$?JSON.stringify($,null,2):""}}var j1=10,$2={"awaiting-input":"starting","input-streaming":"starting","input-complete":"processing","approval-requested":"processing","approval-responded":"processing",complete:"complete",error:"error"};function L2(_){let N=0;for(let k=0;k<_.length;k++)N=N*31+_.charCodeAt(k)|0;return Math.abs(N)%j1}function J1(_){let N=$2[_.state]??"processing",k=_.name==="readAttachment"?"attachment":"tool",$=k==="tool"?`_${L2(_.id)}`:"";return{state:N,active:N==="starting"||N==="processing",titleKey:N==="error"?"translate_tool_error":`translate_${k}_${N==="complete"?"done":"status"}${$}`}}function X_(_){return Array.from({length:j1},(N,k)=>`translate_${_}_${k}`)}function X1(_,N,k){return _.type==="thinking"&&!(k&&N)}import{EventType as G2}from"@tanstack/ai";import{fetchServerSentEvents as d1}from"@tanstack/ai-client";var V1=["image/png","image/jpeg","image/webp","application/pdf"];var h1=5;function r1(_,N){if(!V1.some((k)=>k===_))return"type";if(N>10485760)return"size";return"ok"}var x1="clientToolAnswers";var Z2=new Set(["complete","error"]);function z_(_){return Z2.has(_)}function g_(_){return(f_(_)?.parts??[]).filter((k)=>k.type==="tool-call"&&!z_(k.state))}function f_(_){for(let N=_.length-1;N>=0;N-=1){let k=_[N];if(k?.role==="assistant")return k}return}function W1(_){let N=_.role==="trigger"?"user":_.role;return{id:_.id,role:N,parts:_.parts}}function i1(_){for(let N=_.length-1;N>=0;N-=1){let k=_[N],$="parts"in k&&k.parts.some((L)=>L.type==="tool-result");if(k.role==="user"||$)return _.slice(N,N+1)}return _.slice(-1)}function J2(_){let[N]=_;if(!N||N.role!=="assistant"||!("parts"in N))return null;if(!N.parts.some(($)=>$.type==="tool-result"))return null;let k=N.parts.flatMap(($)=>$.type==="tool-call"&&z_($.state)?[{toolCallId:$.id,output:$.output??null,state:$.state==="error"?"error":"complete"}]:[]);return k.length>0?k:null}function T_(_){return new Map(_.flatMap((N)=>N.metadata?[[N.id,N.metadata]]:[]))}function K1(_){let{api:N,thread:k}=_,$=async()=>({headers:await N.resolveHeaders()}),L=d1(()=>N.resolveUrl("/chat"),$),Z=function(G,W,K,y){let q=i1(G),B=J2(q);return B?L.connect([],{...W,[x1]:B},K,y):L.connect(q,W,K,y)},J=d1(()=>N.resolveUrl(`/chat/${k.id}/stream`),$),X=[];return{connect:Z,async*joinRun(G,W){yield{type:G2.MESSAGES_SNAPSHOT,timestamp:Date.now(),messages:X},yield*J.joinRun(G,W)},hydrate:async()=>{let G=await X2(_);return X=G.messages,G}}}async function X2(_){let{api:N,thread:k,mode:$}=_,L=k.isRunning?{runId:k.id}:null;if($==="skip")return{messages:[],activeRun:L,interrupts:null};if($==="load")_.setLoadingMessages?.(!0);try{let Z=await N.listMessages(k.id),J=Z.map(W1);return _.onHydrated?.(Z,J),{messages:J,activeRun:L,interrupts:null}}finally{_.setLoadingMessages?.(!1)}}async function Y1(_){try{let N=await _.api.listMessages(_.threadId);if(_.isStale?.())return;if(_.absorbMetadata(T_(N)),_.isStreaming())return;_.setMessages(N.map(W1))}catch{}}function A_(){if(typeof crypto.randomUUID==="function")return crypto.randomUUID();let _=crypto.getRandomValues(new Uint8Array(16));_[6]=_[6]&15|64,_[8]=_[8]&63|128;let N=Array.from(_,(k)=>k.toString(16).padStart(2,"0")).join("");return`${N.slice(0,8)}-${N.slice(8,12)}-${N.slice(12,16)}-${N.slice(16,20)}-${N.slice(20)}`}function Q1(_){let{api:N}=_,k=new Set,$=new Set,L=[],Z=[];function J(){return L}function X(Q){return k.add(Q),()=>{k.delete(Q)}}function G(Q){L=Q;for(let V of k)V()}function W(Q,V){G(L.map((z)=>z.localId===Q?{...z,...V}:z))}function K(Q){if($.delete(Q))return;W(Q,{status:"error"})}function y(Q){let V=[];for(let z of Q){let T=r1(z.type,z.size)!=="ok"||L.filter((p)=>p.status!=="error").length>=h1,v=A_();if(G([...L,{localId:v,filename:z.name,status:T?"error":"uploading"}]),!T)V.push({localId:v,file:z})}if(!V.length)return;_.ensureThread().then((z)=>{for(let{localId:T,file:v}of V){if($.delete(T))continue;W(T,{threadId:z}),N.uploadAttachment(z,v).then((p)=>{if($.delete(T)){N.deleteAttachment(p.id).catch(()=>{});return}W(T,{status:"ready",attachmentId:p.id,summary:p})},()=>K(T))}},()=>{for(let{localId:z}of V)K(z)})}function q(Q){let V=L.find((z)=>z.localId===Q);if(!V)return;if(V.status==="uploading"){$.add(Q),G(L.filter((z)=>z.localId!==Q));return}if(V.attachmentId){W(Q,{status:"deleting"}),N.deleteAttachment(V.attachmentId).then(()=>G(L.filter((z)=>z.localId!==Q)),()=>W(Q,{status:"error"}));return}G(L.filter((z)=>z.localId!==Q))}function B(Q){let V=[];for(let z of L){if(z.threadId!==void 0&&z.threadId!==Q){V.push(z);continue}if(z.status==="uploading")$.add(z.localId);else if(z.status==="ready"&&z.threadId===Q&&z.attachmentId)N.deleteAttachment(z.attachmentId).catch(()=>{})}G(V)}function w(){let Q=L.flatMap((V)=>V.status==="ready"&&V.summary?[{...V,status:"ready",summary:V.summary}]:[]);return G(L.filter((V)=>V.status!=="ready")),Z=Q,Q}function U(Q){let V=Z;if(Z=[],V.some((z)=>z.threadId!==Q))return;G([...V.map((z)=>({...z,status:"error"})),...L])}function S(){Z=[]}return{getState:J,subscribe:X,accept:y,remove:q,clear:B,consumeReady:w,restoreConsumed:U,discardConsumed:S}}function z1(_){return{uploading:_.some((N)=>N.status==="uploading"),busy:_.some((N)=>N.status==="uploading"||N.status==="deleting"),hasReady:_.some((N)=>N.status==="ready")}}var V2=["completed","cancelled","failed"];function a1(_,N,k){if(N!==k)return null;if(typeof _!=="object"||_===null)return null;let $=_;if($.type!=="cortex:client-tool")return null;let L=V2.find((J)=>J===$.status);if(!L)return null;let Z=$.reference;return{type:"cortex:client-tool",status:L,...typeof Z==="string"?{reference:Z}:{},...$.result!==void 0?{result:$.result}:{}}}function F1(_,N,k){try{return new URL(_).origin===N&&!k?"allow-scripts allow-forms allow-popups":"allow-scripts allow-forms allow-popups allow-same-origin"}catch{return"allow-scripts allow-forms allow-popups"}}function q1(_,N,k){try{return k===!0&&new URL(_).origin===N}catch{return!1}}function D1(_,N){try{return _.contentWindow?.location.origin===N}catch{return!1}}function H1(_){let N=!1,k=!1,$,L;function Z(G){if(!N)_.onState(G)}function J(){if(N)return;k=!1,Z({phase:"error"})}function X(G){if(N||k)return;k=!0,Z({phase:"settling"});try{let W=_.submit(G);if(W instanceof Promise)W.catch(J)}catch{J()}}return{async start(){Z({phase:"initiating"});try{let G=await _.initiate();if(!G.embed){Z({phase:"unavailable"});return}if(!/^https?:$/.test(new URL(G.embedUrl).protocol)){Z({phase:"error"});return}$=G.embedOrigin,Z({phase:"embedded",embedUrl:G.embedUrl,surface:G.surface,embedOrigin:G.embedOrigin})}catch(G){let W=G instanceof Error?G.message:"";Z({phase:/HTTP 404/.test(W)?"unavailable":"error"})}},setSource(G){if(G!==null&&G!==void 0)L=G},handleMessage(G){if(!$)return;if(L===void 0||G.source!==L)return;let W=a1(G.data,G.origin,$);if(!W)return;X({status:W.status,reference:W.reference,result:W.result})},cancel(){X({status:"cancelled"})},terminate(){if(N||k)return;$=void 0,L=void 0,Z({phase:"error"})},dispose(){N=!0}}}function B1(_){return Math.min(1000*2**(_-1),30000)}var W2=1e4;function y1(_){let N,k,$=0,L=!1;function Z(){let X=typeof _.wsUrl==="function"?_.wsUrl():_.wsUrl;if(X===!1)return;let G=K2(X,_.transport.baseUrl);n_(_.transport).then((W)=>{if(L)return;N=new WebSocket(Y2(G,W)),N.addEventListener("open",()=>{let K=N;setTimeout(()=>{if(N===K&&!L)$=0},W2),_.onOpen?.()}),N.addEventListener("message",(K)=>{let y=K.data;if(typeof y!=="string")return;let q;try{q=JSON.parse(y)}catch{return}_.onEvent(q)}),N.addEventListener("close",J)}).catch(J)}function J(){if(L||k)return;$+=1,k=setTimeout(()=>{k=void 0,Z()},B1($))}return Z(),{close(){L=!0,clearTimeout(k),N?.close()}}}function K2(_,N){if(_)return _;let k=typeof N==="string"?N:N(),$=new URL(k,window.location.origin);return $.protocol=$.protocol==="https:"?"wss:":"ws:",$.pathname=$.pathname.replace(/\/$/,"")+"/ws",$.toString()}function Y2(_,N){let k=N.Authorization??N.authorization;if(!k?.startsWith("Bearer "))return _;let $=new URL(_,window.location.origin);if($.searchParams.has("token"))return $.toString();return $.searchParams.set("token",k.slice(7)),$.toString()}function p_(_,N,k=B1){let $=!1,L,Z=0;function J(){_.getCapabilities().then((X)=>{if(!$)N(X)},()=>{if($)return;Z+=1,L=setTimeout(J,k(Z))})}return J(),function(){$=!0,clearTimeout(L)}}function m_(_){return[..._].sort((N,k)=>{let $=Date.parse(k.updatedAt)-Date.parse(N.updatedAt);if($!==0)return $;return Date.parse(k.createdAt)-Date.parse(N.createdAt)})}function E_(_,N){let k=[..._],$=k.findIndex((L)=>L.id===N.id);if($===-1)k.push(N);else k[$]={...k[$],...N};return m_(k)}function u_(_,N){return _.filter((k)=>k.id!==N)}function O1(_,N){switch(N.type){case"thread:deleted":return u_(_,N.payload.threadId);case"thread:created":case"thread:title-updated":case"thread:run-started":case"thread:run-finished":case"thread:messages-updated":return E_(_,N.payload.thread);default:return _}}import{marked as Q2}from"marked";import z2 from"dompurify";function U1(_){if(!_)return"";let N=Q2.parse(_,{async:!1});return N=N.replace(/<table>/g,'<div style="overflow-x:auto"><table style="width:auto">').replace(/<\/table>/g,"</table></div>").replace(/<(t[hd])([\s>])/g,'<$1 style="padding:0.5rem 1rem"$2'),z2.sanitize(N)}import P_ from"highlight.js/lib/core";import F2 from"highlight.js/lib/languages/javascript";import q2 from"highlight.js/lib/languages/json";import D2 from"highlight.js/lib/languages/sql";var t1=!1;function H2(){if(t1)return;t1=!0,P_.registerLanguage("javascript",F2),P_.registerLanguage("json",q2),P_.registerLanguage("cypher",D2)}function M1(_,N){if(!_)return"";return H2(),P_.getLanguage(N)?P_.highlight(_,{language:N}).value:B2(_)}function B2(_){return _.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var s1={translate_new:"جديد",translate_history:"السجل",translate_back:"رجوع",translate_greeting:"بماذا يمكنني مساعدتك اليوم؟",translate_n_conversations:"{{count}} محادثات",translate_one_conversation:"محادثة واحدة",translate_no_threads_yet:"لا توجد محادثات بعد",translate_start_a_new_conversation:"ابدأ محادثة جديدة",translate_untitled:"بدون عنوان",translate_new_chat:"محادثة جديدة",translate_normal:"عادي",translate_debug:"تصحيح",translate_type_a_message:"اكتب رسالة...",translate_thinking:"جارٍ معالجة الطلب...",translate_reasoned:"تم الاستنتاج",translate_knowledge_graph_query:"استعلام الرسم البياني المعرفي",translate_javascript_code_execution:"تنفيذ كود جافاسكريبت",translate_completed:"مكتمل",translate_attach_files:"إرفاق ملفات",translate_drop_files_here:"أفلت ملفاتك هنا...",translate_remove_attachment:"إزالة المرفق",translate_attachment_rejected:"لا يمكن إرفاق هذا الملف",translate_attachment_caption:"من فضلك اطّلع على الملفات المرفقة.",translate_download:"تنزيل",translate_tool_status_0:"جارٍ جلب البيانات…",translate_tool_status_1:"جارٍ تحليل المعلومات…",translate_tool_status_2:"جارٍ معالجة الطلب…",translate_tool_status_3:"جارٍ تجميع النتائج…",translate_tool_status_4:"جارٍ تحضير الرد…",translate_tool_status_5:"جارٍ البحث…",translate_tool_status_6:"جارٍ فحص السجلات…",translate_tool_status_7:"جارٍ مراجعة التفاصيل…",translate_tool_status_8:"جارٍ إجراء الحسابات…",translate_tool_status_9:"جارٍ سحب المعلومات…",translate_tool_done_0:"تم جلب البيانات بنجاح",translate_tool_done_1:"تم التحليل بنجاح",translate_tool_done_2:"تمت معالجة الطلب بنجاح",translate_tool_done_3:"تم تجميع النتائج بنجاح",translate_tool_done_4:"تم تحضير الرد بنجاح",translate_tool_done_5:"تم البحث بنجاح",translate_tool_done_6:"تم فحص السجلات بنجاح",translate_tool_done_7:"تمت المراجعة بنجاح",translate_tool_done_8:"تمت الحسابات بنجاح",translate_tool_done_9:"تم استرجاع المعلومات بنجاح",translate_tool_error:"حدث خطأ",translate_attachment_status:"جارٍ قراءة الملف المرفق…",translate_attachment_done:"تمت قراءة الملف المرفق",translate_graph_0:"جارٍ استكشاف الروابط...",translate_graph_1:"جارٍ رسم الخريطة...",translate_graph_2:"جارٍ اكتشاف العلاقات...",translate_graph_3:"جارٍ تتبع الروابط...",translate_graph_4:"جارٍ التنقل في المعرفة...",translate_graph_5:"جارٍ كشف الرؤى...",translate_graph_6:"جارٍ ربط النقاط...",translate_graph_7:"جارٍ تتبع المسار...",translate_graph_8:"جارٍ تجميع الأجزاء...",translate_graph_9:"جارٍ بناء الصورة...",translate_code_0:"جارٍ حساب الأرقام...",translate_code_1:"جارٍ معالجة البيانات...",translate_code_2:"جارٍ تنفيذ طلبك...",translate_code_3:"جارٍ تحليل الأرقام...",translate_code_4:"جارٍ تجميع كل شيء...",translate_code_5:"جارٍ تحليل النتائج...",translate_code_6:"جارٍ العمل خلف الكواليس...",translate_code_7:"جارٍ ترتيب التفاصيل...",translate_code_8:"جارٍ تحضير إجابتك...",translate_code_9:"أوشك على الانتهاء...",translate_reasoning_0:"جارٍ التفكير...",translate_reasoning_1:"جارٍ دراسة الخيارات...",translate_reasoning_2:"جارٍ تقييم الاحتمالات...",translate_reasoning_3:"جارٍ التأمل في هذا...",translate_reasoning_4:"جارٍ إيجاد الحل...",translate_reasoning_5:"جارٍ ترتيب الأفكار...",translate_reasoning_6:"جارٍ التمعن في الأمر...",translate_reasoning_7:"جارٍ إيجاد أفضل طريقة...",translate_reasoning_8:"جارٍ تنظيم أفكاري...",translate_reasoning_9:"أوشك على الانتهاء...",translate_running:"قيد التنفيذ",translate_aborted:"تم الإلغاء",translate_input:"المدخلات",translate_output:"المخرجات",translate_calling:"جارٍ الاستدعاء",translate_input_ready:"المدخلات جاهزة",translate_needs_approval:"بحاجة إلى موافقة",translate_approved:"تمت الموافقة",translate_responded:"تم الرد",translate_error:"خطأ",translate_approval_requested:"طلب موافقة",translate_approval_response:"رد الموافقة",translate_waiting_for_approval:"في انتظار الموافقة لتنفيذ هذه الأداة.",translate_tool_approved:"تمت الموافقة.",translate_tool_response_received:"تم استلام الرد.",translate_tokens:"رمز",translate_fresh:"جديد",translate_cache_read:"قراءة من الذاكرة",translate_cache_write:"كتابة في الذاكرة",translate_n_percent_cached:"{{percent}}٪ مخزّن مؤقتًا",translate_text:"نص",translate_reasoning:"الاستنتاج",translate_read:"قراءة",translate_write:"كتابة",translate_total:"الإجمالي",translate_request:"الطلب",translate_response:"الرد",translate_step_n:"الخطوة {{number}}",translate_inspect_llm_requests:"فحص طلبات النموذج",translate_loading:"جارٍ التحميل…",translate_no_llm_requests:"لا توجد طلبات نموذج مسجّلة لهذه الرسالة.",translate_unhandled_type:"نوع غير مدعوم:",translate_client_tool_title:"أكمل هذه الخطوة للمتابعة",translate_client_tool_loading:"جارٍ تجهيز خطوة آمنة...",translate_client_tool_failed:"تعذّر تحميل هذه الخطوة",translate_client_tool_retry:"حاول مرة أخرى",translate_client_tool_cancel:"إلغاء",translate_trigger_fired:"تم التشغيل بواسطة",translate_trigger_payload:"الحمولة",translate_messages_disabled:"يعمل هذا الوكيل من مشغّلاته فقط."};var e1={translate_new:"New",translate_history:"History",translate_back:"Back",translate_greeting:"What can I help you with today?",translate_n_conversations:"{{count}} conversations",translate_one_conversation:"1 conversation",translate_no_threads_yet:"No threads yet",translate_start_a_new_conversation:"Start a new conversation",translate_untitled:"Untitled",translate_new_chat:"New Chat",translate_normal:"Normal",translate_debug:"Debug",translate_type_a_message:"Type a message...",translate_thinking:"Thinking things through...",translate_reasoned:"Reasoned",translate_knowledge_graph_query:"Knowledge Graph Query",translate_javascript_code_execution:"JavaScript Code Execution",translate_completed:"Completed",translate_attach_files:"Attach files",translate_drop_files_here:"Drop your files here...",translate_remove_attachment:"Remove attachment",translate_attachment_rejected:"This file cannot be attached",translate_attachment_caption:"Please take a look at the attached files.",translate_download:"Download",translate_tool_status_0:"Fetching data...",translate_tool_status_1:"Analyzing information...",translate_tool_status_2:"Processing request...",translate_tool_status_3:"Gathering results...",translate_tool_status_4:"Preparing response...",translate_tool_status_5:"Looking things up...",translate_tool_status_6:"Checking records...",translate_tool_status_7:"Reviewing details...",translate_tool_status_8:"Running calculations...",translate_tool_status_9:"Pulling information...",translate_tool_done_0:"Data fetched successfully",translate_tool_done_1:"Analysis completed successfully",translate_tool_done_2:"Request processed successfully",translate_tool_done_3:"Results gathered successfully",translate_tool_done_4:"Response prepared successfully",translate_tool_done_5:"Lookup completed successfully",translate_tool_done_6:"Records checked successfully",translate_tool_done_7:"Review completed successfully",translate_tool_done_8:"Calculations completed successfully",translate_tool_done_9:"Information retrieved successfully",translate_tool_error:"Something went wrong",translate_attachment_status:"Reading the attached file...",translate_attachment_done:"Finished reading the file",translate_graph_0:"Exploring connections...",translate_graph_1:"Mapping out the links...",translate_graph_2:"Discovering relationships...",translate_graph_3:"Tracing the connections...",translate_graph_4:"Navigating the knowledge...",translate_graph_5:"Uncovering insights...",translate_graph_6:"Connecting the dots...",translate_graph_7:"Following the trail...",translate_graph_8:"Piecing things together...",translate_graph_9:"Building the picture...",translate_code_0:"Running the numbers...",translate_code_1:"Working through the data...",translate_code_2:"Processing your request...",translate_code_3:"Crunching the figures...",translate_code_4:"Putting it all together...",translate_code_5:"Analyzing the results...",translate_code_6:"Working behind the scenes...",translate_code_7:"Sorting through the details...",translate_code_8:"Preparing your answer...",translate_code_9:"Almost ready...",translate_reasoning_0:"Thinking it through...",translate_reasoning_1:"Considering the options...",translate_reasoning_2:"Weighing the possibilities...",translate_reasoning_3:"Reflecting on this...",translate_reasoning_4:"Working it out...",translate_reasoning_5:"Putting thoughts together...",translate_reasoning_6:"Mulling it over...",translate_reasoning_7:"Finding the best approach...",translate_reasoning_8:"Organizing my thoughts...",translate_reasoning_9:"Almost there...",translate_running:"Running",translate_aborted:"Aborted",translate_input:"Input",translate_output:"Output",translate_calling:"Calling",translate_input_ready:"Input ready",translate_needs_approval:"Needs approval",translate_approved:"Approved",translate_responded:"Responded",translate_error:"Error",translate_approval_requested:"Approval requested",translate_approval_response:"Approval response",translate_waiting_for_approval:"Waiting for approval to execute this tool.",translate_tool_approved:"Approved.",translate_tool_response_received:"Response received.",translate_tokens:"tokens",translate_fresh:"Fresh",translate_cache_read:"Cache read",translate_cache_write:"Cache write",translate_n_percent_cached:"{{percent}}% cached",translate_text:"Text",translate_reasoning:"Reasoning",translate_read:"Read",translate_write:"Write",translate_total:"Total",translate_request:"Request",translate_response:"Response",translate_step_n:"Step {{number}}",translate_inspect_llm_requests:"Inspect LLM requests",translate_loading:"loading…",translate_no_llm_requests:"No LLM requests recorded for this message.",translate_unhandled_type:"Unhandled type:",translate_client_tool_title:"Complete this step to continue",translate_client_tool_loading:"Preparing a secure step...",translate_client_tool_failed:"This step could not be loaded",translate_client_tool_retry:"Try again",translate_client_tool_cancel:"Cancel",translate_trigger_fired:"Triggered by",translate_trigger_payload:"Payload",translate_messages_disabled:"This agent only runs from its triggers."};var l_={en:e1,ar:s1};function A1(_,N,k){let L=(l_[_]??l_.en)?.[N]??l_.en?.[N]??N;if(!k)return L;return L.replace(/\{\{\s*(\w+)\s*\}\}/g,(Z,J)=>(J in k)?String(k[J]):Z)}function F_(_){if(typeof _==="string"){let N=_.trim();if(!(N.startsWith("{")&&N.endsWith("}")||N.startsWith("[")&&N.endsWith("]")))return _;try{return F_(JSON.parse(N))}catch{return _}}if(Array.isArray(_))return _.map((N)=>F_(N));if(_!==null&&typeof _==="object"){let N={};for(let[k,$]of Object.entries(_))N[k]=F_($);return N}return _}function E1(_,N){if(Array.isArray(_)){let k=_;return{kind:"container",open:"[",close:"]",summary:_0(k.length,"item","items"),entries:k.map(($,L)=>({key:null,value:$,path:`${N}[${L}]`}))}}if(_!==null&&typeof _==="object"){let k=Object.entries(_);return{kind:"container",open:"{",close:"}",summary:_0(k.length,"property","properties"),entries:k.map(([$,L])=>({key:$,value:L,path:`${N}.${$}`}))}}return{kind:"primitive",text:U2(_),className:M2(_)}}function _0(_,N,k){return`${_} ${_===1?N:k}`}function U2(_){if(_===null||_===void 0)return"null";if(typeof _==="string")return JSON.stringify(_);if(typeof _==="number"||typeof _==="boolean")return String(_);return JSON.stringify(_)??"null"}function M2(_){if(_===null||_===void 0)return"jt-null";if(typeof _==="string")return"jt-string";if(typeof _==="number")return"jt-number";if(typeof _==="boolean")return"jt-boolean";return""}function o_(_){if(!_)return null;try{return JSON.parse(_)}catch{return _}}function j_(_){if(!_)return"";try{return JSON.stringify(JSON.parse(_),null,2)}catch{return _}}function q_(_,N){if(_===void 0||typeof _==="string"||Array.isArray(_))return _;return _[N]??_.en??Object.values(_)[0]}var P1=[["year",31536000000],["month",2592000000],["week",604800000],["day",86400000],["hour",3600000],["minute",60000],["second",1000]];function V_(_,N,k=Date.now()){let $=Date.parse(_);if(Number.isNaN($))return"";let L=$-k,[Z,J]=P1.find(([,X])=>Math.abs(L)>=X)??P1[P1.length-1];return new Intl.RelativeTimeFormat(N,{numeric:"auto"}).format(Math.round(L/J),Z)}function w1(_,N){let k=URL.createObjectURL(_),$=document.createElement("a");$.href=k,$.download=N,$.click(),URL.revokeObjectURL(k)}class W_{onUpdate;fullText="";displayedLength=0;animationFrameId=null;isDone=!1;static DRAIN_FRACTION=0.03;static MIN_CHARS_PER_FRAME=1;static DONE_DRAIN_FRACTION=0.1;constructor(_){this.onUpdate=_}seed(_){this.fullText=_,this.displayedLength=_.length,this.onUpdate(_)}update(_,N){if(this.fullText=_,this.isDone=N,this.displayedLength=Math.min(this.displayedLength,this.fullText.length),N&&this.displayedLength>=this.fullText.length){this.onUpdate(this.fullText),this.stopAnimation();return}if(!this.animationFrameId)this.scheduleFrame()}destroy(){this.stopAnimation()}scheduleFrame(){this.animationFrameId=requestAnimationFrame(()=>this.tick())}tick(){let _=this.fullText.length-this.displayedLength;if(_<=0){this.animationFrameId=null;return}let N=this.isDone?W_.DONE_DRAIN_FRACTION:W_.DRAIN_FRACTION,k=Math.max(W_.MIN_CHARS_PER_FRAME,Math.ceil(_*N));if(this.displayedLength=Math.min(this.fullText.length,this.displayedLength+k),this.onUpdate(this.fullText.substring(0,this.displayedLength)),this.displayedLength<this.fullText.length)this.scheduleFrame();else this.animationFrameId=null}stopAnimation(){if(this.animationFrameId)cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null}}function w_(_){if(_.input.total<=0)return null;return Math.round(_.input.cacheRead/_.input.total*100)}import{useEffect as R_,useLayoutEffect as N0,useMemo as A2,useRef as s}from"react";import{useChat as E2}from"@tanstack/ai-react";function k0(_){let{thread:N,api:k,patchUi:$}=_,L=s(!0),Z=s(!1),J=s(!1),X=s(!1),G=s(!1),W=s(new Set),K=s(Promise.resolve()),y=A2(()=>K1({api:k,thread:{id:N.id,isRunning:N.isRunning},mode:_.mode,onHydrated:(D)=>{if(!L.current)return;$({messageMetadata:T_(D)})},setLoadingMessages:(D)=>{if(L.current)$({isLoadingMessages:D})}}),[]),q=E2({threadId:N.id,persistence:!0,initialMessages:_.initialMessages,connection:y,onChunk:()=>{if(!L.current)return;J.current=!0},onError:()=>{if(!L.current)return;if(J.current)_.onTurnFinished();else _.onSendFailed()}}),B=s(q);B.current=q;let w=s(q.isLoading);w.current=q.isLoading;async function U(D,g){let c=g({toolCallId:D.id,toolName:D.name,input:D.input},{threadId:N.id});if(c===null||c===void 0)return;let m=await Promise.resolve(c);if(m===null||m===void 0)return;if(!L.current)return;await B.current.addToolResult({toolCallId:D.id,tool:D.name,output:m})}function S(){let D=g_(B.current.messages),g=_.configRef.current.hooks?.onToolCall;if(!g)return D.length>0;for(let c of D){if(c.state!=="input-complete")continue;if(W.current.has(c.id))continue;W.current.add(c.id),U(c,g)}return D.length>0}async function Q(D){if(!L.current||D!==N.id)return;await Y1({api:k,threadId:D,isStale:()=>!L.current,isStreaming:()=>w.current,absorbMetadata:(g)=>$({messageMetadata:g}),setMessages:(g)=>{B.current.setMessages(g)}})}function V(D){return K.current=K.current.then(()=>Q(D)),K.current}async function z(){if(X.current){X.current=!1;return}if(Z.current&&S())return;await V(N.id)}async function T(D,g){_.setRunning(N.id,!0),Z.current=!0,J.current=!1;let c={id:A_(),role:"user",parts:[{type:"text",content:D}]};if(g.length)$((m)=>({messageMetadata:new Map(m.messageMetadata).set(c.id,{attachments:g})}));await B.current.append(c)}async function v(){if(!w.current)return;let{aborted:D}=await k.abortStream(N.id).catch(()=>({aborted:!1}));if(!L.current)return;if(D)X.current=!0,_.setRunning(N.id,!1);B.current.stop()}function p(D,g,c){return B.current.addToolResult({toolCallId:D,tool:g,output:c}).catch((m)=>{throw V(N.id),m})}function u(D){if(w.current)return;if(D.isRunning){_.remount(D);return}V(D.id)}R_(()=>{return L.current=!0,()=>{L.current=!1}},[]);let M=s(void 0);return M.current={threadId:N.id,send:T,abort:v,addToolResult:p,reattach:u,refreshMessages:(D)=>{V(D)}},N0(()=>{_.sessionRef.current=M.current}),N0(()=>{return()=>{if(_.sessionRef.current===M.current)_.sessionRef.current=void 0}},[]),R_(()=>{if(!_.pendingSendRef.current.length)return;let D=setTimeout(()=>{let g=_.pendingSendRef.current;_.pendingSendRef.current=[],(async()=>{for(let{prompt:c,attachments:m}of g)await T(c,m)})()});return()=>clearTimeout(D)},[]),R_(()=>{$({messages:q.messages})},[q.messages]),R_(()=>{$({hasPendingToolCalls:!q.isLoading&&g_(q.messages).length>0})},[q.messages,q.isLoading]),R_(()=>{if($({isAgentWorking:q.isLoading}),q.isLoading){G.current=!0;return}if(!G.current)return;G.current=!1,_.onTurnFinished(),z()},[q.isLoading]),null}import{createContext as P2,useContext as w2}from"react";var R1=P2(void 0);function H(){let _=w2(R1);if(!_)throw Error("useCortex must be used inside <CortexChatWidget>");return _}function F(..._){return _.filter(Boolean).join(" ")}import{forwardRef as R2,useEffect as b2,useImperativeHandle as v2,useRef as v1,useState as L0}from"react";import{jsx as e,jsxs as b1}from"react/jsx-runtime";function $0(){let{queue:_,t:N}=H();if(!_.items.length)return null;return e("div",{className:"cortex-attachment-queue",children:_.items.map((k)=>b1("div",{className:F("cortex-attachment-chip",k.status==="error"&&"cortex-attachment-chip--error"),title:k.status==="error"?N("translate_attachment_rejected"):"",children:[k.status==="uploading"||k.status==="deleting"?b1("svg",{className:"cortex-attachment-chip__spinner",viewBox:"0 0 16 16",fill:"none",children:[e("circle",{cx:"8",cy:"8",r:"6",stroke:"currentColor",strokeWidth:"2",className:"cortex-attachment-chip__spinner-track"}),e("path",{d:"M14 8a6 6 0 0 0-6-6",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):b1("svg",{viewBox:"0 0 16 16",className:"cortex-attachment-chip__icon",fill:"none",children:[e("path",{d:"M4 1.5h5.172a2 2 0 0 1 1.414.586l2.328 2.328a2 2 0 0 1 .586 1.414V12.5a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2Z",stroke:"currentColor",strokeWidth:"1.25"}),e("path",{d:"M9.5 1.5v2a2 2 0 0 0 2 2h2",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round"})]}),e("span",{className:"cortex-attachment-chip__name",children:k.filename}),e("button",{type:"button",onClick:()=>_.remove(k.localId),className:"cortex-attachment-chip__remove",disabled:k.status==="deleting","aria-label":N("translate_remove_attachment"),children:e("svg",{viewBox:"0 0 16 16",fill:"none",children:e("path",{d:"M4.5 4.5l7 7m0-7l-7 7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})})]},k.localId))})}import{jsx as x,jsxs as b_,Fragment as S2}from"react/jsx-runtime";var I2=V1.join(","),h_=R2(function(N,k){let{t:$,queue:L,isAgentWorking:Z,send:J,abort:X,capabilities:G}=H(),W=G?.attachments??!1,[K,y]=L0(""),[q,B]=L0(!1),w=v1(null),U=v1(null);v2(k,()=>({focusInput:()=>w.current?.focus()}));let S=v1(Z);b2(()=>{if(S.current&&!Z)w.current?.focus();S.current=Z},[Z]);let Q=!L.busy&&(Boolean(K.trim())||L.hasReady);function V(){if(Z||!Q)return;let M="translate_attachment_caption",D=$(M),g=D!==M?D:"Please take a look at the attached files.",c=K.trim()||g,m=L.consumeReady();y(""),J(c,m.map((s_)=>s_.summary))}function z(M){if(M.key==="Enter"&&!M.shiftKey)M.preventDefault(),V()}function T(M){if(M.preventDefault(),W)B(!0)}function v(M){if(!M.currentTarget.contains(M.relatedTarget))B(!1)}function p(M){if(M.preventDefault(),B(!1),W)L.accept([...M.dataTransfer.files])}function u(M){let D=M.clipboardData.files;if(!W||!D.length)return;M.preventDefault(),L.accept([...D])}return b_("div",{className:"cortex-widget__input-area",onDragOver:T,onDragLeave:v,onDrop:p,children:[x($0,{}),b_("div",{className:F("cortex-widget__input-box",Z&&"cortex-widget__input-box--disabled",!Z&&"cortex-widget__input-box--enabled",q&&"cortex-widget__input-box--dragging"),children:[x("textarea",{ref:w,onKeyDown:z,onPaste:u,value:K,onChange:(M)=>y(M.target.value),placeholder:q?$("translate_drop_files_here"):Z?"":$("translate_type_a_message"),disabled:Z,rows:1,className:F("cortex-widget__textarea",Z&&"cortex-widget__textarea--disabled")}),Z?b_("button",{onClick:()=>void X(),className:"cortex-stop-btn",children:[x("span",{className:"cortex-stop-btn__ring"}),x("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",className:"cortex-stop-btn__icon",children:x("rect",{x:"1",y:"1",width:"10",height:"10",rx:"2.5",fill:"currentColor"})})]}):b_("div",{className:"cortex-widget__input-actions",children:[W?b_(S2,{children:[x("button",{type:"button",onClick:()=>U.current?.click(),className:"cortex-widget__attach-btn","aria-label":$("translate_attach_files"),children:x("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:x("path",{d:"M10.5 5.5 6.2 9.8a1.4 1.4 0 0 0 2 2l4.6-4.6a2.8 2.8 0 0 0-4-4L4.2 7.8a4.2 4.2 0 0 0 6 6l4-4",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})}),x("input",{ref:U,type:"file",multiple:!0,accept:I2,onChange:(M)=>{L.accept([...M.target.files??[]]),M.target.value=""},className:"cortex-widget__file-input"})]}):null,x("button",{onClick:V,className:F("cortex-widget__send-btn",!Q&&"cortex-widget__send-btn--empty",Q&&"cortex-widget__send-btn--ready"),disabled:!Q,children:x("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",className:"cortex-widget__send-icon",children:x("path",{d:"M3 8h10M9 4l4 4-4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]})]})]})});import{jsx as E,jsxs as i,Fragment as c2}from"react/jsx-runtime";var r_="M13.5 7.6c0 2.4-2.5 4.4-5.5 4.4-.6 0-1.2-.08-1.7-.23L3 13l.8-2.3C3 9.8 2.5 8.7 2.5 7.6 2.5 5.2 5 3.2 8 3.2s5.5 2 5.5 4.4Z";function Z0(_){let{config:N,t:k,threads:$,selectedThread:L,deleteThread:Z}=H(),J=N.locale??"en";return i("div",{className:_.className,children:[i("div",{className:"cortex-widget__threads-header",children:[E("button",{type:"button",onClick:()=>_.onBackRequested(),"aria-label":k("translate_back"),className:"cortex-widget__back-btn",children:E("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"cortex-widget__back-icon",children:E("path",{d:"M10 3L5 8l5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),i("div",{children:[E("h2",{className:"cortex-widget__threads-title",children:k("translate_history")}),E("p",{className:"cortex-widget__threads-count",children:k($?.length===1?"translate_one_conversation":"translate_n_conversations",{count:$?.length??0})})]}),i("button",{onClick:()=>_.onNewChatRequested(),className:"cortex-widget__new-chat-btn",children:[E("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:E("path",{d:"M8 3v10M3 8h10",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),k("translate_new")]})]}),E("div",{className:"cortex-widget__threads-list",children:$===void 0?[1,2,3,4].map((X)=>i("div",{className:"cortex-widget__thread-skeleton",children:[E("div",{className:"cortex-skeleton cortex-widget__thread-skeleton-icon"}),E("div",{className:"cortex-widget__thread-skeleton-lines",children:E("div",{className:"cortex-skeleton cortex-widget__thread-skeleton-line",style:{width:`${40+X*12}%`}})})]},X)):i(c2,{children:[$.map((X)=>{let G=X.id===L?.id,W=V_(X.updatedAt,J);return i("button",{onClick:()=>_.onThreadSelected(X),className:F("cortex-widget__thread-item",G&&"cortex-widget__thread-item--active"),children:[E("div",{className:F("cortex-widget__thread-icon",G&&"cortex-widget__thread-icon--active"),children:E("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:E("path",{d:r_,stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})}),i("div",{className:"cortex-widget__thread-info",children:[i("div",{className:"cortex-widget__thread-title-row",children:[E("p",{className:F("cortex-widget__thread-title",G&&"cortex-widget__thread-title--active"),children:X.title??k("translate_untitled")}),X.isRunning&&i("span",{className:F("cortex-widget__thread-running",G&&"cortex-widget__thread-running--active"),children:[E("span",{className:"cortex-widget__thread-running-dot"}),k("translate_running")]})]}),W&&E("p",{className:"cortex-widget__thread-time",children:W})]}),E("span",{role:"button",tabIndex:0,onClick:(K)=>{K.stopPropagation(),Z(X.id)},onKeyDown:(K)=>{if(K.key!=="Enter"&&K.key!==" ")return;K.preventDefault(),K.stopPropagation(),Z(X.id)},className:F("cortex-widget__thread-delete",G&&"cortex-widget__thread-delete--active"),children:E("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:E("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})})}),E("svg",{className:F("cortex-widget__thread-arrow",G&&"cortex-widget__thread-arrow--active"),width:"10",height:"10",viewBox:"0 0 16 16",fill:"none",children:E("path",{d:"M6 4l4 4-4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]},X.id)}),!$.length&&i("div",{className:"cortex-widget__threads-empty",children:[E("div",{className:"cortex-widget__threads-empty-icon",children:E("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"none",className:"cortex-widget__threads-empty-svg",children:E("path",{d:r_,stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})}),E("p",{className:"cortex-widget__threads-empty-title",children:k("translate_no_threads_yet")}),E("p",{className:"cortex-widget__threads-empty-subtitle",children:k("translate_start_a_new_conversation")}),E("button",{onClick:()=>_.onNewChatRequested(),className:"cortex-widget__new-chat-btn cortex-widget__new-chat-btn--empty-state",children:k("translate_new_chat")})]})]})})]})}import{jsx as a,jsxs as G0}from"react/jsx-runtime";function J0(_){let{config:N,t:k,threads:$,send:L,capabilities:Z}=H(),J=Z?.messages===!1,X=Z!==void 0,G=N.locale??"en",W=q_(N.suggestions,G);return G0("div",{className:"cortex-widget__landing",children:[a("div",{className:"cortex-widget__landing-icon",children:a("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"none",children:a("path",{d:r_,stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})}),a("p",{className:"cortex-widget__landing-greeting",children:q_(N.greeting,G)??k("translate_greeting")}),X&&!J&&!!W?.length&&a("div",{className:"cortex-widget__landing-chips",children:W.map((K,y)=>a("button",{type:"button",onClick:()=>void L(K),className:"cortex-widget__landing-chip",children:K},y))}),J?a("p",{className:"cortex-widget__messages-disabled",children:k("translate_messages_disabled")}):X?a(h_,{}):null,!!$?.length&&a("div",{className:"cortex-widget__landing-recent",children:$.slice(0,2).map((K)=>{let y=V_(K.updatedAt,G);return G0("button",{type:"button",onClick:()=>_.onThreadSelected(K),className:"cortex-widget__landing-recent-item",children:[a("p",{className:"cortex-widget__landing-recent-title",children:K.title??k("translate_untitled")}),y&&a("p",{className:"cortex-widget__landing-recent-time",children:y})]},K.id)})})]})}import{useEffect as a_,useRef as t_,useState as e2}from"react";import{jsx as x_,jsxs as X0}from"react/jsx-runtime";function V0(){let{t:_}=H();return X0("div",{className:"cortex-aborted-flag",children:[x_("span",{className:"cortex-aborted-flag__line"}),X0("span",{className:"cortex-aborted-flag__label",children:[x_("svg",{className:"cortex-aborted-flag__icon",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:x_("path",{d:"M6 1.5v5M6 8.75v.5",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})}),_("translate_aborted")]}),x_("span",{className:"cortex-aborted-flag__line"})]})}import{jsx as D_,jsxs as W0}from"react/jsx-runtime";function K0(_){let{api:N,t:k}=H();async function $(L){let{blob:Z,name:J}=await N.downloadAttachment(L);w1(Z,J)}return D_("div",{className:"cortex-message-attachments",children:_.attachments.map((L)=>W0("button",{type:"button",onClick:()=>void $(L.id),className:"cortex-message-attachment","aria-label":`${k("translate_download")}: ${L.filename}`,children:[W0("svg",{viewBox:"0 0 16 16",className:"cortex-message-attachment__icon",fill:"none",children:[D_("path",{d:"M4 1.5h5.172a2 2 0 0 1 1.414.586l2.328 2.328a2 2 0 0 1 .586 1.414V12.5a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2Z",stroke:"currentColor",strokeWidth:"1.25"}),D_("path",{d:"M9.5 1.5v2a2 2 0 0 0 2 2h2",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round"})]}),D_("span",{className:"cortex-message-attachment__name",children:L.filename}),D_("svg",{viewBox:"0 0 16 16",className:"cortex-message-attachment__dl-icon",fill:"none",children:D_("path",{d:"M8 3v7m0 0L5.5 7.5M8 10l2.5-2.5M3 13h10",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]},L.id))})}import{useRef as p2,useState as v_}from"react";import{useRef as C2,useState as n2}from"react";import{jsx as H_,jsxs as g2}from"react/jsx-runtime";function k_({value:_,className:N}){let[k,$]=n2(!1),L=C2(null);async function Z(J){J.stopPropagation(),J.preventDefault();try{if(await navigator.clipboard.writeText(_),$(!0),L.current)clearTimeout(L.current);L.current=setTimeout(()=>$(!1),1500)}catch{}}return H_("span",{className:F("cortex-copy-btn",N),children:H_("button",{className:F("cortex-copy-btn__button",k&&"cortex-copy-btn__button--copied"),onClick:(J)=>void Z(J),"aria-label":k?"Copied":"Copy to clipboard",type:"button",children:k?H_("svg",{className:"cortex-copy-btn__icon cortex-copy-btn__icon--check",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",children:H_("path",{d:"M5 13l4 4L19 7",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"})}):g2("svg",{className:"cortex-copy-btn__icon",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",children:[H_("rect",{x:"9",y:"9",width:"12",height:"12",rx:"2",stroke:"currentColor",strokeWidth:"2"}),H_("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]})})})}import{useMemo as f2,useState as T2}from"react";import{jsx as h,jsxs as K_,Fragment as d_}from"react/jsx-runtime";function __({data:_,expandDepth:N=1,className:k}){let $=f2(()=>F_(_),[_]),[L,Z]=T2({});function J(G,W){return L[G]??W>=N}function X(G,W){Z((K)=>({...K,[G]:!J(G,W)}))}return h("div",{className:F("cortex-json-tree",k),children:h(Y0,{value:$,path:"$",depth:0,isCollapsed:J,toggle:X})})}function Y0({value:_,path:N,depth:k,isCollapsed:$,toggle:L}){let Z=E1(_,N);if(Z.kind==="primitive")return h("span",{className:Z.className,children:Z.text});if(Z.entries.length===0)return K_("span",{className:"jt-bracket",children:[Z.open,Z.close]});let J=$(N,k);function X(G){L(N,k),G.stopPropagation()}return K_(d_,{children:[K_("span",{className:"jt-toggle",onClick:X,role:"button",children:[h("span",{className:F("jt-arrow",J&&"jt-arrow--collapsed"),children:"▾"}),h("span",{className:"jt-bracket",children:Z.open})]}),J?K_(d_,{children:[h("span",{className:"jt-collapsed-hint",onClick:X,role:"button",children:Z.summary}),h("span",{className:"jt-bracket",children:Z.close})]}):K_(d_,{children:[h("div",{className:"jt-indent",children:Z.entries.map((G,W)=>K_("div",{className:"jt-line",children:[G.key!==null&&K_(d_,{children:[h("span",{className:"jt-key",children:`"${G.key}"`}),h("span",{className:"jt-colon",children:": "})]}),h(Y0,{value:G.value,path:G.path,depth:k+1,isCollapsed:$,toggle:L}),W<Z.entries.length-1&&h("span",{className:"jt-comma",children:","})]},G.path))}),h("span",{className:"jt-bracket",children:Z.close})]})]})}function b(_){return _.toLocaleString("en-US")}import{jsx as B_,jsxs as y_}from"react/jsx-runtime";function Q0({usage:_}){let{t:N}=H();return y_("div",{className:"cortex-llm-inspector__usage-rows",children:[y_("div",{className:"cortex-llm-inspector__usage-row",children:[B_("span",{className:"cortex-llm-inspector__usage-lbl",children:N("translate_input")}),B_("span",{className:"cortex-llm-inspector__usage-val",children:b(_.input.total)}),y_("span",{className:"cortex-llm-inspector__usage-detail",children:[N("translate_fresh")," ",b(_.input.noCache)," · ",N("translate_read")," ",b(_.input.cacheRead)," · ",N("translate_write")," ",b(_.input.cacheWrite)]})]}),y_("div",{className:"cortex-llm-inspector__usage-row",children:[B_("span",{className:"cortex-llm-inspector__usage-lbl",children:N("translate_output")}),B_("span",{className:"cortex-llm-inspector__usage-val",children:b(_.output.total)}),y_("span",{className:"cortex-llm-inspector__usage-detail",children:[N("translate_text")," ",b(_.output.text)," · ",N("translate_reasoning")," ",b(_.output.reasoning)]})]}),y_("div",{className:"cortex-llm-inspector__usage-row cortex-llm-inspector__usage-row--total",children:[B_("span",{className:"cortex-llm-inspector__usage-lbl",children:N("translate_total")}),B_("span",{className:"cortex-llm-inspector__usage-val",children:b(_.total)})]})]})}import{jsx as I1,jsxs as i_}from"react/jsx-runtime";function z0({usage:_}){let N=w_(_);return I1("span",{children:i_("span",{className:"cortex-llm-inspector__step-metrics",children:[i_("span",{className:"cortex-llm-inspector__metric",children:[I1("span",{className:"cortex-llm-inspector__dot cortex-llm-inspector__dot--input"}),b(_.input.total)]}),i_("span",{className:"cortex-llm-inspector__metric",children:[I1("span",{className:"cortex-llm-inspector__dot cortex-llm-inspector__dot--output"}),b(_.output.total)]}),N!==null?i_("span",{className:"cortex-llm-inspector__cache-pct",children:[N,"%"]}):null]})})}import{jsx as I,jsxs as $_}from"react/jsx-runtime";function F0({messageId:_}){let{t:N,api:k}=H(),[$,L]=v_(!1),[Z,J]=v_(!1),[X,G]=v_([]),[W,K]=v_(null),[y,q]=v_({}),B=p2(!1);async function w(){if(!B.current){J(!0);try{G(await k.listLlmRequests(_))}finally{J(!1),B.current=!0}}L((V)=>!V)}function U(V){K((z)=>z===V?null:V)}function S(V){return y[V]??"prompt"}function Q(V,z){q((T)=>({...T,[V]:z}))}return $_("div",{className:F("cortex-llm-inspector",$&&"cortex-llm-inspector--open"),children:[$_("button",{className:"cortex-llm-inspector__trigger",onClick:()=>void w(),children:[I("svg",{className:"cortex-llm-inspector__icon",width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:I("path",{d:"M6 2a4 4 0 1 0 0 8 4 4 0 0 0 0-8ZM0 6a6 6 0 1 1 10.89 3.477l4.817 4.816a1 1 0 0 1-1.414 1.414l-4.816-4.816A6 6 0 0 1 0 6Z",fill:"currentColor"})}),I("span",{children:N("translate_inspect_llm_requests")}),Z?I("span",{className:"cortex-llm-inspector__loading",children:N("translate_loading")}):X.length>0?I("span",{className:"cortex-llm-inspector__badge",children:X.length}):null,I("svg",{className:"cortex-llm-inspector__chevron",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:I("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round",strokeLinejoin:"round"})})]}),I("div",{className:"cortex-llm-inspector__panel-wrapper",children:I("div",{className:"cortex-llm-inspector__panel-inner",children:$_("div",{className:"cortex-llm-inspector__panel",children:[X.length===0&&!Z?I("div",{className:"cortex-llm-inspector__empty",children:N("translate_no_llm_requests")}):null,X.map((V,z)=>$_("div",{className:F("cortex-llm-inspector__step",W===V.id&&"cortex-llm-inspector__step--expanded"),children:[$_("button",{className:"cortex-llm-inspector__step-header",onClick:()=>U(V.id),children:[I("span",{className:"cortex-llm-inspector__step-label",children:N("translate_step_n",{number:z+1})}),V.tokenUsage?I(z0,{usage:V.tokenUsage}):null,I("svg",{className:"cortex-llm-inspector__step-chevron",width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",children:I("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round",strokeLinejoin:"round"})})]}),I("div",{className:"cortex-llm-inspector__step-body-wrapper",children:I("div",{className:"cortex-llm-inspector__step-body-inner",children:$_("div",{className:"cortex-llm-inspector__step-body",children:[V.tokenUsage?I(Q0,{usage:V.tokenUsage}):null,$_("div",{className:"cortex-llm-inspector__tabs",children:[I("button",{className:F("cortex-llm-inspector__tab",S(V.id)==="prompt"&&"cortex-llm-inspector__tab--active"),onClick:()=>Q(V.id,"prompt"),children:N("translate_request")}),I("button",{className:F("cortex-llm-inspector__tab",S(V.id)==="response"&&"cortex-llm-inspector__tab--active"),onClick:()=>Q(V.id,"response"),children:N("translate_response")})]}),$_("div",{className:"cortex-llm-inspector__json-pane",children:[I(k_,{className:"cortex-llm-inspector__json-copy",value:S(V.id)==="prompt"?j_(V.prompt):j_(V.output)}),S(V.id)==="prompt"?I(__,{data:o_(V.prompt),expandDepth:2}):I(__,{data:o_(V.output),expandDepth:2})]})]})})})]},V.id))]})})})]})}import{useEffect as m2,useRef as u2,useState as q0}from"react";import{jsx as I_,jsxs as D0}from"react/jsx-runtime";function O_({labels:_,className:N}){let{t:k}=H(),[$,L]=q0(0),[Z,J]=q0("idle"),X=u2(_.length);return X.current=_.length,m2(()=>{let G,W;function K(){G=setTimeout(()=>{J("exiting"),G=setTimeout(()=>{L((y)=>(y+1)%X.current),J("enter-start"),W=requestAnimationFrame(()=>{J("entering"),G=setTimeout(()=>{J("idle"),K()},300)})},300)},2000)}return K(),()=>{if(G)clearTimeout(G);if(W)cancelAnimationFrame(W)}},[]),D0("div",{className:F("cortex-subtle-activity",N),children:[D0("div",{className:"cortex-subtle-activity__dots",children:[I_("span",{className:"cortex-subtle-activity__dot"}),I_("span",{className:"cortex-subtle-activity__dot cortex-subtle-activity__dot--d1"}),I_("span",{className:"cortex-subtle-activity__dot cortex-subtle-activity__dot--d2"})]}),I_("div",{className:"cortex-subtle-activity__label-mask",children:I_("span",{className:F("cortex-subtle-activity__label",`cortex-subtle-activity__label--${Z}`),children:k(_[$])})})]})}import{jsx as H0}from"react/jsx-runtime";var l2=X_("reasoning");function B0(){return H0("div",{className:"cortex-reasoning-animated",children:H0(O_,{labels:l2})})}import{jsx as d,jsxs as S_}from"react/jsx-runtime";function y0(_){let{reasoningPart:N,streaming:k=!1}=_,{t:$}=H();return S_("details",{className:"cortex-reasoning-details",children:[S_("summary",{className:"cortex-reasoning-details__summary",children:[S_("div",{className:"cortex-reasoning-details__header",children:[d("span",{className:"cortex-reasoning-details__icon",children:S_("svg",{width:"14",height:"14",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true",children:[d("path",{d:"M10 2C6.686 2 4 4.686 4 8c0 1.655.672 3.154 1.757 4.243.362.363.576.858.576 1.371V14.5a1 1 0 0 0 1 1h5.334a1 1 0 0 0 1-1v-.886c0-.513.214-1.008.576-1.371A5.978 5.978 0 0 0 16 8c0-3.314-2.686-6-6-6Z",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"}),d("path",{d:"M7.5 17.5h5M8.5 8a2 2 0 0 1 2-2",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})]})}),d("div",{className:"cortex-reasoning-details__title-group",children:S_("div",{className:"cortex-reasoning-details__title-row",children:[d("div",{className:"cortex-reasoning-details__title",children:$("translate_reasoning")}),d("span",{className:F("cortex-reasoning-details__badge",k?"cortex-reasoning-details__badge--streaming":"cortex-reasoning-details__badge--done"),children:k?"Streaming":"Done"})]})})]}),d("span",{className:"cortex-reasoning-details__chevron","aria-hidden":"true",children:d("svg",{width:"14",height:"14",viewBox:"0 0 20 20",fill:"none",children:d("path",{d:"m5.75 8.25 4.25 4.25 4.25-4.25",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),d("div",{className:"cortex-reasoning-details__body",children:d("div",{className:"cortex-reasoning-details__content",children:d("pre",{className:"cortex-reasoning-details__pre",children:N.content.trim()?N.content:"No reasoning provided."})})})]})}import{useEffect as O0,useRef as S1,useState as o2}from"react";import{jsx as U0}from"react/jsx-runtime";function M0(_){let{role:N,textPart:k,streaming:$=!1}=_,L=N==="assistant"&&$?"":k.content,[Z,J]=o2(L),X=S1(L),G=S1(null),W=S1(!0);return O0(()=>{function K(y){X.current=y,J(y)}if(N!=="assistant"||!$){G.current?.destroy(),G.current=null,K(k.content),W.current=!1;return}if(!G.current)G.current=new W_(K),G.current.seed(X.current);if(W.current){W.current=!1,G.current.seed(k.content);return}G.current.update(k.content,!1)},[N,$,k]),O0(()=>()=>{G.current?.destroy(),G.current=null},[]),U0("div",{className:F("cortex-text-part",N==="assistant"&&"cortex-text-part--assistant",N==="user"&&"cortex-text-part--user"),children:U0("div",{className:F("cortex-text-bubble",N==="assistant"&&"cortex-text-bubble--assistant",N==="user"&&"cortex-text-bubble--user"),dangerouslySetInnerHTML:{__html:U1(Z)}})})}import{jsx as o,jsxs as L_}from"react/jsx-runtime";function A0({toolCallPart:_}){let{t:N}=H(),{state:k,approval:$}=_,L=_.output,Z=Z1(_);function J(){if(k==="complete")return L_("div",{className:"dbg-tool__section dbg-tool__section--success",children:[L_("div",{className:"dbg-tool__section-bar",children:[o("span",{className:"dbg-tool__section-label dbg-tool__section-label--success",children:N("translate_output")}),o("span",{className:"dbg-tool__section-lang",children:"json"}),o(k_,{value:Z})]}),o("div",{dir:"ltr",className:"dbg-tool__tree",children:o(__,{data:L,expandDepth:2})})]});if(k==="error")return L_("div",{className:"dbg-tool__section dbg-tool__section--error",children:[L_("div",{className:"dbg-tool__section-bar",children:[o("span",{className:"dbg-tool__section-label dbg-tool__section-label--error",children:N("translate_error")}),o(k_,{value:Z})]}),o("pre",{dir:"ltr",className:"dbg-tool__error-pre",children:Z})]});if(k==="approval-requested")return L_("div",{className:"dbg-tool__section dbg-tool__section--approval",children:[L_("div",{className:"dbg-tool__section-bar",children:[o("span",{className:"dbg-tool__section-label dbg-tool__section-label--approval",children:N("translate_approval_requested")}),o("span",{className:"dbg-tool__section-lang",children:$?.id})]}),o("div",{className:"dbg-tool__message dbg-tool__message--approval",children:N("translate_waiting_for_approval")})]});if(k==="approval-responded")return L_("div",{className:"dbg-tool__section dbg-tool__section--approval",children:[L_("div",{className:"dbg-tool__section-bar",children:[o("span",{className:"dbg-tool__section-label dbg-tool__section-label--approval",children:N("translate_approval_response")}),o("span",{className:"dbg-tool__section-lang",children:$?.id})]}),o("div",{className:"dbg-tool__message dbg-tool__message--approval",children:N($?.approved?"translate_tool_approved":"translate_tool_response_received")})]});return null}return o("div",{children:J()})}import{jsx as E0,jsxs as j2}from"react/jsx-runtime";function P0({toolCallPart:_}){let{t:N}=H(),k=L1(_);return E0("span",{children:j2("span",{className:F("dbg-tool__state",k.modifier&&`dbg-tool__state--${k.modifier}`),children:[k.pulse&&E0("span",{className:F("dbg-tool__pulse",k.pulse==="violet"&&"dbg-tool__pulse--violet")}),N(k.labelKey)]})})}import{jsx as f,jsxs as N_}from"react/jsx-runtime";function w0({toolCallPart:_}){let{t:N}=H(),{codeSnippets:k,remainingInput:$,remainingInputText:L}=G1(_.input);return N_("details",{className:"dbg-tool","data-state":_.state,children:[f("summary",{className:"dbg-tool__summary",children:N_("div",{className:"dbg-tool__header",children:[N_("div",{className:"dbg-tool__meta",children:[f("div",{className:"dbg-tool__title-row",children:f("span",{className:"dbg-tool__name",title:_.name,children:_.name})}),f("div",{className:"dbg-tool__id-row",children:f("span",{className:"dbg-tool__id",children:_.id})})]}),N_("div",{className:"dbg-tool__actions",children:[f(P0,{toolCallPart:_}),f("svg",{className:"dbg-tool__chevron",width:"14",height:"14",viewBox:"0 0 20 20",fill:"none",children:f("path",{d:"m5.75 8.25 4.25 4.25 4.25-4.25",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]})]})}),N_("div",{className:"dbg-tool__body",children:[k.map((Z)=>N_("div",{className:"dbg-tool__section",children:[N_("div",{className:"dbg-tool__section-bar",children:[f("span",{className:"dbg-tool__section-label",children:Z.key}),f("span",{className:"dbg-tool__section-lang",children:Z.lang}),f(k_,{value:Z.value})]}),f("pre",{dir:"ltr",className:"dbg-tool__pre",children:f("code",{className:"hljs",dangerouslySetInnerHTML:{__html:M1(Z.value,Z.lang)}})})]},Z.key)),!!$&&N_("div",{className:"dbg-tool__section",children:[N_("div",{className:"dbg-tool__section-bar",children:[f("span",{className:"dbg-tool__section-label",children:N("translate_input")}),f("span",{className:"dbg-tool__section-lang",children:"json"}),f(k_,{value:L})]}),f("div",{dir:"ltr",className:"dbg-tool__tree",children:f(__,{data:$,expandDepth:2})})]}),f(A0,{toolCallPart:_})]})]})}import{useEffect as b0,useRef as c1,useState as R0}from"react";import{jsx as C,jsxs as c_}from"react/jsx-runtime";function v0({message:_,toolCallPart:N}){let{config:k,addToolResult:$,isAgentWorking:L}=H(),Z=k.toolComponents?.[N.name];if(Z)return C("div",{className:"cortex-tool-call-animated",children:C(Z,{toolCallPart:N,message:_,setOutput:(J)=>void $(N.id,N.name,J)})});if(N.state==="input-complete"&&!L)return C("div",{className:"cortex-tool-call-animated",children:C(h2,{toolCallPart:N})});return C("div",{className:"cortex-tool-call-animated",children:C(I0,{toolCallPart:N})})}function h2({toolCallPart:_}){let{api:N,t:k,addToolResult:$,selectedThread:L,config:Z}=H(),J=L?.id,[X,G]=R0({phase:"initiating"}),[W]=R0(Z.trustSameOriginEmbeds),K=c1(void 0),y=c1({api:N,addToolResult:$,toolName:_.name});if(y.current={api:N,addToolResult:$,toolName:_.name},b0(()=>{if(!J)return;let B=H1({initiate:()=>y.current.api.initiateToolCall(J,_.id),onState:G,submit:(U)=>y.current.addToolResult(_.id,y.current.toolName,U)});K.current=B,B.start();let w=(U)=>B.handleMessage(U);return window.addEventListener("message",w),()=>{if(window.removeEventListener("message",w),B.dispose(),K.current===B)K.current=void 0}},[_.id,J]),!J||X.phase==="unavailable"||X.phase==="settling")return C(I0,{toolCallPart:_});let q=c_("div",{className:"cortex-client-tool-embed",children:[c_("div",{className:"cortex-client-tool-embed__bar",children:[C("span",{children:k("translate_client_tool_title")}),C("button",{type:"button",className:"cortex-client-tool-embed__cancel",onClick:()=>K.current?.cancel(),children:k("translate_client_tool_cancel")})]}),X.phase==="embedded"?C("iframe",{className:"cortex-client-tool-embed__frame",src:X.embedUrl,sandbox:F1(X.embedUrl,window.location.origin,W),title:k("translate_client_tool_title"),ref:(B)=>K.current?.setSource(B?.contentWindow),onLoad:(B)=>{if(!q1(X.embedUrl,window.location.origin,W)&&D1(B.currentTarget,window.location.origin))K.current?.terminate()}}):X.phase==="error"?c_("div",{className:"cortex-client-tool-embed__status",children:[C("span",{children:k("translate_client_tool_failed")}),C("button",{type:"button",className:"cortex-client-tool-embed__retry",onClick:()=>void K.current?.start(),children:k("translate_client_tool_retry")})]}):C("div",{className:"cortex-client-tool-embed__status",children:k("translate_client_tool_loading")})]});return X.phase==="embedded"&&X.surface==="modal"?C(r2,{label:k("translate_client_tool_title"),onCancel:()=>K.current?.cancel(),children:q}):q}function r2({label:_,onCancel:N,children:k}){let $=c1(null);return b0(()=>{let L=$.current;return L?.showModal(),()=>L?.close()},[]),C("dialog",{ref:$,className:"cortex-client-tool-embed-dialog","aria-label":_,onCancel:(L)=>{L.preventDefault(),N()},children:k})}function I0({toolCallPart:_}){let{t:N}=H(),{state:k,active:$,titleKey:L}=J1(_);return c_("div",{className:"cortex-tool-pill",children:[c_("span",{className:"cortex-tool-pill__icon",children:[C("span",{className:F("cortex-tool-pill__spinner",$&&"cortex-tool-pill__spinner--visible")}),C("svg",{className:F("cortex-tool-pill__svg","cortex-tool-pill__svg--check",k==="complete"&&"cortex-tool-pill__svg--visible"),viewBox:"0 0 20 20",fill:"none",children:C("path",{d:"M5.5 10.5 L8.5 13.5 L14.5 7",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),C("svg",{className:F("cortex-tool-pill__svg","cortex-tool-pill__svg--error",k==="error"&&"cortex-tool-pill__svg--visible"),viewBox:"0 0 20 20",fill:"none",children:C("path",{d:"M6.5 6.5 L13.5 13.5 M13.5 6.5 L6.5 13.5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})]}),C("span",{className:F("cortex-tool-pill__title",k==="error"&&"cortex-tool-pill__title--error"),children:N(L)})]})}import{jsx as d2}from"react/jsx-runtime";var x2=X_("code");function S0(){return d2(O_,{labels:x2})}import{jsx as a2}from"react/jsx-runtime";var i2=X_("graph");function c0(){return a2(O_,{labels:i2})}import{jsx as C1}from"react/jsx-runtime";function C0({message:_,toolCallPart:N}){if(!z_(N.state)){if(N.name==="queryGraph")return C1(c0,{});if(N.name==="executeCode")return C1(S0,{})}return C1(v0,{toolCallPart:N,message:_})}import{jsx as U_,jsxs as t2}from"react/jsx-runtime";function n0(_){let{message:N,part:k,debugMode:$=!1,animate:L=!1,streaming:Z=!1}=_,{t:J}=H();function X(){switch(k.type){case"text":return U_(M0,{textPart:k,role:N.role,streaming:Z});case"thinking":return $?U_(y0,{reasoningPart:k,streaming:Z}):U_(B0,{});case"tool-call":return $?U_(w0,{toolCallPart:k}):U_(C0,{toolCallPart:k,message:N});default:return t2("p",{className:"cortex-unhandled-type",children:[J("translate_unhandled_type")," ",k.type]})}}return U_("div",{className:F("cortex-message-part",L&&"cortex-message-part--animated"),children:X()})}import{useState as s2}from"react";import{jsx as P,jsxs as n}from"react/jsx-runtime";function g0({usage:_,modelId:N}){let{t:k}=H(),[$,L]=s2(!1),Z=w_(_)??0;return n("div",{className:F("cortex-token-usage",$&&"cortex-token-usage--expanded"),children:[n("button",{className:"cortex-token-usage__summary",onClick:()=>L((J)=>!J),children:[n("span",{className:"cortex-token-usage__total",children:[P("span",{className:"cortex-token-usage__total-number",children:b(_.total)}),P("span",{className:"cortex-token-usage__total-label",children:k("translate_tokens")})]}),N?P("span",{className:"cortex-token-usage__model",children:N}):null,n("span",{className:"cortex-token-usage__pills",children:[n("span",{className:"cortex-token-usage__pill",children:[P("span",{className:"cortex-token-usage__dot cortex-token-usage__dot--input"}),b(_.input.total)]}),n("span",{className:"cortex-token-usage__pill",children:[P("span",{className:"cortex-token-usage__dot cortex-token-usage__dot--output"}),b(_.output.total)]})]}),Z>0?n("span",{className:"cortex-token-usage__cache-badge",children:[Z,"%"]}):null,P("svg",{className:"cortex-token-usage__chevron",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:P("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round",strokeLinejoin:"round"})})]}),P("div",{className:"cortex-token-usage__details",children:P("div",{className:"cortex-token-usage__details-inner",children:n("div",{className:"cortex-token-usage__columns",children:[n("div",{className:"cortex-token-usage__col",children:[n("div",{className:"cortex-token-usage__col-header",children:[P("span",{className:"cortex-token-usage__dot cortex-token-usage__dot--input"}),P("span",{className:"cortex-token-usage__col-label",children:k("translate_input")}),P("span",{className:"cortex-token-usage__col-total",children:b(_.input.total)})]}),n("div",{className:"cortex-token-usage__rows",children:[_.input.noCache?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_fresh")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.input.noCache)})]}):null,_.input.cacheRead?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_cache_read")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.input.cacheRead)})]}):null,_.input.cacheWrite?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_cache_write")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.input.cacheWrite)})]}):null]}),Z>0?n("div",{className:"cortex-token-usage__cache-bar-row",children:[P("div",{className:"cortex-token-usage__cache-bar",children:P("div",{className:"cortex-token-usage__cache-fill",style:{width:`${Z}%`}})}),P("span",{className:"cortex-token-usage__cache-label",children:k("translate_n_percent_cached",{percent:Z})})]}):null]}),n("div",{className:"cortex-token-usage__col",children:[n("div",{className:"cortex-token-usage__col-header",children:[P("span",{className:"cortex-token-usage__dot cortex-token-usage__dot--output"}),P("span",{className:"cortex-token-usage__col-label",children:k("translate_output")}),P("span",{className:"cortex-token-usage__col-total",children:b(_.output.total)})]}),n("div",{className:"cortex-token-usage__rows",children:[_.output.text?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_text")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.output.text)})]}):null,_.output.reasoning?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_reasoning")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.output.reasoning)})]}):null]})]})]})})})]})}import{jsx as Y_,jsxs as n1}from"react/jsx-runtime";function f0({firing:_,debugMode:N=!1}){let{t:k,config:$}=H(),L=$.locale??"en";return n1("div",{className:N?"cortex-trigger-block cortex-trigger-block--debug":"cortex-trigger-block",children:[n1("div",{className:"cortex-trigger-block__head",children:[Y_("svg",{className:"cortex-trigger-block__icon",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:Y_("path",{d:"M6.75 1 2.5 6.75h3l-.25 4.25L9.5 5.25h-3z",fill:"currentColor"})}),N&&Y_("span",{children:k("translate_trigger_fired")}),Y_("span",{className:"cortex-trigger-block__name",children:_.name}),Y_("time",{className:"cortex-trigger-block__time",dateTime:_.firedAt,children:V_(_.firedAt,L)})]}),N&&n1("details",{className:"cortex-trigger-block__payload",children:[Y_("summary",{children:k("translate_trigger_payload")}),Y_(__,{data:_.payload,expandDepth:2})]})]})}import{jsx as Z_,jsxs as T0}from"react/jsx-runtime";function p0(_){let{message:N,debugMode:k=!1,animate:$=!1}=_,{messages:L,isAgentWorking:Z,messageMetadata:J}=H(),X=Z&&f_(L)?.id===N.id,G=N.role==="assistant",W=N.parts,K=W.filter((Q,V)=>{if(Q.type==="tool-result")return!1;return k||!X1(Q,V===W.length-1,X)}),y=X?K.length-1:-1,q=J.get(N.id),B=Boolean(q?.isAborted),w=q?.tokenUsage,U=N.role==="user"?q?.attachments??[]:[];if(q?.trigger)return Z_("div",{className:"cortex-message",children:Z_(f0,{firing:q.trigger,debugMode:k})});let S=k&&!X&&(Boolean(w)||G);return Z_("div",{className:"cortex-message",children:K.length>0&&T0("div",{className:"cortex-message-parts",children:[K.map((Q,V)=>Z_(n0,{part:Q,message:N,debugMode:k,animate:$,streaming:V===y},V)),U.length>0&&Z_(K0,{attachments:U}),B&&Z_(V0,{}),S&&T0("div",{className:"cortex-message-debug-zone",children:[w&&Z_(g0,{usage:w,modelId:q?.modelId}),G&&Z_(F0,{messageId:N.id})]})]})})}import{jsx as g1}from"react/jsx-runtime";function m0(_){let{messages:N,selectedThread:k}=H(),$=t_(null),L=t_(!0),Z=t_(!0),J=t_(!1),[X,G]=e2(!1);function W(){let U=$.current;if(U)U.scrollTop=U.scrollHeight}function K(){if(J.current)return;J.current=!0,queueMicrotask(()=>{J.current=!1,W(),L.current=!1})}a_(()=>{let U=$.current;if(K(),G(!0),!U||typeof MutationObserver>"u")return;let S=new MutationObserver(()=>{if(!L.current&&!Z.current)return;K()});return S.observe(U,{childList:!0,subtree:!0,characterData:!0}),()=>S.disconnect()},[]);let y=k?.id;a_(()=>{G(!1),L.current=!0,queueMicrotask(()=>G(!0))},[y]);let q=N[N.length-1],B=q?.role==="user"?q.id:void 0;a_(()=>{if(B)L.current=!0},[B]),a_(()=>{if(!L.current&&!Z.current)return;K()},[N]);function w(){let U=$.current;if(!U)return;Z.current=U.scrollHeight-U.scrollTop-U.clientHeight<100}return g1("div",{className:_.className,children:g1("div",{ref:$,className:"cortex-message-list",onScroll:w,children:N.map((U)=>g1(p0,{message:U,debugMode:_.debugMode,animate:X},U.id))})})}import{jsx as O,jsxs as t}from"react/jsx-runtime";var T1={messages:[],isAgentWorking:!1,isLoadingMessages:!1,hasPendingToolCalls:!1,messageMetadata:new Map};function NN({config:_,className:N}){let k=G_(_);k.current=_;let[$,L]=Q_(),[Z,J]=Q_(),[X,G]=Q_(T1),[W,K]=Q_(!1),[y,q]=Q_(),[B,w]=Q_("chat"),[U,S]=Q_(!1),Q=G_(void 0),V=G_([]),z=G_(void 0),T=G_(null),v=f1(()=>$1(()=>k.current.transport),[]),p=f1(()=>{let Y=Z?.thread;if(!Y)return;return $?.find((A)=>A.id===Y.id)??Y},[$,Z]),u=G_(p);u.current=p;let M=G_(X);M.current=X;let D=j((Y)=>{G((A)=>({...A,...typeof Y==="function"?Y(A):Y}))},[]),g=j((Y,A)=>{L((R)=>{let l=R?.find((M_)=>M_.id===Y);return l?E_(R??[],{...l,isRunning:A}):R})},[]),c=j((Y,A)=>{if(u.current?.id===Y.id&&Q.current)return;let R=u.current;if(u.current=Y,G(T1),J({thread:Y,mode:A?.skipLoadingMessages?"skip":"load",epoch:0}),R&&R.id!==Y.id)k.current.hooks?.onThreadDeselected?.(R);k.current.hooks?.onThreadSelected?.(Y)},[]),m=j(()=>{let Y=u.current;if(!Y&&!Q.current)return;if(u.current=void 0,J(void 0),G(T1),Y)k.current.hooks?.onThreadDeselected?.(Y)},[]),s_=j((Y)=>{J((A)=>({thread:Y,mode:"reload",epoch:(A?.epoch??0)+1,initialMessages:M.current.messages}))},[]),C_=j((Y)=>{let A=u.current;if(A)return Promise.resolve(A.id);return z.current??=v.createThread(Y).then((R)=>{return z.current=void 0,L((l)=>E_(l??[],R)),c(R,{skipLoadingMessages:!0}),R.id},(R)=>{throw z.current=void 0,R}),z.current},[v,c]),r=f1(()=>Q1({api:v,ensureThread:()=>C_()}),[v,C_]),p1=_N(r.subscribe,r.getState,r.getState),l0=j(async(Y,A=[])=>{if(M.current.isAgentWorking||M.current.hasPendingToolCalls)return;let R=Q.current;if(R){await R.send(Y,A);return}V.current.push({prompt:Y,attachments:A});try{await C_(Y)}catch(l){throw V.current=[],l}},[C_]),o0=j(async()=>{await Q.current?.abort()},[]),j0=j((Y,A,R)=>Q.current?.addToolResult(Y,A,R)??Promise.resolve(),[]),h0=j(async(Y)=>{if(u.current?.id===Y)m();await v.deleteThread(Y),L((A)=>A?u_(A,Y):A)},[v,m]),r0=j(()=>{r.discardConsumed(),setTimeout(()=>T.current?.focusInput())},[r]),x0=j(()=>{r.restoreConsumed(u.current?.id)},[r]),e_=j(async()=>{let Y=m_(await v.listThreads());return L(Y),Y},[v]),m1=j((Y)=>{L((R)=>{let l=O1(R??[],Y);return R||l.length?l:R});let A=u.current?.id;switch(Y.type){case"thread:deleted":if(A===Y.payload.threadId)m();break;case"thread:run-started":if(A===Y.payload.thread.id)Q.current?.reattach(Y.payload.thread);break;case"thread:messages-updated":Q.current?.refreshMessages(Y.payload.threadId);break}},[m]);u0(()=>{e_();let Y=p_(v,q),A=!1,R=y1({wsUrl:()=>k.current.wsUrl,transport:{baseUrl:()=>{let l=k.current.transport.baseUrl;return typeof l==="string"?l:l()},getHeaders:()=>k.current.transport.getHeaders()},onEvent:m1,onOpen:()=>{if(!A){A=!0;return}Y(),q(void 0),Y=p_(v,q),e_().then((l)=>{let M_=u.current;if(!M_)return;Q.current?.reattach(l.find((e0)=>e0.id===M_.id)??M_)})}});return()=>{Y(),R.close()}},[v,m1,e_]);let _1=G_(void 0),N1=p?.id;u0(()=>{if(N1===_1.current)return;r.clear(_1.current),_1.current=N1},[N1,r]);let k1=_.locale??"en",J_=j((Y,A)=>A1(k1,Y,A),[k1]),d0=_.viewMode??"helper",i0={config:_,t:J_,api:v,debugMode:W,capabilities:y,threads:$,selectedThread:p,deleteThread:h0,...X,send:l0,abort:o0,addToolResult:j0,queue:{items:p1,...z1(p1),accept:r.accept,remove:r.remove,consumeReady:r.consumeReady}};function u1(Y){c(Y),w("chat"),S(!1)}function a0(){m(),w("chat"),S(!1)}function t0(){w("threads")}function s0(){w("chat")}return O(R1.Provider,{value:i0,children:t("div",{className:F("cortex-widget",N),"data-cortex-theme":_.theme,children:[t("div",{className:F("cortex-widget__container",d0==="full"&&"cortex-widget__container--full",U&&"cortex-widget__container--sidebar-open"),onDragOver:(Y)=>Y.preventDefault(),onDrop:(Y)=>Y.preventDefault(),children:[O(Z0,{className:F("cortex-widget__screen",B==="threads"&&"cortex-widget__screen--active",B!=="threads"&&"cortex-widget__screen--left"),onThreadSelected:u1,onNewChatRequested:a0,onBackRequested:s0}),t("div",{className:F("cortex-widget__screen",B==="chat"&&"cortex-widget__screen--active",B!=="chat"&&"cortex-widget__screen--right"),children:[t("div",{className:"cortex-widget__chat-header",children:[O("button",{onClick:()=>S((Y)=>!Y),className:"cortex-widget__sidebar-toggle-btn",children:O("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:O("path",{d:"M2.5 4h11M2.5 8h11M2.5 12h11",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})})}),O("div",{className:"cortex-widget__chat-title-wrap",children:O("p",{className:"cortex-widget__chat-title",children:p?.title??q_(_.agentName,k1)??J_("translate_new_chat")})}),_.showDebugButton&&O("button",{onClick:()=>K((Y)=>!Y),className:F("cortex-widget__debug-btn",W?"cortex-widget__debug-btn--on":"cortex-widget__debug-btn--off"),children:W?J_("translate_debug"):J_("translate_normal")}),O("button",{type:"button",onClick:t0,"aria-label":J_("translate_history"),className:"cortex-widget__history-btn",children:t("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[O("circle",{cx:"8",cy:"8",r:"5.75",stroke:"currentColor",strokeWidth:"1.3"}),O("path",{d:"M8 5v3l2 1.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})]})})]}),!p?O(J0,{onThreadSelected:u1}):X.isLoadingMessages&&!X.isAgentWorking?t("div",{className:"cortex-widget__messages-skeleton",children:[O("div",{className:"cortex-widget__msg-skel cortex-widget__msg-skel--user",children:t("div",{className:"cortex-widget__msg-skel-bubble cortex-widget__msg-skel-bubble--user",children:[O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"13rem"}}),O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"9rem"}})]})}),O("div",{className:"cortex-widget__msg-skel cortex-widget__msg-skel--assistant",children:t("div",{className:"cortex-widget__msg-skel-bubble cortex-widget__msg-skel-bubble--assistant",children:[O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"16rem"}}),O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"18rem"}}),O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"12rem"}})]})}),O("div",{className:"cortex-widget__msg-skel cortex-widget__msg-skel--user",children:O("div",{className:"cortex-widget__msg-skel-bubble cortex-widget__msg-skel-bubble--user",children:O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"11rem"}})})}),O("div",{className:"cortex-widget__msg-skel cortex-widget__msg-skel--assistant",children:t("div",{className:"cortex-widget__msg-skel-bubble cortex-widget__msg-skel-bubble--assistant",children:[O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"14rem"}}),O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"15rem"}})]})})]}):O(m0,{className:"cortex-widget__messages",debugMode:W}),X.isAgentWorking&&!X.hasPendingToolCalls&&t("div",{className:"cortex-widget__working",children:[t("div",{className:"cortex-widget__working-dots",children:[O("span",{className:"cortex-working-dot"}),O("span",{className:"cortex-working-dot"}),O("span",{className:"cortex-working-dot"})]}),O("span",{className:"cortex-widget__working-text",children:J_("translate_thinking")})]}),p&&!X.hasPendingToolCalls&&y!==void 0?y.messages===!1?O("p",{className:"cortex-widget__messages-disabled",children:J_("translate_messages_disabled")}):O(h_,{ref:T}):null]}),O("div",{className:"cortex-widget__sidebar-backdrop",onClick:()=>S(!1)})]}),Z&&O(k0,{thread:Z.thread,mode:Z.mode,initialMessages:Z.initialMessages,api:v,configRef:k,sessionRef:Q,pendingSendRef:V,patchUi:D,setRunning:g,remount:s_,onTurnFinished:r0,onSendFailed:x0},`${Z.thread.id}:${Z.epoch}`)]})})}export{NN as CortexChatWidget};
2
+ `)}]:[]}):[],$=_;if(N){let L=Object.fromEntries(Object.entries(N).filter(([Z])=>!Object.hasOwn(o1,Z)));$=Object.keys(L).length>0?L:null}return{codeSnippets:k,remainingInput:$,remainingInputText:$?JSON.stringify($,null,2):""}}var j1=10,$2={"awaiting-input":"starting","input-streaming":"starting","input-complete":"processing","approval-requested":"processing","approval-responded":"processing",complete:"complete",error:"error"};function L2(_){let N=0;for(let k=0;k<_.length;k++)N=N*31+_.charCodeAt(k)|0;return Math.abs(N)%j1}function J1(_){let N=$2[_.state]??"processing",k=_.name==="readAttachment"?"attachment":"tool",$=k==="tool"?`_${L2(_.id)}`:"";return{state:N,active:N==="starting"||N==="processing",titleKey:N==="error"?"translate_tool_error":`translate_${k}_${N==="complete"?"done":"status"}${$}`}}function X_(_){return Array.from({length:j1},(N,k)=>`translate_${_}_${k}`)}function X1(_,N,k){return _.type==="thinking"&&!(k&&N)}import{EventType as G2}from"@tanstack/ai";import{fetchServerSentEvents as d1}from"@tanstack/ai-client";var V1=["image/png","image/jpeg","image/webp","application/pdf"];var h1=5;function r1(_,N){if(!V1.some((k)=>k===_))return"type";if(N>10485760)return"size";return"ok"}var x1="clientToolAnswers";var Z2=new Set(["complete","error"]);function z_(_){return Z2.has(_)}function g_(_){return(f_(_)?.parts??[]).filter((k)=>k.type==="tool-call"&&!z_(k.state))}function f_(_){for(let N=_.length-1;N>=0;N-=1){let k=_[N];if(k?.role==="assistant")return k}return}function W1(_){let N=_.role==="trigger"?"user":_.role;return{id:_.id,role:N,parts:_.parts}}function i1(_){for(let N=_.length-1;N>=0;N-=1){let k=_[N],$="parts"in k&&k.parts.some((L)=>L.type==="tool-result");if(k.role==="user"||$)return _.slice(N,N+1)}return _.slice(-1)}function J2(_){let[N]=_;if(!N||N.role!=="assistant"||!("parts"in N))return null;if(!N.parts.some(($)=>$.type==="tool-result"))return null;let k=N.parts.flatMap(($)=>$.type==="tool-call"&&z_($.state)?[{toolCallId:$.id,output:$.output??null,state:$.state==="error"?"error":"complete"}]:[]);return k.length>0?k:null}function T_(_){return new Map(_.flatMap((N)=>N.metadata?[[N.id,N.metadata]]:[]))}function K1(_){let{api:N,thread:k}=_,$=async()=>({headers:await N.resolveHeaders()}),L=d1(()=>N.resolveUrl("/chat"),$),Z=function(G,W,K,y){let q=i1(G),B=J2(q);return B?L.connect([],{...W,[x1]:B},K,y):L.connect(q,W,K,y)},J=d1(()=>N.resolveUrl(`/chat/${k.id}/stream`),$),X=[];return{connect:Z,async*joinRun(G,W){yield{type:G2.MESSAGES_SNAPSHOT,timestamp:Date.now(),messages:X},yield*J.joinRun(G,W)},hydrate:async()=>{let G=await X2(_);return X=G.messages,G}}}async function X2(_){let{api:N,thread:k,mode:$}=_,L=k.isRunning?{runId:k.id}:null;if($==="skip")return{messages:[],activeRun:L,interrupts:null};if($==="load")_.setLoadingMessages?.(!0);try{let Z=await N.listMessages(k.id),J=Z.map(W1);return _.onHydrated?.(Z,J),{messages:J,activeRun:L,interrupts:null}}finally{_.setLoadingMessages?.(!1)}}async function Y1(_){try{let N=await _.api.listMessages(_.threadId);if(_.isStale?.())return;if(_.absorbMetadata(T_(N)),_.isStreaming())return;_.setMessages(N.map(W1))}catch{}}function A_(){if(typeof crypto.randomUUID==="function")return crypto.randomUUID();let _=crypto.getRandomValues(new Uint8Array(16));_[6]=_[6]&15|64,_[8]=_[8]&63|128;let N=Array.from(_,(k)=>k.toString(16).padStart(2,"0")).join("");return`${N.slice(0,8)}-${N.slice(8,12)}-${N.slice(12,16)}-${N.slice(16,20)}-${N.slice(20)}`}function Q1(_){let{api:N}=_,k=new Set,$=new Set,L=[],Z=[];function J(){return L}function X(Q){return k.add(Q),()=>{k.delete(Q)}}function G(Q){L=Q;for(let V of k)V()}function W(Q,V){G(L.map((z)=>z.localId===Q?{...z,...V}:z))}function K(Q){if($.delete(Q))return;W(Q,{status:"error"})}function y(Q){let V=[];for(let z of Q){let T=r1(z.type,z.size)!=="ok"||L.filter((p)=>p.status!=="error").length>=h1,v=A_();if(G([...L,{localId:v,filename:z.name,status:T?"error":"uploading"}]),!T)V.push({localId:v,file:z})}if(!V.length)return;_.ensureThread().then((z)=>{for(let{localId:T,file:v}of V){if($.delete(T))continue;W(T,{threadId:z}),N.uploadAttachment(z,v).then((p)=>{if($.delete(T)){N.deleteAttachment(p.id).catch(()=>{});return}W(T,{status:"ready",attachmentId:p.id,summary:p})},()=>K(T))}},()=>{for(let{localId:z}of V)K(z)})}function q(Q){let V=L.find((z)=>z.localId===Q);if(!V)return;if(V.status==="uploading"){$.add(Q),G(L.filter((z)=>z.localId!==Q));return}if(V.attachmentId){W(Q,{status:"deleting"}),N.deleteAttachment(V.attachmentId).then(()=>G(L.filter((z)=>z.localId!==Q)),()=>W(Q,{status:"error"}));return}G(L.filter((z)=>z.localId!==Q))}function B(Q){let V=[];for(let z of L){if(z.threadId!==void 0&&z.threadId!==Q){V.push(z);continue}if(z.status==="uploading")$.add(z.localId);else if(z.status==="ready"&&z.threadId===Q&&z.attachmentId)N.deleteAttachment(z.attachmentId).catch(()=>{})}G(V)}function w(){let Q=L.flatMap((V)=>V.status==="ready"&&V.summary?[{...V,status:"ready",summary:V.summary}]:[]);return G(L.filter((V)=>V.status!=="ready")),Z=Q,Q}function U(Q){let V=Z;if(Z=[],V.some((z)=>z.threadId!==Q))return;G([...V.map((z)=>({...z,status:"error"})),...L])}function S(){Z=[]}return{getState:J,subscribe:X,accept:y,remove:q,clear:B,consumeReady:w,restoreConsumed:U,discardConsumed:S}}function z1(_){return{uploading:_.some((N)=>N.status==="uploading"),busy:_.some((N)=>N.status==="uploading"||N.status==="deleting"),hasReady:_.some((N)=>N.status==="ready")}}var V2=["completed","cancelled","failed"];function a1(_,N,k){if(N!==k)return null;if(typeof _!=="object"||_===null)return null;let $=_;if($.type!=="cortex:client-tool")return null;let L=V2.find((J)=>J===$.status);if(!L)return null;let Z=$.reference;return{type:"cortex:client-tool",status:L,...typeof Z==="string"?{reference:Z}:{},...$.result!==void 0?{result:$.result}:{}}}function F1(_,N,k){try{return new URL(_).origin===N&&!k?"allow-scripts allow-forms allow-popups":"allow-scripts allow-forms allow-popups allow-same-origin"}catch{return"allow-scripts allow-forms allow-popups"}}function q1(_,N,k){try{return k===!0&&new URL(_).origin===N}catch{return!1}}function D1(_,N){try{return _.contentWindow?.location.origin===N}catch{return!1}}function H1(_){let N=!1,k=!1,$,L;function Z(G){if(!N)_.onState(G)}function J(){if(N)return;k=!1,Z({phase:"error"})}function X(G){if(N||k)return;k=!0,Z({phase:"settling"});try{let W=_.submit(G);if(W instanceof Promise)W.catch(J)}catch{J()}}return{async start(){Z({phase:"initiating"});try{let G=await _.initiate();if(!G.embed){Z({phase:"unavailable"});return}if(!/^https?:$/.test(new URL(G.embedUrl).protocol)){Z({phase:"error"});return}$=G.embedOrigin,Z({phase:"embedded",embedUrl:G.embedUrl,surface:G.surface,embedOrigin:G.embedOrigin})}catch(G){let W=G instanceof Error?G.message:"";Z({phase:/HTTP 404/.test(W)?"unavailable":"error"})}},setSource(G){if(G!==null&&G!==void 0)L=G},handleMessage(G){if(!$)return;if(L===void 0||G.source!==L)return;let W=a1(G.data,G.origin,$);if(!W)return;X({status:W.status,reference:W.reference,result:W.result})},cancel(){X({status:"cancelled"})},terminate(){if(N||k)return;$=void 0,L=void 0,Z({phase:"error"})},dispose(){N=!0}}}function B1(_){return Math.min(1000*2**(_-1),30000)}var W2=1e4;function y1(_){let N,k,$=0,L=!1;function Z(){let X=typeof _.wsUrl==="function"?_.wsUrl():_.wsUrl;if(X===!1)return;let G=K2(X,_.transport.baseUrl);n_(_.transport).then((W)=>{if(L)return;N=new WebSocket(Y2(G,W)),N.addEventListener("open",()=>{let K=N;setTimeout(()=>{if(N===K&&!L)$=0},W2),_.onOpen?.()}),N.addEventListener("message",(K)=>{let y=K.data;if(typeof y!=="string")return;let q;try{q=JSON.parse(y)}catch{return}_.onEvent(q)}),N.addEventListener("close",J)}).catch(J)}function J(){if(L||k)return;$+=1,k=setTimeout(()=>{k=void 0,Z()},B1($))}return Z(),{close(){L=!0,clearTimeout(k),N?.close()}}}function K2(_,N){if(_)return _;let k=typeof N==="string"?N:N(),$=new URL(k,window.location.origin);return $.protocol=$.protocol==="https:"?"wss:":"ws:",$.pathname=$.pathname.replace(/\/$/,"")+"/ws",$.toString()}function Y2(_,N){let k=N.Authorization??N.authorization;if(!k?.startsWith("Bearer "))return _;let $=new URL(_,window.location.origin);if($.searchParams.has("token"))return $.toString();return $.searchParams.set("token",k.slice(7)),$.toString()}function p_(_,N,k=B1){let $=!1,L,Z=0;function J(){_.getCapabilities().then((X)=>{if(!$)N(X)},()=>{if($)return;Z+=1,L=setTimeout(J,k(Z))})}return J(),function(){$=!0,clearTimeout(L)}}function m_(_){return[..._].sort((N,k)=>{let $=Date.parse(k.updatedAt)-Date.parse(N.updatedAt);if($!==0)return $;return Date.parse(k.createdAt)-Date.parse(N.createdAt)})}function E_(_,N){let k=[..._],$=k.findIndex((L)=>L.id===N.id);if($===-1)k.push(N);else k[$]={...k[$],...N};return m_(k)}function u_(_,N){return _.filter((k)=>k.id!==N)}function O1(_,N){switch(N.type){case"thread:deleted":return u_(_,N.payload.threadId);case"thread:created":case"thread:title-updated":case"thread:run-started":case"thread:run-finished":case"thread:messages-updated":return E_(_,N.payload.thread);default:return _}}import{marked as Q2}from"marked";import z2 from"dompurify";function U1(_){if(!_)return"";let N=Q2.parse(_,{async:!1});return N=N.replace(/<table>/g,'<div style="overflow-x:auto"><table style="width:auto">').replace(/<\/table>/g,"</table></div>").replace(/<(t[hd])([\s>])/g,'<$1 style="padding:0.5rem 1rem"$2'),z2.sanitize(N)}import P_ from"highlight.js/lib/core";import F2 from"highlight.js/lib/languages/javascript";import q2 from"highlight.js/lib/languages/json";import D2 from"highlight.js/lib/languages/sql";var t1=!1;function H2(){if(t1)return;t1=!0,P_.registerLanguage("javascript",F2),P_.registerLanguage("json",q2),P_.registerLanguage("cypher",D2)}function M1(_,N){if(!_)return"";return H2(),P_.getLanguage(N)?P_.highlight(_,{language:N}).value:B2(_)}function B2(_){return _.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var s1={translate_new:"جديد",translate_history:"السجل",translate_back:"رجوع",translate_greeting:"بماذا يمكنني مساعدتك اليوم؟",translate_n_conversations:"{{count}} محادثات",translate_one_conversation:"محادثة واحدة",translate_no_threads_yet:"لا توجد محادثات بعد",translate_start_a_new_conversation:"ابدأ محادثة جديدة",translate_untitled:"بدون عنوان",translate_new_chat:"محادثة جديدة",translate_normal:"عادي",translate_debug:"تصحيح",translate_type_a_message:"اكتب رسالة...",translate_thinking:"جارٍ معالجة الطلب...",translate_reasoned:"تم الاستنتاج",translate_knowledge_graph_query:"استعلام الرسم البياني المعرفي",translate_javascript_code_execution:"تنفيذ كود جافاسكريبت",translate_completed:"مكتمل",translate_attach_files:"إرفاق ملفات",translate_drop_files_here:"أفلت ملفاتك هنا...",translate_remove_attachment:"إزالة المرفق",translate_attachment_rejected:"لا يمكن إرفاق هذا الملف",translate_attachment_caption:"من فضلك اطّلع على الملفات المرفقة.",translate_download:"تنزيل",translate_tool_status_0:"جارٍ جلب البيانات…",translate_tool_status_1:"جارٍ تحليل المعلومات…",translate_tool_status_2:"جارٍ معالجة الطلب…",translate_tool_status_3:"جارٍ تجميع النتائج…",translate_tool_status_4:"جارٍ تحضير الرد…",translate_tool_status_5:"جارٍ البحث…",translate_tool_status_6:"جارٍ فحص السجلات…",translate_tool_status_7:"جارٍ مراجعة التفاصيل…",translate_tool_status_8:"جارٍ إجراء الحسابات…",translate_tool_status_9:"جارٍ سحب المعلومات…",translate_tool_done_0:"تم جلب البيانات بنجاح",translate_tool_done_1:"تم التحليل بنجاح",translate_tool_done_2:"تمت معالجة الطلب بنجاح",translate_tool_done_3:"تم تجميع النتائج بنجاح",translate_tool_done_4:"تم تحضير الرد بنجاح",translate_tool_done_5:"تم البحث بنجاح",translate_tool_done_6:"تم فحص السجلات بنجاح",translate_tool_done_7:"تمت المراجعة بنجاح",translate_tool_done_8:"تمت الحسابات بنجاح",translate_tool_done_9:"تم استرجاع المعلومات بنجاح",translate_tool_error:"حدث خطأ",translate_attachment_status:"جارٍ قراءة الملف المرفق…",translate_attachment_done:"تمت قراءة الملف المرفق",translate_graph_0:"جارٍ استكشاف الروابط...",translate_graph_1:"جارٍ رسم الخريطة...",translate_graph_2:"جارٍ اكتشاف العلاقات...",translate_graph_3:"جارٍ تتبع الروابط...",translate_graph_4:"جارٍ التنقل في المعرفة...",translate_graph_5:"جارٍ كشف الرؤى...",translate_graph_6:"جارٍ ربط النقاط...",translate_graph_7:"جارٍ تتبع المسار...",translate_graph_8:"جارٍ تجميع الأجزاء...",translate_graph_9:"جارٍ بناء الصورة...",translate_code_0:"جارٍ حساب الأرقام...",translate_code_1:"جارٍ معالجة البيانات...",translate_code_2:"جارٍ تنفيذ طلبك...",translate_code_3:"جارٍ تحليل الأرقام...",translate_code_4:"جارٍ تجميع كل شيء...",translate_code_5:"جارٍ تحليل النتائج...",translate_code_6:"جارٍ العمل خلف الكواليس...",translate_code_7:"جارٍ ترتيب التفاصيل...",translate_code_8:"جارٍ تحضير إجابتك...",translate_code_9:"أوشك على الانتهاء...",translate_reasoning_0:"جارٍ التفكير...",translate_reasoning_1:"جارٍ دراسة الخيارات...",translate_reasoning_2:"جارٍ تقييم الاحتمالات...",translate_reasoning_3:"جارٍ التأمل في هذا...",translate_reasoning_4:"جارٍ إيجاد الحل...",translate_reasoning_5:"جارٍ ترتيب الأفكار...",translate_reasoning_6:"جارٍ التمعن في الأمر...",translate_reasoning_7:"جارٍ إيجاد أفضل طريقة...",translate_reasoning_8:"جارٍ تنظيم أفكاري...",translate_reasoning_9:"أوشك على الانتهاء...",translate_running:"قيد التنفيذ",translate_aborted:"تم الإلغاء",translate_input:"المدخلات",translate_output:"المخرجات",translate_calling:"جارٍ الاستدعاء",translate_input_ready:"المدخلات جاهزة",translate_needs_approval:"بحاجة إلى موافقة",translate_approved:"تمت الموافقة",translate_responded:"تم الرد",translate_error:"خطأ",translate_approval_requested:"طلب موافقة",translate_approval_response:"رد الموافقة",translate_waiting_for_approval:"في انتظار الموافقة لتنفيذ هذه الأداة.",translate_tool_approved:"تمت الموافقة.",translate_tool_response_received:"تم استلام الرد.",translate_tokens:"رمز",translate_fresh:"جديد",translate_cache_read:"قراءة من الذاكرة",translate_cache_write:"كتابة في الذاكرة",translate_n_percent_cached:"{{percent}}٪ مخزّن مؤقتًا",translate_text:"نص",translate_reasoning:"الاستنتاج",translate_read:"قراءة",translate_write:"كتابة",translate_total:"الإجمالي",translate_request:"الطلب",translate_response:"الرد",translate_step_n:"الخطوة {{number}}",translate_inspect_llm_requests:"فحص طلبات النموذج",translate_loading:"جارٍ التحميل…",translate_no_llm_requests:"لا توجد طلبات نموذج مسجّلة لهذه الرسالة.",translate_unhandled_type:"نوع غير مدعوم:",translate_client_tool_title:"أكمل هذه الخطوة للمتابعة",translate_client_tool_loading:"جارٍ تجهيز خطوة آمنة...",translate_client_tool_failed:"تعذّر تحميل هذه الخطوة",translate_client_tool_retry:"حاول مرة أخرى",translate_client_tool_cancel:"إلغاء",translate_trigger_fired:"تم التشغيل بواسطة",translate_trigger_payload:"الحمولة",translate_messages_disabled:"يعمل هذا الوكيل من مشغّلاته فقط."};var e1={translate_new:"New",translate_history:"History",translate_back:"Back",translate_greeting:"What can I help you with today?",translate_n_conversations:"{{count}} conversations",translate_one_conversation:"1 conversation",translate_no_threads_yet:"No threads yet",translate_start_a_new_conversation:"Start a new conversation",translate_untitled:"Untitled",translate_new_chat:"New Chat",translate_normal:"Normal",translate_debug:"Debug",translate_type_a_message:"Type a message...",translate_thinking:"Thinking things through...",translate_reasoned:"Reasoned",translate_knowledge_graph_query:"Knowledge Graph Query",translate_javascript_code_execution:"JavaScript Code Execution",translate_completed:"Completed",translate_attach_files:"Attach files",translate_drop_files_here:"Drop your files here...",translate_remove_attachment:"Remove attachment",translate_attachment_rejected:"This file cannot be attached",translate_attachment_caption:"Please take a look at the attached files.",translate_download:"Download",translate_tool_status_0:"Fetching data...",translate_tool_status_1:"Analyzing information...",translate_tool_status_2:"Processing request...",translate_tool_status_3:"Gathering results...",translate_tool_status_4:"Preparing response...",translate_tool_status_5:"Looking things up...",translate_tool_status_6:"Checking records...",translate_tool_status_7:"Reviewing details...",translate_tool_status_8:"Running calculations...",translate_tool_status_9:"Pulling information...",translate_tool_done_0:"Data fetched successfully",translate_tool_done_1:"Analysis completed successfully",translate_tool_done_2:"Request processed successfully",translate_tool_done_3:"Results gathered successfully",translate_tool_done_4:"Response prepared successfully",translate_tool_done_5:"Lookup completed successfully",translate_tool_done_6:"Records checked successfully",translate_tool_done_7:"Review completed successfully",translate_tool_done_8:"Calculations completed successfully",translate_tool_done_9:"Information retrieved successfully",translate_tool_error:"Something went wrong",translate_attachment_status:"Reading the attached file...",translate_attachment_done:"Finished reading the file",translate_graph_0:"Exploring connections...",translate_graph_1:"Mapping out the links...",translate_graph_2:"Discovering relationships...",translate_graph_3:"Tracing the connections...",translate_graph_4:"Navigating the knowledge...",translate_graph_5:"Uncovering insights...",translate_graph_6:"Connecting the dots...",translate_graph_7:"Following the trail...",translate_graph_8:"Piecing things together...",translate_graph_9:"Building the picture...",translate_code_0:"Running the numbers...",translate_code_1:"Working through the data...",translate_code_2:"Processing your request...",translate_code_3:"Crunching the figures...",translate_code_4:"Putting it all together...",translate_code_5:"Analyzing the results...",translate_code_6:"Working behind the scenes...",translate_code_7:"Sorting through the details...",translate_code_8:"Preparing your answer...",translate_code_9:"Almost ready...",translate_reasoning_0:"Thinking it through...",translate_reasoning_1:"Considering the options...",translate_reasoning_2:"Weighing the possibilities...",translate_reasoning_3:"Reflecting on this...",translate_reasoning_4:"Working it out...",translate_reasoning_5:"Putting thoughts together...",translate_reasoning_6:"Mulling it over...",translate_reasoning_7:"Finding the best approach...",translate_reasoning_8:"Organizing my thoughts...",translate_reasoning_9:"Almost there...",translate_running:"Running",translate_aborted:"Aborted",translate_input:"Input",translate_output:"Output",translate_calling:"Calling",translate_input_ready:"Input ready",translate_needs_approval:"Needs approval",translate_approved:"Approved",translate_responded:"Responded",translate_error:"Error",translate_approval_requested:"Approval requested",translate_approval_response:"Approval response",translate_waiting_for_approval:"Waiting for approval to execute this tool.",translate_tool_approved:"Approved.",translate_tool_response_received:"Response received.",translate_tokens:"tokens",translate_fresh:"Fresh",translate_cache_read:"Cache read",translate_cache_write:"Cache write",translate_n_percent_cached:"{{percent}}% cached",translate_text:"Text",translate_reasoning:"Reasoning",translate_read:"Read",translate_write:"Write",translate_total:"Total",translate_request:"Request",translate_response:"Response",translate_step_n:"Step {{number}}",translate_inspect_llm_requests:"Inspect LLM requests",translate_loading:"loading…",translate_no_llm_requests:"No LLM requests recorded for this message.",translate_unhandled_type:"Unhandled type:",translate_client_tool_title:"Complete this step to continue",translate_client_tool_loading:"Preparing a secure step...",translate_client_tool_failed:"This step could not be loaded",translate_client_tool_retry:"Try again",translate_client_tool_cancel:"Cancel",translate_trigger_fired:"Triggered by",translate_trigger_payload:"Payload",translate_messages_disabled:"This agent only runs from its triggers."};var l_={en:e1,ar:s1};function A1(_,N,k){let L=(l_[_]??l_.en)?.[N]??l_.en?.[N]??N;if(!k)return L;return L.replace(/\{\{\s*(\w+)\s*\}\}/g,(Z,J)=>(J in k)?String(k[J]):Z)}function F_(_){if(typeof _==="string"){let N=_.trim();if(!(N.startsWith("{")&&N.endsWith("}")||N.startsWith("[")&&N.endsWith("]")))return _;try{return F_(JSON.parse(N))}catch{return _}}if(Array.isArray(_))return _.map((N)=>F_(N));if(_!==null&&typeof _==="object"){let N={};for(let[k,$]of Object.entries(_))N[k]=F_($);return N}return _}function E1(_,N){if(Array.isArray(_)){let k=_;return{kind:"container",open:"[",close:"]",summary:_0(k.length,"item","items"),entries:k.map(($,L)=>({key:null,value:$,path:`${N}[${L}]`}))}}if(_!==null&&typeof _==="object"){let k=Object.entries(_);return{kind:"container",open:"{",close:"}",summary:_0(k.length,"property","properties"),entries:k.map(([$,L])=>({key:$,value:L,path:`${N}.${$}`}))}}return{kind:"primitive",text:U2(_),className:M2(_)}}function _0(_,N,k){return`${_} ${_===1?N:k}`}function U2(_){if(_===null||_===void 0)return"null";if(typeof _==="string")return JSON.stringify(_);if(typeof _==="number"||typeof _==="boolean")return String(_);return JSON.stringify(_)??"null"}function M2(_){if(_===null||_===void 0)return"jt-null";if(typeof _==="string")return"jt-string";if(typeof _==="number")return"jt-number";if(typeof _==="boolean")return"jt-boolean";return""}function o_(_){if(!_)return null;try{return JSON.parse(_)}catch{return _}}function j_(_){if(!_)return"";try{return JSON.stringify(JSON.parse(_),null,2)}catch{return _}}function q_(_,N){if(_===void 0||typeof _==="string"||Array.isArray(_))return _;return _[N]??_.en??Object.values(_)[0]}var P1=[["year",31536000000],["month",2592000000],["week",604800000],["day",86400000],["hour",3600000],["minute",60000],["second",1000]];function V_(_,N,k=Date.now()){let $=Date.parse(_);if(Number.isNaN($))return"";let L=$-k,[Z,J]=P1.find(([,X])=>Math.abs(L)>=X)??P1[P1.length-1];return new Intl.RelativeTimeFormat(N,{numeric:"auto"}).format(Math.round(L/J),Z)}function w1(_,N){let k=URL.createObjectURL(_),$=document.createElement("a");$.href=k,$.download=N,$.click(),URL.revokeObjectURL(k)}class W_{onUpdate;fullText="";displayedLength=0;animationFrameId=null;isDone=!1;static DRAIN_FRACTION=0.03;static MIN_CHARS_PER_FRAME=1;static DONE_DRAIN_FRACTION=0.1;constructor(_){this.onUpdate=_}seed(_){this.fullText=_,this.displayedLength=_.length,this.onUpdate(_)}update(_,N){if(this.fullText=_,this.isDone=N,this.displayedLength=Math.min(this.displayedLength,this.fullText.length),N&&this.displayedLength>=this.fullText.length){this.onUpdate(this.fullText),this.stopAnimation();return}if(!this.animationFrameId)this.scheduleFrame()}destroy(){this.stopAnimation()}scheduleFrame(){this.animationFrameId=requestAnimationFrame(()=>this.tick())}tick(){let _=this.fullText.length-this.displayedLength;if(_<=0){this.animationFrameId=null;return}let N=this.isDone?W_.DONE_DRAIN_FRACTION:W_.DRAIN_FRACTION,k=Math.max(W_.MIN_CHARS_PER_FRAME,Math.ceil(_*N));if(this.displayedLength=Math.min(this.fullText.length,this.displayedLength+k),this.onUpdate(this.fullText.substring(0,this.displayedLength)),this.displayedLength<this.fullText.length)this.scheduleFrame();else this.animationFrameId=null}stopAnimation(){if(this.animationFrameId)cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null}}function w_(_){if(_.input.total<=0)return null;return Math.round(_.input.cacheRead/_.input.total*100)}import{useEffect as R_,useLayoutEffect as N0,useMemo as A2,useRef as s}from"react";import{useChat as E2}from"@tanstack/ai-react";function k0(_){let{thread:N,api:k,patchUi:$}=_,L=s(!0),Z=s(!1),J=s(!1),X=s(!1),G=s(!1),W=s(new Set),K=s(Promise.resolve()),y=A2(()=>K1({api:k,thread:{id:N.id,isRunning:N.isRunning},mode:_.mode,onHydrated:(D)=>{if(!L.current)return;$({messageMetadata:T_(D)})},setLoadingMessages:(D)=>{if(L.current)$({isLoadingMessages:D})}}),[]),q=E2({threadId:N.id,persistence:!0,initialMessages:_.initialMessages,connection:y,onChunk:()=>{if(!L.current)return;J.current=!0},onError:()=>{if(!L.current)return;if(J.current)_.onTurnFinished();else _.onSendFailed()}}),B=s(q);B.current=q;let w=s(q.isLoading);w.current=q.isLoading;async function U(D,g){let c=g({toolCallId:D.id,toolName:D.name,input:D.input},{threadId:N.id});if(c===null||c===void 0)return;let m=await Promise.resolve(c);if(m===null||m===void 0)return;if(!L.current)return;await B.current.addToolResult({toolCallId:D.id,tool:D.name,output:m})}function S(){let D=g_(B.current.messages),g=_.configRef.current.hooks?.onToolCall;if(!g)return D.length>0;for(let c of D){if(c.state!=="input-complete")continue;if(W.current.has(c.id))continue;W.current.add(c.id),U(c,g)}return D.length>0}async function Q(D){if(!L.current||D!==N.id)return;await Y1({api:k,threadId:D,isStale:()=>!L.current,isStreaming:()=>w.current,absorbMetadata:(g)=>$({messageMetadata:g}),setMessages:(g)=>{B.current.setMessages(g)}})}function V(D){return K.current=K.current.then(()=>Q(D)),K.current}async function z(){if(X.current){X.current=!1;return}if(Z.current&&S())return;await V(N.id)}async function T(D,g){_.setRunning(N.id,!0),Z.current=!0,J.current=!1;let c={id:A_(),role:"user",parts:[{type:"text",content:D}]};if(g.length)$((m)=>({messageMetadata:new Map(m.messageMetadata).set(c.id,{attachments:g})}));await B.current.append(c)}async function v(){if(!w.current)return;let{aborted:D}=await k.abortStream(N.id).catch(()=>({aborted:!1}));if(!L.current)return;if(D)X.current=!0,_.setRunning(N.id,!1);B.current.stop()}function p(D,g,c){return B.current.addToolResult({toolCallId:D,tool:g,output:c}).catch((m)=>{throw V(N.id),m})}function u(D){if(w.current)return;if(D.isRunning){_.remount(D);return}V(D.id)}R_(()=>{return L.current=!0,()=>{L.current=!1}},[]);let M=s(void 0);return M.current={threadId:N.id,send:T,abort:v,addToolResult:p,reattach:u,refreshMessages:(D)=>{V(D)}},N0(()=>{_.sessionRef.current=M.current}),N0(()=>{return()=>{if(_.sessionRef.current===M.current)_.sessionRef.current=void 0}},[]),R_(()=>{if(!_.pendingSendRef.current.length)return;let D=setTimeout(()=>{let g=_.pendingSendRef.current;_.pendingSendRef.current=[],(async()=>{for(let{prompt:c,attachments:m}of g)await T(c,m)})()});return()=>clearTimeout(D)},[]),R_(()=>{$({messages:q.messages})},[q.messages]),R_(()=>{$({hasPendingToolCalls:!q.isLoading&&g_(q.messages).length>0})},[q.messages,q.isLoading]),R_(()=>{if($({isAgentWorking:q.isLoading}),q.isLoading){G.current=!0;return}if(!G.current)return;G.current=!1,_.onTurnFinished(),z()},[q.isLoading]),null}import{createContext as P2,useContext as w2}from"react";var R1=P2(void 0);function H(){let _=w2(R1);if(!_)throw Error("useCortex must be used inside <CortexChatWidget>");return _}function F(..._){return _.filter(Boolean).join(" ")}import{forwardRef as R2,useEffect as b2,useImperativeHandle as v2,useRef as v1,useState as L0}from"react";import{jsx as e,jsxs as b1}from"react/jsx-runtime";function $0(){let{queue:_,t:N}=H();if(!_.items.length)return null;return e("div",{className:"cortex-attachment-queue",children:_.items.map((k)=>b1("div",{className:F("cortex-attachment-chip",k.status==="error"&&"cortex-attachment-chip--error"),title:k.status==="error"?N("translate_attachment_rejected"):"",children:[k.status==="uploading"||k.status==="deleting"?b1("svg",{className:"cortex-attachment-chip__spinner",viewBox:"0 0 16 16",fill:"none",children:[e("circle",{cx:"8",cy:"8",r:"6",stroke:"currentColor",strokeWidth:"2",className:"cortex-attachment-chip__spinner-track"}),e("path",{d:"M14 8a6 6 0 0 0-6-6",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):b1("svg",{viewBox:"0 0 16 16",className:"cortex-attachment-chip__icon",fill:"none",children:[e("path",{d:"M4 1.5h5.172a2 2 0 0 1 1.414.586l2.328 2.328a2 2 0 0 1 .586 1.414V12.5a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2Z",stroke:"currentColor",strokeWidth:"1.25"}),e("path",{d:"M9.5 1.5v2a2 2 0 0 0 2 2h2",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round"})]}),e("span",{className:"cortex-attachment-chip__name",children:k.filename}),e("button",{type:"button",onClick:()=>_.remove(k.localId),className:"cortex-attachment-chip__remove",disabled:k.status==="deleting","aria-label":N("translate_remove_attachment"),children:e("svg",{viewBox:"0 0 16 16",fill:"none",children:e("path",{d:"M4.5 4.5l7 7m0-7l-7 7",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})})})]},k.localId))})}import{jsx as x,jsxs as b_,Fragment as S2}from"react/jsx-runtime";var I2=V1.join(","),h_=R2(function(N,k){let{t:$,queue:L,isAgentWorking:Z,send:J,abort:X,capabilities:G}=H(),W=G?.attachments??!1,[K,y]=L0(""),[q,B]=L0(!1),w=v1(null),U=v1(null);v2(k,()=>({focusInput:()=>w.current?.focus()}));let S=v1(Z);b2(()=>{if(S.current&&!Z)w.current?.focus();S.current=Z},[Z]);let Q=!L.busy&&(Boolean(K.trim())||L.hasReady);function V(){if(Z||!Q)return;let M="translate_attachment_caption",D=$(M),g=D!==M?D:"Please take a look at the attached files.",c=K.trim()||g,m=L.consumeReady();y(""),J(c,m.map((s_)=>s_.summary))}function z(M){if(M.key==="Enter"&&!M.shiftKey)M.preventDefault(),V()}function T(M){if(M.preventDefault(),W)B(!0)}function v(M){if(!M.currentTarget.contains(M.relatedTarget))B(!1)}function p(M){if(M.preventDefault(),B(!1),W)L.accept([...M.dataTransfer.files])}function u(M){let D=M.clipboardData.files;if(!W||!D.length)return;M.preventDefault(),L.accept([...D])}return b_("div",{className:"cortex-widget__input-area",onDragOver:T,onDragLeave:v,onDrop:p,children:[x($0,{}),b_("div",{className:F("cortex-widget__input-box",Z&&"cortex-widget__input-box--disabled",!Z&&"cortex-widget__input-box--enabled",q&&"cortex-widget__input-box--dragging"),children:[x("textarea",{ref:w,onKeyDown:z,onPaste:u,value:K,onChange:(M)=>y(M.target.value),placeholder:q?$("translate_drop_files_here"):Z?"":$("translate_type_a_message"),disabled:Z,rows:1,className:F("cortex-widget__textarea",Z&&"cortex-widget__textarea--disabled")}),Z?b_("button",{onClick:()=>void X(),className:"cortex-stop-btn",children:[x("span",{className:"cortex-stop-btn__ring"}),x("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",className:"cortex-stop-btn__icon",children:x("rect",{x:"1",y:"1",width:"10",height:"10",rx:"2.5",fill:"currentColor"})})]}):b_("div",{className:"cortex-widget__input-actions",children:[W?b_(S2,{children:[x("button",{type:"button",onClick:()=>U.current?.click(),className:"cortex-widget__attach-btn","aria-label":$("translate_attach_files"),children:x("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:x("path",{d:"M10.5 5.5 6.2 9.8a1.4 1.4 0 0 0 2 2l4.6-4.6a2.8 2.8 0 0 0-4-4L4.2 7.8a4.2 4.2 0 0 0 6 6l4-4",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})}),x("input",{ref:U,type:"file",multiple:!0,accept:I2,onChange:(M)=>{L.accept([...M.target.files??[]]),M.target.value=""},className:"cortex-widget__file-input"})]}):null,x("button",{onClick:V,className:F("cortex-widget__send-btn",!Q&&"cortex-widget__send-btn--empty",Q&&"cortex-widget__send-btn--ready"),disabled:!Q,children:x("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",className:"cortex-widget__send-icon",children:x("path",{d:"M3 8h10M9 4l4 4-4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]})]})]})});import{jsx as E,jsxs as i,Fragment as c2}from"react/jsx-runtime";var r_="M13.5 7.6c0 2.4-2.5 4.4-5.5 4.4-.6 0-1.2-.08-1.7-.23L3 13l.8-2.3C3 9.8 2.5 8.7 2.5 7.6 2.5 5.2 5 3.2 8 3.2s5.5 2 5.5 4.4Z";function Z0(_){let{config:N,t:k,threads:$,selectedThread:L,deleteThread:Z}=H(),J=N.locale??"en";return i("div",{className:_.className,children:[i("div",{className:"cortex-widget__threads-header",children:[E("button",{type:"button",onClick:()=>_.onBackRequested(),"aria-label":k("translate_back"),className:"cortex-widget__back-btn",children:E("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"cortex-widget__back-icon",children:E("path",{d:"M10 3L5 8l5 5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}),i("div",{children:[E("h2",{className:"cortex-widget__threads-title",children:k("translate_history")}),E("p",{className:"cortex-widget__threads-count",children:k($?.length===1?"translate_one_conversation":"translate_n_conversations",{count:$?.length??0})})]}),i("button",{onClick:()=>_.onNewChatRequested(),className:"cortex-widget__new-chat-btn",children:[E("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:E("path",{d:"M8 3v10M3 8h10",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})}),k("translate_new")]})]}),E("div",{className:"cortex-widget__threads-list",children:$===void 0?[1,2,3,4].map((X)=>i("div",{className:"cortex-widget__thread-skeleton",children:[E("div",{className:"cortex-skeleton cortex-widget__thread-skeleton-icon"}),E("div",{className:"cortex-widget__thread-skeleton-lines",children:E("div",{className:"cortex-skeleton cortex-widget__thread-skeleton-line",style:{width:`${40+X*12}%`}})})]},X)):i(c2,{children:[$.map((X)=>{let G=X.id===L?.id,W=V_(X.updatedAt,J);return i("button",{onClick:()=>_.onThreadSelected(X),className:F("cortex-widget__thread-item",G&&"cortex-widget__thread-item--active"),children:[E("div",{className:F("cortex-widget__thread-icon",G&&"cortex-widget__thread-icon--active"),children:E("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:E("path",{d:r_,stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})}),i("div",{className:"cortex-widget__thread-info",children:[i("div",{className:"cortex-widget__thread-title-row",children:[E("p",{className:F("cortex-widget__thread-title",G&&"cortex-widget__thread-title--active"),children:X.title??k("translate_untitled")}),X.isRunning&&i("span",{className:F("cortex-widget__thread-running",G&&"cortex-widget__thread-running--active"),children:[E("span",{className:"cortex-widget__thread-running-dot"}),k("translate_running")]})]}),W&&E("p",{className:"cortex-widget__thread-time",children:W})]}),E("span",{role:"button",tabIndex:0,onClick:(K)=>{K.stopPropagation(),Z(X.id)},onKeyDown:(K)=>{if(K.key!=="Enter"&&K.key!==" ")return;K.preventDefault(),K.stopPropagation(),Z(X.id)},className:F("cortex-widget__thread-delete",G&&"cortex-widget__thread-delete--active"),children:E("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none",children:E("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})})}),E("svg",{className:F("cortex-widget__thread-arrow",G&&"cortex-widget__thread-arrow--active"),width:"10",height:"10",viewBox:"0 0 16 16",fill:"none",children:E("path",{d:"M6 4l4 4-4 4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]},X.id)}),!$.length&&i("div",{className:"cortex-widget__threads-empty",children:[E("div",{className:"cortex-widget__threads-empty-icon",children:E("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"none",className:"cortex-widget__threads-empty-svg",children:E("path",{d:r_,stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})}),E("p",{className:"cortex-widget__threads-empty-title",children:k("translate_no_threads_yet")}),E("p",{className:"cortex-widget__threads-empty-subtitle",children:k("translate_start_a_new_conversation")}),E("button",{onClick:()=>_.onNewChatRequested(),className:"cortex-widget__new-chat-btn cortex-widget__new-chat-btn--empty-state",children:k("translate_new_chat")})]})]})})]})}import{jsx as a,jsxs as G0}from"react/jsx-runtime";function J0(_){let{config:N,t:k,threads:$,send:L,capabilities:Z}=H(),J=Z?.messages===!1,X=Z!==void 0,G=N.locale??"en",W=q_(N.suggestions,G);return G0("div",{className:"cortex-widget__landing",children:[a("div",{className:"cortex-widget__landing-icon",children:a("svg",{width:"18",height:"18",viewBox:"0 0 16 16",fill:"none",children:a("path",{d:r_,stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})})}),a("p",{className:"cortex-widget__landing-greeting",children:q_(N.greeting,G)??k("translate_greeting")}),X&&!J&&!!W?.length&&a("div",{className:"cortex-widget__landing-chips",children:W.map((K,y)=>a("button",{type:"button",onClick:()=>void L(K),className:"cortex-widget__landing-chip",children:K},y))}),J?a("p",{className:"cortex-widget__messages-disabled",children:k("translate_messages_disabled")}):X?a(h_,{}):null,!!$?.length&&a("div",{className:"cortex-widget__landing-recent",children:$.slice(0,2).map((K)=>{let y=V_(K.updatedAt,G);return G0("button",{type:"button",onClick:()=>_.onThreadSelected(K),className:"cortex-widget__landing-recent-item",children:[a("p",{className:"cortex-widget__landing-recent-title",children:K.title??k("translate_untitled")}),y&&a("p",{className:"cortex-widget__landing-recent-time",children:y})]},K.id)})})]})}import{useEffect as a_,useRef as t_,useState as e2}from"react";import{jsx as x_,jsxs as X0}from"react/jsx-runtime";function V0(){let{t:_}=H();return X0("div",{className:"cortex-aborted-flag",children:[x_("span",{className:"cortex-aborted-flag__line"}),X0("span",{className:"cortex-aborted-flag__label",children:[x_("svg",{className:"cortex-aborted-flag__icon",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:x_("path",{d:"M6 1.5v5M6 8.75v.5",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})}),_("translate_aborted")]}),x_("span",{className:"cortex-aborted-flag__line"})]})}import{jsx as D_,jsxs as W0}from"react/jsx-runtime";function K0(_){let{api:N,t:k}=H();async function $(L){let{blob:Z,name:J}=await N.downloadAttachment(L);w1(Z,J)}return D_("div",{className:"cortex-message-attachments",children:_.attachments.map((L)=>W0("button",{type:"button",onClick:()=>void $(L.id),className:"cortex-message-attachment","aria-label":`${k("translate_download")}: ${L.filename}`,children:[W0("svg",{viewBox:"0 0 16 16",className:"cortex-message-attachment__icon",fill:"none",children:[D_("path",{d:"M4 1.5h5.172a2 2 0 0 1 1.414.586l2.328 2.328a2 2 0 0 1 .586 1.414V12.5a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-9a2 2 0 0 1 2-2Z",stroke:"currentColor",strokeWidth:"1.25"}),D_("path",{d:"M9.5 1.5v2a2 2 0 0 0 2 2h2",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round"})]}),D_("span",{className:"cortex-message-attachment__name",children:L.filename}),D_("svg",{viewBox:"0 0 16 16",className:"cortex-message-attachment__dl-icon",fill:"none",children:D_("path",{d:"M8 3v7m0 0L5.5 7.5M8 10l2.5-2.5M3 13h10",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]},L.id))})}import{useRef as p2,useState as v_}from"react";import{useRef as C2,useState as n2}from"react";import{jsx as H_,jsxs as g2}from"react/jsx-runtime";function k_({value:_,className:N}){let[k,$]=n2(!1),L=C2(null);async function Z(J){J.stopPropagation(),J.preventDefault();try{if(await navigator.clipboard.writeText(_),$(!0),L.current)clearTimeout(L.current);L.current=setTimeout(()=>$(!1),1500)}catch{}}return H_("span",{className:F("cortex-copy-btn",N),children:H_("button",{className:F("cortex-copy-btn__button",k&&"cortex-copy-btn__button--copied"),onClick:(J)=>void Z(J),"aria-label":k?"Copied":"Copy to clipboard",type:"button",children:k?H_("svg",{className:"cortex-copy-btn__icon cortex-copy-btn__icon--check",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",children:H_("path",{d:"M5 13l4 4L19 7",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"})}):g2("svg",{className:"cortex-copy-btn__icon",width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",children:[H_("rect",{x:"9",y:"9",width:"12",height:"12",rx:"2",stroke:"currentColor",strokeWidth:"2"}),H_("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]})})})}import{useMemo as f2,useState as T2}from"react";import{jsx as h,jsxs as K_,Fragment as d_}from"react/jsx-runtime";function __({data:_,expandDepth:N=1,className:k}){let $=f2(()=>F_(_),[_]),[L,Z]=T2({});function J(G,W){return L[G]??W>=N}function X(G,W){Z((K)=>({...K,[G]:!J(G,W)}))}return h("div",{className:F("cortex-json-tree",k),children:h(Y0,{value:$,path:"$",depth:0,isCollapsed:J,toggle:X})})}function Y0({value:_,path:N,depth:k,isCollapsed:$,toggle:L}){let Z=E1(_,N);if(Z.kind==="primitive")return h("span",{className:Z.className,children:Z.text});if(Z.entries.length===0)return K_("span",{className:"jt-bracket",children:[Z.open,Z.close]});let J=$(N,k);function X(G){L(N,k),G.stopPropagation()}return K_(d_,{children:[K_("span",{className:"jt-toggle",onClick:X,role:"button",children:[h("span",{className:F("jt-arrow",J&&"jt-arrow--collapsed"),children:"▾"}),h("span",{className:"jt-bracket",children:Z.open})]}),J?K_(d_,{children:[h("span",{className:"jt-collapsed-hint",onClick:X,role:"button",children:Z.summary}),h("span",{className:"jt-bracket",children:Z.close})]}):K_(d_,{children:[h("div",{className:"jt-indent",children:Z.entries.map((G,W)=>K_("div",{className:"jt-line",children:[G.key!==null&&K_(d_,{children:[h("span",{className:"jt-key",children:`"${G.key}"`}),h("span",{className:"jt-colon",children:": "})]}),h(Y0,{value:G.value,path:G.path,depth:k+1,isCollapsed:$,toggle:L}),W<Z.entries.length-1&&h("span",{className:"jt-comma",children:","})]},G.path))}),h("span",{className:"jt-bracket",children:Z.close})]})]})}function b(_){return _.toLocaleString("en-US")}import{jsx as B_,jsxs as y_}from"react/jsx-runtime";function Q0({usage:_}){let{t:N}=H();return y_("div",{className:"cortex-llm-inspector__usage-rows",children:[y_("div",{className:"cortex-llm-inspector__usage-row",children:[B_("span",{className:"cortex-llm-inspector__usage-lbl",children:N("translate_input")}),B_("span",{className:"cortex-llm-inspector__usage-val",children:b(_.input.total)}),y_("span",{className:"cortex-llm-inspector__usage-detail",children:[N("translate_fresh")," ",b(_.input.noCache)," · ",N("translate_read")," ",b(_.input.cacheRead)," · ",N("translate_write")," ",b(_.input.cacheWrite)]})]}),y_("div",{className:"cortex-llm-inspector__usage-row",children:[B_("span",{className:"cortex-llm-inspector__usage-lbl",children:N("translate_output")}),B_("span",{className:"cortex-llm-inspector__usage-val",children:b(_.output.total)}),y_("span",{className:"cortex-llm-inspector__usage-detail",children:[N("translate_text")," ",b(_.output.text)," · ",N("translate_reasoning")," ",b(_.output.reasoning)]})]}),y_("div",{className:"cortex-llm-inspector__usage-row cortex-llm-inspector__usage-row--total",children:[B_("span",{className:"cortex-llm-inspector__usage-lbl",children:N("translate_total")}),B_("span",{className:"cortex-llm-inspector__usage-val",children:b(_.total)})]})]})}import{jsx as I1,jsxs as i_}from"react/jsx-runtime";function z0({usage:_}){let N=w_(_);return I1("span",{children:i_("span",{className:"cortex-llm-inspector__step-metrics",children:[i_("span",{className:"cortex-llm-inspector__metric",children:[I1("span",{className:"cortex-llm-inspector__dot cortex-llm-inspector__dot--input"}),b(_.input.total)]}),i_("span",{className:"cortex-llm-inspector__metric",children:[I1("span",{className:"cortex-llm-inspector__dot cortex-llm-inspector__dot--output"}),b(_.output.total)]}),N!==null?i_("span",{className:"cortex-llm-inspector__cache-pct",children:[N,"%"]}):null]})})}import{jsx as I,jsxs as $_}from"react/jsx-runtime";function F0({messageId:_}){let{t:N,api:k}=H(),[$,L]=v_(!1),[Z,J]=v_(!1),[X,G]=v_([]),[W,K]=v_(null),[y,q]=v_({}),B=p2(!1);async function w(){if(!B.current){J(!0);try{G(await k.listLlmRequests(_))}finally{J(!1),B.current=!0}}L((V)=>!V)}function U(V){K((z)=>z===V?null:V)}function S(V){return y[V]??"prompt"}function Q(V,z){q((T)=>({...T,[V]:z}))}return $_("div",{className:F("cortex-llm-inspector",$&&"cortex-llm-inspector--open"),children:[$_("button",{className:"cortex-llm-inspector__trigger",onClick:()=>void w(),children:[I("svg",{className:"cortex-llm-inspector__icon",width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",children:I("path",{d:"M6 2a4 4 0 1 0 0 8 4 4 0 0 0 0-8ZM0 6a6 6 0 1 1 10.89 3.477l4.817 4.816a1 1 0 0 1-1.414 1.414l-4.816-4.816A6 6 0 0 1 0 6Z",fill:"currentColor"})}),I("span",{children:N("translate_inspect_llm_requests")}),Z?I("span",{className:"cortex-llm-inspector__loading",children:N("translate_loading")}):X.length>0?I("span",{className:"cortex-llm-inspector__badge",children:X.length}):null,I("svg",{className:"cortex-llm-inspector__chevron",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:I("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round",strokeLinejoin:"round"})})]}),I("div",{className:"cortex-llm-inspector__panel-wrapper",children:I("div",{className:"cortex-llm-inspector__panel-inner",children:$_("div",{className:"cortex-llm-inspector__panel",children:[X.length===0&&!Z?I("div",{className:"cortex-llm-inspector__empty",children:N("translate_no_llm_requests")}):null,X.map((V,z)=>$_("div",{className:F("cortex-llm-inspector__step",W===V.id&&"cortex-llm-inspector__step--expanded"),children:[$_("button",{className:"cortex-llm-inspector__step-header",onClick:()=>U(V.id),children:[I("span",{className:"cortex-llm-inspector__step-label",children:N("translate_step_n",{number:z+1})}),V.tokenUsage?I(z0,{usage:V.tokenUsage}):null,I("svg",{className:"cortex-llm-inspector__step-chevron",width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",children:I("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round",strokeLinejoin:"round"})})]}),I("div",{className:"cortex-llm-inspector__step-body-wrapper",children:I("div",{className:"cortex-llm-inspector__step-body-inner",children:$_("div",{className:"cortex-llm-inspector__step-body",children:[V.tokenUsage?I(Q0,{usage:V.tokenUsage}):null,$_("div",{className:"cortex-llm-inspector__tabs",children:[I("button",{className:F("cortex-llm-inspector__tab",S(V.id)==="prompt"&&"cortex-llm-inspector__tab--active"),onClick:()=>Q(V.id,"prompt"),children:N("translate_request")}),I("button",{className:F("cortex-llm-inspector__tab",S(V.id)==="response"&&"cortex-llm-inspector__tab--active"),onClick:()=>Q(V.id,"response"),children:N("translate_response")})]}),$_("div",{className:"cortex-llm-inspector__json-pane",children:[I(k_,{className:"cortex-llm-inspector__json-copy",value:S(V.id)==="prompt"?j_(V.prompt):j_(V.output)}),S(V.id)==="prompt"?I(__,{data:o_(V.prompt),expandDepth:2}):I(__,{data:o_(V.output),expandDepth:2})]})]})})})]},V.id))]})})})]})}import{useEffect as m2,useRef as u2,useState as q0}from"react";import{jsx as I_,jsxs as D0}from"react/jsx-runtime";function O_({labels:_,className:N}){let{t:k}=H(),[$,L]=q0(0),[Z,J]=q0("idle"),X=u2(_.length);return X.current=_.length,m2(()=>{let G,W;function K(){G=setTimeout(()=>{J("exiting"),G=setTimeout(()=>{L((y)=>(y+1)%X.current),J("enter-start"),W=requestAnimationFrame(()=>{J("entering"),G=setTimeout(()=>{J("idle"),K()},300)})},300)},2000)}return K(),()=>{if(G)clearTimeout(G);if(W)cancelAnimationFrame(W)}},[]),D0("div",{className:F("cortex-subtle-activity",N),children:[D0("div",{className:"cortex-subtle-activity__dots",children:[I_("span",{className:"cortex-subtle-activity__dot"}),I_("span",{className:"cortex-subtle-activity__dot cortex-subtle-activity__dot--d1"}),I_("span",{className:"cortex-subtle-activity__dot cortex-subtle-activity__dot--d2"})]}),I_("div",{className:"cortex-subtle-activity__label-mask",children:I_("span",{className:F("cortex-subtle-activity__label",`cortex-subtle-activity__label--${Z}`),children:k(_[$])})})]})}import{jsx as H0}from"react/jsx-runtime";var l2=X_("reasoning");function B0(){return H0("div",{className:"cortex-reasoning-animated",children:H0(O_,{labels:l2})})}import{jsx as d,jsxs as S_}from"react/jsx-runtime";function y0(_){let{reasoningPart:N,streaming:k=!1}=_,{t:$}=H();return S_("details",{className:"cortex-reasoning-details",children:[S_("summary",{className:"cortex-reasoning-details__summary",children:[S_("div",{className:"cortex-reasoning-details__header",children:[d("span",{className:"cortex-reasoning-details__icon",children:S_("svg",{width:"14",height:"14",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true",children:[d("path",{d:"M10 2C6.686 2 4 4.686 4 8c0 1.655.672 3.154 1.757 4.243.362.363.576.858.576 1.371V14.5a1 1 0 0 0 1 1h5.334a1 1 0 0 0 1-1v-.886c0-.513.214-1.008.576-1.371A5.978 5.978 0 0 0 16 8c0-3.314-2.686-6-6-6Z",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"}),d("path",{d:"M7.5 17.5h5M8.5 8a2 2 0 0 1 2-2",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})]})}),d("div",{className:"cortex-reasoning-details__title-group",children:S_("div",{className:"cortex-reasoning-details__title-row",children:[d("div",{className:"cortex-reasoning-details__title",children:$("translate_reasoning")}),d("span",{className:F("cortex-reasoning-details__badge",k?"cortex-reasoning-details__badge--streaming":"cortex-reasoning-details__badge--done"),children:k?"Streaming":"Done"})]})})]}),d("span",{className:"cortex-reasoning-details__chevron","aria-hidden":"true",children:d("svg",{width:"14",height:"14",viewBox:"0 0 20 20",fill:"none",children:d("path",{d:"m5.75 8.25 4.25 4.25 4.25-4.25",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),d("div",{className:"cortex-reasoning-details__body",children:d("div",{className:"cortex-reasoning-details__content",children:d("pre",{className:"cortex-reasoning-details__pre",children:N.content.trim()?N.content:"No reasoning provided."})})})]})}import{useEffect as O0,useRef as S1,useState as o2}from"react";import{jsx as U0}from"react/jsx-runtime";function M0(_){let{role:N,textPart:k,streaming:$=!1}=_,L=N==="assistant"&&$?"":k.content,[Z,J]=o2(L),X=S1(L),G=S1(null),W=S1(!0);return O0(()=>{function K(y){X.current=y,J(y)}if(N!=="assistant"||!$){G.current?.destroy(),G.current=null,K(k.content),W.current=!1;return}if(!G.current)G.current=new W_(K),G.current.seed(X.current);if(W.current){W.current=!1,G.current.seed(k.content);return}G.current.update(k.content,!1)},[N,$,k]),O0(()=>()=>{G.current?.destroy(),G.current=null},[]),U0("div",{className:F("cortex-text-part",N==="assistant"&&"cortex-text-part--assistant",N==="user"&&"cortex-text-part--user"),children:U0("div",{className:F("cortex-text-bubble",N==="assistant"&&"cortex-text-bubble--assistant",N==="user"&&"cortex-text-bubble--user"),dangerouslySetInnerHTML:{__html:U1(Z)}})})}import{jsx as o,jsxs as L_}from"react/jsx-runtime";function A0({toolCallPart:_}){let{t:N}=H(),{state:k,approval:$}=_,L=_.output,Z=Z1(_);function J(){if(k==="complete")return L_("div",{className:"dbg-tool__section dbg-tool__section--success",children:[L_("div",{className:"dbg-tool__section-bar",children:[o("span",{className:"dbg-tool__section-label dbg-tool__section-label--success",children:N("translate_output")}),o("span",{className:"dbg-tool__section-lang",children:"json"}),o(k_,{value:Z})]}),o("div",{dir:"ltr",className:"dbg-tool__tree",children:o(__,{data:L,expandDepth:2})})]});if(k==="error")return L_("div",{className:"dbg-tool__section dbg-tool__section--error",children:[L_("div",{className:"dbg-tool__section-bar",children:[o("span",{className:"dbg-tool__section-label dbg-tool__section-label--error",children:N("translate_error")}),o(k_,{value:Z})]}),o("pre",{dir:"ltr",className:"dbg-tool__error-pre",children:Z})]});if(k==="approval-requested")return L_("div",{className:"dbg-tool__section dbg-tool__section--approval",children:[L_("div",{className:"dbg-tool__section-bar",children:[o("span",{className:"dbg-tool__section-label dbg-tool__section-label--approval",children:N("translate_approval_requested")}),o("span",{className:"dbg-tool__section-lang",children:$?.id})]}),o("div",{className:"dbg-tool__message dbg-tool__message--approval",children:N("translate_waiting_for_approval")})]});if(k==="approval-responded")return L_("div",{className:"dbg-tool__section dbg-tool__section--approval",children:[L_("div",{className:"dbg-tool__section-bar",children:[o("span",{className:"dbg-tool__section-label dbg-tool__section-label--approval",children:N("translate_approval_response")}),o("span",{className:"dbg-tool__section-lang",children:$?.id})]}),o("div",{className:"dbg-tool__message dbg-tool__message--approval",children:N($?.approved?"translate_tool_approved":"translate_tool_response_received")})]});return null}return o("div",{children:J()})}import{jsx as E0,jsxs as j2}from"react/jsx-runtime";function P0({toolCallPart:_}){let{t:N}=H(),k=L1(_);return E0("span",{children:j2("span",{className:F("dbg-tool__state",k.modifier&&`dbg-tool__state--${k.modifier}`),children:[k.pulse&&E0("span",{className:F("dbg-tool__pulse",k.pulse==="violet"&&"dbg-tool__pulse--violet")}),N(k.labelKey)]})})}import{jsx as f,jsxs as N_}from"react/jsx-runtime";function w0({toolCallPart:_}){let{t:N}=H(),{codeSnippets:k,remainingInput:$,remainingInputText:L}=G1(_.input);return N_("details",{className:"dbg-tool","data-state":_.state,children:[f("summary",{className:"dbg-tool__summary",children:N_("div",{className:"dbg-tool__header",children:[N_("div",{className:"dbg-tool__meta",children:[f("div",{className:"dbg-tool__title-row",children:f("span",{className:"dbg-tool__name",title:_.name,children:_.name})}),f("div",{className:"dbg-tool__id-row",children:f("span",{className:"dbg-tool__id",children:_.id})})]}),N_("div",{className:"dbg-tool__actions",children:[f(P0,{toolCallPart:_}),f("svg",{className:"dbg-tool__chevron",width:"14",height:"14",viewBox:"0 0 20 20",fill:"none",children:f("path",{d:"m5.75 8.25 4.25 4.25 4.25-4.25",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]})]})}),N_("div",{className:"dbg-tool__body",children:[k.map((Z)=>N_("div",{className:"dbg-tool__section",children:[N_("div",{className:"dbg-tool__section-bar",children:[f("span",{className:"dbg-tool__section-label",children:Z.key}),f("span",{className:"dbg-tool__section-lang",children:Z.lang}),f(k_,{value:Z.value})]}),f("pre",{dir:"ltr",className:"dbg-tool__pre",children:f("code",{className:"hljs",dangerouslySetInnerHTML:{__html:M1(Z.value,Z.lang)}})})]},Z.key)),!!$&&N_("div",{className:"dbg-tool__section",children:[N_("div",{className:"dbg-tool__section-bar",children:[f("span",{className:"dbg-tool__section-label",children:N("translate_input")}),f("span",{className:"dbg-tool__section-lang",children:"json"}),f(k_,{value:L})]}),f("div",{dir:"ltr",className:"dbg-tool__tree",children:f(__,{data:$,expandDepth:2})})]}),f(A0,{toolCallPart:_})]})]})}import{useEffect as b0,useRef as c1,useState as R0}from"react";import{jsx as C,jsxs as c_}from"react/jsx-runtime";function v0({message:_,toolCallPart:N}){let{config:k,addToolResult:$,isAgentWorking:L}=H(),Z=k.toolComponents?.[N.name];if(Z)return C("div",{className:"cortex-tool-call-animated",children:C(Z,{toolCallPart:N,message:_,setOutput:(J)=>void $(N.id,N.name,J)})});if(N.state==="input-complete"&&!L)return C("div",{className:"cortex-tool-call-animated",children:C(h2,{toolCallPart:N})});return C("div",{className:"cortex-tool-call-animated",children:C(I0,{toolCallPart:N})})}function h2({toolCallPart:_}){let{api:N,t:k,addToolResult:$,selectedThread:L,config:Z}=H(),J=L?.id,[X,G]=R0({phase:"initiating"}),[W]=R0(Z.trustSameOriginEmbeds),K=c1(void 0),y=c1({api:N,addToolResult:$,toolName:_.name});if(y.current={api:N,addToolResult:$,toolName:_.name},b0(()=>{if(!J)return;let B=H1({initiate:()=>y.current.api.initiateToolCall(J,_.id),onState:G,submit:(U)=>y.current.addToolResult(_.id,y.current.toolName,U)});K.current=B,B.start();let w=(U)=>B.handleMessage(U);return window.addEventListener("message",w),()=>{if(window.removeEventListener("message",w),B.dispose(),K.current===B)K.current=void 0}},[_.id,J]),!J||X.phase==="unavailable"||X.phase==="settling")return C(I0,{toolCallPart:_});let q=c_("div",{className:"cortex-client-tool-embed",children:[c_("div",{className:"cortex-client-tool-embed__bar",children:[C("span",{children:k("translate_client_tool_title")}),C("button",{type:"button",className:"cortex-client-tool-embed__cancel",onClick:()=>K.current?.cancel(),children:k("translate_client_tool_cancel")})]}),X.phase==="embedded"?C("iframe",{className:"cortex-client-tool-embed__frame",src:X.embedUrl,sandbox:F1(X.embedUrl,window.location.origin,W),title:k("translate_client_tool_title"),ref:(B)=>K.current?.setSource(B?.contentWindow),onLoad:(B)=>{if(!q1(X.embedUrl,window.location.origin,W)&&D1(B.currentTarget,window.location.origin))K.current?.terminate()}}):X.phase==="error"?c_("div",{className:"cortex-client-tool-embed__status",children:[C("span",{children:k("translate_client_tool_failed")}),C("button",{type:"button",className:"cortex-client-tool-embed__retry",onClick:()=>void K.current?.start(),children:k("translate_client_tool_retry")})]}):C("div",{className:"cortex-client-tool-embed__status",children:k("translate_client_tool_loading")})]});return X.phase==="embedded"&&X.surface==="modal"?C(r2,{label:k("translate_client_tool_title"),onCancel:()=>K.current?.cancel(),children:q}):q}function r2({label:_,onCancel:N,children:k}){let $=c1(null);return b0(()=>{let L=$.current;return L?.showModal(),()=>L?.close()},[]),C("dialog",{ref:$,className:"cortex-client-tool-embed-dialog","aria-label":_,onCancel:(L)=>{L.preventDefault(),N()},children:k})}function I0({toolCallPart:_}){let{t:N}=H(),{state:k,active:$,titleKey:L}=J1(_);return c_("div",{className:"cortex-tool-pill",children:[c_("span",{className:"cortex-tool-pill__icon",children:[C("span",{className:F("cortex-tool-pill__spinner",$&&"cortex-tool-pill__spinner--visible")}),C("svg",{className:F("cortex-tool-pill__svg","cortex-tool-pill__svg--check",k==="complete"&&"cortex-tool-pill__svg--visible"),viewBox:"0 0 20 20",fill:"none",children:C("path",{d:"M5.5 10.5 L8.5 13.5 L14.5 7",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),C("svg",{className:F("cortex-tool-pill__svg","cortex-tool-pill__svg--error",k==="error"&&"cortex-tool-pill__svg--visible"),viewBox:"0 0 20 20",fill:"none",children:C("path",{d:"M6.5 6.5 L13.5 13.5 M13.5 6.5 L6.5 13.5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})]}),C("span",{className:F("cortex-tool-pill__title",k==="error"&&"cortex-tool-pill__title--error"),children:N(L)})]})}import{jsx as d2}from"react/jsx-runtime";var x2=X_("code");function S0(){return d2(O_,{labels:x2})}import{jsx as a2}from"react/jsx-runtime";var i2=X_("graph");function c0(){return a2(O_,{labels:i2})}import{jsx as C1}from"react/jsx-runtime";function C0({message:_,toolCallPart:N}){if(!z_(N.state)){if(N.name==="queryGraph")return C1(c0,{});if(N.name==="executeCode")return C1(S0,{})}return C1(v0,{toolCallPart:N,message:_})}import{jsx as U_,jsxs as t2}from"react/jsx-runtime";function n0(_){let{message:N,part:k,debugMode:$=!1,animate:L=!1,streaming:Z=!1}=_,{t:J}=H();function X(){switch(k.type){case"text":return U_(M0,{textPart:k,role:N.role,streaming:Z});case"thinking":return $?U_(y0,{reasoningPart:k,streaming:Z}):U_(B0,{});case"tool-call":return $?U_(w0,{toolCallPart:k}):U_(C0,{toolCallPart:k,message:N});default:return t2("p",{className:"cortex-unhandled-type",children:[J("translate_unhandled_type")," ",k.type]})}}return U_("div",{className:F("cortex-message-part",L&&"cortex-message-part--animated"),children:X()})}import{useState as s2}from"react";import{jsx as P,jsxs as n}from"react/jsx-runtime";function g0({usage:_,modelId:N}){let{t:k}=H(),[$,L]=s2(!1),Z=w_(_)??0;return n("div",{className:F("cortex-token-usage",$&&"cortex-token-usage--expanded"),children:[n("button",{className:"cortex-token-usage__summary",onClick:()=>L((J)=>!J),children:[n("span",{className:"cortex-token-usage__total",children:[P("span",{className:"cortex-token-usage__total-number",children:b(_.total)}),P("span",{className:"cortex-token-usage__total-label",children:k("translate_tokens")})]}),N?P("span",{className:"cortex-token-usage__model",children:N}):null,n("span",{className:"cortex-token-usage__pills",children:[n("span",{className:"cortex-token-usage__pill",children:[P("span",{className:"cortex-token-usage__dot cortex-token-usage__dot--input"}),b(_.input.total)]}),n("span",{className:"cortex-token-usage__pill",children:[P("span",{className:"cortex-token-usage__dot cortex-token-usage__dot--output"}),b(_.output.total)]})]}),Z>0?n("span",{className:"cortex-token-usage__cache-badge",children:[Z,"%"]}):null,P("svg",{className:"cortex-token-usage__chevron",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:P("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.25",strokeLinecap:"round",strokeLinejoin:"round"})})]}),P("div",{className:"cortex-token-usage__details",children:P("div",{className:"cortex-token-usage__details-inner",children:n("div",{className:"cortex-token-usage__columns",children:[n("div",{className:"cortex-token-usage__col",children:[n("div",{className:"cortex-token-usage__col-header",children:[P("span",{className:"cortex-token-usage__dot cortex-token-usage__dot--input"}),P("span",{className:"cortex-token-usage__col-label",children:k("translate_input")}),P("span",{className:"cortex-token-usage__col-total",children:b(_.input.total)})]}),n("div",{className:"cortex-token-usage__rows",children:[_.input.noCache?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_fresh")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.input.noCache)})]}):null,_.input.cacheRead?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_cache_read")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.input.cacheRead)})]}):null,_.input.cacheWrite?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_cache_write")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.input.cacheWrite)})]}):null]}),Z>0?n("div",{className:"cortex-token-usage__cache-bar-row",children:[P("div",{className:"cortex-token-usage__cache-bar",children:P("div",{className:"cortex-token-usage__cache-fill",style:{width:`${Z}%`}})}),P("span",{className:"cortex-token-usage__cache-label",children:k("translate_n_percent_cached",{percent:Z})})]}):null]}),n("div",{className:"cortex-token-usage__col",children:[n("div",{className:"cortex-token-usage__col-header",children:[P("span",{className:"cortex-token-usage__dot cortex-token-usage__dot--output"}),P("span",{className:"cortex-token-usage__col-label",children:k("translate_output")}),P("span",{className:"cortex-token-usage__col-total",children:b(_.output.total)})]}),n("div",{className:"cortex-token-usage__rows",children:[_.output.text?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_text")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.output.text)})]}):null,_.output.reasoning?n("div",{className:"cortex-token-usage__row",children:[P("span",{className:"cortex-token-usage__row-label",children:k("translate_reasoning")}),P("span",{className:"cortex-token-usage__row-value",children:b(_.output.reasoning)})]}):null]})]})]})})})]})}import{jsx as Y_,jsxs as n1}from"react/jsx-runtime";function f0({firing:_,debugMode:N=!1}){let{t:k,config:$}=H(),L=$.locale??"en";return n1("div",{className:N?"cortex-trigger-block cortex-trigger-block--debug":"cortex-trigger-block",children:[n1("div",{className:"cortex-trigger-block__head",children:[Y_("svg",{className:"cortex-trigger-block__icon",width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:Y_("path",{d:"M6.75 1 2.5 6.75h3l-.25 4.25L9.5 5.25h-3z",fill:"currentColor"})}),N&&Y_("span",{children:k("translate_trigger_fired")}),Y_("span",{className:"cortex-trigger-block__name",children:_.name}),Y_("time",{className:"cortex-trigger-block__time",dateTime:_.firedAt,children:V_(_.firedAt,L)})]}),N&&n1("details",{className:"cortex-trigger-block__payload",children:[Y_("summary",{children:k("translate_trigger_payload")}),Y_(__,{data:_.payload,expandDepth:2})]})]})}import{jsx as Z_,jsxs as T0}from"react/jsx-runtime";function p0(_){let{message:N,debugMode:k=!1,animate:$=!1}=_,{messages:L,isAgentWorking:Z,messageMetadata:J}=H(),X=Z&&f_(L)?.id===N.id,G=N.role==="assistant",W=N.parts,K=W.filter((Q,V)=>{if(Q.type==="tool-result")return!1;return k||!X1(Q,V===W.length-1,X)}),y=X?K.length-1:-1,q=J.get(N.id),B=Boolean(q?.isAborted),w=q?.tokenUsage,U=q?.attachments??[];if(q?.trigger)return Z_("div",{className:"cortex-message",children:Z_(f0,{firing:q.trigger,debugMode:k})});let S=k&&!X&&(Boolean(w)||G);return Z_("div",{className:"cortex-message",children:(K.length>0||U.length>0)&&T0("div",{className:"cortex-message-parts",children:[K.map((Q,V)=>Z_(n0,{part:Q,message:N,debugMode:k,animate:$,streaming:V===y},V)),U.length>0&&Z_(K0,{attachments:U}),B&&Z_(V0,{}),S&&T0("div",{className:"cortex-message-debug-zone",children:[w&&Z_(g0,{usage:w,modelId:q?.modelId}),G&&Z_(F0,{messageId:N.id})]})]})})}import{jsx as g1}from"react/jsx-runtime";function m0(_){let{messages:N,selectedThread:k}=H(),$=t_(null),L=t_(!0),Z=t_(!0),J=t_(!1),[X,G]=e2(!1);function W(){let U=$.current;if(U)U.scrollTop=U.scrollHeight}function K(){if(J.current)return;J.current=!0,queueMicrotask(()=>{J.current=!1,W(),L.current=!1})}a_(()=>{let U=$.current;if(K(),G(!0),!U||typeof MutationObserver>"u")return;let S=new MutationObserver(()=>{if(!L.current&&!Z.current)return;K()});return S.observe(U,{childList:!0,subtree:!0,characterData:!0}),()=>S.disconnect()},[]);let y=k?.id;a_(()=>{G(!1),L.current=!0,queueMicrotask(()=>G(!0))},[y]);let q=N[N.length-1],B=q?.role==="user"?q.id:void 0;a_(()=>{if(B)L.current=!0},[B]),a_(()=>{if(!L.current&&!Z.current)return;K()},[N]);function w(){let U=$.current;if(!U)return;Z.current=U.scrollHeight-U.scrollTop-U.clientHeight<100}return g1("div",{className:_.className,children:g1("div",{ref:$,className:"cortex-message-list",onScroll:w,children:N.map((U)=>g1(p0,{message:U,debugMode:_.debugMode,animate:X},U.id))})})}import{jsx as O,jsxs as t}from"react/jsx-runtime";var T1={messages:[],isAgentWorking:!1,isLoadingMessages:!1,hasPendingToolCalls:!1,messageMetadata:new Map};function NN({config:_,className:N}){let k=G_(_);k.current=_;let[$,L]=Q_(),[Z,J]=Q_(),[X,G]=Q_(T1),[W,K]=Q_(!1),[y,q]=Q_(),[B,w]=Q_("chat"),[U,S]=Q_(!1),Q=G_(void 0),V=G_([]),z=G_(void 0),T=G_(null),v=f1(()=>$1(()=>k.current.transport),[]),p=f1(()=>{let Y=Z?.thread;if(!Y)return;return $?.find((A)=>A.id===Y.id)??Y},[$,Z]),u=G_(p);u.current=p;let M=G_(X);M.current=X;let D=j((Y)=>{G((A)=>({...A,...typeof Y==="function"?Y(A):Y}))},[]),g=j((Y,A)=>{L((R)=>{let l=R?.find((M_)=>M_.id===Y);return l?E_(R??[],{...l,isRunning:A}):R})},[]),c=j((Y,A)=>{if(u.current?.id===Y.id&&Q.current)return;let R=u.current;if(u.current=Y,G(T1),J({thread:Y,mode:A?.skipLoadingMessages?"skip":"load",epoch:0}),R&&R.id!==Y.id)k.current.hooks?.onThreadDeselected?.(R);k.current.hooks?.onThreadSelected?.(Y)},[]),m=j(()=>{let Y=u.current;if(!Y&&!Q.current)return;if(u.current=void 0,J(void 0),G(T1),Y)k.current.hooks?.onThreadDeselected?.(Y)},[]),s_=j((Y)=>{J((A)=>({thread:Y,mode:"reload",epoch:(A?.epoch??0)+1,initialMessages:M.current.messages}))},[]),C_=j((Y)=>{let A=u.current;if(A)return Promise.resolve(A.id);return z.current??=v.createThread(Y).then((R)=>{return z.current=void 0,L((l)=>E_(l??[],R)),c(R,{skipLoadingMessages:!0}),R.id},(R)=>{throw z.current=void 0,R}),z.current},[v,c]),r=f1(()=>Q1({api:v,ensureThread:()=>C_()}),[v,C_]),p1=_N(r.subscribe,r.getState,r.getState),l0=j(async(Y,A=[])=>{if(M.current.isAgentWorking||M.current.hasPendingToolCalls)return;let R=Q.current;if(R){await R.send(Y,A);return}V.current.push({prompt:Y,attachments:A});try{await C_(Y)}catch(l){throw V.current=[],l}},[C_]),o0=j(async()=>{await Q.current?.abort()},[]),j0=j((Y,A,R)=>Q.current?.addToolResult(Y,A,R)??Promise.resolve(),[]),h0=j(async(Y)=>{if(u.current?.id===Y)m();await v.deleteThread(Y),L((A)=>A?u_(A,Y):A)},[v,m]),r0=j(()=>{r.discardConsumed(),setTimeout(()=>T.current?.focusInput())},[r]),x0=j(()=>{r.restoreConsumed(u.current?.id)},[r]),e_=j(async()=>{let Y=m_(await v.listThreads());return L(Y),Y},[v]),m1=j((Y)=>{L((R)=>{let l=O1(R??[],Y);return R||l.length?l:R});let A=u.current?.id;switch(Y.type){case"thread:deleted":if(A===Y.payload.threadId)m();break;case"thread:run-started":if(A===Y.payload.thread.id)Q.current?.reattach(Y.payload.thread);break;case"thread:messages-updated":Q.current?.refreshMessages(Y.payload.threadId);break}},[m]);u0(()=>{e_();let Y=p_(v,q),A=!1,R=y1({wsUrl:()=>k.current.wsUrl,transport:{baseUrl:()=>{let l=k.current.transport.baseUrl;return typeof l==="string"?l:l()},getHeaders:()=>k.current.transport.getHeaders()},onEvent:m1,onOpen:()=>{if(!A){A=!0;return}Y(),q(void 0),Y=p_(v,q),e_().then((l)=>{let M_=u.current;if(!M_)return;Q.current?.reattach(l.find((e0)=>e0.id===M_.id)??M_)})}});return()=>{Y(),R.close()}},[v,m1,e_]);let _1=G_(void 0),N1=p?.id;u0(()=>{if(N1===_1.current)return;r.clear(_1.current),_1.current=N1},[N1,r]);let k1=_.locale??"en",J_=j((Y,A)=>A1(k1,Y,A),[k1]),d0=_.viewMode??"helper",i0={config:_,t:J_,api:v,debugMode:W,capabilities:y,threads:$,selectedThread:p,deleteThread:h0,...X,send:l0,abort:o0,addToolResult:j0,queue:{items:p1,...z1(p1),accept:r.accept,remove:r.remove,consumeReady:r.consumeReady}};function u1(Y){c(Y),w("chat"),S(!1)}function a0(){m(),w("chat"),S(!1)}function t0(){w("threads")}function s0(){w("chat")}return O(R1.Provider,{value:i0,children:t("div",{className:F("cortex-widget",N),"data-cortex-theme":_.theme,children:[t("div",{className:F("cortex-widget__container",d0==="full"&&"cortex-widget__container--full",U&&"cortex-widget__container--sidebar-open"),onDragOver:(Y)=>Y.preventDefault(),onDrop:(Y)=>Y.preventDefault(),children:[O(Z0,{className:F("cortex-widget__screen",B==="threads"&&"cortex-widget__screen--active",B!=="threads"&&"cortex-widget__screen--left"),onThreadSelected:u1,onNewChatRequested:a0,onBackRequested:s0}),t("div",{className:F("cortex-widget__screen",B==="chat"&&"cortex-widget__screen--active",B!=="chat"&&"cortex-widget__screen--right"),children:[t("div",{className:"cortex-widget__chat-header",children:[O("button",{onClick:()=>S((Y)=>!Y),className:"cortex-widget__sidebar-toggle-btn",children:O("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:O("path",{d:"M2.5 4h11M2.5 8h11M2.5 12h11",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})})}),O("div",{className:"cortex-widget__chat-title-wrap",children:O("p",{className:"cortex-widget__chat-title",children:p?.title??q_(_.agentName,k1)??J_("translate_new_chat")})}),_.showDebugButton&&O("button",{onClick:()=>K((Y)=>!Y),className:F("cortex-widget__debug-btn",W?"cortex-widget__debug-btn--on":"cortex-widget__debug-btn--off"),children:W?J_("translate_debug"):J_("translate_normal")}),O("button",{type:"button",onClick:t0,"aria-label":J_("translate_history"),className:"cortex-widget__history-btn",children:t("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[O("circle",{cx:"8",cy:"8",r:"5.75",stroke:"currentColor",strokeWidth:"1.3"}),O("path",{d:"M8 5v3l2 1.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round"})]})})]}),!p?O(J0,{onThreadSelected:u1}):X.isLoadingMessages&&!X.isAgentWorking?t("div",{className:"cortex-widget__messages-skeleton",children:[O("div",{className:"cortex-widget__msg-skel cortex-widget__msg-skel--user",children:t("div",{className:"cortex-widget__msg-skel-bubble cortex-widget__msg-skel-bubble--user",children:[O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"13rem"}}),O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"9rem"}})]})}),O("div",{className:"cortex-widget__msg-skel cortex-widget__msg-skel--assistant",children:t("div",{className:"cortex-widget__msg-skel-bubble cortex-widget__msg-skel-bubble--assistant",children:[O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"16rem"}}),O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"18rem"}}),O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"12rem"}})]})}),O("div",{className:"cortex-widget__msg-skel cortex-widget__msg-skel--user",children:O("div",{className:"cortex-widget__msg-skel-bubble cortex-widget__msg-skel-bubble--user",children:O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"11rem"}})})}),O("div",{className:"cortex-widget__msg-skel cortex-widget__msg-skel--assistant",children:t("div",{className:"cortex-widget__msg-skel-bubble cortex-widget__msg-skel-bubble--assistant",children:[O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"14rem"}}),O("div",{className:"cortex-skeleton cortex-widget__msg-skel-line",style:{width:"15rem"}})]})})]}):O(m0,{className:"cortex-widget__messages",debugMode:W}),X.isAgentWorking&&!X.hasPendingToolCalls&&t("div",{className:"cortex-widget__working",children:[t("div",{className:"cortex-widget__working-dots",children:[O("span",{className:"cortex-working-dot"}),O("span",{className:"cortex-working-dot"}),O("span",{className:"cortex-working-dot"})]}),O("span",{className:"cortex-widget__working-text",children:J_("translate_thinking")})]}),p&&!X.hasPendingToolCalls&&y!==void 0?y.messages===!1?O("p",{className:"cortex-widget__messages-disabled",children:J_("translate_messages_disabled")}):O(h_,{ref:T}):null]}),O("div",{className:"cortex-widget__sidebar-backdrop",onClick:()=>S(!1)})]}),Z&&O(k0,{thread:Z.thread,mode:Z.mode,initialMessages:Z.initialMessages,api:v,configRef:k,sessionRef:Q,pendingSendRef:V,patchUi:D,setRunning:g,remount:s_,onTurnFinished:r0,onSendFailed:x0},`${Z.thread.id}:${Z.epoch}`)]})})}export{NN as CortexChatWidget};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m6d/cortex-react",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "React chat widget SDK for cortex servers",
5
5
  "license": "MIT",
6
6
  "sideEffects": [
@@ -41,7 +41,7 @@ export function Message(props: MessageProps) {
41
41
  const metadata = messageMetadata.get(message.id);
42
42
  const isAborted = Boolean(metadata?.isAborted);
43
43
  const tokenUsage = metadata?.tokenUsage;
44
- const attachments = message.role === 'user' ? (metadata?.attachments ?? []) : [];
44
+ const attachments = metadata?.attachments ?? [];
45
45
 
46
46
  // A firing's message reaches the SDK as a user turn; the envelope says
47
47
  // what it really was, and it draws as an event rather than a bubble.
@@ -62,7 +62,7 @@ export function Message(props: MessageProps) {
62
62
 
63
63
  return (
64
64
  <div className="cortex-message">
65
- {visibleParts.length > 0 && (
65
+ {(visibleParts.length > 0 || attachments.length > 0) && (
66
66
  <div className="cortex-message-parts">
67
67
  {visibleParts.map((part, index) => (
68
68
  <MessagePart
@@ -6,7 +6,7 @@ type MessageAttachmentsProps = {
6
6
  attachments: AttachmentSummary[];
7
7
  };
8
8
 
9
- /** The files a user message was sent with, as recorded by the server. */
9
+ /** The files on a message: what the user sent, or what a tool produced for the reply. */
10
10
  export function MessageAttachments(props: MessageAttachmentsProps) {
11
11
  const { api, t } = useCortex();
12
12