@asgard-js/core 0.3.24 → 0.3.26

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.cjs CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class w extends Error{status;statusText;body;constructor(t,e,r){super(`HTTP ${t}: ${e}`),this.name="HttpError",this.status=t,this.statusText=e,this.body=r}}function nt(n){return n instanceof w}var U=(n=>(n.RESET_CHANNEL="RESET_CHANNEL",n.NONE="NONE",n.RESPONSE_TOOL_CALL_CONSENT="RESPONSE_TOOL_CALL_CONSENT",n.NUDGE="NUDGE",n))(U||{}),d=(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.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.SANDBOX_LAUNCH="asgard.sandbox.launch",n.SANDBOX_READY="asgard.sandbox.ready",n.DONE="asgard.run.done",n.ERROR="asgard.run.error",n))(d||{}),ve=(n=>(n.ALLOW_ONCE="ALLOW_ONCE",n.ALLOW_ALWAYS="ALLOW_ALWAYS",n.DENY_ONCE="DENY_ONCE",n))(ve||{}),ye=(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))(ye||{}),Q=function(n,t){return Q=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s])},Q(n,t)};function T(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Q(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function rt(n,t,e,r){function s(o){return o instanceof e?o:new e(function(i){i(o)})}return new(e||(e=Promise))(function(o,i){function a(h){try{u(r.next(h))}catch(m){i(m)}}function c(h){try{u(r.throw(h))}catch(m){i(m)}}function u(h){h.done?o(h.value):s(h.value).then(a,c)}u((r=r.apply(n,t||[])).next())})}function Se(n,t){var e={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,s,o,i=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return i.next=a(0),i.throw=a(1),i.return=a(2),typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function a(u){return function(h){return c([u,h])}}function c(u){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,u[0]&&(e=0)),e;)try{if(r=1,s&&(o=u[0]&2?s.return:u[0]?s.throw||((o=s.return)&&o.call(s),0):s.next)&&!(o=o.call(s,u[1])).done)return o;switch(s=0,o&&(u=[u[0]&2,o.value]),u[0]){case 0:case 1:o=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,s=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(o=e.trys,!(o=o.length>0&&o[o.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]<o[3])){e.label=u[1];break}if(u[0]===6&&e.label<o[1]){e.label=o[1],o=u;break}if(o&&e.label<o[2]){e.label=o[2],e.ops.push(u);break}o[2]&&e.ops.pop(),e.trys.pop();continue}u=t.call(n,e)}catch(h){u=[6,h],s=0}finally{r=o=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}function N(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],r=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function H(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),s,o=[],i;try{for(;(t===void 0||t-- >0)&&!(s=r.next()).done;)o.push(s.value)}catch(a){i={error:a}}finally{try{s&&!s.done&&(e=r.return)&&e.call(r)}finally{if(i)throw i.error}}return o}function F(n,t,e){if(e||arguments.length===2)for(var r=0,s=t.length,o;r<s;r++)(o||!(r in t))&&(o||(o=Array.prototype.slice.call(t,0,r)),o[r]=t[r]);return n.concat(o||Array.prototype.slice.call(t))}function k(n){return this instanceof k?(this.v=n,this):new k(n)}function st(n,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=e.apply(n,t||[]),s,o=[];return s=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",i),s[Symbol.asyncIterator]=function(){return this},s;function i(l){return function(f){return Promise.resolve(f).then(l,m)}}function a(l,f){r[l]&&(s[l]=function(p){return new Promise(function(L,E){o.push([l,p,L,E])>1||c(l,p)})},f&&(s[l]=f(s[l])))}function c(l,f){try{u(r[l](f))}catch(p){v(o[0][3],p)}}function u(l){l.value instanceof k?Promise.resolve(l.value.v).then(h,m):v(o[0][2],l)}function h(l){c("next",l)}function m(l){c("throw",l)}function v(l,f){l(f),o.shift(),o.length&&c(o[0][0],o[0][1])}}function ot(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 N=="function"?N(n):n[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(o){e[o]=n[o]&&function(i){return new Promise(function(a,c){i=n[o](i),s(a,c,i.done,i.value)})}}function s(o,i,a,c){Promise.resolve(c).then(function(u){o({value:u,done:a})},i)}}function g(n){return typeof n=="function"}function we(n){var t=function(r){Error.call(r),r.stack=new Error().stack},e=n(t);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var z=we(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class w extends Error{status;statusText;body;constructor(t,e,r){super(`HTTP ${t}: ${e}`),this.name="HttpError",this.status=t,this.statusText=e,this.body=r}}function rt(n){return n instanceof w}var U=(n=>(n.RESET_CHANNEL="RESET_CHANNEL",n.NONE="NONE",n.RESPONSE_TOOL_CALL_CONSENT="RESPONSE_TOOL_CALL_CONSENT",n.NUDGE="NUDGE",n))(U||{}),d=(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.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.SANDBOX_LAUNCH="asgard.sandbox.launch",n.SANDBOX_READY="asgard.sandbox.ready",n.DONE="asgard.run.done",n.ERROR="asgard.run.error",n))(d||{}),ve=(n=>(n.ALLOW_ONCE="ALLOW_ONCE",n.ALLOW_ALWAYS="ALLOW_ALWAYS",n.DENY_ONCE="DENY_ONCE",n))(ve||{}),ye=(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))(ye||{});async function st(n,t){const e=n.getReader();let r;for(;!(r=await e.read()).done;)t(r.value)}function ot(n){let t,e,r,s=!1;return function(i){t===void 0?(t=i,e=0,r=-1):t=at(t,i);const a=t.length;let c=0;for(;e<a;){s&&(t[e]===10&&(c=++e),s=!1);let u=-1;for(;e<a&&u===-1;++e)switch(t[e]){case 58:r===-1&&(r=e-c);break;case 13:s=!0;case 10:u=e;break}if(u===-1)break;n(t.subarray(c,u),r),c=e,r=-1}c===a?t=void 0:c!==0&&(t=t.subarray(c),e-=c)}}function it(n,t,e){let r=ae();const s=new TextDecoder;return function(i,a){if(i.length===0)e?.(r),r=ae();else if(a>0){const c=s.decode(i.subarray(0,a)),u=a+(i[a+1]===32?2:1),h=s.decode(i.subarray(u));switch(c){case"data":r.data=r.data?r.data+`
2
+ `+h:h;break;case"event":r.event=h;break;case"id":n(r.id=h);break;case"retry":const m=parseInt(h,10);isNaN(m)||t(r.retry=m);break}}}}function at(n,t){const e=new Uint8Array(n.length+t.length);return e.set(n),e.set(t,n.length),e}function ae(){return{data:"",event:"",id:"",retry:void 0}}var ct=function(n,t){var e={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&t.indexOf(r)<0&&(e[r]=n[r]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,r=Object.getOwnPropertySymbols(n);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(n,r[s])&&(e[r[s]]=n[r[s]]);return e};const Q="text/event-stream",ut=1e3,ce="last-event-id";function Se(n,t){var{signal:e,headers:r,onopen:s,onmessage:o,onclose:i,onerror:a,openWhenHidden:c,fetch:u}=t,h=ct(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise((m,v)=>{const l=Object.assign({},r);l.accept||(l.accept=Q);let f;function p(){f.abort(),document.hidden||V()}c||document.addEventListener("visibilitychange",p);let L=ut,E=0;function _(){document.removeEventListener("visibilitychange",p),window.clearTimeout(E),f.abort()}e?.addEventListener("abort",()=>{_(),m()});const tt=u??window.fetch,nt=s??lt;async function V(){var W;f=new AbortController;try{const G=await tt(n,Object.assign(Object.assign({},h),{headers:l,signal:f.signal}));await nt(G),await st(G.body,ot(it(x=>{x?l[ce]=x:delete l[ce]},x=>{L=x},o))),i?.(),_(),m()}catch(G){if(!f.signal.aborted)try{const x=(W=a?.(G))!==null&&W!==void 0?W:L;window.clearTimeout(E),E=window.setTimeout(V,x)}catch(x){_(),v(x)}}}V()})}function lt(n){const t=n.headers.get("content-type");if(!t?.startsWith(Q))throw new Error(`Expected content-type to be ${Q}, Actual: ${t}`)}var Z=function(n,t){return Z=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s])},Z(n,t)};function T(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Z(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function dt(n,t,e,r){function s(o){return o instanceof e?o:new e(function(i){i(o)})}return new(e||(e=Promise))(function(o,i){function a(h){try{u(r.next(h))}catch(m){i(m)}}function c(h){try{u(r.throw(h))}catch(m){i(m)}}function u(h){h.done?o(h.value):s(h.value).then(a,c)}u((r=r.apply(n,t||[])).next())})}function we(n,t){var e={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,s,o,i=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return i.next=a(0),i.throw=a(1),i.return=a(2),typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function a(u){return function(h){return c([u,h])}}function c(u){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,u[0]&&(e=0)),e;)try{if(r=1,s&&(o=u[0]&2?s.return:u[0]?s.throw||((o=s.return)&&o.call(s),0):s.next)&&!(o=o.call(s,u[1])).done)return o;switch(s=0,o&&(u=[u[0]&2,o.value]),u[0]){case 0:case 1:o=u;break;case 4:return e.label++,{value:u[1],done:!1};case 5:e.label++,s=u[1],u=[0];continue;case 7:u=e.ops.pop(),e.trys.pop();continue;default:if(o=e.trys,!(o=o.length>0&&o[o.length-1])&&(u[0]===6||u[0]===2)){e=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]<o[3])){e.label=u[1];break}if(u[0]===6&&e.label<o[1]){e.label=o[1],o=u;break}if(o&&e.label<o[2]){e.label=o[2],e.ops.push(u);break}o[2]&&e.ops.pop(),e.trys.pop();continue}u=t.call(n,e)}catch(h){u=[6,h],s=0}finally{r=o=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}function N(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],r=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function H(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),s,o=[],i;try{for(;(t===void 0||t-- >0)&&!(s=r.next()).done;)o.push(s.value)}catch(a){i={error:a}}finally{try{s&&!s.done&&(e=r.return)&&e.call(r)}finally{if(i)throw i.error}}return o}function F(n,t,e){if(e||arguments.length===2)for(var r=0,s=t.length,o;r<s;r++)(o||!(r in t))&&(o||(o=Array.prototype.slice.call(t,0,r)),o[r]=t[r]);return n.concat(o||Array.prototype.slice.call(t))}function k(n){return this instanceof k?(this.v=n,this):new k(n)}function ht(n,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=e.apply(n,t||[]),s,o=[];return s=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",i),s[Symbol.asyncIterator]=function(){return this},s;function i(l){return function(f){return Promise.resolve(f).then(l,m)}}function a(l,f){r[l]&&(s[l]=function(p){return new Promise(function(L,E){o.push([l,p,L,E])>1||c(l,p)})},f&&(s[l]=f(s[l])))}function c(l,f){try{u(r[l](f))}catch(p){v(o[0][3],p)}}function u(l){l.value instanceof k?Promise.resolve(l.value.v).then(h,m):v(o[0][2],l)}function h(l){c("next",l)}function m(l){c("throw",l)}function v(l,f){l(f),o.shift(),o.length&&c(o[0][0],o[0][1])}}function ft(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 N=="function"?N(n):n[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(o){e[o]=n[o]&&function(i){return new Promise(function(a,c){i=n[o](i),s(a,c,i.done,i.value)})}}function s(o,i,a,c){Promise.resolve(c).then(function(u){o({value:u,done:a})},i)}}function g(n){return typeof n=="function"}function Ee(n){var t=function(r){Error.call(r),r.stack=new Error().stack},e=n(t);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var z=Ee(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
2
3
  `+e.map(function(r,s){return s+1+") "+r.toString()}).join(`
3
- `):"",this.name="UnsubscriptionError",this.errors=e}});function q(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var $=(function(){function n(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var t,e,r,s,o;if(!this.closed){this.closed=!0;var i=this._parentage;if(i)if(this._parentage=null,Array.isArray(i))try{for(var a=N(i),c=a.next();!c.done;c=a.next()){var u=c.value;u.remove(this)}}catch(p){t={error:p}}finally{try{c&&!c.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else i.remove(this);var h=this.initialTeardown;if(g(h))try{h()}catch(p){o=p instanceof z?p.errors:[p]}var m=this._finalizers;if(m){this._finalizers=null;try{for(var v=N(m),l=v.next();!l.done;l=v.next()){var f=l.value;try{ae(f)}catch(p){o=o??[],p instanceof z?o=F(F([],H(o)),H(p.errors)):o.push(p)}}}catch(p){r={error:p}}finally{try{l&&!l.done&&(s=v.return)&&s.call(v)}finally{if(r)throw r.error}}}if(o)throw new z(o)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)ae(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)&&q(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&q(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=(function(){var t=new n;return t.closed=!0,t})(),n})(),Ee=$.EMPTY;function Ie(n){return n instanceof $||n&&"closed"in n&&g(n.remove)&&g(n.add)&&g(n.unsubscribe)}function ae(n){g(n)?n():n.unsubscribe()}var it={Promise:void 0},at={setTimeout:function(n,t){for(var e=[],r=2;r<arguments.length;r++)e[r-2]=arguments[r];return setTimeout.apply(void 0,F([n,t],H(e)))},clearTimeout:function(n){return clearTimeout(n)},delegate:void 0};function Te(n){at.setTimeout(function(){throw n})}function Z(){}function K(n){n()}var re=(function(n){T(t,n);function t(e){var r=n.call(this)||this;return r.isStopped=!1,e?(r.destination=e,Ie(e)&&e.add(r)):r.destination=lt,r}return t.create=function(e,r,s){return new ee(e,r,s)},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})($),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(r){B(r)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(r){B(r)}else B(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){B(e)}},n})(),ee=(function(n){T(t,n);function t(e,r,s){var o=n.call(this)||this,i;return g(e)||!e?i={next:e??void 0,error:r??void 0,complete:s??void 0}:i=e,o.destination=new ct(i),o}return t})(re);function B(n){Te(n)}function ut(n){throw n}var lt={closed:!0,next:Z,error:ut,complete:Z},se=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function X(n){return n}function dt(n){return n.length===0?X:n.length===1?n[0]:function(e){return n.reduce(function(r,s){return s(r)},e)}}var S=(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,r){var s=this,o=ft(t)?t:new ee(t,e,r);return K(function(){var i=s,a=i.operator,c=i.source;o.add(a?a.call(o,c):c?s._subscribe(o):s._trySubscribe(o))}),o},n.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},n.prototype.forEach=function(t,e){var r=this;return e=ce(e),new e(function(s,o){var i=new ee({next:function(a){try{t(a)}catch(c){o(c),i.unsubscribe()}},error:o,complete:s});r.subscribe(i)})},n.prototype._subscribe=function(t){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(t)},n.prototype[se]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return dt(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=ce(t),new t(function(r,s){var o;e.subscribe(function(i){return o=i},function(i){return s(i)},function(){return r(o)})})},n.create=function(t){return new n(t)},n})();function ce(n){var t;return(t=n??it.Promise)!==null&&t!==void 0?t:Promise}function ht(n){return n&&g(n.next)&&g(n.error)&&g(n.complete)}function ft(n){return n&&n instanceof re||ht(n)&&Ie(n)}function pt(n){return g(n?.lift)}function A(n){return function(t){if(pt(t))return t.lift(function(e){try{return n(e,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function O(n,t,e,r,s){return new mt(n,t,e,r,s)}var mt=(function(n){T(t,n);function t(e,r,s,o,i,a){var c=n.call(this,e)||this;return c.onFinalize=i,c.shouldUnsubscribe=a,c._next=r?function(u){try{r(u)}catch(h){e.error(h)}}:n.prototype._next,c._error=o?function(u){try{o(u)}catch(h){e.error(h)}finally{this.unsubscribe()}}:n.prototype._error,c._complete=s?function(){try{s()}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 r=this.closed;n.prototype.unsubscribe.call(this),!r&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t})(re),gt=we(function(n){return function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),oe=(function(n){T(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 r=new ue(this,this);return r.operator=e,r},t.prototype._throwIfClosed=function(){if(this.closed)throw new gt},t.prototype.next=function(e){var r=this;K(function(){var s,o;if(r._throwIfClosed(),!r.isStopped){r.currentObservers||(r.currentObservers=Array.from(r.observers));try{for(var i=N(r.currentObservers),a=i.next();!a.done;a=i.next()){var c=a.value;c.next(e)}}catch(u){s={error:u}}finally{try{a&&!a.done&&(o=i.return)&&o.call(i)}finally{if(s)throw s.error}}}})},t.prototype.error=function(e){var r=this;K(function(){if(r._throwIfClosed(),!r.isStopped){r.hasError=r.isStopped=!0,r.thrownError=e;for(var s=r.observers;s.length;)s.shift().error(e)}})},t.prototype.complete=function(){var e=this;K(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var r=e.observers;r.length;)r.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 r=this,s=this,o=s.hasError,i=s.isStopped,a=s.observers;return o||i?Ee:(this.currentObservers=null,a.push(e),new $(function(){r.currentObservers=null,q(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var r=this,s=r.hasError,o=r.thrownError,i=r.isStopped;s?e.error(o):i&&e.complete()},t.prototype.asObservable=function(){var e=new S;return e.source=this,e},t.create=function(e,r){return new ue(e,r)},t})(S),ue=(function(n){T(t,n);function t(e,r){var s=n.call(this)||this;return s.destination=e,s.source=r,s}return t.prototype.next=function(e){var r,s;(s=(r=this.destination)===null||r===void 0?void 0:r.next)===null||s===void 0||s.call(r,e)},t.prototype.error=function(e){var r,s;(s=(r=this.destination)===null||r===void 0?void 0:r.error)===null||s===void 0||s.call(r,e)},t.prototype.complete=function(){var e,r;(r=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||r===void 0||r.call(e)},t.prototype._subscribe=function(e){var r,s;return(s=(r=this.source)===null||r===void 0?void 0:r.subscribe(e))!==null&&s!==void 0?s:Ee},t})(oe),P=(function(n){T(t,n);function t(e){var r=n.call(this)||this;return r._value=e,r}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(e){var r=n.prototype._subscribe.call(this,e);return!r.closed&&e.next(this._value),r},t.prototype.getValue=function(){var e=this,r=e.hasError,s=e.thrownError,o=e._value;if(r)throw s;return this._throwIfClosed(),o},t.prototype.next=function(e){n.prototype.next.call(this,this._value=e)},t})(oe),bt={now:function(){return Date.now()}},vt=(function(n){T(t,n);function t(e,r){return n.call(this)||this}return t.prototype.schedule=function(e,r){return this},t})($),le={setInterval:function(n,t){for(var e=[],r=2;r<arguments.length;r++)e[r-2]=arguments[r];return setInterval.apply(void 0,F([n,t],H(e)))},clearInterval:function(n){return clearInterval(n)},delegate:void 0},yt=(function(n){T(t,n);function t(e,r){var s=n.call(this,e,r)||this;return s.scheduler=e,s.work=r,s.pending=!1,s}return t.prototype.schedule=function(e,r){var s;if(r===void 0&&(r=0),this.closed)return this;this.state=e;var o=this.id,i=this.scheduler;return o!=null&&(this.id=this.recycleAsyncId(i,o,r)),this.pending=!0,this.delay=r,this.id=(s=this.id)!==null&&s!==void 0?s:this.requestAsyncId(i,this.id,r),this},t.prototype.requestAsyncId=function(e,r,s){return s===void 0&&(s=0),le.setInterval(e.flush.bind(e,this),s)},t.prototype.recycleAsyncId=function(e,r,s){if(s===void 0&&(s=0),s!=null&&this.delay===s&&this.pending===!1)return r;r!=null&&le.clearInterval(r)},t.prototype.execute=function(e,r){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var s=this._execute(e,r);if(s)return s;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,r){var s=!1,o;try{this.work(e)}catch(i){s=!0,o=i||new Error("Scheduled action threw falsy error")}if(s)return this.unsubscribe(),o},t.prototype.unsubscribe=function(){if(!this.closed){var e=this,r=e.id,s=e.scheduler,o=s.actions;this.work=this.state=this.scheduler=null,this.pending=!1,q(o,this),r!=null&&(this.id=this.recycleAsyncId(s,r,null)),this.delay=null,n.prototype.unsubscribe.call(this)}},t})(vt),de=(function(){function n(t,e){e===void 0&&(e=n.now),this.schedulerActionCtor=t,this.now=e}return n.prototype.schedule=function(t,e,r){return e===void 0&&(e=0),new this.schedulerActionCtor(this,t).schedule(r,e)},n.now=bt.now,n})(),St=(function(n){T(t,n);function t(e,r){r===void 0&&(r=de.now);var s=n.call(this,e,r)||this;return s.actions=[],s._active=!1,s}return t.prototype.flush=function(e){var r=this.actions;if(this._active){r.push(e);return}var s;this._active=!0;do if(s=e.execute(e.state,e.delay))break;while(e=r.shift());if(this._active=!1,s){for(;e=r.shift();)e.unsubscribe();throw s}},t})(de),xe=new St(yt),wt=xe,Et=new S(function(n){return n.complete()});function Ce(n){return n&&g(n.schedule)}function Oe(n){return n[n.length-1]}function It(n){return g(Oe(n))?n.pop():void 0}function Ae(n){return Ce(Oe(n))?n.pop():void 0}var Le=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function _e(n){return g(n?.then)}function Pe(n){return g(n[se])}function Me(n){return Symbol.asyncIterator&&g(n?.[Symbol.asyncIterator])}function Ue(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 Tt(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var ke=Tt();function Ne(n){return g(n?.[ke])}function Re(n){return st(this,arguments,function(){var e,r,s,o;return Se(this,function(i){switch(i.label){case 0:e=n.getReader(),i.label=1;case 1:i.trys.push([1,,9,10]),i.label=2;case 2:return[4,k(e.read())];case 3:return r=i.sent(),s=r.value,o=r.done,o?[4,k(void 0)]:[3,5];case 4:return[2,i.sent()];case 5:return[4,k(s)];case 6:return[4,i.sent()];case 7:return i.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}})})}function $e(n){return g(n?.getReader)}function M(n){if(n instanceof S)return n;if(n!=null){if(Pe(n))return xt(n);if(Le(n))return Ct(n);if(_e(n))return Ot(n);if(Me(n))return je(n);if(Ne(n))return At(n);if($e(n))return Lt(n)}throw Ue(n)}function xt(n){return new S(function(t){var e=n[se]();if(g(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Ct(n){return new S(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function Ot(n){return new S(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,Te)})}function At(n){return new S(function(t){var e,r;try{for(var s=N(n),o=s.next();!o.done;o=s.next()){var i=o.value;if(t.next(i),t.closed)return}}catch(a){e={error:a}}finally{try{o&&!o.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}t.complete()})}function je(n){return new S(function(t){_t(n,t).catch(function(e){return t.error(e)})})}function Lt(n){return je(Re(n))}function _t(n,t){var e,r,s,o;return rt(this,void 0,void 0,function(){var i,a;return Se(this,function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),e=ot(n),c.label=1;case 1:return[4,e.next()];case 2:if(r=c.sent(),!!r.done)return[3,4];if(i=r.value,t.next(i),t.closed)return[2];c.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=c.sent(),s={error:a},[3,11];case 6:return c.trys.push([6,,9,10]),r&&!r.done&&(o=e.return)?[4,o.call(e)]:[3,8];case 7:c.sent(),c.label=8;case 8:return[3,10];case 9:if(s)throw s.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function C(n,t,e,r,s){r===void 0&&(r=0),s===void 0&&(s=!1);var o=t.schedule(function(){e(),s?n.add(this.schedule(null,r)):this.unsubscribe()},r);if(n.add(o),!s)return o}function De(n,t){return t===void 0&&(t=0),A(function(e,r){e.subscribe(O(r,function(s){return C(r,n,function(){return r.next(s)},t)},function(){return C(r,n,function(){return r.complete()},t)},function(s){return C(r,n,function(){return r.error(s)},t)}))})}function He(n,t){return t===void 0&&(t=0),A(function(e,r){r.add(n.schedule(function(){return e.subscribe(r)},t))})}function Pt(n,t){return M(n).pipe(He(t),De(t))}function Mt(n,t){return M(n).pipe(He(t),De(t))}function Ut(n,t){return new S(function(e){var r=0;return t.schedule(function(){r===n.length?e.complete():(e.next(n[r++]),e.closed||this.schedule())})})}function kt(n,t){return new S(function(e){var r;return C(e,t,function(){r=n[ke](),C(e,t,function(){var s,o,i;try{s=r.next(),o=s.value,i=s.done}catch(a){e.error(a);return}i?e.complete():e.next(o)},0,!0)}),function(){return g(r?.return)&&r.return()}})}function Fe(n,t){if(!n)throw new Error("Iterable cannot be null");return new S(function(e){C(e,t,function(){var r=n[Symbol.asyncIterator]();C(e,t,function(){r.next().then(function(s){s.done?e.complete():e.next(s.value)})},0,!0)})})}function Nt(n,t){return Fe(Re(n),t)}function Rt(n,t){if(n!=null){if(Pe(n))return Pt(n,t);if(Le(n))return Ut(n,t);if(_e(n))return Mt(n,t);if(Me(n))return Fe(n,t);if(Ne(n))return kt(n,t);if($e(n))return Nt(n,t)}throw Ue(n)}function ie(n,t){return t?Rt(n,t):M(n)}function $t(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Ae(n);return ie(n,e)}function jt(n){return n instanceof Date&&!isNaN(n)}function R(n,t){return A(function(e,r){var s=0;e.subscribe(O(r,function(o){r.next(n.call(t,o,s++))}))})}var Dt=Array.isArray;function Ht(n,t){return Dt(t)?n.apply(void 0,F([],H(t))):n(t)}function Ft(n){return R(function(t){return Ht(n,t)})}var Gt=Array.isArray,Bt=Object.getPrototypeOf,Kt=Object.prototype,qt=Object.keys;function Yt(n){if(n.length===1){var t=n[0];if(Gt(t))return{args:t,keys:null};if(Xt(t)){var e=qt(t);return{args:e.map(function(r){return t[r]}),keys:e}}}return{args:n,keys:null}}function Xt(n){return n&&typeof n=="object"&&Bt(n)===Kt}function Vt(n,t){return n.reduce(function(e,r,s){return e[r]=t[s],e},{})}function Wt(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Ae(n),r=It(n),s=Yt(n),o=s.args,i=s.keys;if(o.length===0)return ie([],e);var a=new S(zt(o,e,i?function(c){return Vt(i,c)}:X));return r?a.pipe(Ft(r)):a}function zt(n,t,e){return e===void 0&&(e=X),function(r){he(t,function(){for(var s=n.length,o=new Array(s),i=s,a=s,c=function(h){he(t,function(){var m=ie(n[h],t),v=!1;m.subscribe(O(r,function(l){o[h]=l,v||(v=!0,a--),a||r.next(e(o.slice()))},function(){--i||r.complete()}))},r)},u=0;u<s;u++)c(u)},r)}}function he(n,t,e){n?C(e,n,t):t()}function Jt(n,t,e,r,s,o,i,a){var c=[],u=0,h=0,m=!1,v=function(){m&&!c.length&&!u&&t.complete()},l=function(p){return u<r?f(p):c.push(p)},f=function(p){u++;var L=!1;M(e(p,h++)).subscribe(O(t,function(E){t.next(E)},function(){L=!0},void 0,function(){if(L)try{u--;for(var E=function(){var _=c.shift();i||f(_)};c.length&&u<r;)E();v()}catch(_){t.error(_)}}))};return n.subscribe(O(t,l,function(){m=!0,v()})),function(){}}function Y(n,t,e){return e===void 0&&(e=1/0),g(t)?Y(function(r,s){return R(function(o,i){return t(r,o,s,i)})(M(n(r,s)))},e):(typeof t=="number"&&(e=t),A(function(r,s){return Jt(r,s,n,e)}))}function Qt(n,t,e){n===void 0&&(n=0),e===void 0&&(e=wt);var r=-1;return t!=null&&(Ce(t)?e=t:r=t),new S(function(s){var o=jt(n)?+n-e.now():n;o<0&&(o=0);var i=0;return e.schedule(function(){s.closed||(s.next(i++),0<=r?this.schedule(void 0,r):s.complete())},o)})}function Zt(n,t){return g(t)?Y(n,t,1):Y(n,1)}function en(n){return n<=0?function(){return Et}:A(function(t,e){var r=0;t.subscribe(O(e,function(s){++r<=n&&(e.next(s),n<=r&&e.complete())}))})}function tn(n){return R(function(){return n})}function nn(n,t){return Y(function(e,r){return M(n(e,r)).pipe(en(1),tn(e))})}function rn(n,t){t===void 0&&(t=xe);var e=Qt(n,t);return nn(function(){return e})}function j(n,t){return t===void 0&&(t=X),n=n??sn,A(function(e,r){var s,o=!0;e.subscribe(O(r,function(i){var a=t(i);(o||!n(s,a))&&(o=!1,s=a,r.next(i))}))})}function sn(n,t){return n===t}function on(n){return A(function(t,e){try{t.subscribe(e)}finally{e.add(n)}})}function an(n){return A(function(t,e){M(n).subscribe(O(e,function(){return e.complete()},Z)),!e.closed&&t.subscribe(e)})}async function cn(n,t){const e=n.getReader();let r;for(;!(r=await e.read()).done;)t(r.value)}function un(n){let t,e,r,s=!1;return function(i){t===void 0?(t=i,e=0,r=-1):t=dn(t,i);const a=t.length;let c=0;for(;e<a;){s&&(t[e]===10&&(c=++e),s=!1);let u=-1;for(;e<a&&u===-1;++e)switch(t[e]){case 58:r===-1&&(r=e-c);break;case 13:s=!0;case 10:u=e;break}if(u===-1)break;n(t.subarray(c,u),r),c=e,r=-1}c===a?t=void 0:c!==0&&(t=t.subarray(c),e-=c)}}function ln(n,t,e){let r=fe();const s=new TextDecoder;return function(i,a){if(i.length===0)e?.(r),r=fe();else if(a>0){const c=s.decode(i.subarray(0,a)),u=a+(i[a+1]===32?2:1),h=s.decode(i.subarray(u));switch(c){case"data":r.data=r.data?r.data+`
4
- `+h:h;break;case"event":r.event=h;break;case"id":n(r.id=h);break;case"retry":const m=parseInt(h,10);isNaN(m)||t(r.retry=m);break}}}}function dn(n,t){const e=new Uint8Array(n.length+t.length);return e.set(n),e.set(t,n.length),e}function fe(){return{data:"",event:"",id:"",retry:void 0}}var hn=function(n,t){var e={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&t.indexOf(r)<0&&(e[r]=n[r]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,r=Object.getOwnPropertySymbols(n);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(n,r[s])&&(e[r[s]]=n[r[s]]);return e};const te="text/event-stream",fn=1e3,pe="last-event-id";function pn(n,t){var{signal:e,headers:r,onopen:s,onmessage:o,onclose:i,onerror:a,openWhenHidden:c,fetch:u}=t,h=hn(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise((m,v)=>{const l=Object.assign({},r);l.accept||(l.accept=te);let f;function p(){f.abort(),document.hidden||V()}c||document.addEventListener("visibilitychange",p);let L=fn,E=0;function _(){document.removeEventListener("visibilitychange",p),window.clearTimeout(E),f.abort()}e?.addEventListener("abort",()=>{_(),m()});const et=u??window.fetch,tt=s??mn;async function V(){var W;f=new AbortController;try{const G=await et(n,Object.assign(Object.assign({},h),{headers:l,signal:f.signal}));await tt(G),await cn(G.body,un(ln(x=>{x?l[pe]=x:delete l[pe]},x=>{L=x},o))),i?.(),_(),m()}catch(G){if(!f.signal.aborted)try{const x=(W=a?.(G))!==null&&W!==void 0?W:L;window.clearTimeout(E),E=window.setTimeout(V,x)}catch(x){_(),v(x)}}}V()})}function mn(n){const t=n.headers.get("content-type");if(!t?.startsWith(te))throw new Error(`Expected content-type to be ${te}, Actual: ${t}`)}function me(n){const{endpoint:t,apiKey:e,payload:r,debugMode:s,customHeaders:o}=n,i=n.method??"POST";return new S(a=>{const c=new AbortController;let u,h=!1;const m={"Content-Type":"application/json",...o};e&&(m["X-API-KEY"]=e);const v=new URL(t);return s&&v.searchParams.set("is_debug","true"),pn(v.toString(),{method:i,headers:m,body:i==="POST"&&r?JSON.stringify(r):void 0,signal:c.signal,openWhenHidden:!0,onopen:async l=>{if(l.ok)u=l.headers.get("X-Trace-Id")??void 0;else{let f;try{f=await l.json()}catch{try{f=await l.text()}catch{f=null}}a.error(new w(l.status,l.statusText,f)),c.abort()}},onmessage:l=>{l.id&&(h=!0);const f=JSON.parse(l.data);u?f.traceId=u:f.requestId&&(f.traceId=f.requestId,u||(u=f.requestId)),a.next(f)},onclose:()=>{a.complete()},onerror:l=>{if(!h)throw a.error(l),c.abort(),l}}),()=>{c.abort()}})}class gn{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(r=>r!==e)}))}remove(t){delete this.listeners[t]}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(r=>r(...e))}}class bn{apiKey;endpoint;botProviderEndpoint;debugMode;destroy$=new oe;closed=!1;detached=!1;detachTimer;inFlight=0;sseEmitter=new gn;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 d.INIT:this.sseEmitter.emit(d.INIT,t);break;case d.PROCESS_START:case d.PROCESS_COMPLETE:this.sseEmitter.emit(d.PROCESS,t);break;case d.MESSAGE_START:case d.MESSAGE_DELTA:case d.MESSAGE_COMPLETE:this.sseEmitter.emit(d.MESSAGE,t);break;case d.TOOL_CALL_START:case d.TOOL_CALL_COMPLETE:this.sseEmitter.emit(d.TOOL_CALL,t);break;case d.TOOL_CALL_CONSENT:this.sseEmitter.emit(d.TOOL_CALL_CONSENT,t);break;case d.DONE:this.sseEmitter.emit(d.DONE,t);break;case d.ERROR:this.sseEmitter.emit(d.ERROR,t);break}}fetchSse(t,e){return e?.onSseStart?.(),this.inFlight+=1,this.runSse(me({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 r=new URL(this.endpoint);return r.searchParams.set("custom_channel_id",t),this.runSse(me({apiKey:this.apiKey,endpoint:r.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 r=new URL(e);r.searchParams.set("custom_channel_id",t);const s={...this.customHeaders};this.apiKey&&(s["X-API-KEY"]=this.apiKey);const o=await fetch(r.toString(),{method:"GET",headers:s});if(o.status===404)return null;if(!o.ok)throw new w(o.status,o.statusText,await o.text().catch(()=>{}));const i=await o.json(),a=i.data??i;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}))}}runSse(t,e){return t.pipe(Zt(r=>$t(r).pipe(rn(e?.delayTime??50))),an(this.destroy$),on(()=>this.onRunSettled())).subscribe({next:r=>{this.detached||(e?.onSseMessage?.(r),this.handleEvent(r))},error:r=>{this.detached||e?.onSseError?.(r)},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 r=this.deriveBlobEndpoint();if(!r)throw new Error("Unable to derive blob endpoint. Please provide botProviderEndpoint in config.");const s=new FormData;s.append("file",t),s.append("customChannelId",e);const o={...this.customHeaders};this.apiKey&&(o["X-API-KEY"]=this.apiKey);try{const i=await fetch(r,{method:"POST",headers:o,body:s});if(!i.ok)throw new Error(`Upload failed: ${i.status} ${i.statusText}`);const a=await i.json();return this.debugMode&&console.log("[AsgardServiceClient] File upload response:",a),a}catch(i){throw console.error("[AsgardServiceClient] File upload error:",i),i}}async downloadChannelHomeFile(t,e){const r=this.getBaseEndpoint();if(!r)throw new Error("Unable to derive channel-home download endpoint. Please provide botProviderEndpoint in config.");const s=`custom_channel_id=${encodeURIComponent(e)}&relative_path=${encodeURIComponent(t)}`,o=`${r}/channel-home/download?${s}`,i={...this.customHeaders};this.apiKey&&(i["X-API-KEY"]=this.apiKey);try{const a=await fetch(o,{method:"GET",headers:i});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 r=`${e}/sandbox/${encodeURIComponent(t)}/browser/open-url`,s={...this.customHeaders};this.apiKey&&(s["X-API-KEY"]=this.apiKey);const o=await fetch(r,{method:"POST",headers:s});if(!o.ok)throw new w(o.status,o.statusText,await o.text().catch(()=>{}));const i=await o.json(),a=i.data?.openURL??i.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`}sandboxFsHeaders(){const t={...this.customHeaders};return this.apiKey&&(t["X-API-KEY"]=this.apiKey),t}async sandboxFsList(t,e){const r=new URL(`${this.deriveSandboxFsEndpoint(t)}/list`);r.searchParams.set("path",e);const s=await fetch(r.toString(),{method:"GET",headers:this.sandboxFsHeaders()});if(!s.ok)throw new w(s.status,s.statusText,await s.text().catch(()=>{}));const o=await s.json(),i=o.data??o;return{entries:i.entries??[],truncated:i.truncated??!1}}async sandboxFsRead(t,e,r){const s=new URL(`${this.deriveSandboxFsEndpoint(t)}/file`);s.searchParams.set("path",e),r?.offsetBytes!=null&&s.searchParams.set("offset_bytes",String(r.offsetBytes)),r?.limitBytes!=null&&s.searchParams.set("limit_bytes",String(r.limitBytes));const o=await fetch(s.toString(),{method:"GET",headers:this.sandboxFsHeaders()});if(!o.ok)throw new w(o.status,o.statusText,await o.text().catch(()=>{}));const i=await o.blob(),a=o.headers.get("X-Total-Bytes");return{content:i,totalBytes:a!=null?Number(a):i.size,truncated:o.headers.get("X-Truncated")==="true"}}async sandboxFsWrite(t,e,r,s){const o=new URL(`${this.deriveSandboxFsEndpoint(t)}/file`);o.searchParams.set("path",e),s?.mode!=null&&o.searchParams.set("mode",String(s.mode)),s?.createOnly&&o.searchParams.set("create_only","true");const i=new FormData;i.append("file",r instanceof Blob?r:new Blob([r]));const a=await fetch(o.toString(),{method:"PUT",headers:this.sandboxFsHeaders(),body:i});if(!a.ok)throw new w(a.status,a.statusText,await a.text().catch(()=>{}));const c=await a.json();return{bytesWritten:(c.data??c).bytesWritten??0}}async sandboxFsRequest(t,e,r,s){const o=new URL(`${this.deriveSandboxFsEndpoint(t)}/${e}`);Object.entries(s).forEach(([a,c])=>o.searchParams.set(a,c));const i=await fetch(o.toString(),{method:r,headers:this.sandboxFsHeaders()});if(!i.ok)throw new w(i.status,i.statusText,await i.text().catch(()=>{}));return i.json().catch(()=>null)}async sandboxFsStat(t,e){const r=new URL(`${this.deriveSandboxFsEndpoint(t)}/stat`);r.searchParams.set("path",e);const s=await fetch(r.toString(),{method:"GET",headers:this.sandboxFsHeaders()});if(!s.ok)throw new w(s.status,s.statusText,await s.text().catch(()=>{}));const o=await s.json(),i=o.data??o;return{exists:i.exists??!1,isDir:i.isDir??!1,sizeBytes:i.sizeBytes??0,mtimeUnix:i.mtimeUnix??0,mode:i.mode??0,etag:i.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,r,s){const o={src:e,dst:r};s?.overwrite&&(o.overwrite="true");const i=await this.sandboxFsRequest(t,"copy","POST",o);return{bytesCopied:(i?.data??i)?.bytesCopied??0}}async sandboxFsMove(t,e,r,s){const o={src:e,dst:r};s?.overwrite&&(o.overwrite="true"),await this.sandboxFsRequest(t,"move","POST",o)}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 y=[];for(let n=0;n<256;++n)y.push((n+256).toString(16).slice(1));function vn(n,t=0){return(y[n[t+0]]+y[n[t+1]]+y[n[t+2]]+y[n[t+3]]+"-"+y[n[t+4]]+y[n[t+5]]+"-"+y[n[t+6]]+y[n[t+7]]+"-"+y[n[t+8]]+y[n[t+9]]+"-"+y[n[t+10]]+y[n[t+11]]+y[n[t+12]]+y[n[t+13]]+y[n[t+14]]+y[n[t+15]]).toLowerCase()}let J;const yn=new Uint8Array(16);function Sn(){if(!J){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");J=crypto.getRandomValues.bind(crypto)}return J(yn)}const wn=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),ge={randomUUID:wn};function En(n,t,e){n=n||{};const r=n.random??n.rng?.()??Sn();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=r[6]&15|64,r[8]=r[8]&63|128,vn(r)}function Ge(n,t,e){return ge.randomUUID&&!n?ge.randomUUID():En(n)}class b{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 b({messages:e,pendingConsent:this.pendingConsent})}clearPendingConsent(){return this.pendingConsent?new b({messages:this.messages,pendingConsent:null}):this}cancelInFlightToolCalls(){if(!this.messages)return this;let t=!1;const e=new Map(this.messages);for(const[r,s]of e)s.type==="tool-call"&&!s.isComplete&&(e.set(r,{...s,isComplete:!0,isCancelled:!0}),t=!0);return t?new b({messages:e,pendingConsent:this.pendingConsent}):this}onMessage(t){switch(t.eventType){case d.MESSAGE_START:return this.onMessageStart(t);case d.MESSAGE_DELTA:return this.onMessageDelta(t);case d.MESSAGE_COMPLETE:return this.onMessageComplete(t);case d.MESSAGE_USER:return this.onMessageUser(t);case d.MESSAGE_THINKING_START:return this.onThinkingStart(t);case d.MESSAGE_THINKING_DELTA:return this.onThinkingDelta(t);case d.MESSAGE_THINKING_COMPLETE:return this.onThinkingComplete(t);case d.TOOL_CALL_START:return this.onToolCallStart(t);case d.TOOL_CALL_COMPLETE:return this.onToolCallComplete(t);case d.TOOL_CALL_CONSENT:return this.onToolCallConsent(t);case d.SUBAGENT_START:return this.onSubagentStart(t);case d.SUBAGENT_COMPLETE:return this.onSubagentComplete(t);case d.ERROR:return this.onMessageError(t);default:return this}}isTerminalBot(t){return t?.type==="bot"&&!t.isTyping}isTerminalThinking(t){return t?.type==="thinking"&&!t.isThinking}onMessageStart(t){const e=t.fact.messageStart.message;if(e.parentToolUseId)return this;if(this.isTerminalBot(this.messages?.get(e.messageId)))return this;const r=new Map(this.messages);return r.set(e.messageId,{type:"bot",eventType:d.MESSAGE_START,isTyping:!0,typingText:"",messageId:e.messageId,message:e,time:new Date,traceId:t.traceId,raw:""}),new b({messages:r,pendingConsent:this.pendingConsent})}onMessageDelta(t){const e=t.fact.messageDelta.message;if(e.parentToolUseId)return this;const r=this.messages?.get(e.messageId);if(this.isTerminalBot(r))return this;const s=r?.type==="bot"?r:void 0,o=new Map(this.messages);return o.set(e.messageId,{type:"bot",eventType:d.MESSAGE_DELTA,isTyping:!0,typingText:`${s?.typingText??""}${e.text}`,messageId:e.messageId,message:e,time:new Date,traceId:t.traceId??s?.traceId,raw:s?.raw??""}),new b({messages:o,pendingConsent:this.pendingConsent})}onMessageComplete(t){const e=t.fact.messageComplete.message;if(e.parentToolUseId)return this;const r=new Map(this.messages),s=r.get(e.messageId);return r.set(e.messageId,{type:"bot",eventType:d.MESSAGE_COMPLETE,isTyping:!1,typingText:null,messageId:e.messageId,message:e,time:new Date,traceId:t.traceId??(s?.type==="bot"?s.traceId:void 0),raw:JSON.stringify(t)}),new b({messages:r,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 r=new Map(this.messages),s={type:"thinking",messageId:e.messageId,text:e.text,isThinking:!0,time:new Date,traceId:t.traceId};return r.set(e.messageId,s),new b({messages:r,pendingConsent:this.pendingConsent})}onThinkingDelta(t){const e=t.fact.messageThinkingDelta.message;if(e.parentToolUseId)return this;const r=this.messages?.get(e.messageId);if(this.isTerminalThinking(r))return this;const s=r?.type==="thinking"?r:void 0,o=new Map(this.messages),i={type:"thinking",messageId:e.messageId,text:`${s?.text??""}${e.text}`,isThinking:!0,time:s?.time??new Date,traceId:t.traceId??s?.traceId};return o.set(e.messageId,i),new b({messages:o,pendingConsent:this.pendingConsent})}onThinkingComplete(t){const e=t.fact.messageThinkingComplete.message;if(e.parentToolUseId)return this;const r=this.messages?.get(e.messageId),s=r?.type==="thinking"?r:void 0,o=new Map(this.messages),i={type:"thinking",messageId:e.messageId,text:e.text,isThinking:!1,time:s?.time??new Date,traceId:t.traceId??s?.traceId};return o.set(e.messageId,i),new b({messages:o,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 s=new Map(this.messages),o={type:"user",messageId:e.messageId,text:e.text,blobIds:e.blobIds,customMessageId:e.customMessageId,identityHint:e.identityHint,time:new Date,traceId:t.traceId};return s.set(e.messageId,o),new b({messages:s,pendingConsent:this.pendingConsent})}onMessageError(t){const e=Ge(),r=t.fact.runError.error,s=new Map(this.messages);return s.set(e,{type:"error",eventType:d.ERROR,messageId:e,error:r,time:new Date,traceId:t.traceId}),new b({messages:s,pendingConsent:this.pendingConsent})}onToolCallStart(t){const e=t.fact.toolCallStart,r=new Map(this.messages),s=`${e.processId}-${e.callSeq}`,o={type:"tool-call",eventType:d.TOOL_CALL_START,messageId:s,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 r.set(s,o),new b({messages:r,pendingConsent:this.pendingConsent})}onToolCallComplete(t){const e=t.fact.toolCallComplete,r=new Map(this.messages),s=`${e.processId}-${e.callSeq}`,o=r.get(s);if(o?.type==="tool-call"){const i={...o,eventType:d.TOOL_CALL_COMPLETE,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,traceId:t.traceId??o.traceId};r.set(s,i)}return new b({messages:r,pendingConsent:this.pendingConsent})}onToolCallConsent(t){const e=t.fact.toolCallConsent;return new b({messages:this.messages,pendingConsent:e})}onSubagentStart(t){const e=t.fact.subagentStart,r=new Map(this.messages),s=`subagent:${e.parentToolUseId}:start`,o={type:"subagent",messageId:s,kind:"start",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,description:e.description,time:new Date,traceId:t.traceId};return r.set(s,o),new b({messages:r,pendingConsent:this.pendingConsent})}onSubagentComplete(t){const e=t.fact.subagentComplete,r=new Map(this.messages),s=`subagent:${e.parentToolUseId}:complete`,o={type:"subagent",messageId:s,kind:"complete",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,status:e.status,summary:e.summary,time:new Date,traceId:t.traceId};return r.set(s,o),new b({messages:r,pendingConsent:this.pendingConsent})}}const In=new Set(["TaskCreate","TaskUpdate"]);function Be(n){return n.toolsetName===""&&In.has(n.toolName)}function be(n){return typeof n=="object"&&n!==null?n:void 0}function I(n){return typeof n=="string"?n:void 0}function Ke(n){const t=[],e=new Map;for(const r of n){const s=r.parameter??{},o=r.sidecar??{};if(r.toolName==="TaskCreate"){const i=be(o.task),a=I(i?.id);if(!a)continue;e.has(a)||t.push(a),e.set(a,{id:a,subject:I(s.subject)||I(i?.subject)||"",activeForm:I(s.activeForm),description:I(s.description),status:e.get(a)?.status??"pending"})}else if(r.toolName==="TaskUpdate"){const i=be(o.statusChange),a=I(s.taskId)||I(o.taskId),c=I(i?.to)||I(s.status);if(!a||!c)continue;const u=e.get(a);u&&e.set(a,{...u,status:c})}}return t.map(r=>e.get(r))}function qe(n){return n.toolsetName===""&&n.toolName==="Agent"}function Ye(n){return!!n}function Xe(n){const t=[],e=new Map,r=new Map,s=o=>(e.has(o)||(t.push(o),e.set(o,{status:"running"}),r.set(o,new Map)),e.get(o));for(const o of n)switch(o.kind){case"agentStart":{const i=s(o.toolUseId);o.description&&!i.description&&(i.description=o.description);break}case"subagentStart":{const i=s(o.parentToolUseId);i.agentId=o.agentId??i.agentId,i.subagentType=o.subagentType??i.subagentType,i.description=o.description??i.description;break}case"toolStart":{s(o.parentToolUseId),r.get(o.parentToolUseId).set(o.toolUseId,{toolsetName:o.toolsetName,toolName:o.toolName,parameter:o.parameter??{},reason:o.reason,status:"running"});break}case"toolComplete":{const i=r.get(o.parentToolUseId)?.get(o.toolUseId);i&&(i.status=o.isError?"error":"completed");break}case"subagentComplete":{const i=s(o.parentToolUseId);i.status=o.status,i.summary=o.summary;break}}return t.map(o=>({parentToolUseId:o,...e.get(o),tools:Array.from(r.get(o).values())}))}function Tn(n){return typeof n=="string"?n:void 0}function Ve(n){const t=[];for(const e of n){if(e.type==="tool-call"&&qe(e)){t.push({kind:"agentStart",toolUseId:e.toolUseId??e.messageId,description:Tn(e.parameter.description)});continue}if(e.type==="tool-call"&&Ye(e.parentToolUseId)){const r=e.toolUseId??e.messageId;t.push({kind:"toolStart",parentToolUseId:e.parentToolUseId,toolUseId:r,toolsetName:e.toolsetName,toolName:e.toolName,parameter:e.parameter,reason:e.reason}),e.isComplete&&t.push({kind:"toolComplete",parentToolUseId:e.parentToolUseId,toolUseId:r,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 We(n){const t=Array.from(n.messages?.values()??[]).filter(e=>e.type==="tool-call"&&e.isComplete&&Be(e));return Ke(t)}function ze(n){return Xe(Ve(Array.from(n.messages?.values()??[])))}function Je(n,t){return n===t?!0:n.length!==t.length?!1:n.every((e,r)=>{const s=t[r];return e.id===s.id&&e.status===s.status&&e.subject===s.subject&&e.activeForm===s.activeForm&&e.description===s.description})}function xn(n,t){return n.length!==t.length?!1:n.every((e,r)=>{const s=t[r];return e.toolName===s.toolName&&e.toolsetName===s.toolsetName&&e.status===s.status&&e.reason===s.reason})}function Qe(n,t){return n===t?!0:n.length!==t.length?!1:n.every((e,r)=>{const s=t[r];return e.parentToolUseId===s.parentToolUseId&&e.status===s.status&&e.subagentType===s.subagentType&&e.description===s.description&&e.summary===s.summary&&xn(e.tools,s.tools)})}function Ze(n){const t=new P([]),e=new P([]),r=new $;return r.add(n.pipe(R(We),j(Je)).subscribe(t)),r.add(n.pipe(R(ze),j(Qe)).subscribe(e)),{tasks$:t.asObservable(),subagents$:e.asObservable(),getTasks:()=>t.value,getSubagents:()=>e.value,teardown:()=>r.unsubscribe()}}function ne(n){const t=new Map;for(const e of n)t.set(e.sandboxName,e);return[...t.values()].sort((e,r)=>(e.sandboxBlueprintName||e.sandboxName).localeCompare(r.sandboxBlueprintName||r.sandboxName))}class D{client;customChannelId;customMessageId;isConnecting$;conversation$;channelTitleSubject;sandboxPhaseSubject;launchedSandboxesSubject;pendingLaunches=[];derivedStores;statesObserver;statesSubscription;tasks$;subagents$;channelTitle$;sandboxPhase$;launchedSandboxes$;currentUserMessageId;lastSentMessageId;currentRun;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.isConnecting$=new P(!1),this.conversation$=new P(t.conversation),this.channelTitleSubject=new P(t.channelTitle??null),this.sandboxPhaseSubject=new P("idle"),this.launchedSandboxesSubject=new P(ne(t.launchedSandboxes??[])),this.derivedStores=Ze(this.conversation$),this.tasks$=this.derivedStores.tasks$,this.subagents$=this.derivedStores.subagents$,this.channelTitle$=this.channelTitleSubject.pipe(j()),this.sandboxPhase$=this.sandboxPhaseSubject.pipe(j()),this.launchedSandboxes$=this.launchedSandboxesSubject.pipe(j()),this.statesObserver=t.statesObserver}getTasks(){return this.derivedStores.getTasks()}getSubagents(){return this.derivedStores.getSubagents()}getChannelTitle(){return this.channelTitleSubject.value}getSandboxPhase(){return this.sandboxPhaseSubject.value}getLaunchedSandboxes(){return this.launchedSandboxesSubject.value}getPendingLaunches(){return this.pendingLaunches}applyLaunchedSandboxes(t){const e=ne(t);this.pendingLaunches=this.pendingLaunches.filter(r=>!e.some(s=>s.sandboxName===r)),this.launchedSandboxesSubject.next(e)}dropSandbox(t){const e=this.launchedSandboxesSubject.value,r=e.filter(s=>s.sandboxName!==t);r.length!==e.length&&this.launchedSandboxesSubject.next(r)}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 D(t);return e.subscribe(),e}static async reset(t,e,r,s){const o=new D(t);try{return o.subscribe(),s?.(o),await o.resetChannel(e,r),o}catch(i){throw o.close(),i}}static async restore(t,e,r){const s=new D(t);try{return s.subscribe(),r?.(s),await s.rejoinChannel(e),s}catch(o){throw s.close(),o}}subscribe(){this.statesSubscription=Wt([this.isConnecting$,this.conversation$,this.derivedStores.tasks$,this.derivedStores.subagents$,this.channelTitle$,this.sandboxPhase$,this.launchedSandboxes$]).pipe(R(([t,e,r,s,o,i,a])=>({isConnecting:t,conversation:e,tasks:r,subagents:s,channelTitle:o,sandboxPhase:i,launchedSandboxes:a}))).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 d.SANDBOX_LAUNCH:this.sandboxPhaseSubject.next("launching");break;case d.SANDBOX_READY:this.sandboxPhaseSubject.next("ready");break;case d.INIT:case d.ERROR:this.sandboxPhaseSubject.next("idle");break}}buildRunHandlers(t,e,r){return{onSseStart:t?.onSseStart,onSseMessage:s=>{if(t?.onSseMessage?.(s),s.eventType===d.CHANNEL_TITLE_UPDATE&&this.channelTitleSubject.next(s.fact.channelTitleUpdate.title),this.updateSandboxPhase(s.eventType),s.eventType===d.SANDBOX_LAUNCH&&this.noteSandboxLaunch(s.fact.sandboxLaunch.sandboxName),this.currentUserMessageId&&s.traceId){const o=new Map(this.conversation$.value.messages),i=o.get(this.currentUserMessageId);i&&i.type==="user"&&(o.set(this.currentUserMessageId,{...i,traceId:s.traceId}),this.conversation$.next(new b({messages:o}))),this.currentUserMessageId=void 0}this.conversation$.next(this.conversation$.value.onMessage(s))},onSseError:s=>{t?.onSseError?.(s),this.isConnecting$.next(!1),this.currentUserMessageId=void 0,this.currentRun=void 0,r(s)},onSseCompleted:()=>{t?.onSseCompleted?.(),this.isConnecting$.next(!1),this.currentUserMessageId=void 0,this.currentRun=void 0,e()}}}fetchSse(t,e){return new Promise((r,s)=>{this.isConnecting$.next(!0),this.currentRun=this.client.fetchSse(t,this.buildRunHandlers(e,r,s))})}rejoinChannel(t){return new Promise((e,r)=>{if(!this.client.rejoinSse){e();return}this.isConnecting$.next(!0),this.currentRun=this.client.rejoinSse(this.customChannelId,this.buildRunHandlers(t,e,r))})}resetChannel(t,e){return this.fetchSse({action:U.RESET_CHANNEL,customChannelId:this.customChannelId,customMessageId:this.customMessageId,text:t?.text||"",payload:this.resolvePayload(t?.payload)},e)}sendMessage(t,e){const r=t.text.trim(),s=t.customMessageId??Ge();return this.currentUserMessageId=s,this.lastSentMessageId=s,this.conversation$.next(this.conversation$.value.pushMessage({type:"user",messageId:s,text:r,blobIds:t.blobIds,filePreviewUrls:t.filePreviewUrls,documentNames:t.documentNames,time:new Date})),this.fetchSse({action:U.NONE,customChannelId:this.customChannelId,customMessageId:s,payload:this.resolvePayload(t?.payload),text:r,blobIds:t?.blobIds},e)}replyToolCallConsents(t,e,r){return this.conversation$.next(this.conversation$.value.clearPendingConsent()),this.fetchSse({action:U.RESPONSE_TOOL_CALL_CONSENT,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(r),text:"",toolCallConsents:t},e)}nudge(t){return this.fetchSse({action:U.NUDGE,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,text:""},t)}stopGeneration(){this.currentRun&&(this.currentRun.unsubscribe(),this.currentRun=void 0,this.isConnecting$.next(!1),this.currentUserMessageId=void 0,this.conversation$.next(this.conversation$.value.cancelInFlightToolCalls()))}close(){this.currentRun?.unsubscribe(),this.currentRun=void 0,this.isConnecting$.complete(),this.conversation$.complete(),this.channelTitleSubject.complete(),this.sandboxPhaseSubject.complete(),this.launchedSandboxesSubject.complete(),this.derivedStores.teardown(),this.statesSubscription?.unsubscribe()}}function Cn(n){const t=/^sandbox:\/\/([^/]+)\/([^?#]+)(?:\?([^#]*))?/.exec(n.trim());if(!t)return null;const e=decodeURIComponent(t[1]),r=t[2],s=new URLSearchParams(t[3]??"");if(r==="open-browser")return{kind:"open-browser",sandboxName:e};if(r==="open-file"){const o=s.get("absolute_path");return o?{kind:"open-file",sandboxName:e,absolutePath:o}:null}return null}exports.AsgardServiceClient=bn;exports.Channel=D;exports.Conversation=b;exports.EventType=d;exports.FetchSseAction=U;exports.HttpError=w;exports.MessageTemplateType=ye;exports.ToolCallConsentResult=ve;exports.conversationToSubagentEvents=Ve;exports.createDerivedStores=Ze;exports.deriveSubagents=ze;exports.deriveTasks=We;exports.isAgentTool=qe;exports.isHttpError=nt;exports.isSubagentChildTool=Ye;exports.isTaskTool=Be;exports.reconcileLaunched=ne;exports.reduceSubagents=Xe;exports.reduceTaskEvents=Ke;exports.resolveSandboxUri=Cn;exports.subagentsEqual=Qe;exports.tasksEqual=Je;
4
+ `):"",this.name="UnsubscriptionError",this.errors=e}});function q(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var $=(function(){function n(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var t,e,r,s,o;if(!this.closed){this.closed=!0;var i=this._parentage;if(i)if(this._parentage=null,Array.isArray(i))try{for(var a=N(i),c=a.next();!c.done;c=a.next()){var u=c.value;u.remove(this)}}catch(p){t={error:p}}finally{try{c&&!c.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else i.remove(this);var h=this.initialTeardown;if(g(h))try{h()}catch(p){o=p instanceof z?p.errors:[p]}var m=this._finalizers;if(m){this._finalizers=null;try{for(var v=N(m),l=v.next();!l.done;l=v.next()){var f=l.value;try{ue(f)}catch(p){o=o??[],p instanceof z?o=F(F([],H(o)),H(p.errors)):o.push(p)}}}catch(p){r={error:p}}finally{try{l&&!l.done&&(s=v.return)&&s.call(v)}finally{if(r)throw r.error}}}if(o)throw new z(o)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)ue(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)&&q(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&q(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=(function(){var t=new n;return t.closed=!0,t})(),n})(),Ie=$.EMPTY;function Te(n){return n instanceof $||n&&"closed"in n&&g(n.remove)&&g(n.add)&&g(n.unsubscribe)}function ue(n){g(n)?n():n.unsubscribe()}var pt={Promise:void 0},mt={setTimeout:function(n,t){for(var e=[],r=2;r<arguments.length;r++)e[r-2]=arguments[r];return setTimeout.apply(void 0,F([n,t],H(e)))},clearTimeout:function(n){return clearTimeout(n)},delegate:void 0};function xe(n){mt.setTimeout(function(){throw n})}function ee(){}function K(n){n()}var re=(function(n){T(t,n);function t(e){var r=n.call(this)||this;return r.isStopped=!1,e?(r.destination=e,Te(e)&&e.add(r)):r.destination=vt,r}return t.create=function(e,r,s){return new te(e,r,s)},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})($),gt=(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(r){B(r)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(r){B(r)}else B(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){B(e)}},n})(),te=(function(n){T(t,n);function t(e,r,s){var o=n.call(this)||this,i;return g(e)||!e?i={next:e??void 0,error:r??void 0,complete:s??void 0}:i=e,o.destination=new gt(i),o}return t})(re);function B(n){xe(n)}function bt(n){throw n}var vt={closed:!0,next:ee,error:bt,complete:ee},se=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function X(n){return n}function yt(n){return n.length===0?X:n.length===1?n[0]:function(e){return n.reduce(function(r,s){return s(r)},e)}}var S=(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,r){var s=this,o=wt(t)?t:new te(t,e,r);return K(function(){var i=s,a=i.operator,c=i.source;o.add(a?a.call(o,c):c?s._subscribe(o):s._trySubscribe(o))}),o},n.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},n.prototype.forEach=function(t,e){var r=this;return e=le(e),new e(function(s,o){var i=new te({next:function(a){try{t(a)}catch(c){o(c),i.unsubscribe()}},error:o,complete:s});r.subscribe(i)})},n.prototype._subscribe=function(t){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(t)},n.prototype[se]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return yt(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=le(t),new t(function(r,s){var o;e.subscribe(function(i){return o=i},function(i){return s(i)},function(){return r(o)})})},n.create=function(t){return new n(t)},n})();function le(n){var t;return(t=n??pt.Promise)!==null&&t!==void 0?t:Promise}function St(n){return n&&g(n.next)&&g(n.error)&&g(n.complete)}function wt(n){return n&&n instanceof re||St(n)&&Te(n)}function Et(n){return g(n?.lift)}function A(n){return function(t){if(Et(t))return t.lift(function(e){try{return n(e,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function O(n,t,e,r,s){return new It(n,t,e,r,s)}var It=(function(n){T(t,n);function t(e,r,s,o,i,a){var c=n.call(this,e)||this;return c.onFinalize=i,c.shouldUnsubscribe=a,c._next=r?function(u){try{r(u)}catch(h){e.error(h)}}:n.prototype._next,c._error=o?function(u){try{o(u)}catch(h){e.error(h)}finally{this.unsubscribe()}}:n.prototype._error,c._complete=s?function(){try{s()}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 r=this.closed;n.prototype.unsubscribe.call(this),!r&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t})(re),Tt=Ee(function(n){return function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),oe=(function(n){T(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 r=new de(this,this);return r.operator=e,r},t.prototype._throwIfClosed=function(){if(this.closed)throw new Tt},t.prototype.next=function(e){var r=this;K(function(){var s,o;if(r._throwIfClosed(),!r.isStopped){r.currentObservers||(r.currentObservers=Array.from(r.observers));try{for(var i=N(r.currentObservers),a=i.next();!a.done;a=i.next()){var c=a.value;c.next(e)}}catch(u){s={error:u}}finally{try{a&&!a.done&&(o=i.return)&&o.call(i)}finally{if(s)throw s.error}}}})},t.prototype.error=function(e){var r=this;K(function(){if(r._throwIfClosed(),!r.isStopped){r.hasError=r.isStopped=!0,r.thrownError=e;for(var s=r.observers;s.length;)s.shift().error(e)}})},t.prototype.complete=function(){var e=this;K(function(){if(e._throwIfClosed(),!e.isStopped){e.isStopped=!0;for(var r=e.observers;r.length;)r.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 r=this,s=this,o=s.hasError,i=s.isStopped,a=s.observers;return o||i?Ie:(this.currentObservers=null,a.push(e),new $(function(){r.currentObservers=null,q(a,e)}))},t.prototype._checkFinalizedStatuses=function(e){var r=this,s=r.hasError,o=r.thrownError,i=r.isStopped;s?e.error(o):i&&e.complete()},t.prototype.asObservable=function(){var e=new S;return e.source=this,e},t.create=function(e,r){return new de(e,r)},t})(S),de=(function(n){T(t,n);function t(e,r){var s=n.call(this)||this;return s.destination=e,s.source=r,s}return t.prototype.next=function(e){var r,s;(s=(r=this.destination)===null||r===void 0?void 0:r.next)===null||s===void 0||s.call(r,e)},t.prototype.error=function(e){var r,s;(s=(r=this.destination)===null||r===void 0?void 0:r.error)===null||s===void 0||s.call(r,e)},t.prototype.complete=function(){var e,r;(r=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||r===void 0||r.call(e)},t.prototype._subscribe=function(e){var r,s;return(s=(r=this.source)===null||r===void 0?void 0:r.subscribe(e))!==null&&s!==void 0?s:Ie},t})(oe),P=(function(n){T(t,n);function t(e){var r=n.call(this)||this;return r._value=e,r}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(e){var r=n.prototype._subscribe.call(this,e);return!r.closed&&e.next(this._value),r},t.prototype.getValue=function(){var e=this,r=e.hasError,s=e.thrownError,o=e._value;if(r)throw s;return this._throwIfClosed(),o},t.prototype.next=function(e){n.prototype.next.call(this,this._value=e)},t})(oe),xt={now:function(){return Date.now()}},Ct=(function(n){T(t,n);function t(e,r){return n.call(this)||this}return t.prototype.schedule=function(e,r){return this},t})($),he={setInterval:function(n,t){for(var e=[],r=2;r<arguments.length;r++)e[r-2]=arguments[r];return setInterval.apply(void 0,F([n,t],H(e)))},clearInterval:function(n){return clearInterval(n)},delegate:void 0},Ot=(function(n){T(t,n);function t(e,r){var s=n.call(this,e,r)||this;return s.scheduler=e,s.work=r,s.pending=!1,s}return t.prototype.schedule=function(e,r){var s;if(r===void 0&&(r=0),this.closed)return this;this.state=e;var o=this.id,i=this.scheduler;return o!=null&&(this.id=this.recycleAsyncId(i,o,r)),this.pending=!0,this.delay=r,this.id=(s=this.id)!==null&&s!==void 0?s:this.requestAsyncId(i,this.id,r),this},t.prototype.requestAsyncId=function(e,r,s){return s===void 0&&(s=0),he.setInterval(e.flush.bind(e,this),s)},t.prototype.recycleAsyncId=function(e,r,s){if(s===void 0&&(s=0),s!=null&&this.delay===s&&this.pending===!1)return r;r!=null&&he.clearInterval(r)},t.prototype.execute=function(e,r){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var s=this._execute(e,r);if(s)return s;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))},t.prototype._execute=function(e,r){var s=!1,o;try{this.work(e)}catch(i){s=!0,o=i||new Error("Scheduled action threw falsy error")}if(s)return this.unsubscribe(),o},t.prototype.unsubscribe=function(){if(!this.closed){var e=this,r=e.id,s=e.scheduler,o=s.actions;this.work=this.state=this.scheduler=null,this.pending=!1,q(o,this),r!=null&&(this.id=this.recycleAsyncId(s,r,null)),this.delay=null,n.prototype.unsubscribe.call(this)}},t})(Ct),fe=(function(){function n(t,e){e===void 0&&(e=n.now),this.schedulerActionCtor=t,this.now=e}return n.prototype.schedule=function(t,e,r){return e===void 0&&(e=0),new this.schedulerActionCtor(this,t).schedule(r,e)},n.now=xt.now,n})(),At=(function(n){T(t,n);function t(e,r){r===void 0&&(r=fe.now);var s=n.call(this,e,r)||this;return s.actions=[],s._active=!1,s}return t.prototype.flush=function(e){var r=this.actions;if(this._active){r.push(e);return}var s;this._active=!0;do if(s=e.execute(e.state,e.delay))break;while(e=r.shift());if(this._active=!1,s){for(;e=r.shift();)e.unsubscribe();throw s}},t})(fe),Ce=new At(Ot),Lt=Ce,_t=new S(function(n){return n.complete()});function Oe(n){return n&&g(n.schedule)}function Ae(n){return n[n.length-1]}function Pt(n){return g(Ae(n))?n.pop():void 0}function Le(n){return Oe(Ae(n))?n.pop():void 0}var _e=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function Pe(n){return g(n?.then)}function Me(n){return g(n[se])}function Ue(n){return Symbol.asyncIterator&&g(n?.[Symbol.asyncIterator])}function ke(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 Mt(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Ne=Mt();function Re(n){return g(n?.[Ne])}function $e(n){return ht(this,arguments,function(){var e,r,s,o;return we(this,function(i){switch(i.label){case 0:e=n.getReader(),i.label=1;case 1:i.trys.push([1,,9,10]),i.label=2;case 2:return[4,k(e.read())];case 3:return r=i.sent(),s=r.value,o=r.done,o?[4,k(void 0)]:[3,5];case 4:return[2,i.sent()];case 5:return[4,k(s)];case 6:return[4,i.sent()];case 7:return i.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}})})}function je(n){return g(n?.getReader)}function M(n){if(n instanceof S)return n;if(n!=null){if(Me(n))return Ut(n);if(_e(n))return kt(n);if(Pe(n))return Nt(n);if(Ue(n))return De(n);if(Re(n))return Rt(n);if(je(n))return $t(n)}throw ke(n)}function Ut(n){return new S(function(t){var e=n[se]();if(g(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function kt(n){return new S(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function Nt(n){return new S(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,xe)})}function Rt(n){return new S(function(t){var e,r;try{for(var s=N(n),o=s.next();!o.done;o=s.next()){var i=o.value;if(t.next(i),t.closed)return}}catch(a){e={error:a}}finally{try{o&&!o.done&&(r=s.return)&&r.call(s)}finally{if(e)throw e.error}}t.complete()})}function De(n){return new S(function(t){jt(n,t).catch(function(e){return t.error(e)})})}function $t(n){return De($e(n))}function jt(n,t){var e,r,s,o;return dt(this,void 0,void 0,function(){var i,a;return we(this,function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),e=ft(n),c.label=1;case 1:return[4,e.next()];case 2:if(r=c.sent(),!!r.done)return[3,4];if(i=r.value,t.next(i),t.closed)return[2];c.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=c.sent(),s={error:a},[3,11];case 6:return c.trys.push([6,,9,10]),r&&!r.done&&(o=e.return)?[4,o.call(e)]:[3,8];case 7:c.sent(),c.label=8;case 8:return[3,10];case 9:if(s)throw s.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function C(n,t,e,r,s){r===void 0&&(r=0),s===void 0&&(s=!1);var o=t.schedule(function(){e(),s?n.add(this.schedule(null,r)):this.unsubscribe()},r);if(n.add(o),!s)return o}function He(n,t){return t===void 0&&(t=0),A(function(e,r){e.subscribe(O(r,function(s){return C(r,n,function(){return r.next(s)},t)},function(){return C(r,n,function(){return r.complete()},t)},function(s){return C(r,n,function(){return r.error(s)},t)}))})}function Fe(n,t){return t===void 0&&(t=0),A(function(e,r){r.add(n.schedule(function(){return e.subscribe(r)},t))})}function Dt(n,t){return M(n).pipe(Fe(t),He(t))}function Ht(n,t){return M(n).pipe(Fe(t),He(t))}function Ft(n,t){return new S(function(e){var r=0;return t.schedule(function(){r===n.length?e.complete():(e.next(n[r++]),e.closed||this.schedule())})})}function Gt(n,t){return new S(function(e){var r;return C(e,t,function(){r=n[Ne](),C(e,t,function(){var s,o,i;try{s=r.next(),o=s.value,i=s.done}catch(a){e.error(a);return}i?e.complete():e.next(o)},0,!0)}),function(){return g(r?.return)&&r.return()}})}function Ge(n,t){if(!n)throw new Error("Iterable cannot be null");return new S(function(e){C(e,t,function(){var r=n[Symbol.asyncIterator]();C(e,t,function(){r.next().then(function(s){s.done?e.complete():e.next(s.value)})},0,!0)})})}function Bt(n,t){return Ge($e(n),t)}function Kt(n,t){if(n!=null){if(Me(n))return Dt(n,t);if(_e(n))return Ft(n,t);if(Pe(n))return Ht(n,t);if(Ue(n))return Ge(n,t);if(Re(n))return Gt(n,t);if(je(n))return Bt(n,t)}throw ke(n)}function ie(n,t){return t?Kt(n,t):M(n)}function qt(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Le(n);return ie(n,e)}function Yt(n){return n instanceof Date&&!isNaN(n)}function R(n,t){return A(function(e,r){var s=0;e.subscribe(O(r,function(o){r.next(n.call(t,o,s++))}))})}var Xt=Array.isArray;function Vt(n,t){return Xt(t)?n.apply(void 0,F([],H(t))):n(t)}function Wt(n){return R(function(t){return Vt(n,t)})}var zt=Array.isArray,Jt=Object.getPrototypeOf,Qt=Object.prototype,Zt=Object.keys;function en(n){if(n.length===1){var t=n[0];if(zt(t))return{args:t,keys:null};if(tn(t)){var e=Zt(t);return{args:e.map(function(r){return t[r]}),keys:e}}}return{args:n,keys:null}}function tn(n){return n&&typeof n=="object"&&Jt(n)===Qt}function nn(n,t){return n.reduce(function(e,r,s){return e[r]=t[s],e},{})}function rn(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Le(n),r=Pt(n),s=en(n),o=s.args,i=s.keys;if(o.length===0)return ie([],e);var a=new S(sn(o,e,i?function(c){return nn(i,c)}:X));return r?a.pipe(Wt(r)):a}function sn(n,t,e){return e===void 0&&(e=X),function(r){pe(t,function(){for(var s=n.length,o=new Array(s),i=s,a=s,c=function(h){pe(t,function(){var m=ie(n[h],t),v=!1;m.subscribe(O(r,function(l){o[h]=l,v||(v=!0,a--),a||r.next(e(o.slice()))},function(){--i||r.complete()}))},r)},u=0;u<s;u++)c(u)},r)}}function pe(n,t,e){n?C(e,n,t):t()}function on(n,t,e,r,s,o,i,a){var c=[],u=0,h=0,m=!1,v=function(){m&&!c.length&&!u&&t.complete()},l=function(p){return u<r?f(p):c.push(p)},f=function(p){u++;var L=!1;M(e(p,h++)).subscribe(O(t,function(E){t.next(E)},function(){L=!0},void 0,function(){if(L)try{u--;for(var E=function(){var _=c.shift();i||f(_)};c.length&&u<r;)E();v()}catch(_){t.error(_)}}))};return n.subscribe(O(t,l,function(){m=!0,v()})),function(){}}function Y(n,t,e){return e===void 0&&(e=1/0),g(t)?Y(function(r,s){return R(function(o,i){return t(r,o,s,i)})(M(n(r,s)))},e):(typeof t=="number"&&(e=t),A(function(r,s){return on(r,s,n,e)}))}function an(n,t,e){n===void 0&&(n=0),e===void 0&&(e=Lt);var r=-1;return t!=null&&(Oe(t)?e=t:r=t),new S(function(s){var o=Yt(n)?+n-e.now():n;o<0&&(o=0);var i=0;return e.schedule(function(){s.closed||(s.next(i++),0<=r?this.schedule(void 0,r):s.complete())},o)})}function cn(n,t){return g(t)?Y(n,t,1):Y(n,1)}function un(n){return n<=0?function(){return _t}:A(function(t,e){var r=0;t.subscribe(O(e,function(s){++r<=n&&(e.next(s),n<=r&&e.complete())}))})}function ln(n){return R(function(){return n})}function dn(n,t){return Y(function(e,r){return M(n(e,r)).pipe(un(1),ln(e))})}function hn(n,t){t===void 0&&(t=Ce);var e=an(n,t);return dn(function(){return e})}function j(n,t){return t===void 0&&(t=X),n=n??fn,A(function(e,r){var s,o=!0;e.subscribe(O(r,function(i){var a=t(i);(o||!n(s,a))&&(o=!1,s=a,r.next(i))}))})}function fn(n,t){return n===t}function pn(n){return A(function(t,e){try{t.subscribe(e)}finally{e.add(n)}})}function mn(n){return A(function(t,e){M(n).subscribe(O(e,function(){return e.complete()},ee)),!e.closed&&t.subscribe(e)})}function me(n){const{endpoint:t,apiKey:e,payload:r,debugMode:s,customHeaders:o}=n,i=n.method??"POST";return new S(a=>{const c=new AbortController;let u,h=!1;const m={"Content-Type":"application/json",...o};e&&(m["X-API-KEY"]=e);const v=new URL(t);return s&&v.searchParams.set("is_debug","true"),Se(v.toString(),{method:i,headers:m,body:i==="POST"&&r?JSON.stringify(r):void 0,signal:c.signal,openWhenHidden:!0,onopen:async l=>{if(l.ok)u=l.headers.get("X-Trace-Id")??void 0;else{let f;try{f=await l.json()}catch{try{f=await l.text()}catch{f=null}}a.error(new w(l.status,l.statusText,f)),c.abort()}},onmessage:l=>{l.id&&(h=!0);const f=JSON.parse(l.data);u?f.traceId=u:f.requestId&&(f.traceId=f.requestId,u||(u=f.requestId)),a.next(f)},onclose:()=>{a.complete()},onerror:l=>{if(!h)throw a.error(l),c.abort(),l}}),()=>{c.abort()}})}class gn{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(r=>r!==e)}))}remove(t){delete this.listeners[t]}emit(t,...e){this.listeners[t]&&this.listeners[t].forEach(r=>r(...e))}}class bn{apiKey;endpoint;botProviderEndpoint;debugMode;destroy$=new oe;closed=!1;detached=!1;detachTimer;inFlight=0;sseEmitter=new gn;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 d.INIT:this.sseEmitter.emit(d.INIT,t);break;case d.PROCESS_START:case d.PROCESS_COMPLETE:this.sseEmitter.emit(d.PROCESS,t);break;case d.MESSAGE_START:case d.MESSAGE_DELTA:case d.MESSAGE_COMPLETE:this.sseEmitter.emit(d.MESSAGE,t);break;case d.TOOL_CALL_START:case d.TOOL_CALL_COMPLETE:this.sseEmitter.emit(d.TOOL_CALL,t);break;case d.TOOL_CALL_CONSENT:this.sseEmitter.emit(d.TOOL_CALL_CONSENT,t);break;case d.DONE:this.sseEmitter.emit(d.DONE,t);break;case d.ERROR:this.sseEmitter.emit(d.ERROR,t);break}}fetchSse(t,e){return e?.onSseStart?.(),this.inFlight+=1,this.runSse(me({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 r=new URL(this.endpoint);return r.searchParams.set("custom_channel_id",t),this.runSse(me({apiKey:this.apiKey,endpoint:r.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 r=new URL(e);r.searchParams.set("custom_channel_id",t);const s={...this.customHeaders};this.apiKey&&(s["X-API-KEY"]=this.apiKey);const o=await fetch(r.toString(),{method:"GET",headers:s});if(o.status===404)return null;if(!o.ok)throw new w(o.status,o.statusText,await o.text().catch(()=>{}));const i=await o.json(),a=i.data??i;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}))}}runSse(t,e){return t.pipe(cn(r=>qt(r).pipe(hn(e?.delayTime??50))),mn(this.destroy$),pn(()=>this.onRunSettled())).subscribe({next:r=>{this.detached||(e?.onSseMessage?.(r),this.handleEvent(r))},error:r=>{this.detached||e?.onSseError?.(r)},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 r=this.deriveBlobEndpoint();if(!r)throw new Error("Unable to derive blob endpoint. Please provide botProviderEndpoint in config.");const s=new FormData;s.append("file",t),s.append("customChannelId",e);const o={...this.customHeaders};this.apiKey&&(o["X-API-KEY"]=this.apiKey);try{const i=await fetch(r,{method:"POST",headers:o,body:s});if(!i.ok)throw new Error(`Upload failed: ${i.status} ${i.statusText}`);const a=await i.json();return this.debugMode&&console.log("[AsgardServiceClient] File upload response:",a),a}catch(i){throw console.error("[AsgardServiceClient] File upload error:",i),i}}async downloadChannelHomeFile(t,e){const r=this.getBaseEndpoint();if(!r)throw new Error("Unable to derive channel-home download endpoint. Please provide botProviderEndpoint in config.");const s=`custom_channel_id=${encodeURIComponent(e)}&relative_path=${encodeURIComponent(t)}`,o=`${r}/channel-home/download?${s}`,i={...this.customHeaders};this.apiKey&&(i["X-API-KEY"]=this.apiKey);try{const a=await fetch(o,{method:"GET",headers:i});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 r=`${e}/sandbox/${encodeURIComponent(t)}/browser/open-url`,s={...this.customHeaders};this.apiKey&&(s["X-API-KEY"]=this.apiKey);const o=await fetch(r,{method:"POST",headers:s});if(!o.ok)throw new w(o.status,o.statusText,await o.text().catch(()=>{}));const i=await o.json(),a=i.data?.openURL??i.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`}sandboxFsHeaders(){const t={...this.customHeaders};return this.apiKey&&(t["X-API-KEY"]=this.apiKey),t}async sandboxFsList(t,e){const r=new URL(`${this.deriveSandboxFsEndpoint(t)}/list`);r.searchParams.set("path",e);const s=await fetch(r.toString(),{method:"GET",headers:this.sandboxFsHeaders()});if(!s.ok)throw new w(s.status,s.statusText,await s.text().catch(()=>{}));const o=await s.json(),i=o.data??o;return{entries:i.entries??[],truncated:i.truncated??!1}}async sandboxFsRead(t,e,r){const s=new URL(`${this.deriveSandboxFsEndpoint(t)}/file`);s.searchParams.set("path",e),r?.offsetBytes!=null&&s.searchParams.set("offset_bytes",String(r.offsetBytes)),r?.limitBytes!=null&&s.searchParams.set("limit_bytes",String(r.limitBytes));const o=await fetch(s.toString(),{method:"GET",headers:this.sandboxFsHeaders()});if(!o.ok)throw new w(o.status,o.statusText,await o.text().catch(()=>{}));const i=await o.blob(),a=o.headers.get("X-Total-Bytes");return{content:i,totalBytes:a!=null?Number(a):i.size,truncated:o.headers.get("X-Truncated")==="true"}}async sandboxFsWrite(t,e,r,s){const o=new URL(`${this.deriveSandboxFsEndpoint(t)}/file`);o.searchParams.set("path",e),s?.mode!=null&&o.searchParams.set("mode",String(s.mode)),s?.createOnly&&o.searchParams.set("create_only","true");const i=new FormData;i.append("file",r instanceof Blob?r:new Blob([r]));const a=await fetch(o.toString(),{method:"PUT",headers:this.sandboxFsHeaders(),body:i});if(!a.ok)throw new w(a.status,a.statusText,await a.text().catch(()=>{}));const c=await a.json();return{bytesWritten:(c.data??c).bytesWritten??0}}async sandboxFsRequest(t,e,r,s){const o=new URL(`${this.deriveSandboxFsEndpoint(t)}/${e}`);Object.entries(s).forEach(([a,c])=>o.searchParams.set(a,c));const i=await fetch(o.toString(),{method:r,headers:this.sandboxFsHeaders()});if(!i.ok)throw new w(i.status,i.statusText,await i.text().catch(()=>{}));return i.json().catch(()=>null)}async sandboxFsStat(t,e){const r=new URL(`${this.deriveSandboxFsEndpoint(t)}/stat`);r.searchParams.set("path",e);const s=await fetch(r.toString(),{method:"GET",headers:this.sandboxFsHeaders()});if(!s.ok)throw new w(s.status,s.statusText,await s.text().catch(()=>{}));const o=await s.json(),i=o.data??o;return{exists:i.exists??!1,isDir:i.isDir??!1,sizeBytes:i.sizeBytes??0,mtimeUnix:i.mtimeUnix??0,mode:i.mode??0,etag:i.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,r,s){const o={src:e,dst:r};s?.overwrite&&(o.overwrite="true");const i=await this.sandboxFsRequest(t,"copy","POST",o);return{bytesCopied:(i?.data??i)?.bytesCopied??0}}async sandboxFsMove(t,e,r,s){const o={src:e,dst:r};s?.overwrite&&(o.overwrite="true"),await this.sandboxFsRequest(t,"move","POST",o)}sandboxFsWatch(t,e){const r=new URL(`${this.deriveSandboxFsEndpoint(t)}/watch`);return r.searchParams.set("path",e),new S(s=>{const o=new AbortController;return Se(r.toString(),{headers:this.sandboxFsHeaders(),signal:o.signal,openWhenHidden:!0,onopen:async i=>{if(!i.ok){const a=await i.text().catch(()=>{});s.error(new w(i.status,i.statusText,a)),o.abort()}},onmessage:i=>{i.event==="change"&&s.next(JSON.parse(i.data))},onclose:()=>s.complete(),onerror:i=>{throw s.error(i),o.abort(),i}}),()=>o.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 y=[];for(let n=0;n<256;++n)y.push((n+256).toString(16).slice(1));function vn(n,t=0){return(y[n[t+0]]+y[n[t+1]]+y[n[t+2]]+y[n[t+3]]+"-"+y[n[t+4]]+y[n[t+5]]+"-"+y[n[t+6]]+y[n[t+7]]+"-"+y[n[t+8]]+y[n[t+9]]+"-"+y[n[t+10]]+y[n[t+11]]+y[n[t+12]]+y[n[t+13]]+y[n[t+14]]+y[n[t+15]]).toLowerCase()}let J;const yn=new Uint8Array(16);function Sn(){if(!J){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");J=crypto.getRandomValues.bind(crypto)}return J(yn)}const wn=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),ge={randomUUID:wn};function En(n,t,e){n=n||{};const r=n.random??n.rng?.()??Sn();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=r[6]&15|64,r[8]=r[8]&63|128,vn(r)}function Be(n,t,e){return ge.randomUUID&&!n?ge.randomUUID():En(n)}class b{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 b({messages:e,pendingConsent:this.pendingConsent})}clearPendingConsent(){return this.pendingConsent?new b({messages:this.messages,pendingConsent:null}):this}cancelInFlightToolCalls(){if(!this.messages)return this;let t=!1;const e=new Map(this.messages);for(const[r,s]of e)s.type==="tool-call"&&!s.isComplete&&(e.set(r,{...s,isComplete:!0,isCancelled:!0}),t=!0);return t?new b({messages:e,pendingConsent:this.pendingConsent}):this}onMessage(t){switch(t.eventType){case d.MESSAGE_START:return this.onMessageStart(t);case d.MESSAGE_DELTA:return this.onMessageDelta(t);case d.MESSAGE_COMPLETE:return this.onMessageComplete(t);case d.MESSAGE_USER:return this.onMessageUser(t);case d.MESSAGE_THINKING_START:return this.onThinkingStart(t);case d.MESSAGE_THINKING_DELTA:return this.onThinkingDelta(t);case d.MESSAGE_THINKING_COMPLETE:return this.onThinkingComplete(t);case d.TOOL_CALL_START:return this.onToolCallStart(t);case d.TOOL_CALL_COMPLETE:return this.onToolCallComplete(t);case d.TOOL_CALL_CONSENT:return this.onToolCallConsent(t);case d.SUBAGENT_START:return this.onSubagentStart(t);case d.SUBAGENT_COMPLETE:return this.onSubagentComplete(t);case d.ERROR:return this.onMessageError(t);default:return this}}isTerminalBot(t){return t?.type==="bot"&&!t.isTyping}isTerminalThinking(t){return t?.type==="thinking"&&!t.isThinking}onMessageStart(t){const e=t.fact.messageStart.message;if(e.parentToolUseId)return this;if(this.isTerminalBot(this.messages?.get(e.messageId)))return this;const r=new Map(this.messages);return r.set(e.messageId,{type:"bot",eventType:d.MESSAGE_START,isTyping:!0,typingText:"",messageId:e.messageId,message:e,time:new Date,traceId:t.traceId,raw:""}),new b({messages:r,pendingConsent:this.pendingConsent})}onMessageDelta(t){const e=t.fact.messageDelta.message;if(e.parentToolUseId)return this;const r=this.messages?.get(e.messageId);if(this.isTerminalBot(r))return this;const s=r?.type==="bot"?r:void 0,o=new Map(this.messages);return o.set(e.messageId,{type:"bot",eventType:d.MESSAGE_DELTA,isTyping:!0,typingText:`${s?.typingText??""}${e.text}`,messageId:e.messageId,message:e,time:new Date,traceId:t.traceId??s?.traceId,raw:s?.raw??""}),new b({messages:o,pendingConsent:this.pendingConsent})}onMessageComplete(t){const e=t.fact.messageComplete.message;if(e.parentToolUseId)return this;const r=new Map(this.messages),s=r.get(e.messageId);return r.set(e.messageId,{type:"bot",eventType:d.MESSAGE_COMPLETE,isTyping:!1,typingText:null,messageId:e.messageId,message:e,time:new Date,traceId:t.traceId??(s?.type==="bot"?s.traceId:void 0),raw:JSON.stringify(t)}),new b({messages:r,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 r=new Map(this.messages),s={type:"thinking",messageId:e.messageId,text:e.text,isThinking:!0,time:new Date,traceId:t.traceId};return r.set(e.messageId,s),new b({messages:r,pendingConsent:this.pendingConsent})}onThinkingDelta(t){const e=t.fact.messageThinkingDelta.message;if(e.parentToolUseId)return this;const r=this.messages?.get(e.messageId);if(this.isTerminalThinking(r))return this;const s=r?.type==="thinking"?r:void 0,o=new Map(this.messages),i={type:"thinking",messageId:e.messageId,text:`${s?.text??""}${e.text}`,isThinking:!0,time:s?.time??new Date,traceId:t.traceId??s?.traceId};return o.set(e.messageId,i),new b({messages:o,pendingConsent:this.pendingConsent})}onThinkingComplete(t){const e=t.fact.messageThinkingComplete.message;if(e.parentToolUseId)return this;const r=this.messages?.get(e.messageId),s=r?.type==="thinking"?r:void 0,o=new Map(this.messages),i={type:"thinking",messageId:e.messageId,text:e.text,isThinking:!1,time:s?.time??new Date,traceId:t.traceId??s?.traceId};return o.set(e.messageId,i),new b({messages:o,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 s=new Map(this.messages),o={type:"user",messageId:e.messageId,text:e.text,blobIds:e.blobIds,customMessageId:e.customMessageId,identityHint:e.identityHint,time:new Date,traceId:t.traceId};return s.set(e.messageId,o),new b({messages:s,pendingConsent:this.pendingConsent})}onMessageError(t){const e=Be(),r=t.fact.runError.error,s=new Map(this.messages);return s.set(e,{type:"error",eventType:d.ERROR,messageId:e,error:r,time:new Date,traceId:t.traceId}),new b({messages:s,pendingConsent:this.pendingConsent})}onToolCallStart(t){const e=t.fact.toolCallStart,r=new Map(this.messages),s=`${e.processId}-${e.callSeq}`,o={type:"tool-call",eventType:d.TOOL_CALL_START,messageId:s,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 r.set(s,o),new b({messages:r,pendingConsent:this.pendingConsent})}onToolCallComplete(t){const e=t.fact.toolCallComplete,r=new Map(this.messages),s=`${e.processId}-${e.callSeq}`,o=r.get(s);if(o?.type==="tool-call"){const i={...o,eventType:d.TOOL_CALL_COMPLETE,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,traceId:t.traceId??o.traceId};r.set(s,i)}return new b({messages:r,pendingConsent:this.pendingConsent})}onToolCallConsent(t){const e=t.fact.toolCallConsent;return new b({messages:this.messages,pendingConsent:e})}onSubagentStart(t){const e=t.fact.subagentStart,r=new Map(this.messages),s=`subagent:${e.parentToolUseId}:start`,o={type:"subagent",messageId:s,kind:"start",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,description:e.description,time:new Date,traceId:t.traceId};return r.set(s,o),new b({messages:r,pendingConsent:this.pendingConsent})}onSubagentComplete(t){const e=t.fact.subagentComplete,r=new Map(this.messages),s=`subagent:${e.parentToolUseId}:complete`,o={type:"subagent",messageId:s,kind:"complete",parentToolUseId:e.parentToolUseId,agentId:e.agentId,subagentType:e.subagentType,status:e.status,summary:e.summary,time:new Date,traceId:t.traceId};return r.set(s,o),new b({messages:r,pendingConsent:this.pendingConsent})}}const In=new Set(["TaskCreate","TaskUpdate"]);function Ke(n){return n.toolsetName===""&&In.has(n.toolName)}function be(n){return typeof n=="object"&&n!==null?n:void 0}function I(n){return typeof n=="string"?n:void 0}function qe(n){const t=[],e=new Map;for(const r of n){const s=r.parameter??{},o=r.sidecar??{};if(r.toolName==="TaskCreate"){const i=be(o.task),a=I(i?.id);if(!a)continue;e.has(a)||t.push(a),e.set(a,{id:a,subject:I(s.subject)||I(i?.subject)||"",activeForm:I(s.activeForm),description:I(s.description),status:e.get(a)?.status??"pending"})}else if(r.toolName==="TaskUpdate"){const i=be(o.statusChange),a=I(s.taskId)||I(o.taskId),c=I(i?.to)||I(s.status);if(!a||!c)continue;const u=e.get(a);u&&e.set(a,{...u,status:c})}}return t.map(r=>e.get(r))}function Ye(n){return n.toolsetName===""&&n.toolName==="Agent"}function Xe(n){return!!n}function Ve(n){const t=[],e=new Map,r=new Map,s=o=>(e.has(o)||(t.push(o),e.set(o,{status:"running"}),r.set(o,new Map)),e.get(o));for(const o of n)switch(o.kind){case"agentStart":{const i=s(o.toolUseId);o.description&&!i.description&&(i.description=o.description);break}case"subagentStart":{const i=s(o.parentToolUseId);i.agentId=o.agentId??i.agentId,i.subagentType=o.subagentType??i.subagentType,i.description=o.description??i.description;break}case"toolStart":{s(o.parentToolUseId),r.get(o.parentToolUseId).set(o.toolUseId,{toolsetName:o.toolsetName,toolName:o.toolName,parameter:o.parameter??{},reason:o.reason,status:"running"});break}case"toolComplete":{const i=r.get(o.parentToolUseId)?.get(o.toolUseId);i&&(i.status=o.isError?"error":"completed");break}case"subagentComplete":{const i=s(o.parentToolUseId);i.status=o.status,i.summary=o.summary;break}}return t.map(o=>({parentToolUseId:o,...e.get(o),tools:Array.from(r.get(o).values())}))}function Tn(n){return typeof n=="string"?n:void 0}function We(n){const t=[];for(const e of n){if(e.type==="tool-call"&&Ye(e)){t.push({kind:"agentStart",toolUseId:e.toolUseId??e.messageId,description:Tn(e.parameter.description)});continue}if(e.type==="tool-call"&&Xe(e.parentToolUseId)){const r=e.toolUseId??e.messageId;t.push({kind:"toolStart",parentToolUseId:e.parentToolUseId,toolUseId:r,toolsetName:e.toolsetName,toolName:e.toolName,parameter:e.parameter,reason:e.reason}),e.isComplete&&t.push({kind:"toolComplete",parentToolUseId:e.parentToolUseId,toolUseId:r,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 ze(n){const t=Array.from(n.messages?.values()??[]).filter(e=>e.type==="tool-call"&&e.isComplete&&Ke(e));return qe(t)}function Je(n){return Ve(We(Array.from(n.messages?.values()??[])))}function Qe(n,t){return n===t?!0:n.length!==t.length?!1:n.every((e,r)=>{const s=t[r];return e.id===s.id&&e.status===s.status&&e.subject===s.subject&&e.activeForm===s.activeForm&&e.description===s.description})}function xn(n,t){return n.length!==t.length?!1:n.every((e,r)=>{const s=t[r];return e.toolName===s.toolName&&e.toolsetName===s.toolsetName&&e.status===s.status&&e.reason===s.reason})}function Ze(n,t){return n===t?!0:n.length!==t.length?!1:n.every((e,r)=>{const s=t[r];return e.parentToolUseId===s.parentToolUseId&&e.status===s.status&&e.subagentType===s.subagentType&&e.description===s.description&&e.summary===s.summary&&xn(e.tools,s.tools)})}function et(n){const t=new P([]),e=new P([]),r=new $;return r.add(n.pipe(R(ze),j(Qe)).subscribe(t)),r.add(n.pipe(R(Je),j(Ze)).subscribe(e)),{tasks$:t.asObservable(),subagents$:e.asObservable(),getTasks:()=>t.value,getSubagents:()=>e.value,teardown:()=>r.unsubscribe()}}function ne(n){const t=new Map;for(const e of n)t.set(e.sandboxName,e);return[...t.values()].sort((e,r)=>(e.sandboxBlueprintName||e.sandboxName).localeCompare(r.sandboxBlueprintName||r.sandboxName))}class D{client;customChannelId;customMessageId;isConnecting$;conversation$;channelTitleSubject;sandboxPhaseSubject;launchedSandboxesSubject;pendingLaunches=[];derivedStores;statesObserver;statesSubscription;tasks$;subagents$;channelTitle$;sandboxPhase$;launchedSandboxes$;currentUserMessageId;lastSentMessageId;currentRun;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.isConnecting$=new P(!1),this.conversation$=new P(t.conversation),this.channelTitleSubject=new P(t.channelTitle??null),this.sandboxPhaseSubject=new P("idle"),this.launchedSandboxesSubject=new P(ne(t.launchedSandboxes??[])),this.derivedStores=et(this.conversation$),this.tasks$=this.derivedStores.tasks$,this.subagents$=this.derivedStores.subagents$,this.channelTitle$=this.channelTitleSubject.pipe(j()),this.sandboxPhase$=this.sandboxPhaseSubject.pipe(j()),this.launchedSandboxes$=this.launchedSandboxesSubject.pipe(j()),this.statesObserver=t.statesObserver}getTasks(){return this.derivedStores.getTasks()}getSubagents(){return this.derivedStores.getSubagents()}getChannelTitle(){return this.channelTitleSubject.value}getSandboxPhase(){return this.sandboxPhaseSubject.value}getLaunchedSandboxes(){return this.launchedSandboxesSubject.value}getPendingLaunches(){return this.pendingLaunches}applyLaunchedSandboxes(t){const e=ne(t);this.pendingLaunches=this.pendingLaunches.filter(r=>!e.some(s=>s.sandboxName===r)),this.launchedSandboxesSubject.next(e)}dropSandbox(t){const e=this.launchedSandboxesSubject.value,r=e.filter(s=>s.sandboxName!==t);r.length!==e.length&&this.launchedSandboxesSubject.next(r)}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 D(t);return e.subscribe(),e}static async reset(t,e,r,s){const o=new D(t);try{return o.subscribe(),s?.(o),await o.resetChannel(e,r),o}catch(i){throw o.close(),i}}static async restore(t,e,r){const s=new D(t);try{return s.subscribe(),r?.(s),await s.rejoinChannel(e),s}catch(o){throw s.close(),o}}subscribe(){this.statesSubscription=rn([this.isConnecting$,this.conversation$,this.derivedStores.tasks$,this.derivedStores.subagents$,this.channelTitle$,this.sandboxPhase$,this.launchedSandboxes$]).pipe(R(([t,e,r,s,o,i,a])=>({isConnecting:t,conversation:e,tasks:r,subagents:s,channelTitle:o,sandboxPhase:i,launchedSandboxes:a}))).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 d.SANDBOX_LAUNCH:this.sandboxPhaseSubject.next("launching");break;case d.SANDBOX_READY:this.sandboxPhaseSubject.next("ready");break;case d.INIT:case d.ERROR:this.sandboxPhaseSubject.next("idle");break}}buildRunHandlers(t,e,r){return{onSseStart:t?.onSseStart,onSseMessage:s=>{if(t?.onSseMessage?.(s),s.eventType===d.CHANNEL_TITLE_UPDATE&&this.channelTitleSubject.next(s.fact.channelTitleUpdate.title),this.updateSandboxPhase(s.eventType),s.eventType===d.SANDBOX_LAUNCH&&this.noteSandboxLaunch(s.fact.sandboxLaunch.sandboxName),this.currentUserMessageId&&s.traceId){const o=new Map(this.conversation$.value.messages),i=o.get(this.currentUserMessageId);i&&i.type==="user"&&(o.set(this.currentUserMessageId,{...i,traceId:s.traceId}),this.conversation$.next(new b({messages:o}))),this.currentUserMessageId=void 0}this.conversation$.next(this.conversation$.value.onMessage(s))},onSseError:s=>{t?.onSseError?.(s),this.isConnecting$.next(!1),this.currentUserMessageId=void 0,this.currentRun=void 0,r(s)},onSseCompleted:()=>{t?.onSseCompleted?.(),this.isConnecting$.next(!1),this.currentUserMessageId=void 0,this.currentRun=void 0,e()}}}fetchSse(t,e){return new Promise((r,s)=>{this.isConnecting$.next(!0),this.currentRun=this.client.fetchSse(t,this.buildRunHandlers(e,r,s))})}rejoinChannel(t){return new Promise((e,r)=>{if(!this.client.rejoinSse){e();return}this.isConnecting$.next(!0),this.currentRun=this.client.rejoinSse(this.customChannelId,this.buildRunHandlers(t,e,r))})}resetChannel(t,e){return this.fetchSse({action:U.RESET_CHANNEL,customChannelId:this.customChannelId,customMessageId:this.customMessageId,text:t?.text||"",payload:this.resolvePayload(t?.payload)},e)}sendMessage(t,e){const r=t.text.trim(),s=t.customMessageId??Be();return this.currentUserMessageId=s,this.lastSentMessageId=s,this.conversation$.next(this.conversation$.value.pushMessage({type:"user",messageId:s,text:r,blobIds:t.blobIds,filePreviewUrls:t.filePreviewUrls,documentNames:t.documentNames,time:new Date})),this.fetchSse({action:U.NONE,customChannelId:this.customChannelId,customMessageId:s,payload:this.resolvePayload(t?.payload),text:r,blobIds:t?.blobIds},e)}replyToolCallConsents(t,e,r){return this.conversation$.next(this.conversation$.value.clearPendingConsent()),this.fetchSse({action:U.RESPONSE_TOOL_CALL_CONSENT,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(r),text:"",toolCallConsents:t},e)}nudge(t){return this.fetchSse({action:U.NUDGE,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,text:""},t)}stopGeneration(){this.currentRun&&(this.currentRun.unsubscribe(),this.currentRun=void 0,this.isConnecting$.next(!1),this.currentUserMessageId=void 0,this.conversation$.next(this.conversation$.value.cancelInFlightToolCalls()))}close(){this.currentRun?.unsubscribe(),this.currentRun=void 0,this.isConnecting$.complete(),this.conversation$.complete(),this.channelTitleSubject.complete(),this.sandboxPhaseSubject.complete(),this.launchedSandboxesSubject.complete(),this.derivedStores.teardown(),this.statesSubscription?.unsubscribe()}}function Cn(n){const t=/^sandbox:\/\/([^/]+)\/([^?#]+)(?:\?([^#]*))?/.exec(n.trim());if(!t)return null;const e=decodeURIComponent(t[1]),r=t[2],s=new URLSearchParams(t[3]??"");if(r==="open-browser")return{kind:"open-browser",sandboxName:e};if(r==="open-file"){const o=s.get("absolute_path");return o?{kind:"open-file",sandboxName:e,absolutePath:o}:null}return null}exports.AsgardServiceClient=bn;exports.Channel=D;exports.Conversation=b;exports.EventType=d;exports.FetchSseAction=U;exports.HttpError=w;exports.MessageTemplateType=ye;exports.ToolCallConsentResult=ve;exports.conversationToSubagentEvents=We;exports.createDerivedStores=et;exports.deriveSubagents=Je;exports.deriveTasks=ze;exports.isAgentTool=Ye;exports.isHttpError=rt;exports.isSubagentChildTool=Xe;exports.isTaskTool=Ke;exports.reconcileLaunched=ne;exports.reduceSubagents=Ve;exports.reduceTaskEvents=qe;exports.resolveSandboxUri=Cn;exports.subagentsEqual=Ze;exports.tasksEqual=Qe;
5
5
  //# sourceMappingURL=index.cjs.map