@asgard-js/core 0.3.51 → 0.3.53

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.d.ts CHANGED
@@ -2,6 +2,7 @@ export type { Subscription } from 'rxjs';
2
2
  export type * from './types';
3
3
  export { HttpError, isHttpError } from './types/http-error';
4
4
  export { ChannelBusyError, isChannelBusyError } from './types/channel-busy-error';
5
+ export { ChannelAwaitingConsentError, isChannelAwaitingConsentError } from './types/channel-awaiting-consent-error';
5
6
  export * from './constants/enum';
6
7
  export { default as AsgardServiceClient } from './lib/client';
7
8
  export { default as Channel } from './lib/channel';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,mBAAmB,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAElF,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC3F,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,cAAc,EACd,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,mBAAmB,SAAS,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AAEpH,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC3F,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,cAAc,EACd,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- (function(m,w){typeof exports=="object"&&typeof module<"u"?w(exports):typeof define=="function"&&define.amd?define(["exports"],w):(m=typeof globalThis<"u"?globalThis:m||self,w(m["@asgard-js/core"]={}))})(this,(function(m){"use strict";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 ot(n){return n instanceof w}class G extends Error{runKind;constructor(t){super(`Cannot send a message while a "${t}" run is in flight on this channel.`),this.name="ChannelBusyError",this.runKind=t}}function it(n){return n instanceof G}var k=(n=>(n.RESET_CHANNEL="RESET_CHANNEL",n.NONE="NONE",n.RESPONSE_TOOL_CALL_CONSENT="RESPONSE_TOOL_CALL_CONSENT",n.NUDGE="NUDGE",n))(k||{}),l=(n=>(n.INIT="asgard.run.init",n.PROCESS="asgard.process",n.PROCESS_START="asgard.process.start",n.PROCESS_COMPLETE="asgard.process.complete",n.MESSAGE="asgard.message",n.MESSAGE_START="asgard.message.start",n.MESSAGE_DELTA="asgard.message.delta",n.MESSAGE_COMPLETE="asgard.message.complete",n.MESSAGE_USER="asgard.message.user",n.MESSAGE_THINKING_START="asgard.message.thinking.start",n.MESSAGE_THINKING_DELTA="asgard.message.thinking.delta",n.MESSAGE_THINKING_COMPLETE="asgard.message.thinking.complete",n.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))(l||{}),le=(n=>(n.ALLOW_ONCE="ALLOW_ONCE",n.ALLOW_ALWAYS="ALLOW_ALWAYS",n.DENY_ONCE="DENY_ONCE",n))(le||{}),de=(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))(de||{});async function at(n,t){const e=n.getReader();let r;for(;!(r=await e.read()).done;)t(r.value)}function ut(n){let t,e,r,s=!1;return function(i){t===void 0?(t=i,e=0,r=-1):t=lt(t,i);const a=t.length;let u=0;for(;e<a;){s&&(t[e]===10&&(u=++e),s=!1);let c=-1;for(;e<a&&c===-1;++e)switch(t[e]){case 58:r===-1&&(r=e-u);break;case 13:s=!0;case 10:c=e;break}if(c===-1)break;n(t.subarray(u,c),r),u=e,r=-1}u===a?t=void 0:u!==0&&(t=t.subarray(u),e-=u)}}function ct(n,t,e){let r=he();const s=new TextDecoder;return function(i,a){if(i.length===0)e?.(r),r=he();else if(a>0){const u=s.decode(i.subarray(0,a)),c=a+(i[a+1]===32?2:1),h=s.decode(i.subarray(c));switch(u){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 g=parseInt(h,10);isNaN(g)||t(r.retry=g);break}}}}function lt(n,t){const e=new Uint8Array(n.length+t.length);return e.set(n),e.set(t,n.length),e}function he(){return{data:"",event:"",id:"",retry:void 0}}var dt=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 z="text/event-stream",ht=1e3,fe="last-event-id";function pe(n,t){var{signal:e,headers:r,onopen:s,onmessage:o,onclose:i,onerror:a,openWhenHidden:u,fetch:c}=t,h=dt(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise((g,y)=>{const d=Object.assign({},r);d.accept||(d.accept=z);let p;function f(){p.abort(),document.hidden||ue()}u||document.addEventListener("visibilitychange",f);let U=ht,C=0;function M(){document.removeEventListener("visibilitychange",f),window.clearTimeout(C),p.abort()}e?.addEventListener("abort",()=>{M(),g()});const _n=c??window.fetch,Un=s??ft;async function ue(){var ce;p=new AbortController;try{const V=await _n(n,Object.assign(Object.assign({},h),{headers:d,signal:p.signal}));await Un(V),await at(V.body,ut(ct(L=>{L?d[fe]=L:delete d[fe]},L=>{U=L},o))),i?.(),M(),g()}catch(V){if(!p.signal.aborted)try{const L=(ce=a?.(V))!==null&&ce!==void 0?ce:U;window.clearTimeout(C),C=window.setTimeout(ue,L)}catch(L){M(),y(L)}}}ue()})}function ft(n){const t=n.headers.get("content-type");if(!t?.startsWith(z))throw new Error(`Expected content-type to be ${z}, Actual: ${t}`)}var J=function(n,t){return J=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])},J(n,t)};function I(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");J(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function pt(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{c(r.next(h))}catch(g){i(g)}}function u(h){try{c(r.throw(h))}catch(g){i(g)}}function c(h){h.done?o(h.value):s(h.value).then(a,u)}c((r=r.apply(n,t||[])).next())})}function me(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(c){return function(h){return u([c,h])}}function u(c){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(e=0)),e;)try{if(r=1,s&&(o=c[0]&2?s.return:c[0]?s.throw||((o=s.return)&&o.call(s),0):s.next)&&!(o=o.call(s,c[1])).done)return o;switch(s=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++,s=c[1],c=[0];continue;case 7:c=e.ops.pop(),e.trys.pop();continue;default:if(o=e.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){e=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]<o[3])){e.label=c[1];break}if(c[0]===6&&e.label<o[1]){e.label=o[1],o=c;break}if(o&&e.label<o[2]){e.label=o[2],e.ops.push(c);break}o[2]&&e.ops.pop(),e.trys.pop();continue}c=t.call(n,e)}catch(h){c=[6,h],s=0}finally{r=o=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function R(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 N(n){return this instanceof N?(this.v=n,this):new N(n)}function mt(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(d){return function(p){return Promise.resolve(p).then(d,g)}}function a(d,p){r[d]&&(s[d]=function(f){return new Promise(function(U,C){o.push([d,f,U,C])>1||u(d,f)})},p&&(s[d]=p(s[d])))}function u(d,p){try{c(r[d](p))}catch(f){y(o[0][3],f)}}function c(d){d.value instanceof N?Promise.resolve(d.value.v).then(h,g):y(o[0][2],d)}function h(d){u("next",d)}function g(d){u("throw",d)}function y(d,p){d(p),o.shift(),o.length&&u(o[0][0],o[0][1])}}function gt(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 R=="function"?R(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,u){i=n[o](i),s(a,u,i.done,i.value)})}}function s(o,i,a,u){Promise.resolve(u).then(function(c){o({value:c,done:a})},i)}}typeof SuppressedError=="function"&&SuppressedError;function b(n){return typeof n=="function"}function ge(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 Q=ge(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
1
+ (function(m,w){typeof exports=="object"&&typeof module<"u"?w(exports):typeof define=="function"&&define.amd?define(["exports"],w):(m=typeof globalThis<"u"?globalThis:m||self,w(m["@asgard-js/core"]={}))})(this,(function(m){"use strict";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 it(n){return n instanceof w}class G extends Error{runKind;constructor(t){super(`Cannot send a message while a "${t}" run is in flight on this channel.`),this.name="ChannelBusyError",this.runKind=t}}function at(n){return n instanceof G}class q extends Error{processId;constructor(t){super("Cannot send a message while this channel is awaiting a tool-call consent response."),this.name="ChannelAwaitingConsentError",this.processId=t}}function ct(n){return n instanceof q}var k=(n=>(n.RESET_CHANNEL="RESET_CHANNEL",n.NONE="NONE",n.RESPONSE_TOOL_CALL_CONSENT="RESPONSE_TOOL_CALL_CONSENT",n.NUDGE="NUDGE",n))(k||{}),l=(n=>(n.INIT="asgard.run.init",n.PROCESS="asgard.process",n.PROCESS_START="asgard.process.start",n.PROCESS_COMPLETE="asgard.process.complete",n.MESSAGE="asgard.message",n.MESSAGE_START="asgard.message.start",n.MESSAGE_DELTA="asgard.message.delta",n.MESSAGE_COMPLETE="asgard.message.complete",n.MESSAGE_USER="asgard.message.user",n.MESSAGE_THINKING_START="asgard.message.thinking.start",n.MESSAGE_THINKING_DELTA="asgard.message.thinking.delta",n.MESSAGE_THINKING_COMPLETE="asgard.message.thinking.complete",n.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))(l||{}),de=(n=>(n.ALLOW_ONCE="ALLOW_ONCE",n.ALLOW_ALWAYS="ALLOW_ALWAYS",n.DENY_ONCE="DENY_ONCE",n))(de||{}),he=(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))(he||{});async function ut(n,t){const e=n.getReader();let r;for(;!(r=await e.read()).done;)t(r.value)}function lt(n){let t,e,r,s=!1;return function(i){t===void 0?(t=i,e=0,r=-1):t=ht(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 dt(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+`
2
+ `+h:h;break;case"event":r.event=h;break;case"id":n(r.id=h);break;case"retry":const g=parseInt(h,10);isNaN(g)||t(r.retry=g);break}}}}function ht(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 ft=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 J="text/event-stream",pt=1e3,pe="last-event-id";function me(n,t){var{signal:e,headers:r,onopen:s,onmessage:o,onclose:i,onerror:a,openWhenHidden:c,fetch:u}=t,h=ft(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise((g,y)=>{const d=Object.assign({},r);d.accept||(d.accept=J);let p;function f(){p.abort(),document.hidden||ue()}c||document.addEventListener("visibilitychange",f);let U=pt,C=0;function M(){document.removeEventListener("visibilitychange",f),window.clearTimeout(C),p.abort()}e?.addEventListener("abort",()=>{M(),g()});const Mn=u??window.fetch,kn=s??mt;async function ue(){var le;p=new AbortController;try{const z=await Mn(n,Object.assign(Object.assign({},h),{headers:d,signal:p.signal}));await kn(z),await ut(z.body,lt(dt(L=>{L?d[pe]=L:delete d[pe]},L=>{U=L},o))),i?.(),M(),g()}catch(z){if(!p.signal.aborted)try{const L=(le=a?.(z))!==null&&le!==void 0?le:U;window.clearTimeout(C),C=window.setTimeout(ue,L)}catch(L){M(),y(L)}}}ue()})}function mt(n){const t=n.headers.get("content-type");if(!t?.startsWith(J))throw new Error(`Expected content-type to be ${J}, Actual: ${t}`)}var 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 I(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 gt(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(g){i(g)}}function c(h){try{u(r.throw(h))}catch(g){i(g)}}function u(h){h.done?o(h.value):s(h.value).then(a,c)}u((r=r.apply(n,t||[])).next())})}function ge(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 R(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 N(n){return this instanceof N?(this.v=n,this):new N(n)}function bt(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(d){return function(p){return Promise.resolve(p).then(d,g)}}function a(d,p){r[d]&&(s[d]=function(f){return new Promise(function(U,C){o.push([d,f,U,C])>1||c(d,f)})},p&&(s[d]=p(s[d])))}function c(d,p){try{u(r[d](p))}catch(f){y(o[0][3],f)}}function u(d){d.value instanceof N?Promise.resolve(d.value.v).then(h,g):y(o[0][2],d)}function h(d){c("next",d)}function g(d){c("throw",d)}function y(d,p){d(p),o.shift(),o.length&&c(o[0][0],o[0][1])}}function vt(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 R=="function"?R(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)}}typeof SuppressedError=="function"&&SuppressedError;function b(n){return typeof n=="function"}function be(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=be(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
3
3
  `+e.map(function(r,s){return s+1+") "+r.toString()}).join(`
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 j=(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=R(i),u=a.next();!u.done;u=a.next()){var c=u.value;c.remove(this)}}catch(f){t={error:f}}finally{try{u&&!u.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else i.remove(this);var h=this.initialTeardown;if(b(h))try{h()}catch(f){o=f instanceof Q?f.errors:[f]}var g=this._finalizers;if(g){this._finalizers=null;try{for(var y=R(g),d=y.next();!d.done;d=y.next()){var p=d.value;try{ye(p)}catch(f){o=o??[],f instanceof Q?o=F(F([],H(o)),H(f.errors)):o.push(f)}}}catch(f){r={error:f}}finally{try{d&&!d.done&&(s=y.return)&&s.call(y)}finally{if(r)throw r.error}}}if(o)throw new Q(o)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)ye(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})(),be=j.EMPTY;function ve(n){return n instanceof j||n&&"closed"in n&&b(n.remove)&&b(n.add)&&b(n.unsubscribe)}function ye(n){b(n)?n():n.unsubscribe()}var bt={Promise:void 0},vt={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 Se(n){vt.setTimeout(function(){throw n})}function Z(){}function K(n){n()}var ee=(function(n){I(t,n);function t(e){var r=n.call(this)||this;return r.isStopped=!1,e?(r.destination=e,ve(e)&&e.add(r)):r.destination=wt,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})(j),yt=(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){Y(r)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(r){Y(r)}else Y(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){Y(e)}},n})(),te=(function(n){I(t,n);function t(e,r,s){var o=n.call(this)||this,i;return b(e)||!e?i={next:e??void 0,error:r??void 0,complete:s??void 0}:i=e,o.destination=new yt(i),o}return t})(ee);function Y(n){Se(n)}function St(n){throw n}var wt={closed:!0,next:Z,error:St,complete:Z},ne=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function W(n){return n}function Et(n){return n.length===0?W:n.length===1?n[0]:function(e){return n.reduce(function(r,s){return s(r)},e)}}var E=(function(){function n(t){t&&(this._subscribe=t)}return n.prototype.lift=function(t){var e=new n;return e.source=this,e.operator=t,e},n.prototype.subscribe=function(t,e,r){var s=this,o=Tt(t)?t:new te(t,e,r);return K(function(){var i=s,a=i.operator,u=i.source;o.add(a?a.call(o,u):u?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=we(e),new e(function(s,o){var i=new te({next:function(a){try{t(a)}catch(u){o(u),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[ne]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return Et(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=we(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 we(n){var t;return(t=n??bt.Promise)!==null&&t!==void 0?t:Promise}function It(n){return n&&b(n.next)&&b(n.error)&&b(n.complete)}function Tt(n){return n&&n instanceof ee||It(n)&&ve(n)}function Ct(n){return b(n?.lift)}function x(n){return function(t){if(Ct(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 xt(n,t,e,r,s)}var xt=(function(n){I(t,n);function t(e,r,s,o,i,a){var u=n.call(this,e)||this;return u.onFinalize=i,u.shouldUnsubscribe=a,u._next=r?function(c){try{r(c)}catch(h){e.error(h)}}:n.prototype._next,u._error=o?function(c){try{o(c)}catch(h){e.error(h)}finally{this.unsubscribe()}}:n.prototype._error,u._complete=s?function(){try{s()}catch(c){e.error(c)}finally{this.unsubscribe()}}:n.prototype._complete,u}return t.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;n.prototype.unsubscribe.call(this),!r&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t})(ee),Ot=ge(function(n){return function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),re=(function(n){I(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 Ee(this,this);return r.operator=e,r},t.prototype._throwIfClosed=function(){if(this.closed)throw new Ot},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=R(r.currentObservers),a=i.next();!a.done;a=i.next()){var u=a.value;u.next(e)}}catch(c){s={error:c}}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?be:(this.currentObservers=null,a.push(e),new j(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 E;return e.source=this,e},t.create=function(e,r){return new Ee(e,r)},t})(E),Ee=(function(n){I(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:be},t})(re),A=(function(n){I(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})(re),At={now:function(){return Date.now()}},Pt=(function(n){I(t,n);function t(e,r){return n.call(this)||this}return t.prototype.schedule=function(e,r){return this},t})(j),Ie={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},Lt=(function(n){I(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),Ie.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&&Ie.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})(Pt),Te=(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=At.now,n})(),_t=(function(n){I(t,n);function t(e,r){r===void 0&&(r=Te.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})(Te),Ce=new _t(Lt),Ut=Ce,Mt=new E(function(n){return n.complete()});function xe(n){return n&&b(n.schedule)}function Oe(n){return n[n.length-1]}function kt(n){return b(Oe(n))?n.pop():void 0}function Ae(n){return xe(Oe(n))?n.pop():void 0}var Pe=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function Le(n){return b(n?.then)}function _e(n){return b(n[ne])}function Ue(n){return Symbol.asyncIterator&&b(n?.[Symbol.asyncIterator])}function Me(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 Rt(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var ke=Rt();function Re(n){return b(n?.[ke])}function Ne(n){return mt(this,arguments,function(){var e,r,s,o;return me(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,N(e.read())];case 3:return r=i.sent(),s=r.value,o=r.done,o?[4,N(void 0)]:[3,5];case 4:return[2,i.sent()];case 5:return[4,N(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 b(n?.getReader)}function _(n){if(n instanceof E)return n;if(n!=null){if(_e(n))return Nt(n);if(Pe(n))return jt(n);if(Le(n))return $t(n);if(Ue(n))return $e(n);if(Re(n))return Dt(n);if(je(n))return Ht(n)}throw Me(n)}function Nt(n){return new E(function(t){var e=n[ne]();if(b(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function jt(n){return new E(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function $t(n){return new E(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,Se)})}function Dt(n){return new E(function(t){var e,r;try{for(var s=R(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 $e(n){return new E(function(t){Ft(n,t).catch(function(e){return t.error(e)})})}function Ht(n){return $e(Ne(n))}function Ft(n,t){var e,r,s,o;return pt(this,void 0,void 0,function(){var i,a;return me(this,function(u){switch(u.label){case 0:u.trys.push([0,5,6,11]),e=gt(n),u.label=1;case 1:return[4,e.next()];case 2:if(r=u.sent(),!!r.done)return[3,4];if(i=r.value,t.next(i),t.closed)return[2];u.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=u.sent(),s={error:a},[3,11];case 6:return u.trys.push([6,,9,10]),r&&!r.done&&(o=e.return)?[4,o.call(e)]:[3,8];case 7:u.sent(),u.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 P(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),x(function(e,r){e.subscribe(O(r,function(s){return P(r,n,function(){return r.next(s)},t)},function(){return P(r,n,function(){return r.complete()},t)},function(s){return P(r,n,function(){return r.error(s)},t)}))})}function He(n,t){return t===void 0&&(t=0),x(function(e,r){r.add(n.schedule(function(){return e.subscribe(r)},t))})}function Bt(n,t){return _(n).pipe(He(t),De(t))}function Gt(n,t){return _(n).pipe(He(t),De(t))}function qt(n,t){return new E(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 E(function(e){var r;return P(e,t,function(){r=n[ke](),P(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 b(r?.return)&&r.return()}})}function Fe(n,t){if(!n)throw new Error("Iterable cannot be null");return new E(function(e){P(e,t,function(){var r=n[Symbol.asyncIterator]();P(e,t,function(){r.next().then(function(s){s.done?e.complete():e.next(s.value)})},0,!0)})})}function Yt(n,t){return Fe(Ne(n),t)}function Wt(n,t){if(n!=null){if(_e(n))return Bt(n,t);if(Pe(n))return qt(n,t);if(Le(n))return Gt(n,t);if(Ue(n))return Fe(n,t);if(Re(n))return Kt(n,t);if(je(n))return Yt(n,t)}throw Me(n)}function se(n,t){return t?Wt(n,t):_(n)}function Xt(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Ae(n);return se(n,e)}function Vt(n){return n instanceof Date&&!isNaN(n)}function $(n,t){return x(function(e,r){var s=0;e.subscribe(O(r,function(o){r.next(n.call(t,o,s++))}))})}var zt=Array.isArray;function Jt(n,t){return zt(t)?n.apply(void 0,F([],H(t))):n(t)}function Qt(n){return $(function(t){return Jt(n,t)})}var Zt=Array.isArray,en=Object.getPrototypeOf,tn=Object.prototype,nn=Object.keys;function rn(n){if(n.length===1){var t=n[0];if(Zt(t))return{args:t,keys:null};if(sn(t)){var e=nn(t);return{args:e.map(function(r){return t[r]}),keys:e}}}return{args:n,keys:null}}function sn(n){return n&&typeof n=="object"&&en(n)===tn}function on(n,t){return n.reduce(function(e,r,s){return e[r]=t[s],e},{})}function an(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Ae(n),r=kt(n),s=rn(n),o=s.args,i=s.keys;if(o.length===0)return se([],e);var a=new E(un(o,e,i?function(u){return on(i,u)}:W));return r?a.pipe(Qt(r)):a}function un(n,t,e){return e===void 0&&(e=W),function(r){Be(t,function(){for(var s=n.length,o=new Array(s),i=s,a=s,u=function(h){Be(t,function(){var g=se(n[h],t),y=!1;g.subscribe(O(r,function(d){o[h]=d,y||(y=!0,a--),a||r.next(e(o.slice()))},function(){--i||r.complete()}))},r)},c=0;c<s;c++)u(c)},r)}}function Be(n,t,e){n?P(e,n,t):t()}function cn(n,t,e,r,s,o,i,a){var u=[],c=0,h=0,g=!1,y=function(){g&&!u.length&&!c&&t.complete()},d=function(f){return c<r?p(f):u.push(f)},p=function(f){c++;var U=!1;_(e(f,h++)).subscribe(O(t,function(C){t.next(C)},function(){U=!0},void 0,function(){if(U)try{c--;for(var C=function(){var M=u.shift();i||p(M)};u.length&&c<r;)C();y()}catch(M){t.error(M)}}))};return n.subscribe(O(t,d,function(){g=!0,y()})),function(){}}function X(n,t,e){return e===void 0&&(e=1/0),b(t)?X(function(r,s){return $(function(o,i){return t(r,o,s,i)})(_(n(r,s)))},e):(typeof t=="number"&&(e=t),x(function(r,s){return cn(r,s,n,e)}))}function ln(n,t,e){n===void 0&&(n=0),e===void 0&&(e=Ut);var r=-1;return t!=null&&(xe(t)?e=t:r=t),new E(function(s){var o=Vt(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 dn(n,t){return b(t)?X(n,t,1):X(n,1)}function hn(n){return n<=0?function(){return Mt}:x(function(t,e){var r=0;t.subscribe(O(e,function(s){++r<=n&&(e.next(s),n<=r&&e.complete())}))})}function fn(n){return $(function(){return n})}function pn(n,t){return X(function(e,r){return _(n(e,r)).pipe(hn(1),fn(e))})}function mn(n,t){t===void 0&&(t=Ce);var e=ln(n,t);return pn(function(){return e})}function D(n,t){return t===void 0&&(t=W),n=n??gn,x(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 gn(n,t){return n===t}function bn(n){return x(function(t,e){try{t.subscribe(e)}finally{e.add(n)}})}function vn(n){return x(function(t,e){_(n).subscribe(O(e,function(){return e.complete()},Z)),!e.closed&&t.subscribe(e)})}function Ge(n){const{endpoint:t,apiKey:e,payload:r,debugMode:s,customHeaders:o}=n,i=n.method??"POST";return new E(a=>{const u=new AbortController;let c,h=!1,g=!1;const y={"Content-Type":"application/json",...o};e&&(y["X-API-KEY"]=e);const d=new URL(t);return s&&d.searchParams.set("is_debug","true"),pe(d.toString(),{method:i,headers:y,body:i==="POST"&&r?JSON.stringify(r):void 0,signal:u.signal,openWhenHidden:!0,onopen:async p=>{if(p.ok)c=p.headers.get("X-Trace-Id")??void 0;else{let f;try{f=await p.json()}catch{try{f=await p.text()}catch{f=null}}a.error(new w(p.status,p.statusText,f)),u.abort()}},onmessage:p=>{p.id&&(h=!0);const f=JSON.parse(p.data);c?f.traceId=c:f.requestId&&(f.traceId=f.requestId,c||(c=f.requestId)),a.next(f)},onclose:()=>{a.complete()},onerror:p=>{if(g)throw p;if(!h)throw a.error(p),u.abort(),p}}),()=>{g=!0,u.abort()}})}class yn{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 Sn{apiKey;endpoint;botProviderEndpoint;debugMode;destroy$=new re;closed=!1;detached=!1;detachTimer;inFlight=0;sseEmitter=new yn;transformSsePayload;customHeaders;constructor(t){if(!t.endpoint&&!t.botProviderEndpoint)throw new Error("Either endpoint or botProviderEndpoint must be provided");if(this.apiKey=t.apiKey,this.debugMode=t.debugMode,this.transformSsePayload=t.transformSsePayload,this.botProviderEndpoint=t.botProviderEndpoint,this.customHeaders={...t.customHeaders,...t.userIdentityHint?{"X-ASGARD-USER-IDENTITY-HINT":t.userIdentityHint}:{}},!t.endpoint&&t.botProviderEndpoint){const e=t.botProviderEndpoint.replace(/\/+$/,"");this.endpoint=`${e}/message/sse`}else t.endpoint&&(this.endpoint=t.endpoint,this.debugMode&&console.warn('[AsgardServiceClient] The "endpoint" option is deprecated and will be removed in the next major version. Please use "botProviderEndpoint" instead. The SSE endpoint will be automatically derived as "${botProviderEndpoint}/message/sse".'))}on(t,e){this.sseEmitter.remove(t),this.sseEmitter.on(t,e)}handleEvent(t){switch(t.eventType){case l.INIT:this.sseEmitter.emit(l.INIT,t);break;case l.PROCESS_START:case l.PROCESS_COMPLETE:this.sseEmitter.emit(l.PROCESS,t);break;case l.MESSAGE_START:case l.MESSAGE_DELTA:case l.MESSAGE_COMPLETE:this.sseEmitter.emit(l.MESSAGE,t);break;case l.TOOL_CALL_START:case l.TOOL_CALL_COMPLETE:this.sseEmitter.emit(l.TOOL_CALL,t);break;case l.TOOL_CALL_CONSENT:this.sseEmitter.emit(l.TOOL_CALL_CONSENT,t);break;case l.DONE:this.sseEmitter.emit(l.DONE,t);break;case l.ERROR:this.sseEmitter.emit(l.ERROR,t);break}}fetchSse(t,e){return e?.onSseStart?.(),this.inFlight+=1,this.runSse(Ge({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(Ge({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(u=>({sandboxName:u.sandboxName,sandboxBlueprintName:u.sandboxBlueprintName,workingDirectory:u.workingDirectory,editorServerEnabled:u.editorServerEnabled,browserEnabled:u.browserEnabled}))}}deriveSuspendEndpoint(){const t=this.getBaseEndpoint();return t?`${t}/message/suspend`:null}async suspendChannel(t,e){const r=this.deriveSuspendEndpoint();if(!r)throw new Error("Unable to derive channel suspend endpoint. Please provide botProviderEndpoint in config.");const s=new URL(r);s.searchParams.set("custom_channel_id",t),e?.requestId&&s.searchParams.set("request_id",e.requestId),e?.force&&s.searchParams.set("force","true");const o=await fetch(s.toString(),{method:"POST",headers:this.apiHeaders()});if(!(o.ok||o.status===404))throw new w(o.status,o.statusText,await o.text().catch(()=>{}))}runSse(t,e){return t.pipe(dn(r=>Xt(r).pipe(mn(e?.delayTime??50))),vn(this.destroy$),bn(()=>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 u=await a.blob(),c=t.split("/").pop()||"download";return this.debugMode&&console.log("[AsgardServiceClient] Channel Home download response:",{filename:c,size:u.size}),{blob:u,filename:c}}catch(a){throw console.error("[AsgardServiceClient] Channel Home download error:",a),a}}async generateSandboxBrowserOpenUrl(t){const e=this.getBaseEndpoint();if(!e)throw new Error("Unable to derive sandbox browser open-url endpoint. Please provide botProviderEndpoint in config.");const 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`}apiHeaders(){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.apiHeaders()});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.apiHeaders()});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.apiHeaders(),body:i});if(!a.ok)throw new w(a.status,a.statusText,await a.text().catch(()=>{}));const u=await a.json();return{bytesWritten:(u.data??u).bytesWritten??0}}async sandboxFsRequest(t,e,r,s){const o=new URL(`${this.deriveSandboxFsEndpoint(t)}/${e}`);Object.entries(s).forEach(([a,u])=>o.searchParams.set(a,u));const i=await fetch(o.toString(),{method:r,headers:this.apiHeaders()});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.apiHeaders()});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 E(s=>{const o=new AbortController;return pe(r.toString(),{headers:this.apiHeaders(),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 S=[];for(let n=0;n<256;++n)S.push((n+256).toString(16).slice(1));function wn(n,t=0){return(S[n[t+0]]+S[n[t+1]]+S[n[t+2]]+S[n[t+3]]+"-"+S[n[t+4]]+S[n[t+5]]+"-"+S[n[t+6]]+S[n[t+7]]+"-"+S[n[t+8]]+S[n[t+9]]+"-"+S[n[t+10]]+S[n[t+11]]+S[n[t+12]]+S[n[t+13]]+S[n[t+14]]+S[n[t+15]]).toLowerCase()}let oe;const En=new Uint8Array(16);function In(){if(!oe){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");oe=crypto.getRandomValues.bind(crypto)}return oe(En)}const qe={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function Tn(n,t,e){n=n||{};const r=n.random??n.rng?.()??In();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,wn(r)}function Ke(n,t,e){return qe.randomUUID&&!n?qe.randomUUID():Tn(n)}class v{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 v({messages:e,pendingConsent:this.pendingConsent})}clearPendingConsent(){return this.pendingConsent?new v({messages:this.messages,pendingConsent:null}):this}settleInFlightMessages(){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),s.type==="thinking"&&s.isThinking&&(e.set(r,{...s,isThinking:!1}),t=!0);return t?new v({messages:e,pendingConsent:this.pendingConsent}):this}cancelInFlightToolCalls(){return this.settleInFlightMessages()}onMessage(t){switch(t.eventType){case l.MESSAGE_START:return this.onMessageStart(t);case l.MESSAGE_DELTA:return this.onMessageDelta(t);case l.MESSAGE_COMPLETE:return this.onMessageComplete(t);case l.MESSAGE_USER:return this.onMessageUser(t);case l.MESSAGE_THINKING_START:return this.onThinkingStart(t);case l.MESSAGE_THINKING_DELTA:return this.onThinkingDelta(t);case l.MESSAGE_THINKING_COMPLETE:return this.onThinkingComplete(t);case l.TOOL_CALL_START:return this.onToolCallStart(t);case l.TOOL_CALL_COMPLETE:return this.onToolCallComplete(t);case l.TOOL_CALL_CONSENT:return this.onToolCallConsent(t);case l.SUBAGENT_START:return this.onSubagentStart(t);case l.SUBAGENT_COMPLETE:return this.onSubagentComplete(t);case l.ERROR:return this.onMessageError(t);default:return this}}isTerminalBot(t){return t?.type==="bot"&&!t.isTyping}isTerminalThinking(t){return t?.type==="thinking"&&!t.isThinking}isTerminalToolCall(t){return t?.type==="tool-call"&&t.isComplete===!0}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:l.MESSAGE_START,isTyping:!0,typingText:"",messageId:e.messageId,message:e,time:new Date,traceId:t.traceId,raw:""}),new v({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:l.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 v({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:l.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 v({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 v({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 v({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 v({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 v({messages:s,pendingConsent:this.pendingConsent})}onMessageError(t){const e=Ke(),r=t.fact.runError.error,s=new Map(this.messages);return s.set(e,{type:"error",eventType:l.ERROR,messageId:e,error:r,time:new Date,traceId:t.traceId}),new v({messages:s,pendingConsent:this.pendingConsent})}onToolCallStart(t){const e=t.fact.toolCallStart,r=new Map(this.messages),s=`${e.processId}-${e.callSeq}`;if(this.isTerminalToolCall(this.messages?.get(s)))return this;const o={type:"tool-call",eventType:l.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 v({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:l.TOOL_CALL_COMPLETE,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,traceId:t.traceId??o.traceId};r.set(s,i)}else{const i={type:"tool-call",eventType:l.TOOL_CALL_COMPLETE,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,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,time:new Date,traceId:t.traceId};r.set(s,i)}return new v({messages:r,pendingConsent:this.pendingConsent})}onToolCallConsent(t){const e=t.fact.toolCallConsent;return new v({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.delete(s),r.set(s,o),new v({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.delete(s),r.set(s,o),new v({messages:r,pendingConsent:this.pendingConsent})}}const Cn=new Set(["TaskCreate","TaskUpdate"]);function Ye(n){return n.toolsetName===""&&Cn.has(n.toolName)}function We(n){return typeof n=="object"&&n!==null?n:void 0}function T(n){return typeof n=="string"?n:void 0}function Xe(n){const t=[],e=new Map;for(const r of n){const s=r.parameter??{},o=r.sidecar??{};if(r.toolName==="TaskCreate"){const i=We(o.task),a=T(i?.id);if(!a)continue;e.has(a)||t.push(a),e.set(a,{id:a,subject:T(s.subject)||T(i?.subject)||"",activeForm:T(s.activeForm),description:T(s.description),status:e.get(a)?.status??"pending"})}else if(r.toolName==="TaskUpdate"){const i=We(o.statusChange),a=T(s.taskId)||T(o.taskId),u=T(i?.to)||T(s.status);if(!a||!u)continue;const c=e.get(a);c&&e.set(a,{...c,status:u})}}return t.map(r=>e.get(r))}function Ve(n){return n.toolsetName===""&&n.toolName==="Agent"}function ze(n){return!!n}function Je(n){n.status!=="running"&&(n.status="running",n.summary=void 0)}function Qe(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,Je(i);break}case"toolStart":{Je(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 xn(n){return typeof n=="string"?n:void 0}function Ze(n){const t=[];for(const e of n){if(e.type==="tool-call"&&Ve(e)){t.push({kind:"agentStart",toolUseId:e.toolUseId??e.messageId,description:xn(e.parameter.description)});continue}if(e.type==="tool-call"&&ze(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 et(n){const t=Array.from(n.messages?.values()??[]).filter(e=>e.type==="tool-call"&&e.isComplete&&Ye(e));return Xe(t)}function tt(n){return Qe(Ze(Array.from(n.messages?.values()??[])))}function nt(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 On(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 rt(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&&On(e.tools,s.tools)})}function st(n){const t=new A([]),e=new A([]),r=new j;return r.add(n.pipe($(et),D(nt)).subscribe(t)),r.add(n.pipe($(tt),D(rt)).subscribe(e)),{tasks$:t.asObservable(),subagents$:e.asObservable(),getTasks:()=>t.value,getSubagents:()=>e.value,teardown:()=>r.unsubscribe()}}function ie(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))}const ae={kind:null,stopPhase:"idle"},An=1e4;function Pn(n,t){return n.kind===t.kind&&n.stopPhase===t.stopPhase&&n.requestId===t.requestId}class B{client;customChannelId;customMessageId;joinRunState;isConnecting$;runStatusSubject;conversation$;channelTitleSubject;sandboxPhaseSubject;launchedSandboxesSubject;pendingLaunches=[];derivedStores;statesObserver;statesSubscription;tasks$;subagents$;channelTitle$;sandboxPhase$;launchedSandboxes$;runStatus$;currentUserMessageId;lastSentMessageId;currentRun;forceStopTimer;constructor(t){if(!t.client)throw new Error("client must be required");if(!t.customChannelId)throw new Error("customChannelId must be required");this.client=t.client,this.customChannelId=t.customChannelId,this.customMessageId=t.customMessageId,this.joinRunState=t.runState??"IDLE",this.isConnecting$=new A(!1),this.runStatusSubject=new A(ae),this.conversation$=new A(t.conversation),this.channelTitleSubject=new A(t.channelTitle??null),this.sandboxPhaseSubject=new A("idle"),this.launchedSandboxesSubject=new A(ie(t.launchedSandboxes??[])),this.derivedStores=st(this.conversation$),this.tasks$=this.derivedStores.tasks$,this.subagents$=this.derivedStores.subagents$,this.channelTitle$=this.channelTitleSubject.pipe(D()),this.sandboxPhase$=this.sandboxPhaseSubject.pipe(D()),this.launchedSandboxes$=this.launchedSandboxesSubject.pipe(D()),this.runStatus$=this.runStatusSubject.pipe(D(Pn)),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}getRunStatus(){return this.runStatusSubject.value}getPendingLaunches(){return this.pendingLaunches}applyLaunchedSandboxes(t){const e=ie(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 B(t);return e.subscribe(),e}static async reset(t,e,r,s){const o=new B(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 B(t);try{return s.subscribe(),r?.(s),await s.rejoinChannel(e),s}catch(o){throw s.close(),o}}subscribe(){this.statesSubscription=an([this.isConnecting$,this.conversation$,this.derivedStores.tasks$,this.derivedStores.subagents$,this.channelTitle$,this.sandboxPhase$,this.launchedSandboxes$,this.runStatus$]).pipe($(([t,e,r,s,o,i,a,u])=>({isConnecting:t,conversation:e,tasks:r,subagents:s,channelTitle:o,sandboxPhase:i,launchedSandboxes:a,runStatus:u}))).subscribe(this.statesObserver)}resolvePayload(t){if(typeof t=="function")try{return t()}catch(e){throw new Error(`Failed to resolve payload function: ${e instanceof Error?e.message:String(e)}`)}return t}updateSandboxPhase(t){switch(t){case l.SANDBOX_LAUNCH:this.sandboxPhaseSubject.next("launching");break;case l.SANDBOX_READY:this.sandboxPhaseSubject.next("ready");break;case l.INIT:case l.ERROR:this.sandboxPhaseSubject.next("idle");break}}buildRunHandlers(t,e,r){return{onSseStart:t?.onSseStart,onSseMessage:s=>{if(t?.onSseMessage?.(s),this.captureRequestId(s.requestId),s.eventType===l.CHANNEL_TITLE_UPDATE&&this.channelTitleSubject.next(s.fact.channelTitleUpdate.title),this.updateSandboxPhase(s.eventType),s.eventType===l.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 v({messages:o}))),this.currentUserMessageId=void 0}this.conversation$.next(this.conversation$.value.onMessage(s))},onSseError:s=>{t?.onSseError?.(s),this.settleRun(),r(s)},onSseCompleted:()=>{t?.onSseCompleted?.(),this.settleRun(),e()}}}settleRun(){const t=this.runStatusSubject.value.stopPhase!=="idle";this.clearForceStopTimer(),this.isConnecting$.next(!1),this.runStatusSubject.next(ae),this.currentUserMessageId=void 0,this.currentRun=void 0,t&&this.conversation$.next(this.conversation$.value.settleInFlightMessages())}captureRequestId(t){const e=this.runStatusSubject.value;!t||e.requestId||!e.kind||this.runStatusSubject.next({...e,requestId:t})}clearForceStopTimer(){this.forceStopTimer&&(clearTimeout(this.forceStopTimer),this.forceStopTimer=void 0)}fetchSse(t,e,r){return new Promise((s,o)=>{this.isConnecting$.next(!0),this.runStatusSubject.next({kind:t,stopPhase:"idle"}),this.currentRun=this.client.fetchSse(e,this.buildRunHandlers(r,s,o))})}rejoinChannel(t){return new Promise((e,r)=>{if(!this.client.rejoinSse){e();return}this.isConnecting$.next(!0),this.runStatusSubject.next({kind:this.joinRunState==="RUNNING"?"restore":"replay",stopPhase:"idle"}),this.currentRun=this.client.rejoinSse(this.customChannelId,this.buildRunHandlers(t,e,r))})}resetChannel(t,e){return this.fetchSse("reset",{action:k.RESET_CHANNEL,customChannelId:this.customChannelId,customMessageId:this.customMessageId,text:t?.text||"",payload:this.resolvePayload(t?.payload)},e)}sendMessage(t,e){const r=this.runStatusSubject.value.kind;if(r)return Promise.reject(new G(r));const s=t.text.trim(),o=t.customMessageId??Ke();return this.currentUserMessageId=o,this.lastSentMessageId=o,this.conversation$.next(this.conversation$.value.pushMessage({type:"user",messageId:o,text:s,blobIds:t.blobIds,filePreviewUrls:t.filePreviewUrls,documentNames:t.documentNames,time:new Date})),this.fetchSse("user",{action:k.NONE,customChannelId:this.customChannelId,customMessageId:o,payload:this.resolvePayload(t?.payload),text:s,blobIds:t?.blobIds},e)}replyToolCallConsents(t,e,r){return this.conversation$.next(this.conversation$.value.clearPendingConsent()),this.fetchSse("user",{action:k.RESPONSE_TOOL_CALL_CONSENT,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(r),text:"",toolCallConsents:t},e)}nudge(t,e){const r=this.runStatusSubject.value.kind;return r?Promise.reject(new G(r)):this.fetchSse("nudge",{action:k.NUDGE,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(e),text:""},t)}async stopGeneration(t){const e=this.runStatusSubject.value;if(!(!this.currentRun||e.kind!=="user")&&!(e.stopPhase!=="idle"&&!t?.force)){if(!this.client.suspendChannel){this.abortConnection();return}this.clearForceStopTimer(),this.runStatusSubject.next({...e,stopPhase:"stopping"});try{await this.client.suspendChannel(this.customChannelId,{requestId:e.requestId,force:t?.force})}catch(r){throw this.clearForceStopTimer(),this.runStatusSubject.next({...this.runStatusSubject.value,stopPhase:"idle"}),r}this.armForceStopTimer()}}armForceStopTimer(){this.clearForceStopTimer(),this.forceStopTimer=setTimeout(()=>{this.forceStopTimer=void 0;const t=this.runStatusSubject.value;t.stopPhase==="stopping"&&this.runStatusSubject.next({...t,stopPhase:"force-stoppable"})},An)}abortConnection(){this.currentRun&&(this.currentRun.unsubscribe(),this.clearForceStopTimer(),this.currentRun=void 0,this.isConnecting$.next(!1),this.runStatusSubject.next(ae),this.currentUserMessageId=void 0,this.conversation$.next(this.conversation$.value.settleInFlightMessages()))}close(){this.currentRun?.unsubscribe(),this.currentRun=void 0,this.clearForceStopTimer(),this.isConnecting$.complete(),this.runStatusSubject.complete(),this.conversation$.complete(),this.channelTitleSubject.complete(),this.sandboxPhaseSubject.complete(),this.launchedSandboxesSubject.complete(),this.derivedStores.teardown(),this.statesSubscription?.unsubscribe()}}function Ln(n){const t=/^sandbox:\/\/([^/]+)\/([^?#]+)(?:\?([^#]*))?/.exec(n.trim());if(!t)return null;const e=decodeURIComponent(t[1]),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}m.AsgardServiceClient=Sn,m.Channel=B,m.ChannelBusyError=G,m.Conversation=v,m.EventType=l,m.FetchSseAction=k,m.HttpError=w,m.MessageTemplateType=de,m.ToolCallConsentResult=le,m.conversationToSubagentEvents=Ze,m.createDerivedStores=st,m.deriveSubagents=tt,m.deriveTasks=et,m.isAgentTool=Ve,m.isChannelBusyError=it,m.isHttpError=ot,m.isSubagentChildTool=ze,m.isTaskTool=Ye,m.reconcileLaunched=ie,m.reduceSubagents=Qe,m.reduceTaskEvents=Xe,m.resolveSandboxUri=Ln,m.subagentsEqual=rt,m.tasksEqual=nt,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})}));
4
+ `):"",this.name="UnsubscriptionError",this.errors=e}});function K(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var j=(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=R(i),c=a.next();!c.done;c=a.next()){var u=c.value;u.remove(this)}}catch(f){t={error:f}}finally{try{c&&!c.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else i.remove(this);var h=this.initialTeardown;if(b(h))try{h()}catch(f){o=f instanceof Z?f.errors:[f]}var g=this._finalizers;if(g){this._finalizers=null;try{for(var y=R(g),d=y.next();!d.done;d=y.next()){var p=d.value;try{Se(p)}catch(f){o=o??[],f instanceof Z?o=F(F([],H(o)),H(f.errors)):o.push(f)}}}catch(f){r={error:f}}finally{try{d&&!d.done&&(s=y.return)&&s.call(y)}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)Se(t);else{if(t instanceof n){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(t)}},n.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},n.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},n.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&K(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&K(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=(function(){var t=new n;return t.closed=!0,t})(),n})(),ve=j.EMPTY;function ye(n){return n instanceof j||n&&"closed"in n&&b(n.remove)&&b(n.add)&&b(n.unsubscribe)}function Se(n){b(n)?n():n.unsubscribe()}var yt={Promise:void 0},St={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 we(n){St.setTimeout(function(){throw n})}function ee(){}function Y(n){n()}var te=(function(n){I(t,n);function t(e){var r=n.call(this)||this;return r.isStopped=!1,e?(r.destination=e,ye(e)&&e.add(r)):r.destination=It,r}return t.create=function(e,r,s){return new ne(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})(j),wt=(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){W(r)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(r){W(r)}else W(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){W(e)}},n})(),ne=(function(n){I(t,n);function t(e,r,s){var o=n.call(this)||this,i;return b(e)||!e?i={next:e??void 0,error:r??void 0,complete:s??void 0}:i=e,o.destination=new wt(i),o}return t})(te);function W(n){we(n)}function Et(n){throw n}var It={closed:!0,next:ee,error:Et,complete:ee},re=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function X(n){return n}function Tt(n){return n.length===0?X:n.length===1?n[0]:function(e){return n.reduce(function(r,s){return s(r)},e)}}var E=(function(){function n(t){t&&(this._subscribe=t)}return n.prototype.lift=function(t){var e=new n;return e.source=this,e.operator=t,e},n.prototype.subscribe=function(t,e,r){var s=this,o=xt(t)?t:new ne(t,e,r);return Y(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=Ee(e),new e(function(s,o){var i=new ne({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[re]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return Tt(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=Ee(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 Ee(n){var t;return(t=n??yt.Promise)!==null&&t!==void 0?t:Promise}function Ct(n){return n&&b(n.next)&&b(n.error)&&b(n.complete)}function xt(n){return n&&n instanceof te||Ct(n)&&ye(n)}function Ot(n){return b(n?.lift)}function x(n){return function(t){if(Ot(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 At(n,t,e,r,s)}var At=(function(n){I(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})(te),Pt=be(function(n){return function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"}}),se=(function(n){I(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 Ie(this,this);return r.operator=e,r},t.prototype._throwIfClosed=function(){if(this.closed)throw new Pt},t.prototype.next=function(e){var r=this;Y(function(){var s,o;if(r._throwIfClosed(),!r.isStopped){r.currentObservers||(r.currentObservers=Array.from(r.observers));try{for(var i=R(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;Y(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;Y(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?ve:(this.currentObservers=null,a.push(e),new j(function(){r.currentObservers=null,K(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 E;return e.source=this,e},t.create=function(e,r){return new Ie(e,r)},t})(E),Ie=(function(n){I(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:ve},t})(se),A=(function(n){I(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})(se),Lt={now:function(){return Date.now()}},_t=(function(n){I(t,n);function t(e,r){return n.call(this)||this}return t.prototype.schedule=function(e,r){return this},t})(j),Te={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},Ut=(function(n){I(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),Te.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&&Te.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,K(o,this),r!=null&&(this.id=this.recycleAsyncId(s,r,null)),this.delay=null,n.prototype.unsubscribe.call(this)}},t})(_t),Ce=(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=Lt.now,n})(),Mt=(function(n){I(t,n);function t(e,r){r===void 0&&(r=Ce.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})(Ce),xe=new Mt(Ut),kt=xe,Rt=new E(function(n){return n.complete()});function Oe(n){return n&&b(n.schedule)}function Ae(n){return n[n.length-1]}function Nt(n){return b(Ae(n))?n.pop():void 0}function Pe(n){return Oe(Ae(n))?n.pop():void 0}var Le=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function _e(n){return b(n?.then)}function Ue(n){return b(n[re])}function Me(n){return Symbol.asyncIterator&&b(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 jt(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Re=jt();function Ne(n){return b(n?.[Re])}function je(n){return bt(this,arguments,function(){var e,r,s,o;return ge(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,N(e.read())];case 3:return r=i.sent(),s=r.value,o=r.done,o?[4,N(void 0)]:[3,5];case 4:return[2,i.sent()];case 5:return[4,N(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 b(n?.getReader)}function _(n){if(n instanceof E)return n;if(n!=null){if(Ue(n))return $t(n);if(Le(n))return Dt(n);if(_e(n))return Ht(n);if(Me(n))return De(n);if(Ne(n))return Ft(n);if($e(n))return Bt(n)}throw ke(n)}function $t(n){return new E(function(t){var e=n[re]();if(b(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Dt(n){return new E(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function Ht(n){return new E(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,we)})}function Ft(n){return new E(function(t){var e,r;try{for(var s=R(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 E(function(t){Gt(n,t).catch(function(e){return t.error(e)})})}function Bt(n){return De(je(n))}function Gt(n,t){var e,r,s,o;return gt(this,void 0,void 0,function(){var i,a;return ge(this,function(c){switch(c.label){case 0:c.trys.push([0,5,6,11]),e=vt(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 P(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),x(function(e,r){e.subscribe(O(r,function(s){return P(r,n,function(){return r.next(s)},t)},function(){return P(r,n,function(){return r.complete()},t)},function(s){return P(r,n,function(){return r.error(s)},t)}))})}function Fe(n,t){return t===void 0&&(t=0),x(function(e,r){r.add(n.schedule(function(){return e.subscribe(r)},t))})}function qt(n,t){return _(n).pipe(Fe(t),He(t))}function Kt(n,t){return _(n).pipe(Fe(t),He(t))}function Yt(n,t){return new E(function(e){var r=0;return t.schedule(function(){r===n.length?e.complete():(e.next(n[r++]),e.closed||this.schedule())})})}function Wt(n,t){return new E(function(e){var r;return P(e,t,function(){r=n[Re](),P(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 b(r?.return)&&r.return()}})}function Be(n,t){if(!n)throw new Error("Iterable cannot be null");return new E(function(e){P(e,t,function(){var r=n[Symbol.asyncIterator]();P(e,t,function(){r.next().then(function(s){s.done?e.complete():e.next(s.value)})},0,!0)})})}function Xt(n,t){return Be(je(n),t)}function Vt(n,t){if(n!=null){if(Ue(n))return qt(n,t);if(Le(n))return Yt(n,t);if(_e(n))return Kt(n,t);if(Me(n))return Be(n,t);if(Ne(n))return Wt(n,t);if($e(n))return Xt(n,t)}throw ke(n)}function oe(n,t){return t?Vt(n,t):_(n)}function zt(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Pe(n);return oe(n,e)}function Jt(n){return n instanceof Date&&!isNaN(n)}function $(n,t){return x(function(e,r){var s=0;e.subscribe(O(r,function(o){r.next(n.call(t,o,s++))}))})}var Qt=Array.isArray;function Zt(n,t){return Qt(t)?n.apply(void 0,F([],H(t))):n(t)}function en(n){return $(function(t){return Zt(n,t)})}var tn=Array.isArray,nn=Object.getPrototypeOf,rn=Object.prototype,sn=Object.keys;function on(n){if(n.length===1){var t=n[0];if(tn(t))return{args:t,keys:null};if(an(t)){var e=sn(t);return{args:e.map(function(r){return t[r]}),keys:e}}}return{args:n,keys:null}}function an(n){return n&&typeof n=="object"&&nn(n)===rn}function cn(n,t){return n.reduce(function(e,r,s){return e[r]=t[s],e},{})}function un(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=Pe(n),r=Nt(n),s=on(n),o=s.args,i=s.keys;if(o.length===0)return oe([],e);var a=new E(ln(o,e,i?function(c){return cn(i,c)}:X));return r?a.pipe(en(r)):a}function ln(n,t,e){return e===void 0&&(e=X),function(r){Ge(t,function(){for(var s=n.length,o=new Array(s),i=s,a=s,c=function(h){Ge(t,function(){var g=oe(n[h],t),y=!1;g.subscribe(O(r,function(d){o[h]=d,y||(y=!0,a--),a||r.next(e(o.slice()))},function(){--i||r.complete()}))},r)},u=0;u<s;u++)c(u)},r)}}function Ge(n,t,e){n?P(e,n,t):t()}function dn(n,t,e,r,s,o,i,a){var c=[],u=0,h=0,g=!1,y=function(){g&&!c.length&&!u&&t.complete()},d=function(f){return u<r?p(f):c.push(f)},p=function(f){u++;var U=!1;_(e(f,h++)).subscribe(O(t,function(C){t.next(C)},function(){U=!0},void 0,function(){if(U)try{u--;for(var C=function(){var M=c.shift();i||p(M)};c.length&&u<r;)C();y()}catch(M){t.error(M)}}))};return n.subscribe(O(t,d,function(){g=!0,y()})),function(){}}function V(n,t,e){return e===void 0&&(e=1/0),b(t)?V(function(r,s){return $(function(o,i){return t(r,o,s,i)})(_(n(r,s)))},e):(typeof t=="number"&&(e=t),x(function(r,s){return dn(r,s,n,e)}))}function hn(n,t,e){n===void 0&&(n=0),e===void 0&&(e=kt);var r=-1;return t!=null&&(Oe(t)?e=t:r=t),new E(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 fn(n,t){return b(t)?V(n,t,1):V(n,1)}function pn(n){return n<=0?function(){return Rt}:x(function(t,e){var r=0;t.subscribe(O(e,function(s){++r<=n&&(e.next(s),n<=r&&e.complete())}))})}function mn(n){return $(function(){return n})}function gn(n,t){return V(function(e,r){return _(n(e,r)).pipe(pn(1),mn(e))})}function bn(n,t){t===void 0&&(t=xe);var e=hn(n,t);return gn(function(){return e})}function D(n,t){return t===void 0&&(t=X),n=n??vn,x(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 vn(n,t){return n===t}function yn(n){return x(function(t,e){try{t.subscribe(e)}finally{e.add(n)}})}function Sn(n){return x(function(t,e){_(n).subscribe(O(e,function(){return e.complete()},ee)),!e.closed&&t.subscribe(e)})}function qe(n){const{endpoint:t,apiKey:e,payload:r,debugMode:s,customHeaders:o}=n,i=n.method??"POST";return new E(a=>{const c=new AbortController;let u,h=!1,g=!1;const y={"Content-Type":"application/json",...o};e&&(y["X-API-KEY"]=e);const d=new URL(t);return s&&d.searchParams.set("is_debug","true"),me(d.toString(),{method:i,headers:y,body:i==="POST"&&r?JSON.stringify(r):void 0,signal:c.signal,openWhenHidden:!0,onopen:async p=>{if(p.ok)u=p.headers.get("X-Trace-Id")??void 0;else{let f;try{f=await p.json()}catch{try{f=await p.text()}catch{f=null}}a.error(new w(p.status,p.statusText,f)),c.abort()}},onmessage:p=>{p.id&&(h=!0);const f=JSON.parse(p.data);u?f.traceId=u:f.requestId&&(f.traceId=f.requestId,u||(u=f.requestId)),a.next(f)},onclose:()=>{a.complete()},onerror:p=>{if(g)throw p;if(!h)throw a.error(p),c.abort(),p}}),()=>{g=!0,c.abort()}})}class wn{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 En{apiKey;endpoint;botProviderEndpoint;debugMode;destroy$=new se;closed=!1;detached=!1;detachTimer;inFlight=0;sseEmitter=new wn;transformSsePayload;customHeaders;constructor(t){if(!t.endpoint&&!t.botProviderEndpoint)throw new Error("Either endpoint or botProviderEndpoint must be provided");if(this.apiKey=t.apiKey,this.debugMode=t.debugMode,this.transformSsePayload=t.transformSsePayload,this.botProviderEndpoint=t.botProviderEndpoint,this.customHeaders={...t.customHeaders,...t.userIdentityHint?{"X-ASGARD-USER-IDENTITY-HINT":t.userIdentityHint}:{}},!t.endpoint&&t.botProviderEndpoint){const e=t.botProviderEndpoint.replace(/\/+$/,"");this.endpoint=`${e}/message/sse`}else t.endpoint&&(this.endpoint=t.endpoint,this.debugMode&&console.warn('[AsgardServiceClient] The "endpoint" option is deprecated and will be removed in the next major version. Please use "botProviderEndpoint" instead. The SSE endpoint will be automatically derived as "${botProviderEndpoint}/message/sse".'))}on(t,e){this.sseEmitter.remove(t),this.sseEmitter.on(t,e)}handleEvent(t){switch(t.eventType){case l.INIT:this.sseEmitter.emit(l.INIT,t);break;case l.PROCESS_START:case l.PROCESS_COMPLETE:this.sseEmitter.emit(l.PROCESS,t);break;case l.MESSAGE_START:case l.MESSAGE_DELTA:case l.MESSAGE_COMPLETE:this.sseEmitter.emit(l.MESSAGE,t);break;case l.TOOL_CALL_START:case l.TOOL_CALL_COMPLETE:this.sseEmitter.emit(l.TOOL_CALL,t);break;case l.TOOL_CALL_CONSENT:this.sseEmitter.emit(l.TOOL_CALL_CONSENT,t);break;case l.DONE:this.sseEmitter.emit(l.DONE,t);break;case l.ERROR:this.sseEmitter.emit(l.ERROR,t);break}}fetchSse(t,e){return e?.onSseStart?.(),this.inFlight+=1,this.runSse(qe({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(qe({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}))}}deriveSuspendEndpoint(){const t=this.getBaseEndpoint();return t?`${t}/message/suspend`:null}async suspendChannel(t,e){const r=this.deriveSuspendEndpoint();if(!r)throw new Error("Unable to derive channel suspend endpoint. Please provide botProviderEndpoint in config.");const s=new URL(r);s.searchParams.set("custom_channel_id",t),e?.requestId&&s.searchParams.set("request_id",e.requestId),e?.force&&s.searchParams.set("force","true");const o=await fetch(s.toString(),{method:"POST",headers:this.apiHeaders()});if(!(o.ok||o.status===404))throw new w(o.status,o.statusText,await o.text().catch(()=>{}))}runSse(t,e){return t.pipe(fn(r=>zt(r).pipe(bn(e?.delayTime??50))),Sn(this.destroy$),yn(()=>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`}apiHeaders(){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.apiHeaders()});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.apiHeaders()});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.apiHeaders(),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.apiHeaders()});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.apiHeaders()});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 E(s=>{const o=new AbortController;return me(r.toString(),{headers:this.apiHeaders(),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 S=[];for(let n=0;n<256;++n)S.push((n+256).toString(16).slice(1));function In(n,t=0){return(S[n[t+0]]+S[n[t+1]]+S[n[t+2]]+S[n[t+3]]+"-"+S[n[t+4]]+S[n[t+5]]+"-"+S[n[t+6]]+S[n[t+7]]+"-"+S[n[t+8]]+S[n[t+9]]+"-"+S[n[t+10]]+S[n[t+11]]+S[n[t+12]]+S[n[t+13]]+S[n[t+14]]+S[n[t+15]]).toLowerCase()}let ie;const Tn=new Uint8Array(16);function Cn(){if(!ie){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");ie=crypto.getRandomValues.bind(crypto)}return ie(Tn)}const Ke={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function xn(n,t,e){n=n||{};const r=n.random??n.rng?.()??Cn();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,In(r)}function Ye(n,t,e){return Ke.randomUUID&&!n?Ke.randomUUID():xn(n)}class v{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 v({messages:e,pendingConsent:this.pendingConsent})}clearPendingConsent(){return this.pendingConsent?new v({messages:this.messages,pendingConsent:null}):this}settleInFlightMessages(){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),s.type==="thinking"&&s.isThinking&&(e.set(r,{...s,isThinking:!1}),t=!0);return t?new v({messages:e,pendingConsent:this.pendingConsent}):this}cancelInFlightToolCalls(){return this.settleInFlightMessages()}onMessage(t){switch(t.eventType){case l.MESSAGE_START:return this.onMessageStart(t);case l.MESSAGE_DELTA:return this.onMessageDelta(t);case l.MESSAGE_COMPLETE:return this.onMessageComplete(t);case l.MESSAGE_USER:return this.onMessageUser(t);case l.MESSAGE_THINKING_START:return this.onThinkingStart(t);case l.MESSAGE_THINKING_DELTA:return this.onThinkingDelta(t);case l.MESSAGE_THINKING_COMPLETE:return this.onThinkingComplete(t);case l.TOOL_CALL_START:return this.onToolCallStart(t);case l.TOOL_CALL_COMPLETE:return this.onToolCallComplete(t);case l.TOOL_CALL_CONSENT:return this.onToolCallConsent(t);case l.SUBAGENT_START:return this.onSubagentStart(t);case l.SUBAGENT_COMPLETE:return this.onSubagentComplete(t);case l.ERROR:return this.onMessageError(t);default:return this}}isTerminalBot(t){return t?.type==="bot"&&!t.isTyping}isTerminalThinking(t){return t?.type==="thinking"&&!t.isThinking}isTerminalToolCall(t){return t?.type==="tool-call"&&t.isComplete===!0}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:l.MESSAGE_START,isTyping:!0,typingText:"",messageId:e.messageId,message:e,time:new Date,traceId:t.traceId,raw:""}),new v({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:l.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 v({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:l.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 v({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 v({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 v({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 v({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 v({messages:s,pendingConsent:this.pendingConsent})}onMessageError(t){const e=Ye(),r=t.fact.runError.error,s=new Map(this.messages);return s.set(e,{type:"error",eventType:l.ERROR,messageId:e,error:r,time:new Date,traceId:t.traceId}),new v({messages:s,pendingConsent:this.pendingConsent})}onToolCallStart(t){const e=t.fact.toolCallStart,r=new Map(this.messages),s=`${e.processId}-${e.callSeq}`;if(this.isTerminalToolCall(this.messages?.get(s)))return this;const o={type:"tool-call",eventType:l.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 v({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:l.TOOL_CALL_COMPLETE,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,traceId:t.traceId??o.traceId};r.set(s,i)}else{const i={type:"tool-call",eventType:l.TOOL_CALL_COMPLETE,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,result:e.toolCallResult,isError:e.isError,sidecar:e.toolUseResultSidecar,isComplete:!0,time:new Date,traceId:t.traceId};r.set(s,i)}return new v({messages:r,pendingConsent:this.pendingConsent})}onToolCallConsent(t){const e=t.fact.toolCallConsent;return new v({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.delete(s),r.set(s,o),new v({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.delete(s),r.set(s,o),new v({messages:r,pendingConsent:this.pendingConsent})}}const On=new Set(["TaskCreate","TaskUpdate"]);function We(n){return n.toolsetName===""&&On.has(n.toolName)}function Xe(n){return typeof n=="object"&&n!==null?n:void 0}function T(n){return typeof n=="string"?n:void 0}function Ve(n){const t=[],e=new Map;for(const r of n){const s=r.parameter??{},o=r.sidecar??{};if(r.toolName==="TaskCreate"){const i=Xe(o.task),a=T(i?.id);if(!a)continue;e.has(a)||t.push(a),e.set(a,{id:a,subject:T(s.subject)||T(i?.subject)||"",activeForm:T(s.activeForm),description:T(s.description),status:e.get(a)?.status??"pending"})}else if(r.toolName==="TaskUpdate"){const i=Xe(o.statusChange),a=T(s.taskId)||T(o.taskId),c=T(i?.to)||T(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 ze(n){return n.toolsetName===""&&n.toolName==="Agent"}function Je(n){return!!n}function Qe(n){n.status!=="running"&&(n.status="running",n.summary=void 0)}function Ze(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,Qe(i);break}case"toolStart":{Qe(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 An(n){return typeof n=="string"?n:void 0}function et(n){const t=[];for(const e of n){if(e.type==="tool-call"&&ze(e)){t.push({kind:"agentStart",toolUseId:e.toolUseId??e.messageId,description:An(e.parameter.description)});continue}if(e.type==="tool-call"&&Je(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 tt(n){const t=Array.from(n.messages?.values()??[]).filter(e=>e.type==="tool-call"&&e.isComplete&&We(e));return Ve(t)}function nt(n){return Ze(et(Array.from(n.messages?.values()??[])))}function rt(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 Pn(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 st(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&&Pn(e.tools,s.tools)})}function ot(n){const t=new A([]),e=new A([]),r=new j;return r.add(n.pipe($(tt),D(rt)).subscribe(t)),r.add(n.pipe($(nt),D(st)).subscribe(e)),{tasks$:t.asObservable(),subagents$:e.asObservable(),getTasks:()=>t.value,getSubagents:()=>e.value,teardown:()=>r.unsubscribe()}}function ae(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))}const ce={kind:null,stopPhase:"idle"},Ln=1e4;function _n(n,t){return n.kind===t.kind&&n.stopPhase===t.stopPhase&&n.requestId===t.requestId}class B{client;customChannelId;customMessageId;joinRunState;isConnecting$;runStatusSubject;conversation$;channelTitleSubject;sandboxPhaseSubject;launchedSandboxesSubject;pendingLaunches=[];derivedStores;statesObserver;statesSubscription;tasks$;subagents$;channelTitle$;sandboxPhase$;launchedSandboxes$;runStatus$;currentUserMessageId;lastSentMessageId;currentRun;forceStopTimer;constructor(t){if(!t.client)throw new Error("client must be required");if(!t.customChannelId)throw new Error("customChannelId must be required");this.client=t.client,this.customChannelId=t.customChannelId,this.customMessageId=t.customMessageId,this.joinRunState=t.runState??"IDLE",this.isConnecting$=new A(!1),this.runStatusSubject=new A(ce),this.conversation$=new A(t.conversation),this.channelTitleSubject=new A(t.channelTitle??null),this.sandboxPhaseSubject=new A("idle"),this.launchedSandboxesSubject=new A(ae(t.launchedSandboxes??[])),this.derivedStores=ot(this.conversation$),this.tasks$=this.derivedStores.tasks$,this.subagents$=this.derivedStores.subagents$,this.channelTitle$=this.channelTitleSubject.pipe(D()),this.sandboxPhase$=this.sandboxPhaseSubject.pipe(D()),this.launchedSandboxes$=this.launchedSandboxesSubject.pipe(D()),this.runStatus$=this.runStatusSubject.pipe(D(_n)),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}getRunStatus(){return this.runStatusSubject.value}getPendingLaunches(){return this.pendingLaunches}applyLaunchedSandboxes(t){const e=ae(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 B(t);return e.subscribe(),e}static async reset(t,e,r,s){const o=new B(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 B(t);try{return s.subscribe(),r?.(s),await s.rejoinChannel(e),s}catch(o){throw s.close(),o}}subscribe(){this.statesSubscription=un([this.isConnecting$,this.conversation$,this.derivedStores.tasks$,this.derivedStores.subagents$,this.channelTitle$,this.sandboxPhase$,this.launchedSandboxes$,this.runStatus$]).pipe($(([t,e,r,s,o,i,a,c])=>({isConnecting:t,conversation:e,tasks:r,subagents:s,channelTitle:o,sandboxPhase:i,launchedSandboxes:a,runStatus:c}))).subscribe(this.statesObserver)}resolvePayload(t){if(typeof t=="function")try{return t()}catch(e){throw new Error(`Failed to resolve payload function: ${e instanceof Error?e.message:String(e)}`)}return t}updateSandboxPhase(t){switch(t){case l.SANDBOX_LAUNCH:this.sandboxPhaseSubject.next("launching");break;case l.SANDBOX_READY:this.sandboxPhaseSubject.next("ready");break;case l.INIT:case l.ERROR:this.sandboxPhaseSubject.next("idle");break}}buildRunHandlers(t,e,r){return{onSseStart:t?.onSseStart,onSseMessage:s=>{if(t?.onSseMessage?.(s),this.captureRequestId(s.requestId),s.eventType===l.CHANNEL_TITLE_UPDATE&&this.channelTitleSubject.next(s.fact.channelTitleUpdate.title),this.updateSandboxPhase(s.eventType),s.eventType===l.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 v({messages:o,pendingConsent:this.conversation$.value.pendingConsent}))),this.currentUserMessageId=void 0}this.conversation$.next(this.conversation$.value.onMessage(s))},onSseError:s=>{t?.onSseError?.(s),this.settleRun(),r(s)},onSseCompleted:()=>{t?.onSseCompleted?.(),this.settleRun(),e()}}}settleRun(){const t=this.runStatusSubject.value.stopPhase!=="idle";this.clearForceStopTimer(),this.isConnecting$.next(!1),this.runStatusSubject.next(ce),this.currentUserMessageId=void 0,this.currentRun=void 0,t&&this.conversation$.next(this.conversation$.value.settleInFlightMessages())}captureRequestId(t){const e=this.runStatusSubject.value;!t||e.requestId||!e.kind||this.runStatusSubject.next({...e,requestId:t})}clearForceStopTimer(){this.forceStopTimer&&(clearTimeout(this.forceStopTimer),this.forceStopTimer=void 0)}fetchSse(t,e,r){return new Promise((s,o)=>{this.isConnecting$.next(!0),this.runStatusSubject.next({kind:t,stopPhase:"idle"}),this.currentRun=this.client.fetchSse(e,this.buildRunHandlers(r,s,o))})}rejoinChannel(t){return new Promise((e,r)=>{if(!this.client.rejoinSse){e();return}this.isConnecting$.next(!0),this.runStatusSubject.next({kind:this.joinRunState==="RUNNING"?"restore":"replay",stopPhase:"idle"}),this.currentRun=this.client.rejoinSse(this.customChannelId,this.buildRunHandlers(t,e,r))})}resetChannel(t,e){return this.fetchSse("reset",{action:k.RESET_CHANNEL,customChannelId:this.customChannelId,customMessageId:this.customMessageId,text:t?.text||"",payload:this.resolvePayload(t?.payload)},e)}sendMessage(t,e){const r=this.runStatusSubject.value.kind;if(r)return Promise.reject(new G(r));const s=this.conversation$.value.pendingConsent;if(s)return Promise.reject(new q(s.processId));const o=t.text.trim(),i=t.customMessageId??Ye();return this.currentUserMessageId=i,this.lastSentMessageId=i,this.conversation$.next(this.conversation$.value.pushMessage({type:"user",messageId:i,text:o,blobIds:t.blobIds,filePreviewUrls:t.filePreviewUrls,documentNames:t.documentNames,time:new Date})),this.fetchSse("user",{action:k.NONE,customChannelId:this.customChannelId,customMessageId:i,payload:this.resolvePayload(t?.payload),text:o,blobIds:t?.blobIds},e)}replyToolCallConsents(t,e,r){return this.conversation$.next(this.conversation$.value.clearPendingConsent()),this.fetchSse("user",{action:k.RESPONSE_TOOL_CALL_CONSENT,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(r),text:"",toolCallConsents:t},e)}nudge(t,e){const r=this.runStatusSubject.value.kind;if(r)return Promise.reject(new G(r));const s=this.conversation$.value.pendingConsent;return s?Promise.reject(new q(s.processId)):this.fetchSse("nudge",{action:k.NUDGE,customChannelId:this.customChannelId,customMessageId:this.lastSentMessageId??this.customMessageId,payload:this.resolvePayload(e),text:""},t)}async stopGeneration(t){const e=this.runStatusSubject.value;if(!(!this.currentRun||e.kind!=="user")&&!(e.stopPhase!=="idle"&&!t?.force)){if(!this.client.suspendChannel){this.abortConnection();return}this.clearForceStopTimer(),this.runStatusSubject.next({...e,stopPhase:"stopping"});try{await this.client.suspendChannel(this.customChannelId,{requestId:e.requestId,force:t?.force})}catch(r){throw this.clearForceStopTimer(),this.runStatusSubject.next({...this.runStatusSubject.value,stopPhase:"idle"}),r}this.armForceStopTimer()}}armForceStopTimer(){this.clearForceStopTimer(),this.forceStopTimer=setTimeout(()=>{this.forceStopTimer=void 0;const t=this.runStatusSubject.value;t.stopPhase==="stopping"&&this.runStatusSubject.next({...t,stopPhase:"force-stoppable"})},Ln)}abortConnection(){this.currentRun&&(this.currentRun.unsubscribe(),this.clearForceStopTimer(),this.currentRun=void 0,this.isConnecting$.next(!1),this.runStatusSubject.next(ce),this.currentUserMessageId=void 0,this.conversation$.next(this.conversation$.value.settleInFlightMessages()))}close(){this.currentRun?.unsubscribe(),this.currentRun=void 0,this.clearForceStopTimer(),this.isConnecting$.complete(),this.runStatusSubject.complete(),this.conversation$.complete(),this.channelTitleSubject.complete(),this.sandboxPhaseSubject.complete(),this.launchedSandboxesSubject.complete(),this.derivedStores.teardown(),this.statesSubscription?.unsubscribe()}}function Un(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}m.AsgardServiceClient=En,m.Channel=B,m.ChannelAwaitingConsentError=q,m.ChannelBusyError=G,m.Conversation=v,m.EventType=l,m.FetchSseAction=k,m.HttpError=w,m.MessageTemplateType=he,m.ToolCallConsentResult=de,m.conversationToSubagentEvents=et,m.createDerivedStores=ot,m.deriveSubagents=nt,m.deriveTasks=tt,m.isAgentTool=ze,m.isChannelAwaitingConsentError=ct,m.isChannelBusyError=at,m.isHttpError=it,m.isSubagentChildTool=Je,m.isTaskTool=We,m.reconcileLaunched=ae,m.reduceSubagents=Ze,m.reduceTaskEvents=Ve,m.resolveSandboxUri=Un,m.subagentsEqual=st,m.tasksEqual=rt,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})}));
5
5
  //# sourceMappingURL=index.js.map