omnix-chat 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/LICENSE +21 -0
  3. package/README.md +360 -0
  4. package/dist/es-BoccmK_s.js +457 -0
  5. package/dist/es-BoccmK_s.js.map +1 -0
  6. package/dist/favicon.svg +1 -0
  7. package/dist/logo.svg +1 -0
  8. package/dist/omnix-chat.es.js +3197 -0
  9. package/dist/omnix-chat.es.js.map +1 -0
  10. package/dist/omnix-chat.umd.js +4 -0
  11. package/dist/omnix-chat.umd.js.map +1 -0
  12. package/dist/react.es.js +26062 -0
  13. package/dist/react.es.js.map +1 -0
  14. package/dist/react.umd.js +593 -0
  15. package/dist/react.umd.js.map +1 -0
  16. package/dist/src/chat/ChatRoot.d.ts +9 -0
  17. package/dist/src/chat/ChatRoot.d.ts.map +1 -0
  18. package/dist/src/chat/bridge/index.d.ts +2 -0
  19. package/dist/src/chat/bridge/index.d.ts.map +1 -0
  20. package/dist/src/chat/bridge/messageBridge.d.ts +8 -0
  21. package/dist/src/chat/bridge/messageBridge.d.ts.map +1 -0
  22. package/dist/src/chat/components/AIAssistantBubble.d.ts +13 -0
  23. package/dist/src/chat/components/AIAssistantBubble.d.ts.map +1 -0
  24. package/dist/src/chat/components/ErrorBoundary.d.ts +25 -0
  25. package/dist/src/chat/components/ErrorBoundary.d.ts.map +1 -0
  26. package/dist/src/chat/components/LauncherSlot.d.ts +8 -0
  27. package/dist/src/chat/components/LauncherSlot.d.ts.map +1 -0
  28. package/dist/src/chat/components/LoginForm.d.ts +7 -0
  29. package/dist/src/chat/components/LoginForm.d.ts.map +1 -0
  30. package/dist/src/chat/components/PanelHeaderTitle.d.ts +7 -0
  31. package/dist/src/chat/components/PanelHeaderTitle.d.ts.map +1 -0
  32. package/dist/src/chat/components/message/BlockExportActions.d.ts +7 -0
  33. package/dist/src/chat/components/message/BlockExportActions.d.ts.map +1 -0
  34. package/dist/src/chat/components/message/MessageBlockRenderer.d.ts +6 -0
  35. package/dist/src/chat/components/message/MessageBlockRenderer.d.ts.map +1 -0
  36. package/dist/src/chat/components/message/SafeMarkdownHtml.d.ts +11 -0
  37. package/dist/src/chat/components/message/SafeMarkdownHtml.d.ts.map +1 -0
  38. package/dist/src/chat/components/message/blockExport.d.ts +5 -0
  39. package/dist/src/chat/components/message/blockExport.d.ts.map +1 -0
  40. package/dist/src/chat/components/message/chartBlockUtils.d.ts +10 -0
  41. package/dist/src/chat/components/message/chartBlockUtils.d.ts.map +1 -0
  42. package/dist/src/chat/components/message/index.d.ts +4 -0
  43. package/dist/src/chat/components/message/index.d.ts.map +1 -0
  44. package/dist/src/chat/components/message/parseMessageBlocks.d.ts +15 -0
  45. package/dist/src/chat/components/message/parseMessageBlocks.d.ts.map +1 -0
  46. package/dist/src/chat/components/message/types.d.ts +89 -0
  47. package/dist/src/chat/components/message/types.d.ts.map +1 -0
  48. package/dist/src/chat/components/panel/AIAssistantPanel.d.ts +4 -0
  49. package/dist/src/chat/components/panel/AIAssistantPanel.d.ts.map +1 -0
  50. package/dist/src/chat/components/panel/AgentSkillBar.d.ts +17 -0
  51. package/dist/src/chat/components/panel/AgentSkillBar.d.ts.map +1 -0
  52. package/dist/src/chat/components/panel/BubbleAvatars.d.ts +7 -0
  53. package/dist/src/chat/components/panel/BubbleAvatars.d.ts.map +1 -0
  54. package/dist/src/chat/components/panel/ConversationSidebar.d.ts +23 -0
  55. package/dist/src/chat/components/panel/ConversationSidebar.d.ts.map +1 -0
  56. package/dist/src/chat/components/panel/DownFeedbackModal.d.ts +18 -0
  57. package/dist/src/chat/components/panel/DownFeedbackModal.d.ts.map +1 -0
  58. package/dist/src/chat/components/panel/MessageBody.d.ts +16 -0
  59. package/dist/src/chat/components/panel/MessageBody.d.ts.map +1 -0
  60. package/dist/src/chat/components/panel/MessageFeedbackFooter.d.ts +10 -0
  61. package/dist/src/chat/components/panel/MessageFeedbackFooter.d.ts.map +1 -0
  62. package/dist/src/chat/components/panel/MessageList.d.ts +13 -0
  63. package/dist/src/chat/components/panel/MessageList.d.ts.map +1 -0
  64. package/dist/src/chat/components/panel/PanelModals.d.ts +13 -0
  65. package/dist/src/chat/components/panel/PanelModals.d.ts.map +1 -0
  66. package/dist/src/chat/components/panel/PromptsSection.d.ts +11 -0
  67. package/dist/src/chat/components/panel/PromptsSection.d.ts.map +1 -0
  68. package/dist/src/chat/components/panel/constants.d.ts +83 -0
  69. package/dist/src/chat/components/panel/constants.d.ts.map +1 -0
  70. package/dist/src/chat/components/panel/index.d.ts +3 -0
  71. package/dist/src/chat/components/panel/index.d.ts.map +1 -0
  72. package/dist/src/chat/components/panel/types.d.ts +60 -0
  73. package/dist/src/chat/components/panel/types.d.ts.map +1 -0
  74. package/dist/src/chat/components/panel/useBubbleItems.d.ts +15 -0
  75. package/dist/src/chat/components/panel/useBubbleItems.d.ts.map +1 -0
  76. package/dist/src/chat/components/panel/useBubbleScroll.d.ts +21 -0
  77. package/dist/src/chat/components/panel/useBubbleScroll.d.ts.map +1 -0
  78. package/dist/src/chat/components/panel/useConversationSidebarScroll.d.ts +10 -0
  79. package/dist/src/chat/components/panel/useConversationSidebarScroll.d.ts.map +1 -0
  80. package/dist/src/chat/components/panel/utils.d.ts +25 -0
  81. package/dist/src/chat/components/panel/utils.d.ts.map +1 -0
  82. package/dist/src/chat/config/assistantPrompts.d.ts +9 -0
  83. package/dist/src/chat/config/assistantPrompts.d.ts.map +1 -0
  84. package/dist/src/chat/config/globalInteractionCopy.d.ts +19 -0
  85. package/dist/src/chat/config/globalInteractionCopy.d.ts.map +1 -0
  86. package/dist/src/chat/config/index.d.ts +2 -0
  87. package/dist/src/chat/config/index.d.ts.map +1 -0
  88. package/dist/src/chat/hooks/index.d.ts +4 -0
  89. package/dist/src/chat/hooks/index.d.ts.map +1 -0
  90. package/dist/src/chat/hooks/useClientState.d.ts +15 -0
  91. package/dist/src/chat/hooks/useClientState.d.ts.map +1 -0
  92. package/dist/src/chat/hooks/useDebouncedSessionPrepare.d.ts +9 -0
  93. package/dist/src/chat/hooks/useDebouncedSessionPrepare.d.ts.map +1 -0
  94. package/dist/src/chat/hooks/useLauncherPosition.d.ts +11 -0
  95. package/dist/src/chat/hooks/useLauncherPosition.d.ts.map +1 -0
  96. package/dist/src/chat/i18n.d.ts +11 -0
  97. package/dist/src/chat/i18n.d.ts.map +1 -0
  98. package/dist/src/chat/styles/host-styles.d.ts +10 -0
  99. package/dist/src/chat/styles/host-styles.d.ts.map +1 -0
  100. package/dist/src/chat/styles/inject.d.ts +4 -0
  101. package/dist/src/chat/styles/inject.d.ts.map +1 -0
  102. package/dist/src/chat/types.d.ts +56 -0
  103. package/dist/src/chat/types.d.ts.map +1 -0
  104. package/dist/src/chat/utils.d.ts +3 -0
  105. package/dist/src/chat/utils.d.ts.map +1 -0
  106. package/dist/src/core/api-envelope.d.ts +6 -0
  107. package/dist/src/core/api-envelope.d.ts.map +1 -0
  108. package/dist/src/core/auth-headers.d.ts +19 -0
  109. package/dist/src/core/auth-headers.d.ts.map +1 -0
  110. package/dist/src/core/auth-response.d.ts +9 -0
  111. package/dist/src/core/auth-response.d.ts.map +1 -0
  112. package/dist/src/core/auth-store.d.ts +23 -0
  113. package/dist/src/core/auth-store.d.ts.map +1 -0
  114. package/dist/src/core/auth-types.d.ts +26 -0
  115. package/dist/src/core/auth-types.d.ts.map +1 -0
  116. package/dist/src/core/auth.d.ts +25 -0
  117. package/dist/src/core/auth.d.ts.map +1 -0
  118. package/dist/src/core/chat-response.d.ts +66 -0
  119. package/dist/src/core/chat-response.d.ts.map +1 -0
  120. package/dist/src/core/chat-sse.d.ts +66 -0
  121. package/dist/src/core/chat-sse.d.ts.map +1 -0
  122. package/dist/src/core/errors.d.ts +16 -0
  123. package/dist/src/core/errors.d.ts.map +1 -0
  124. package/dist/src/core/events.d.ts +19 -0
  125. package/dist/src/core/events.d.ts.map +1 -0
  126. package/dist/src/core/feedback-utils.d.ts +9 -0
  127. package/dist/src/core/feedback-utils.d.ts.map +1 -0
  128. package/dist/src/core/http/client.d.ts +3 -0
  129. package/dist/src/core/http/client.d.ts.map +1 -0
  130. package/dist/src/core/http/errors.d.ts +6 -0
  131. package/dist/src/core/http/errors.d.ts.map +1 -0
  132. package/dist/src/core/http/index.d.ts +3 -0
  133. package/dist/src/core/http/index.d.ts.map +1 -0
  134. package/dist/src/core/http/sse.d.ts +5 -0
  135. package/dist/src/core/http/sse.d.ts.map +1 -0
  136. package/dist/src/core/http/types.d.ts +30 -0
  137. package/dist/src/core/http/types.d.ts.map +1 -0
  138. package/dist/src/core/instance.d.ts +135 -0
  139. package/dist/src/core/instance.d.ts.map +1 -0
  140. package/dist/src/core/message-blocks.d.ts +25 -0
  141. package/dist/src/core/message-blocks.d.ts.map +1 -0
  142. package/dist/src/core/resolve.d.ts +5 -0
  143. package/dist/src/core/resolve.d.ts.map +1 -0
  144. package/dist/src/core/services/agent.service.d.ts +18 -0
  145. package/dist/src/core/services/agent.service.d.ts.map +1 -0
  146. package/dist/src/core/services/auth.service.d.ts +14 -0
  147. package/dist/src/core/services/auth.service.d.ts.map +1 -0
  148. package/dist/src/core/services/chat.service.d.ts +28 -0
  149. package/dist/src/core/services/chat.service.d.ts.map +1 -0
  150. package/dist/src/core/services/feedback.service.d.ts +15 -0
  151. package/dist/src/core/services/feedback.service.d.ts.map +1 -0
  152. package/dist/src/core/services/index.d.ts +5 -0
  153. package/dist/src/core/services/index.d.ts.map +1 -0
  154. package/dist/src/index.d.ts +15 -0
  155. package/dist/src/index.d.ts.map +1 -0
  156. package/dist/src/react/AgentChat.d.ts +25 -0
  157. package/dist/src/react/AgentChat.d.ts.map +1 -0
  158. package/dist/src/react/AgentChatEmbedded.d.ts +12 -0
  159. package/dist/src/react/AgentChatEmbedded.d.ts.map +1 -0
  160. package/dist/src/react/AgentChatProvider.d.ts +15 -0
  161. package/dist/src/react/AgentChatProvider.d.ts.map +1 -0
  162. package/dist/src/react/context.d.ts +4 -0
  163. package/dist/src/react/context.d.ts.map +1 -0
  164. package/dist/src/react/index.d.ts +11 -0
  165. package/dist/src/react/index.d.ts.map +1 -0
  166. package/dist/src/react/useAgentChat.d.ts +36 -0
  167. package/dist/src/react/useAgentChat.d.ts.map +1 -0
  168. package/dist/src/types.d.ts +337 -0
  169. package/dist/src/types.d.ts.map +1 -0
  170. package/dist/src/utils/id.d.ts +7 -0
  171. package/dist/src/utils/id.d.ts.map +1 -0
  172. package/dist/src/utils/sdk-version.d.ts +9 -0
  173. package/dist/src/utils/sdk-version.d.ts.map +1 -0
  174. package/dist/xlsx-CXTDRHcz.js +12389 -0
  175. package/dist/xlsx-CXTDRHcz.js.map +1 -0
  176. package/package.json +115 -0
@@ -0,0 +1,4 @@
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`),require(`eventsource-parser`)):typeof define==`function`&&define.amd?define([`exports`,`react`,`eventsource-parser`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.AgentChat={},e.React,e.eventsourceParser))})(this,function(e,t,n){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var r=Object.create,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty,l=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var s=o(t),l=0,u=s.length,d;l<u;l++)d=s[l],!c.call(e,d)&&d!==n&&i(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=a(t,d))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:r(s(e)),l(t||!e||!e.__esModule?i(n,`default`,{value:e,enumerable:!0}):n,e)))(t,1);function u(e){"@babel/helpers - typeof";return u=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},u(e)}function d(e,t){if(u(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(u(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function f(e){var t=d(e,`string`);return u(t)==`symbol`?t:t+``}function p(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=class e extends Error{constructor(t,n,r={}){super(n),p(this,`code`,void 0),p(this,`details`,void 0),this.name=`AgentChatError`,this.code=t,r.cause!==void 0&&(this.cause=r.cause),r.details!==void 0&&(this.details=r.details),typeof Object.setPrototypeOf==`function`&&Object.setPrototypeOf(this,e.prototype)}},ee=`http://localhost:3030`,te=`x-app-dsn`;function ne(e){if(typeof e!=`string`||e.trim()===``)throw new m(`INVALID_DSN`,`DSN must be a non-empty string`,{details:{received:typeof e}});return e.trim()}var re=`x-account-token`,ie=`Authorization`,ae=`X-App-Dsn`;function oe(e,t){let n={[te]:e.trim()};return t?.trim()&&(n[re]=se(t)),n}function se(e){return e.trim().replace(/^Bearer\s+/i,``)}function ce(e){return`Bearer ${se(e)}`}function le(e,t){e.setDefaultHeader(ie,ce(t))}function ue(e){e.setDefaultHeader(ie,void 0)}function de(e){return{[ae]:e.trim()}}function fe(e){return typeof e==`object`&&!!e}function h(e){return fe(e)?fe(e.data)?e.data:e:null}function g(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}function pe(e){if(!fe(e))return;let t=e.id,n=g(e.dsn),r=g(e.name);if(!(typeof t!=`number`||!n||!r))return{id:t,dsn:n,name:r}}function me(e){if(!fe(e))return;let t=e.id,n=g(e.email),r=g(e.username),i=g(e.userType),a=g(e.userRole);if(!(typeof t!=`number`||!n||!r||!i||!a))return{id:t,employeeId:g(e.employeeId),email:n,username:r,userType:i,userRole:a,mustChangePassword:typeof e.mustChangePassword==`boolean`?e.mustChangePassword:void 0,createdAt:g(e.createdAt)}}function he(e){let t=h(e);if(!t)return null;let n=g(t.accessToken);return{ok:t.ok===!0||t.ok!==!1&&n!==void 0,accessToken:n,appClient:pe(t.appClient),user:me(t.user),accountTokenBound:typeof t.accountTokenBound==`boolean`?t.accountTokenBound:void 0}}function _(e){return typeof e==`object`&&!!e}function v(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}function ge(e){if(!_(e))return null;let t=v(e.sessionId)??v(e.id)??(typeof e.sessionId==`number`?String(e.sessionId):void 0)??(typeof e.id==`number`?String(e.id):void 0);if(!t)return null;let n=e.updatedAt??e.updated_at??e.lastMessageAt,r;if(typeof n==`number`)r=n;else if(n!==void 0){let e=new Date(n).getTime();r=Number.isFinite(e)?e:void 0}return{sessionId:t,title:v(e.title)??v(e.name),preview:v(e.preview)??v(e.lastMessage)??v(e.summary),updatedAt:r}}function _e(e){if(Array.isArray(e))return e;if(!_(e))return[];if(Array.isArray(e.data))return e.data;if(_(e.data))for(let t of[`sessions`,`agents`,`skills`,`list`,`items`,`records`]){let n=e.data[t];if(Array.isArray(n))return n}for(let t of[`sessions`,`agents`,`skills`,`list`,`items`,`records`]){let n=e[t];if(Array.isArray(n))return n}return[]}function ve(e){return _e(e).map(e=>ge(e)).filter(e=>e!==null)}function y(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim().length>0){let t=Number(e);return Number.isFinite(t)?t:void 0}}function b(e){if(typeof e==`boolean`)return e}function ye(e){return _(e)?_(e.data)?e.data:e:null}function be(e,t,n){let r=ve(e),i=ye(e),a=y(i?.page)??y(i?.current)??t,o=y(i?.size)??y(i?.pageSize)??n,s=y(i?.total)??y(i?.totalCount),c=b(i?.hasMore)??b(i?.hasNext)??(s===void 0?r.length>=n:a*o<s);return r.length<n&&(c=!1),{sessions:r,page:a,size:o,total:s,hasMore:c}}function xe(e){let t=e.messages;if(Array.isArray(t))return{messages:t};if(_(t)){let e=Array.isArray(t.items)?t.items:Array.isArray(t.list)?t.list:Array.isArray(t.records)?t.records:[],n=y(t.page)??y(t.current),r=y(t.pageSize)??y(t.size),i=y(t.total)??y(t.totalCount),a=y(t.totalPages),o=b(t.hasMore)??b(t.hasNext);return o===void 0&&n!==void 0&&a!==void 0&&(o=n<a),o===void 0&&n!==void 0&&r!==void 0&&i!==void 0&&(o=n*r<i),{messages:e,page:n,size:r,total:i,totalPages:a,hasMore:o}}for(let t of[`list`,`items`,`records`]){let n=e[t];if(Array.isArray(n))return{messages:n}}return{messages:[]}}function Se(e){return v(e.sessionId)??v(e.id)??(typeof e.sessionId==`number`?String(e.sessionId):void 0)}function Ce(e,t,n,r){let i=h(e)??(_(e)?e:null);if(!i)return null;let a=Se(i)??t.trim();if(!a)return null;let o=xe(i),s=o.messages,c=ye(e),l=o.page??y(c?.page)??y(c?.current)??n,u=o.size??y(c?.size)??y(c?.pageSize)??r,d=o.total??y(c?.total)??y(c?.totalCount),f=o.hasMore??b(c?.hasMore)??b(c?.hasNext);return f===void 0&&o.totalPages!==void 0&&(f=l<o.totalPages),f===void 0&&d!==void 0&&(f=l*u<d),f===void 0&&(f=s.length>=r),s.length<r&&(f=!1),{sessionId:a,messages:s,page:l,size:u,total:d,hasMore:f}}function we(e){let t=h(e)??(_(e)?e:null);if(!t)return null;let n=v(t.sessionId)??v(t.id)??(typeof t.sessionId==`number`?String(t.sessionId):void 0);return n?{sessionId:n}:null}function Te(e){let t=h(e)??(_(e)?e:null);if(!t)return null;let n=t.id;return n==null||typeof n!=`string`&&typeof n!=`number`?null:{id:n,role:v(t.role)??`user`,content:typeof t.content==`string`?t.content:t.content==null?null:String(t.content),createdAt:t.createdAt??t.created_at??Date.now()}}function Ee(e,...t){for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t))return String(t);let r=v(t);if(r)return r}}function De(e){if(!_(e))return null;let t=Ee(e,`id`,`agentId`),n=v(e.name)??v(e.title)??v(e.label);return!t||!n?null:{id:t,name:n,description:v(e.description)??v(e.desc)??null}}function Oe(e){if(!_(e))return null;let t=Ee(e,`id`,`skillId`),n=v(e.name)??v(e.title)??v(e.label);if(!t||!n)return null;let r=Ee(e,`agentId`,`agent_id`),i=v(e.riskLevel),a=i===`L1`||i===`L2`||i===`L3`?i:void 0,o=Array.isArray(e.toolIds)?e.toolIds.filter(e=>typeof e==`number`):void 0;return{id:t,name:n,description:v(e.description)??v(e.desc)??null,agentId:r,capabilityKey:v(e.capabilityKey)??null,riskLevel:a,requiresWriteConfirmation:typeof e.requiresWriteConfirmation==`boolean`?e.requiresWriteConfirmation:void 0,toolIds:o}}function ke(e){return _e(e).map(e=>De(e)).filter(e=>e!==null)}function Ae(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.trim().length>0):[]}function je(e){if(!_(e))return null;let t=v(e.key),n=v(e.label);return!t||!n?null:{key:t,label:n}}function Me(e){return _(e)?{items:(Array.isArray(e.items)?e.items:[]).map(e=>je(e)).filter(e=>e!==null)}:{items:[]}}function Ne(e){if(!_(e))throw Error(`Invalid message feedback payload`);let t=y(e.messageId),n=e.rating===`up`||e.rating===`down`?e.rating:null,r=v(e.createdAt),i=v(e.updatedAt);if(t===void 0||!n||!r||!i)throw Error(`Invalid message feedback payload`);return{messageId:t,rating:n,reasonTags:Ae(e.reasonTags),comment:typeof e.comment==`string`?e.comment:e.comment==null?null:String(e.comment),createdAt:r,updatedAt:i}}function Pe(e){if(!_(e))return{items:[]};let t=Array.isArray(e.items)?e.items:[],n=[];for(let e of t)try{n.push(Ne(e))}catch{}return{items:n}}function Fe(e,t){let n=t?.trim().toLowerCase();return _e(e).map(e=>Oe(e)).filter(e=>e!==null).filter(e=>!n||!e.agentId?!0:e.agentId.trim().toLowerCase()===n)}var Ie=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},Le=e=>e?Ie(e):Ie,Re=e=>e;function ze(e,n=Re){let r=t.default.useSyncExternalStore(e.subscribe,()=>n(e.getState()),()=>n(e.getInitialState()));return t.default.useDebugValue(r),r}var Be=e=>{let t=Le(e),n=e=>ze(t,e);return Object.assign(n,t),n},Ve=e=>e?Be(e):Be;function He(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var Ue=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return Ue(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return Ue(t)(e)}}}},We=(e,t)=>(n,r,i)=>{let a={storage:He(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>{d(e,t),u()};let f=e((...e)=>{n(...e),u()},r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return Ue(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},Ge={dsn:null,accessToken:null,user:null,appClient:null,accountTokenBound:null},x=Ve()(We((e,t)=>({...Ge,setAuth(t,n){e({dsn:t,accessToken:n.accessToken??null,user:n.user??null,appClient:n.appClient??null,accountTokenBound:n.accountTokenBound??null})},clearAuth(){e({...Ge})},getAccessTokenForDsn(e){let n=t();return n.dsn===e&&n.accessToken?n.accessToken:null}}),{name:`agent-chat-auth`})),Ke=class{constructor(){p(this,`handlers`,new Map)}on(e,t){let n=this.handlers.get(e);return n||(n=new Set,this.handlers.set(e,n)),n.add(t),()=>this.off(e,t)}off(e,t){let n=this.handlers.get(e);n&&(n.delete(t),n.size===0&&this.handlers.delete(e))}emit(e,t){let n=this.handlers.get(e);if(!n||n.size===0)return;let r=Array.from(n);for(let e of r)try{e(t)}catch(e){typeof console<`u`&&typeof console.error==`function`&&console.error(`[agent-chat] event handler threw:`,e)}}listenerCount(e){return this.handlers.get(e)?.size??0}clear(){this.handlers.clear()}};function S(e){try{return JSON.parse(e)}catch{return null}}function C(e){let t=S(e);if(!t)return;let n=t.messageId??t.message_id??t.outputMessageId??t.output_message_id??t.id;if(n!=null)return String(n)}function qe(e){let t=S(e);return t?.content==null?e.trim():String(t.content)}function Je(e){let t=S(e);return{message:t?.message?.trim()||e.trim()||`Stream failed`,code:typeof t?.code==`string`?t.code:void 0}}var Ye=new Set([`delta`,`stream`,`chunk`,`token`,`append`,`message.delta`]);function Xe(e){return e?e===`full`||e===`replace`?`replace`:(Ye.has(e),`append`):`append`}function Ze(e){let t=C(e),n=S(e);if(n&&typeof n==`object`){let e=typeof n.content==`string`?n.content:typeof n.text==`string`?n.text:``;return e?{type:`think`,text:e,mode:Xe(typeof n.mode==`string`?n.mode:void 0),messageId:t}:{type:`noop`}}let r=qe(e);return r?{type:`think`,text:r,mode:`append`,messageId:t}:{type:`noop`}}function Qe(e){let t=e.blocks;if(Array.isArray(t)&&t.length>0){let e=t.map(e=>{if(!e||typeof e!=`object`)return``;let t=e.content;return typeof t==`string`?t:``}).join(``);if(e)return e}for(let t of[`output`,`content`,`text`,`delta`,`token`]){let n=e[t];if(typeof n==`string`&&n.length>0)return n}return``}function $e(e){let t=C(e),n=S(e)?.content??e,r=typeof n==`string`?S(n):n;if(r&&typeof r==`object`){let e=r,n=typeof e.source==`string`?e.source:void 0,i=typeof e.action==`string`?e.action:void 0,a=typeof e.stream?.mode==`string`?String(e.stream.mode):void 0,o=Qe(e),s=(i?Ye.has(i):!1)||(a?Ye.has(a):!1);if(n===`agent-run`){if(i===`final`)return o.trim()?{type:`result`,text:o,mode:`replace`,messageId:t}:{type:`noop`};if(s)return o?{type:`result`,text:o,mode:`append`,messageId:t}:{type:`noop`};if(o)return{type:`result`,text:o,mode:`append`,messageId:t}}if((n===`message`||nt(e))&&o||o)return{type:`result`,text:o,mode:`append`,messageId:t}}let i=qe(e);return i?{type:`result`,text:i,mode:`append`,messageId:t}:{type:`noop`}}function et(e){let t=typeof e.action==`string`?e.action:void 0,n=typeof e.message==`string`?e.message.trim():``,r=typeof e.code==`string`?e.code:void 0,i=typeof e.runId==`number`?e.runId:void 0,a=typeof e.turnId==`number`?e.turnId:void 0;return t===`confirmation_required`&&i!=null&&n?{type:`write-confirmation-required`,runId:i,turnId:a,message:n,code:r}:t===`write_confirmation_cancelled`&&n?{type:`write-confirmation-cancelled`,runId:i,turnId:a,message:n,code:r}:null}function tt(e){let t=C(e),n=S(e);if(!n)return $e(e);if(n.source===`message`)return{type:`noop`};let r=et(n);if(r)return r;let i=n.action,a=i===`patch`?`patch`:i===`stream`?`stream`:void 0;if(!a)return $e(e);let o=typeof n.runId==`number`?n.runId:void 0,s=typeof n.turnId==`number`?n.turnId:void 0,c=n.stream??void 0,l=c?.mode;return{type:`message-blocks`,action:a,runId:o,turnId:s,streamMode:l===`delta`||l===`full`||l===`patch`?l:void 0,seq:typeof c?.seq==`number`?c.seq:void 0,blocks:Array.isArray(n.blocks)?n.blocks.filter(e=>!!e&&typeof e==`object`&&typeof e.type==`string`):void 0,patches:Array.isArray(n.patches)?n.patches.map(e=>{if(!e||typeof e!=`object`)return null;let t=e;return typeof t.replaceId!=`string`||!t.block||typeof t.block!=`object`||typeof t.block.type!=`string`?null:{replaceId:t.replaceId,block:t.block}}).filter(e=>e!=null):void 0,messageId:t}}function nt(e){let t=e.type;return typeof t==`string`?t===`message`||t===`result`:!1}function rt(e,t){let n=e.trim()||`message`,r=C(t);switch(n){case`think`:return Ze(t);case`message`:case`result`:{let e=n===`message`?tt(t):$e(t);return e.type===`result`&&!e.messageId&&r?{...e,messageId:r}:e}case`message.delta`:{let e=qe(t);return e?{type:`result`,text:e,mode:`append`,messageId:r}:{type:`noop`}}case`complete`:{let e=S(t);return e&&(e.content!=null||e.id!=null||e.role!=null)?{type:`complete`,serverMessage:e,messageId:e.id==null?r:String(e.id)}:{type:`complete`,messageId:r}}case`error`:{let e=Je(t);return{type:`error`,message:e.message,code:e.code}}case`message.done`:{let e=S(t);return{type:`complete`,serverMessage:e??void 0,messageId:e?.id==null?r:String(e.id)}}default:return{type:`noop`}}}var w=class extends Error{constructor(...e){super(...e),p(this,`name`,`KyError`)}get isKyError(){return!0}},it=class extends w{constructor(e,t,n){let r=`${e.status||e.status===0?e.status:``} ${e.statusText??``}`.trim(),i=r?`status code ${r}`:`an unknown error`;super(`Request failed with ${i}: ${t.method} ${t.url}`),p(this,`name`,`HTTPError`),p(this,`response`,void 0),p(this,`request`,void 0),p(this,`options`,void 0),p(this,`data`,void 0),this.response=e,this.request=t,this.options=n}},at=class extends w{constructor(e,t){super(`Request failed due to a network error: ${e.method} ${e.url}`,t),p(this,`name`,`NetworkError`),p(this,`request`,void 0),this.request=e}},ot=class extends Error{constructor(e){let t=`Non-error value was thrown`;try{typeof e==`string`?t=e:e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`&&(t=e.message)}catch{}super(t),p(this,`name`,`NonError`),p(this,`value`,void 0),this.value=e}},st=class extends w{constructor(e){let t=e?.cause?e.cause instanceof Error?e.cause:new ot(e.cause):void 0;super(e?.code?`Forced retry: ${e.code}`:`Forced retry`,t?{cause:t}:void 0),p(this,`name`,`ForceRetryError`),p(this,`customDelay`,void 0),p(this,`code`,void 0),p(this,`customRequest`,void 0),this.customDelay=e?.delay,this.code=e?.code,this.customRequest=e?.request}},ct=class extends Error{constructor(e){super(`Response schema validation failed`),p(this,`name`,`SchemaValidationError`),p(this,`issues`,void 0),this.issues=e}},T=class extends w{constructor(e){super(`Request timed out: ${e.method} ${e.url}`),p(this,`name`,`TimeoutError`),p(this,`request`,void 0),this.request=e}},lt=(()=>{let e=!1,t=!1,n=typeof globalThis.ReadableStream==`function`,r=typeof globalThis.Request==`function`;if(n&&r)try{t=new globalThis.Request(`https://empty.invalid`,{body:new globalThis.ReadableStream,method:`POST`,get duplex(){return e=!0,`half`}}).headers.has(`Content-Type`)}catch(e){if(e instanceof Error&&e.message===`unsupported BodyInit type`)return!1;throw e}return e&&!t})(),ut=typeof globalThis.AbortController==`function`,dt=typeof globalThis.AbortSignal==`function`&&typeof globalThis.AbortSignal.any==`function`,ft=typeof globalThis.ReadableStream==`function`,pt=typeof globalThis.FormData==`function`,mt=[`get`,`post`,`put`,`patch`,`head`,`delete`],ht={json:`application/json`,text:`text/*`,formData:`multipart/form-data`,arrayBuffer:`*/*`,blob:`*/*`,bytes:`*/*`},gt=2147483647,_t=Symbol(`stop`),vt=class{constructor(e){p(this,`options`,void 0),this.options=e}},yt=e=>new vt(e),bt={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,baseUrl:!0,prefix:!0,retry:!0,timeout:!0,totalTimeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},xt={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0},St=new TextEncoder,Ct=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(let[n,r]of e)t+=40,t+=St.encode(`Content-Disposition: form-data; name="${n}"`).byteLength,t+=typeof r==`string`?St.encode(r).byteLength:r.size;return t}return e instanceof Blob?e.size:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:typeof e==`string`?St.encode(e).byteLength:e instanceof URLSearchParams?St.encode(e.toString()).byteLength:0},wt=(e,t,n)=>{let r,i=0;return e.pipeThrough(new TransformStream({transform(e,a){if(a.enqueue(e),r){i+=r.byteLength;let e=t===0?0:i/t;e>=1&&(e=1-2**-52),n?.({percent:e,totalBytes:Math.max(t,i),transferredBytes:i},r)}r=e},flush(){r&&(i+=r.byteLength,n?.({percent:1,totalBytes:Math.max(t,i),transferredBytes:i},r))}}))},Tt=(e,t)=>{if(!e.body)return e;let n={status:e.status,statusText:e.statusText,headers:e.headers};if(e.status===204)return new Response(null,n);let r=Math.max(0,Number(e.headers.get(`content-length`))||0);return new Response(wt(e.body,r,t),n)},Et=(e,t,n)=>{if(!e.body)return e;let r=Ct(n??e.body);return new Request(e,{duplex:`half`,body:wt(e.body,r,t)})},E=e=>typeof e==`object`&&!!e,Dt=Symbol(`replaceOption`),Ot=e=>E(e)&&e[Dt]===!0?{isReplace:!0,value:e.value}:{isReplace:!1,value:e},kt=(...e)=>{for(let t of e)if((!E(t)||Array.isArray(t))&&t!==void 0)throw TypeError("The `options` argument must be an object");return It({},...e)},At=(e={},t={})=>{let n=new globalThis.Headers(e),r=t instanceof globalThis.Headers,i=new globalThis.Headers(t);for(let[e,t]of i.entries())r&&t===`undefined`||t===void 0?n.delete(e):n.set(e,t);return n},jt=e=>{if(!E(e)||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},D=e=>{if(e instanceof URLSearchParams){let t=new URLSearchParams(e),n=e[k];return n&&(t[k]=new Set(n)),t}return e instanceof globalThis.Headers?new globalThis.Headers(e):Array.isArray(e)?[...e]:jt(e)?{...e}:e},Mt=e=>Object.fromEntries(Object.entries(e).filter(e=>e[1]!==void 0)),Nt=(e,t)=>jt(e)&&jt(t)?Mt({...e,...t}):At(e,t);function O(e,t,n){return Object.hasOwn(t,n)&&t[n]===void 0?[]:It(e[n]??[],t[n]??[])}var Pt=(e={},t={})=>({init:O(e,t,`init`),beforeRequest:O(e,t,`beforeRequest`),beforeRetry:O(e,t,`beforeRetry`),beforeError:O(e,t,`beforeError`),afterResponse:O(e,t,`afterResponse`)}),k=Symbol(`deletedParameters`),Ft=(e,t)=>{let n=new URLSearchParams,r=new Set;for(let i of[e,t])if(i!==void 0)if(i instanceof URLSearchParams){for(let[e,t]of i.entries())n.append(e,t),r.delete(e);let e=i[k];if(e)for(let t of e)n.delete(t),r.add(t)}else if(Array.isArray(i))for(let e of i){if(!Array.isArray(e)||e.length!==2)throw TypeError(`Array search parameters must be provided in [[key, value], ...] format`);n.append(String(e[0]),String(e[1])),r.delete(String(e[0]))}else if(E(i))for(let[e,t]of Object.entries(i))t===void 0?(n.delete(e),r.add(e)):(n.append(e,String(t)),r.delete(e));else{let e=new URLSearchParams(i);for(let[t,i]of e.entries())n.append(t,i),r.delete(t)}return r.size>0&&(n[k]=r),n},It=(...e)=>{let t={},n={},r={},i,a=[];for(let o of e)if(Array.isArray(o))Array.isArray(t)||(t=[]),t=[...t,...o];else if(E(o)){for(let[e,n]of Object.entries(o)){if(e===`signal`&&n instanceof globalThis.AbortSignal){a.push(n);continue}let r=Ot(n),{isReplace:o}=r;if(n=r.value,e===`context`){if(n!=null&&(!E(n)||Array.isArray(n)))throw TypeError("The `context` option must be an object");t={...t,context:n==null?{}:o?{...n}:{...t.context,...n}};continue}if(e===`searchParams`){i=n==null?void 0:o||i===void 0?n:Ft(i,n);continue}E(n)&&!o&&e in t&&(n=It(t[e],n)),t={...t,[e]:n}}if(E(o.hooks)){let{value:e,isReplace:n}=Ot(o.hooks);r=Pt(n?{}:r,e),t.hooks=r}if(E(o.headers)){let{value:e,isReplace:r}=Ot(o.headers);n=r?D(e):Nt(n,e),t.headers=n}}return i!==void 0&&(t.searchParams=i),a.length>0&&(a.length===1?t.signal=a[0]:dt?t.signal=AbortSignal.any(a):t.signal=a.at(-1)),t},Lt=e=>mt.includes(e)?e.toUpperCase():e,Rt={limit:2,methods:[`get`,`put`,`head`,`delete`,`options`,`trace`],statusCodes:[408,413,429,500,502,503,504],afterStatusCodes:[413,429,503],maxRetryAfter:1/0,backoffLimit:1/0,delay:e=>.3*2**(e-1)*1e3,jitter:void 0,retryOnTimeout:!1},zt=(e={})=>{if(typeof e==`number`)return{...Rt,limit:e};if(e.methods&&!Array.isArray(e.methods))throw Error(`retry.methods must be an array`);if(e.statusCodes&&!Array.isArray(e.statusCodes))throw Error(`retry.statusCodes must be an array`);let t=Object.fromEntries(Object.entries({...e,methods:e.methods?.map(e=>e.toLowerCase())}).filter(([,e])=>e!==void 0));return{...Rt,...t}};async function Bt(e,t,n,r){return new Promise((i,a)=>{let o=setTimeout(()=>{n&&n.abort(),a(new T(e))},r.timeout);r.fetch(e,t).then(i).catch(a).then(()=>{clearTimeout(o)})})}async function Vt(e,{signal:t}){return new Promise((n,r)=>{t&&(t.throwIfAborted(),t.addEventListener(`abort`,i,{once:!0}));function i(){clearTimeout(a),r(t.reason)}let a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e)})}var Ht=e=>{let t={};for(let n in e)Object.hasOwn(e,n)&&!(n in xt)&&!(n in bt)&&(t[n]=e[n]);return t},Ut=e=>e===void 0?!1:Array.isArray(e)?e.length>0:e instanceof URLSearchParams?e.size>0||!!e[k]?.size:typeof e==`object`?Object.keys(e).length>0:typeof e==`string`?e.trim().length>0:!!e,Wt=Object.prototype.toString,Gt=e=>Wt.call(e)===`[object Error]`,Kt=new Set([`network error`,`NetworkError when attempting to fetch resource.`,`The Internet connection appears to be offline.`,`Network request failed`,`fetch failed`,`terminated`,` A network error occurred.`,`Network connection lost`]);function qt(e){if(!(e&&Gt(e)&&e.name===`TypeError`&&typeof e.message==`string`))return!1;let{message:t,stack:n}=e;return t===`Load failed`?n===void 0||`__sentry_captured__`in e:t.startsWith(`error sending request for url`)||t===`Failed to fetch`||t.startsWith(`Failed to fetch (`)&&t.endsWith(`)`)?!0:Kt.has(t)}var Jt=(e,t)=>e instanceof t||e?.name===t.name;function Yt(e){return Jt(e,it)}function Xt(e){return Jt(e,at)}function Zt(e){return Jt(e,T)}function Qt(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}function $t(e,t){Qt(e,t),t.add(e)}function A(e,t,n){Qt(e,t),t.set(e,n)}function j(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}function M(e,t){return e.get(j(e,t))}function N(e,t,n){return e.set(j(e,t),n),n}var en=10*1024*1024,tn="The `prefixUrl` option has been renamed `prefix` in v2 and enhanced to allow slashes in input. See also the new `baseUrl` option for improved flexibility with standard URL resolution: https://github.com/sindresorhus/ky#baseurl",P=Symbol(`timedOutResponseData`),nn=e=>{let t=/;\s*charset\s*=\s*(?:"([^"]+)"|([^;,\s]+))/i.exec(e),n=t?.[1]??t?.[2];if(n)try{return new TextDecoder(n)}catch{}return new TextDecoder},rn="The `schema` argument must follow the Standard Schema specification",an=e=>typeof e==`object`?{...e,...e.methods&&{methods:[...e.methods]},...e.statusCodes&&{statusCodes:[...e.statusCodes]},...e.afterStatusCodes&&{afterStatusCodes:[...e.afterStatusCodes]}}:e,on=Object.prototype.toString,sn=e=>e instanceof globalThis.Request||on.call(e)===`[object Request]`,F=e=>e instanceof globalThis.Response||on.call(e)===`[object Response]`,cn=e=>Array.isArray(e)?e.map(e=>[...e]):D(e);function ln(e){let t={...e,json:D(e.json),context:D(e.context),headers:D(e.headers),searchParams:cn(e.searchParams)};return e.retry!==void 0&&(t.retry=an(e.retry)),t}var un=async(e,t)=>{if(typeof t!=`object`&&typeof t!=`function`||t===null)throw TypeError(rn);let n=t[`~standard`];if(typeof n!=`object`||!n||typeof n.validate!=`function`)throw TypeError(rn);let r=await n.validate(e);if(r.issues)throw new ct(r.issues);return r.value},I=new WeakMap,L=new WeakMap,R=new WeakMap,z=new WeakMap,dn=new WeakMap,B=new WeakMap,fn=new WeakMap,V=new WeakMap,pn=new WeakMap,H=new WeakMap,mn=new WeakMap,U=new WeakSet,hn=class e{static create(t,n){let r=n.hooks?.init??[],i=r.length>0?ln(n):n;for(let e of r)e(i);let a=new e(t,i),o=async()=>{if(typeof M(z,a).timeout==`number`&&M(z,a).timeout>2147483647)throw RangeError(`The \`timeout\` option cannot be greater than ${gt}`);if(typeof M(z,a).totalTimeout==`number`&&M(z,a).totalTimeout>2147483647)throw RangeError(`The \`totalTimeout\` option cannot be greater than ${gt}`);await Promise.resolve();let e=await j(U,a,Dn).call(a),t=e??await j(U,a,kn).call(a,async()=>j(U,a,Mn).call(a)),n=e!==void 0||j(U,a,jn).call(a);for(;;){if(t===void 0)return t;if(F(t))try{t=await j(U,a,On).call(a,t)}catch(e){if(!(e instanceof st))throw e;let r=await j(U,a,An).call(a,e,async()=>j(U,a,Mn).call(a));if(r===void 0)return r;t=r,n=j(U,a,jn).call(a);continue}let e=t;if(!e.ok&&e.type!==`opaque`&&(typeof M(z,a).throwHttpErrors==`function`?M(z,a).throwHttpErrors(e.status):M(z,a).throwHttpErrors)){let r=new it(e,j(U,a,q).call(a,e),j(U,a,K).call(a)),i=r;if(r.data=await j(U,a,yn).call(a,e),n)throw i;let o=await j(U,a,An).call(a,r,async()=>j(U,a,Mn).call(a));if(o===void 0)return o;t=o,n=j(U,a,jn).call(a);continue}break}if(!F(t))return t;if(j(U,a,vn).call(a,t),M(z,a).onDownloadProgress){if(typeof M(z,a).onDownloadProgress!=`function`)throw TypeError("The `onDownloadProgress` option must be a function");if(!ft)throw Error("Streams are not supported in your environment. `ReadableStream` is missing.");let e=t.clone();return j(U,a,G).call(a,t),Tt(e,M(z,a).onDownloadProgress)}return t},s=(async()=>{try{return await o()}catch(e){if(!(e instanceof Error)||M(fn,a).has(e))throw e;let t=e;for(let e of M(z,a).hooks.beforeError){let n=await e({request:a.request,options:j(U,a,K).call(a),error:t,retryCount:M(L,a)});n instanceof Error&&(t=n)}throw t}finally{let e=M(dn,a);j(U,a,wn).call(a,e?.body??void 0),a.request!==e&&j(U,a,wn).call(a,a.request.body??void 0)}})();for(let[e,t]of Object.entries(ht))e===`bytes`&&typeof globalThis.Response?.prototype?.bytes!=`function`||(s[e]=async n=>{a.request.headers.set(`accept`,a.request.headers.get(`accept`)||t);let r=await s;if(e!==`json`)return r[e]();let o=await r.text();if(o===``)return n===void 0?JSON.parse(o):un(void 0,n);let c=i.parseJson?await i.parseJson(o,{request:j(U,a,q).call(a,r),response:r}):JSON.parse(o);return n===void 0?c:un(c,n)});return s}constructor(t,n={}){if($t(this,U),p(this,`request`,void 0),A(this,I,void 0),A(this,L,0),A(this,R,void 0),A(this,z,void 0),A(this,dn,void 0),A(this,B,void 0),A(this,fn,new WeakSet),A(this,V,void 0),A(this,pn,void 0),A(this,H,!1),A(this,mn,new WeakMap),N(R,this,t),Object.hasOwn(n,`prefixUrl`))throw Error(tn);if(N(z,this,{...n,headers:At(M(R,this).headers,n.headers),hooks:Pt({},n.hooks),method:Lt(n.method??M(R,this).method??`GET`),prefix:String(n.prefix||``),retry:zt(n.retry),throwHttpErrors:n.throwHttpErrors??!0,timeout:n.timeout??1e4,totalTimeout:n.totalTimeout??!1,fetch:n.fetch??globalThis.fetch.bind(globalThis),context:n.context??{}}),typeof M(R,this)!=`string`&&!(M(R,this)instanceof URL||M(R,this)instanceof globalThis.Request))throw TypeError("`input` must be a string, URL, or Request");if(typeof M(R,this)==`string`){if(M(z,this).prefix){let e=M(z,this).prefix.replace(/\/+$/,``),t=M(R,this).replace(/^\/+/,``);N(R,this,`${e}/${t}`)}if(M(z,this).baseUrl){let e;try{e=new URL(M(R,this))}catch{}e||N(R,this,new URL(M(R,this),new Request(M(z,this).baseUrl).url))}}ut&&dt&&(N(B,this,M(z,this).signal??M(R,this).signal),N(I,this,new globalThis.AbortController),M(z,this).signal=j(U,this,Tn).call(this)),lt&&(M(z,this).duplex=`half`),M(z,this).json!==void 0&&(M(z,this).body=M(z,this).stringifyJson?.(M(z,this).json)??JSON.stringify(M(z,this).json),M(z,this).headers.set(`content-type`,M(z,this).headers.get(`content-type`)??`application/json`));let r=n.headers&&new globalThis.Headers(n.headers).has(`content-type`);if(M(R,this)instanceof globalThis.Request&&(pt&&M(z,this).body instanceof globalThis.FormData||M(z,this).body instanceof URLSearchParams)&&!r&&M(z,this).headers.delete(`content-type`),this.request=new globalThis.Request(M(R,this),M(z,this)),Ut(M(z,this).searchParams)){let t=new URL(this.request.url),n=M(z,this).searchParams?.[k];if(n)for(let e of n)t.searchParams.delete(e);if(typeof M(z,this).searchParams==`string`){let e=M(z,this).searchParams.replace(/^\?/,``);e!==``&&(t.search=t.search?`${t.search}&${e}`:`?${e}`)}else{let n=new URLSearchParams(gn.call(e,M(z,this).searchParams));for(let[e,r]of n.entries())t.searchParams.append(e,r)}if(M(z,this).searchParams&&typeof M(z,this).searchParams==`object`&&!Array.isArray(M(z,this).searchParams)&&!(M(z,this).searchParams instanceof URLSearchParams))for(let[e,n]of Object.entries(M(z,this).searchParams))n===void 0&&t.searchParams.delete(e);this.request=new globalThis.Request(t,M(z,this))}if(M(z,this).onUploadProgress&&typeof M(z,this).onUploadProgress!=`function`)throw TypeError("The `onUploadProgress` option must be a function");N(pn,this,typeof M(z,this).totalTimeout==`number`?j(U,this,Pn).call(this):void 0)}};function gn(e){return e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof URLSearchParams)?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):e}function W(){let e=M(z,this).retry.delay(M(L,this)+1),t=e;return M(z,this).retry.jitter===!0?t=Math.random()*e:typeof M(z,this).retry.jitter==`function`&&(t=M(z,this).retry.jitter(e),(!Number.isFinite(t)||t<0)&&(t=e)),Math.min(M(z,this).retry.backoffLimit,t)}async function _n(e){if(M(L,this)>=M(z,this).retry.limit)throw e;let t=e instanceof Error?e:new ot(e);if(t instanceof st)return t.customDelay??j(U,this,W).call(this);if(!M(z,this).retry.methods.includes(this.request.method.toLowerCase()))throw e;if(M(z,this).retry.shouldRetry!==void 0){let n=await M(z,this).retry.shouldRetry({error:t,retryCount:M(L,this)+1});if(n===!1)throw e;if(n===!0)return j(U,this,W).call(this)}if(Zt(e)){if(!M(z,this).retry.retryOnTimeout)throw e;return j(U,this,W).call(this)}if(Yt(e)){if(!M(z,this).retry.statusCodes.includes(e.response.status))throw e;let t=e.response.headers.get(`Retry-After`)??e.response.headers.get(`RateLimit-Reset`)??e.response.headers.get(`X-RateLimit-Retry-After`)??e.response.headers.get(`X-RateLimit-Reset`)??e.response.headers.get(`X-Rate-Limit-Reset`);if(t&&M(z,this).retry.afterStatusCodes.includes(e.response.status)){let e=Number(t)*1e3;return Number.isNaN(e)?e=Date.parse(t)-Date.now():e>=Date.parse(`2024-01-01`)&&(e-=Date.now()),Number.isFinite(e)?(e=Math.max(0,e),Math.min(M(z,this).retry.maxRetryAfter,e)):Math.min(M(z,this).retry.maxRetryAfter,j(U,this,W).call(this))}if(e.response.status===413)throw e;return j(U,this,W).call(this)}if(!Xt(e))throw e;return j(U,this,W).call(this)}function vn(e){let t=j(U,this,q).call(this,e);return M(z,this).parseJson&&(e.json=async()=>{let n=await e.text();return n===``?JSON.parse(n):M(z,this).parseJson(n,{request:t,response:e})}),e}async function yn(e){let t=await j(U,this,Sn).call(this,e,j(U,this,bn).call(this));if(t===P){j(U,this,En).call(this);return}if(!t)return;if(!j(U,this,xn).call(this,e.headers.get(`content-type`)??``))return t;let n=await j(U,this,Cn).call(this,t,e,j(U,this,bn).call(this),j(U,this,q).call(this,e));if(n===P){j(U,this,En).call(this);return}return n}function bn(){let e=M(z,this).timeout===!1?1e4:M(z,this).timeout,t=j(U,this,Nn).call(this);if(t===void 0)return e;if(t<=0)throw new T(this.request);return Math.min(e,t)}function xn(e){let t=(e.split(`;`,1)[0]??``).trim().toLowerCase();return/\/(?:.*[.+-])?json$/.test(t)}async function Sn(e,t){let{body:n}=e;if(!n)try{return await e.text()}catch{return}let r;try{r=n.getReader()}catch{return}let i=nn(e.headers.get(`content-type`)??``),a=[],o=0,s=(async()=>{try{for(;;){let{done:e,value:t}=await r.read();if(e)break;if(o+=t.byteLength,o>en){r.cancel().catch(()=>void 0);return}a.push(i.decode(t,{stream:!0}))}}catch{return}return a.push(i.decode()),a.join(``)})(),c=new Promise(e=>{let n=setTimeout(()=>{e(P)},t);s.finally(()=>{clearTimeout(n)})}),l=await Promise.race([s,c]);return l===P&&r.cancel().catch(()=>void 0),l}async function Cn(e,t,n,r){let i;try{return await Promise.race([Promise.resolve().then(()=>M(z,this).parseJson?M(z,this).parseJson(e,{request:r,response:t}):JSON.parse(e)),new Promise(e=>{i=setTimeout(()=>{e(P)},n)})])}catch{return}finally{clearTimeout(i)}}function wn(e){e&&e.cancel().catch(()=>void 0)}function G(e){j(U,this,wn).call(this,e.body??void 0)}function Tn(){return M(B,this)?AbortSignal.any([M(B,this),M(I,this).signal]):M(I,this).signal}function En(){let e=j(U,this,Nn).call(this);if(e!==void 0&&e<=0)throw new T(this.request)}async function Dn(){for(let e of M(z,this).hooks.beforeRequest){let t=await e({request:this.request,options:j(U,this,K).call(this),retryCount:0});if(sn(t))j(U,this,Fn).call(this,t);else if(F(t))return t}}async function On(e){let t=j(U,this,q).call(this,e);for(let n of M(z,this).hooks.afterResponse){let r=j(U,this,In).call(this,e.clone(),t);j(U,this,vn).call(this,r);let i;try{i=await n({request:this.request,options:j(U,this,K).call(this),response:r,retryCount:M(L,this)})}catch(t){throw r!==e&&j(U,this,G).call(this,r),j(U,this,G).call(this,e),t}if(i instanceof vt)throw r!==e&&j(U,this,G).call(this,r),j(U,this,G).call(this,e),new st(i.options);let a=F(i)?j(U,this,In).call(this,i,t):e;r!==e&&r!==a&&r.body!==a.body&&j(U,this,G).call(this,r),e!==a&&e.body!==a.body&&j(U,this,G).call(this,e),e=a}return e}async function kn(e){try{return await e()}catch(t){return j(U,this,An).call(this,t,e)}}async function An(e,t){var n;N(H,this,!1);let r=Math.min(await j(U,this,_n).call(this,e),gt),i={signal:M(B,this)},a=j(U,this,Nn).call(this);if(a!==void 0){if(a<=0)throw new T(this.request);if(r>=a)throw await Vt(a,i),new T(this.request)}if(await Vt(r,i),j(U,this,En).call(this),e instanceof st&&e.customRequest){let t=new globalThis.Request(e.customRequest,M(z,this).signal?{signal:M(z,this).signal}:void 0);j(U,this,Fn).call(this,t)}for(let t of M(z,this).hooks.beforeRetry){let n;try{n=await t({request:this.request,options:j(U,this,K).call(this),error:e,retryCount:M(L,this)+1})}catch(t){throw t instanceof Error&&t!==e&&M(fn,this).add(t),t}if(sn(n)){j(U,this,Fn).call(this,n);break}if(F(n)){var o;return N(H,this,!0),N(L,this,(o=M(L,this),o++,o)),n}if(n===_t)return}return j(U,this,En).call(this),N(L,this,(n=M(L,this),n++,n)),j(U,this,kn).call(this,t)}function jn(){let e=M(H,this);return N(H,this,!1),e}async function Mn(){M(I,this)?.signal.aborted&&(N(I,this,new globalThis.AbortController),M(z,this).signal=j(U,this,Tn).call(this),this.request=new globalThis.Request(this.request,{signal:M(z,this).signal}));let e=Ht(M(z,this)),t=M(z,this).retry.limit>0?this.request.clone():void 0,n=j(U,this,Ln).call(this,this.request,M(z,this).body??void 0);N(dn,this,n),t&&(this.request=t);try{let t=j(U,this,Nn).call(this);if(t!==void 0&&t<=0)throw new T(this.request);let r=M(z,this).timeout===!1?t:t===void 0?M(z,this).timeout:Math.min(M(z,this).timeout,t),i=r===void 0?await M(z,this).fetch(n,e):await Bt(n,e,M(I,this),{timeout:r,fetch:M(z,this).fetch});return j(U,this,In).call(this,i,n)}catch(e){throw qt(e)?new at(this.request,{cause:e}):e}}function Nn(){if(M(pn,this)===void 0)return;let e=j(U,this,Pn).call(this)-M(pn,this);return Math.max(0,M(z,this).totalTimeout-e)}function Pn(){return globalThis.performance?.now()??Date.now()}function K(){if(!M(V,this)){let{hooks:e,json:t,parseJson:n,stringifyJson:r,searchParams:i,timeout:a,totalTimeout:o,throwHttpErrors:s,fetch:c,...l}=M(z,this);N(V,this,Object.freeze(l))}return M(V,this)}function Fn(e){N(V,this,void 0),this.request=e}function q(e){return M(mn,this).get(e)??this.request}function In(e,t){return M(mn,this).set(e,t),e}function Ln(e,t){return!M(z,this).onUploadProgress||!e.body||!lt?e:Et(e,M(z,this).onUploadProgress,t??M(z,this).body??void 0)}var Rn=e=>{let t=(t,n)=>hn.create(t,kt(e,n));for(let n of mt)t[n]=(t,r)=>hn.create(t,kt(e,r,{method:n}));return t.create=e=>Rn(kt(e)),t.extend=t=>(typeof t==`function`&&(t=t(e??{})),Rn(kt(e,t))),t.stop=_t,t.retry=yt,t},zn=Rn();function Bn(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.filter(e=>typeof e==`string`).join(`; `)||void 0}function Vn(e){return(e.get(`content-type`)??``).includes(`application/json`)}async function Hn(e){let t,n;try{if(Vn(e.headers)){let r=await e.json();t=r.error?.code??r.code,n=Bn(r.error?.message)??Bn(r.message)??Bn(r.data?.message)}else n=(await e.text()).slice(0,500)}catch{}return new m(`TRANSPORT_FAILED`,n?`HTTP ${e.status}: ${n}`:`HTTP ${e.status}: ${e.statusText||`request failed`}`,{details:{status:e.status,serverCode:t,url:e.url}})}function Un(e,t=`Request aborted`){return new m(`TRANSPORT_ABORTED`,t,{cause:e})}function Wn(e,t=`Network error`){return new m(`TRANSPORT_FAILED`,t,{cause:e})}function Gn(e){return e instanceof m&&e.code===`TRANSPORT_ABORTED`?!0:e?.name===`AbortError`}function Kn(e,t){return`${e.replace(/\/+$/,``)}${t.startsWith(`/`)?t:`/${t}`}`}async function*qn(e,t,r,i={}){let a=i.method??(i.body===void 0?`GET`:`POST`),o=new Headers(r);for(let[e,t]of Object.entries(i.headers??{}))o.set(e,t);o.set(`accept`,`text/event-stream`);let s;i.body!==void 0&&a!==`GET`&&a!==`HEAD`&&(s=typeof i.body==`string`?i.body:JSON.stringify(i.body),!o.has(`content-type`)&&typeof i.body!=`string`&&o.set(`content-type`,`application/json`));let c;try{c=await e(t,{method:a,headers:o,body:s,signal:i.signal})}catch(e){throw Wn(e)}if(!c.ok)throw await Hn(c);if(!c.body)throw new m(`TRANSPORT_FAILED`,`SSE response has no body`);i.onConnected?.();let l=c.body.getReader(),u=new TextDecoder(`utf-8`),d=[],f=(0,n.createParser)({onEvent(e){let t=e.event?.trim()?e.event.trim():`message`;d.push({event:t,data:e.data,id:e.id})}}),p=()=>d.splice(0,d.length);try{for(;;){let{value:e,done:t}=await l.read();if(t){let e=u.decode();e&&f.feed(e);for(let e of p())yield e;break}f.feed(u.decode(e,{stream:!0}));for(let e of p())yield e}}finally{l.releaseLock()}}function Jn(e){return e.replace(/^\//,``)}function Yn(e,t){let n=new Set((t.omitDefaultHeaders??[]).map(e=>e.toLowerCase())),r={};for(let[t,i]of Object.entries(e))n.has(t.toLowerCase())||(r[t]=i);return{...r,...t.headers??{}}}function Xn(e){let t=e.apiBase.replace(/\/+$/,``),n={...e.defaultHeaders??{}},r=e.fetch??(typeof fetch<`u`?fetch.bind(globalThis):void 0);if(!r)throw new m(`TRANSPORT_FAILED`,`No fetch implementation available. Provide one via HttpClientOptions.fetch.`);let i=zn.create({baseUrl:`${t}/`,retry:{limit:0},timeout:!1,fetch:r,hooks:{beforeError:[async e=>{throw e instanceof it?await Hn(e.response):Gn(e)?Un(e):Wn(e)}]}});return{setDefaultHeader(e,t){t===void 0?delete n[e]:n[e]=t},async request(e,t={}){let r=t.method??(t.body===void 0?`GET`:`POST`),a={accept:`application/json`,...Yn(n,t)},o=t.searchParams?Object.fromEntries(Object.entries(t.searchParams).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)])):void 0;try{let n=await i(Jn(e),{method:r,headers:a,searchParams:o,json:r===`GET`||r===`HEAD`?void 0:t.body,signal:t.signal});return n.status===204?void 0:(n.headers.get(`content-type`)??``).includes(`application/json`)?await n.json():await n.text()}catch(e){throw e instanceof m?e:Gn(e)?Un(e):Wn(e)}},stream(e,i={}){return qn(r,Kn(t,e),n,i)}}}var Zn=class{constructor(e){p(this,`http`,void 0),this.http=e}async authenticate(e,t){let n=he(await this.http.request(`/app-client/auth`,{method:`POST`,headers:oe(e,t)}));if(!n?.ok)throw new m(`AUTH_REQUIRED`,`App client authentication failed`);return n}async login(e,t){let n=he(await this.http.request(`/user/login`,{method:`POST`,body:{email:e,password:t}}));if(!n?.accessToken)throw new m(`LOGIN_FAILED`,`Login succeeded but accessToken is missing`);return n}};function Qn(e){if(!e)return;let t=Object.entries(e).filter(([,e])=>e!==void 0&&e!==``);return t.length>0?Object.fromEntries(t):void 0}var $n=class{constructor(e,t){p(this,`http`,void 0),p(this,`resolveAuth`,void 0),this.http=e,this.resolveAuth=t}agentRequestInit(e,t){return{method:`GET`,signal:t.signal,searchParams:t.searchParams,omitDefaultHeaders:[te],headers:de(e)}}listAvailableAgents(e,t){let{dsn:n}=this.resolveAuth();return this.http.request(`/agent/client/available`,this.agentRequestInit(n,{signal:t,searchParams:Qn(e)}))}listAllClientAgents(e){let{dsn:t}=this.resolveAuth();return this.http.request(`/agent/client/list`,this.agentRequestInit(t,{signal:e}))}listClientSkills(e,t,n){let{dsn:r}=this.resolveAuth(),i=e.trim();return this.http.request(`/agent/${i}/skills/client`,this.agentRequestInit(r,{signal:n,searchParams:Qn(t)}))}};function er(e){return!(e instanceof m)||e.code!==`TRANSPORT_FAILED`?!1:e.message.toLowerCase().includes(`property content should not exist`)}function J(e){return e.trim().toLowerCase()}var tr=class{constructor(e){p(this,`http`,void 0),this.http=e}listSessions(e,t,n){return this.http.request(`/chat`,{method:`GET`,signal:n,searchParams:{page:e,size:t}})}getSession(e,t,n,r){return this.http.request(`/chat/${J(e)}`,{method:`GET`,signal:r,searchParams:{page:t,size:n}})}prepareSession(e,t){return this.http.request(`/chat/${J(e)}/prepare`,{method:`POST`,signal:t})}deleteSession(e){return this.http.request(`/chat/${J(e)}`,{method:`DELETE`})}streamSession(e,t){return this.http.stream(`/chat/${J(e)}/stream`,t)}createSession(e,t,n){return this.postUserPayload(`/chat`,e,t,n)}postMessage(e,t,n,r){return this.postUserPayload(`/chat/${e}/messages`,t,n,r)}postWriteConfirmation(e,t,n){let r=`/chat/${J(e)}/messages`,i={role:`user`,content:``,...t};return this.postUserPayloadVoid(r,i,n)}async postUserPayload(e,t,n,r){let i=this.buildUserMessageBody(t,r);try{return await this.http.request(e,{method:`POST`,body:i,signal:n})}catch(t){if(!er(t))throw t;let{content:r,...a}=i;return this.http.request(e,{method:`POST`,body:{...a,message:r},signal:n})}}buildUserMessageBody(e,t){let n={role:`user`,content:e},r=t?.agentId?.trim(),i=t?.skillId?.trim();return r&&(n.agentId=/^\d+$/.test(r)?Number(r):r),i&&(n.skillId=/^\d+$/.test(i)?Number(i):i),n}async postUserPayloadVoid(e,t,n){try{await this.http.request(e,{method:`POST`,body:t,signal:n})}catch(r){if(!er(r))throw r;let{content:i,...a}=t;await this.http.request(e,{method:`POST`,body:{...a,message:i},signal:n})}}};function nr(e){return typeof e==`object`&&!!e}function rr(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}function ir(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`&&e.trim().length>0){let t=Number(e);return Number.isFinite(t)?t:void 0}}function ar(e){if(!nr(e))throw new m(`TRANSPORT_FAILED`,`Invalid API response`);let t=ir(e.status);if(t!==void 0&&t!==200)throw new m(`TRANSPORT_FAILED`,rr(e.message)??`request failed`,{details:{status:t,data:e.data}});if(`data`in e&&e.data===null)return null;let n=h(e);return n===null?e:n}function or(e){return e.trim().toLowerCase()}var sr=class{constructor(e){p(this,`http`,void 0),this.http=e}async getDownReasonTags(e){return Me(ar(await this.http.request(`/chat/feedback/down-reason-tags`,{method:`GET`,signal:e}))).items}async batchFeedbacks(e,t,n){return t.length===0?{items:[]}:Pe(ar(await this.http.request(`/chat/${or(e)}/messages/feedbacks`,{method:`GET`,signal:n,searchParams:{messageIds:t.join(`,`)}})))}async upsert(e,t,n,r){return Ne(ar(await this.http.request(`/chat/${or(e)}/messages/${t}/feedback`,{method:`PUT`,body:n,signal:r})))}async remove(e,t,n){ar(await this.http.request(`/chat/${or(e)}/messages/${t}/feedback`,{method:`DELETE`,signal:n}))}},cr=class{constructor(e){p(this,`context`,void 0),p(this,`sessionId`,null),p(this,`initialMessages`,[]),this.context=e.context}updateContext(e){this.context={...this.context,...e}}getSession(){return this.sessionId?{sessionId:this.sessionId,conversationId:this.sessionId}:null}getInitialMessages(){return this.initialMessages}setSession(e,t=[]){this.sessionId=e.trim().toLowerCase(),this.initialMessages=t}reset(){this.sessionId=null,this.initialMessages=[]}};function Y(e){return/^\d+$/.test(e)}function lr(e){if(!Y(e))return null;let t=Number(e);return Number.isFinite(t)?t:null}function ur(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function X(e){if(!e)return;let t=e.trim();if(!(!t||t[0]!==`{`))try{let e=JSON.parse(t);return Array.isArray(e.blocks)?e.blocks.filter(e=>ur(e)&&typeof e.type==`string`):void 0}catch{return}}function dr(e){return e?.length?e.map(e=>e.type===`text`&&typeof e.content==`string`?e.content:``).join(``):``}function fr(e,t){let n=``;for(let e of t)e.type===`text`&&typeof e.content==`string`&&(n+=e.content);if(!n)return e;let r=[...e],i=r[r.length-1];return i?.type===`text`&&typeof i.content==`string`?(r[r.length-1]={...i,content:`${i.content}${n}`},r):(r.push({type:`text`,format:`markdown`,content:n}),r)}var pr=new Set([`table`,`chart`,`metric`,`list`,`image`,`alert`]);function mr(e){return e.filter(e=>e.type!==`text`||typeof e.content!=`string`||!e.content.trimStart().startsWith(`{`)?!0:!X(e.content))}function hr(e){let t=e.trim().split(`
2
+ `).filter(e=>e.trim().length>0);return t.length<2?!1:t.slice(0,3).some(e=>e.includes(`|`))}function gr(e,t){let n=typeof t.id==`string`?t.id.trim():``;if(n){let r=e.findIndex(e=>e.id===n);if(r>=0){let i=[...e];return i[r]={...t,id:n},i}return[...e,{...t,id:n}]}if(pr.has(t.type)){let n=e.findIndex(e=>e.type===t.type);if(n>=0){let r=[...e];return r[n]=t,r}}return[...e,t]}function _r(e,t){let n=[...e];t.some(e=>e.type!==`text`&&e.type!==`loading`)&&(n=mr(n));let r=n.some(e=>pr.has(e.type)),i=!1;for(let e of t){if(e.type===`text`){i=!0;let t=typeof e.content==`string`?e.content:``;if(!t||n.some(e=>e.type===`text`&&typeof e.content==`string`)||r&&hr(t))continue;n.push({...e,content:t});continue}n=gr(n,e)}return!i&&t.length===0?e:n}function vr(e,t){return fr(e,t)}function yr(e){let t=``;for(let n=0;n<e.length;n+=1){let r=e[n];if(r!==`\\`){t+=r;continue}let i=e[n+1];if(i===void 0){t+=r;break}switch(i){case`n`:t+=`
3
+ `;break;case`t`:t+=` `;break;case`r`:t+=`\r`;break;case`"`:t+=`"`;break;case`\\`:t+=`\\`;break;default:t+=i;break}n+=1}return t}function br(e){let t=e.trimStart();return t.startsWith(`{`)?/"blocks"/.test(t):!1}var xr=/"type"\s*:\s*"text"\s*,\s*"content"\s*:\s*"/;function Sr(e){if(!br(e))return;let t=X(e);if(t)return dr(t);let n=xr.exec(e);if(!n)return null;let r=n.index+n[0].length,i=``;for(;r<e.length;){let t=e[r];if(t===`\\`){if(r+1>=e.length){i+=t;break}i+=e.slice(r,r+2),r+=2;continue}if(t===`"`)break;i+=t,r+=1}return yr(i)}function Cr(e){if(e.length!==1)return e;let t=e[0];if(t?.type!==`text`||typeof t.content!=`string`)return e;let n=X(t.content);if(n&&n.length>0)return n;let r=Sr(t.content);return r===void 0?e:[{type:`text`,format:typeof t.format==`string`?t.format:`markdown`,content:r??``}]}function wr(e,t){if(!t.length)return e;let n=[...e];for(let e of t){let t=e.replaceId.trim();if(!t)continue;let r=n.findIndex(e=>e.id===t);r>=0?n[r]={...e.block,id:t}:n.push({...e.block,id:t})}return n}var Tr=`0.1.0`;function Er(e=`id`){let t=globalThis.crypto;return t?.randomUUID?`${e}_${t.randomUUID().replace(/-/g,``).slice(0,12)}`:`${e}_${Math.random().toString(36).slice(2,14)}`}function Dr(e){return e.replace(/\/+$/,``)}function Z(e){return e.trim().toLowerCase()}function Or(e,t){let n=new Set(e.map(e=>Z(e.sessionId))),r=[...e];for(let e of t){let t=Z(e.sessionId);n.has(t)||(n.add(t),r.push(e))}return r}function kr(e,t){let n=new Set(e.map(e=>String(e.id))),r=[];for(let e of t){let t=String(e.id);n.has(t)||(n.add(t),r.push(e))}return[...r,...e]}function Q(){return{phase:`thinking`,thinkText:``,resultText:``}}function $(e,t,n={}){let r=(n.content?.type===`text`?n.content.text:void 0)??(t.resultText||e.content.text),i=n.blocks??t.resultBlocks??e.blocks,a=X(r),o=a??Cr(i??[]),s=a?dr(o):r;return{...e,...n,status:n.status??`sent`,content:{type:`text`,text:s},blocks:o,thinkText:void 0,stream:void 0}}function Ar(){return typeof navigator<`u`&&navigator.language?navigator.language:`en`}function jr(){return typeof window<`u`&&window.location?.origin?window.location.origin:`unknown://sdk`}var Mr=class{constructor(e=Er(`inst`)){p(this,`id`,void 0),p(this,`bus`,new Ke),p(this,`lifecycle`,`uninitialized`),p(this,`state`,null),p(this,`stateChangeListeners`,new Set),p(this,`sessionEpoch`,0),p(this,`stateSnapshot`,null),this.id=e}async init(e){if(this.state){if(this.state.options.dsn===e.dsn)return typeof console<`u`&&typeof console.warn==`function`&&console.warn(`[agent-chat] init() called twice with the same DSN — keeping existing instance state.`),this;throw new m(`ALREADY_INITIALIZED`,`AgentChat is already initialized with a different DSN. Call destroy() first.`)}if(!e||typeof e!=`object`)throw new m(`INVALID_OPTIONS`,`init(options): options object is required`);let t=Dr((e.baseUrl?.trim()||`http://localhost:3030`).replace(/\s+/g,``)),n=ne(e.dsn),r=x.getState().getAccessTokenForDsn(n),i=typeof e.accountToken==`string`&&e.accountToken.trim()||typeof e.userAccessToken==`string`&&e.userAccessToken.trim()||r||null,a=Xn({apiBase:t,defaultHeaders:{[te]:n,"X-Agent-Sdk-Version":Tr,...e.headers??{}}}),o=new Zn(a),s=new tr(a),c=new sr(a),l=await o.authenticate(n,i),u=l.accessToken?.trim()??null;x.getState().setAuth(n,l),u&&le(a,u);let d=new $n(a,()=>({dsn:this.state?.dsn??n})),f=new cr({context:{sdkVersion:Tr,origin:jr(),locale:e.locale??Ar(),user:e.user??Nr(l.user)}});return this.state={options:e,dsn:n,apiBaseUrl:t,http:a,auth:o,chat:s,agent:d,feedback:c,session:f,abortControllers:new Set,isOpen:!1,isClientAuthenticated:!0,isLoggedIn:!!u,sessions:[],sessionsPage:0,sessionsPageSize:20,sessionsHasMore:!1,sessionsLoadingMore:!1,activeSessionId:null,activeSessionMessagesPage:0,activeSessionMessagesHasMore:!1,sessionMessagesLoadingMore:!1,sessionMessagesPageSize:20,sessionMessagesCache:new Map,agents:e.agents?[...e.agents]:[],skills:[],selectedAgentId:e.defaultAgentId?.trim()??null,selectedSkillId:e.defaultSkillId?.trim()??null,agentsLoading:!1,skillsLoading:!1,agentsEmptyReason:null,userJwt:u,activeStreamAbort:null,activeStreamSessionId:null,activeStreamTargetMessageId:null,messages:[],lastError:null,writeConfirmation:null,downReasonTagsCache:null},this.lifecycle=`initialized`,this.stateSnapshot=null,this.applyStaticSkills(this.state),this.syncDefaultAgentSelection(this.state),e.onReady&&this.bus.on(`ready`,e.onReady),queueMicrotask(()=>this.bus.emit(`ready`,void 0)),e.autoOpen&&this.open(),this}async login(e){let t=this.requireState(`login`),n=e?.email?.trim(),r=e?.password?.trim();if(!n||!r)throw new m(`INVALID_OPTIONS`,`login requires email and password`);let i;try{i=await t.auth.login(n,r)}catch(e){throw e instanceof m&&e.code===`TRANSPORT_FAILED`?new m(`LOGIN_FAILED`,e.message,{cause:e,details:e.details}):e}x.getState().setAuth(t.dsn,i);let a=i.accessToken?.trim();if(!a)throw new m(`LOGIN_FAILED`,`Login succeeded but no access token was returned.`);ue(t.http);let o=await t.auth.authenticate(t.dsn,a),s=o.accessToken?.trim();if(!s)throw new m(`LOGIN_FAILED`,`App client auth succeeded but accessToken is missing`);x.getState().setAuth(t.dsn,o),le(t.http,s),t.userJwt=s,t.isLoggedIn=!0,this.notifyStateChange(),t.isOpen&&this.refreshAgentCatalog().catch(()=>{})}logout(){let e=this.state;e&&(this.abortActiveStream(),e.isLoggedIn=!1,ue(e.http),x.getState().clearAuth(),e.session.reset(),e.sessions=[],e.sessionsPage=0,e.sessionsHasMore=!1,e.sessionsLoadingMore=!1,e.activeSessionId=null,e.activeSessionMessagesPage=0,e.activeSessionMessagesHasMore=!1,e.sessionMessagesLoadingMore=!1,e.sessionMessagesCache.clear(),e.agents=[],e.skills=[],e.selectedAgentId=null,e.selectedSkillId=null,e.agentsLoading=!1,e.skillsLoading=!1,e.agentsEmptyReason=null,e.userJwt=null,e.messages=[],this.notifyStateChange())}isLoggedIn(){return this.state?.isLoggedIn??!1}destroy(){if(this.state){this.abortActiveStream();for(let e of this.state.abortControllers)try{e.abort()}catch{}this.state.abortControllers.clear(),this.state.session.reset(),this.state.isOpen=!1,this.state=null,this.lifecycle=`destroyed`,this.stateSnapshot=null,this.bus.emit(`destroyed`,void 0),this.bus.clear(),this.stateChangeListeners.clear()}}open(){let e=this.state;if(!e){typeof console<`u`&&console.warn(`[agent-chat] open() called before init() (or after destroy()) — ignoring.`);return}e.isOpen||(e.isOpen=!0,this.notifyStateChange(),this.bus.emit(`open`,void 0),e.isLoggedIn&&queueMicrotask(()=>{this.state?.isOpen&&this.prefetch().catch(()=>{})}))}close(){let e=this.state;!e||!e.isOpen||(e.isOpen=!1,this.notifyStateChange(),this.bus.emit(`close`,void 0))}toggle(){this.isOpen()?this.close():this.open()}isOpen(){return this.state?.isOpen??!1}identify(e){let t=this.requireState(`identify`),n=t.session.getSession();t.session.updateContext({user:e});let r=t.options.user?.id;t.options={...t.options,user:e},n&&r&&r!==e.id&&(t.session.reset(),t.messages=[],this.notifyStateChange())}async prefetch(){let e=this.requireState(`prefetch`);this.requireLoggedIn(`prefetch`);let t=this.makeAbortController();try{if(await Promise.all([this.refreshSessions(t.signal),this.refreshAgentCatalog(t.signal)]),!e.sessions.length)return;let n=e.activeSessionId&&e.sessions.some(t=>t.sessionId===e.activeSessionId)?e.activeSessionId:e.sessions[0].sessionId;await this.selectSession(n,{signal:t.signal,skipAbortStream:!0})}finally{e.abortControllers.delete(t)}}async selectSession(e,t={}){let n=this.requireState(`selectSession`);this.requireLoggedIn(`selectSession`);let r=e.trim();if(!r)throw new m(`INVALID_OPTIONS`,`selectSession: sessionId is required`);let i=this.sessionEpoch;t.skipAbortStream||this.abortActiveStream(),n.activeSessionId&&n.activeSessionId!==r&&this.writeSessionMessagesCache(n,n.activeSessionId),n.writeConfirmation=null;let a=n.sessionMessagesCache.get(r);if(a){i===this.sessionEpoch&&(n.activeSessionId=r,n.messages=a.messages,n.activeSessionMessagesPage=a.page,n.activeSessionMessagesHasMore=a.hasMore,n.session.setSession(r,a.messages),this.notifyStateChange(),this.bus.emit(`session`,n.session.getSession()),t.signal?.aborted||(this.ensureSessionStream(r).catch(()=>{}),this.syncMessageFeedbacks(n,r).catch(()=>{})));return}let o=this.makeAbortController(),s=t.signal;s&&s.addEventListener(`abort`,()=>o.abort(),{once:!0});try{let e=await this.fetchSessionMessagesPage(n,r,1,o.signal),a=e.messages.map(e=>this.toAgentMessage(e)),s={messages:a,page:e.page,hasMore:e.hasMore};if(n.sessionMessagesCache.set(r,s),i!==this.sessionEpoch)return;n.activeSessionId=r,n.activeSessionMessagesPage=e.page,n.activeSessionMessagesHasMore=e.hasMore,n.session.setSession(e.sessionId,a),n.messages=a,this.notifyStateChange(),this.bus.emit(`session`,n.session.getSession()),t.signal?.aborted||(this.ensureSessionStream(r).catch(()=>{}),this.syncMessageFeedbacks(n,r).catch(()=>{}))}finally{n.abortControllers.delete(o)}}async sendMessage(e,t={}){let n=this.requireState(`sendMessage`);this.requireLoggedIn(`sendMessage`);let r=e.trim();if(r.length===0)throw new m(`INVALID_OPTIONS`,`sendMessage: text must not be empty`);this.sessionEpoch+=1,this.settlePendingAgentReplies(n),n.writeConfirmation=null;let i=this.appendOptimisticUserMessage(n,r,t.id);n.activeStreamTargetMessageId=this.appendAgentPlaceholder(n).id;let a=this.makeAbortController();try{let e=n.activeSessionId??n.session.getSession()?.sessionId??null;if(!e)return e=await this.createChatSession(n,r,a.signal),this.refreshSessions(a.signal).catch(()=>{}),await this.ensureSessionStream(e),this.applyUserMessageSent(n,i);let t=await this.postUserMessageAndApply(n,e,r,a.signal,i);return await this.ensureSessionStream(e),t}catch(e){let t={...i,status:`failed`};n.messages=n.messages.map(e=>e.id===i.id?t:e),this.cacheActiveSessionMessages(n),this.notifyStateChange();let r=e instanceof m?new m(`MESSAGE_FAILED`,e.message,{cause:e,details:{...e.details??{},messageId:i.id}}):new m(`MESSAGE_FAILED`,`Failed to send message`,{cause:e,details:{messageId:i.id}});throw this.reportError(r),r}finally{n.abortControllers.delete(a)}}async confirmWrite(){let e=this.requireState(`confirmWrite`);this.requireLoggedIn(`confirmWrite`);let t=e.writeConfirmation;if(!t?.awaiting)throw new m(`INVALID_OPTIONS`,`No pending write confirmation`);let n=e.activeSessionId??e.session.getSession()?.sessionId??null;if(!n)throw new m(`INVALID_OPTIONS`,`confirmWrite: no active session`);e.writeConfirmation={...t,awaiting:!1,submitting:!0},this.notifyStateChange(),e.activeStreamTargetMessageId=this.appendAgentPlaceholder(e).id;let r=this.makeAbortController();try{await this.postWriteConfirmationAction(e,n,{confirmWrite:!0},r.signal)}catch(n){e.writeConfirmation={...t,awaiting:!0,submitting:!1},this.notifyStateChange();let r=n instanceof m?n:new m(`MESSAGE_FAILED`,`Failed to confirm write operation`,{cause:n});throw this.reportError(r),r}finally{e.abortControllers.delete(r)}}async cancelWrite(){let e=this.requireState(`cancelWrite`);this.requireLoggedIn(`cancelWrite`);let t=e.writeConfirmation;if(!t?.awaiting)throw new m(`INVALID_OPTIONS`,`No pending write confirmation`);let n=e.activeSessionId??e.session.getSession()?.sessionId??null;if(!n)throw new m(`INVALID_OPTIONS`,`cancelWrite: no active session`);e.writeConfirmation={...t,awaiting:!1,submitting:!0},this.notifyStateChange();let r=this.makeAbortController();try{await this.postWriteConfirmationAction(e,n,{cancelWrite:!0},r.signal)}catch(n){e.writeConfirmation={...t,awaiting:!0,submitting:!1},this.notifyStateChange();let r=n instanceof m?n:new m(`MESSAGE_FAILED`,`Failed to cancel write operation`,{cause:n});throw this.reportError(r),r}finally{e.abortControllers.delete(r)}}async getDownReasonTags(){let e=this.requireState(`getDownReasonTags`);if(this.requireLoggedIn(`getDownReasonTags`),e.downReasonTagsCache)return e.downReasonTagsCache;let t=await e.feedback.getDownReasonTags();return e.downReasonTagsCache=t,t}async submitMessageFeedback(e,t){let n=this.requireState(`submitMessageFeedback`);this.requireLoggedIn(`submitMessageFeedback`);let r=n.activeSessionId??n.session.getSession()?.sessionId??null;if(!r)throw new m(`INVALID_OPTIONS`,`submitMessageFeedback: no active session`);let i=lr(e);if(i===null)throw new m(`INVALID_OPTIONS`,`submitMessageFeedback: invalid messageId`);let a=n.messages.find(t=>t.id===e);if(!a||a.role!==`agent`)throw new m(`INVALID_OPTIONS`,`submitMessageFeedback: not an assistant message`);let o=a.feedback??null,s=this.buildOptimisticFeedback(i,t);this.patchMessageFeedback(n,e,s);try{let a=await n.feedback.upsert(r,i,t);this.patchMessageFeedback(n,e,a)}catch(t){this.patchMessageFeedback(n,e,o);let r=t instanceof m?t:new m(`MESSAGE_FAILED`,`Failed to submit feedback`,{cause:t});throw this.reportError(r),r}}async removeMessageFeedback(e){let t=this.requireState(`removeMessageFeedback`);this.requireLoggedIn(`removeMessageFeedback`);let n=t.activeSessionId??t.session.getSession()?.sessionId??null;if(!n)throw new m(`INVALID_OPTIONS`,`removeMessageFeedback: no active session`);let r=lr(e);if(r===null)throw new m(`INVALID_OPTIONS`,`removeMessageFeedback: invalid messageId`);let i=t.messages.find(t=>t.id===e);if(!i||i.role!==`agent`)throw new m(`INVALID_OPTIONS`,`removeMessageFeedback: not an assistant message`);let a=i.feedback??null;this.patchMessageFeedback(t,e,null);try{await t.feedback.remove(n,r)}catch(n){this.patchMessageFeedback(t,e,a);let r=n instanceof m?n:new m(`MESSAGE_FAILED`,`Failed to remove feedback`,{cause:n});throw this.reportError(r),r}}getOptions(){return this.state?.options??null}getState(){return this.stateSnapshot||(this.state?this.stateSnapshot={lifecycle:this.lifecycle,isOpen:this.state.isOpen,isClientAuthenticated:this.state.isClientAuthenticated,isLoggedIn:this.state.isLoggedIn,session:this.state.session.getSession(),sessions:this.state.sessions,sessionsHasMore:this.state.sessionsHasMore,sessionsLoadingMore:this.state.sessionsLoadingMore,activeSessionId:this.state.activeSessionId,messages:[...this.state.messages],sessionMessagesHasMore:this.state.activeSessionMessagesHasMore,sessionMessagesLoadingMore:this.state.sessionMessagesLoadingMore,agents:[...this.state.agents],skills:[...this.state.skills],selectedAgentId:this.state.selectedAgentId,selectedSkillId:this.state.selectedSkillId,agentsLoading:this.state.agentsLoading,skillsLoading:this.state.skillsLoading,agentsEmptyReason:this.state.agentsEmptyReason,lastError:this.state.lastError,writeConfirmation:this.state.writeConfirmation}:this.stateSnapshot={lifecycle:this.lifecycle,isOpen:!1,isClientAuthenticated:!1,isLoggedIn:!1,session:null,sessions:[],sessionsHasMore:!1,sessionsLoadingMore:!1,activeSessionId:null,messages:[],sessionMessagesHasMore:!1,sessionMessagesLoadingMore:!1,agents:[],skills:[],selectedAgentId:null,selectedSkillId:null,agentsLoading:!1,skillsLoading:!1,agentsEmptyReason:null,lastError:null,writeConfirmation:null}),this.stateSnapshot}on(e,t){return this.bus.on(e,t)}off(e,t){this.bus.off(e,t)}subscribeStateChange(e){return this.stateChangeListeners.add(e),()=>this.stateChangeListeners.delete(e)}appendMessage(e){let t=this.state;t&&(t.messages=[...t.messages,e],this.notifyStateChange(),this.bus.emit(`message`,{message:e,source:e.role}))}notifyStateChange(){this.stateSnapshot=null;for(let e of Array.from(this.stateChangeListeners))try{e()}catch(e){this.state?.options.debug&&console.error(`[agent-chat] state listener threw:`,e)}}reportError(e){let t={code:e.code,message:e.message,cause:e.cause};this.state&&(this.state.lastError=t,this.notifyStateChange()),this.state?.options.debug&&typeof console<`u`&&(console.error(`[agent-chat]`,e),this.bus.listenerCount(`error`)===0&&console.warn("[agent-chat] Unhandled AgentChat error (no `error` listeners attached)")),this.bus.emit(`error`,t)}requireState(e){if(!this.state)throw new m(`NOT_INITIALIZED`,`AgentChat.${e}() called before init(). Call AgentChat.init({ dsn }) first.`);return this.state}requireLoggedIn(e){let t=this.state;if(!(!t||t.isLoggedIn))throw new m(`AUTH_REQUIRED`,`AgentChat.${e}() requires authentication. Call init() and ensure /app-client/auth succeeds.`)}makeAbortController(){let e=new AbortController;return this.state?.abortControllers.add(e),e}async prepareSession(e,t){let n=this.requireState(`prepareSession`);this.requireLoggedIn(`prepareSession`);let r=e.trim();if(r)try{await n.chat.prepareSession(r,t)}catch(e){if(t?.aborted)return;n.options.debug&&console.warn(`[agent-chat] prepareSession failed:`,e)}}async deleteSession(e){let t=this.requireState(`deleteSession`);this.requireLoggedIn(`deleteSession`);let n=e.trim();if(!n)throw new m(`INVALID_OPTIONS`,`deleteSession: sessionId is required`);let r=Z(n),i=t.activeSessionId!=null&&Z(t.activeSessionId)===r;i&&(this.sessionEpoch+=1,this.abortActiveStream(),this.settlePendingAgentReplies(t),t.activeSessionId=null,t.activeSessionMessagesPage=0,t.activeSessionMessagesHasMore=!1,t.session.reset(),t.messages=[],t.writeConfirmation=null);for(let e of[...t.sessionMessagesCache.keys()])Z(e)===r&&t.sessionMessagesCache.delete(e);try{await t.chat.deleteSession(n),await this.refreshSessions()}catch(e){let t=e instanceof m?e:new m(`TRANSPORT_FAILED`,`Failed to delete session`,{cause:e});throw this.reportError(t),t}if(i){let e=t.sessions[0];e&&await this.selectSession(e.sessionId)}}async refreshSessions(e){let t=this.requireState(`refreshSessions`);this.requireLoggedIn(`refreshSessions`);let n=await this.fetchSessionsPage(t,1,e);t.sessions=n.sessions,t.sessionsPage=n.page,t.sessionsHasMore=n.hasMore,t.sessionsLoadingMore=!1,this.notifyStateChange(),this.bus.emit(`sessions`,{sessions:t.sessions})}async loadMoreSessions(e){let t=this.requireState(`loadMoreSessions`);if(this.requireLoggedIn(`loadMoreSessions`),!(!t.sessionsHasMore||t.sessionsLoadingMore)){t.sessionsLoadingMore=!0,this.notifyStateChange();try{let n=await this.fetchSessionsPage(t,t.sessionsPage+1,e);t.sessions=Or(t.sessions,n.sessions),t.sessionsPage=n.page,t.sessionsHasMore=n.hasMore,this.bus.emit(`sessions`,{sessions:t.sessions})}finally{t.sessionsLoadingMore=!1,this.notifyStateChange()}}}async fetchSessionsPage(e,t,n){return be(await e.chat.listSessions(t,e.sessionsPageSize,n),t,e.sessionsPageSize)}async loadMoreSessionMessages(e){let t=this.requireState(`loadMoreSessionMessages`);this.requireLoggedIn(`loadMoreSessionMessages`);let n=t.activeSessionId;if(!(!n||!t.activeSessionMessagesHasMore||t.sessionMessagesLoadingMore)){t.sessionMessagesLoadingMore=!0,this.notifyStateChange();try{let r=await this.fetchSessionMessagesPage(t,n,t.activeSessionMessagesPage+1,e),i=r.messages.map(e=>this.toAgentMessage(e)),a=kr(t.messages,i);t.messages=a,t.activeSessionMessagesPage=r.page,t.activeSessionMessagesHasMore=r.hasMore,t.session.setSession(n,a),this.writeSessionMessagesCache(t,n,a,r.page,r.hasMore),this.notifyStateChange(),this.syncMessageFeedbacks(t,n).catch(()=>{})}finally{t.sessionMessagesLoadingMore=!1,this.notifyStateChange()}}}async selectAgent(e){let t=this.requireState(`selectAgent`);this.requireLoggedIn(`selectAgent`);let n=e.trim();!n||t.selectedAgentId===n||(t.selectedAgentId=n,t.selectedSkillId=null,this.notifyStateChange(),await this.refreshSkills(n))}selectSkill(e){let t=this.requireState(`selectSkill`),n=e.trim();if(!n){if(t.selectedSkillId==null)return;t.selectedSkillId=null,this.notifyStateChange();return}t.selectedSkillId!==n&&(t.selectedSkillId=n,this.notifyStateChange())}async refreshAgentCatalog(e){let t=this.requireState(`refreshAgentCatalog`);if(t.options.agents?.length){t.agents=[...t.options.agents],t.agentsEmptyReason=null,this.syncDefaultAgentSelection(t),t.options.skills?.length||await this.refreshSkills(t.selectedAgentId??void 0,e);return}if(t.userJwt){t.agentsLoading=!0,t.agentsEmptyReason=null,this.notifyStateChange();try{let n=ke(await t.agent.listAvailableAgents(t.options.agentListQuery,e));t.agents=n,n.length===0&&(t.agentsEmptyReason=await this.resolveAgentsEmptyReason(t,e)),this.syncDefaultAgentSelection(t),await this.refreshSkills(t.selectedAgentId??void 0,e)}catch{t.agents=[],t.agentsEmptyReason=null,this.applyStaticSkills(t)}finally{t.agentsLoading=!1,this.notifyStateChange()}}}async resolveAgentsEmptyReason(e,t){try{return ke(await e.agent.listAllClientAgents(t)).length>0?`permission`:`not_configured`}catch{return null}}async refreshSkills(e,t){let n=this.requireState(`refreshSkills`),r=e?.trim()||n.selectedAgentId||void 0;if(n.options.skills?.length){n.skills=r?n.options.skills.filter(e=>!e.agentId||e.agentId===r):[...n.options.skills],this.syncDefaultSkillSelection(n),this.notifyStateChange();return}if(!r){n.skills=[],n.selectedSkillId=null,this.notifyStateChange();return}n.skillsLoading=!0,this.notifyStateChange();try{n.skills=Fe(await n.agent.listClientSkills(r,n.options.skillListQuery,t)),this.syncDefaultSkillSelection(n)}catch{n.skills=[],n.selectedSkillId=null}finally{n.skillsLoading=!1,this.notifyStateChange()}}applyStaticSkills(e){let t=e.options.skills;if(!t?.length)return;let n=e.selectedAgentId;e.skills=n?t.filter(e=>!e.agentId||e.agentId===n):[...t],this.syncDefaultSkillSelection(e)}syncDefaultAgentSelection(e){e.selectedAgentId?e.agents.some(t=>t.id===e.selectedAgentId)||(e.selectedAgentId=e.agents[0]?.id??e.selectedAgentId):e.agents.length&&(e.selectedAgentId=e.agents[0].id),this.applyStaticSkills(e)}syncDefaultSkillSelection(e){let t=e.options.defaultSkillId?.trim();if(!(e.selectedSkillId&&e.skills.some(t=>t.id===e.selectedSkillId))){if(t&&e.skills.some(e=>e.id===t)){e.selectedSkillId=t;return}e.selectedSkillId=e.skills[0]?.id??null}}getMessageSendContext(e){let t=e.selectedAgentId?.trim(),n=e.selectedSkillId?.trim();if(!(!t&&!n))return{agentId:t||void 0,skillId:n||void 0}}async fetchSessionMessagesPage(e,t,n,r){let i=Ce(await e.chat.getSession(t,n,e.sessionMessagesPageSize,r),t,n,e.sessionMessagesPageSize);if(!i)throw new m(`TRANSPORT_FAILED`,`Invalid session detail response`,{details:{sessionId:t,page:n}});return i}startNewChat(){let e=this.requireState(`startNewChat`);this.requireLoggedIn(`startNewChat`),this.sessionEpoch+=1,this.abortActiveStream(),e.activeSessionId&&this.writeSessionMessagesCache(e,e.activeSessionId),e.activeSessionId=null,e.activeSessionMessagesPage=0,e.activeSessionMessagesHasMore=!1,e.session.reset(),e.messages=[],e.writeConfirmation=null,this.notifyStateChange()}cancelGeneration(){this.abortActiveStream()}abortActiveStream(){let e=this.state;if(e?.activeStreamAbort){try{e.activeStreamAbort.abort()}catch{}e.activeStreamAbort=null,e.activeStreamSessionId=null,e.activeStreamTargetMessageId=null}}async ensureSessionStream(e){let t=this.requireState(`ensureSessionStream`),n=Z(e);if(t.activeStreamAbort&&t.activeStreamSessionId===n)return;this.abortActiveStream();let r=new AbortController;await this.connectSessionStream(n,r)}writeSessionMessagesCache(e,t,n=e.messages,r=e.activeSessionMessagesPage,i=e.activeSessionMessagesHasMore){e.sessionMessagesCache.set(t,{messages:n,page:r,hasMore:i})}cacheActiveSessionMessages(e){e.activeSessionId&&this.writeSessionMessagesCache(e,e.activeSessionId)}settlePendingAgentReplies(e){let t=[],n=!1;for(let r of e.messages){if(r.role!==`agent`||r.status!==`pending`){t.push(r);continue}n=!0;let e=r.stream??Q();(e.resultText||r.content.text).trim()&&t.push($(r,e,{status:`sent`}))}n&&(e.messages=t,this.cacheActiveSessionMessages(e),this.notifyStateChange())}removeAgentMessage(e,t){let n=e.messages.filter(e=>e.id!==t);n.length!==e.messages.length&&(e.messages=n,this.cacheActiveSessionMessages(e),this.notifyStateChange())}patchMessageById(e,t,n){let r=e.messages.find(e=>e.id===t);if(!r)return null;let i=n(r);return e.messages=e.messages.map(e=>e.id===t?i:e),this.cacheActiveSessionMessages(e),this.notifyStateChange(),this.bus.emit(`message`,{message:i,source:i.role===`user`?`user`:`agent`}),i}isExistingSentAssistantText(e,t,n){let r=t.trim();return r?e.messages.some(e=>e.role===`agent`&&e.id!==n&&e.status===`sent`&&e.content.text.trim()===r):!1}resolveStreamTargetMessageId(e,t){if(t)return t;let n=e.activeStreamTargetMessageId;if(n&&e.messages.some(e=>e.id===n))return n;for(let t=e.messages.length-1;t>=0;--t){let n=e.messages[t];if(n?.role===`agent`&&(n.status??`pending`)===`pending`)return e.activeStreamTargetMessageId=n.id,n.id}return null}appendAgentPlaceholder(e){let t={id:Er(`msg`),role:`agent`,content:{type:`text`,text:``},createdAt:Date.now(),status:`pending`,stream:Q()};return e.messages=[...e.messages,t],this.cacheActiveSessionMessages(e),this.notifyStateChange(),this.bus.emit(`message`,{message:t,source:`agent`}),t}appendOptimisticUserMessage(e,t,n){let r={id:n??Er(`msg`),role:`user`,content:{type:`text`,text:t},createdAt:Date.now(),status:`pending`};return e.messages=[...e.messages,r],this.cacheActiveSessionMessages(e),this.notifyStateChange(),this.bus.emit(`message`,{message:r,source:`user`}),r}async createChatSession(e,t,n){let r=await e.chat.createSession(t,n,this.getMessageSendContext(e)),i=we(r);if(!i?.sessionId)throw new m(`TRANSPORT_FAILED`,`POST /chat did not return sessionId`,{details:{body:r}});return e.activeSessionId=i.sessionId,e.activeSessionMessagesPage=1,e.activeSessionMessagesHasMore=!1,e.session.setSession(i.sessionId,e.messages),this.writeSessionMessagesCache(e,i.sessionId),this.bus.emit(`session`,e.session.getSession()),i.sessionId}applyUserMessageSent(e,t){let n={...t,status:`sent`};return e.messages=e.messages.map(e=>e.id===t.id?n:e),this.cacheActiveSessionMessages(e),this.notifyStateChange(),this.bus.emit(`message`,{message:n,source:`user`}),n}async postUserMessageAndApply(e,t,n,r,i){let a=Te(await e.chat.postMessage(t,n,r,this.getMessageSendContext(e))),o=a?{...this.toAgentMessage(a),status:`sent`}:{...i,status:`sent`};return e.messages=e.messages.map(e=>e.id===i.id?o:e),this.cacheActiveSessionMessages(e),this.notifyStateChange(),this.bus.emit(`message`,{message:o,source:o.role}),o}async postWriteConfirmationAction(e,t,n,r){await e.chat.postWriteConfirmation(t,n,r)}connectSessionStream(e,t){let n=this.requireState(`connectSessionStream`);return n.activeStreamAbort=t,n.activeStreamSessionId=Z(e),n.abortControllers.add(t),new Promise((r,i)=>{let a=!1,o=()=>{a||(a=!0,r())},s=e=>{a||(a=!0,i(e))};this.consumeSessionStream(e,t,o).catch(e=>{a||s(e)}).finally(()=>{n.abortControllers.delete(t),n.activeStreamAbort===t&&(n.activeStreamAbort=null,n.activeStreamSessionId=null)})})}async consumeSessionStream(e,t,n){let r=this.requireState(`consumeSessionStream`),i=e=>e?r.messages.find(t=>t.id===e):void 0,a=(e,t)=>{r.messages=r.messages.map(n=>n.id===t?e:n),this.cacheActiveSessionMessages(r),this.notifyStateChange(),this.bus.emit(`message`,{message:e,source:`agent`})};try{for await(let o of r.chat.streamSession(e,{signal:t.signal,onConnected:n})){r.options.debug&&console.debug(`[agent-chat] SSE`,o.event,o.data.slice(0,120));let t=rt(o.event,o.data),n=t.type===`think`||t.type===`result`||t.type===`message-blocks`||t.type===`complete`?this.resolveStreamTargetMessageId(r,t.messageId):null;switch(n=this.maybeRebindStreamMessageId(r,n,t.type===`think`||t.type===`result`||t.type===`message-blocks`||t.type===`complete`?t.messageId:void 0),t.type){case`think`:if(!n)break;this.patchMessageById(r,n,e=>{let n={...e.stream??Q()},r=t.mode===`append`?`${n.thinkText}${t.text}`:t.text,i=!!n.resultText?.trim()||!!(n.resultBlocks??e.blocks??[]).length;return{...e,status:`pending`,content:i?e.content:{type:`text`,text:``},stream:{...n,thinkText:r,phase:i?`result`:`thinking`}}});break;case`result`:if(!n||t.mode===`replace`&&this.isExistingSentAssistantText(r,t.text,n))break;this.patchMessageById(r,n,e=>{let n={...e.stream??Q()},r=t.mode===`append`?`${n.resultText}${t.text}`:t.text;return{...e,status:`pending`,content:{type:`text`,text:r},stream:{...n,resultText:r,phase:`result`}}});break;case`message-blocks`:{if(!n&&t.runId!=null&&r.writeConfirmation?.submitting){let e=this.appendAgentPlaceholder(r);r.activeStreamTargetMessageId=e.id,n=e.id}if(!n)break;let e=t.seq;this.patchMessageById(r,n,n=>{let r={...n.stream??Q()},i=new Set(r.seenSeq??[]);if(e!=null&&i.has(e))return n;e!=null&&i.add(e);let a=r.resultBlocks??n.blocks??[],o=a;t.action===`stream`?o=t.streamMode===`full`?_r(a,t.blocks??[]):vr(a,t.blocks??[]):t.action===`patch`&&(o=wr(a,(t.patches??[]).map(e=>({replaceId:e.replaceId,block:e.block})))),o=Cr(o);let s=dr(o);return{...n,status:`pending`,content:{type:`text`,text:s},blocks:o,stream:{...r,runId:t.runId??r.runId,resultBlocks:o,resultText:s,phase:`result`,seenSeq:[...i]}}});break}case`write-confirmation-required`:r.writeConfirmation={awaiting:!0,submitting:!1,runId:t.runId,turnId:t.turnId,message:t.message},this.notifyStateChange();break;case`write-confirmation-cancelled`:{r.writeConfirmation=null,this.notifyStateChange();let e={id:Er(`msg`),role:`system`,content:{type:`text`,text:t.message},createdAt:Date.now(),status:`sent`};r.messages=[...r.messages,e],this.cacheActiveSessionMessages(r),this.notifyStateChange(),this.bus.emit(`message`,{message:e,source:`agent`});break}case`complete`:{if(!n)break;let o=i(n);if(!o)break;let s=r.writeConfirmation?.awaiting,c={...o.stream??Q(),phase:`complete`},l;if(t.serverMessage){let e=this.toAgentMessage(t.serverMessage);l=$({...o,content:e.content,blocks:e.blocks??o.blocks},{...c,resultText:e.content.text,resultBlocks:e.blocks??c.resultBlocks},{status:`sent`})}else l=$(o,c,{status:`sent`});let u=this.resolveCompleteServerMessageId(t);u&&u!==n&&!r.messages.some(e=>e.id===u)?a({...l,id:u},n):a(l,n),r.activeStreamTargetMessageId=null,s||(r.writeConfirmation=null,this.notifyStateChange()),this.alignPersistedMessageIds(r,e,{preferLocalId:n,preferServerId:u}).catch(()=>{});break}case`error`:throw t.code===`WRITE_CONFIRMATION_EXPIRED`&&(r.writeConfirmation=null,this.notifyStateChange()),new m(`MESSAGE_FAILED`,t.message,{details:t.code?{code:t.code}:void 0});case`noop`:break;default:break}}let o=i(this.resolveStreamTargetMessageId(r));o&&(o.status??`pending`)===`pending`&&a($(o,{...o.stream??Q(),phase:`complete`},{status:`sent`}),o.id),this.alignPersistedMessageIds(r,e).catch(()=>{})}catch(e){if(e?.name===`AbortError`){let e=i(this.resolveStreamTargetMessageId(r));if(!e)return;let t=e.stream??Q();(t.resultText||e.content.text).trim()?a($(e,{...t,phase:`complete`},{status:`sent`}),e.id):this.removeAgentMessage(r,e.id);return}let t=i(this.resolveStreamTargetMessageId(r));if(t){let n=t.stream??Q();a({...t,status:`failed`,stream:{...n,phase:`error`,errorMessage:e instanceof Error?e.message:`Stream failed`}},t.id)}let n=e instanceof m?e:new m(`MESSAGE_FAILED`,`Failed to receive assistant reply`,{cause:e});this.reportError(n)}}toAgentMessage(e){let t=e.role===`assistant`?`agent`:e.role===`user`?`user`:`system`,n=e.createdAt,r=typeof n==`number`?n:new Date(n).getTime(),i=X(e.content),a=i?dr(i):e.content??``;return{id:String(e.id),role:t,content:{type:`text`,text:a},blocks:i,createdAt:Number.isFinite(r)?r:Date.now(),status:`sent`}}resolveCompleteServerMessageId(e){if(e.serverMessage?.id!=null)return String(e.serverMessage.id);if(e.messageId&&Y(e.messageId))return e.messageId}async alignPersistedMessageIds(e,t,n={}){let r=n.preferLocalId?.trim(),i=n.preferServerId&&Y(n.preferServerId)?n.preferServerId:void 0;if(r&&i){let n=e.messages.find(e=>e.id===r);if(n&&!Y(n.id)&&!e.messages.some(e=>e.id===i)){e.messages=e.messages.map(e=>e.id===r?{...e,id:i}:e),e.activeStreamTargetMessageId===r&&(e.activeStreamTargetMessageId=i),this.cacheActiveSessionMessages(e),this.notifyStateChange(),this.syncMessageFeedbacks(e,t).catch(()=>{});return}}let a=e.messages.filter(e=>e.role===`agent`&&e.status===`sent`&&!e.stream&&!Y(e.id));if(a.length===0)return;let o=(await this.fetchSessionMessagesPage(e,t,1)).messages.map(e=>this.toAgentMessage(e)).filter(e=>e.role===`agent`),s=new Set(e.messages.filter(e=>e.role===`agent`&&Y(e.id)).map(e=>e.id)),c=o.filter(e=>!s.has(e.id));if(c.length===0)return;let l=Math.max(0,c.length-a.length),u=!1;e.messages=e.messages.map(e=>{let t=a.findIndex(t=>t.id===e.id);if(t<0)return e;let n=c[l+t];return!n||!Y(n.id)?e:(u=!0,{...e,id:n.id,createdAt:n.createdAt})}),u&&(this.cacheActiveSessionMessages(e),this.notifyStateChange(),this.syncMessageFeedbacks(e,t).catch(()=>{}))}maybeRebindStreamMessageId(e,t,n){return!t||!n||!Y(n)||t===n||Y(t)||e.messages.some(e=>e.id===n)?t:e.messages.find(e=>e.id===t)?(e.messages=e.messages.map(e=>e.id===t?{...e,id:n}:e),e.activeStreamTargetMessageId===t&&(e.activeStreamTargetMessageId=n),this.cacheActiveSessionMessages(e),this.notifyStateChange(),n):n}buildOptimisticFeedback(e,t){let n=new Date().toISOString();return t.rating===`up`?{messageId:e,rating:`up`,reasonTags:[],comment:null,createdAt:n,updatedAt:n}:{messageId:e,rating:`down`,reasonTags:t.reasonTags??[],comment:t.comment?.trim()||null,createdAt:n,updatedAt:n}}patchMessageFeedback(e,t,n){let r=e.messages.map(e=>e.id===t?{...e,feedback:n}:e);r.every((t,n)=>t===e.messages[n])||(e.messages=r,this.cacheActiveSessionMessages(e),this.notifyStateChange())}collectFeedbackMessageIds(e){let t=[];for(let n of e){if(n.role!==`agent`||n.status!==`sent`||n.stream)continue;let e=lr(n.id);e!==null&&t.push(e)}return t}async syncMessageFeedbacks(e,t){let n=this.collectFeedbackMessageIds(e.messages);if(n.length===0)return;let r=await e.feedback.batchFeedbacks(t,n),i=new Map(r.items.map(e=>[String(e.messageId),e])),a=!1;e.messages=e.messages.map(e=>{if(e.role!==`agent`||!Y(e.id))return e;let t=i.get(e.id)??null,n=e.feedback??null;return n===null&&t===null||n&&t&&n.rating===t.rating&&n.updatedAt===t.updatedAt?e:(a=!0,{...e,feedback:t})}),a&&(this.cacheActiveSessionMessages(e),this.notifyStateChange())}};function Nr(e){if(e)return{id:String(e.id),email:e.email,name:e.username}}function Pr(){return new Mr}var Fr=Pr();e.AgentChat=Fr,e.default=Fr,e.AgentChatClient=Mr,e.AgentChatError=m,e.DEFAULT_BASE_URL=ee,e.DSN_AUTH_HEADER=te,e.SDK_VERSION=Tr,e.createAgentChat=Pr,e.normalizeDsn=ne,e.useAuthStore=x});
4
+ //# sourceMappingURL=omnix-chat.umd.js.map