@asgard-js/core 0.3.72 → 0.3.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- (function(p,y){typeof exports=="object"&&typeof module<"u"?y(exports):typeof define=="function"&&define.amd?define(["exports"],y):(p=typeof globalThis<"u"?globalThis:p||self,y(p["@asgard-js/core"]={}))})(this,(function(p){"use strict";class y extends Error{status;statusText;body;constructor(t,e,s){super(`HTTP ${t}: ${e}`),this.name="HttpError",this.status=t,this.statusText=e,this.body=s}}function lt(n){return n instanceof y}class W extends Error{runKind;constructor(t){super(`Cannot send a message while a "${t}" run is in flight on this channel.`),this.name="ChannelBusyError",this.runKind=t}}function dt(n){return n instanceof W}class Y extends Error{processId;constructor(t){super("Cannot send this turn while the channel is awaiting a tool-call consent response."),this.name="ChannelAwaitingConsentError",this.processId=t}}function ht(n){return n instanceof Y}var j=(n=>(n.RESET_CHANNEL="RESET_CHANNEL",n.NONE="NONE",n.RESPONSE_TOOL_CALL_CONSENT="RESPONSE_TOOL_CALL_CONSENT",n.NUDGE="NUDGE",n))(j||{}),l=(n=>(n.INIT="asgard.run.init",n.PROCESS="asgard.process",n.PROCESS_START="asgard.process.start",n.PROCESS_COMPLETE="asgard.process.complete",n.MESSAGE="asgard.message",n.MESSAGE_START="asgard.message.start",n.MESSAGE_DELTA="asgard.message.delta",n.MESSAGE_COMPLETE="asgard.message.complete",n.MESSAGE_USER="asgard.message.user",n.MESSAGE_THINKING_START="asgard.message.thinking.start",n.MESSAGE_THINKING_DELTA="asgard.message.thinking.delta",n.MESSAGE_THINKING_COMPLETE="asgard.message.thinking.complete",n.MESSAGE_CANVAS_START="asgard.message.canvas.start",n.MESSAGE_CANVAS_DELTA="asgard.message.canvas.delta",n.MESSAGE_CANVAS_COMPLETE="asgard.message.canvas.complete",n.TOOL_CALL="asgard.tool_call",n.TOOL_CALL_START="asgard.tool_call.start",n.TOOL_CALL_COMPLETE="asgard.tool_call.complete",n.TOOL_CALL_CONSENT="asgard.tool_call.consent",n.SUBAGENT_START="asgard.subagent.start",n.SUBAGENT_COMPLETE="asgard.subagent.complete",n.CHANNEL_TITLE_UPDATE="asgard.channel.title.update",n.PROMPT_SUGGESTION="asgard.prompt_suggestion",n.SANDBOX_LAUNCH="asgard.sandbox.launch",n.SANDBOX_READY="asgard.sandbox.ready",n.DONE="asgard.run.done",n.ERROR="asgard.run.error",n))(l||{}),pe=(n=>(n.ALLOW_ONCE="ALLOW_ONCE",n.ALLOW_ALWAYS="ALLOW_ALWAYS",n.DENY_ONCE="DENY_ONCE",n))(pe||{}),te=(n=>(n.TEXT="TEXT",n.HINT="HINT",n.BUTTON="BUTTON",n.IMAGE="IMAGE",n.VIDEO="VIDEO",n.AUDIO="AUDIO",n.LOCATION="LOCATION",n.CAROUSEL="CAROUSEL",n.CHART="CHART",n.TABLE="TABLE",n.ATTACHMENT="ATTACHMENT",n.QUESTION="QUESTION",n.CANVAS="CANVAS",n))(te||{});async function ft(n,t){const e=n.getReader();let s;for(;!(s=await e.read()).done;)t(s.value)}function pt(n){let t,e,s,r=!1;return function(o){t===void 0?(t=o,e=0,s=-1):t=gt(t,o);const a=t.length;let c=0;for(;e<a;){r&&(t[e]===10&&(c=++e),r=!1);let u=-1;for(;e<a&&u===-1;++e)switch(t[e]){case 58:s===-1&&(s=e-c);break;case 13:r=!0;case 10:u=e;break}if(u===-1)break;n(t.subarray(c,u),s),c=e,s=-1}c===a?t=void 0:c!==0&&(t=t.subarray(c),e-=c)}}function mt(n,t,e){let s=me();const r=new TextDecoder;return function(o,a){if(o.length===0)e?.(s),s=me();else if(a>0){const c=r.decode(o.subarray(0,a)),u=a+(o[a+1]===32?2:1),d=r.decode(o.subarray(u));switch(c){case"data":s.data=s.data?s.data+`
2
- `+d:d;break;case"event":s.event=d;break;case"id":n(s.id=d);break;case"retry":const b=parseInt(d,10);isNaN(b)||t(s.retry=b);break}}}}function gt(n,t){const e=new Uint8Array(n.length+t.length);return e.set(n),e.set(t,n.length),e}function me(){return{data:"",event:"",id:"",retry:void 0}}var bt=function(n,t){var e={};for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&t.indexOf(s)<0&&(e[s]=n[s]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,s=Object.getOwnPropertySymbols(n);r<s.length;r++)t.indexOf(s[r])<0&&Object.prototype.propertyIsEnumerable.call(n,s[r])&&(e[s[r]]=n[s[r]]);return e};const ne="text/event-stream",St=1e3,ge="last-event-id";function be(n,t){var{signal:e,headers:s,onopen:r,onmessage:i,onclose:o,onerror:a,openWhenHidden:c,fetch:u}=t,d=bt(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise((b,v)=>{const h=Object.assign({},s);h.accept||(h.accept=ne);let m;function f(){m.abort(),document.hidden||H()}c||document.addEventListener("visibilitychange",f);let I=St,T=0;function X(){document.removeEventListener("visibilitychange",f),window.clearTimeout(T),m.abort()}e?.addEventListener("abort",()=>{X(),b()});const D=u??window.fetch,k=r??vt;async function H(){var F;m=new AbortController;try{const B=await D(n,Object.assign(Object.assign({},d),{headers:h,signal:m.signal}));await k(B),await ft(B.body,pt(mt(U=>{U?h[ge]=U:delete h[ge]},U=>{I=U},i))),o?.(),X(),b()}catch(B){if(!m.signal.aborted)try{const U=(F=a?.(B))!==null&&F!==void 0?F:I;window.clearTimeout(T),T=window.setTimeout(H,U)}catch(U){X(),v(U)}}}H()})}function vt(n){const t=n.headers.get("content-type");if(!t?.startsWith(ne))throw new Error(`Expected content-type to be ${ne}, Actual: ${t}`)}var se=function(n,t){return se=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,s){e.__proto__=s}||function(e,s){for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r])},se(n,t)};function O(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");se(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function yt(n,t,e,s){function r(i){return i instanceof e?i:new e(function(o){o(i)})}return new(e||(e=Promise))(function(i,o){function a(d){try{u(s.next(d))}catch(b){o(b)}}function c(d){try{u(s.throw(d))}catch(b){o(b)}}function u(d){d.done?i(d.value):r(d.value).then(a,c)}u((s=s.apply(n,t||[])).next())})}function Se(n,t){var e={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},s,r,i,o=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(u){return function(d){return c([u,d])}}function c(u){if(s)throw new TypeError("Generator is already executing.");for(;o&&(o=0,u[0]&&(e=0)),e;)try{if(s=1,r&&(i=u[0]&2?r.return:u[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,u[1])).done)return i;switch(r=0,i&&(u=[u[0]&2,i.value]),u[0]){case 0:case 1:i=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,r=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(i=e.trys,!(i=i.length>0&&i[i.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!i||u[1]>i[0]&&u[1]<i[3])){e.label=u[1];break}if(u[0]===6&&e.label<i[1]){e.label=i[1],i=u;break}if(i&&e.label<i[2]){e.label=i[2],e.ops.push(u);break}i[2]&&e.ops.pop(),e.trys.pop();continue}u=t.call(n,e)}catch(d){u=[6,d],r=0}finally{s=i=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}function L(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],s=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&s>=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function G(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var s=e.call(n),r,i=[],o;try{for(;(t===void 0||t-- >0)&&!(r=s.next()).done;)i.push(r.value)}catch(a){o={error:a}}finally{try{r&&!r.done&&(e=s.return)&&e.call(s)}finally{if(o)throw o.error}}return i}function q(n,t,e){if(e||arguments.length===2)for(var s=0,r=t.length,i;s<r;s++)(i||!(s in t))&&(i||(i=Array.prototype.slice.call(t,0,s)),i[s]=t[s]);return n.concat(i||Array.prototype.slice.call(t))}function $(n){return this instanceof $?(this.v=n,this):new $(n)}function wt(n,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s=e.apply(n,t||[]),r,i=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",o),r[Symbol.asyncIterator]=function(){return this},r;function o(h){return function(m){return Promise.resolve(m).then(h,b)}}function a(h,m){s[h]&&(r[h]=function(f){return new Promise(function(I,T){i.push([h,f,I,T])>1||c(h,f)})},m&&(r[h]=m(r[h])))}function c(h,m){try{u(s[h](m))}catch(f){v(i[0][3],f)}}function u(h){h.value instanceof $?Promise.resolve(h.value.v).then(d,b):v(i[0][2],h)}function d(h){c("next",h)}function b(h){c("throw",h)}function v(h,m){h(m),i.shift(),i.length&&c(i[0][0],i[0][1])}}function Et(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=n[Symbol.asyncIterator],e;return t?t.call(n):(n=typeof L=="function"?L(n):n[Symbol.iterator](),e={},s("next"),s("throw"),s("return"),e[Symbol.asyncIterator]=function(){return this},e);function s(i){e[i]=n[i]&&function(o){return new Promise(function(a,c){o=n[i](o),r(a,c,o.done,o.value)})}}function r(i,o,a,c){Promise.resolve(c).then(function(u){i({value:u,done:a})},o)}}typeof SuppressedError=="function"&&SuppressedError;function S(n){return typeof n=="function"}function ve(n){var t=function(s){Error.call(s),s.stack=new Error().stack},e=n(t);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var re=ve(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
1
+ (function(p,y){typeof exports=="object"&&typeof module<"u"?y(exports):typeof define=="function"&&define.amd?define(["exports"],y):(p=typeof globalThis<"u"?globalThis:p||self,y(p["@asgard-js/core"]={}))})(this,(function(p){"use strict";class y extends Error{status;statusText;body;constructor(t,e,s){super(`HTTP ${t}: ${e}`),this.name="HttpError",this.status=t,this.statusText=e,this.body=s}}function lt(n){return n instanceof y}class W extends Error{runKind;constructor(t){super(`Cannot send a message while a "${t}" run is in flight on this channel.`),this.name="ChannelBusyError",this.runKind=t}}function dt(n){return n instanceof W}class Y extends Error{processId;constructor(t){super("Cannot send this turn while the channel is awaiting a tool-call consent response."),this.name="ChannelAwaitingConsentError",this.processId=t}}function ht(n){return n instanceof Y}var j=(n=>(n.RESET_CHANNEL="RESET_CHANNEL",n.NONE="NONE",n.RESPONSE_TOOL_CALL_CONSENT="RESPONSE_TOOL_CALL_CONSENT",n.NUDGE="NUDGE",n))(j||{}),l=(n=>(n.INIT="asgard.run.init",n.PROCESS="asgard.process",n.PROCESS_START="asgard.process.start",n.PROCESS_COMPLETE="asgard.process.complete",n.MESSAGE="asgard.message",n.MESSAGE_START="asgard.message.start",n.MESSAGE_DELTA="asgard.message.delta",n.MESSAGE_COMPLETE="asgard.message.complete",n.MESSAGE_USER="asgard.message.user",n.MESSAGE_THINKING_START="asgard.message.thinking.start",n.MESSAGE_THINKING_DELTA="asgard.message.thinking.delta",n.MESSAGE_THINKING_COMPLETE="asgard.message.thinking.complete",n.MESSAGE_CANVAS_START="asgard.message.canvas.start",n.MESSAGE_CANVAS_DELTA="asgard.message.canvas.delta",n.MESSAGE_CANVAS_COMPLETE="asgard.message.canvas.complete",n.TOOL_CALL="asgard.tool_call",n.TOOL_CALL_START="asgard.tool_call.start",n.TOOL_CALL_COMPLETE="asgard.tool_call.complete",n.TOOL_CALL_CONSENT="asgard.tool_call.consent",n.SUBAGENT_START="asgard.subagent.start",n.SUBAGENT_COMPLETE="asgard.subagent.complete",n.CHANNEL_TITLE_UPDATE="asgard.channel.title.update",n.PROMPT_SUGGESTION="asgard.prompt_suggestion",n.SANDBOX_LAUNCH="asgard.sandbox.launch",n.SANDBOX_READY="asgard.sandbox.ready",n.DONE="asgard.run.done",n.ERROR="asgard.run.error",n))(l||{}),pe=(n=>(n.ALLOW_ONCE="ALLOW_ONCE",n.ALLOW_ALWAYS="ALLOW_ALWAYS",n.DENY_ONCE="DENY_ONCE",n))(pe||{}),te=(n=>(n.TEXT="TEXT",n.HINT="HINT",n.BUTTON="BUTTON",n.IMAGE="IMAGE",n.VIDEO="VIDEO",n.AUDIO="AUDIO",n.LOCATION="LOCATION",n.CAROUSEL="CAROUSEL",n.CHART="CHART",n.TABLE="TABLE",n.ATTACHMENT="ATTACHMENT",n.QUESTION="QUESTION",n.CANVAS="CANVAS",n))(te||{});async function ft(n,t){const e=n.getReader();let s;for(;!(s=await e.read()).done;)t(s.value)}function pt(n){let t,e,s,r=!1;return function(o){t===void 0?(t=o,e=0,s=-1):t=gt(t,o);const a=t.length;let u=0;for(;e<a;){r&&(t[e]===10&&(u=++e),r=!1);let c=-1;for(;e<a&&c===-1;++e)switch(t[e]){case 58:s===-1&&(s=e-u);break;case 13:r=!0;case 10:c=e;break}if(c===-1)break;n(t.subarray(u,c),s),u=e,s=-1}u===a?t=void 0:u!==0&&(t=t.subarray(u),e-=u)}}function mt(n,t,e){let s=me();const r=new TextDecoder;return function(o,a){if(o.length===0)e?.(s),s=me();else if(a>0){const u=r.decode(o.subarray(0,a)),c=a+(o[a+1]===32?2:1),d=r.decode(o.subarray(c));switch(u){case"data":s.data=s.data?s.data+`
2
+ `+d:d;break;case"event":s.event=d;break;case"id":n(s.id=d);break;case"retry":const b=parseInt(d,10);isNaN(b)||t(s.retry=b);break}}}}function gt(n,t){const e=new Uint8Array(n.length+t.length);return e.set(n),e.set(t,n.length),e}function me(){return{data:"",event:"",id:"",retry:void 0}}var bt=function(n,t){var e={};for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&t.indexOf(s)<0&&(e[s]=n[s]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,s=Object.getOwnPropertySymbols(n);r<s.length;r++)t.indexOf(s[r])<0&&Object.prototype.propertyIsEnumerable.call(n,s[r])&&(e[s[r]]=n[s[r]]);return e};const ne="text/event-stream",vt=1e3,ge="last-event-id";function be(n,t){var{signal:e,headers:s,onopen:r,onmessage:i,onclose:o,onerror:a,openWhenHidden:u,fetch:c}=t,d=bt(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise((b,S)=>{const h=Object.assign({},s);h.accept||(h.accept=ne);let m;function f(){m.abort(),document.hidden||H()}u||document.addEventListener("visibilitychange",f);let I=vt,T=0;function X(){document.removeEventListener("visibilitychange",f),window.clearTimeout(T),m.abort()}e?.addEventListener("abort",()=>{X(),b()});const D=c??window.fetch,k=r??St;async function H(){var F;m=new AbortController;try{const B=await D(n,Object.assign(Object.assign({},d),{headers:h,signal:m.signal}));await k(B),await ft(B.body,pt(mt(U=>{U?h[ge]=U:delete h[ge]},U=>{I=U},i))),o?.(),X(),b()}catch(B){if(!m.signal.aborted)try{const U=(F=a?.(B))!==null&&F!==void 0?F:I;window.clearTimeout(T),T=window.setTimeout(H,U)}catch(U){X(),S(U)}}}H()})}function St(n){const t=n.headers.get("content-type");if(!t?.startsWith(ne))throw new Error(`Expected content-type to be ${ne}, Actual: ${t}`)}var se=function(n,t){return se=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,s){e.__proto__=s}||function(e,s){for(var r in s)Object.prototype.hasOwnProperty.call(s,r)&&(e[r]=s[r])},se(n,t)};function O(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");se(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function yt(n,t,e,s){function r(i){return i instanceof e?i:new e(function(o){o(i)})}return new(e||(e=Promise))(function(i,o){function a(d){try{c(s.next(d))}catch(b){o(b)}}function u(d){try{c(s.throw(d))}catch(b){o(b)}}function c(d){d.done?i(d.value):r(d.value).then(a,u)}c((s=s.apply(n,t||[])).next())})}function ve(n,t){var e={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},s,r,i,o=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(c){return function(d){return u([c,d])}}function u(c){if(s)throw new TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(e=0)),e;)try{if(s=1,r&&(i=c[0]&2?r.return:c[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,c[1])).done)return i;switch(r=0,i&&(c=[c[0]&2,i.value]),c[0]){case 0:case 1:i=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++,r=c[1],c=[0];continue;case 7:c=e.ops.pop(),e.trys.pop();continue;default:if(i=e.trys,!(i=i.length>0&&i[i.length-1])&&(c[0]===6||c[0]===2)){e=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]<i[3])){e.label=c[1];break}if(c[0]===6&&e.label<i[1]){e.label=i[1],i=c;break}if(i&&e.label<i[2]){e.label=i[2],e.ops.push(c);break}i[2]&&e.ops.pop(),e.trys.pop();continue}c=t.call(n,e)}catch(d){c=[6,d],r=0}finally{s=i=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function L(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],s=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&s>=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function G(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var s=e.call(n),r,i=[],o;try{for(;(t===void 0||t-- >0)&&!(r=s.next()).done;)i.push(r.value)}catch(a){o={error:a}}finally{try{r&&!r.done&&(e=s.return)&&e.call(s)}finally{if(o)throw o.error}}return i}function q(n,t,e){if(e||arguments.length===2)for(var s=0,r=t.length,i;s<r;s++)(i||!(s in t))&&(i||(i=Array.prototype.slice.call(t,0,s)),i[s]=t[s]);return n.concat(i||Array.prototype.slice.call(t))}function $(n){return this instanceof $?(this.v=n,this):new $(n)}function wt(n,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s=e.apply(n,t||[]),r,i=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",o),r[Symbol.asyncIterator]=function(){return this},r;function o(h){return function(m){return Promise.resolve(m).then(h,b)}}function a(h,m){s[h]&&(r[h]=function(f){return new Promise(function(I,T){i.push([h,f,I,T])>1||u(h,f)})},m&&(r[h]=m(r[h])))}function u(h,m){try{c(s[h](m))}catch(f){S(i[0][3],f)}}function c(h){h.value instanceof $?Promise.resolve(h.value.v).then(d,b):S(i[0][2],h)}function d(h){u("next",h)}function b(h){u("throw",h)}function S(h,m){h(m),i.shift(),i.length&&u(i[0][0],i[0][1])}}function Et(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=n[Symbol.asyncIterator],e;return t?t.call(n):(n=typeof L=="function"?L(n):n[Symbol.iterator](),e={},s("next"),s("throw"),s("return"),e[Symbol.asyncIterator]=function(){return this},e);function s(i){e[i]=n[i]&&function(o){return new Promise(function(a,u){o=n[i](o),r(a,u,o.done,o.value)})}}function r(i,o,a,u){Promise.resolve(u).then(function(c){i({value:c,done:a})},o)}}typeof SuppressedError=="function"&&SuppressedError;function v(n){return typeof n=="function"}function Se(n){var t=function(s){Error.call(s),s.stack=new Error().stack},e=n(t);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var re=Se(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
3
3
  `+e.map(function(s,r){return r+1+") "+s.toString()}).join(`
4
- `):"",this.name="UnsubscriptionError",this.errors=e}});function K(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var M=(function(){function n(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var t,e,s,r,i;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var a=L(o),c=a.next();!c.done;c=a.next()){var u=c.value;u.remove(this)}}catch(f){t={error:f}}finally{try{c&&!c.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else o.remove(this);var d=this.initialTeardown;if(S(d))try{d()}catch(f){i=f instanceof re?f.errors:[f]}var b=this._finalizers;if(b){this._finalizers=null;try{for(var v=L(b),h=v.next();!h.done;h=v.next()){var m=h.value;try{Ee(m)}catch(f){i=i??[],f instanceof re?i=q(q([],G(i)),G(f.errors)):i.push(f)}}}catch(f){s={error:f}}finally{try{h&&!h.done&&(r=v.return)&&r.call(v)}finally{if(s)throw s.error}}}if(i)throw new re(i)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)Ee(t);else{if(t instanceof n){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(t)}},n.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},n.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},n.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&K(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&K(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=(function(){var t=new n;return t.closed=!0,t})(),n})(),ye=M.EMPTY;function we(n){return n instanceof M||n&&"closed"in n&&S(n.remove)&&S(n.add)&&S(n.unsubscribe)}function Ee(n){S(n)?n():n.unsubscribe()}var Tt={Promise:void 0},It={setTimeout:function(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];return setTimeout.apply(void 0,q([n,t],G(e)))},clearTimeout:function(n){return clearTimeout(n)},delegate:void 0};function Te(n){It.setTimeout(function(){throw n})}function ie(){}function z(n){n()}var oe=(function(n){O(t,n);function t(e){var s=n.call(this)||this;return s.isStopped=!1,e?(s.destination=e,we(e)&&e.add(s)):s.destination=Ot,s}return t.create=function(e,s,r){return new ae(e,s,r)},t.prototype.next=function(e){this.isStopped||this._next(e)},t.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,n.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t})(M),Ct=(function(){function n(t){this.partialObserver=t}return n.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(s){J(s)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(s){J(s)}else J(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){J(e)}},n})(),ae=(function(n){O(t,n);function t(e,s,r){var i=n.call(this)||this,o;return S(e)||!e?o={next:e??void 0,error:s??void 0,complete:r??void 0}:o=e,i.destination=new Ct(o),i}return t})(oe);function J(n){Te(n)}function At(n){throw n}var Ot={closed:!0,next:ie,error:At,complete:ie},ce=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function Q(n){return n}function xt(n){return n.length===0?Q:n.length===1?n[0]:function(e){return n.reduce(function(s,r){return r(s)},e)}}var E=(function(){function n(t){t&&(this._subscribe=t)}return n.prototype.lift=function(t){var e=new n;return e.source=this,e.operator=t,e},n.prototype.subscribe=function(t,e,s){var r=this,i=_t(t)?t:new ae(t,e,s);return z(function(){var o=r,a=o.operator,c=o.source;i.add(a?a.call(i,c):c?r._subscribe(i):r._trySubscribe(i))}),i},n.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},n.prototype.forEach=function(t,e){var s=this;return e=Ie(e),new e(function(r,i){var o=new ae({next:function(a){try{t(a)}catch(c){i(c),o.unsubscribe()}},error:i,complete:r});s.subscribe(o)})},n.prototype._subscribe=function(t){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(t)},n.prototype[ce]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return xt(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=Ie(t),new t(function(s,r){var i;e.subscribe(function(o){return i=o},function(o){return r(o)},function(){return s(i)})})},n.create=function(t){return new n(t)},n})();function Ie(n){var t;return(t=n??Tt.Promise)!==null&&t!==void 0?t:Promise}function Pt(n){return n&&S(n.next)&&S(n.error)&&S(n.complete)}function _t(n){return n&&n instanceof oe||Pt(n)&&we(n)}function Ut(n){return S(n?.lift)}function _(n){return function(t){if(Ut(t))return t.lift(function(e){try{return n(e,this)}catch(s){this.error(s)}});throw new TypeError("Unable to lift unknown Observable type")}}function R(n,t,e,s,r){return new Lt(n,t,e,s,r)}var Lt=(function(n){O(t,n);function t(e,s,r,i,o,a){var c=n.call(this,e)||this;return c.onFinalize=o,c.shouldUnsubscribe=a,c._next=s?function(u){try{s(u)}catch(d){e.error(d)}}:n.prototype._next,c._error=i?function(u){try{i(u)}catch(d){e.error(d)}finally{this.unsubscribe()}}:n.prototype._error,c._complete=r?function(){try{r()}catch(u){e.error(u)}finally{this.unsubscribe()}}:n.prototype._complete,c}return t.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var s=this.closed;n.prototype.unsubscribe.call(this),!s&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t})(oe),Mt=ve(function(n){return function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),ue=(function(n){O(t,n);function t(){var e=n.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return t.prototype.lift=function(e){var s=new Ce(this,this);return s.operator=e,s},t.prototype._throwIfClosed=function(){if(this.closed)throw new Mt},t.prototype.next=function(e){var s=this;z(function(){var r,i;if(s._throwIfClosed(),!s.isStopped){s.currentObservers||(s.currentObservers=Array.from(s.observers));try{for(var o=L(s.currentObservers),a=o.next();!a.done;a=o.next()){var c=a.value;c.next(e)}}catch(u){r={error:u}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}}})},t.prototype.error=function(e){var s=this;z(function(){if(s._throwIfClosed(),!s.isStopped){s.hasError=s.isStopped=!0,s.thrownError=e;for(var r=s.observers;r.length;)r.shift().error(e)}})},t.prototype.complete=function(){var e=this;z(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var s=e.observers;s.length;)s.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return((e=this.observers)===null||e===void 0?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(e){return this._throwIfClosed(),n.prototype._trySubscribe.call(this,e)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var s=this,r=this,i=r.hasError,o=r.isStopped,a=r.observers;return i||o?ye:(this.currentObservers=null,a.push(e),new M(function(){s.currentObservers=null,K(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var s=this,r=s.hasError,i=s.thrownError,o=s.isStopped;r?e.error(i):o&&e.complete()},t.prototype.asObservable=function(){var e=new E;return e.source=this,e},t.create=function(e,s){return new Ce(e,s)},t})(E),Ce=(function(n){O(t,n);function t(e,s){var r=n.call(this)||this;return r.destination=e,r.source=s,r}return t.prototype.next=function(e){var s,r;(r=(s=this.destination)===null||s===void 0?void 0:s.next)===null||r===void 0||r.call(s,e)},t.prototype.error=function(e){var s,r;(r=(s=this.destination)===null||s===void 0?void 0:s.error)===null||r===void 0||r.call(s,e)},t.prototype.complete=function(){var e,s;(s=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||s===void 0||s.call(e)},t.prototype._subscribe=function(e){var s,r;return(r=(s=this.source)===null||s===void 0?void 0:s.subscribe(e))!==null&&r!==void 0?r:ye},t})(ue),x=(function(n){O(t,n);function t(e){var s=n.call(this)||this;return s._value=e,s}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(e){var s=n.prototype._subscribe.call(this,e);return!s.closed&&e.next(this._value),s},t.prototype.getValue=function(){var e=this,s=e.hasError,r=e.thrownError,i=e._value;if(s)throw r;return this._throwIfClosed(),i},t.prototype.next=function(e){n.prototype.next.call(this,this._value=e)},t})(ue),Rt={now:function(){return Date.now()}},Nt=(function(n){O(t,n);function t(e,s){return n.call(this)||this}return t.prototype.schedule=function(e,s){return this},t})(M),Ae={setInterval:function(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];return setInterval.apply(void 0,q([n,t],G(e)))},clearInterval:function(n){return clearInterval(n)},delegate:void 0},kt=(function(n){O(t,n);function t(e,s){var r=n.call(this,e,s)||this;return r.scheduler=e,r.work=s,r.pending=!1,r}return t.prototype.schedule=function(e,s){var r;if(s===void 0&&(s=0),this.closed)return this;this.state=e;var i=this.id,o=this.scheduler;return i!=null&&(this.id=this.recycleAsyncId(o,i,s)),this.pending=!0,this.delay=s,this.id=(r=this.id)!==null&&r!==void 0?r:this.requestAsyncId(o,this.id,s),this},t.prototype.requestAsyncId=function(e,s,r){return r===void 0&&(r=0),Ae.setInterval(e.flush.bind(e,this),r)},t.prototype.recycleAsyncId=function(e,s,r){if(r===void 0&&(r=0),r!=null&&this.delay===r&&this.pending===!1)return s;s!=null&&Ae.clearInterval(s)},t.prototype.execute=function(e,s){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var r=this._execute(e,s);if(r)return r;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,s){var r=!1,i;try{this.work(e)}catch(o){r=!0,i=o||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),i},t.prototype.unsubscribe=function(){if(!this.closed){var e=this,s=e.id,r=e.scheduler,i=r.actions;this.work=this.state=this.scheduler=null,this.pending=!1,K(i,this),s!=null&&(this.id=this.recycleAsyncId(r,s,null)),this.delay=null,n.prototype.unsubscribe.call(this)}},t})(Nt),Oe=(function(){function n(t,e){e===void 0&&(e=n.now),this.schedulerActionCtor=t,this.now=e}return n.prototype.schedule=function(t,e,s){return e===void 0&&(e=0),new this.schedulerActionCtor(this,t).schedule(s,e)},n.now=Rt.now,n})(),jt=(function(n){O(t,n);function t(e,s){s===void 0&&(s=Oe.now);var r=n.call(this,e,s)||this;return r.actions=[],r._active=!1,r}return t.prototype.flush=function(e){var s=this.actions;if(this._active){s.push(e);return}var r;this._active=!0;do if(r=e.execute(e.state,e.delay))break;while(e=s.shift());if(this._active=!1,r){for(;e=s.shift();)e.unsubscribe();throw r}},t})(Oe),$t=new jt(kt);function Dt(n){return n&&S(n.schedule)}function xe(n){return n[n.length-1]}function Ht(n){return S(xe(n))?n.pop():void 0}function Pe(n){return Dt(xe(n))?n.pop():void 0}var _e=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function Ue(n){return S(n?.then)}function Le(n){return S(n[ce])}function Me(n){return Symbol.asyncIterator&&S(n?.[Symbol.asyncIterator])}function Re(n){return new TypeError("You provided "+(n!==null&&typeof n=="object"?"an invalid object":"'"+n+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ft(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Ne=Ft();function ke(n){return S(n?.[Ne])}function je(n){return wt(this,arguments,function(){var e,s,r,i;return Se(this,function(o){switch(o.label){case 0:e=n.getReader(),o.label=1;case 1:o.trys.push([1,,9,10]),o.label=2;case 2:return[4,$(e.read())];case 3:return s=o.sent(),r=s.value,i=s.done,i?[4,$(void 0)]:[3,5];case 4:return[2,o.sent()];case 5:return[4,$(r)];case 6:return[4,o.sent()];case 7:return o.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}})})}function $e(n){return S(n?.getReader)}function Z(n){if(n instanceof E)return n;if(n!=null){if(Le(n))return Bt(n);if(_e(n))return Gt(n);if(Ue(n))return qt(n);if(Me(n))return De(n);if(ke(n))return Kt(n);if($e(n))return Vt(n)}throw Re(n)}function Bt(n){return new E(function(t){var e=n[ce]();if(S(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Gt(n){return new E(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function qt(n){return new E(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,Te)})}function Kt(n){return new E(function(t){var e,s;try{for(var r=L(n),i=r.next();!i.done;i=r.next()){var o=i.value;if(t.next(o),t.closed)return}}catch(a){e={error:a}}finally{try{i&&!i.done&&(s=r.return)&&s.call(r)}finally{if(e)throw e.error}}t.complete()})}function De(n){return new E(function(t){Xt(n,t).catch(function(e){return t.error(e)})})}function Vt(n){return De(je(n))}function Xt(n,t){var e,s,r,i;return yt(this,void 0,void 0,function(){var o,a;return Se(this,function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),e=Et(n),c.label=1;case 1:return[4,e.next()];case 2:if(s=c.sent(),!!s.done)return[3,4];if(o=s.value,t.next(o),t.closed)return[2];c.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=c.sent(),r={error:a},[3,11];case 6:return c.trys.push([6,,9,10]),s&&!s.done&&(i=e.return)?[4,i.call(e)]:[3,8];case 7:c.sent(),c.label=8;case 8:return[3,10];case 9:if(r)throw r.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function C(n,t,e,s,r){s===void 0&&(s=0),r===void 0&&(r=!1);var i=t.schedule(function(){e(),r?n.add(this.schedule(null,s)):this.unsubscribe()},s);if(n.add(i),!r)return i}function He(n,t){return t===void 0&&(t=0),_(function(e,s){e.subscribe(R(s,function(r){return C(s,n,function(){return s.next(r)},t)},function(){return C(s,n,function(){return s.complete()},t)},function(r){return C(s,n,function(){return s.error(r)},t)}))})}function Fe(n,t){return t===void 0&&(t=0),_(function(e,s){s.add(n.schedule(function(){return e.subscribe(s)},t))})}function Wt(n,t){return Z(n).pipe(Fe(t),He(t))}function Yt(n,t){return Z(n).pipe(Fe(t),He(t))}function zt(n,t){return new E(function(e){var s=0;return t.schedule(function(){s===n.length?e.complete():(e.next(n[s++]),e.closed||this.schedule())})})}function Jt(n,t){return new E(function(e){var s;return C(e,t,function(){s=n[Ne](),C(e,t,function(){var r,i,o;try{r=s.next(),i=r.value,o=r.done}catch(a){e.error(a);return}o?e.complete():e.next(i)},0,!0)}),function(){return S(s?.return)&&s.return()}})}function Be(n,t){if(!n)throw new Error("Iterable cannot be null");return new E(function(e){C(e,t,function(){var s=n[Symbol.asyncIterator]();C(e,t,function(){s.next().then(function(r){r.done?e.complete():e.next(r.value)})},0,!0)})})}function Qt(n,t){return Be(je(n),t)}function Zt(n,t){if(n!=null){if(Le(n))return Wt(n,t);if(_e(n))return zt(n,t);if(Ue(n))return Yt(n,t);if(Me(n))return Be(n,t);if(ke(n))return Jt(n,t);if($e(n))return Qt(n,t)}throw Re(n)}function Ge(n,t){return t?Zt(n,t):Z(n)}function ee(n,t){return _(function(e,s){var r=0;e.subscribe(R(s,function(i){s.next(n.call(t,i,r++))}))})}var en=Array.isArray;function tn(n,t){return en(t)?n.apply(void 0,q([],G(t))):n(t)}function nn(n){return ee(function(t){return tn(n,t)})}var sn=Array.isArray,rn=Object.getPrototypeOf,on=Object.prototype,an=Object.keys;function cn(n){if(n.length===1){var t=n[0];if(sn(t))return{args:t,keys:null};if(un(t)){var e=an(t);return{args:e.map(function(s){return t[s]}),keys:e}}}return{args:n,keys:null}}function un(n){return n&&typeof n=="object"&&rn(n)===on}function ln(n,t){return n.reduce(function(e,s,r){return e[s]=t[r],e},{})}function dn(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Pe(n),s=Ht(n),r=cn(n),i=r.args,o=r.keys;if(i.length===0)return Ge([],e);var a=new E(hn(i,e,o?function(c){return ln(o,c)}:Q));return s?a.pipe(nn(s)):a}function hn(n,t,e){return e===void 0&&(e=Q),function(s){qe(t,function(){for(var r=n.length,i=new Array(r),o=r,a=r,c=function(d){qe(t,function(){var b=Ge(n[d],t),v=!1;b.subscribe(R(s,function(h){i[d]=h,v||(v=!0,a--),a||s.next(e(i.slice()))},function(){--o||s.complete()}))},s)},u=0;u<r;u++)c(u)},s)}}function qe(n,t,e){n?C(e,n,t):t()}function fn(n,t){return _(function(e,s){var r=0;e.subscribe(R(s,function(i){return n.call(t,i,r++)&&s.next(i)}))})}function pn(n){for(var t,e,s=[],r=1;r<arguments.length;r++)s[r-1]=arguments[r];var i=(t=Pe(s))!==null&&t!==void 0?t:$t,o=(e=s[0])!==null&&e!==void 0?e:null,a=s[1]||1/0;return _(function(c,u){var d=[],b=!1,v=function(f){var I=f.buffer,T=f.subs;T.unsubscribe(),K(d,f),u.next(I),b&&h()},h=function(){if(d){var f=new M;u.add(f);var I=[],T={buffer:I,subs:f};d.push(T),C(f,i,function(){return v(T)},n)}};o!==null&&o>=0?C(u,i,h,o,!0):b=!0,h();var m=R(u,function(f){var I,T,X=d.slice();try{for(var D=L(X),k=D.next();!k.done;k=D.next()){var H=k.value,F=H.buffer;F.push(f),a<=F.length&&v(H)}}catch(B){I={error:B}}finally{try{k&&!k.done&&(T=D.return)&&T.call(D)}finally{if(I)throw I.error}}},function(){for(;d?.length;)u.next(d.shift().buffer);m?.unsubscribe(),u.complete(),u.unsubscribe()},void 0,function(){return d=null});c.subscribe(m)})}function N(n,t){return t===void 0&&(t=Q),n=n??mn,_(function(e,s){var r,i=!0;e.subscribe(R(s,function(o){var a=t(o);(i||!n(r,a))&&(i=!1,r=a,s.next(o))}))})}function mn(n,t){return n===t}function gn(n){return _(function(t,e){try{t.subscribe(e)}finally{e.add(n)}})}function bn(n){return _(function(t,e){Z(n).subscribe(R(e,function(){return e.complete()},ie)),!e.closed&&t.subscribe(e)})}function Ke(n){const{endpoint:t,apiKey:e,payload:s,debugMode:r,customHeaders:i}=n,o=n.method??"POST";return new E(a=>{const c=new AbortController;let u,d=!1,b=!1;const v={"Content-Type":"application/json",...i};e&&(v["X-API-KEY"]=e);const h=new URL(t);return r&&h.searchParams.set("is_debug","true"),be(h.toString(),{method:o,headers:v,body:o==="POST"&&s?JSON.stringify(s):void 0,signal:c.signal,openWhenHidden:!0,onopen:async m=>{if(m.ok)u=m.headers.get("X-Trace-Id")??void 0;else{let f;try{f=await m.json()}catch{try{f=await m.text()}catch{f=null}}a.error(new y(m.status,m.statusText,f)),c.abort()}},onmessage:m=>{m.id&&(d=!0);const f=JSON.parse(m.data);u?f.traceId=u:f.requestId&&(f.traceId=f.requestId,u||(u=f.requestId)),a.next(f)},onclose:()=>{a.complete()},onerror:m=>{if(b)throw m;if(!d)throw a.error(m),c.abort(),m}}),()=>{b=!0,c.abort()}})}class Sn{listeners={};on(t,e){this.listeners=Object.assign({},this.listeners,{[t]:(this.listeners[t]??[]).concat(e)})}off(t,e){this.listeners[t]&&(this.listeners=Object.assign({},this.listeners,{[t]:(this.listeners[t]??[]).filter(s=>s!==e)}))}remove(t){delete this.listeners[t]}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(s=>s(...e))}}const vn=50;class yn{apiKey;endpoint;botProviderEndpoint;debugMode;destroy$=new ue;closed=!1;detached=!1;detachTimer;inFlight=0;sseEmitter=new Sn;transformSsePayload;customHeaders;constructor(t){if(!t.endpoint&&!t.botProviderEndpoint)throw new Error("Either endpoint or botProviderEndpoint must be provided");if(this.apiKey=t.apiKey,this.debugMode=t.debugMode,this.transformSsePayload=t.transformSsePayload,this.botProviderEndpoint=t.botProviderEndpoint,this.customHeaders={...t.customHeaders,...t.userIdentityHint?{"X-ASGARD-USER-IDENTITY-HINT":t.userIdentityHint}:{}},!t.endpoint&&t.botProviderEndpoint){const e=t.botProviderEndpoint.replace(/\/+$/,"");this.endpoint=`${e}/message/sse`}else t.endpoint&&(this.endpoint=t.endpoint,this.debugMode&&console.warn('[AsgardServiceClient] The "endpoint" option is deprecated and will be removed in the next major version. Please use "botProviderEndpoint" instead. The SSE endpoint will be automatically derived as "${botProviderEndpoint}/message/sse".'))}on(t,e){this.sseEmitter.remove(t),this.sseEmitter.on(t,e)}handleEvent(t){switch(t.eventType){case l.INIT:this.sseEmitter.emit(l.INIT,t);break;case l.PROCESS_START:case l.PROCESS_COMPLETE:this.sseEmitter.emit(l.PROCESS,t);break;case l.MESSAGE_START:case l.MESSAGE_DELTA:case l.MESSAGE_COMPLETE:this.sseEmitter.emit(l.MESSAGE,t);break;case l.TOOL_CALL_START:case l.TOOL_CALL_COMPLETE:this.sseEmitter.emit(l.TOOL_CALL,t);break;case l.TOOL_CALL_CONSENT:this.sseEmitter.emit(l.TOOL_CALL_CONSENT,t);break;case l.DONE:this.sseEmitter.emit(l.DONE,t);break;case l.ERROR:this.sseEmitter.emit(l.ERROR,t);break}}fetchSse(t,e){return e?.onSseStart?.(),this.inFlight+=1,this.runSse(Ke({apiKey:this.apiKey,endpoint:this.endpoint,debugMode:this.debugMode,payload:this.transformSsePayload?.(t)??t,customHeaders:this.customHeaders}),e)}rejoinSse(t,e){e?.onSseStart?.(),this.inFlight+=1;const s=new URL(this.endpoint);return s.searchParams.set("custom_channel_id",t),this.runSse(Ke({apiKey:this.apiKey,endpoint:s.toString(),debugMode:this.debugMode,method:"GET",customHeaders:this.customHeaders}),e)}deriveChannelMetadataEndpoint(){const t=this.getBaseEndpoint();return t?`${t}/channel/metadata`:null}async channelMetadata(t){const e=this.deriveChannelMetadataEndpoint();if(!e)throw new Error("Unable to derive channel metadata endpoint. Please provide botProviderEndpoint in config.");const s=new URL(e);s.searchParams.set("custom_channel_id",t);const r={...this.customHeaders};this.apiKey&&(r["X-API-KEY"]=this.apiKey);const i=await fetch(s.toString(),{method:"GET",headers:r});if(i.status===404)return null;if(!i.ok)throw new y(i.status,i.statusText,await i.text().catch(()=>{}));const o=await i.json(),a=o.data??o;return{title:a.title??null,runState:a.runState??"IDLE",lastActivityAt:a.lastActivityAt,launchedSandboxes:(a.launchedSandboxes??[]).map(c=>({sandboxName:c.sandboxName,sandboxBlueprintName:c.sandboxBlueprintName,workingDirectory:c.workingDirectory,editorServerEnabled:c.editorServerEnabled,browserEnabled:c.browserEnabled}))}}deriveSuspendEndpoint(){const t=this.getBaseEndpoint();return t?`${t}/message/suspend`:null}async suspendChannel(t,e){const s=this.deriveSuspendEndpoint();if(!s)throw new Error("Unable to derive channel suspend endpoint. Please provide botProviderEndpoint in config.");const r=new URL(s);r.searchParams.set("custom_channel_id",t),e?.requestId&&r.searchParams.set("request_id",e.requestId),e?.force&&r.searchParams.set("force","true");const i=await fetch(r.toString(),{method:"POST",headers:this.apiHeaders()});if(!(i.ok||i.status===404))throw new y(i.status,i.statusText,await i.text().catch(()=>{}))}runSse(t,e){return t.pipe(pn(e?.delayTime??vn),fn(s=>s.length>0),bn(this.destroy$),gn(()=>this.onRunSettled())).subscribe({next:s=>{if(!this.detached)for(const r of s)e?.onSseMessage?.(r),this.handleEvent(r)},error:s=>{this.detached||e?.onSseError?.(s)},complete:()=>{this.detached||e?.onSseCompleted?.()}})}detach(t){if(!(this.detached||this.closed)){if(this.detached=!0,this.inFlight===0){this.close();return}this.detachTimer=setTimeout(()=>this.close(),t.timeoutMs)}}onRunSettled(){this.inFlight=Math.max(0,this.inFlight-1),this.detached&&this.inFlight===0&&this.close()}close(){this.closed||(this.closed=!0,this.detachTimer&&(clearTimeout(this.detachTimer),this.detachTimer=void 0),this.destroy$.next(),this.destroy$.complete())}async uploadFile(t,e){const s=this.deriveBlobEndpoint();if(!s)throw new Error("Unable to derive blob endpoint. Please provide botProviderEndpoint in config.");const r=new FormData;r.append("file",t),r.append("customChannelId",e);const i={...this.customHeaders};this.apiKey&&(i["X-API-KEY"]=this.apiKey);try{const o=await fetch(s,{method:"POST",headers:i,body:r});if(!o.ok)throw new Error(`Upload failed: ${o.status} ${o.statusText}`);const a=await o.json();return this.debugMode&&console.log("[AsgardServiceClient] File upload response:",a),a}catch(o){throw console.error("[AsgardServiceClient] File upload error:",o),o}}async downloadChannelHomeFile(t,e){const s=this.getBaseEndpoint();if(!s)throw new Error("Unable to derive channel-home download endpoint. Please provide botProviderEndpoint in config.");const r=`custom_channel_id=${encodeURIComponent(e)}&relative_path=${encodeURIComponent(t)}`,i=`${s}/channel-home/download?${r}`,o={...this.customHeaders};this.apiKey&&(o["X-API-KEY"]=this.apiKey);try{const a=await fetch(i,{method:"GET",headers:o});if(!a.ok)throw new Error(`Channel Home download failed: ${a.status} ${a.statusText}`);const c=await a.blob(),u=t.split("/").pop()||"download";return this.debugMode&&console.log("[AsgardServiceClient] Channel Home download response:",{filename:u,size:c.size}),{blob:c,filename:u}}catch(a){throw console.error("[AsgardServiceClient] Channel Home download error:",a),a}}async generateSandboxBrowserOpenUrl(t){const e=this.getBaseEndpoint();if(!e)throw new Error("Unable to derive sandbox browser open-url endpoint. Please provide botProviderEndpoint in config.");const s=`${e}/sandbox/${encodeURIComponent(t)}/browser/open-url`,r={...this.customHeaders};this.apiKey&&(r["X-API-KEY"]=this.apiKey);const i=await fetch(s,{method:"POST",headers:r});if(!i.ok)throw new y(i.status,i.statusText,await i.text().catch(()=>{}));const o=await i.json(),a=o.data?.openURL??o.openURL;if(!a)throw new Error("Sandbox browser open-url response did not contain an openURL.");return a}deriveSandboxFsEndpoint(t){const e=this.getBaseEndpoint();if(!e)throw new Error("Unable to derive sandbox fs endpoint. Please provide botProviderEndpoint in config.");return`${e}/sandbox/${encodeURIComponent(t)}/fs`}apiHeaders(){const t={...this.customHeaders};return this.apiKey&&(t["X-API-KEY"]=this.apiKey),t}async sandboxFsList(t,e){const s=new URL(`${this.deriveSandboxFsEndpoint(t)}/list`);s.searchParams.set("path",e);const r=await fetch(s.toString(),{method:"GET",headers:this.apiHeaders()});if(!r.ok)throw new y(r.status,r.statusText,await r.text().catch(()=>{}));const i=await r.json(),o=i.data??i;return{entries:o.entries??[],truncated:o.truncated??!1}}async sandboxFsRead(t,e,s){const r=new URL(`${this.deriveSandboxFsEndpoint(t)}/file`);r.searchParams.set("path",e),s?.offsetBytes!=null&&r.searchParams.set("offset_bytes",String(s.offsetBytes)),s?.limitBytes!=null&&r.searchParams.set("limit_bytes",String(s.limitBytes));const i=await fetch(r.toString(),{method:"GET",headers:this.apiHeaders()});if(!i.ok)throw new y(i.status,i.statusText,await i.text().catch(()=>{}));const o=await i.blob(),a=i.headers.get("X-Total-Bytes");return{content:o,totalBytes:a!=null?Number(a):o.size,truncated:i.headers.get("X-Truncated")==="true"}}async sandboxFsWrite(t,e,s,r){const i=new URL(`${this.deriveSandboxFsEndpoint(t)}/file`);i.searchParams.set("path",e),r?.mode!=null&&i.searchParams.set("mode",String(r.mode)),r?.createOnly&&i.searchParams.set("create_only","true");const o=new FormData;o.append("file",s instanceof Blob?s:new Blob([s]));const a=await fetch(i.toString(),{method:"PUT",headers:this.apiHeaders(),body:o,signal:r?.signal});if(!a.ok)throw new y(a.status,a.statusText,await a.text().catch(()=>{}));const c=await a.json();return{bytesWritten:(c.data??c).bytesWritten??0}}async sandboxFsRequest(t,e,s,r){const i=new URL(`${this.deriveSandboxFsEndpoint(t)}/${e}`);Object.entries(r).forEach(([a,c])=>i.searchParams.set(a,c));const o=await fetch(i.toString(),{method:s,headers:this.apiHeaders()});if(!o.ok)throw new y(o.status,o.statusText,await o.text().catch(()=>{}));return o.json().catch(()=>null)}async sandboxFsStat(t,e){const s=new URL(`${this.deriveSandboxFsEndpoint(t)}/stat`);s.searchParams.set("path",e);const r=await fetch(s.toString(),{method:"GET",headers:this.apiHeaders()});if(!r.ok)throw new y(r.status,r.statusText,await r.text().catch(()=>{}));const i=await r.json(),o=i.data??i;return{exists:o.exists??!1,isDir:o.isDir??!1,sizeBytes:o.sizeBytes??0,mtimeUnix:o.mtimeUnix??0,mode:o.mode??0,etag:o.etag}}async sandboxFsMkdir(t,e){await this.sandboxFsRequest(t,"mkdir","POST",{path:e})}async sandboxFsRemove(t,e){await this.sandboxFsRequest(t,"item","DELETE",{path:e})}async sandboxFsRemoveAll(t,e){await this.sandboxFsRequest(t,"all","DELETE",{path:e})}async sandboxFsCopy(t,e,s,r){const i={src:e,dst:s};r?.overwrite&&(i.overwrite="true");const o=await this.sandboxFsRequest(t,"copy","POST",i);return{bytesCopied:(o?.data??o)?.bytesCopied??0}}async sandboxFsMove(t,e,s,r){const i={src:e,dst:s};r?.overwrite&&(i.overwrite="true"),await this.sandboxFsRequest(t,"move","POST",i)}sandboxFsWatch(t,e){const s=new URL(`${this.deriveSandboxFsEndpoint(t)}/watch`);return s.searchParams.set("path",e),new E(r=>{const i=new AbortController;return be(s.toString(),{headers:this.apiHeaders(),signal:i.signal,openWhenHidden:!0,onopen:async o=>{if(!o.ok){const a=await o.text().catch(()=>{});r.error(new y(o.status,o.statusText,a)),i.abort()}},onmessage:o=>{o.event==="change"&&r.next(JSON.parse(o.data))},onclose:()=>r.complete(),onerror:o=>{throw r.error(o),i.abort(),o}}),()=>i.abort()})}deriveBlobEndpoint(){const t=this.getBaseEndpoint();return t?`${t}/blob`:null}getBaseEndpoint(){let t=this.botProviderEndpoint;return!t&&this.endpoint&&(t=this.endpoint.replace("/message/sse","")),t?t.replace(/\/+$/,""):null}}const Ve="",wn=new Set(["",".",".."]);function A(n,t){if(n===Ve){if(t?.allowRoot)return n;throw new Error("SourceSet volume path must not be empty: the volume root is not a valid target for this operation.")}if(n.startsWith("/"))throw new Error(`SourceSet volume path must be relative, with no leading slash (the root is ""): "${n}".`);if(n.endsWith("/"))throw new Error(`SourceSet volume path must not end with a slash: "${n}".`);if(n.split("/").some(e=>wn.has(e)))throw new Error(`SourceSet volume path must not contain empty, "." or ".." segments: "${n}".`);return n}const le=1e3,Xe=1e4;function We(n){return Math.min(Math.max(1,Math.floor(n)),le)}class En{endpoint;apiKey;customHeaders;constructor(t){this.endpoint=t.sourceSetEndpoint.replace(/\/+$/,""),this.apiKey=t.apiKey,this.customHeaders=t.customHeaders}headers(){const t={...this.customHeaders};return this.apiKey&&(t["X-API-KEY"]=this.apiKey),t}async request(t,e,s,r){const i=new URL(`${this.endpoint}/${t}`);Object.entries(s).forEach(([a,c])=>i.searchParams.set(a,c));const o=await fetch(i.toString(),{method:e,headers:this.headers(),body:r});if(!o.ok)throw new y(o.status,o.statusText,await o.text().catch(()=>{}));return o}async list(t,e){const s={path:A(t,{allowRoot:!0})};e?.page!=null&&(s.page=String(e.page)),e?.pageSize!=null&&(s.page_size=String(We(e.pageSize)));const i=await(await this.request("list","GET",s)).json(),o=i.data??i;return{entries:o.entries??[],paging:o.paging??i.paging??null}}async listAll(t,e){const s=We(e?.pageSize??le),r=e?.maxEntries??Xe,i=[];let o=0,a=!0,c=0;for(;;){const u=await this.list(t,{page:c,pageSize:s}),d=u.paging;if(d&&d.index!==c){o=d.total,a=!1;break}if(i.push(...u.entries),!d){a=u.entries.length<s;break}if(o=d.total,i.length>=o)break;if(i.length>=r||u.entries.length===0){a=!1;break}c+=1}return{entries:i,total:o,complete:a}}async stat(t){const s=await(await this.request("stat","GET",{path:A(t)})).json(),r=s.data??s;return{exists:r.exists??!1,isDir:r.isDir??!1,sizeBytes:r.sizeBytes??0,mtimeUnix:r.mtimeUnix??0,mode:r.mode??0,etag:r.etag}}async read(t,e){const s={path:A(t)};e?.offsetBytes!=null&&(s.offset_bytes=String(e.offsetBytes)),e?.limitBytes!=null&&(s.limit_bytes=String(e.limitBytes));const r=await this.request("file","GET",s),i=await r.blob(),o=r.headers.get("X-Total-Bytes");return{content:i,totalBytes:o!=null?Number(o):i.size,truncated:r.headers.get("X-Truncated")==="true"}}async write(t,e,s){const r={path:A(t)};s?.mode!=null&&(r.mode=String(s.mode)),s?.createOnly&&(r.create_only="true");const i=new FormData;i.append("file",e instanceof Blob?e:new Blob([e]));const a=await(await this.request("file","PUT",r,i)).json();return{bytesWritten:(a.data??a).bytesWritten??0}}async mkdir(t){await this.request("mkdir","POST",{path:A(t)})}async remove(t){await this.request("item","DELETE",{path:A(t)})}async removeAll(t){await this.request("all","DELETE",{path:A(t)})}async copy(t,e,s){const r=this.copyMoveQuery(t,e,s),o=await(await this.request("copy","POST",r)).json();return{bytesCopied:(o.data??o).bytesCopied??0}}async move(t,e,s){await this.request("move","POST",this.copyMoveQuery(t,e,s))}copyMoveQuery(t,e,s){const r={src:A(t),dst:A(e)};return s?.overwrite&&(r.overwrite="true"),r}}const w=[];for(let n=0;n<256;++n)w.push((n+256).toString(16).slice(1));function Tn(n,t=0){return(w[n[t+0]]+w[n[t+1]]+w[n[t+2]]+w[n[t+3]]+"-"+w[n[t+4]]+w[n[t+5]]+"-"+w[n[t+6]]+w[n[t+7]]+"-"+w[n[t+8]]+w[n[t+9]]+"-"+w[n[t+10]]+w[n[t+11]]+w[n[t+12]]+w[n[t+13]]+w[n[t+14]]+w[n[t+15]]).toLowerCase()}let de;const In=new Uint8Array(16);function Cn(){if(!de){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");de=crypto.getRandomValues.bind(crypto)}return de(In)}const Ye={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function An(n,t,e){n=n||{};const s=n.random??n.rng?.()??Cn();if(s.length<16)throw new Error("Random bytes length must be >= 16");return s[6]=s[6]&15|64,s[8]=s[8]&63|128,Tn(s)}function ze(n,t,e){return Ye.randomUUID&&!n?Ye.randomUUID():An(n)}class g{messages=null;pendingConsent=null;constructor({messages:t,pendingConsent:e=null}){this.messages=t,this.pendingConsent=e??null}pushMessage(t){const e=new Map(this.messages);return e.set(t.messageId,t),new g({messages:e,pendingConsent:this.pendingConsent})}clearPendingConsent(){return this.pendingConsent?new g({messages:this.messages,pendingConsent:null}):this}restorePendingConsent(t){return this.pendingConsent?this:new g({messages:this.messages,pendingConsent:t})}settleInFlightMessages(){if(!this.messages)return this;let t=!1;const e=new Map(this.messages);for(const[s,r]of e)r.type==="tool-call"&&!r.isComplete&&(e.set(s,{...r,isComplete:!0,isCancelled:!0}),t=!0),r.type==="thinking"&&r.isThinking&&(e.set(s,{...r,isThinking:!1}),t=!0);return t?new g({messages:e,pendingConsent:this.pendingConsent}):this}cancelInFlightToolCalls(){return this.settleInFlightMessages()}onMessage(t){switch(t.eventType){case l.MESSAGE_START:return this.onMessageStart(t);case l.MESSAGE_DELTA:return this.onMessageDelta(t);case l.MESSAGE_COMPLETE:return this.onMessageComplete(t);case l.MESSAGE_USER:return this.onMessageUser(t);case l.MESSAGE_THINKING_START:return this.onThinkingStart(t);case l.MESSAGE_THINKING_DELTA:return this.onThinkingDelta(t);case l.MESSAGE_THINKING_COMPLETE:return this.onThinkingComplete(t);case l.MESSAGE_CANVAS_START:return this.onCanvasStart(t);case l.MESSAGE_CANVAS_DELTA:return this.onCanvasDelta(t);case l.MESSAGE_CANVAS_COMPLETE:return this.onCanvasComplete(t);case l.TOOL_CALL_START:return this.onToolCallStart(t);case l.TOOL_CALL_COMPLETE:return this.onToolCallComplete(t);case l.TOOL_CALL_CONSENT:return this.onToolCallConsent(t);case l.SUBAGENT_START:return this.onSubagentStart(t);case l.SUBAGENT_COMPLETE:return this.onSubagentComplete(t);case l.ERROR:return this.onMessageError(t);default:return this}}isTerminalBot(t){return t?.type==="bot"&&!t.isTyping}isTerminalThinking(t){return t?.type==="thinking"&&!t.isThinking}isTerminalToolCall(t){return t?.type==="tool-call"&&t.isComplete===!0}isTerminalCanvas(t){return t?.type==="canvas"&&!t.isDrawing}onMessageStart(t){const e=t.fact.messageStart.message;if(e.parentToolUseId)return this;if(this.isTerminalBot(this.messages?.get(e.messageId)))return this;const s=new Map(this.messages);return s.set(e.messageId,{type:"bot",eventType:l.MESSAGE_START,isTyping:!0,typingText:"",messageId:e.messageId,message:e,time:new Date,traceId:t.traceId,raw:""}),new g({messages:s,pendingConsent:this.pendingConsent})}onMessageDelta(t){const e=t.fact.messageDelta.message;if(e.parentToolUseId)return this;const s=this.messages?.get(e.messageId);if(this.isTerminalBot(s))return this;const r=s?.type==="bot"?s:void 0,i=new Map(this.messages);return i.set(e.messageId,{type:"bot",eventType:l.MESSAGE_DELTA,isTyping:!0,typingText:`${r?.typingText??""}${e.text}`,messageId:e.messageId,message:e,time:new Date,traceId:t.traceId??r?.traceId,raw:r?.raw??""}),new g({messages:i,pendingConsent:this.pendingConsent})}onMessageComplete(t){const e=t.fact.messageComplete.message;if(e.parentToolUseId)return this;const s=new Map(this.messages),r=s.get(e.messageId);return s.set(e.messageId,{type:"bot",eventType:l.MESSAGE_COMPLETE,isTyping:!1,typingText:null,messageId:e.messageId,message:e,time:new Date,traceId:t.traceId??(r?.type==="bot"?r.traceId:void 0),raw:JSON.stringify(t)}),new g({messages:s,pendingConsent:this.pendingConsent})}onThinkingStart(t){const e=t.fact.messageThinkingStart.message;if(e.parentToolUseId)return this;if(this.isTerminalThinking(this.messages?.get(e.messageId)))return this;const s=new Map(this.messages),r={type:"thinking",messageId:e.messageId,text:e.text,isThinking:!0,time:new Date,traceId:t.traceId};return s.set(e.messageId,r),new g({messages:s,pendingConsent:this.pendingConsent})}onThinkingDelta(t){const e=t.fact.messageThinkingDelta.message;if(e.parentToolUseId)return this;const s=this.messages?.get(e.messageId);if(this.isTerminalThinking(s))return this;const r=s?.type==="thinking"?s:void 0,i=new Map(this.messages),o={type:"thinking",messageId:e.messageId,text:`${r?.text??""}${e.text}`,isThinking:!0,time:r?.time??new Date,traceId:t.traceId??r?.traceId};return i.set(e.messageId,o),new g({messages:i,pendingConsent:this.pendingConsent})}onThinkingComplete(t){const e=t.fact.messageThinkingComplete.message;if(e.parentToolUseId)return this;const s=this.messages?.get(e.messageId),r=s?.type==="thinking"?s:void 0,i=new Map(this.messages),o={type:"thinking",messageId:e.messageId,text:e.text,isThinking:!1,time:r?.time??new Date,traceId:t.traceId??r?.traceId};return i.set(e.messageId,o),new g({messages:i,pendingConsent:this.pendingConsent})}onCanvasStart(t){const e=t.fact.messageCanvasStart.message;if(e.parentToolUseId)return this;if(this.isTerminalCanvas(this.messages?.get(e.messageId)))return this;const s=new Map(this.messages),r={type:"canvas",messageId:e.messageId,html:"",isDrawing:!0,time:new Date,traceId:t.traceId};return s.set(e.messageId,r),new g({messages:s,pendingConsent:this.pendingConsent})}onCanvasDelta(t){const e=t.fact.messageCanvasDelta.message;if(e.parentToolUseId)return this;const s=this.messages?.get(e.messageId);if(this.isTerminalCanvas(s))return this;const r=s?.type==="canvas"?s:void 0,i=new Map(this.messages),o={type:"canvas",messageId:e.messageId,html:`${r?.html??""}${e.text}`,title:r?.title,isDrawing:!0,time:r?.time??new Date,traceId:t.traceId??r?.traceId};return i.set(e.messageId,o),new g({messages:i,pendingConsent:this.pendingConsent})}onCanvasComplete(t){const e=t.fact.messageCanvasComplete.message;if(e.parentToolUseId)return this;const s=e.template?.type===te.CANVAS?e.template:void 0,r=s?.canvas?.html;if(!r){if(!this.messages?.has(e.messageId))return this;const u=new Map(this.messages);return u.delete(e.messageId),new g({messages:u,pendingConsent:this.pendingConsent})}const i=this.messages?.get(e.messageId),o=i?.type==="canvas"?i:void 0,a=new Map(this.messages),c={type:"canvas",messageId:e.messageId,html:r,title:s?.title,isDrawing:!1,time:o?.time??new Date,traceId:t.traceId??o?.traceId};return a.set(e.messageId,c),new g({messages:a,pendingConsent:this.pendingConsent})}onMessageUser(t){const e=t.fact.messageUser;if((this.messages?.get(e.messageId)??(e.customMessageId?this.messages?.get(e.customMessageId):void 0))?.type==="user")return this;const r=new Map(this.messages),i={type:"user",messageId:e.messageId,text:e.text,blobIds:e.blobIds,blobs:e.blobs,customMessageId:e.customMessageId,identityHint:e.identityHint,time:new Date,traceId:t.traceId};return r.set(e.messageId,i),new g({messages:r,pendingConsent:this.pendingConsent})}onMessageError(t){const e=ze(),s=t.fact.runError.error,r=new Map(this.messages);return r.set(e,{type:"error",eventType:l.ERROR,messageId:e,error:s,time:new Date,traceId:t.traceId}),new g({messages:r,pendingConsent:this.pendingConsent})}onToolCallStart(t){const e=t.fact.toolCallStart,s=new Map(this.messages),r=`${e.processId}-${e.callSeq}`;if(this.isTerminalToolCall(this.messages?.get(r)))return this;const i={type:"tool-call",eventType:l.TOOL_CALL_START,messageId:r,processId:e.processId,callSeq:e.callSeq,toolName:e.toolCall.toolName,reason:e.toolCall.reason,toolsetName:e.toolCall.toolsetName,parameter:e.toolCall.parameter,toolUseId:e.toolUseId,parentToolUseId:e.parentToolUseId,isComplete:!1,time:new Date,traceId:t.traceId};return s.set(r,i),new g({messages:s,pendingConsent:this.pendingConsent})}onToolCallComplete(t){const e=t.fact.toolCallComplete,s=new Map(this.messages),r=`${e.processId}-${e.callSeq}`,i=s.get(r);if(i?.type==="tool-call"){const o={...i,eventType:l.TOOL_CALL_COMPLETE,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,traceId:t.traceId??i.traceId};s.set(r,o)}else{const o={type:"tool-call",eventType:l.TOOL_CALL_COMPLETE,messageId:r,processId:e.processId,callSeq:e.callSeq,toolName:e.toolCall.toolName,reason:e.toolCall.reason,toolsetName:e.toolCall.toolsetName,parameter:e.toolCall.parameter,toolUseId:e.toolUseId,parentToolUseId:e.parentToolUseId,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,time:new Date,traceId:t.traceId};s.set(r,o)}return new g({messages:s,pendingConsent:this.pendingConsent})}onToolCallConsent(t){const e=t.fact.toolCallConsent;return new g({messages:this.messages,pendingConsent:e})}onSubagentStart(t){const e=t.fact.subagentStart,s=new Map(this.messages),r=`subagent:${e.parentToolUseId}:start`,i={type:"subagent",messageId:r,kind:"start",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,description:e.description,time:new Date,traceId:t.traceId};return s.delete(r),s.set(r,i),new g({messages:s,pendingConsent:this.pendingConsent})}onSubagentComplete(t){const e=t.fact.subagentComplete,s=new Map(this.messages),r=`subagent:${e.parentToolUseId}:complete`,i={type:"subagent",messageId:r,kind:"complete",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,status:e.status,summary:e.summary,time:new Date,traceId:t.traceId};return s.delete(r),s.set(r,i),new g({messages:s,pendingConsent:this.pendingConsent})}}const On=new Set(["TaskCreate","TaskUpdate"]);function Je(n){return n.toolsetName===""&&On.has(n.toolName)}function Qe(n){return typeof n=="object"&&n!==null?n:void 0}function P(n){return typeof n=="string"?n:void 0}function Ze(n){const t=[],e=new Map;for(const s of n){const r=s.parameter??{},i=s.sidecar??{};if(s.toolName==="TaskCreate"){const o=Qe(i.task),a=P(o?.id);if(!a)continue;e.has(a)||t.push(a),e.set(a,{id:a,subject:P(r.subject)||P(o?.subject)||"",activeForm:P(r.activeForm),description:P(r.description),status:e.get(a)?.status??"pending"})}else if(s.toolName==="TaskUpdate"){const o=Qe(i.statusChange),a=P(r.taskId)||P(i.taskId),c=P(o?.to)||P(r.status);if(!a||!c)continue;const u=e.get(a);u&&e.set(a,{...u,status:c})}}return t.map(s=>e.get(s))}function et(n){return n.toolsetName===""&&n.toolName==="Agent"}function tt(n){return!!n}function nt(n){n.status!=="running"&&(n.status="running",n.summary=void 0)}function st(n){const t=[],e=new Map,s=new Map,r=i=>(e.has(i)||(t.push(i),e.set(i,{status:"running"}),s.set(i,new Map)),e.get(i));for(const i of n)switch(i.kind){case"agentStart":{const o=r(i.toolUseId);i.description&&!o.description&&(o.description=i.description);break}case"subagentStart":{const o=r(i.parentToolUseId);o.agentId=i.agentId??o.agentId,o.subagentType=i.subagentType??o.subagentType,o.description=i.description??o.description,nt(o);break}case"toolStart":{nt(r(i.parentToolUseId)),s.get(i.parentToolUseId).set(i.toolUseId,{toolsetName:i.toolsetName,toolName:i.toolName,parameter:i.parameter??{},reason:i.reason,status:"running"});break}case"toolComplete":{const o=s.get(i.parentToolUseId)?.get(i.toolUseId);o&&(o.status=i.isError?"error":"completed");break}case"subagentComplete":{const o=r(i.parentToolUseId);o.status=i.status,o.summary=i.summary;break}}return t.map(i=>({parentToolUseId:i,...e.get(i),tools:Array.from(s.get(i).values())}))}function xn(n){return typeof n=="string"?n:void 0}function rt(n){const t=[];for(const e of n){if(e.type==="tool-call"&&et(e)){t.push({kind:"agentStart",toolUseId:e.toolUseId??e.messageId,description:xn(e.parameter.description)});continue}if(e.type==="tool-call"&&tt(e.parentToolUseId)){const s=e.toolUseId??e.messageId;t.push({kind:"toolStart",parentToolUseId:e.parentToolUseId,toolUseId:s,toolsetName:e.toolsetName,toolName:e.toolName,parameter:e.parameter,reason:e.reason}),e.isComplete&&t.push({kind:"toolComplete",parentToolUseId:e.parentToolUseId,toolUseId:s,isError:e.isError});continue}if(e.type==="subagent"&&e.kind==="start"){t.push({kind:"subagentStart",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,description:e.description});continue}e.type==="subagent"&&e.kind==="complete"&&e.status&&t.push({kind:"subagentComplete",parentToolUseId:e.parentToolUseId,status:e.status,summary:e.summary})}return t}function it(n){const t=Array.from(n.messages?.values()??[]).filter(e=>e.type==="tool-call"&&e.isComplete&&Je(e));return Ze(t)}function ot(n){return st(rt(Array.from(n.messages?.values()??[])))}function at(n,t){return n===t?!0:n.length!==t.length?!1:n.every((e,s)=>{const r=t[s];return e.id===r.id&&e.status===r.status&&e.subject===r.subject&&e.activeForm===r.activeForm&&e.description===r.description})}function Pn(n,t){return n.length!==t.length?!1:n.every((e,s)=>{const r=t[s];return e.toolName===r.toolName&&e.toolsetName===r.toolsetName&&e.status===r.status&&e.reason===r.reason})}function ct(n,t){return n===t?!0:n.length!==t.length?!1:n.every((e,s)=>{const r=t[s];return e.parentToolUseId===r.parentToolUseId&&e.status===r.status&&e.subagentType===r.subagentType&&e.description===r.description&&e.summary===r.summary&&Pn(e.tools,r.tools)})}function ut(n){const t=new x([]),e=new x([]),s=new M;return s.add(n.pipe(ee(it),N(at)).subscribe(t)),s.add(n.pipe(ee(ot),N(ct)).subscribe(e)),{tasks$:t.asObservable(),subagents$:e.asObservable(),getTasks:()=>t.value,getSubagents:()=>e.value,teardown:()=>s.unsubscribe()}}function he(n){const t=new Map;for(const e of n)t.set(e.sandboxName,e);return[...t.values()].sort((e,s)=>(e.sandboxBlueprintName||e.sandboxName).localeCompare(s.sandboxBlueprintName||s.sandboxName))}const fe={kind:null,stopPhase:"idle"},_n=1e4;function Un(n,t){return n.kind===t.kind&&n.stopPhase===t.stopPhase&&n.requestId===t.requestId}class V{client;customChannelId;customMessageId;joinRunState;isConnecting$;runStatusSubject;conversation$;channelTitleSubject;promptSuggestionSubject;sandboxPhaseSubject;launchedSandboxesSubject;pendingLaunches=[];derivedStores;statesObserver;statesSubscription;tasks$;subagents$;channelTitle$;promptSuggestion$;sandboxPhase$;launchedSandboxes$;runStatus$;currentUserMessageId;lastSentMessageId;currentRun;forceStopTimer;constructor(t){if(!t.client)throw new Error("client must be required");if(!t.customChannelId)throw new Error("customChannelId must be required");this.client=t.client,this.customChannelId=t.customChannelId,this.customMessageId=t.customMessageId,this.joinRunState=t.runState??"IDLE",this.isConnecting$=new x(!1),this.runStatusSubject=new x(fe),this.conversation$=new x(t.conversation),this.channelTitleSubject=new x(t.channelTitle??null),this.promptSuggestionSubject=new x(null),this.sandboxPhaseSubject=new x("idle"),this.launchedSandboxesSubject=new x(he(t.launchedSandboxes??[])),this.derivedStores=ut(this.conversation$),this.tasks$=this.derivedStores.tasks$,this.subagents$=this.derivedStores.subagents$,this.channelTitle$=this.channelTitleSubject.pipe(N()),this.promptSuggestion$=this.promptSuggestionSubject.pipe(N()),this.sandboxPhase$=this.sandboxPhaseSubject.pipe(N()),this.launchedSandboxes$=this.launchedSandboxesSubject.pipe(N()),this.runStatus$=this.runStatusSubject.pipe(N(Un)),this.statesObserver=t.statesObserver}getTasks(){return this.derivedStores.getTasks()}getSubagents(){return this.derivedStores.getSubagents()}getChannelTitle(){return this.channelTitleSubject.value}getPromptSuggestion(){return this.promptSuggestionSubject.value}clearPromptSuggestion(){this.promptSuggestionSubject.next(null)}getSandboxPhase(){return this.sandboxPhaseSubject.value}getLaunchedSandboxes(){return this.launchedSandboxesSubject.value}getRunStatus(){return this.runStatusSubject.value}getPendingLaunches(){return this.pendingLaunches}applyLaunchedSandboxes(t){const e=he(t);this.pendingLaunches=this.pendingLaunches.filter(s=>!e.some(r=>r.sandboxName===s)),this.launchedSandboxesSubject.next(e)}dropSandbox(t){const e=this.launchedSandboxesSubject.value,s=e.filter(r=>r.sandboxName!==t);s.length!==e.length&&this.launchedSandboxesSubject.next(s)}noteSandboxLaunch(t){this.pendingLaunches.includes(t)||(this.pendingLaunches=[...this.pendingLaunches,t]),this.refetchMetadata()}async refetchMetadata(){if(!this.client.channelMetadata)return;const t=await this.client.channelMetadata(this.customChannelId);t&&this.applyLaunchedSandboxes(t.launchedSandboxes)}setChannelTitle(t){this.channelTitleSubject.next(t)}static create(t){const e=new V(t);return e.subscribe(),e}static async reset(t,e,s,r){const i=new V(t);try{return i.subscribe(),r?.(i),await i.resetChannel(e,s),i}catch(o){throw i.close(),o}}static async restore(t,e,s){const r=new V(t);try{return r.subscribe(),s?.(r),await r.rejoinChannel(e),r}catch(i){throw r.close(),i}}subscribe(){this.statesSubscription=dn([this.isConnecting$,this.conversation$,this.derivedStores.tasks$,this.derivedStores.subagents$,this.channelTitle$,this.promptSuggestion$,this.sandboxPhase$,this.launchedSandboxes$,this.runStatus$]).pipe(ee(([t,e,s,r,i,o,a,c,u])=>({isConnecting:t,conversation:e,tasks:s,subagents:r,channelTitle:i,promptSuggestion:o,sandboxPhase:a,launchedSandboxes:c,runStatus:u}))).subscribe(this.statesObserver)}resolvePayload(t){if(typeof t=="function")try{return t()}catch(e){throw new Error(`Failed to resolve payload function: ${e instanceof Error?e.message:String(e)}`)}return t}updateSandboxPhase(t){switch(t){case l.SANDBOX_LAUNCH:this.sandboxPhaseSubject.next("launching");break;case l.SANDBOX_READY:this.sandboxPhaseSubject.next("ready");break;case l.INIT:case l.ERROR:this.sandboxPhaseSubject.next("idle");break}}buildRunHandlers(t,e,s){return{onSseStart:t?.onSseStart,onSseMessage:r=>{if(t?.onSseMessage?.(r),this.captureRequestId(r.requestId),r.eventType===l.CHANNEL_TITLE_UPDATE&&this.channelTitleSubject.next(r.fact.channelTitleUpdate.title),r.eventType===l.PROMPT_SUGGESTION?this.promptSuggestionSubject.next(r.fact.promptSuggestion.suggestion):r.eventType===l.INIT&&this.clearPromptSuggestion(),this.updateSandboxPhase(r.eventType),r.eventType===l.SANDBOX_LAUNCH&&this.noteSandboxLaunch(r.fact.sandboxLaunch.sandboxName),this.currentUserMessageId&&r.traceId){const i=new Map(this.conversation$.value.messages),o=i.get(this.currentUserMessageId);o&&o.type==="user"&&(i.set(this.currentUserMessageId,{...o,traceId:r.traceId}),this.conversation$.next(new g({messages:i,pendingConsent:this.conversation$.value.pendingConsent}))),this.currentUserMessageId=void 0}this.conversation$.next(this.conversation$.value.onMessage(r))},onSseError:r=>{t?.onSseError?.(r),this.settleRun(),s(r)},onSseCompleted:()=>{t?.onSseCompleted?.(),this.settleRun(),e()}}}settleRun(){const t=this.runStatusSubject.value.stopPhase!=="idle";this.clearForceStopTimer(),this.isConnecting$.next(!1),this.runStatusSubject.next(fe),this.currentUserMessageId=void 0,this.currentRun=void 0,t&&this.conversation$.next(this.conversation$.value.settleInFlightMessages())}captureRequestId(t){const e=this.runStatusSubject.value;!t||e.requestId||!e.kind||this.runStatusSubject.next({...e,requestId:t})}clearForceStopTimer(){this.forceStopTimer&&(clearTimeout(this.forceStopTimer),this.forceStopTimer=void 0)}fetchSse(t,e,s){return new Promise((r,i)=>{this.isConnecting$.next(!0),this.runStatusSubject.next({kind:t,stopPhase:"idle"}),this.currentRun=this.client.fetchSse(e,this.buildRunHandlers(s,r,i))})}rejoinChannel(t){return new Promise((e,s)=>{if(!this.client.rejoinSse){e();return}this.isConnecting$.next(!0),this.runStatusSubject.next({kind:this.joinRunState==="RUNNING"?"restore":"replay",stopPhase:"idle"}),this.currentRun=this.client.rejoinSse(this.customChannelId,this.buildRunHandlers(t,e,s))})}resetChannel(t,e){return this.fetchSse("reset",{action:j.RESET_CHANNEL,customChannelId:this.customChannelId,customMessageId:this.customMessageId,text:t?.text||"",payload:this.resolvePayload(t?.payload)},e)}sendMessage(t,e){const s=this.runStatusSubject.value.kind;if(s)return Promise.reject(new W(s));const r=this.conversation$.value.pendingConsent;if(r)return Promise.reject(new Y(r.processId));this.clearPromptSuggestion();const i=t.text.trim(),o=t.customMessageId??ze();return this.currentUserMessageId=o,this.lastSentMessageId=o,this.conversation$.next(this.conversation$.value.pushMessage({type:"user",messageId:o,text:i,blobIds:t.blobIds,filePreviewUrls:t.filePreviewUrls,documentNames:t.documentNames,time:new Date})),this.fetchSse("user",{action:j.NONE,customChannelId:this.customChannelId,customMessageId:o,payload:this.resolvePayload(t?.payload),text:i,blobIds:t?.blobIds},e)}replyToolCallConsents(t,e,s){const r=this.conversation$.value.pendingConsent;return this.conversation$.next(this.conversation$.value.clearPendingConsent()),this.fetchSse("user",{action:j.RESPONSE_TOOL_CALL_CONSENT,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(s),text:"",toolCallConsents:t},e).catch(i=>{throw r&&this.conversation$.next(this.conversation$.value.restorePendingConsent(r)),i})}nudge(t,e){const s=this.runStatusSubject.value.kind;if(s)return Promise.reject(new W(s));const r=this.conversation$.value.pendingConsent;return r?Promise.reject(new Y(r.processId)):this.fetchSse("nudge",{action:j.NUDGE,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(e),text:""},t)}async stopGeneration(t){const e=this.runStatusSubject.value;if(!(!this.currentRun||e.kind!=="user")&&!(e.stopPhase!=="idle"&&!t?.force)){if(!this.client.suspendChannel){this.abortConnection();return}this.clearForceStopTimer(),this.runStatusSubject.next({...e,stopPhase:"stopping"});try{await this.client.suspendChannel(this.customChannelId,{requestId:e.requestId,force:t?.force})}catch(s){throw this.clearForceStopTimer(),this.runStatusSubject.next({...this.runStatusSubject.value,stopPhase:"idle"}),s}this.armForceStopTimer()}}armForceStopTimer(){this.clearForceStopTimer(),this.forceStopTimer=setTimeout(()=>{this.forceStopTimer=void 0;const t=this.runStatusSubject.value;t.stopPhase==="stopping"&&this.runStatusSubject.next({...t,stopPhase:"force-stoppable"})},_n)}abortConnection(){this.currentRun&&(this.currentRun.unsubscribe(),this.clearForceStopTimer(),this.currentRun=void 0,this.isConnecting$.next(!1),this.runStatusSubject.next(fe),this.currentUserMessageId=void 0,this.conversation$.next(this.conversation$.value.settleInFlightMessages()))}close(){this.currentRun?.unsubscribe(),this.currentRun=void 0,this.clearForceStopTimer(),this.isConnecting$.complete(),this.runStatusSubject.complete(),this.conversation$.complete(),this.channelTitleSubject.complete(),this.sandboxPhaseSubject.complete(),this.launchedSandboxesSubject.complete(),this.derivedStores.teardown(),this.statesSubscription?.unsubscribe()}}function Ln(n){const t=/^sandbox:\/\/([^/]+)\/([^?#]+)(?:\?([^#]*))?/.exec(n.trim());if(!t)return null;const e=decodeURIComponent(t[1]),s=t[2],r=new URLSearchParams(t[3]??"");if(s==="open-browser")return{kind:"open-browser",sandboxName:e};if(s==="open-file"){const i=r.get("absolute_path");return i?{kind:"open-file",sandboxName:e,absolutePath:i}:null}return null}p.AsgardServiceClient=yn,p.AsgardSourceSetClient=En,p.Channel=V,p.ChannelAwaitingConsentError=Y,p.ChannelBusyError=W,p.Conversation=g,p.EventType=l,p.FetchSseAction=j,p.HttpError=y,p.MessageTemplateType=te,p.SOURCE_SET_DEFAULT_MAX_ENTRIES=Xe,p.SOURCE_SET_MAX_PAGE_SIZE=le,p.SOURCE_SET_VOLUME_ROOT=Ve,p.ToolCallConsentResult=pe,p.assertVolumePath=A,p.conversationToSubagentEvents=rt,p.createDerivedStores=ut,p.deriveSubagents=ot,p.deriveTasks=it,p.isAgentTool=et,p.isChannelAwaitingConsentError=ht,p.isChannelBusyError=dt,p.isHttpError=lt,p.isSubagentChildTool=tt,p.isTaskTool=Je,p.reconcileLaunched=he,p.reduceSubagents=st,p.reduceTaskEvents=Ze,p.resolveSandboxUri=Ln,p.subagentsEqual=ct,p.tasksEqual=at,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}));
4
+ `):"",this.name="UnsubscriptionError",this.errors=e}});function K(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var M=(function(){function n(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var t,e,s,r,i;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var a=L(o),u=a.next();!u.done;u=a.next()){var c=u.value;c.remove(this)}}catch(f){t={error:f}}finally{try{u&&!u.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else o.remove(this);var d=this.initialTeardown;if(v(d))try{d()}catch(f){i=f instanceof re?f.errors:[f]}var b=this._finalizers;if(b){this._finalizers=null;try{for(var S=L(b),h=S.next();!h.done;h=S.next()){var m=h.value;try{Ee(m)}catch(f){i=i??[],f instanceof re?i=q(q([],G(i)),G(f.errors)):i.push(f)}}}catch(f){s={error:f}}finally{try{h&&!h.done&&(r=S.return)&&r.call(S)}finally{if(s)throw s.error}}}if(i)throw new re(i)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)Ee(t);else{if(t instanceof n){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(t)}},n.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},n.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},n.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&K(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&K(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=(function(){var t=new n;return t.closed=!0,t})(),n})(),ye=M.EMPTY;function we(n){return n instanceof M||n&&"closed"in n&&v(n.remove)&&v(n.add)&&v(n.unsubscribe)}function Ee(n){v(n)?n():n.unsubscribe()}var Tt={Promise:void 0},It={setTimeout:function(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];return setTimeout.apply(void 0,q([n,t],G(e)))},clearTimeout:function(n){return clearTimeout(n)},delegate:void 0};function Te(n){It.setTimeout(function(){throw n})}function ie(){}function z(n){n()}var oe=(function(n){O(t,n);function t(e){var s=n.call(this)||this;return s.isStopped=!1,e?(s.destination=e,we(e)&&e.add(s)):s.destination=Ot,s}return t.create=function(e,s,r){return new ae(e,s,r)},t.prototype.next=function(e){this.isStopped||this._next(e)},t.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,n.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t})(M),Ct=(function(){function n(t){this.partialObserver=t}return n.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(s){J(s)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(s){J(s)}else J(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){J(e)}},n})(),ae=(function(n){O(t,n);function t(e,s,r){var i=n.call(this)||this,o;return v(e)||!e?o={next:e??void 0,error:s??void 0,complete:r??void 0}:o=e,i.destination=new Ct(o),i}return t})(oe);function J(n){Te(n)}function At(n){throw n}var Ot={closed:!0,next:ie,error:At,complete:ie},ce=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function Q(n){return n}function xt(n){return n.length===0?Q:n.length===1?n[0]:function(e){return n.reduce(function(s,r){return r(s)},e)}}var E=(function(){function n(t){t&&(this._subscribe=t)}return n.prototype.lift=function(t){var e=new n;return e.source=this,e.operator=t,e},n.prototype.subscribe=function(t,e,s){var r=this,i=_t(t)?t:new ae(t,e,s);return z(function(){var o=r,a=o.operator,u=o.source;i.add(a?a.call(i,u):u?r._subscribe(i):r._trySubscribe(i))}),i},n.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},n.prototype.forEach=function(t,e){var s=this;return e=Ie(e),new e(function(r,i){var o=new ae({next:function(a){try{t(a)}catch(u){i(u),o.unsubscribe()}},error:i,complete:r});s.subscribe(o)})},n.prototype._subscribe=function(t){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(t)},n.prototype[ce]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return xt(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=Ie(t),new t(function(s,r){var i;e.subscribe(function(o){return i=o},function(o){return r(o)},function(){return s(i)})})},n.create=function(t){return new n(t)},n})();function Ie(n){var t;return(t=n??Tt.Promise)!==null&&t!==void 0?t:Promise}function Pt(n){return n&&v(n.next)&&v(n.error)&&v(n.complete)}function _t(n){return n&&n instanceof oe||Pt(n)&&we(n)}function Ut(n){return v(n?.lift)}function _(n){return function(t){if(Ut(t))return t.lift(function(e){try{return n(e,this)}catch(s){this.error(s)}});throw new TypeError("Unable to lift unknown Observable type")}}function R(n,t,e,s,r){return new Lt(n,t,e,s,r)}var Lt=(function(n){O(t,n);function t(e,s,r,i,o,a){var u=n.call(this,e)||this;return u.onFinalize=o,u.shouldUnsubscribe=a,u._next=s?function(c){try{s(c)}catch(d){e.error(d)}}:n.prototype._next,u._error=i?function(c){try{i(c)}catch(d){e.error(d)}finally{this.unsubscribe()}}:n.prototype._error,u._complete=r?function(){try{r()}catch(c){e.error(c)}finally{this.unsubscribe()}}:n.prototype._complete,u}return t.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var s=this.closed;n.prototype.unsubscribe.call(this),!s&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t})(oe),Mt=Se(function(n){return function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),ue=(function(n){O(t,n);function t(){var e=n.call(this)||this;return e.closed=!1,e.currentObservers=null,e.observers=[],e.isStopped=!1,e.hasError=!1,e.thrownError=null,e}return t.prototype.lift=function(e){var s=new Ce(this,this);return s.operator=e,s},t.prototype._throwIfClosed=function(){if(this.closed)throw new Mt},t.prototype.next=function(e){var s=this;z(function(){var r,i;if(s._throwIfClosed(),!s.isStopped){s.currentObservers||(s.currentObservers=Array.from(s.observers));try{for(var o=L(s.currentObservers),a=o.next();!a.done;a=o.next()){var u=a.value;u.next(e)}}catch(c){r={error:c}}finally{try{a&&!a.done&&(i=o.return)&&i.call(o)}finally{if(r)throw r.error}}}})},t.prototype.error=function(e){var s=this;z(function(){if(s._throwIfClosed(),!s.isStopped){s.hasError=s.isStopped=!0,s.thrownError=e;for(var r=s.observers;r.length;)r.shift().error(e)}})},t.prototype.complete=function(){var e=this;z(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var s=e.observers;s.length;)s.shift().complete()}})},t.prototype.unsubscribe=function(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null},Object.defineProperty(t.prototype,"observed",{get:function(){var e;return((e=this.observers)===null||e===void 0?void 0:e.length)>0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(e){return this._throwIfClosed(),n.prototype._trySubscribe.call(this,e)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var s=this,r=this,i=r.hasError,o=r.isStopped,a=r.observers;return i||o?ye:(this.currentObservers=null,a.push(e),new M(function(){s.currentObservers=null,K(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var s=this,r=s.hasError,i=s.thrownError,o=s.isStopped;r?e.error(i):o&&e.complete()},t.prototype.asObservable=function(){var e=new E;return e.source=this,e},t.create=function(e,s){return new Ce(e,s)},t})(E),Ce=(function(n){O(t,n);function t(e,s){var r=n.call(this)||this;return r.destination=e,r.source=s,r}return t.prototype.next=function(e){var s,r;(r=(s=this.destination)===null||s===void 0?void 0:s.next)===null||r===void 0||r.call(s,e)},t.prototype.error=function(e){var s,r;(r=(s=this.destination)===null||s===void 0?void 0:s.error)===null||r===void 0||r.call(s,e)},t.prototype.complete=function(){var e,s;(s=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||s===void 0||s.call(e)},t.prototype._subscribe=function(e){var s,r;return(r=(s=this.source)===null||s===void 0?void 0:s.subscribe(e))!==null&&r!==void 0?r:ye},t})(ue),x=(function(n){O(t,n);function t(e){var s=n.call(this)||this;return s._value=e,s}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(e){var s=n.prototype._subscribe.call(this,e);return!s.closed&&e.next(this._value),s},t.prototype.getValue=function(){var e=this,s=e.hasError,r=e.thrownError,i=e._value;if(s)throw r;return this._throwIfClosed(),i},t.prototype.next=function(e){n.prototype.next.call(this,this._value=e)},t})(ue),Rt={now:function(){return Date.now()}},Nt=(function(n){O(t,n);function t(e,s){return n.call(this)||this}return t.prototype.schedule=function(e,s){return this},t})(M),Ae={setInterval:function(n,t){for(var e=[],s=2;s<arguments.length;s++)e[s-2]=arguments[s];return setInterval.apply(void 0,q([n,t],G(e)))},clearInterval:function(n){return clearInterval(n)},delegate:void 0},kt=(function(n){O(t,n);function t(e,s){var r=n.call(this,e,s)||this;return r.scheduler=e,r.work=s,r.pending=!1,r}return t.prototype.schedule=function(e,s){var r;if(s===void 0&&(s=0),this.closed)return this;this.state=e;var i=this.id,o=this.scheduler;return i!=null&&(this.id=this.recycleAsyncId(o,i,s)),this.pending=!0,this.delay=s,this.id=(r=this.id)!==null&&r!==void 0?r:this.requestAsyncId(o,this.id,s),this},t.prototype.requestAsyncId=function(e,s,r){return r===void 0&&(r=0),Ae.setInterval(e.flush.bind(e,this),r)},t.prototype.recycleAsyncId=function(e,s,r){if(r===void 0&&(r=0),r!=null&&this.delay===r&&this.pending===!1)return s;s!=null&&Ae.clearInterval(s)},t.prototype.execute=function(e,s){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var r=this._execute(e,s);if(r)return r;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,s){var r=!1,i;try{this.work(e)}catch(o){r=!0,i=o||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),i},t.prototype.unsubscribe=function(){if(!this.closed){var e=this,s=e.id,r=e.scheduler,i=r.actions;this.work=this.state=this.scheduler=null,this.pending=!1,K(i,this),s!=null&&(this.id=this.recycleAsyncId(r,s,null)),this.delay=null,n.prototype.unsubscribe.call(this)}},t})(Nt),Oe=(function(){function n(t,e){e===void 0&&(e=n.now),this.schedulerActionCtor=t,this.now=e}return n.prototype.schedule=function(t,e,s){return e===void 0&&(e=0),new this.schedulerActionCtor(this,t).schedule(s,e)},n.now=Rt.now,n})(),jt=(function(n){O(t,n);function t(e,s){s===void 0&&(s=Oe.now);var r=n.call(this,e,s)||this;return r.actions=[],r._active=!1,r}return t.prototype.flush=function(e){var s=this.actions;if(this._active){s.push(e);return}var r;this._active=!0;do if(r=e.execute(e.state,e.delay))break;while(e=s.shift());if(this._active=!1,r){for(;e=s.shift();)e.unsubscribe();throw r}},t})(Oe),$t=new jt(kt);function Dt(n){return n&&v(n.schedule)}function xe(n){return n[n.length-1]}function Ht(n){return v(xe(n))?n.pop():void 0}function Pe(n){return Dt(xe(n))?n.pop():void 0}var _e=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function Ue(n){return v(n?.then)}function Le(n){return v(n[ce])}function Me(n){return Symbol.asyncIterator&&v(n?.[Symbol.asyncIterator])}function Re(n){return new TypeError("You provided "+(n!==null&&typeof n=="object"?"an invalid object":"'"+n+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ft(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Ne=Ft();function ke(n){return v(n?.[Ne])}function je(n){return wt(this,arguments,function(){var e,s,r,i;return ve(this,function(o){switch(o.label){case 0:e=n.getReader(),o.label=1;case 1:o.trys.push([1,,9,10]),o.label=2;case 2:return[4,$(e.read())];case 3:return s=o.sent(),r=s.value,i=s.done,i?[4,$(void 0)]:[3,5];case 4:return[2,o.sent()];case 5:return[4,$(r)];case 6:return[4,o.sent()];case 7:return o.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}})})}function $e(n){return v(n?.getReader)}function Z(n){if(n instanceof E)return n;if(n!=null){if(Le(n))return Bt(n);if(_e(n))return Gt(n);if(Ue(n))return qt(n);if(Me(n))return De(n);if(ke(n))return Kt(n);if($e(n))return Vt(n)}throw Re(n)}function Bt(n){return new E(function(t){var e=n[ce]();if(v(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Gt(n){return new E(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function qt(n){return new E(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,Te)})}function Kt(n){return new E(function(t){var e,s;try{for(var r=L(n),i=r.next();!i.done;i=r.next()){var o=i.value;if(t.next(o),t.closed)return}}catch(a){e={error:a}}finally{try{i&&!i.done&&(s=r.return)&&s.call(r)}finally{if(e)throw e.error}}t.complete()})}function De(n){return new E(function(t){Xt(n,t).catch(function(e){return t.error(e)})})}function Vt(n){return De(je(n))}function Xt(n,t){var e,s,r,i;return yt(this,void 0,void 0,function(){var o,a;return ve(this,function(u){switch(u.label){case 0:u.trys.push([0,5,6,11]),e=Et(n),u.label=1;case 1:return[4,e.next()];case 2:if(s=u.sent(),!!s.done)return[3,4];if(o=s.value,t.next(o),t.closed)return[2];u.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=u.sent(),r={error:a},[3,11];case 6:return u.trys.push([6,,9,10]),s&&!s.done&&(i=e.return)?[4,i.call(e)]:[3,8];case 7:u.sent(),u.label=8;case 8:return[3,10];case 9:if(r)throw r.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function C(n,t,e,s,r){s===void 0&&(s=0),r===void 0&&(r=!1);var i=t.schedule(function(){e(),r?n.add(this.schedule(null,s)):this.unsubscribe()},s);if(n.add(i),!r)return i}function He(n,t){return t===void 0&&(t=0),_(function(e,s){e.subscribe(R(s,function(r){return C(s,n,function(){return s.next(r)},t)},function(){return C(s,n,function(){return s.complete()},t)},function(r){return C(s,n,function(){return s.error(r)},t)}))})}function Fe(n,t){return t===void 0&&(t=0),_(function(e,s){s.add(n.schedule(function(){return e.subscribe(s)},t))})}function Wt(n,t){return Z(n).pipe(Fe(t),He(t))}function Yt(n,t){return Z(n).pipe(Fe(t),He(t))}function zt(n,t){return new E(function(e){var s=0;return t.schedule(function(){s===n.length?e.complete():(e.next(n[s++]),e.closed||this.schedule())})})}function Jt(n,t){return new E(function(e){var s;return C(e,t,function(){s=n[Ne](),C(e,t,function(){var r,i,o;try{r=s.next(),i=r.value,o=r.done}catch(a){e.error(a);return}o?e.complete():e.next(i)},0,!0)}),function(){return v(s?.return)&&s.return()}})}function Be(n,t){if(!n)throw new Error("Iterable cannot be null");return new E(function(e){C(e,t,function(){var s=n[Symbol.asyncIterator]();C(e,t,function(){s.next().then(function(r){r.done?e.complete():e.next(r.value)})},0,!0)})})}function Qt(n,t){return Be(je(n),t)}function Zt(n,t){if(n!=null){if(Le(n))return Wt(n,t);if(_e(n))return zt(n,t);if(Ue(n))return Yt(n,t);if(Me(n))return Be(n,t);if(ke(n))return Jt(n,t);if($e(n))return Qt(n,t)}throw Re(n)}function Ge(n,t){return t?Zt(n,t):Z(n)}function ee(n,t){return _(function(e,s){var r=0;e.subscribe(R(s,function(i){s.next(n.call(t,i,r++))}))})}var en=Array.isArray;function tn(n,t){return en(t)?n.apply(void 0,q([],G(t))):n(t)}function nn(n){return ee(function(t){return tn(n,t)})}var sn=Array.isArray,rn=Object.getPrototypeOf,on=Object.prototype,an=Object.keys;function cn(n){if(n.length===1){var t=n[0];if(sn(t))return{args:t,keys:null};if(un(t)){var e=an(t);return{args:e.map(function(s){return t[s]}),keys:e}}}return{args:n,keys:null}}function un(n){return n&&typeof n=="object"&&rn(n)===on}function ln(n,t){return n.reduce(function(e,s,r){return e[s]=t[r],e},{})}function dn(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Pe(n),s=Ht(n),r=cn(n),i=r.args,o=r.keys;if(i.length===0)return Ge([],e);var a=new E(hn(i,e,o?function(u){return ln(o,u)}:Q));return s?a.pipe(nn(s)):a}function hn(n,t,e){return e===void 0&&(e=Q),function(s){qe(t,function(){for(var r=n.length,i=new Array(r),o=r,a=r,u=function(d){qe(t,function(){var b=Ge(n[d],t),S=!1;b.subscribe(R(s,function(h){i[d]=h,S||(S=!0,a--),a||s.next(e(i.slice()))},function(){--o||s.complete()}))},s)},c=0;c<r;c++)u(c)},s)}}function qe(n,t,e){n?C(e,n,t):t()}function fn(n,t){return _(function(e,s){var r=0;e.subscribe(R(s,function(i){return n.call(t,i,r++)&&s.next(i)}))})}function pn(n){for(var t,e,s=[],r=1;r<arguments.length;r++)s[r-1]=arguments[r];var i=(t=Pe(s))!==null&&t!==void 0?t:$t,o=(e=s[0])!==null&&e!==void 0?e:null,a=s[1]||1/0;return _(function(u,c){var d=[],b=!1,S=function(f){var I=f.buffer,T=f.subs;T.unsubscribe(),K(d,f),c.next(I),b&&h()},h=function(){if(d){var f=new M;c.add(f);var I=[],T={buffer:I,subs:f};d.push(T),C(f,i,function(){return S(T)},n)}};o!==null&&o>=0?C(c,i,h,o,!0):b=!0,h();var m=R(c,function(f){var I,T,X=d.slice();try{for(var D=L(X),k=D.next();!k.done;k=D.next()){var H=k.value,F=H.buffer;F.push(f),a<=F.length&&S(H)}}catch(B){I={error:B}}finally{try{k&&!k.done&&(T=D.return)&&T.call(D)}finally{if(I)throw I.error}}},function(){for(;d?.length;)c.next(d.shift().buffer);m?.unsubscribe(),c.complete(),c.unsubscribe()},void 0,function(){return d=null});u.subscribe(m)})}function N(n,t){return t===void 0&&(t=Q),n=n??mn,_(function(e,s){var r,i=!0;e.subscribe(R(s,function(o){var a=t(o);(i||!n(r,a))&&(i=!1,r=a,s.next(o))}))})}function mn(n,t){return n===t}function gn(n){return _(function(t,e){try{t.subscribe(e)}finally{e.add(n)}})}function bn(n){return _(function(t,e){Z(n).subscribe(R(e,function(){return e.complete()},ie)),!e.closed&&t.subscribe(e)})}function Ke(n){const{endpoint:t,apiKey:e,payload:s,debugMode:r,customHeaders:i}=n,o=n.method??"POST";return new E(a=>{const u=new AbortController;let c,d=!1,b=!1;const S={"Content-Type":"application/json",...i};e&&(S["X-API-KEY"]=e);const h=new URL(t);return r&&h.searchParams.set("is_debug","true"),be(h.toString(),{method:o,headers:S,body:o==="POST"&&s?JSON.stringify(s):void 0,signal:u.signal,openWhenHidden:!0,onopen:async m=>{if(m.ok)c=m.headers.get("X-Trace-Id")??void 0;else{let f;try{f=await m.json()}catch{try{f=await m.text()}catch{f=null}}a.error(new y(m.status,m.statusText,f)),u.abort()}},onmessage:m=>{m.id&&(d=!0);const f=JSON.parse(m.data);c?f.traceId=c:f.requestId&&(f.traceId=f.requestId,c||(c=f.requestId)),a.next(f)},onclose:()=>{a.complete()},onerror:m=>{if(b)throw m;if(!d)throw a.error(m),u.abort(),m}}),()=>{b=!0,u.abort()}})}class vn{listeners={};on(t,e){this.listeners=Object.assign({},this.listeners,{[t]:(this.listeners[t]??[]).concat(e)})}off(t,e){this.listeners[t]&&(this.listeners=Object.assign({},this.listeners,{[t]:(this.listeners[t]??[]).filter(s=>s!==e)}))}remove(t){delete this.listeners[t]}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(s=>s(...e))}}const Sn=50;class yn{apiKey;endpoint;botProviderEndpoint;debugMode;destroy$=new ue;closed=!1;detached=!1;detachTimer;inFlight=0;sseEmitter=new vn;transformSsePayload;customHeaders;constructor(t){if(!t.endpoint&&!t.botProviderEndpoint)throw new Error("Either endpoint or botProviderEndpoint must be provided");if(this.apiKey=t.apiKey,this.debugMode=t.debugMode,this.transformSsePayload=t.transformSsePayload,this.botProviderEndpoint=t.botProviderEndpoint,this.customHeaders={...t.customHeaders,...t.userIdentityHint?{"X-ASGARD-USER-IDENTITY-HINT":t.userIdentityHint}:{}},!t.endpoint&&t.botProviderEndpoint){const e=t.botProviderEndpoint.replace(/\/+$/,"");this.endpoint=`${e}/message/sse`}else t.endpoint&&(this.endpoint=t.endpoint,this.debugMode&&console.warn('[AsgardServiceClient] The "endpoint" option is deprecated and will be removed in the next major version. Please use "botProviderEndpoint" instead. The SSE endpoint will be automatically derived as "${botProviderEndpoint}/message/sse".'))}on(t,e){this.sseEmitter.remove(t),this.sseEmitter.on(t,e)}handleEvent(t){switch(t.eventType){case l.INIT:this.sseEmitter.emit(l.INIT,t);break;case l.PROCESS_START:case l.PROCESS_COMPLETE:this.sseEmitter.emit(l.PROCESS,t);break;case l.MESSAGE_START:case l.MESSAGE_DELTA:case l.MESSAGE_COMPLETE:this.sseEmitter.emit(l.MESSAGE,t);break;case l.TOOL_CALL_START:case l.TOOL_CALL_COMPLETE:this.sseEmitter.emit(l.TOOL_CALL,t);break;case l.TOOL_CALL_CONSENT:this.sseEmitter.emit(l.TOOL_CALL_CONSENT,t);break;case l.DONE:this.sseEmitter.emit(l.DONE,t);break;case l.ERROR:this.sseEmitter.emit(l.ERROR,t);break}}fetchSse(t,e){return e?.onSseStart?.(),this.inFlight+=1,this.runSse(Ke({apiKey:this.apiKey,endpoint:this.endpoint,debugMode:this.debugMode,payload:this.transformSsePayload?.(t)??t,customHeaders:this.customHeaders}),e)}rejoinSse(t,e){e?.onSseStart?.(),this.inFlight+=1;const s=new URL(this.endpoint);return s.searchParams.set("custom_channel_id",t),this.runSse(Ke({apiKey:this.apiKey,endpoint:s.toString(),debugMode:this.debugMode,method:"GET",customHeaders:this.customHeaders}),e)}deriveChannelMetadataEndpoint(){const t=this.getBaseEndpoint();return t?`${t}/channel/metadata`:null}async channelMetadata(t){const e=this.deriveChannelMetadataEndpoint();if(!e)throw new Error("Unable to derive channel metadata endpoint. Please provide botProviderEndpoint in config.");const s=new URL(e);s.searchParams.set("custom_channel_id",t);const r={...this.customHeaders};this.apiKey&&(r["X-API-KEY"]=this.apiKey);const i=await fetch(s.toString(),{method:"GET",headers:r});if(i.status===404)return null;if(!i.ok)throw new y(i.status,i.statusText,await i.text().catch(()=>{}));const o=await i.json(),a=o.data??o;return{title:a.title??null,runState:a.runState??"IDLE",lastActivityAt:a.lastActivityAt,launchedSandboxes:(a.launchedSandboxes??[]).map(u=>({sandboxName:u.sandboxName,sandboxBlueprintName:u.sandboxBlueprintName,workingDirectory:u.workingDirectory,editorServerEnabled:u.editorServerEnabled,browserEnabled:u.browserEnabled}))}}deriveSuspendEndpoint(){const t=this.getBaseEndpoint();return t?`${t}/message/suspend`:null}async suspendChannel(t,e){const s=this.deriveSuspendEndpoint();if(!s)throw new Error("Unable to derive channel suspend endpoint. Please provide botProviderEndpoint in config.");const r=new URL(s);r.searchParams.set("custom_channel_id",t),e?.requestId&&r.searchParams.set("request_id",e.requestId),e?.force&&r.searchParams.set("force","true");const i=await fetch(r.toString(),{method:"POST",headers:this.apiHeaders()});if(!(i.ok||i.status===404))throw new y(i.status,i.statusText,await i.text().catch(()=>{}))}runSse(t,e){return t.pipe(pn(e?.delayTime??Sn),fn(s=>s.length>0),bn(this.destroy$),gn(()=>this.onRunSettled())).subscribe({next:s=>{if(!this.detached)for(const r of s)e?.onSseMessage?.(r),this.handleEvent(r)},error:s=>{this.detached||e?.onSseError?.(s)},complete:()=>{this.detached||e?.onSseCompleted?.()}})}detach(t){if(!(this.detached||this.closed)){if(this.detached=!0,this.inFlight===0){this.close();return}this.detachTimer=setTimeout(()=>this.close(),t.timeoutMs)}}onRunSettled(){this.inFlight=Math.max(0,this.inFlight-1),this.detached&&this.inFlight===0&&this.close()}close(){this.closed||(this.closed=!0,this.detachTimer&&(clearTimeout(this.detachTimer),this.detachTimer=void 0),this.destroy$.next(),this.destroy$.complete())}async uploadFile(t,e){const s=this.deriveBlobEndpoint();if(!s)throw new Error("Unable to derive blob endpoint. Please provide botProviderEndpoint in config.");const r=new FormData;r.append("file",t),r.append("customChannelId",e);const i={...this.customHeaders};this.apiKey&&(i["X-API-KEY"]=this.apiKey);try{const o=await fetch(s,{method:"POST",headers:i,body:r});if(!o.ok)throw new Error(`Upload failed: ${o.status} ${o.statusText}`);const a=await o.json();return this.debugMode&&console.log("[AsgardServiceClient] File upload response:",a),a}catch(o){throw console.error("[AsgardServiceClient] File upload error:",o),o}}async downloadChannelHomeFile(t,e){const s=this.getBaseEndpoint();if(!s)throw new Error("Unable to derive channel-home download endpoint. Please provide botProviderEndpoint in config.");const r=`custom_channel_id=${encodeURIComponent(e)}&relative_path=${encodeURIComponent(t)}`,i=`${s}/channel-home/download?${r}`,o={...this.customHeaders};this.apiKey&&(o["X-API-KEY"]=this.apiKey);try{const a=await fetch(i,{method:"GET",headers:o});if(!a.ok)throw new Error(`Channel Home download failed: ${a.status} ${a.statusText}`);const u=await a.blob(),c=t.split("/").pop()||"download";return this.debugMode&&console.log("[AsgardServiceClient] Channel Home download response:",{filename:c,size:u.size}),{blob:u,filename:c}}catch(a){throw console.error("[AsgardServiceClient] Channel Home download error:",a),a}}async generateSandboxBrowserOpenUrl(t){const e=this.getBaseEndpoint();if(!e)throw new Error("Unable to derive sandbox browser open-url endpoint. Please provide botProviderEndpoint in config.");const s=`${e}/sandbox/${encodeURIComponent(t)}/browser/open-url`,r={...this.customHeaders};this.apiKey&&(r["X-API-KEY"]=this.apiKey);const i=await fetch(s,{method:"POST",headers:r});if(!i.ok)throw new y(i.status,i.statusText,await i.text().catch(()=>{}));const o=await i.json(),a=o.data?.openURL??o.openURL;if(!a)throw new Error("Sandbox browser open-url response did not contain an openURL.");return a}deriveSandboxFsEndpoint(t){const e=this.getBaseEndpoint();if(!e)throw new Error("Unable to derive sandbox fs endpoint. Please provide botProviderEndpoint in config.");return`${e}/sandbox/${encodeURIComponent(t)}/fs`}apiHeaders(){const t={...this.customHeaders};return this.apiKey&&(t["X-API-KEY"]=this.apiKey),t}async sandboxFsList(t,e){const s=new URL(`${this.deriveSandboxFsEndpoint(t)}/list`);s.searchParams.set("path",e);const r=await fetch(s.toString(),{method:"GET",headers:this.apiHeaders()});if(!r.ok)throw new y(r.status,r.statusText,await r.text().catch(()=>{}));const i=await r.json(),o=i.data??i;return{entries:o.entries??[],truncated:o.truncated??!1}}async sandboxFsRead(t,e,s){const r=new URL(`${this.deriveSandboxFsEndpoint(t)}/file`);r.searchParams.set("path",e),s?.offsetBytes!=null&&r.searchParams.set("offset_bytes",String(s.offsetBytes)),s?.limitBytes!=null&&r.searchParams.set("limit_bytes",String(s.limitBytes));const i=await fetch(r.toString(),{method:"GET",headers:this.apiHeaders()});if(!i.ok)throw new y(i.status,i.statusText,await i.text().catch(()=>{}));const o=await i.blob(),a=i.headers.get("X-Total-Bytes");return{content:o,totalBytes:a!=null?Number(a):o.size,truncated:i.headers.get("X-Truncated")==="true"}}async sandboxFsWrite(t,e,s,r){const i=new URL(`${this.deriveSandboxFsEndpoint(t)}/file`);i.searchParams.set("path",e),r?.mode!=null&&i.searchParams.set("mode",String(r.mode)),r?.createOnly&&i.searchParams.set("create_only","true");const o=new FormData;o.append("file",s instanceof Blob?s:new Blob([s]));const a=await fetch(i.toString(),{method:"PUT",headers:this.apiHeaders(),body:o,signal:r?.signal});if(!a.ok)throw new y(a.status,a.statusText,await a.text().catch(()=>{}));const u=await a.json();return{bytesWritten:(u.data??u).bytesWritten??0}}async sandboxFsRequest(t,e,s,r){const i=new URL(`${this.deriveSandboxFsEndpoint(t)}/${e}`);Object.entries(r).forEach(([a,u])=>i.searchParams.set(a,u));const o=await fetch(i.toString(),{method:s,headers:this.apiHeaders()});if(!o.ok)throw new y(o.status,o.statusText,await o.text().catch(()=>{}));return o.json().catch(()=>null)}async sandboxFsStat(t,e){const s=new URL(`${this.deriveSandboxFsEndpoint(t)}/stat`);s.searchParams.set("path",e);const r=await fetch(s.toString(),{method:"GET",headers:this.apiHeaders()});if(!r.ok)throw new y(r.status,r.statusText,await r.text().catch(()=>{}));const i=await r.json(),o=i.data??i;return{exists:o.exists??!1,isDir:o.isDir??!1,sizeBytes:o.sizeBytes??0,mtimeUnix:o.mtimeUnix??0,mode:o.mode??0,etag:o.etag}}async sandboxFsMkdir(t,e){await this.sandboxFsRequest(t,"mkdir","POST",{path:e})}async sandboxFsRemove(t,e){await this.sandboxFsRequest(t,"item","DELETE",{path:e})}async sandboxFsRemoveAll(t,e){await this.sandboxFsRequest(t,"all","DELETE",{path:e})}async sandboxFsCopy(t,e,s,r){const i={src:e,dst:s};r?.overwrite&&(i.overwrite="true");const o=await this.sandboxFsRequest(t,"copy","POST",i);return{bytesCopied:(o?.data??o)?.bytesCopied??0}}async sandboxFsMove(t,e,s,r){const i={src:e,dst:s};r?.overwrite&&(i.overwrite="true"),await this.sandboxFsRequest(t,"move","POST",i)}sandboxFsWatch(t,e){const s=new URL(`${this.deriveSandboxFsEndpoint(t)}/watch`);return s.searchParams.set("path",e),new E(r=>{const i=new AbortController;return be(s.toString(),{headers:this.apiHeaders(),signal:i.signal,openWhenHidden:!0,onopen:async o=>{if(!o.ok){const a=await o.text().catch(()=>{});r.error(new y(o.status,o.statusText,a)),i.abort()}},onmessage:o=>{o.event==="change"&&r.next(JSON.parse(o.data))},onclose:()=>r.complete(),onerror:o=>{throw r.error(o),i.abort(),o}}),()=>i.abort()})}deriveBlobEndpoint(){const t=this.getBaseEndpoint();return t?`${t}/blob`:null}getBaseEndpoint(){let t=this.botProviderEndpoint;return!t&&this.endpoint&&(t=this.endpoint.replace("/message/sse","")),t?t.replace(/\/+$/,""):null}}const Ve="",wn=new Set(["",".",".."]);function A(n,t){if(n===Ve){if(t?.allowRoot)return n;throw new Error("SourceSet volume path must not be empty: the volume root is not a valid target for this operation.")}if(n.startsWith("/"))throw new Error(`SourceSet volume path must be relative, with no leading slash (the root is ""): "${n}".`);if(n.endsWith("/"))throw new Error(`SourceSet volume path must not end with a slash: "${n}".`);if(n.split("/").some(e=>wn.has(e)))throw new Error(`SourceSet volume path must not contain empty, "." or ".." segments: "${n}".`);return n}const le=1e3,Xe=1e4;function We(n){return Math.min(Math.max(1,Math.floor(n)),le)}class En{endpoint;apiKey;customHeaders;constructor(t){this.endpoint=t.sourceSetEndpoint.replace(/\/+$/,""),this.apiKey=t.apiKey,this.customHeaders=t.customHeaders}headers(){const t={...this.customHeaders};return this.apiKey&&(t["X-API-KEY"]=this.apiKey),t}async request(t,e,s,r,i){const o=new URL(`${this.endpoint}/${t}`);Object.entries(s).forEach(([u,c])=>o.searchParams.set(u,c));const a=await fetch(o.toString(),{method:e,headers:this.headers(),body:r,signal:i});if(!a.ok)throw new y(a.status,a.statusText,await a.text().catch(()=>{}));return a}async list(t,e){const s={path:A(t,{allowRoot:!0})};e?.page!=null&&(s.page=String(e.page)),e?.pageSize!=null&&(s.page_size=String(We(e.pageSize)));const i=await(await this.request("list","GET",s)).json(),o=i.data??i;return{entries:o.entries??[],paging:o.paging??i.paging??null}}async listAll(t,e){const s=We(e?.pageSize??le),r=e?.maxEntries??Xe,i=[];let o=0,a=!0,u=0;for(;;){const c=await this.list(t,{page:u,pageSize:s}),d=c.paging;if(d&&d.index!==u){o=d.total,a=!1;break}if(i.push(...c.entries),!d){a=c.entries.length<s;break}if(o=d.total,i.length>=o)break;if(i.length>=r||c.entries.length===0){a=!1;break}u+=1}return{entries:i,total:o,complete:a}}async stat(t){const s=await(await this.request("stat","GET",{path:A(t)})).json(),r=s.data??s;return{exists:r.exists??!1,isDir:r.isDir??!1,sizeBytes:r.sizeBytes??0,mtimeUnix:r.mtimeUnix??0,mode:r.mode??0,etag:r.etag}}async read(t,e){const s={path:A(t)};e?.offsetBytes!=null&&(s.offset_bytes=String(e.offsetBytes)),e?.limitBytes!=null&&(s.limit_bytes=String(e.limitBytes));const r=await this.request("file","GET",s),i=await r.blob(),o=r.headers.get("X-Total-Bytes");return{content:i,totalBytes:o!=null?Number(o):i.size,truncated:r.headers.get("X-Truncated")==="true"}}async write(t,e,s){const r={path:A(t)};s?.mode!=null&&(r.mode=String(s.mode)),s?.createOnly&&(r.create_only="true");const i=new FormData;i.append("file",e instanceof Blob?e:new Blob([e]));const a=await(await this.request("file","PUT",r,i,s?.signal)).json();return{bytesWritten:(a.data??a).bytesWritten??0}}async mkdir(t,e){await this.request("mkdir","POST",{path:A(t)},void 0,e?.signal)}async remove(t){await this.request("item","DELETE",{path:A(t)})}async removeAll(t){await this.request("all","DELETE",{path:A(t)})}async copy(t,e,s){const r=this.copyMoveQuery(t,e,s),o=await(await this.request("copy","POST",r)).json();return{bytesCopied:(o.data??o).bytesCopied??0}}async move(t,e,s){await this.request("move","POST",this.copyMoveQuery(t,e,s))}copyMoveQuery(t,e,s){const r={src:A(t),dst:A(e)};return s?.overwrite&&(r.overwrite="true"),r}}const w=[];for(let n=0;n<256;++n)w.push((n+256).toString(16).slice(1));function Tn(n,t=0){return(w[n[t+0]]+w[n[t+1]]+w[n[t+2]]+w[n[t+3]]+"-"+w[n[t+4]]+w[n[t+5]]+"-"+w[n[t+6]]+w[n[t+7]]+"-"+w[n[t+8]]+w[n[t+9]]+"-"+w[n[t+10]]+w[n[t+11]]+w[n[t+12]]+w[n[t+13]]+w[n[t+14]]+w[n[t+15]]).toLowerCase()}let de;const In=new Uint8Array(16);function Cn(){if(!de){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");de=crypto.getRandomValues.bind(crypto)}return de(In)}const Ye={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function An(n,t,e){n=n||{};const s=n.random??n.rng?.()??Cn();if(s.length<16)throw new Error("Random bytes length must be >= 16");return s[6]=s[6]&15|64,s[8]=s[8]&63|128,Tn(s)}function ze(n,t,e){return Ye.randomUUID&&!n?Ye.randomUUID():An(n)}class g{messages=null;pendingConsent=null;constructor({messages:t,pendingConsent:e=null}){this.messages=t,this.pendingConsent=e??null}pushMessage(t){const e=new Map(this.messages);return e.set(t.messageId,t),new g({messages:e,pendingConsent:this.pendingConsent})}clearPendingConsent(){return this.pendingConsent?new g({messages:this.messages,pendingConsent:null}):this}restorePendingConsent(t){return this.pendingConsent?this:new g({messages:this.messages,pendingConsent:t})}settleInFlightMessages(){if(!this.messages)return this;let t=!1;const e=new Map(this.messages);for(const[s,r]of e)r.type==="tool-call"&&!r.isComplete&&(e.set(s,{...r,isComplete:!0,isCancelled:!0}),t=!0),r.type==="thinking"&&r.isThinking&&(e.set(s,{...r,isThinking:!1}),t=!0);return t?new g({messages:e,pendingConsent:this.pendingConsent}):this}cancelInFlightToolCalls(){return this.settleInFlightMessages()}onMessage(t){switch(t.eventType){case l.MESSAGE_START:return this.onMessageStart(t);case l.MESSAGE_DELTA:return this.onMessageDelta(t);case l.MESSAGE_COMPLETE:return this.onMessageComplete(t);case l.MESSAGE_USER:return this.onMessageUser(t);case l.MESSAGE_THINKING_START:return this.onThinkingStart(t);case l.MESSAGE_THINKING_DELTA:return this.onThinkingDelta(t);case l.MESSAGE_THINKING_COMPLETE:return this.onThinkingComplete(t);case l.MESSAGE_CANVAS_START:return this.onCanvasStart(t);case l.MESSAGE_CANVAS_DELTA:return this.onCanvasDelta(t);case l.MESSAGE_CANVAS_COMPLETE:return this.onCanvasComplete(t);case l.TOOL_CALL_START:return this.onToolCallStart(t);case l.TOOL_CALL_COMPLETE:return this.onToolCallComplete(t);case l.TOOL_CALL_CONSENT:return this.onToolCallConsent(t);case l.SUBAGENT_START:return this.onSubagentStart(t);case l.SUBAGENT_COMPLETE:return this.onSubagentComplete(t);case l.ERROR:return this.onMessageError(t);default:return this}}isTerminalBot(t){return t?.type==="bot"&&!t.isTyping}isTerminalThinking(t){return t?.type==="thinking"&&!t.isThinking}isTerminalToolCall(t){return t?.type==="tool-call"&&t.isComplete===!0}isTerminalCanvas(t){return t?.type==="canvas"&&!t.isDrawing}onMessageStart(t){const e=t.fact.messageStart.message;if(e.parentToolUseId)return this;if(this.isTerminalBot(this.messages?.get(e.messageId)))return this;const s=new Map(this.messages);return s.set(e.messageId,{type:"bot",eventType:l.MESSAGE_START,isTyping:!0,typingText:"",messageId:e.messageId,message:e,time:new Date,traceId:t.traceId,raw:""}),new g({messages:s,pendingConsent:this.pendingConsent})}onMessageDelta(t){const e=t.fact.messageDelta.message;if(e.parentToolUseId)return this;const s=this.messages?.get(e.messageId);if(this.isTerminalBot(s))return this;const r=s?.type==="bot"?s:void 0,i=new Map(this.messages);return i.set(e.messageId,{type:"bot",eventType:l.MESSAGE_DELTA,isTyping:!0,typingText:`${r?.typingText??""}${e.text}`,messageId:e.messageId,message:e,time:new Date,traceId:t.traceId??r?.traceId,raw:r?.raw??""}),new g({messages:i,pendingConsent:this.pendingConsent})}onMessageComplete(t){const e=t.fact.messageComplete.message;if(e.parentToolUseId)return this;const s=new Map(this.messages),r=s.get(e.messageId);return s.set(e.messageId,{type:"bot",eventType:l.MESSAGE_COMPLETE,isTyping:!1,typingText:null,messageId:e.messageId,message:e,time:new Date,traceId:t.traceId??(r?.type==="bot"?r.traceId:void 0),raw:JSON.stringify(t)}),new g({messages:s,pendingConsent:this.pendingConsent})}onThinkingStart(t){const e=t.fact.messageThinkingStart.message;if(e.parentToolUseId)return this;if(this.isTerminalThinking(this.messages?.get(e.messageId)))return this;const s=new Map(this.messages),r={type:"thinking",messageId:e.messageId,text:e.text,isThinking:!0,time:new Date,traceId:t.traceId};return s.set(e.messageId,r),new g({messages:s,pendingConsent:this.pendingConsent})}onThinkingDelta(t){const e=t.fact.messageThinkingDelta.message;if(e.parentToolUseId)return this;const s=this.messages?.get(e.messageId);if(this.isTerminalThinking(s))return this;const r=s?.type==="thinking"?s:void 0,i=new Map(this.messages),o={type:"thinking",messageId:e.messageId,text:`${r?.text??""}${e.text}`,isThinking:!0,time:r?.time??new Date,traceId:t.traceId??r?.traceId};return i.set(e.messageId,o),new g({messages:i,pendingConsent:this.pendingConsent})}onThinkingComplete(t){const e=t.fact.messageThinkingComplete.message;if(e.parentToolUseId)return this;const s=this.messages?.get(e.messageId),r=s?.type==="thinking"?s:void 0,i=new Map(this.messages),o={type:"thinking",messageId:e.messageId,text:e.text,isThinking:!1,time:r?.time??new Date,traceId:t.traceId??r?.traceId};return i.set(e.messageId,o),new g({messages:i,pendingConsent:this.pendingConsent})}onCanvasStart(t){const e=t.fact.messageCanvasStart.message;if(e.parentToolUseId)return this;if(this.isTerminalCanvas(this.messages?.get(e.messageId)))return this;const s=new Map(this.messages),r={type:"canvas",messageId:e.messageId,html:"",isDrawing:!0,time:new Date,traceId:t.traceId};return s.set(e.messageId,r),new g({messages:s,pendingConsent:this.pendingConsent})}onCanvasDelta(t){const e=t.fact.messageCanvasDelta.message;if(e.parentToolUseId)return this;const s=this.messages?.get(e.messageId);if(this.isTerminalCanvas(s))return this;const r=s?.type==="canvas"?s:void 0,i=new Map(this.messages),o={type:"canvas",messageId:e.messageId,html:`${r?.html??""}${e.text}`,title:r?.title,isDrawing:!0,time:r?.time??new Date,traceId:t.traceId??r?.traceId};return i.set(e.messageId,o),new g({messages:i,pendingConsent:this.pendingConsent})}onCanvasComplete(t){const e=t.fact.messageCanvasComplete.message;if(e.parentToolUseId)return this;const s=e.template?.type===te.CANVAS?e.template:void 0,r=s?.canvas?.html;if(!r){if(!this.messages?.has(e.messageId))return this;const c=new Map(this.messages);return c.delete(e.messageId),new g({messages:c,pendingConsent:this.pendingConsent})}const i=this.messages?.get(e.messageId),o=i?.type==="canvas"?i:void 0,a=new Map(this.messages),u={type:"canvas",messageId:e.messageId,html:r,title:s?.title,isDrawing:!1,time:o?.time??new Date,traceId:t.traceId??o?.traceId};return a.set(e.messageId,u),new g({messages:a,pendingConsent:this.pendingConsent})}onMessageUser(t){const e=t.fact.messageUser;if((this.messages?.get(e.messageId)??(e.customMessageId?this.messages?.get(e.customMessageId):void 0))?.type==="user")return this;const r=new Map(this.messages),i={type:"user",messageId:e.messageId,text:e.text,blobIds:e.blobIds,blobs:e.blobs,customMessageId:e.customMessageId,identityHint:e.identityHint,time:new Date,traceId:t.traceId};return r.set(e.messageId,i),new g({messages:r,pendingConsent:this.pendingConsent})}onMessageError(t){const e=ze(),s=t.fact.runError.error,r=new Map(this.messages);return r.set(e,{type:"error",eventType:l.ERROR,messageId:e,error:s,time:new Date,traceId:t.traceId}),new g({messages:r,pendingConsent:this.pendingConsent})}onToolCallStart(t){const e=t.fact.toolCallStart,s=new Map(this.messages),r=`${e.processId}-${e.callSeq}`;if(this.isTerminalToolCall(this.messages?.get(r)))return this;const i={type:"tool-call",eventType:l.TOOL_CALL_START,messageId:r,processId:e.processId,callSeq:e.callSeq,toolName:e.toolCall.toolName,reason:e.toolCall.reason,toolsetName:e.toolCall.toolsetName,parameter:e.toolCall.parameter,toolUseId:e.toolUseId,parentToolUseId:e.parentToolUseId,isComplete:!1,time:new Date,traceId:t.traceId};return s.set(r,i),new g({messages:s,pendingConsent:this.pendingConsent})}onToolCallComplete(t){const e=t.fact.toolCallComplete,s=new Map(this.messages),r=`${e.processId}-${e.callSeq}`,i=s.get(r);if(i?.type==="tool-call"){const o={...i,eventType:l.TOOL_CALL_COMPLETE,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,traceId:t.traceId??i.traceId};s.set(r,o)}else{const o={type:"tool-call",eventType:l.TOOL_CALL_COMPLETE,messageId:r,processId:e.processId,callSeq:e.callSeq,toolName:e.toolCall.toolName,reason:e.toolCall.reason,toolsetName:e.toolCall.toolsetName,parameter:e.toolCall.parameter,toolUseId:e.toolUseId,parentToolUseId:e.parentToolUseId,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,time:new Date,traceId:t.traceId};s.set(r,o)}return new g({messages:s,pendingConsent:this.pendingConsent})}onToolCallConsent(t){const e=t.fact.toolCallConsent;return new g({messages:this.messages,pendingConsent:e})}onSubagentStart(t){const e=t.fact.subagentStart,s=new Map(this.messages),r=`subagent:${e.parentToolUseId}:start`,i={type:"subagent",messageId:r,kind:"start",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,description:e.description,time:new Date,traceId:t.traceId};return s.delete(r),s.set(r,i),new g({messages:s,pendingConsent:this.pendingConsent})}onSubagentComplete(t){const e=t.fact.subagentComplete,s=new Map(this.messages),r=`subagent:${e.parentToolUseId}:complete`,i={type:"subagent",messageId:r,kind:"complete",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,status:e.status,summary:e.summary,time:new Date,traceId:t.traceId};return s.delete(r),s.set(r,i),new g({messages:s,pendingConsent:this.pendingConsent})}}const On=new Set(["TaskCreate","TaskUpdate"]);function Je(n){return n.toolsetName===""&&On.has(n.toolName)}function Qe(n){return typeof n=="object"&&n!==null?n:void 0}function P(n){return typeof n=="string"?n:void 0}function Ze(n){const t=[],e=new Map;for(const s of n){const r=s.parameter??{},i=s.sidecar??{};if(s.toolName==="TaskCreate"){const o=Qe(i.task),a=P(o?.id);if(!a)continue;e.has(a)||t.push(a),e.set(a,{id:a,subject:P(r.subject)||P(o?.subject)||"",activeForm:P(r.activeForm),description:P(r.description),status:e.get(a)?.status??"pending"})}else if(s.toolName==="TaskUpdate"){const o=Qe(i.statusChange),a=P(r.taskId)||P(i.taskId),u=P(o?.to)||P(r.status);if(!a||!u)continue;const c=e.get(a);c&&e.set(a,{...c,status:u})}}return t.map(s=>e.get(s))}function et(n){return n.toolsetName===""&&n.toolName==="Agent"}function tt(n){return!!n}function nt(n){n.status!=="running"&&(n.status="running",n.summary=void 0)}function st(n){const t=[],e=new Map,s=new Map,r=i=>(e.has(i)||(t.push(i),e.set(i,{status:"running"}),s.set(i,new Map)),e.get(i));for(const i of n)switch(i.kind){case"agentStart":{const o=r(i.toolUseId);i.description&&!o.description&&(o.description=i.description);break}case"subagentStart":{const o=r(i.parentToolUseId);o.agentId=i.agentId??o.agentId,o.subagentType=i.subagentType??o.subagentType,o.description=i.description??o.description,nt(o);break}case"toolStart":{nt(r(i.parentToolUseId)),s.get(i.parentToolUseId).set(i.toolUseId,{toolsetName:i.toolsetName,toolName:i.toolName,parameter:i.parameter??{},reason:i.reason,status:"running"});break}case"toolComplete":{const o=s.get(i.parentToolUseId)?.get(i.toolUseId);o&&(o.status=i.isError?"error":"completed");break}case"subagentComplete":{const o=r(i.parentToolUseId);o.status=i.status,o.summary=i.summary;break}}return t.map(i=>({parentToolUseId:i,...e.get(i),tools:Array.from(s.get(i).values())}))}function xn(n){return typeof n=="string"?n:void 0}function rt(n){const t=[];for(const e of n){if(e.type==="tool-call"&&et(e)){t.push({kind:"agentStart",toolUseId:e.toolUseId??e.messageId,description:xn(e.parameter.description)});continue}if(e.type==="tool-call"&&tt(e.parentToolUseId)){const s=e.toolUseId??e.messageId;t.push({kind:"toolStart",parentToolUseId:e.parentToolUseId,toolUseId:s,toolsetName:e.toolsetName,toolName:e.toolName,parameter:e.parameter,reason:e.reason}),e.isComplete&&t.push({kind:"toolComplete",parentToolUseId:e.parentToolUseId,toolUseId:s,isError:e.isError});continue}if(e.type==="subagent"&&e.kind==="start"){t.push({kind:"subagentStart",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,description:e.description});continue}e.type==="subagent"&&e.kind==="complete"&&e.status&&t.push({kind:"subagentComplete",parentToolUseId:e.parentToolUseId,status:e.status,summary:e.summary})}return t}function it(n){const t=Array.from(n.messages?.values()??[]).filter(e=>e.type==="tool-call"&&e.isComplete&&Je(e));return Ze(t)}function ot(n){return st(rt(Array.from(n.messages?.values()??[])))}function at(n,t){return n===t?!0:n.length!==t.length?!1:n.every((e,s)=>{const r=t[s];return e.id===r.id&&e.status===r.status&&e.subject===r.subject&&e.activeForm===r.activeForm&&e.description===r.description})}function Pn(n,t){return n.length!==t.length?!1:n.every((e,s)=>{const r=t[s];return e.toolName===r.toolName&&e.toolsetName===r.toolsetName&&e.status===r.status&&e.reason===r.reason})}function ct(n,t){return n===t?!0:n.length!==t.length?!1:n.every((e,s)=>{const r=t[s];return e.parentToolUseId===r.parentToolUseId&&e.status===r.status&&e.subagentType===r.subagentType&&e.description===r.description&&e.summary===r.summary&&Pn(e.tools,r.tools)})}function ut(n){const t=new x([]),e=new x([]),s=new M;return s.add(n.pipe(ee(it),N(at)).subscribe(t)),s.add(n.pipe(ee(ot),N(ct)).subscribe(e)),{tasks$:t.asObservable(),subagents$:e.asObservable(),getTasks:()=>t.value,getSubagents:()=>e.value,teardown:()=>s.unsubscribe()}}function he(n){const t=new Map;for(const e of n)t.set(e.sandboxName,e);return[...t.values()].sort((e,s)=>(e.sandboxBlueprintName||e.sandboxName).localeCompare(s.sandboxBlueprintName||s.sandboxName))}const fe={kind:null,stopPhase:"idle"},_n=1e4;function Un(n,t){return n.kind===t.kind&&n.stopPhase===t.stopPhase&&n.requestId===t.requestId}class V{client;customChannelId;customMessageId;joinRunState;isConnecting$;runStatusSubject;conversation$;channelTitleSubject;promptSuggestionSubject;sandboxPhaseSubject;launchedSandboxesSubject;pendingLaunches=[];derivedStores;statesObserver;statesSubscription;tasks$;subagents$;channelTitle$;promptSuggestion$;sandboxPhase$;launchedSandboxes$;runStatus$;currentUserMessageId;lastSentMessageId;currentRun;forceStopTimer;constructor(t){if(!t.client)throw new Error("client must be required");if(!t.customChannelId)throw new Error("customChannelId must be required");this.client=t.client,this.customChannelId=t.customChannelId,this.customMessageId=t.customMessageId,this.joinRunState=t.runState??"IDLE",this.isConnecting$=new x(!1),this.runStatusSubject=new x(fe),this.conversation$=new x(t.conversation),this.channelTitleSubject=new x(t.channelTitle??null),this.promptSuggestionSubject=new x(null),this.sandboxPhaseSubject=new x("idle"),this.launchedSandboxesSubject=new x(he(t.launchedSandboxes??[])),this.derivedStores=ut(this.conversation$),this.tasks$=this.derivedStores.tasks$,this.subagents$=this.derivedStores.subagents$,this.channelTitle$=this.channelTitleSubject.pipe(N()),this.promptSuggestion$=this.promptSuggestionSubject.pipe(N()),this.sandboxPhase$=this.sandboxPhaseSubject.pipe(N()),this.launchedSandboxes$=this.launchedSandboxesSubject.pipe(N()),this.runStatus$=this.runStatusSubject.pipe(N(Un)),this.statesObserver=t.statesObserver}getTasks(){return this.derivedStores.getTasks()}getSubagents(){return this.derivedStores.getSubagents()}getChannelTitle(){return this.channelTitleSubject.value}getPromptSuggestion(){return this.promptSuggestionSubject.value}clearPromptSuggestion(){this.promptSuggestionSubject.next(null)}getSandboxPhase(){return this.sandboxPhaseSubject.value}getLaunchedSandboxes(){return this.launchedSandboxesSubject.value}getRunStatus(){return this.runStatusSubject.value}getPendingLaunches(){return this.pendingLaunches}applyLaunchedSandboxes(t){const e=he(t);this.pendingLaunches=this.pendingLaunches.filter(s=>!e.some(r=>r.sandboxName===s)),this.launchedSandboxesSubject.next(e)}dropSandbox(t){const e=this.launchedSandboxesSubject.value,s=e.filter(r=>r.sandboxName!==t);s.length!==e.length&&this.launchedSandboxesSubject.next(s)}noteSandboxLaunch(t){this.pendingLaunches.includes(t)||(this.pendingLaunches=[...this.pendingLaunches,t]),this.refetchMetadata()}async refetchMetadata(){if(!this.client.channelMetadata)return;const t=await this.client.channelMetadata(this.customChannelId);t&&this.applyLaunchedSandboxes(t.launchedSandboxes)}setChannelTitle(t){this.channelTitleSubject.next(t)}static create(t){const e=new V(t);return e.subscribe(),e}static async reset(t,e,s,r){const i=new V(t);try{return i.subscribe(),r?.(i),await i.resetChannel(e,s),i}catch(o){throw i.close(),o}}static async restore(t,e,s){const r=new V(t);try{return r.subscribe(),s?.(r),await r.rejoinChannel(e),r}catch(i){throw r.close(),i}}subscribe(){this.statesSubscription=dn([this.isConnecting$,this.conversation$,this.derivedStores.tasks$,this.derivedStores.subagents$,this.channelTitle$,this.promptSuggestion$,this.sandboxPhase$,this.launchedSandboxes$,this.runStatus$]).pipe(ee(([t,e,s,r,i,o,a,u,c])=>({isConnecting:t,conversation:e,tasks:s,subagents:r,channelTitle:i,promptSuggestion:o,sandboxPhase:a,launchedSandboxes:u,runStatus:c}))).subscribe(this.statesObserver)}resolvePayload(t){if(typeof t=="function")try{return t()}catch(e){throw new Error(`Failed to resolve payload function: ${e instanceof Error?e.message:String(e)}`)}return t}updateSandboxPhase(t){switch(t){case l.SANDBOX_LAUNCH:this.sandboxPhaseSubject.next("launching");break;case l.SANDBOX_READY:this.sandboxPhaseSubject.next("ready");break;case l.INIT:case l.ERROR:this.sandboxPhaseSubject.next("idle");break}}buildRunHandlers(t,e,s){return{onSseStart:t?.onSseStart,onSseMessage:r=>{if(t?.onSseMessage?.(r),this.captureRequestId(r.requestId),r.eventType===l.CHANNEL_TITLE_UPDATE&&this.channelTitleSubject.next(r.fact.channelTitleUpdate.title),r.eventType===l.PROMPT_SUGGESTION?this.promptSuggestionSubject.next(r.fact.promptSuggestion.suggestion):r.eventType===l.INIT&&this.clearPromptSuggestion(),this.updateSandboxPhase(r.eventType),r.eventType===l.SANDBOX_LAUNCH&&this.noteSandboxLaunch(r.fact.sandboxLaunch.sandboxName),this.currentUserMessageId&&r.traceId){const i=new Map(this.conversation$.value.messages),o=i.get(this.currentUserMessageId);o&&o.type==="user"&&(i.set(this.currentUserMessageId,{...o,traceId:r.traceId}),this.conversation$.next(new g({messages:i,pendingConsent:this.conversation$.value.pendingConsent}))),this.currentUserMessageId=void 0}this.conversation$.next(this.conversation$.value.onMessage(r))},onSseError:r=>{t?.onSseError?.(r),this.settleRun(),s(r)},onSseCompleted:()=>{t?.onSseCompleted?.(),this.settleRun(),e()}}}settleRun(){const t=this.runStatusSubject.value.stopPhase!=="idle";this.clearForceStopTimer(),this.isConnecting$.next(!1),this.runStatusSubject.next(fe),this.currentUserMessageId=void 0,this.currentRun=void 0,t&&this.conversation$.next(this.conversation$.value.settleInFlightMessages())}captureRequestId(t){const e=this.runStatusSubject.value;!t||e.requestId||!e.kind||this.runStatusSubject.next({...e,requestId:t})}clearForceStopTimer(){this.forceStopTimer&&(clearTimeout(this.forceStopTimer),this.forceStopTimer=void 0)}fetchSse(t,e,s){return new Promise((r,i)=>{this.isConnecting$.next(!0),this.runStatusSubject.next({kind:t,stopPhase:"idle"}),this.currentRun=this.client.fetchSse(e,this.buildRunHandlers(s,r,i))})}rejoinChannel(t){return new Promise((e,s)=>{if(!this.client.rejoinSse){e();return}this.isConnecting$.next(!0),this.runStatusSubject.next({kind:this.joinRunState==="RUNNING"?"restore":"replay",stopPhase:"idle"}),this.currentRun=this.client.rejoinSse(this.customChannelId,this.buildRunHandlers(t,e,s))})}resetChannel(t,e){return this.fetchSse("reset",{action:j.RESET_CHANNEL,customChannelId:this.customChannelId,customMessageId:this.customMessageId,text:t?.text||"",payload:this.resolvePayload(t?.payload)},e)}sendMessage(t,e){const s=this.runStatusSubject.value.kind;if(s)return Promise.reject(new W(s));const r=this.conversation$.value.pendingConsent;if(r)return Promise.reject(new Y(r.processId));this.clearPromptSuggestion();const i=t.text.trim(),o=t.customMessageId??ze();return this.currentUserMessageId=o,this.lastSentMessageId=o,this.conversation$.next(this.conversation$.value.pushMessage({type:"user",messageId:o,text:i,blobIds:t.blobIds,filePreviewUrls:t.filePreviewUrls,documentNames:t.documentNames,time:new Date})),this.fetchSse("user",{action:j.NONE,customChannelId:this.customChannelId,customMessageId:o,payload:this.resolvePayload(t?.payload),text:i,blobIds:t?.blobIds},e)}replyToolCallConsents(t,e,s){const r=this.conversation$.value.pendingConsent;return this.conversation$.next(this.conversation$.value.clearPendingConsent()),this.fetchSse("user",{action:j.RESPONSE_TOOL_CALL_CONSENT,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(s),text:"",toolCallConsents:t},e).catch(i=>{throw r&&this.conversation$.next(this.conversation$.value.restorePendingConsent(r)),i})}nudge(t,e){const s=this.runStatusSubject.value.kind;if(s)return Promise.reject(new W(s));const r=this.conversation$.value.pendingConsent;return r?Promise.reject(new Y(r.processId)):this.fetchSse("nudge",{action:j.NUDGE,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(e),text:""},t)}async stopGeneration(t){const e=this.runStatusSubject.value;if(!(!this.currentRun||e.kind!=="user")&&!(e.stopPhase!=="idle"&&!t?.force)){if(!this.client.suspendChannel){this.abortConnection();return}this.clearForceStopTimer(),this.runStatusSubject.next({...e,stopPhase:"stopping"});try{await this.client.suspendChannel(this.customChannelId,{requestId:e.requestId,force:t?.force})}catch(s){throw this.clearForceStopTimer(),this.runStatusSubject.next({...this.runStatusSubject.value,stopPhase:"idle"}),s}this.armForceStopTimer()}}armForceStopTimer(){this.clearForceStopTimer(),this.forceStopTimer=setTimeout(()=>{this.forceStopTimer=void 0;const t=this.runStatusSubject.value;t.stopPhase==="stopping"&&this.runStatusSubject.next({...t,stopPhase:"force-stoppable"})},_n)}abortConnection(){this.currentRun&&(this.currentRun.unsubscribe(),this.clearForceStopTimer(),this.currentRun=void 0,this.isConnecting$.next(!1),this.runStatusSubject.next(fe),this.currentUserMessageId=void 0,this.conversation$.next(this.conversation$.value.settleInFlightMessages()))}close(){this.currentRun?.unsubscribe(),this.currentRun=void 0,this.clearForceStopTimer(),this.isConnecting$.complete(),this.runStatusSubject.complete(),this.conversation$.complete(),this.channelTitleSubject.complete(),this.sandboxPhaseSubject.complete(),this.launchedSandboxesSubject.complete(),this.derivedStores.teardown(),this.statesSubscription?.unsubscribe()}}function Ln(n){const t=/^sandbox:\/\/([^/]+)\/([^?#]+)(?:\?([^#]*))?/.exec(n.trim());if(!t)return null;const e=decodeURIComponent(t[1]),s=t[2],r=new URLSearchParams(t[3]??"");if(s==="open-browser")return{kind:"open-browser",sandboxName:e};if(s==="open-file"){const i=r.get("absolute_path");return i?{kind:"open-file",sandboxName:e,absolutePath:i}:null}return null}p.AsgardServiceClient=yn,p.AsgardSourceSetClient=En,p.Channel=V,p.ChannelAwaitingConsentError=Y,p.ChannelBusyError=W,p.Conversation=g,p.EventType=l,p.FetchSseAction=j,p.HttpError=y,p.MessageTemplateType=te,p.SOURCE_SET_DEFAULT_MAX_ENTRIES=Xe,p.SOURCE_SET_MAX_PAGE_SIZE=le,p.SOURCE_SET_VOLUME_ROOT=Ve,p.ToolCallConsentResult=pe,p.assertVolumePath=A,p.conversationToSubagentEvents=rt,p.createDerivedStores=ut,p.deriveSubagents=ot,p.deriveTasks=it,p.isAgentTool=et,p.isChannelAwaitingConsentError=ht,p.isChannelBusyError=dt,p.isHttpError=lt,p.isSubagentChildTool=tt,p.isTaskTool=Je,p.reconcileLaunched=he,p.reduceSubagents=st,p.reduceTaskEvents=Ze,p.resolveSandboxUri=Ln,p.subagentsEqual=ct,p.tasksEqual=at,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}));
5
5
  //# sourceMappingURL=index.js.map