@cmmd-center/forge 0.13.127 → 0.13.128
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/bin.cjs +17 -2
- package/dist/bin.mjs +41 -26
- package/dist/client/assets/{CanvasPanel-Db1Iz4JN.js → CanvasPanel-j0yQxyEH.js} +2 -2
- package/dist/client/assets/{DiffPanel-CqRZidQp.js → DiffPanel-DW-4nhXm.js} +3 -3
- package/dist/client/assets/{DiffPanel.logic-D4K70r-U.js → DiffPanel.logic-CaiJLSzy.js} +2 -2
- package/dist/client/assets/{DiffWorkerPoolProvider-BHmRAZ9V.js → DiffWorkerPoolProvider-DDV64q8E.js} +9 -9
- package/dist/client/assets/PullRequestCodePanel-CPhvQnl6.js +5 -0
- package/dist/client/assets/{ThemeEditorPanel-DTfrlPBc.js → ThemeEditorPanel-DCsxTx0Q.js} +2 -2
- package/dist/client/assets/{Virtualizer-BaK0M9lw.js → Virtualizer-C5HhtAFY.js} +2 -2
- package/dist/client/assets/{WorkerPoolContext-CD9L3Rin.js → WorkerPoolContext-DE6P0yOd.js} +37 -37
- package/dist/client/assets/{cmmdAuthRedirect-BYBGztDm.js → cmmdAuthRedirect-BUp02n05.js} +2 -2
- package/dist/client/assets/{cmmdForgeRuntimeListResource-lbV63vQg.js → cmmdForgeRuntimeListResource-DokzffFK.js} +4 -4
- package/dist/client/assets/{currentForgeWorkspaceStore-Cukj-AKS.js → currentForgeWorkspaceStore-DANo4KV4.js} +2 -2
- package/dist/client/assets/{index-CFdawhcA.js → index-Bo3YIsVh.js} +68 -68
- package/dist/client/assets/index-jrCMls69.css +1 -0
- package/dist/client/assets/notification-completion-vyCCbYsz.mp3 +0 -0
- package/dist/client/assets/notification-input-BJS4voY1.mp3 +0 -0
- package/dist/client/assets/{popover-Cvb1Axgx.js → popover-lOfV58pL.js} +2 -2
- package/dist/client/assets/{scroll-area-DzReJmNn.js → scroll-area-BxupGCij.js} +2 -2
- package/dist/client/assets/{src-BAHvoNAY.js → src-CFUzoLms.js} +2 -2
- package/dist/client/assets/{switch-RuRK1onH.js → switch-wFSVBlXv.js} +2 -2
- package/dist/client/assets/{themePalette-gr6ZYaOx.js → themePalette-NfQV9Yfl.js} +2 -2
- package/dist/client/assets/{toggle-D8xaJAgP.js → toggle-CYJl9GZL.js} +2 -2
- package/dist/client/assets/{toggle-group-CwSbXP07.js → toggle-group-DB8Zelac.js} +2 -2
- package/dist/client/assets/{utils-B4G-Q0s7.js → utils-BQ72yH0H.js} +2 -2
- package/dist/client/index.html +16 -16
- package/dist/forge-build.json +1 -1
- package/dist/{open-2-reBrpv.mjs → open-yHTUkd2Y.mjs} +3 -3
- package/package.json +1 -1
- package/dist/client/assets/PullRequestCodePanel-Bfws9NZf.js +0 -5
- package/dist/client/assets/index-DcAyKQAA.css +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/currentForgeWorkspaceStore-
|
|
2
|
-
import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{Ha as n,Oa as r,Ua as i,Wa as a}from"./Stream-mUTFnSY9.js";import{Fn as o,H as s,In as c,J as l,Mn as u,Nt as d,On as f,Ot as p,Tn as m,a as h,bt as g,cn as _,er as v,gn as y,hn as b,i as x,jn as S,kn as C,pn as w,sn as T,v as ee,vn as E,vt as te,wt as ne,yn as re}from"./src-BAHvoNAY.js";import{A as ie,F as ae,L as oe,M as D,N as se,P as ce,a as le,c as ue,d as de,l as fe,n as pe,s as me,u as he}from"./cmmdAuthRedirect-BYBGztDm.js";import{t as ge}from"./utils-B4G-Q0s7.js";import{t as _e}from"./preload-helper-Czpn1I53.js";import{o as ve,t as ye}from"./debouncer-BmyJL8Gi.js";import{n as O,t as be}from"./transport-CgH8pQK3.js";var k=t(a(),1),xe=typeof window<`u`&&(window.desktopBridge!==void 0||window.nativeApi!==void 0);function Se(e){return{id:e.id??`ws:${e.label}`,label:e.label,source:e.source??`manual`,target:e.target}}function Ce(e){return e?.target.wsBaseUrl??null}function we(e){return e?.target.httpBaseUrl??null}function Te(e,t){return{...e,environmentId:t.environmentId,label:t.label}}function Ee(e){return e.cloudMode?`cmmd-cloud-runtime`:`local-web`}function De(e){let t=Ee(e);return{topology:t,controlPlane:t!==`cmmd-cloud-runtime`,executionPlane:!0,workspaceProxy:!1}}function Oe(e){let t=e.topology===`cmmd-cloud-runtime`;return{cmmd:!0,ownerBootstrapPromotion:e.topology!==`cloud-shell`&&!t,bearerBootstrap:!0,desktopBootstrap:e.topology===`desktop-local`,providerCredentialBroker:e.topology===`cmmd-control-plane`}}function ke(e){let t=e.executionPlane;return{agents:t,browser:t,github:t,terminal:t,providerEgress:e.topology===`cmmd-control-plane`}}function Ae(e,t){return{localProjects:t.executionPlane,cloudProjects:e.cloudMode}}function je(e){let t=e.capabilities,n=t.runtime??De(t);return{repositoryIdentity:t.repositoryIdentity,pullRequests:t.pullRequests??!1,cloudMode:t.cloudMode,posthogPublicKey:t.posthogPublicKey,posthogHost:t.posthogHost,runtime:n,auth:t.auth??Oe(n),tools:t.tools??ke(n),projects:t.projects??Ae(t,n)}}function Me(e){return e?je(e).projects.cloudProjects:!1}function Ne(e){return e?je(e).runtime.workspaceProxy??!1:!1}function Pe(e,t){return{environmentId:e,projectId:t}}function Fe(e,t){return{environmentId:e,threadId:t}}var Ie=`scoped:v1:`;function Le(e){let t=`projectId`in e?e.projectId:e.threadId;return t.includes(`:`)||e.environmentId.startsWith(Ie)?`${Ie}${encodeURIComponent(e.environmentId)}:${encodeURIComponent(t)}`:`${e.environmentId}:${t}`}function eee(e){return Le(e)}function tee(e){return Le(e)}function Re(e){let t=e.slice(10),n=t.indexOf(`:`);if(n<=0||n>=t.length-1||t.indexOf(`:`,n+1)!==-1)return null;try{let e=decodeURIComponent(t.slice(0,n)),r=decodeURIComponent(t.slice(n+1));return e.length>0&&r.length>0?{environmentId:e,localId:r}:null}catch{return null}}function ze(e){if(e.startsWith(Ie))return Re(e);let t=e.lastIndexOf(`:`);return t<=0||t>=e.length-1?null:{environmentId:e.slice(0,t),localId:e.slice(t+1)}}function Be(e){let t=ze(e);return t?{environmentId:t.environmentId,projectId:t.localId}:null}function Ve(e){let t=ze(e);return t?{environmentId:t.environmentId,threadId:t.localId}:null}var He=n();function Ue(e){return e.stageLabel.trim().toLowerCase()===`latest`?e.baseName:`${e.baseName} (${e.stageLabel})`}var We=`Forge`,Ge=``,Ke=Ge===`latest`||Ge===`nightly`?Ge:null,qe=Ke===`nightly`?`Nightly`:Ke===`latest`?`Latest`:null,Je=qe??`Alpha`,Ye=qe?Ue({baseName:We,stageLabel:Je}):We,Xe=`0.13.4`,Ze=ge(`forge-app-top-bar drag-region @container/header-actions relative z-20 w-full min-w-0 shrink-0 bg-background`,`grid grid-cols-[minmax(0,1fr)_minmax(0,auto)] items-center`),Qe=`flex h-full min-w-0 items-center gap-1 md:gap-1.5`,$e=`flex h-touch min-w-0 max-w-full touch-manipulation items-center justify-center rounded-lg px-3 text-foreground transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring md:h-7 md:px-2`,nee={width:`calc(100% - var(--forge-right-panel-reserved-width, 0px))`},et=`forge-app-shell flex w-full min-w-0 flex-row`,tt=`forge-app-shell flex w-full min-w-0 flex-col`,nt=`flex min-h-0 min-w-0 flex-1 flex-col`,rt=`relative flex h-[var(--forge-content-height)] min-h-0 min-w-0 flex-1 overflow-hidden`,it=i();function at(e){let t=(0,He.c)(19),{showStageBadge:n,tone:r,variant:i}=e,a=n!==void 0&&n,o=r===void 0?`default`:r,s=(i===void 0?`default`:i)===`auth`,c=s?20:16,l=s?`h-5 w-5 shrink-0`:`h-4 w-4 shrink-0`,u;t[0]!==c||t[1]!==l?(u=(0,it.jsx)(`img`,{className:l,src:`/forge-mark.svg`,width:c,height:c,alt:``,"aria-hidden":`true`}),t[0]=c,t[1]=l,t[2]=u):u=t[2];let d=u,f=s?`text-[15px] sm:text-base`:`text-sm`,p=o===`on-dark`?`text-primary-foreground`:`text-foreground`,m;t[3]!==f||t[4]!==p?(m=ge(`truncate font-semibold tracking-tight`,f,p),t[3]=f,t[4]=p,t[5]=m):m=t[5];let h;t[6]===m?h=t[7]:(h=(0,it.jsx)(`span`,{className:m,children:We}),t[6]=m,t[7]=h);let g=h,_=s?`rounded-full bg-muted/50 px-2 py-0.5 text-[9px] leading-none font-medium tracking-[0.14em] text-muted-foreground/70 uppercase [text-indent:0.14em]`:`rounded-full bg-muted/50 px-1.5 py-0.5 text-[8px] leading-none font-medium tracking-[0.18em] text-muted-foreground/60 uppercase [text-indent:0.18em]`,v;t[8]===_?v=t[9]:(v=(0,it.jsx)(`span`,{className:_,children:Je}),t[8]=_,t[9]=v);let y=v;if(a){let e;t[10]!==d||t[11]!==g?(e=(0,it.jsxs)(`span`,{className:`flex items-center gap-2`,children:[d,g]}),t[10]=d,t[11]=g,t[12]=e):e=t[12];let n;return t[13]!==y||t[14]!==e?(n=(0,it.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-md`,"aria-label":Ye,children:[e,y]}),t[13]=y,t[14]=e,t[15]=n):n=t[15],n}let b;return t[16]!==d||t[17]!==g?(b=(0,it.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,"aria-label":Ye,children:[d,g]}),t[16]=d,t[17]=g,t[18]=b):b=t[18],b}function ot(e){let t=(0,He.c)(5),{className:n}=e,r;t[0]===n?r=t[1]:(r=ge(`pointer-events-none flex select-none items-center`,n),t[0]=n,t[1]=r);let i;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,it.jsx)(at,{}),t[2]=i):i=t[2];let a;return t[3]===r?a=t[4]:(a=(0,it.jsx)(`div`,{className:r,children:i}),t[3]=r,t[4]=a),a}function st(){let e=new Map;return{clear:()=>e.clear(),getItem:t=>e.get(t)??null,key:t=>Array.from(e.keys()).at(t)??null,get length(){return e.size},removeItem:t=>e.delete(t),setItem:(t,n)=>e.set(t,n)}}var ct=typeof window<`u`?window.localStorage:st(),lt=(e,t)=>m(u(e))(t),ut=(e,t)=>S(u(e))(t),dt=(e,t)=>{let n=ct.getItem(e);return n?lt(t,n):null},ft=(e,t,n)=>{let r=ut(n,t);ct.setItem(e,r)},pt=e=>{ct.removeItem(e)},mt=`forge:local_storage_change`;function ree(e){typeof window>`u`||window.dispatchEvent(new CustomEvent(mt,{detail:{key:e}}))}function iee(e,t,n){let[r,i]=(0,k.useState)(()=>{try{return dt(e,n)??t}catch(e){return console.error(`[LOCALSTORAGE] Error:`,e),t}}),a=(0,k.useCallback)(t=>{i(r=>{try{let i=typeof t==`function`?t(r):t;return i===null?pt(e):ft(e,i,n),queueMicrotask(()=>ree(e)),i}catch(e){return console.error(`[LOCALSTORAGE] Error:`,e),r}})},[e,n]),o=(0,k.useRef)(e);return(0,k.useEffect)(()=>{if(o.current!==e){o.current=e;try{let r=dt(e,n);i(r??t)}catch(e){console.error(`[LOCALSTORAGE] Error:`,e)}}},[e,t,n]),(0,k.useEffect)(()=>{let r=()=>{try{let r=dt(e,n);i(r??t)}catch(e){console.error(`[LOCALSTORAGE] Error:`,e)}},a=t=>{t.key===e&&r()},o=t=>{t.detail.key===e&&r()};return window.addEventListener(`storage`,a),window.addEventListener(mt,o),()=>{window.removeEventListener(`storage`,a),window.removeEventListener(mt,o)}},[e,t,n]),[r,a]}var ht=`cmmd-runtime:`;function gt(e){return`${ht}${e}`}var aee=`cmmd-cloud-project:`,oee=/^env_[0-9a-f]{32}$/,see=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,_t={shape:`local`,isCloud:!1,legacyRuntimeId:null},vt={shape:`cloud-project-placeholder`,isCloud:!0,legacyRuntimeId:null},yt={shape:`durable-environment`,isCloud:!0,legacyRuntimeId:null};function bt(e){if(typeof e!=`string`)return _t;if(e.startsWith(`cmmd-runtime:`)){let t=e.slice(ht.length);return see.test(t)?{shape:`legacy-runtime`,isCloud:!0,legacyRuntimeId:t}:_t}return e.startsWith(`cmmd-cloud-project:`)?vt:oee.test(e)?yt:_t}var xt=`forge:client-settings:v1`,St=`forge:saved-environment-registry:v1`,Ct=re({environmentId:p,label:E,httpBaseUrl:E,wsBaseUrl:E,createdAt:E,lastConnectedAt:b(E),cmmdOrganizationId:c(E),cmmdProjectId:c(E),runtimeId:c(E),runtimeTicketExpiresAt:c(E),lastAuthenticatedPullRequestCapability:c(_),bearerToken:c(E)}),wt=re({version:c(y),records:c(T(Ct))});function Tt(){return typeof window<`u`}var Et={uiFontSize:14,codeFontSize:15},Dt=[[`uiFontSize`,11,20],[`codeFontSize`,11,20]];function Ot(e){return e.defaultThreadRuntime===`desktop-cloud-bridge`?{...e,defaultThreadRuntime:`cloud`}:null}function kt(e){if(typeof e.fontDefaultsVersion==`number`)return null;let t=Object.entries(Et).filter(([t,n])=>e[t]===n);if(t.length===0)return null;let n={...e};for(let[e]of t)delete n[e];return n}function At(e){let t=Dt.flatMap(([t,n,r])=>{let i=e[t];if(typeof i!=`number`||!Number.isFinite(i))return[];let a=Math.min(r,Math.max(n,Math.round(i)));return a===i?[]:[[t,a]]});if(t.length===0)return null;let n={...e};for(let[e,r]of t)n[e]=r;return n}function jt(e){if(!e||typeof e!=`object`)return e;let t=e,n=!1;for(let e of[Ot,kt,At]){let r=e(t);r!==null&&(t=r,n=!0)}return n?t:e}function Mt(){if(!Tt())return null;try{let e=window.localStorage.getItem(xt);return e?C(ee)(jt(JSON.parse(e))):null}catch{return null}}function Nt(e){Tt()&&ft(xt,e,ee)}function Pt(){if(!Tt())return{};try{return dt(`forge:saved-environment-registry:v1`,wt)??{}}catch{return{}}}function Ft(e){Tt()&&ft(St,e,wt)}function It(){return Pt().records??[]}function Lt(e){Ft({version:1,records:e})}function Rt(){return It().map(e=>s(e))}function zt(e){let t=new Map(It().map(e=>[e.environmentId,e]));Lt(e.map(e=>{let n=bt(e.environmentId).legacyRuntimeId===null?t.get(e.environmentId)?.bearerToken:void 0;return n?{...s(e),bearerToken:n}:s(e)}))}function Bt(e){return It().find(t=>t.environmentId===e)?.bearerToken??null}function Vt(e,t){let n=Pt(),r=n.records??[],i=!1;return Ft({version:n.version??1,records:r.map(n=>n.environmentId===e?(i=!0,Object.assign(s(n),{bearerToken:t})):n)}),i}function Ht(e){let t=Pt();Ft({version:t.version??1,records:(t.records??[]).map(t=>t.environmentId===e?s(t):t)})}var Ut=C(ee);function Wt(){return typeof window>`u`?void 0:window.desktopBridge}function Gt(e){let t=Wt(),n=t?.[e];return typeof n==`function`?n.bind(t):null}async function Kt(){let e=Gt(`getClientSettings`);if(e){let t=await e();return t?Ut(t):null}return Mt()}async function qt(e){let t=Gt(`setClientSettings`);if(t)return t(e);Nt(e)}async function Jt(){let e=Gt(`getSavedEnvironmentRegistry`);return e?e():Rt()}async function Yt(e){let t=Gt(`setSavedEnvironmentRegistry`);if(t)return t(e);zt(e)}async function Xt(e){let t=Gt(`getSavedEnvironmentSecret`);return t?t(e):Bt(e)}async function Zt(e,t){let n=Gt(`setSavedEnvironmentSecret`);return n?n(e,t):Vt(e,t)}async function Qt(e){let t=Gt(`removeSavedEnvironmentSecret`);if(t)return t(e);Ht(e)}var $t=`token`;function en(e){return new URLSearchParams(e.hash.startsWith(`#`)?e.hash.slice(1):e.hash)}function tn(e){let t=en(e).get($t)?.trim()??``;if(t.length>0)return t;let n=e.searchParams.get($t)?.trim()??``;return n.length>0?n:null}function nn(e){let t=new URL(e.toString()),n=en(t);return n.has($t)&&(n.delete($t),t.hash=n.toString()),t.searchParams.delete($t),t}function rn(e,t){let n=new URL(e.toString());return n.searchParams.delete($t),n.hash=new URLSearchParams([[$t,t]]).toString(),n}function an(e,t){let n=new URL(e);return n.pathname=`/login`,rn(n,t).toString()}function cee(e){return rn(new URL(`/login`,window.location.href),e).toString()}var lee=`host`;function uee(e){let t=new URL(e),n=tn(t),r=new URL(`forge:///pair`);return r.searchParams.set(lee,t.origin),n&&r.searchParams.set($t,n),r.toString()}var on=`/api/cmmd/auth-runtime`;function dee(e){return O({method:`POST`,path:on},e)}function fee(e){return O({method:`GET`,path:on},e)}function pee(e){return O({method:`DELETE`,path:on},e)}function mee(e){return O({method:`POST`,path:`${on}/connect`},e)}function hee(e,t){return O({method:`GET`,path:`/api/cmmd/billing`,...t?.organizationId===void 0?{}:{query:{orgId:t.organizationId}}},e)}function gee(e,t){return O({method:`GET`,path:`/api/cmmd/billing/series`,query:{timeZone:t.timeZone}},e)}function _ee(e,t){return O({method:`GET`,path:`/api/cmmd/bootstrap`,...t?.organizationId===void 0?{}:{query:{orgId:t.organizationId}}},e)}var sn=`/api/cmmd/providers/codex/credential`,cn=`/api/cmmd/providers/claude/credential`;function vee(e){return O({method:`GET`,path:sn},e)}function yee(e){return O({method:`DELETE`,path:sn},e)}function bee(e){return O({method:`GET`,path:cn},e)}function xee(e){return O({method:`DELETE`,path:cn},e)}function See(e,t){return O({method:`DELETE`,path:`/api/cmmd/providers/accounts/${encodeURIComponent(String(t))}`},e)}function Cee(e,t,n){return`/api/cmmd/threads/${encodeURIComponent(e)}/${encodeURIComponent(t)}/${encodeURIComponent(n)}/disposition`}function wee(e,t,n,r,i){return O({method:`PUT`,path:Cee(t,n,r),body:i},e)}function Tee(e){return(t,n,r,i)=>wee(e,t,n,r,i)}function ln(e,t=``){return`/api/cmmd/thread-attachments/${encodeURIComponent(e)}${t}`}function Eee(e){return{async listThreadAttachments(t){return O({method:`GET`,path:ln(t)},e)},async uploadThreadAttachment(t,n,r,i){let a=new FormData;return a.append(`file`,n),r!==void 0&&a.append(`attachmentId`,r),O({method:`POST`,path:ln(t),form:a,...i===void 0?{}:{signal:i}},e)},async getThreadAttachmentDownloadUrl(t,n){return O({method:`GET`,path:ln(t,`/${encodeURIComponent(n)}/download`)},e)},async deleteThreadAttachment(t,n){await O({method:`DELETE`,path:ln(t,`/${encodeURIComponent(n)}`)},e)}}}var Dee=class extends Error{constructor(e){super(e),this.name=`CmmdApiAuthError`}},Oee=class extends Error{status;constructor(e,t){super(e),this.name=`CmmdApiServerError`,this.status=t}};async function un(e){try{return await e}catch(e){throw e instanceof be?e.kind===`auth`?new Dee(e.message):new Oee(e.message,e.status??502):e}}function dn(e,t,n){return`/api/cmmd/threads/${encodeURIComponent(e)}/${encodeURIComponent(t)}/${encodeURIComponent(n)}/archive`}function fn(e,t,n,r,i){return O({method:`POST`,path:dn(t,n,r),body:i},e)}function kee(e){return(t,n,r,i)=>fn(e,t,n,r,i)}function pn(e){return typeof e==`object`&&!!e&&`status`in e&&e.status===409}async function mn(e){let t={action:e.action,...e.operationId===void 0?{}:{operationId:e.operationId},expectedRevision:e.expectedRevision,force:e.force};try{return await e.submit(t)}catch(n){if(!pn(n))throw n;let r=await e.refresh();return e.submit({...t,expectedRevision:r.revision})}}function hn(e){return{getForgeAccountPreferences:()=>O({method:`GET`,path:`/api/cmmd/account/preferences`},e),updateForgeAccountPreferences:t=>O({method:`PATCH`,path:`/api/cmmd/account/preferences`,body:t},e),getUserSettings:t=>O({method:`GET`,path:`/api/cmmd/user/settings/${t}`},e),putUserSettings:(t,n)=>O({method:`PUT`,path:`/api/cmmd/user/settings/${t}`,body:n},e)}}function gn(e,t,n){return O({method:`POST`,path:`/api/cmmd/forge-runtimes/${encodeURIComponent(t)}/rename`,body:{displayName:n}},e)}function _n(e,t,n){return O({method:`POST`,path:`/api/cmmd/devices/${encodeURIComponent(String(t))}/rename`,body:{displayName:n}},e)}function vn(e,t){return O({method:`POST`,path:`/api/cmmd/devices/${encodeURIComponent(String(t))}/revoke`},e)}function yn(e){return{...e?.projectId===void 0?{}:{projectId:String(e.projectId)},...e?.allWorkspaces===!0?{allWorkspaces:`true`}:{},...e?.organizationId===void 0?{}:{orgId:String(e.organizationId)}}}var bn=`rt-demo`,xn=`th-demo`,Sn=`example-project`,Aee=`example-conversation`,Cn=`2026-09-26T20:00:00.000Z`;function jee(e,t){return e===bn&&t===xn}function Mee(){return{runtime:{id:bn,source:`forge-cloud`,runtimeKind:`cloud-vm`,displayName:`Example Forge Server`,status:`online`,endpointUrl:null,hostId:null,deviceId:null,workspaceRoot:null,githubRepoFullName:null,lastSeenAt:Cn,reachability:{status:`online`,lastReachableAt:Cn,source:`cloud-runtime`},metadata:null},inventoryStatus:`synced`,inventoryPublishedAt:Cn,projectCount:1,threadCount:1,projects:[{projectId:Sn,title:`Example project`,workspaceRoot:null,githubRepoFullName:null,branch:null,status:`active`,threadCount:1,lastActivityAt:Cn,metadata:null,publishedAt:Cn,updatedAt:Cn,threads:[{threadId:xn,title:`Example thread (viewer check)`,status:`active`,model:null,provider:null,providerAccountId:null,branch:null,lastMessagePreview:null,lastActivityAt:Cn,kind:`master`,parentThreadId:null,workerRole:null,anchorKind:`scratch`,anchorCmmdId:null,archive:null,disposition:{manualDisposition:null,automaticDisposition:null,effectiveDisposition:null,revision:null,source:null},metadata:null,publishedAt:Cn,updatedAt:Cn}]}]}}function Nee(){return{conversationId:Aee,runtime:{id:bn,source:`forge-cloud`,runtimeKind:`cloud-vm`,displayName:`Example Forge Server`,status:`online`,endpointUrl:null,deviceId:null,workspaceRoot:null,githubRepoFullName:null,lastSeenAt:Cn,metadata:null},project:{projectId:Sn,title:`Example project`,githubRepoFullName:null,branch:null},thread:{threadId:xn,title:`Example thread (viewer check)`,status:`active`,model:null,provider:null,providerAccountId:null,branch:null,lastActivityAt:Cn,metadata:null},reachability:`online`,execution:{available:!0,reason:null},replication:null,events:[{sequence:1,eventId:`example-user-1`,kind:`user_message`,turnId:null,text:`This is an example chat thread for verifying the Forge embed viewer. It is not a live Work Session.`,status:null,occurredAt:`2026-09-26T19:58:00.000Z`},{sequence:2,eventId:`example-assistant-1`,kind:`assistant_message`,turnId:null,text:`Understood. You should see this reply in the iframe under CMMD /forge, with the composer still available below.`,status:null,occurredAt:`2026-09-26T19:59:00.000Z`},{sequence:3,eventId:`example-user-2`,kind:`user_message`,turnId:null,text:`Thanks. If these three turns render, the thread wire is working.`,status:null,occurredAt:Cn}]}}function Pee(e){return e.runtimes.some(e=>e.runtime.id===bn)?{...e,runtimes:[...e.runtimes]}:{...e,runtimes:[...e.runtimes,Mee()]}}function A(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return typeof n==`string`&&n.trim().length>0?n.trim():null}function Fee(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return typeof n==`boolean`?n:null}function wn(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return typeof n==`string`&&n.trim().length>0?n.trim():typeof n==`number`&&Number.isFinite(n)?String(n):null}function Tn(e){return{...e.limit===void 0?{}:{limit:e.limit},...e.cursor?{cursor:e.cursor}:{}}}var En=class extends Error{constructor(e){super(`CmmdApiClient.${e} is not implemented yet`),this.name=`CmmdApiNotImplementedError`}};function Dn(e,t){if(Array.isArray(e))return e;if(e&&typeof e==`object`){let n=e[t];if(Array.isArray(n))return n}return[]}function On(e,t){if(Array.isArray(e))return e;if(e&&typeof e==`object`){let n=e[t];if(Array.isArray(n))return n}return[]}function kn(e,t){let n={};return e?.organizationId&&(n.orgId=e.organizationId),t!==void 0&&(n.taskId=String(t)),Object.keys(n).length>0?n:void 0}function An(e){let t=`${A(e,`firstName`)??``} ${A(e,`lastName`)??``}`.trim()||A(e,`username`)||A(e,`email`)||`Unknown`;return{id:wn(e,`userId`)??wn(e,`id`)??t,name:t,email:A(e,`email`),role:A(e,`role`),avatarUrl:A(e,`profileImage`)??A(e,`avatar`)}}function jn(e){let t=Pn(e,`user`)??e;return An({...typeof t==`object`&&t?t:{},userId:wn(e,`userId`)??wn(t,`id`),role:A(e,`role`)})}function Mn(e){let t=A(e,`authorFirstName`)??``,n=A(e,`authorLastName`)??``,r=A(e,`status`),i=r===`at_risk`||r===`off_track`||r===`complete`?r:`on_track`;return{id:wn(e,`id`)??``,status:i,body:A(e,`body`)??``,authorName:`${t} ${n}`.trim()||null,authorAvatarUrl:A(e,`authorProfileImage`)??null,createdAt:A(e,`createdAt`)??``,updatedAt:A(e,`updatedAt`)??A(e,`createdAt`)??``,canEdit:Fee(e,`canEdit`)??!1}}function Nn(e,t,n){let r=Array.isArray(e.data)?e.data.map(Mn):[];return{updates:r,pagination:e.pagination??{page:t,limit:n,total:r.length,hasMore:!1}}}function Pn(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return n&&typeof n==`object`?n:null}var Fn=[`avatarUrl`,`avatar_url`,`profileImage`,`profile_image`,`profileImageUrl`,`profile_image_url`,`image`,`imageUrl`,`image_url`,`picture`];function In(e,t){let n=Pn(e,t);if(!n)return null;for(let e of Fn){let t=A(n,e);if(t)return t}return null}function Ln(e,t){let n=Pn(e,t);return n?wn(n,`id`):null}function Rn(e,t){return!!(e&&typeof e==`object`&&Object.hasOwn(e,t))}function zn(e){let t={...e,id:wn(e,`id`)??e.id,title:e.title??A(e,`name`)??``},n=wn(e,`workspaceId`)??wn(e,`workspace_id`)??Ln(e,`workspace`)??e.workspaceId??null;return n!==null||Rn(e,`workspaceId`)?{...t,workspaceId:n,startDate:e.startDate??A(e,`start_date`)??null,endDate:e.endDate??A(e,`end_date`)??null}:t}function Bn(e){let t=e.ownerAvatarUrl??A(e,`owner_avatar_url`)??A(e,`ownerProfileImage`)??A(e,`owner_profile_image`)??A(e,`ownerImage`)??A(e,`owner_image`)??A(e,`ownerImageUrl`)??A(e,`owner_image_url`)??A(e,`createdByAvatarUrl`)??A(e,`created_by_avatar_url`)??A(e,`createdByProfileImage`)??A(e,`created_by_profile_image`)??In(e,`owner`)??In(e,`createdBy`)??In(e,`created_by`)??null,n={...e,id:wn(e,`id`)??e.id},r=wn(e,`campaignId`)??wn(e,`campaign_id`)??Ln(e,`campaign`)??e.campaignId??null;(r!==null||Rn(e,`campaignId`))&&(n.campaignId=r);let i=e.campaignTitle??A(e,`campaignTitle`)??A(e,`campaign_title`)??A(Pn(e,`campaign`),`title`)??A(Pn(e,`campaign`),`name`)??null;(i!==null||Rn(e,`campaignTitle`))&&(n.campaignTitle=i);let a=wn(e,`workspaceId`)??wn(e,`workspace_id`)??Ln(e,`workspace`)??e.workspaceId??null;(a!==null||Rn(e,`workspaceId`))&&(n.workspaceId=a);let o=e.workspaceName??A(e,`workspace_name`)??A(Pn(e,`workspace`),`name`)??null;(o!==null||Rn(e,`workspaceName`))&&(n.workspaceName=o);let s=A(e,`workspaceIconUrl`)??A(e,`workspace_icon_url`)??A(Pn(e,`workspace`),`iconUrl`)??null;(s!==null||Rn(e,`workspaceIconUrl`))&&(n.workspaceIconUrl=s);let c=wn(e,`ownerId`)??wn(e,`owner_id`)??Ln(e,`owner`)??e.ownerId??null;(c!==null||Rn(e,`ownerId`))&&(n.ownerId=c);let l=e.ownerName??A(e,`owner_name`)??A(Pn(e,`owner`),`name`)??null;(l!==null||Rn(e,`ownerName`))&&(n.ownerName=l),(t!==null||Rn(e,`ownerAvatarUrl`))&&(n.ownerAvatarUrl=t);let u=wn(e,`teamId`)??wn(e,`team_id`)??Ln(e,`team`)??e.teamId??null;(u!==null||Rn(e,`teamId`))&&(n.teamId=u);let d=e.teamName??A(e,`team_name`)??A(Pn(e,`team`),`name`)??null;(d!==null||Rn(e,`teamName`))&&(n.teamName=d);let f=e.startDate??A(e,`start_date`)??null;(f!==null||Rn(e,`startDate`))&&(n.startDate=f);let p=e.targetEndDate??A(e,`target_end_date`)??null;return(p!==null||Rn(e,`targetEndDate`))&&(n.targetEndDate=p),n}function Vn(e){if(Array.isArray(e))return e;if(e&&typeof e==`object`){let t=e;if(Array.isArray(t.items))return t.items;if(Array.isArray(t.results))return t.results}return[]}function Hn(e){return Vn(e).flatMap(e=>{let t=e,n=typeof t.id==`number`?t.id:null,r=typeof t.name==`string`?t.name:null;if(n===null||r===null)return[];let i=e=>typeof t[e]==`string`?t[e]:null;return[{id:n,name:r,startDate:i(`startDate`),endDate:i(`endDate`),status:i(`status`)}]})}function Un(e){if(e&&typeof e==`object`){let t=e;if(t.project&&typeof t.project==`object`)return t.project}return e}function Wn(e){if(e===null||e.trim()===``)return null;let t=Number(e);return Number.isSafeInteger(t)?t:e}var Gn=class e{cfg;putThreadDisposition;listThreadAttachments;uploadThreadAttachment;getThreadAttachmentDownloadUrl;deleteThreadAttachment;postThreadArchive;getForgeAccountPreferences;updateForgeAccountPreferences;getUserSettings;putUserSettings;commentEditIdempotencyKeys=new Map;commentDeleteIdempotencyKeys=new Map;constructor(e={}){let t=e.forgeOrigin===void 0,n=e.forgeOrigin??`http://localhost:13773`;this.cfg={resolveUrl:t?ae:e=>`${n}${e}`,maxRetries:e.maxRetries??3,onAuthExpired:e.onAuthExpired??pe,...t?{resolveBearerToken:()=>ce()?.bearerToken??null}:{}},this.putThreadDisposition=Tee(this.cfg);let r=Eee(this.cfg);this.listThreadAttachments=r.listThreadAttachments,this.uploadThreadAttachment=r.uploadThreadAttachment,this.getThreadAttachmentDownloadUrl=r.getThreadAttachmentDownloadUrl,this.deleteThreadAttachment=r.deleteThreadAttachment,this.postThreadArchive=kee(this.cfg);let i=hn(this.cfg);this.getForgeAccountPreferences=i.getForgeAccountPreferences,this.updateForgeAccountPreferences=i.updateForgeAccountPreferences,this.getUserSettings=i.getUserSettings,this.putUserSettings=i.putUserSettings}async getTask(e){return un(O({method:`GET`,path:`/api/cmmd/tasks/${e}`},this.cfg))}async getForgeTaskDetail(e){return O({method:`GET`,path:`/api/cmmd/tasks/${e}`},this.cfg)}async searchTasks(e){let t={q:e.q};return e.status&&(t.status=e.status),e.limit!==void 0&&(t.limit=e.limit),e.projectId&&(t.projectId=e.projectId),(await un(O({method:`GET`,path:`/api/cmmd/tasks/search`,query:t},this.cfg))).tasks??[]}async getTaskComments(e){return(await un(O({method:`GET`,path:`/api/cmmd/tasks/${e}/comments`},this.cfg))).comments??[]}async listProjectTaskComments(e){return(await un(O({method:`GET`,path:`/api/cmmd/tasks/${e}/comments`},this.cfg))).comments??[]}async createProjectTaskComment(e,t){return(await un(O({method:`POST`,path:`/api/cmmd/tasks/comment`,body:{taskId:e,content:t.content}},this.cfg))).details}async updateProjectTaskComment(e,t,n){return(await un(O({method:`PATCH`,path:`/api/cmmd/tasks/${e}/comments/${encodeURIComponent(t)}`,body:n},this.cfg))).comment}async deleteProjectTaskComment(e,t,n){return un(O({method:`DELETE`,path:`/api/cmmd/tasks/${e}/comments/${encodeURIComponent(t)}`,body:n},this.cfg))}async getTaskAttachments(e){return un(O({method:`GET`,path:`/api/cmmd/tasks/${e}/attachments`},this.cfg))}async getProjectRepository(e){return un(O({method:`GET`,path:`/api/cmmd/projects/${e}/repository`},this.cfg))}async listProjectRepositories(e){return(await un(O({method:`GET`,path:`/api/cmmd/projects/${e}/repositories`},this.cfg))).repositories}async getWorkspaceMembers(e){return un(O({method:`GET`,path:`/api/cmmd/organizations/${e}/members`},this.cfg))}async getWebSocketToken(e){return O({method:`GET`,path:`/api/cmmd/ws-token`,...e?.signal===void 0?{}:{signal:e.signal}},this.cfg)}async getProjectComments(e,t){let n={};return t?.organizationId&&(n.organizationId=t.organizationId),(await O({method:`GET`,path:`/api/cmmd/projects/${e}/comments`,query:n},this.cfg))?.comments??[]}async getProjectLink(e){return O({method:`GET`,path:`/.well-known/forge/project-link`,query:{environmentId:e.environmentId,projectId:e.projectId,cwd:e.cwd}},this.cfg)}async listProjectLinks(){return O({method:`GET`,path:`/.well-known/forge/project-links`,suppressBearerToken:!0},this.cfg)}async listProjectContextLinks(e){let t={};e.environmentId&&(t.forgeEnvironmentId=e.environmentId),e.projectId&&(t.forgeProjectId=e.projectId),e.githubRepoFullName&&(t.githubRepoFullName=e.githubRepoFullName),e.cmmdOrganizationId&&(t.cmmdOrganizationId=e.cmmdOrganizationId);let n=await O({method:`GET`,path:`/.well-known/forge/cmmd/project-links`,query:t},this.cfg),r=f(l)(n);return r._tag===`Some`?r.value.links:[]}async listCmmdWorkspaces(){return Vn(await O({method:`GET`,path:`/.well-known/forge/cmmd/workspaces`},this.cfg))}async listCmmdCampaigns(e){return Hn(await O({method:`GET`,path:`/.well-known/forge/cmmd/campaigns`,query:{workspaceId:e.workspaceId}},this.cfg))}async listCmmdProjects(e){return Vn(await O({method:`GET`,path:`/.well-known/forge/cmmd/projects`,query:{campaignId:e.campaignId}},this.cfg))}async updateTask(e,t){let n={taskId:e};return t.title!==void 0&&(n.title=t.title),t.description!==void 0&&(n.description=t.description),t.status!==void 0&&(n.status=t.status),t.priority!==void 0&&(n.priority=t.priority),t.dueDate!==void 0&&(n.dueDate=t.dueDate),t.assigneeId!==void 0&&(n.assigneeId=t.assigneeId),t.labels!==void 0&&(n.labels=t.labels),un(O({method:`POST`,path:`/api/cmmd/tasks/update`,body:n},this.cfg))}async createComment(e){return un(O({method:`POST`,path:`/api/cmmd/tasks/comment`,body:{taskId:e.entityId,content:e.content}},this.cfg))}async updateComment(e,t,n){let r=`${e}:${t}:${n}`,i=this.commentEditIdempotencyKeys.get(r)??crypto.randomUUID();this.commentEditIdempotencyKeys.set(r,i);let a=await un(O({method:`PATCH`,path:`/api/cmmd/tasks/${e}/comments/${t}`,body:{content:n,idempotencyKey:i}},this.cfg));return this.commentEditIdempotencyKeys.delete(r),a}async deleteComment(e,t){let n=`${e}:${t}`,r=this.commentDeleteIdempotencyKeys.get(n)??crypto.randomUUID();this.commentDeleteIdempotencyKeys.set(n,r),await un(O({method:`DELETE`,path:`/api/cmmd/tasks/${e}/comments/${t}`,body:{idempotencyKey:r}},this.cfg)),this.commentDeleteIdempotencyKeys.delete(n)}async createProjectComment(e,t){let n=(await O({method:`POST`,path:`/api/cmmd/projects/${e}/comments`,body:{content:t.content,organizationId:t.organizationId??null}},this.cfg))?.comment;if(!n)throw new be({kind:`server`,message:`CMMD did not return the created project comment.`});return n}async updateProject(e,t){let n={};for(let e of h){let r=t[e];r!==void 0&&(n[e]=x[e]===`nullableId`?Wn(r):r)}await O({method:`PATCH`,path:`/api/cmmd/projects/${e}`,body:n},this.cfg)}async setProjectLink(e){await O({method:`POST`,path:`/.well-known/forge/project-link`,body:e},this.cfg)}async deleteProjectLink(e){await O({method:`DELETE`,path:`/.well-known/forge/project-link`,query:{environmentId:e.environmentId,projectId:e.projectId,cwd:e.cwd,...e.cmmdProjectId?{cmmdProjectId:e.cmmdProjectId}:{}}},this.cfg)}async createCmmdProject(e){return O({method:`POST`,path:`/.well-known/forge/cmmd/projects`,body:e},this.cfg)}async ensureGitHubProjectContext(e){return O({method:`POST`,path:`/.well-known/forge/cmmd/github-project-contexts/ensure`,body:e},this.cfg)}async createBrainDoc(e){return O({method:`POST`,path:`/api/cmmd/brain-docs`,body:e},this.cfg)}async uploadTaskAttachment(e,t){let n=new FormData;return n.append(`file`,t),un(O({method:`POST`,path:`/api/cmmd/tasks/${e}/attachments`,form:n},this.cfg))}async archiveTask(e){await O({method:`POST`,path:`/api/cmmd/tasks/${e}/archive`},this.cfg)}async unarchiveTask(e){await O({method:`POST`,path:`/api/cmmd/tasks/${e}/unarchive`},this.cfg)}async getProfile(){return O({method:`GET`,path:`/api/cmmd/profile`},this.cfg)}async getUsageSummary(e){return O({method:`GET`,path:`/api/cmmd/usage/summary`,query:{sinceDay:e.sinceDay,untilDay:e.untilDay,timeZone:e.timeZone,...e.resolution===`hour`?{resolution:e.resolution,sinceTime:e.sinceTime,untilTime:e.untilTime}:{}}},this.cfg)}getBilling(e){return hee(this.cfg,e)}getBillingSeries(e){return gee(this.cfg,e)}getBootstrap(e){return _ee(this.cfg,e)}async getOrgProviderPolicy(){return O({method:`GET`,path:`/api/cmmd/org/provider-policy`},this.cfg)}async listSavedDataViews(e){return O({method:`GET`,path:`/api/cmmd/saved-views`,query:{surface:e.surface,projectId:e.projectId}},this.cfg)}async createSavedDataView(e){return O({method:`POST`,path:`/api/cmmd/saved-views`,body:e},this.cfg)}async importSavedDataView(e){return O({method:`POST`,path:`/api/cmmd/saved-views/import`,body:e},this.cfg)}async updateSavedDataView(e,t){return O({method:`PATCH`,path:`/api/cmmd/saved-views/${encodeURIComponent(e)}`,body:t},this.cfg)}async deleteSavedDataView(e,t){return O({method:`DELETE`,path:`/api/cmmd/saved-views/${encodeURIComponent(e)}`,query:t},this.cfg)}async getDeviceRegistry(e){return O({method:`GET`,path:`/api/cmmd/devices`,...e?.projectId===void 0?{}:{query:{projectId:String(e.projectId)}},...e?.signal===void 0?{}:{signal:e.signal}},this.cfg)}async registerDevice(e){return O({method:`POST`,path:`/api/cmmd/devices/register`,body:e},this.cfg)}async grantRuntimeAccess(e,t){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/access-grants`,body:t},this.cfg)}async revokeRuntimeAccess(e,t){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/access-grants/${encodeURIComponent(String(t))}/revoke`},this.cfg)}async issueRelayControlRoute(e,t){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/relay-routes`,body:t},this.cfg)}async issueRelayActionGrant(e,t){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/relay-action-grants`,body:t},this.cfg)}async getRuntimeInventory(e){let t=yn(e);return Pee(await O({method:`GET`,path:`/api/cmmd/runtime-inventory`,...Object.keys(t).length>0?{query:t}:{}},this.cfg))}async getRuntimeDiagnostics(e){return O({method:`GET`,path:`/api/cmmd/runtime-diagnostics/v2/runtimes/${encodeURIComponent(e)}`},this.cfg)}async getCloudProjectLifecyclePreflight(e){return(await O({method:`GET`,path:`/api/cmmd/forge-cloud-projects/${encodeURIComponent(String(e))}/lifecycle-preflight`},this.cfg)).preflight}async replaceRuntimeInventory(e,t){return O({method:`PUT`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/inventory`,body:t},this.cfg)}static PROVIDER_ACCOUNTS_PATH=`/api/cmmd/providers/accounts`;static PROVIDER_USAGE_PATH=`/api/cmmd/providers/usage`;static PROVIDER_USAGE_REFRESH_PATH=`/api/cmmd/providers/usage/refresh`;provisionAuthRuntime(){return dee(this.cfg)}getAuthRuntimeState(){return fee(this.cfg)}destroyAuthRuntime(){return pee(this.cfg)}connectAuthRuntime(){return mee(this.cfg)}getUserCodexCredential(){return vee(this.cfg)}disconnectUserCodexCredential(){return yee(this.cfg)}getUserClaudeCredential(){return bee(this.cfg)}async getProviderAccounts(){return O({method:`GET`,path:e.PROVIDER_ACCOUNTS_PATH},this.cfg)}async removeLinkedProviderAccount(e){return See(this.cfg,e)}async setProviderAccountDefault(t){return O({method:`PUT`,path:`${e.PROVIDER_ACCOUNTS_PATH}/default`,body:{provider:t.provider,provider_account_id:t.providerAccountId}},this.cfg)}async getProviderUsage(){return O({method:`GET`,path:e.PROVIDER_USAGE_PATH},this.cfg)}async refreshProviderUsage(t,n){return O({method:`POST`,path:e.PROVIDER_USAGE_REFRESH_PATH,body:{provider:t,providerAccountId:n}},this.cfg)}disconnectUserClaudeCredential(){return xee(this.cfg)}async getClaudeRuntimeReadiness(e){return O({method:`GET`,path:`/api/cmmd/providers/claude/runtime-readiness/${encodeURIComponent(e)}`},this.cfg)}async appendRuntimeThreadEvents(e,t,n){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/threads/${encodeURIComponent(t)}/events`,body:n},this.cfg)}async getRuntimeThreadReplica(e,t){return jee(e,t)?Nee():O({method:`GET`,path:`/api/cmmd/threads/${encodeURIComponent(e)}/${encodeURIComponent(t)}`},this.cfg)}renameCloudEnvironment(e,t){return gn(this.cfg,e,t)}renameDevice(e,t){return _n(this.cfg,e,t)}revokeDevice(e){return vn(this.cfg,e)}static SIM_PATH=`/api/cmmd/sim-host`;static simScope(e){return e?.orgId===void 0?``:`?orgId=${encodeURIComponent(String(e.orgId))}`}async listSimHosts(t){return O({method:`GET`,path:`${e.SIM_PATH}/hosts${e.simScope(t)}`},this.cfg)}async getSimLease(t){let n=new URLSearchParams({forgeEnvironmentId:t.forgeEnvironmentId,threadId:t.threadId,...t.orgId===void 0?{}:{orgId:String(t.orgId)}});return O({method:`GET`,path:`${e.SIM_PATH}/leases?${n.toString()}`},this.cfg)}async claimSimLease(t){return O({method:`POST`,path:`${e.SIM_PATH}/leases${e.simScope(t)}`,body:{hostId:t.hostId,forgeEnvironmentId:t.forgeEnvironmentId,threadId:t.threadId,ttlMs:t.ttlMs}},this.cfg)}async renewSimLease(t){return O({method:`POST`,path:`${e.SIM_PATH}/leases/${encodeURIComponent(String(t.leaseId))}/renew${e.simScope(t)}`,body:{generation:t.generation,rowVersion:t.rowVersion,ttlMs:t.ttlMs}},this.cfg)}async releaseSimLease(t){await O({method:`POST`,path:`${e.SIM_PATH}/leases/${encodeURIComponent(String(t.leaseId))}/release${e.simScope(t)}`,body:{generation:t.generation,rowVersion:t.rowVersion}},this.cfg)}async listCampaigns(e){let t={};return e?.orgId&&(t.orgId=e.orgId),e?.allWorkspaces&&(t.allWorkspaces=`true`),Dn(await O({method:`GET`,path:`/api/cmmd/campaigns`,query:t,...e?.signal?{signal:e.signal}:{}},this.cfg),`campaigns`).map(zn)}async getCampaign(e){return O({method:`GET`,path:`/api/cmmd/campaigns/${e}`},this.cfg)}async createCampaign(e){return O({method:`POST`,path:`/api/cmmd/campaigns`,body:e},this.cfg)}async updateCampaign(e,t){return O({method:`PUT`,path:`/api/cmmd/campaigns/${e}`,body:t},this.cfg)}async deleteCampaign(e){await O({method:`DELETE`,path:`/api/cmmd/campaigns/${e}`},this.cfg)}async listProjects(e){let t={};return e?.campaignId&&(t.campaignId=e.campaignId),e?.orgId&&(t.orgId=e.orgId),e?.allWorkspaces&&(t.allWorkspaces=`true`),Dn(await O({method:`GET`,path:`/api/cmmd/projects`,query:t,...e?.signal?{signal:e.signal}:{}},this.cfg),`projects`).map(Bn)}async listTasks(e){let t={};return e?.projectId&&(t.projectId=e.projectId),e?.status&&(t.status=e.status),O({method:`GET`,path:`/api/cmmd/tasks`,query:t},this.cfg)}async getProject(e){return Bn(await O({method:`GET`,path:`/api/cmmd/projects/${e}`},this.cfg))}async getProjectMembers(e){let t=await O({method:`GET`,path:`/api/cmmd/projects/${e}/members`},this.cfg);return Array.isArray(t)?t.map(An):[]}async listWorkspaceMembers(){let e=await O({method:`GET`,path:`/api/cmmd/members`},this.cfg);return Array.isArray(e)?e.map(jn):[]}async addProjectMember(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/members`,body:t},this.cfg)}async listProjectAgentMembers(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/agent-members`},this.cfg)}async createProjectAgentMember(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/agent-members`,body:t},this.cfg)}async renameProjectAgentMember(e,t,n){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/agent-members/${t}`,body:n},this.cfg)}async retireProjectAgentMember(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/agent-members/${t}/retire`,body:n},this.cfg)}async updateProjectAgentMemberAvatar(e,t,n){return O({method:`PUT`,path:`/api/cmmd/projects/${e}/agent-members/${t}/avatar`,body:n},this.cfg)}async listProjectAgentMemberInstances(e,t){return O({method:`GET`,path:`/api/cmmd/projects/${e}/agent-members/${t}/instances`},this.cfg)}async previewProjectAgentMemberConsolidation(e){return O({method:`POST`,path:`/api/cmmd/projects/${e}/agent-members/consolidation/preview`},this.cfg)}async applyProjectAgentMemberConsolidation(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/agent-members/consolidation/apply`,body:t},this.cfg)}async setProjectTaskAssignment(e,t,n){return O({method:`PUT`,path:`/api/cmmd/projects/${e}/tasks/${t}/assignment`,body:n},this.cfg)}async getProjectUpdates(e,t){let n=t?.page??1,r=t?.limit??10;return Nn(await O({method:`GET`,path:`/api/cmmd/projects/${e}/updates`,query:{page:n,limit:r},unwrapEnvelope:!1},this.cfg),n,r)}async createProjectUpdate(e,t){return Mn(await O({method:`POST`,path:`/api/cmmd/projects/${e}/updates`,body:t},this.cfg))}async updateProjectUpdate(e,t,n){return Mn(await O({method:`PATCH`,path:`/api/cmmd/projects/${e}/updates/${t}`,body:n},this.cfg))}async deleteProjectUpdate(e,t){await O({method:`DELETE`,path:`/api/cmmd/projects/${e}/updates/${t}`},this.cfg)}async listProjectMilestones(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/milestones`},this.cfg)}async createProjectMilestone(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/milestones`,body:t},this.cfg)}async updateProjectMilestone(e,t,n){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/milestones/${t}`,body:n},this.cfg)}async deleteProjectMilestone(e,t){await O({method:`DELETE`,path:`/api/cmmd/projects/${e}/milestones/${t}`},this.cfg)}async improveProjectContent(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/content/readability`,body:t},this.cfg)}async listProjectBoard(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/board`},this.cfg)}async createProjectTaskDraft(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/task-drafts`,body:t},this.cfg)}async getProjectTaskDraft(e,t){return O({method:`GET`,path:`/api/cmmd/projects/${e}/task-drafts/${t}`},this.cfg)}async updateProjectTaskDraft(e,t,n){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/task-drafts/${t}`,body:n},this.cfg)}async previewProjectTaskDraft(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/task-drafts/${t}/preview`,body:n},this.cfg)}async commitProjectTaskDraft(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/task-drafts/${t}/commit`,body:n},this.cfg)}async discardProjectTaskDraft(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/task-drafts/${t}/discard`,body:n},this.cfg)}async getProjectTaskWorkflow(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/task-workflow`},this.cfg)}async updateProjectTaskWorkflow(e,t){return O({method:`PUT`,path:`/api/cmmd/projects/${e}/task-workflow`,body:t},this.cfg)}async getProjectLeadPlan(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/plan`},this.cfg)}async activateProjectLeadAutomaticStaffing(e){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/authority/activate`,body:{}},this.cfg)}async getProjectLeadReadiness(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/readiness`},this.cfg)}async getProjectLeadCapabilities(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/capabilities`},this.cfg)}async getProjectLeadSummary(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/summary`},this.cfg)}async getProjectLeadDetail(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/detail`},this.cfg)}async getProjectLeadBriefing(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/briefing`},this.cfg)}async decideProjectLeadApproval(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/approvals/${t}/decision`,body:n},this.cfg)}async listProjectLeadEvents(e,t){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/events`,...t?{query:{...t.afterEventId===void 0?{}:{afterEventId:String(t.afterEventId)},...t.latest===void 0?{}:{latest:String(t.latest)},...t.limit===void 0?{}:{limit:String(t.limit)}}}:{}},this.cfg)}async explainProjectLead(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/explain`},this.cfg)}async pauseProjectLead(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/pause`,body:t},this.cfg)}async resumeProjectLead(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/resume`,body:t},this.cfg)}async reserveProjectLeadTask(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/tasks/${t}/reservations`,body:n},this.cfg)}async releaseProjectLeadReservation(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/reservations/${t}/release`,body:n},this.cfg)}async reconcileProjectLead(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/reconcile`,body:t},this.cfg)}async resolveProjectLeadAttention(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/attention/${t}/resolve`,body:n},this.cfg)}async listCenterBoard(e){let t={};return e?.status&&(t.status=e.status),e?.workspaceId&&(t.workspaceId=String(e.workspaceId)),e?.campaignId&&(t.campaignId=String(e.campaignId)),e?.ownerId&&(t.ownerId=String(e.ownerId)),e?.includeArchived!==void 0&&(t.includeArchived=e.includeArchived),e?.q&&(t.q=e.q),O({method:`GET`,path:`/api/cmmd/work-items/board`,query:t},this.cfg)}async listForgeAutomationPresets(){return On(await O({method:`GET`,path:`/api/cmmd/automations/presets`},this.cfg),`presets`)}async listUserForgeAutomationRules(){return On(await O({method:`GET`,path:`/api/cmmd/automations/user/rules`},this.cfg),`rules`)}async createUserForgeAutomationRule(e){return O({method:`POST`,path:`/api/cmmd/automations/user/rules`,body:e},this.cfg)}async updateUserForgeAutomationRule(e,t){return O({method:`PATCH`,path:`/api/cmmd/automations/user/rules/${e}`,body:t},this.cfg)}async listUserForgeAutomationRuns(e){return On(await O({method:`GET`,path:`/api/cmmd/automations/user/rules/${e}/runs`},this.cfg),`runs`)}async startUserForgeAutomationRun(e,t){return O({method:`POST`,path:`/api/cmmd/automations/user/rules/${e}/runs`,body:t},this.cfg)}async listForgeAutomationRules(e,t){let n=kn(t);return On(await O({method:`GET`,path:`/api/cmmd/automations/projects/${e}/rules`,...n?{query:n}:{}},this.cfg),`rules`)}async createForgeAutomationRule(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/projects/${e}/rules`,body:t,...r?{query:r}:{}},this.cfg)}async updateForgeAutomationRule(e,t,n,r){let i=kn(r);return O({method:`PATCH`,path:`/api/cmmd/automations/projects/${e}/rules/${t}`,body:n,...i?{query:i}:{}},this.cfg)}async listForgeAutomationRuns(e,t){let n=kn(t,t?.taskId);return On(await O({method:`GET`,path:`/api/cmmd/automations/projects/${e}/runs`,...n?{query:n}:{}},this.cfg),`runs`)}async getForgeAutomationRun(e,t){let n=kn(t);return O({method:`GET`,path:`/api/cmmd/automations/runs/${e}`,...n?{query:n}:{}},this.cfg)}async startForgeAutomationRun(e,t,n,r){let i=kn(r);return O({method:`POST`,path:`/api/cmmd/automations/projects/${e}/tasks/${t}/runs`,body:n,...i?{query:i}:{}},this.cfg)}async retryForgeAutomationRun(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/runs/${e}/retry`,body:t,...r?{query:r}:{}},this.cfg)}async cancelForgeAutomationRun(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/runs/${e}/cancel`,body:t,...r?{query:r}:{}},this.cfg)}async approveForgeAutomationEscalation(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/runs/${e}/escalations/approve`,body:t,...r?{query:r}:{}},this.cfg)}async rejectForgeAutomationEscalation(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/runs/${e}/escalations/reject`,body:t,...r?{query:r}:{}},this.cfg)}async createProjectBoardTask(e,t){let n={title:t.title};return t.description!==void 0&&(n.description=t.description),t.priority!==void 0&&(n.priority=t.priority),t.status!==void 0&&(n.status=t.status),t.workflowStageId!==void 0&&(n.workflowStageId=t.workflowStageId),t.assignee!==void 0&&(n.assignee=t.assignee),t.dueDate!==void 0&&(n.dueDate=t.dueDate),t.workItemType!==void 0&&(n.workItemType=t.workItemType),t.parentTaskId!==void 0&&(n.parentTaskId=t.parentTaskId),t.milestoneId!==void 0&&(n.milestoneId=t.milestoneId),t.dependsOn!==void 0&&(n.dependsOn=t.dependsOn),O({method:`POST`,path:`/api/cmmd/projects/${e}/board`,body:n},this.cfg)}async createCenterBoardTask(e){let t={title:e.title,projectId:e.projectId};return e.description!==void 0&&(t.description=e.description),e.priority!==void 0&&(t.priority=e.priority),e.status!==void 0&&(t.status=e.status),e.assignee!==void 0&&(t.assignee=e.assignee),e.dueDate!==void 0&&(t.dueDate=e.dueDate),e.workItemType!==void 0&&(t.workItemType=e.workItemType),e.parentTaskId!==void 0&&(t.parentTaskId=e.parentTaskId),e.milestoneId!==void 0&&(t.milestoneId=e.milestoneId),e.dependsOn!==void 0&&(t.dependsOn=e.dependsOn),O({method:`POST`,path:`/api/cmmd/work-items/board`,body:t},this.cfg)}async submitFeedback(e){let t={type:e.type,title:e.title,source:e.source};return e.description!==void 0&&(t.description=e.description),e.priority!==void 0&&(t.priority=e.priority),e.senderName!==void 0&&(t.senderName=e.senderName),O({method:`POST`,path:`/api/cmmd/feedback`,body:t},this.cfg)}async updateProjectBoardTask(e,t,n){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/board/${t}`,body:n},this.cfg)}async updateCenterBoardTask(e,t){return O({method:`PATCH`,path:`/api/cmmd/work-items/board/${e}`,body:t},this.cfg)}async moveCenterBoardTask(e,t){let n={toStatus:t.toStatus};return t.beforeTaskId!==void 0&&(n.beforeTaskId=t.beforeTaskId),t.afterTaskId!==void 0&&(n.afterTaskId=t.afterTaskId),O({method:`PATCH`,path:`/api/cmmd/work-items/board/${e}/move`,body:n},this.cfg)}async moveProjectBoardTask(e,t,n){let r={toStatus:n.toStatus};return n.toStageId!==void 0&&(r.toStageId=n.toStageId),n.beforeTaskId!==void 0&&(r.beforeTaskId=n.beforeTaskId),n.afterTaskId!==void 0&&(r.afterTaskId=n.afterTaskId),O({method:`PATCH`,path:`/api/cmmd/projects/${e}/board/${t}/move`,body:r},this.cfg)}async archiveProjectBoardTask(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/board/${t}/archive`},this.cfg)}async unarchiveProjectBoardTask(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/board/${t}/unarchive`},this.cfg)}async updateProjectBoardTaskStatus(e,t,n,r){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/board/${t}/status`,body:{status:n,...r?{workflowStageId:r}:{}}},this.cfg)}async listTaskExecutionOptions(e,t){return O({method:`GET`,path:`/api/cmmd/projects/${e}/board/${t}/execution-options`},this.cfg)}async createTaskWorkSession(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/board/${t}/work-sessions`,body:n},this.cfg)}async listProjectWorkSessions(e,t={}){return O({method:`GET`,path:`/api/cmmd/projects/${e}/work-sessions`,query:t},this.cfg)}async getWorkSession(e){return O({method:`GET`,path:`/api/cmmd/work-sessions/${e}`},this.cfg)}async updateWorkSessionStatus(e,t){return O({method:`PATCH`,path:`/api/cmmd/work-sessions/${e}`,body:{status:t}},this.cfg)}async attachWorkSessionThread(e,t){return O({method:`POST`,path:`/api/cmmd/work-sessions/${e}/threads`,body:t},this.cfg)}async listTaskConversations(e,t={}){return O({method:`GET`,path:`/api/cmmd/tasks/${e}/conversations`,query:Tn(t)},this.cfg)}async linkTaskConversation(e,t){return O({method:`POST`,path:`/api/cmmd/tasks/${e}/conversations`,body:t},this.cfg)}async getTaskHistory(e){return O({method:`GET`,path:`/api/cmmd/tasks/${e}/history`},this.cfg)}async upsertTaskPullRequest(e,t){return O({method:`PUT`,path:`/api/cmmd/tasks/${e}/pull-requests`,body:t},this.cfg)}postPullRequest(e,t){return O({method:`POST`,path:`/api/cmmd/pull-requests/${e}`,body:t},this.cfg)}async listPullRequests(e){return this.postPullRequest(`list`,e)}async getPullRequestListStats(e){return this.postPullRequest(`list-stats`,e)}async getPullRequestDetail(e){return this.postPullRequest(`detail`,e)}async getPullRequestActivity(e){return this.postPullRequest(`activity`,e)}async getPullRequestDiff(e){return this.postPullRequest(`diff`,e)}async getPullRequestDiffFileContents(e){return this.postPullRequest(`diff-file-contents`,e)}async getPullRequestThreadComments(e){return this.postPullRequest(`thread/comments`,e)}async getPullRequestReviewerCandidates(e){return this.postPullRequest(`reviewer-candidates`,e)}async runPullRequestAction(e){return this.postPullRequest(`action`,e)}async createPullRequestComment(e){return this.postPullRequest(`comment`,e)}async updatePullRequest(e){return this.postPullRequest(`update`,e)}async updatePullRequestComment(e){return this.postPullRequest(`comment/update`,e)}async submitPullRequestReview(e){return this.postPullRequest(`review`,e)}async replyToPullRequestThread(e){return this.postPullRequest(`thread/reply`,e)}async setPullRequestThreadResolution(e){return this.postPullRequest(`thread/resolution`,e)}async requestPullRequestReviewers(e){return this.postPullRequest(`reviewers`,e)}async setPullRequestReaction(e){return this.postPullRequest(`reaction`,e)}async getTaskConversation(e,t,n={}){return O({method:`GET`,path:`/api/cmmd/tasks/${e}/conversations/${encodeURIComponent(t)}`,query:Tn(n)},this.cfg)}async createTask(e){return O({method:`POST`,path:`/api/cmmd/tasks`,body:e},this.cfg)}async createSubtask(e){throw new En(`createSubtask`)}async createBoardTask(e){throw new En(`createBoardTask`)}async createProject(e){let t={};for(let[n,r]of Object.entries(e))r!=null&&(t[n]=r);return e.campaignId!==void 0&&e.campaignId!==null&&(t.campaignId=Wn(e.campaignId)),e.organizationId!==void 0&&e.organizationId!==null&&(t.organizationId=Wn(e.organizationId)),Un(await O({method:`POST`,path:`/api/cmmd/projects`,body:t},this.cfg))}async moveProject(e,t){let n={targetOrgId:Wn(t.targetOrgId)};return t.campaignStrategy!==void 0&&(n.campaignStrategy=t.campaignStrategy),t.targetCampaignId!==void 0&&(n.targetCampaignId=Wn(t.targetCampaignId)),t.dryRun!==void 0&&(n.dryRun=t.dryRun),O({method:`POST`,path:`/api/cmmd/projects/${e}/move`,body:n},this.cfg)}async uploadBrainDoc(e,t){throw new En(`uploadBrainDoc`)}};function Kn(e){return new Gn(e)}var qn=new Gn({onAuthExpired:pe});function Jn(e={resolveUrl:ae}){let t=ce()?.bearerToken;return t?{...e,bearerToken:t}:e}var Yn=new Set([`CMMD_AUTH_REQUIRED`,`CMMD_AUTH_EXPIRED`]);function Xn(e,t){return!e&&t===null?{}:{query:{...e?{fresh:1}:{},...t===null?{}:{orgId:t}}}}async function Zn(e){let t=`/api/cmmd/work-intake`,{getCurrentForgeWorkspaceId:n}=await _e(async()=>{let{getCurrentForgeWorkspaceId:e}=await import(`./currentForgeWorkspaceStore-Cukj-AKS.js`).then(e=>e.t);return{getCurrentForgeWorkspaceId:e}},__vite__mapDeps([0,1,2,3,4,5,6])),r=n(),i;try{i=await O({method:`GET`,path:t,allowRetry:!1,...Xn(e,r)},Jn())}catch(e){throw e instanceof be&&e.kind!==`auth`&&e.code!==null&&Yn.has(e.code)?new be({kind:`auth`,message:e.message,status:e.status??401,code:e.code}):e}if(!i)throw Error(`Invalid response from ${t}`);return i}async function Qn(e={}){return Zn(e.forceFresh===!0)}var j=typeof __SENTRY_DEBUG__>`u`||__SENTRY_DEBUG__,M=globalThis,$n=`10.74.0`;function er(){return tr(M),M}function tr(e){let t=e.__SENTRY__=e.__SENTRY__||{};return t.version=t.version||`10.74.0`,t[$n]=t[`10.74.0`]||{}}function nr(e,t,n=M){let r=n.__SENTRY__=n.__SENTRY__||{},i=r[$n]=r[`10.74.0`]||{};return i[e]||(i[e]=t())}var rr=[`debug`,`info`,`warn`,`error`,`log`,`assert`,`trace`],Iee=`Sentry Logger `,ir={};function ar(e){if(!(`console`in M))return e();let t=M.console,n={},r=Object.keys(ir);r.forEach(e=>{let r=ir[e];n[e]=t[e],t[e]=r});try{return e()}finally{r.forEach(e=>{t[e]=n[e]})}}function Lee(){cr().enabled=!0}function Ree(){cr().enabled=!1}function or(){return cr().enabled}function zee(...e){sr(`log`,...e)}function Bee(...e){sr(`warn`,...e)}function Vee(...e){sr(`error`,...e)}function sr(e,...t){j&&or()&&ar(()=>{M.console[e](`${Iee}[${e}]:`,...t)})}function cr(){return j?nr(`loggerSettings`,()=>({enabled:!1})):{enabled:!1}}var N={enable:Lee,disable:Ree,isEnabled:or,log:zee,warn:Bee,error:Vee},lr=50,ur=/\(error: (.*)\)/,dr=/captureMessage|captureException/;function fr(...e){let t=e.sort((e,t)=>e[0]-t[0]).map(e=>e[1]);return(e,n=0,r=0)=>{let i=[],a=e.split(`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/currentForgeWorkspaceStore-DANo4KV4.js","assets/rolldown-runtime-hePW80VL.js","assets/Stream-mUTFnSY9.js","assets/cmmdAuthRedirect-BUp02n05.js","assets/atomRegistry-C1yW8tyM.js","assets/src-CFUzoLms.js","assets/preload-helper-Czpn1I53.js","assets/transport-CgH8pQK3.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{Ha as n,Oa as r,Ua as i,Wa as a}from"./Stream-mUTFnSY9.js";import{Fn as o,H as s,In as c,J as l,Mn as u,Nt as d,On as f,Ot as p,Tn as m,a as h,bt as g,cn as _,er as v,gn as y,hn as b,i as x,jn as S,kn as C,pn as w,sn as T,v as ee,vn as E,vt as te,wt as ne,yn as re}from"./src-CFUzoLms.js";import{A as ie,F as ae,L as oe,M as D,N as se,P as ce,a as le,c as ue,d as de,l as fe,n as pe,s as me,u as he}from"./cmmdAuthRedirect-BUp02n05.js";import{t as ge}from"./utils-BQ72yH0H.js";import{t as _e}from"./preload-helper-Czpn1I53.js";import{o as ve,t as ye}from"./debouncer-BmyJL8Gi.js";import{n as O,t as be}from"./transport-CgH8pQK3.js";var k=t(a(),1),xe=typeof window<`u`&&(window.desktopBridge!==void 0||window.nativeApi!==void 0);function Se(e){return{id:e.id??`ws:${e.label}`,label:e.label,source:e.source??`manual`,target:e.target}}function Ce(e){return e?.target.wsBaseUrl??null}function we(e){return e?.target.httpBaseUrl??null}function Te(e,t){return{...e,environmentId:t.environmentId,label:t.label}}function Ee(e){return e.cloudMode?`cmmd-cloud-runtime`:`local-web`}function De(e){let t=Ee(e);return{topology:t,controlPlane:t!==`cmmd-cloud-runtime`,executionPlane:!0,workspaceProxy:!1}}function Oe(e){let t=e.topology===`cmmd-cloud-runtime`;return{cmmd:!0,ownerBootstrapPromotion:e.topology!==`cloud-shell`&&!t,bearerBootstrap:!0,desktopBootstrap:e.topology===`desktop-local`,providerCredentialBroker:e.topology===`cmmd-control-plane`}}function ke(e){let t=e.executionPlane;return{agents:t,browser:t,github:t,terminal:t,providerEgress:e.topology===`cmmd-control-plane`}}function Ae(e,t){return{localProjects:t.executionPlane,cloudProjects:e.cloudMode}}function je(e){let t=e.capabilities,n=t.runtime??De(t);return{repositoryIdentity:t.repositoryIdentity,pullRequests:t.pullRequests??!1,cloudMode:t.cloudMode,posthogPublicKey:t.posthogPublicKey,posthogHost:t.posthogHost,runtime:n,auth:t.auth??Oe(n),tools:t.tools??ke(n),projects:t.projects??Ae(t,n)}}function Me(e){return e?je(e).projects.cloudProjects:!1}function Ne(e){return e?je(e).runtime.workspaceProxy??!1:!1}function Pe(e,t){return{environmentId:e,projectId:t}}function Fe(e,t){return{environmentId:e,threadId:t}}var Ie=`scoped:v1:`;function Le(e){let t=`projectId`in e?e.projectId:e.threadId;return t.includes(`:`)||e.environmentId.startsWith(Ie)?`${Ie}${encodeURIComponent(e.environmentId)}:${encodeURIComponent(t)}`:`${e.environmentId}:${t}`}function eee(e){return Le(e)}function tee(e){return Le(e)}function Re(e){let t=e.slice(10),n=t.indexOf(`:`);if(n<=0||n>=t.length-1||t.indexOf(`:`,n+1)!==-1)return null;try{let e=decodeURIComponent(t.slice(0,n)),r=decodeURIComponent(t.slice(n+1));return e.length>0&&r.length>0?{environmentId:e,localId:r}:null}catch{return null}}function ze(e){if(e.startsWith(Ie))return Re(e);let t=e.lastIndexOf(`:`);return t<=0||t>=e.length-1?null:{environmentId:e.slice(0,t),localId:e.slice(t+1)}}function Be(e){let t=ze(e);return t?{environmentId:t.environmentId,projectId:t.localId}:null}function Ve(e){let t=ze(e);return t?{environmentId:t.environmentId,threadId:t.localId}:null}var He=n();function Ue(e){return e.stageLabel.trim().toLowerCase()===`latest`?e.baseName:`${e.baseName} (${e.stageLabel})`}var We=`Forge`,Ge=``,Ke=Ge===`latest`||Ge===`nightly`?Ge:null,qe=Ke===`nightly`?`Nightly`:Ke===`latest`?`Latest`:null,Je=qe??`Alpha`,Ye=qe?Ue({baseName:We,stageLabel:Je}):We,Xe=`0.13.4`,Ze=ge(`forge-app-top-bar drag-region @container/header-actions relative z-20 w-full min-w-0 shrink-0 bg-background`,`grid grid-cols-[minmax(0,1fr)_minmax(0,auto)] items-center`),Qe=`flex h-full min-w-0 items-center gap-1 md:gap-1.5`,$e=`flex h-touch min-w-0 max-w-full touch-manipulation items-center justify-center rounded-lg px-3 text-foreground transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring md:h-7 md:px-2`,nee={width:`calc(100% - var(--forge-right-panel-reserved-width, 0px))`},et=`forge-app-shell flex w-full min-w-0 flex-row`,tt=`forge-app-shell flex w-full min-w-0 flex-col`,nt=`flex min-h-0 min-w-0 flex-1 flex-col`,rt=`relative flex h-[var(--forge-content-height)] min-h-0 min-w-0 flex-1 overflow-hidden`,it=i();function at(e){let t=(0,He.c)(19),{showStageBadge:n,tone:r,variant:i}=e,a=n!==void 0&&n,o=r===void 0?`default`:r,s=(i===void 0?`default`:i)===`auth`,c=s?20:16,l=s?`h-5 w-5 shrink-0`:`h-4 w-4 shrink-0`,u;t[0]!==c||t[1]!==l?(u=(0,it.jsx)(`img`,{className:l,src:`/forge-mark.svg`,width:c,height:c,alt:``,"aria-hidden":`true`}),t[0]=c,t[1]=l,t[2]=u):u=t[2];let d=u,f=s?`text-[15px] sm:text-base`:`text-sm`,p=o===`on-dark`?`text-primary-foreground`:`text-foreground`,m;t[3]!==f||t[4]!==p?(m=ge(`truncate font-semibold tracking-tight`,f,p),t[3]=f,t[4]=p,t[5]=m):m=t[5];let h;t[6]===m?h=t[7]:(h=(0,it.jsx)(`span`,{className:m,children:We}),t[6]=m,t[7]=h);let g=h,_=s?`rounded-full bg-muted/50 px-2 py-0.5 text-[9px] leading-none font-medium tracking-[0.14em] text-muted-foreground/70 uppercase [text-indent:0.14em]`:`rounded-full bg-muted/50 px-1.5 py-0.5 text-[8px] leading-none font-medium tracking-[0.18em] text-muted-foreground/60 uppercase [text-indent:0.18em]`,v;t[8]===_?v=t[9]:(v=(0,it.jsx)(`span`,{className:_,children:Je}),t[8]=_,t[9]=v);let y=v;if(a){let e;t[10]!==d||t[11]!==g?(e=(0,it.jsxs)(`span`,{className:`flex items-center gap-2`,children:[d,g]}),t[10]=d,t[11]=g,t[12]=e):e=t[12];let n;return t[13]!==y||t[14]!==e?(n=(0,it.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-md`,"aria-label":Ye,children:[e,y]}),t[13]=y,t[14]=e,t[15]=n):n=t[15],n}let b;return t[16]!==d||t[17]!==g?(b=(0,it.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,"aria-label":Ye,children:[d,g]}),t[16]=d,t[17]=g,t[18]=b):b=t[18],b}function ot(e){let t=(0,He.c)(5),{className:n}=e,r;t[0]===n?r=t[1]:(r=ge(`pointer-events-none flex select-none items-center`,n),t[0]=n,t[1]=r);let i;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,it.jsx)(at,{}),t[2]=i):i=t[2];let a;return t[3]===r?a=t[4]:(a=(0,it.jsx)(`div`,{className:r,children:i}),t[3]=r,t[4]=a),a}function st(){let e=new Map;return{clear:()=>e.clear(),getItem:t=>e.get(t)??null,key:t=>Array.from(e.keys()).at(t)??null,get length(){return e.size},removeItem:t=>e.delete(t),setItem:(t,n)=>e.set(t,n)}}var ct=typeof window<`u`?window.localStorage:st(),lt=(e,t)=>m(u(e))(t),ut=(e,t)=>S(u(e))(t),dt=(e,t)=>{let n=ct.getItem(e);return n?lt(t,n):null},ft=(e,t,n)=>{let r=ut(n,t);ct.setItem(e,r)},pt=e=>{ct.removeItem(e)},mt=`forge:local_storage_change`;function ree(e){typeof window>`u`||window.dispatchEvent(new CustomEvent(mt,{detail:{key:e}}))}function iee(e,t,n){let[r,i]=(0,k.useState)(()=>{try{return dt(e,n)??t}catch(e){return console.error(`[LOCALSTORAGE] Error:`,e),t}}),a=(0,k.useCallback)(t=>{i(r=>{try{let i=typeof t==`function`?t(r):t;return i===null?pt(e):ft(e,i,n),queueMicrotask(()=>ree(e)),i}catch(e){return console.error(`[LOCALSTORAGE] Error:`,e),r}})},[e,n]),o=(0,k.useRef)(e);return(0,k.useEffect)(()=>{if(o.current!==e){o.current=e;try{let r=dt(e,n);i(r??t)}catch(e){console.error(`[LOCALSTORAGE] Error:`,e)}}},[e,t,n]),(0,k.useEffect)(()=>{let r=()=>{try{let r=dt(e,n);i(r??t)}catch(e){console.error(`[LOCALSTORAGE] Error:`,e)}},a=t=>{t.key===e&&r()},o=t=>{t.detail.key===e&&r()};return window.addEventListener(`storage`,a),window.addEventListener(mt,o),()=>{window.removeEventListener(`storage`,a),window.removeEventListener(mt,o)}},[e,t,n]),[r,a]}var ht=`cmmd-runtime:`;function gt(e){return`${ht}${e}`}var aee=`cmmd-cloud-project:`,oee=/^env_[0-9a-f]{32}$/,see=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,_t={shape:`local`,isCloud:!1,legacyRuntimeId:null},vt={shape:`cloud-project-placeholder`,isCloud:!0,legacyRuntimeId:null},yt={shape:`durable-environment`,isCloud:!0,legacyRuntimeId:null};function bt(e){if(typeof e!=`string`)return _t;if(e.startsWith(`cmmd-runtime:`)){let t=e.slice(ht.length);return see.test(t)?{shape:`legacy-runtime`,isCloud:!0,legacyRuntimeId:t}:_t}return e.startsWith(`cmmd-cloud-project:`)?vt:oee.test(e)?yt:_t}var xt=`forge:client-settings:v1`,St=`forge:saved-environment-registry:v1`,Ct=re({environmentId:p,label:E,httpBaseUrl:E,wsBaseUrl:E,createdAt:E,lastConnectedAt:b(E),cmmdOrganizationId:c(E),cmmdProjectId:c(E),runtimeId:c(E),runtimeTicketExpiresAt:c(E),lastAuthenticatedPullRequestCapability:c(_),bearerToken:c(E)}),wt=re({version:c(y),records:c(T(Ct))});function Tt(){return typeof window<`u`}var Et={uiFontSize:14,codeFontSize:15},Dt=[[`uiFontSize`,11,20],[`codeFontSize`,11,20]];function Ot(e){return e.defaultThreadRuntime===`desktop-cloud-bridge`?{...e,defaultThreadRuntime:`cloud`}:null}function kt(e){if(typeof e.fontDefaultsVersion==`number`)return null;let t=Object.entries(Et).filter(([t,n])=>e[t]===n);if(t.length===0)return null;let n={...e};for(let[e]of t)delete n[e];return n}function At(e){let t=Dt.flatMap(([t,n,r])=>{let i=e[t];if(typeof i!=`number`||!Number.isFinite(i))return[];let a=Math.min(r,Math.max(n,Math.round(i)));return a===i?[]:[[t,a]]});if(t.length===0)return null;let n={...e};for(let[e,r]of t)n[e]=r;return n}function jt(e){if(!e||typeof e!=`object`)return e;let t=e,n=!1;for(let e of[Ot,kt,At]){let r=e(t);r!==null&&(t=r,n=!0)}return n?t:e}function Mt(){if(!Tt())return null;try{let e=window.localStorage.getItem(xt);return e?C(ee)(jt(JSON.parse(e))):null}catch{return null}}function Nt(e){Tt()&&ft(xt,e,ee)}function Pt(){if(!Tt())return{};try{return dt(`forge:saved-environment-registry:v1`,wt)??{}}catch{return{}}}function Ft(e){Tt()&&ft(St,e,wt)}function It(){return Pt().records??[]}function Lt(e){Ft({version:1,records:e})}function Rt(){return It().map(e=>s(e))}function zt(e){let t=new Map(It().map(e=>[e.environmentId,e]));Lt(e.map(e=>{let n=bt(e.environmentId).legacyRuntimeId===null?t.get(e.environmentId)?.bearerToken:void 0;return n?{...s(e),bearerToken:n}:s(e)}))}function Bt(e){return It().find(t=>t.environmentId===e)?.bearerToken??null}function Vt(e,t){let n=Pt(),r=n.records??[],i=!1;return Ft({version:n.version??1,records:r.map(n=>n.environmentId===e?(i=!0,Object.assign(s(n),{bearerToken:t})):n)}),i}function Ht(e){let t=Pt();Ft({version:t.version??1,records:(t.records??[]).map(t=>t.environmentId===e?s(t):t)})}var Ut=C(ee);function Wt(){return typeof window>`u`?void 0:window.desktopBridge}function Gt(e){let t=Wt(),n=t?.[e];return typeof n==`function`?n.bind(t):null}async function Kt(){let e=Gt(`getClientSettings`);if(e){let t=await e();return t?Ut(t):null}return Mt()}async function qt(e){let t=Gt(`setClientSettings`);if(t)return t(e);Nt(e)}async function Jt(){let e=Gt(`getSavedEnvironmentRegistry`);return e?e():Rt()}async function Yt(e){let t=Gt(`setSavedEnvironmentRegistry`);if(t)return t(e);zt(e)}async function Xt(e){let t=Gt(`getSavedEnvironmentSecret`);return t?t(e):Bt(e)}async function Zt(e,t){let n=Gt(`setSavedEnvironmentSecret`);return n?n(e,t):Vt(e,t)}async function Qt(e){let t=Gt(`removeSavedEnvironmentSecret`);if(t)return t(e);Ht(e)}var $t=`token`;function en(e){return new URLSearchParams(e.hash.startsWith(`#`)?e.hash.slice(1):e.hash)}function tn(e){let t=en(e).get($t)?.trim()??``;if(t.length>0)return t;let n=e.searchParams.get($t)?.trim()??``;return n.length>0?n:null}function nn(e){let t=new URL(e.toString()),n=en(t);return n.has($t)&&(n.delete($t),t.hash=n.toString()),t.searchParams.delete($t),t}function rn(e,t){let n=new URL(e.toString());return n.searchParams.delete($t),n.hash=new URLSearchParams([[$t,t]]).toString(),n}function an(e,t){let n=new URL(e);return n.pathname=`/login`,rn(n,t).toString()}function cee(e){return rn(new URL(`/login`,window.location.href),e).toString()}var lee=`host`;function uee(e){let t=new URL(e),n=tn(t),r=new URL(`forge:///pair`);return r.searchParams.set(lee,t.origin),n&&r.searchParams.set($t,n),r.toString()}var on=`/api/cmmd/auth-runtime`;function dee(e){return O({method:`POST`,path:on},e)}function fee(e){return O({method:`GET`,path:on},e)}function pee(e){return O({method:`DELETE`,path:on},e)}function mee(e){return O({method:`POST`,path:`${on}/connect`},e)}function hee(e,t){return O({method:`GET`,path:`/api/cmmd/billing`,...t?.organizationId===void 0?{}:{query:{orgId:t.organizationId}}},e)}function gee(e,t){return O({method:`GET`,path:`/api/cmmd/billing/series`,query:{timeZone:t.timeZone}},e)}function _ee(e,t){return O({method:`GET`,path:`/api/cmmd/bootstrap`,...t?.organizationId===void 0?{}:{query:{orgId:t.organizationId}}},e)}var sn=`/api/cmmd/providers/codex/credential`,cn=`/api/cmmd/providers/claude/credential`;function vee(e){return O({method:`GET`,path:sn},e)}function yee(e){return O({method:`DELETE`,path:sn},e)}function bee(e){return O({method:`GET`,path:cn},e)}function xee(e){return O({method:`DELETE`,path:cn},e)}function See(e,t){return O({method:`DELETE`,path:`/api/cmmd/providers/accounts/${encodeURIComponent(String(t))}`},e)}function Cee(e,t,n){return`/api/cmmd/threads/${encodeURIComponent(e)}/${encodeURIComponent(t)}/${encodeURIComponent(n)}/disposition`}function wee(e,t,n,r,i){return O({method:`PUT`,path:Cee(t,n,r),body:i},e)}function Tee(e){return(t,n,r,i)=>wee(e,t,n,r,i)}function ln(e,t=``){return`/api/cmmd/thread-attachments/${encodeURIComponent(e)}${t}`}function Eee(e){return{async listThreadAttachments(t){return O({method:`GET`,path:ln(t)},e)},async uploadThreadAttachment(t,n,r,i){let a=new FormData;return a.append(`file`,n),r!==void 0&&a.append(`attachmentId`,r),O({method:`POST`,path:ln(t),form:a,...i===void 0?{}:{signal:i}},e)},async getThreadAttachmentDownloadUrl(t,n){return O({method:`GET`,path:ln(t,`/${encodeURIComponent(n)}/download`)},e)},async deleteThreadAttachment(t,n){await O({method:`DELETE`,path:ln(t,`/${encodeURIComponent(n)}`)},e)}}}var Dee=class extends Error{constructor(e){super(e),this.name=`CmmdApiAuthError`}},Oee=class extends Error{status;constructor(e,t){super(e),this.name=`CmmdApiServerError`,this.status=t}};async function un(e){try{return await e}catch(e){throw e instanceof be?e.kind===`auth`?new Dee(e.message):new Oee(e.message,e.status??502):e}}function dn(e,t,n){return`/api/cmmd/threads/${encodeURIComponent(e)}/${encodeURIComponent(t)}/${encodeURIComponent(n)}/archive`}function fn(e,t,n,r,i){return O({method:`POST`,path:dn(t,n,r),body:i},e)}function kee(e){return(t,n,r,i)=>fn(e,t,n,r,i)}function pn(e){return typeof e==`object`&&!!e&&`status`in e&&e.status===409}async function mn(e){let t={action:e.action,...e.operationId===void 0?{}:{operationId:e.operationId},expectedRevision:e.expectedRevision,force:e.force};try{return await e.submit(t)}catch(n){if(!pn(n))throw n;let r=await e.refresh();return e.submit({...t,expectedRevision:r.revision})}}function hn(e){return{getForgeAccountPreferences:()=>O({method:`GET`,path:`/api/cmmd/account/preferences`},e),updateForgeAccountPreferences:t=>O({method:`PATCH`,path:`/api/cmmd/account/preferences`,body:t},e),getUserSettings:t=>O({method:`GET`,path:`/api/cmmd/user/settings/${t}`},e),putUserSettings:(t,n)=>O({method:`PUT`,path:`/api/cmmd/user/settings/${t}`,body:n},e)}}function gn(e,t,n){return O({method:`POST`,path:`/api/cmmd/forge-runtimes/${encodeURIComponent(t)}/rename`,body:{displayName:n}},e)}function _n(e,t,n){return O({method:`POST`,path:`/api/cmmd/devices/${encodeURIComponent(String(t))}/rename`,body:{displayName:n}},e)}function vn(e,t){return O({method:`POST`,path:`/api/cmmd/devices/${encodeURIComponent(String(t))}/revoke`},e)}function yn(e){return{...e?.projectId===void 0?{}:{projectId:String(e.projectId)},...e?.allWorkspaces===!0?{allWorkspaces:`true`}:{},...e?.organizationId===void 0?{}:{orgId:String(e.organizationId)}}}var bn=`rt-demo`,xn=`th-demo`,Sn=`example-project`,Aee=`example-conversation`,Cn=`2026-09-26T20:00:00.000Z`;function jee(e,t){return e===bn&&t===xn}function Mee(){return{runtime:{id:bn,source:`forge-cloud`,runtimeKind:`cloud-vm`,displayName:`Example Forge Server`,status:`online`,endpointUrl:null,hostId:null,deviceId:null,workspaceRoot:null,githubRepoFullName:null,lastSeenAt:Cn,reachability:{status:`online`,lastReachableAt:Cn,source:`cloud-runtime`},metadata:null},inventoryStatus:`synced`,inventoryPublishedAt:Cn,projectCount:1,threadCount:1,projects:[{projectId:Sn,title:`Example project`,workspaceRoot:null,githubRepoFullName:null,branch:null,status:`active`,threadCount:1,lastActivityAt:Cn,metadata:null,publishedAt:Cn,updatedAt:Cn,threads:[{threadId:xn,title:`Example thread (viewer check)`,status:`active`,model:null,provider:null,providerAccountId:null,branch:null,lastMessagePreview:null,lastActivityAt:Cn,kind:`master`,parentThreadId:null,workerRole:null,anchorKind:`scratch`,anchorCmmdId:null,archive:null,disposition:{manualDisposition:null,automaticDisposition:null,effectiveDisposition:null,revision:null,source:null},metadata:null,publishedAt:Cn,updatedAt:Cn}]}]}}function Nee(){return{conversationId:Aee,runtime:{id:bn,source:`forge-cloud`,runtimeKind:`cloud-vm`,displayName:`Example Forge Server`,status:`online`,endpointUrl:null,deviceId:null,workspaceRoot:null,githubRepoFullName:null,lastSeenAt:Cn,metadata:null},project:{projectId:Sn,title:`Example project`,githubRepoFullName:null,branch:null},thread:{threadId:xn,title:`Example thread (viewer check)`,status:`active`,model:null,provider:null,providerAccountId:null,branch:null,lastActivityAt:Cn,metadata:null},reachability:`online`,execution:{available:!0,reason:null},replication:null,events:[{sequence:1,eventId:`example-user-1`,kind:`user_message`,turnId:null,text:`This is an example chat thread for verifying the Forge embed viewer. It is not a live Work Session.`,status:null,occurredAt:`2026-09-26T19:58:00.000Z`},{sequence:2,eventId:`example-assistant-1`,kind:`assistant_message`,turnId:null,text:`Understood. You should see this reply in the iframe under CMMD /forge, with the composer still available below.`,status:null,occurredAt:`2026-09-26T19:59:00.000Z`},{sequence:3,eventId:`example-user-2`,kind:`user_message`,turnId:null,text:`Thanks. If these three turns render, the thread wire is working.`,status:null,occurredAt:Cn}]}}function Pee(e){return e.runtimes.some(e=>e.runtime.id===bn)?{...e,runtimes:[...e.runtimes]}:{...e,runtimes:[...e.runtimes,Mee()]}}function A(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return typeof n==`string`&&n.trim().length>0?n.trim():null}function Fee(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return typeof n==`boolean`?n:null}function wn(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return typeof n==`string`&&n.trim().length>0?n.trim():typeof n==`number`&&Number.isFinite(n)?String(n):null}function Tn(e){return{...e.limit===void 0?{}:{limit:e.limit},...e.cursor?{cursor:e.cursor}:{}}}var En=class extends Error{constructor(e){super(`CmmdApiClient.${e} is not implemented yet`),this.name=`CmmdApiNotImplementedError`}};function Dn(e,t){if(Array.isArray(e))return e;if(e&&typeof e==`object`){let n=e[t];if(Array.isArray(n))return n}return[]}function On(e,t){if(Array.isArray(e))return e;if(e&&typeof e==`object`){let n=e[t];if(Array.isArray(n))return n}return[]}function kn(e,t){let n={};return e?.organizationId&&(n.orgId=e.organizationId),t!==void 0&&(n.taskId=String(t)),Object.keys(n).length>0?n:void 0}function An(e){let t=`${A(e,`firstName`)??``} ${A(e,`lastName`)??``}`.trim()||A(e,`username`)||A(e,`email`)||`Unknown`;return{id:wn(e,`userId`)??wn(e,`id`)??t,name:t,email:A(e,`email`),role:A(e,`role`),avatarUrl:A(e,`profileImage`)??A(e,`avatar`)}}function jn(e){let t=Pn(e,`user`)??e;return An({...typeof t==`object`&&t?t:{},userId:wn(e,`userId`)??wn(t,`id`),role:A(e,`role`)})}function Mn(e){let t=A(e,`authorFirstName`)??``,n=A(e,`authorLastName`)??``,r=A(e,`status`),i=r===`at_risk`||r===`off_track`||r===`complete`?r:`on_track`;return{id:wn(e,`id`)??``,status:i,body:A(e,`body`)??``,authorName:`${t} ${n}`.trim()||null,authorAvatarUrl:A(e,`authorProfileImage`)??null,createdAt:A(e,`createdAt`)??``,updatedAt:A(e,`updatedAt`)??A(e,`createdAt`)??``,canEdit:Fee(e,`canEdit`)??!1}}function Nn(e,t,n){let r=Array.isArray(e.data)?e.data.map(Mn):[];return{updates:r,pagination:e.pagination??{page:t,limit:n,total:r.length,hasMore:!1}}}function Pn(e,t){if(!e||typeof e!=`object`)return null;let n=e[t];return n&&typeof n==`object`?n:null}var Fn=[`avatarUrl`,`avatar_url`,`profileImage`,`profile_image`,`profileImageUrl`,`profile_image_url`,`image`,`imageUrl`,`image_url`,`picture`];function In(e,t){let n=Pn(e,t);if(!n)return null;for(let e of Fn){let t=A(n,e);if(t)return t}return null}function Ln(e,t){let n=Pn(e,t);return n?wn(n,`id`):null}function Rn(e,t){return!!(e&&typeof e==`object`&&Object.hasOwn(e,t))}function zn(e){let t={...e,id:wn(e,`id`)??e.id,title:e.title??A(e,`name`)??``},n=wn(e,`workspaceId`)??wn(e,`workspace_id`)??Ln(e,`workspace`)??e.workspaceId??null;return n!==null||Rn(e,`workspaceId`)?{...t,workspaceId:n,startDate:e.startDate??A(e,`start_date`)??null,endDate:e.endDate??A(e,`end_date`)??null}:t}function Bn(e){let t=e.ownerAvatarUrl??A(e,`owner_avatar_url`)??A(e,`ownerProfileImage`)??A(e,`owner_profile_image`)??A(e,`ownerImage`)??A(e,`owner_image`)??A(e,`ownerImageUrl`)??A(e,`owner_image_url`)??A(e,`createdByAvatarUrl`)??A(e,`created_by_avatar_url`)??A(e,`createdByProfileImage`)??A(e,`created_by_profile_image`)??In(e,`owner`)??In(e,`createdBy`)??In(e,`created_by`)??null,n={...e,id:wn(e,`id`)??e.id},r=wn(e,`campaignId`)??wn(e,`campaign_id`)??Ln(e,`campaign`)??e.campaignId??null;(r!==null||Rn(e,`campaignId`))&&(n.campaignId=r);let i=e.campaignTitle??A(e,`campaignTitle`)??A(e,`campaign_title`)??A(Pn(e,`campaign`),`title`)??A(Pn(e,`campaign`),`name`)??null;(i!==null||Rn(e,`campaignTitle`))&&(n.campaignTitle=i);let a=wn(e,`workspaceId`)??wn(e,`workspace_id`)??Ln(e,`workspace`)??e.workspaceId??null;(a!==null||Rn(e,`workspaceId`))&&(n.workspaceId=a);let o=e.workspaceName??A(e,`workspace_name`)??A(Pn(e,`workspace`),`name`)??null;(o!==null||Rn(e,`workspaceName`))&&(n.workspaceName=o);let s=A(e,`workspaceIconUrl`)??A(e,`workspace_icon_url`)??A(Pn(e,`workspace`),`iconUrl`)??null;(s!==null||Rn(e,`workspaceIconUrl`))&&(n.workspaceIconUrl=s);let c=wn(e,`ownerId`)??wn(e,`owner_id`)??Ln(e,`owner`)??e.ownerId??null;(c!==null||Rn(e,`ownerId`))&&(n.ownerId=c);let l=e.ownerName??A(e,`owner_name`)??A(Pn(e,`owner`),`name`)??null;(l!==null||Rn(e,`ownerName`))&&(n.ownerName=l),(t!==null||Rn(e,`ownerAvatarUrl`))&&(n.ownerAvatarUrl=t);let u=wn(e,`teamId`)??wn(e,`team_id`)??Ln(e,`team`)??e.teamId??null;(u!==null||Rn(e,`teamId`))&&(n.teamId=u);let d=e.teamName??A(e,`team_name`)??A(Pn(e,`team`),`name`)??null;(d!==null||Rn(e,`teamName`))&&(n.teamName=d);let f=e.startDate??A(e,`start_date`)??null;(f!==null||Rn(e,`startDate`))&&(n.startDate=f);let p=e.targetEndDate??A(e,`target_end_date`)??null;return(p!==null||Rn(e,`targetEndDate`))&&(n.targetEndDate=p),n}function Vn(e){if(Array.isArray(e))return e;if(e&&typeof e==`object`){let t=e;if(Array.isArray(t.items))return t.items;if(Array.isArray(t.results))return t.results}return[]}function Hn(e){return Vn(e).flatMap(e=>{let t=e,n=typeof t.id==`number`?t.id:null,r=typeof t.name==`string`?t.name:null;if(n===null||r===null)return[];let i=e=>typeof t[e]==`string`?t[e]:null;return[{id:n,name:r,startDate:i(`startDate`),endDate:i(`endDate`),status:i(`status`)}]})}function Un(e){if(e&&typeof e==`object`){let t=e;if(t.project&&typeof t.project==`object`)return t.project}return e}function Wn(e){if(e===null||e.trim()===``)return null;let t=Number(e);return Number.isSafeInteger(t)?t:e}var Gn=class e{cfg;putThreadDisposition;listThreadAttachments;uploadThreadAttachment;getThreadAttachmentDownloadUrl;deleteThreadAttachment;postThreadArchive;getForgeAccountPreferences;updateForgeAccountPreferences;getUserSettings;putUserSettings;commentEditIdempotencyKeys=new Map;commentDeleteIdempotencyKeys=new Map;constructor(e={}){let t=e.forgeOrigin===void 0,n=e.forgeOrigin??`http://localhost:13773`;this.cfg={resolveUrl:t?ae:e=>`${n}${e}`,maxRetries:e.maxRetries??3,onAuthExpired:e.onAuthExpired??pe,...t?{resolveBearerToken:()=>ce()?.bearerToken??null}:{}},this.putThreadDisposition=Tee(this.cfg);let r=Eee(this.cfg);this.listThreadAttachments=r.listThreadAttachments,this.uploadThreadAttachment=r.uploadThreadAttachment,this.getThreadAttachmentDownloadUrl=r.getThreadAttachmentDownloadUrl,this.deleteThreadAttachment=r.deleteThreadAttachment,this.postThreadArchive=kee(this.cfg);let i=hn(this.cfg);this.getForgeAccountPreferences=i.getForgeAccountPreferences,this.updateForgeAccountPreferences=i.updateForgeAccountPreferences,this.getUserSettings=i.getUserSettings,this.putUserSettings=i.putUserSettings}async getTask(e){return un(O({method:`GET`,path:`/api/cmmd/tasks/${e}`},this.cfg))}async getForgeTaskDetail(e){return O({method:`GET`,path:`/api/cmmd/tasks/${e}`},this.cfg)}async searchTasks(e){let t={q:e.q};return e.status&&(t.status=e.status),e.limit!==void 0&&(t.limit=e.limit),e.projectId&&(t.projectId=e.projectId),(await un(O({method:`GET`,path:`/api/cmmd/tasks/search`,query:t},this.cfg))).tasks??[]}async getTaskComments(e){return(await un(O({method:`GET`,path:`/api/cmmd/tasks/${e}/comments`},this.cfg))).comments??[]}async listProjectTaskComments(e){return(await un(O({method:`GET`,path:`/api/cmmd/tasks/${e}/comments`},this.cfg))).comments??[]}async createProjectTaskComment(e,t){return(await un(O({method:`POST`,path:`/api/cmmd/tasks/comment`,body:{taskId:e,content:t.content}},this.cfg))).details}async updateProjectTaskComment(e,t,n){return(await un(O({method:`PATCH`,path:`/api/cmmd/tasks/${e}/comments/${encodeURIComponent(t)}`,body:n},this.cfg))).comment}async deleteProjectTaskComment(e,t,n){return un(O({method:`DELETE`,path:`/api/cmmd/tasks/${e}/comments/${encodeURIComponent(t)}`,body:n},this.cfg))}async getTaskAttachments(e){return un(O({method:`GET`,path:`/api/cmmd/tasks/${e}/attachments`},this.cfg))}async getProjectRepository(e){return un(O({method:`GET`,path:`/api/cmmd/projects/${e}/repository`},this.cfg))}async listProjectRepositories(e){return(await un(O({method:`GET`,path:`/api/cmmd/projects/${e}/repositories`},this.cfg))).repositories}async getWorkspaceMembers(e){return un(O({method:`GET`,path:`/api/cmmd/organizations/${e}/members`},this.cfg))}async getWebSocketToken(e){return O({method:`GET`,path:`/api/cmmd/ws-token`,...e?.signal===void 0?{}:{signal:e.signal}},this.cfg)}async getProjectComments(e,t){let n={};return t?.organizationId&&(n.organizationId=t.organizationId),(await O({method:`GET`,path:`/api/cmmd/projects/${e}/comments`,query:n},this.cfg))?.comments??[]}async getProjectLink(e){return O({method:`GET`,path:`/.well-known/forge/project-link`,query:{environmentId:e.environmentId,projectId:e.projectId,cwd:e.cwd}},this.cfg)}async listProjectLinks(){return O({method:`GET`,path:`/.well-known/forge/project-links`,suppressBearerToken:!0},this.cfg)}async listProjectContextLinks(e){let t={};e.environmentId&&(t.forgeEnvironmentId=e.environmentId),e.projectId&&(t.forgeProjectId=e.projectId),e.githubRepoFullName&&(t.githubRepoFullName=e.githubRepoFullName),e.cmmdOrganizationId&&(t.cmmdOrganizationId=e.cmmdOrganizationId);let n=await O({method:`GET`,path:`/.well-known/forge/cmmd/project-links`,query:t},this.cfg),r=f(l)(n);return r._tag===`Some`?r.value.links:[]}async listCmmdWorkspaces(){return Vn(await O({method:`GET`,path:`/.well-known/forge/cmmd/workspaces`},this.cfg))}async listCmmdCampaigns(e){return Hn(await O({method:`GET`,path:`/.well-known/forge/cmmd/campaigns`,query:{workspaceId:e.workspaceId}},this.cfg))}async listCmmdProjects(e){return Vn(await O({method:`GET`,path:`/.well-known/forge/cmmd/projects`,query:{campaignId:e.campaignId}},this.cfg))}async updateTask(e,t){let n={taskId:e};return t.title!==void 0&&(n.title=t.title),t.description!==void 0&&(n.description=t.description),t.status!==void 0&&(n.status=t.status),t.priority!==void 0&&(n.priority=t.priority),t.dueDate!==void 0&&(n.dueDate=t.dueDate),t.assigneeId!==void 0&&(n.assigneeId=t.assigneeId),t.labels!==void 0&&(n.labels=t.labels),un(O({method:`POST`,path:`/api/cmmd/tasks/update`,body:n},this.cfg))}async createComment(e){return un(O({method:`POST`,path:`/api/cmmd/tasks/comment`,body:{taskId:e.entityId,content:e.content}},this.cfg))}async updateComment(e,t,n){let r=`${e}:${t}:${n}`,i=this.commentEditIdempotencyKeys.get(r)??crypto.randomUUID();this.commentEditIdempotencyKeys.set(r,i);let a=await un(O({method:`PATCH`,path:`/api/cmmd/tasks/${e}/comments/${t}`,body:{content:n,idempotencyKey:i}},this.cfg));return this.commentEditIdempotencyKeys.delete(r),a}async deleteComment(e,t){let n=`${e}:${t}`,r=this.commentDeleteIdempotencyKeys.get(n)??crypto.randomUUID();this.commentDeleteIdempotencyKeys.set(n,r),await un(O({method:`DELETE`,path:`/api/cmmd/tasks/${e}/comments/${t}`,body:{idempotencyKey:r}},this.cfg)),this.commentDeleteIdempotencyKeys.delete(n)}async createProjectComment(e,t){let n=(await O({method:`POST`,path:`/api/cmmd/projects/${e}/comments`,body:{content:t.content,organizationId:t.organizationId??null}},this.cfg))?.comment;if(!n)throw new be({kind:`server`,message:`CMMD did not return the created project comment.`});return n}async updateProject(e,t){let n={};for(let e of h){let r=t[e];r!==void 0&&(n[e]=x[e]===`nullableId`?Wn(r):r)}await O({method:`PATCH`,path:`/api/cmmd/projects/${e}`,body:n},this.cfg)}async setProjectLink(e){await O({method:`POST`,path:`/.well-known/forge/project-link`,body:e},this.cfg)}async deleteProjectLink(e){await O({method:`DELETE`,path:`/.well-known/forge/project-link`,query:{environmentId:e.environmentId,projectId:e.projectId,cwd:e.cwd,...e.cmmdProjectId?{cmmdProjectId:e.cmmdProjectId}:{}}},this.cfg)}async createCmmdProject(e){return O({method:`POST`,path:`/.well-known/forge/cmmd/projects`,body:e},this.cfg)}async ensureGitHubProjectContext(e){return O({method:`POST`,path:`/.well-known/forge/cmmd/github-project-contexts/ensure`,body:e},this.cfg)}async createBrainDoc(e){return O({method:`POST`,path:`/api/cmmd/brain-docs`,body:e},this.cfg)}async uploadTaskAttachment(e,t){let n=new FormData;return n.append(`file`,t),un(O({method:`POST`,path:`/api/cmmd/tasks/${e}/attachments`,form:n},this.cfg))}async archiveTask(e){await O({method:`POST`,path:`/api/cmmd/tasks/${e}/archive`},this.cfg)}async unarchiveTask(e){await O({method:`POST`,path:`/api/cmmd/tasks/${e}/unarchive`},this.cfg)}async getProfile(){return O({method:`GET`,path:`/api/cmmd/profile`},this.cfg)}async getUsageSummary(e){return O({method:`GET`,path:`/api/cmmd/usage/summary`,query:{sinceDay:e.sinceDay,untilDay:e.untilDay,timeZone:e.timeZone,...e.resolution===`hour`?{resolution:e.resolution,sinceTime:e.sinceTime,untilTime:e.untilTime}:{}}},this.cfg)}getBilling(e){return hee(this.cfg,e)}getBillingSeries(e){return gee(this.cfg,e)}getBootstrap(e){return _ee(this.cfg,e)}async getOrgProviderPolicy(){return O({method:`GET`,path:`/api/cmmd/org/provider-policy`},this.cfg)}async listSavedDataViews(e){return O({method:`GET`,path:`/api/cmmd/saved-views`,query:{surface:e.surface,projectId:e.projectId}},this.cfg)}async createSavedDataView(e){return O({method:`POST`,path:`/api/cmmd/saved-views`,body:e},this.cfg)}async importSavedDataView(e){return O({method:`POST`,path:`/api/cmmd/saved-views/import`,body:e},this.cfg)}async updateSavedDataView(e,t){return O({method:`PATCH`,path:`/api/cmmd/saved-views/${encodeURIComponent(e)}`,body:t},this.cfg)}async deleteSavedDataView(e,t){return O({method:`DELETE`,path:`/api/cmmd/saved-views/${encodeURIComponent(e)}`,query:t},this.cfg)}async getDeviceRegistry(e){return O({method:`GET`,path:`/api/cmmd/devices`,...e?.projectId===void 0?{}:{query:{projectId:String(e.projectId)}},...e?.signal===void 0?{}:{signal:e.signal}},this.cfg)}async registerDevice(e){return O({method:`POST`,path:`/api/cmmd/devices/register`,body:e},this.cfg)}async grantRuntimeAccess(e,t){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/access-grants`,body:t},this.cfg)}async revokeRuntimeAccess(e,t){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/access-grants/${encodeURIComponent(String(t))}/revoke`},this.cfg)}async issueRelayControlRoute(e,t){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/relay-routes`,body:t},this.cfg)}async issueRelayActionGrant(e,t){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/relay-action-grants`,body:t},this.cfg)}async getRuntimeInventory(e){let t=yn(e);return Pee(await O({method:`GET`,path:`/api/cmmd/runtime-inventory`,...Object.keys(t).length>0?{query:t}:{}},this.cfg))}async getRuntimeDiagnostics(e){return O({method:`GET`,path:`/api/cmmd/runtime-diagnostics/v2/runtimes/${encodeURIComponent(e)}`},this.cfg)}async getCloudProjectLifecyclePreflight(e){return(await O({method:`GET`,path:`/api/cmmd/forge-cloud-projects/${encodeURIComponent(String(e))}/lifecycle-preflight`},this.cfg)).preflight}async replaceRuntimeInventory(e,t){return O({method:`PUT`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/inventory`,body:t},this.cfg)}static PROVIDER_ACCOUNTS_PATH=`/api/cmmd/providers/accounts`;static PROVIDER_USAGE_PATH=`/api/cmmd/providers/usage`;static PROVIDER_USAGE_REFRESH_PATH=`/api/cmmd/providers/usage/refresh`;provisionAuthRuntime(){return dee(this.cfg)}getAuthRuntimeState(){return fee(this.cfg)}destroyAuthRuntime(){return pee(this.cfg)}connectAuthRuntime(){return mee(this.cfg)}getUserCodexCredential(){return vee(this.cfg)}disconnectUserCodexCredential(){return yee(this.cfg)}getUserClaudeCredential(){return bee(this.cfg)}async getProviderAccounts(){return O({method:`GET`,path:e.PROVIDER_ACCOUNTS_PATH},this.cfg)}async removeLinkedProviderAccount(e){return See(this.cfg,e)}async setProviderAccountDefault(t){return O({method:`PUT`,path:`${e.PROVIDER_ACCOUNTS_PATH}/default`,body:{provider:t.provider,provider_account_id:t.providerAccountId}},this.cfg)}async getProviderUsage(){return O({method:`GET`,path:e.PROVIDER_USAGE_PATH},this.cfg)}async refreshProviderUsage(t,n){return O({method:`POST`,path:e.PROVIDER_USAGE_REFRESH_PATH,body:{provider:t,providerAccountId:n}},this.cfg)}disconnectUserClaudeCredential(){return xee(this.cfg)}async getClaudeRuntimeReadiness(e){return O({method:`GET`,path:`/api/cmmd/providers/claude/runtime-readiness/${encodeURIComponent(e)}`},this.cfg)}async appendRuntimeThreadEvents(e,t,n){return O({method:`POST`,path:`/api/cmmd/devices/runtimes/${encodeURIComponent(e)}/threads/${encodeURIComponent(t)}/events`,body:n},this.cfg)}async getRuntimeThreadReplica(e,t){return jee(e,t)?Nee():O({method:`GET`,path:`/api/cmmd/threads/${encodeURIComponent(e)}/${encodeURIComponent(t)}`},this.cfg)}renameCloudEnvironment(e,t){return gn(this.cfg,e,t)}renameDevice(e,t){return _n(this.cfg,e,t)}revokeDevice(e){return vn(this.cfg,e)}static SIM_PATH=`/api/cmmd/sim-host`;static simScope(e){return e?.orgId===void 0?``:`?orgId=${encodeURIComponent(String(e.orgId))}`}async listSimHosts(t){return O({method:`GET`,path:`${e.SIM_PATH}/hosts${e.simScope(t)}`},this.cfg)}async getSimLease(t){let n=new URLSearchParams({forgeEnvironmentId:t.forgeEnvironmentId,threadId:t.threadId,...t.orgId===void 0?{}:{orgId:String(t.orgId)}});return O({method:`GET`,path:`${e.SIM_PATH}/leases?${n.toString()}`},this.cfg)}async claimSimLease(t){return O({method:`POST`,path:`${e.SIM_PATH}/leases${e.simScope(t)}`,body:{hostId:t.hostId,forgeEnvironmentId:t.forgeEnvironmentId,threadId:t.threadId,ttlMs:t.ttlMs}},this.cfg)}async renewSimLease(t){return O({method:`POST`,path:`${e.SIM_PATH}/leases/${encodeURIComponent(String(t.leaseId))}/renew${e.simScope(t)}`,body:{generation:t.generation,rowVersion:t.rowVersion,ttlMs:t.ttlMs}},this.cfg)}async releaseSimLease(t){await O({method:`POST`,path:`${e.SIM_PATH}/leases/${encodeURIComponent(String(t.leaseId))}/release${e.simScope(t)}`,body:{generation:t.generation,rowVersion:t.rowVersion}},this.cfg)}async listCampaigns(e){let t={};return e?.orgId&&(t.orgId=e.orgId),e?.allWorkspaces&&(t.allWorkspaces=`true`),Dn(await O({method:`GET`,path:`/api/cmmd/campaigns`,query:t,...e?.signal?{signal:e.signal}:{}},this.cfg),`campaigns`).map(zn)}async getCampaign(e){return O({method:`GET`,path:`/api/cmmd/campaigns/${e}`},this.cfg)}async createCampaign(e){return O({method:`POST`,path:`/api/cmmd/campaigns`,body:e},this.cfg)}async updateCampaign(e,t){return O({method:`PUT`,path:`/api/cmmd/campaigns/${e}`,body:t},this.cfg)}async deleteCampaign(e){await O({method:`DELETE`,path:`/api/cmmd/campaigns/${e}`},this.cfg)}async listProjects(e){let t={};return e?.campaignId&&(t.campaignId=e.campaignId),e?.orgId&&(t.orgId=e.orgId),e?.allWorkspaces&&(t.allWorkspaces=`true`),Dn(await O({method:`GET`,path:`/api/cmmd/projects`,query:t,...e?.signal?{signal:e.signal}:{}},this.cfg),`projects`).map(Bn)}async listTasks(e){let t={};return e?.projectId&&(t.projectId=e.projectId),e?.status&&(t.status=e.status),O({method:`GET`,path:`/api/cmmd/tasks`,query:t},this.cfg)}async getProject(e){return Bn(await O({method:`GET`,path:`/api/cmmd/projects/${e}`},this.cfg))}async getProjectMembers(e){let t=await O({method:`GET`,path:`/api/cmmd/projects/${e}/members`},this.cfg);return Array.isArray(t)?t.map(An):[]}async listWorkspaceMembers(){let e=await O({method:`GET`,path:`/api/cmmd/members`},this.cfg);return Array.isArray(e)?e.map(jn):[]}async addProjectMember(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/members`,body:t},this.cfg)}async listProjectAgentMembers(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/agent-members`},this.cfg)}async createProjectAgentMember(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/agent-members`,body:t},this.cfg)}async renameProjectAgentMember(e,t,n){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/agent-members/${t}`,body:n},this.cfg)}async retireProjectAgentMember(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/agent-members/${t}/retire`,body:n},this.cfg)}async updateProjectAgentMemberAvatar(e,t,n){return O({method:`PUT`,path:`/api/cmmd/projects/${e}/agent-members/${t}/avatar`,body:n},this.cfg)}async listProjectAgentMemberInstances(e,t){return O({method:`GET`,path:`/api/cmmd/projects/${e}/agent-members/${t}/instances`},this.cfg)}async previewProjectAgentMemberConsolidation(e){return O({method:`POST`,path:`/api/cmmd/projects/${e}/agent-members/consolidation/preview`},this.cfg)}async applyProjectAgentMemberConsolidation(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/agent-members/consolidation/apply`,body:t},this.cfg)}async setProjectTaskAssignment(e,t,n){return O({method:`PUT`,path:`/api/cmmd/projects/${e}/tasks/${t}/assignment`,body:n},this.cfg)}async getProjectUpdates(e,t){let n=t?.page??1,r=t?.limit??10;return Nn(await O({method:`GET`,path:`/api/cmmd/projects/${e}/updates`,query:{page:n,limit:r},unwrapEnvelope:!1},this.cfg),n,r)}async createProjectUpdate(e,t){return Mn(await O({method:`POST`,path:`/api/cmmd/projects/${e}/updates`,body:t},this.cfg))}async updateProjectUpdate(e,t,n){return Mn(await O({method:`PATCH`,path:`/api/cmmd/projects/${e}/updates/${t}`,body:n},this.cfg))}async deleteProjectUpdate(e,t){await O({method:`DELETE`,path:`/api/cmmd/projects/${e}/updates/${t}`},this.cfg)}async listProjectMilestones(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/milestones`},this.cfg)}async createProjectMilestone(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/milestones`,body:t},this.cfg)}async updateProjectMilestone(e,t,n){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/milestones/${t}`,body:n},this.cfg)}async deleteProjectMilestone(e,t){await O({method:`DELETE`,path:`/api/cmmd/projects/${e}/milestones/${t}`},this.cfg)}async improveProjectContent(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/content/readability`,body:t},this.cfg)}async listProjectBoard(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/board`},this.cfg)}async createProjectTaskDraft(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/task-drafts`,body:t},this.cfg)}async getProjectTaskDraft(e,t){return O({method:`GET`,path:`/api/cmmd/projects/${e}/task-drafts/${t}`},this.cfg)}async updateProjectTaskDraft(e,t,n){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/task-drafts/${t}`,body:n},this.cfg)}async previewProjectTaskDraft(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/task-drafts/${t}/preview`,body:n},this.cfg)}async commitProjectTaskDraft(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/task-drafts/${t}/commit`,body:n},this.cfg)}async discardProjectTaskDraft(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/task-drafts/${t}/discard`,body:n},this.cfg)}async getProjectTaskWorkflow(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/task-workflow`},this.cfg)}async updateProjectTaskWorkflow(e,t){return O({method:`PUT`,path:`/api/cmmd/projects/${e}/task-workflow`,body:t},this.cfg)}async getProjectLeadPlan(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/plan`},this.cfg)}async activateProjectLeadAutomaticStaffing(e){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/authority/activate`,body:{}},this.cfg)}async getProjectLeadReadiness(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/readiness`},this.cfg)}async getProjectLeadCapabilities(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/capabilities`},this.cfg)}async getProjectLeadSummary(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/summary`},this.cfg)}async getProjectLeadDetail(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/detail`},this.cfg)}async getProjectLeadBriefing(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/briefing`},this.cfg)}async decideProjectLeadApproval(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/approvals/${t}/decision`,body:n},this.cfg)}async listProjectLeadEvents(e,t){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/events`,...t?{query:{...t.afterEventId===void 0?{}:{afterEventId:String(t.afterEventId)},...t.latest===void 0?{}:{latest:String(t.latest)},...t.limit===void 0?{}:{limit:String(t.limit)}}}:{}},this.cfg)}async explainProjectLead(e){return O({method:`GET`,path:`/api/cmmd/projects/${e}/project-lead/explain`},this.cfg)}async pauseProjectLead(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/pause`,body:t},this.cfg)}async resumeProjectLead(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/resume`,body:t},this.cfg)}async reserveProjectLeadTask(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/tasks/${t}/reservations`,body:n},this.cfg)}async releaseProjectLeadReservation(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/reservations/${t}/release`,body:n},this.cfg)}async reconcileProjectLead(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/reconcile`,body:t},this.cfg)}async resolveProjectLeadAttention(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/project-lead/attention/${t}/resolve`,body:n},this.cfg)}async listCenterBoard(e){let t={};return e?.status&&(t.status=e.status),e?.workspaceId&&(t.workspaceId=String(e.workspaceId)),e?.campaignId&&(t.campaignId=String(e.campaignId)),e?.ownerId&&(t.ownerId=String(e.ownerId)),e?.includeArchived!==void 0&&(t.includeArchived=e.includeArchived),e?.q&&(t.q=e.q),O({method:`GET`,path:`/api/cmmd/work-items/board`,query:t},this.cfg)}async listForgeAutomationPresets(){return On(await O({method:`GET`,path:`/api/cmmd/automations/presets`},this.cfg),`presets`)}async listUserForgeAutomationRules(){return On(await O({method:`GET`,path:`/api/cmmd/automations/user/rules`},this.cfg),`rules`)}async createUserForgeAutomationRule(e){return O({method:`POST`,path:`/api/cmmd/automations/user/rules`,body:e},this.cfg)}async updateUserForgeAutomationRule(e,t){return O({method:`PATCH`,path:`/api/cmmd/automations/user/rules/${e}`,body:t},this.cfg)}async listUserForgeAutomationRuns(e){return On(await O({method:`GET`,path:`/api/cmmd/automations/user/rules/${e}/runs`},this.cfg),`runs`)}async startUserForgeAutomationRun(e,t){return O({method:`POST`,path:`/api/cmmd/automations/user/rules/${e}/runs`,body:t},this.cfg)}async listForgeAutomationRules(e,t){let n=kn(t);return On(await O({method:`GET`,path:`/api/cmmd/automations/projects/${e}/rules`,...n?{query:n}:{}},this.cfg),`rules`)}async createForgeAutomationRule(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/projects/${e}/rules`,body:t,...r?{query:r}:{}},this.cfg)}async updateForgeAutomationRule(e,t,n,r){let i=kn(r);return O({method:`PATCH`,path:`/api/cmmd/automations/projects/${e}/rules/${t}`,body:n,...i?{query:i}:{}},this.cfg)}async listForgeAutomationRuns(e,t){let n=kn(t,t?.taskId);return On(await O({method:`GET`,path:`/api/cmmd/automations/projects/${e}/runs`,...n?{query:n}:{}},this.cfg),`runs`)}async getForgeAutomationRun(e,t){let n=kn(t);return O({method:`GET`,path:`/api/cmmd/automations/runs/${e}`,...n?{query:n}:{}},this.cfg)}async startForgeAutomationRun(e,t,n,r){let i=kn(r);return O({method:`POST`,path:`/api/cmmd/automations/projects/${e}/tasks/${t}/runs`,body:n,...i?{query:i}:{}},this.cfg)}async retryForgeAutomationRun(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/runs/${e}/retry`,body:t,...r?{query:r}:{}},this.cfg)}async cancelForgeAutomationRun(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/runs/${e}/cancel`,body:t,...r?{query:r}:{}},this.cfg)}async approveForgeAutomationEscalation(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/runs/${e}/escalations/approve`,body:t,...r?{query:r}:{}},this.cfg)}async rejectForgeAutomationEscalation(e,t,n){let r=kn(n);return O({method:`POST`,path:`/api/cmmd/automations/runs/${e}/escalations/reject`,body:t,...r?{query:r}:{}},this.cfg)}async createProjectBoardTask(e,t){let n={title:t.title};return t.description!==void 0&&(n.description=t.description),t.priority!==void 0&&(n.priority=t.priority),t.status!==void 0&&(n.status=t.status),t.workflowStageId!==void 0&&(n.workflowStageId=t.workflowStageId),t.assignee!==void 0&&(n.assignee=t.assignee),t.dueDate!==void 0&&(n.dueDate=t.dueDate),t.workItemType!==void 0&&(n.workItemType=t.workItemType),t.parentTaskId!==void 0&&(n.parentTaskId=t.parentTaskId),t.milestoneId!==void 0&&(n.milestoneId=t.milestoneId),t.dependsOn!==void 0&&(n.dependsOn=t.dependsOn),O({method:`POST`,path:`/api/cmmd/projects/${e}/board`,body:n},this.cfg)}async createCenterBoardTask(e){let t={title:e.title,projectId:e.projectId};return e.description!==void 0&&(t.description=e.description),e.priority!==void 0&&(t.priority=e.priority),e.status!==void 0&&(t.status=e.status),e.assignee!==void 0&&(t.assignee=e.assignee),e.dueDate!==void 0&&(t.dueDate=e.dueDate),e.workItemType!==void 0&&(t.workItemType=e.workItemType),e.parentTaskId!==void 0&&(t.parentTaskId=e.parentTaskId),e.milestoneId!==void 0&&(t.milestoneId=e.milestoneId),e.dependsOn!==void 0&&(t.dependsOn=e.dependsOn),O({method:`POST`,path:`/api/cmmd/work-items/board`,body:t},this.cfg)}async submitFeedback(e){let t={type:e.type,title:e.title,source:e.source};return e.description!==void 0&&(t.description=e.description),e.priority!==void 0&&(t.priority=e.priority),e.senderName!==void 0&&(t.senderName=e.senderName),O({method:`POST`,path:`/api/cmmd/feedback`,body:t},this.cfg)}async updateProjectBoardTask(e,t,n){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/board/${t}`,body:n},this.cfg)}async updateCenterBoardTask(e,t){return O({method:`PATCH`,path:`/api/cmmd/work-items/board/${e}`,body:t},this.cfg)}async moveCenterBoardTask(e,t){let n={toStatus:t.toStatus};return t.beforeTaskId!==void 0&&(n.beforeTaskId=t.beforeTaskId),t.afterTaskId!==void 0&&(n.afterTaskId=t.afterTaskId),O({method:`PATCH`,path:`/api/cmmd/work-items/board/${e}/move`,body:n},this.cfg)}async moveProjectBoardTask(e,t,n){let r={toStatus:n.toStatus};return n.toStageId!==void 0&&(r.toStageId=n.toStageId),n.beforeTaskId!==void 0&&(r.beforeTaskId=n.beforeTaskId),n.afterTaskId!==void 0&&(r.afterTaskId=n.afterTaskId),O({method:`PATCH`,path:`/api/cmmd/projects/${e}/board/${t}/move`,body:r},this.cfg)}async archiveProjectBoardTask(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/board/${t}/archive`},this.cfg)}async unarchiveProjectBoardTask(e,t){return O({method:`POST`,path:`/api/cmmd/projects/${e}/board/${t}/unarchive`},this.cfg)}async updateProjectBoardTaskStatus(e,t,n,r){return O({method:`PATCH`,path:`/api/cmmd/projects/${e}/board/${t}/status`,body:{status:n,...r?{workflowStageId:r}:{}}},this.cfg)}async listTaskExecutionOptions(e,t){return O({method:`GET`,path:`/api/cmmd/projects/${e}/board/${t}/execution-options`},this.cfg)}async createTaskWorkSession(e,t,n){return O({method:`POST`,path:`/api/cmmd/projects/${e}/board/${t}/work-sessions`,body:n},this.cfg)}async listProjectWorkSessions(e,t={}){return O({method:`GET`,path:`/api/cmmd/projects/${e}/work-sessions`,query:t},this.cfg)}async getWorkSession(e){return O({method:`GET`,path:`/api/cmmd/work-sessions/${e}`},this.cfg)}async updateWorkSessionStatus(e,t){return O({method:`PATCH`,path:`/api/cmmd/work-sessions/${e}`,body:{status:t}},this.cfg)}async attachWorkSessionThread(e,t){return O({method:`POST`,path:`/api/cmmd/work-sessions/${e}/threads`,body:t},this.cfg)}async listTaskConversations(e,t={}){return O({method:`GET`,path:`/api/cmmd/tasks/${e}/conversations`,query:Tn(t)},this.cfg)}async linkTaskConversation(e,t){return O({method:`POST`,path:`/api/cmmd/tasks/${e}/conversations`,body:t},this.cfg)}async getTaskHistory(e){return O({method:`GET`,path:`/api/cmmd/tasks/${e}/history`},this.cfg)}async upsertTaskPullRequest(e,t){return O({method:`PUT`,path:`/api/cmmd/tasks/${e}/pull-requests`,body:t},this.cfg)}postPullRequest(e,t){return O({method:`POST`,path:`/api/cmmd/pull-requests/${e}`,body:t},this.cfg)}async listPullRequests(e){return this.postPullRequest(`list`,e)}async getPullRequestListStats(e){return this.postPullRequest(`list-stats`,e)}async getPullRequestDetail(e){return this.postPullRequest(`detail`,e)}async getPullRequestActivity(e){return this.postPullRequest(`activity`,e)}async getPullRequestDiff(e){return this.postPullRequest(`diff`,e)}async getPullRequestDiffFileContents(e){return this.postPullRequest(`diff-file-contents`,e)}async getPullRequestThreadComments(e){return this.postPullRequest(`thread/comments`,e)}async getPullRequestReviewerCandidates(e){return this.postPullRequest(`reviewer-candidates`,e)}async runPullRequestAction(e){return this.postPullRequest(`action`,e)}async createPullRequestComment(e){return this.postPullRequest(`comment`,e)}async updatePullRequest(e){return this.postPullRequest(`update`,e)}async updatePullRequestComment(e){return this.postPullRequest(`comment/update`,e)}async submitPullRequestReview(e){return this.postPullRequest(`review`,e)}async replyToPullRequestThread(e){return this.postPullRequest(`thread/reply`,e)}async setPullRequestThreadResolution(e){return this.postPullRequest(`thread/resolution`,e)}async requestPullRequestReviewers(e){return this.postPullRequest(`reviewers`,e)}async setPullRequestReaction(e){return this.postPullRequest(`reaction`,e)}async getTaskConversation(e,t,n={}){return O({method:`GET`,path:`/api/cmmd/tasks/${e}/conversations/${encodeURIComponent(t)}`,query:Tn(n)},this.cfg)}async createTask(e){return O({method:`POST`,path:`/api/cmmd/tasks`,body:e},this.cfg)}async createSubtask(e){throw new En(`createSubtask`)}async createBoardTask(e){throw new En(`createBoardTask`)}async createProject(e){let t={};for(let[n,r]of Object.entries(e))r!=null&&(t[n]=r);return e.campaignId!==void 0&&e.campaignId!==null&&(t.campaignId=Wn(e.campaignId)),e.organizationId!==void 0&&e.organizationId!==null&&(t.organizationId=Wn(e.organizationId)),Un(await O({method:`POST`,path:`/api/cmmd/projects`,body:t},this.cfg))}async moveProject(e,t){let n={targetOrgId:Wn(t.targetOrgId)};return t.campaignStrategy!==void 0&&(n.campaignStrategy=t.campaignStrategy),t.targetCampaignId!==void 0&&(n.targetCampaignId=Wn(t.targetCampaignId)),t.dryRun!==void 0&&(n.dryRun=t.dryRun),O({method:`POST`,path:`/api/cmmd/projects/${e}/move`,body:n},this.cfg)}async uploadBrainDoc(e,t){throw new En(`uploadBrainDoc`)}};function Kn(e){return new Gn(e)}var qn=new Gn({onAuthExpired:pe});function Jn(e={resolveUrl:ae}){let t=ce()?.bearerToken;return t?{...e,bearerToken:t}:e}var Yn=new Set([`CMMD_AUTH_REQUIRED`,`CMMD_AUTH_EXPIRED`]);function Xn(e,t){return!e&&t===null?{}:{query:{...e?{fresh:1}:{},...t===null?{}:{orgId:t}}}}async function Zn(e){let t=`/api/cmmd/work-intake`,{getCurrentForgeWorkspaceId:n}=await _e(async()=>{let{getCurrentForgeWorkspaceId:e}=await import(`./currentForgeWorkspaceStore-DANo4KV4.js`).then(e=>e.t);return{getCurrentForgeWorkspaceId:e}},__vite__mapDeps([0,1,2,3,4,5,6])),r=n(),i;try{i=await O({method:`GET`,path:t,allowRetry:!1,...Xn(e,r)},Jn())}catch(e){throw e instanceof be&&e.kind!==`auth`&&e.code!==null&&Yn.has(e.code)?new be({kind:`auth`,message:e.message,status:e.status??401,code:e.code}):e}if(!i)throw Error(`Invalid response from ${t}`);return i}async function Qn(e={}){return Zn(e.forceFresh===!0)}var j=typeof __SENTRY_DEBUG__>`u`||__SENTRY_DEBUG__,M=globalThis,$n=`10.74.0`;function er(){return tr(M),M}function tr(e){let t=e.__SENTRY__=e.__SENTRY__||{};return t.version=t.version||`10.74.0`,t[$n]=t[`10.74.0`]||{}}function nr(e,t,n=M){let r=n.__SENTRY__=n.__SENTRY__||{},i=r[$n]=r[`10.74.0`]||{};return i[e]||(i[e]=t())}var rr=[`debug`,`info`,`warn`,`error`,`log`,`assert`,`trace`],Iee=`Sentry Logger `,ir={};function ar(e){if(!(`console`in M))return e();let t=M.console,n={},r=Object.keys(ir);r.forEach(e=>{let r=ir[e];n[e]=t[e],t[e]=r});try{return e()}finally{r.forEach(e=>{t[e]=n[e]})}}function Lee(){cr().enabled=!0}function Ree(){cr().enabled=!1}function or(){return cr().enabled}function zee(...e){sr(`log`,...e)}function Bee(...e){sr(`warn`,...e)}function Vee(...e){sr(`error`,...e)}function sr(e,...t){j&&or()&&ar(()=>{M.console[e](`${Iee}[${e}]:`,...t)})}function cr(){return j?nr(`loggerSettings`,()=>({enabled:!1})):{enabled:!1}}var N={enable:Lee,disable:Ree,isEnabled:or,log:zee,warn:Bee,error:Vee},lr=50,ur=/\(error: (.*)\)/,dr=/captureMessage|captureException/;function fr(...e){let t=e.sort((e,t)=>e[0]-t[0]).map(e=>e[1]);return(e,n=0,r=0)=>{let i=[],a=e.split(`
|
|
3
3
|
`);for(let e=n;e<a.length;e++){let n=a[e];n.length>1024&&(n=n.slice(0,1024));let o=ur.test(n)?n.replace(ur,`$1`):n;if(!o.includes(`Error: `)){for(let e of t){let t=e(o);if(t){i.push(t);break}}if(i.length>=lr+r)break}}return mr(i.slice(r))}}function pr(e){return Array.isArray(e)?fr(...e):e}function mr(e){if(!e.length)return[];let t=Array.from(e);return/sentryWrapped/.test(hr(t).function||``)&&t.pop(),t.reverse(),dr.test(hr(t).function||``)&&(t.pop(),dr.test(hr(t).function||``)&&t.pop()),t.slice(0,lr).map(e=>({...e,filename:e.filename||hr(t).filename,function:e.function||`?`}))}function hr(e){return e[e.length-1]||{}}var gr=`<anonymous>`;function _r(e){try{return!e||typeof e!=`function`?gr:e.name||gr}catch{return gr}}function vr(e){let t=e.exception;if(t){let e=[];try{return t.values.forEach(t=>{t.stacktrace.frames&&e.push(...t.stacktrace.frames)}),e}catch{return}}}function yr(e){let t=e?.startsWith(`file://`)?e.slice(7):e;return t?.match(/\/[A-Z]:/)&&(t=t.slice(1)),t}var br={},xr={};function Sr(e,t){return br[e]=br[e]||[],br[e].push(t),()=>{let n=br[e];if(n){let e=n.indexOf(t);e!==-1&&n.splice(e,1)}}}function Cr(e,t){if(!xr[e]){xr[e]=!0;try{t()}catch(t){j&&N.error(`Error while instrumenting ${e}`,t)}}}function wr(e,t){let n=e&&br[e];if(n)for(let r of n)try{r(t)}catch(t){j&&N.error(`Error while triggering instrumentation handler.
|
|
4
4
|
Type: ${e}
|
|
5
5
|
Name: ${_r(r)}
|
|
@@ -1002,7 +1002,7 @@ or you can use record.mirror to access the mirror instance during recording.`,c4
|
|
|
1002
1002
|
now you can use replayer.getMirror() to access the mirror instance of a replayer,\r
|
|
1003
1003
|
or you can use record.mirror to access the mirror instance during recording.`,y6={map:{},getId(){return console.error(v6),-1},getNode(){return console.error(v6),null},removeNodeFromMap(){console.error(v6)},has(){return console.error(v6),!1},reset(){console.error(v6)}};typeof window<`u`&&window.Proxy&&window.Reflect&&(y6=new Proxy(y6,{get(e,t,n){return t===`map`&&console.error(v6),Reflect.get(e,t,n)}}));function b6(e,t,n,r,i=window){let a=i.Object.getOwnPropertyDescriptor(e,t);return i.Object.defineProperty(e,t,r?n:{set(e){E6(()=>{n.set.call(this,e)},0),a&&a.set&&a.set.call(this,e)}}),()=>b6(e,t,a||{},!0)}function x6(e,t,n){try{if(!(t in e))return()=>{};let r=e[t],i=n(r);return typeof i==`function`&&(i.prototype=i.prototype||{},Object.defineProperties(i,{__rrweb_original__:{enumerable:!1,value:r}})),e[t]=i,()=>{e[t]=r}}catch{return()=>{}}}Date.now().toString();function cpe(e){if(!e)return null;try{return e.nodeType===e.ELEMENT_NODE?e:e.parentElement}catch{return null}}function S6(e,t,n,r,i){if(!e)return!1;let a=cpe(e);if(!a)return!1;let o=_6(t,n);if(!i){let e=r&&a.matches(r);return o(a)&&!e}let s=g6(a,o),c=-1;return s<0?!1:(r&&(c=g6(a,_6(null,r))),s>-1&&c<0||s<c)}var C6={};function w6(e){let t=C6[e];if(t)return t;let n=window.document,r=window[e];if(n&&typeof n.createElement==`function`)try{let t=n.createElement(`iframe`);t.hidden=!0,n.head.appendChild(t);let i=t.contentWindow;i&&i[e]&&(r=i[e]),n.head.removeChild(t)}catch{}return C6[e]=r.bind(window)}function T6(...e){return w6(`requestAnimationFrame`)(...e)}function E6(...e){return w6(`setTimeout`)(...e)}var D6=(e=>(e[e[`2D`]=0]=`2D`,e[e.WebGL=1]=`WebGL`,e[e.WebGL2=2]=`WebGL2`,e))(D6||{}),O6;function lpe(e){O6=e}for(var k6=e=>O6?((...t)=>{try{return e(...t)}catch(e){if(O6&&O6(e)===!0)return()=>{};throw e}}):e,A6=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,upe=typeof Uint8Array>`u`?[]:new Uint8Array(256),j6=0;j6<A6.length;j6++)upe[A6.charCodeAt(j6)]=j6;var dpe=function(e){var t=new Uint8Array(e),n,r=t.length,i=``;for(n=0;n<r;n+=3)i+=A6[t[n]>>2],i+=A6[(t[n]&3)<<4|t[n+1]>>4],i+=A6[(t[n+1]&15)<<2|t[n+2]>>6],i+=A6[t[n+2]&63];return r%3==2?i=i.substring(0,i.length-1)+`=`:r%3==1&&(i=i.substring(0,i.length-2)+`==`),i},M6=new Map;function fpe(e,t){let n=M6.get(e);return n||(n=new Map,M6.set(e,n)),n.has(t)||n.set(t,[]),n.get(t)}var N6=(e,t,n)=>{if(!e||!(I6(e,t)||typeof e==`object`))return;let r=e.constructor.name,i=fpe(n,r),a=i.indexOf(e);return a===-1&&(a=i.length,i.push(e)),a};function P6(e,t,n){if(e instanceof Array)return e.map(e=>P6(e,t,n));if(e===null)return e;if(e instanceof Float32Array||e instanceof Float64Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Int16Array||e instanceof Int8Array||e instanceof Uint8ClampedArray)return{rr_type:e.constructor.name,args:[Object.values(e)]};if(e instanceof ArrayBuffer)return{rr_type:e.constructor.name,base64:dpe(e)};if(e instanceof DataView)return{rr_type:e.constructor.name,args:[P6(e.buffer,t,n),e.byteOffset,e.byteLength]};if(e instanceof HTMLImageElement){let t=e.constructor.name,{src:n}=e;return{rr_type:t,src:n}}return e instanceof HTMLCanvasElement?{rr_type:`HTMLImageElement`,src:e.toDataURL()}:e instanceof ImageData?{rr_type:e.constructor.name,args:[P6(e.data,t,n),e.width,e.height]}:I6(e,t)||typeof e==`object`?{rr_type:e.constructor.name,index:N6(e,t,n)}:e}var F6=(e,t,n)=>e.map(e=>P6(e,t,n)),I6=(e,t)=>!![`WebGLActiveInfo`,`WebGLBuffer`,`WebGLFramebuffer`,`WebGLProgram`,`WebGLRenderbuffer`,`WebGLShader`,`WebGLShaderPrecisionFormat`,`WebGLTexture`,`WebGLUniformLocation`,`WebGLVertexArrayObject`,`WebGLVertexArrayObjectOES`].filter(e=>typeof t[e]==`function`).find(n=>e instanceof t[n]);function ppe(e,t,n,r,i){let a=[],o=Object.getOwnPropertyNames(t.CanvasRenderingContext2D.prototype);for(let s of o)try{if(typeof t.CanvasRenderingContext2D.prototype[s]!=`function`)continue;let o=x6(t.CanvasRenderingContext2D.prototype,s,function(a){return function(...o){return S6(this.canvas,n,r,i,!0)||E6(()=>{let n=F6(o,t,this);e(this.canvas,{type:D6[`2D`],property:s,args:n})},0),a.apply(this,o)}});a.push(o)}catch{let n=b6(t.CanvasRenderingContext2D.prototype,s,{set(t){e(this.canvas,{type:D6[`2D`],property:s,args:[t],setter:!0})}});a.push(n)}return()=>{a.forEach(e=>e())}}function mpe(e){return e===`experimental-webgl`?`webgl`:e}function L6(e,t,n,r,i){let a=[];try{let o=x6(e.HTMLCanvasElement.prototype,`getContext`,function(e){return function(a,...o){if(!S6(this,t,n,r,!0)){let e=mpe(a);if(`__context`in this||(this.__context=e),i&&[`webgl`,`webgl2`].includes(e))if(o[0]&&typeof o[0]==`object`){let e=o[0];e.preserveDrawingBuffer||=!0}else o.splice(0,1,{preserveDrawingBuffer:!0})}return e.apply(this,[a,...o])}});a.push(o)}catch{console.error(`failed to patch HTMLCanvasElement.prototype.getContext`)}return()=>{a.forEach(e=>e())}}function R6(e,t,n,r,i,a,o,s){let c=[],l=Object.getOwnPropertyNames(e);for(let o of l)if(![`isContextLost`,`canvas`,`drawingBufferWidth`,`drawingBufferHeight`].includes(o))try{if(typeof e[o]!=`function`)continue;let l=x6(e,o,function(e){return function(...c){let l=e.apply(this,c);if(N6(l,s,this),`tagName`in this.canvas&&!S6(this.canvas,r,i,a,!0)){let e=F6(c,s,this),r={type:t,property:o,args:e};n(this.canvas,r)}return l}});c.push(l)}catch{let r=b6(e,o,{set(e){n(this.canvas,{type:t,property:o,args:[e],setter:!0})}});c.push(r)}return c}function hpe(e,t,n,r,i,a){let o=[];return o.push(...R6(t.WebGLRenderingContext.prototype,D6.WebGL,e,n,r,i,a,t)),t.WebGL2RenderingContext!==void 0&&o.push(...R6(t.WebGL2RenderingContext.prototype,D6.WebGL2,e,n,r,i,a,t)),()=>{o.forEach(e=>e())}}var gpe=`for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t="undefined"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s="";for(a=0;a<r;a+=3)s+=e[n[a]>>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+"=":r%3==1&&(s=s.substring(0,s.length-2)+"=="),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!("OffscreenCanvas"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+"-"+t;if("OffscreenCanvas"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext("2d");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return""}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext("bitmaprenderer"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:"low"});w?.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};`;function _pe(){let e=new Blob([gpe]);return URL.createObjectURL(e)}var vpe=class{constructor(e){this.pendingCanvasMutations=new Map,this.rafStamps={latestId:0,invokeId:null},this.shadowDoms=new Set,this.windowsSet=new WeakSet,this.windows=[],this.restoreHandlers=[],this.frozen=!1,this.locked=!1,this.snapshotInProgressMap=new Map,this.worker=null,this.lastSnapshotTime=0,this.processMutation=(e,t)=>{(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId||!this.rafStamps.invokeId)&&(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(e)||this.pendingCanvasMutations.set(e,[]),this.pendingCanvasMutations.get(e).push(t)};let{enableManualSnapshot:t,sampling:n=`all`,win:r,recordCanvas:i,errorHandler:a}=e;e.sampling=n,this.mutationCb=e.mutationCb,this.mirror=e.mirror,this.options=e,a&&lpe(a),(i&&typeof n==`number`||t)&&(this.worker=this.initFPSWorker()),this.addWindow(r),!t&&k6(()=>{i&&n===`all`&&(this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher()),i&&typeof n==`number`&&this.initCanvasFPSObserver()})()}reset(){this.pendingCanvasMutations.clear(),this.restoreHandlers.forEach(e=>{try{e()}catch{}}),this.restoreHandlers=[],this.windowsSet=new WeakSet,this.windows=[],this.shadowDoms=new Set,this.worker?.terminate(),this.worker=null,this.snapshotInProgressMap=new Map}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}addWindow(e){let{sampling:t=`all`,blockClass:n,blockSelector:r,unblockSelector:i,recordCanvas:a,enableManualSnapshot:o}=this.options;if(!this.windowsSet.has(e)){if(o){this.windowsSet.add(e),this.windows.push(new WeakRef(e));return}k6(()=>{if(a&&t===`all`&&this.initCanvasMutationObserver(e,n,r,i),a&&typeof t==`number`){let t=L6(e,n,r,i,!0);this.restoreHandlers.push(()=>{t()})}})(),this.windowsSet.add(e),this.windows.push(new WeakRef(e))}}addShadowRoot(e){this.shadowDoms.add(new WeakRef(e))}resetShadowRoots(){this.shadowDoms=new Set}snapshot(e,t){if(t?.skipRequestAnimationFrame){this.takeSnapshot(performance.now(),!0,e);return}T6(t=>this.takeSnapshot(t,!0,e))}initFPSWorker(){let e=new Worker(_pe());return e.onmessage=e=>{let t=e.data,{id:n}=t;if(this.snapshotInProgressMap.set(n,!1),!(`base64`in t))return;let{base64:r,type:i,width:a,height:o}=t;this.mutationCb({id:n,type:D6[`2D`],commands:[{property:`clearRect`,args:[0,0,a,o]},{property:`drawImage`,args:[{rr_type:`ImageBitmap`,args:[{rr_type:`Blob`,data:[{rr_type:`ArrayBuffer`,base64:r}],type:i}]},0,0,a,o]}]})},e}initCanvasFPSObserver(){let e;if(!this.windows.length&&!this.shadowDoms.size)return;let t=n=>{this.takeSnapshot(n,!1),e=T6(t)};e=T6(t),this.restoreHandlers.push(()=>{e&&cancelAnimationFrame(e)})}initCanvasMutationObserver(e,t,n,r){let i=L6(e,t,n,r,!1),a=ppe(this.processMutation.bind(this),e,t,n,r),o=hpe(this.processMutation.bind(this),e,t,n,r,this.mirror);this.restoreHandlers.push(()=>{i(),a(),o()})}getCanvasElements(e,t,n){let r=[],i=i=>{i.querySelectorAll(`canvas`).forEach(i=>{S6(i,e,t,n,!0)||r.push(i)})};for(let e of this.windows){let t=e.deref(),n;try{n=t&&t.document}catch{}n&&i(n)}for(let e of this.shadowDoms){let t=e.deref();t&&i(t)}return r}takeSnapshot(e,t,n){let{sampling:r,blockClass:i,blockSelector:a,unblockSelector:o,dataURLOptions:s,maxCanvasSize:c}=this.options,l=1e3/(r===`all`?2:r||2);return this.lastSnapshotTime&&e-this.lastSnapshotTime<l?!1:(this.lastSnapshotTime=e,(n?[n]:this.getCanvasElements(i,a,o)).forEach(e=>{let n=this.mirror.getId(e);if(!(!this.mirror.hasNode(e)||!e.width||!e.height||this.snapshotInProgressMap.get(n))){if(this.snapshotInProgressMap.set(n,!0),!t&&[`webgl`,`webgl2`].includes(e.__context)){let t=e.getContext(e.__context);t?.getContextAttributes()?.preserveDrawingBuffer===!1&&t.clear(t.COLOR_BUFFER_BIT)}createImageBitmap(e).then(t=>{this.worker?.postMessage({id:n,bitmap:t,width:e.width,height:e.height,dataURLOptions:s,maxCanvasSize:c},[t])}).catch(e=>{k6(()=>{throw this.snapshotInProgressMap.delete(n),e})()})}}),!0)}startPendingCanvasMutationFlusher(){T6(()=>this.flushPendingCanvasMutations())}startRAFTimestamping(){let e=t=>{this.rafStamps.latestId=t,T6(e)};T6(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach((e,t)=>{let n=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,n)}),T6(()=>this.flushPendingCanvasMutations())}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;let n=this.pendingCanvasMutations.get(e);if(!n||t===-1)return;let r=n.map(e=>{let{type:t,...n}=e;return n}),{type:i}=n[0];this.mutationCb({id:t,type:i,commands:r}),this.pendingCanvasMutations.delete(e)}};try{if(Array.from([1],e=>e*2)[0]!==2){let e=document.createElement(`iframe`);document.body.appendChild(e),Array.from=e.contentWindow?.Array.from||Array.from,document.body.removeChild(e)}}catch(e){console.debug(`Unable to override Array.from`,e)}ope();var ype;(function(e){e[e.NotStarted=0]=`NotStarted`,e[e.Running=1]=`Running`,e[e.Stopped=2]=`Stopped`})(ype||={});var z6={low:{sampling:{canvas:1},dataURLOptions:{type:`image/webp`,quality:.25}},medium:{sampling:{canvas:2},dataURLOptions:{type:`image/webp`,quality:.4}},high:{sampling:{canvas:4},dataURLOptions:{type:`image/webp`,quality:.5}}},bpe=`ReplayCanvas`,B6=1280,xpe=xB(((e={})=>{let[t,n]=e.maxCanvasSize||[],r={quality:e.quality||`medium`,enableManualSnapshot:e.enableManualSnapshot,maxCanvasSize:[t?Math.min(t,B6):B6,n?Math.min(n,B6):B6]},i,a,o=new Promise(e=>a=e);return{name:bpe,getOptions(){let{quality:e,enableManualSnapshot:t,maxCanvasSize:n}=r;return{enableManualSnapshot:t,recordCanvas:!0,getCanvasManager:e=>{let r=new vpe({...e,enableManualSnapshot:t,maxCanvasSize:n,errorHandler:e=>{try{typeof e==`object`&&(e.__rrweb__=!0)}catch{}}});return i=r,a(r),r},...z6[e]||z6.medium}},async snapshot(e,t){(i||await o).snapshot(e,t)}}}));function Spe(e){return e.split(`,`).some(e=>e.trim().startsWith(`sentry-`))}function V6(e){try{return new URL(e,J.location.origin).href}catch{return}}function Cpe(e){return e.entryType===`resource`&&`initiatorType`in e&&typeof e.nextHopProtocol==`string`&&(e.initiatorType===`fetch`||e.initiatorType===`xmlhttprequest`)}function H6(e){try{return new Headers(e)}catch{return}}var U6={traceFetch:!0,traceXHR:!0,enableHTTPTimings:!0,trackFetchStreamPerformance:!1};function W6(e,t){let{traceFetch:n,traceXHR:r,shouldCreateSpanForRequest:i,enableHTTPTimings:a,tracePropagationTargets:o,onRequestSpanStart:s,onRequestSpanEnd:c}={...U6,...t},l=typeof i==`function`?i:e=>!0,u=e=>Tpe(e,o),d={},f=e.getOptions().propagateTraceparent;n&&xJ(t=>{let n=fW(t,l,u,d,{propagateTraceparent:f,onRequestSpanEnd:c});if(n){let r=V6(t.fetchData.url),i=r?$V(r).host:void 0,o=r?tH(r):void 0;n.setAttributes({"http.url":o,"url.full":o,"server.address":i}),a&&G6(n,e),s?.(n,{headers:t.headers})}}),r&&g0(t=>{let n=Epe(t,l,u,d,f,c);n&&(a&&G6(n,e),s?.(n,{headers:H6(t.xhr.__sentry_xhr_v3__?.request_headers)}))})}var wpe=300;function G6(e,t){let{url:n}=YI(e).data;if(!n||typeof n!=`string`)return;let r=()=>void setTimeout(i);if(iR(t)){let t=e.end.bind(e);e.end=e=>{let n=e??KP(),a=!1,o=()=>{a||(a=!0,setTimeout(i),t(n),clearTimeout(s))};r=o;let s=setTimeout(o,wpe)}}let i=E$(`resource`,({entries:t})=>{t.forEach(t=>{Cpe(t)&&t.name.endsWith(n)&&(e.setAttributes(r1(t)),r())})})}function Tpe(e,t){let n=IJ();if(n){let r,i;try{r=new URL(e,n),i=new URL(n).origin}catch{return!1}let a=r.origin===i;return t?AP(r.toString(),t)||a&&AP(r.pathname,t):a}{let n=!!e.match(/^\/(?!\/)/);return t?AP(e,t):n}}function Epe(e,t,n,r,i,a){let o=e.xhr,s=o?.[h0];if(!o||o.__sentry_own_request__||!s)return;let{url:c,method:l}=s,u=_L()&&t(c);if(e.endTimestamp){let t=o.__sentry_xhr_span_id__;if(!t)return;let n=r[t];n&&(u&&s.status_code!==void 0&&(aI(n,s.status_code),n.end(),a?.(n,{headers:H6(C0(o)),error:e.error})),delete r[t]);return}let d=V6(c),f=$V(d||c),p=d?tH(d):void 0,m=tH(eH(c)),h=q(),g=!!fL(),_=g||!!h&&iR(h),v=u&&_?_R({name:`${l} ${m}`,attributes:{url:tH(c),type:`xhr`,"http.method":l,"http.url":p,"url.full":p,"server.address":f?.host,[VF]:`auto.http.browser`,[BF]:`http.client`,...f?.search&&{"http.query":f?.search},...f?.hash&&{"http.fragment":f?.hash}}}):new wL,y=NR(v)&&g?void 0:v;return u&&!_&&h?.recordDroppedEvent(`no_parent_span`,`span`),o.__sentry_xhr_span_id__=v.spanContext().spanId,r[o.__sentry_xhr_span_id__]=v,n(c)&&Dpe(o,_L()&&_?y:void 0,i),h&&h.emit(`beforeOutgoingRequestSpan`,v,e),v}function Dpe(e,t,n){let{"sentry-trace":r,baggage:i,traceparent:a}=dH({span:t,propagateTraceparent:n});r&&Ope(e,r,i,a)}function Ope(e,t,n,r){let i=e.__sentry_xhr_v3__?.request_headers;if(!(i?.[`sentry-trace`]||!e.setRequestHeader))try{if(e.setRequestHeader(`sentry-trace`,t),r&&!i?.traceparent&&e.setRequestHeader(`traceparent`,r),n){let t=i?.baggage;(!t||!Spe(t))&&e.setRequestHeader(`baggage`,n)}}catch{}}var K6=new WeakMap,q6=new WeakMap,kpe=9e4,Ape=[`text/event-stream`,`application/x-ndjson`,`application/stream+json`],J6=xB(()=>({name:`FetchStreamPerformance`,setup(){SJ(e=>{if(e.response){let t=K6.get(e.response);if(t&&e.endTimestamp){t.end(e.endTimestamp);let n=q6.get(e.response);n&&clearTimeout(n)}}}),xJ(e=>{if(e.endTimestamp&&e.response){let t=e.response.headers?.get(`content-type`)||``;if(e.response.headers?.get(`content-length`)||!Ape.some(e=>t.startsWith(e)))return;let n=e.fetchData?.url||``,r=e.fetchData?.method||`GET`,i=ZV(n),a=_R({name:`${r} ${n.startsWith(`data:`)?tH(n):i?QV(i):n}`,startTime:e.endTimestamp,attributes:{url:tH(n),"http.method":r,type:`fetch`,[BF]:`http.client.stream`,[VF]:`auto.http.browser.stream`}});K6.set(e.response,a);let o=setTimeout(()=>{a.isRecording()&&a.end()},kpe);q6.set(e.response,o)}})}})),jpe=`WebVitals`,Y6=xB((e={})=>{let t=new Set(e.ignore??[]);return{name:jpe,setup(n){let r=iR(n),{enableStandaloneClsSpans:i,enableStandaloneLcpSpans:a}=e._experiments??{},o=r||t.has(`cls`)?void 0:i||!1,s=r||t.has(`lcp`)?void 0:a||!1,c=u1({recordClsStandaloneSpans:o,recordLcpStandaloneSpans:s,client:n}),l=new WeakSet;n.on(`afterStartPageLoadSpan`,e=>{l.add(e)}),n.on(`spanEnd`,e=>{l.delete(e)&&(c(),y1(e,{recordClsOnPageloadSpan:o===!1,recordLcpOnPageloadSpan:s===!1,spanStreamingEnabled:r}))}),r?(t.has(`lcp`)||G1(n),t.has(`cls`)||q1(n),t.has(`inp`)||Y1()):t.has(`inp`)||R1()},afterAllSetup(){t.has(`inp`)||U1()}}});function Mpe(){J.document?J.document.addEventListener(`visibilitychange`,()=>{let e=fL();if(!e)return;let t=uL(e);if(J.document.hidden&&t){let e=`cancelled`,{op:n,status:r}=YI(t);X&&G.log(`[Tracing] Transaction: ${e} -> since tab moved to the background, op: ${n}`),r||t.setStatus({code:2,message:e}),t.setAttribute(`sentry.cancellation_reason`,`document.hidden`),t.end()}}):X&&G.warn(`[Tracing] Could not set up background tab detection due to lack of global document`)}var X6=`sentry_previous_trace`,Npe=`sentry.previous_trace`;function Ppe(e,{linkPreviousTrace:t,consistentTraceSampling:n}){let r=t===`session-storage`,i=r?Lpe():void 0;e.on(`spanStart`,e=>{if(uL(e)!==e)return;let t=K().getPropagationContext();i=Fpe(i,e,t),r&&Ipe(i)});let a=!0;n&&e.on(`beforeSampling`,e=>{if(!i)return;let t=K(),n=t.getPropagationContext();if(a&&n.parentSpanId){a=!1;return}t.setPropagationContext({...n,dsc:{...n.dsc,sample_rate:String(i.sampleRate),sampled:String(Z6(i.spanContext))},sampleRand:i.sampleRand}),e.parentSampled=Z6(i.spanContext),e.parentSampleRate=i.sampleRate,e.spanAttributes={...e.spanAttributes,[zF]:i.sampleRate}})}function Fpe(e,t,n){let r=YI(t);function i(){try{let e=Number(r.data?.[`sentry.sample_rate`]??n.dsc?.sample_rate);return Number.isNaN(e)?0:e}catch{return 0}}let a={spanContext:t.spanContext(),startTimestamp:r.start_timestamp,sampleRate:i(),sampleRand:n.sampleRand};if(!e)return a;let o=e.spanContext;return o.traceId===r.trace_id?e:(Date.now()/1e3-e.startTimestamp<=3600&&(X&&G.log(`Adding previous_trace \`${JSON.stringify(o)}\` link to span \`${JSON.stringify({op:r.op,...t.spanContext()})}\``),t.addLink({context:o,attributes:{[nI]:`previous_trace`}}),t.setAttribute(Npe,`${o.traceId}-${o.spanId}-${+!!Z6(o)}`)),a)}function Ipe(e){try{J.sessionStorage.setItem(X6,JSON.stringify(e))}catch(e){X&&G.warn(`Could not store previous trace in sessionStorage`,e)}}function Lpe(){try{let e=J.sessionStorage?.getItem(X6);return JSON.parse(e)}catch{return}}function Z6(e){return e.traceFlags===1}var Rpe=`BrowserTracing`,zpe=/Googlebot|Google-InspectionTool|Storebot-Google|Bingbot|Slurp|DuckDuckBot|Baiduspider|YandexBot|Facebot|facebookexternalhit|LinkedInBot|Twitterbot|Applebot/i;function Q6(){let e=J.navigator;return e?.userAgent?zpe.test(e.userAgent):!1}var Bpe={...PR,instrumentNavigation:!0,instrumentPageLoad:!0,markBackgroundSpan:!0,enableLongTask:!0,enableLongAnimationFrame:!0,enableInp:!0,ignoreResourceSpans:[],ignorePerformanceApiSpans:[],detectRedirects:!0,linkPreviousTrace:`in-memory`,consistentTraceSampling:!1,enableReportPageLoaded:!1,_experiments:{},...U6},$6=((e={})=>{`enableElementTiming`in e&&oN(()=>{console.warn("[Sentry] `enableElementTiming` is deprecated and no longer has any effect. Use the standalone `elementTimingIntegration` instead.")});let t={name:void 0,source:void 0},n=J.document,{enableInp:r,enableLongTask:i,enableLongAnimationFrame:a,_experiments:{enableInteractions:o,enableStandaloneClsSpans:s,enableStandaloneLcpSpans:c},beforeStartSpan:l,idleTimeout:u,finalTimeout:d,childSpanTimeout:f,markBackgroundSpan:p,traceFetch:m,traceXHR:h,trackFetchStreamPerformance:g,shouldCreateSpanForRequest:_,enableHTTPTimings:v,ignoreResourceSpans:y,ignorePerformanceApiSpans:b,instrumentPageLoad:x,instrumentNavigation:S,detectRedirects:C,linkPreviousTrace:w,consistentTraceSampling:T,enableReportPageLoaded:ee,onRequestSpanStart:E,onRequestSpanEnd:te}={...Bpe,...e},ne=Q6(),re,ie;function ae(e,r,i=!0,a){let o=r.op===`pageload`,s=r.name,c=l?l(r):r,p=ZV(a||IJ()),m={...p?.pathname&&{"url.path":p.pathname},...p&&!XV(p)&&{"url.full":p.href},...c.attributes};if(s!==c.name&&(m[LF]=`custom`),c.attributes=m,!i){let e=UP();_R({...c,startTime:e}).end(e);return}t.name=c.name,t.source=m[LF];let h=zR(c,{idleTimeout:u,finalTimeout:d,childSpanTimeout:f,disableAutoFinish:o,beforeSpanEnd:t=>{v1(t,{ignoreResourceSpans:y,ignorePerformanceApiSpans:b,spanStreamingEnabled:iR(e)}),o8(e,void 0);let n=K(),r=n.getPropagationContext();n.setPropagationContext({...r,traceId:h.spanContext().traceId,sampled:tL(h),dsc:jL(t)}),o&&(ie=void 0)},trimIdleSpanEndTimestamp:!ee});o&&ee&&(ie=h),o8(e,h);function g(){n&&[`interactive`,`complete`].includes(n.readyState)&&(e.emit(`idleSpanEnableAutoFinish`,h),n.removeEventListener(`readystatechange`,g))}o&&!ee&&n&&(n.addEventListener(`readystatechange`,g),g())}return{name:Rpe,setup(e){if(ne){X&&G.log(`[Tracing] Skipping browserTracingIntegration setup for bot user agent.`);return}if(gL(),a&&W.PerformanceObserver&&PerformanceObserver.supportedEntryTypes?.includes(`long-animation-frame`)?f1():i&&d1(),o&&p1(),C&&n){let e=()=>{re=KP()};addEventListener(`click`,e,{capture:!0}),addEventListener(`keydown`,e,{capture:!0,passive:!0})}function t(){let t=a8(e);t&&!YI(t).timestamp&&(X&&G.log(`[Tracing] Finishing current active span with op: ${YI(t).op}`),t.setAttribute(HF,`cancelled`),t.end())}e.on(`startNavigationSpan`,(n,r)=>{if(q()!==e)return;if(r?.isRedirect){X&&G.warn(`[Tracing] Detected redirect, navigation span will not be the root span, but a child span.`),ae(e,{op:`navigation.redirect`,...n},!1,r.url);return}re=void 0,t(),MF().setPropagationContext({traceId:tF(),sampleRand:Math.random(),propagationSpanId:_L()?void 0:nF()});let i=K();i.setPropagationContext({traceId:tF(),sampleRand:Math.random(),propagationSpanId:_L()?void 0:nF()}),i.setSDKProcessingMetadata({normalizedRequest:void 0}),ae(e,{op:`navigation`,...n,parentSpan:null,forceTransaction:!0},!0,r?.url)}),e.on(`startPageLoadSpan`,(n,r={})=>{if(q()!==e)return;t();let i=FI(r.sentryTrace||n8(`sentry-trace`)||r8(`sentry-trace`),r.baggage||n8(`baggage`)||r8(`baggage`)),a=K();a.setPropagationContext(i),_L()||(a.getPropagationContext().propagationSpanId=nF()),a.setSDKProcessingMetadata({normalizedRequest:XZ()}),ae(e,{op:`pageload`,...n})}),e.on(`endPageloadSpan`,()=>{ee&&ie&&(ie.setAttribute(HF,`reportPageLoaded`),ie.end())})},afterAllSetup(e){if(ne)return;e.addIntegration&&!e.getIntegrationByName?.(`WebVitals`)&&e.addIntegration(Y6({ignore:r?[]:[`inp`],_experiments:{enableStandaloneClsSpans:s,enableStandaloneLcpSpans:c}}));let n=IJ();if(w!==`off`&&Ppe(e,{linkPreviousTrace:w,consistentTraceSampling:T}),J.location){if(x){let t=YP();e8(e,{name:J.location.pathname,startTime:t?t/1e3:void 0,attributes:{[LF]:`url`,[VF]:`auto.pageload.browser`}})}S&&c0(({to:t,from:r})=>{if(r===void 0&&n?.indexOf(t)!==-1){n=void 0;return}n=void 0;let i=ZV(t),a=a8(e),o=a&&C&&Hpe(a,re);t8(e,{name:i?.pathname||J.location.pathname,attributes:{[LF]:`url`,[VF]:`auto.navigation.browser`}},{url:t,isRedirect:o})})}p&&Mpe(),o&&Vpe(e,u,d,f,t),W6(e,{traceFetch:m,traceXHR:h,tracePropagationTargets:e.getOptions().tracePropagationTargets,shouldCreateSpanForRequest:_,enableHTTPTimings:v,onRequestSpanStart:E,onRequestSpanEnd:te}),g&&e.addIntegration(J6())}}});function e8(e,t,n){e.emit(`startPageLoadSpan`,t,n),K().setTransactionName(t.name);let r=a8(e);return r&&e.emit(`afterStartPageLoadSpan`,r),r}function t8(e,t,n){let{url:r,isRedirect:i}=n||{};e.emit(`beforeStartNavigationSpan`,t,{isRedirect:i,url:r}),e.emit(`startNavigationSpan`,t,{isRedirect:i,url:r});let a=K();return a.setTransactionName(t.name),r&&!i&&a.setSDKProcessingMetadata({normalizedRequest:{...XZ(),url:r}}),a8(e)}function n8(e){return(J.document?.querySelector(`meta[name=${e}]`))?.getAttribute(`content`)||void 0}function r8(e){return(J.performance?.getEntriesByType?.(`navigation`)[0])?.serverTiming?.find(t=>t.name===e)?.description}function Vpe(e,t,n,r,i){let a=J.document,o;a&&addEventListener(`click`,()=>{let a=`ui.action.click`,s=a8(e);if(s){let e=YI(s).op;if([`navigation`,`pageload`].includes(e)){X&&G.warn(`[Tracing] Did not create ${a} span because a pageload or navigation span is in progress.`);return}}if(o&&=(o.setAttribute(HF,`interactionInterrupted`),o.end(),void 0),!i.name){X&&G.warn(`[Tracing] Did not create ${a} transaction because _latestRouteName is missing.`);return}o=zR({name:i.name,op:a,attributes:{[LF]:i.source||`url`}},{idleTimeout:t,finalTimeout:n,childSpanTimeout:r})},{capture:!0})}var i8=`_sentry_idleSpan`;function a8(e){return e[i8]}function o8(e,t){eP(e,i8,t)}var s8=1.5;function Hpe(e,t){let n=YI(e),r=UP();return!(r-n.start_timestamp>s8||t&&r-t<=s8)}function Upe(e=q()){e?.emit(`endPageloadSpan`)}function Wpe(e){let t=fL();if(t===e)return;let n=K();e.end=new Proxy(e.end,{apply(e,r,i){return oF(n,t),Reflect.apply(e,r,i)}}),oF(n,e)}var Gpe=xB(()=>({name:`SpanStreaming`,beforeSetup(e){let t=e.getOptions();t.traceLifecycle||=(X&&G.log('[SpanStreaming] setting `traceLifecycle` to "stream"'),`stream`)},setup(e){let t=`SpanStreaming integration requires`,n=`Falling back to static trace lifecycle.`,r=e.getOptions();if(!iR(e)){r.traceLifecycle=`static`,X&&G.warn(`${t} \`traceLifecycle\` to be set to "stream"! ${n}`);return}let i=r.beforeSendSpan;if(i&&!PL(i)){r.traceLifecycle=`static`,X&&G.warn(`${t} a beforeSendSpan callback using \`withStreamedSpan\`! ${n}`);return}let a=new pJ(e);e.on(`afterSpanEnd`,t=>{tL(t)&&a.add(dz(t,e))}),e.on(`afterSegmentSpanEnd`,e=>{let t=e.spanContext().traceId;setTimeout(()=>{a.flush(t)},500)})}})),c8=1e6,Kpe=`window`in W&&W.window===W&&typeof importScripts>`u`,l8=`0`,u8=Kpe?`main`:`worker`,d8=J.navigator,f8=``,p8=``,m8=``,h8=d8?.userAgent||``,g8=``,qpe=d8?.language||d8?.languages?.[0]||``;function Jpe(e){return typeof e==`object`&&!!e&&`getHighEntropyValues`in e}var _8=d8?.userAgentData;Jpe(_8)&&_8.getHighEntropyValues([`architecture`,`model`,`platform`,`platformVersion`,`fullVersionList`]).then(e=>{if(f8=e.platform||``,m8=e.architecture||``,g8=e.model||``,p8=e.platformVersion||``,e.fullVersionList?.length){let t=e.fullVersionList[e.fullVersionList.length-1];h8=`${t.brand} ${t.version}`}}).catch(e=>void 0);function Ype(e){return!(`thread_metadata`in e)}function Xpe(e){return Ype(e)?nme(e):e}function Zpe(e){let t=e.contexts?.trace?.trace_id;return typeof t==`string`&&t.length!==32&&X&&G.log(`[Profiling] Invalid traceId: ${t} on profiled event`),typeof t==`string`?t:``}function Qpe(e,t,n,r){if(r.type!==`transaction`)throw TypeError(`Profiling events may only be attached to transactions, this should never occur.`);if(n==null)throw TypeError(`Cannot construct profiling event envelope without a valid profile. Got ${n} instead.`);let i=Zpe(r),a=Xpe(n),o=t||(typeof r.start_timestamp==`number`?r.start_timestamp*1e3:KP()*1e3),s=typeof r.timestamp==`number`?r.timestamp*1e3:KP()*1e3;return{event_id:e,timestamp:new Date(o).toISOString(),platform:`javascript`,version:`1`,release:r.release||``,environment:r.environment||`production`,runtime:{name:`javascript`,version:J.navigator.userAgent},os:{name:f8,version:p8,build_number:h8},device:{locale:qpe,model:g8,manufacturer:h8,architecture:m8,is_emulator:!1},debug_meta:{images:y8(n.resources)},profile:a,transactions:[{name:r.transaction||``,id:r.event_id||PP(),trace_id:i,active_thread_id:l8,relative_start_ns:`0`,relative_end_ns:((s-o)*1e6).toFixed(0)}]}}function $pe(e,t,n){if(e==null)throw TypeError(`Cannot construct profiling event envelope without a valid profile. Got ${e} instead.`);let r=tme(e),i=t.getOptions(),a=t.getSdkMetadata?.()?.sdk;return{chunk_id:PP(),client_sdk:{name:a?.name??`sentry.javascript.browser`,version:a?.version??`0.0.0`},profiler_id:n||PP(),platform:`javascript`,version:`2`,release:i.release??``,environment:i.environment??`production`,debug_meta:{images:y8(e.resources)},profile:r}}function eme(e){try{if(!e||typeof e!=`object`)return{reason:`chunk is not an object`};let t=e=>typeof e==`string`&&/^[a-f0-9]{32}$/.test(e);if(!t(e.profiler_id))return{reason:`missing or invalid profiler_id`};if(!t(e.chunk_id))return{reason:`missing or invalid chunk_id`};if(!e.client_sdk)return{reason:`missing client_sdk metadata`};let n=e.profile;return n?!Array.isArray(n.frames)||!n.frames.length?{reason:`profile has no frames`}:!Array.isArray(n.stacks)||!n.stacks.length?{reason:`profile has no stacks`}:!Array.isArray(n.samples)||!n.samples.length?{reason:`profile has no samples`}:{valid:!0}:{reason:`missing profile data`}}catch(e){return{reason:`unknown validation error: ${e}`}}}function tme(e){let t=[];for(let n=0;n<e.frames.length;n++){let r=e.frames[n];r&&(t[n]={function:r.name,abs_path:typeof r.resourceId==`number`?e.resources[r.resourceId]:void 0,lineno:r.line,colno:r.column})}let n=[];for(let t=0;t<e.stacks.length;t++){let r=e.stacks[t];if(!r)continue;let i=[],a=r;for(;a;)i.push(a.frameId),a=a.parentId===void 0?void 0:e.stacks[a.parentId];n[t]=i}let r=YP(),i=typeof performance.timeOrigin==`number`?performance.timeOrigin:r||0,a=i-(r||i),o=[];for(let t=0;t<e.samples.length;t++){let n=e.samples[t];if(!n)continue;let r=(i+(n.timestamp-a))/1e3;o[t]={stack_id:n.stackId??0,thread_id:l8,timestamp:r}}return{frames:t,stacks:n,samples:o,thread_metadata:{[l8]:{name:u8}}}}function v8(e){return YI(e).op===`pageload`}function nme(e){let t,n=0,r={samples:[],stacks:[],frames:[],thread_metadata:{[l8]:{name:u8}}},i=e.samples[0];if(!i)return r;let a=i.timestamp,o=YP(),s=typeof performance.timeOrigin==`number`?performance.timeOrigin:o||0,c=s-(o||s);return e.samples.forEach((i,o)=>{if(i.stackId===void 0){t===void 0&&(t=n,r.stacks[t]=[],n++),r.samples[o]={elapsed_since_start_ns:((i.timestamp+c-a)*c8).toFixed(0),stack_id:t,thread_id:l8};return}let s=e.stacks[i.stackId],l=[];for(;s;){l.push(s.frameId);let t=e.frames[s.frameId];t&&r.frames[s.frameId]===void 0&&(r.frames[s.frameId]={function:t.name,abs_path:typeof t.resourceId==`number`?e.resources[t.resourceId]:void 0,lineno:t.line,colno:t.column}),s=s.parentId===void 0?void 0:e.stacks[s.parentId]}let u={elapsed_since_start_ns:((i.timestamp+c-a)*c8).toFixed(0),stack_id:n,thread_id:l8};r.stacks[n]=l,r.samples[o]=u,n++}),r}function rme(e,t){if(!t.length)return e;for(let n of t)e[1].push([{type:`profile`},n]);return e}function ime(e){let t=[];return LL(e,(e,n)=>{if(n===`transaction`)for(let n=1;n<e.length;n++)e[n]?.contexts?.profile?.profile_id&&t.push(e[n])}),t}function y8(e){let t=q()?.getOptions()?.stackParser;return t?Az(t,e):[]}function b8(e){return typeof e!=`number`&&typeof e!=`boolean`||typeof e==`number`&&isNaN(e)?(X&&G.warn(`[Profiling] Invalid sample rate. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(e)} of type ${JSON.stringify(typeof e)}.`),!1):e===!0||e===!1?!0:e<0||e>1?(X&&G.warn(`[Profiling] Invalid sample rate. Sample rate must be between 0 and 1. Got ${e}.`),!1):!0}function ame(e){return e.samples.length<2?(X&&G.log(`[Profiling] Discarding profile because it contains less than 2 samples`),!1):e.frames.length?!0:(X&&G.log(`[Profiling] Discarding profile because it contains no frames`),!1)}var x8=!1,S8=3e4;function ome(e){return typeof e==`function`}function C8(){let e=J.Profiler;if(!ome(e)){X&&G.log(`[Profiling] Profiling is not supported by this browser, Profiler interface missing on window object.`);return}let t=Math.floor(S8/10);try{return new e({sampleInterval:10,maxBufferSize:t})}catch{X&&(G.log(`[Profiling] Failed to initialize the Profiling constructor, this is likely due to a missing 'Document-Policy': 'js-profiling' header.`),G.log(`[Profiling] Disabling profiling for current user session.`)),x8=!0}}function w8(e){if(x8)return X&&G.log(`[Profiling] Profiling has been disabled for the duration of the current user session.`),!1;if(!e.isRecording())return X&&G.log(`[Profiling] Discarding profile because root span was not sampled.`),!1;let t=q()?.getOptions();if(!t)return X&&G.log(`[Profiling] Profiling disabled, no options found.`),!1;let n=t.profilesSampleRate;return b8(n)?n?n===!0||Math.random()<n||(X&&G.log(`[Profiling] Discarding profile because it's not included in the random sample (sampling rate = ${Number(n)})`),!1):(X&&G.log(`[Profiling] Discarding profile because a negative sampling decision was inherited or profileSampleRate is set to 0`),!1):(X&&G.warn(`[Profiling] Discarding profile because of invalid sample rate.`),!1)}function sme(e){if(x8)return X&&G.log(`[Profiling] Profiling has been disabled for the duration of the current user session as the JS Profiler could not be started.`),!1;if(e.profileLifecycle!==`trace`&&e.profileLifecycle!==`manual`)return X&&G.warn("[Profiling] Session not sampled. Invalid `profileLifecycle` option."),!1;let t=e.profileSessionSampleRate;return b8(t)?t?Math.random()<=t:(X&&G.log(`[Profiling] Discarding profile because profileSessionSampleRate is not defined or set to 0`),!1):(X&&G.warn(`[Profiling] Discarding profile because of invalid profileSessionSampleRate.`),!1)}function T8(e){return e.profilesSampleRate!==void 0}function cme(e,t,n,r){return ame(n)?Qpe(e,t,n,r):null}var E8=new Map;function lme(){return E8.size}function ume(e){let t=E8.get(e);return t&&E8.delete(e),t}function dme(e,t){if(E8.set(e,t),E8.size>30){let e=E8.keys().next().value;e!==void 0&&E8.delete(e)}}var D8=new WeakSet;function O8(e){e.setAttribute(`thread.id`,l8),e.setAttribute(`thread.name`,u8)}function k8(e){let t;v8(e)&&(t=KP()*1e3);let n=C8();if(!n)return;X&&G.log(`[Profiling] started profiling span: ${YI(e).description}`);let r=PP(),i=null;K().setContext(`profile`,{profile_id:r,start_timestamp:t}),D8.add(e),O8(e);async function a(){if(e&&n){if(i){X&&G.log(`[Profiling] profile for:`,YI(e).description,`already exists, returning early`);return}return n.stop().then(t=>{if(o&&=(J.clearTimeout(o),void 0),X&&G.log(`[Profiling] stopped profiling of span: ${YI(e).description}`),!t){X&&G.log(`[Profiling] profiler returned null profile for: ${YI(e).description}`,`this may indicate an overlapping span or a call to stopProfiling with a profile title that was never started`);return}i=t,dme(r,t)}).catch(e=>{X&&G.log(`[Profiling] error while stopping profiler:`,e)})}}let o=J.setTimeout(()=>{X&&G.log(`[Profiling] max profile duration elapsed, stopping profiling for:`,YI(e).description),a()},S8),s=e.end.bind(e);function c(){return e?(a().then(()=>{s()},()=>{s()}),e):s()}e.end=c}var fme=6e4,pme=3e5,mme=class{constructor(){this._client=void 0,this._profiler=void 0,this._chunkTimer=void 0,this._profilerId=void 0,this._isRunning=!1,this._sessionSampled=!1,this._lifecycleMode=void 0,this._activeRootSpanIds=new Set,this._rootSpanTimeouts=new Map}initialize(e){let t=e.getOptions().profileLifecycle,n=sme(e.getOptions());X&&G.log(`[Profiling] Initializing profiler (lifecycle='${t}').`),n||X&&G.log(`[Profiling] Session not sampled. Skipping lifecycle profiler initialization.`),this._profilerId=PP(),this._client=e,this._sessionSampled=n,this._lifecycleMode=t,t===`trace`&&this._setupTraceLifecycleListeners(e),e.on(`spanStart`,e=>{this._isRunning&&O8(e)})}start(){if(this._lifecycleMode===`trace`){X&&G.warn('[Profiling] `profileLifecycle` is set to "trace". Calls to `uiProfiler.start()` are ignored in trace mode.');return}if(this._isRunning){X&&G.warn("[Profiling] Profile session is already running, `uiProfiler.start()` is a no-op.");return}if(!this._sessionSampled){X&&G.warn("[Profiling] Session is not sampled, `uiProfiler.start()` is a no-op.");return}this._beginProfiling()}stop(){if(this._lifecycleMode===`trace`){X&&G.warn('[Profiling] `profileLifecycle` is set to "trace". Calls to `uiProfiler.stop()` are ignored in trace mode.');return}if(!this._isRunning){X&&G.warn("[Profiling] Profiler is not running, `uiProfiler.stop()` is a no-op.");return}this._endProfiling()}notifyRootSpanActive(e){if(this._lifecycleMode!==`trace`||!this._sessionSampled)return;let t=e.spanContext().spanId;if(!t||this._activeRootSpanIds.has(t))return;this._registerTraceRootSpan(t);let n=this._activeRootSpanIds.size;n===1&&(X&&G.log(`[Profiling] Detected already active root span during setup. Active root spans now:`,n),this._beginProfiling()),this._isRunning&&O8(e)}_beginProfiling(){if(!this._isRunning){if(this._isRunning=!0,X&&G.log(`[Profiling] Started profiling with profiler ID:`,this._profilerId),NF().setContext(`profile`,{profiler_id:this._profilerId}),this._startProfilerInstance(),!this._profiler){X&&G.log(`[Profiling] Failed to start JS Profiler; stopping.`),this._resetProfilerInfo();return}this._startPeriodicChunking()}}_endProfiling(){this._isRunning&&(this._isRunning=!1,this._chunkTimer&&=(clearTimeout(this._chunkTimer),void 0),this._clearAllRootSpanTimeouts(),this._collectCurrentChunk().catch(e=>{X&&G.error("[Profiling] Failed to collect current profile chunk on `stop()`:",e)}),this._lifecycleMode===`manual`&&NF().setContext(`profile`,{}))}_setupTraceLifecycleListeners(e){e.on(`spanStart`,e=>{if(!this._sessionSampled){X&&G.log(`[Profiling] Span not profiled because of negative sampling decision for user session.`);return}if(e!==uL(e))return;if(!e.isRecording()){X&&G.log(`[Profiling] Discarding profile because root span was not sampled.`);return}let t=e.spanContext().spanId;if(!t||this._activeRootSpanIds.has(t))return;this._registerTraceRootSpan(t);let n=this._activeRootSpanIds.size;n===1&&(X&&G.log(`[Profiling] Root span ${t} started. Profiling active while there are active root spans (count=${n}).`),this._beginProfiling())}),e.on(`spanEnd`,e=>{if(!this._sessionSampled)return;let t=e.spanContext().spanId;if(!t||!this._activeRootSpanIds.has(t))return;this._activeRootSpanIds.delete(t);let n=this._activeRootSpanIds.size;X&&G.log(`[Profiling] Root span with ID ${t} ended. Will continue profiling for as long as there are active root spans (currently: ${n}).`),n===0&&(this._collectCurrentChunk().catch(e=>{X&&G.error("[Profiling] Failed to collect current profile chunk on last `spanEnd`:",e)}),this._endProfiling())})}_resetProfilerInfo(){this._isRunning=!1,NF().setContext(`profile`,{})}_clearAllRootSpanTimeouts(){this._rootSpanTimeouts.forEach(e=>clearTimeout(e)),this._rootSpanTimeouts.clear()}_registerTraceRootSpan(e){this._activeRootSpanIds.add(e);let t=setTimeout(()=>this._onRootSpanTimeout(e),pme);this._rootSpanTimeouts.set(e,t)}_startProfilerInstance(){if(this._profiler?.stopped===!1)return;let e=C8();if(!e){X&&G.log(`[Profiling] Failed to start JS Profiler.`);return}this._profiler=e}_startPeriodicChunking(){this._isRunning&&(this._chunkTimer=setTimeout(()=>{if(this._collectCurrentChunk().catch(e=>{X&&G.error(`[Profiling] Failed to collect current profile chunk during periodic chunking:`,e)}),this._isRunning){if(this._startProfilerInstance(),!this._profiler){this._resetProfilerInfo();return}this._startPeriodicChunking()}},fme))}_onRootSpanTimeout(e){this._rootSpanTimeouts.has(e)&&(this._rootSpanTimeouts.delete(e),this._activeRootSpanIds.has(e)&&(X&&G.log(`[Profiling] Reached 5-minute timeout for root span ${e}. You likely started a manual root span that never called \`.end()\`.`),this._activeRootSpanIds.delete(e),this._activeRootSpanIds.size===0&&this._endProfiling()))}async _collectCurrentChunk(){let e=this._profiler;if(this._profiler=void 0,e)try{let t=$pe(await e.stop(),this._client,this._profilerId),n=eme(t);if(`reason`in n){X&&G.log(`[Profiling] Discarding invalid profile chunk (this is probably a bug in the SDK):`,n.reason);return}this._sendProfileChunk(t),X&&G.log(`[Profiling] Collected browser profile chunk.`)}catch(e){X&&G.log(`[Profiling] Error while stopping JS Profiler for chunk:`,e)}}_sendProfileChunk(e){let t=this._client,n=qL(t.getSdkMetadata?.()),r=t.getDsn(),i=t.getOptions().tunnel,a=FL({event_id:PP(),sent_at:new Date().toISOString(),...n&&{sdk:n},...!!i&&r&&{dsn:TI(r)}},[[{type:`profile_chunk`,platform:`javascript`},e]]);t.sendEnvelope(a).then(null,e=>{X&&G.error(`Error while sending profile chunk envelope:`,e)})}},hme=`BrowserProfiling`,gme=xB((()=>({name:hme,setup(e){let t=e.getOptions(),n=new mme;if(!T8(t)&&!t.profileLifecycle&&(t.profileLifecycle=`manual`),T8(t)&&!t.profilesSampleRate){X&&G.log(`[Profiling] Profiling disabled, no profiling options found.`);return}let r=fL(),i=r&&uL(r);if(T8(t)&&t.profileSessionSampleRate!==void 0&&X&&G.warn("[Profiling] Both legacy profiling (`profilesSampleRate`) and UI profiling settings are defined. `profileSessionSampleRate` has no effect when legacy profiling is enabled."),T8(t))i&&v8(i)&&w8(i)&&k8(i),e.on(`spanStart`,e=>{let t=uL(e);e===t?w8(e)&&k8(e):D8.has(t)&&O8(e)}),e.on(`beforeEnvelope`,e=>{if(!lme())return;let t=ime(e);if(!t.length)return;let n=[];for(let e of t){let t=e?.contexts,r=t?.profile?.profile_id,i=t?.profile?.start_timestamp;if(typeof r!=`string`){X&&G.log(`[Profiling] cannot find profile for a span without a profile context`);continue}if(!r){X&&G.log(`[Profiling] cannot find profile for a span without a profile context`);continue}t?.profile&&delete t.profile;let a=ume(r);if(!a){X&&G.log(`[Profiling] Could not retrieve profile for span: ${r}`);continue}let o=cme(r,i,a,e);o&&n.push(o)}rme(e,n)});else{let r=t.profileLifecycle;if(e.on(`startUIProfiler`,()=>n.start()),e.on(`stopUIProfiler`,()=>n.stop()),r===`manual`)n.initialize(e);else if(r===`trace`){if(!_L(t)){X&&G.warn("[Profiling] `profileLifecycle` is 'trace' but tracing is disabled. Set a `tracesSampleRate` or `tracesSampler` to enable span tracing.");return}n.initialize(e),i&&n.notifyRootSpanActive(i),J.setTimeout(()=>{let e=fL(),t=e&&uL(e);t&&n.notifyRootSpanActive(t)},0)}}}}))),_me=`SpotlightBrowser`,vme=[{op:`ui.interaction.click`,name:`#sentry-spotlight`}],yme=((e={})=>{let t=e.sidecarUrl||`http://localhost:8969/stream`;return{name:_me,setup:()=>{X&&G.log(`Using Sidecar URL`,t)},beforeSetup(e){let t=e.getOptions();t.ignoreSpans=[...t.ignoreSpans||[],...vme]},afterAllSetup:e=>{bme(e,t)}}});function bme(e,t){let n=f0(`fetch`),r=0;e.on(`beforeEnvelope`,e=>{if(r>3){G.warn(`[Spotlight] Disabled Sentry -> Spotlight integration due to too many failed requests:`,r);return}n(t,{method:`POST`,body:BL(e),headers:{"Content-Type":`application/x-sentry-envelope`},mode:`cors`}).then(e=>{e.status>=200&&e.status<400&&(r=0)},e=>{r++,G.error(`Sentry SDK can't connect to Sidecar is it running? See: https://spotlightjs.com/sidecar/npx/`,e)})})}var xme=xB(yme),Sme=xB(()=>({name:`LaunchDarkly`,processEvent(e,t,n){return rW(e)}}));function Cme(){return{name:`sentry-flag-auditor`,type:`flag-used`,synchronous:!0,method:(e,t,n)=>{iW(e,t.value),oW(e,t.value)}}}var wme=xB(()=>({name:`OpenFeature`,processEvent(e,t,n){return rW(e)}})),Tme=class{after(e,t){iW(t.flagKey,t.value),oW(t.flagKey,t.value)}error(e,t,n){iW(e.flagKey,e.defaultValue),oW(e.flagKey,e.defaultValue)}},Eme=xB(({featureFlagClientClass:e})=>({name:`Unleash`,setupOnce(){let t=e.prototype;$N(t,`isEnabled`,Dme)},processEvent(e,t,n){return rW(e)}}));function Dme(e){return function(...t){let n=t[0],r=e.apply(this,t);return typeof n==`string`&&typeof r==`boolean`?(iW(n,r),oW(n,r)):X&&G.error(`[Feature Flags] UnleashClient.isEnabled does not match expected signature. arg0: ${n} (${typeof n}), result: ${r} (${typeof r})`),r}}var Ome=(({growthbookClass:e})=>cW({growthbookClass:e})),kme=xB(({featureFlagClient:e})=>({name:`Statsig`,setup(t){e.on(`gate_evaluation`,e=>{iW(e.gate.name,e.gate.value),oW(e.gate.name,e.gate.value)})},processEvent(e,t,n){return rW(e)}})),Ame=`WebWorker`,jme=xB(({worker:e})=>({name:Ame,setupOnce:()=>{(Array.isArray(e)?e:[e]).forEach(e=>A8(e))},addWorker:e=>A8(e)}));function A8(e){e.addEventListener(`message`,e=>{if(Pme(e.data)){if(e.stopImmediatePropagation(),e.data._sentryDebugIds&&(X&&G.log(`Sentry debugId web worker message received`,e.data),J._sentryDebugIds={...e.data._sentryDebugIds,...J._sentryDebugIds}),e.data._sentryModuleMetadata&&(X&&G.log(`Sentry module metadata web worker message received`,e.data),J._sentryModuleMetadata={...e.data._sentryModuleMetadata,...J._sentryModuleMetadata}),e.data._sentryWasmImages){X&&G.log(`Sentry WASM images web worker message received`,e.data);let t=J._sentryWasmImages||[],n=e.data._sentryWasmImages.filter(e=>KN(e)&&typeof e.code_file==`string`&&!t.some(t=>t.code_file===e.code_file));J._sentryWasmImages=[...t,...n]}e.data._sentryWorkerError&&(X&&G.log(`Sentry worker rejection message received`,e.data._sentryWorkerError),Mme(e.data._sentryWorkerError))}})}function Mme(e){let t=q();if(!t)return;let n=t.getOptions().stackParser,r=t.getOptions().attachStacktrace,i=e.reason,a=GN(i)?$0(i):_Q(n,i,void 0,r,!0);a.level=`error`,e.filename&&(a.contexts={...a.contexts,worker:{filename:e.filename}}),Wz(a,{originalException:i,mechanism:{handled:!1,type:`auto.browser.web_worker.onunhandledrejection`}}),X&&G.log(`Captured worker unhandled rejection`,i)}function Nme({self:e}){e.postMessage({_sentryMessage:!0,_sentryDebugIds:e._sentryDebugIds??void 0,_sentryModuleMetadata:e._sentryModuleMetadata??void 0}),e.addEventListener(`unhandledrejection`,t=>{let n={reason:Q0(t),filename:e.location?.href};e.postMessage({_sentryMessage:!0,_sentryWorkerError:n}),X&&G.log(`[Sentry Worker] Forwarding unhandled rejection to parent`,n)}),X&&G.log(`[Sentry Worker] Registered worker with unhandled rejection handling`)}function Pme(e){if(!KN(e)||e._sentryMessage!==!0)return!1;let t=`_sentryDebugIds`in e,n=`_sentryModuleMetadata`in e,r=`_sentryWorkerError`in e,i=`_sentryWasmImages`in e;return!(!t&&!n&&!r&&!i||t&&!(KN(e._sentryDebugIds)||e._sentryDebugIds===void 0)||n&&!(KN(e._sentryModuleMetadata)||e._sentryModuleMetadata===void 0)||r&&!KN(e._sentryWorkerError)||i&&(!Array.isArray(e._sentryWasmImages)||!e._sentryWasmImages.every(e=>KN(e)&&typeof e.code_file==`string`)))}var Fme=50,[,Ime]=R0,[,Lme]=MJ(),j8=(e,t=0)=>{let n=[];for(let r of e.split(`
|
|
1004
1004
|
`).slice(t)){let e=Ime(r),t=Lme(r);if(e&&t?.in_app!==!1?n.push(e):t&&(t.module===void 0&&delete t.module,n.push(t)),n.length>=Fme)break}return bN(n)},Rme=xB(e=>{let t=e?.threshold??1e3,n=e?.pollInterval||t/2;return{name:`EventLoopBlockRenderer`,setup(r){let i={pollInterval:n,anrThreshold:t,captureStackTrace:!0,...e},a=UJ(r);a.sendStatus({status:document.visibilityState,config:i}),setInterval(()=>{a.sendStatus({status:`alive`,config:i})},i.pollInterval)}}});function M8(){let e=NF().getScopeData(),t=MF().getScopeData(),n=K().getScopeData();return nz(e,t),nz(e,n),e.eventProcessors=[],e}function zme(e){MF().addScopeListener(t=>{e(M8(),t)}),K().addScopeListener(t=>{e(M8(),t)}),NF().addScopeListener(t=>{e(M8(),t)})}var N8=xB(()=>({name:`ScopeToMain`,setup(e){let t=UJ(e);zme((e,n)=>{t.sendScope(JSON.stringify(_P(e,20,2e3))),n.clearBreadcrumbs(),n.clearAttachments()})}}));function P8(e){let t;return uV(e,async e=>(t||=UJ(),t.sendEnvelope(e.body),{statusCode:200}))}function F8(e){return[...a2(e).filter(e=>e.name!==`BrowserSession`&&e.name!==`CultureContext`),N8()]}function I8(e={},t=Vce){if(window?.__SENTRY__RENDERER_INIT__){G.warn(`The browser SDK has already been initialized.
|
|
1005
|
-
If init has been called in the preload and contextIsolation is disabled, is not required to call init in the renderer`);return}window.__SENTRY__RENDERER_INIT__=!0,e.sendClientReports=!1,e.defaultIntegrations===void 0&&(e.defaultIntegrations=F8(e)),e.stackParser===void 0&&(e.stackParser=j8),e.ipcNamespace===void 0&&(e.ipcNamespace=`sentry-ipc`),e.dsn===void 0&&(e.dsn=`https://12345@dummy.dsn/12345`),e.transport===void 0&&(e.transport=P8),delete e.initialScope,t(e)}var L8=e({BrowserClient:()=>SQ,MULTIPLEXED_TRANSPORT_EXTRA_KEY:()=>WV,OpenFeatureIntegrationHook:()=>Tme,SEMANTIC_ATTRIBUTE_SENTRY_OP:()=>BF,SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN:()=>VF,SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE:()=>RF,SEMANTIC_ATTRIBUTE_SENTRY_SOURCE:()=>LF,Scope:()=>lF,addBreadcrumb:()=>hH,addEventProcessor:()=>rB,addIntegration:()=>bB,bindScopeToEmitter:()=>qR,breadcrumbsIntegration:()=>K0,browserApiErrorsIntegration:()=>q0,browserProfilingIntegration:()=>gme,browserSessionIntegration:()=>Y0,browserTracingIntegration:()=>$6,buildLaunchDarklyFlagUsedHandler:()=>Cme,captureConsoleIntegration:()=>QH,captureEvent:()=>Wz,captureException:()=>Hz,captureFeedback:()=>xW,captureMessage:()=>Uz,captureSession:()=>sB,chromeStackLineParser:()=>R0,consoleLoggingIntegration:()=>OW,contextLinesIntegration:()=>ole,continueTrace:()=>yR,createConsolaReporter:()=>MW,createLangChainCallbackHandler:()=>Bq,createTransport:()=>uV,createUserFeedbackEnvelope:()=>U0,dedupeIntegration:()=>tU,defaultRequestInstrumentationOptions:()=>U6,defaultStackParser:()=>j8,elementTimingIntegration:()=>P1,endSession:()=>aB,eventFiltersIntegration:()=>xH,eventFromException:()=>hQ,eventFromMessage:()=>gQ,eventLoopBlockIntegration:()=>Rme,exceptionFromError:()=>aQ,extraErrorDataIntegration:()=>lU,featureFlagsIntegration:()=>sW,feedbackAsyncIntegration:()=>rQ,feedbackIntegration:()=>iQ,feedbackSyncIntegration:()=>iQ,fetchStreamPerformanceIntegration:()=>J6,forceLoad:()=>Hce,functionToStringIntegration:()=>vH,getAbsoluteUrl:()=>T0,getActiveSpan:()=>fL,getClient:()=>q,getCurrentScope:()=>K,getDefaultIntegrations:()=>F8,getFeedback:()=>ZY,getGlobalScope:()=>NF,getIsolationScope:()=>MF,getReplay:()=>npe,getRootSpan:()=>uL,getSpanDescendants:()=>lL,getSpanStatusFromHttpCode:()=>iI,getTraceData:()=>dH,globalHandlersIntegration:()=>Z0,graphqlClientIntegration:()=>mle,growthbookIntegration:()=>Ome,httpClientIntegration:()=>Jce,httpContextIntegration:()=>n2,inboundFiltersIntegration:()=>SH,init:()=>I8,instrumentAnthropicAiClient:()=>tq,instrumentCreateReactAgent:()=>oJ,instrumentGoogleGenAIClient:()=>_q,instrumentLangChainEmbeddings:()=>Gq,instrumentLangGraph:()=>sJ,instrumentOpenAiClient:()=>jK,instrumentOutgoingRequests:()=>W6,instrumentSupabaseClient:()=>LU,isBotUserAgent:()=>Q6,isEnabled:()=>nB,isInitialized:()=>tB,lastEventId:()=>eB,launchDarklyIntegration:()=>Sme,linkedErrorsIntegration:()=>r2,logger:()=>WJ,makeRendererTransport:()=>P8,metrics:()=>QJ,moduleMetadataIntegration:()=>GH,normalizeStringifyValue:()=>i2,onLoad:()=>Uce,openFeatureIntegration:()=>wme,parameterize:()=>sH,registerSpanErrorInstrumentation:()=>gL,registerWebWorker:()=>Nme,replayCanvasIntegration:()=>xpe,replayIntegration:()=>p6,reportPageLoaded:()=>Upe,reportingObserverIntegration:()=>Kce,rewriteFramesIntegration:()=>bU,scopeToMainIntegration:()=>N8,sendFeedback:()=>FY,setActiveSpanInBrowser:()=>Wpe,setAttribute:()=>Zz,setAttributes:()=>Xz,setContext:()=>Gz,setConversationId:()=>$z,setCurrentClient:()=>UV,setExtra:()=>qz,setExtras:()=>Kz,setHttpStatus:()=>aI,setMeasurement:()=>tR,setTag:()=>Yz,setTags:()=>Jz,setUser:()=>Qz,showReportDialog:()=>o2,spanStreamingIntegration:()=>Gpe,spanToBaggageHeader:()=>ML,spanToJSON:()=>YI,spanToTraceHeader:()=>UI,spotlightBrowserIntegration:()=>xme,startBrowserTracingNavigationSpan:()=>t8,startBrowserTracingPageLoadSpan:()=>e8,startInactiveSpan:()=>_R,startNewTrace:()=>CR,startSession:()=>iB,startSpan:()=>hR,startSpanManual:()=>gR,statsigIntegration:()=>kme,supabaseIntegration:()=>BU,suppressTracing:()=>xR,thirdPartyErrorFilterIntegration:()=>YU,uiProfiler:()=>A0,unleashIntegration:()=>Eme,updateSpanName:()=>mL,viewHierarchyIntegration:()=>hle,webVitalsIntegration:()=>Y6,webWorkerIntegration:()=>jme,withActiveSpan:()=>bR,withIsolationScope:()=>FF,withScope:()=>PF,withStreamedSpan:()=>NL,zodErrorsIntegration:()=>JU}),Bme=100,Vme=5,Hme=[`ResizeObserver loop completed with undelivered notifications.`,`ResizeObserver loop limit exceeded`,`AbortError`,`The user aborted a request.`,`Network request failed`,`NetworkError when attempting to fetch resource.`,`Failed to fetch`,`ChunkLoadError`,`Loading chunk`,`Loading CSS chunk`,`Non-Error promise rejection captured with value: Object Not Found Matching Id`];function R8(e){if(e)for(let t of Object.keys(e))/token|secret|password|api[_-]?key/i.test(t)&&(e[t]=`[redacted]`)}function Ume(e){e.request?.url&&(e.request.url=e.request.url.replace(/([?&](?:code|token|access_token|state)=)[^&]+/gi,`$1[redacted]`)),R8(e.extra),R8(e.tags)}function Wme(e){let t=B8(e.version)??`0.0.0`,n=B8(e.commitHash);return n?`${e.appName}@${t}+${n}`:`${e.appName}@${t}`}function z8(e,t){for(let n of t){let t=B8(e[n]);if(t)return t}}function Gme(e){return V8(e.enabled)??e.defaultEnabled??!1}function Kme(e){let t=B8(e.dsn);return!t||Gme(e)===!1?null:{dsn:t,environment:B8(e.environment)??B8(e.defaultEnvironment)??`production`,release:B8(e.release)??B8(e.defaultRelease)??void 0,debug:V8(e.debug)??e.defaultDebug??!1,tracesSampleRate:U8(e.tracesSampleRate,e.defaultTracesSampleRate??.1),profilesSampleRate:H8(e.profilesSampleRate,e.defaultProfilesSampleRate),replaysSessionSampleRate:H8(e.replaysSessionSampleRate,e.defaultReplaysSessionSampleRate),replaysOnErrorSampleRate:H8(e.replaysOnErrorSampleRate,e.defaultReplaysOnErrorSampleRate),attachStacktrace:!0,maxBreadcrumbs:Bme,normalizeDepth:Vme,tags:qme(e)}}function qme(e){let t={app:e.appName,runtime:e.runtime};for(let[n,r]of Object.entries(e.tags??{})){let e=B8(r);e&&(t[n]=e)}return t}function B8(e){if(e==null)return null;let t=e.trim();return t.length>0?t:null}function V8(e){if(typeof e==`boolean`)return e;let t=B8(e);if(t){if(t===`1`||t.toLowerCase()===`true`)return!0;if(t===`0`||t.toLowerCase()===`false`)return!1}}function H8(e,t){if(t!==void 0||e!==void 0)return U8(e,t??0)}function U8(e,t){let n=Jme(e);return n===null||n<0||n>1?t:n}function Jme(e){if(typeof e==`number`)return Number.isFinite(e)?e:null;let t=B8(e);if(!t)return null;let n=Number.parseFloat(t);return Number.isFinite(n)?n:null}function Yme(e){let t=(0,He.c)(11),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=ge(tt,`bg-background text-foreground`),t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=ge(Qe,`pl-1 md:pl-2.5`),t[1]=r):r=t[1];let i;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,it.jsx)(ot,{}),t[2]=i):i=t[2];let a;t[3]===e.onGoToNewChat?a=t[4]:(a=(0,it.jsx)(`div`,{className:r,children:(0,it.jsx)(`button`,{type:`button`,"aria-label":`Go to new chat`,onClick:e.onGoToNewChat,className:`${$e} hover:bg-accent/70`,children:i})}),t[3]=e.onGoToNewChat,t[4]=a);let o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,it.jsx)(`div`,{}),t[5]=o):o=t[5];let s;t[6]===a?s=t[7]:(s=(0,it.jsxs)(`header`,{className:Ze,children:[a,o]}),t[6]=a,t[7]=s);let c;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,it.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center px-4`,children:(0,it.jsxs)(`div`,{className:`max-w-md rounded-xl border border-border bg-card p-6 text-center shadow-lg`,children:[(0,it.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight`,children:`Something went wrong.`}),(0,it.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:`Forge hit an unexpected error and reported it.`}),(0,it.jsx)(`button`,{className:`mt-4 inline-flex rounded-md border border-border px-3 py-2 text-sm font-medium hover:bg-accent`,onClick:Xme,type:`button`,children:`Reload app`})]})}),t[8]=c):c=t[8];let l;return t[9]===s?l=t[10]:(l=(0,it.jsxs)(`div`,{className:n,children:[s,c]}),t[9]=s,t[10]=l),l}function Xme(){return window.location.reload()}var Zme=[/\bDeepSeek\b/i,/\bKimi\b/i,/\bMoonshot\b/i,/\bdeepseek[-._a-z0-9]*\b/i,/\bkimi[-._a-z0-9]*\b/i,/\bmoonshot[-._a-z0-9]*\b/i,/\bAPEX_API_KEY\b/,/\bDEEPSEEK_API_KEY\b/,/\bKIMI_API_KEY\b/,/\bOPENAI_API_KEY\b/,/\bANTHROPIC_API_KEY\b/,/\bCURSOR_API_KEY\b/,/\bOPENCODE_API_KEY\b/,/\bforge_proxy_[A-Za-z0-9._-]+\b/,/\bProviderValidationError\b/,/\/forge-server\/node_modules\//,/https?:\/\/[^\s'"<>)]*\/api\/provider-egress\/[^\s'"<>)]*/i,/https?:\/\/[^\s'"<>)]*(?:apex|deepseek|moonshot|kimi)[^\s'"<>)]*/i],Qme=`CMMD is temporarily unavailable. Check the workspace AI connection and retry.`;function W8(e){if(!e)return!1;let t=e.toLowerCase();return/\b(rate[\s-]?limit|too\s+many\s+requests|usage[ _-]limit|usage_limit_reached|quota|insufficient_quota)\b/.test(t)||/\b429\b/.test(t)}function $me(e){return/\bbound to provider account\b/.test(e)&&/\bcannot use provider account\b/.test(e)?`Forge could not switch this conversation to the selected AI account. Retry the account switch.`:/\bforge_runtime_repairing\b/.test(e)||/\bthis turn was interrupted because the environment is being repaired\b/.test(e)?`This turn was interrupted because the environment is being repaired. Retry after the repair finishes.`:/\bforge_runtime_stopped\b/.test(e)||/\bthis turn was interrupted because the environment was stopped\b/.test(e)?`This turn was interrupted because the environment was stopped. Start the environment and retry.`:null}function ehe(e){if(!e)return null;let t=e.toLowerCase(),n=$me(t);return n===null?/\bforge_provider_model_not_allowed\b/.test(t)||/\bnot\s+scoped\s+to\s+the\s+requested\s+model\b/.test(t)?`The workspace AI credential does not cover the model this turn asked for. Retry, or pick that model for the thread.`:/\bmodel\b[\s\S]*\b(not\s+(found|available|supported)|does\s+not\s+exist|unsupported|invalid|unknown)\b/.test(t)||/\b(unsupported|unknown|invalid)\b[\s\S]*\bmodel\b/.test(t)||/\b(model_not_found|invalid_model|model_not_supported)\b/.test(t)?`The selected model isn't available right now. Pick a different model and retry.`:W8(t)?`The AI service is rate-limited or out of quota. Wait a moment and retry.`:/_credential_reconnect_required\b/.test(t)?`The workspace AI credential needs to be reconnected. Reconnect it in Settings > Providers, then retry.`:/\b(unauthorized|forbidden|authentication\s+(failed|error|required)|invalid\s+api\s+key|expired\s+(token|credential))\b/.test(t)||/\b40[13]\b/.test(t)?`Workspace AI authentication failed. Reconnect the workspace and retry.`:/\b(timed?\s*out|timeout|overloaded|service\s+unavailable)\b/.test(t)||/\b50[234]\b/.test(t)?`The AI service is temporarily overloaded. Retry in a moment.`:null:n}function the(e){return e?Zme.some(t=>t.test(e)):!1}function G8(e,t={}){if(e==null)return null;let n=e.trim();return n.length===0?null:the(n)?ehe(n)??t.fallback??`CMMD is temporarily unavailable. Check the workspace AI connection and retry.`:n}var nhe=[/\bSocketCloseError\b/i,/\bSocketOpenError\b/i,/\bSocketReadError\b/i,/\bRpcClientDefect:\s*Unknown socket error\b/i,/Unable to connect to the Forge server WebSocket\./i,/\bping timeout\b/i];function K8(e){if(typeof e!=`string`)return!1;let t=e.trim();return t.length!==0&&nhe.some(e=>e.test(t))}function q8(e){return K8(e)?null:G8(e,{fallback:Qme})}var rhe=[/^Transport disposed$/,/WebSocket RPC request timed out after \d+ms\./],ihe=`Lost the connection to this Environment. Your message was not sent.`;function ahe(e){return e instanceof Error?K8(e.message)||rhe.some(t=>t.test(e.message.trim()))?ihe:e.message:`Failed to send message.`}var J8=`forge-web`,Y8=[`VITE_SENTRY_ENVIRONMENT`,`MODE`],X8=[`VITE_SENTRY_RELEASE`],ohe=[`VITE_SENTRY_DSN`],she=[`VITE_SENTRY_DEBUG`],che=[`VITE_SENTRY_ENABLED`],lhe=[`VITE_SENTRY_TRACES_SAMPLE_RATE`],uhe=[`VITE_SENTRY_PROFILES_SAMPLE_RATE`],dhe=[`VITE_SENTRY_REPLAYS_SESSION_SAMPLE_RATE`],fhe=[`VITE_SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE`],phe=[`VITE_SENTRY_COMMIT_SHA`,`VITE_COMMIT_SHA`],Z8=!1,Q8={autoInject:!1,colorScheme:`system`,formTitle:`Report a Bug`,themeLight:{accentBackground:`oklch(0.52 0.19 48)`,accentForeground:`#ffffff`,background:`#ffffff`,boxShadow:`0 24px 80px rgba(0, 0, 0, 0.18)`,foreground:`#262626`,outline:`1px solid oklch(0.52 0.19 48)`},themeDark:{accentBackground:`oklch(0.62 0.2 47)`,accentForeground:`#ffffff`,background:`#171717`,boxShadow:`0 24px 80px rgba(0, 0, 0, 0.45)`,foreground:`#f5f5f5`,outline:`1px solid oklch(0.62 0.2 47)`}};function mhe(e){let t=e.exception&&typeof e.exception==`object`&&`values`in e.exception&&Array.isArray(e.exception.values)?e.exception.values:[];return[typeof e.title==`string`?e.title:void 0,...t.flatMap(e=>{if(typeof e!=`object`||!e)return[];let t=e;return[typeof t.type==`string`?t.type:void 0,typeof t.value==`string`?t.value:void 0]})]}function hhe(e){return(e.exception&&typeof e.exception==`object`&&`values`in e.exception&&Array.isArray(e.exception.values)?e.exception.values:[]).some(e=>{if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.value!=`string`||!/All fibers interrupted without error/i.test(t.value)?!1:t.stacktrace?.frames?.some(e=>{let t=typeof e.filename==`string`?e.filename:``,n=typeof e.function==`string`?e.function:``;return t.includes(`src/rpc/wsTransport.ts`)&&n===`WsTransport.request`})})}function ghe(e){return mhe(e).some(K8)||hhe(e)}function _he(){let e=new URL(window.location.href);xe?e.hash=`/new`:(e.pathname=`/new`,e.search=``,e.hash=``),window.location.assign(e.toString())}function vhe(){let e=xe?`electron-renderer`:`browser`,t={APP_VERSION:`0.13.4`,BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,TSS_INLINE_CSS_ENABLED:`false`,VITE_COMMIT_SHA:``,VITE_HOSTED_APP_CHANNEL:``,VITE_HTTP_URL:``,VITE_SENTRY_COMMIT_SHA:`c7fe2d96f51605b303a42c585157e3bc4d4af889`,VITE_SENTRY_DEBUG:``,VITE_SENTRY_DSN:``,VITE_SENTRY_ENABLED:``,VITE_SENTRY_ENVIRONMENT:`production`,VITE_SENTRY_PROFILES_SAMPLE_RATE:``,VITE_SENTRY_RELEASE:`forge-web@0.13.4+c7fe2d96f51605b303a42c585157e3bc4d4af889`,VITE_SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE:``,VITE_SENTRY_REPLAYS_SESSION_SAMPLE_RATE:``,VITE_SENTRY_TRACES_SAMPLE_RATE:``,VITE_WS_URL:``},n=z8(t,[...X8])??Wme({appName:J8,version:`0.13.4`,commitHash:z8(t,[...phe])});return Kme({appName:J8,runtime:e,defaultEnvironment:z8(t,[...Y8])??`development`,defaultRelease:n,defaultEnabled:!0,defaultTracesSampleRate:0,defaultReplaysSessionSampleRate:0,defaultReplaysOnErrorSampleRate:0,enabled:z8(t,[...che]),dsn:z8(t,[...ohe]),environment:z8(t,[...Y8]),release:z8(t,[...X8]),debug:z8(t,[...she]),tracesSampleRate:z8(t,[...lhe]),profilesSampleRate:z8(t,[...uhe]),replaysSessionSampleRate:z8(t,[...dhe]),replaysOnErrorSampleRate:z8(t,[...fhe]),tags:{platform:xe?`desktop`:`web`}})}function $8(e){return Ume(e),ghe(e)?null:e}function yhe(e){return{...e.replaysOnErrorSampleRate===void 0?{}:{replaysOnErrorSampleRate:e.replaysOnErrorSampleRate},...e.replaysSessionSampleRate===void 0?{}:{replaysSessionSampleRate:e.replaysSessionSampleRate}}}function e5(e){return{attachStacktrace:e.attachStacktrace,debug:e.debug,dsn:e.dsn,environment:e.environment,ignoreErrors:[...Hme],initialScope:{tags:e.tags},maxBreadcrumbs:e.maxBreadcrumbs,normalizeDepth:e.normalizeDepth,sendDefaultPii:!1,tracesSampleRate:e.tracesSampleRate,...e.release===void 0?{}:{release:e.release},...yhe(e)}}function bhe(e){let t=[];e.tracesSampleRate>0&&t.push($6()),((e.replaysSessionSampleRate??0)>0||(e.replaysOnErrorSampleRate??0)>0)&&t.push(p6());let n=iQ(Q8);t.push(n);try{I8({...e5(e),beforeSend:e=>$8(e),integrations:t})}catch{return null}return Z8=!0,L8}function xhe(e){let t=[];e.tracesSampleRate>0&&t.push(TA()),((e.replaysSessionSampleRate??0)>0||(e.replaysOnErrorSampleRate??0)>0)&&t.push(zk());let n=my(Q8);t.push(n);try{aj({...e5(e),beforeSend:e=>$8(e),integrations:t})}catch{return null}return Z8=!0,QM}function t5(){if(Z8)return xe?L8:QM;let e=vhe();return e?xe?bhe(e):xhe(e):null}function n5(e){if(t5()){if(xe){Qz(e);return}sl(e)}}function r5(e,t,n){if(!t5())return;let r=She(e);if(xe){PF(e=>{t&&e.setTags(t);let i=Hz(r);n?.showReportDialog&&o2({eventId:i})});return}ua(e=>{t&&e.setTags(t);let i=Qc(r);n?.showReportDialog&&US({eventId:i})})}function She(e){if(e instanceof Error)return e;if(typeof e==`string`&&e.trim().length>0)return Error(e);try{return Error(JSON.stringify(e))}catch{return Error(`Unknown non-Error exception`)}}var Che=class extends k.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){r5(e,{origin:`react-boundary`},{showReportDialog:!0})}render(){return this.state.hasError?(0,it.jsx)(Yme,{onGoToNewChat:_he}):this.props.children}},i5=!1,a5=!1,o5=null,s5=null,c5=null,l5=!1,u5=new Set;function whe(e){if(i5||a5)return;if(!e.publicKey||!e.host){a5=!0;return}if(o5)return;if(typeof window>`u`||typeof location>`u`){a5=!0;return}let t=e.publicKey,n=e.host;o5=_e(async()=>{let{default:e}=await import(`./module-CPO4cjSm.js`);return{default:e}},[]).then(({default:e})=>{s5=e,e.init(t,{api_host:n,person_profiles:`identified_only`,capture_pageview:!1,capture_pageleave:!1,autocapture:!1,disable_session_recording:!0,loaded:()=>{i5=!0,c5&&d5(c5),f5(),u5.forEach(e=>e())}})}).catch(()=>{a5=!0,s5=null})}function d5(e){if(c5=e,!i5||!s5)return;let t={};e.email!==void 0&&(t.email=e.email),e.displayName!==void 0&&(t.name=e.displayName),s5.identify(e.cmmdUserId,t)}function The(e){return!i5||!s5?!1:s5.isFeatureEnabled(e)===!0}function f5(){!s5||l5||(l5=!0,s5.onFeatureFlags(()=>{u5.forEach(e=>e())}))}function Ehe(e){return u5.add(e),i5&&s5&&(f5(),e()),()=>{u5.delete(e)}}var p5=class extends v(`BootstrapHttpError`){},m5=e=>r(e,`BootstrapHttpError`);function h5(e){return typeof e!=`object`||!e?!1:!!(m5(e)&&e.status===401||e instanceof Error&&e.name===`RemoteEnvironmentAuthHttpError`&&`status`in e&&e.status===401||e instanceof be&&e.kind===`auth`)}function Dhe(e){let t=e.replace(/\s+/g,` `).trim();return t.length===0?`<empty response>`:t.slice(0,120)}async function g5(e,t){let n=await e.text();try{return JSON.parse(n)}catch{throw new p5({message:`${t} returned a non-JSON response (${Dhe(n)}). Ensure the Forge server is running and this route is proxied correctly.`,status:e.status})}}function _5(e){let t=e.start().then(n=>e.getSlot()===t?(e.onSettled(n),n):e.retry(),n=>{if(e.getSlot()!==t)return e.retry();throw n}).finally(()=>{e.getSlot()===t&&e.setSlot(null)});return e.setSlot(t),t}function Ohe(e){if(!e.authenticated||!e.role)throw Error(`Authenticated session is required.`);let t=khe(e.cmmdIdentity??null);return t?{displayName:t,email:e.cmmdIdentity?.email??null,avatarUrl:e.cmmdIdentity?.avatarUrl??null,role:e.role,verified:!0,source:`cmmd-identity`}:{displayName:`CMMD identity unavailable`,email:null,avatarUrl:null,role:e.role,verified:!1,source:`fallback`}}function khe(e){return e&&([e.firstName,e.lastName].map(e=>e?.trim()??``).filter(e=>e.length>0).join(` `)||e.username.trim()||e.email.trim())||null}var v5=null;function Ahe(){if(v5)return v5;let e=new URL(`/api/auth/session`,window.location.origin).toString(),t=fetch(e,{credentials:`include`}).then(async t=>{if(!t.ok)throw new p5({message:`Failed to load current app auth session state (${t.status}).`,status:t.status});return g5(t,e)}).then(Ohe).finally(()=>{v5===t&&(v5=null)});return v5=t,t}var y5=null,b5=null,x5=null,S5=null,C5=new Set,w5=`cmmd-forge.loggedOutLocalBootstrapCredentials.v1`;function jhe(e){let t=`${e.firstName??``} ${e.lastName??``}`.trim();n5({id:e.id,email:e.email,...t.length>0?{username:t}:{}}),d5({cmmdUserId:e.id,...e.email?{email:e.email}:{},...t.length>0?{displayName:t}:{}})}function T5(){if(typeof window>`u`||x5)return;let e=window.desktopBridge?.desktopAuth?.onStateChange;e&&(x5=e(e=>{y5=null,b5=null,S5=null,e.sessionLifecycle.status!==`ready`&&n5(null),(e.sessionLifecycle.status===`expired`||e.sessionLifecycle.status===`signed-out`&&e.sessionLifecycle.reason===`refresh-revoked`)&&ue().catch(e=>{r5(e,{route:`desktop-auth-session-expired`})})}))}function Mhe(){return tn(new URL(window.location.href))}function E5(){let e=new URL(window.location.href),t=nn(e);t.toString()!==e.toString()&&window.history.replaceState({},document.title,t.toString())}async function Nhe(){return P5(async()=>{let e=ae(`/api/auth/session`),t=async()=>{let t=await fetch(e,se({credentials:`include`}));if(!t.ok)throw new p5({message:`Failed to load server auth session state (${t.status}).`,status:t.status});return g5(t,e)},n=await t();return!n.authenticated&&n.auth.sessionMethods.length===1&&n.auth.sessionMethods[0]===`proxy-asserted`&&typeof window<`u`&&!window.desktopBridge&&e.startsWith(`https://`)&&await fe()?t():n})}async function Phe(e){return P5(async()=>{let t={credential:e},n=ae(`/api/auth/bootstrap`),r=await fetch(n,se({body:JSON.stringify(t),credentials:`include`,headers:{"content-type":`application/json`},method:`POST`}));if(!r.ok)throw new p5({message:await r.text()||`Failed to bootstrap auth session (${r.status}).`,status:r.status});return g5(r,n)})}function D5(e){return new URL(e,window.location.origin).toString()}function O5(e){let t=(e?.primaryMode===`cloud`?null:e)?.bootstrapToken?.trim();return t&&t.length>0?t:null}function k5(){return typeof window>`u`?null:O5(window.desktopBridge?.getLocalEnvironmentBootstrap?.()??null)}function Fhe(){return typeof window>`u`?!1:me()===`session-expired`}function A5(){if(typeof window>`u`)return new Set;try{let e=window.sessionStorage.getItem(w5),t=e?JSON.parse(e):[];return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}function j5(e){if(!(typeof window>`u`))try{if(e.size===0){window.sessionStorage.removeItem(w5);return}window.sessionStorage.setItem(w5,JSON.stringify([...e]))}catch{}}function Ihe(){let e=k5();if(!e)return;let t=new Set(A5());t.add(e),j5(t)}function Lhe(e){return A5().has(e)}function M5(){let e=k5();if(!e){j5(new Set);return}let t=new Set(A5());t.delete(e),j5(t)}async function N5(){let e=D5(`/api/auth/session`),t=await fetch(e,{credentials:`include`});return t.ok?g5(t,e):null}async function Rhe(e){if(typeof window>`u`)return;let t=O5(e);if(!t||Fhe()||C5.has(t)||Lhe(t))return;if((await N5().catch(()=>null))?.authenticated){C5.add(t);return}let n=D5(`/api/auth/bootstrap`),r=await fetch(n,{body:JSON.stringify({credential:t}),credentials:`include`,headers:{"content-type":`application/json`},method:`POST`});if(!r.ok){if(r.status===401)return;throw new p5({message:await r.text()||`Failed to bootstrap local web owner session (${r.status}).`,status:r.status})}await g5(r,n),C5.add(t)}async function zhe(){let e=await Nhe();if(e.authenticated)return e;let t=ce();if(t?.source!==`desktop-managed`||!t.bearerToken)return e;let n=await N5().catch(()=>null);return n?.authenticated?n:e}var Bhe=new Set([404,502,503,504]),Vhe=15e3,Hhe=500;function Uhe(e){ce()?.source===`paired-bearer`&&h5(e)&&ie(`http`)}async function P5(e){let t=Date.now();for(;;)try{return await e()}catch(e){if(Uhe(e),!Ghe(e))throw e;if(Date.now()-t>=Vhe)throw r5(e,{route:`bootstrap-retry-exhausted`}),e;await Whe(Hhe)}}function Whe(e){return new Promise(t=>{setTimeout(t,e)})}function Ghe(e){return m5(e)?Bhe.has(e.status):e instanceof TypeError||e instanceof DOMException&&e.name===`AbortError`}function Khe(e,t){return e.sessionLifecycle.status===`ready`?e.sessionLifecycle.principalId!==t.id||e.cmmd.identity?.id!==t.id?`desktop-principal-mismatch`:null:`desktop-session-required`}async function qhe(e){if(typeof window>`u`||!window.desktopBridge)return null;let t=window.desktopBridge.desktopAuth?.getState;if(!t)return`desktop-state-unavailable`;try{return Khe(await t(),e)}catch(e){return r5(e,{route:`desktop-auth-gate-state`}),`desktop-state-unavailable`}}async function Jhe(e,t){return n5(null),de(t),await D().catch(e=>{r5(e,{route:`desktop-auth-gate-logout`})}),{status:`requires-auth`,auth:e.auth,errorMessage:he(t)??`Forge Desktop requires CMMD authentication.`}}async function Yhe(){let e=await zhe();if(e.authenticated){if(e.cmmdIdentity){let t=await qhe(e.cmmdIdentity);return t?(le(),Jhe(e,t)):(le(),jhe(e.cmmdIdentity),{status:`authenticated`})}return{status:`requires-auth`,auth:e.auth}}return{status:`requires-auth`,auth:e.auth}}async function Xhe(e){let t=e.trim();if(!t)throw Error(`Enter a pairing token to continue.`);b5=null,M5(),await Phe(t),y5=null,E5()}function F5(){M5(),b5=null,y5=null}async function I5(e,t,n){let r=e.trim();if(!r)throw Error(`CMMD (Command) OAuth did not return an access token.`);let i=n?.refreshToken?.trim(),a=n?.mcpToken?.trim(),o=ae(`/api/auth/bootstrap/command`),s=await fetch(o,se({body:JSON.stringify({accessToken:r,...i?{refreshToken:i}:{},...a?{mcpToken:a}:{},...t===void 0?{}:{user:t}}),credentials:`include`,headers:{"content-type":`application/json`},method:`POST`}));if(!s.ok)throw new p5({message:await s.text()||`Failed to bootstrap with CMMD OAuth token (${s.status}).`,status:s.status});await g5(s,o),F5()}async function Zhe(){let e=ae(`/api/auth/ws-token`),t=await fetch(e,se({credentials:`include`,method:`POST`}));if(!t.ok)throw new p5({message:await t.text()||`Failed to issue websocket token (${t.status}).`,status:t.status});return g5(t,e)}async function Qhe(e){let t=await Zhe(),n=new URL(e,window.location.origin);return n.searchParams.set(`wsToken`,t.token),n.toString()}async function L5(e,t){try{return await O({method:`POST`,path:e,body:t,allowRetry:!1},Jn())}catch(e){throw e instanceof be&&e.kind!==`auth`&&e.code!==null&&Yn.has(e.code)?new be({kind:`auth`,message:e.message,status:e.status??401,code:e.code}):e}}async function $he(e){try{return await L5(`/api/cmmd/tasks/update`,e)}catch(t){if(t instanceof be&&(t.kind===`auth`||t.kind===`permission`))throw t;if(t instanceof be||t instanceof Error)return L5(`/api/command/tasks/update`,e);throw t}}async function ege(){typeof window>`u`||await window.desktopBridge?.desktopAuth?.logoutCloud?.()}async function tge(){let e=await Promise.allSettled([D(),ege()]);n5(null),Ihe(),y5=null,b5=null;let t=e.find(e=>e.status===`rejected`);if(t)throw t.reason}async function R5(){return T5(),b5?.status===`authenticated`?(le(),b5):y5||_5({start:z5,getSlot:()=>y5,setSlot:e=>{y5=e},onSettled:e=>{e.status===`authenticated`&&(b5=e)},retry:R5})}async function z5(){return oe().then(e=>Rhe(e)).then(()=>Yhe())}function B5(){return T5(),S5||(y5=null,b5=null,_5({start:z5,getSlot:()=>S5,setSlot:e=>{S5=e},onSettled:e=>{e.status===`authenticated`&&(b5=e,le())},retry:B5}))}function nge(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/u,``)}function rge(e){let t=nge(e).replace(/-/g,`+`).replace(/_/g,`/`);return`-----BEGIN PUBLIC KEY-----\n${((t+`=`.repeat((4-t.length%4)%4)).match(/.{1,64}/gu)??[]).join(`
|
|
1005
|
+
If init has been called in the preload and contextIsolation is disabled, is not required to call init in the renderer`);return}window.__SENTRY__RENDERER_INIT__=!0,e.sendClientReports=!1,e.defaultIntegrations===void 0&&(e.defaultIntegrations=F8(e)),e.stackParser===void 0&&(e.stackParser=j8),e.ipcNamespace===void 0&&(e.ipcNamespace=`sentry-ipc`),e.dsn===void 0&&(e.dsn=`https://12345@dummy.dsn/12345`),e.transport===void 0&&(e.transport=P8),delete e.initialScope,t(e)}var L8=e({BrowserClient:()=>SQ,MULTIPLEXED_TRANSPORT_EXTRA_KEY:()=>WV,OpenFeatureIntegrationHook:()=>Tme,SEMANTIC_ATTRIBUTE_SENTRY_OP:()=>BF,SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN:()=>VF,SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE:()=>RF,SEMANTIC_ATTRIBUTE_SENTRY_SOURCE:()=>LF,Scope:()=>lF,addBreadcrumb:()=>hH,addEventProcessor:()=>rB,addIntegration:()=>bB,bindScopeToEmitter:()=>qR,breadcrumbsIntegration:()=>K0,browserApiErrorsIntegration:()=>q0,browserProfilingIntegration:()=>gme,browserSessionIntegration:()=>Y0,browserTracingIntegration:()=>$6,buildLaunchDarklyFlagUsedHandler:()=>Cme,captureConsoleIntegration:()=>QH,captureEvent:()=>Wz,captureException:()=>Hz,captureFeedback:()=>xW,captureMessage:()=>Uz,captureSession:()=>sB,chromeStackLineParser:()=>R0,consoleLoggingIntegration:()=>OW,contextLinesIntegration:()=>ole,continueTrace:()=>yR,createConsolaReporter:()=>MW,createLangChainCallbackHandler:()=>Bq,createTransport:()=>uV,createUserFeedbackEnvelope:()=>U0,dedupeIntegration:()=>tU,defaultRequestInstrumentationOptions:()=>U6,defaultStackParser:()=>j8,elementTimingIntegration:()=>P1,endSession:()=>aB,eventFiltersIntegration:()=>xH,eventFromException:()=>hQ,eventFromMessage:()=>gQ,eventLoopBlockIntegration:()=>Rme,exceptionFromError:()=>aQ,extraErrorDataIntegration:()=>lU,featureFlagsIntegration:()=>sW,feedbackAsyncIntegration:()=>rQ,feedbackIntegration:()=>iQ,feedbackSyncIntegration:()=>iQ,fetchStreamPerformanceIntegration:()=>J6,forceLoad:()=>Hce,functionToStringIntegration:()=>vH,getAbsoluteUrl:()=>T0,getActiveSpan:()=>fL,getClient:()=>q,getCurrentScope:()=>K,getDefaultIntegrations:()=>F8,getFeedback:()=>ZY,getGlobalScope:()=>NF,getIsolationScope:()=>MF,getReplay:()=>npe,getRootSpan:()=>uL,getSpanDescendants:()=>lL,getSpanStatusFromHttpCode:()=>iI,getTraceData:()=>dH,globalHandlersIntegration:()=>Z0,graphqlClientIntegration:()=>mle,growthbookIntegration:()=>Ome,httpClientIntegration:()=>Jce,httpContextIntegration:()=>n2,inboundFiltersIntegration:()=>SH,init:()=>I8,instrumentAnthropicAiClient:()=>tq,instrumentCreateReactAgent:()=>oJ,instrumentGoogleGenAIClient:()=>_q,instrumentLangChainEmbeddings:()=>Gq,instrumentLangGraph:()=>sJ,instrumentOpenAiClient:()=>jK,instrumentOutgoingRequests:()=>W6,instrumentSupabaseClient:()=>LU,isBotUserAgent:()=>Q6,isEnabled:()=>nB,isInitialized:()=>tB,lastEventId:()=>eB,launchDarklyIntegration:()=>Sme,linkedErrorsIntegration:()=>r2,logger:()=>WJ,makeRendererTransport:()=>P8,metrics:()=>QJ,moduleMetadataIntegration:()=>GH,normalizeStringifyValue:()=>i2,onLoad:()=>Uce,openFeatureIntegration:()=>wme,parameterize:()=>sH,registerSpanErrorInstrumentation:()=>gL,registerWebWorker:()=>Nme,replayCanvasIntegration:()=>xpe,replayIntegration:()=>p6,reportPageLoaded:()=>Upe,reportingObserverIntegration:()=>Kce,rewriteFramesIntegration:()=>bU,scopeToMainIntegration:()=>N8,sendFeedback:()=>FY,setActiveSpanInBrowser:()=>Wpe,setAttribute:()=>Zz,setAttributes:()=>Xz,setContext:()=>Gz,setConversationId:()=>$z,setCurrentClient:()=>UV,setExtra:()=>qz,setExtras:()=>Kz,setHttpStatus:()=>aI,setMeasurement:()=>tR,setTag:()=>Yz,setTags:()=>Jz,setUser:()=>Qz,showReportDialog:()=>o2,spanStreamingIntegration:()=>Gpe,spanToBaggageHeader:()=>ML,spanToJSON:()=>YI,spanToTraceHeader:()=>UI,spotlightBrowserIntegration:()=>xme,startBrowserTracingNavigationSpan:()=>t8,startBrowserTracingPageLoadSpan:()=>e8,startInactiveSpan:()=>_R,startNewTrace:()=>CR,startSession:()=>iB,startSpan:()=>hR,startSpanManual:()=>gR,statsigIntegration:()=>kme,supabaseIntegration:()=>BU,suppressTracing:()=>xR,thirdPartyErrorFilterIntegration:()=>YU,uiProfiler:()=>A0,unleashIntegration:()=>Eme,updateSpanName:()=>mL,viewHierarchyIntegration:()=>hle,webVitalsIntegration:()=>Y6,webWorkerIntegration:()=>jme,withActiveSpan:()=>bR,withIsolationScope:()=>FF,withScope:()=>PF,withStreamedSpan:()=>NL,zodErrorsIntegration:()=>JU}),Bme=100,Vme=5,Hme=[`ResizeObserver loop completed with undelivered notifications.`,`ResizeObserver loop limit exceeded`,`AbortError`,`The user aborted a request.`,`Network request failed`,`NetworkError when attempting to fetch resource.`,`Failed to fetch`,`ChunkLoadError`,`Loading chunk`,`Loading CSS chunk`,`Non-Error promise rejection captured with value: Object Not Found Matching Id`];function R8(e){if(e)for(let t of Object.keys(e))/token|secret|password|api[_-]?key/i.test(t)&&(e[t]=`[redacted]`)}function Ume(e){e.request?.url&&(e.request.url=e.request.url.replace(/([?&](?:code|token|access_token|state)=)[^&]+/gi,`$1[redacted]`)),R8(e.extra),R8(e.tags)}function Wme(e){let t=B8(e.version)??`0.0.0`,n=B8(e.commitHash);return n?`${e.appName}@${t}+${n}`:`${e.appName}@${t}`}function z8(e,t){for(let n of t){let t=B8(e[n]);if(t)return t}}function Gme(e){return V8(e.enabled)??e.defaultEnabled??!1}function Kme(e){let t=B8(e.dsn);return!t||Gme(e)===!1?null:{dsn:t,environment:B8(e.environment)??B8(e.defaultEnvironment)??`production`,release:B8(e.release)??B8(e.defaultRelease)??void 0,debug:V8(e.debug)??e.defaultDebug??!1,tracesSampleRate:U8(e.tracesSampleRate,e.defaultTracesSampleRate??.1),profilesSampleRate:H8(e.profilesSampleRate,e.defaultProfilesSampleRate),replaysSessionSampleRate:H8(e.replaysSessionSampleRate,e.defaultReplaysSessionSampleRate),replaysOnErrorSampleRate:H8(e.replaysOnErrorSampleRate,e.defaultReplaysOnErrorSampleRate),attachStacktrace:!0,maxBreadcrumbs:Bme,normalizeDepth:Vme,tags:qme(e)}}function qme(e){let t={app:e.appName,runtime:e.runtime};for(let[n,r]of Object.entries(e.tags??{})){let e=B8(r);e&&(t[n]=e)}return t}function B8(e){if(e==null)return null;let t=e.trim();return t.length>0?t:null}function V8(e){if(typeof e==`boolean`)return e;let t=B8(e);if(t){if(t===`1`||t.toLowerCase()===`true`)return!0;if(t===`0`||t.toLowerCase()===`false`)return!1}}function H8(e,t){if(t!==void 0||e!==void 0)return U8(e,t??0)}function U8(e,t){let n=Jme(e);return n===null||n<0||n>1?t:n}function Jme(e){if(typeof e==`number`)return Number.isFinite(e)?e:null;let t=B8(e);if(!t)return null;let n=Number.parseFloat(t);return Number.isFinite(n)?n:null}function Yme(e){let t=(0,He.c)(11),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=ge(tt,`bg-background text-foreground`),t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=ge(Qe,`pl-1 md:pl-2.5`),t[1]=r):r=t[1];let i;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,it.jsx)(ot,{}),t[2]=i):i=t[2];let a;t[3]===e.onGoToNewChat?a=t[4]:(a=(0,it.jsx)(`div`,{className:r,children:(0,it.jsx)(`button`,{type:`button`,"aria-label":`Go to new chat`,onClick:e.onGoToNewChat,className:`${$e} hover:bg-accent/70`,children:i})}),t[3]=e.onGoToNewChat,t[4]=a);let o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,it.jsx)(`div`,{}),t[5]=o):o=t[5];let s;t[6]===a?s=t[7]:(s=(0,it.jsxs)(`header`,{className:Ze,children:[a,o]}),t[6]=a,t[7]=s);let c;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,it.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center px-4`,children:(0,it.jsxs)(`div`,{className:`max-w-md rounded-xl border border-border bg-card p-6 text-center shadow-lg`,children:[(0,it.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight`,children:`Something went wrong.`}),(0,it.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:`Forge hit an unexpected error and reported it.`}),(0,it.jsx)(`button`,{className:`mt-4 inline-flex rounded-md border border-border px-3 py-2 text-sm font-medium hover:bg-accent`,onClick:Xme,type:`button`,children:`Reload app`})]})}),t[8]=c):c=t[8];let l;return t[9]===s?l=t[10]:(l=(0,it.jsxs)(`div`,{className:n,children:[s,c]}),t[9]=s,t[10]=l),l}function Xme(){return window.location.reload()}var Zme=[/\bDeepSeek\b/i,/\bKimi\b/i,/\bMoonshot\b/i,/\bdeepseek[-._a-z0-9]*\b/i,/\bkimi[-._a-z0-9]*\b/i,/\bmoonshot[-._a-z0-9]*\b/i,/\bAPEX_API_KEY\b/,/\bDEEPSEEK_API_KEY\b/,/\bKIMI_API_KEY\b/,/\bOPENAI_API_KEY\b/,/\bANTHROPIC_API_KEY\b/,/\bCURSOR_API_KEY\b/,/\bOPENCODE_API_KEY\b/,/\bforge_proxy_[A-Za-z0-9._-]+\b/,/\bProviderValidationError\b/,/\/forge-server\/node_modules\//,/https?:\/\/[^\s'"<>)]*\/api\/provider-egress\/[^\s'"<>)]*/i,/https?:\/\/[^\s'"<>)]*(?:apex|deepseek|moonshot|kimi)[^\s'"<>)]*/i],Qme=`CMMD is temporarily unavailable. Check the workspace AI connection and retry.`;function W8(e){if(!e)return!1;let t=e.toLowerCase();return/\b(rate[\s-]?limit|too\s+many\s+requests|usage[ _-]limit|usage_limit_reached|quota|insufficient_quota)\b/.test(t)||/\b429\b/.test(t)}function $me(e){return/\bbound to provider account\b/.test(e)&&/\bcannot use provider account\b/.test(e)?`Forge could not switch this conversation to the selected AI account. Retry the account switch.`:/\bforge_runtime_repairing\b/.test(e)||/\bthis turn was interrupted because the environment is being repaired\b/.test(e)?`This turn was interrupted because the environment is being repaired. Retry after the repair finishes.`:/\bforge_runtime_stopped\b/.test(e)||/\bthis turn was interrupted because the environment was stopped\b/.test(e)?`This turn was interrupted because the environment was stopped. Start the environment and retry.`:null}function ehe(e){if(!e)return null;let t=e.toLowerCase(),n=$me(t);return n===null?/\bforge_provider_model_not_allowed\b/.test(t)||/\bnot\s+scoped\s+to\s+the\s+requested\s+model\b/.test(t)?`The workspace AI credential does not cover the model this turn asked for. Retry, or pick that model for the thread.`:/\bmodel\b[\s\S]*\b(not\s+(found|available|supported)|does\s+not\s+exist|unsupported|invalid|unknown)\b/.test(t)||/\b(unsupported|unknown|invalid)\b[\s\S]*\bmodel\b/.test(t)||/\b(model_not_found|invalid_model|model_not_supported)\b/.test(t)?`The selected model isn't available right now. Pick a different model and retry.`:W8(t)?`The AI service is rate-limited or out of quota. Wait a moment and retry.`:/_credential_reconnect_required\b/.test(t)?`The workspace AI credential needs to be reconnected. Reconnect it in Settings > Providers, then retry.`:/\b(unauthorized|forbidden|authentication\s+(failed|error|required)|invalid\s+api\s+key|expired\s+(token|credential))\b/.test(t)||/\b40[13]\b/.test(t)?`Workspace AI authentication failed. Reconnect the workspace and retry.`:/\b(timed?\s*out|timeout|overloaded|service\s+unavailable)\b/.test(t)||/\b50[234]\b/.test(t)?`The AI service is temporarily overloaded. Retry in a moment.`:null:n}function the(e){return e?Zme.some(t=>t.test(e)):!1}function G8(e,t={}){if(e==null)return null;let n=e.trim();return n.length===0?null:the(n)?ehe(n)??t.fallback??`CMMD is temporarily unavailable. Check the workspace AI connection and retry.`:n}var nhe=[/\bSocketCloseError\b/i,/\bSocketOpenError\b/i,/\bSocketReadError\b/i,/\bRpcClientDefect:\s*Unknown socket error\b/i,/Unable to connect to the Forge server WebSocket\./i,/\bping timeout\b/i];function K8(e){if(typeof e!=`string`)return!1;let t=e.trim();return t.length!==0&&nhe.some(e=>e.test(t))}function q8(e){return K8(e)?null:G8(e,{fallback:Qme})}var rhe=[/^Transport disposed$/,/WebSocket RPC request timed out after \d+ms\./],ihe=`Lost the connection to this Environment. Your message was not sent.`;function ahe(e){return e instanceof Error?K8(e.message)||rhe.some(t=>t.test(e.message.trim()))?ihe:e.message:`Failed to send message.`}var J8=`forge-web`,Y8=[`VITE_SENTRY_ENVIRONMENT`,`MODE`],X8=[`VITE_SENTRY_RELEASE`],ohe=[`VITE_SENTRY_DSN`],she=[`VITE_SENTRY_DEBUG`],che=[`VITE_SENTRY_ENABLED`],lhe=[`VITE_SENTRY_TRACES_SAMPLE_RATE`],uhe=[`VITE_SENTRY_PROFILES_SAMPLE_RATE`],dhe=[`VITE_SENTRY_REPLAYS_SESSION_SAMPLE_RATE`],fhe=[`VITE_SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE`],phe=[`VITE_SENTRY_COMMIT_SHA`,`VITE_COMMIT_SHA`],Z8=!1,Q8={autoInject:!1,colorScheme:`system`,formTitle:`Report a Bug`,themeLight:{accentBackground:`oklch(0.52 0.19 48)`,accentForeground:`#ffffff`,background:`#ffffff`,boxShadow:`0 24px 80px rgba(0, 0, 0, 0.18)`,foreground:`#262626`,outline:`1px solid oklch(0.52 0.19 48)`},themeDark:{accentBackground:`oklch(0.62 0.2 47)`,accentForeground:`#ffffff`,background:`#171717`,boxShadow:`0 24px 80px rgba(0, 0, 0, 0.45)`,foreground:`#f5f5f5`,outline:`1px solid oklch(0.62 0.2 47)`}};function mhe(e){let t=e.exception&&typeof e.exception==`object`&&`values`in e.exception&&Array.isArray(e.exception.values)?e.exception.values:[];return[typeof e.title==`string`?e.title:void 0,...t.flatMap(e=>{if(typeof e!=`object`||!e)return[];let t=e;return[typeof t.type==`string`?t.type:void 0,typeof t.value==`string`?t.value:void 0]})]}function hhe(e){return(e.exception&&typeof e.exception==`object`&&`values`in e.exception&&Array.isArray(e.exception.values)?e.exception.values:[]).some(e=>{if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.value!=`string`||!/All fibers interrupted without error/i.test(t.value)?!1:t.stacktrace?.frames?.some(e=>{let t=typeof e.filename==`string`?e.filename:``,n=typeof e.function==`string`?e.function:``;return t.includes(`src/rpc/wsTransport.ts`)&&n===`WsTransport.request`})})}function ghe(e){return mhe(e).some(K8)||hhe(e)}function _he(){let e=new URL(window.location.href);xe?e.hash=`/new`:(e.pathname=`/new`,e.search=``,e.hash=``),window.location.assign(e.toString())}function vhe(){let e=xe?`electron-renderer`:`browser`,t={APP_VERSION:`0.13.4`,BASE_URL:`/`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,TSS_INLINE_CSS_ENABLED:`false`,VITE_COMMIT_SHA:``,VITE_HOSTED_APP_CHANNEL:``,VITE_HTTP_URL:``,VITE_SENTRY_COMMIT_SHA:`7bd86cd945a2df9489517d66dff5c15133d1a975`,VITE_SENTRY_DEBUG:``,VITE_SENTRY_DSN:``,VITE_SENTRY_ENABLED:``,VITE_SENTRY_ENVIRONMENT:`production`,VITE_SENTRY_PROFILES_SAMPLE_RATE:``,VITE_SENTRY_RELEASE:`forge-web@0.13.4+7bd86cd945a2df9489517d66dff5c15133d1a975`,VITE_SENTRY_REPLAYS_ON_ERROR_SAMPLE_RATE:``,VITE_SENTRY_REPLAYS_SESSION_SAMPLE_RATE:``,VITE_SENTRY_TRACES_SAMPLE_RATE:``,VITE_WS_URL:``},n=z8(t,[...X8])??Wme({appName:J8,version:`0.13.4`,commitHash:z8(t,[...phe])});return Kme({appName:J8,runtime:e,defaultEnvironment:z8(t,[...Y8])??`development`,defaultRelease:n,defaultEnabled:!0,defaultTracesSampleRate:0,defaultReplaysSessionSampleRate:0,defaultReplaysOnErrorSampleRate:0,enabled:z8(t,[...che]),dsn:z8(t,[...ohe]),environment:z8(t,[...Y8]),release:z8(t,[...X8]),debug:z8(t,[...she]),tracesSampleRate:z8(t,[...lhe]),profilesSampleRate:z8(t,[...uhe]),replaysSessionSampleRate:z8(t,[...dhe]),replaysOnErrorSampleRate:z8(t,[...fhe]),tags:{platform:xe?`desktop`:`web`}})}function $8(e){return Ume(e),ghe(e)?null:e}function yhe(e){return{...e.replaysOnErrorSampleRate===void 0?{}:{replaysOnErrorSampleRate:e.replaysOnErrorSampleRate},...e.replaysSessionSampleRate===void 0?{}:{replaysSessionSampleRate:e.replaysSessionSampleRate}}}function e5(e){return{attachStacktrace:e.attachStacktrace,debug:e.debug,dsn:e.dsn,environment:e.environment,ignoreErrors:[...Hme],initialScope:{tags:e.tags},maxBreadcrumbs:e.maxBreadcrumbs,normalizeDepth:e.normalizeDepth,sendDefaultPii:!1,tracesSampleRate:e.tracesSampleRate,...e.release===void 0?{}:{release:e.release},...yhe(e)}}function bhe(e){let t=[];e.tracesSampleRate>0&&t.push($6()),((e.replaysSessionSampleRate??0)>0||(e.replaysOnErrorSampleRate??0)>0)&&t.push(p6());let n=iQ(Q8);t.push(n);try{I8({...e5(e),beforeSend:e=>$8(e),integrations:t})}catch{return null}return Z8=!0,L8}function xhe(e){let t=[];e.tracesSampleRate>0&&t.push(TA()),((e.replaysSessionSampleRate??0)>0||(e.replaysOnErrorSampleRate??0)>0)&&t.push(zk());let n=my(Q8);t.push(n);try{aj({...e5(e),beforeSend:e=>$8(e),integrations:t})}catch{return null}return Z8=!0,QM}function t5(){if(Z8)return xe?L8:QM;let e=vhe();return e?xe?bhe(e):xhe(e):null}function n5(e){if(t5()){if(xe){Qz(e);return}sl(e)}}function r5(e,t,n){if(!t5())return;let r=She(e);if(xe){PF(e=>{t&&e.setTags(t);let i=Hz(r);n?.showReportDialog&&o2({eventId:i})});return}ua(e=>{t&&e.setTags(t);let i=Qc(r);n?.showReportDialog&&US({eventId:i})})}function She(e){if(e instanceof Error)return e;if(typeof e==`string`&&e.trim().length>0)return Error(e);try{return Error(JSON.stringify(e))}catch{return Error(`Unknown non-Error exception`)}}var Che=class extends k.Component{constructor(e){super(e),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){r5(e,{origin:`react-boundary`},{showReportDialog:!0})}render(){return this.state.hasError?(0,it.jsx)(Yme,{onGoToNewChat:_he}):this.props.children}},i5=!1,a5=!1,o5=null,s5=null,c5=null,l5=!1,u5=new Set;function whe(e){if(i5||a5)return;if(!e.publicKey||!e.host){a5=!0;return}if(o5)return;if(typeof window>`u`||typeof location>`u`){a5=!0;return}let t=e.publicKey,n=e.host;o5=_e(async()=>{let{default:e}=await import(`./module-CPO4cjSm.js`);return{default:e}},[]).then(({default:e})=>{s5=e,e.init(t,{api_host:n,person_profiles:`identified_only`,capture_pageview:!1,capture_pageleave:!1,autocapture:!1,disable_session_recording:!0,loaded:()=>{i5=!0,c5&&d5(c5),f5(),u5.forEach(e=>e())}})}).catch(()=>{a5=!0,s5=null})}function d5(e){if(c5=e,!i5||!s5)return;let t={};e.email!==void 0&&(t.email=e.email),e.displayName!==void 0&&(t.name=e.displayName),s5.identify(e.cmmdUserId,t)}function The(e){return!i5||!s5?!1:s5.isFeatureEnabled(e)===!0}function f5(){!s5||l5||(l5=!0,s5.onFeatureFlags(()=>{u5.forEach(e=>e())}))}function Ehe(e){return u5.add(e),i5&&s5&&(f5(),e()),()=>{u5.delete(e)}}var p5=class extends v(`BootstrapHttpError`){},m5=e=>r(e,`BootstrapHttpError`);function h5(e){return typeof e!=`object`||!e?!1:!!(m5(e)&&e.status===401||e instanceof Error&&e.name===`RemoteEnvironmentAuthHttpError`&&`status`in e&&e.status===401||e instanceof be&&e.kind===`auth`)}function Dhe(e){let t=e.replace(/\s+/g,` `).trim();return t.length===0?`<empty response>`:t.slice(0,120)}async function g5(e,t){let n=await e.text();try{return JSON.parse(n)}catch{throw new p5({message:`${t} returned a non-JSON response (${Dhe(n)}). Ensure the Forge server is running and this route is proxied correctly.`,status:e.status})}}function _5(e){let t=e.start().then(n=>e.getSlot()===t?(e.onSettled(n),n):e.retry(),n=>{if(e.getSlot()!==t)return e.retry();throw n}).finally(()=>{e.getSlot()===t&&e.setSlot(null)});return e.setSlot(t),t}function Ohe(e){if(!e.authenticated||!e.role)throw Error(`Authenticated session is required.`);let t=khe(e.cmmdIdentity??null);return t?{displayName:t,email:e.cmmdIdentity?.email??null,avatarUrl:e.cmmdIdentity?.avatarUrl??null,role:e.role,verified:!0,source:`cmmd-identity`}:{displayName:`CMMD identity unavailable`,email:null,avatarUrl:null,role:e.role,verified:!1,source:`fallback`}}function khe(e){return e&&([e.firstName,e.lastName].map(e=>e?.trim()??``).filter(e=>e.length>0).join(` `)||e.username.trim()||e.email.trim())||null}var v5=null;function Ahe(){if(v5)return v5;let e=new URL(`/api/auth/session`,window.location.origin).toString(),t=fetch(e,{credentials:`include`}).then(async t=>{if(!t.ok)throw new p5({message:`Failed to load current app auth session state (${t.status}).`,status:t.status});return g5(t,e)}).then(Ohe).finally(()=>{v5===t&&(v5=null)});return v5=t,t}var y5=null,b5=null,x5=null,S5=null,C5=new Set,w5=`cmmd-forge.loggedOutLocalBootstrapCredentials.v1`;function jhe(e){let t=`${e.firstName??``} ${e.lastName??``}`.trim();n5({id:e.id,email:e.email,...t.length>0?{username:t}:{}}),d5({cmmdUserId:e.id,...e.email?{email:e.email}:{},...t.length>0?{displayName:t}:{}})}function T5(){if(typeof window>`u`||x5)return;let e=window.desktopBridge?.desktopAuth?.onStateChange;e&&(x5=e(e=>{y5=null,b5=null,S5=null,e.sessionLifecycle.status!==`ready`&&n5(null),(e.sessionLifecycle.status===`expired`||e.sessionLifecycle.status===`signed-out`&&e.sessionLifecycle.reason===`refresh-revoked`)&&ue().catch(e=>{r5(e,{route:`desktop-auth-session-expired`})})}))}function Mhe(){return tn(new URL(window.location.href))}function E5(){let e=new URL(window.location.href),t=nn(e);t.toString()!==e.toString()&&window.history.replaceState({},document.title,t.toString())}async function Nhe(){return P5(async()=>{let e=ae(`/api/auth/session`),t=async()=>{let t=await fetch(e,se({credentials:`include`}));if(!t.ok)throw new p5({message:`Failed to load server auth session state (${t.status}).`,status:t.status});return g5(t,e)},n=await t();return!n.authenticated&&n.auth.sessionMethods.length===1&&n.auth.sessionMethods[0]===`proxy-asserted`&&typeof window<`u`&&!window.desktopBridge&&e.startsWith(`https://`)&&await fe()?t():n})}async function Phe(e){return P5(async()=>{let t={credential:e},n=ae(`/api/auth/bootstrap`),r=await fetch(n,se({body:JSON.stringify(t),credentials:`include`,headers:{"content-type":`application/json`},method:`POST`}));if(!r.ok)throw new p5({message:await r.text()||`Failed to bootstrap auth session (${r.status}).`,status:r.status});return g5(r,n)})}function D5(e){return new URL(e,window.location.origin).toString()}function O5(e){let t=(e?.primaryMode===`cloud`?null:e)?.bootstrapToken?.trim();return t&&t.length>0?t:null}function k5(){return typeof window>`u`?null:O5(window.desktopBridge?.getLocalEnvironmentBootstrap?.()??null)}function Fhe(){return typeof window>`u`?!1:me()===`session-expired`}function A5(){if(typeof window>`u`)return new Set;try{let e=window.sessionStorage.getItem(w5),t=e?JSON.parse(e):[];return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}function j5(e){if(!(typeof window>`u`))try{if(e.size===0){window.sessionStorage.removeItem(w5);return}window.sessionStorage.setItem(w5,JSON.stringify([...e]))}catch{}}function Ihe(){let e=k5();if(!e)return;let t=new Set(A5());t.add(e),j5(t)}function Lhe(e){return A5().has(e)}function M5(){let e=k5();if(!e){j5(new Set);return}let t=new Set(A5());t.delete(e),j5(t)}async function N5(){let e=D5(`/api/auth/session`),t=await fetch(e,{credentials:`include`});return t.ok?g5(t,e):null}async function Rhe(e){if(typeof window>`u`)return;let t=O5(e);if(!t||Fhe()||C5.has(t)||Lhe(t))return;if((await N5().catch(()=>null))?.authenticated){C5.add(t);return}let n=D5(`/api/auth/bootstrap`),r=await fetch(n,{body:JSON.stringify({credential:t}),credentials:`include`,headers:{"content-type":`application/json`},method:`POST`});if(!r.ok){if(r.status===401)return;throw new p5({message:await r.text()||`Failed to bootstrap local web owner session (${r.status}).`,status:r.status})}await g5(r,n),C5.add(t)}async function zhe(){let e=await Nhe();if(e.authenticated)return e;let t=ce();if(t?.source!==`desktop-managed`||!t.bearerToken)return e;let n=await N5().catch(()=>null);return n?.authenticated?n:e}var Bhe=new Set([404,502,503,504]),Vhe=15e3,Hhe=500;function Uhe(e){ce()?.source===`paired-bearer`&&h5(e)&&ie(`http`)}async function P5(e){let t=Date.now();for(;;)try{return await e()}catch(e){if(Uhe(e),!Ghe(e))throw e;if(Date.now()-t>=Vhe)throw r5(e,{route:`bootstrap-retry-exhausted`}),e;await Whe(Hhe)}}function Whe(e){return new Promise(t=>{setTimeout(t,e)})}function Ghe(e){return m5(e)?Bhe.has(e.status):e instanceof TypeError||e instanceof DOMException&&e.name===`AbortError`}function Khe(e,t){return e.sessionLifecycle.status===`ready`?e.sessionLifecycle.principalId!==t.id||e.cmmd.identity?.id!==t.id?`desktop-principal-mismatch`:null:`desktop-session-required`}async function qhe(e){if(typeof window>`u`||!window.desktopBridge)return null;let t=window.desktopBridge.desktopAuth?.getState;if(!t)return`desktop-state-unavailable`;try{return Khe(await t(),e)}catch(e){return r5(e,{route:`desktop-auth-gate-state`}),`desktop-state-unavailable`}}async function Jhe(e,t){return n5(null),de(t),await D().catch(e=>{r5(e,{route:`desktop-auth-gate-logout`})}),{status:`requires-auth`,auth:e.auth,errorMessage:he(t)??`Forge Desktop requires CMMD authentication.`}}async function Yhe(){let e=await zhe();if(e.authenticated){if(e.cmmdIdentity){let t=await qhe(e.cmmdIdentity);return t?(le(),Jhe(e,t)):(le(),jhe(e.cmmdIdentity),{status:`authenticated`})}return{status:`requires-auth`,auth:e.auth}}return{status:`requires-auth`,auth:e.auth}}async function Xhe(e){let t=e.trim();if(!t)throw Error(`Enter a pairing token to continue.`);b5=null,M5(),await Phe(t),y5=null,E5()}function F5(){M5(),b5=null,y5=null}async function I5(e,t,n){let r=e.trim();if(!r)throw Error(`CMMD (Command) OAuth did not return an access token.`);let i=n?.refreshToken?.trim(),a=n?.mcpToken?.trim(),o=ae(`/api/auth/bootstrap/command`),s=await fetch(o,se({body:JSON.stringify({accessToken:r,...i?{refreshToken:i}:{},...a?{mcpToken:a}:{},...t===void 0?{}:{user:t}}),credentials:`include`,headers:{"content-type":`application/json`},method:`POST`}));if(!s.ok)throw new p5({message:await s.text()||`Failed to bootstrap with CMMD OAuth token (${s.status}).`,status:s.status});await g5(s,o),F5()}async function Zhe(){let e=ae(`/api/auth/ws-token`),t=await fetch(e,se({credentials:`include`,method:`POST`}));if(!t.ok)throw new p5({message:await t.text()||`Failed to issue websocket token (${t.status}).`,status:t.status});return g5(t,e)}async function Qhe(e){let t=await Zhe(),n=new URL(e,window.location.origin);return n.searchParams.set(`wsToken`,t.token),n.toString()}async function L5(e,t){try{return await O({method:`POST`,path:e,body:t,allowRetry:!1},Jn())}catch(e){throw e instanceof be&&e.kind!==`auth`&&e.code!==null&&Yn.has(e.code)?new be({kind:`auth`,message:e.message,status:e.status??401,code:e.code}):e}}async function $he(e){try{return await L5(`/api/cmmd/tasks/update`,e)}catch(t){if(t instanceof be&&(t.kind===`auth`||t.kind===`permission`))throw t;if(t instanceof be||t instanceof Error)return L5(`/api/command/tasks/update`,e);throw t}}async function ege(){typeof window>`u`||await window.desktopBridge?.desktopAuth?.logoutCloud?.()}async function tge(){let e=await Promise.allSettled([D(),ege()]);n5(null),Ihe(),y5=null,b5=null;let t=e.find(e=>e.status===`rejected`);if(t)throw t.reason}async function R5(){return T5(),b5?.status===`authenticated`?(le(),b5):y5||_5({start:z5,getSlot:()=>y5,setSlot:e=>{y5=e},onSettled:e=>{e.status===`authenticated`&&(b5=e)},retry:R5})}async function z5(){return oe().then(e=>Rhe(e)).then(()=>Yhe())}function B5(){return T5(),S5||(y5=null,b5=null,_5({start:z5,getSlot:()=>S5,setSlot:e=>{S5=e},onSettled:e=>{e.status===`authenticated`&&(b5=e,le())},retry:B5}))}function nge(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/u,``)}function rge(e){let t=nge(e).replace(/-/g,`+`).replace(/_/g,`/`);return`-----BEGIN PUBLIC KEY-----\n${((t+`=`.repeat((4-t.length%4)%4)).match(/.{1,64}/gu)??[]).join(`
|
|
1006
1006
|
`)}\n-----END PUBLIC KEY-----\n`}function V5(e){return{publicKeyPem:rge(e.publicKeySpkiDer),async sign(t){let n=await crypto.subtle.sign(`Ed25519`,e.privateKey,new TextEncoder().encode(t));return new Uint8Array(n)}}}var ige=`cmmd-session-pop`,H5=`keys`,U5=`device-key`;function age(){return!1}var W5=class extends Error{constructor(e){super(`CMMD session key storage is unavailable (${e}). Session binding is enabled, so login cannot continue without a bound key: allow site data and IndexedDB for this origin, then retry.`),this.name=`CmmdSessionPopKeyStorageError`}};function oge(e){return e===void 0?typeof indexedDB>`u`?null:indexedDB:e}function G5(e){return new Promise((t,n)=>{e.addEventListener(`success`,()=>t(e.result),{once:!0}),e.addEventListener(`error`,()=>n(e.error),{once:!0})})}function sge(e){return new Promise((t,n)=>{e.addEventListener(`complete`,()=>t(),{once:!0}),e.addEventListener(`abort`,()=>n(e.error??new DOMException(`The transaction aborted.`,`AbortError`)),{once:!0}),e.addEventListener(`error`,()=>n(e.error??new DOMException(`The transaction failed.`,`UnknownError`)),{once:!0})})}function cge(e){return new Promise((t,n)=>{let r=e.open(ige,1);r.addEventListener(`upgradeneeded`,()=>{r.result.objectStoreNames.contains(H5)||r.result.createObjectStore(H5)}),r.addEventListener(`success`,()=>t(r.result),{once:!0}),r.addEventListener(`error`,()=>n(r.error),{once:!0})})}function K5(e){if(!e||typeof e!=`object`)return!1;let t=e;return t.privateKey instanceof CryptoKey&&t.publicKeySpkiDer instanceof Uint8Array}async function lge(e){let t=await G5(e.transaction(H5,`readonly`).objectStore(H5).get(U5));return K5(t)?{privateKey:t.privateKey,publicKeySpkiDer:t.publicKeySpkiDer}:null}async function uge(e,t){let n=e.transaction(H5,`readwrite`),r=n.objectStore(H5),i=sge(n);i.catch(()=>void 0);let a=await G5(r.get(U5));return K5(a)?{privateKey:a.privateKey,publicKeySpkiDer:a.publicKeySpkiDer}:(await G5(r.add(t,U5)),await i,t)}var q5=null;async function dge(e={}){return age()?(q5??=fge(e).finally(()=>{q5=null}),q5):null}async function fge(e){let t=oge(e.indexedDB),n=e.subtle??crypto.subtle;if(!t)throw new W5(`IndexedDB is not available in this context`);let r;try{r=await cge(t)}catch{throw new W5(`the key database could not be opened`)}try{let e=await lge(r);if(e)return V5({privateKey:e.privateKey,publicKeySpkiDer:e.publicKeySpkiDer});let t=await n.generateKey({name:`Ed25519`},!1,[`sign`]),i={privateKey:t.privateKey,publicKeySpkiDer:new Uint8Array(await n.exportKey(`spki`,t.publicKey))};return V5(await uge(r,i))}catch(e){throw e instanceof W5?e:new W5(`the session key could not be generated or persisted`)}}function J5(e={}){return dge(e).then(e=>e?.publicKeyPem??null)}async function pge(e,t={}){let n=e.email.trim();if(!n||!e.password)throw Error(`Enter your CMMD email and password.`);let r=await(t.resolvePopPublicKey??J5)(),i=ae(`/api/auth/cmmd-password/token`),a=await fetch(i,se({body:JSON.stringify({email:n,password:e.password,...r?{pop_public_key:r}:{}}),credentials:`include`,headers:{"content-type":`application/json`},method:`POST`}));if(!a.ok)throw new p5({message:await a.text()||`CMMD login failed (${a.status}).`,status:a.status});let o=await g5(a,i);if(o.authenticated===!0)return F5(),{serverEstablishedSession:!0};if(typeof o.access_token!=`string`||o.access_token.trim().length===0)throw Error(`CMMD login did not return an access token.`);return await I5(o.access_token,o.user,{refreshToken:typeof o.refresh_token==`string`?o.refresh_token:void 0,mcpToken:typeof o.mcp_token==`string`?o.mcp_token:void 0}),{serverEstablishedSession:!1}}async function Y5(e,t){return await e.text()||t}async function mge(e,t){let n=e?.trim(),r={...n?{label:n}:{},...t?{role:t}:{}},i=ae(`/api/auth/pairing-token`),a=await fetch(i,se({body:JSON.stringify(r),credentials:`include`,headers:{"content-type":`application/json`},method:`POST`}));if(!a.ok)throw Error(await Y5(a,`Failed to create pairing credential (${a.status}).`));return g5(a,i)}async function hge(){let e=ae(`/api/auth/clients`),t=await fetch(e,se({credentials:`include`}));if(!t.ok)throw Error(await Y5(t,`Failed to load paired clients (${t.status}).`));return g5(t,e)}async function gge(e){let t=ae(`/api/auth/pairing-links/revoke`),n=await fetch(t,se({body:JSON.stringify({id:e}),credentials:`include`,headers:{"content-type":`application/json`},method:`POST`}));if(!n.ok)throw Error(await Y5(n,`Failed to revoke the pairing link (${n.status}).`));return(await g5(n,t)).revoked}var _ge=`/.well-known/forge/environment`,X5=ve()(e=>({descriptor:null,setDescriptor:t=>e({descriptor:t}),reset:()=>e({descriptor:null})})),Z5=null;function vge(e){let t=Q5();return t?Te(Se({id:t.environmentId,label:t.label,source:e.source,target:e.target}),t):null}async function yge(){return P5(async()=>{await oe();let e=ce()?.bearerToken,t=ae(_ge),n=e?await fetch(t,{headers:{Authorization:`Bearer ${e}`}}):await fetch(t);if(!n.ok)throw new p5({message:`Failed to load server environment descriptor (${n.status}).`,status:n.status});let r=await g5(n,t);return $5(r),r})}function Q5(){return X5.getState().descriptor}function bge(){return X5(xge)}function xge(e){return e.descriptor?.environmentId??null}function Sge(){return X5(Cge)}function Cge(e){return e.descriptor}function wge(){return X5(Tge)}function Tge(e){return e.descriptor?.deviceRuntimeId??null}function Ege(){return Q5()?.deviceRuntimeId??null}function Dge(){return X5(Oge)}function Oge(e){return Me(e.descriptor)}function kge(){return X5(Age)}function Age(e){return Ne(e.descriptor)}function $5(e){X5.getState().setDescriptor(e)}function jge(e,t){return t?.primaryMode!==`cloud`||e.environmentId===t.environmentId}function e7(){let e=ce();return e?vge({source:e.source,target:e.target}):null}function Mge(){return Nge()}async function Nge(){let e=await oe(),t=Q5();if(t&&jge(t,e))return Promise.resolve(t);if(t&&$5(null),Z5)return Z5;let n=yge();return Z5=n,n.finally(()=>{Z5===n&&(Z5=null)})}var t7=class e{#e;constructor(e){this.#e=e}static namedByCatalog(t){return new e(t.projectId)}get registrationProjectId(){return this.#e}asConfirmationIdentity(){return{registrationProjectId:this.#e}}};function n7(e){return{match:t=>t.present({target:e})}}function r7(){return{match:e=>e.provablyAbsent()}}function Pge(e){return{match:t=>t.unprovable(e)}}var Fge=class e{#e;#t;capacity;constructor(e,t,n){this.#e=e,this.#t=t,this.capacity=n}static fromValidatedBody(t,n,r){return new e(t,n,r)}listRowsForDisplay(){return this.#e}listEnvironmentsForDisplay(){return this.#t}locate(e){if(e.registrationProjectId!==void 0){let t=this.#e.find(t=>t.projectId===e.registrationProjectId);return t===void 0?r7():n7(t7.namedByCatalog(t))}if(e.runtimeId!==void 0||e.cmmdEnvironmentId!==void 0){let t=this.#e.find(t=>t.runtime!=null&&(e.runtimeId!==void 0&&t.runtime.runtimeId===e.runtimeId||e.cmmdEnvironmentId!==void 0&&t.runtime.environmentId===e.cmmdEnvironmentId));if(t)return n7(t7.namedByCatalog(t))}if(this.#e.length===0)return r7();let t=e.runtimeId??e.cmmdEnvironmentId;return Pge(t===void 0?`no identity this catalog can be matched on`:`the catalog holds ${String(this.#e.length)} row(s) that ${t} cannot be ruled out against`)}};function i7(e){let t=e,n=t&&typeof t==`object`&&`data`in t&&t.data?t.data:t,r=n?.projects;if(!Array.isArray(r))throw Error("Forge Cloud returned a project catalog this version cannot read (no `projects` list).");let i=n?.environments;if(!Array.isArray(i))throw Error("Forge Cloud returned an Environment catalog this version cannot read (invalid `environments` list).");if(!r.every(Ige))throw Error(`Forge Cloud returned a project catalog this version cannot read (invalid project entry).`);if(!i.every(Lge))throw Error(`Forge Cloud returned an Environment catalog this version cannot read (invalid Environment entry).`);return Fge.fromValidatedBody(r,i,n?.capacity??null)}function Ige(e){return!o7(e)||typeof e.organizationId!=`number`||typeof e.projectId!=`number`?!1:e.runtime===void 0||e.runtime===null||a7(e.runtime)}function Lge(e){return o7(e)&&typeof e.organizationId==`number`&&typeof e.userId==`number`&&a7(e.runtime)}function a7(e){return o7(e)&&typeof e.runtimeId==`string`&&typeof e.status==`string`}function o7(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Rge(e,t){let n=new URL(e);return n.pathname=t,n.search=``,n.hash=``,n.toString()}function s7(e){return e.accessToken??e.resolveAccessToken?.()}function c7(e,t,n=t=>Rge(e.cmmdHttpBaseUrl,t)){return O({method:t.method,path:t.path,...t.body===void 0?{}:{body:t.body},...t.signal===void 0?{}:{signal:t.signal}},{resolveUrl:n,resolveBearerToken:()=>s7(e)})}function zge(e,t){return c7(e,{method:`GET`,path:`/api/forge/context/cloud-projects/${encodeURIComponent(String(t.projectId))}/removal-preview`,...t.signal===void 0?{}:{signal:t.signal}},e.cloudProjectRemovalPreviewUrl?()=>e.cloudProjectRemovalPreviewUrl(t.projectId):void 0).then(e=>e.preview)}function Bge(e,t){return c7(e,{method:`POST`,path:`/api/forge/context/cloud-projects/${encodeURIComponent(String(t.projectId))}/removal`,body:{idempotencyKey:t.idempotencyKey,deletePlanningProject:t.deletePlanningProject,...t.deleteCheckoutFiles===void 0?{}:{deleteCheckoutFiles:t.deleteCheckoutFiles},...t.previewToken===void 0?{}:{previewToken:t.previewToken},...t.forceDirty===void 0?{}:{forceDirty:t.forceDirty}},...t.signal===void 0?{}:{signal:t.signal}},e.cloudProjectRemovalUrl?()=>e.cloudProjectRemovalUrl(t.projectId):void 0).then(e=>e.operation)}function l7(e,t=``){return`/api/forge/context/runtimes/${encodeURIComponent(e)}${t}`}async function Vge(e){if(e.ok)return;let{CmmdApiError:t}=await _e(async()=>{let{CmmdApiError:e}=await import(`./transport-CgH8pQK3.js`).then(e=>e.r);return{CmmdApiError:e}},__vite__mapDeps([7,1]));if(e.status===401||e.status===403){let n=null;try{let t=await e.json();n=typeof t?.code==`string`?t.code:null}catch{}throw new t({kind:`auth`,message:`CMMD authentication required. Sign in again to continue.`,status:e.status,code:n})}throw new t({kind:e.status>=500?`server`:`client`,message:`forge-cloud-projects proxy error (${e.status})`,status:e.status})}var u7=class{config;constructor(e){this.config=e}async ensureRuntime(e){return(await c7(this.config,{method:`POST`,path:`/api/forge/context/runtimes/ensure`,body:{...e.projectId===void 0?{}:{projectId:e.projectId},...e.organizationId===void 0?{}:{organizationId:e.organizationId},...e.githubRepoFullName===void 0?{}:{githubRepoFullName:e.githubRepoFullName},...e.workspaceRoot===void 0?{}:{workspaceRoot:e.workspaceRoot}},...e.signal===void 0?{}:{signal:e.signal}},this.config.ensureUrl?()=>this.config.ensureUrl:void 0)).runtime}async connectRuntime(e){return c7(this.config,{method:`POST`,path:l7(e.runtimeId,`/connect`),...e.organizationId===void 0?{}:{body:{organizationId:e.organizationId}},...e.signal===void 0?{}:{signal:e.signal}})}async getRuntime(e){return(await c7(this.config,{method:`GET`,path:l7(e.runtimeId),...e.signal===void 0?{}:{signal:e.signal}})).runtime}async destroyRuntime(e){return(await c7(this.config,{method:`POST`,path:l7(e.runtimeId,`/destroy`),body:{purgeVolume:e.purgeVolume??!1,...e.force===!0?{force:!0}:{},...e.reason===void 0?{}:{reason:e.reason},...e.organizationId===void 0?{}:{organizationId:e.organizationId}},...e.signal===void 0?{}:{signal:e.signal}},this.config.destroyUrl?()=>this.config.destroyUrl(e.runtimeId):void 0)).runtime}async runRuntimeLifecycleAction(e){return(await c7(this.config,{method:`POST`,path:l7(e.runtimeId,`/${e.action}`),body:e.organizationId===void 0?{}:{organizationId:e.organizationId},...e.signal===void 0?{}:{signal:e.signal}},this.config.lifecycleUrl?()=>this.config.lifecycleUrl(e.runtimeId,e.action):void 0)).runtime}async updateRuntimeCommit(e){return(await c7(this.config,{method:`POST`,path:l7(e.runtimeId,`/update-commit`),body:e.organizationId===void 0?{}:{organizationId:e.organizationId},...e.signal===void 0?{}:{signal:e.signal}},this.config.updateCommitUrl?()=>this.config.updateCommitUrl(e.runtimeId):void 0)).operation}async getRuntimeCommitUpdateOperation(e){return(await c7(this.config,{method:`GET`,path:l7(e.runtimeId,`/update-commit/${encodeURIComponent(String(e.operationId))}`),...e.signal===void 0?{}:{signal:e.signal}},this.config.updateCommitOperationUrl?()=>this.config.updateCommitOperationUrl(e.runtimeId,e.operationId):void 0)).operation}async listCloudProjects(e){if(this.config.listUrl){let t=s7(this.config),n=await fetch(this.config.listUrl,{method:`GET`,headers:{Accept:`application/json`,...t?{Authorization:`Bearer ${t}`}:{}},credentials:t?`omit`:`include`,cache:`no-store`,...e?.signal===void 0?{}:{signal:e.signal}});return await Vge(n),i7(await n.json())}return i7(await c7(this.config,{method:`GET`,path:`/api/forge/context/cloud-projects`,...e?.signal===void 0?{}:{signal:e.signal}}))}async previewCloudProjectRemoval(e){return zge(this.config,e)}async requestCloudProjectRemoval(e){return Bge(this.config,e)}async getCloudProjectRemoval(e){return(await c7(this.config,{method:`GET`,path:`/api/forge/context/cloud-projects/removals/${encodeURIComponent(e.operationId)}`,...e.signal===void 0?{}:{signal:e.signal}},this.config.cloudProjectRemovalReceiptUrl?()=>this.config.cloudProjectRemovalReceiptUrl(e.operationId):void 0)).operation}},d7=`/api/attachments/upload/`;function Hge(e){if(!e.relativeUrl.startsWith(d7))throw Error(`Attachment upload URL did not use the expected upload route.`);let t=e.relativeUrl.slice(24);if(!/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(t))throw Error(`Attachment upload URL did not contain a valid signed token.`);if(e.relativeUrl.includes(`?`)||e.relativeUrl.includes(`#`))throw Error(`Attachment upload URL must not include a query or fragment.`);let n=new URL(e.httpBaseUrl),r=n.pathname.endsWith(`/`)?n.pathname.slice(0,-1):n.pathname,i=`${r}${d7}`,a=new URL(`${r}${e.relativeUrl}`,n);if(a.origin!==n.origin||!a.pathname.startsWith(i))throw Error(`Attachment upload URL resolved outside the selected environment.`);return a.toString()}var f7=!1,p7=null;function m7(e){return Object.values(e)}function h7(e){return e.map(e=>s(e))}function g7(e){try{Yt(h7(m7(e))).catch(e=>{console.error(`[SAVED_ENVIRONMENTS] persist failed`,e)})}catch(e){console.error(`[SAVED_ENVIRONMENTS] persist failed`,e)}}function Uge(e){let t=_7.getState().byId,n=Object.fromEntries(e.map(e=>[e.environmentId,e]));_7.setState({byId:{...n,...t}})}async function Wge(){if(f7)return;if(p7)return p7;let e=(async()=>{try{Uge(await Jt())}catch(e){console.error(`[SAVED_ENVIRONMENTS] hydrate failed`,e)}finally{f7=!0,_7.setState({hydrated:!0})}})().finally(()=>{p7===e&&(p7=null)});return p7=e,p7}var _7=ve()(e=>({byId:{},hydrated:f7,upsert:t=>e(e=>{let n={...e.byId,[t.environmentId]:t};return g7(n),{byId:n}}),remove:t=>e(e=>{let{[t]:n,...r}=e.byId;return g7(r),{byId:r}}),markConnected:(t,n)=>e(e=>{let r=e.byId[t];if(!r)return e;let i={...e.byId,[t]:{...r,lastConnectedAt:n}};return g7(i),{byId:i}}),reset:()=>{g7({}),e({byId:{}})}}));function v7(){return f7}function Gge(){return v7()?Promise.resolve():Wge()}function y7(){return Object.values(_7.getState().byId).toSorted((e,t)=>e.label.localeCompare(t.label))}function Kge(){return y7().filter(e=>e.lastAuthenticatedPullRequestCapability===!0)}function b7(e){return _7.getState().byId[e]??null}function x7(e){let t=e7();return t?.environmentId===e?we(t):b7(e)?.httpBaseUrl??null}function S7(e){let t=x7(e.environmentId)??(typeof window<`u`?window.location.origin:null);if(!t)throw Error(`Unable to resolve HTTP base URL for environment ${e.environmentId}.`);let n=new URL(t);return n.pathname=`${n.pathname.endsWith(`/`)?n.pathname.slice(0,-1):n.pathname}${e.pathname.startsWith(`/`)?e.pathname:`/${e.pathname}`}`,e.searchParams&&(n.search=new URLSearchParams(e.searchParams).toString()),n.toString()}function C7(e){if(!x7(e))throw Error(`Unable to resolve HTTP base URL for environment ${e}.`)}function qge(e){return C7(e.environmentId),Hge({httpBaseUrl:x7(e.environmentId),relativeUrl:e.relativeUrl})}async function Jge(e){await Yt(h7(m7({..._7.getState().byId,[e.environmentId]:e})))}async function Yge(e,t){let{[e]:n,...r}=_7.getState().byId,i={...r,[t.environmentId]:t};await Yt(h7(m7(i))),_7.setState({byId:i})}async function Xge(e){return Xt(e)}async function Zge(e,t){return Zt(e,t)}async function Qge(e){await Qt(e)}function $ge(e,t){return e.reasoningEffortLevels.some(e=>e.value===t)}function w7(e){return e.reasoningEffortLevels.find(e=>e.isDefault)?.value??null}function T7(e,t){let n=w7(e),r=typeof t==`string`?t.trim():null;return r&&!e.promptInjectedEffortLevels.includes(r)&&$ge(e,r)?r:n??void 0}function E7(e,t){return e.contextWindowOptions.some(e=>e.value===t)}function D7(e){return e.contextWindowOptions.find(e=>e.isDefault)?.value??null}function e_e(e,t){let n=D7(e);return t&&E7(e,t)?t:n??void 0}function t_e(e,t){let n=T7(e,t?.reasoningEffort),r=e.supportsFastMode?t?.fastMode:void 0,i={...n?{reasoningEffort:n}:{},...r===void 0?{}:{fastMode:r}};return Object.keys(i).length>0?i:void 0}function n_e(e,t){let n=T7(e,t?.effort),r=e.supportsThinkingToggle?t?.thinking:void 0,i=e.supportsFastMode?t?.fastMode:void 0,a=e_e(e,t?.contextWindow),o={...r===void 0?{}:{thinking:r},...n?{effort:n}:{},...i===void 0?{}:{fastMode:i},...a===void 0?{}:{contextWindow:a}};return Object.keys(o).length>0?o:void 0}function r_e(e){return typeof e==`string`&&/\bultrathink\b/i.test(e)}function O7(e,t=`codex`){if(typeof e!=`string`)return null;let n=e.trim();if(!n)return null;let r=g[t],i=Object.prototype.hasOwnProperty.call(r,n)?r[n]:void 0;return typeof i==`string`?i:n}function i_e(e,t,n){if(typeof t!=`string`)return null;let r=t.trim();if(!r)return null;let i=n.find(e=>e.slug===r);if(i)return i.slug;let a=n.find(e=>e.name.toLowerCase()===r.toLowerCase());if(a)return a.slug;let o=O7(r,e),s=n.find(e=>e.slug===o);return s?s.slug:null}var a_e=[`codex`,`claudeAgent`];function k7(e,t){return a_e.filter(e=>e!==t).some(t=>ne(t,e)!==void 0)}function o_e(e,t){let n=O7(e,t);return!n||k7(n,t)?te[t]:n}function A7(e,t){return o_e(t,e)}function s_e(e){return typeof e==`string`&&e.trim()||null}function c_e(e,t){let n=e.trim();return!n||t!==`ultrathink`||n.startsWith(`Ultrathink:`)?n:`Ultrathink:\n${n}`}function j7(e,t){return{id:e.id,environmentId:t,name:e.title,cwd:e.workspaceRoot,repositoryIdentity:e.repositoryIdentity??null,availability:e.availability,defaultThreadEnvMode:e.defaultThreadEnvMode??null,cmmdRegistration:e.cmmdRegistration??null,defaultModelSelection:e.defaultModelSelection?M7(e.defaultModelSelection):null,createdAt:e.createdAt,updatedAt:e.updatedAt,scripts:N7(e.scripts)}}function M7(e){return{...e,model:A7(e.provider,e.model)}}function N7(e){return e.map(e=>({...e}))}function l_e(e,t){return{...e,...t.title===void 0?{}:{name:t.title},...t.workspaceRoot===void 0?{}:{cwd:t.workspaceRoot},...t.repositoryIdentity===void 0?{}:{repositoryIdentity:t.repositoryIdentity??null},...t.defaultThreadEnvMode===void 0?{}:{defaultThreadEnvMode:t.defaultThreadEnvMode},...t.cmmdRegistration===void 0?{}:{cmmdRegistration:t.cmmdRegistration},...t.defaultModelSelection===void 0?{}:{defaultModelSelection:t.defaultModelSelection?M7(t.defaultModelSelection):null},...t.scripts===void 0?{}:{scripts:N7(t.scripts)},updatedAt:t.updatedAt}}function P7(e){let t=q8(e.lastError);return{provider:d_e(e.providerName),status:u_e(e.status),orchestrationStatus:e.status,activeTurnId:e.activeTurnId??void 0,createdAt:e.updatedAt,updatedAt:e.updatedAt,...t?{lastError:t}:{}}}function F7(e,t){let n=t.attachments?.map(t=>{let n=S7({environmentId:e,pathname:f_e(t.id)});return t.type===`image`?{...t,previewUrl:n}:{...t,downloadUrl:n}});return{id:t.id,role:t.role,text:t.text,turnId:t.turnId,createdAt:t.createdAt,streaming:t.streaming,...t.streaming?{}:{completedAt:t.updatedAt},...n&&n.length>0?{attachments:n}:{}}}function I7(e){return{id:e.id,turnId:e.turnId,planMarkdown:e.planMarkdown,implementedAt:e.implementedAt,implementationThreadId:e.implementationThreadId,createdAt:e.createdAt,updatedAt:e.updatedAt}}function L7(e){return{turnId:e.turnId,completedAt:e.completedAt,status:e.status,assistantMessageId:e.assistantMessageId??void 0,checkpointTurnCount:e.checkpointTurnCount,checkpointRef:e.checkpointRef,files:e.files.map(e=>({...e}))}}function u_e(e){switch(e){case`starting`:return`connecting`;case`running`:return`running`;case`error`:return`error`;case`ready`:case`interrupted`:return`ready`;case`idle`:case`stopped`:return`closed`}}function d_e(e){return e===`codex`||e===`claudeAgent`||e===`ollama`||e===`cmmd`||e===`apex`?e:`codex`}function f_e(e){return`/attachments/${encodeURIComponent(e)}`}var p_e=[],m_e=[],h_e=[],g_e=[],__e={},v_e={},y_e={},b_e={},x_e=[],R7=new WeakMap,z7=new WeakMap;function B7(e,t,n){if(!e||e.length===0||!t)return n;let r=R7.get(e),i=r?.get(t);if(i)return i;let a=e.flatMap(e=>{let n=t[e];return n?[n]:[]}),o=r??new WeakMap;return o.set(t,a),r||R7.set(e,o),a}function S_e(e,t){return B7(e.messageIdsByThreadId[t],e.messageByThreadId[t]??__e,p_e)}function C_e(e,t){return B7(e.activityIdsByThreadId[t],e.activityByThreadId[t]??v_e,m_e)}function w_e(e,t){return B7(e.proposedPlanIdsByThreadId[t],e.proposedPlanByThreadId[t]??y_e,h_e)}function T_e(e,t){return B7(e.turnDiffIdsByThreadId[t],e.turnDiffSummaryByThreadId[t]??b_e,g_e)}function V7(e,t){let n=e.threadShellById[t];if(!n)return;let r=e.threadSessionById[t]??null,i=e.threadTurnStateById[t],a=e.threadRateLimitStatusById[t]??x_e,o=S_e(e,t),s=C_e(e,t),c=w_e(e,t),l=T_e(e,t),u=z7.get(n);if(u&&u.session===r&&u.turnState===i&&u.rateLimitStatus===a&&u.messages===o&&u.activities===s&&u.proposedPlans===c&&u.turnDiffSummaries===l)return u.thread;let d={...n,session:r,latestTurn:i?.latestTurn??null,pendingSourceProposedPlan:i?.pendingSourceProposedPlan,rateLimitStatus:a,messages:o,activities:s,proposedPlans:c,turnDiffSummaries:l};return z7.set(n,{session:r,turnState:i,rateLimitStatus:a,messages:o,activities:s,proposedPlans:c,turnDiffSummaries:l,thread:d}),d}function E_e(e,t){let n=t.providerAccountId??null,r=e=>e.provider===t.provider&&(e.providerAccountId??null)===n,i=e.find(r),a={status:t.status,usedPercent:t.usedPercent,resetsAt:t.resetsAt},o={provider:t.provider,providerAccountId:n,fiveHour:t.window===`five_hour`?a:i?.fiveHour??null,sevenDay:t.window===`seven_day`?a:i?.sevenDay??null};return[...e.filter(e=>!r(e)),o]}function H7(e){return{settledAt:e.settledAt??null,settledOverride:e.settledOverride??null}}var U7={projectIds:[],projectById:{},threadIds:[],threadIdsByProjectId:{},threadShellById:{},threadSessionById:{},threadTurnStateById:{},threadRateLimitStatusById:{},messageIdsByThreadId:{},messageByThreadId:{},activityIdsByThreadId:{},activityByThreadId:{},proposedPlanIdsByThreadId:{},proposedPlanByThreadId:{},turnDiffIdsByThreadId:{},turnDiffSummaryByThreadId:{},sidebarThreadSummaryById:{},threadSubscriptionErrorById:{},bootstrapComplete:!1},D_e={activeEnvironmentId:null,environmentStateById:{}},W7=[],G7=[];function K7(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function q7(e,t){return{id:e.id,environmentId:t,codexThreadId:null,projectId:e.projectId,title:e.title,modelSelection:M7(e.modelSelection),runtimeMode:e.runtimeMode,interactionMode:e.interactionMode,session:e.session?P7(e.session):null,messages:e.messages.map(e=>F7(t,e)),proposedPlans:e.proposedPlans.map(I7),error:q8(e.session?.lastError),createdAt:e.createdAt,archivedAt:e.archivedAt,...H7(e),updatedAt:e.updatedAt,latestTurn:e.latestTurn,pendingSourceProposedPlan:e.latestTurn?.sourceProposedPlan,branch:e.branch,worktreePath:e.worktreePath,turnDiffSummaries:e.checkpoints.map(L7),activities:e.activities.map(e=>({...e})),anchorKind:e.anchorKind,anchorCmmdId:e.anchorCmmdId,linkedPullRequest:e.linkedPullRequest??null,goal:e.goal??null,titleRegeneration:e.titleRegeneration??null,kind:e.kind,parentThreadId:e.parentThreadId,status:e.status,workerRole:e.workerRole??null,pendingAutoCreatePrompt:e.pendingAutoCreatePrompt??null,rateLimitStatus:e.rateLimitStatus??[]}}function J7(e,t){let n={id:e.id,environmentId:t,codexThreadId:null,projectId:e.projectId,title:e.title,modelSelection:M7(e.modelSelection),runtimeMode:e.runtimeMode,interactionMode:e.interactionMode,error:q8(e.session?.lastError),createdAt:e.createdAt,archivedAt:e.archivedAt,...H7(e),updatedAt:e.updatedAt,branch:e.branch,worktreePath:e.worktreePath,anchorKind:e.anchorKind,anchorCmmdId:e.anchorCmmdId,linkedPullRequest:e.linkedPullRequest??null,goal:e.goal??null,titleRegeneration:e.titleRegeneration??null,kind:e.kind,parentThreadId:e.parentThreadId,status:e.status,workerRole:e.workerRole??null},r=e.session?P7(e.session):null;return{shell:n,session:r,turnState:{latestTurn:e.latestTurn,pendingSourceProposedPlan:e.latestTurn?.sourceProposedPlan},summary:{id:e.id,modelSelection:n.modelSelection,environmentId:t,projectId:e.projectId,title:e.title,interactionMode:e.interactionMode,session:r,createdAt:e.createdAt,archivedAt:e.archivedAt,...H7(e),updatedAt:e.updatedAt,latestTurn:e.latestTurn,branch:e.branch,worktreePath:e.worktreePath,latestUserMessageAt:e.latestUserMessageAt,hasPendingApprovals:e.hasPendingApprovals,hasPendingUserInput:e.hasPendingUserInput,hasActionableProposedPlan:e.hasActionableProposedPlan,anchorKind:e.anchorKind,anchorCmmdId:e.anchorCmmdId,linkedPullRequest:e.linkedPullRequest??null,goal:e.goal??null,titleRegeneration:e.titleRegeneration??null,kind:e.kind,parentThreadId:e.parentThreadId,status:e.status,workerRole:e.workerRole??null}}}function O_e(e){return{id:e.id,environmentId:e.environmentId,codexThreadId:e.codexThreadId,projectId:e.projectId,title:e.title,modelSelection:e.modelSelection,runtimeMode:e.runtimeMode,interactionMode:e.interactionMode,error:e.error,createdAt:e.createdAt,archivedAt:e.archivedAt,settledAt:e.settledAt,settledOverride:e.settledOverride,updatedAt:e.updatedAt,branch:e.branch,worktreePath:e.worktreePath,anchorKind:e.anchorKind,anchorCmmdId:e.anchorCmmdId,linkedPullRequest:e.linkedPullRequest??null,kind:e.kind,parentThreadId:e.parentThreadId,status:e.status,workerRole:e.workerRole??null,goal:e.goal??null,titleRegeneration:e.titleRegeneration??null}}function k_e(e){return{latestTurn:e.latestTurn,...e.pendingSourceProposedPlan?{pendingSourceProposedPlan:e.pendingSourceProposedPlan}:{}}}function Y7(e,t){return e===t?!0:e===void 0||t===void 0?!1:e.threadId===t.threadId&&e.planId===t.planId}function X7(e,t){return e===t?!0:e==null||t==null?!1:e.turnId===t.turnId&&e.state===t.state&&e.requestedAt===t.requestedAt&&e.startedAt===t.startedAt&&e.completedAt===t.completedAt&&e.assistantMessageId===t.assistantMessageId&&Y7(e.sourceProposedPlan,t.sourceProposedPlan)}function Z7(e,t){return e===t?!0:e==null||t==null?!1:e.provider===t.provider&&e.status===t.status&&e.orchestrationStatus===t.orchestrationStatus&&e.activeTurnId===t.activeTurnId&&e.createdAt===t.createdAt&&e.updatedAt===t.updatedAt&&e.lastError===t.lastError}function Q7(e,t){return e===t?!0:e==null||t==null?!1:e.projectId===t.projectId&&e.projectRepositoryId===t.projectRepositoryId&&e.provider===t.provider&&e.host===t.host&&e.repository===t.repository&&e.number===t.number&&e.url===t.url}function $7(e,t){return e!==void 0&&e.id===t.id&&e.environmentId===t.environmentId&&e.projectId===t.projectId&&e.title===t.title&&e9(e.titleRegeneration,t.titleRegeneration)&&e.interactionMode===t.interactionMode&&Z7(e.session,t.session)&&e.createdAt===t.createdAt&&e.archivedAt===t.archivedAt&&e.settledAt===t.settledAt&&e.settledOverride===t.settledOverride&&e.updatedAt===t.updatedAt&&X7(e.latestTurn,t.latestTurn)&&e.branch===t.branch&&e.worktreePath===t.worktreePath&&e.latestUserMessageAt===t.latestUserMessageAt&&e.hasPendingApprovals===t.hasPendingApprovals&&e.hasPendingUserInput===t.hasPendingUserInput&&e.hasActionableProposedPlan===t.hasActionableProposedPlan&&e.anchorKind===t.anchorKind&&e.anchorCmmdId===t.anchorCmmdId&&Q7(e.linkedPullRequest,t.linkedPullRequest)&&e.kind===t.kind&&e.parentThreadId===t.parentThreadId&&e.status===t.status}function e9(e,t){return e===t?!0:e==null||t==null?!1:e.requestId===t.requestId&&e.startedAt===t.startedAt}function t9(e,t){return e!==void 0&&e.id===t.id&&e.environmentId===t.environmentId&&e.codexThreadId===t.codexThreadId&&e.projectId===t.projectId&&e.title===t.title&&e.modelSelection===t.modelSelection&&e.runtimeMode===t.runtimeMode&&e.interactionMode===t.interactionMode&&e.error===t.error&&e.createdAt===t.createdAt&&e.archivedAt===t.archivedAt&&e.settledAt===t.settledAt&&e.settledOverride===t.settledOverride&&e.updatedAt===t.updatedAt&&e.branch===t.branch&&e.worktreePath===t.worktreePath&&e.anchorKind===t.anchorKind&&e.anchorCmmdId===t.anchorCmmdId&&Q7(e.linkedPullRequest,t.linkedPullRequest)&&e.kind===t.kind&&e.parentThreadId===t.parentThreadId&&e.status===t.status&&e.goal===t.goal&&e9(e.titleRegeneration,t.titleRegeneration)}function n9(e,t){return e!==void 0&&X7(e.latestTurn,t.latestTurn)&&Y7(e.pendingSourceProposedPlan,t.pendingSourceProposedPlan)}function A_e(e,t){return e.includes(t)?[...e]:[...e,t]}function r9(e,t){return e.filter(e=>e!==t)}function j_e(e){return{ids:e.messages.map(e=>e.id),byId:Object.fromEntries(e.messages.map(e=>[e.id,e]))}}function M_e(e){return{ids:e.activities.map(e=>e.id),byId:Object.fromEntries(e.activities.map(e=>[e.id,e]))}}function N_e(e){return{ids:e.proposedPlans.map(e=>e.id),byId:Object.fromEntries(e.proposedPlans.map(e=>[e.id,e]))}}function P_e(e){return{ids:e.turnDiffSummaries.map(e=>e.turnId),byId:Object.fromEntries(e.turnDiffSummaries.map(e=>[e.turnId,e]))}}function F_e(e){return e.projectIds.flatMap(t=>{let n=e.projectById[t];return n?[n]:[]})}function i9(e){return e.threadIds.flatMap(t=>{let n=V7(e,t);return n?[n]:[]})}function a9(e,t,n,r){let i=e;if(e.threadIds.includes(t)||(i={...i,threadIds:[...i.threadIds,t]}),r!==n){let e=i.threadIdsByProjectId;if(r){let n=e[r]??W7,i=r9(n,t);if(i.length===0){let{[r]:t,...n}=e;e=n}else K7(n,i)||(e={...e,[r]:i})}let a=e[n]??W7,o=A_e(a,t);K7(a,o)||(e={...e,[n]:o}),e!==i.threadIdsByProjectId&&(i={...i,threadIdsByProjectId:e})}return i}function o9(e,t,n){let r=O_e(t),i=k_e(t),a=e.threadShellById[t.id],o=e.threadTurnStateById[t.id],s=a9(e,t.id,t.projectId,n?.projectId);t9(a,r)||(s={...s,threadShellById:{...s.threadShellById,[t.id]:r}});let c=e.sidebarThreadSummaryById[t.id];if(c!==void 0){let e={...c,title:t.title,modelSelection:t.modelSelection,interactionMode:t.interactionMode,session:t.session,createdAt:t.createdAt,archivedAt:t.archivedAt,settledAt:t.settledAt,settledOverride:t.settledOverride,updatedAt:t.updatedAt,latestTurn:t.latestTurn,branch:t.branch,worktreePath:t.worktreePath,anchorKind:t.anchorKind,anchorCmmdId:t.anchorCmmdId,linkedPullRequest:t.linkedPullRequest??null,goal:t.goal,titleRegeneration:t.titleRegeneration??null,kind:t.kind,parentThreadId:t.parentThreadId,status:t.status,workerRole:t.workerRole};$7(c,e)||(s={...s,sidebarThreadSummaryById:{...s.sidebarThreadSummaryById,[t.id]:e}})}if(Z7(n?.session??null,t.session)||(s={...s,threadSessionById:{...s.threadSessionById,[t.id]:t.session}}),(n?.rateLimitStatus??G7)!==(t.rateLimitStatus??G7)&&(s={...s,threadRateLimitStatusById:{...s.threadRateLimitStatusById,[t.id]:t.rateLimitStatus??G7}}),n9(o,i)||(s={...s,threadTurnStateById:{...s.threadTurnStateById,[t.id]:i}}),n?.messages!==t.messages){let e=j_e(t);s={...s,messageIdsByThreadId:{...s.messageIdsByThreadId,[t.id]:e.ids},messageByThreadId:{...s.messageByThreadId,[t.id]:e.byId}}}if(n?.activities!==t.activities){let e=M_e(t);s={...s,activityIdsByThreadId:{...s.activityIdsByThreadId,[t.id]:e.ids},activityByThreadId:{...s.activityByThreadId,[t.id]:e.byId}}}if(n?.proposedPlans!==t.proposedPlans){let e=N_e(t);s={...s,proposedPlanIdsByThreadId:{...s.proposedPlanIdsByThreadId,[t.id]:e.ids},proposedPlanByThreadId:{...s.proposedPlanByThreadId,[t.id]:e.byId}}}if(n?.turnDiffSummaries!==t.turnDiffSummaries){let e=P_e(t);s={...s,turnDiffIdsByThreadId:{...s.turnDiffIdsByThreadId,[t.id]:e.ids},turnDiffSummaryByThreadId:{...s.turnDiffSummaryByThreadId,[t.id]:e.byId}}}return s}function s9(e,t){let n=e.threadShellById[t.shell.id],r=a9(e,t.shell.id,t.shell.projectId,n?.projectId);return t9(n,t.shell)||(r={...r,threadShellById:{...r.threadShellById,[t.shell.id]:t.shell}}),Z7(e.threadSessionById[t.shell.id]??null,t.session)||(r={...r,threadSessionById:{...r.threadSessionById,[t.shell.id]:t.session}}),n9(e.threadTurnStateById[t.shell.id],t.turnState)||(r={...r,threadTurnStateById:{...r.threadTurnStateById,[t.shell.id]:t.turnState}}),$7(e.sidebarThreadSummaryById[t.shell.id],t.summary)||(r={...r,sidebarThreadSummaryById:{...r.sidebarThreadSummaryById,[t.shell.id]:t.summary}}),r}function c9(e,t){return Object.fromEntries(Object.entries(e).flatMap(([e,n])=>t.has(e)?[[e,n]]:[]))}function l9(e,t){let n=e.threadShellById[t],r=e.sidebarThreadSummaryById[t],i=n?.projectId??r?.projectId;if(!i)return e;let a=r9(e.threadIds,t),o=r9(e.threadIdsByProjectId[i]??W7,t),s=o.length===0?(()=>{let{[i]:t,...n}=e.threadIdsByProjectId;return n})():{...e.threadIdsByProjectId,[i]:o},{[t]:c,...l}=e.threadShellById,{[t]:u,...d}=e.threadSessionById,{[t]:f,...p}=e.threadTurnStateById,{[t]:m,...h}=e.messageIdsByThreadId,{[t]:g,..._}=e.messageByThreadId,{[t]:v,...y}=e.activityIdsByThreadId,{[t]:b,...x}=e.activityByThreadId,{[t]:S,...C}=e.proposedPlanIdsByThreadId,{[t]:w,...T}=e.proposedPlanByThreadId,{[t]:ee,...E}=e.turnDiffIdsByThreadId,{[t]:te,...ne}=e.turnDiffSummaryByThreadId,{[t]:re,...ie}=e.sidebarThreadSummaryById;return{...e,threadIds:a,threadIdsByProjectId:s,threadShellById:l,threadSessionById:d,threadTurnStateById:p,messageIdsByThreadId:h,messageByThreadId:_,activityIdsByThreadId:y,activityByThreadId:x,proposedPlanIdsByThreadId:C,proposedPlanByThreadId:T,turnDiffIdsByThreadId:E,turnDiffSummaryByThreadId:ne,sidebarThreadSummaryById:ie}}function I_e(e,t){let n=new Set(e.threadIdsByProjectId[t]??W7);for(let[r,i]of Object.entries(e.threadShellById))i.projectId===t&&n.add(r);for(let[r,i]of Object.entries(e.sidebarThreadSummaryById))i.projectId===t&&n.add(r);return[...n]}function u9(e,t){let n=I_e(e,t);if(!e.projectById[t]&&n.length===0&&!e.projectIds.includes(t))return e;let r=e;for(let e of n)r=l9(r,e);let{[t]:i,...a}=r.projectById;return{...r,projectById:a,projectIds:r9(r.projectIds,t)}}function d9(e){return e===`error`?`error`:e===`missing`?`interrupted`:`completed`}function L_e(e,t){if(e.sequence!==void 0&&t.sequence!==void 0){if(e.sequence!==t.sequence)return e.sequence-t.sequence}else if(e.sequence!==void 0)return 1;else if(t.sequence!==void 0)return-1;return e.createdAt.localeCompare(t.createdAt)||e.id.localeCompare(t.id)}function f9(e){let t=e.previous?.turnId===e.turnId?e.previous.sourceProposedPlan:e.sourceProposedPlan;return{turnId:e.turnId,state:e.state,requestedAt:e.requestedAt,startedAt:e.startedAt,completedAt:e.completedAt,assistantMessageId:e.assistantMessageId,...t?{sourceProposedPlan:t}:{}}}function R_e(e,t,n){let r=!1,i=e.map(e=>e.turnId!==t||e.assistantMessageId===n?e:(r=!0,{...e,assistantMessageId:n??void 0}));return r?i:[...e]}function z_e(e,t,n){let r=new Set;for(let n of e){if(n.role===`system`){r.add(n.id);continue}n.turnId!==void 0&&n.turnId!==null&&t.has(n.turnId)&&r.add(n.id)}let i=e.filter(e=>e.role===`user`&&r.has(e.id)).length,a=Math.max(0,n-i);if(a>0){let n=e.filter(e=>e.role===`user`&&!r.has(e.id)&&(e.turnId===void 0||e.turnId===null||t.has(e.turnId))).toSorted((e,t)=>e.createdAt.localeCompare(t.createdAt)||e.id.localeCompare(t.id)).slice(0,a);for(let e of n)r.add(e.id)}let o=e.filter(e=>e.role===`assistant`&&r.has(e.id)).length,s=Math.max(0,n-o);if(s>0){let n=e.filter(e=>e.role===`assistant`&&!r.has(e.id)&&(e.turnId===void 0||e.turnId===null||t.has(e.turnId))).toSorted((e,t)=>e.createdAt.localeCompare(t.createdAt)||e.id.localeCompare(t.id)).slice(0,s);for(let e of n)r.add(e.id)}return e.filter(e=>r.has(e.id))}function B_e(e,t){return e.filter(e=>e.turnId===null||t.has(e.turnId))}function V_e(e,t){return e.filter(e=>e.turnId===null||t.has(e.turnId))}function p9(e,t,n){let r=V7(e,t);if(!r)return e;let i=n(r);return i===r?e:o9(e,i,r)}function m9(e,t,n,r){let i=p9(e,t,e=>({...e,...r,updatedAt:n})),a=i.sidebarThreadSummaryById[t];return!a||Object.keys(r).every(e=>a[e]===r[e])?i:{...i,sidebarThreadSummaryById:{...i.sidebarThreadSummaryById,[t]:{...a,...r}}}}function H_e(e){return{projectIds:e.map(e=>e.id),projectById:Object.fromEntries(e.map(e=>[e.id,e]))}}function h9(e,t){return e.environmentStateById[t]??U7}function g9(e,t,n){let r=e.environmentStateById[t]===n?e.environmentStateById:{...e.environmentStateById,[t]:n};return r===e.environmentStateById?e:{...e,environmentStateById:r}}function U_e(e,t,n){let r=t.projects.map(e=>j7(e,n)),i=new Set(t.threads.map(e=>e.id)),a={...e,...H_e(r),threadIds:[],threadIdsByProjectId:{},threadShellById:{},threadSessionById:{},threadTurnStateById:{},threadRateLimitStatusById:c9(e.threadRateLimitStatusById,i),sidebarThreadSummaryById:{},messageIdsByThreadId:c9(e.messageIdsByThreadId,i),messageByThreadId:c9(e.messageByThreadId,i),activityIdsByThreadId:c9(e.activityIdsByThreadId,i),activityByThreadId:c9(e.activityByThreadId,i),proposedPlanIdsByThreadId:c9(e.proposedPlanIdsByThreadId,i),proposedPlanByThreadId:c9(e.proposedPlanByThreadId,i),turnDiffIdsByThreadId:c9(e.turnDiffIdsByThreadId,i),turnDiffSummaryByThreadId:c9(e.turnDiffSummaryByThreadId,i),bootstrapComplete:!0};for(let e of t.threads)a=s9(a,J7(e,n));return a}function W_e(e,t,n){return g9(e,n,U_e(h9(e,n),t,n))}function G_e(e,t,n){let r=h9(e,n),i=V7(r,t.id);return g9(e,n,o9(r,q7(t,n),i))}function K_e(e,t,n,r){let i=h9(e,t);return g9(e,t,{...i,threadSubscriptionErrorById:{...i.threadSubscriptionErrorById,[n]:r}})}function q_e(e,t,n){let r=h9(e,t);if(!(n in r.threadSubscriptionErrorById))return e;let{[n]:i,...a}=r.threadSubscriptionErrorById;return g9(e,t,{...r,threadSubscriptionErrorById:a})}function _9(e,t,n){switch(t.type){case`project.created`:{let r=j7({id:t.payload.projectId,title:t.payload.title,workspaceRoot:t.payload.workspaceRoot,repositoryIdentity:t.payload.repositoryIdentity??null,defaultModelSelection:t.payload.defaultModelSelection,defaultThreadEnvMode:t.payload.defaultThreadEnvMode??null,cmmdRegistration:t.payload.cmmdRegistration??null,scripts:t.payload.scripts,createdAt:t.payload.createdAt,updatedAt:t.payload.updatedAt,deletedAt:null},n),i=e.projectIds.find(n=>n===t.payload.projectId||e.projectById[n]?.cwd===t.payload.workspaceRoot)??null,a=e.projectById,o=e.projectIds;if(i!==null&&i!==r.id){let{[i]:t,...n}=e.projectById;a={...n,[r.id]:r},o=e.projectIds.map(e=>e===i?r.id:e)}else a={...e.projectById,[r.id]:r},o=i===null&&!e.projectIds.includes(r.id)?[...e.projectIds,r.id]:e.projectIds;return{...e,projectById:a,projectIds:o}}case`project.meta-updated`:{let n=e.projectById[t.payload.projectId];if(!n)return e;let r=l_e(n,t.payload);return{...e,projectById:{...e.projectById,[t.payload.projectId]:r}}}case`project.deleted`:return u9(e,t.payload.projectId);case`thread.created`:{let r=V7(e,t.payload.threadId);return o9(e,q7({id:t.payload.threadId,projectId:t.payload.projectId,title:t.payload.title,modelSelection:t.payload.modelSelection,runtimeMode:t.payload.runtimeMode,interactionMode:t.payload.interactionMode,branch:t.payload.branch,worktreePath:t.payload.worktreePath,latestTurn:null,createdAt:t.payload.createdAt,updatedAt:t.payload.updatedAt,archivedAt:null,deletedAt:null,messages:[],proposedPlans:[],activities:[],checkpoints:[],session:null,anchorKind:t.payload.anchorKind,anchorCmmdId:t.payload.anchorCmmdId,kind:t.payload.kind,parentThreadId:t.payload.parentThreadId,status:t.payload.status,workerRole:t.payload.workerRole,goal:t.payload.goal??null,titleRegeneration:null,pendingAutoCreatePrompt:null},n),r)}case`thread.deleted`:return l9(e,t.payload.threadId);case`thread.archived`:return m9(e,t.payload.threadId,t.payload.updatedAt,{archivedAt:t.payload.archivedAt});case`thread.unarchived`:return m9(e,t.payload.threadId,t.payload.updatedAt,{archivedAt:null});case`thread.settled`:return m9(e,t.payload.threadId,t.payload.updatedAt,{settledAt:t.payload.settledAt,settledOverride:t.payload.settledOverride});case`thread.unsettled`:return m9(e,t.payload.threadId,t.payload.updatedAt,{settledAt:null,settledOverride:`active`});case`thread.meta-updated`:return p9(e,t.payload.threadId,e=>({...e,...t.payload.title===void 0?{}:{title:t.payload.title},...t.payload.modelSelection===void 0?{}:{modelSelection:M7(t.payload.modelSelection)},...t.payload.branch===void 0?{}:{branch:t.payload.branch},...t.payload.worktreePath===void 0?{}:{worktreePath:t.payload.worktreePath},...t.payload.anchorKind===void 0?{}:{anchorKind:t.payload.anchorKind},...t.payload.anchorCmmdId===void 0?{}:{anchorCmmdId:t.payload.anchorCmmdId},...t.payload.status===void 0?{}:{status:t.payload.status},...t.payload.parentThreadId===void 0?{}:{parentThreadId:t.payload.parentThreadId},...t.payload.goal===void 0?{}:{goal:t.payload.goal},...t.payload.linkedPullRequest===void 0?{}:{linkedPullRequest:t.payload.linkedPullRequest},...t.payload.titleRegeneration===void 0?{}:{titleRegeneration:t.payload.titleRegeneration},updatedAt:t.payload.updatedAt}));case`thread.runtime-mode-set`:return p9(e,t.payload.threadId,e=>({...e,runtimeMode:t.payload.runtimeMode,updatedAt:t.payload.updatedAt}));case`thread.interaction-mode-set`:return p9(e,t.payload.threadId,e=>({...e,interactionMode:t.payload.interactionMode,updatedAt:t.payload.updatedAt}));case`thread.turn-start-requested`:return p9(e,t.payload.threadId,e=>({...e,...t.payload.modelSelection===void 0?{}:{modelSelection:M7(t.payload.modelSelection)},runtimeMode:t.payload.runtimeMode,interactionMode:t.payload.interactionMode,pendingSourceProposedPlan:t.payload.sourceProposedPlan,latestTurn:f9({previous:e.latestTurn,turnId:d.make(t.payload.messageId),state:`running`,requestedAt:t.payload.createdAt,startedAt:t.payload.createdAt,completedAt:null,assistantMessageId:null,sourceProposedPlan:t.payload.sourceProposedPlan}),updatedAt:t.occurredAt}));case`thread.turn-interrupt-requested`:return t.payload.turnId===void 0?e:p9(e,t.payload.threadId,e=>{let n=e.latestTurn;return n===null||n.turnId!==t.payload.turnId?e:{...e,latestTurn:f9({previous:n,turnId:t.payload.turnId,state:`interrupted`,requestedAt:n.requestedAt,startedAt:n.startedAt??t.payload.createdAt,completedAt:n.completedAt??t.payload.createdAt,assistantMessageId:n.assistantMessageId}),updatedAt:t.occurredAt}});case`thread.message-sent`:return p9(e,t.payload.threadId,e=>{let n=F7(e.environmentId,{id:t.payload.messageId,role:t.payload.role,text:t.payload.text,...t.payload.attachments===void 0?{}:{attachments:t.payload.attachments},turnId:t.payload.turnId,streaming:t.payload.streaming,createdAt:t.payload.createdAt,updatedAt:t.payload.updatedAt}),r=(e.messages.find(e=>e.id===n.id)?e.messages.map(e=>e.id===n.id?{...e,text:n.streaming?`${e.text}${n.text}`:n.text.length>0?n.text:e.text,streaming:n.streaming,...n.turnId===void 0?{}:{turnId:n.turnId},...n.streaming?e.completedAt===void 0?{}:{completedAt:e.completedAt}:n.completedAt===void 0?{}:{completedAt:n.completedAt},...n.attachments===void 0?{}:{attachments:n.attachments}}:e):[...e.messages,n]).slice(-2e3),i=t.payload.role===`assistant`&&t.payload.turnId!==null?R_e(e.turnDiffSummaries,t.payload.turnId,t.payload.messageId):e.turnDiffSummaries,a=t.payload.role===`assistant`&&t.payload.turnId!==null&&(e.latestTurn===null||e.latestTurn.turnId===t.payload.turnId)?f9({previous:e.latestTurn,turnId:t.payload.turnId,state:t.payload.streaming?`running`:e.latestTurn?.state===`interrupted`?`interrupted`:e.latestTurn?.state===`error`?`error`:`completed`,requestedAt:e.latestTurn?.turnId===t.payload.turnId?e.latestTurn.requestedAt:t.payload.createdAt,startedAt:e.latestTurn?.turnId===t.payload.turnId?e.latestTurn.startedAt??t.payload.createdAt:t.payload.createdAt,sourceProposedPlan:e.pendingSourceProposedPlan,completedAt:t.payload.streaming?e.latestTurn?.turnId===t.payload.turnId?e.latestTurn.completedAt??null:null:t.payload.updatedAt,assistantMessageId:t.payload.messageId}):e.latestTurn;return{...e,messages:r,turnDiffSummaries:i,latestTurn:a,updatedAt:t.occurredAt}});case`thread.session-set`:return p9(e,t.payload.threadId,e=>({...e,session:P7(t.payload.session),error:q8(t.payload.session.lastError),latestTurn:t.payload.session.status===`running`&&t.payload.session.activeTurnId!==null?f9({previous:e.latestTurn,turnId:t.payload.session.activeTurnId,state:`running`,requestedAt:e.latestTurn?.turnId===t.payload.session.activeTurnId?e.latestTurn.requestedAt:t.payload.session.updatedAt,startedAt:e.latestTurn?.turnId===t.payload.session.activeTurnId?e.latestTurn.startedAt??t.payload.session.updatedAt:t.payload.session.updatedAt,completedAt:null,assistantMessageId:e.latestTurn?.turnId===t.payload.session.activeTurnId?e.latestTurn.assistantMessageId:null,sourceProposedPlan:e.pendingSourceProposedPlan}):e.latestTurn,updatedAt:t.occurredAt}));case`thread.session-stop-requested`:return p9(e,t.payload.threadId,e=>e.session===null?e:{...e,session:{...e.session,status:`closed`,orchestrationStatus:`stopped`,activeTurnId:void 0,updatedAt:t.payload.createdAt},updatedAt:t.occurredAt});case`thread.proposed-plan-upserted`:return p9(e,t.payload.threadId,e=>{let n=I7(t.payload.proposedPlan),r=[...e.proposedPlans.filter(e=>e.id!==n.id),n].toSorted((e,t)=>e.createdAt.localeCompare(t.createdAt)||e.id.localeCompare(t.id)).slice(-200);return{...e,proposedPlans:r,updatedAt:t.occurredAt}});case`thread.turn-diff-completed`:return p9(e,t.payload.threadId,e=>{let n=L7({turnId:t.payload.turnId,checkpointTurnCount:t.payload.checkpointTurnCount,checkpointRef:t.payload.checkpointRef,status:t.payload.status,files:t.payload.files,assistantMessageId:t.payload.assistantMessageId,completedAt:t.payload.completedAt}),r=e.turnDiffSummaries.find(e=>e.turnId===n.turnId);if(r&&r.status!==`missing`&&n.status===`missing`)return e;let i=[...e.turnDiffSummaries.filter(e=>e.turnId!==n.turnId),n].toSorted((e,t)=>(e.checkpointTurnCount??2**53-1)-(t.checkpointTurnCount??2**53-1)).slice(-500),a=e.latestTurn===null||e.latestTurn.turnId===t.payload.turnId?f9({previous:e.latestTurn,turnId:t.payload.turnId,state:d9(t.payload.status),requestedAt:e.latestTurn?.requestedAt??t.payload.completedAt,startedAt:e.latestTurn?.startedAt??t.payload.completedAt,completedAt:t.payload.completedAt,assistantMessageId:t.payload.assistantMessageId,sourceProposedPlan:e.pendingSourceProposedPlan}):e.latestTurn;return{...e,turnDiffSummaries:i,latestTurn:a,updatedAt:t.occurredAt}});case`thread.reverted`:return p9(e,t.payload.threadId,e=>{let n=e.turnDiffSummaries.filter(e=>e.checkpointTurnCount!==void 0&&e.checkpointTurnCount<=t.payload.turnCount).toSorted((e,t)=>(e.checkpointTurnCount??2**53-1)-(t.checkpointTurnCount??2**53-1)).slice(-500),r=new Set(n.map(e=>e.turnId)),i=z_e(e.messages,r,t.payload.turnCount).slice(-2e3),a=V_e(e.proposedPlans,r).slice(-200),o=B_e(e.activities,r),s=n.at(-1)??null;return{...e,turnDiffSummaries:n,messages:i,proposedPlans:a,activities:o,pendingSourceProposedPlan:void 0,latestTurn:s===null?null:{turnId:s.turnId,state:d9(s.status??`ready`),requestedAt:s.completedAt,startedAt:s.completedAt,completedAt:s.completedAt,assistantMessageId:s.assistantMessageId??null},updatedAt:t.occurredAt}});case`thread.activity-appended`:return p9(e,t.payload.threadId,e=>{let n=[...e.activities.filter(e=>e.id!==t.payload.activity.id),{...t.payload.activity}].toSorted(L_e).slice(-500);return{...e,activities:n,updatedAt:t.occurredAt}});case`thread.rate-limit-set`:return p9(e,t.payload.threadId,e=>({...e,rateLimitStatus:E_e(e.rateLimitStatus??[],t.payload),updatedAt:t.occurredAt}));case`thread.worker-spawned`:return p9(e,t.payload.workerThreadId,e=>({...e,kind:`worker`,parentThreadId:t.payload.masterThreadId,branch:t.payload.branch,worktreePath:t.payload.worktreePath,workerRole:t.payload.workerRole??e.workerRole??null,updatedAt:t.occurredAt}));case`thread.approval-response-requested`:case`thread.user-input-response-requested`:return e}return e}function J_e(e,t,n){switch(t.kind){case`project-upserted`:{let r=j7(t.project,n),i=e.projectIds.find(n=>n===t.project.id||e.projectById[n]?.cwd===t.project.workspaceRoot)??null,a=e.projectById,o=e.projectIds;if(i!==null&&i!==r.id){let{[i]:t,...n}=e.projectById;a={...n,[r.id]:r},o=e.projectIds.map(e=>e===i?r.id:e)}else a={...e.projectById,[r.id]:r},o=i===null&&!e.projectIds.includes(r.id)?[...e.projectIds,r.id]:e.projectIds;return{...e,projectById:a,projectIds:o}}case`project-removed`:return u9(e,t.projectId);case`thread-upserted`:return s9(e,J7(t.thread,n));case`thread-removed`:return l9(e,t.threadId)}}function Y_e(e,t,n){if(t.length===0)return e;let r=h9(e,n);return g9(e,n,t.reduce((e,t)=>_9(e,t,n),r))}function v9(e){return Object.entries(e.environmentStateById)}function y9(e,t){return t?h9(e,t):U7}function X_e(e,t){return i9(y9(e,t))}function Z_e(e){return v9(e).flatMap(([,e])=>F_e(e))}function Q_e(e){return v9(e).flatMap(([,e])=>i9(e))}function $_e(e){return v9(e).flatMap(([,e])=>b9(e).flatMap(t=>{let n=e.threadShellById[t];return n?[n]:[]}))}function b9(e){let t=[],n=new Set,r=e=>{n.has(e)||(n.add(e),t.push(e))};for(let t of e.threadIds)r(t);for(let t of Object.keys(e.threadShellById))r(t);for(let t of Object.keys(e.sidebarThreadSummaryById))r(t);return t}function x9(e,t,n){let r=t.sidebarThreadSummaryById[n];if(r)return r.environmentId===e?r:{...r,environmentId:e};let i=t.threadShellById[n];return i?{id:i.id,environmentId:e,projectId:i.projectId,title:i.title,modelSelection:i.modelSelection,interactionMode:i.interactionMode,session:t.threadSessionById[n]??null,createdAt:i.createdAt,archivedAt:i.archivedAt,settledAt:i.settledAt,settledOverride:i.settledOverride,updatedAt:i.updatedAt,latestTurn:t.threadTurnStateById[n]?.latestTurn??null,branch:i.branch,worktreePath:i.worktreePath,latestUserMessageAt:null,hasPendingApprovals:!1,hasPendingUserInput:!1,hasActionableProposedPlan:!1,anchorKind:i.anchorKind,anchorCmmdId:i.anchorCmmdId,goal:i.goal,titleRegeneration:i.titleRegeneration,kind:i.kind,parentThreadId:i.parentThreadId,workerRole:i.workerRole,status:i.status}:null}function eve(e){return v9(e).flatMap(([e,t])=>b9(t).flatMap(n=>{let r=x9(e,t,n);return r?[r]:[]}))}function S9(e,t){if(!t)return[];let n=y9(e,t.environmentId),r=n.threadIdsByProjectId[t.projectId]??W7;return(r.length>0?r:b9(n)).flatMap(e=>{let r=x9(t.environmentId,n,e);return!r||r.projectId!==t.projectId?[]:[r]})}function tve(e,t){return t.length===0?[]:t.length===1?S9(e,t[0]):t.flatMap(t=>S9(e,t))}function nve(e){return e.activeEnvironmentId===null?Object.values(e.environmentStateById).some(e=>e.bootstrapComplete):y9(e,e.activeEnvironmentId).bootstrapComplete}function rve(e,t){return t?y9(e,t.environmentId).projectById[t.projectId]:void 0}function ive(e,t){return t?V7(y9(e,t.environmentId),t.threadId):void 0}function ave(e,t){return t?y9(e,t.environmentId).threadShellById[t.threadId]!==void 0:!1}function ove(e,t){return t?x9(t.environmentId,y9(e,t.environmentId),t.threadId)??void 0:void 0}function sve(e,t,n){if(e.activeEnvironmentId===null)return e;let r=p9(h9(e,e.activeEnvironmentId),t,e=>e.error===n?e:{...e,error:n});return g9(e,e.activeEnvironmentId,r)}function cve(e,t,n){return g9(e,n,_9(h9(e,n),t,n))}function lve(e,t,n){return g9(e,n,J_e(h9(e,n),t,n))}function uve(e,t){return e.activeEnvironmentId===t?e:{...e,activeEnvironmentId:t}}function dve(e,t,n,r){let i=p9(h9(e,t.environmentId),t.threadId,e=>{if(e.branch===n&&e.worktreePath===r)return e;let t=e.worktreePath!==r;return{...e,branch:n,worktreePath:r,...t?{session:null}:{}}});return g9(e,t.environmentId,i)}var C9=ve(e=>({...D_e,setActiveEnvironmentId:t=>e(e=>uve(e,t)),syncServerShellSnapshot:(t,n)=>e(e=>W_e(e,t,n)),syncServerThreadDetail:(t,n)=>e(e=>G_e(e,t,n)),setThreadSubscriptionError:(t,n,r)=>e(e=>K_e(e,t,n,r)),clearThreadSubscriptionError:(t,n)=>e(e=>q_e(e,t,n)),applyOrchestrationEvent:(t,n)=>e(e=>cve(e,t,n)),applyOrchestrationEvents:(t,n)=>e(e=>Y_e(e,t,n)),applyShellEvent:(t,n)=>e(e=>lve(e,t,n)),setError:(t,n)=>e(e=>sve(e,t,n)),setThreadBranch:(t,n,r)=>e(e=>dve(e,t,n,r))}));function w9(){let e=new Map;return{getItem:t=>e.get(t)??null,setItem:(t,n)=>{e.set(t,n)},removeItem:t=>{e.delete(t)}}}function fve(e){return e!=null&&typeof e.getItem==`function`&&typeof e.setItem==`function`&&typeof e.removeItem==`function`}function T9(e){return fve(e)?e:w9()}var E9=w9();function D9(){return globalThis.localStorage||globalThis.window?.localStorage}var O9={getItem:e=>{try{let t=D9()?.getItem(e);if(t!==void 0)return t}catch{}return E9.getItem(e)},setItem:(e,t)=>{try{let n=D9();if(n){n.setItem(e,t);return}}catch{}E9.setItem(e,t)},removeItem:e=>{try{let t=D9();if(t){t.removeItem(e);return}}catch{}E9.removeItem(e)}};function pve(e){let t=O9.getItem(e);return typeof t==`string`?t:null}function mve(e,t){O9.setItem(e,t)}function hve(e){O9.removeItem(e)}function gve(e,t=300){let n=T9(e),r=new ye((e,t)=>{n.setItem(e,t)},{wait:t});return{getItem:e=>n.getItem(e),setItem:(e,t)=>{r.maybeExecute(e,t)},removeItem:e=>{r.cancel(),n.removeItem(e)},flush:()=>{r.flush()}}}function _ve(e){switch(e){case`running`:return`green`;case`provisioning`:case`starting`:return`amber-pulse`;case`registered`:return`idle`;case`stopped`:case`suspended`:case`draining`:return`grey`;case`destroyed`:return`idle`;case`error`:return`red-pulse`;default:return`grey`}}function k9(e){let t=e.githubRepoFullName;return t?t.split(`/`)[1]??t:vve(e.projectName)}function vve(e){let t=e.trim().toLowerCase().replaceAll(`'`,``).replaceAll(`"`,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);return t.length>0?t:`project`}function A9(e){if(!e)return null;let t=e.trim().replace(/\/+$/,``);return t.length>0?t:null}function j9(e){let t=A9(e??void 0);return t&&M9(t).length>1?t:null}function M9(e){return e.split(`/`).flatMap(e=>e.split(`\\`)).filter(e=>e.length>0)}function N9(e){return e?M9(e).at(-1)??null:null}function yve(e){let t=e.rows.length>0;return(e.isLoading||e.startupPhase===`auth-refreshing`)&&!t?{kind:`loading`}:e.error&&!t?{kind:`error-no-rows`,message:e.error}:e.error&&t?{kind:`stale-rows`,message:e.error}:t?{kind:`rows`}:{kind:`empty`}}function bve(e,t){if(!t)return!1;let n=e.repositoryIdentity?.canonicalKey;return n!==void 0&&!n.toLowerCase().endsWith(`/${t.toLowerCase()}`)}function xve(e,t){return e?e.cmmdOrganizationId===t.cmmdOrganizationId&&e.cmmdProjectId===t.cmmdProjectId:!1}function Sve(e,t){let n=e.filter(e=>!e.cmmdRegistration),r=j9(t.workspaceRoot),i=r?n.filter(e=>A9(e.cwd)===r):[];if(i.length>0)return i;let a=k9(t).toLowerCase();return n.filter(e=>N9(e.cwd)?.toLowerCase()===a)}function P9(e,t,n){let r=e[t];if(!r)return null;let i=r.projectIds.flatMap(e=>{let t=r.projectById[e];return!t||bve(t,n.githubRepoFullName)?[]:[t]}),a=i.filter(e=>xve(e.cmmdRegistration,n)),o=a.length>0?a:Sve(i,n),s=o.length===1?o[0]:void 0;return s?{environmentId:t,projectId:s.id}:null}function Cve(e){return{cmmdOrganizationId:e.cmmdOrganizationId,cmmdProjectId:e.cmmdProjectId,githubRepoFullName:e.githubRepoFullName,projectName:e.projectName,workspaceRoot:e.workspaceRoot}}function wve(e,t){let n=e.cmmdEnvironmentId??e.environmentId;if(e.runtimeId===null||n===null)return null;let r=P9(t,p.make(n),Cve(e));return r?Pe(r.environmentId,r.projectId):null}function Tve(e,t){return e===t?!0:e===null||t===null?!1:e.environmentId===t.environmentId&&e.projectId===t.projectId}function Eve(e,t){let n=!1,r=e.map(e=>{let r=wve(e,t);return Tve(r,e.resolvedRef)?e:(n=!0,{...e,resolvedRef:r})});return n?r:e}var F9=`registered`,Dve={destroyed:`destroyed`,superseded:`destroyed`,error:`error`,failed:`error`,draining:`draining`,recycling:`draining`,stopped:`stopped`,suspended:`suspended`,provisioning:`provisioning`,created:`provisioning`,starting:`starting`,restarting:`starting`};function I9(e,t){let n=Dve[e];if(n!==void 0)return n;if(e!==`running`)return`stopped`;if(t)switch(t){case`app_ready`:case`server_ready`:case`ready`:case`supervisor_up`:return`running`;case`starting`:case`image_pulling`:case`waiting_state`:return`starting`;case`error`:return`error`;default:return`running`}return`running`}function Ove(e){return e===`destroyed`}function kve(e){switch(e){case`running`:case`starting`:case`provisioning`:return!0;case`suspended`:return!0;case`registered`:case`stopped`:case`draining`:case`error`:case`destroyed`:return!1;default:return!1}}function Ave(e){let t=e.shortName?.trim();if(t)return t;if(e.projectName)return e.projectName;if(e.githubRepoFullName){let t=e.githubRepoFullName.split(`/`),n=t[t.length-1];if(n)return n}return`project ${e.cmmdProjectId}`}var L9={state:`unknown`,label:`Unknown`,detail:`Current Environment availability has not been observed.`,tone:`muted`,automaticWakeAllowed:!1,shellConnected:!1,shellMayEstablishReady:!1};function R9(e,t,n,r,i,a,o=!1){return{state:e,label:t,detail:n,tone:r,automaticWakeAllowed:i,shellConnected:a,shellMayEstablishReady:o}}function jve(e,t){return e.ownerIntent===`paused`?R9(`paused`,`Paused`,`Resume before live work can wake this Environment.`,`warning`,!1,t):e.ownerIntent===`deleting`?R9(`deleting`,`Deleting`,`This Environment is being removed.`,`muted`,!1,t):null}function Mve(e,t){return e.executionAdmission.state===`allowed`?null:R9(`unavailable`,`Unavailable`,`This Environment is not accepting live work while it drains.`,`warning`,!1,t)}function z9(e,t=!1){if(e==null)return L9;let n=jve(e,t);if(n!==null)return n;if(e.ownerIntent!==`active`)return L9;let r=Mve(e,t);if(r!==null)return r;let{provider:i,guestReadiness:a,activeWork:o}=e;return i.observedAt===null||i.failure!==null||i.state===`absent`||i.state===`unknown`?R9(`unknown`,`Unknown`,`Current provider availability has not been observed.`,`muted`,e.automaticWakeAllowed,t):i.state===`sleeping`?R9(`sleeping`,`Sleeping`,`Live work wakes this Environment automatically.`,`muted`,e.automaticWakeAllowed,t):a.observedAt===null||a.failure!==null||a.state===`unknown`?R9(`unknown`,`Unknown`,`Current guest readiness has not been observed.`,`muted`,e.automaticWakeAllowed,t):a.state===`starting`?R9(`starting`,`Starting`,`Preparing live execution.`,`warning`,e.automaticWakeAllowed,t):a.state===`degraded`?R9(`degraded`,`Degraded`,`A required service needs attention.`,`warning`,e.automaticWakeAllowed,t):a.state===`failed`?R9(`needs-attention`,`Needs attention`,`The readiness check failed.`,`destructive`,e.automaticWakeAllowed,t):t?R9(`ready`,`Ready`,null,`success`,e.automaticWakeAllowed,!0):o.state===`active`?R9(`ready`,`Ready`,null,`success`,e.automaticWakeAllowed,t):R9(`unknown`,`Unknown`,`No current execution proof is available.`,`muted`,e.automaticWakeAllowed,t,!0)}function Nve(e,t){return!t||!e.shellMayEstablishReady?e:R9(`ready`,`Ready`,null,`success`,e.automaticWakeAllowed,!0)}function B9(e){return e?I9(e.status,e.readinessPhase??void 0):F9}function Pve(e){return e.runtime?.githubRepoFullName??e.githubRepoFullName??null}function Fve(e,t){return{cmmdOrganizationId:e.organizationId,cmmdProjectId:e.projectId,projectName:Ave({shortName:e.shortName??null,projectName:e.projectName??null,githubRepoFullName:t,cmmdProjectId:e.projectId}),githubRepoFullName:t,iconUrl:e.iconUrl??null,icon:e.icon??null}}function Ive(e){return e?{runtimeId:e.runtimeId,workspaceRoot:e.workspaceRoot??null,status:B9(e),desiredState:V9(e.desiredState),environmentId:gt(e.runtimeId),cmmdEnvironmentId:e.environmentId??null,...e.maintenance===void 0?{}:{maintenance:e.maintenance}}:{runtimeId:null,workspaceRoot:null,status:F9,desiredState:null,environmentId:null,cmmdEnvironmentId:null}}function V9(e){return e===`running`||e===`stopped`||e===`destroyed`?e:null}function Lve(e){return{...Fve(e,Pve(e)),registeredAt:e.registeredAt??null,...Ive(e.runtime),removal:e.removal??null,resolvedRef:null}}function Rve(e){return e.map(Lve)}function zve(e){return e.map(e=>({runtimeId:e.runtime.runtimeId,cmmdOrganizationId:e.organizationId,cmmdUserId:e.userId,displayName:e.displayName??null,userFirstName:e.userFirstName??null,environmentId:gt(e.runtime.runtimeId),cmmdEnvironmentId:e.runtime.environmentId??null,status:B9(e.runtime),desiredState:V9(e.runtime.desiredState),...e.runtime.maintenance===void 0?{}:{maintenance:e.runtime.maintenance},lifecycle:z9(e.lifecycle)}))}var H9=`forge:cmmd-cloud-project-catalog:v5`,Bve=re({runtimeId:b(E),cmmdOrganizationId:y,cmmdProjectId:y,cmmdEnvironmentId:b(E),registeredAt:o(b(E)),projectName:E,githubRepoFullName:b(E),workspaceRoot:b(E),iconUrl:o(b(E)),icon:o(b(E)),status:E,desiredState:o(b(E)),environmentId:b(E),removal:o(b(re({operationId:E,deletePlanningProject:_,status:w([`pending`,`running`,`retryable`]),phase:w([`destroy_runtime`,`purge_execution_state`,`delete_planning_project`,`unregister`,`complete`]),lastErrorCode:b(E),lastErrorMessage:b(E),updatedAt:E})))}),U9=re({rows:T(Bve),environments:T(re({runtimeId:E,cmmdOrganizationId:y,cmmdUserId:y,displayName:o(b(E)),userFirstName:o(b(E)),environmentId:E,cmmdEnvironmentId:b(E),status:E,desiredState:b(E)})),fetchedAt:E});function Vve(){pt(H9)}function Hve(){try{let e=dt(H9,U9);return e?{rows:e.rows.map(e=>({runtimeId:e.runtimeId,cmmdOrganizationId:e.cmmdOrganizationId,cmmdProjectId:e.cmmdProjectId,registeredAt:e.registeredAt??null,projectName:e.projectName,githubRepoFullName:e.githubRepoFullName,workspaceRoot:e.workspaceRoot,iconUrl:e.iconUrl??null,icon:e.icon??null,status:e.runtimeId===null?F9:I9(e.status),desiredState:V9(e.desiredState),environmentId:e.runtimeId===null?null:gt(e.runtimeId),cmmdEnvironmentId:e.cmmdEnvironmentId,resolvedRef:null,removal:e.removal??null})),environments:e.environments.map(e=>({runtimeId:e.runtimeId,cmmdOrganizationId:e.cmmdOrganizationId,cmmdUserId:e.cmmdUserId,displayName:e.displayName??null,userFirstName:e.userFirstName??null,cmmdEnvironmentId:e.cmmdEnvironmentId,status:I9(e.status),desiredState:V9(e.desiredState),environmentId:gt(e.runtimeId)})),fetchedAt:e.fetchedAt}:null}catch{return null}}function Uve(e,t,n){try{ft(H9,{rows:e.map(e=>({runtimeId:e.runtimeId,cmmdOrganizationId:e.cmmdOrganizationId,cmmdProjectId:e.cmmdProjectId,cmmdEnvironmentId:e.cmmdEnvironmentId,registeredAt:e.registeredAt,projectName:e.projectName,githubRepoFullName:e.githubRepoFullName,workspaceRoot:e.workspaceRoot,iconUrl:e.iconUrl,icon:e.icon,status:e.status,environmentId:e.environmentId,removal:e.removal})),environments:t,fetchedAt:n},U9)}catch{}}var W9=1e3;function Wve(e){return e.reconnectPhase===`idle`?`hidden`:e.reconnectPhase===`exhausted`?`actionable`:!e.hasConnected||!e.stableConnectionSeen?`startup-pending`:`actionable`}function G9(e){let t=e.maxAttempts??2,n=e.retryDelayMs??1e3;return e.failedAttempt<t?{kind:`retry`,delayMs:n,nextAttempt:e.failedAttempt+1}:{kind:`terminal`,attempt:e.failedAttempt}}var Gve=`auth-required`,Kve=`cloud-projects`;async function qve(e,t,n){let r=null,i=new u7(e).listCloudProjects({signal:t.signal}).then(e=>({kind:`catalog`,catalog:e})).catch(e=>({kind:`failed`,error:e})),a=new Promise(e=>{r=setTimeout(()=>{t.abort(),e({kind:`timed-out`})},n)});try{return await Promise.race([i,a])}finally{r!==null&&clearTimeout(r)}}function Jve(e){let t=e.accessToken??e.resolveAccessToken?.(),n={Accept:`text/event-stream`};return t&&(n.Authorization=`Bearer ${t}`),n}function Yve(e,t){let n=new URL(e);return n.pathname=t,n.search=``,n.hash=``,n.toString()}async function K9(e){return(e.status===401||e.status===403)&&(await $ve(e)||e.status===401)?`auth-required`:e.status===404||e.status===405||!e.ok||!e.body?`fallback`:e.body.getReader()}async function Xve({reader:e,signal:t,onAuthRequired:n,onCatalog:r}){let i=new TextDecoder,a=``;try{for(;!t.aborted;){let{done:o,value:s}=await e.read();if(t.aborted||o)return;let c=Zve(a,i.decode(s,{stream:!0}));if(a=c.buffer,c.messages.some(e=>Qve(e,n,r)))return}}finally{e.releaseLock()}}function Zve(e,t){let n=`${e}${t}`.split(/\n\n/);return{buffer:n.pop()??``,messages:n}}function Qve(e,t,n){let r=tye(e);if(r.name===Gve)return t(),!0;let i=r.name===Kve?eye(r.data):null;return i&&n(i),!1}async function $ve(e){try{let t=await e.clone().json();return typeof t?.code==`string`&&t.code===`CMMD_AUTH_REQUIRED`}catch{return!1}}function eye(e){try{return i7(JSON.parse(e))}catch{return null}}function tye(e){let t=``,n=``;for(let r of e.split(`
|
|
1007
1007
|
`))r.startsWith(`event: `)&&(t=r.slice(7).trim()),r.startsWith(`data: `)&&(n=r.slice(6).trim());return{name:t,data:n}}var nye=`/api/cmmd/forge-cloud-projects`,rye=`/api/cmmd/forge-cloud-projects/events`,iye=15e3,aye=3e4,oye=2e3,sye=3e4,cye=200;function q9(e){return e!==null&&clearTimeout(e),null}function lye({config:e,onEvent:t}){let n=!1,r=!1,i=!1,a=!1,o=!1,s=0,c=null,l=0,u=null,d=null,f=0,p=null,m=null,h=null,g=null;function _(){p=q9(p),g=q9(g)}function v(){f+=1,d?.controller.abort(),d=null}function y(e,t){return d?.controller===e&&d.generation===t&&f===t}function b(e){return u===e}function x(){v(),u?.abort(),u=null,_(),h=q9(h)}function S(){return!r&&!a}function C(e){t({kind:`catalog`,catalog:e,fetchedAt:new Date().toISOString()})}function w(e){a||r||(a=!0,c=null,x(),t({kind:`auth-required`,message:e}))}function T(e,n){if(r||a)return;s+=1,c=n;let i=G9({failedAttempt:s,retryDelayMs:W9});if(i.kind===`terminal`){w(e);return}u?.abort(),u=null,g=q9(g),t({kind:`auth-refreshing`}),o=!0,h=q9(h),h=setTimeout(()=>{h=null,o=!1,he()},i.delayMs)}async function ee(){if(!S())return!1;let n=new AbortController,r=++f;d={controller:n,generation:r},t({kind:`loading`});try{return E(await qve(e,n,iye),n,r)}finally{y(n,r)&&(d=null)}}function E(e,t,n){return!S()||!y(t,n)?!1:e.kind===`catalog`?te(e.catalog):e.kind===`timed-out`?ne():re(e.error)}function te(e){return c!==`sse`&&(s=0,c=null),o=!1,C(e),!0}function ne(){return t({kind:`failed`,message:`Cloud connection refresh timed out. Showing last known connections.`}),!a}function re(e){let n=e instanceof Error?e.message:`Failed to load cloud projects`;return h5(e)||uye(e)||/authentication required/i.test(n)?T(n,`list`):t({kind:`failed`,message:n}),!a}function ie(){S()&&(p=q9(p),p=setTimeout(async()=>{await ee(),S()&&ie()},aye))}function ae(){!S()||o||(i?ie():se(l))}function oe(e){l=e+1;let t=Math.min(oye*2**e,sye);g=q9(g),g=setTimeout(()=>{g=null,se(l)},t)}function D(e){s=0,c=null,l=0,C(e)}async function se(t){if(!S()||u!==null)return;u=new AbortController;let n=u,r=e.eventsUrl??Yve(e.cmmdHttpBaseUrl,`/api/forge/context/runtimes/events`),i=e.eventsUrl?{Accept:`text/event-stream`}:Jve(e);try{await ce(await fetch(r,{headers:i,signal:n.signal,credentials:`include`}),n,t)}catch{pe(n)}}async function ce(e,t,n){if(!le(t))return;let r=await K9(e);if(le(t)){if(typeof r==`string`){fe(r);return}await Xve({reader:r,signal:t.signal,onAuthRequired:()=>ue(t),onCatalog:e=>de(t,e)}),me(t,n)}}function le(e){return S()&&b(e)}function ue(e){le(e)&&T(`CMMD authentication required. Sign in again to continue.`,`sse`)}function de(e,t){le(e)&&D(t)}function fe(e){if(u=null,e===`auth-required`){T(`CMMD authentication required. Sign in again to continue.`,`sse`);return}i=!0,ie()}function pe(e){e.signal.aborted||!le(e)||(u=null,i=!0,ie())}function me(e,t){e.signal.aborted||!le(e)||(u=null,oe(t))}function he(){return ee().then(e=>{e&&S()&&ae()})}return{initialize(){n||r||(n=!0,he())},refresh(){r||(v(),m=q9(m),m=setTimeout(()=>{m=null,a=!1,o=!1,s=0,c=null,x(),he()},cye))},teardown(){r=!0,m=q9(m),x()}}}function uye(e){return typeof e==`object`&&!!e&&`kind`in e&&e.kind===`auth`}var J9={connected:!1,isLoading:!1,error:null,rows:[],environments:[],fetchedAt:null,stale:!1,startupPhase:`idle`,capacity:null};function dye({config:e}){let t=Hve(),n=t?{...J9,isLoading:!0,rows:t.rows,environments:t.environments,fetchedAt:t.fetchedAt,stale:!0}:J9,r=new Set;function i(e){n=e;for(let e of r)e()}function a(e){switch(e.kind){case`loading`:i({...n,isLoading:!0,error:null});return;case`catalog`:{let t=Rve(e.catalog.listRowsForDisplay()),n=zve(e.catalog.listEnvironmentsForDisplay());Uve(t,n,e.fetchedAt),i({connected:!0,isLoading:!1,error:null,rows:t,environments:n,fetchedAt:e.fetchedAt,stale:!1,startupPhase:`idle`,capacity:e.catalog.capacity});return}case`failed`:i({...n,connected:!1,isLoading:!1,error:e.message,stale:n.rows.length>0,startupPhase:`idle`});return;case`auth-refreshing`:i({...n,connected:!1,isLoading:!0,error:null,stale:n.rows.length>0,startupPhase:`auth-refreshing`});return;case`auth-required`:i({...n,connected:!1,isLoading:!1,error:e.message,stale:n.rows.length>0,startupPhase:`idle`}),ie(`cmmd-runtimes`);return}}let o=lye({config:e,onEvent:a});return{subscribe(e){return r.add(e),()=>r.delete(e)},read(){return n},initialize(){o.initialize()},refresh(){o.refresh()},_teardown(){o.teardown()},_setState(e){i(e)}}}var Y9=null;function X9(e){return typeof window<`u`&&window.location?.href?new URL(e,window.location.href).toString():new URL(e,`http://localhost`).toString()}function Z9(){return{cmmdHttpBaseUrl:`https://cmmd.ai`,resolveAccessToken:()=>null,listUrl:nye,eventsUrl:rye,destroyUrl:e=>X9(`/api/cmmd/forge-runtimes/${encodeURIComponent(e)}/destroy`),lifecycleUrl:(e,t)=>X9(`/api/cmmd/forge-runtimes/${encodeURIComponent(e)}/${t}`),updateCommitUrl:e=>X9(`/api/cmmd/forge-runtimes/${encodeURIComponent(e)}/update-commit`),updateCommitOperationUrl:(e,t)=>X9(`/api/cmmd/forge-runtimes/${encodeURIComponent(e)}/update-commit/${encodeURIComponent(String(t))}`),ensureUrl:X9(`/api/cmmd/forge-runtimes/ensure`)}}function Q9(){return Y9===null&&(Y9=dye({config:Z9()})),Y9}function fye(){Q9().refresh()}function pye(e){return Q9().subscribe(e)}function $9(){return Q9().read()}function mye(e){let t=(0,He.c)(9),n=e?.enabled??!0,r,i;t[0]===n?(r=t[1],i=t[2]):(r=()=>{n&&Q9().initialize()},i=[n],t[0]=n,t[1]=r,t[2]=i),(0,k.useEffect)(r,i);let a=(0,k.useSyncExternalStore)(pye,$9,$9),o=C9(hye),s,c;t[3]!==o||t[4]!==a.rows?(c=Eve(a.rows,o),t[3]=o,t[4]=a.rows,t[5]=c):c=t[5],s=c;let l=s,u;return t[6]!==l||t[7]!==a?(u=l===a.rows?a:{...a,rows:l},t[6]=l,t[7]=a,t[8]=u):u=t[8],u}function hye(e){return e.environmentStateById}export{T7 as $,q8 as $t,y9 as A,rt as An,gge as At,Q_e as B,Ve as Bn,Xhe as Bt,gve as C,pt as Cn,Sge as Ct,T9 as D,at as Dn,$5 as Dt,hve as E,ot as En,kge as Et,S9 as F,nee as Fn,Mhe as Ft,k7 as G,je as Gn,whe as Gt,C9 as H,Fe as Hn,$he as Ht,tve as I,Ye as In,B5 as It,E7 as J,xe as Jn,Che as Jt,D7 as K,Se as Kn,The as Kt,ive as L,Xe as Ln,R5 as Lt,Z_e as M,Ze as Mn,J5 as Mt,ove as N,Qe as Nn,M5 as Nt,mve as O,tt as On,mge as Ot,eve as P,$e as Pn,tge as Pt,O7 as Q,K8 as Qt,ave as R,Ke as Rn,Qhe as Rt,O9 as S,dt as Sn,Dge as St,pve as T,iee as Tn,bge as Tt,V7 as U,eee as Un,Ahe as Ut,X_e as V,Pe as Vn,I5 as Vt,c_e as W,tee as Wn,h5 as Wt,n_e as X,t5 as Xt,r_e as Y,r5 as Yt,t_e as Z,ahe as Zt,N9 as _,jt as _n,u7 as _t,K9 as a,mn as an,v7 as at,yve as b,ht as bn,Ege as bt,Wve as c,uee as cn,Jge as ct,Nve as d,Xt as dn,Yge as dt,W8 as en,A7 as et,kve as f,Qt as fn,qge as ft,k9 as g,xt as gn,Zge as gt,P9 as h,Zt as hn,Gge as ht,mye as i,Kn as in,b7 as it,rve as j,et as jn,pge as jt,nve as k,nt as kn,hge as kt,Vve as l,Kt as ln,Xge as lt,I9 as m,Yt as mn,_7 as mt,fye as n,Qn as nn,s_e as nt,W9 as o,cee as on,Kge as ot,Ove as p,qt as pn,S7 as pt,w7 as q,Ce as qn,Ehe as qt,Z9 as r,qn as rn,C7 as rt,G9 as s,an as sn,y7 as st,$9 as t,G8 as tn,i_e as tt,z9 as u,Jt as un,Qge as ut,j9 as v,aee as vn,e7 as vt,w9 as w,ft as wn,wge as wt,_ve as x,gt as xn,Mge as xt,A9 as y,bt as yn,Q5 as yt,$_e as z,Be as zn,E5 as zt};
|
|
1008
|
-
//# sourceMappingURL=cmmdForgeRuntimeListResource-
|
|
1008
|
+
//# sourceMappingURL=cmmdForgeRuntimeListResource-DokzffFK.js.map
|