vibe64 0.1.47 → 0.1.49

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.
Files changed (150) hide show
  1. package/bin/run.js +1734 -1687
  2. package/bin/server.js +75 -75
  3. package/bin/upgrade-state.js +4539 -4471
  4. package/dist/assets/GithubBrowserTabs-BwpiRS2u.js +1 -0
  5. package/dist/assets/{LocalDatabaseServer-6VzPWZxG.js → LocalDatabaseServer-u_Ky7bNS.js} +1 -1
  6. package/dist/assets/{Vibe64AuthSettingsButton-TLwqAxDo.js → Vibe64AuthSettingsButton-BCwswT1G.js} +1 -1
  7. package/dist/assets/{Vibe64DashboardShell-B4dQ-oHD.js → Vibe64DashboardShell-CWlgrR2B.js} +1 -1
  8. package/dist/assets/{Vibe64DatabaseWorkspace-Bh5WIPOj.js → Vibe64DatabaseWorkspace-Dhs8_H0P.js} +1 -1
  9. package/dist/assets/Vibe64OutputControls-Dn548CZa.js +8 -0
  10. package/dist/assets/{Vibe64RepositoryWorkspace-idDg94lc.js → Vibe64RepositoryWorkspace-C-8S4JUF.js} +1 -1
  11. package/dist/assets/{Vibe64SessionFiles-Z9zxosyl.js → Vibe64SessionFiles-Cx6J7DDN.js} +2 -3
  12. package/dist/assets/{Vibe64UiStoryboardView-CrCDWMdR.js → Vibe64UiStoryboardView-DHyhJiWS.js} +1 -1
  13. package/dist/assets/{Vibe64UnavailableSessions-TqsxvGSf.js → Vibe64UnavailableSessions-Da4RxIhA.js} +1 -1
  14. package/dist/assets/{_sessionId_-7F1VGOou.js → _sessionId_-DCpgDPSI.js} +1 -1
  15. package/dist/assets/_slug_-BbEWp01a.js +25 -0
  16. package/dist/assets/{_slug_-B16mTWjj.css → _slug_-DerKOisL.css} +1 -1
  17. package/dist/assets/{access-Cx9RH95J.js → access-D4di2sCr.js} +1 -1
  18. package/dist/assets/{app-DPx4KKOa.js → app-Adr9Iz8p.js} +1 -1
  19. package/dist/assets/asyncModuleRecovery-DJsn5NrL.js +1 -0
  20. package/dist/assets/{changes-DYsuQLFW.js → changes-3Dd1O8Lu.js} +1 -1
  21. package/dist/assets/client-BAXHGUOC.js +1 -0
  22. package/dist/assets/{client-BYsDPxR3.js → client-CCZIu6yc.js} +1 -1
  23. package/dist/assets/{conversation-3ln-WnbL.css → conversation-CSDHdGDb.css} +1 -1
  24. package/dist/assets/conversation-DG9lp25w.js +8 -0
  25. package/dist/assets/conversation-ErAO1CmH.js +13 -0
  26. package/dist/assets/{dashboard-CWswAbYP.js → dashboard-0tCzDYCX.js} +1 -1
  27. package/dist/assets/english-definitions-DeiQ-jTT.js +1 -0
  28. package/dist/assets/env-DsyQ2MFX.js +1 -0
  29. package/dist/assets/{health-C0f6s-G1.js → health-DyTXU-nb.js} +1 -1
  30. package/dist/assets/{history-BQjETNB9.js → history-BXGAdPMI.js} +1 -1
  31. package/dist/assets/{incoming-COpY201m.js → incoming-yajkdGBY.js} +1 -1
  32. package/dist/assets/{index-MWACm8Pp.css → index-B-dukXUB.css} +1 -1
  33. package/dist/assets/index-CGz4Yow6.js +136 -0
  34. package/dist/assets/{integrations-BBkvNRHu.js → integrations-BMrXET36.js} +10 -2
  35. package/dist/assets/issues-kc1XBZCK.js +1 -0
  36. package/dist/assets/{learning-B8_wHoe1.js → learning-CIE5ghYv.js} +1 -1
  37. package/dist/assets/linkPath-Ch9eft18.js +1 -0
  38. package/dist/assets/{placement-DXvgK433.js → placement-BNmlke_j.js} +1 -1
  39. package/dist/assets/placement-DYM3JJ-F.js +1 -0
  40. package/dist/assets/publish-DTh6amqi.js +3 -0
  41. package/dist/assets/pull-requests-CbfGSSIh.js +1 -0
  42. package/dist/assets/{repository-BNPt7UWc.js → repository-BstMh-bG.js} +1 -1
  43. package/dist/assets/settings-Bf8C6dls.js +1 -0
  44. package/dist/assets/{studioGateApi-BVdclhPL.js → studioGateApi-mkX1eOTX.js} +1 -1
  45. package/dist/assets/{studioUrls-CGKCbM_d.js → studioUrls-B0-GdWh8.js} +1 -1
  46. package/dist/assets/useArchivedVibe64Sessions-DIOpfUxD.js +1 -0
  47. package/dist/assets/useCommand-CVuya6vG.js +1 -0
  48. package/dist/assets/useEndpointResource-7-YDfAxX.js +1 -0
  49. package/dist/assets/usePaths-Y6UuQxmI.js +1 -0
  50. package/dist/assets/{useUiFeedback-B51xtCAK.js → useUiFeedback-Bd3rao6E.js} +1 -1
  51. package/dist/assets/useVibe64ConversationLog-ChJOU2SD.js +1 -0
  52. package/dist/assets/{useVibe64DatabaseTools-BE_yXZFn.js → useVibe64DatabaseTools-DKV-TeNJ.js} +1 -1
  53. package/dist/assets/{useVibe64ProjectScope-D7b8n1gx.js → useVibe64ProjectScope-DXjsKKhl.js} +1 -1
  54. package/dist/assets/useVibe64SessionData-BkIHUrP5.js +1 -0
  55. package/dist/assets/useVibe64SessionSelection-N8wX5oqo.js +1 -0
  56. package/dist/assets/{useVibe64SystemGraph-CDDcsye4.js → useVibe64SystemGraph-Db_eD-X8.js} +1 -1
  57. package/dist/assets/{useVibe64Terminal-Zr3Mig2L.js → useVibe64Terminal-B9EWJ9Ba.js} +2 -2
  58. package/dist/assets/vibe64ProjectScope.local-l5_-E6pq.js +1 -0
  59. package/dist/assets/vibe64RepositoryRealtime-CHT4-6VN.js +1 -0
  60. package/dist/assets/vibe64SessionFocus-CS6Ex53G.js +1 -0
  61. package/dist/assets/vibe64SessionFocus-CSm4YJQD.css +1 -0
  62. package/dist/assets/vibe64SessionRequestConfig-xIx-5jxQ.js +1 -0
  63. package/dist/index.html +26 -22
  64. package/docs/colleague-usage/ai-accounts.md +6 -2
  65. package/docs/colleague-usage/ai-balance-and-allowance.md +15 -2
  66. package/docs/colleague-usage/coding-agent-failures.md +2 -1
  67. package/docs/colleague-usage/coding-agent-goals.md +8 -3
  68. package/docs/colleague-usage/coding-agents.md +16 -0
  69. package/docs/colleague-usage/github-work.md +14 -0
  70. package/docs/colleague-usage/preview-browser-checks.md +5 -3
  71. package/docs/colleague-usage/project-setup.md +6 -3
  72. package/docs/colleague-usage/running-vibe64-on-your-computer.md +3 -1
  73. package/docs/colleague-usage/sessions.md +35 -7
  74. package/docs/colleague-usage/starter-apps.md +3 -0
  75. package/docs/colleague-usage/temporary-chat-context.md +2 -1
  76. package/docs/colleague-usage/temporary-chats.md +17 -5
  77. package/node_modules/@jskit-ai/assistant-core/CHANGELOG.md +539 -0
  78. package/node_modules/@jskit-ai/assistant-core/locales/en.json +383 -0
  79. package/node_modules/@jskit-ai/assistant-core/package.json +3 -2
  80. package/node_modules/@jskit-ai/assistant-runtime/CHANGELOG.md +138 -0
  81. package/node_modules/@jskit-ai/assistant-runtime/README.md +2 -1
  82. package/node_modules/@jskit-ai/assistant-runtime/locales/en.json +137 -0
  83. package/node_modules/@jskit-ai/assistant-runtime/package.json +3 -2
  84. package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/assistantConfigRepository.js +223 -203
  85. package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/conversationsRepository.js +286 -266
  86. package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/messagesRepository.js +270 -250
  87. package/node_modules/@jskit-ai/assistant-voice/locales/en.json +182 -0
  88. package/node_modules/@jskit-ai/assistant-voice/package.json +3 -2
  89. package/node_modules/@jskit-ai/connector-google-calendar/CHANGELOG.md +83 -0
  90. package/node_modules/@jskit-ai/connector-google-calendar/locales/en.json +91 -0
  91. package/node_modules/@jskit-ai/connector-google-calendar/package.json +4 -3
  92. package/node_modules/@jskit-ai/connectors-catalog/CHANGELOG.md +1722 -0
  93. package/node_modules/@jskit-ai/connectors-catalog/README.md +11 -0
  94. package/node_modules/@jskit-ai/connectors-catalog/locales/en.json +3139 -0
  95. package/node_modules/@jskit-ai/connectors-catalog/package.json +5 -4
  96. package/node_modules/@jskit-ai/connectors-core/CHANGELOG.md +183 -0
  97. package/node_modules/@jskit-ai/connectors-core/locales/en.json +92 -0
  98. package/node_modules/@jskit-ai/connectors-core/package.json +3 -2
  99. package/node_modules/@jskit-ai/http-runtime/CHANGELOG.md +31 -0
  100. package/node_modules/@jskit-ai/http-runtime/locales/en.json +14 -0
  101. package/node_modules/@jskit-ai/http-runtime/package.json +3 -2
  102. package/node_modules/@jskit-ai/kernel/CHANGELOG.md +182 -0
  103. package/node_modules/@jskit-ai/kernel/locales/en.json +94 -0
  104. package/node_modules/@jskit-ai/kernel/package.json +6 -2
  105. package/node_modules/@jskit-ai/payments-core/CHANGELOG.md +128 -0
  106. package/node_modules/@jskit-ai/payments-core/locales/en.json +77 -0
  107. package/node_modules/@jskit-ai/payments-core/package.json +3 -2
  108. package/node_modules/@jskit-ai/realtime/CHANGELOG.md +20 -0
  109. package/node_modules/@jskit-ai/realtime/locales/en.json +14 -0
  110. package/node_modules/@jskit-ai/realtime/package.json +3 -2
  111. package/node_modules/@jskit-ai/resource-core/package.json +1 -1
  112. package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
  113. package/node_modules/@jskit-ai/uploads-runtime/CHANGELOG.md +35 -0
  114. package/node_modules/@jskit-ai/uploads-runtime/locales/en.json +15 -0
  115. package/node_modules/@jskit-ai/uploads-runtime/package.json +3 -2
  116. package/node_modules/@local/vibe64-execution/src/host/execHelper.js +49 -48
  117. package/node_modules/@local/vibe64-execution/src/server/gitTurnCheckpointCommand.js +1327 -0
  118. package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +430 -390
  119. package/node_modules/@local/vibe64-genesis/src/server/index.js +45 -45
  120. package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +119 -119
  121. package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +57 -57
  122. package/node_modules/@local/vibe64-sessions/package.json +2 -1
  123. package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +195 -175
  124. package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1385 -1362
  125. package/package.json +15 -15
  126. package/server.bundle.mjs +44206 -42825
  127. package/dist/assets/GithubBrowserTabs-D-Z3TlA8.js +0 -1
  128. package/dist/assets/Vibe64OutputControls-DtybwgL3.js +0 -8
  129. package/dist/assets/_slug_-Bq84T_Iv.js +0 -24
  130. package/dist/assets/conversation-Bn7wpATa.js +0 -2
  131. package/dist/assets/conversation-CNcCrV-R.js +0 -16
  132. package/dist/assets/definitions-CEbi4qae.js +0 -1
  133. package/dist/assets/env-X7EOFLtl.js +0 -1
  134. package/dist/assets/index-CBo1BEk6.js +0 -138
  135. package/dist/assets/issues-BiSiUd5o.js +0 -1
  136. package/dist/assets/placement-B5T1LR7m.js +0 -1
  137. package/dist/assets/publish-CeLZE2AG.js +0 -3
  138. package/dist/assets/pull-requests-pTdQOT7i.js +0 -1
  139. package/dist/assets/settings-lecRzZ-r.js +0 -1
  140. package/dist/assets/useArchivedVibe64Sessions-DHYRnyJD.js +0 -1
  141. package/dist/assets/useCommand-Epd2yHhQ.js +0 -1
  142. package/dist/assets/useEndpointResource-DBRQISI_.js +0 -1
  143. package/dist/assets/usePaths-DdAnjVDj.js +0 -1
  144. package/dist/assets/useVibe64ConversationLog-DboM3tYN.js +0 -1
  145. package/dist/assets/useVibe64SessionData-CreWtQAO.js +0 -1
  146. package/dist/assets/useVibe64SessionSelection-CDaX4uwY.js +0 -1
  147. package/dist/assets/vibe64ProjectScope.local-BxTBYuRg.js +0 -1
  148. package/dist/assets/vibe64RepositoryRealtime-C-J0I5jY.js +0 -1
  149. package/dist/assets/vibe64SessionFocus-DSW5Irm6.css +0 -1
  150. package/dist/assets/vibe64SessionFocus-DzqbVq60.js +0 -1
@@ -1,2 +0,0 @@
1
- import{r as isRecord}from"./normalize-BNAdWJYg.js";var THINKING_HEADING_PATTERN=/^thinking(?:\.{3}|…|:)?$/iu;function normalizeThinkingMessageText(value=``){const lines=String(value||``).trim().split(/\r?\n/u);while(lines.length&&THINKING_HEADING_PATTERN.test(lines[0].trim()))lines.shift();return lines.join(`
2
- `).trim()}var CONVERSATION_LOG_PAGE_LIMIT=10;var messageRoles=[`system`,`user`,`assistant`];function conversationLogPageStart(turns,limit,end=turns.length){if(!limit)return 0;let remaining=limit;let start=end;while(start>0&&remaining>0){start-=1;remaining-=messageRoles.filter(role=>turns[start]?.[role]).length}return turns.slice(0,start).some(turn=>messageRoles.some(role=>turn?.[role]))?start:0}function normalizeConversationLogPagination(pagination={}){const source=isRecord(pagination)?pagination:{};return{...source.pageUnit===`messages`?{pageUnit:`messages`}:{},beforeTurnId:String(source.beforeTurnId||``).trim(),count:Number.isFinite(Number(source.count))?Number(source.count):0,hasMoreBefore:source.hasMoreBefore===true,limit:Number.isFinite(Number(source.limit))?Number(source.limit):0,newestTurnId:String(source.newestTurnId||``).trim(),nextBeforeTurnId:String(source.nextBeforeTurnId||``).trim(),oldestTurnId:String(source.oldestTurnId||``).trim(),totalTurnCount:Number.isFinite(Number(source.totalTurnCount))?Number(source.totalTurnCount):0}}function normalizeConversationLogPage(payload={}){const source=isRecord(payload)?payload:{};const conversationLog=Array.isArray(source.conversationLog)?source.conversationLog:[];const pagination=normalizeConversationLogPagination(source.pagination);return{...source,conversationLog,pagination:{...pagination,count:pagination.count||conversationLog.length,newestTurnId:pagination.newestTurnId||String(conversationLog.at(-1)?.turnId||``).trim(),oldestTurnId:pagination.oldestTurnId||String(conversationLog[0]?.turnId||``).trim()}}}function mergeConversationLogPages(pages=[]){const orderedTurns=[];const indexes=new Map;for(const page of Array.isArray(pages)?pages:[]){const normalized=normalizeConversationLogPage(page);for(const turn of normalized.conversationLog){const turnId=String(turn?.turnId||``).trim();if(!turnId){orderedTurns.push(turn);continue}if(indexes.has(turnId)){const index=indexes.get(turnId);const previous=orderedTurns[index];if(!turn.paginationPartial&&!previous.paginationPartial){orderedTurns[index]=turn;continue}const merged={...previous,...turn};for(const role of messageRoles)merged[role]=turn[role]||previous[role];const[activity,previousActivity]=[turn,previous].map(part=>(part.messages||[...part.thinking||[],...part.commentary||[]]).filter(message=>!messageRoles.includes(message.role)));const retainedActivity=activity.length?activity:previousActivity;merged.thinking=retainedActivity.filter(message=>message.role===`thinking`);merged.commentary=retainedActivity.filter(message=>message.role===`commentary`);merged.messages=[merged.system,merged.user,...retainedActivity,merged.assistant].filter(Boolean);orderedTurns[index]=merged;continue}indexes.set(turnId,orderedTurns.length);orderedTurns.push(turn)}}return{conversationLog:orderedTurns}}function conversationLogReadQuery({beforeTurnId=``,limit=10}={}){return{...beforeTurnId?{beforeTurnId}:{},limit:String(limit)}}function normalizeConversationMessage(message={},{normalizeAttachments=value=>Array.isArray(value)?value:[]}={}){if(!message||typeof message!==`object`||Array.isArray(message))return null;const role=String(message.role||``).trim();const text=role===`thinking`?normalizeThinkingMessageText(message.text):String(message.text||``).trim();if(!role||!text)return null;const attachments=normalizeAttachments(message.attachments);return{at:String(message.at||``).trim(),...attachments.length?{attachments}:{},...String(message.messageId||``).trim()?{messageId:String(message.messageId).trim()}:{},role,text,...message.receipt===false?{receipt:false}:{}}}function chronologicalConversationActivity(messages=[]){return[...messages].sort((left,right)=>String(left?.at||``).localeCompare(String(right?.at||``)))}function normalizeConversationTurn(turn={},index=0,options={}){if(!turn||typeof turn!==`object`||Array.isArray(turn))return null;const user=normalizeConversationMessage(turn.user,options);const assistant=normalizeConversationMessage(turn.assistant,options);const normalizedCommentary=Array.isArray(turn.commentary)?turn.commentary.map(message=>normalizeConversationMessage(message,options)).filter(Boolean):[];const system=normalizeConversationMessage(turn.system,options);const normalizedThinking=Array.isArray(turn.thinking)?turn.thinking.map(message=>normalizeConversationMessage(message,options)).filter(Boolean):[];const activityFromMessages=Array.isArray(turn.messages)?turn.messages.map(message=>normalizeConversationMessage(message,options)).filter(message=>[`commentary`,`thinking`].includes(message?.role)):[];const activity=activityFromMessages.length?activityFromMessages:chronologicalConversationActivity([...normalizedThinking,...normalizedCommentary]);const commentary=activity.filter(message=>message.role===`commentary`);const thinking=activity.filter(message=>message.role===`thinking`);if(!system&&!user&&!assistant&&!activity.length)return null;return{assistant,commentary,messages:[system,user,...activity,assistant].filter(Boolean),...isRecord(turn.metadata)?{metadata:turn.metadata}:{},...system?{system}:{},thinking,turnId:String(turn.turnId||index+1).trim(),user}}function applyConversationLogPatch(payload={},patch=null,options={}){if(patch?.type!==`upsert-turn`||!isRecord(patch.turn))return null;const source=isRecord(payload)?payload:{};const turns=Array.isArray(source.conversationLog)?source.conversationLog:[];const turnId=String(patch.turn.turnId||``).trim();if(!turnId)return null;const existingIndex=turns.findIndex(turn=>String(turn?.turnId||``).trim()===turnId);const existing=turns[existingIndex];const updated={...existing,...patch.turn};if(existing){for(const role of[`system`,`user`,`assistant`])if(existing[role]&&!updated[role])updated[role]=existing[role];const existingTurn=normalizeConversationTurn(existing,0,options);const patchedTurn=normalizeConversationTurn(patch.turn,0,options);for(const role of[`thinking`,`commentary`]){const messages=new Map;for(const message of[...existingTurn?.[role]||[],...patchedTurn?.[role]||[]]){const key=message.messageId||JSON.stringify(message.at?[message.role,message.at]:[message.role,``,message.text]);messages.set(key,message)}updated[role]=chronologicalConversationActivity([...messages.values()])}const replies=new Map;for(const message of[existing,patch.turn].flatMap(turn=>Array.isArray(turn.messages)?turn.messages.filter(message=>message?.role===`assistant`):[turn.assistant].filter(Boolean)))replies.set(message.messageId||JSON.stringify(message.at?[message.at]:[``,message.text]),message);if(!replies.size&&updated.assistant)replies.set(``,updated.assistant);const orderedReplies=chronologicalConversationActivity([...replies.values()]);updated.messages=[updated.system,updated.user,...chronologicalConversationActivity([...updated.thinking,...updated.commentary,...orderedReplies.slice(0,-1)]),orderedReplies.at(-1)].filter(Boolean)}const nextTurns=(existingIndex>=0?turns.map((turn,index)=>index===existingIndex?updated:turn):[...turns,patch.turn]).sort((left,right)=>String(left?.turnId||``).localeCompare(String(right?.turnId||``),void 0,{numeric:true}));const pagination=normalizeConversationLogPagination(source.pagination);const limit=Number.parseInt(String(options.limit||``),10);const limitedTurns=Number.isFinite(limit)&&limit>0?nextTurns.slice(pagination.pageUnit===`messages`?conversationLogPageStart(nextTurns,limit):-limit):nextTurns;const wasTrimmed=limitedTurns.length<nextTurns.length;const hasMoreBefore=pagination.hasMoreBefore||wasTrimmed;const oldestTurnId=String(limitedTurns[0]?.turnId||``).trim();const beforeCursor=oldestTurnId===pagination.oldestTurnId?pagination.nextBeforeTurnId||oldestTurnId:oldestTurnId;return{...source,conversationLog:limitedTurns,pagination:{...pagination,count:limitedTurns.length,hasMoreBefore,newestTurnId:String(limitedTurns.at(-1)?.turnId||``).trim(),nextBeforeTurnId:hasMoreBefore?beforeCursor:``,oldestTurnId}}}export{normalizeConversationLogPage as a,mergeConversationLogPages as i,normalizeConversationTurn as n,normalizeConversationLogPagination as o,conversationLogReadQuery as r,normalizeThinkingMessageText as s,applyConversationLogPatch as t};
@@ -1,16 +0,0 @@
1
- import{$ as mergeModels,$n as normalizeProps,D as createVNode,E as createTextVNode,Ft as useModel,Ht as watch,Lt as useSlots,On as unref,Pt as useId,St as resolveComponent,Yt as withDirectives,Zn as normalizeClass,_ as createBaseVNode,b as createElementBlock,bt as renderList,ct as onMounted,er as normalizeStyle,et as mergeProps,g as computed,it as onBeforeUnmount,mt as openBlock,o as Fragment,pn as onScopeDispose,pt as onUpdated,qt as withCtx,tr as toDisplayString,tt as nextTick,v as createBlock,vn as ref,w as createSlots,wt as resolveDynamicComponent,xt as renderSlot,y as createCommentVNode,z as guardReactiveProps}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{_ as VIcon,cr as withKeys,lr as withModifiers,p as VProgressLinear,sr as vShow,t as VAvatar}from"./VAvatar-H2hyOWlB.js";import{t as VSelect}from"./VSelect-Dqnp_CFi.js";import{t as VMenu}from"./VMenu-DnhVIMrr.js";import{n as VChipGroup,t as VChip}from"./VChip-Uixfx461.js";import{t as VTextField}from"./VTextField-CnkGeXaT.js";import{Bn as mdiPaperclip,Er as mdiStopCircleOutline,Ft as mdiFileOutline,Hn as mdiPencil,L as mdiCheck,M as mdiBrain,Pn as mdiMinus,Q as mdiCloseCircleOutline,Sn as mdiLightbulbOnOutline,Un as mdiPencilOutline,X as mdiClose,Y as mdiClockOutline,ar as mdiRobotOutline,c as mdiAccountOutline,er as mdiRefresh,f as mdiAlertCircleOutline,it as mdiCogOutline,lr as mdiSend,n as mdiAccountCircleOutline,rn as mdiInformationOutline,tn as mdiImageOutline,wt as mdiDownload,z as mdiCheckCircleOutline}from"./mdi-X9prU-DG.js";import{t as VBtn}from"./VBtn-Sj5jAuOx.js";import{t as VAlert}from"./VAlert-7_VM9EUm.js";import{t as VAutocomplete}from"./VAutocomplete-Ck14ZtUL.js";import{t as VSheet}from"./VSheet-CMhyReNa.js";import{t as VDialog}from"./VDialog-Drp3yzSH.js";import{n as VCardText,o as VCardActions,t as VCard}from"./VCard-DExT9Cji.js";import{t as VSpacer}from"./VSpacer-BSTt0_VA.js";import{t as VSkeletonLoader}from"./VSkeletonLoader-pc4bBTxv.js";import{t as VTextarea}from"./VTextarea-wqoRFl1K.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{s as normalizeThinkingMessageText}from"./conversation-Bn7wpATa.js";function attachmentSizeLabel(size){const bytes=Number(size);if(!Number.isFinite(bytes)||bytes<0)return``;if(bytes<1024)return`${bytes} B`;if(bytes<1048576)return`${(bytes/1024).toFixed(1)} KB`;return`${(bytes/1048576).toFixed(1)} MB`}var _hoisted_1$14={key:0,"aria-label":`Attached files`,class:`assistant-conversation-attachments`};var _hoisted_2$13={class:`assistant-conversation-attachments__details`};var _hoisted_3$10=[`title`];var _hoisted_4$9={key:0,class:`assistant-conversation-attachments__size text-label-small`};var _sfc_main$14={__name:`AssistantMessageAttachments`,props:{attachments:{type:Array,default:()=>[]},previewEnabled:Boolean},emits:[`preview`],setup(__props,{emit:__emit}){const emit=__emit;function attachmentIcon(attachment){return/\.(?:avif|bmp|gif|heic|heif|jpe?g|png|svg|webp)$/iu.test(attachment.fileName)?mdiImageOutline:mdiFileOutline}function attachmentKey(attachment,index){return attachment.attachmentId||`${index}:${attachment.fileName}:${attachment.size??``}`}return(_ctx,_cache)=>{return __props.attachments.length?(openBlock(),createElementBlock(`ul`,_hoisted_1$14,[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.attachments,(attachment,index)=>{return openBlock(),createElementBlock(`li`,{key:attachmentKey(attachment,index),class:`assistant-conversation-attachments__item`},[(openBlock(),createBlock(resolveDynamicComponent(__props.previewEnabled?`button`:`span`),{type:__props.previewEnabled?`button`:void 0,class:`assistant-conversation-attachments__open`,onClick:$event=>__props.previewEnabled&&emit(`preview`,attachment)},{default:withCtx(()=>[createVNode(VIcon,{"aria-hidden":`true`,class:`assistant-conversation-attachments__icon`,icon:attachmentIcon(attachment),size:`19`},null,8,[`icon`]),createBaseVNode(`span`,_hoisted_2$13,[createBaseVNode(`span`,{class:`assistant-conversation-attachments__name text-body-small font-weight-medium`,title:attachment.fileName},toDisplayString(attachment.reference)+` `+toDisplayString(attachment.fileName),9,_hoisted_3$10),unref(attachmentSizeLabel)(attachment.size)?(openBlock(),createElementBlock(`span`,_hoisted_4$9,toDisplayString(unref(attachmentSizeLabel)(attachment.size)),1)):createCommentVNode(``,true)])]),_:2},1032,[`type`,`onClick`]))])}),128))])):createCommentVNode(``,true)}}};var AssistantMessageAttachments_default=_plugin_vue_export_helper_default(_sfc_main$14,[[`__scopeId`,`data-v-b3d978b9`]]);function parseLongTextReviewBlocks(value,options={}){const lines=expandCompactPipeTableLines(String(value||``).replace(/\r\n/gu,`
2
- `).split(`
3
- `));const blocks=[];let paragraphLines=[];let listLevels=[];let codeLines=null;let detailsBlock=null;const preserveParagraphLineBreaks=options.preserveParagraphLineBreaks===true;const parseDetailsOpening=(trimmed=``)=>{if(trimmed===`<details>`)return{closed:false,remainder:``,summary:`Details`};const inlineMatch=trimmed.match(/^<details>\s*<summary>\s*(.*?)\s*<\/summary>\s*(.*)$/u);if(!inlineMatch)return null;let remainder=inlineMatch[2]||``;let closed=false;const closingMatch=remainder.match(/^(.*?)\s*<\/details>$/u);if(closingMatch){remainder=closingMatch[1]||``;closed=true}return{closed,remainder:remainder.trim(),summary:inlineMatch[1].trim()||`Details`}};const flushParagraph=()=>{const text=preserveParagraphLineBreaks?paragraphLines.join(`
4
- `).trim():paragraphLines.join(` `).replace(/\s+/gu,` `).trim();paragraphLines=[];if(text)blocks.push({text,type:`paragraph`})};const flushList=()=>{if(listLevels[0]?.block.items.length)blocks.push(listLevels[0].block);listLevels=[]};const nestListIn=(parentItem,type)=>{const nested={items:[],type};parentItem.blocks=[...parentItem.blocks||[],nested];return nested};const pushListItem=({indent,markerWidth,text,type})=>{while(listLevels.length>1&&indent<listLevels.at(-2).contentIndent)listLevels.pop();let level=listLevels.at(-1);if(level&&indent>=level.contentIndent){level={block:nestListIn(level.block.items.at(-1),type),contentIndent:0};listLevels.push(level)}else if(level&&level.block.type!==type){if(listLevels.length===1){flushList();level=null}else level.block=nestListIn(listLevels.at(-2).block.items.at(-1),type)}if(!level){level={block:{items:[],type},contentIndent:0};listLevels=[level]}level.block.items.push({text});level.contentIndent=indent+markerWidth};const flushCode=()=>{if(codeLines)blocks.push({text:codeLines.join(`
5
- `).replace(/\n+$/u,``),type:`code`});codeLines=null};const flushDetails=()=>{if(detailsBlock)blocks.push({blocks:parseLongTextReviewBlocks(detailsBlock.lines.join(`
6
- `),options),summary:detailsBlock.summary||`Details`,type:`details`});detailsBlock=null};for(let lineIndex=0;lineIndex<lines.length;lineIndex+=1){const line=lines[lineIndex].replace(/\s+$/u,``);const trimmed=line.trim();if(detailsBlock){const summaryMatch=trimmed.match(/^<summary>\s*(.*?)\s*<\/summary>$/u);const closingMatch=trimmed.match(/^(.*?)\s*<\/details>$/u);if(/^<\/details>$/u.test(trimmed))flushDetails();else if(closingMatch){const beforeClose=closingMatch[1].trim();if(beforeClose)detailsBlock.lines.push(beforeClose);flushDetails()}else if(summaryMatch)detailsBlock.summary=summaryMatch[1].trim()||detailsBlock.summary;else detailsBlock.lines.push(line);continue}if(codeLines){if(/^```/u.test(trimmed))flushCode();else codeLines.push(line);continue}if(/^```/u.test(trimmed)){flushParagraph();flushList();codeLines=[];continue}const detailsOpening=parseDetailsOpening(trimmed);if(detailsOpening){flushParagraph();flushList();detailsBlock={lines:detailsOpening.remainder?[detailsOpening.remainder]:[],summary:detailsOpening.summary};if(detailsOpening.closed)flushDetails();continue}if(!trimmed){flushParagraph();flushList();continue}const tableBlock=parsePipeTableAt(lines,lineIndex);if(tableBlock){flushParagraph();flushList();blocks.push(tableBlock.block);lineIndex=tableBlock.endIndex;continue}const headingMatch=trimmed.match(/^(#{1,6})\s+(.+)$/u);if(headingMatch){flushParagraph();flushList();blocks.push({level:headingMatch[1].length,text:headingMatch[2].trim(),type:`heading`});continue}const listItemMatch=line.match(/^(\s*)(?:([-*+•])|(\d+[.)]))(\s+)(.*)$/u);if(listItemMatch){flushParagraph();const[,leading,bullet,ordinal,spacing,text]=listItemMatch;pushListItem({indent:indentWidth(leading),markerWidth:(bullet||ordinal).length+Math.min(spacing.length,4),text:text.trim(),type:ordinal?`ol`:`ul`});continue}if(listLevels.length){listLevels.at(-1).block.items.at(-1).text+=` ${trimmed}`;continue}paragraphLines.push(trimmed)}flushParagraph();flushList();flushCode();flushDetails();return blocks}function indentWidth(leading=``){let width=0;for(const character of leading)width=character===` `?width+4-width%4:width+1;return width}function expandCompactPipeTableLines(lines=[]){return lines.flatMap(line=>{const text=String(line||``);const trimmed=text.trim();const compactRowBoundaries=text.match(/\|\s+\|/gu)||[];if(!trimmed.startsWith(`|`)||compactRowBoundaries.length<2)return[line];const expandedLines=text.replace(/\|\s+\|/gu,`|
7
- |`).split(`
8
- `);if(!tableAlignments(parsePipeTableRow(expandedLines[1])))return[line];return expandedLines})}function parsePipeTableAt(lines=[],startIndex=0){const headers=parsePipeTableRow(lines[startIndex]);const alignments=tableAlignments(parsePipeTableRow(lines[startIndex+1]));if(!headers||!alignments||headers.length!==alignments.length)return null;const rows=[];let rowIndex=startIndex+2;while(rowIndex<lines.length){const row=parsePipeTableRow(lines[rowIndex]);if(!row||row.length!==headers.length)break;rows.push(row);rowIndex+=1}return{block:{alignments,headers,rows,type:`table`},endIndex:rowIndex-1}}function parsePipeTableRow(value=``){const trimmed=String(value||``).trim();if(!trimmed.startsWith(`|`)||!trimmed.includes(`|`,1))return null;const cells=trimmed.replace(/^\|/u,``).replace(/\|$/u,``).split(`|`).map(cell=>cell.trim());return cells.length>=2?cells:null}function tableAlignments(cells=null){if(!Array.isArray(cells)||!cells.length)return null;const alignments=[];for(const cell of cells){const marker=String(cell||``).replace(/\s+/gu,``);if(!/^:?-{3,}:?$/u.test(marker))return null;if(marker.startsWith(`:`)&&marker.endsWith(`:`))alignments.push(`center`);else if(marker.endsWith(`:`))alignments.push(`right`);else alignments.push(`left`)}return alignments}function pushInlineTextPart(parts=[],text=``){if(!text)return;const previous=parts.at(-1);if(previous?.type===`text`){previous.text+=text;return}parts.push({text,type:`text`})}function closingMarkdownBracketIndex(text=``,start=0){let depth=1;for(let index=start+1;index<text.length;index+=1){const character=text[index];if(character===`\\`){index+=1;continue}if(character===`[`)depth+=1;else if(character===`]`){depth-=1;if(depth===0)return index}}return-1}function closingMarkdownDestinationIndex(text=``,start=0){for(let index=start+1;index<text.length;index+=1){if(text[index]===`\\`){index+=1;continue}if(text[index]===`)`)return index}return-1}function normalizeMarkdownLinkHref(value=``){const href=String(value||``).trim().replace(/^<|>$/gu,``);const protocolText=href.replace(/[\u0000-\u0020\u007f]/gu,``);return/^(?:javascript|vbscript|data):/iu.test(protocolText)?``:href}function markdownLinkAt(text=``,start=0){if(text[start]!==`[`)return null;const labelEnd=closingMarkdownBracketIndex(text,start);if(labelEnd===-1||text[labelEnd+1]!==`(`)return null;const destinationStart=labelEnd+1;const destinationEnd=closingMarkdownDestinationIndex(text,destinationStart);if(destinationEnd===-1)return null;const label=text.slice(start+1,labelEnd);const href=normalizeMarkdownLinkHref(text.slice(destinationStart+1,destinationEnd));if(!label||!href)return null;return{end:destinationEnd+1,href,text:label}}function parseLongTextInlineParts(value=``){const text=String(value||``);const parts=[];let cursor=0;while(cursor<text.length){if(text[cursor]===`[`){const link=markdownLinkAt(text,cursor);if(link){parts.push({href:link.href,text:link.text,type:`link`});cursor=link.end;continue}}if(text[cursor]==="`"){const end=text.indexOf("`",cursor+1);if(end>cursor+1){parts.push({text:text.slice(cursor+1,end),type:`code`});cursor=end+1;continue}}if(text.startsWith(`**`,cursor)){const end=text.indexOf(`**`,cursor+2);if(end>cursor+2){parts.push({text:text.slice(cursor+2,end),type:`strong`});cursor=end+2;continue}}pushInlineTextPart(parts,text[cursor]);cursor+=1}return parts.length?parts:[{text,type:`text`}]}var _hoisted_1$13={key:0};var _hoisted_2$12={key:1};var _hoisted_3$9=[`href`,`onClick`];var _hoisted_4$8={key:3};var _sfc_main$13={__name:`LongTextInlineParts`,props:{text:{default:``,type:String}},emits:[`link-click`],setup(__props,{emit:__emit}){const props=__props;const emit=__emit;const parts=computed(()=>parseLongTextInlineParts(props.text));function partKey(part,partIndex){return`${part.type}:${partIndex}:${part.text}`}function handleLinkClick(event,part={}){emit(`link-click`,{event,href:part.href||``,text:part.text||``})}return(_ctx,_cache)=>{return openBlock(true),createElementBlock(Fragment,null,renderList(parts.value,(part,partIndex)=>{return openBlock(),createElementBlock(Fragment,{key:partKey(part,partIndex)},[part.type===`strong`?(openBlock(),createElementBlock(`strong`,_hoisted_1$13,toDisplayString(part.text),1)):part.type===`code`?(openBlock(),createElementBlock(`code`,_hoisted_2$12,toDisplayString(part.text),1)):part.type===`link`?(openBlock(),createElementBlock(`a`,{key:2,href:part.href,onClick:$event=>handleLinkClick($event,part)},toDisplayString(part.text),9,_hoisted_3$9)):(openBlock(),createElementBlock(`span`,_hoisted_4$8,toDisplayString(part.text),1))],64)}),128)}}};var LongTextInlineParts_default=_plugin_vue_export_helper_default(_sfc_main$13,[[`__scopeId`,`data-v-cde45916`]]);var _hoisted_1$12={key:2,class:`studio-long-text-review__code`};var _hoisted_2$11={key:3,class:`studio-long-text-review__table-wrap`,role:`region`,"aria-label":`Table`,tabindex:`0`};var _hoisted_3$8={class:`studio-long-text-review__table`};var _hoisted_4$7={key:4,class:`studio-long-text-review__details`};var _hoisted_5$7={class:`studio-long-text-review__details-summary`};var _hoisted_6$5={key:5,class:`studio-long-text-review__paragraph`};var _sfc_main$12={__name:`LongTextPreviewBlocks`,props:{blocks:{type:Array,required:true},compact:{type:Boolean,default:false}},emits:[`link-click`],setup(__props,{emit:__emit}){const emit=__emit;function isListBlock(block){return block.type===`ul`||block.type===`ol`}function blockKey(block,blockIndex){return`${block.type}:${blockIndex}`}function headingTag(level){if(level<=1)return`h3`;if(level===2)return`h4`;return`h5`}function tableCellClass(block={},columnIndex=0){const alignment=Array.isArray(block.alignments)?block.alignments[columnIndex]:``;return{"studio-long-text-review__table-cell--center":alignment===`center`,"studio-long-text-review__table-cell--right":alignment===`right`}}return(_ctx,_cache)=>{const _component_LongTextPreviewBlocks=resolveComponent(`LongTextPreviewBlocks`,true);return openBlock(),createElementBlock(`div`,{class:normalizeClass([`studio-long-text-review__blocks`,{"studio-long-text-review__blocks--compact":__props.compact}])},[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.blocks,(block,blockIndex)=>{return openBlock(),createElementBlock(Fragment,{key:blockKey(block,blockIndex)},[block.type===`heading`?(openBlock(),createBlock(resolveDynamicComponent(headingTag(block.level)),{key:0,class:`studio-long-text-review__heading`},{default:withCtx(()=>[createVNode(LongTextInlineParts_default,{text:block.text,onLinkClick:_cache[0]||(_cache[0]=$event=>emit(`link-click`,$event))},null,8,[`text`])]),_:2},1024)):isListBlock(block)?(openBlock(),createBlock(resolveDynamicComponent(block.type),{key:1,class:`studio-long-text-review__list`},{default:withCtx(()=>[(openBlock(true),createElementBlock(Fragment,null,renderList(block.items,(item,itemIndex)=>{return openBlock(),createElementBlock(`li`,{key:`item:${blockIndex}:${itemIndex}`},[createVNode(LongTextInlineParts_default,{text:item.text,onLinkClick:_cache[1]||(_cache[1]=$event=>emit(`link-click`,$event))},null,8,[`text`]),item.blocks?.length?(openBlock(),createBlock(_component_LongTextPreviewBlocks,{key:0,class:`studio-long-text-review__nested-list`,compact:__props.compact,blocks:item.blocks,onLinkClick:_cache[2]||(_cache[2]=$event=>emit(`link-click`,$event))},null,8,[`compact`,`blocks`])):createCommentVNode(``,true)])}),128))]),_:2},1024)):block.type===`code`?(openBlock(),createElementBlock(`pre`,_hoisted_1$12,[createBaseVNode(`code`,null,toDisplayString(block.text),1)])):block.type===`table`?(openBlock(),createElementBlock(`div`,_hoisted_2$11,[createBaseVNode(`table`,_hoisted_3$8,[createBaseVNode(`thead`,null,[createBaseVNode(`tr`,null,[(openBlock(true),createElementBlock(Fragment,null,renderList(block.headers,(header,columnIndex)=>{return openBlock(),createElementBlock(`th`,{key:`header:${blockIndex}:${columnIndex}`,class:normalizeClass(tableCellClass(block,columnIndex)),scope:`col`},[createVNode(LongTextInlineParts_default,{text:header,onLinkClick:_cache[3]||(_cache[3]=$event=>emit(`link-click`,$event))},null,8,[`text`])],2)}),128))])]),createBaseVNode(`tbody`,null,[(openBlock(true),createElementBlock(Fragment,null,renderList(block.rows,(row,rowIndex)=>{return openBlock(),createElementBlock(`tr`,{key:`row:${blockIndex}:${rowIndex}`},[(openBlock(true),createElementBlock(Fragment,null,renderList(row,(cell,columnIndex)=>{return openBlock(),createElementBlock(`td`,{key:`cell:${blockIndex}:${rowIndex}:${columnIndex}`,class:normalizeClass(tableCellClass(block,columnIndex))},[createVNode(LongTextInlineParts_default,{text:cell,onLinkClick:_cache[4]||(_cache[4]=$event=>emit(`link-click`,$event))},null,8,[`text`])],2)}),128))])}),128))])])])):block.type===`details`?(openBlock(),createElementBlock(`details`,_hoisted_4$7,[createBaseVNode(`summary`,_hoisted_5$7,[createVNode(LongTextInlineParts_default,{text:block.summary||`Details`,onLinkClick:_cache[5]||(_cache[5]=$event=>emit(`link-click`,$event))},null,8,[`text`])]),createVNode(_component_LongTextPreviewBlocks,{class:`studio-long-text-review__details-body`,compact:``,blocks:block.blocks||[],onLinkClick:_cache[6]||(_cache[6]=$event=>emit(`link-click`,$event))},null,8,[`blocks`])])):(openBlock(),createElementBlock(`p`,_hoisted_6$5,[createVNode(LongTextInlineParts_default,{text:block.text,onLinkClick:_cache[7]||(_cache[7]=$event=>emit(`link-click`,$event))},null,8,[`text`])]))],64)}),128))],2)}}};var LongTextPreviewBlocks_default=_plugin_vue_export_helper_default(_sfc_main$12,[[`__scopeId`,`data-v-236046d1`]]);var _hoisted_1$11={key:0,class:`d-flex flex-wrap align-center ga-1 text-caption text-error`,role:`status`};var _sfc_main$11={__name:`AssistantConversationStatus`,props:{message:{type:Object,required:true}},emits:[`check-delivery`,`link-click`],setup(__props){return(_ctx,_cache)=>{return __props.message.delivery?(openBlock(),createElementBlock(`div`,_hoisted_1$11,[createBaseVNode(`span`,null,toDisplayString(__props.message.delivery.error||__props.message.text),1),createVNode(VBtn,{variant:`text`,color:`error`,size:`x-small`,"aria-label":`Retry delivery check`,disabled:__props.message.delivery.checking,onClick:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`check-delivery`,__props.message.delivery.messageId))},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.message.delivery.checking?`Checking…`:`Retry`),1)]),_:1},8,[`disabled`])])):renderSlot(_ctx.$slots,`default`,{},()=>[createVNode(LongTextPreviewBlocks_default,{compact:``,blocks:__props.message.blocks,onLinkClick:_cache[1]||(_cache[1]=$event=>_ctx.$emit(`link-click`,$event))},null,8,[`blocks`])],void 0,1)}}};var DEFAULT_SETTLE_DELAYS_MS=[0,80];function readElement(value){return unref(value)||null}function hasWindowTimer(name){return typeof window!==`undefined`&&typeof window[name]===`function`}function waitForLayoutFrame(){if(typeof window===`undefined`||typeof window.requestAnimationFrame!==`function`)return Promise.resolve();return new Promise(resolve=>{window.requestAnimationFrame(resolve)})}function normalizedScrollBehavior(value=``){return value===`smooth`?`smooth`:`auto`}function scrollElementToBottom(targetElement,behavior=`auto`){if(behavior===`smooth`&&typeof targetElement.scrollTo===`function`){targetElement.scrollTo({behavior,top:targetElement.scrollHeight});return}targetElement.scrollTop=targetElement.scrollHeight}function useScrollToBottom({anchor=null,enabled=true,scrollAnchorIntoView=true,settleDelaysMs=DEFAULT_SETTLE_DELAYS_MS,target}={}){const scheduledTimers=new Set;let disposed=false;let scheduleVersion=0;function isEnabled(){return unref(enabled)!==false}function clearScheduledTimers(){if(hasWindowTimer(`clearTimeout`))scheduledTimers.forEach(timer=>{window.clearTimeout(timer)});scheduledTimers.clear()}function clearScheduledScrolls(){scheduleVersion+=1;clearScheduledTimers()}function scrollNow(options={}){if(disposed||!isEnabled())return;const targetElement=readElement(target);if(!targetElement)return;const behavior=normalizedScrollBehavior(options?.behavior);scrollElementToBottom(targetElement,behavior);if(scrollAnchorIntoView!==false){const anchorOptions={block:`end`};if(behavior===`smooth`)anchorOptions.behavior=behavior;readElement(anchor)?.scrollIntoView?.(anchorOptions)}scrollElementToBottom(targetElement,behavior)}function scheduleScroll(delayMs,options={},version=scheduleVersion){if(disposed||version!==scheduleVersion||!isEnabled()||!hasWindowTimer(`setTimeout`))return;const timer=window.setTimeout(()=>{scheduledTimers.delete(timer);if(version!==scheduleVersion)return;scrollNow(options)},delayMs);scheduledTimers.add(timer)}async function scrollAfterLayout(options={}){if(disposed||!isEnabled())return;const version=scheduleVersion+1;scheduleVersion=version;clearScheduledTimers();await nextTick();if(version!==scheduleVersion)return;scrollNow(options);await waitForLayoutFrame();if(version!==scheduleVersion)return;scrollNow(options);clearScheduledTimers();settleDelaysMs.forEach(delayMs=>{scheduleScroll(delayMs,options,version)})}onBeforeUnmount(()=>{disposed=true;clearScheduledScrolls()});return{clearScheduledScrolls,scrollAfterLayout,scrollNow}}var _hoisted_1$10={class:`assistant-progress`};var _hoisted_2$10=[`aria-expanded`];var _sfc_main$10={__name:`AssistantProgress`,props:{messages:{type:Array,default:()=>[]},pending:{type:Boolean,default:false},previewLimit:{type:Number,default:2}},setup(__props){const props=__props;const expanded=ref(false);const previewCount=computed(()=>props.pending?props.previewLimit:0);const previewMessages=computed(()=>previewCount.value>0?props.messages.filter(message=>message.preview!==false).slice(-previewCount.value):[]);const visibleMessages=computed(()=>{if(expanded.value)return props.messages;return previewMessages.value});const toggleLabel=computed(()=>{if(expanded.value)return previewMessages.value.length>0?`Show latest ${previewMessages.value.length} progress ${previewMessages.value.length===1?`update`:`updates`}`:`Hide progress updates`;return`Show all ${props.messages.length} progress ${props.messages.length===1?`update`:`updates`}`});return(_ctx,_cache)=>{return openBlock(),createElementBlock(`div`,_hoisted_1$10,[expanded.value||__props.messages.length>previewMessages.value.length?(openBlock(),createElementBlock(`button`,{key:0,"aria-expanded":expanded.value,class:`assistant-progress__toggle`,type:`button`,onClick:_cache[0]||(_cache[0]=$event=>expanded.value=!expanded.value)},toDisplayString(toggleLabel.value),9,_hoisted_2$10)):createCommentVNode(``,true),(openBlock(true),createElementBlock(Fragment,null,renderList(visibleMessages.value,(message,index)=>{return openBlock(),createElementBlock(`div`,{key:message.key||message.id||index,class:`assistant-progress__message`},toDisplayString(message.text),1)}),128))])}}};var AssistantProgress_default=_plugin_vue_export_helper_default(_sfc_main$10,[[`__scopeId`,`data-v-f1b16717`]]);var ANSWER_CHOICE_MIN_COUNT=2;var ANSWER_CHOICE_MAX_COUNT=6;var ANSWER_CHOICE_LABEL_MAX_LENGTH=96;var ANSWER_CHOICE_VALUE_MAX_LENGTH=320;function inactiveAnswerChoiceSugar(){return{choices:[]}}function normalizedChoiceText(value=``){return String(value||``).trim().replace(/\s+/gu,` `)}function answerChoiceHeadingLine(line=``){return/^(possible answers|choices):$/iu.test(String(line||``).trim())}function answerChoiceLineText(line=``){const match=String(line||``).trim().match(/^[-*]\s+(.+)$/u);return match?normalizedChoiceText(match[1]):``}function answerChoiceFromLine(line=``){const text=answerChoiceLineText(line);if(!text||text.length>ANSWER_CHOICE_VALUE_MAX_LENGTH)return null;const recommendedMatch=text.match(/^(.{1,96}?)\s+\(recommended\)$/iu);if(recommendedMatch){const label=normalizedChoiceText(recommendedMatch[1]);return label?{label,recommended:true,value:label}:null}const colonMatch=text.match(/^([^:]{1,96}):\s+(.+)$/u);if(colonMatch){const label=normalizedChoiceText(colonMatch[1]);const value=normalizedChoiceText(colonMatch[2]);return label&&value?{label,value}:null}const parentheticalMatch=text.match(/^(.{1,96}?)\s+\(([^()]+)\)$/u);if(parentheticalMatch){const rawLabel=normalizedChoiceText(parentheticalMatch[1]);const markdownTokenMatch=rawLabel.match(/^(?:`([^`]+)`|\*\*([^*]+)\*\*)$/u);const label=normalizedChoiceText(markdownTokenMatch?.[1]||markdownTokenMatch?.[2]||rawLabel);if(markdownTokenMatch)return label?{label,value:label}:null;const value=normalizedChoiceText(parentheticalMatch[2]);return label&&value?{label,value}:null}return{label:text,value:text}}function validAnswerChoice(choice={}){return Boolean(choice&&choice.label&&choice.value&&choice.label.length<=ANSWER_CHOICE_LABEL_MAX_LENGTH&&choice.value.length<=ANSWER_CHOICE_VALUE_MAX_LENGTH)}function parseAnswerChoicePrompt(value=``){const lines=String(value||``).replace(/\r\n/gu,`
9
- `).split(`
10
- `);if(lines.some(line=>{const match=String(line||``).trim().match(/^\[(?:Q)?\d+\]\s+(.+)/iu);return match&&/\?(?:[*_`”"'’)\]]*)$/u.test(match[1].trim())}))return inactiveAnswerChoiceSugar();const headingIndex=lines.findIndex(answerChoiceHeadingLine);if(headingIndex<0)return inactiveAnswerChoiceSugar();const choices=[];for(let index=headingIndex+1;index<lines.length;index+=1){const line=lines[index];if(!String(line||``).trim())continue;const choice=answerChoiceFromLine(line);if(!choice){if(choices.length)break;return inactiveAnswerChoiceSugar()}choices.push(choice)}const uniqueValues=new Set(choices.map(choice=>choice.value));if(choices.length<ANSWER_CHOICE_MIN_COUNT||choices.length>ANSWER_CHOICE_MAX_COUNT||uniqueValues.size!==choices.length||choices.some(choice=>!validAnswerChoice(choice)))return inactiveAnswerChoiceSugar();return{choices}}var UI_QUESTION_FIELD_PREFIX=`__ui_question_`;function inactiveNumberedQuestionSugar(){return{intro:``,outro:``,questions:[]}}function numberedQuestionMarkerMatch(line=``){return String(line||``).match(/^\[(?:Q)?(\d+)\]\s+(.+)$/iu)}function trailingAnswerChoiceHeadingLine(line=``){return/^(possible answers|choices):$/iu.test(String(line||``).trim())}function trailingAnswerChoiceLine(line=``){return/^[-*]\s+.+/u.test(String(line||``).trim())}function numberedQuestionLabelLooksLikeQuestion(label=``){return/\?(?:[*_`”"'’)\]]*)(?:\s|$)/u.test(String(label||``).trim())}function validNumberedQuestions(questions=[]){return questions.every(question=>question.choices.length>0||numberedQuestionLabelLooksLikeQuestion(question.label))}function numberedQuestionChoice(line=``){const choice=answerChoiceFromLine(line);if(!choice)return null;const label=String(choice.label||``).trim();const selectLabel=label.split(/(?:\s*[—–]\s*|\s+-\s+)/u,1)[0].trim()||label;return{...choice,recommended:choice.recommended===true,selectLabel}}function trailingAnswerChoiceBlock(lines=[],startIndex=0){if(!trailingAnswerChoiceHeadingLine(lines[startIndex]))return null;const choices=[];let nextIndex=startIndex+1;while(nextIndex<lines.length&&trailingAnswerChoiceLine(lines[nextIndex])){const choice=numberedQuestionChoice(lines[nextIndex]);if(!choice)return null;choices.push(choice);nextIndex+=1}const uniqueValues=new Set(choices.map(choice=>choice.value));if(choices.length<2||choices.length>6||uniqueValues.size!==choices.length)return null;return{choices,nextIndex}}function questionForMarkerMatch(match=[],index=0){const numberText=String(match[1]||``);const number=Number(numberText);const label=String(match[2]||``).trim();if(!Number.isSafeInteger(number)||number!==index+1||String(number)!==numberText||!label)return null;return{choices:[],label,name:`${UI_QUESTION_FIELD_PREFIX}${number}`,number}}function rawMarkdownLines(rawLines=[],start=0,end=rawLines.length){return rawLines.slice(start,end).join(`
11
- `).replace(/^(?:[ \t]*\n)+/u,``).trimEnd()}function parseLineNumberedQuestionPrompt(value=``){const rawLines=String(value||``).split(/\r?\n/u);const rawIndexes=rawLines.flatMap((rawLine,rawIndex)=>rawLine.trim()?[rawIndex]:[]);const lines=rawIndexes.map(rawIndex=>rawLines[rawIndex].trim());if(!lines.length)return inactiveNumberedQuestionSugar();let introEnd=rawLines.length;let outroStart=rawLines.length;const questions=[];for(let index=0;index<lines.length;){const line=lines[index];const match=numberedQuestionMarkerMatch(line);if(!match){if(!questions.length){index+=1;continue}const choiceBlock=trailingAnswerChoiceBlock(lines,index);if(choiceBlock){const question=questions.at(-1);if(question.choices.length)return inactiveNumberedQuestionSugar();question.choices=choiceBlock.choices;index=choiceBlock.nextIndex;continue}const trailingLines=lines.slice(index);if(trailingLines.some(trailingLine=>trailingAnswerChoiceHeadingLine(trailingLine))||trailingLines.some(trailingLine=>numberedQuestionMarkerMatch(trailingLine)))return inactiveNumberedQuestionSugar();outroStart=rawIndexes[index];break}const question=questionForMarkerMatch(match,questions.length);if(!question)return inactiveNumberedQuestionSugar();if(!questions.length)introEnd=rawIndexes[index];questions.push(question);index+=1}if(!questions.length||!validNumberedQuestions(questions))return inactiveNumberedQuestionSugar();return{intro:rawMarkdownLines(rawLines,0,introEnd),outro:rawMarkdownLines(rawLines,outroStart),questions}}function parseInlineNumberedQuestionPrompt(value=``){const source=String(value||``).replace(/\r\n/gu,`
12
- `).trim();const firstMarker=source.search(/\[(?:Q)?\d+\]\s+/iu);if(firstMarker<0)return inactiveNumberedQuestionSugar();const intro=source.slice(0,firstMarker).trim();const questionText=source.slice(firstMarker).trim();if(!questionText||questionText.includes(`
13
- `))return inactiveNumberedQuestionSugar();const markers=[...questionText.matchAll(/\[(?:Q)?(\d+)\]\s+/giu)];if(markers.length<2||markers[0].index!==0)return inactiveNumberedQuestionSugar();const questions=[];for(const[index,match]of markers.entries()){const labelStart=match.index+match[0].length;const nextMarker=markers[index+1];const labelEnd=nextMarker?nextMarker.index:questionText.length;const question=questionForMarkerMatch([match[0],match[1],questionText.slice(labelStart,labelEnd)],questions.length);if(!question)return inactiveNumberedQuestionSugar();questions.push(question)}if(!validNumberedQuestions(questions))return inactiveNumberedQuestionSugar();return{intro,outro:``,questions}}function parseNumberedQuestionPrompt(value=``){const inlineQuestions=parseInlineNumberedQuestionPrompt(value);return inlineQuestions.questions.length?inlineQuestions:parseLineNumberedQuestionPrompt(value)}function numberedQuestionSubmissionText(questions=[],values={}){return questions.map(question=>`[${question.number}] ${String(values[question.name]||``).trim()}`).join(`
14
- `)}var DEFAULT_SCROLL_FOLLOW_THRESHOLD_PX=48;function numericElementValue(value){const number=Number(value);return Number.isFinite(number)?number:0}function scrollDistanceFromBottom(element=null){if(!element)return 0;return Math.max(0,numericElementValue(element.scrollHeight)-numericElementValue(element.scrollTop)-numericElementValue(element.clientHeight))}function scrollElementNearBottom(element=null,thresholdPx=48){const threshold=Math.max(0,numericElementValue(thresholdPx));return scrollDistanceFromBottom(element)<=threshold}var _hoisted_1$9={key:2,class:`assistant-transcript__settling`,"aria-hidden":`true`};var _hoisted_2$9={class:`assistant-transcript__error-content`};var _hoisted_3$7={key:0,class:`assistant-transcript__welcome`,role:`status`};var _hoisted_4$6={class:`assistant-transcript__assistant-header`};var _hoisted_5$6={class:`assistant-transcript__avatar assistant-transcript__avatar--assistant`};var _hoisted_6$4={class:`assistant-transcript__message-header`};var _hoisted_7$4={key:1,class:`assistant-transcript__load-more`};var _hoisted_8$4={key:0,class:`assistant-transcript__load-more-error`};var _hoisted_9$4={key:0,class:`assistant-transcript__system`};var _hoisted_10$2={class:`assistant-transcript__system-body`};var _hoisted_11$2={class:`assistant-transcript__system-meta`};var _hoisted_12$2={key:0};var _hoisted_13$2={key:1,class:`assistant-transcript__message-row assistant-transcript__message-row--user`};var _hoisted_14$1={class:`assistant-transcript__user-content`};var _hoisted_15={key:1,class:`assistant-transcript__plain-user`};var _hoisted_16=[`aria-expanded`,`onClick`];var _hoisted_17={key:1,class:`assistant-transcript__message-footer assistant-transcript__message-footer--user`};var _hoisted_18={key:0};var _hoisted_19={key:1,role:`status`};var _hoisted_20={key:2,class:`assistant-transcript__optimistic-failure`};var _hoisted_21={role:`status`};var _hoisted_22={key:0,class:`assistant-transcript__optimistic-actions`};var _hoisted_23={class:`assistant-transcript__avatar assistant-transcript__avatar--user`};var _hoisted_24=[`data-message-role`];var _hoisted_25={class:`assistant-transcript__assistant-header`};var _hoisted_26={class:`assistant-transcript__avatar assistant-transcript__avatar--assistant`};var _hoisted_27={class:`assistant-transcript__message-header`};var _hoisted_28=[`title`];var _hoisted_29={class:`assistant-transcript__message assistant-transcript__message--assistant`};var _hoisted_30={key:1,class:`assistant-transcript__questions`};var _hoisted_31={class:`assistant-transcript__question-number`};var _hoisted_32={class:`assistant-transcript__question-content`};var _hoisted_33={class:`assistant-transcript__question-text`};var _hoisted_34={key:0,class:`assistant-transcript__question-choices`};var _hoisted_35={key:0};var _hoisted_36={key:0,class:`assistant-transcript__message-footer assistant-transcript__message-footer--assistant`};var USER_MESSAGE_COLLAPSE_MIN_CHARACTERS=360;var USER_MESSAGE_PREVIEW_MAX_CHARACTERS=280;var USER_MESSAGE_PREVIEW_MAX_LINES=4;var DISPLAY_MESSAGE_CACHE_LIMIT=500;var USER_SCROLL_INTENT_RESET_MS=600;var LOAD_MORE_THRESHOLD_PX=160;var _sfc_main$9={__name:`AssistantTranscript`,props:{cancellableDelivery:{type:Boolean,default:false},systemLabel:{type:String,default:`Status`},previewMessage:{type:Object,default:null},working:{type:Boolean,default:void 0},progressPreviewLimit:{type:Number,default:2},userMessageFormat:{type:String,default:`formatted`,validator:value=>[`plain`,`formatted`].includes(value)},assistantLabel:{default:`Assistant`,type:String},error:{default:``,type:String},errorReloadable:{default:false,type:Boolean},followLatestKey:{default:0,type:[Number,String]},hasMoreBefore:{default:false,type:Boolean},loading:{default:false,type:Boolean},loadingMore:{default:false,type:Boolean},loadMoreError:{default:``,type:String},reloadable:{default:false,type:Boolean},reloading:{default:false,type:Boolean},retainWhenHidden:{default:false,type:Boolean},scrollKey:{default:``,type:[Number,String]},turns:{default:()=>[],type:Array},variant:{default:`main`,validator:value=>[`main`,`task`].includes(value),type:String},visible:{default:true,type:Boolean},welcomeMessage:{default:``,type:String}},emits:[`cancel-turn`,`check-delivery`,`edit-turn`,`load-more`,`link-click`,`reload`,`resend-turn`],setup(__props,{emit:__emit}){function previewForTurn(turn){const preview=turn.previewMessage||props.previewMessage;return(preview?.messageId||preview?.id)===turn.turnId?preview:null}const props=__props;const emit=__emit;const bodyElement=ref(null);const bottomElement=ref(null);const expandedUserMessages=ref(new Set);const isWorking=computed(()=>props.working??props.turns.some(turn=>turn.pending));const followingLatest=ref(true);const initialScrollSettled=ref(false);const userScrollIntent=ref(false);const displayMessageCache=new Map;let liveScrollFrame=0;let userScrollIntentTimer=null;let initialScrollVersion=0;let loadMoreScrollSnapshot=null;let retainedReaderScrollSnapshot=null;let loadMoreRequestVersion=0;let pendingTailFollow=false;let previousScrollTop=0;const KEYBOARD_SCROLL_KEYS=new Set([` `,`ArrowDown`,`ArrowUp`,`End`,`Home`,`PageDown`,`PageUp`,`Spacebar`]);const timeFormatter=new Intl.DateTimeFormat(void 0,{year:`numeric`,month:`short`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`});function displayTime(value=``){const date=new Date(String(value||``));if(Number.isNaN(date.getTime()))return``;return timeFormatter.format(date)}function userMessagePreviewText(value=``){const text=String(value||``);const characters=[...text];const lines=text.split(/\r\n?|\n/u);if(characters.length<=USER_MESSAGE_COLLAPSE_MIN_CHARACTERS&&lines.length<=USER_MESSAGE_PREVIEW_MAX_LINES)return``;const preview=[...lines.slice(0,USER_MESSAGE_PREVIEW_MAX_LINES).join(`
15
- `)].slice(0,USER_MESSAGE_PREVIEW_MAX_CHARACTERS).join(``).trimEnd();return preview?`${preview}…`:``}function displayMessage(message=null,{allowNumberedQuestions=false,preserveParagraphLineBreaks=false,previewUserMessage=false}={},cacheKey=``){if(!message)return null;const normalizedCacheKey=String(cacheKey||``).trim();const cached=normalizedCacheKey?displayMessageCache.get(normalizedCacheKey):null;if(cached&&cached.allowNumberedQuestions===allowNumberedQuestions&&cached.attachments===message.attachments&&cached.at===message.at&&cached.messageId===message.messageId&&cached.preserveParagraphLineBreaks===preserveParagraphLineBreaks&&cached.previewUserMessage===previewUserMessage&&cached.role===message.role&&cached.text===message.text)return{...message,...cached.value};const messageText=message.text;const questionInput=allowNumberedQuestions?parseNumberedQuestionPrompt(messageText):{intro:``,outro:``,questions:[]};const hasQuestions=questionInput.questions.length>0;const previewText=previewUserMessage?userMessagePreviewText(message.text):``;const value={blocks:parseLongTextReviewBlocks(hasQuestions?questionInput.intro:messageText,{preserveParagraphLineBreaks}),outroBlocks:parseLongTextReviewBlocks(hasQuestions?questionInput.outro:``,{preserveParagraphLineBreaks}),previewBlocks:previewText?parseLongTextReviewBlocks(previewText,{preserveParagraphLineBreaks:true}):null,questions:hasQuestions?questionInput.questions:[],displayAt:displayTime(message.at)};if(normalizedCacheKey){if(displayMessageCache.size>=DISPLAY_MESSAGE_CACHE_LIMIT&&!displayMessageCache.has(normalizedCacheKey))displayMessageCache.delete(displayMessageCache.keys().next().value);displayMessageCache.set(normalizedCacheKey,{allowNumberedQuestions,attachments:message.attachments,at:message.at,messageId:message.messageId,preserveParagraphLineBreaks,previewUserMessage,role:message.role,text:message.text,value})}return{...message,...value}}function displayThinkingMessage(message=null){if(!message)return null;const text=normalizeThinkingMessageText(message.text);if(!text)return null;return{...message,text,displayAt:displayTime(message.at)}}function conversationAgentMessages(turn={}){if(Array.isArray(turn.messages))return turn.messages.filter(message=>[`assistant`,`commentary`,`thinking`].includes(String(message?.role||``).trim()));return[...Array.isArray(turn.thinking)?turn.thinking:[],...Array.isArray(turn.commentary)?turn.commentary:[],turn.assistant].filter(Boolean)}function conversationMessageKey(message={},index=0){return[String(message.messageId||``).trim(),String(message.role||``).trim(),String(message.at||``).trim(),index].join(`:`)}const displayEntries=computed(()=>{const candidates=[];for(const[index,turn]of props.turns.entries()){const turnId=String(turn.turnId||index+1);const userDelivery=turn.user&&turn.system?.delivery&&turn.system.delivery.messageId===turn.user.messageId?turn.system:null;const messages=[turn.system&&!userDelivery&&{...turn.system,role:`system`},turn.user&&{...turn.user,role:`user`},...conversationAgentMessages(turn)].filter(Boolean);for(const[messageIndex,message]of messages.entries()){const role=String(message.role||``).trim();const key=`${turnId}:${conversationMessageKey(message,messageIndex)}`;const displayed=role===`thinking`?displayThinkingMessage(message):displayMessage(message,{allowNumberedQuestions:role!==`user`&&role!==`system`,preserveParagraphLineBreaks:role===`user`,previewUserMessage:role===`user`},key);if(!displayed)continue;candidates.push({key,role,turn:{...turn,turnId},message:displayed,sortAt:turn.optimistic&&turn.optimistic.status!==`accepted`&&turn.optimistic.id===message.messageId?NaN:Date.parse(message.at),delivery:role===`user`?userDelivery:null})}}const dated=candidates.filter(entry=>Number.isFinite(entry.sortAt)).sort((a,b)=>a.sortAt-b.sortAt)[Symbol.iterator]();const entries=[];for(const candidate of candidates){const entry=Number.isFinite(candidate.sortAt)?dated.next().value:candidate;const previous=entries.at(-1);if(entry.role===`thinking`&&previous?.role===`thinking`)previous.messages.push({...entry.message,key:entry.key});else entries.push({...entry,...entry.role===`thinking`?{messages:[{...entry.message,key:entry.key}]}:{}})}for(const[index,entry]of entries.entries())if(entry.role===`thinking`)entry.key=`progress:${entries[index+1]?.key||`tail`}`;return entries});function handleLongTextLinkClick(payload){emit(`link-click`,payload)}function userMessageCollapsible(message=null){return Array.isArray(message?.previewBlocks)}function userMessageExpanded(turn={}){return expandedUserMessages.value.has(String(turn.turnId||``))}function toggleExpandedKey(expandedKeys,key){const next=new Set(expandedKeys.value);if(next.has(key))next.delete(key);else next.add(key);expandedKeys.value=next}function toggleUserMessage(turn={}){const key=String(turn.turnId||``);if(!key)return;toggleExpandedKey(expandedUserMessages,key)}const loadingIndicatorVisible=computed(()=>Boolean(props.loading&&!displayEntries.value.length));const initialScrollPending=computed(()=>Boolean(props.visible&&displayEntries.value.length&&!initialScrollSettled.value));function messageScrollKey(message=null){if(!message)return`empty`;return[message.messageId||``,message.role||``,message.at||``,String(message.text||``)].join(`/`)}const timelineScrollTrigger=computed(()=>[loadingIndicatorVisible.value?`loading`:`ready`,displayEntries.value.length?`has-messages`:`empty`,props.scrollKey].join(`:`));const latestRenderedTailKey=computed(()=>{const entry=displayEntries.value.at(-1);if(!entry)return``;return[entry.key,isWorking.value,entry.role===`thinking`?entry.messages.map(messageScrollKey).join(`+`):messageScrollKey(entry.message),entry.turn.optimistic?.status||``,entry.turn.optimistic?.error||``].join(`:`)});const autoScrollEnabled=computed(()=>Boolean(props.visible&&followingLatest.value));const{clearScheduledScrolls,scrollAfterLayout:scrollToLatestMessage,scrollNow:scrollToLatestMessageNow}=useScrollToBottom({anchor:bottomElement,enabled:autoScrollEnabled,scrollAnchorIntoView:false,target:bodyElement});function clearUserScrollIntent(){if(userScrollIntentTimer&&typeof window!==`undefined`&&typeof window.clearTimeout===`function`)window.clearTimeout(userScrollIntentTimer);userScrollIntentTimer=null;userScrollIntent.value=false}function resumePendingTailFollow(){const shouldResume=pendingTailFollow&&followingLatest.value;pendingTailFollow=false;if(shouldResume)queueLiveBottomScroll()}function markUserScrollIntent(){retainedReaderScrollSnapshot=null;userScrollIntent.value=true;clearLiveBottomScroll();clearScheduledScrolls();if(userScrollIntentTimer&&typeof window!==`undefined`&&typeof window.clearTimeout===`function`)window.clearTimeout(userScrollIntentTimer);if(typeof window===`undefined`||typeof window.setTimeout!==`function`)return;userScrollIntentTimer=window.setTimeout(()=>{userScrollIntentTimer=null;userScrollIntent.value=false;resumePendingTailFollow()},USER_SCROLL_INTENT_RESET_MS)}function markKeyboardScrollIntent(event={}){if(!KEYBOARD_SCROLL_KEYS.has(String(event.key||``))||event.defaultPrevented)return;const target=event.target;const tagName=String(target?.tagName||``).toLowerCase();if(target?.isContentEditable||[`input`,`select`,`textarea`].includes(tagName)||[` `,`Spacebar`].includes(event.key)&&[`a`,`button`].includes(tagName))return;markUserScrollIntent()}function scrollToLatestMessageAfterLayout({behavior=`auto`,force=false}={}){if(force){retainedReaderScrollSnapshot=null;followingLatest.value=true;clearUserScrollIntent()}return scrollToLatestMessage({behavior})}function queueInitialBottomScroll(){const version=initialScrollVersion+1;initialScrollVersion=version;initialScrollSettled.value=false;if(props.retainWhenHidden&&!props.visible)return;scrollToLatestMessageAfterLayout({behavior:`auto`,force:true}).finally(()=>{if(initialScrollVersion===version)initialScrollSettled.value=true})}function queueLiveBottomScroll({force=false}={}){if(userScrollIntent.value&&!force){pendingTailFollow=true;return}if(force){retainedReaderScrollSnapshot=null;pendingTailFollow=false;followingLatest.value=true;clearUserScrollIntent()}if(props.retainWhenHidden&&!props.visible)return;if(liveScrollFrame)return;if(typeof window===`undefined`||typeof window.requestAnimationFrame!==`function`){scrollToLatestMessageAfterLayout({behavior:`auto`});return}liveScrollFrame=window.requestAnimationFrame(()=>{liveScrollFrame=0;scrollToLatestMessageNow({behavior:`auto`})})}function clearLiveBottomScroll(){if(liveScrollFrame&&typeof window!==`undefined`&&typeof window.cancelAnimationFrame===`function`)window.cancelAnimationFrame(liveScrollFrame);liveScrollFrame=0}function updateLatestFollowFromScroll(event={}){if(props.retainWhenHidden&&!props.visible)return;const target=event?.currentTarget||bodyElement.value;if(retainedReaderScrollSnapshot?.restoring){previousScrollTop=target?.scrollTop||0;return}const scrollTop=target?.scrollTop||0;const scrolledUp=scrollTop<previousScrollTop;previousScrollTop=scrollTop;if(loadMoreScrollSnapshot&&!loadMoreScrollSnapshot.completed){loadMoreScrollSnapshot.scrollTop=scrollTop;loadMoreScrollSnapshot.anchor=visibleHistoryAnchor(target);loadMoreScrollSnapshot.scrollHeight=target.scrollHeight}const shouldFollow=scrollElementNearBottom(target);if(!shouldFollow&&!userScrollIntent.value&&followingLatest.value)return;followingLatest.value=shouldFollow;if(shouldFollow){clearUserScrollIntent();resumePendingTailFollow();return}clearLiveBottomScroll();clearScheduledScrolls();if(scrolledUp&&initialScrollSettled.value&&scrollTop<=LOAD_MORE_THRESHOLD_PX&&!props.loadMoreError)requestLoadMore()}function visibleHistoryAnchor(element){const top=element.getBoundingClientRect().top;for(const turn of element.querySelectorAll(`.assistant-transcript__turn`)){const bounds=turn.getBoundingClientRect();if(bounds.bottom>top)return{element:turn,offset:bounds.top-top}}return null}function restoreAnchoredScroll(element,snapshot){const anchor=snapshot.anchor;if(anchor&&element.contains(anchor.element)){const offset=anchor.element.getBoundingClientRect().top-element.getBoundingClientRect().top;previousScrollTop=element.scrollTop+offset-anchor.offset}else previousScrollTop=snapshot.scrollTop+(element.scrollHeight-snapshot.scrollHeight);element.scrollTop=previousScrollTop}async function waitForTwoFrames(){if(typeof window!==`undefined`&&typeof window.requestAnimationFrame===`function`)await new Promise(resolve=>window.requestAnimationFrame(()=>window.requestAnimationFrame(resolve)))}async function restoreRetainedReaderScroll(){const snapshot=retainedReaderScrollSnapshot;snapshot.restoring=true;await nextTick();for(let pass=0;pass<2;pass+=1){const element=bodyElement.value;if(retainedReaderScrollSnapshot!==snapshot||element!==snapshot.body||snapshot.scrollKey!==props.scrollKey||!props.retainWhenHidden||!props.visible||followingLatest.value||loadMoreScrollSnapshot){if(retainedReaderScrollSnapshot===snapshot)retainedReaderScrollSnapshot=null;return}restoreAnchoredScroll(element,snapshot);if(pass===0)await waitForTwoFrames()}if(retainedReaderScrollSnapshot===snapshot)retainedReaderScrollSnapshot=null}function requestLoadMore(){if(props.retainWhenHidden&&!props.visible||!props.hasMoreBefore||props.loadingMore||loadMoreScrollSnapshot)return;followingLatest.value=false;pendingTailFollow=false;markUserScrollIntent();const element=bodyElement.value;const version=loadMoreRequestVersion+1;loadMoreRequestVersion=version;loadMoreScrollSnapshot=element?{anchor:visibleHistoryAnchor(element),scrollHeight:element.scrollHeight,scrollKey:props.scrollKey,scrollTop:element.scrollTop,version}:null;emit(`load-more`,{complete:({changed=false}={})=>{completeLoadMoreRequest(version,changed)}})}function clearLoadMoreScrollSnapshot(){loadMoreRequestVersion+=1;loadMoreScrollSnapshot=null}async function completeLoadMoreRequest(version,changed){const snapshot=loadMoreScrollSnapshot;if(!snapshot||snapshot.version!==version)return;if(!changed||snapshot.scrollKey!==props.scrollKey){clearLoadMoreScrollSnapshot();return}snapshot.completed=true;await nextTick();if(loadMoreScrollSnapshot?.version!==version)return;const passes=props.retainWhenHidden?2:1;for(let pass=0;pass<passes;pass+=1){if(props.retainWhenHidden&&!props.visible||loadMoreScrollSnapshot?.version!==version||snapshot.scrollKey!==props.scrollKey)return;const element=bodyElement.value;if(element)restoreAnchoredScroll(element,snapshot);if(pass+1<passes)await waitForTwoFrames()}clearLoadMoreScrollSnapshot()}onBeforeUnmount(()=>{retainedReaderScrollSnapshot=null;clearLiveBottomScroll();clearUserScrollIntent();clearLoadMoreScrollSnapshot()});watch(()=>props.scrollKey,()=>{expandedUserMessages.value=new Set;displayMessageCache.clear()});watch(()=>[timelineScrollTrigger.value,latestRenderedTailKey.value],([timelineKey,value],[previousTimelineKey,previous]=[])=>{if(timelineKey!==previousTimelineKey)return;if(!value||value===previous)return;queueLiveBottomScroll({force:false})},{flush:`post`});watch(()=>[props.scrollKey,props.followLatestKey],([scrollKey,value],[previousScrollKey,previous]=[])=>{if(scrollKey!==previousScrollKey||value===previous)return;queueLiveBottomScroll({force:true})},{flush:`post`});watch(timelineScrollTrigger,()=>{retainedReaderScrollSnapshot=null;clearLoadMoreScrollSnapshot();queueInitialBottomScroll()},{flush:`post`,immediate:true});watch(()=>props.error,()=>{if(followingLatest.value)queueLiveBottomScroll()},{flush:`post`});watch(()=>props.visible,visible=>{if(visible)return;retainedReaderScrollSnapshot=null;const element=bodyElement.value;if(props.retainWhenHidden&&initialScrollSettled.value&&!followingLatest.value&&!loadMoreScrollSnapshot&&element?.clientHeight>0)retainedReaderScrollSnapshot={anchor:visibleHistoryAnchor(element),body:element,scrollHeight:element.scrollHeight,scrollKey:props.scrollKey,scrollTop:element.scrollTop}},{flush:`sync`});watch(()=>props.visible,visible=>{if(props.retainWhenHidden){if(!visible){clearLiveBottomScroll();clearScheduledScrolls();clearUserScrollIntent();initialScrollVersion+=1}else if(loadMoreScrollSnapshot?.completed)completeLoadMoreRequest(loadMoreScrollSnapshot.version,true);else if(!initialScrollSettled.value)queueInitialBottomScroll();else if(retainedReaderScrollSnapshot)restoreRetainedReaderScroll();else queueLiveBottomScroll();return}clearLoadMoreScrollSnapshot();if(visible)queueLiveBottomScroll({force:true})},{flush:`post`});return(_ctx,_cache)=>{return __props.visible||__props.retainWhenHidden?withDirectives((openBlock(),createElementBlock(`section`,{key:0,class:normalizeClass([`assistant-transcript`,[`assistant-transcript--${__props.variant}`,{"assistant-transcript--retained":__props.retainWhenHidden,"assistant-transcript--error":__props.error}]]),"aria-label":`Conversation history`},[__props.reloadable?(openBlock(),createBlock(VBtn,{key:0,"aria-label":__props.reloading?`Reloading chat`:`Reload chat`,class:`assistant-transcript__reload`,disabled:__props.reloading,icon:unref(mdiRefresh),size:`x-small`,title:__props.reloading?`Reloading chat`:`Reload chat`,type:`button`,variant:`text`,onClick:_cache[0]||(_cache[0]=$event=>emit(`reload`))},null,8,[`aria-label`,`disabled`,`icon`,`title`])):createCommentVNode(``,true),loadingIndicatorVisible.value&&!__props.reloadable?(openBlock(),createBlock(VSkeletonLoader,{key:1,"aria-label":`Loading conversation`,class:`assistant-transcript__loading-skeleton`,type:`list-item-avatar-two-line@3`})):createCommentVNode(``,true),initialScrollPending.value?(openBlock(),createElementBlock(`div`,_hoisted_1$9,[createVNode(VSkeletonLoader,{"aria-label":`Preparing conversation`,class:`assistant-transcript__settling-skeleton`,type:`list-item-avatar-two-line@3`})])):createCommentVNode(``,true),__props.error?(openBlock(),createBlock(VAlert,{key:3,class:`assistant-transcript__error`,icon:false,density:`compact`,type:`warning`,variant:`tonal`},{default:withCtx(()=>[createBaseVNode(`div`,_hoisted_2$9,[__props.errorReloadable&&!__props.reloadable?(openBlock(),createBlock(VBtn,{key:0,disabled:__props.reloading,"min-height":32,size:`small`,"aria-label":__props.reloading?`Reloading chat`:`Reload chat`,type:`button`,variant:`text`,onClick:_cache[1]||(_cache[1]=$event=>emit(`reload`))},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.reloading?`Reloading…`:`Reload chat`),1)]),_:1},8,[`disabled`,`aria-label`])):createCommentVNode(``,true),createBaseVNode(`span`,null,toDisplayString(__props.error),1)])]),_:1})):createCommentVNode(``,true),createBaseVNode(`div`,{ref_key:`bodyElement`,ref:bodyElement,"aria-label":`Conversation messages`,class:normalizeClass([`assistant-transcript__body`,{"assistant-transcript__body--settling":initialScrollPending.value}]),tabindex:`0`,onKeydownCapture:markKeyboardScrollIntent,onPointerdown:withModifiers(markUserScrollIntent,[`self`]),onScrollPassive:updateLatestFollowFromScroll,onTouchmovePassive:markUserScrollIntent,onWheelPassive:markUserScrollIntent},[__props.welcomeMessage?(openBlock(),createElementBlock(`div`,_hoisted_3$7,[createBaseVNode(`div`,_hoisted_4$6,[createBaseVNode(`span`,_hoisted_5$6,[createVNode(VIcon,{icon:unref(mdiRobotOutline),size:`16`},null,8,[`icon`])]),createBaseVNode(`div`,_hoisted_6$4,[createBaseVNode(`span`,null,toDisplayString(__props.assistantLabel),1)])]),renderSlot(_ctx.$slots,`welcome`,{},()=>[createBaseVNode(`p`,null,toDisplayString(__props.welcomeMessage),1)],true)])):createCommentVNode(``,true),__props.hasMoreBefore||__props.loadingMore||__props.loadMoreError?(openBlock(),createElementBlock(`div`,_hoisted_7$4,[createVNode(VBtn,{color:`primary`,disabled:__props.loadingMore||!__props.hasMoreBefore,size:`x-small`,type:`button`,variant:`tonal`,onClick:requestLoadMore},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.loadingMore?`Loading older messages…`:`Load older messages`),1)]),_:1},8,[`disabled`]),__props.loadMoreError?(openBlock(),createElementBlock(`div`,_hoisted_8$4,toDisplayString(__props.loadMoreError),1)):createCommentVNode(``,true)])):createCommentVNode(``,true),(openBlock(true),createElementBlock(Fragment,null,renderList(displayEntries.value,entry=>{return openBlock(),createElementBlock(`article`,{key:entry.key,class:`assistant-transcript__turn`},[entry.role===`system`?(openBlock(),createElementBlock(`div`,_hoisted_9$4,[createVNode(VIcon,{class:`assistant-transcript__system-icon`,icon:unref(mdiInformationOutline),size:`15`},null,8,[`icon`]),createBaseVNode(`div`,_hoisted_10$2,[createBaseVNode(`div`,_hoisted_11$2,[createBaseVNode(`span`,null,toDisplayString(__props.systemLabel),1),entry.message.displayAt?(openBlock(),createElementBlock(`time`,_hoisted_12$2,toDisplayString(entry.message.displayAt),1)):createCommentVNode(``,true)]),renderSlot(_ctx.$slots,`system-message`,{message:entry.message},()=>[createVNode(_sfc_main$11,{message:entry.message,onCheckDelivery:_cache[2]||(_cache[2]=$event=>emit(`check-delivery`,$event)),onLinkClick:handleLongTextLinkClick},null,8,[`message`])],true)])])):entry.role===`user`?(openBlock(),createElementBlock(`div`,_hoisted_13$2,[createBaseVNode(`div`,{class:normalizeClass([`assistant-transcript__message assistant-transcript__message--user`,{"assistant-transcript__message--pending":entry.turn.optimistic?.status===`pending`,"assistant-transcript__message--failed":entry.turn.optimistic?.status===`failed`}])},[createBaseVNode(`div`,_hoisted_14$1,[entry.turn.preview&&previewForTurn(entry.turn)?.actions?.editing?(openBlock(),createBlock(VTextarea,{key:0,class:`assistant-transcript__preview-editor`,"model-value":previewForTurn(entry.turn).text,label:`Review your message`,disabled:!previewForTurn(entry.turn).actions.canEdit,density:`compact`,rows:1,"max-rows":2,"auto-grow":``,"hide-details":``,"onUpdate:modelValue":$event=>previewForTurn(entry.turn).actions.update(entry.turn.turnId,$event)},null,8,[`model-value`,`disabled`,`onUpdate:modelValue`])):__props.userMessageFormat===`plain`?(openBlock(),createElementBlock(`p`,_hoisted_15,toDisplayString(userMessageExpanded(entry.turn)?entry.message.text:userMessagePreviewText(entry.message.text)||entry.message.text),1)):(openBlock(),createBlock(LongTextPreviewBlocks_default,{key:2,blocks:userMessageExpanded(entry.turn)?entry.message.blocks:entry.message.previewBlocks||entry.message.blocks,onLinkClick:handleLongTextLinkClick},null,8,[`blocks`]))]),userMessageCollapsible(entry.message)?(openBlock(),createElementBlock(`button`,{key:0,"aria-expanded":userMessageExpanded(entry.turn),class:`assistant-transcript__user-content-toggle`,type:`button`,onClick:$event=>toggleUserMessage(entry.turn)},toDisplayString(userMessageExpanded(entry.turn)?`Show less`:`Read more`),9,_hoisted_16)):createCommentVNode(``,true),renderSlot(_ctx.$slots,`attachments`,{items:entry.message.attachments,message:entry.message},()=>[createVNode(AssistantMessageAttachments_default,{attachments:entry.message.attachments||[]},null,8,[`attachments`])],true),entry.message.displayAt||entry.turn.optimistic?.status===`pending`?(openBlock(),createElementBlock(`div`,_hoisted_17,[entry.message.displayAt?(openBlock(),createElementBlock(`time`,_hoisted_18,toDisplayString(entry.message.displayAt),1)):createCommentVNode(``,true),entry.turn.optimistic?.status===`pending`?(openBlock(),createElementBlock(`span`,_hoisted_19,toDisplayString(entry.turn.optimistic.waiting?`Pending: ${entry.turn.optimistic.waiting}`:`Pending`),1)):createCommentVNode(``,true)])):createCommentVNode(``,true),renderSlot(_ctx.$slots,`user-message-actions`,{message:entry.message,turn:entry.turn},void 0,true),entry.delivery||entry.turn.optimistic?.status===`failed`?(openBlock(),createElementBlock(`div`,_hoisted_20,[createBaseVNode(`span`,_hoisted_21,toDisplayString(entry.delivery?entry.delivery.delivery.error||`Delivery unconfirmed.`:`Failed: ${entry.turn.optimistic.error||`Message could not be sent.`}`),1),!entry.turn.preview?(openBlock(),createElementBlock(`div`,_hoisted_22,[createVNode(VBtn,{class:`assistant-transcript__delivery-action`,color:`error`,size:`x-small`,type:`button`,variant:`text`,disabled:entry.delivery?.delivery.checking,"aria-label":entry.delivery?`Retry delivery check`:void 0,title:entry.delivery?entry.delivery.delivery.error||`Check delivery before resending.`:void 0,onClick:$event=>entry.delivery?emit(`check-delivery`,entry.delivery.delivery.messageId):emit(`resend-turn`,entry.turn.optimistic.id)},{default:withCtx(()=>[createTextVNode(toDisplayString(entry.delivery?.delivery.checking?`Checking…`:`Retry`),1)]),_:2},1032,[`disabled`,`aria-label`,`title`,`onClick`]),!entry.delivery||__props.cancellableDelivery?(openBlock(),createBlock(VBtn,{key:0,class:`assistant-transcript__delivery-action`,size:`x-small`,type:`button`,variant:`text`,onClick:$event=>emit(`cancel-turn`,entry.delivery?.delivery.messageId||entry.turn.optimistic.id)},{default:withCtx(()=>[..._cache[3]||(_cache[3]=[createTextVNode(` Cancel `,-1)])]),_:1},8,[`onClick`])):createCommentVNode(``,true),!entry.delivery?(openBlock(),createBlock(VBtn,{key:1,class:`assistant-transcript__delivery-action`,size:`x-small`,type:`button`,variant:`text`,onClick:$event=>emit(`edit-turn`,entry.turn.optimistic.id)},{default:withCtx(()=>[..._cache[4]||(_cache[4]=[createTextVNode(` Edit `,-1)])]),_:1},8,[`onClick`])):createCommentVNode(``,true)])):createCommentVNode(``,true)])):createCommentVNode(``,true)],2),createBaseVNode(`span`,_hoisted_23,[createVNode(VIcon,{icon:unref(mdiAccountOutline),size:`15`},null,8,[`icon`])])])):entry.role===`thinking`?(openBlock(),createBlock(AssistantProgress_default,{key:`${__props.scrollKey}:${entry.key}`,class:`assistant-transcript__thinking`,messages:entry.messages,pending:isWorking.value&&entry===displayEntries.value.at(-1),"preview-limit":__props.progressPreviewLimit,"aria-label":`${entry.turn.assistantLabel||__props.assistantLabel} progress`},null,8,[`messages`,`pending`,`preview-limit`,`aria-label`])):(openBlock(),createElementBlock(`div`,{key:3,class:`assistant-transcript__message-row assistant-transcript__message-row--assistant`,"data-message-role":entry.role},[createBaseVNode(`div`,_hoisted_25,[createBaseVNode(`span`,_hoisted_26,[createVNode(VIcon,{icon:unref(mdiRobotOutline),size:`16`},null,8,[`icon`])]),createBaseVNode(`div`,_hoisted_27,[createBaseVNode(`span`,{title:entry.message.assistantDetails||entry.turn.assistantDetails||void 0},toDisplayString(entry.message.assistantLabel||entry.turn.assistantLabel||__props.assistantLabel),9,_hoisted_28)])]),createBaseVNode(`div`,_hoisted_29,[entry.message.blocks.length?(openBlock(),createBlock(LongTextPreviewBlocks_default,{key:0,blocks:entry.message.blocks,onLinkClick:handleLongTextLinkClick},null,8,[`blocks`])):createCommentVNode(``,true),entry.message.questions.length?(openBlock(),createElementBlock(`ol`,_hoisted_30,[(openBlock(true),createElementBlock(Fragment,null,renderList(entry.message.questions,question=>{return openBlock(),createElementBlock(`li`,{key:question.name,class:`assistant-transcript__question`},[createBaseVNode(`span`,_hoisted_31,toDisplayString(question.number),1),createBaseVNode(`div`,_hoisted_32,[createBaseVNode(`span`,_hoisted_33,[createVNode(LongTextInlineParts_default,{text:question.label,onLinkClick:handleLongTextLinkClick},null,8,[`text`])]),question.choices.length?(openBlock(),createElementBlock(`ul`,_hoisted_34,[(openBlock(true),createElementBlock(Fragment,null,renderList(question.choices,choice=>{return openBlock(),createElementBlock(`li`,{key:choice.value},[createVNode(LongTextInlineParts_default,{text:choice.label,onLinkClick:handleLongTextLinkClick},null,8,[`text`]),choice.recommended?(openBlock(),createElementBlock(`span`,_hoisted_35,` · Recommended`)):createCommentVNode(``,true)])}),128))])):createCommentVNode(``,true)])])}),128))])):createCommentVNode(``,true),entry.message.outroBlocks.length?(openBlock(),createBlock(LongTextPreviewBlocks_default,{key:2,blocks:entry.message.outroBlocks,onLinkClick:handleLongTextLinkClick},null,8,[`blocks`])):createCommentVNode(``,true),renderSlot(_ctx.$slots,`message-actions`,{message:entry.message,turn:entry.turn},void 0,true)]),entry.message.displayAt?(openBlock(),createElementBlock(`div`,_hoisted_36,[createBaseVNode(`time`,null,toDisplayString(entry.message.displayAt),1)])):createCommentVNode(``,true)],8,_hoisted_24))])}),128)),createBaseVNode(`div`,{ref_key:`bottomElement`,ref:bottomElement,class:`assistant-transcript__bottom`,"aria-hidden":`true`},null,512)],34)],2)),[[vShow,__props.visible]]):createCommentVNode(``,true)}}};var AssistantTranscript_default=_plugin_vue_export_helper_default(_sfc_main$9,[[`__scopeId`,`data-v-01296888`]]);var _hoisted_1$8={key:1,class:`assistant-prompt-input__input-start`};var _hoisted_2$8=[`aria-describedby`,`aria-label`,`disabled`,`placeholder`,`rows`,`value`];var _hoisted_3$6={key:2,class:`assistant-prompt-input__footer`};var _hoisted_4$5={key:0,class:`assistant-prompt-input__details`};var _hoisted_5$5={key:0,class:`assistant-prompt-input__hint`};var _sfc_main$8={__name:`AssistantPromptInput`,props:{submitOnModifierEnter:{type:Boolean,default:false},ariaLabel:{default:``,type:String},attachmentState:{default:()=>({canSubmit:true,count:0}),type:Object},dragging:{default:false,type:Boolean},autoGrow:{default:true,type:Boolean},disabled:{default:false,type:Boolean},describedBy:{default:``,type:String},errorMessages:{default:()=>[],type:[Array,String]},hint:{default:``,type:String},label:{default:``,type:String},modelValue:{default:``,type:String},persistentHint:{default:false,type:Boolean},placeholderAffectsHeight:{default:true,type:Boolean},placeholder:{default:``,type:String},rows:{default:4,type:[Number,String]},density:{default:`default`,type:String},submitOnEnter:{default:false,type:Boolean},submitEnabled:{default:true,type:Boolean},tabToSubmit:{default:false,type:Boolean},variant:{default:`outlined`,type:String}},emits:[`blur`,`escape`,`focus`,`input-activity`,`submit`,`tab-to-submit`,`update:modelValue`,`paste`],setup(__props,{expose:__expose,emit:__emit}){const emit=__emit;const props=__props;const textareaRef=ref(null);const textareaId=`assistant-prompt-${useId()}`;let resizeFrame=0;let resizeObserver=null;let preserveHeightForNextModelValueChange=false;const combinedErrorMessages=computed(()=>{return Array.isArray(props.errorMessages)?props.errorMessages:[props.errorMessages].filter(Boolean)});const hintVisible=computed(()=>Boolean(props.hint&&(props.persistentHint||combinedErrorMessages.value.length<1)));const detailsVisible=computed(()=>Boolean(combinedErrorMessages.value.length||hintVisible.value));const textareaAriaLabel=computed(()=>props.ariaLabel?props.ariaLabel:void 0);function resizeTextarea(){if(!props.autoGrow)return;const textarea=textareaRef.value;if(!textarea)return;if(!props.placeholderAffectsHeight&&!textarea.value)return;const style=window.getComputedStyle(textarea);const minHeight=Number.parseFloat(style.minHeight)||0;const maxHeight=Number.parseFloat(style.maxHeight)||Number.POSITIVE_INFINITY;textarea.style.height=`auto`;const contentHeight=Math.max(textarea.scrollHeight,minHeight);const targetHeight=Math.min(contentHeight,maxHeight);textarea.style.height=`${targetHeight}px`;textarea.style.overflowY=contentHeight>targetHeight+1?`auto`:`hidden`}function queueResizeTextarea(){if(!props.autoGrow||typeof window===`undefined`)return;if(resizeFrame)return;resizeFrame=window.requestAnimationFrame(()=>{resizeFrame=0;resizeTextarea()})}function preserveHeightForNextModelValue(){const textarea=textareaRef.value;if(!props.autoGrow||!textarea)return false;if(resizeFrame){window.cancelAnimationFrame(resizeFrame);resizeFrame=0}preserveHeightForNextModelValueChange=true;textarea.style.height=`${textarea.getBoundingClientRect().height}px`;textarea.style.overflowY=`auto`;return true}function handleTextareaInput(event={}){preserveHeightForNextModelValueChange=false;emit(`input-activity`);emit(`update:modelValue`,String(event?.target?.value||``));queueResizeTextarea()}function handleTextareaFocus(event={}){emit(`focus`,event)}function handleTextareaBlur(event={}){emit(`blur`,event)}function handleTextareaKeydown(event={}){if(props.disabled||event.isComposing)return;if(event.key===`Escape`){emit(`escape`,event);return}if(props.tabToSubmit&&props.submitEnabled&&String(props.modelValue||``).trim()&&props.attachmentState.canSubmit&&event.key===`Tab`&&!event.shiftKey&&!event.altKey&&!event.ctrlKey&&!event.metaKey){event.preventDefault();emit(`tab-to-submit`);return}if(props.submitOnModifierEnter&&event.key===`Enter`&&(event.ctrlKey||event.metaKey)&&!event.shiftKey&&!event.altKey&&!event.isComposing&&props.submitEnabled&&props.attachmentState.canSubmit){event.preventDefault();event.stopPropagation();emit(`submit`);return}if(event.key===`Enter`&&!props.submitOnEnter){event.stopPropagation();return}if(!props.submitOnEnter||event.key!==`Enter`||event.shiftKey||event.altKey||event.ctrlKey||event.metaKey||event.isComposing||!props.submitEnabled||!props.attachmentState.canSubmit)return;event.preventDefault();emit(`submit`)}function focusTextarea(options={preventScroll:true}){textareaRef.value?.focus?.(options)}onMounted(()=>{queueResizeTextarea();let lastWidth=0;resizeObserver=new ResizeObserver(([entry])=>{const width=entry.contentRect.width;if(width!==lastWidth){lastWidth=width;queueResizeTextarea()}});resizeObserver.observe(textareaRef.value)});onBeforeUnmount(()=>{resizeObserver?.disconnect();if(resizeFrame&&typeof window!==`undefined`){window.cancelAnimationFrame(resizeFrame);resizeFrame=0}});watch(()=>[props.autoGrow,props.modelValue,props.placeholder,props.placeholderAffectsHeight,props.rows,props.density],(values,previousValues=[])=>{const modelValueChanged=values[1]!==previousValues[1];if(preserveHeightForNextModelValueChange&&modelValueChanged){preserveHeightForNextModelValueChange=false;return}queueResizeTextarea()},{flush:`post`});__expose({inputElement:textareaRef,focus:focusTextarea,preserveHeightForNextModelValue,queueResizeTextarea});return(_ctx,_cache)=>{return openBlock(),createElementBlock(`div`,{class:normalizeClass([`assistant-prompt-input`,{"assistant-prompt-input--compact":__props.density===`compact`,"assistant-prompt-input--dragging":__props.dragging,"assistant-prompt-input--has-attachments":__props.attachmentState.count,"assistant-prompt-input--has-footer":_ctx.$slots.footer,"assistant-prompt-input--has-input-start":_ctx.$slots[`input-start`]}])},[renderSlot(_ctx.$slots,`attachments`,{},void 0,true),createBaseVNode(`div`,{class:normalizeClass([`assistant-prompt-input__field`,{"assistant-prompt-input__field--disabled":__props.disabled}])},[__props.label?(openBlock(),createElementBlock(`label`,{key:0,class:`assistant-prompt-input__label`,for:textareaId},toDisplayString(__props.label),1)):createCommentVNode(``,true),_ctx.$slots[`input-start`]?(openBlock(),createElementBlock(`div`,_hoisted_1$8,[renderSlot(_ctx.$slots,`input-start`,{},void 0,true)])):createCommentVNode(``,true),createBaseVNode(`textarea`,{id:textareaId,ref_key:`textareaRef`,ref:textareaRef,"aria-describedby":__props.describedBy||void 0,"aria-label":textareaAriaLabel.value,class:`assistant-prompt-input__input`,disabled:__props.disabled,placeholder:__props.placeholder,rows:__props.rows,value:__props.modelValue,onBlur:handleTextareaBlur,onFocus:handleTextareaFocus,onInput:handleTextareaInput,onKeydown:handleTextareaKeydown,onPaste:_cache[0]||(_cache[0]=$event=>emit(`paste`,$event))},null,40,_hoisted_2$8),_ctx.$slots.footer?(openBlock(),createElementBlock(`div`,_hoisted_3$6,[renderSlot(_ctx.$slots,`footer`,{attachmentState:__props.attachmentState},void 0,true)])):createCommentVNode(``,true)],2),detailsVisible.value?(openBlock(),createElementBlock(`div`,_hoisted_4$5,[(openBlock(true),createElementBlock(Fragment,null,renderList(combinedErrorMessages.value,message=>{return openBlock(),createElementBlock(`div`,{key:message,class:`assistant-prompt-input__error`},toDisplayString(message),1)}),128)),hintVisible.value?(openBlock(),createElementBlock(`div`,_hoisted_5$5,toDisplayString(__props.hint),1)):createCommentVNode(``,true)])):createCommentVNode(``,true)],2)}}};var AssistantPromptInput_default=_plugin_vue_export_helper_default(_sfc_main$8,[[`__scopeId`,`data-v-57d35b92`]]);var _hoisted_1$7={class:`assistant-composer-actions__tools`};var _hoisted_2$7={class:`assistant-composer-actions__delivery`};var _sfc_main$7={__name:`AssistantComposerActions`,props:{state:{type:Object,required:true}},emits:[`submit`,`stop`],setup(__props,{expose:__expose,emit:__emit}){const emit=__emit;const sendButton=ref(null);__expose({focus(){(sendButton.value?.$el||sendButton.value)?.focus?.()}});return(_ctx,_cache)=>{return openBlock(),createElementBlock(`div`,{class:normalizeClass([`assistant-composer-actions`,{"assistant-composer-actions--compact":__props.state.density===`compact`}])},[createBaseVNode(`div`,_hoisted_1$7,[renderSlot(_ctx.$slots,`default`,{},void 0,true)]),createBaseVNode(`div`,_hoisted_2$7,[__props.state.canStop?(openBlock(),createBlock(VBtn,{key:0,color:`error`,disabled:__props.state.stopDisabled||__props.state.stopPending,"aria-busy":__props.state.stopPending?`true`:void 0,"prepend-icon":unref(mdiStopCircleOutline),size:`small`,variant:`tonal`,onClick:_cache[0]||(_cache[0]=$event=>emit(`stop`))},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.state.stopPending?`Stopping…`:`Stop`),1)]),_:1},8,[`disabled`,`aria-busy`,`prepend-icon`])):createCommentVNode(``,true),createVNode(VBtn,{ref_key:`sendButton`,ref:sendButton,class:`assistant-composer-actions__send`,color:`primary`,disabled:!__props.state.canSend,"aria-busy":__props.state.pending&&!__props.state.canSend?`true`:void 0,"aria-label":__props.state.submitAriaLabel||__props.state.submitLabel||`Send message`,title:__props.state.submitTitle,"prepend-icon":__props.state.submitIcon||unref(`M2,21L23,12L2,3V10L17,12L2,14V21Z`),size:`small`,variant:`flat`,onClick:_cache[1]||(_cache[1]=$event=>emit(`submit`))},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.state.submitLabel||(__props.state.pending&&!__props.state.canSend?`Sending…`:`Send`)),1)]),_:1},8,[`disabled`,`aria-busy`,`aria-label`,`title`,`prepend-icon`])]),renderSlot(_ctx.$slots,`feedback`,{},void 0,true)],2)}}};var AssistantComposerActions_default=_plugin_vue_export_helper_default(_sfc_main$7,[[`__scopeId`,`data-v-41f59847`]]);var _hoisted_1$6=[`id`];var _hoisted_2$6={key:0,"aria-hidden":`true`,class:`assistant-composer-support__assistant-status`};var _hoisted_3$5={key:0,class:`assistant-composer-support__assistant-mark`};var _hoisted_4$4={key:0,"aria-hidden":`true`,class:`assistant-composer-support__loading`};var _hoisted_5$4={key:1,class:`assistant-composer-support__options`,"aria-label":`Suggested prompts`,"aria-orientation":`horizontal`,role:`group`};var _sfc_main$6={__name:`AssistantComposerSupport`,props:{activity:{type:Object,default:()=>({})},loading:{default:false,type:Boolean},statusId:{default:``,type:String},suggestions:{default:()=>[],type:Array}},emits:[`dismiss`,`focusout`,`preview`,`select`],setup(__props){const props=__props;const mode=computed(()=>{if(String(props.activity.label||``).trim())return`assistant`;if(props.loading)return`loading`;return props.suggestions.length>0?`ready`:`hidden`});const statusAnnouncement=computed(()=>{if(mode.value===`assistant`)return String(props.activity.label||``).trim();if(mode.value===`loading`)return`Thinking of a few ideas.`;if(mode.value===`ready`)return`${props.suggestions.length} suggested prompts are available before the message controls.`;return``});return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,{class:normalizeClass([`assistant-composer-support`,`assistant-composer-support--${mode.value}`]),"data-assistant-composer-support":``,onFocusout:_cache[3]||(_cache[3]=$event=>_ctx.$emit(`focusout`,$event)),onKeydown:_cache[4]||(_cache[4]=withKeys(withModifiers($event=>_ctx.$emit(`dismiss`),[`stop`,`prevent`]),[`esc`]))},[createBaseVNode(`span`,{id:__props.statusId||void 0,"aria-atomic":`true`,"aria-live":`polite`,class:`assistant-composer-support__sr-status`,role:`status`},toDisplayString(statusAnnouncement.value),9,_hoisted_1$6),mode.value===`assistant`?(openBlock(),createElementBlock(`div`,_hoisted_2$6,[renderSlot(_ctx.$slots,`activity`,{activity:__props.activity},()=>[__props.activity.animated!==false?(openBlock(),createElementBlock(`span`,_hoisted_3$5)):createCommentVNode(``,true),createBaseVNode(`span`,null,toDisplayString(__props.activity.label),1)],true)])):mode.value!==`hidden`?(openBlock(),createElementBlock(Fragment,{key:1},[createVNode(VIcon,{"aria-hidden":`true`,class:`assistant-composer-support__marker`,icon:unref(mdiLightbulbOnOutline),size:`16`},null,8,[`icon`]),mode.value===`loading`?(openBlock(),createElementBlock(`div`,_hoisted_4$4,[..._cache[5]||(_cache[5]=[createBaseVNode(`span`,null,`Thinking of a few ideas`,-1)])])):(openBlock(),createElementBlock(`div`,_hoisted_5$4,[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.suggestions,suggestion=>{return openBlock(),createBlock(VBtn,{key:suggestion.prompt,"aria-label":`Use suggestion: ${suggestion.prompt}`,class:`assistant-composer-support__option`,rounded:`xl`,size:`small`,type:`button`,variant:`tonal`,onBlur:_cache[0]||(_cache[0]=$event=>_ctx.$emit(`preview`,null)),onMousedown:_cache[1]||(_cache[1]=withModifiers(()=>{},[`prevent`])),onFocus:$event=>_ctx.$emit(`preview`,suggestion),onMouseenter:$event=>_ctx.$emit(`preview`,suggestion),onMouseleave:_cache[2]||(_cache[2]=$event=>_ctx.$emit(`preview`,null)),onClick:$event=>_ctx.$emit(`select`,suggestion)},{default:withCtx(()=>[createBaseVNode(`span`,null,toDisplayString(suggestion.label),1)]),_:2},1032,[`aria-label`,`onFocus`,`onMouseenter`,`onClick`])}),128))]))],64)):createCommentVNode(``,true)],34)}}};var AssistantComposerSupport_default=_plugin_vue_export_helper_default(_sfc_main$6,[[`__scopeId`,`data-v-2b078f41`]]);var _hoisted_1$5={class:`assistant-goal__label`};var _hoisted_2$5={key:1,class:`assistant-goal__elapsed`,"aria-hidden":`true`};var _hoisted_3$4={role:`status`};var _hoisted_4$3={key:3,class:`my-2`};var _hoisted_5$3={key:4,class:`text-body-small my-2`};var _hoisted_6$3={key:5,class:`text-body-small my-2`};var _hoisted_7$3={key:6,class:`text-body-small mt-2`};var _hoisted_8$3={key:7,class:`text-body-small mt-2`};var _hoisted_9$3={key:9,role:`alert`,class:`text-error text-body-small mt-2`};var _sfc_main$5={__name:`AssistantGoalControl`,props:{state:{type:Object,default:null}},setup(__props){const props=__props;const open=ref(false);const objective=ref(``);const tokenBudget=ref(``);const now=ref(Date.now());const goal=computed(()=>props.state?.loading||props.state?.available===false?null:props.state?.goal);const running=computed(()=>goal.value?.status===`active`);const working=computed(()=>running.value&&props.state?.working===true);const label=computed(()=>props.state?.loading?`Loading goal…`:props.state?.available===false?`Goal unavailable`:{active:`Goal running`,paused:`Goal paused`,blocked:`Goal blocked`,usageLimited:`Goal waiting for allowance`,budgetLimited:`Goal budget reached`,complete:`Goal complete`}[goal.value?.status]||`Set goal`);const nativeElapsed=computed(()=>Number.isFinite(goal.value?.elapsedSeconds));const createdAt=computed(()=>typeof goal.value?.createdAt===`string`?Date.parse(goal.value.createdAt):NaN);const elapsedLabel=computed(()=>nativeElapsed.value?`Running time`:`Elapsed since goal started (including pauses)`);const clockRunning=computed(()=>nativeElapsed.value?running.value&&Number.isFinite(goal.value?.sampledAt):Boolean(goal.value&&goal.value.status!==`complete`&&Number.isFinite(createdAt.value)));const elapsed=computed(()=>{let secondsUsed;if(nativeElapsed.value){const sinceSample=running.value&&Number.isFinite(goal.value.sampledAt)?Math.max(0,now.value-goal.value.sampledAt)/1e3:0;secondsUsed=goal.value.elapsedSeconds+sinceSample}else{const end=goal.value?.status===`complete`?goal.value.sampledAt:now.value;if(!Number.isFinite(createdAt.value)||!Number.isFinite(end))return``;secondsUsed=(end-createdAt.value)/1e3}const total=Math.max(0,Math.floor(secondsUsed));const seconds=String(total%60).padStart(2,`0`);const minutes=Math.floor(total/60);return minutes<60?`${minutes}:${seconds}`:`${Math.floor(minutes/60)}:${String(minutes%60).padStart(2,`0`)}:${seconds}`});const canSet=computed(()=>!props.state?.loading&&props.state?.available!==false&&typeof props.state?.set===`function`&&(!goal.value||goal.value.status===`complete`));const validBudget=computed(()=>props.state?.tokenBudgetSupported===false||tokenBudget.value===``||Number.isSafeInteger(Number(tokenBudget.value))&&Number(tokenBudget.value)>0);let timer;onMounted(()=>watch(()=>[props.state?.enabled,clockRunning.value,goal.value?.elapsedSeconds,goal.value?.sampledAt,createdAt.value],()=>{clearInterval(timer);now.value=Date.now();if(props.state?.enabled!==false&&clockRunning.value)timer=setInterval(()=>{now.value=Date.now()},1e3)},{immediate:true,flush:`sync`}));onScopeDispose(()=>clearInterval(timer));watch(()=>props.state?.enabled,enabled=>{if(enabled===false)open.value=false});async function setGoal(){if(!canSet.value||props.state.pending||!objective.value.trim()||!validBudget.value)return;const result=await props.state.set({objective:objective.value.trim(),...props.state.tokenBudgetSupported===false||tokenBudget.value===``?{}:{tokenBudget:Number(tokenBudget.value)}});if(result!==false&&result?.ok!==false&&!props.state.error){objective.value=``;tokenBudget.value=``;open.value=false}}return(_ctx,_cache)=>{return __props.state&&__props.state.enabled!==false?(openBlock(),createBlock(VMenu,{key:0,modelValue:open.value,"onUpdate:modelValue":_cache[5]||(_cache[5]=$event=>open.value=$event),location:`top`,"close-on-content-click":false},{activator:withCtx(({props:menuProps})=>[createVNode(VBtn,mergeProps(menuProps,{class:`assistant-goal`,size:`small`,variant:`text`,"aria-label":label.value,title:[label.value,elapsed.value&&`${elapsedLabel.value}: ${elapsed.value}`,goal.value?.objective].filter(Boolean).join(`
16
- `)}),{default:withCtx(()=>[goal.value?(openBlock(),createElementBlock(`span`,{key:0,class:normalizeClass([`assistant-goal__light`,{"assistant-goal__light--running":running.value,"assistant-goal__light--working":working.value,"assistant-goal__light--paused":goal.value.status===`paused`}]),"aria-hidden":`true`},null,2)):createCommentVNode(``,true),createBaseVNode(`span`,_hoisted_1$5,toDisplayString(__props.state.loading?`Loading goal…`:__props.state.available===false?`Goal unavailable`:goal.value?`Goal`:`Set goal`),1),elapsed.value?(openBlock(),createElementBlock(`span`,_hoisted_2$5,toDisplayString(elapsed.value),1)):createCommentVNode(``,true)]),_:1},16,[`aria-label`,`title`])]),default:withCtx(()=>[createVNode(VCard,{class:`assistant-goal__details pa-3`,"max-width":`360`},{default:withCtx(()=>[createBaseVNode(`strong`,_hoisted_3$4,toDisplayString(label.value),1),(running.value||__props.state.pauseBlocked&&goal.value?.status===`blocked`)&&__props.state.pause?(openBlock(),createBlock(VBtn,{key:0,size:`small`,disabled:__props.state.pending,onClick:_cache[0]||(_cache[0]=$event=>__props.state.pause())},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.state.action===`pause`?`Pausing…`:`Pause goal`),1)]),_:1},8,[`disabled`])):createCommentVNode(``,true),[`paused`,`blocked`,`usageLimited`].includes(goal.value?.status)&&__props.state.resume?(openBlock(),createBlock(VBtn,{key:1,size:`small`,disabled:__props.state.pending,onClick:_cache[1]||(_cache[1]=$event=>__props.state.resume())},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.state.action===`resume`?`Resuming…`:`Resume goal`),1)]),_:1},8,[`disabled`])):createCommentVNode(``,true),goal.value&&goal.value.status!==`complete`&&__props.state.cancel?(openBlock(),createBlock(VBtn,{key:2,color:`error`,size:`small`,variant:`text`,disabled:__props.state.pending,onClick:_cache[2]||(_cache[2]=$event=>__props.state.cancel())},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.state.action===`cancel`?`Cancelling…`:`Cancel goal`),1)]),_:1},8,[`disabled`])):createCommentVNode(``,true),goal.value?(openBlock(),createElementBlock(`p`,_hoisted_4$3,toDisplayString(goal.value.objective),1)):createCommentVNode(``,true),goal.value?.reason?(openBlock(),createElementBlock(`p`,_hoisted_5$3,toDisplayString(goal.value.reason),1)):createCommentVNode(``,true),elapsed.value?(openBlock(),createElementBlock(`p`,_hoisted_6$3,toDisplayString(elapsedLabel.value)+`: `+toDisplayString(elapsed.value),1)):createCommentVNode(``,true),running.value||goal.value?.status===`paused`?(openBlock(),createElementBlock(`p`,_hoisted_7$3,toDisplayString(__props.state.pauseInterruptsTurn?`Pause stops the current turn and keeps the goal for later.`:`Pausing prevents further automatic turns. Use Stop to interrupt the current turn.`),1)):createCommentVNode(``,true),goal.value&&goal.value.status!==`complete`&&__props.state.cancel?(openBlock(),createElementBlock(`p`,_hoisted_8$3,toDisplayString(__props.state.cancelInterruptsTurn?`Cancel stops the current turn and clears the goal.`:`Cancel removes this goal. Use Stop to interrupt a turn already running.`),1)):createCommentVNode(``,true),canSet.value?(openBlock(),createElementBlock(`form`,{key:8,class:`assistant-goal__form mt-2`,onSubmit:withModifiers(setGoal,[`prevent`])},[createVNode(VTextarea,{modelValue:objective.value,"onUpdate:modelValue":_cache[3]||(_cache[3]=$event=>objective.value=$event),label:`Goal objective`,rows:`2`,"max-rows":`4`,maxlength:`4000`,"auto-grow":``,disabled:__props.state.pending,"hide-details":``},null,8,[`modelValue`,`disabled`]),__props.state.tokenBudgetSupported!==false?(openBlock(),createBlock(VTextField,{key:0,modelValue:tokenBudget.value,"onUpdate:modelValue":_cache[4]||(_cache[4]=$event=>tokenBudget.value=$event),label:`Token budget (optional)`,type:`number`,min:`1`,step:`1`,disabled:__props.state.pending,error:!validBudget.value,"hide-details":``},null,8,[`modelValue`,`disabled`,`error`])):createCommentVNode(``,true),createVNode(VBtn,{type:`submit`,size:`small`,disabled:__props.state.pending||!objective.value.trim()||!validBudget.value},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.state.action===`set`?`Starting…`:`Start goal`),1)]),_:1},8,[`disabled`])],32)):createCommentVNode(``,true),__props.state.error?(openBlock(),createElementBlock(`p`,_hoisted_9$3,toDisplayString(__props.state.error),1)):createCommentVNode(``,true),renderSlot(_ctx.$slots,`default`,{goal:goal.value},void 0,true)]),_:3})]),_:3},8,[`modelValue`])):createCommentVNode(``,true)}}};var AssistantGoalControl_default=_plugin_vue_export_helper_default(_sfc_main$5,[[`__scopeId`,`data-v-21334735`]]);var _hoisted_1$4=[`aria-busy`];var _hoisted_2$4={class:`assistant-attachment-queue__summary`};var _hoisted_3$3={class:`assistant-attachment-queue__limit`};var _hoisted_4$2={class:`assistant-attachment-queue__items`};var _hoisted_5$2={class:`assistant-attachment-queue__content`};var _hoisted_6$2={class:`assistant-attachment-queue__primary`};var _hoisted_7$2={class:`assistant-attachment-queue__size`};var _hoisted_8$2={class:`assistant-attachment-queue__secondary`};var _hoisted_9$2={key:0};var _hoisted_10$1={key:0,"aria-hidden":`true`,class:`assistant-attachment-queue__progress assistant-attachment-queue__progress--stationary rounded-pill`};var _hoisted_11$1={key:2,class:`assistant-attachment-queue__error`,role:`alert`};var _hoisted_12$1={class:`assistant-attachment-queue__actions`};var _hoisted_13$1={class:`assistant-attachment-queue__announcement`,"aria-atomic":`true`,"aria-live":`polite`,role:`status`};var _sfc_main$4={__name:`AssistantAttachmentQueue`,props:{previewEnabled:Boolean,items:{default:()=>[],type:Array},joined:{default:true,type:Boolean},maximumFiles:{default:10,type:Number}},emits:[`cancel`,`remove`,`retry`,`preview`,`focus-input`],setup(__props,{emit:__emit}){const emit=__emit;const props=__props;const activePhases=new Set([`queued`,`preparing`,`uploading`,`delivering`]);const queueRoot=ref(null);const reducedMotion=ref(false);const actionElements=new Map;let reducedMotionMediaQuery=null;const retainedItems=computed(()=>props.items.filter(item=>itemPhase(item)!==`cancelled`));const completedCount=computed(()=>props.items.filter(item=>itemPhase(item)===`ready`).length);const hasUnresolved=computed(()=>props.items.some(item=>activePhases.has(itemPhase(item))));const aggregatePercent=computed(()=>{if(!retainedItems.value.length)return 0;const totalSize=retainedItems.value.reduce((sum,item)=>sum+Math.max(0,Number(item.size)||0),0);if(retainedItems.value.some(item=>activePhases.has(itemPhase(item))&&itemPercent(item)===null))return null;if(totalSize<1)return Math.round(completedCount.value/retainedItems.value.length*100);const sent=retainedItems.value.reduce((sum,item)=>{if(itemPhase(item)===`ready`)return sum+Math.max(0,Number(item.size)||0);return sum+Math.min(Math.max(0,Number(item.bytesSent)||0),Math.max(0,Number(item.size)||0))},0);return Math.min(100,Math.max(0,Math.round(sent/totalSize*100)))});const aggregateLabel=computed(()=>{const total=retainedItems.value.length;const active=props.items.filter(item=>activePhases.has(itemPhase(item))).length;const failed=props.items.filter(item=>itemPhase(item)===`failed`).length;const cancelled=props.items.filter(item=>itemPhase(item)===`cancelled`).length;if(active)return aggregatePercent.value===null?`${completedCount.value} of ${total} ready · in progress`:`${completedCount.value} of ${total} ready · ${aggregatePercent.value}%`;if(failed)return`${completedCount.value} of ${total} ready · ${failed} ${failed===1?`needs`:`need`} attention`;if(cancelled)return`${completedCount.value} ready · ${cancelled} cancelled`;return`${completedCount.value} of ${total} ready`});const announcement=computed(()=>{const messages=[];const failed=props.items.filter(item=>itemPhase(item)===`failed`).length;if(failed)messages.push(`${attachmentCountLabel(failed)} ${failed===1?`needs`:`need`} attention.`);const active=props.items.filter(item=>activePhases.has(itemPhase(item))).length;if(active)messages.push(`${attachmentCountLabel(active)} ${active===1?`is`:`are`} in progress.`);const cancelled=props.items.filter(item=>itemPhase(item)===`cancelled`).length;if(cancelled)messages.push(`${attachmentCountLabel(cancelled)} cancelled.`);if(completedCount.value)messages.push(`${attachmentCountLabel(completedCount.value)} ready.`);return messages.join(` `)});function attachmentCountLabel(count=0){return`${count} attachment${count===1?``:`s`}`}function itemKey(item={}){return String(item.clientId||item.id||item.attachmentId||item.fileName||`attachment`)}function itemName(item={}){return String(item.fileName||item.file?.name||`attachment`)}function itemPhase(item={}){return String(item.phase||item.status||`queued`)}function itemPercent(item={}){if(itemPhase(item)===`ready`)return 100;if(itemPhase(item)===`delivering`)return 100;if(itemPhase(item)===`queued`)return 0;const progressValue=item.percent??item.progress;const directPercent=progressValue===null||progressValue===void 0||progressValue===``?null:Number(progressValue);if(directPercent!==null&&Number.isFinite(directPercent))return Math.min(100,Math.max(0,Math.round(directPercent)));const size=Number(item.size)||0;return size>0&&Number(item.bytesSent)>0?Math.min(100,Math.max(0,Math.round((Number(item.bytesSent)||0)/size*100))):null}function itemProgressVisible(item={}){return activePhases.has(itemPhase(item))}function itemProgressIndeterminate(item={}){return itemProgressVisible(item)&&itemPercent(item)===null}function itemProgressValue(item={}){return itemPercent(item)??0}function itemProgressStationary(item={}){return reducedMotion.value&&itemProgressVisible(item)&&itemPercent(item)===null}function itemBytesLabel(item={}){const size=Math.max(0,Number(item.size)||0);const sent=Math.min(Math.max(0,Number(item.bytesSent)||0),size);const percent=itemPercent(item);return percent===null?`${attachmentSizeLabel(sent)} / ${attachmentSizeLabel(size)}`:`${attachmentSizeLabel(sent)} / ${attachmentSizeLabel(size)} · ${percent}%`}function itemStatusLabel(item={}){return{cancelled:`Cancelled`,delivering:`Sending to Codex`,failed:item.failureStage===`preparing`?`Preparation failed`:item.failureStage===`handoff`?`Sending failed`:`Upload failed`,preparing:`Preparing`,queued:`Queued`,ready:`Ready`,uploading:`Uploading`}[itemPhase(item)]||`Queued`}function itemCancelable(item={}){return[`preparing`,`queued`,`uploading`].includes(itemPhase(item))}function actionKey(item={},action=``){return`${itemKey(item)}:${action}`}function actionElement(element=null){return element?.$el||element||null}function setActionElement(item={},action=``,element=null){const key=actionKey(item,action);if(element){actionElements.set(key,element);return}actionElements.delete(key)}function focusItemAction(item={}){for(const action of[`cancel`,`retry`,`remove`]){const target=actionElement(actionElements.get(actionKey(item,action)));if(target&&!target.disabled){target.focus?.();return true}}return false}async function handleAction(action,item,index){emit(action,item);await nextTick();const retainedItem=props.items.find(candidate=>itemKey(candidate)===itemKey(item));if(retainedItem&&focusItemAction(retainedItem))return;const neighbour=props.items[index]||props.items[index-1];if(neighbour&&focusItemAction(neighbour))return;emit(`focus-input`)}function itemIcon(item={}){if(itemPhase(item)===`ready`)return mdiCheckCircleOutline;if(itemPhase(item)===`failed`)return mdiAlertCircleOutline;return mdiFileOutline}function itemColor(item={}){if(itemPhase(item)===`ready`)return`success`;if(itemPhase(item)===`failed`)return`error`;return`primary`}function updateReducedMotionPreference(){reducedMotion.value=reducedMotionMediaQuery?.matches===true}if(typeof window!==`undefined`&&typeof window.matchMedia===`function`){reducedMotionMediaQuery=window.matchMedia(`(prefers-reduced-motion: reduce)`);updateReducedMotionPreference()}onMounted(()=>{if(!reducedMotionMediaQuery)return;if(typeof reducedMotionMediaQuery.addEventListener===`function`)reducedMotionMediaQuery.addEventListener(`change`,updateReducedMotionPreference);else reducedMotionMediaQuery.addListener?.(updateReducedMotionPreference)});onBeforeUnmount(()=>{if(typeof reducedMotionMediaQuery?.removeEventListener===`function`)reducedMotionMediaQuery.removeEventListener(`change`,updateReducedMotionPreference);else reducedMotionMediaQuery?.removeListener?.(updateReducedMotionPreference);reducedMotionMediaQuery=null});return(_ctx,_cache)=>{return __props.items.length?(openBlock(),createElementBlock(`section`,{key:0,ref_key:`queueRoot`,ref:queueRoot,class:normalizeClass([`assistant-attachment-queue`,{"assistant-attachment-queue--standalone":!__props.joined}]),"aria-busy":hasUnresolved.value?`true`:void 0,"aria-label":`Message attachments`},[createBaseVNode(`header`,_hoisted_2$4,[createBaseVNode(`span`,null,toDisplayString(aggregateLabel.value),1),createBaseVNode(`span`,_hoisted_3$3,toDisplayString(retainedItems.value.length)+` / `+toDisplayString(__props.maximumFiles),1)]),createBaseVNode(`ol`,_hoisted_4$2,[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.items,(item,index)=>{return openBlock(),createElementBlock(`li`,{key:itemKey(item),class:normalizeClass([`assistant-attachment-queue__item`,`assistant-attachment-queue__item--${itemPhase(item)}`])},[createVNode(VIcon,{class:`assistant-attachment-queue__icon`,color:itemColor(item),icon:itemIcon(item),size:`18`,"aria-hidden":`true`},null,8,[`color`,`icon`]),createBaseVNode(`div`,_hoisted_5$2,[createBaseVNode(`div`,_hoisted_6$2,[(openBlock(),createBlock(resolveDynamicComponent(item.attachmentId&&__props.previewEnabled?`button`:`span`),{type:item.attachmentId&&__props.previewEnabled?`button`:void 0,class:`assistant-attachment-queue__name`,title:itemName(item),onClick:$event=>item.attachmentId&&__props.previewEnabled&&emit(`preview`,item.receipt||item)},{default:withCtx(()=>[createTextVNode(toDisplayString(item.receipt?.reference)+` `+toDisplayString(itemName(item)),1)]),_:2},1032,[`type`,`title`,`onClick`])),createBaseVNode(`span`,_hoisted_7$2,toDisplayString(unref(attachmentSizeLabel)(item.size)),1)]),createBaseVNode(`div`,_hoisted_8$2,[createBaseVNode(`span`,null,toDisplayString(itemStatusLabel(item)),1),itemProgressVisible(item)?(openBlock(),createElementBlock(`span`,_hoisted_9$2,toDisplayString(itemBytesLabel(item)),1)):createCommentVNode(``,true)]),itemProgressStationary(item)?(openBlock(),createElementBlock(`div`,_hoisted_10$1)):itemProgressVisible(item)?(openBlock(),createBlock(VProgressLinear,{key:1,"aria-label":`Upload progress for ${itemName(item)}`,class:`assistant-attachment-queue__progress`,color:`primary`,height:`3`,indeterminate:itemProgressIndeterminate(item),"model-value":itemProgressValue(item),rounded:``},null,8,[`aria-label`,`indeterminate`,`model-value`])):createCommentVNode(``,true),item.error?(openBlock(),createElementBlock(`span`,_hoisted_11$1,toDisplayString(item.error),1)):createCommentVNode(``,true)]),createBaseVNode(`div`,_hoisted_12$1,[itemCancelable(item)?(openBlock(),createBlock(VBtn,{key:0,ref_for:true,ref:element=>setActionElement(item,`cancel`,element),"aria-label":`Cancel ${itemName(item)}`,class:`assistant-attachment-queue__action`,icon:unref(mdiCloseCircleOutline),size:`small`,title:`Cancel ${itemName(item)}`,type:`button`,variant:`text`,onClick:$event=>handleAction(`cancel`,item,index)},null,8,[`aria-label`,`icon`,`title`,`onClick`])):createCommentVNode(``,true),itemPhase(item)===`failed`||itemPhase(item)===`cancelled`?(openBlock(),createBlock(VBtn,{key:1,ref_for:true,ref:element=>setActionElement(item,`retry`,element),"aria-label":`Retry ${itemName(item)}`,class:`assistant-attachment-queue__action`,icon:unref(mdiRefresh),size:`small`,title:`Retry ${itemName(item)}`,type:`button`,variant:`text`,onClick:$event=>handleAction(`retry`,item,index)},null,8,[`aria-label`,`icon`,`title`,`onClick`])):createCommentVNode(``,true),itemPhase(item)===`ready`||itemPhase(item)===`failed`||itemPhase(item)===`cancelled`?(openBlock(),createBlock(VBtn,{key:2,ref_for:true,ref:element=>setActionElement(item,`remove`,element),"aria-label":`Remove ${itemName(item)}`,class:`assistant-attachment-queue__action`,icon:unref(mdiClose),size:`small`,title:`Remove ${itemName(item)}`,type:`button`,variant:`text`,onClick:$event=>handleAction(`remove`,item,index)},null,8,[`aria-label`,`icon`,`title`,`onClick`])):createCommentVNode(``,true)])],2)}),128))]),createBaseVNode(`span`,_hoisted_13$1,toDisplayString(announcement.value),1)],10,_hoisted_1$4)):createCommentVNode(``,true)}}};var AssistantAttachmentQueue_default=_plugin_vue_export_helper_default(_sfc_main$4,[[`__scopeId`,`data-v-a4040311`]]);var _hoisted_1$3={key:0,class:`assistant-questions__question-fields`,"aria-label":`Assistant questions`};var _hoisted_2$3={class:`assistant-questions__question-fields-header`};var _hoisted_3$2={key:1,class:`assistant-questions__answer-choices`,"aria-label":`Suggested answers`};var _sfc_main$3={__name:`AssistantQuestionInputs`,props:mergeModels({questions:{type:Array,default:()=>[]},selectItems:{type:Object,default:()=>({})},choices:{type:Array,default:()=>[]}},{"answers":{type:Object,default:()=>({})},"answersModifiers":{},"choice":{type:String,default:``},"choiceModifiers":{}}),emits:mergeModels([`dismiss`],[`update:answers`,`update:choice`]),setup(__props,{emit:__emit}){const answers=useModel(__props,`answers`);const choice=useModel(__props,`choice`);const emit=__emit;return(_ctx,_cache)=>{return __props.questions.length?(openBlock(),createElementBlock(`div`,_hoisted_1$3,[createBaseVNode(`div`,_hoisted_2$3,[createVNode(VBtn,{"aria-label":`Answer normally instead`,class:`ml-auto`,color:`primary`,"prepend-icon":unref(mdiPencilOutline),size:`small`,variant:`tonal`,onClick:_cache[0]||(_cache[0]=$event=>emit(`dismiss`))},{default:withCtx(()=>[..._cache[2]||(_cache[2]=[createTextVNode(` Answer normally instead `,-1)])]),_:1},8,[`prepend-icon`])]),(openBlock(true),createElementBlock(Fragment,null,renderList(__props.questions,question=>{return openBlock(),createElementBlock(`div`,{key:question.name,class:`assistant-questions__question-field`},[question.choices.length?(openBlock(),createBlock(VSelect,{key:0,"model-value":answers.value[question.name],"onUpdate:modelValue":$event=>answers.value={...answers.value,[question.name]:$event},class:`assistant-questions__question-select`,density:`compact`,"hide-details":`auto`,"item-title":`selectLabel`,"item-value":`value`,items:__props.selectItems[question.name]||question.choices,label:`[${question.number}] ${question.label}`,title:question.label,variant:`outlined`},null,8,[`model-value`,`onUpdate:modelValue`,`items`,`label`,`title`])):(openBlock(),createBlock(VTextField,{key:1,"model-value":answers.value[question.name],"onUpdate:modelValue":$event=>answers.value={...answers.value,[question.name]:$event},autocomplete:`off`,density:`compact`,"hide-details":`auto`,label:`[${question.number}] ${question.label}`,title:question.label,variant:`outlined`},null,8,[`model-value`,`onUpdate:modelValue`,`label`,`title`]))])}),128))])):__props.choices.length?(openBlock(),createElementBlock(`div`,_hoisted_3$2,[createVNode(VChipGroup,{modelValue:choice.value,"onUpdate:modelValue":_cache[1]||(_cache[1]=$event=>choice.value=$event),column:``,"selected-class":`text-primary`},{default:withCtx(()=>[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.choices,option=>{return openBlock(),createBlock(VChip,{key:option.value,filter:``,value:option.value,variant:`outlined`},{default:withCtx(()=>[createTextVNode(toDisplayString(option.label),1)]),_:2},1032,[`value`])}),128))]),_:1},8,[`modelValue`])])):createCommentVNode(``,true)}}};var AssistantQuestionInputs_default=_plugin_vue_export_helper_default(_sfc_main$3,[[`__scopeId`,`data-v-957222c8`]]);var _hoisted_1$2={class:`assistant-model-control__header`};var _hoisted_2$2={class:`text-body-small`};var _hoisted_3$1={key:1,"aria-label":`Loading available AIs`,class:`assistant-model-control__loading`};var _hoisted_4$1={key:2,class:`assistant-model-control__state`,role:`alert`};var _hoisted_5$1={key:3,class:`assistant-model-control__state`,role:`status`};var _hoisted_6$1={key:4,class:`assistant-model-control__choices`};var _hoisted_7$1={key:0,"aria-label":`Provider`,class:`assistant-model-control__section`};var _hoisted_8$1={class:`assistant-model-control__options`};var _hoisted_9$1={"aria-label":`Model`,class:`assistant-model-control__section`};var _hoisted_10={key:1,class:`assistant-model-control__options`};var _hoisted_11={key:2,class:`assistant-model-control__empty`};var _hoisted_12={key:1,"aria-label":`Thinking`,class:`assistant-model-control__section`};var _hoisted_13={class:`assistant-model-control__options`};var _hoisted_14={class:`assistant-model-control__actions`};var _sfc_main$2={__name:`AssistantModelControl`,props:mergeModels({providerRows:{type:Array,default:()=>[]},modelRows:{type:Array,default:()=>[]},variantRows:{type:Array,default:()=>[]},modelProviderId:{type:String,default:``},modelId:{type:String,default:``},variantId:{type:String,default:``},selectionSummary:{type:String,default:``},buttonTitle:{type:String,default:`Choose AI`},changesDisabled:Boolean,saving:Boolean,canSave:Boolean,catalogLoading:Boolean,catalogError:{type:String,default:``}},{"modelValue":{type:Boolean,default:false},"modelModifiers":{}}),emits:mergeModels([`select-provider`,`select-model`,`select-variant`,`apply`,`reload`],[`update:modelValue`]),setup(__props,{emit:__emit}){const menuOpen=useModel(__props,`modelValue`);const props=__props;const emit=__emit;function selectProvider(value){if(!props.changesDisabled&&!props.saving)emit(`select-provider`,value)}function selectModel(value){if(!props.changesDisabled&&!props.saving)emit(`select-model`,value)}function selectVariant(value){if(!props.changesDisabled&&!props.saving)emit(`select-variant`,value)}return(_ctx,_cache)=>{return openBlock(),createBlock(VMenu,{modelValue:menuOpen.value,"onUpdate:modelValue":_cache[2]||(_cache[2]=$event=>menuOpen.value=$event),"close-on-content-click":false,location:`top start`,transition:`scale-transition`},{activator:withCtx(({props:menuProps})=>[createVNode(VBtn,mergeProps(menuProps,{"aria-label":`Choose AI`,class:`assistant-model-control__button`,density:`comfortable`,icon:unref(mdiCogOutline),rounded:`lg`,size:`small`,title:__props.buttonTitle,type:`button`,variant:`tonal`}),null,16,[`icon`,`title`])]),default:withCtx(()=>[createVNode(VSheet,{"aria-label":`AI session selector`,border:``,class:`assistant-model-control`,elevation:3,rounded:`xl`},{default:withCtx(()=>[createBaseVNode(`header`,_hoisted_1$2,[createVNode(VAvatar,{color:`primary`,size:`36`,variant:`tonal`},{default:withCtx(()=>[createVNode(VIcon,{icon:unref(mdiBrain),size:`20`},null,8,[`icon`])]),_:1}),createBaseVNode(`div`,null,[_cache[3]||(_cache[3]=createBaseVNode(`strong`,{class:`text-title-small`},`AI controls`,-1)),createBaseVNode(`span`,_hoisted_2$2,toDisplayString(__props.selectionSummary),1)])]),__props.changesDisabled?(openBlock(),createBlock(VSheet,{key:0,class:`assistant-model-control__view-only`,rounded:`lg`,role:`status`},{default:withCtx(()=>[createVNode(VIcon,{icon:unref(mdiClockOutline),size:`18`},null,8,[`icon`]),_cache[4]||(_cache[4]=createBaseVNode(`span`,null,`AI choices are view-only while the assistant is working.`,-1))]),_:1})):createCommentVNode(``,true),__props.catalogLoading?(openBlock(),createElementBlock(`div`,_hoisted_3$1,[createVNode(VSkeletonLoader,{type:`text, chip@4, text, chip@4`})])):__props.catalogError?(openBlock(),createElementBlock(`div`,_hoisted_4$1,[createBaseVNode(`span`,null,toDisplayString(__props.catalogError),1),createVNode(VBtn,{size:`small`,variant:`text`,onClick:_cache[0]||(_cache[0]=$event=>emit(`reload`))},{default:withCtx(()=>[..._cache[5]||(_cache[5]=[createTextVNode(`Try again`,-1)])]),_:1})])):!__props.providerRows.length?(openBlock(),createElementBlock(`div`,_hoisted_5$1,` No configured AIs are available for this session. `)):(openBlock(),createElementBlock(`div`,_hoisted_6$1,[renderSlot(_ctx.$slots,`before-choices`,{},void 0,true),__props.providerRows.length>1?(openBlock(),createElementBlock(`section`,_hoisted_7$1,[_cache[6]||(_cache[6]=createBaseVNode(`div`,{class:`assistant-model-control__label`},`Provider`,-1)),createBaseVNode(`div`,_hoisted_8$1,[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.providerRows,provider=>{return openBlock(),createBlock(VBtn,{key:provider.id,active:__props.modelProviderId===provider.id,"aria-pressed":__props.modelProviderId===provider.id,class:`assistant-model-control__option`,color:__props.modelProviderId===provider.id?`primary`:void 0,disabled:__props.changesDisabled||__props.saving,rounded:`lg`,size:`small`,type:`button`,variant:__props.modelProviderId===provider.id?`tonal`:`outlined`,onClick:$event=>selectProvider(provider.id)},{default:withCtx(()=>[createBaseVNode(`span`,null,toDisplayString(provider.label),1),__props.modelProviderId===provider.id?(openBlock(),createBlock(VIcon,{key:0,icon:unref(mdiCheck),size:`15`},null,8,[`icon`])):createCommentVNode(``,true)]),_:2},1032,[`active`,`aria-pressed`,`color`,`disabled`,`variant`,`onClick`])}),128))])])):createCommentVNode(``,true),createBaseVNode(`section`,_hoisted_9$1,[_cache[7]||(_cache[7]=createBaseVNode(`div`,{class:`assistant-model-control__label`},`Model`,-1)),__props.modelRows.length>6?(openBlock(),createBlock(VAutocomplete,{key:0,"auto-select-first":`exact`,"hide-details":``,disabled:__props.changesDisabled||__props.saving,items:__props.modelRows,"item-title":`label`,"item-value":`id`,label:`Choose model`,"model-value":__props.modelId,"no-data-text":`No matching models`,variant:`outlined`,"onUpdate:modelValue":selectModel},null,8,[`disabled`,`items`,`model-value`])):__props.modelRows.length?(openBlock(),createElementBlock(`div`,_hoisted_10,[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.modelRows,model=>{return openBlock(),createBlock(VBtn,{key:model.id,active:__props.modelId===model.id,"aria-label":model.label,"aria-pressed":__props.modelId===model.id,class:`assistant-model-control__option`,color:__props.modelId===model.id?`primary`:void 0,disabled:__props.changesDisabled||__props.saving,rounded:`lg`,size:`small`,title:__props.changesDisabled?`Wait for the active turn to finish before changing models.`:model.label,type:`button`,variant:__props.modelId===model.id?`tonal`:`outlined`,onClick:$event=>selectModel(model.id)},{default:withCtx(()=>[createBaseVNode(`span`,null,toDisplayString(model.label),1),__props.modelId===model.id?(openBlock(),createBlock(VIcon,{key:0,icon:unref(mdiCheck),size:`15`},null,8,[`icon`])):createCommentVNode(``,true)]),_:2},1032,[`active`,`aria-label`,`aria-pressed`,`color`,`disabled`,`title`,`variant`,`onClick`])}),128))])):(openBlock(),createElementBlock(`span`,_hoisted_11,`No available models.`)),renderSlot(_ctx.$slots,`model-note`,{},void 0,true)]),renderSlot(_ctx.$slots,`provider-controls`,{},void 0,true),__props.variantRows.length>1?(openBlock(),createElementBlock(`section`,_hoisted_12,[_cache[8]||(_cache[8]=createBaseVNode(`div`,{class:`assistant-model-control__label`},`Thinking`,-1)),createBaseVNode(`div`,_hoisted_13,[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.variantRows,variant=>{return openBlock(),createBlock(VBtn,{key:variant.id||`automatic`,active:__props.variantId===variant.id,"aria-pressed":__props.variantId===variant.id,class:`assistant-model-control__option`,color:__props.variantId===variant.id?`primary`:void 0,disabled:__props.changesDisabled||__props.saving,rounded:`lg`,size:`small`,type:`button`,variant:__props.variantId===variant.id?`tonal`:`outlined`,onClick:$event=>selectVariant(variant.id)},{default:withCtx(()=>[createBaseVNode(`span`,null,toDisplayString(variant.label),1),__props.variantId===variant.id?(openBlock(),createBlock(VIcon,{key:0,icon:unref(mdiCheck),size:`15`},null,8,[`icon`])):createCommentVNode(``,true)]),_:2},1032,[`active`,`aria-pressed`,`color`,`disabled`,`variant`,`onClick`])}),128))])])):createCommentVNode(``,true)])),createBaseVNode(`footer`,_hoisted_14,[renderSlot(_ctx.$slots,`footer`,{},void 0,true),_cache[9]||(_cache[9]=createBaseVNode(`span`,null,null,-1)),createVNode(VBtn,{color:`primary`,disabled:!__props.canSave||__props.saving,size:`small`,variant:`flat`,onClick:_cache[1]||(_cache[1]=$event=>emit(`apply`))},{default:withCtx(()=>[createTextVNode(toDisplayString(__props.saving?`Applying…`:`Apply`),1)]),_:1},8,[`disabled`])])]),_:3})]),_:3},8,[`modelValue`])}}};var AssistantModelControl_default=_plugin_vue_export_helper_default(_sfc_main$2,[[`__scopeId`,`data-v-91d3b1be`]]);var _hoisted_1$1=[`aria-label`];var _hoisted_2$1={class:`assistant-conversation__avatar-size-disc`};var _hoisted_3={class:`assistant-conversation__avatar-presentation`};var _hoisted_4={class:`assistant-conversation__avatar-tools`};var _hoisted_5={class:`assistant-conversation__avatar-size-disc assistant-conversation__avatar-size-disc--minimise`};var _hoisted_6={key:0,class:`assistant-conversation__preview-actions`};var _hoisted_7={key:1,class:`assistant-conversation__goal`};var _hoisted_8=[`accept`,`disabled`];var _hoisted_9={key:0,role:`alert`,class:`assistant-conversation__attachment-error`};var _sfc_main$1={__name:`AssistantConversationElement`,props:{adapter:{type:Object,required:true},avatarSize:{type:String,default:`compact`,validator:value=>[`hidden`,`compact`,`standard`,`large`].includes(value)},label:{type:String,default:`Assistant conversation`},configuration:{type:Object,default:()=>({})},configurationFields:{type:Array,default:()=>[]},configurationMode:{type:String,default:`hidden`,validator:value=>[`hidden`,`readonly`,`editable`].includes(value)}},emits:[`update:avatarSize`],setup(__props,{expose:__expose,emit:__emit}){const props=__props;const emit=__emit;const slots=useSlots();const container=ref(null);const avatarControls=ref(null);const visibleAvatarSize=ref(`compact`);watch(()=>props.avatarSize,size=>{if(size!==`hidden`)visibleAvatarSize.value=size},{immediate:true});function toggleAvatar(){emit(`update:avatarSize`,props.avatarSize===`hidden`?visibleAvatarSize.value:`hidden`)}const avatarSizes=[{value:`hidden`,height:0},{value:`compact`,height:96},{value:`standard`,height:112},{value:`large`,height:176}];const avatarSpace=ref(0);const avatarHeight=computed(()=>Math.min(avatarSpace.value,avatarSizes.find(size=>size.value===props.avatarSize).height));let avatarObserver;const observedAvatarElements=new Set;function measureAvatarSpace(){const root=container.value;if(!root||!slots.avatar)return;const warning=root.querySelector(`.assistant-transcript__error`);const warningBottom=warning?warning.getBoundingClientRect().bottom-root.getBoundingClientRect().top+root.scrollTop:0;root.style.setProperty(`--assistant-conversation-warning-bottom`,`${warningBottom}px`);const rootStyle=getComputedStyle(root);let occupied=parseFloat(rootStyle.paddingTop)+parseFloat(rootStyle.paddingBottom);for(const element of observedAvatarElements){if(element===root)continue;const style=getComputedStyle(element);occupied+=element.getBoundingClientRect().height+parseFloat(style.marginTop)+parseFloat(style.marginBottom)}avatarSpace.value=Math.max(0,root.clientHeight-occupied-120)}function observeAvatarSpace(){if(!container.value||!slots.avatar){avatarObserver?.disconnect();observedAvatarElements.clear();return}avatarObserver||=new ResizeObserver(measureAvatarSpace);const fixedElements=Array.from(container.value.children).filter(element=>!element.classList.contains(`assistant-conversation__avatar`)&&!element.classList.contains(`assistant-conversation__transcript`));const elements=new Set([container.value,...fixedElements]);if(avatarControls.value)elements.add(avatarControls.value);const warning=container.value.querySelector(`.assistant-transcript__error`);if(warning)elements.add(warning);for(const element of observedAvatarElements)if(!elements.has(element)){avatarObserver.unobserve(element);observedAvatarElements.delete(element)}for(const element of elements)if(!observedAvatarElements.has(element)){avatarObserver.observe(element);observedAvatarElements.add(element)}measureAvatarSpace()}onMounted(observeAvatarSpace);onUpdated(observeAvatarSpace);onBeforeUnmount(()=>avatarObserver?.disconnect());const transcriptSlots=computed(()=>[`welcome`,`attachments`,`system-message`,`message-actions`].filter(name=>slots[name]));const input=ref(null);const fileInput=ref(null);const modelsOpen=ref(false);const delivery=ref(null);const statusId=`assistant-status-${useId()}`;const conversation=computed(()=>{const saved=props.adapter.conversation;if(!props.adapter.delivery&&!saved.previewMessage&&!saved.previewMessages?.length&&!saved.interimReply)return saved;const{previewMessage,previewMessages,interimReply,...display}=saved;let turns=props.adapter.delivery?props.adapter.delivery.turns(saved.turns||[]):saved.turns||[];if(interimReply?.text&&interimReply.turnId){const assistant={...interimReply,messageId:interimReply.id,role:`assistant`};turns=turns.map(turn=>turn.turnId!==interimReply.turnId?turn:{...turn,assistant,commentary:(turn.commentary||[]).filter(message=>(message.outputId||message.messageId)!==(interimReply.outputId||interimReply.id)),...Array.isArray(turn.messages)?{messages:turn.messages.filter(message=>message.role!==`assistant`&&(message.outputId||message.messageId)!==(interimReply.outputId||interimReply.id)).concat(assistant)}:{}})}const previews=Array.isArray(previewMessages)?previewMessages:previewMessage?[previewMessage]:[];for(const preview of previews){const messageId=String(preview?.messageId||preview?.id||``).trim();const localDelivery=messageId&&props.adapter.delivery?.find?.(messageId);if((!localDelivery||localDelivery.status===`failed`)&&preview?.actions?.send)turns=turns.map(turn=>{const failed=turn.optimistic?.id===messageId&&turn.optimistic.status===`failed`;const unadmitted=turn.user?.receipt===false&&String(turn.user.messageId||turn.user.id||``)===messageId;if(!failed&&!unadmitted)return turn;return{...turn,preview:true,previewMessage:preview,user:{...turn.user,text:String(preview.text||``)}}});const alreadyShown=messageId&&(localDelivery||turns.some(turn=>[turn.system,turn.user,turn.assistant,...turn.thinking||[],...turn.commentary||[],...turn.messages||[]].some(message=>String(message?.messageId||message?.id||``)===messageId&&(message.receipt!==false||turn.preview))));if(messageId&&(preview?.text||preview?.actions?.editing)&&!alreadyShown){const user={messageId,role:`user`,text:String(preview.text||``)};turns=[...turns,{turnId:messageId,user,messages:[user],preview:true,previewMessage:preview,optimistic:{id:messageId,status:`pending`}}]}}return{...display,turns,welcomeMessage:turns.length?``:saved.welcomeMessage}});watch([()=>props.adapter.delivery,()=>props.adapter.conversation.turns],([controller,turns])=>{controller?.reconcile(turns||[])},{immediate:true});const pending=computed(()=>Boolean(props.adapter.delivery?.state.sending||props.adapter.composer?.pending));const queueWhileSending=computed(()=>props.adapter.composer?.queueWhileSending===true);const working=computed(()=>conversation.value.working??(!pending.value&&Boolean(props.adapter.composer?.canStop||conversation.value.turns?.some(turn=>turn.pending))));const activity=computed(()=>props.adapter.activity??{label:props.adapter.composer?.stopPending?`Stopping…`:pending.value?`Sending to assistant…`:working.value?`Assistant is working…`:``});const suggestionPreview=computed(()=>!props.adapter.composer?.draft&&props.adapter.suggestions?.visible?props.adapter.suggestions.preview:``);const attachmentsEnabled=computed(()=>props.adapter.attachments&&props.adapter.attachments.enabled!==false);const attachmentState=computed(()=>({count:attachmentsEnabled.value?props.adapter.attachments.queueItems?.length||0:0,canSubmit:!attachmentsEnabled.value||props.adapter.attachments.canSubmit!==false}));const canSend=computed(()=>(!pending.value||queueWhileSending.value&&attachmentState.value.count===0)&&props.adapter.composer?.canSend&&attachmentState.value.canSubmit);async function resend(id){if(props.adapter.actions?.resend)return props.adapter.actions.resend(id);const controller=props.adapter.delivery;const payload=controller?.find(id)?.payload;const attachments=props.adapter.attachments;try{const response=await controller?.resend(id,{queue:queueWhileSending.value});clearAcceptedAttachments(response,payload,attachments);return response}catch{}}function cancel(id){return props.adapter.actions?.cancel?props.adapter.actions.cancel(id):props.adapter.delivery?.cancel(id)}function edit(id){if(props.adapter.actions?.edit)return props.adapter.actions.edit(id);if(!props.adapter.actions?.setDraft)return;const draft=props.adapter.delivery?.edit(id,props.adapter.composer?.draft||``);if(draft!=null){props.adapter.actions.setDraft(draft);input.value?.focus()}}function attachmentEvent(method,event){if(attachmentsEnabled.value)return props.adapter.attachments[method]?.(event)}function attachSelectedFiles(event){const files=Array.from(event.target.files||[]);event.target.value=``;if(attachmentsEnabled.value&&props.adapter.attachments.canAddFiles)return props.adapter.attachments.uploadFiles(files)}async function applyModel(){if(await props.adapter.models.apply()!==false)modelsOpen.value=false}function selectSuggestion(value){if(props.adapter.suggestions?.select(value)!==false)input.value?.focus()}function dismissSuggestions(){props.adapter.suggestions?.dismiss();input.value?.focus()}function clearAcceptedAttachments(response,payload,attachments){if(response!==false&&response?.ok!==false&&payload?.attachmentIds?.length)attachments?.clearAttachments({accepted:true,attachmentIds:payload.attachmentIds})}async function submit(){if(!canSend.value)return;const attachments=props.adapter.attachments;const files=attachmentsEnabled.value?props.adapter.attachments.attachments.map(item=>({...item})):[];if(props.adapter.actions?.submit)return props.adapter.actions.submit({configuration:props.configuration,attachments:files});const controller=props.adapter.delivery;if(!controller||!props.adapter.actions?.setDraft)return;const message=String(props.adapter.composer.draft||``).trim()||(files.length?props.adapter.composer.attachmentMessage||`Please review the attached files.`:``);if(!message)return;const payload={...props.adapter.composer.payload,configuration:{...props.configuration},message,...files.length?{attachmentIds:files.map(file=>file.attachmentId),displayAttachments:files}:{}};props.adapter.actions.setDraft(``);try{const response=await controller.send(payload,{queue:queueWhileSending.value});clearAcceptedAttachments(response,payload,attachments);return response}catch{return false}}function stop(){const state=props.adapter.composer;if(!state?.canStop||state.stopDisabled||state.stopPending)return;return props.adapter.actions.stop()}function updateConfiguration(value){if(props.configurationMode!==`editable`||pending.value)return;return props.adapter.actions?.updateConfiguration?.(value)}__expose({focus:()=>input.value?.focus(),submit,stop});return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,{ref_key:`container`,ref:container,class:normalizeClass([`assistant-conversation`,{"assistant-conversation--error":conversation.value.error}]),"aria-label":__props.label},[_ctx.$slots.avatar?(openBlock(),createElementBlock(`section`,{key:0,class:normalizeClass([`assistant-conversation__avatar`,{"assistant-conversation__avatar--hidden":__props.avatarSize===`hidden`}]),"aria-label":`Conversation avatar`},[withDirectives(createBaseVNode(`div`,{ref_key:`avatarControls`,ref:avatarControls,class:`assistant-conversation__avatar-controls`},[renderSlot(_ctx.$slots,`avatar-control`,{size:__props.avatarSize,height:avatarHeight.value},void 0,true),createVNode(VBtn,{icon:unref(mdiAccountCircleOutline),size:`small`,variant:`text`,width:44,"min-width":44,"min-height":44,class:`assistant-conversation__avatar-size`,"aria-label":`Show avatar`,title:`Show avatar`,"aria-expanded":__props.avatarSize!==`hidden`,onClick:toggleAvatar},{default:withCtx(()=>[createBaseVNode(`span`,_hoisted_2$1,[createVNode(VIcon,{size:`20`,icon:unref(mdiAccountCircleOutline)},null,8,[`icon`])])]),_:1},8,[`icon`,`aria-expanded`])],512),[[vShow,__props.avatarSize===`hidden`]]),withDirectives(createBaseVNode(`div`,_hoisted_3,[__props.avatarSize!==`hidden`?(openBlock(),createElementBlock(`div`,{key:0,class:`assistant-conversation__avatar-visual`,style:normalizeStyle({height:`${avatarHeight.value}px`,width:`${avatarHeight.value}px`})},[renderSlot(_ctx.$slots,`avatar`,{size:__props.avatarSize,height:avatarHeight.value},void 0,true)],4)):createCommentVNode(``,true),createBaseVNode(`div`,_hoisted_4,[renderSlot(_ctx.$slots,`avatar-tools`,{size:__props.avatarSize,height:avatarHeight.value},void 0,true),createVNode(VBtn,{icon:unref(mdiMinus),size:`small`,variant:`text`,color:`primary`,width:40,"min-width":40,"min-height":44,class:`assistant-conversation__avatar-size`,"aria-label":`Minimise avatar`,title:`Minimise avatar`,"aria-expanded":true,onClick:toggleAvatar},{default:withCtx(()=>[createBaseVNode(`span`,_hoisted_5,[createVNode(VIcon,{size:`20`,icon:unref(mdiMinus)},null,8,[`icon`])])]),_:1},8,[`icon`])])],512),[[vShow,__props.avatarSize!==`hidden`]])],2)):createCommentVNode(``,true),createVNode(AssistantTranscript_default,mergeProps(conversation.value,{"preview-message":__props.adapter.conversation.previewMessage||null,working:working.value,class:`assistant-conversation__transcript`,onLoadMore:_cache[0]||(_cache[0]=$event=>__props.adapter.actions?.loadMore?.($event)),onReload:_cache[1]||(_cache[1]=$event=>__props.adapter.actions?.reload?.()),onResendTurn:_cache[2]||(_cache[2]=$event=>resend($event)),onCancelTurn:_cache[3]||(_cache[3]=$event=>cancel($event)),onCheckDelivery:_cache[4]||(_cache[4]=$event=>__props.adapter.actions?.checkDelivery?.($event)),onEditTurn:_cache[5]||(_cache[5]=$event=>edit($event)),onLinkClick:_cache[6]||(_cache[6]=$event=>__props.adapter.actions?.openLink?.($event))}),createSlots({"user-message-actions":withCtx(scope=>[scope.turn.preview&&scope.turn.previewMessage?.actions?(openBlock(),createElementBlock(`div`,_hoisted_6,[scope.turn.previewMessage.actions.discard?(openBlock(),createBlock(VBtn,{key:0,icon:unref(mdiClose),size:`small`,variant:`text`,"aria-label":`Discard unsent message`,title:`Discard unsent message`,disabled:!scope.turn.previewMessage.actions.canDiscard,onClick:$event=>scope.turn.previewMessage.actions.discard(scope.turn.turnId)},null,8,[`icon`,`disabled`,`onClick`])):createCommentVNode(``,true),scope.turn.previewMessage.actions.edit?(openBlock(),createBlock(VBtn,{key:1,icon:unref(mdiPencil),size:`small`,variant:`text`,"aria-label":`Edit unsent message`,title:`Edit unsent message`,disabled:!scope.turn.previewMessage.actions.canEdit,onClick:$event=>scope.turn.previewMessage.actions.edit(scope.turn.turnId)},null,8,[`icon`,`disabled`,`onClick`])):createCommentVNode(``,true),scope.turn.previewMessage.actions.send?(openBlock(),createBlock(VBtn,{key:2,size:`small`,color:`primary`,disabled:!scope.turn.previewMessage.actions.canSend,onClick:$event=>scope.turn.previewMessage.actions.send(scope.turn.turnId)},{default:withCtx(()=>[createTextVNode(toDisplayString(scope.turn.previewMessage.actions.sending?`Sending…`:`Send`),1)]),_:2},1032,[`disabled`,`onClick`])):createCommentVNode(``,true)])):createCommentVNode(``,true),renderSlot(_ctx.$slots,`user-message-actions`,normalizeProps(guardReactiveProps(scope)),void 0,true)]),_:2},[renderList(transcriptSlots.value,name=>{return{name,fn:withCtx(scope=>[renderSlot(_ctx.$slots,name,normalizeProps(guardReactiveProps(scope)),void 0,true)])}})]),1040,[`preview-message`,`working`]),__props.adapter.goal&&__props.adapter.goal.enabled!==false?(openBlock(),createElementBlock(`div`,_hoisted_7,[createVNode(AssistantGoalControl_default,{state:__props.adapter.goal},null,8,[`state`])])):createCommentVNode(``,true),!_ctx.$slots.hints&&(__props.adapter.composer||activity.value.label||__props.adapter.suggestions)?(openBlock(),createBlock(AssistantComposerSupport_default,{key:2,activity:activity.value,"status-id":statusId,loading:__props.adapter.suggestions?.visible&&__props.adapter.suggestions.loading,suggestions:__props.adapter.suggestions?.visible?__props.adapter.suggestions.items:[],onPreview:_cache[7]||(_cache[7]=$event=>__props.adapter.suggestions?.previewSuggestion($event)),onSelect:selectSuggestion,onDismiss:dismissSuggestions},createSlots({_:2},[_ctx.$slots.activity?{name:`activity`,fn:withCtx(scope=>[renderSlot(_ctx.$slots,`activity`,normalizeProps(guardReactiveProps(scope)),void 0,true)]),key:`0`}:void 0]),1032,[`activity`,`loading`,`suggestions`])):createCommentVNode(``,true),renderSlot(_ctx.$slots,`hints`,{adapter:__props.adapter},void 0,true),renderSlot(_ctx.$slots,`composer`,{adapter:__props.adapter},()=>[__props.adapter.composer?(openBlock(),createBlock(AssistantPromptInput_default,mergeProps({key:0,ref_key:`input`,ref:input},__props.adapter.composer,{class:`assistant-conversation__composer`,"model-value":__props.adapter.composer.draft||``,"submit-enabled":canSend.value,"aria-label":__props.adapter.composer.ariaLabel||`Message AI assistant`,rows:__props.adapter.composer.rows||2,"described-by":activity.value.label||__props.adapter.suggestions?.visible?statusId:__props.adapter.composer.describedBy,placeholder:suggestionPreview.value||__props.adapter.composer.placeholder,"placeholder-affects-height":!suggestionPreview.value,"attachment-state":attachmentState.value,dragging:attachmentsEnabled.value&&__props.adapter.attachments.dragActive,"tab-to-submit":``,"onUpdate:modelValue":_cache[22]||(_cache[22]=$event=>__props.adapter.actions.setDraft($event)),onSubmit:submit,onTabToSubmit:_cache[23]||(_cache[23]=$event=>delivery.value?.focus()),onFocus:_cache[24]||(_cache[24]=$event=>__props.adapter.suggestions?.focus()),onBlur:_cache[25]||(_cache[25]=$event=>__props.adapter.suggestions?.blur()),onEscape:dismissSuggestions,onDragenter:_cache[26]||(_cache[26]=$event=>attachmentEvent(`handleDragEnter`,$event)),onDragover:_cache[27]||(_cache[27]=$event=>attachmentEvent(`handleDragOver`,$event)),onDragleave:_cache[28]||(_cache[28]=$event=>attachmentEvent(`handleDragLeave`,$event)),onDrop:_cache[29]||(_cache[29]=$event=>attachmentEvent(`handleDrop`,$event)),onPaste:_cache[30]||(_cache[30]=$event=>attachmentEvent(`handlePaste`,$event))}),createSlots({footer:withCtx(()=>[createVNode(AssistantComposerActions_default,{ref_key:`delivery`,ref:delivery,state:{...__props.adapter.composer,pending:pending.value,canSend:canSend.value},onSubmit:submit,onStop:stop},{feedback:withCtx(()=>[attachmentsEnabled.value&&__props.adapter.attachments.status?(openBlock(),createElementBlock(`p`,_hoisted_9,toDisplayString(__props.adapter.attachments.status),1)):createCommentVNode(``,true),renderSlot(_ctx.$slots,`composer-feedback`,{adapter:__props.adapter},void 0,true)]),default:withCtx(()=>[__props.adapter.models&&__props.adapter.models.enabled!==false?(openBlock(),createBlock(AssistantModelControl_default,mergeProps({key:0,modelValue:modelsOpen.value,"onUpdate:modelValue":_cache[16]||(_cache[16]=$event=>modelsOpen.value=$event)},__props.adapter.models,{onSelectProvider:_cache[17]||(_cache[17]=$event=>__props.adapter.models.selectProvider?.($event)),onSelectModel:_cache[18]||(_cache[18]=$event=>__props.adapter.models.selectModel?.($event)),onSelectVariant:_cache[19]||(_cache[19]=$event=>__props.adapter.models.selectVariant?.($event)),onApply:applyModel,onReload:_cache[20]||(_cache[20]=$event=>__props.adapter.models.reload?.())}),null,16,[`modelValue`])):createCommentVNode(``,true),attachmentsEnabled.value?(openBlock(),createBlock(VBtn,{key:1,"aria-label":`Attach files`,title:`Attach files`,size:`small`,variant:`text`,icon:unref(mdiPaperclip),disabled:!__props.adapter.attachments.canAddFiles,onClick:_cache[21]||(_cache[21]=$event=>fileInput.value?.click())},null,8,[`icon`,`disabled`])):createCommentVNode(``,true),__props.configurationMode!==`hidden`?renderSlot(_ctx.$slots,`configuration`,{configuration:__props.configuration,disabled:__props.configurationMode!==`editable`||pending.value,update:updateConfiguration},()=>[(openBlock(true),createElementBlock(Fragment,null,renderList(__props.configurationFields,field=>{return openBlock(),createBlock(VSelect,{key:field.name,"model-value":__props.configuration[field.name],label:field.label,items:field.items,disabled:__props.configurationMode!==`editable`||pending.value,density:`compact`,"hide-details":``,variant:`outlined`,class:`assistant-conversation__setting`,"onUpdate:modelValue":$event=>updateConfiguration({...__props.configuration,[field.name]:$event})},null,8,[`model-value`,`label`,`items`,`disabled`,`onUpdate:modelValue`])}),128))],true,2):createCommentVNode(``,true),renderSlot(_ctx.$slots,`composer-tools`,{adapter:__props.adapter},void 0,true)]),_:3},8,[`state`])]),_:2},[attachmentsEnabled.value?{name:`attachments`,fn:withCtx(()=>[createBaseVNode(`input`,{ref_key:`fileInput`,ref:fileInput,hidden:``,multiple:``,type:`file`,accept:__props.adapter.attachments.accept,disabled:!__props.adapter.attachments.canAddFiles,onChange:attachSelectedFiles},null,40,_hoisted_8),createVNode(AssistantAttachmentQueue_default,{items:__props.adapter.attachments.queueItems,"preview-enabled":Boolean(__props.adapter.attachments.open),"maximum-files":__props.adapter.attachments.maxItems,onCancel:_cache[8]||(_cache[8]=$event=>__props.adapter.attachments.cancelAttachment($event)),onRemove:_cache[9]||(_cache[9]=$event=>__props.adapter.attachments.removeAttachment($event)),onRetry:_cache[10]||(_cache[10]=$event=>__props.adapter.attachments.retryAttachment($event)),onPreview:_cache[11]||(_cache[11]=$event=>__props.adapter.attachments.open($event)),onFocusInput:_cache[12]||(_cache[12]=$event=>input.value?.focus())},null,8,[`items`,`preview-enabled`,`maximum-files`])]),key:`0`}:void 0,__props.adapter.questions||_ctx.$slots[`input-start`]?{name:`input-start`,fn:withCtx(()=>[renderSlot(_ctx.$slots,`input-start`,{adapter:__props.adapter},()=>[createVNode(AssistantQuestionInputs_default,mergeProps(__props.adapter.questions,{"onUpdate:answers":_cache[13]||(_cache[13]=$event=>__props.adapter.questions.setAnswers($event)),"onUpdate:choice":_cache[14]||(_cache[14]=$event=>__props.adapter.questions.setChoice($event)),onDismiss:_cache[15]||(_cache[15]=$event=>__props.adapter.questions.dismiss())}),null,16)],true)]),key:`1`}:void 0]),1040,[`model-value`,`submit-enabled`,`aria-label`,`rows`,`described-by`,`placeholder`,`placeholder-affects-height`,`attachment-state`,`dragging`])):createCommentVNode(``,true)],true)],10,_hoisted_1$1)}}};var AssistantConversationElement_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-f2694005`]]);var _hoisted_1=[`alt`,`src`];var _hoisted_2={key:1};var _sfc_main={__name:`AssistantAttachmentPreview`,props:{attachment:{type:Object,default:null},previewUrl:{type:String,default:``},downloadUrl:{type:String,required:true}},emits:[`close`],setup(__props,{emit:__emit}){const props=__props;const emit=__emit;const imageFailed=ref(false);watch(()=>[props.attachment,props.previewUrl],()=>{imageFailed.value=false});return(_ctx,_cache)=>{return openBlock(),createBlock(VDialog,{"model-value":Boolean(__props.attachment),"max-width":`960`,"onUpdate:modelValue":_cache[2]||(_cache[2]=$event=>!$event&&emit(`close`))},{default:withCtx(()=>[__props.attachment?(openBlock(),createBlock(VCard,{key:0,title:__props.attachment.fileName},{default:withCtx(()=>[createVNode(VCardText,null,{default:withCtx(()=>[__props.previewUrl&&!imageFailed.value?(openBlock(),createElementBlock(`img`,{key:__props.previewUrl,alt:__props.attachment.fileName,class:`assistant-attachment-preview`,src:__props.previewUrl,onError:_cache[0]||(_cache[0]=$event=>imageFailed.value=true)},null,40,_hoisted_1)):(openBlock(),createElementBlock(`p`,_hoisted_2,`Preview is unavailable for this file. You can download it below.`))]),_:1}),createVNode(VCardActions,null,{default:withCtx(()=>[createVNode(VBtn,{href:__props.downloadUrl,download:__props.attachment.fileName,"prepend-icon":unref(mdiDownload),variant:`tonal`},{default:withCtx(()=>[..._cache[3]||(_cache[3]=[createTextVNode(`Download`,-1)])]),_:1},8,[`href`,`download`,`prepend-icon`]),createVNode(VSpacer),createVNode(VBtn,{onClick:_cache[1]||(_cache[1]=$event=>emit(`close`))},{default:withCtx(()=>[..._cache[4]||(_cache[4]=[createTextVNode(`Close`,-1)])]),_:1})]),_:1})]),_:1},8,[`title`])):createCommentVNode(``,true)]),_:1},8,[`model-value`])}}};var AssistantAttachmentPreview_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-22b9fe01`]]);export{parseLongTextReviewBlocks as _,AssistantAttachmentQueue_default as a,AssistantPromptInput_default as c,numberedQuestionSubmissionText as d,parseNumberedQuestionPrompt as f,LongTextPreviewBlocks_default as g,_sfc_main$11 as h,AssistantQuestionInputs_default as i,AssistantTranscript_default as l,useScrollToBottom as m,AssistantConversationElement_default as n,AssistantGoalControl_default as o,parseAnswerChoicePrompt as p,AssistantModelControl_default as r,AssistantComposerSupport_default as s,AssistantAttachmentPreview_default as t,scrollElementNearBottom as u,AssistantMessageAttachments_default as v};