@loicngr/kobo 1.11.41 → 1.11.42
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/AGENTS.md +21 -0
- package/CHANGELOG.md +4 -0
- package/dist/server/routes/workspaces.js +4 -3
- package/dist/server/services/activity-service.js +3 -0
- package/dist/server/services/agent/engines/claude-code/engine.js +1 -0
- package/dist/server/services/settings-service.js +13 -0
- package/package.json +1 -1
- package/src/client/dist/pwa/assets/{ActivityFeed-DTIe6O9o.js → ActivityFeed-CyCGH0Zr.js} +1 -1
- package/src/client/dist/pwa/assets/{ChangelogPage-BWeu0YeI.js → ChangelogPage-B6xjI-I4.js} +1 -1
- package/src/client/dist/pwa/assets/{ComparisonPanel-o_EHlTwV.js → ComparisonPanel-BmRzCu1c.js} +1 -1
- package/src/client/dist/pwa/assets/CreatePage-DHe0x63K.js +2 -0
- package/src/client/dist/pwa/assets/CreatePage-TY9g3hZb.css +1 -0
- package/src/client/dist/pwa/assets/{DashboardPage-CIo_gesD.js → DashboardPage-CRTkx9P-.js} +1 -1
- package/src/client/dist/pwa/assets/{DiffViewer-DEcf48KI.js → DiffViewer-BJfLiYGs.js} +3 -3
- package/src/client/dist/pwa/assets/{DocumentsPanel-D9vcB91W.js → DocumentsPanel-B9jjzoqY.js} +1 -1
- package/src/client/dist/pwa/assets/{DrawerToggleButton-Ca0_CxSl.js → DrawerToggleButton-CBZpPa30.js} +1 -1
- package/src/client/dist/pwa/assets/GitPanel-gqySqt7G.js +3 -0
- package/src/client/dist/pwa/assets/{HealthPage-_q3vy_xn.js → HealthPage-9VEvoR_4.js} +1 -1
- package/src/client/dist/pwa/assets/MainLayout-BM14JTBB.js +2 -0
- package/src/client/dist/pwa/assets/{MainLayout-DxMVVA6f.css → MainLayout-Dhj28mOe.css} +1 -1
- package/src/client/dist/pwa/assets/{QBtnDropdown-BeiZIHVA.js → QBtnDropdown-Cnkq_5eu.js} +1 -1
- package/src/client/dist/pwa/assets/{QDrawer-Fj3M9QGD.js → QDrawer-C3b-lbmv.js} +1 -1
- package/src/client/dist/pwa/assets/{QSelect-DtSUuK8t.js → QSelect-DJL6yy1E.js} +1 -1
- package/src/client/dist/pwa/assets/{QTooltip-DwkX8eQ6.js → QTooltip-WIoDeLoZ.js} +1 -1
- package/src/client/dist/pwa/assets/{SchedulePanel-BlZDd7TK.js → SchedulePanel-tVggDx-C.js} +1 -1
- package/src/client/dist/pwa/assets/{SearchPage-BGi1yRxU.js → SearchPage-l4m1qxKs.js} +1 -1
- package/src/client/dist/pwa/assets/SettingsPage-W6N01tGz.css +1 -0
- package/src/client/dist/pwa/assets/SettingsPage-msHMBS7q.js +9 -0
- package/src/client/dist/pwa/assets/{SplitWorkspacePage-vz6jN1DM.js → SplitWorkspacePage-AXMYd-9b.js} +1 -1
- package/src/client/dist/pwa/assets/{TerminalPanel-IdPIGp2_.js → TerminalPanel-CENXl8po.js} +1 -1
- package/src/client/dist/pwa/assets/{TouchPan-DTJqxVp9.js → TouchPan-DaEpS0Vf.js} +1 -1
- package/src/client/dist/pwa/assets/{TourReplayButton-Bj2GGyhU.js → TourReplayButton-U3mwT0fV.js} +1 -1
- package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-BBaGZlwv.js → WorkspaceAttentionLabels-CpTA6VGb.js} +1 -1
- package/src/client/dist/pwa/assets/{WorkspacePage-Dy0spsfi.js → WorkspacePage-DE6-wlf7.js} +3 -3
- package/src/client/dist/pwa/assets/{browser-BFj5wwbS.js → browser-B4pgwnXH.js} +1 -1
- package/src/client/dist/pwa/assets/{build-path-tree-C-HSiySk.js → build-path-tree-6ENXqh7O.js} +1 -1
- package/src/client/dist/pwa/assets/{de-BdLe7apJ.js → de-D9gPXN_a.js} +1 -1
- package/src/client/dist/pwa/assets/{documents-C2Xnjh9Z.js → documents-D88lOIxR.js} +1 -1
- package/src/client/dist/pwa/assets/{editor.api-BbKfnNmv.js → editor.api-qQNqM6Y6.js} +1 -1
- package/src/client/dist/pwa/assets/{efforts-BM7fdaaL.js → efforts-CMQi0Rp2.js} +1 -1
- package/src/client/dist/pwa/assets/{engineFeatures-b74YRODT.js → engineFeatures-BPcXoXFd.js} +1 -1
- package/src/client/dist/pwa/assets/{es-C1LM-3aq.js → es-B4Q1ncyP.js} +1 -1
- package/src/client/dist/pwa/assets/{expand-template-DiDWiIkx.js → expand-template-DuMdsD-k.js} +1 -1
- package/src/client/dist/pwa/assets/{format-CnbUxAmw.js → format-BVgznNN8.js} +1 -1
- package/src/client/dist/pwa/assets/{formatters-B2uUIbAY.js → formatters-DV1VAk5B.js} +1 -1
- package/src/client/dist/pwa/assets/{fr-KCK6r5ga.js → fr-Qv-edVJn.js} +1 -1
- package/src/client/dist/pwa/assets/{freemarker2-Cu1vGY0x.js → freemarker2-Nt_Z9A9p.js} +1 -1
- package/src/client/dist/pwa/assets/{handlebars-CETuqLyz.js → handlebars-sJjXCA98.js} +1 -1
- package/src/client/dist/pwa/assets/{html-BTNpr39P.js → html-B2wF0NKO.js} +1 -1
- package/src/client/dist/pwa/assets/i18n-eiyc92m_.js +1 -0
- package/src/client/dist/pwa/assets/{index-mvh5w1cM.js → index-DtsrXdzx.js} +2 -2
- package/src/client/dist/pwa/assets/{it-BM6t0IGU.js → it-D-qzfo9T.js} +1 -1
- package/src/client/dist/pwa/assets/{javascript-C7Ncb6V7.js → javascript-BPbCoYVZ.js} +1 -1
- package/src/client/dist/pwa/assets/{liquid-D0hUdg4x.js → liquid-DBwLDEnw.js} +1 -1
- package/src/client/dist/pwa/assets/{mdx-BK5H1Xst.js → mdx-D_Sphj-P.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco-contributions-BBW6JNgz.js → monaco-contributions-BBjimLYs.js} +1 -1
- package/src/client/dist/pwa/assets/monaco.contribution-DNP7HNKq.js +2 -0
- package/src/client/dist/pwa/assets/{network-auth-CVGS__6a.js → network-auth-BLGlHVxR.js} +1 -1
- package/src/client/dist/pwa/assets/{notify-theme-DIKLxr8F.js → notify-theme-tvaTlaFw.js} +1 -1
- package/src/client/dist/pwa/assets/{pending-diff-open-B02zuH1j.js → pending-diff-open-CxtcrwVN.js} +1 -1
- package/src/client/dist/pwa/assets/{permissionModes-C3otN1Vk.js → permissionModes-CESk18Vk.js} +1 -1
- package/src/client/dist/pwa/assets/{project-color-BUcW_eZA.js → project-color-D75XmBNA.js} +1 -1
- package/src/client/dist/pwa/assets/{python-DEeUVvnp.js → python-BdBTal4f.js} +1 -1
- package/src/client/dist/pwa/assets/{razor-CG6cL8ya.js → razor-gJNlRRte.js} +1 -1
- package/src/client/dist/pwa/assets/{render-chat-markdown-Ct_T5TPN.js → render-chat-markdown-K3tUW_1p.js} +1 -1
- package/src/client/dist/pwa/assets/{typescript-CSQAg5UC.js → typescript-DAGixRVW.js} +1 -1
- package/src/client/dist/pwa/assets/{use-tours-_6HwJ_Rp.js → use-tours-CS5oBFk6.js} +1 -1
- package/src/client/dist/pwa/assets/{workspace-templates-B8WWsWEI.js → workspace-templates-BoGUaV1C.js} +1 -1
- package/src/client/dist/pwa/assets/{xml-BSB4-DXR.js → xml-BC9pt2ZZ.js} +1 -1
- package/src/client/dist/pwa/assets/{yaml-CSGKph85.js → yaml-CQpOdW-l.js} +1 -1
- package/src/client/dist/pwa/index.html +1 -1
- package/src/client/dist/pwa/sw.js +1 -1
- package/src/client/dist/pwa/assets/CreatePage-CGi88k6z.css +0 -1
- package/src/client/dist/pwa/assets/CreatePage-DbY5gBv8.js +0 -2
- package/src/client/dist/pwa/assets/GitPanel-DCmB2R5i.js +0 -3
- package/src/client/dist/pwa/assets/MainLayout-Duwnq3cc.js +0 -2
- package/src/client/dist/pwa/assets/SettingsPage-DnO-ImWE.js +0 -9
- package/src/client/dist/pwa/assets/SettingsPage-sVlsJQ0b.css +0 -1
- package/src/client/dist/pwa/assets/i18n-BkUirOzl.js +0 -1
- package/src/client/dist/pwa/assets/monaco.contribution-1LZrAlY4.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MainLayout-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MainLayout-BM14JTBB.js","assets/reactivity.esm-bundler-DEJj9cFv.js","assets/runtime-core.esm-bundler-CDnVUfeZ.js","assets/QBtn-CZaBclNw.js","assets/pinia-BKqmoVru.js","assets/use-id-BIuaWKkB.js","assets/QList-qupzuEqO.js","assets/QSelect-DJL6yy1E.js","assets/private.use-form-C7umbGO-.js","assets/QItemSection-D_5_0UrX.js","assets/use-tours-CS5oBFk6.js","assets/use-tours-CTZuBZOi.css","assets/QChip-owciRuZu.js","assets/permissionModes-CESk18Vk.js","assets/documents-D88lOIxR.js","assets/QTooltip-WIoDeLoZ.js","assets/render-chat-markdown-K3tUW_1p.js","assets/QBadge-DbkxGtht.js","assets/ClosePopup-BqW5dy-O.js","assets/use-is-mobile-CWjqe8gC.js","assets/efforts-CMQi0Rp2.js","assets/WorkspaceAttentionLabels-CpTA6VGb.js","assets/formatters-DV1VAk5B.js","assets/WorkspaceAttentionLabels-CrLP_I5S.css","assets/QDrawer-C3b-lbmv.js","assets/TouchPan-DaEpS0Vf.js","assets/QBanner-DhqH95GW.js","assets/engineFeatures-BPcXoXFd.js","assets/project-color-D75XmBNA.js","assets/SettingsPage-msHMBS7q.js","assets/QBtnDropdown-Cnkq_5eu.js","assets/QBtnGroup-DELKYo3u.js","assets/QPage-DaX9sMQC.js","assets/DrawerToggleButton-CBZpPa30.js","assets/TourReplayButton-U3mwT0fV.js","assets/workspace-templates-BoGUaV1C.js","assets/workspace-page-layout-Dw9NhZsL.js","assets/SettingsPage-W6N01tGz.css","assets/MainLayout-Dhj28mOe.css","assets/DashboardPage-CRTkx9P-.js","assets/QMarkupTable-B9QuKtK_.js","assets/DashboardPage-D8g7_r4S.css","assets/WorkspacePage-DE6-wlf7.js","assets/QSpinnerDots-DnCV3VzI.js","assets/clipboard-t9qe6lK7.js","assets/expand-template-DuMdsD-k.js","assets/expand-template-CTUNyJrv.css","assets/use-search-index-status-DtLzygcy.js","assets/WorkspacePage-DCg9zSxz.css","assets/SplitWorkspacePage-AXMYd-9b.js","assets/SplitWorkspacePage-lWQO8xro.css","assets/CreatePage-DHe0x63K.js","assets/QBtnToggle-BI3k3Ch2.js","assets/CreatePage-TY9g3hZb.css","assets/SearchPage-l4m1qxKs.js","assets/SearchPage-BGc1oQSM.css","assets/HealthPage-9VEvoR_4.js","assets/HealthPage-CFZ-tdKK.css","assets/ChangelogPage-B6xjI-I4.js","assets/ChangelogPage-DKJkFiU_.css"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{C as e,S as t,a as n,b as r,f as i,g as a,j as o,o as s,p as c,u as l,ut as u,v as d}from"./reactivity.esm-bundler-DEJj9cFv.js";import{C as f,F as p,J as m,L as h,M as g,N as _,O as v,P as y,R as b,T as x,V as S,Y as C,_ as w,b as T,d as E,f as D,j as O,k as ee,l as k,p as A,r as j,s as te,u as M,y as N}from"./runtime-core.esm-bundler-CDnVUfeZ.js";import{$ as ne,A as re,F as ie,H as ae,J as oe,M as se,N as ce,O as le,S as P,U as ue,V as de,W as fe,Y as pe,Z as me,at as F,b as he,ct as ge,d as _e,et as ve,f as ye,ft as be,it as xe,j as Se,k as Ce,l as we,lt as I,m as Te,o as Ee,ot as De,p as Oe,rt as ke,s as Ae,st as je,t as Me,tt as Ne,u as Pe,ut as Fe,w as Ie,x as Le,y as Re}from"./QBtn-CZaBclNw.js";import{a as ze,i as Be,n as Ve,t as He}from"./pinia-BKqmoVru.js";import{S as Ue,_ as We,a as Ge,b as Ke,c as qe,d as Je,g as Ye,l as Xe,s as Ze,t as Qe,u as $e,v as et,x as tt,y as nt}from"./use-id-BIuaWKkB.js";import{i as rt,n as it,r as at}from"./private.use-form-C7umbGO-.js";import{a as ot,i as st,n as ct,r as lt,t as ut}from"./use-checkbox-FnauAgTp.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var dt=[`sm`,`md`,`lg`,`xl`],{passive:ft}=oe,pt=ke({width:0,height:0,name:`xs`,sizes:{sm:600,md:1024,lg:1440,xl:1920},lt:{sm:!0,md:!0,lg:!0,xl:!0},gt:{xs:!1,sm:!1,md:!1,lg:!1},xs:!0,sm:!1,md:!1,lg:!1,xl:!1},{setSizes:pe,setDebounce:pe,install({$q:e,onSSRHydrated:t}){if(e.screen=this,this.__installed){e.config.screen!==void 0&&(e.config.screen.bodyClasses?this.__update(!0):document.body.classList.remove(`screen--${this.name}`));return}let{visualViewport:n}=window,r=n||window,i=document.scrollingElement||document.documentElement,a=n===void 0||F.is.mobile?()=>[Math.max(window.innerWidth,i.clientWidth),Math.max(window.innerHeight,i.clientHeight)]:()=>[n.width*n.scale+window.innerWidth-i.clientWidth,n.height*n.scale+window.innerHeight-i.clientHeight],o=e.config.screen?.bodyClasses===!0;this.__update=e=>{let[t,n]=a();if(n!==this.height&&(this.height=n),t!==this.width)this.width=t;else if(e!==!0)return;let r=this.sizes;this.gt.xs=t>=r.sm,this.gt.sm=t>=r.md,this.gt.md=t>=r.lg,this.gt.lg=t>=r.xl,this.lt.sm=t<r.sm,this.lt.md=t<r.md,this.lt.lg=t<r.lg,this.lt.xl=t<r.xl,this.xs=this.lt.sm,this.sm=this.gt.xs&&this.lt.md,this.md=this.gt.sm&&this.lt.lg,this.lg=this.gt.md&&this.lt.xl,this.xl=this.gt.lg,r=this.xs&&`xs`||this.sm&&`sm`||this.md&&`md`||this.lg&&`lg`||`xl`,r!==this.name&&(o&&(document.body.classList.remove(`screen--${this.name}`),document.body.classList.add(`screen--${r}`)),this.name=r)};let s,c={},l=16;this.setSizes=e=>{dt.forEach(t=>{e[t]!==void 0&&(c[t]=e[t])})},this.setDebounce=e=>{l=e};let u=()=>{let e=getComputedStyle(document.body);e.getPropertyValue(`--q-size-sm`)&&dt.forEach(t=>{this.sizes[t]=Number.parseInt(e.getPropertyValue(`--q-size-${t}`),10)}),this.setSizes=e=>{dt.forEach(t=>{e[t]&&(this.sizes[t]=e[t])}),this.__update(!0)},this.setDebounce=e=>{s!==void 0&&r.removeEventListener(`resize`,s,ft),s=e>0?fe(this.__update,e):this.__update,r.addEventListener(`resize`,s,ft)},this.setDebounce(l),Object.keys(c).length===0?this.__update():(this.setSizes(c),c=void 0),o&&this.name===`xs`&&document.body.classList.add(`screen--xs`)};De.value?t.push(u):u()}}),mt=ke({isActive:!1,mode:!1},{__media:void 0,set(e){mt.mode=e,e===`auto`?(mt.__media===void 0&&(mt.__media=window.matchMedia(`(prefers-color-scheme: dark)`),mt.__updateMedia=()=>{mt.set(`auto`)},mt.__media.addListener(mt.__updateMedia)),e=mt.__media.matches):mt.__media!==void 0&&(mt.__media.removeListener(mt.__updateMedia),mt.__media=void 0),mt.isActive=e===!0,document.body.classList.remove(`body--${e===!0?`light`:`dark`}`),document.body.classList.add(`body--${e===!0?`dark`:`light`}`)},toggle(){mt.set(!mt.isActive)},install({$q:e,ssrContext:t}){let n=e.config.dark;e.dark=this,this.__installed||this.set(n!==void 0&&n)}});function ht(e,t,n=document.body){if(typeof e!=`string`)throw TypeError(`Expected a string as propName`);if(typeof t!=`string`)throw TypeError(`Expected a string as value`);if(!(n instanceof Element))throw TypeError(`Expected a DOM element`);n.style.setProperty(`--q-${e}`,t)}function gt(e){if(e.ios)return`ios`;if(e.android)return`android`}function _t({is:e,has:t,within:n},r){let i=[e.desktop?`desktop`:`mobile`,`${t.touch?``:`no-`}touch`];if(e.mobile){let t=gt(e);t!==void 0&&i.push(`platform-`+t)}if(e.nativeMobile){let t=e.nativeMobileWrapper,n=r[t];i.push(t,`native-mobile`),e.ios&&(n===void 0||n.iosStatusBarPadding)?i.push(`q-ios-padding`):e.android&&(n===void 0||n.androidStatusBarPadding!==!1)&&i.push(`q-safe-area-padding`)}else e.electron?i.push(`electron`):e.bex&&i.push(`bex`);return n.iframe&&i.push(`within-iframe`),i}function vt(){let{is:e}=F,t=document.body.className,n=new Set(t.replaceAll(/ {2}/g,` `).split(` `));if(!e.nativeMobile&&!e.electron&&!e.bex){if(e.desktop)n.delete(`mobile`),n.delete(`platform-ios`),n.delete(`platform-android`),n.add(`desktop`);else if(e.mobile){n.delete(`desktop`),n.add(`mobile`),n.delete(`platform-ios`),n.delete(`platform-android`);let t=gt(e);t!==void 0&&n.add(`platform-${t}`)}}F.has.touch&&(n.delete(`no-touch`),n.add(`touch`)),F.within.iframe&&n.add(`within-iframe`);let r=[...n].join(` `);t!==r&&(document.body.className=r)}function yt(e){for(let t in e)ht(t,e[t])}var bt={install(e){if(!this.__installed){if(De.value)vt();else{let{$q:t}=e;t.config.brand!==void 0&&yt(t.config.brand),document.body.classList.add(..._t(F,t.config))}F.is.ios&&document.body.addEventListener(`touchstart`,pe),window.addEventListener(`keydown`,ae,!0)}}},xt=()=>!0;function St(e){return typeof e==`string`&&e!==``&&e!==`/`&&e!==`#/`}function Ct(e){return e.startsWith(`#`)&&(e=e.slice(1)),e.startsWith(`/`)||(e=`/`+e),e.endsWith(`/`)&&(e=e.slice(0,-1)),`#`+e}function wt(e){if(e.backButtonExit===!1)return()=>!1;if(e.backButtonExit===`*`)return xt;let t=[`#/`];return Array.isArray(e.backButtonExit)&&t.push(...e.backButtonExit.filter(St).map(Ct)),()=>t.includes(window.location.hash)}var Tt={__history:[],add:pe,remove:pe,install({$q:e}){if(this.__installed)return;let{cordova:t,capacitor:n}=F.is;if(!t&&!n)return;let r=e.config[t?`cordova`:`capacitor`];if(r?.backButton===!1||n&&(window.Capacitor===void 0||window.Capacitor.Plugins.App===void 0))return;this.add=e=>{e.condition===void 0&&(e.condition=xt),this.__history.push(e)},this.remove=e=>{let t=this.__history.indexOf(e);t!==-1&&this.__history.splice(t,1)};let i=wt({backButtonExit:!0,...r}),a=()=>{if(this.__history.length!==0){let e=this.__history.at(-1);e.condition()&&(this.__history.pop(),e.handler())}else i()?navigator.app.exitApp():window.history.back()};t?document.addEventListener(`deviceready`,()=>{document.addEventListener(`backbutton`,a,!1)}):window.Capacitor.Plugins.App.addListener(`backButton`,a)}},Et={isoName:`en-US`,nativeName:`English (US)`,label:{clear:`Clear`,ok:`OK`,cancel:`Cancel`,close:`Close`,set:`Set`,select:`Select`,reset:`Reset`,remove:`Remove`,update:`Update`,create:`Create`,search:`Search`,filter:`Filter`,refresh:`Refresh`,minimum:`Minimum`,maximum:`Maximum`,range:`Range`,noValue:`No value`,resize:`Resize`,expand:e=>e?`Expand "${e}"`:`Expand`,collapse:e=>e?`Collapse "${e}"`:`Collapse`},date:{days:`Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday`.split(`_`),daysShort:`Sun_Mon_Tue_Wed_Thu_Fri_Sat`.split(`_`),months:`January_February_March_April_May_June_July_August_September_October_November_December`.split(`_`),monthsShort:`Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec`.split(`_`),firstDayOfWeek:0,format24h:!1,pluralDay:`days`,prevMonth:`Previous month`,nextMonth:`Next month`,prevYear:`Previous year`,nextYear:`Next year`,today:`Today`,prevRangeYears:e=>`Previous ${e} years`,nextRangeYears:e=>`Next ${e} years`,hour:`Hour`,minute:`Minute`,second:`Second`,now:`Current time`},table:{noData:`No data available`,noResults:`No matching records found`,loading:`Loading...`,selectedRecords:e=>e===1?`1 record selected.`:(e===0?`No`:e)+` records selected.`,recordsPerPage:`Records per page:`,allRows:`All`,pagination:(e,t,n)=>e+`–`+t+` of `+n,columns:`Columns`,selectAllRows:`Select all rows`,selectRow:`Select row`},pagination:{label:`Pagination`,first:`First page`,prev:`Previous page`,next:`Next page`,last:`Last page`},carousel:{prevSlide:`Previous slide`,nextSlide:`Next slide`},colorPicker:{spectrum:`Spectrum`,tune:`Tune`,palette:`Palette`,value:`Color value`,hue:`Hue`,alpha:`Opacity`},uploader:{addFiles:`Pick files`,upload:`Upload files`,abort:`Abort upload`,removeQueued:`Remove queued files`,removeUploaded:`Remove uploaded files`,removeFile:`Remove file`},editor:{toolbar:`Editor toolbar`,url:`URL`,bold:`Bold`,italic:`Italic`,strikethrough:`Strikethrough`,underline:`Underline`,unorderedList:`Unordered List`,orderedList:`Ordered List`,subscript:`Subscript`,superscript:`Superscript`,hyperlink:`Hyperlink`,toggleFullscreen:`Toggle Fullscreen`,quote:`Quote`,left:`Left align`,center:`Center align`,right:`Right align`,justify:`Justify align`,print:`Print`,outdent:`Decrease indentation`,indent:`Increase indentation`,removeFormat:`Remove formatting`,formatting:`Formatting`,fontSize:`Font Size`,align:`Align`,hr:`Insert Horizontal Rule`,undo:`Undo`,redo:`Redo`,heading1:`Heading 1`,heading2:`Heading 2`,heading3:`Heading 3`,heading4:`Heading 4`,heading5:`Heading 5`,heading6:`Heading 6`,paragraph:`Paragraph`,code:`Code`,size1:`Very small`,size2:`A bit small`,size3:`Normal`,size4:`Medium-large`,size5:`Big`,size6:`Very big`,size7:`Maximum`,defaultFont:`Default Font`,viewSource:`View Source`},tree:{noNodes:`No nodes available`,noResults:`No matching nodes found`}};function Dt(e){return e.split(/[-_]/).map((e,t)=>t===0?e.toLowerCase():t>1||e.length<4?e.toUpperCase():e[0].toUpperCase()+e.slice(1).toLowerCase())}function Ot(){let e=Array.isArray(navigator.languages)&&navigator.languages.length!==0?navigator.languages[0]:navigator.language;if(typeof e==`string`)return Dt(e).join(`-`)}function kt(e){try{let{language:t,script:n,region:r}=new Intl.Locale(e).maximize();return{language:t,script:n,region:r}}catch{}}function At(e,t){if(typeof e!=`string`||!Array.isArray(t))return;let n=new Map;for(let e of t){if(typeof e!=`string`)continue;let t=e.toLowerCase().replaceAll(`_`,`-`);n.has(t)||n.set(t,e)}if(n.size===0)return;let r=Dt(e),i=[];for(let e=r.length;e>1;e--)i.push(r.slice(0,e).join(`-`));if(r.length>2&&r[1].length===4){let e=[r[0],...r.slice(2)];for(let t=e.length;t>1;t--)i.push(e.slice(0,t).join(`-`))}i.push(r[0]);for(let e of i){let t=n.get(e.toLowerCase());if(t!==void 0)return t}let a=kt(r.join(`-`));if(a===void 0)return;let o=kt(a.language).region,s;for(let[e,t]of n){let n=kt(e);if(n===void 0||n.language!==a.language)continue;let r=(n.script===a.script?4:0)+(n.region===a.region?2:0)+ +(n.region===o),i=e.split(`-`).length;(s===void 0||r>s.score||r===s.score&&i<s.depth)&&(s={tag:t,score:r,depth:i})}return s?.tag}var jt=ke({__qLang:{}},{getLocale:Ot,getClosestIsoName:At,set(e=Et,t){let n={...e,rtl:e.rtl===!0,getLocale:Ot,getClosestIsoName:At};if(n.set=jt.set,jt.__langConfig===void 0||!jt.__langConfig.noHtmlAttrs){let e=document.documentElement;e.setAttribute(`dir`,n.rtl?`rtl`:`ltr`),e.setAttribute(`lang`,n.isoName)}Object.assign(jt.__qLang,n)},install({$q:e,lang:t,ssrContext:n}){e.lang=jt.__qLang,jt.__langConfig=e.config.lang,this.__installed?t!==void 0&&this.set(t):(this.props=new Proxy(this.__qLang,{get:Reflect.get,ownKeys(e){return Reflect.ownKeys(e).filter(e=>e!==`set`&&e!==`getLocale`&&e!==`getClosestIsoName`)}}),this.set(t||Et))}}),Mt={name:`material-icons`,type:{positive:`check_circle`,negative:`warning`,info:`info`,warning:`priority_high`},arrow:{up:`arrow_upward`,right:`arrow_forward`,down:`arrow_downward`,left:`arrow_back`,dropdown:`arrow_drop_down`},chevron:{left:`chevron_left`,right:`chevron_right`},colorPicker:{spectrum:`gradient`,tune:`tune`,palette:`style`},pullToRefresh:{icon:`refresh`},carousel:{left:`chevron_left`,right:`chevron_right`,up:`keyboard_arrow_up`,down:`keyboard_arrow_down`,navigationIcon:`lens`},chip:{remove:`cancel`,selected:`check`},datetime:{arrowLeft:`chevron_left`,arrowRight:`chevron_right`,now:`access_time`,today:`today`},editor:{bold:`format_bold`,italic:`format_italic`,strikethrough:`strikethrough_s`,underline:`format_underlined`,unorderedList:`format_list_bulleted`,orderedList:`format_list_numbered`,subscript:`vertical_align_bottom`,superscript:`vertical_align_top`,hyperlink:`link`,toggleFullscreen:`fullscreen`,quote:`format_quote`,left:`format_align_left`,center:`format_align_center`,right:`format_align_right`,justify:`format_align_justify`,print:`print`,outdent:`format_indent_decrease`,indent:`format_indent_increase`,removeFormat:`format_clear`,formatting:`text_format`,fontSize:`format_size`,align:`format_align_left`,hr:`remove`,undo:`undo`,redo:`redo`,heading:`format_size`,code:`code`,size:`format_size`,font:`font_download`,viewSource:`code`},expansionItem:{icon:`keyboard_arrow_down`,denseIcon:`arrow_drop_down`},fab:{icon:`add`,activeIcon:`close`},field:{clear:`cancel`,error:`error`},pagination:{first:`first_page`,prev:`keyboard_arrow_left`,next:`keyboard_arrow_right`,last:`last_page`},rating:{icon:`grade`},stepper:{done:`check`,active:`edit`,error:`warning`},tabs:{left:`chevron_left`,right:`chevron_right`,up:`keyboard_arrow_up`,down:`keyboard_arrow_down`},table:{arrowUp:`arrow_upward`,warning:`warning`,firstPage:`first_page`,prevPage:`chevron_left`,nextPage:`chevron_right`,lastPage:`last_page`},tree:{icon:`play_arrow`},uploader:{done:`done`,clear:`clear`,add:`add_box`,upload:`cloud_upload`,removeQueue:`clear_all`,removeUploaded:`done_all`}},Nt=ke({iconMapFn:null,__qIconSet:{}},{set(e,t){let n={...e};n.set=Nt.set,Object.assign(Nt.__qIconSet,n)},install({$q:e,iconSet:t,ssrContext:n}){e.config.iconMapFn!==void 0&&(this.iconMapFn=e.config.iconMapFn),e.iconSet=this.__qIconSet,je(e,`iconMapFn`,()=>this.iconMapFn,e=>{this.iconMapFn=e}),this.__installed?t!==void 0&&this.set(t):(this.props=new Proxy(this.__qIconSet,{get:Reflect.get,ownKeys(e){return Reflect.ownKeys(e).filter(e=>e!==`set`)}}),this.set(t||Mt))}});function Pt(e){return e.constructor===ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function Ft(e,t,n){return typeof e==`function`&&e!==n&&typeof t==`function`&&t!==n}function It(e,t){if(e===t)return!0;if(e!==null&&t!==null&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;let n,r;if(e.constructor===Array){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!It(e[r],t[r]))return!1;return!0}if(e.constructor===Map){if(e.size!==t.size)return!1;let n=e.entries();for(r=n.next();!r.done;){if(!t.has(r.value[0]))return!1;r=n.next()}for(n=e.entries(),r=n.next();!r.done;){if(!It(r.value[1],t.get(r.value[0])))return!1;r=n.next()}return!0}if(e.constructor===Set){if(e.size!==t.size)return!1;let n=e.entries();for(r=n.next();!r.done;){if(!t.has(r.value[0]))return!1;r=n.next()}return!0}if(e.constructor===ArrayBuffer||e.constructor===DataView){if(e.byteLength!==t.byteLength)return!1;e=Pt(e),t=Pt(t)}if(ArrayBuffer.isView(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(Ft(e.valueOf,t.valueOf,Object.prototype.valueOf))return e.valueOf()===t.valueOf();if(Ft(e.toString,t.toString,Object.prototype.toString))return e.toString()===t.toString();let i=Object.keys(e).filter(t=>e[t]!==void 0);if(n=i.length,n!==Object.keys(t).filter(e=>t[e]!==void 0).length)return!1;for(r=n;r--!==0;){let n=i[r];if(!It(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Lt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Rt(e){return Object.prototype.toString.call(e)===`[object Date]`}function zt(e){return Object.prototype.toString.call(e)===`[object RegExp]`}function Bt(e){return typeof e==`number`&&Number.isFinite(e)}var Vt={deepEqual:It,object:Lt,date:Rt,regexp:zt,number:Bt},Ht=[xe,bt,mt,pt,Tt,jt,Nt];function Ut(e,t){let n=Fe(e);n.config.globalProperties=t.config.globalProperties;let{reload:r,...i}=t._context;return Object.assign(n._context,i),n}function Wt(e,t){t.forEach(t=>{t.install(e),t.__installed=!0})}function Gt(e,t,n){e.config.globalProperties.$q=n.$q,e.provide(`_q_`,n.$q),Wt(n,Ht),t.components!==void 0&&Object.values(t.components).forEach(t=>{Lt(t)&&t.name!==void 0&&e.component(t.name,t)}),t.directives!==void 0&&Object.values(t.directives).forEach(t=>{Lt(t)&&t.name!==void 0&&e.directive(t.name,t)}),t.plugins!==void 0&&Wt(n,Object.values(t.plugins).filter(e=>typeof e.install==`function`&&!Ht.includes(e))),De.value&&(n.$q.onSSRHydrated=()=>{n.onSSRHydrated.forEach(e=>{e()}),n.$q.onSSRHydrated=()=>{}})}var Kt={name:`Quasar`,version:`2.30.1`,install:function(e,t={}){let n={version:`2.30.1`};ce?n.config=t.config||{}:(t.config!==void 0&&Object.assign(se,t.config),n.config={...se},Se()),Gt(e,t,{parentApp:e,$q:n,lang:t.lang,iconSet:t.iconSet,onSSRHydrated:[]})},lang:jt,iconSet:Nt},qt=Ne({name:`QCardSection`,props:{tag:{type:String,default:`div`},horizontal:Boolean},setup(e,{slots:t}){let n=k(()=>`q-card__section q-card__section--${e.horizontal?`horiz row no-wrap`:`vert`}`);return()=>f(e.tag,{class:n.value},P(t.default))}}),Jt=le({xs:2,sm:4,md:6,lg:10,xl:14});function Yt(e){return{transform:`scale3d(${e},1,1)`}}var Xt=Ne({name:`QLinearProgress`,props:{...ze,...re,value:{type:Number,default:0},buffer:Number,color:String,trackColor:String,reverse:Boolean,stripe:Boolean,indeterminate:Boolean,query:Boolean,rounded:Boolean,animationSpeed:{type:[String,Number],default:2100},instantFeedback:Boolean},setup(e,{slots:t}){let n=Re(),r=Be(e,n),i=k(()=>e.indeterminate||e.query),a=k(()=>({...Jt(e.size),"--q-linear-progress-speed":`${e.animationSpeed}ms`})),o=k(()=>`q-linear-progress`+(e.color===void 0?``:` text-${e.color}`)+(e.reverse||e.query?` q-linear-progress--reverse`:``)+(e.rounded?` rounded-borders`:``)),s=k(()=>Yt(e.buffer===void 0?1:e.buffer)),c=k(()=>`with${e.instantFeedback?`out`:``}-transition`),l=k(()=>`q-linear-progress__track absolute-full q-linear-progress__track--${c.value} q-linear-progress__track--${r()?`dark`:`light`}`+(e.trackColor===void 0?``:` bg-${e.trackColor}`)),u=k(()=>Yt(i.value?1:e.value)),d=k(()=>`q-linear-progress__model absolute-full q-linear-progress__model--${c.value} q-linear-progress__model--${i.value?`in`:``}determinate`),p=k(()=>({width:`${e.value*100}%`})),m=k(()=>`q-linear-progress__stripe absolute-${e.reverse?`right`:`left`} q-linear-progress__stripe--${c.value}`);return()=>{let n=[f(`div`,{class:l.value,style:s.value}),f(`div`,{class:d.value,style:u.value})];return e.stripe&&!i.value&&n.push(f(`div`,{class:m.value,style:p.value})),f(`div`,{class:o.value,style:a.value,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":1,"aria-valuenow":e.indeterminate||e.query?void 0:e.value},he(t.default,n))}}}),Zt=Ne({name:`QCard`,props:{...ze,tag:{type:String,default:`div`},square:Boolean,flat:Boolean,bordered:Boolean},setup(e,{slots:t}){let n=Re(),r=Be(e,n),i=k(()=>`q-card`+(r()?` q-card--dark q-dark`:``)+(e.bordered?` q-card--bordered`:``)+(e.square?` q-card--square no-border-radius`:``)+(e.flat?` q-card--flat no-shadow`:``));return()=>f(e.tag,{class:i.value},P(t.default))}});function Qt(e,t,n){let r;function i(){r!==void 0&&(Tt.remove(r),r=void 0)}return O(()=>{e.value&&i()}),{removeFromHistory:i,addToHistory(){r={condition:()=>n.value,handler:t},Tt.add(r)}}}var $t=[Element,String,Object],en=[null,document,document.body,document.scrollingElement,document.documentElement];function tn(e,t){let n=ye(t);if(n!==void 0&&n!==window&&!(n instanceof Element)&&!en.includes(n)&&(console.warn(`[Quasar] scroll-target: the specified value is not an Element nor a component with a root element; falling back to auto detection`),n=void 0),n===void 0){if(e==null)return window;n=e.closest(`.scroll,.scroll-y,.overflow-auto`)}return en.includes(n)?window:n}function nn(e){return e===window?window.scrollY:e.scrollTop}function rn(e){return e===window?window.scrollX:e.scrollLeft}function an(e,t,n=0,r){let i=r===void 0?performance.now():r,a=nn(e);if(n<=0){a!==t&&sn(e,t);return}requestAnimationFrame(r=>{let o=r-i,s=a+(t-a)/Math.max(o,n)*o;sn(e,s),s!==t&&an(e,t,n-o,r)})}function on(e,t,n=0,r){let i=r===void 0?performance.now():r,a=rn(e);if(n<=0){a!==t&&cn(e,t);return}requestAnimationFrame(r=>{let o=r-i,s=a+(t-a)/Math.max(o,n)*o;cn(e,s),s!==t&&on(e,t,n-o,r)})}function sn(e,t){if(e===window){window.scrollTo(window.scrollX,t);return}e.scrollTop=t}function cn(e,t){if(e===window){window.scrollTo(t,window.scrollY);return}e.scrollLeft=t}function ln(e,t,n){if(n){an(e,t,n);return}sn(e,t)}function un(e,t,n){if(n){on(e,t,n);return}cn(e,t)}var dn;function fn(){if(dn!==void 0)return dn;let e=document.createElement(`p`),t=document.createElement(`div`);_e(e,{width:`100%`,height:`200px`}),_e(t,{position:`absolute`,top:`0px`,left:`0px`,visibility:`hidden`,width:`200px`,height:`150px`,overflow:`hidden`}),t.append(e),document.body.append(t);let n=e.offsetWidth;t.style.overflow=`scroll`;let r=e.offsetWidth;return n===r&&(r=t.clientWidth),t.remove(),dn=n-r,dn}var pn=0,mn,hn,gn,_n=!1,vn,yn,bn=!1,xn,Sn=null,Cn=new Set;function wn(e){Cn.add(e)}function Tn(e){Cn.delete(e)}function En(e){_n||(_n=!0,requestAnimationFrame(()=>{_n=!1;let{height:t,scale:n}=e.target;if(Math.abs(n-1)>.01)return;let{clientHeight:r,scrollTop:i}=document.scrollingElement;(gn===void 0||t!==window.innerHeight)&&(gn=r-t,document.scrollingElement.scrollTop=i),i>gn&&(document.scrollingElement.scrollTop-=Math.ceil((i-gn)/8))}))}function Dn(e){let t=document.body;if(e===`add`){mn=rn(window),hn=nn(window),xn=window.location.pathname,bn=F.is.ios;let e=[`q-document--prevent-scroll`];bn?(vn=t.style.left,yn=t.style.top,t.style.left=`-${mn}px`,t.style.top=`-${hn}px`,e.push(`q-document--pin-body`)):(e.push(`q-document--clip-scroll`),window.innerWidth-document.documentElement.clientWidth>0&&e.push(`q-document--reserve-scrollbar`)),document.documentElement.classList.add(...e),document.qScrollPrevented=!0,bn&&(window.scrollTo(0,0),window.visualViewport?.addEventListener(`resize`,En,oe.passiveCapture),window.visualViewport?.addEventListener(`scroll`,En,oe.passiveCapture),window.scrollTo(0,0))}else bn&&(window.visualViewport?.removeEventListener(`resize`,En,oe.passiveCapture),window.visualViewport?.removeEventListener(`scroll`,En,oe.passiveCapture)),document.documentElement.classList.remove(`q-document--prevent-scroll`,`q-document--clip-scroll`,`q-document--reserve-scrollbar`,`q-document--pin-body`),document.qScrollPrevented=!1,bn&&(t.style.left=vn,t.style.top=yn),bn&&window.location.pathname===xn&&(rn(window)!==mn||nn(window)!==hn)?window.scrollTo(mn,hn):Cn.forEach(e=>{e()}),gn=void 0}function On(e){let t=`add`;if(e===!0){if(pn++,Sn!==null){clearTimeout(Sn),Sn=null;return}if(pn>1)return}else{if(pn===0||(pn--,pn>0))return;if(t=`remove`,bn&&F.is.nativeMobile){Sn!==null&&clearTimeout(Sn),Sn=setTimeout(()=>{Dn(t),Sn=null},100);return}}Dn(t)}function kn(){let e;return{preventBodyScroll(t){t!==e&&(e!==void 0||t)&&(e=t,On(t))}}}var An=[];function jn(e){An.at(-1)(e)}function Mn(e){An.push(e),An.length===1&&document.body.addEventListener(`focusin`,jn)}function Nn(e){let t=An.indexOf(e);t!==-1&&(An.splice(t,1),An.length===0&&document.body.removeEventListener(`focusin`,jn))}var Pn=0,Fn={standard:`fixed-full flex-center`,top:`fixed-top justify-center`,bottom:`fixed-bottom justify-center`,right:`fixed-right items-center`,left:`fixed-left items-center`},In={standard:[`scale`,`scale`],top:[`slide-down`,`slide-up`],bottom:[`slide-up`,`slide-down`],right:[`slide-left`,`slide-right`],left:[`slide-right`,`slide-left`]},Ln=Ne({name:`QDialog`,inheritAttrs:!1,props:{...Ke,...We,transitionShow:String,transitionHide:String,persistent:Boolean,autoClose:Boolean,allowFocusOutside:Boolean,noEscDismiss:Boolean,noBackdropDismiss:Boolean,noRouteDismiss:Boolean,noRefocus:Boolean,noFocus:Boolean,noShake:Boolean,seamless:Boolean,maximized:Boolean,fullWidth:Boolean,fullHeight:Boolean,square:Boolean,backdropFilter:String,position:{type:String,default:`standard`,validator:e=>[`standard`,`top`,`bottom`,`left`,`right`].includes(e)}},emits:[...nt,`shake`,`click`,`escapeKey`],setup(e,{slots:n,emit:r,attrs:i}){let a=T(),o=Re(),s=t(null),c=t(null),l=d(!1),u=d(!1),p=d(null),h=null,g=null,_=!1,v=!1,y=!1,b=k(()=>!e.persistent&&!e.noRouteDismiss&&!e.seamless),{preventBodyScroll:x}=kn(),{registerTransitionEnd:S}=Ue(e),{registerTick:C,removeTick:w}=tt(),{transitionProps:E,transitionStyle:D}=Ye(e,()=>In[e.position][0],()=>In[e.position][1]),ee=k(()=>D()+(e.backdropFilter===void 0?``:`;backdrop-filter:${e.backdropFilter};-webkit-backdrop-filter:${e.backdropFilter}`)),{showPortal:A,hidePortal:j,portalIsAccessible:te,renderPortal:M}=Xe(a,c,Ce,`dialog`),{hide:N}=et({showing:l,hideOnRouteChange:b,handleShow:fe,handleHide:pe,handleRouteChange:me,processOnMount:!0}),{addToHistory:ne,removeFromHistory:re}=Qt(l,N,b),ie=k(()=>`q-dialog__inner flex no-pointer-events q-dialog__inner--${e.maximized?`maximized`:`minimized`} q-dialog__inner--${e.position} ${Fn[e.position]}`+(u.value?` q-dialog__inner--animating`:``)+(p.value===null?``:` q-dialog__inner--keyboard`)+(e.fullWidth?` q-dialog__inner--fullwidth`:``)+(e.fullHeight?` q-dialog__inner--fullheight`:``)+(e.square?` q-dialog__inner--square`:``)),ae=k(()=>l.value&&!e.seamless),se=k(()=>e.autoClose?{onClick:be}:{}),ce=k(()=>`q-dialog fullscreen no-pointer-events q-dialog--${ae.value?`modal`:`seamless`}`);m(()=>e.maximized,e=>{l.value&&ye(e)}),m(ae,e=>{x(e),e?(Mn(Se),Ze(_e)):(Nn(Se),qe(_e))});function le(){let{offsetTop:e,height:t,scale:n}=window.visualViewport,{innerHeight:r}=window;if(Math.abs(n-1)>.01||r-t<1){p.value=null;return}let i=Math.round(e),a=Math.round(r-e-t),o=p.value;(o===null||o.top!==i||o.bottom!==a)&&(p.value={top:i,bottom:a,height:Math.round(t)})}function ue(e){let t=e?`addEventListener`:`removeEventListener`;y=e,window.visualViewport?.[t](`resize`,le,oe.passive),window.visualViewport?.[t](`scroll`,le,oe.passive),e&&window.visualViewport!==void 0?le():p.value=null}function de(){let t=p.value;return t===null?D():`${D()};--q-dialog-viewport-height:${t.height}px`+(e.position===`bottom`?``:`;top:${t.top}px`)+(e.position===`top`?``:`;bottom:${t.bottom}px`)}function fe(t){ne(),g=!e.noRefocus&&document.activeElement!==null?document.activeElement:null,ye(e.maximized),A(),u.value=!0,o.platform.is.ios&&ue(!0),e.noFocus?w():(document.activeElement?.blur(),C(F)),S(()=>{if(o.platform.is.ios){if(!e.seamless&&document.activeElement){let{top:e,bottom:t}=document.activeElement.getBoundingClientRect(),{innerHeight:n}=window,r=window.visualViewport?.height??n;e>0&&t>r/2&&(document.scrollingElement.scrollTop=Math.min(document.scrollingElement.scrollHeight-r,t>=n?1/0:Math.ceil(document.scrollingElement.scrollTop+t-r/2))),document.activeElement.scrollIntoView()}v=!0,c.value.click(),v=!1}A(!0),u.value=!1,r(`show`,t)})}function pe(e){if(w(),re(),ve(!0),u.value=!0,j(),g!==null){let t=(e?.type.indexOf(`key`)===0?g.closest(`[tabindex]:not([tabindex^="-"])`):void 0)||g;g=null,$e(()=>{t.isConnected&&t.focus({preventScroll:!0})})}S(()=>{j(!0),u.value=!1,r(`hide`,e)})}function me(){g=null}function F(e){$e(()=>{let t=c.value;if(t!==null&&t.contains!==void 0){if(e!==void 0){let n=t.querySelector(e);if(n!==null){n.focus({preventScroll:!0});return}}t.contains(document.activeElement)||(t=t.querySelector(`[autofocus][tabindex], [data-autofocus][tabindex]`)||t.querySelector(`[autofocus] [tabindex], [data-autofocus] [tabindex]`)||t.querySelector(`[autofocus], [data-autofocus]`)||t,t.focus({preventScroll:!0}))}})}function he(e){e&&typeof e.focus==`function`?e.focus({preventScroll:!0}):F(),r(`shake`);let t=c.value;t!==null&&(t.classList.remove(`q-animate--scale`),t.classList.add(`q-animate--scale`),h!==null&&clearTimeout(h),h=setTimeout(()=>{h=null,c.value!==null&&(t.classList.remove(`q-animate--scale`),F())},170))}function _e(t){e.seamless||(e.persistent||e.noEscDismiss?!e.maximized&&!e.noShake&&he():(r(`escapeKey`),N(t)))}function ve(t){h!==null&&(clearTimeout(h),h=null),(t||l.value)&&(ye(!1),y&&ue(!1),e.seamless||(x(!1),Nn(Se),qe(_e))),t||(g=null)}function ye(e){e?_||=(Pn<1&&document.body.classList.add(`q-body--dialog`),Pn++,!0):_&&=(Pn<2&&document.body.classList.remove(`q-body--dialog`),Pn--,!1)}function be(e){v||(N(e),r(`click`,e))}function xe(t){t.button===0&&(!e.persistent&&!e.noBackdropDismiss?N(t):e.noShake||he())}function Se(t){!e.allowFocusOutside&&te.value&&!Pe(c.value,t.target)&&!Ge(c.value,t.target)&&F(`[tabindex]:not([tabindex="-1"])`)}Object.assign(a.proxy,{focus:F,shake:he,__updateRefocusTarget(e){g=e||null},__getAriaModalEl:()=>ae.value?s.value:null}),O(ve);function Ce(){return f(`div`,{ref:s,role:`dialog`,"aria-modal":ae.value?`true`:`false`,...i,class:[ce.value,i.class]},[f(ge,{name:`q-transition--fade`,appear:!0},()=>ae.value?f(`div`,{class:`q-dialog__backdrop fixed-full`,style:ee.value,"aria-hidden":`true`,onMousedown:xe}):null),f(ge,E(),()=>l.value?f(`div`,{ref:c,class:ie.value,style:de(),tabindex:-1,...se.value},P(n.default)):null)])}return M}});function Rn(e){"@babel/helpers - typeof";return Rn=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Rn(e)}function zn(e,t){if(Rn(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(Rn(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Bn(e){var t=zn(e,`string`);return Rn(t)==`symbol`?t:t+``}function Vn(e,t,n){return(t=Bn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Hn=Ve(`migration`,()=>{let e=d({state:`idle`});async function t(){try{let t=await fetch(`/api/migration/status`);if(!t.ok)return;e.value=await t.json()}catch{}}function n(t){e.value={...t}}return{status:e,fetchInitial:t,update:n}}),Un=typeof window<`u`,Wn=(e,t=!1)=>t?Symbol.for(e):Symbol(e),Gn=(e,t,n)=>Kn({l:e,k:t,s:n}),Kn=e=>JSON.stringify(e).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`).replace(/\u0027/g,`\\u0027`),L=e=>typeof e==`number`&&isFinite(e),qn=e=>rr(e)===`[object Date]`,Jn=e=>rr(e)===`[object RegExp]`,Yn=e=>G(e)&&Object.keys(e).length===0,R=Object.assign,Xn=Object.create,z=(e=null)=>Xn(e),Zn,Qn=()=>Zn||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:z(),$n=Object.prototype.hasOwnProperty;function er(e,t){return $n.call(e,t)}var B=Array.isArray,V=e=>typeof e==`function`,H=e=>typeof e==`string`,U=e=>typeof e==`boolean`,W=e=>typeof e==`object`&&!!e,tr=e=>W(e)&&V(e.then)&&V(e.catch),nr=Object.prototype.toString,rr=e=>nr.call(e),G=e=>rr(e)===`[object Object]`,ir=e=>e==null?``:B(e)||G(e)&&e.toString===nr?JSON.stringify(e,null,2):String(e);function ar(e,t=``){return e.reduce((e,n,r)=>r===0?e+n:e+t+n,``)}function or(e,t){typeof console<`u`&&(console.warn(`[intlify] `+e),t&&console.warn(t.stack))}function sr(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/\//g,`/`).replace(/=/g,`=`)}function cr(e){return e.replace(/&(?![a-z0-9#]{2,6};)/gi,`&`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/</g,`<`).replace(/>/g,`>`)}var lr=/^javascript:/i,ur=/^(?:href|src|action|formaction)$/i,dr=/&#(?:x([0-9a-f]+)|(\d+));?/gi,fr=/&(?:Tab|NewLine);/g,pr=/:?/gi,mr=/[\u0000-\u0020\u007f-\u009f]/g,hr=/(?:^|[\s"'<>/])on\w+\s*=\s*["']?[^"'>]+["']?/i,gr=/(^|[\s"'<>/])on(\w+\s*=)/gi,_r=/(^|[\s"'<>/])((?:href|src|action|formaction)\s*=\s*)([^\s"'=<>`]+)/gi;function vr(e,t,n){let r=t||n;if(!r)return e;let i=Number.parseInt(r,t?16:10);return i<=127?String.fromCharCode(i):e}function yr(e){let t=e.replace(dr,vr).replace(fr,``).replace(pr,`:`).replace(mr,``);return lr.test(t)}function br(e){let t=/url\s*\(/gi,n=``,r=0,i;for(;(i=t.exec(e))!==null;){let a=i.index,o=t.lastIndex-1,s=o+1,c=1,l=null;for(;s<e.length;s++){let t=e[s];if(l){t===l&&(l=null);continue}if(t===`"`||t===`'`)l=t;else if(t===`(`)c++;else if(t===`)`&&(c--,c===0))break}if(c!==0)break;let u=e.slice(o+1,s).trim(),d=u.startsWith(`"`)&&u.endsWith(`"`)||u.startsWith(`'`)&&u.endsWith(`'`)?u.slice(1,-1).trim():u;n+=e.slice(r,a),n+=yr(d)?`url(about:blank)`:e.slice(a,s+1),r=s+1}return n+e.slice(r)}function xr(e,t){return ur.test(e)&&yr(t)?`about:blank`:cr(e.toLowerCase()===`style`?br(t):t)}function Sr(e){return e=e.replace(/([\w:-]+)\s*=\s*"([^"]*)"/g,(e,t,n)=>`${t}="${xr(t,n)}"`),e=e.replace(/([\w:-]+)\s*=\s*'([^']*)'/g,(e,t,n)=>`${t}='${xr(t,n)}'`),hr.test(e)&&(e=e.replace(gr,`$1on$2`)),e=e.replace(_r,(e,t,n,r)=>yr(r)?`${t}${n}about:blank`:e),e}var Cr=e=>!W(e)||B(e);function wr(e,t){if(Cr(e)||Cr(t))throw Error(`Invalid value`);let n=[{src:e,des:t}];for(;n.length;){let{src:e,des:t}=n.pop();Object.keys(e).forEach(r=>{if(r===`__proto__`)return;let i=e[r];if(B(i)){let e=[];e.length=i.length,t[r]=e,n.push({src:i,des:e})}else W(i)?((!W(t[r])||B(t[r]))&&(t[r]=z()),n.push({src:i,des:t[r]})):t[r]=i})}}function Tr(e,t,n){return{line:e,column:t,offset:n}}function Er(e,t,n){let r={start:e,end:t};return n!=null&&(r.source=n),r}var K={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16};K.EXPECTED_TOKEN,K.INVALID_TOKEN_IN_PLACEHOLDER,K.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,K.UNKNOWN_ESCAPE_SEQUENCE,K.INVALID_UNICODE_ESCAPE_SEQUENCE,K.UNBALANCED_CLOSING_BRACE,K.UNTERMINATED_CLOSING_BRACE,K.EMPTY_PLACEHOLDER,K.NOT_ALLOW_NEST_PLACEHOLDER,K.INVALID_LINKED_FORMAT,K.MUST_HAVE_MESSAGES_IN_PLURAL,K.UNEXPECTED_EMPTY_LINKED_MODIFIER,K.UNEXPECTED_EMPTY_LINKED_KEY,K.UNEXPECTED_LEXICAL_ANALYSIS,K.UNHANDLED_CODEGEN_NODE_TYPE,K.UNHANDLED_MINIFIER_NODE_TYPE;function Dr(e,t,n={}){let{domain:r,messages:i,args:a}=n,o=SyntaxError(String(e));return o.code=e,t&&(o.location=t),o.domain=r,o}function Or(e){throw e}var kr=` `,Ar=`\r`,jr=`
|
|
3
3
|
`,Mr=`\u2028`,Nr=`\u2029`;function Pr(e){let t=e,n=0,r=1,i=1,a=0,o=e=>t[e]===Ar&&t[e+1]===jr,s=e=>t[e]===jr,c=e=>t[e]===Nr,l=e=>t[e]===Mr,u=e=>o(e)||s(e)||c(e)||l(e),d=()=>n,f=()=>r,p=()=>i,m=()=>a,h=e=>o(e)||c(e)||l(e)?jr:t[e],g=()=>h(n),_=()=>h(n+a);function v(){return a=0,u(n)&&(r++,i=0),o(n)&&n++,n++,i++,t[n]}function y(){return o(n+a)&&a++,a++,t[n+a]}function b(){n=0,r=1,i=1,a=0}function x(e=0){a=e}function S(){let e=n+a;for(;e!==n;)v();a=0}return{index:d,line:f,column:p,peekOffset:m,charAt:h,currentChar:g,currentPeek:_,next:v,peek:y,reset:b,resetPeek:x,skipToPeek:S}}var Fr=void 0,Ir=`'`,Lr=`tokenizer`;function Rr(e,t={}){let n=t.location!==!1,r=Pr(e),i=()=>r.index(),a=()=>Tr(r.line(),r.column(),r.index()),o=a(),s=i(),c={currentType:13,offset:s,startLoc:o,endLoc:o,lastType:13,lastOffset:s,lastStartLoc:o,lastEndLoc:o,braceNest:0,inLinked:!1,text:``},l=()=>c,{onError:u}=t;function d(e,t,r,...i){let a=l();if(t.column+=r,t.offset+=r,u){let r=Dr(e,n?Er(a.startLoc,t):null,{domain:Lr,args:i});u(r)}}function f(e,t,r){e.endLoc=a(),e.currentType=t;let i={type:t};return n&&(i.loc=Er(e.startLoc,e.endLoc)),r!=null&&(i.value=r),i}let p=e=>f(e,13);function m(e,t){return e.currentChar()===t?(e.next(),t):(d(K.EXPECTED_TOKEN,a(),0,t),``)}function h(e){let t=``;for(;e.currentPeek()===kr||e.currentPeek()===jr;)t+=e.currentPeek(),e.peek();return t}function g(e){let t=h(e);return e.skipToPeek(),t}function _(e){if(e===Fr)return!1;let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t===95}function v(e){if(e===Fr)return!1;let t=e.charCodeAt(0);return t>=48&&t<=57}function y(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=_(e.currentPeek());return e.resetPeek(),r}function b(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=v(e.currentPeek()===`-`?e.peek():e.currentPeek());return e.resetPeek(),r}function x(e,t){let{currentType:n}=t;if(n!==2)return!1;h(e);let r=e.currentPeek()===Ir;return e.resetPeek(),r}function S(e,t){let{currentType:n}=t;if(n!==7)return!1;h(e);let r=e.currentPeek()===`.`;return e.resetPeek(),r}function C(e,t){let{currentType:n}=t;if(n!==8)return!1;h(e);let r=_(e.currentPeek());return e.resetPeek(),r}function w(e,t){let{currentType:n}=t;if(n!==7&&n!==11)return!1;h(e);let r=e.currentPeek()===`:`;return e.resetPeek(),r}function T(e,t){let{currentType:n}=t;if(n!==9)return!1;let r=()=>{let t=e.currentPeek();return t===`{`?_(e.peek()):t===`@`||t===`|`||t===`:`||t===`.`||t===kr||!t?!1:t===jr?(e.peek(),r()):D(e,!1)},i=r();return e.resetPeek(),i}function E(e){h(e);let t=e.currentPeek()===`|`;return e.resetPeek(),t}function D(e,t=!0){let n=(t=!1,r=``)=>{let i=e.currentPeek();return i===`{`||i===`@`||!i?t:i===`|`?r!==kr&&r!==jr:i===kr?(e.peek(),n(!0,kr)):i!==jr||(e.peek(),n(!0,jr))},r=n();return t&&e.resetPeek(),r}function O(e,t){let n=e.currentChar();if(n!==Fr)return t(n)?(e.next(),n):null}function ee(e){let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||t===95||t===36}function k(e){return O(e,ee)}function A(e){let t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||t===95||t===36||t===45}function j(e){return O(e,A)}function te(e){let t=e.charCodeAt(0);return t>=48&&t<=57}function M(e){return O(e,te)}function N(e){let t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}function ne(e){return O(e,N)}function re(e){let t=``,n=``;for(;t=M(e);)n+=t;return n}function ie(e){let t=``;for(;;){let n=e.currentChar();if(n===`\\`){let r=e.peek();r===`{`||r===`}`||r===`@`||r===`|`||r===`\\`?(t+=n+r,e.next(),e.next()):(e.resetPeek(),t+=n,e.next())}else if(n===`{`||n===`}`||n===`@`||n===`|`||!n)break;else if(n===kr||n===jr){if(D(e))t+=n,e.next();else if(E(e))break;else t+=n,e.next()}else t+=n,e.next()}return t}function ae(e){g(e);let t=``,n=``;for(;t=j(e);)n+=t;let r=e.currentChar();if(r&&r!==`}`&&r!==Fr&&r!==kr&&r!==jr&&r!==` `){let t=de(e);return d(K.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,n+t),n+t}return e.currentChar()===Fr&&d(K.UNTERMINATED_CLOSING_BRACE,a(),0),n}function oe(e){g(e);let t=``;return e.currentChar()===`-`?(e.next(),t+=`-${re(e)}`):t+=re(e),e.currentChar()===Fr&&d(K.UNTERMINATED_CLOSING_BRACE,a(),0),t}function se(e){return e!==Ir&&e!==jr}function ce(e){g(e),m(e,`'`);let t=``,n=``;for(;t=O(e,se);)n+=t===`\\`?le(e):t;let r=e.currentChar();return r===jr||r===Fr?(d(K.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),0),r===jr&&(e.next(),m(e,`'`)),n):(m(e,`'`),n)}function le(e){let t=e.currentChar();switch(t){case`\\`:case`'`:return e.next(),`\\${t}`;case`u`:return P(e,t,4);case`U`:return P(e,t,6);default:return d(K.UNKNOWN_ESCAPE_SEQUENCE,a(),0,t),``}}function P(e,t,n){m(e,t);let r=``;for(let i=0;i<n;i++){let n=ne(e);if(!n){d(K.INVALID_UNICODE_ESCAPE_SEQUENCE,a(),0,`\\${t}${r}${e.currentChar()}`);break}r+=n}return`\\${t}${r}`}function ue(e){return e!==`{`&&e!==`}`&&e!==kr&&e!==jr}function de(e){g(e);let t=``,n=``;for(;t=O(e,ue);)n+=t;return n}function fe(e){let t=``,n=``;for(;t=k(e);)n+=t;return n}function pe(e){let t=n=>{let r=e.currentChar();return r===`{`||r===`@`||r===`|`||r===`(`||r===`)`||!r||r===kr?n:(n+=r,e.next(),t(n))};return t(``)}function me(e){g(e);let t=m(e,`|`);return g(e),t}function F(e,t){let n=null;switch(e.currentChar()){case`{`:return t.braceNest>=1&&d(K.NOT_ALLOW_NEST_PLACEHOLDER,a(),0),e.next(),n=f(t,2,`{`),g(e),t.braceNest++,n;case`}`:return t.braceNest>0&&t.currentType===2&&d(K.EMPTY_PLACEHOLDER,a(),0),e.next(),n=f(t,3,`}`),t.braceNest--,t.braceNest>0&&g(e),t.inLinked&&t.braceNest===0&&(t.inLinked=!1),n;case`@`:return t.braceNest>0&&d(K.UNTERMINATED_CLOSING_BRACE,a(),0),n=he(e,t)||p(t),t.braceNest=0,n;default:{let r=!0,i=!0,o=!0;if(E(e))return t.braceNest>0&&d(K.UNTERMINATED_CLOSING_BRACE,a(),0),n=f(t,1,me(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(t.currentType===4||t.currentType===5||t.currentType===6))return d(K.UNTERMINATED_CLOSING_BRACE,a(),0),t.braceNest=0,ge(e,t);if(r=y(e,t))return n=f(t,4,ae(e)),g(e),n;if(i=b(e,t))return n=f(t,5,oe(e)),g(e),n;if(o=x(e,t))return n=f(t,6,ce(e)),g(e),n;if(!r&&!i&&!o)return n=f(t,12,de(e)),d(K.INVALID_TOKEN_IN_PLACEHOLDER,a(),0,n.value),g(e),n;break}}return n}function he(e,t){let{currentType:n}=t,r=null,i=e.currentChar();switch((n===7||n===8||n===11||n===9)&&(i===jr||i===kr)&&d(K.INVALID_LINKED_FORMAT,a(),0),i){case`@`:return e.next(),r=f(t,7,`@`),t.inLinked=!0,r;case`.`:return g(e),e.next(),f(t,8,`.`);case`:`:return g(e),e.next(),f(t,9,`:`);default:return E(e)?(r=f(t,1,me(e)),t.braceNest=0,t.inLinked=!1,r):S(e,t)||w(e,t)?(g(e),he(e,t)):C(e,t)?(g(e),f(t,11,fe(e))):T(e,t)?(g(e),i===`{`?F(e,t)||r:f(t,10,pe(e))):(n===7&&d(K.INVALID_LINKED_FORMAT,a(),0),t.braceNest=0,t.inLinked=!1,ge(e,t))}}function ge(e,t){let n={type:13};if(t.braceNest>0)return F(e,t)||p(t);if(t.inLinked)return he(e,t)||p(t);switch(e.currentChar()){case`{`:return F(e,t)||p(t);case`}`:return d(K.UNBALANCED_CLOSING_BRACE,a(),0),e.next(),f(t,3,`}`);case`@`:return he(e,t)||p(t);default:if(E(e))return n=f(t,1,me(e)),t.braceNest=0,t.inLinked=!1,n;if(D(e))return f(t,0,ie(e))}return n}function _e(){let{currentType:e,offset:t,startLoc:n,endLoc:o}=c;return c.lastType=e,c.lastOffset=t,c.lastStartLoc=n,c.lastEndLoc=o,c.offset=i(),c.startLoc=a(),r.currentChar()===Fr?f(c,13):ge(r,c)}return{nextToken:_e,currentOffset:i,currentPosition:a,context:l}}var zr=`parser`,Br=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g,Vr=/\\([\\@{}|])/g;function Hr(e,t){return t}function Ur(e,t,n){switch(e){case`\\\\`:return`\\`;case`\\'`:return`'`;default:{let e=parseInt(t||n,16);return e<=55295||e>=57344?String.fromCodePoint(e):`�`}}}function Wr(e={}){let t=e.location!==!1,{onError:n}=e;function r(e,r,i,a,...o){let s=e.currentPosition();if(s.offset+=a,s.column+=a,n){let e=Dr(r,t?Er(i,s):null,{domain:zr,args:o});n(e)}}function i(e,n,r){let i={type:e};return t&&(i.start=n,i.end=n,i.loc={start:r,end:r}),i}function a(e,n,r,i){t&&(e.end=n,e.loc&&(e.loc.end=r))}function o(e,t){let n=e.context(),r=i(3,n.offset,n.startLoc);return r.value=t.replace(Vr,Hr),a(r,e.currentOffset(),e.currentPosition()),r}function s(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(5,n,r);return o.index=parseInt(t,10),e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function c(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(4,n,r);return o.key=t,e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function l(e,t){let{lastOffset:n,lastStartLoc:r}=e.context(),o=i(9,n,r);return o.value=t.replace(Br,Ur),e.nextToken(),a(o,e.currentOffset(),e.currentPosition()),o}function u(e){let t=e.nextToken(),n=e.context(),{lastOffset:o,lastStartLoc:s}=n,c=i(8,o,s);return t.type===11?(t.value??r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,n.lastStartLoc,0,Gr(t)),c.value=t.value||``,a(c,e.currentOffset(),e.currentPosition()),{node:c}):(r(e,K.UNEXPECTED_EMPTY_LINKED_MODIFIER,n.lastStartLoc,0),c.value=``,a(c,o,s),{nextConsumeToken:t,node:c})}function d(e,t){let n=e.context(),r=i(7,n.offset,n.startLoc);return r.value=t,a(r,e.currentOffset(),e.currentPosition()),r}function f(e){let t=e.context(),n=i(6,t.offset,t.startLoc),o=e.nextToken();if(o.type===8){let t=u(e);n.modifier=t.node,o=t.nextConsumeToken||e.nextToken()}switch(o.type!==9&&r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Gr(o)),o=e.nextToken(),o.type===2&&(o=e.nextToken()),o.type){case 10:o.value??r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Gr(o)),n.key=d(e,o.value||``);break;case 4:o.value??r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Gr(o)),n.key=c(e,o.value||``);break;case 5:o.value??r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Gr(o)),n.key=s(e,o.value||``);break;case 6:o.value??r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Gr(o)),n.key=l(e,o.value||``);break;default:{r(e,K.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc,0);let s=e.context(),c=i(7,s.offset,s.startLoc);return c.value=``,a(c,s.offset,s.startLoc),n.key=c,a(n,s.offset,s.startLoc),{nextConsumeToken:o,node:n}}}return a(n,e.currentOffset(),e.currentPosition()),{node:n}}function p(e){let t=e.context(),n=i(2,t.currentType===1?e.currentOffset():t.offset,t.currentType===1?t.endLoc:t.startLoc);n.items=[];let u=null;do{let i=u||e.nextToken();switch(u=null,i.type){case 0:i.value??r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Gr(i)),n.items.push(o(e,i.value||``));break;case 5:i.value??r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Gr(i)),n.items.push(s(e,i.value||``));break;case 4:i.value??r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Gr(i)),n.items.push(c(e,i.value||``));break;case 6:i.value??r(e,K.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,0,Gr(i)),n.items.push(l(e,i.value||``));break;case 7:{let t=f(e);n.items.push(t.node),u=t.nextConsumeToken||null;break}}}while(t.currentType!==13&&t.currentType!==1);return a(n,t.currentType===1?t.lastOffset:e.currentOffset(),t.currentType===1?t.lastEndLoc:e.currentPosition()),n}function m(e,t,n,o){let s=e.context(),c=o.items.length===0,l=i(1,t,n);l.cases=[],l.cases.push(o);do{let t=p(e);c||=t.items.length===0,l.cases.push(t)}while(s.currentType!==13);return c&&r(e,K.MUST_HAVE_MESSAGES_IN_PLURAL,n,0),a(l,e.currentOffset(),e.currentPosition()),l}function h(e){let t=e.context(),{offset:n,startLoc:r}=t,i=p(e);return t.currentType===13?i:m(e,n,r,i)}function g(n){let o=Rr(n,R({},e)),s=o.context(),c=i(0,s.offset,s.startLoc);return t&&c.loc&&(c.loc.source=n),c.body=h(o),e.onCacheKey&&(c.cacheKey=e.onCacheKey(n)),s.currentType!==13&&r(o,K.UNEXPECTED_LEXICAL_ANALYSIS,s.lastStartLoc,0,n[s.offset]||``),a(c,o.currentOffset(),o.currentPosition()),c}return{parse:g}}function Gr(e){if(e.type===13)return`EOF`;let t=(e.value||``).replace(/\r?\n/gu,`\\n`);return t.length>10?t.slice(0,9)+`…`:t}function Kr(e,t={}){let n={ast:e,helpers:new Set};return{context:()=>n,helper:e=>(n.helpers.add(e),e)}}function qr(e,t){for(let n=0;n<e.length;n++)Jr(e[n],t)}function Jr(e,t){switch(e.type){case 1:qr(e.cases,t),t.helper(`plural`);break;case 2:qr(e.items,t);break;case 6:Jr(e.key,t),t.helper(`linked`),t.helper(`type`);break;case 5:t.helper(`interpolate`),t.helper(`list`);break;case 4:t.helper(`interpolate`),t.helper(`named`)}}function Yr(e,t={}){let n=Kr(e);n.helper(`normalize`),e.body&&Jr(e.body,n);let r=n.context();e.helpers=Array.from(r.helpers)}function Xr(e){let t=e.body;return t.type===2?Zr(t):t.cases.forEach(e=>Zr(e)),e}function Zr(e){if(e.items.length===1){let t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{let t=[];for(let n=0;n<e.items.length;n++){let r=e.items[n];if(r.type!==3&&r.type!==9||r.value==null)break;t.push(r.value)}if(t.length===e.items.length){e.static=ar(t);for(let t=0;t<e.items.length;t++){let n=e.items[t];(n.type===3||n.type===9)&&delete n.value}}}}function Qr(e){switch(e.t=e.type,e.type){case 0:{let t=e;Qr(t.body),t.b=t.body,delete t.body;break}case 1:{let t=e,n=t.cases;for(let e=0;e<n.length;e++)Qr(n[e]);t.c=n,delete t.cases;break}case 2:{let t=e,n=t.items;for(let e=0;e<n.length;e++)Qr(n[e]);t.i=n,delete t.items,t.static&&(t.s=t.static,delete t.static);break}case 3:case 9:case 8:case 7:{let t=e;t.value&&(t.v=t.value,delete t.value);break}case 6:{let t=e;Qr(t.key),t.k=t.key,delete t.key,t.modifier&&(Qr(t.modifier),t.m=t.modifier,delete t.modifier);break}case 5:{let t=e;t.i=t.index,delete t.index;break}case 4:{let t=e;t.k=t.key,delete t.key;break}}delete e.type}function $r(e,t){let{filename:n,breakLineCode:r,needIndent:i}=t,a=t.location!==!1,o={filename:n,code:``,column:1,line:1,offset:0,map:void 0,breakLineCode:r,needIndent:i,indentLevel:0};a&&e.loc&&(o.source=e.loc.source);let s=()=>o;function c(e,t){o.code+=e}function l(e,t=!0){let n=t?r:``;c(i?n+` `.repeat(e):n)}function u(e=!0){let t=++o.indentLevel;e&&l(t)}function d(e=!0){let t=--o.indentLevel;e&&l(t)}function f(){l(o.indentLevel)}return{context:s,push:c,indent:u,deindent:d,newline:f,helper:e=>`_${e}`,needIndent:()=>o.needIndent}}function ei(e,t){let{helper:n}=e;e.push(`${n(`linked`)}(`),ii(e,t.key),t.modifier?(e.push(`, `),ii(e,t.modifier),e.push(`, _type`)):e.push(`, undefined, _type`),e.push(`)`)}function ti(e,t){let{helper:n,needIndent:r}=e;e.push(`${n(`normalize`)}([`),e.indent(r());let i=t.items.length;for(let n=0;n<i&&(ii(e,t.items[n]),n!==i-1);n++)e.push(`, `);e.deindent(r()),e.push(`])`)}function ni(e,t){let{helper:n,needIndent:r}=e;if(t.cases.length>1){e.push(`${n(`plural`)}([`),e.indent(r());let i=t.cases.length;for(let n=0;n<i&&(ii(e,t.cases[n]),n!==i-1);n++)e.push(`, `);e.deindent(r()),e.push(`])`)}}function ri(e,t){t.body?ii(e,t.body):e.push(`null`)}function ii(e,t){let{helper:n}=e;switch(t.type){case 0:ri(e,t);break;case 1:ni(e,t);break;case 2:ti(e,t);break;case 6:ei(e,t);break;case 8:e.push(JSON.stringify(t.value),t);break;case 7:e.push(JSON.stringify(t.value),t);break;case 5:e.push(`${n(`interpolate`)}(${n(`list`)}(${t.index}))`,t);break;case 4:e.push(`${n(`interpolate`)}(${n(`named`)}(${JSON.stringify(t.key)}))`,t);break;case 9:e.push(JSON.stringify(t.value),t);break;case 3:e.push(JSON.stringify(t.value),t)}}var ai=(e,t={})=>{let n=H(t.mode)?t.mode:`normal`,r=H(t.filename)?t.filename:`message.intl`;t.sourceMap;let i=t.breakLineCode==null?n===`arrow`?`;`:`
|
|
4
4
|
`:t.breakLineCode,a=t.needIndent?t.needIndent:n!==`arrow`,o=e.helpers||[],s=$r(e,{filename:r,breakLineCode:i,needIndent:a});s.push(n===`normal`?`function __msg__ (ctx) {`:`(ctx) => {`),s.indent(a),o.length>0&&(s.push(`const { ${ar(o.map(e=>`${e}: _${e}`),`, `)} } = ctx`),s.newline()),s.push(`return `),ii(s,e),s.deindent(a),s.push(`}`),delete e.helpers;let{code:c,map:l}=s.context();return{ast:e,code:c,map:l?l.toJSON():void 0}};function oi(e,t={}){let n=R({},t),r=!!n.jit,i=!!n.minify,a=n.optimize==null||n.optimize,o=Wr(n).parse(e);return r?(a&&Xr(o),i&&Qr(o),{ast:o,code:``}):(Yr(o,n),ai(o,n))}function si(){typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(Qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function ci(e){return W(e)&&vi(e)===0&&(er(e,`b`)||er(e,`body`))}var li=[`b`,`body`];function ui(e){return Ti(e,li)}var di=[`c`,`cases`];function fi(e){return Ti(e,di,[])}var pi=[`s`,`static`];function mi(e){return Ti(e,pi)}var hi=[`i`,`items`];function gi(e){return Ti(e,hi,[])}var _i=[`t`,`type`];function vi(e){return Ti(e,_i)}var yi=[`v`,`value`];function bi(e,t){let n=Ti(e,yi);if(n!=null)return n;throw Di(t)}var xi=[`m`,`modifier`];function Si(e){return Ti(e,xi)}var Ci=[`k`,`key`];function wi(e){let t=Ti(e,Ci);if(t)return t;throw Di(6)}function Ti(e,t,n){for(let n=0;n<t.length;n++){let r=t[n];if(er(e,r)&&e[r]!=null)return e[r]}return n}var Ei=[...li,...di,...pi,...hi,...Ci,...xi,...yi,..._i];function Di(e){return Error(`unhandled node type: ${e}`)}function Oi(e){return t=>ki(t,e)}function ki(e,t){let n=ui(t);if(n==null)throw Di(0);if(vi(n)===1){let t=fi(n);return e.plural(t.reduce((t,n)=>[...t,Ai(e,n)],[]))}return Ai(e,n)}function Ai(e,t){let n=mi(t);if(n!=null)return e.type===`text`?n:e.normalize([n]);{let n=gi(t).reduce((t,n)=>[...t,ji(e,n)],[]);return e.normalize(n)}}function ji(e,t){let n=vi(t);switch(n){case 3:return bi(t,n);case 9:return bi(t,n);case 4:{let r=t;if(er(r,`k`)&&r.k)return e.interpolate(e.named(r.k));if(er(r,`key`)&&r.key)return e.interpolate(e.named(r.key));throw Di(n)}case 5:{let r=t;if(er(r,`i`)&&L(r.i))return e.interpolate(e.list(r.i));if(er(r,`index`)&&L(r.index))return e.interpolate(e.list(r.index));throw Di(n)}case 6:{let n=t,r=Si(n),i=wi(n);return e.linked(ji(e,i),r?ji(e,r):void 0,e.type)}case 7:return bi(t,n);case 8:return bi(t,n);default:throw Error(`unhandled node on format message part: ${n}`)}}var Mi=e=>e,Ni=z();function Pi(e,t={}){let n=!1,r=t.onError||Or;return t.onError=e=>{n=!0,r(e)},{...oi(e,t),detectError:n}}function Fi(e,t){if(!__INTLIFY_DROP_MESSAGE_COMPILER__&&H(e)){U(t.warnHtmlMessage)&&t.warnHtmlMessage;let n=(t.onCacheKey||Mi)(e),r=Ni[n];if(r)return r;let{ast:i,detectError:a}=Pi(e,{...t,location:!1,jit:!0}),o=Oi(i);return a?o:Ni[n]=o}{let t=e.cacheKey;return t?Ni[t]||(Ni[t]=Oi(e)):Oi(e)}}var Ii={INVALID_ARGUMENT:17,INVALID_DATE_ARGUMENT:18,INVALID_ISO_DATE_ARGUMENT:19,NOT_SUPPORT_NON_STRING_MESSAGE:20,NOT_SUPPORT_LOCALE_PROMISE_VALUE:21,NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:22,NOT_SUPPORT_LOCALE_TYPE:23};function Li(e){return Dr(e,null,void 0)}Ii.INVALID_ARGUMENT,Ii.INVALID_DATE_ARGUMENT,Ii.INVALID_ISO_DATE_ARGUMENT,Ii.NOT_SUPPORT_NON_STRING_MESSAGE,Ii.NOT_SUPPORT_LOCALE_PROMISE_VALUE,Ii.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION,Ii.NOT_SUPPORT_LOCALE_TYPE;function Ri(e,t){return t.locale==null?Bi(e.locale):Bi(t.locale)}var zi;function Bi(e){if(H(e))return e;if(V(e)){if(e.resolvedOnce&&zi!=null)return zi;if(e.constructor.name===`Function`){let t=e();if(tr(t))throw Li(Ii.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return zi=t}throw Li(Ii.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}throw Li(Ii.NOT_SUPPORT_LOCALE_TYPE)}function Vi(e,t,n){return[...new Set([n,...B(t)?t:W(t)?Object.keys(t).filter(e=>e!=="default"):H(t)?[t]:[n]])]}function Hi(e,t,n){let r=H(n)?n:ia,i=e;i.__localeChainCache||=new Map;let a=Kn(t),o=i.__localeChainCache.get(r);o||(o=new Map,i.__localeChainCache.set(r,o));let s=o.get(a);if(s)return s;let c=[],l=[n];for(;B(l);)l=Ui(c,l,t);let u=B(t)||!G(t)?t:t.default?t.default:null;return l=H(u)?[u]:u,B(l)&&Ui(c,l,!1),o.set(a,c),c}function Ui(e,t,n){let r=!0;for(let i=0;i<t.length&&U(r);i++){let a=t[i];H(a)&&(r=Wi(e,t[i],n))}return r}function Wi(e,t,n){let r,i=t.split(`-`);do r=Gi(e,i.join(`-`),n),i.splice(-1,1);while(i.length&&r===!0);return r}function Gi(e,t,n){let r=!1;if(!e.includes(t)&&(r=!0,t)){r=t[t.length-1]!==`!`;let i=t.replace(/!/g,``);e.push(i),(B(n)||G(n))&&n[i]&&(r=n[i])}return r}var Ki=[];Ki[0]={w:[0],i:[3,0],"[":[4],o:[7]},Ki[1]={w:[1],".":[2],"[":[4],o:[7]},Ki[2]={w:[2],i:[3,0],0:[3,0]},Ki[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]},Ki[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]},Ki[5]={"'":[4,0],o:8,l:[5,0]},Ki[6]={'"':[4,0],o:8,l:[6,0]};var qi=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function Ji(e){return qi.test(e)}function Yi(e){let t=e.charCodeAt(0);return t===e.charCodeAt(e.length-1)&&(t===34||t===39)?e.slice(1,-1):e}function Xi(e){if(e==null)return`o`;switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return`i`;case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return`w`}return`i`}function Zi(e){let t=e.trim();return e.charAt(0)===`0`&&isNaN(parseInt(e))?!1:Ji(t)?Yi(t):`*`+t}function Qi(e){let t=[],n=-1,r=0,i=0,a,o,s,c,l,u,d,f=[];f[0]=()=>{o===void 0?o=s:o+=s},f[1]=()=>{o!==void 0&&(t.push(o),o=void 0)},f[2]=()=>{f[0](),i++},f[3]=()=>{if(i>0)i--,r=4,f[0]();else{if(i=0,o===void 0||(o=Zi(o),o===!1))return!1;f[1]()}};function p(){let t=e[n+1];if(r===5&&t===`'`||r===6&&t===`"`)return n++,s=`\\`+t,f[0](),!0}for(;r!==null;)if(n++,a=e[n],!(a===`\\`&&p())){if(c=Xi(a),d=Ki[r],l=d[c]||d.l||8,l===8||(r=l[0],l[1]!==void 0&&(u=f[l[1]],u&&(s=a,u()===!1))))return;if(r===7)return t}}var $i=new Map;function ea(e,t){return W(e)?e[t]:null}function ta(e,t){if(!W(e))return null;let n=$i.get(t);if(n||(n=Qi(t),n&&$i.set(t,n)),!n)return null;let r=n.length,i=e,a=0;for(;a<r;){let e=n[a];if(Ei.includes(e)&&ci(i)||!W(i)||!er(i,e))return null;let t=i[e];if(t===void 0||V(i))return null;i=t,a++}return i}var na={NOT_FOUND_KEY:1,FALLBACK_TO_TRANSLATE:2,CANNOT_FORMAT_NUMBER:3,FALLBACK_TO_NUMBER_FORMAT:4,CANNOT_FORMAT_DATE:5,FALLBACK_TO_DATE_FORMAT:6,EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:7,INVALID_NUMBER_ARGUMENT:8,INVALID_DATE_ARGUMENT:9};na.NOT_FOUND_KEY,na.FALLBACK_TO_TRANSLATE,na.CANNOT_FORMAT_NUMBER,na.FALLBACK_TO_NUMBER_FORMAT,na.CANNOT_FORMAT_DATE,na.FALLBACK_TO_DATE_FORMAT,na.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER,na.INVALID_NUMBER_ARGUMENT,na.INVALID_DATE_ARGUMENT;var ra=`11.4.10`,ia=`en-US`,aa=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function oa(){return{upper:(e,t)=>t===`text`&&H(e)?e.toUpperCase():t===`vnode`&&W(e)&&`__v_isVNode`in e?e.children.toUpperCase():e,lower:(e,t)=>t===`text`&&H(e)?e.toLowerCase():t===`vnode`&&W(e)&&`__v_isVNode`in e?e.children.toLowerCase():e,capitalize:(e,t)=>t===`text`&&H(e)?aa(e):t===`vnode`&&W(e)&&`__v_isVNode`in e?aa(e.children):e}}var sa;function ca(e){sa=e}var la;function ua(e){la=e}var da;function fa(e){da=e}var pa=null,ma=e=>{pa=e},ha=()=>pa,ga=0;function _a(e={}){let t=V(e.onWarn)?e.onWarn:or,n=H(e.version)?e.version:ra,r=H(e.locale)||V(e.locale)?e.locale:ia,i=V(r)?ia:r,a=B(e.fallbackLocale)||G(e.fallbackLocale)||H(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:i,o=G(e.messages)?e.messages:va(i),s=G(e.datetimeFormats)?e.datetimeFormats:va(i),c=G(e.numberFormats)?e.numberFormats:va(i),l=R(z(),e.modifiers,oa()),u=e.pluralRules||z(),d=V(e.missing)?e.missing:null,f=U(e.missingWarn)||Jn(e.missingWarn)?e.missingWarn:!0,p=U(e.fallbackWarn)||Jn(e.fallbackWarn)?e.fallbackWarn:!0,m=!!e.fallbackFormat,h=!!e.unresolving,g=V(e.postTranslation)?e.postTranslation:null,_=G(e.processor)?e.processor:null,v=!U(e.warnHtmlMessage)||e.warnHtmlMessage,y=!!e.escapeParameter,b=V(e.messageCompiler)?e.messageCompiler:sa,x=V(e.messageResolver)?e.messageResolver:la||ea,S=V(e.localeFallbacker)?e.localeFallbacker:da||Vi,C=W(e.fallbackContext)?e.fallbackContext:void 0,w=e,T=W(w.__datetimeFormatters)?w.__datetimeFormatters:new Map,E=W(w.__numberFormatters)?w.__numberFormatters:new Map,D=W(w.__meta)?w.__meta:{};ga++;let O={version:n,cid:ga,locale:r,fallbackLocale:a,messages:o,modifiers:l,pluralRules:u,missing:d,missingWarn:f,fallbackWarn:p,fallbackFormat:m,unresolving:h,postTranslation:g,processor:_,warnHtmlMessage:v,escapeParameter:y,messageCompiler:b,messageResolver:x,localeFallbacker:S,fallbackContext:C,onWarn:t,__meta:D};return O.datetimeFormats=s,O.numberFormats=c,O.__datetimeFormatters=T,O.__numberFormatters=E,O}var va=e=>({[e]:z()});function ya(e,t,n,r,i){let{missing:a,onWarn:o}=e;if(a!==null){let r=a(e,n,t,i);return H(r)?r:t}return t}function ba(e,t,n){let r=e;r.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function xa(e,t){return e!==t&&e.split(`-`)[0]===t.split(`-`)[0]}function Sa(e,t){let n=t.indexOf(e);if(n===-1)return!1;for(let r=n+1;r<t.length;r++)if(xa(e,t[r]))return!0;return!1}function Ca(e,t,n,r,i,a,o){let{fallbackLocale:s,localeFallbacker:c,onWarn:l}=e,u=c(e,s,n);for(let n=0;n<u.length;n++){let a=u[n],s=(r[a]||{})[t];if(G(s)&&H(a))return a;ya(e,t,a,i,o)}return null}function wa(e,t,n){let r=`${e}__${t}`;return G(n)&&!Yn(n)&&(r=`${r}__${JSON.stringify(n)}`),r}function Ta(e,t,n){for(let r in n){let n=`${t}__${r}`;for(let t of e.keys())(t===n||t.startsWith(`${n}__`))&&e.delete(t)}}function Ea(e,t,n,r){let[,i,a,o]=e,s=n;return H(i)?t.key=i:G(i)&&Object.keys(i).forEach(e=>{r.includes(e)?s[e]=i[e]:t[e]=i[e]}),H(a)?t.locale=a:G(a)&&(s=a),G(o)&&(s=o),s}var Da=typeof Intl<`u`;Da&&Intl.DateTimeFormat,Da&&Intl.NumberFormat;function Oa(e,...t){let{datetimeFormats:n,unresolving:r,onWarn:i}=e,{__datetimeFormatters:a}=e;if(!H(t[0])&&!qn(t[0])&&!L(t[0]))return``;let[o,s,c,l]=Aa(...t),u=U(c.missingWarn)?c.missingWarn:e.missingWarn,d=U(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=!!c.part,p=Ri(e,c);if(!H(o)||o===``){let e=new Intl.DateTimeFormat(p.replace(/!/g,``),l);return f?e.formatToParts(s):e.format(s)}let m=Ca(e,o,p,n,u,d,`datetime format`);if(!H(m))return r?-1:o;let h=n[m][o],g=wa(m,o,l),_=a.get(g);return _||(_=new Intl.DateTimeFormat(m,R({},h,l)),a.set(g,_)),f?_.formatToParts(s):_.format(s)}var ka=[`localeMatcher`,`weekday`,`era`,`year`,`month`,`day`,`hour`,`minute`,`second`,`timeZoneName`,`formatMatcher`,`hour12`,`timeZone`,`dateStyle`,`timeStyle`,`calendar`,`dayPeriod`,`numberingSystem`,`hourCycle`,`fractionalSecondDigits`];function Aa(...e){let[t]=e,n=z(),r=z(),i;if(H(t)){let e=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!e)throw Li(Ii.INVALID_ISO_DATE_ARGUMENT);let n=e[3]?e[3].trim().startsWith(`T`)?`${e[1].trim()}${e[3].trim()}`:`${e[1].trim()}T${e[3].trim()}`:e[1].trim();i=new Date(n);try{i.toISOString()}catch{throw Li(Ii.INVALID_ISO_DATE_ARGUMENT)}}else if(qn(t)){if(isNaN(t.getTime()))throw Li(Ii.INVALID_DATE_ARGUMENT);i=t}else if(L(t))i=t;else throw Li(Ii.INVALID_ARGUMENT);let a=Ea(e,n,r,ka);return[n.key||``,i,n,a]}function ja(e,t,n){Ta(e.__datetimeFormatters,t,n)}function Ma(e,...t){let{numberFormats:n,unresolving:r,onWarn:i}=e,{__numberFormatters:a}=e;if(!L(t[0]))return``;let[o,s,c,l]=Pa(...t),u=U(c.missingWarn)?c.missingWarn:e.missingWarn,d=U(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,f=!!c.part,p=Ri(e,c);if(!H(o)||o===``){let e=new Intl.NumberFormat(p.replace(/!/g,``),l);return f?e.formatToParts(s):e.format(s)}let m=Ca(e,o,p,n,u,d,`number format`);if(!H(m))return r?-1:o;let h=n[m][o],g=wa(m,o,l),_=a.get(g);return _||(_=new Intl.NumberFormat(m,R({},h,l)),a.set(g,_)),f?_.formatToParts(s):_.format(s)}var Na=[`localeMatcher`,`style`,`currency`,`currencyDisplay`,`currencySign`,`useGrouping`,`minimumIntegerDigits`,`minimumFractionDigits`,`maximumFractionDigits`,`minimumSignificantDigits`,`maximumSignificantDigits`,`compactDisplay`,`notation`,`signDisplay`,`unit`,`unitDisplay`,`roundingMode`,`roundingPriority`,`roundingIncrement`,`trailingZeroDisplay`];function Pa(...e){let[t]=e,n=z(),r=z();if(!L(t))throw Li(Ii.INVALID_ARGUMENT);let i=t,a=Ea(e,n,r,Na);return[n.key||``,i,n,a]}function Fa(e,t,n){Ta(e.__numberFormatters,t,n)}var Ia=e=>e,La=e=>``,Ra=`text`,za=e=>e.length===0?``:ar(e),Ba=ir;function Va(e,t){return e=Math.abs(e),t===2?e===1?0:1:Math.min(e,2)}function Ha(e){let t=L(e.pluralIndex)?e.pluralIndex:-1;return L(e.named?.count)?e.named.count:L(e.named?.n)?e.named.n:t}function Ua(e={}){let t=e.locale,n=Ha(e),r=H(t)&&V(e.pluralRules?.[t])?e.pluralRules[t]:Va,i=r===Va?void 0:Va,a=e=>e[r(n,e.length,i)],o=e.list||[],s=e=>o[e],c=e.named||z();L(e.pluralIndex)&&(c.count||=e.pluralIndex,c.n||=e.pluralIndex);let l=e=>c[e];function u(t,n){return(V(e.messages)?e.messages(t,!!n):W(e.messages)?e.messages[t]:!1)||(e.parent?e.parent.message(t):La)}let d=t=>e.modifiers?e.modifiers[t]:Ia,f=V(e.processor?.normalize)?e.processor.normalize:za,p=V(e.processor?.interpolate)?e.processor.interpolate:Ba,m={list:s,named:l,plural:a,linked:(e,...t)=>{let[n,r]=t,i=`text`,a=``;t.length===1?W(n)?(a=n.modifier||a,i=n.type||i):H(n)&&(a=n||a):t.length===2&&(H(n)&&(a=n||a),H(r)&&(i=r||i));let o=u(e,!0)(m),s=o===``||o===void 0?e:o,c=i===`vnode`&&B(s)&&a?s[0]:s;return a?d(a)(c,i):c},message:u,type:H(e.processor?.type)?e.processor.type:Ra,interpolate:p,normalize:f,values:R(z(),o,c)};return m}var Wa=()=>``,Ga=e=>V(e);function Ka(e,...t){let{fallbackFormat:n,postTranslation:r,unresolving:i,messageCompiler:a,fallbackLocale:o,messages:s}=e,[c,l]=Za(...t),u=U(l.missingWarn)?l.missingWarn:e.missingWarn,d=U(l.fallbackWarn)?l.fallbackWarn:e.fallbackWarn,f=U(l.escapeParameter)?l.escapeParameter:e.escapeParameter,p=!!l.resolvedMessage,m=H(l.default)||U(l.default)?U(l.default)?a?c:()=>c:l.default:n?a?c:()=>c:null,h=n||m!=null&&(H(m)||V(m)),g=Ri(e,l);f&&qa(l);let[_,v,y]=p?[c,g,s[g]||z()]:Ja(e,c,g,o,d,u),b=_,x=c;if(!p&&!(H(b)||ci(b)||Ga(b))&&h&&(b=m,x=b),!p&&(!(H(b)||ci(b)||Ga(b))||!H(v)))return i?-1:c;let S=!1,C=Ga(b)?b:Ya(e,c,v,b,x,()=>{S=!0});if(S)return b;let w=Xa(e,C,Ua($a(e,v,y,l))),T=r?r(w,c):w;return f&&H(T)&&(T=Sr(T)),T}function qa(e){B(e.list)?e.list=e.list.map(e=>H(e)?sr(e):e):W(e.named)&&Object.keys(e.named).forEach(t=>{H(e.named[t])&&(e.named[t]=sr(e.named[t]))})}function Ja(e,t,n,r,i,a){let{messages:o,onWarn:s,messageResolver:c,localeFallbacker:l}=e,u=l(e,r,n),d=z(),f,p=null;for(let n=0;n<u.length&&(f=u[n],d=o[f]||z(),(p=c(d,t))===null&&(p=d[t]),!(H(p)||ci(p)||Ga(p)));n++)if(!Sa(f,u)){let n=ya(e,t,f,a,`translate`);n!==t&&(p=n)}return[p,f,d]}function Ya(e,t,n,r,i,a){let{messageCompiler:o,warnHtmlMessage:s}=e;if(Ga(r)){let e=r;return e.locale=e.locale||n,e.key=e.key||t,e}if(o==null){let e=(()=>r);return e.locale=n,e.key=t,e}let c=o(r,Qa(e,n,i,r,s,a));return c.locale=n,c.key=t,c.source=r,c}function Xa(e,t,n){return t(n)}function Za(...e){let[t,n,r]=e,i=z();if(!H(t)&&!L(t)&&!Ga(t)&&!ci(t))throw Li(Ii.INVALID_ARGUMENT);let a=L(t)?String(t):(Ga(t),t);return L(n)?i.plural=n:H(n)?i.default=n:G(n)&&!Yn(n)?i.named=n:B(n)&&(i.list=n),L(r)?i.plural=r:H(r)?i.default=r:G(r)&&R(i,r),[a,i]}function Qa(e,t,n,r,i,a){return{locale:t,key:n,warnHtmlMessage:i,onError:e=>{throw a&&a(e),e},onCacheKey:e=>Gn(t,n,e)}}function $a(e,t,n,r){let{modifiers:i,pluralRules:a,messageResolver:o,fallbackLocale:s,fallbackWarn:c,missingWarn:l,fallbackContext:u}=e,d={locale:t,modifiers:i,pluralRules:a,messages:(r,i)=>{let a=o(n,r);if(a==null&&(u||i)){let[n,,i]=Ja(u||e,r,t,s,c,l);a=n??o(i,r)}if(H(a)||ci(a)){let n=!1,i=Ya(e,r,t,a,r,()=>{n=!0});return n?Wa:i}return Ga(a)?a:Wa}};return e.processor&&(d.processor=e.processor),r.list&&(d.list=r.list),r.named&&(d.named=r.named),L(r.plural)&&(d.pluralIndex=r.plural),d}si();var eo=`11.4.10`;function to(){typeof __INTLIFY_DROP_MESSAGE_COMPILER__!=`boolean`&&(Qn().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}var q={UNEXPECTED_RETURN_TYPE:24,INVALID_ARGUMENT:25,MUST_BE_CALL_SETUP_TOP:26,NOT_INSTALLED:27,REQUIRED_VALUE:28,INVALID_VALUE:29,CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:30,NOT_INSTALLED_WITH_PROVIDE:31,UNEXPECTED_ERROR:32,NOT_COMPATIBLE_LEGACY_VUE_I18N:33,NOT_AVAILABLE_COMPOSITION_IN_LEGACY:34};function no(e,...t){return Dr(e,null,void 0)}q.UNEXPECTED_RETURN_TYPE,q.INVALID_ARGUMENT,q.MUST_BE_CALL_SETUP_TOP,q.NOT_INSTALLED,q.UNEXPECTED_ERROR,q.REQUIRED_VALUE,q.INVALID_VALUE,q.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN,q.NOT_INSTALLED_WITH_PROVIDE,q.NOT_COMPATIBLE_LEGACY_VUE_I18N,q.NOT_AVAILABLE_COMPOSITION_IN_LEGACY;var ro=Wn(`__translateVNode`),io=Wn(`__datetimeParts`),ao=Wn(`__numberParts`),oo=Wn(`__setPluralRules`);Wn(`__intlifyMeta`);var so=Wn(`__injectWithOption`),co=Wn(`__dispose`),lo={FALLBACK_TO_ROOT:10,NOT_FOUND_PARENT_SCOPE:11,IGNORE_OBJ_FLATTEN:12,DEPRECATE_LEGACY_MODE:13,DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE:14,DUPLICATE_USE_I18N_CALLING:15};lo.FALLBACK_TO_ROOT,lo.NOT_FOUND_PARENT_SCOPE,lo.IGNORE_OBJ_FLATTEN,lo.DEPRECATE_LEGACY_MODE,lo.DEPRECATE_TRANSLATE_CUSTOME_DIRECTIVE,lo.DUPLICATE_USE_I18N_CALLING;var uo=null;{let e=Qn().__VUE_INSTANCE_SETTERS__;B(e)&&e.push(e=>{uo=e})}function fo(e){if(!W(e)||ci(e))return e;for(let t in e)if(er(e,t)){if(!t.includes(`.`))W(e[t])&&fo(e[t]);else{let n=t.split(`.`),r=n.length-1,i=e,a=!1;for(let e=0;e<r;e++){if(n[e]===`__proto__`)throw Error(`unsafe key: ${n[e]}`);if(n[e]in i||(i[n[e]]=z()),!W(i[n[e]])){a=!0;break}i=i[n[e]]}if(a||(ci(i)?Ei.includes(n[r])||delete e[t]:(i[n[r]]=e[t],delete e[t])),!ci(i)){let e=i[n[r]];W(e)&&fo(e)}}}return e}function po(e,t){let{messages:n,__i18n:r,messageResolver:i,flatJson:a}=t,o=G(n)?n:B(r)?z():{[e]:z()};if(B(r)&&r.forEach(e=>{if(`locale`in e&&`resource`in e){let{locale:t,resource:n}=e;t?(o[t]=o[t]||z(),wr(n,o[t])):wr(n,o)}else H(e)&&wr(JSON.parse(e),o)}),i==null&&a)for(let e in o)er(o,e)&&fo(o[e]);return o}function mo(e){return e.type}function ho(e,t,n){let r=W(t.messages)?t.messages:z();`__i18nGlobal`in n&&(r=po(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));let i=Object.keys(r);if(i.length&&i.forEach(t=>{e.mergeLocaleMessage(t,r[t])}),W(t.datetimeFormats)){let n=Object.keys(t.datetimeFormats);n.length&&n.forEach(n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])})}if(W(t.numberFormats)){let n=Object.keys(t.numberFormats);n.length&&n.forEach(n=>{e.mergeNumberFormat(n,t.numberFormats[n])})}}function go(e){return w(te,null,e,0)}function _o(){return uo??T()}var vo=()=>[],yo=()=>!1,bo=0;function xo(e){return((t,n,r,i)=>e(n,r,_o()||void 0,i))}function So(e={}){let{__root:n,__injectWithOption:r}=e,i=n===void 0,a=e.flatJson,o=Un?d:t,s=!U(e.inheritLocale)||e.inheritLocale,c=o(n&&s?n.locale.value:H(e.locale)?e.locale:ia),l=o(n&&s?n.fallbackLocale.value:H(e.fallbackLocale)||B(e.fallbackLocale)||G(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),u=o(po(c.value,e)),f=o(G(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),p=o(G(e.numberFormats)?e.numberFormats:{[c.value]:{}}),h=n?n.missingWarn:U(e.missingWarn)||Jn(e.missingWarn)?e.missingWarn:!0,g=n?n.fallbackWarn:U(e.fallbackWarn)||Jn(e.fallbackWarn)?e.fallbackWarn:!0,_=n?n.fallbackRoot:!U(e.fallbackRoot)||e.fallbackRoot,v=!!e.fallbackFormat,y=V(e.missing)?e.missing:null,b=V(e.missing)?xo(e.missing):null,x=V(e.postTranslation)?e.postTranslation:null,S=n?n.warnHtmlMessage:!U(e.warnHtmlMessage)||e.warnHtmlMessage,C=!!e.escapeParameter,w=n?n.modifiers:G(e.modifiers)?e.modifiers:{},T=e.pluralRules||n&&n.pluralRules,E;E=(()=>{i&&ma(null);let t={version:eo,locale:c.value,fallbackLocale:l.value,messages:u.value,modifiers:w,pluralRules:T,missing:b===null?void 0:b,missingWarn:h,fallbackWarn:g,fallbackFormat:v,unresolving:!0,postTranslation:x===null?void 0:x,warnHtmlMessage:S,escapeParameter:C,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:`vue`}};t.datetimeFormats=f.value,t.numberFormats=p.value,t.__datetimeFormatters=G(E)?E.__datetimeFormatters:void 0,t.__numberFormatters=G(E)?E.__numberFormatters:void 0;let n=_a(t);return i&&ma(n),n})(),ba(E,c.value,l.value);function D(){return[c.value,l.value,u.value,f.value,p.value]}let O=k({get:()=>c.value,set:e=>{E.locale=e,c.value=e}}),ee=k({get:()=>l.value,set:e=>{E.fallbackLocale=e,l.value=e,ba(E,c.value,e)}}),A=k(()=>u.value),j=k(()=>f.value),te=k(()=>p.value);function M(){return V(x)?x:null}function N(e){x=e,E.postTranslation=e}function ne(){return y}function re(e){e!==null&&(b=xo(e)),y=e,E.missing=b}let ie=(e,t,r,a,o,s)=>{D();let c;try{i||(E.fallbackContext=n?ha():void 0),c=e(E)}finally{i||(E.fallbackContext=void 0)}if(r!==`translate exists`&&L(c)&&c===-1||r===`translate exists`&&!c){let[e,r]=t();return n&&_?a(n):o(e)}if(s(c))return c;throw no(q.UNEXPECTED_RETURN_TYPE)};function ae(...e){return ie(t=>Reflect.apply(Ka,null,[t,...e]),()=>Za(...e),`translate`,t=>Reflect.apply(t.t,t,[...e]),e=>e,e=>H(e))}function oe(...e){let[t,n,r]=e;if(r&&!W(r))throw no(q.INVALID_ARGUMENT);return ae(t,n,R({resolvedMessage:!0},r||{}))}function se(...e){return ie(t=>Reflect.apply(Oa,null,[t,...e]),()=>Aa(...e),`datetime format`,t=>Reflect.apply(t.d,t,[...e]),()=>``,e=>H(e)||B(e))}function ce(...e){return ie(t=>Reflect.apply(Ma,null,[t,...e]),()=>Pa(...e),`number format`,t=>Reflect.apply(t.n,t,[...e]),()=>``,e=>H(e)||B(e))}function le(e){return e.map(e=>H(e)||L(e)||U(e)?go(String(e)):e)}let P={normalize:le,interpolate:e=>e,type:`vnode`};function ue(...e){return ie(t=>{let n,r=t;try{r.processor=P,n=Reflect.apply(Ka,null,[r,...e])}finally{r.processor=null}return n},()=>Za(...e),`translate`,t=>t[ro](...e),e=>[go(e)],e=>B(e))}function de(...e){return ie(t=>Reflect.apply(Ma,null,[t,...e]),()=>Pa(...e),`number format`,t=>t[ao](...e),vo,e=>H(e)||B(e))}function fe(...e){return ie(t=>Reflect.apply(Oa,null,[t,...e]),()=>Aa(...e),`datetime format`,t=>t[io](...e),vo,e=>H(e)||B(e))}function pe(e){T=e,E.pluralRules=T}function me(e,t){return ie(()=>{if(!e)return!1;let n=H(t)?t:c.value,r=H(t)?[n]:Hi(E,l.value,n);for(let t=0;t<r.length;t++){let n=ge(r[t]),i=E.messageResolver(n,e);if(i===null&&(i=n[e]),ci(i)||Ga(i)||H(i))return!0}return!1},()=>[e],`translate exists`,n=>Reflect.apply(n.te,n,[e,t]),yo,e=>U(e))}function F(e){let t=null,n=Hi(E,l.value,c.value);for(let r=0;r<n.length;r++){let i=u.value[n[r]]||{},a=E.messageResolver(i,e);if(a!=null){t=a;break}}return t}function he(e){return F(e)??(n&&n.tm(e)||{})}function ge(e){return u.value[e]||{}}function _e(e,t){if(a){let n={[e]:t};for(let e in n)er(n,e)&&fo(n[e]);t=n[e]}u.value[e]=t,E.messages=u.value}function ve(e,t){u.value[e]=u.value[e]||{};let n={[e]:t};if(a)for(let e in n)er(n,e)&&fo(n[e]);t=n[e],wr(t,u.value[e]),E.messages=u.value}function ye(e){return f.value[e]||{}}function be(e,t){f.value[e]=t,E.datetimeFormats=f.value,ja(E,e,t)}function xe(e,t){f.value[e]=R(f.value[e]||{},t),E.datetimeFormats=f.value,ja(E,e,t)}function Se(e){return p.value[e]||{}}function Ce(e,t){p.value[e]=t,E.numberFormats=p.value,Fa(E,e,t)}function we(e,t){p.value[e]=R(p.value[e]||{},t),E.numberFormats=p.value,Fa(E,e,t)}bo++,n&&Un&&(m(n.locale,e=>{s&&(c.value=e,E.locale=e,ba(E,c.value,l.value))}),m(n.fallbackLocale,e=>{s&&(l.value=e,E.fallbackLocale=e,ba(E,c.value,l.value))}));let I={id:bo,locale:O,fallbackLocale:ee,get inheritLocale(){return s},set inheritLocale(e){s=e,e&&n&&(c.value=n.locale.value,l.value=n.fallbackLocale.value,ba(E,c.value,l.value))},get availableLocales(){return Object.keys(u.value).sort()},messages:A,get modifiers(){return w},get pluralRules(){return T||{}},get isGlobal(){return i},get missingWarn(){return h},set missingWarn(e){h=e,E.missingWarn=h},get fallbackWarn(){return g},set fallbackWarn(e){g=e,E.fallbackWarn=g},get fallbackRoot(){return _},set fallbackRoot(e){_=e},get fallbackFormat(){return v},set fallbackFormat(e){v=e,E.fallbackFormat=v},get warnHtmlMessage(){return S},set warnHtmlMessage(e){S=e,E.warnHtmlMessage=e},get escapeParameter(){return C},set escapeParameter(e){C=e,E.escapeParameter=e},t:ae,getLocaleMessage:ge,setLocaleMessage:_e,mergeLocaleMessage:ve,getPostTranslationHandler:M,setPostTranslationHandler:N,getMissingHandler:ne,setMissingHandler:re,[oo]:pe};return I.datetimeFormats=j,I.numberFormats=te,I.rt=oe,I.te=me,I.tm=he,I.d=se,I.n=ce,I.getDateTimeFormat=ye,I.setDateTimeFormat=be,I.mergeDateTimeFormat=xe,I.getNumberFormat=Se,I.setNumberFormat=Ce,I.mergeNumberFormat=we,I[so]=r,I[ro]=ue,I[io]=fe,I[ao]=de,I}var Co={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e===`parent`||e===`global`,default:`parent`},i18n:{type:Object}};function wo({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((e,t)=>[...e,...t.type===j?t.children:[t]],[]):t.reduce((t,n)=>{let r=e[n];return r&&(t[n]=r()),t},z())}function To(){return j}var Eo=N({name:`i18n-t`,props:R({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>L(e)||!isNaN(e)}},Co),setup(e,t){let{slots:n,attrs:r}=t,i=e.i18n||Lo({useScope:e.scope,__useComponent:!0});return()=>{let a=()=>{let r=Object.keys(n).filter(e=>e[0]!==`_`),a=z();e.locale&&(a.locale=e.locale),e.plural!==void 0&&(a.plural=H(e.plural)?+e.plural:e.plural);let o=wo(t,r);return i[ro](e.keypath,o,a)},o=R(z(),r),s=H(e.tag)||W(e.tag)?e.tag:To();return W(s)?f(s,o,{default:a}):f(s,o,a())}}});function Do(e){return B(e)&&!H(e[0])}function Oo(e,t,n,r){let{slots:i,attrs:a}=t;return()=>{let t=()=>{let t={part:!0},a=z();e.locale&&(t.locale=e.locale),H(e.format)?t.key=e.format:W(e.format)&&(H(e.format.key)&&(t.key=e.format.key),a=Object.keys(e.format).reduce((t,r)=>n.includes(r)?R(z(),t,{[r]:e.format[r]}):t,z()));let o=r(e.value,t,a),s=[t.key];return B(o)?s=o.map((e,t)=>{let n=i[e.type],r=n?n({[e.type]:e.value,index:t,parts:o}):[e.value];return Do(r)&&(r[0].key=`${e.type}-${t}`),r}):H(o)&&(s=[o]),s},o=R(z(),a),s=H(e.tag)||W(e.tag)?e.tag:To();return W(s)?f(s,o,{default:t}):f(s,o,t())}}var ko=N({name:`i18n-n`,props:R({value:{type:Number,required:!0},format:{type:[String,Object]}},Co),setup(e,t){let n=e.i18n||Lo({useScope:e.scope,__useComponent:!0});return Oo(e,t,Na,(...e)=>n[ao](...e))}});function Ao(e,t){let n=e;if(e.mode===`composition`)return n.__getInstance(t)||e.global;{let r=n.__getInstance(t);return r==null?e.global.__composer:r.__composer}}function jo(e){let t=t=>{let{instance:n,value:r}=t;if(!n||!n.$)throw no(q.UNEXPECTED_ERROR);let i=Ao(e,n.$),a=Mo(r);return[Reflect.apply(i.t,i,[...No(a)]),i]};return{created:(e,n)=>{let[r,i]=t(n);Un&&(e.__i18nWatcher=m(i.locale,()=>{n.instance&&n.instance.$forceUpdate()})),e.__composer=i,e.textContent=r},unmounted:e=>{Un&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){let n=e.__composer,r=Mo(t);e.textContent=Reflect.apply(n.t,n,[...No(r)])}},getSSRProps:e=>{let[n]=t(e);return{textContent:n}}}}function Mo(e){if(H(e))return{path:e};if(G(e)){if(!(`path`in e))throw no(q.REQUIRED_VALUE,`path`);return e}throw no(q.INVALID_VALUE)}function No(e){let{path:t,locale:n,args:r,choice:i,plural:a}=e,o={},s=r||{};return H(n)&&(o.locale=n),L(i)&&(o.plural=i),L(a)&&(o.plural=a),[t,s,o]}function Po(e,t,...n){let r=G(n[0])?n[0]:{};(!U(r.globalInstall)||r.globalInstall)&&([Eo.name,`I18nT`].forEach(t=>e.component(t,Eo)),[ko.name,`I18nN`].forEach(t=>e.component(t,ko)),[Jo.name,`I18nD`].forEach(t=>e.component(t,Jo))),e.directive(`t`,jo(t))}var Fo=Wn(`global-vue-i18n`);function Io(e={}){let t=!U(e.globalInjection)||e.globalInjection,n=new Map,[r,i]=Ro(e,!1),a=Wn(``);function o(e){return n.get(e)||null}function s(e,t){n.set(e,t)}function c(e){n.delete(e)}let l={get mode(){return`composition`},async install(e,...n){if(e.__VUE_I18N_SYMBOL__=a,e.provide(e.__VUE_I18N_SYMBOL__,l),G(n[0])){let e=n[0];l.__composerExtend=e.__composerExtend,l.__vueI18nExtend=e.__vueI18nExtend}let r=null;t&&(r=qo(e,l.global)),Po(e,l,...n);let i=e.unmount;e.unmount=()=>{r&&r(),l.dispose(),i()}},get global(){return i},dispose(){r.stop()},__instances:n,__getInstance:o,__setInstance:s,__deleteInstance:c};return l}function Lo(e={}){let t=_o();if(t==null)throw no(q.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw no(q.NOT_INSTALLED);let n=zo(t),r=Vo(n),i=mo(t),a=Bo(e,i);if(a===`global`)return ho(r,e,i),r;if(a===`parent`){let i=Ho(n,t,e.__useComponent);return i??=r,i}if(a===`isolated`){if(n.mode!==`composition`)throw no(q.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);let i=n,a=R({},e);a.__root=Ho(n,t)||r;let o=So(a);return i.__composerExtend&&(o[co]=i.__composerExtend(o)),s()&&c(()=>{let e=o[co];e&&(e(),delete o[co])}),o}let o=n,l=o.__getInstance(t);if(l==null){let n=R({},e);`__i18n`in i&&(n.__i18n=i.__i18n),r&&(n.__root=r),l=So(n),o.__composerExtend&&(l[co]=o.__composerExtend(l)),Wo(o,t,l),o.__setInstance(t,l)}return l}function Ro(e,t){let r=n(),i=r.run(()=>So(e));if(i==null)throw no(q.UNEXPECTED_ERROR);return[r,i]}function zo(e){let t=x(e.isCE?Fo:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw no(e.isCE?q.NOT_INSTALLED_WITH_PROVIDE:q.UNEXPECTED_ERROR);return t}function Bo(e,t){return Yn(e)?`__i18n`in t?`local`:`global`:e.useScope?e.useScope:`local`}function Vo(e){return e.mode===`composition`?e.global:e.global.__composer}function Ho(e,t,n=!1){let r=null,i=t.root,a=Uo(t,n);for(;a!=null;){let t=e;if(e.mode===`composition`&&(r=t.__getInstance(a)),r!=null||i===a)break;a=a.parent}return r}function Uo(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function Wo(e,t,n){y(()=>{},t),p(()=>{let r=n;e.__deleteInstance(t);let i=r[co];i&&(i(),delete r[co])},t)}var Go=[`locale`,`fallbackLocale`,`availableLocales`],Ko=[`t`,`rt`,`d`,`n`,`tm`,`te`];function qo(e,t){let n=Object.create(null);return Go.forEach(e=>{let r=Object.getOwnPropertyDescriptor(t,e);if(!r)throw no(q.UNEXPECTED_ERROR);let i=l(r.value)?{get(){return r.value.value},set(e){r.value.value=e}}:{get(){return r.get&&r.get()}};Object.defineProperty(n,e,i)}),e.config.globalProperties.$i18n=n,Ko.forEach(n=>{let r=Object.getOwnPropertyDescriptor(t,n);if(!r||!r.value)throw no(q.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,r)}),()=>{delete e.config.globalProperties.$i18n,Ko.forEach(t=>{delete e.config.globalProperties[`$${t}`]})}}var Jo=N({name:`i18n-d`,props:R({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Co),setup(e,t){let n=e.i18n||Lo({useScope:e.scope,__useComponent:!0});return Oo(e,t,ka,(...e)=>n[io](...e))}});to(),ca(Fi),ua(ta),fa(Hi);var Yo={class:`text-h6`},Xo={class:`text-h6`},Zo={class:`text-h6 text-negative`},Qo={class:`q-mt-sm`},$o={key:0,class:`q-mt-md text-caption`},es={class:`q-mt-md text-caption`},ts=N({__name:`MigrationOverlay`,setup(e){let{t}=Lo(),n=Hn(),r=k(()=>[`backing-up`,`running`,`error`].includes(n.status.state));return y(()=>{n.fetchInitial()}),(e,i)=>(h(),E(Ln,{modelValue:r.value,"onUpdate:modelValue":i[0]||=e=>r.value=e,persistent:``,"no-backdrop-dismiss":``},{default:C(()=>[w(Zt,{style:{"min-width":`400px`}},{default:C(()=>[o(n).status.state===`backing-up`?(h(),E(qt,{key:0},{default:C(()=>[M(`div`,Yo,u(o(t)(`migration.backing_up`)),1),w(Ie,{class:`q-mt-md`})]),_:1})):o(n).status.state===`running`?(h(),E(qt,{key:1},{default:C(()=>[M(`div`,Xo,u(o(t)(`migration.running`,{processed:o(n).status.processed,total:o(n).status.total})),1),w(Xt,{value:o(n).status.total>0?o(n).status.processed/o(n).status.total:0,class:`q-mt-md`},null,8,[`value`])]),_:1})):o(n).status.state===`error`?(h(),E(qt,{key:2},{default:C(()=>[M(`div`,Zo,u(o(t)(`migration.error`)),1),M(`div`,Qo,u(o(n).status.errorMessage),1),o(n).status.backupPath?(h(),A(`div`,$o,u(o(t)(`migration.backup_location`,{path:o(n).status.backupPath})),1)):D(``,!0),M(`div`,es,u(o(t)(`migration.retry`)),1)]),_:1})):D(``,!0)]),_:1})]),_:1},8,[`modelValue`]))}});function ns(e){if(e.codePointAt(0)!==111||e.codePointAt(1)!==110)return!1;let t=e.codePointAt(2);return t>=65&&t<=90}function rs(e,t){let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!0;for(let r of n)if(e[r]!==t[r]||!(r in t))return!0;return!1}function is(){let e=T(),{attrs:t}=e,n={listeners:d({}),attributes:d({})};function r(){let r={},i={};for(let e in t)e!==`class`&&e!==`style`&&!ns(e)&&(r[e]=t[e]);for(let t in e.vnode.props)ns(t)&&(i[t]=e.vnode.props[t]);rs(r,n.attributes.value)&&(n.attributes.value=r),rs(i,n.listeners.value)&&(n.listeners.value=i)}return g(r),r(),n}function as({validate:e,resetValidation:t,requiresQForm:n}){let r=x(ie,!1);if(r!==!1){let{props:n,proxy:i}=T();Object.assign(i,{validate:e,resetValidation:t}),m(()=>n.disable,e=>{e?(typeof t==`function`&&t(),r.unbindComponent(i)):r.bindComponent(i)}),y(()=>{n.disable||r.bindComponent(i)}),O(()=>{n.disable||r.unbindComponent(i)})}else n&&console.error(`Parent QForm not found on useFormChild()!`)}var os=/^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,ss=/^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,cs=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,ls=/^rgb\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5])\)$/,us=/^rgba\(((0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),){2}(0|[1-9][\d]?|1[\d]{0,2}|2[\d]?|2[0-4][\d]|25[0-5]),(0(\.[\d]+)?|1(\.0+)?)\)$/,ds=/^-?[\d]+\/(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01])$/,fs=/^([0-1]?\d|2[0-3]):[0-5]\d$/,ps=/^([0-1]?\d|2[0-3]):[0-5]\d:[0-5]\d$/,ms=/^([0-1]?\d|2[0-3]):[0-5]\d(:[0-5]\d)?$/,hs=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,gs={date:e=>ds.test(e),time:e=>fs.test(e),fulltime:e=>ps.test(e),timeOrFulltime:e=>ms.test(e),email:e=>hs.test(e),hexColor:e=>os.test(e),hexaColor:e=>ss.test(e),hexOrHexaColor:e=>cs.test(e),rgbColor:e=>ls.test(e),rgbaColor:e=>us.test(e),rgbOrRgbaColor:e=>ls.test(e)||us.test(e),hexOrRgbColor:e=>os.test(e)||ls.test(e),hexaOrRgbaColor:e=>ss.test(e)||us.test(e),anyColor:e=>cs.test(e)||ls.test(e)||us.test(e)},_s=[!0,!1,`ondemand`],vs={modelValue:{},error:{type:Boolean,default:null},errorMessage:String,noErrorIcon:Boolean,rules:Array,reactiveRules:Boolean,lazyRules:{type:[Boolean,String],default:!1,validator:e=>_s.includes(e)}};function ys(e,t){let{props:n,proxy:r}=T(),i=d(!1),a=d(null),o=d(!1);as({validate:y,resetValidation:v});let s=0,c,l=!1,u=!1,f=k(()=>n.rules!==void 0&&n.rules!==null&&n.rules.length!==0),p=k(()=>!n.disable&&f.value&&!t.value),h=k(()=>n.error===!0||i.value),g=k(()=>typeof n.errorMessage==`string`&&n.errorMessage.length!==0?n.errorMessage:a.value);m(()=>n.modelValue,()=>{o.value=!0,p.value&&(n.lazyRules===!1||n.lazyRules===!0&&i.value)&&b()});function _(){n.lazyRules!==`ondemand`&&p.value&&o.value&&b()}m(()=>n.reactiveRules,e=>{e?c===void 0&&(c=m(()=>n.rules,_,{immediate:!0,deep:!0})):c!==void 0&&(c(),c=void 0)},{immediate:!0}),m(()=>n.lazyRules,_),m(e,e=>{e?o.value=!0:n.lazyRules!==`ondemand`&&(p.value?b():!n.disable&&f.value&&t.value&&(u=!0))});function v(){s++,t.value=!1,o.value=!1,i.value=!1,a.value=null,u=!1,b.cancel()}function y(e=n.modelValue){if(n.disable||!f.value)return!0;let r=++s,c=n.modelValue;u=!1;let d=()=>{let e=u;u=!1,!l&&n.modelValue!==c&&p.value&&n.lazyRules!==`ondemand`&&(n.lazyRules===!1||i.value||e)&&b()},m=t.value?()=>{}:()=>{o.value=!0},h=(e,n)=>{e&&m(),i.value=e,a.value=n||null,t.value=!1},g=[];for(let t=0;t<n.rules.length;t++){let r=n.rules[t],i;if(typeof r==`function`?i=r(e,gs):typeof r==`string`&&(gs[r]===void 0?(console.error(`Unknown validation pattern rule: "${r}"`),i=!1):i=gs[r](e)),i===!1||typeof i==`string`)return h(!0,i),!1;i!==!0&&i!==void 0&&g.push(i)}return g.length===0?(h(!1),!0):(t.value=!0,Promise.all(g).then(e=>{if(e===void 0||!Array.isArray(e)||e.length===0)return r===s&&(h(!1),d()),!0;let t=e.find(e=>e===!1||typeof e==`string`);return r===s&&(h(t!==void 0,t),d()),t===void 0},e=>(r===s&&(console.error(e),h(!0),d()),!1)))}let b=fe(y,0);return O(()=>{l=!0,c?.(),b.cancel()}),Object.assign(r,{resetValidation:v,validate:y}),je(r,`hasError`,()=>h.value),{isDirtyModel:o,hasRules:f,hasError:h,errorMessage:g,validate:y,resetValidation:v}}function bs(e){return e!=null&&String(e).length!==0}var xs={...ze,...vs,label:String,stackLabel:Boolean,hint:String,hideHint:Boolean,prefix:String,suffix:String,labelColor:String,color:String,bgColor:String,filled:Boolean,outlined:Boolean,borderless:Boolean,standout:[Boolean,String],square:Boolean,loading:Boolean,labelSlot:Boolean,bottomSlots:Boolean,hideBottomSpace:Boolean,rounded:Boolean,dense:Boolean,itemAligned:Boolean,counter:Boolean,clearable:Boolean,clearIcon:String,disable:Boolean,readonly:Boolean,autofocus:Boolean,for:String,maxlength:[Number,String]},Ss=[`update:modelValue`,`clear`,`focus`,`blur`];function Cs({requiredForAttr:e=!0,tagProp:n,changeEvent:r=!1}={}){let{props:i}=T(),a=Be(i,Re()),o=Qe({required:e,getValue:()=>i.for});return{requiredForAttr:e,changeEvent:r,tag:n?{get value(){return i.tag}}:{value:`label`},isDark:a,editable:k(()=>!i.disable&&!i.readonly),innerLoading:d(!1),focused:d(!1),hasPopupOpen:!1,splitAttrs:is(),targetUid:o,rootRef:t(null),targetRef:t(null),controlRef:t(null)}}var ws={class:`q-field__prepend q-field__marginal row no-wrap items-center`,key:`prepend`,onClick:me},Ts={class:`q-field__append q-field__marginal row no-wrap items-center`,key:`append`,onClick:me},Es={class:`q-field__control-container col relative-position row no-wrap q-anchor--skip`},Ds={class:`q-field__prefix no-pointer-events row items-center`},Os={class:`q-field__suffix no-pointer-events row items-center`},ks={class:`q-field__inner relative-position col self-stretch`},As={class:`q-field__before q-field__marginal row no-wrap items-center`,onClick:me},js={class:`q-field__after q-field__marginal row no-wrap items-center`,onClick:me},Ms={name:`q-transition--field-message`},Ns={};function Ps(e,t){return t===null?null:f(`div`,{key:e,class:`q-field__append q-field__marginal row no-wrap items-center q-anchor--skip`},t)}function Fs(e){let{props:t,emit:n,slots:r,attrs:i,proxy:a}=T(),o=Re(),s=null;e.hasValue===void 0&&(e.hasValue=k(()=>bs(t.modelValue))),e.emitValue===void 0&&(e.emitValue=e=>{n(`update:modelValue`,e)}),e.controlEvents===void 0&&(e.controlEvents={onFocusin:M,onFocusout:N,onPopupShow:ne,onPopupHide:re}),Object.assign(e,{clearValue:ie,onControlFocusin:M,onControlFocusout:N,focus:j}),e.computedCounter===void 0&&(e.computedCounter=k(()=>{if(t.counter){let e=typeof t.modelValue==`string`||typeof t.modelValue==`number`?String(t.modelValue).length:Array.isArray(t.modelValue)?t.modelValue.length:0,n=t.maxlength===void 0?t.maxValues:t.maxlength;return e+(n===void 0?``:` / `+n)}}));let{isDirtyModel:c,hasRules:l,hasError:u,errorMessage:d,resetValidation:p}=ys(e.focused,e.innerLoading),m=k(()=>u.value&&e.targetUid.value?`${e.targetUid.value}_error`:void 0);function h(e){if(u.value!==!0)return Ns;let n={"aria-invalid":`true`};return m.value!==void 0&&(!t.hideBottomSpace||t.counter||r.counter!==void 0||d.value!==null||r.error!==void 0)&&(n[`aria-errormessage`]=e?.[`aria-errormessage`]===void 0?m.value:e[`aria-errormessage`],n[`aria-describedby`]=e?.[`aria-describedby`]===void 0?m.value:`${e[`aria-describedby`]} ${m.value}`),n}Object.assign(e,{hasError:u,errorMessage:d,errorMessageId:m,getErrorAriaAttrs:h});let g=e.floatingLabel===void 0?k(()=>t.stackLabel||e.focused.value||e.hasValue.value):k(()=>t.stackLabel||e.focused.value||e.floatingLabel.value),b=k(()=>t.bottomSlots||t.hint!==void 0||l.value||t.counter||t.error!==null),x=k(()=>`q-field row no-wrap items-start q-field--`+(t.filled?`filled`:t.outlined?`outlined`:t.borderless?`borderless`:t.standout?`standout`:`standard`)+(e.fieldClass===void 0?``:` ${e.fieldClass.value}`)+(t.rounded?` q-field--rounded`:``)+(t.square?` q-field--square`:``)+(g.value?` q-field--float`:``)+(C.value?` q-field--labeled`:``)+(t.dense?` q-field--dense`:``)+(t.itemAligned?` q-field--item-aligned q-item-type`:``)+(e.isDark()?` q-field--dark`:``)+(e.getControl===void 0?` q-field--auto-height`:``)+(e.focused.value?` q-field--focused`:``)+(u.value?` q-field--error`:``)+(u.value||e.focused.value?` q-field--highlighted`:``)+(!t.hideBottomSpace&&b.value?` q-field--with-bottom`:``)+(t.disable?` q-field--disabled`:t.readonly?` q-field--readonly`:``)),S=k(()=>`q-field__control relative-position row no-wrap`+(t.bgColor===void 0?``:` bg-${t.bgColor}`)+(u.value?` text-negative`:typeof t.standout==`string`&&t.standout.length!==0&&e.focused.value?` ${t.standout}`:t.color===void 0?``:` text-${t.color}`)),C=k(()=>t.labelSlot||t.label!==void 0),w=k(()=>`q-field__label no-pointer-events absolute ellipsis`+(t.labelColor!==void 0&&!u.value?` text-${t.labelColor}`:``)),E=k(()=>je({id:e.targetUid.value,editable:e.editable.value,focused:e.focused.value,floatingLabel:g.value,modelValue:t.modelValue,emitValue:e.emitValue,ariaInvalid:u.value===!0?`true`:void 0,ariaDescribedby:m.value,ariaErrormessage:m.value},`field`,()=>e.rootRef.value)),D=k(()=>{let n={};return e.targetUid.value&&(n.for=e.targetUid.value),t.disable&&(n[`aria-disabled`]=`true`),n});function A(){let t=document.activeElement,n=e.targetRef?.value;n&&(t===null||t.id!==e.targetUid.value)&&(n.hasAttribute(`tabindex`)||(n=n.querySelector(`[tabindex]`)),n!==t&&n?.focus({preventScroll:!0}))}function j(){$e(A)}function te(){Je(A);let t=document.activeElement;t!==null&&e.rootRef.value.contains(t)&&t.blur()}function M(t){s!==null&&(clearTimeout(s),s=null),e.editable.value&&!e.focused.value&&(e.focused.value=!0,n(`focus`,t))}function N(t,r){s!==null&&clearTimeout(s),s=setTimeout(()=>{s=null,!(document.hasFocus()&&(e.hasPopupOpen||e.controlRef===void 0||e.controlRef.value===null||e.controlRef.value.contains(document.activeElement)))&&(e.focused.value&&(e.focused.value=!1,n(`blur`,t)),r?.())},0)}function ne(t){e.hasPopupOpen=!0,M(t)}function re(t){e.hasPopupOpen=!1,N(t)}function ie(r){ve(r),o.platform.is.mobile?e.rootRef.value.contains(document.activeElement)&&document.activeElement.blur():(e.targetRef?.value||e.rootRef.value).focus(),t.type===`file`&&(e.inputRef.value.value=null),e.onClear?.(),n(`update:modelValue`,null),e.changeEvent&&n(`change`,null),n(`clear`,t.modelValue),v(()=>{let e=c.value;p(),c.value=e})}function ae(e){[13,32].includes(e.keyCode)&&ie(e)}function oe(){let n=[];r.prepend!==void 0&&n.push(f(`div`,ws,r.prepend())),n.push(f(`div`,Es,se())),u.value&&!t.noErrorIcon&&n.push(Ps(`error`,[f(we,{name:o.iconSet.field.error,color:`negative`})]));let i=t.loading||e.innerLoading.value?r.loading===void 0?e.shouldHideLoadingIndicator?.()?null:[f(Ie,{color:t.color})]:r.loading():null;return i===null?t.clearable&&e.hasValue.value&&e.editable.value&&n.push(Ps(`inner-clearable-append`,[f(we,{class:`q-field__focusable-action`,name:t.clearIcon||o.iconSet.field.clear,tabindex:0,role:`button`,"aria-hidden":`false`,"aria-label":o.lang.label.clear,onKeyup:ae,onClick:ie})])):n.push(Ps(`inner-loading-append`,i)),r.append!==void 0&&n.push(f(`div`,Ts,r.append())),e.getInnerAppend!==void 0&&n.push(Ps(`inner-append`,e.getInnerAppend())),e.getControlChild!==void 0&&n.push(e.getControlChild()),n}function se(){let n=[];return t.prefix!==void 0&&t.prefix!==null&&n.push(f(`div`,Ds,t.prefix)),e.getShadowControl!==void 0&&e.hasShadow.value&&n.push(e.getShadowControl()),C.value&&n.push(f(`div`,{class:w.value},P(r.label,t.label))),e.getControl===void 0?r.rawControl===void 0?r.control!==void 0&&n.push(f(`div`,{ref:e.targetRef,class:`q-field__native row`,tabindex:-1,...e.splitAttrs.attributes.value,"data-autofocus":t.autofocus||void 0},r.control(E.value))):n.push(r.rawControl()):n.push(e.getControl()),t.suffix!==void 0&&t.suffix!==null&&n.push(f(`div`,Os,t.suffix)),n.concat(P(r.default))}function ce(){let n,i;u.value?d.value===null?(n=P(r.error),i=`q--slot-error`):(n=[f(`div`,{role:`alert`},d.value)],i=`q--slot-error-${d.value}`):(!t.hideHint||e.focused.value)&&(t.hint===void 0?(n=P(r.hint),i=`q--slot-hint`):(n=[f(`div`,t.hint)],i=`q--slot-hint-${t.hint}`));let a=t.counter||r.counter!==void 0;if(t.hideBottomSpace&&!a&&n===void 0)return;let o=f(`div`,{key:i,id:u.value===!0?m.value:void 0,class:`q-field__messages col`},n);return f(`div`,{class:`q-field__bottom row items-start q-field__bottom--`+(t.hideBottomSpace?`stale`:`animated`),onClick:me},[t.hideBottomSpace?o:f(ge,Ms,()=>o),a?f(`div`,{class:`q-field__counter`},r.counter===void 0?e.computedCounter.value:r.counter()):null])}let le=!1;return _(()=>{le=!0}),ee(()=>{le&&t.autofocus&&a.focus()}),t.autofocus&&y(()=>{a.focus()}),O(()=>{s!==null&&clearTimeout(s)}),Object.assign(a,{focus:j,blur:te}),function(){let n=e.getControl===void 0&&r.control===void 0?{...e.splitAttrs.attributes.value,"data-autofocus":t.autofocus||void 0,...D.value}:D.value;return f(e.tag.value,{ref:e.rootRef,class:[x.value,i.class],style:i.style,...n},[r.before===void 0?null:f(`div`,As,r.before()),f(`div`,ks,[f(`div`,{ref:e.controlRef,class:S.value,tabindex:-1,...e.controlEvents},oe()),b.value?ce():null]),r.after===void 0?null:f(`div`,js,r.after())])}}var Is={date:`####/##/##`,datetime:`####/##/## ##:##`,time:`##:##`,fulltime:`##:##:##`,phone:`(###) ### - ####`,card:`#### #### #### ####`},Ls={"[\\d]":e=>{let t=e.codePointAt(0);return t>47&&t<58},"[a-zA-Z]":e=>{let t=e.codePointAt(0);return t>64&&t<91||t>96&&t<123},"[0-9a-zA-Z]":e=>{let t=e.codePointAt(0);return t>47&&t<58||t>64&&t<91||t>96&&t<123}},{tokenMap:Rs,tokenKeys:zs}=Bs({"#":{pattern:`[\\d]`,negate:`[^\\d]`},S:{pattern:`[a-zA-Z]`,negate:`[^a-zA-Z]`},N:{pattern:`[0-9a-zA-Z]`,negate:`[^0-9a-zA-Z]`},A:{pattern:`[a-zA-Z]`,negate:`[^a-zA-Z]`,transform:e=>e.toLocaleUpperCase()},a:{pattern:`[a-zA-Z]`,negate:`[^a-zA-Z]`,transform:e=>e.toLocaleLowerCase()},X:{pattern:`[0-9a-zA-Z]`,negate:`[^0-9a-zA-Z]`,transform:e=>e.toLocaleUpperCase()},x:{pattern:`[0-9a-zA-Z]`,negate:`[^0-9a-zA-Z]`,transform:e=>e.toLocaleLowerCase()}});function Bs(e){let t=Object.keys(e),n={};return t.forEach(t=>{let r=e[t],i;if(Object.hasOwn(Ls,r.pattern))i=Ls[r.pattern];else{let e=new RegExp(r.pattern);i=t=>e.test(t)}n[t]={...r,test:i}}),{tokenMap:n,tokenKeys:t}}function Vs(e){return RegExp("\\\\([^.*+?^${}()|([\\]])|([.*+?^${}()|[\\]])|(["+e.join(``)+`])|(.)`,`g`)}var Hs=[`insertText`,`deleteContentBackward`,`deleteContentForward`,`deleteWordBackward`,`deleteWordForward`,`deleteByCut`],Us=/[.*+?^${}()|[\]\\]/g,Ws=Vs(zs),J=String.fromCodePoint(1),Gs={mask:String,reverseFillMask:Boolean,fillMask:[Boolean,String],unmaskedValue:Boolean,maskTokens:Object};function Ks(e,t,n,r,i){let a,o,s,c,l,u,f,p=k(()=>{if(e.maskTokens===void 0||e.maskTokens===null)return{tokenMap:Rs,tokenRegexMask:Ws};let{tokenMap:t}=Bs(e.maskTokens),n={...Rs,...t};return{tokenMap:n,tokenRegexMask:Vs(Object.keys(n))}}),h=d(null),g=d(y());function _(){return e.autogrow||[`textarea`,`text`,`search`,`url`,`tel`,`password`].includes(e.type)}m(()=>e.type+e.autogrow,x),m(()=>e.mask,n=>{if(n!==void 0)w(g.value,!0);else{let n=te(h.value?M(g.value,f):g.value);x(),e.modelValue!==n&&t(`update:modelValue`,n)}}),m(()=>e.fillMask+e.reverseFillMask,()=>{h.value&&w(g.value,!0)}),m(()=>e.unmaskedValue,()=>{h.value&&w(g.value)}),m(()=>e.maskTokens,()=>{h.value&&w(g.value,!0)},{deep:!0});function y(){if(x(),h.value){let t=ee(te(e.modelValue));return f=t.length,e.fillMask===!1?t:N(t)}return f=0,e.modelValue}function b(e){if(e<a.length)return a.slice(-e);let t=``,n=a,r=n.indexOf(J);if(r!==-1){for(let r=e-n.length;r>0;r--)t+=J;n=n.slice(0,r)+t+n.slice(r)}return n}function x(){if(h.value=e.mask!==void 0&&e.mask.length!==0&&_(),!h.value){c=void 0,a=``,o=``;return}let t=Is[e.mask]===void 0?e.mask:Is[e.mask],n=typeof e.fillMask==`string`&&e.fillMask.length!==0?e.fillMask.slice(0,1):`_`,r=n.replace(Us,String.raw`\$&`),i=[],l=[],u=[],d=e.reverseFillMask,f=``,m=``;t.replace(p.value.tokenRegexMask,(e,t,n,r,a)=>{if(r!==void 0){let e=p.value.tokenMap[r];u.push(e),m=e.negate,d&&=(l.push({c:e,overflow:!0}),!1),l.push({c:e});return}if(n!==void 0)f=`\\`+(n===`\\`?``:n),u.push(n);else{let e=t===void 0?a:t;f=e===`\\`?String.raw`\\\\`:e.replace(Us,String.raw`\\$&`),u.push(e)}i.push(`([^`+f+`]+)?`+f+`?`)});let g=[...new Set(u.filter(e=>typeof e!=`string`).map(({pattern:e})=>e))],v=RegExp(`^`+i.join(``)+`(`+(f===``?`.`:`[^`+f+`]`)+`+)?`+(f===``?``:`[`+f+`]*`)+`$`),y=l.length-1,b=g.length===1?m:`(?:`+g.map(e=>`(?!`+e+`)`).join(``)+String.raw`[\s\S])`,x=({c:e,overflow:t})=>t===!0?`(?:`+b+`+)?(`+e.pattern+`+)?(?:`+b+`+)?(`+e.pattern+`+)?`:`(?:`+b+`+)?(`+e.pattern+`)?`,S=l.map((t,n)=>{let i=x(t);return n===0&&e.reverseFillMask?RegExp(`^`+r+`*`+i):RegExp(n===y?`^`+i+`(`+(m===``?`.`:m)+`+)?`+(e.reverseFillMask?`$`:r+`*`):`^`+i)});s=u,c=t=>{let n=v.exec(e.reverseFillMask?t:t.slice(0,u.length+1));n!==null&&(t=n.slice(1).join(``));let r=[],i=S.length;for(let e=0,n=t;e<i;e++){let t=S[e].exec(n);if(t===null)break;n=n.slice(t.shift().length),r.push(...t)}return r.length===0?t:r.join(``)},a=u.map(e=>typeof e==`string`?e:J).join(``),o=a.split(J).join(n)}function S(t,n){let r=t.length,i=e.reverseFillMask?b(r):a,o=e.reverseFillMask?s.length-r:0,c=e.reverseFillMask?0:Math.min(n,r),l=e.reverseFillMask?r-n:r;return e=>{if(i[e]!==J||e>=c&&e<l)return!1;let n=s[o+e];return n===void 0||typeof n==`string`||n.test(t[e])}}function C(e,t,n){let r=S(e,n),i=0;for(let e=0;e<t;e++)r(e)&&i++;return i}function w(t,s,c){let u=r.value,d=u?.selectionEnd??0,p=u===null?0:u.value.length-d,m=s!==!0&&typeof g.value==`string`&&Hs.includes(c)?j(g.value,f,t,c):te(t),h;s===!0&&u!==null&&a.length!==0&&(h=C(u.value,d,f)),s===!0&&x();let _=ee(m,s),y=e.fillMask===!1?_:N(_),b=_.length,S=g.value!==y,w=S||b!==f;f=b;let T=e.fillMask!==!1&&b===0;u!==null&&u.value!==y&&(u.value=y),S&&(g.value=y),u!==null&&document.activeElement===u&&v(()=>{if(T){let t=e.reverseFillMask?o.length:0;u.setSelectionRange(t,t,`forward`);return}if(h!==void 0){let e=0,t=0;for(;e<y.length&&t<h;)t=C(y,e+1,b),e++;u.setSelectionRange(e,e,`forward`);return}if(c===`insertFromPaste`&&!e.reverseFillMask){let e=u.selectionEnd,t=d-1;for(let n=l;n<=t&&n<e;n++)a[n]!==J&&t++;E.right(u,t);return}if([`deleteContentBackward`,`deleteContentForward`].includes(c)){let t=e.reverseFillMask?d===0?+(y.length>_.length):Math.max(0,y.length-(T?0:Math.min(_.length,p)+1))+1:d;u.setSelectionRange(t,t,`forward`);return}if(e.reverseFillMask){if(w){let e=Math.max(0,y.length-(T?0:Math.min(_.length,p+1)));e===1&&d===1?u.setSelectionRange(e,e,`forward`):E.rightReverse(u,e)}else{let e=y.length-p;u.setSelectionRange(e,e,`backward`)}}else if(w){let e=Math.max(0,a.indexOf(J),Math.min(_.length,d)-1);E.right(u,e)}else{let e=d-1;E.right(u,e)}});let D=e.unmaskedValue?te(_):y;String(e.modelValue)!==D&&(e.modelValue!==null||D!==``)?n(D,!0):i!==void 0&&i()}function T(e,t,n){let r=ee(te(e.value));t=Math.max(0,a.indexOf(J),Math.min(r.length,t)),l=t,e.setSelectionRange(t,n,`forward`)}let E={left(e,t){let n=!a.slice(t-1).includes(J),r=Math.max(0,t-1);for(;r>=0;r--)if(a[r]===J){t=r,n&&t++;break}if(r<0&&a[t]!==void 0&&a[t]!==J)return E.right(e,0);t>=0&&e.setSelectionRange(t,t,`backward`)},right(e,t){let n=e.value.length,r=Math.min(n,t+1);for(;r<=n;r++)if(a[r]===J){t=r;break}else a[r-1]===J&&(t=r);if(r>n&&a[t-1]!==void 0&&a[t-1]!==J)return E.left(e,n);e.setSelectionRange(t,t,`forward`)},leftReverse(e,t){let n=b(e.value.length),r=Math.max(0,t-1);for(;r>=0;r--)if(n[r-1]===J){t=r;break}else if(n[r]===J&&(t=r,r===0))break;if(r<0&&n[t]!==void 0&&n[t]!==J)return E.rightReverse(e,0);t>=0&&e.setSelectionRange(t,t,`backward`)},rightReverse(e,t){let n=e.value.length,r=b(n),i=!r.slice(0,t+1).includes(J),a=Math.min(n,t+1);for(;a<=n;a++)if(r[a-1]===J){t=a,t>0&&i&&t--;break}if(a>n&&r[t-1]!==void 0&&r[t-1]!==J)return E.leftReverse(e,n);e.setSelectionRange(t,t,`forward`)}};function D(e){t(`click`,e),u=void 0}function O(n){if(t(`keydown`,n),n.defaultPrevented||n.altKey||ue(n))return;let i=r.value,a=i.selectionStart,o=i.selectionEnd;if(n.shiftKey||(u=void 0),n.keyCode===37||n.keyCode===39){n.shiftKey&&u===void 0&&(u=i.selectionDirection===`forward`?a:o);let t=E[(n.keyCode===39?`right`:`left`)+(e.reverseFillMask?`Reverse`:``)];if(n.preventDefault(),t(i,u===a?o:a),n.shiftKey){let e=i.selectionStart;i.setSelectionRange(Math.min(u,e),Math.max(u,e),`forward`)}}else n.keyCode===8&&!e.reverseFillMask&&a===o?(E.left(i,a),i.setSelectionRange(i.selectionStart,o,`backward`)):n.keyCode===46&&e.reverseFillMask&&a===o&&(E.rightReverse(i,o),i.setSelectionRange(a,i.selectionEnd,`forward`))}function ee(t,n){if(t==null||t===``)return``;if(e.reverseFillMask)return A(t,n);let r=s,i=0,a=``;for(let e=0;e<r.length;e++){let o=t[i],s=r[e];if(typeof s==`string`)a+=s,n===!0&&o===s&&i++;else if(o!==void 0&&s.test(o))a+=s.transform===void 0?o:s.transform(o),i++;else return a}return a}function A(e,t){let n=s,r=a.indexOf(J),i=e.length-1,o=``,c=``;for(let a=n.length-1;a>=0&&i!==-1;a--){let s=n[a],l=e[i];if(typeof s==`string`)c=s+c,t===!0&&l===s&&i--;else if(l!==void 0&&s.test(l)){o=c+o,c=``;do o=(s.transform===void 0?l:s.transform(l))+o,i--,l=e[i];while(r===a&&l!==void 0&&s.test(l))}else return o}return o}function j(t,n,r,i){let a=t.length,o=r.length,c=Math.min(a,o),l=0;for(;l<c&&t[l]===r[l];)l++;let u=0;for(;u<c-l&&t[a-1-u]===r[o-1-u];)u++;let d=S(t,n),f=``,p=``;for(let e=0;e<l;e++)d(e)&&(f+=t[e]);for(let e=a-u;e<a;e++)d(e)&&(p+=t[e]);let m=``,h=r.slice(l,o-u);if(h.length!==0){if(e.reverseFillMask)for(let e of h)s.some(t=>typeof t!=`string`&&t.test(e))&&(m+=e);else{let e=s.filter(e=>typeof e!=`string`),t=f.length;for(let n of h)e[t]!==void 0&&e[t].test(n)&&(m+=n,t++)}}else if(!e.reverseFillMask&&l+u<a){let e=!1;for(let t=l;t<a-u;t++)if(d(t)){e=!0;break}e||(i===`deleteContentForward`?p=p.slice(1):f=f.slice(0,-1))}return f+m+p}function te(e){return typeof e!=`string`||c===void 0?typeof e==`number`?c(String(e)):e:c(e)}function M(t,n){return n>=t.length?t:e.reverseFillMask?t.slice(t.length-n):t.slice(0,n)}function N(t){return o.length-t.length<=0?t:e.reverseFillMask&&t.length!==0?o.slice(0,-t.length)+t:t+o.slice(t.length)}return{innerValue:g,hasMask:h,moveCursorForPaste:T,updateMaskValue:w,onMaskedKeydown:O,onMaskedClick:D}}function qs(e,t){function n(){let t=e.modelValue;try{let e=new DataTransfer;return Object(t)===t&&(`length`in t?[...t]:[t]).forEach(t=>{e.items.add(t)}),{files:e.files}}catch{return{files:void 0}}}return k(t?()=>{if(e.type===`file`)return n()}:n)}var Js=/[\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFF9F\u4E00-\u9FAF\u3400-\u4DBF]/,Ys=/[\u4E00-\u9FFF\u3400-\u4DBF\u{20000}-\u{2A6DF}\u{2A700}-\u{2B73F}\u{2B740}-\u{2B81F}\u{2B820}-\u{2CEAF}\uF900-\uFAFF\u3300-\u33FF\uFE30-\uFE4F\uF900-\uFAFF\u{2F800}-\u{2FA1F}]/u,Xs=/[\u3131-\u314E\u314F-\u3163\uAC00-\uD7A3]/,Zs=/[a-z0-9_ -]$/i;function Qs(e){return function(t){if(t.type===`compositionend`||t.type===`change`){if(!t.target.qComposing)return;t.target.qComposing=!1,e(t)}else t.type===`compositionupdate`&&!t.target.qComposing&&typeof t.data==`string`&&(F.is.firefox?!Zs.test(t.data):Js.test(t.data)||Ys.test(t.data)||Xs.test(t.data))&&(t.target.qComposing=!0)}}var $s=Ne({name:`QInput`,inheritAttrs:!1,props:{...xs,...Gs,...rt,modelValue:[String,Number,FileList],modelModifiers:Object,shadowText:String,type:{type:String,default:`text`},debounce:[String,Number],autogrow:Boolean,inputClass:[Array,String,Object],inputStyle:[Array,String,Object]},emits:[...Ss,`paste`,`change`,`keydown`,`click`,`animationend`],setup(e,{emit:n,attrs:r}){let{proxy:i}=T(),a=Re(),o={},s=NaN,c=!1,l=!1,u=null,d,p=t(null),h=at(e),{innerValue:g,hasMask:_,moveCursorForPaste:b,updateMaskValue:x,onMaskedKeydown:S,onMaskedClick:C}=Ks(e,n,P,p,()=>{ue(),delete o.value}),w=qs(e,!0),E=k(()=>bs(g.value)),D=Qs(ce);function ee(e){if(_.value&&e.type===`compositionstart`){e.target.qComposing=!0;return}D(e)}let A=Cs({changeEvent:!0}),j=k(()=>e.type===`textarea`||e.autogrow),te=k(()=>j.value||[`text`,`search`,`url`,`tel`,`password`].includes(e.type)),M=k(()=>{let t={...A.splitAttrs.listeners.value,onInput:ce,onPaste:se,onChange:pe,onBlur:me,onFocus:ne};return t.onCompositionstart=t.onCompositionupdate=t.onCompositionend=ee,_.value&&(t.onKeydown=S,t.onClick=C),e.autogrow&&(t.onAnimationend=le),t}),N=k(()=>{let t={tabindex:0,"data-autofocus":e.autofocus||void 0,rows:e.type===`textarea`?6:void 0,"aria-label":e.label,name:h(),...A.splitAttrs.attributes.value,id:A.targetUid.value,maxlength:e.maxlength,disabled:e.disable,readonly:e.readonly};return j.value||(t.type=e.type),e.autogrow&&(t.rows=1),t});m(()=>e.type,()=>{p.value&&(p.value.value=e.modelValue)}),m(()=>e.modelValue,t=>{if(d!==void 0&&(ue(),c=!1,l=!1,delete o.value),_.value){if(l&&(l=!1,String(t)===s))return;x(t)}else g.value!==t&&(g.value=t,e.type===`number`&&Object.hasOwn(o,`value`)&&(c?c=!1:delete o.value),e.modelModifiers?.trim===!0&&Object.hasOwn(o,`value`)&&(typeof o.value!=`string`||o.value.trim()!==t)&&delete o.value);e.autogrow&&v(fe)}),m(()=>e.autogrow,e=>{if(e)v(fe);else if(p.value!==null){let{style:e}=p.value;e.overflowY=``,e.height=r.rows>0?`auto`:``}}),m(()=>e.dense,()=>{e.autogrow&&v(fe)});function re(){let e=document.activeElement;p.value!==null&&p.value!==e&&(e===null||e.id!==A.targetUid.value)&&p.value.focus({preventScroll:!0})}function ie(){$e(re)}function ae(){Je(re);let e=document.activeElement;e!==null&&A.rootRef.value.contains(e)&&e.blur()}function oe(){p.value?.select()}function se(t){if(_.value&&e.reverseFillMask!==!0){let e=t.target;b(e,e.selectionStart,e.selectionEnd)}n(`paste`,t)}function ce(t){if(!t||!t.target)return;if(e.type===`file`){n(`update:modelValue`,t.target.files);return}let r=t.target.value;if(t.target.qComposing){o.value=r;return}if(_.value)x(r,!1,t.inputType);else if(e.modelModifiers?.trim===!0&&(o.value=r),P(r),te.value&&t.target===document.activeElement){let{selectionStart:e,selectionEnd:n}=t.target;e!==void 0&&n!==void 0&&v(()=>{t.target===document.activeElement&&r.indexOf(t.target.value)===0&&t.target.setSelectionRange(e,n)})}e.autogrow&&fe()}function le(e){n(`animationend`,e),fe()}function P(t,r){d=()=>{u=null,e.type!==`number`&&(e.modelModifiers?.trim!==!0||_.value)&&Object.hasOwn(o,`value`)&&delete o.value,e.modelValue!==t&&s!==t&&(s=t,r===!0&&(l=!0),n(`update:modelValue`,t),v(()=>{s===t&&(s=NaN)})),d=void 0},e.type===`number`&&(c=!0,o.value=t);let i=()=>{_.value?delete o.value:o.value=t};e.modelModifiers?.lazy===!0?i():e.debounce===void 0?d():(u!==null&&clearTimeout(u),i(),u=setTimeout(d,e.debounce))}function ue(){u!==null&&(clearTimeout(u),u=null),d=void 0}function de(){ue(),c=!1,l=!1,delete o.value}function fe(){requestAnimationFrame(()=>{let e=p.value;if(e!==null){let t=e.parentNode.style,{scrollTop:n}=e,{overflowY:r,maxHeight:i}=a.platform.is.firefox?{}:window.getComputedStyle(e),o=r!==void 0&&r!==`scroll`;o&&(e.style.overflowY=`hidden`),t.marginBottom=e.scrollHeight-1+`px`,e.style.height=`1px`,e.style.height=e.scrollHeight+`px`,o&&(e.style.overflowY=Number.parseInt(i,10)<e.scrollHeight?`auto`:`hidden`),t.marginBottom=``,e.scrollTop=n}})}function pe(e){ee(e),u!==null&&(clearTimeout(u),u=null),d?.(),n(`change`,e.target.value)}function me(t){t!==void 0&&ne(t),u!==null&&(clearTimeout(u),u=null),d?.(),c=!1,l=!1,delete o.value,e.type!==`file`&&setTimeout(()=>{p.value!==null&&(p.value.value=g.value===void 0?``:g.value)},0)}function F(){return Object.hasOwn(o,`value`)?o.value:g.value===void 0?``:g.value}O(()=>{me()}),y(()=>{e.autogrow&&fe()}),Object.assign(A,{innerValue:g,fieldClass:k(()=>`q-${j.value?`textarea`:`input`}`+(e.autogrow?` q-textarea--autogrow`:``)),hasShadow:k(()=>e.type!==`file`&&typeof e.shadowText==`string`&&e.shadowText.length!==0),inputRef:p,emitValue:P,onClear:de,hasValue:E,floatingLabel:k(()=>E.value&&(e.type!==`number`||Number.isFinite(Number(g.value)))||bs(e.displayValue)),getControl:()=>{let t=N.value;return f(j.value?`textarea`:`input`,{ref:p,class:[`q-field__native q-placeholder`,e.inputClass],style:e.inputStyle,...t,...A.getErrorAriaAttrs(t),...M.value,...e.type===`file`?w.value:{value:F()}})},getShadowControl:()=>f(`div`,{class:`q-field__native q-field__shadow absolute-bottom no-pointer-events`+(j.value?``:` text-no-wrap`)},[f(`span`,{class:`invisible`},F()),f(`span`,e.shadowText)])});let he=Fs(A);return Object.assign(i,{focus:ie,blur:ae,select:oe,getNativeElement:()=>p.value}),je(i,`nativeEl`,()=>p.value),he}}),ec=Ne({name:`QCardActions`,props:{...Ae,vertical:Boolean},setup(e,{slots:t}){let n=Ee(e),r=k(()=>`q-card__actions ${n()} q-card__actions--${e.vertical?`vert column`:`horiz row`}`);return()=>f(`div`,{class:r.value},P(t.default))}}),tc=`kobo:network-token`;function nc(){try{return localStorage.getItem(tc)}catch{return null}}function rc(e){try{localStorage.setItem(tc,e),window.dispatchEvent(new Event(`kobo:auth-token-changed`))}catch{}}function ic(e){try{let t=new URL(e,window.location.origin);return t.origin===window.location.origin&&t.pathname.startsWith(`/api/`)}catch{return typeof e==`string`&&e.startsWith(`/api/`)}}function ac(e,t){return t?`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(t)}`:e}var oc=d(!1);function sc(){oc.value=!0}function cc(){oc.value=!1}var lc={class:`text-h6`},uc={class:`text-caption text-kobo-3 q-mt-sm`},dc=N({__name:`NetworkLoginDialog`,setup(e){let{t}=Lo(),n=k({get:()=>oc.value,set:e=>{e||cc()}}),r=d(``),i=d(!1),a=d(!1),s=d(``);async function c(){let e=r.value.trim();if(e){i.value=!0,a.value=!1;try{let n=await fetch(`/api/settings/network/ping`,{headers:{"X-Kobo-Token":e}});if(n.ok){rc(e),cc(),window.location.reload();return}s.value=n.status===401?t(`network.login.invalid`):t(`network.login.serverError`),a.value=!0}catch{s.value=t(`network.login.unreachable`),a.value=!0}finally{i.value=!1}}}return(e,l)=>(h(),E(Ln,{modelValue:n.value,"onUpdate:modelValue":l[1]||=e=>n.value=e,persistent:``},{default:C(()=>[w(Zt,{style:{"min-width":`320px`,"max-width":`90vw`}},{default:C(()=>[w(qt,null,{default:C(()=>[M(`div`,lc,u(o(t)(`network.login.title`)),1),M(`div`,uc,u(o(t)(`network.login.description`)),1)]),_:1}),w(qt,null,{default:C(()=>[w($s,{modelValue:r.value,"onUpdate:modelValue":l[0]||=e=>r.value=e,label:o(t)(`network.login.tokenLabel`),placeholder:o(t)(`network.login.tokenPlaceholder`),error:a.value,"error-message":s.value,autofocus:``,dense:``,outlined:``,onKeyup:be(c,[`enter`])},null,8,[`modelValue`,`label`,`placeholder`,`error`,`error-message`])]),_:1}),w(ec,{align:`right`},{default:C(()=>[w(Me,{label:o(t)(`network.login.connect`),color:`primary`,loading:i.value,unelevated:``,onClick:c},null,8,[`label`,`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]))}}),fc=new WeakMap;function pc(e){return fc.get(e)}function mc(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{...t}]))}function hc(e){let t=new Set,n=m(()=>e.queuedMessages,()=>{for(let n of t)n(mc(e.queuedMessages))},{deep:!0,flush:`sync`});return{queue:(...t)=>e.queueMessage(...t),cancel:(...t)=>e.cancelQueuedMessage(...t),flush:(...t)=>e.flushQueuedMessage(...t),subscribe(n){return t.add(n),n(mc(e.queuedMessages)),()=>{t.delete(n)}},dispose(){n(),t.clear()}}}function gc(e,t){fc.set(e,t);let n=t.subscribe(t=>{e.queuedMessages=t});return()=>{n(),fc.delete(e)}}var _c=Ve(`templates`,{state:()=>({templates:[],defaultSlugs:[],loading:!1,loaded:!1}),getters:{isDefault:e=>t=>e.defaultSlugs.includes(t)},actions:{async fetchTemplates(){if(!this.loading){this.loading=!0;try{let e=await fetch(`/api/templates`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();this.templates=t.templates,this.defaultSlugs=t.defaultSlugs??[],this.loaded=!0}catch(e){console.error(`[templates store] fetchTemplates failed:`,e)}finally{this.loading=!1}}},async createTemplate(e){let t=await fetch(`/api/templates`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}let n=await t.json();return this.templates.push(n),n},async updateTemplate(e,t){let n=await fetch(`/api/templates/${encodeURIComponent(e)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}let r=await n.json(),i=this.templates.findIndex(t=>t.slug===e);return i>=0&&(this.templates[i]=r),r},async reloadDefaults(){let e=await fetch(`/api/templates/reload-defaults`,{method:`POST`});if(!e.ok){let t=await e.json().catch(()=>({}));throw Error(t.error??`HTTP ${e.status}`)}let t=await e.json();return t.added.length>0&&await this.fetchTemplates(),t},async deleteTemplate(e){let t=await fetch(`/api/templates/${encodeURIComponent(e)}`,{method:`DELETE`});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}this.templates=this.templates.filter(t=>t.slug!==e)},async resetToDefault(e){let t=await fetch(`/api/templates/${encodeURIComponent(e)}/reset-default`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({error:`Reset failed`}));throw Error(e.error??`Reset failed`)}let{template:n}=await t.json(),r=this.templates.findIndex(t=>t.slug===e);return r>=0?this.templates[r]=n:this.templates.push(n),n}}}),vc=Ne({name:`QAvatar`,props:{...re,fontSize:String,color:String,textColor:String,icon:String,square:Boolean,rounded:Boolean},setup(e,{slots:t}){let n=k(()=>`q-avatar`+(e.color?` bg-${e.color}`:``)+(e.textColor?` text-${e.textColor} q-chip--colored`:``)+(e.square?` q-avatar--square`:e.rounded?` rounded-borders`:``)),r=k(()=>e.fontSize?{fontSize:e.fontSize}:null);return()=>{let i=e.icon===void 0?void 0:[f(we,{name:e.icon})],a={class:n.value};return e.size!==void 0&&(a.style=Ce(e.size)),f(`div`,a,[f(`div`,{class:`q-avatar__content row flex-center overflow-hidden`,style:r.value},Le(t.default,i))])}}}),yc=0,bc={},xc={},Sc={},Cc={},wc=/^\s*$/,Tc=[],Ec=[void 0,null,!0,!1,``],Dc=[`top-left`,`top-right`,`bottom-left`,`bottom-right`,`top`,`bottom`,`left`,`right`,`center`],Oc=[`top-left`,`top-right`,`bottom-left`,`bottom-right`],kc={positive:{icon:e=>e.iconSet.type.positive,color:`positive`},negative:{icon:e=>e.iconSet.type.negative,color:`negative`},warning:{icon:e=>e.iconSet.type.warning,color:`warning`,textColor:`dark`},info:{icon:e=>e.iconSet.type.info,color:`info`},ongoing:{group:!1,timeout:0,spinner:!0,color:`grey-8`}};function Ac(e,t,n){if(!e)return Nc(`parameter required`);let r,a={textColor:`white`};if(e.ignoreDefaults||Object.assign(a,bc),Lt(e)||(a.type&&Object.assign(a,kc[a.type]),e={message:e}),Object.assign(a,kc[e.type||a.type],e),typeof a.icon==`function`&&(a.icon=a.icon(t)),a.spinner=a.spinner?a.spinner===!0?Ie:i(a.spinner):!1,a.meta={hasMedia:!!(a.spinner||a.icon||a.avatar),hasText:Mc(a.message)||Mc(a.caption)},a.position){if(!Dc.includes(a.position))return Nc(`wrong position`,e)}else a.position=`bottom`;if(Ec.includes(a.timeout))a.timeout=5e3;else{let t=Number.parseFloat(a.timeout);if(!Number.isFinite(t)||t<0)return Nc(`wrong timeout`,e);a.timeout=t}a.timeout===0?a.progress=!1:a.progress&&(a.meta.progressClass=`q-notification__progress`+(a.progressClass?` ${a.progressClass}`:``),a.meta.progressStyle={animationDuration:`${a.timeout+1e3}ms`});let o=[...Array.isArray(e.actions)?e.actions:[],...!e.ignoreDefaults&&Array.isArray(bc.actions)?bc.actions:[],...Array.isArray(kc[e.type]?.actions)?kc[e.type].actions:[]],{closeBtn:s}=a;if(s&&o.push({label:typeof s==`string`?s:t.lang.label.close}),a.actions=o.map(({handler:e,noDismiss:t,...n})=>({flat:!0,...n,onClick:typeof e==`function`?()=>{e(),t||c()}:()=>{c()}})),a.multiLine===void 0&&(a.multiLine=a.actions.length>1),Object.assign(a.meta,{class:`q-notification row items-stretch q-notification--${a.multiLine?`multi-line`:`standard`}`+(a.color===void 0?``:` bg-${a.color}`)+(a.textColor===void 0?``:` text-${a.textColor}`)+(a.classes===void 0?``:` ${a.classes}`),wrapperClass:`q-notification__wrapper col relative-position border-radius-inherit `+(a.multiLine?`column no-wrap justify-center`:`row items-center`),contentClass:`q-notification__content row items-center`+(a.multiLine?``:` col`),leftClass:a.meta.hasText?`additional`:`single`,attrs:{role:`alert`,...a.attrs}}),a.group===!1?(a.group=void 0,a.meta.group=void 0):((a.group===void 0||a.group===!0)&&(a.group=[a.message,a.caption,a.multiLine,...a.actions.map(e=>`${e.label}*${e.icon}`)].join(`|`)),a.meta.group=a.group+`|`+a.position),a.actions.length===0?a.actions=void 0:a.meta.actionsClass=`q-notification__actions row items-center `+(a.multiLine?`justify-end`:`col-auto`)+(a.meta.hasMedia?` q-notification__actions--with-media`:``),n!==void 0){n.notif.meta.timer&&(clearTimeout(n.notif.meta.timer),n.notif.meta.timer=void 0),a.meta.uid=n.notif.meta.uid;let e=Sc[a.position].value.indexOf(n.notif);Sc[a.position].value[e]=a}else{let t=xc[a.meta.group];if(t===void 0){if(a.meta.uid=yc++,a.meta.badge=1,[`left`,`right`,`center`].includes(a.position))Sc[a.position].value.splice(Math.floor(Sc[a.position].value.length/2),0,a);else{let e=a.position.includes(`top`)?`unshift`:`push`;Sc[a.position].value[e](a)}a.group!==void 0&&(xc[a.meta.group]=a)}else{if(t.meta.timer&&(clearTimeout(t.meta.timer),t.meta.timer=void 0),a.badgePosition!==void 0){if(!Oc.includes(a.badgePosition))return Nc(`wrong badgePosition`,e)}else a.badgePosition=`top-${a.position.includes(`left`)?`right`:`left`}`;a.meta.uid=t.meta.uid,a.meta.badge=t.meta.badge+1,a.meta.badgeClass=`q-notification__badge q-notification__badge--${a.badgePosition}`+(a.badgeColor===void 0?``:` bg-${a.badgeColor}`)+(a.badgeTextColor===void 0?``:` text-${a.badgeTextColor}`)+(a.badgeClass?` ${a.badgeClass}`:``);let n=Sc[a.position].value.indexOf(t);Sc[a.position].value[n]=xc[a.meta.group]=a}}let c=()=>{jc(a),r=void 0};if(a.timeout>0&&(a.meta.timer=setTimeout(()=>{a.meta.timer=void 0,c()},a.timeout+1e3)),a.group!==void 0)return t=>{t===void 0?c():Nc(`trying to update a grouped one which is forbidden`,e)};if(r={dismiss:c,config:e,notif:a},n!==void 0){Object.assign(n,r);return}return e=>{r!==void 0&&(e===void 0?r.dismiss():Ac({...r.config,...e,group:!1,position:a.position},t,r))}}function jc(e){e.meta.timer&&(clearTimeout(e.meta.timer),e.meta.timer=void 0);let t=Sc[e.position].value.indexOf(e);if(t!==-1){e.group!==void 0&&delete xc[e.meta.group];let n=Tc[String(e.meta.uid)];if(n){let{width:e,height:t}=getComputedStyle(n);n.style.left=`${n.offsetLeft}px`,n.style.width=e,n.style.height=t}Sc[e.position].value.splice(t,1),typeof e.onDismiss==`function`&&e.onDismiss()}}function Mc(e){return e!=null&&!wc.test(e)}function Nc(e,t){return console.error(`Notify: ${e}`,t),!1}function Pc(){return Ne({name:`QNotifications`,devtools:{hide:!0},setup(){return()=>f(`div`,{class:`q-notifications`},Dc.map(e=>f(I,{key:e,class:Cc[e],tag:`div`,name:`q-notification--${e}`},()=>Sc[e].value.map(e=>{let t=e.meta,n=[];if(t.hasMedia&&(e.spinner?n.push(f(e.spinner,{class:`q-notification__spinner q-notification__spinner--`+t.leftClass,color:e.spinnerColor,size:e.spinnerSize})):e.icon?n.push(f(we,{class:`q-notification__icon q-notification__icon--`+t.leftClass,name:e.icon,color:e.iconColor,size:e.iconSize,role:`img`})):e.avatar&&n.push(f(vc,{class:`q-notification__avatar q-notification__avatar--`+t.leftClass},()=>f(`img`,{src:e.avatar,"aria-hidden":`true`})))),t.hasText){let t,r={class:`q-notification__message col`};if(e.html)r.innerHTML=e.caption?`<div>${e.message}</div><div class="q-notification__caption">${e.caption}</div>`:e.message;else{let n=[e.message];t=e.caption?[f(`div`,n),f(`div`,{class:`q-notification__caption`},[e.caption])]:n}n.push(f(`div`,r,t))}let r=[f(`div`,{class:t.contentClass},n)];return e.progress&&r.push(f(`div`,{key:`${t.uid}|p|${t.badge}`,class:t.progressClass,style:t.progressStyle})),e.actions&&r.push(f(`div`,{class:t.actionsClass},e.actions.map(e=>f(Me,e)))),t.badge>1&&r.push(f(`div`,{key:`${t.uid}|${t.badge}`,class:e.meta.badgeClass,style:e.badgeStyle},[t.badge])),f(`div`,{ref:e=>{Tc[String(t.uid)]=e},key:t.uid,class:t.class,...t.attrs},[f(`div`,{class:t.wrapperClass},r)])}))))}})}var Fc={setDefaults(e){Lt(e)&&Object.assign(bc,e)},registerType(e,t){Lt(t)&&(kc[e]=t)},install({$q:e,parentApp:t}){if(e.notify=this.create=t=>Ac(t,e),e.notify.setDefaults=this.setDefaults,e.notify.registerType=this.registerType,e.config.notify!==void 0&&this.setDefaults(e.config.notify),!this.__installed){Dc.forEach(e=>{Sc[e]=d([]);let t=e===`left`||e===`center`||e===`right`?`center`:e.includes(`top`)?`top`:`bottom`,n=e.includes(`left`)?`start`:e.includes(`right`)?`end`:`center`;Cc[e]=`q-notifications__list q-notifications__list--${t} fixed column no-wrap ${e===`left`||e===`right`?`items-${e===`left`?`start`:`end`} justify-center`:e===`center`?`flex-center`:`items-${n}`}`});let e=Oe(`q-notify`);Ut(Pc(),t).mount(e)}}},Ic={"chat.externalLlm":`External LLM · {name}`,"search.indexing":`Indexing history: {processed}/{total}. Results are partial.`,"search.indexUnavailable":`Search index unavailable. Try again later.`,"blockers.setupConfiguration":`No setup script is configured. Add one in the Scripts section of settings.`,"blockers.noWorkspace":`Select a workspace to use this action.`,"blockers.purged":`Restore the worktree from the workspace banner before this action.`,"blockers.archived":`Unarchive the workspace from its menu to use this action.`,"blockers.operation":`Wait for the current operation to finish.`,"blockers.agentBusy":`Wait for the turn to finish or stop the agent from the conversation.`,"blockers.configuration":`Configure this feature in the project settings.`,"blockers.settings":`Open settings`,"workspaceSort.label":`Sort workspaces`,"workspaceSort.activity":`Last activity`,"workspaceSort.created":`Creation date`,"workspaceSort.name":`Name`,"workspaceSort.attention":`Attention priority`,"workspaceSort.asc":`Ascending`,"workspaceSort.desc":`Descending`,"workspaceSort.hint":`Sort within each group, including archives. Viewing a workspace does not change its last activity.`,"model.tooltip":`Model used by the agent for this workspace`,"reasoning.tooltip":`Reasoning level used by the agent for this workspace`,"thinking.label":`Thinking`,"thinking.noDetails":`The agent is thinking…`,"common.save":`Save`,"common.duplicate":`Duplicate`,"common.confirm":`Confirm`,"common.cancel":`Cancel`,"common.open":`Open`,"common.retry":`Retry`,"common.delete":`Delete`,"common.close":`Close`,"workspace.deleteTitle":`Delete workspace`,"workspace.deleteTypeName":`Type {name} to confirm. This removes the worktree and the whole conversation.`,"workspace.deleteFailed":`Could not delete the workspace.`,"workspace.archiveFailed":`Could not archive the workspace.`,"tasks.updateFailed":`Could not update the task.`,"dashboard.tooltip":`Dashboard`,"dashboard.title":`Dashboard`,"dashboard.count":`{n} workspace | {n} workspaces`,"dashboard.empty":`No active workspace.`,"dashboard.workspace":`Workspace`,"dashboard.status":`Status`,"dashboard.attention":`Attention`,"dashboard.pr":`PR`,"dashboard.diff":`Diff`,"dashboard.activity":`Activity`,"dashboard.prOpen":`open`,"reliability.title":`Model reliability`,"reliability.subtitle":`How each engine and model actually ended on this machine.`,"reliability.empty":`No session has ended yet.`,"reliability.loadFailed":`Could not load the reliability figures.`,"reliability.engine":`Engine`,"reliability.model":`Model`,"reliability.sessions":`Sessions`,"reliability.completed":`Completed`,"reliability.watchdog":`Watchdog`,"reliability.killed":`Stopped`,"reliability.errors":`Errors`,"reliability.unknown":`Unknown`,"reliability.median":`Median`,"reliability.durationSeconds":`{s}s`,"reliability.durationMinutes":`{m}m {s}s`,"reliability.durationHours":`{h}h {m}m`,"update.available":`A newer Kōbō is available: {version}`,"update.how":`How to update`,"common.dismiss":`Dismiss`,"common.details":`Details`,"common.ok":`OK`,"whatsNew.title":`What's new`,"common.loading":`Loading...`,"common.search":`Search...`,"common.refresh":`Refresh`,"common.copy":`Copy`,"common.copied":`Copied to clipboard`,"common.copyFailed":`Copy failed`,"common.add":`Add`,"folderPicker.title":`Choose a folder`,"folderPicker.parent":`Parent folder`,"folderPicker.empty":`No subfolders`,"folderPicker.select":`Select this folder`,"common.start":`Start`,"common.stop":`Stop`,"common.archive":`Archive`,"common.unarchive":`Unarchive`,"common.selectWorkspace":`Select a workspace`,"common.noResults":`No results for "{query}"`,"common.send":`send`,"common.newLine":`new line`,"common.history":`history`,"common.justNow":`just now`,"common.minutesAgo":`{count}m ago`,"common.hoursAgo":`{count}h ago`,"common.daysAgo":`{count}d ago`,"model.auto":`Auto`,"model.fable51":`Fable 5.1`,"model.mythos5":`Mythos 5 (Glasswing)`,"model.fable51Description":`Most capable model - replaces Fable 5, 1M context, adaptive thinking`,"model.mythos5Description":`Fable 5.1 without safety classifiers — limited access (Project Glasswing)`,"model.opus":`Opus 4.6`,"model.sonnet":`Sonnet 4.6`,"model.opus5":`Opus 5`,"model.opus48":`Opus 4.8`,"model.opus47Classic":`Opus 4.7 (Classic)`,"model.opus471m":`Opus 4.7 (1M)`,"model.opusClassic":`Opus 4.6 (Classic)`,"model.opus1m":`Opus 4.6 (1M)`,"model.sonnet5":`Sonnet 5`,"model.sonnetClassic":`Sonnet 4.6 (Classic)`,"model.sonnet1m":`Sonnet 4.6 (1M)`,"model.haiku":`Haiku 4.5`,"model.autoDescription":`Claude picks the optimal model`,"model.opus5Description":`For complex agentic coding and enterprise work, 1M context`,"model.opus48Description":`Most capable Opus — long-horizon agentic coding, 1M context by default, high effort default`,"model.opus47ClassicDescription":`Latest Opus, most capable`,"model.opus471mDescription":`Latest Opus, 1M context`,"model.opusClassicDescription":`Most powerful`,"model.opus1mDescription":`Most powerful, 1M context`,"model.sonnet5Description":`Best mix of speed and intelligence, 1M context`,"model.sonnetClassicDescription":`Balanced`,"model.sonnet1mDescription":`Balanced, 1M context`,"model.haikuDescription":`Fastest`,"model.gpt6astra":`GPT-6 Astra`,"model.gpt6astraDescription":`Most capable frontier model, 1M context (requires ChatGPT auth)`,"model.gpt56sol":`GPT-5.6 Sol`,"model.gpt56solDescription":`Latest frontier agentic coding model (requires ChatGPT auth)`,"model.gpt56terra":`GPT-5.6 Terra`,"model.gpt56terraDescription":`Balanced agentic coding model for everyday work (requires ChatGPT auth)`,"model.gpt56luna":`GPT-5.6 Luna`,"model.gpt56lunaDescription":`Fast and affordable agentic coding model (requires ChatGPT auth)`,"model.gpt55":`GPT-5.5`,"model.gpt55Description":`Recommended for complex coding (requires ChatGPT auth)`,"model.gpt54":`GPT-5.4`,"model.gpt54Description":`Default fallback — strong reasoning, works with API key auth`,"model.gpt54mini":`GPT-5.4 mini`,"model.gpt54miniDescription":`Fast and efficient — best for responsive tasks and subagents`,"model.gpt52":`GPT-5.2`,"model.gpt52Description":`Optimized for professional work and long-running agents`,"model.gpt53codex":`GPT-5.3 Codex`,"model.gpt53codexDescription":`Coding-specialized model for complex software engineering`,"reasoning.auto":`auto`,"reasoning.minimal":`minimal`,"reasoning.none":`none`,"reasoning.low":`low`,"reasoning.medium":`medium`,"reasoning.high":`high`,"reasoning.xhigh":`xhigh`,"reasoning.max":`max`,"reasoning.autoDescription":`Let the engine pick the default`,"reasoning.minimalDescription":`Fastest, shallowest reasoning`,"reasoning.noneDescription":`No additional reasoning`,"reasoning.lowDescription":`Faster, less depth`,"reasoning.mediumDescription":`Balanced`,"reasoning.highDescription":`More depth`,"reasoning.xhighDescription":`Extended depth, long-horizon tasks`,"reasoning.maxDescription":`Maximum depth`,"agentPermissionMode.label":`Permission mode`,"agentPermissionMode.plan":`Plan`,"agentPermissionMode.bypass":`Bypass`,"agentPermissionMode.strict":`Accept edits`,"agentPermissionMode.interactive":`Interactive`,"agentPermissionMode.tooltip":`How the agent handles tool permissions. Plan: read-only, no writes. Bypass: skip every prompt. Strict: auto-accept file edits, respect allow/deny lists for the rest. Interactive: ask the user before each tool via the permission panel.`,"agentPermissionMode.autoLoopOverride":`Auto-loop forces a non-plan mode — Plan blocks the MCP tools and edits the loop relies on. Pick Bypass, Strict, or Interactive instead.`,"agentPermissionMode.autoLoopLocked":`Locked to Bypass while auto-loop is on — any other mode would stall the loop on permission prompts. AskUserQuestion still works.`,"workspaceList.title":`Workspaces`,"workspaceList.a11y.groupToggle":`{group} group, {count} workspaces`,"workspaceList.a11y.list":`Workspaces`,"workspaceList.a11y.card":`{name}, {status}`,"workspaceList.needsAttention":`Needs Attention`,"workspaceList.running":`Running`,"workspaceList.idle":`Idle`,"workspaceList.archived":`Archived`,"workspaceList.archivedToast":`“{name}” archived`,"workspaceList.archivedUndo":`Undo`,"workspaceList.unarchiveFailed":`Could not unarchive this workspace`,"workspaceList.noWorkspaces":`No workspaces yet`,"workspaceList.loadFailed":`Could not load your workspaces`,"workspaceList.loadFailedHint":`This is a connection failure, not an empty account.`,"workspaceList.footer":`{count} workspace | {count} workspaces`,"workspaceList.footerRunning":`{count} running`,"workspaceList.deleteDialog.title":`Delete workspace?`,"workspaceList.deleteDialog.deleteLocal":`Delete local branch`,"workspaceList.deleteDialog.deleteRemote":`Delete remote branch`,"workspaceList.deleteDialog.warning":`Warning: this action is irreversible on the remote.`,"workspaceList.deleteArchivedDialog.tooltip":`Delete all archived workspaces`,"workspaceList.deleteArchivedDialog.title":`Delete all archived workspaces?`,"workspaceList.deleteArchivedDialog.message":`This will permanently delete the {count} archived workspaces. This action cannot be undone.`,"workspaceList.deleteArchivedDialog.typeCount":`Type {count} to confirm`,"workspacePage.configure":`Configure`,"workspacePage.permissions":`Permissions`,"workspacePage.selectWorkspace":`Select a workspace to begin`,"workspacePage.commandPalettePlaceholder":`Search commands…`,"workspacePage.commandPaletteEmpty":`No matching command`,"workspacePage.commandFocusChat":`Focus chat input`,"workspacePage.commandSearchHistory":`Search workspace history`,"workspacePage.commandTogglePanel":`Show or hide side panel`,"workspacePage.commandStartAgent":`Start agent`,"workspacePage.commandStopAgent":`Stop agent`,"workspacePage.commandOpenSettings":`Open settings`,"workspacePage.commandOpenCreate":`Create a workspace`,"workspacePage.commandOpenSearch":`Global search`,"workspacePage.commandOpenHealth":`Health page`,"workspacePage.commandOpenChangelog":`Changelog`,"workspacePage.commandGroupWorkspaces":`Switch to a workspace`,"workspacePage.commandPaletteHint":`Command palette`,"workspacePage.session":`Session #{n}`,"workspacePage.newSession":`+ New session`,"workspacePage.renameSession":`Rename`,"workspacePage.renameSessionTitle":`Rename session`,"workspacePage.sessionNameLabel":`Session name`,"workspacePage.sessionEndedNotice":`This session has ended. Create a new session to continue.`,"workspacePage.renameFailed":`Rename failed`,"workspacePage.copySessionId":`Copy session ID`,"workspacePage.deleteSession":`Delete session`,"workspacePage.deleteSessionTitle":`Delete session?`,"workspacePage.deleteSessionConfirm":`This permanently deletes this session and its conversation history.`,"workspacePage.deleteSessionFailed":`Failed to delete session`,"workspacePage.noEngineSessionId":`No engine session ID yet — the agent hasn't started this session`,"workspacePage.createSessionFailed":`Failed to create session`,"workspacePage.startFailed":`Start failed`,"workspacePage.stopFailed":`Stop failed`,"workspacePage.interrupt":`Interrupt`,"workspacePage.interrupted":`Agent interrupted — waiting for your next message`,"workspacePage.lastAgentEvent":`Last event {when}`,"workspacePage.agentStopping":`Stopping…`,"workspacePage.agentNotRunning":`No agent process — status is stale`,"contextMenu.restoreWorktree":`Restore worktree`,"workspacePage.restoringWorktree":`Restoring…`,"workspacePage.worktreeRestoreSuccess":`Worktree restored`,"workspacePage.worktreeRestoreLimitations":`Recreates committed Git files. Dependencies and previously discarded local files are not restored.`,"workspacePage.restoreError.not-found":`This workspace no longer exists. Refresh the workspace list.`,"workspacePage.restoreError.not-purged":`This workspace is not marked as purged. Refresh it and check its working directory.`,"workspacePage.restoreError.workspace-busy":`Another operation is running on this workspace. Wait for it to finish, then retry.`,"workspacePage.restoreError.worktree-not-owned":`This worktree is not managed by Kōbō. Restore it manually in its original project.`,"workspacePage.restoreError.project-unavailable":`The original project is unavailable. Reconnect its disk or restore the project at its original path, then retry.`,"workspacePage.restoreError.path-conflict":`The worktree path is occupied by another folder or checkout. Move the conflicting folder or follow the manual recovery instructions in Details.`,"workspacePage.restoreError.branch-in-use":`The working branch is already checked out elsewhere. Use that checkout or release the branch from it before retrying.`,"workspacePage.restoreError.recovery-source-unavailable":`The working branch and saved commit could not be found. Check remote access or follow the manual recovery instructions in Details.`,"workspacePage.restoreError.git-failed":`Restoration failed. Check Git access and disk permissions, then retry. Details opens the manual recovery guide.`,"workspacePage.archivedBanner":`Archived workspace — read-only`,"workspacePage.worktreePurgedBanner":`Worktree deleted — history kept`,"workspacePage.worktreePurgedTooltip":`Restore worktree recreates the working directory and unarchives this workspace. Chat history, tasks and sessions are preserved. No agent or dev server is started.`,"workspacePage.pendingInitialPromptBanner":`An initial prompt is pending — the agent never received it (setup script crashed or the workspace was never started). Click Start to send it now.`,"workspacePage.unarchived":`Workspace unarchived`,"workspacePage.unarchiveFailed":`Unarchive failed`,"workspacePage.interruptFailed":`Interrupt failed`,"workspacePage.interruptHint":`Interrupt the current turn without ending the session.`,"workspacePage.interruptTooltip":`Soft interrupt (like Escape) — stops the current tool but keeps the session alive`,"workspacePage.pendingNextRun":`Applied on next start`,"workspacePage.activeSessionModel":`Active: {model}`,"workspacePage.activeSessionModelTooltip":`Model currently used by the selected session`,"workspacePage.switchEngine":`Switch engine`,"workspacePage.switchEngineHint":`Continue this workspace with another agent engine`,"workspacePage.moreActions":`More actions`,"workspacePage.switchEngineTitle":`Switch agent engine`,"workspacePage.switchEngineWarning":`The current agent will be stopped and a fresh session will start in the same worktree.`,"workspacePage.engineLabel":`Engine`,"workspacePage.engineClaude":`Claude Code`,"workspacePage.engineCodex":`Codex`,"workspacePage.engineHandoff":`Handoff for the new engine`,"workspacePage.engineHandoffHint":`Review or edit the context that will be sent to the new agent.`,"workspacePage.confirmSwitchEngine":`Switch engine`,"workspacePage.switchEngineFailed":`Failed to switch engine`,"whip.dispatchFailed":`Unable to send the whip message`,"whip.phrase1":`Move faster, tocard!`,"whip.phrase2":`Pick up the pace, tocard!`,"whip.phrase3":`Back to work, tocard!`,"whip.phrase4":`Show me some speed, tocard!`,"whip.phrase5":`Less thinking, more doing, tocard!`,"search.title":`Search`,"search.tooltip":`Search across agent history`,"search.placeholder":`Search across all agent messages…`,"search.includeArchived":`Include archived workspaces`,"search.loading":`Searching…`,"search.noResults":`No matches`,"search.error":`Search failed: {message}`,"search.resultCount":`{n} result(s)`,"search.eventType.userMessage":`You`,"search.eventType.agentOutput":`Agent`,"activityFeed.empty":`No activity yet`,"activityFeed.emptyHint":`Start a workspace to see agent output here`,"activityFeed.initialPrompt":`Initial Prompt`,"activityFeed.you":`You`,"activityFeed.agent":`Agent`,"activityFeed.question":`Question`,"activityFeed.goToPrevious":`Go to previous message`,"activityFeed.scrollToBottom":`Scroll to bottom`,"activityFeed.sendAnswers":`Send answers`,"agentBusy.banner":`Agent is busy`,"agentBusy.subagentsRunning":`1 sub-agent running | {n} sub-agents running`,"agentBusy.viewSubagents":`View sub-agents`,"agentBusy.pendingMessage":`Waiting — agent is busy`,"terminal.title":`Terminal`,"terminal.open":`Open terminal`,"terminal.close":`Close terminal`,"terminal.noWorkspace":`Select a workspace`,"terminal.noWorktree":`Worktree not created yet`,"terminal.error":`Terminal error`,"terminal.exited":`Terminal exited`,"terminal.disconnected":`Connection lost`,"terminal.reconnecting":`Reconnecting… (attempt {attempt} of {max})`,"terminal.reconnect":`Reconnect`,"chatInput.placeholder":`Message... (/ for skills)`,"chatInput.fileSearchHint":`search a file`,"chatInput.skills":`Skills`,"chatInput.attachImage":`Attach image`,"chatInput.queueBanner":`Message queued — will be sent when the agent finishes`,"chatInput.forceQueue":`Force send`,"chatInput.searchHistory":`search`,"chatInput.commandPalette":`commands`,"chatInput.shortcuts":`Keyboard shortcuts`,"chatInput.cancelQueue":`Cancel Queue`,"chatInput.autoLoopBanner":`Auto-loop is running — stop it to send a message`,"chatInput.awaitingUserBanner":`The agent is waiting for your answer above — reply via the question panel`,"chatInput.autoLoopStop":`Stop`,"koboCommand.checkProgressDesc":`Verify progress on tasks and acceptance criteria`,"chatInput.uploading":`Uploading...`,"voice.title":`Voice transcription`,"voice.enabled":`Enable local voice transcription`,"voice.pttKey":`Push-to-talk key`,"voice.pttAlt":`Alt`,"voice.pttCtrlSpace":`Ctrl+Space`,"voice.language":`Language (auto or code)`,"voice.model":`Active model`,"voice.commandPath":`Whisper binary path (optional)`,"voice.ffmpegPath":`ffmpeg binary path (optional)`,"voice.temperature":`Temperature`,"voice.temperatureHint":`Lower is more deterministic; higher can be more flexible but less stable.`,"voice.initialPrompt":`Initial prompt (optional)`,"voice.initialPromptHint":`Optional context to help Whisper with names, jargon, or domain vocabulary.`,"voice.translateToEnglish":`Translate to English`,"voice.translateToEnglishHint":`When enabled, non-English speech is translated to English instead of transcribed as-is.`,"voice.suppressNst":`Suppress non-speech tokens`,"voice.suppressNstHint":`Attempts to reduce non-speech artifacts in the transcript.`,"voice.installLink":`Install whisper.cpp`,"voice.installGuideTitle":`Installation guide`,"voice.installGuideIntro":`Install whisper.cpp and ffmpeg, then set the binary paths below if needed.`,"voice.installGuideUbuntuTitle":`Ubuntu / Debian`,"voice.installGuideWindowsTitle":`Windows`,"voice.installGuideBinaryPathHint":`After CMake build, the Whisper binary is usually at: whisper.cpp/build/bin/whisper-cli`,"voice.installGuideSettingsHint":`Then set "Whisper binary path" and "ffmpeg binary path" in this section (or leave empty if they are in PATH).`,"voice.noneModel":`No active model`,"voice.notInstalled":`not installed`,"voice.download":`Download`,"voice.delete":`Delete`,"voice.holdToTalk":`Hold to talk`,"voice.recording":`Recording...`,"voice.transcribing":`Transcribing...`,"voice.notSupported":`Voice recording is not supported in this browser`,"voice.errorMicPermission":`Microphone permission denied`,"voice.errorTranscription":`Voice transcription failed`,"voice.downloadFailed":`Model download failed`,"voice.deleteFailed":`Model deletion failed`,"voice.errorDisabled":`Voice transcription is disabled in settings`,"voice.errorModelMissing":`No active voice model is configured`,"voice.errorModelNotInstalled":`The active voice model is not installed`,"voice.errorAudioInvalid":`Audio capture is invalid or empty`,"voice.errorLanguageInvalid":`Voice language configuration is invalid`,"voice.errorRuntimeMissing":`Whisper runtime is not installed or not in PATH`,"voice.maxDurationReached":`Maximum recording duration reached`,"voice.runtimeReady":`Runtime ready: {command}`,"voice.runtimeMissing":`Runtime missing: {command}`,"voice.ffmpegReady":`ffmpeg ready`,"voice.ffmpegMissing":`ffmpeg missing`,"voice.sectionRuntime":`Runtime status`,"voice.sectionActivation":`Activation`,"voice.sectionModels":`Whisper models`,"voice.sectionAdvanced":`Advanced options`,"voice.sectionBehavior":`Transcription behavior`,"voice.sectionBinaries":`Binary paths`,"voice.downloadModels":`Download a model`,"voice.cancelFailed":`Failed to cancel the download`,"attachments.error.upload":`Upload failed. Remove the attachment and try again.`,"attachments.add":`Attach files`,"attachments.remove":`Remove attachment`,"attachments.hint":`Paste or drop files here · {count} maximum · {size} MB each · {total} MB total`,"attachments.error.type":`Use PNG, JPEG, GIF or WebP images, PDF, Markdown or text documents (TXT, CSV, JSON, YAML, XML, LOG, RST, TOML).`,"attachments.error.size":`Each file must be non-empty and no larger than 50 MB.`,"attachments.error.count":`You can attach up to 10 files.`,"attachments.error.total":`Attachments must total no more than 50 MB.`,"attachments.descriptionRequired":`Enter a description or attach a file.`,"createPage.title":`Create a workspace`,"createPage.fromTemplate":`From a template`,"createPage.fromTemplateNone":`None`,"createPage.saveAsTemplate":`Save as template`,"createPage.saveTemplateTitle":`Save this form as a template`,"createPage.saveTemplateName":`Template name`,"createPage.saveTemplateOverwrite":`A template named “{name}” exists. Overwrite it?`,"createPage.templateSaved":`Template “{name}” saved`,"createPage.templateApplied":`Template “{name}” applied`,"createPage.duplicatedFrom":`Duplicated from “{name}”`,"createPage.duplicateLoadFailed":`Could not load the workspace to duplicate.`,"createPage.templateSaveFailed":`Could not save the template.`,"createPage.presetProjectUnknown":`This template targets a project that is no longer configured; the current project was kept.`,"createPage.copySuffix":`(copy)`,"createPage.subtitle":`Describe the mission, choose a project, then configure the agent.`,"createPage.sectionMission":`Mission`,"createPage.sectionMissionHint":`Give the agent a clear objective and the context needed to complete it.`,"createPage.workspaceNameLabel":`Workspace name`,"createPage.descriptionLabel":`Mission description`,"createPage.sources":`Optional sources`,"createPage.sectionGit":`Git project`,"createPage.sectionGitHint":`Choose the repository, source branch and worktree mode.`,"createPage.worktreeMode":`Worktree mode`,"createPage.worktreeNew":`New isolated worktree`,"createPage.worktreeExisting":`Reuse an existing worktree`,"createPage.projectLabel":`Project`,"createPage.sourceBranch":`Source branch`,"createPage.workingBranchPreview":`Working branch preview`,"createPage.branchNamePending":`workspace-name`,"createPage.sectionAgent":`Agent`,"createPage.sectionAgentHint":`Review the execution defaults or enable automation.`,"createPage.configureAgent":`Configure the agent`,"createPage.advancedOptions":`Advanced options`,"createPage.keyboardHint":`Press Ctrl/Cmd + Enter to create the workspace.`,"createPage.createWorkspace":`Create workspace`,"createPage.compareEngines":`Compare two engines`,"createPage.engineA":`Engine A`,"createPage.engineB":`Engine B`,"createPage.compareBrainstormLocked":`Comparison mode: each engine brainstorms on the model and effort set in its own block above.`,"createPage.compareEnginesHint":`Creates two workspaces from this task, one per engine, in sibling worktrees. Their diffs can then be compared side by side.`,"createPage.compareNeedsNewWorktree":`Comparing two engines needs two new worktrees. Turn off “use an existing worktree” first.`,"createPage.compareNeedsSecondEngine":`Pick a second engine, different from the first, to compare against.`,"comparison.title":`Engine comparison`,"comparison.hint":`The same task, run by each engine in its own worktree.`,"comparison.engine":`Engine`,"comparison.status":`Status`,"comparison.tasks":`Tasks`,"comparison.commits":`Commits`,"comparison.files":`Files`,"comparison.diff":`Diff`,"comparison.messages":`Messages`,"comparison.messagesTitle":`Agent messages / your messages`,"comparison.questions":`Questions`,"comparison.tools":`Tools`,"comparison.errors":`Errors`,"comparison.tokens":`Tokens`,"comparison.tokensTitle":`Input / output tokens`,"comparison.sessions":`Sessions`,"comparison.duration":`Time`,"comparison.exportCsv":`Export as CSV`,"comparison.open":`Open`,"comparison.current":`This one`,"comparison.archived":`archived`,"comparison.incomplete":`Only one workspace of this comparison exists. The other was never created, or has been deleted.`,"createPage.comparisonPartial":`Only {count} of {total} workspaces were created. The one that exists is usable on its own; delete it if you would rather start over.`,"createPage.notionEnabled":`Notion enabled`,"createPage.importNotion":`Import from Notion`,"createPage.notionPlaceholder":`https://www.notion.so/workspace/Page-title-abc123...`,"createPage.notionValidation":`URL must start with https://www.notion.so/ or https://app.notion.com/`,"createPage.notionAutoExtract":`Subtasks and acceptance criteria will be extracted automatically.`,"createPage.notionPanelChoiceLabel":`This URL points to a sub-page (?p=). Which one do you want to work on?`,"createPage.notionPanelOption":`Sub-page (panel)`,"createPage.notionPanelOptionDesc":`The page you were viewing — recommended`,"createPage.notionParentOption":`Parent page`,"createPage.notionParentOptionDesc":`The epic / database it belongs to`,"createPage.importSentry":`Import Sentry`,"createPage.sentryEnabled":`Sentry enabled`,"createPage.sentryPlaceholder":`https://your-org.sentry.io/issues/123456`,"createPage.sentryValidation":`URL must point to a Sentry issue (/issues/<id>)`,"createPage.sentryAutoExtract":`Sentry issue will be imported automatically`,"createPage.sentryExtractHint":`Kobo will extract the issue and write it to .ai/thoughts/`,"createPage.importPr":`Import from a PR`,"createPage.importPrRequiresProject":`Choose a project first`,"createPage.importPrNotSupported":`This project's forge does not support listing pull requests`,"createPage.lockedToPr":`Locked to PR #{number}`,"createPage.prReadyToCreate":`PR #{number} imported — ready to create the workspace.`,"createPage.prResumeIntro":`Resuming work on the existing pull request #{number} "{title}" ({url}).`,"createPage.unlockPrCheckout":`Unlock`,"createPage.workspaceName":`Workspace name (defaults to Notion page title)`,"createPage.workspaceNamePlaceholder":`Workspace name...`,"createPage.instructions":`Additional instructions (optional)...`,"createPage.instructionsPlaceholder":`Describe the task...`,"createPage.tasks":`Tasks ({count})`,"createPage.addTask":`Add a task...`,"createPage.acceptanceCriteria":`Acceptance Criteria ({count})`,"createPage.addCriterion":`Add a criterion...`,"createPage.projectPath":`Enter the project path`,"createPage.branchType":`Branch type`,"createPage.branch":`Branch`,"createPage.noBranches":`No branches found`,"createPage.enterPath":`Enter a project path`,"createPage.skipSetupScript":`Skip setup script`,"createPage.worktreePickerLabel":`Existing worktree`,"createPage.noOrphanWorktrees":`No orphan worktrees in this project`,"createPage.pickWorktreeRequired":`Please pick a worktree to attach`,"createPage.notionExtractHint":`Subtasks and acceptance criteria will be extracted from the Notion page.`,"createPage.errorCreating":`Error creating workspace.`,"createPage.branchAdjusted":"Branch already existed — created `{branch}` instead. The matching worktree folder uses the same suffix.","createPage.localSourceFallback":`Workspace created from the local branch (origin unreachable) — the base may be stale.`,"createPage.validationNotionUrl":`Please paste a valid Notion URL (https://www.notion.so/... or https://app.notion.com/...).`,"createPage.validationDescription":`Please describe the task.`,"createPage.validationName":`Please provide a workspace name.`,"createPage.validationPath":`Please enter the project path.`,"createPage.validationBranch":`Please select a branch.`,"createPage.validationFocusHint":`The field to fix is highlighted below.`,"createPage.progress.validate":`Validating the request…`,"createPage.progress.fetch-source-branch":`Fetching the source branch from origin…`,"createPage.progress.inspect-worktree":`Inspecting the existing worktree…`,"createPage.progress.extract-notion":`Extracting the Notion page…`,"createPage.progress.extract-sentry":`Extracting the Sentry issue…`,"createPage.progress.create-record":`Creating the workspace…`,"createPage.progress.create-tasks":`Creating tasks and acceptance criteria…`,"createPage.progress.create-worktree":`Creating the git worktree…`,"createPage.progress.write-conventions":`Writing git conventions…`,"createPage.progress.write-context-files":`Writing context files…`,"createPage.progress.build-prompt":`Building the initial prompt…`,"createPage.progress.setup-script":`Running your setup script…`,"createPage.progress.start-agent":`Starting the agent…`,"createPage.progress.rollback":`Undoing the failed creation…`,"createPage.progress.done":`Done`,"createPage.progress.step":`Step {index} of {total}`,"createPage.errorAtStep":`Creation failed at step "{step}": {message}`,"createPage.override.title":`Two of your choices were overridden`,"createPage.override.setup-script-forced":`Setup script skipped: re-running it on a worktree you already prepared could destroy its contents.`,"createPage.override.permission-mode-downgraded":`Permission mode moved from Plan to Bypass: an auto-loop cannot run in Plan, which blocks tools and edits.`,"settings.title":`Settings`,"settings.language":`Language`,"settings.projectColor":`Color`,"settings.projectColorClear":`Clear`,"settings.projectColorDefault":`Default (grey)`,"settings.workspaceListSection":`Workspace list`,"settings.flattenWorkspaceList":`Flatten workspace list`,"settings.flattenWorkspaceListHint":`Show all workspaces in a single flat list with a project badge, instead of grouping by project.`,"settings.skillSuite.section":`Skill suite`,"settings.skillSuite.superpowers":`Superpowers`,"settings.skillSuite.gstack":`gstack`,"settings.skillSuite.custom":`Custom`,"settings.skillSuite.superpowersHint":`Opinionated TDD / brainstorm / plan workflow (github.com/obra/superpowers).`,"settings.skillSuite.gstackHint":`Garry Tan's stack — /review, /ship, /qa, /office-hours, etc. (github.com/garrytan/gstack).`,"settings.skillSuite.superpowersGstack":`Superpowers + gstack`,"settings.skillSuite.superpowersGstackHint":`Both suites stack — superpowers for process discipline (brainstorm / TDD / plans / principles-level review), gstack for concrete workflows (/review, /qa, /browse, /design-review, /investigate).`,"settings.skillSuite.ecc":`ECC`,"settings.skillSuite.eccHint":`affaan-m's agent-harness framework — agents, skills, rules and hooks for planning, testing, implementing, reviewing and memorizing (github.com/affaan-m/ECC).`,"settings.skillSuite.allThree":`Superpowers + gstack + ECC`,"settings.skillSuite.allThreeHint":`All three stack — superpowers for process discipline, gstack for concrete workflows, ECC for structured multi-agent review/implementation passes.`,"settings.skillSuite.customHint":`Compose the five prompts below from any templates you choose, then edit them freely.`,"settings.skillSuite.reloadDefaults":`Reload defaults`,"settings.skillSuite.reloadDefaultsConfirm":`Replace the five custom prompts with the agnostic defaults?`,"settings.skillSuite.customPrompts":`Custom prompts`,"settings.skillSuite.agnostic":`Agnostic baseline`,"settings.skillSuite.importPrompt":`Import a template`,"settings.skillSuite.imported":`Template imported. You can now edit it.`,"settings.skillSuite.importFailed":`Unable to import the template`,"settings.skillSuite.reviewTemplate":`Review template`,"settings.skillSuite.autoLoopReviewGate":`Auto-loop review gate`,"settings.skillSuite.autoLoopGroomingIntro":`Auto-loop grooming intro`,"settings.skillSuite.qaTemplate":`QA template`,"settings.skillSuite.brainstormingInstruction":`Brainstorming-phase instruction`,"settings.global":`Global`,"settings.projects":`Projects`,"settings.globalSettings":`Global Settings`,"settings.defaultModel":`Default model`,"settings.defaultModelClaude":`Default model (Claude Code)`,"settings.defaultModelCodex":`Default model (OpenAI Codex)`,"settings.agentPermissions":`Agent permissions`,"settings.skipPermissions":`Skip permission prompts (--dangerously-skip-permissions)`,"settings.skipPermissionsWarning":`Warning: disabling this will cause all tool permissions (Write, Edit, Bash...) to be auto-denied in headless mode. The agent will only be able to read.`,"settings.notifications":`Notifications`,"settings.browserNotifications":`Browser notifications when agent finishes`,"settings.audioNotifications":`Sound notification when agent finishes`,"settings.enableBrowserNotifications":`Enable browser notifications`,"settings.testBrowserNotification":`Test notification`,"settings.browserNotificationGranted":`Browser notifications allowed`,"settings.browserNotificationDenied":`Browser notifications blocked`,"settings.browserNotificationAsk":`Browser permission required`,"settings.browserNotificationUnsupported":`Browser notifications unavailable`,"settings.browserNotificationPermissionNeeded":`Allow browser notifications to send a test.`,"settings.browserNotificationTestTitle":`Kōbō notification test`,"settings.browserNotificationTestBody":`Browser notifications are working.`,"settings.enableAudio":`Enable audio`,"settings.notificationSound":`Notification sound`,"settings.notificationSoundHint":`Played when the agent finishes or requests permission.`,"settings.questionSound":`Question sound`,"settings.questionSoundHint":`Played only when the agent asks you a question.`,"settings.workspaceCreatedSound":`Workspace creation sound`,"settings.workspaceCreatedSoundHint":`Played after a workspace is created.`,"settings.notificationSoundPreview":`Preview`,"settings.notificationVolume":`Volume`,"settings.notificationSoundHey":`Hey`,"settings.agentErrorSound":`Agent errors`,"settings.agentErrorSoundHint":`Played for quota, rate-limit, and agent errors.`,"settings.notificationSoundBasic":`Basic notification`,"settings.notificationSoundWorkspaceCreated":`Warcraft III — Work`,"settings.notificationSoundTravailTermine":`Work done`,"settings.notificationSoundFaaah":`Faaah`,"settings.notificationSoundCaVaPeter":`It's gonna blow`,"settings.notificationSoundDryFart":`Dry fart`,"settings.notificationSoundForShure":`For shure`,"settings.prSoundSection":`PR / MR and CI`,"settings.soundGeneral":`General sound`,"settings.soundNone":`No sound`,"settings.prCiFailedSound":`CI failed`,"settings.prCiRecoveredSound":`CI recovered`,"settings.prChangesRequestedSound":`Changes requested`,"settings.prApprovedSound":`PR approved`,"settings.prMergeConflictSound":`Merge conflict`,"settings.prReadyToMergeSound":`Ready to merge`,"settings.prMergedSound":`PR merged`,"settings.prCiFailedSoundHint":`Played when CI changes to a failed state.`,"settings.prCiRecoveredSoundHint":`Played when CI recovers from a failure.`,"settings.prChangesRequestedSoundHint":`Played when a review requests changes.`,"settings.prApprovedSoundHint":`Played when the pull request is approved.`,"settings.prMergeConflictSoundHint":`Played when a merge conflict is detected.`,"settings.prReadyToMergeSoundHint":`Played when the pull request becomes ready to merge.`,"settings.prMergedSoundHint":`Played when the pull request is merged.`,"settings.notificationSoundSeptiemeCompagnie03":`7ème compagnie 03`,"settings.notificationSoundAllerFtg":`Aller FTG`,"settings.notificationSoundArreteDeMentir":`Arrête de mentir`,"settings.notificationSoundArretezLesMessages":`Arrêtez d'envoyer les messages`,"settings.notificationSoundBahAlorsOnEstNul":`Bah alors, on est nul`,"settings.notificationSoundGtaVDeath":`GTA V — Death`,"settings.notificationSoundNanTuDegages":`Nan, tu dégages`,"settings.notificationSoundNanWallahPardon":`Nan, wallah, pardon`,"settings.notificationSoundOuaisCestGreg":`Ouais, c'est Greg`,"settings.notificationSoundPasCaZinedine":`Pas ça, Zinedine`,"settings.notificationSoundTaGueule":`Ta gueule`,"settings.notificationSoundTuVasLaFermer":`Tu vas la fermer`,"settings.notificationSoundYaaa":`Yaaa`,"settings.notificationSoundMaisLaisseMoiDormirZebi":`Mais laisse-moi dormir zebi`,"settings.defaultPermissionMode":`Default permission mode`,"settings.defaultPermissionModeClaude":`Default permission mode (Claude Code)`,"settings.defaultPermissionModeCodex":`Default permission mode (OpenAI Codex)`,"settings.defaultPermissionModeHint":`Mode applied when creating a new workspace. Plan = read-only first, Bypass = skip prompts, Strict = auto-accept edits with allow-list, Interactive = ask before each tool.`,"settings.activityFeed":`Activity feed`,"settings.verboseMessages":`Show verbose system messages (task_progress, task_started)`,"settings.showThinkingBlocks":`Show agent thinking blocks`,"settings.whipSettings":`Whip`,"settings.whipSettingsHint":`Configure the optional whip shortcut and volume.`,"settings.whipEnabled":`Enable whip`,"settings.whipEnabledHint":`Shows the interactive whip control in eligible running workspaces.`,"settings.whipVolume":`Whip volume`,"settings.whipVolumeMasterAudioDisabled":`Master audio is off. Enable audio notifications to adjust the whip volume; your saved value is preserved.`,"whip.overlayLabel":`Interactive whip`,"whip.overlayInstructions":`Move the pointer to control the whip. Press Enter or Space to crack it. Press Escape to close.`,"settings.whipShortcut":`Whip shortcut`,"settings.whipShortcutHint":`Click, then press the shortcut to use.`,"settings.whipShortcutRecording":`Press a shortcut…`,"settings.whipShortcutButtonLabel":`Whip shortcut: {shortcut}`,"settings.whipShortcutRecordingLabel":`Recording whip shortcut. Press a shortcut…`,"settings.whipShortcutReset":`Reset shortcut`,"settings.whipShortcutReserved":`This shortcut is reserved by the browser.`,"settings.testIntegration":`Test connection`,"pwa.offline":`You are offline. Chat and agents require the Kōbō server.`,"pwa.reconnecting":`Reconnecting to the Kōbō server…`,"pwa.installReady":`Install Kōbō as an app.`,"pwa.install":`Install`,"pwa.ignore":`Ignore`,"pwa.updateReady":`A Kōbō update is available.`,"pwa.reload":`Reload`,"chat.searchWorkspaceHistory":`Search workspace history`,"chat.historySearch.user":`You`,"chat.historySearch.agent":`Agent`,"chat.openInGitDiff":`Open in Git diff`,"timeline.title":`Session timeline`,"timeline.export":`Export diagnostic`,"timeline.unnamed":`Agent session`,"timeline.tools":`{count} tools`,"timeline.errors":`{count} errors`,"settings.availableVariables":`Available template variables`,"settings.prPromptTemplate":`PR prompt template`,"settings.prPromptPlaceholder":`Instructions for the agent when creating GitHub PRs...`,"settings.prPromptHint":`Use the template variables listed above (double curly brace syntax).`,"settings.reviewPromptTemplate":`Review prompt template`,"settings.reviewPromptPlaceholder":`Instructions for the agent when reviewing branch changes...`,"settings.ciFixPromptTemplate":`CI fix prompt template`,"settings.ciFixPromptHint":`Sent to the agent when a workspace has failing CI. Variables (double-brace syntax): pr_url, pr_number, pr_title, branch_name, source_branch, workspace_name, workspace_id, project_name, failed_jobs, ci_run_url.`,"settings.ciFixPromptPlaceholder":`Ask the agent to diagnose and fix the failing CI jobs...`,"settings.finalizationPromptTemplate":`Auto-loop finalization prompt`,"settings.finalizationPromptHint":`Default prompt for the final auto-loop iteration (last quality checks). Used when a project leaves its own finalization prompt empty.`,"settings.finalizationPromptPlaceholder":`Run final quality checks before closing the workspace...`,"settings.notionInitialPrompt":`Notion initial prompt`,"settings.notionInitialPrompt.help":`Appended to the workspace creation prompt when the workspace has a Notion ticket. Variables: {variables}.`,"settings.notionInitialPrompt.project":`Notion initial prompt (override)`,"settings.sentryInitialPrompt":`Sentry initial prompt`,"settings.sentryInitialPrompt.help":`Appended to the workspace creation prompt when the workspace has a Sentry issue. Variables: {variables}.`,"settings.sentryInitialPrompt.project":`Sentry initial prompt (override)`,"settings.initialPrompt.inheritHint":`Leave blank to inherit. Type any whitespace character to disable injection at this level.`,"settings.resetToDefault":`Reset to default`,"settings.resetFailed":`Failed to load default value`,"settings.sentryIntegration":`Sentry integration`,"settings.var.prNumber":`PR number (e.g., 42)`,"settings.var.prUrl":`Full URL of the created PR`,"settings.var.branchName":`Working branch name`,"settings.var.sourceBranch":`Source branch the PR targets`,"settings.var.workspaceName":`Workspace name`,"settings.var.projectName":`Last segment of the project path`,"settings.var.notionUrl":`Notion URL if set, empty otherwise`,"settings.var.commits":`Bulleted commit list between source and head`,"settings.var.diffStats":`Git shortstat summary (files, insertions, deletions)`,"settings.var.tasks":`Regular tasks as a checkbox list`,"settings.var.acceptanceCriteria":`Acceptance criteria as a checkbox list`,"settings.gitConventions":`Git conventions (global)`,"settings.gitConventionsPlaceholder":`# Git conventions...`,"settings.gitConventionsHint":`These conventions are written to .ai/.git-conventions.md in each new workspace and must be followed by the agent before any git operation. Overridden by per-project conventions if defined.`,"settings.setupScript":`Setup script`,"settings.cleanupScript":`Cleanup script`,"settings.archiveScript":`Archive script`,"settings.archiveScriptHint":`Shell script run server-side in the worktree when a workspace is archived. Leave empty to disable.`,"settings.archiveScriptPlaceholder":`e.g. clean up containers, free disk space…`,"settings.hook.sessionEndedTitle":`Hook: session ended`,"settings.hook.sessionEndedHint":`Runs when an agent session ends, whatever the reason. Reads KOBO_SESSION_END_REASON (completed / error / killed / watchdog), KOBO_SESSION_STOP_CAUSE, KOBO_AUTOLOOP_ACTIVE, KOBO_SESSION_ID and KOBO_SESSION_EXIT_CODE. Empty = disabled.`,"settings.hook.sessionEndedPlaceholder":`e.g. npm test, or notify a chat channel…`,"settings.hook.prMergedTitle":`Hook: PR merged`,"settings.hook.prMergedHint":`Runs when a PR is detected as merged, before the workspace is archived or purged — the worktree is still on disk. Reads KOBO_PR_NUMBER and KOBO_PR_URL. Empty = disabled.`,"settings.hook.prMergedPlaceholder":`e.g. trigger a deployment, tag a release…`,"settings.hook.autoLoopDisabledTitle":`Hook: auto-loop stopped`,"settings.hook.autoLoopDisabledHint":`Runs whenever auto-loop is disabled, by Kōbō or by you. Reads KOBO_AUTOLOOP_REASON (completed / stall / error / user-action / awaiting-clarification) and KOBO_TASKS_PENDING. Empty = disabled.`,"settings.hook.autoLoopDisabledPlaceholder":`e.g. send a notification when the loop stalls…`,"settings.changeSourceBranchScript":`Change-source-branch script`,"settings.changeSourceBranchScript.help":`Replaces the built-in cherry-pick when non-empty. The script owns git, PR base, force-push and conflicts; Kōbō still refuses while the agent is running and updates the source-branch metadata on exit 0.`,"settings.changeSourceBranchScript.envHelp":`KOBO_NEW_BASE — new source branch chosen in the dialog
|
|
@@ -17,4 +17,4 @@ KOBO_PR_NUMBER — PR/MR number on the resolved forge (empty if none open)`
|
|
|
17
17
|
# Or directly via git (works on GitHub even after branch deletion):
|
|
18
18
|
git fetch origin pull/[pr-number]/head:[branch-name]
|
|
19
19
|
git worktree add [path] [branch-name]`,"settings.purgeDocsRestoreFootnote":`GitHub keeps the PR head ref accessible long after the source branch is deleted (months / years). Auto-detection runs in the 30s watcher — no UI action needed once the folder is back.`,"settings.purgeDocsPermissionsTitle":`Avoiding permission errors during purge`,"settings.purgeDocsPermissionsIntro":`Docker often leaves root-owned files in node_modules / vendor inside the worktree. When Kōbō tries to remove them, you hit EACCES / EPERM and the purge fails. Two ways to prevent it:`,"settings.purgeDocsPermissionsDocker":'Configure your container to run as your host user — USER directive in the Dockerfile, or `user: "${UID}:${GID}"` in docker-compose (with UID/GID exported in your shell).',"settings.purgeDocsPermissionsAcl":`Pre-seed the worktrees root with a default ACL — safety net that works in MOST cases (ext4/btrfs/xfs + standard Docker bind mount). Each new file then inherits an access entry for your user, on top of the nominal owner:`,"settings.purgeDocsPermissionsAclCommand":` setfacl -d -m u:$(whoami):rwX [worktrees-root]`,"settings.purgeDocsPermissionsFootnote":"ACL limitations: do NOT work on named Docker volumes (use a bind mount), filesystems without ACL support (NTFS, exFAT, tmpfs), strict SELinux with `:Z`, or when Docker `userns-remap` is enabled. The most reliable solution remains configuring the user inside the container (option 1). Tip: `rwX` (capital X) only adds the executable bit on directories and already-executable files — cleaner than `rwx` which would make every text file executable.","settings.purgeDocsPermissionsRecoverTitle":`Unblock an already-broken worktree (existing root-owned files)`,"settings.purgeDocsPermissionsRecoverIntro":`If you end up with a worktree already full of root-owned files (Docker has run, vendor / node_modules are stuck), the preventive ACL above is not enough — you need to fix EXISTING files. Two approaches, both run from inside the worktree folder:`,"settings.purgeDocsPermissionsRecoverAclIntro":`Option A — Recursive ACL (preserves root ownership for audit, just adds access for your user alongside):`,"settings.purgeDocsPermissionsRecoverAclCommand":`# set default ACL for future files AND grant access to everything existing
|
|
20
|
-
sudo setfacl -Rd -m u:$(whoami):rwX . && sudo setfacl -R -m u:$(whoami):rwX .`,"settings.purgeDocsPermissionsRecoverChownIntro":`Option B — Take ownership (simpler, loses the "created by root in container" trace but rarely matters):`,"settings.purgeDocsPermissionsRecoverChownCommand":` sudo chown -R $(whoami):$(whoami) .`,"settings.purgeDocsPermissionsRecoverFootnote":"Tip: you can run these commands directly on the worktrees root (e.g. `~/.worktrees/`) to cover all existing AND future workspaces at once. Once done, Kōbō purge will work without permission errors.","contextMenu.runSetup":`Run setup script`,"contextMenu.exportEvents":`Export events (CSV)`,"contextMenu.dismissChangesRequested":`Mark 'Changes requested' as seen`,"contextMenu.dismissCiFailure":`Mark 'CI failure' as seen`,"contextMenu.restoreChangesRequested":`Mark 'Changes requested' as unseen`,"contextMenu.restoreCiFailure":`Mark 'CI failure' as unseen`,"contextMenu.exportingEvents":`Preparing export…`,"contextMenu.exportEventsError":`Event export failed`,"contextMenu.openNotion":`Open in Notion`,"contextMenu.openSentry":`Open in Sentry`,"contextMenu.openPr":`Open PR`,"contextMenu.ignorePrWatch":`Ignore PR checks`,"contextMenu.resumePrWatch":`Resume PR checks`,"contextMenu.prWatchToggleFailed":`Failed to update PR checks setting`,"workspace.favorite":`Mark as favorite`,"workspace.unfavorite":`Remove from favorites`,"workspace.showFavoritesOnly":`Show favorites only`,"workspace.searchArchivedToggle":`Also search archived workspaces`,"workspace.descriptionPlaceholder":`Add a short description`,"workspace.descriptionDialogHint":`Plain text, 200 characters max. Leave empty to clear.`,"workspace.descriptionTooLong":`Description must be 200 characters or fewer.`,"workspace.descriptionSaveFailed":`Failed to save description.`,"workspace.agentDescriptionTooltip":`Live status maintained by the agent`,"mcp.tool.setWorkspaceDescription":`Set the workspace short description (≤ 200 chars).`,"tags.manage":`Manage tags`,"tags.manageTitle":`Manage workspace tags`,"tags.noTagsDefined":`No tags defined. Add some in Settings > Global > Tags.`,"tags.orphanedHint":`{count} tag(s) are no longer in the global catalog. Uncheck to remove them.`,"settings.tagsTitle":`Workspace tags`,"settings.tagsHint":`Define the tags you can assign to workspaces. Type to add, click the cross to remove.`,"settings.tagsLabel":`Available tags`,"settings.branchPrefixesTitle":`Branch prefixes`,"settings.branchPrefixesHint":`Manage the git branch prefixes available on the workspace creation page. The first one is pre-selected by default.`,"settings.branchPrefixesEmpty":`No branch prefix defined. Add at least one below.`,"settings.branchPrefixesAddLabel":`New prefix`,"settings.branchPrefixesEditHint":`Click to rename`,"settings.branchPrefixesMoveUp":`Move up`,"settings.branchPrefixesMoveDown":`Move down`,"settings.worktreesTitle":`Git worktrees`,"settings.worktreesHint":`Choose where new workspace worktrees are created. Relative paths are project-relative; Linux/macOS and Windows absolute paths, $HOME, ~, and %USERPROFILE% are supported.`,"settings.worktreesPathLabel":`Worktrees path`,"settings.worktreesPathRequired":`Worktrees path is required.`,"settings.worktreesPrefixByProject":`Prefix worktrees by project name`,"settings.worktreesPrefixByProjectHint":`Place each worktree under a sub-directory named after the project, to avoid collisions when multiple projects share the same worktrees root.`,"settings.shareTitle":`Share configuration`,"settings.shareHint":`Export your settings, templates and tags as a JSON bundle. MCP API keys are stripped from exports for security.`,"settings.exportConfig":`Export`,"settings.importConfig":`Import`,"settings.exportSuccess":`Configuration exported`,"settings.importSuccess":`Configuration imported`,"settings.importConfirmTitle":`Import configuration`,"settings.importConfirmMessage":`This will replace your current settings, templates and tags. Your MCP keys are preserved. Continue?`,"settings.mcp.title":`External LLM connections (MCP)`,"settings.mcp.hint":`Connect an MCP client to read workspace conversations, send messages and answer questions.`,"settings.mcp.remoteDisabled":`Remote connections require network access and a server restart after enabling it.`,"settings.mcp.clientName":`Client name (optional)`,"settings.mcp.connection":`Connection`,"settings.mcp.local":`Local HTTP`,"settings.mcp.remote":`Remote HTTP`,"settings.mcp.proxy":`Reverse proxy`,"settings.mcp.stdio":`Local stdio`,"settings.mcp.copyUrl":`Copy URL`,"settings.mcp.copyConfig":`Copy configuration`,"settings.mcp.copyWithToken":`Copy with token`,"settings.mcp.genericFormat":`These examples use a generic mcpServers format. Adapt the container format to your MCP client. Token placeholders are kept in previews.`,"settings.mcp.tokenUnavailable":`No token is available. Enable network access before copying authenticated configuration.`,"settings.mcp.stdioUnavailable":`The stdio entrypoint is unavailable in this installation. Use HTTP or build Kōbō first.`,"settings.mcp.copyFailed":`Could not copy to the clipboard.`,"tours.settings.mcp.title":`Connect an external LLM`,"tours.settings.mcp.description":`Copy an HTTP or stdio configuration to let an external assistant communicate with your workspaces.`,"settings.network.title":`Network access`,"settings.network.hint":`Control Kōbō from another device on your trusted LAN. Off = localhost only. On = reachable on your network, protected by a token. Restart Kōbō after toggling.`,"settings.network.enable":`Enable network access`,"settings.network.behindProxy":`Behind a reverse proxy`,"settings.network.behindProxyHint":`Kōbō can no longer tell your own machine apart from a proxied request — even localhost will need the token from now on. Enable this only if a reverse proxy (Traefik, nginx, Caddy…) sits in front of Kōbō.`,"settings.network.restartRequired":`Restart Kōbō to apply the new bind address.`,"settings.network.token":`Access token`,"settings.network.copy":`Copy`,"settings.network.copied":`Copied`,"settings.network.regenerate":`Regenerate`,"settings.network.regenerateConfirm":`Regenerate the token? Connected devices will need the new token.`,"settings.network.urls":`LAN URLs`,"settings.network.scan":`Scan to connect`,"settings.network.noUrls":`No LAN address detected.`,"settings.network.loadFailed":`Failed to load network access settings.`,"settings.network.updateFailed":`Failed to update network access settings.`,"settings.unsavedChanges.title":`Unsaved changes`,"settings.unsavedChanges.message":`This project has unsaved changes. Switching projects will discard them.`,"settings.unsavedChanges.discard":`Discard and switch`,"settings.unsavedChanges.cancel":`Cancel`,"settings.loadFailed":`Settings could not be loaded`,"settings.loadFailedHint":`Saving is disabled: the form is showing default values, and writing them would overwrite your real configuration.`,"health.title":`Health`,"health.tooltip":`System health`,"changelog.title":`Changelog`,"changelog.tooltip":`What's new in Kōbō`,"changelog.empty":`No changelog available.`,"changelog.current":`current`,"changelog.currentVersion":`Current version: v{version}`,"health.envTitle":`Environment`,"health.version":`Version`,"health.koboHome":`Kōbō home`,"health.dbTitle":`Database`,"health.dbPath":`Path`,"health.dbSize":`Size`,"health.schemaVersion":`Schema version`,"health.settingsSchemaVersion":`Settings schema`,"health.runtimesTitle":`Agent runtimes`,"health.claudeCliTitle":`Claude Code`,"health.claudeCliMissing":`claude not on PATH`,"health.codexCliTitle":`OpenAI Codex`,"health.codexCliMissing":`codex binary not resolvable`,"health.forgeCliTitle":`Forge CLI (gh / glab)`,"health.forgeCliMissing":`Neither gh nor glab found — pull requests and CI watching are unavailable`,"health.workspacesTitle":`Workspaces`,"health.workspacesCount":`{total} total, {archived} archived`,"health.worktreesMissing":`{count} worktree(s) missing on disk`,"health.sessionsTitle":`Agent sessions`,"health.sessionsOrphaned":`{n} orphaned running session(s)`,"health.integrationsTitle":`Integrations`,"health.integrationConfigured":`configured`,"health.integrationMissing":`not configured`,"health.integrationDisabled":`disabled`,"settings.integrationEnabled":`Enable integration`,"health.activeTitle":`Active state`,"health.activeQuotaBackoffs":`Pending quota backoffs`,"health.activeWakeups":`Scheduled wakeups`,"health.activeAutoLoop":`Auto-loop running`,"health.activeAgentSessions":`Live agent sessions`,"health.activeDevServers":`Running dev servers`,"health.noneActive":`None.`,"health.quotaResumeAt":`resumes at {time}`,"health.wakeupAt":`wakes at {time}`,"health.startedAgo":`started {time} ago`,"health.autoLoopReady":`ready, iterating`,"health.autoLoopGrooming":`grooming in progress`,"session.started":`Session started`,"session.ended":`Session ended`,"session.compacted":`Context compacted`,"session.endedCompleted":`Turn finished — send a message to continue`,"session.endedKilled":`Session stopped`,"session.endedError":`Session ended on an error`,"session.endedWatchdog":`Session force-closed after a period of inactivity`,"tool.running":`Running...`,"activity.raw_lines":`Raw output lines ({n})`,"activity.loading_older":`Loading older messages…`,"activity.compacting":`Compacting context…`,"activity.prev_user_message":`Previous user message`,"activity.scroll_to_bottom":`Scroll to bottom`,"activity.empty":`Nothing yet`,"activity.emptyHint":`The agent output will show up here as soon as a session starts.`,"activity.a11y.region":`Agent activity announcements`,"activity.a11y.agentSaid":`Agent: {text}`,"activity.a11y.toolStarted":`Tool {name} started`,"activity.a11y.toolFinished":`Tool {name} finished`,"activity.a11y.toolFailed":`Tool {name} failed`,"chat.systemPrompt":`System prompt`,"chat.agent":`Agent`,"chat.cleanupScript":`Cleanup script`,"chat.archiveScript":`Archive script`,"chat.setupScript":`Setup script`,"chat.hookScript":`Hook {event}`,"chat.scriptDone":`Done`,"chat.scriptComplete":`[{phase}] Complete`,"chat.scriptError":`[{phase}] Error: {message}`,"chat.unknownError":`unknown`,"chat.you":`You`,"chat.session":`Session`,"chat.nActions":`{n} action | {n} actions`,"chat.lastUpdatedAt":`Last updated at {time}`,"chat.scrollToTurnTop":`Scroll to top of this message`,"migration.backing_up":`Backing up the database…`,"migration.running":`Migrating agent data — {processed}/{total}`,"migration.error":`Migration failed`,"migration.backup_location":`A backup was saved at {path}. Restart Kōbō to retry.`,"migration.retry":`Restart Kōbō to retry.`,"engine.select":`Engine`,"engine.model":`Model`,"engine.effort":`Reasoning effort`,"wakeup.scheduledIn":`Next wakeup in {n}s`,"wakeup.scheduledAt":`Next wakeup at {time}`,"wakeup.firing":`Waking up...`,"wakeup.reason":`Reason: {reason}`,"wakeup.cancel":`Cancel this wakeup`,"wakeup.pendingIndicator":`Wakeup scheduled`,"cron.pendingIndicator":`{n} cron(s) scheduled`,"schedule.tabLabel":`Schedule`,"schedule.panelTitle":`Automation`,"schedule.panelDescription":`Wake this workspace later or run instructions on a schedule.`,"schedule.activeTitle":`Active schedules`,"schedule.emptyTitle":`Nothing scheduled`,"schedule.emptyDescription":`Create a wakeup or recurring task below.`,"schedule.cancelWakeup":`Cancel this wakeup`,"schedule.cancelCron":`Delete this recurring task`,"schedule.createTitle":`Create a schedule`,"schedule.createDescription":`Choose when and how the agent should run.`,"schedule.typeWakeup":`One-time wakeup`,"schedule.typeRecurring":`Recurring task`,"schedule.wakeupDescription":`Run the prompt once after a delay.`,"schedule.cronDescription":`Run the prompt repeatedly on a fixed schedule.`,"schedule.promptHint":`Instructions that will be sent to the agent`,"schedule.frequencyTitle":`Frequency`,"schedule.advancedDescription":`Use a raw cron expression`,"schedule.cronExpressionLabel":`Cron expression`,"schedule.sessionModeTitle":`Execution session`,"schedule.modeResume":`Resume session`,"schedule.oneShotHint":`Remove this schedule after its first run.`,"schedule.wakeupTitle":`Wakeup pending`,"schedule.cronsTitle":`Recurring schedules`,"schedule.noWakeup":`No wakeup scheduled`,"schedule.noCrons":`No cron scheduled`,"schedule.invalidCron":`Inactive: invalid expression. Remove and recreate this schedule.`,"schedule.nextFireAt":`next at {time}`,"schedule.lastFiredAt":`last fired {time} ago`,"schedule.addCronTitle":`Add a recurring task`,"schedule.addWakeupTitle":`Schedule a wakeup`,"schedule.every":`Every`,"schedule.unitMinutes":`minutes`,"schedule.unitHours":`hours`,"schedule.unitDays":`days`,"schedule.daysDriftWarning":`The interval may shrink to 1 day at the end of the month (cron limitation).`,"schedule.advancedExpression":`Advanced expression (optional)`,"schedule.advancedHint":`Raw cron (e.g. */15 * * * *) or {'@'}hourly/{'@'}daily — overrides the picker when set.`,"schedule.promptLabel":`Prompt`,"schedule.labelOptional":`Label (optional)`,"schedule.delayMinutes":`Delay (minutes)`,"schedule.modeFresh":`New session`,"schedule.oneShot":`Run only once`,"schedule.addCronBtn":`Add cron`,"schedule.addWakeupBtn":`Schedule wakeup`,"schedule.cronCreated":`Recurring task added`,"schedule.wakeupCreated":`Wakeup scheduled`,"askUserQuestion.title":`The agent is asking a question`,"askUserQuestion.submit":`Submit answer`,"askUserQuestion.multiSelectHint":`Select one or more options`,"askUserQuestion.otherOption":`Other`,"askUserQuestion.otherOptionHint":`specify in your next chat message`,"askUserQuestion.freeFormLabel":`Specify your answer`,"askUserQuestion.freeFormHint":`This answer will be sent directly to the agent.`,"askUserQuestion.noPending":`No pending question`,"askUserQuestion.next":`Next`,"askUserQuestion.previous":`Previous`,"askUserQuestion.cancel":`Cancel`,"askUserQuestion.cancelTooltip":`Skip this question — the agent will proceed without an answer`,"askUserQuestion.collapse":`Collapse the question panel`,"askUserQuestion.expand":`Expand the question panel`,"permissionRequest.title":`The agent wants to use a tool`,"permissionRequest.allow":`Allow`,"permissionRequest.allowOnce":`Allow once`,"permissionRequest.allowTurn":`Allow this turn`,"permissionRequest.operationUnavailable":`Operation details unavailable; approve once or the entire tool.`,"permissionRequest.allowOperation":`Always this operation`,"permissionRequest.allowTool":`Always this tool`,"permissionRequest.deny":`Deny`,"permissionRequest.tool":`Tool`,"permissionRequest.input":`Input`,"permissionRequest.rawInput":`Technical details`,"permissionRequest.collapse":`Collapse the permission panel`,"permissionRequest.expand":`Expand the permission panel`,"permissionRequest.denied":`denied by user`,"workspaceStatus.created":`created`,"workspaceStatus.extracting":`extracting`,"workspaceStatus.brainstorming":`brainstorming`,"workspaceStatus.compacting":`compacting`,"chatInput.compactingBanner":`Context compaction in progress. Sending will be available when it finishes.`,"workspaceStatus.executing":`running`,"workspaceStatus.awaitingUser":`awaiting your answer`,"workspaceStatus.completed":`completed`,"workspaceStatus.idle":`idle`,"workspaceStatus.error":`error`,"workspaceStatus.quota":`quota reached`,"workspaceStatus.retrying":`auto-resuming`,"workspaceList.prOpen":`#{n} — Pull request open`,"workspaceList.prWatchDisabledIndicator":`PR checks ignored for this workspace`,"workspaceList.prChangesRequested":`#{n} — Changes requested`,"workspaceList.attentionCiFailed":`CI failed`,"workspaceList.attentionChangesRequested":`Changes requested`,"workspaceList.attentionReadyToMerge":`Ready to merge`,"autoLoop.toggle":`Auto-loop`,"autoLoop.start":`Start auto-loop`,"autoLoop.prepare":`Prepare for auto-loop`,"autoLoop.reprepare":`Re-prepare for auto-loop`,"autoLoop.reprepareTooltip":`Re-run the grooming pass to add or refresh tasks before resuming the loop`,"autoLoop.prepareBusy":`Wait for the agent to finish before preparing`,"autoLoop.forceReady":`I know what I'm doing — skip grooming`,"autoLoop.forceReadyConfirm":`Skip grooming and mark auto-loop ready? This may cause the loop to stall if tasks aren't atomic.`,"autoLoop.stop":`Stop auto-loop`,"autoLoop.notReady":`Run 'Prepare for auto-loop' first`,"autoLoop.noTasks":`Add tasks first`,"autoLoop.progress":`Auto-loop · {done}/{total} tasks`,"autoLoop.preparing":`Auto-loop · preparing`,"autoLoop.preparingTooltip":`Grooming in progress — the agent is creating / reviewing tasks. The loop will start running once it calls mark_auto_loop_ready.`,"autoLoop.running":`Auto-loop running`,"autoLoop.startInMode":`Start in auto-loop mode`,"autoLoop.brainstormModelPrefix":`Brainstorm:`,"autoLoop.brainstormModelTooltip":`Model used only for the initial brainstorming session — every task after that uses the model picked above`,"autoLoop.brainstormReasoningPrefix":`Brainstorm:`,"autoLoop.brainstormReasoningTooltip":`Reasoning level used only for the initial brainstorming session`,"autoLoop.executionModelPrefix":`Loop:`,"autoLoop.executionModelTooltip":`Model used for every auto-loop task after the initial brainstorming session`,"autoLoop.sessionMode.perTask":`New session per task`,"autoLoop.sessionMode.label":`Session:`,"autoLoop.sessionMode.perTaskTooltip":`Each task starts a fresh Claude Code session with no memory of prior tasks`,"autoLoop.sessionMode.continuous":`Continuous session`,"autoLoop.sessionMode.continuousTooltip":`All tasks run in the same session — the agent keeps full context, but the session grows longer over time`,"koboCommand.prepAutoloopDesc":`Prepare tasks for auto-loop mode (groom for atomicity)`,"staleSessionBanner.title":`Auto-loop running`,"staleSessionBanner.message":`You're viewing an older session — the agent is currently working in the latest one.`,"staleSessionBanner.staleTitle":`Older session`,"staleSessionBanner.staleMessage":`You're viewing an older session — messages you send go to this session, not the latest one.`,"staleSessionBanner.switchToCurrent":`Switch to current`,"network.login.title":`Network access`,"network.login.description":`This Kōbō requires a token to be controlled from the network. Paste the token shown in Settings on the host machine.`,"network.login.tokenLabel":`Token`,"network.login.tokenPlaceholder":`Paste your token`,"network.login.connect":`Connect`,"network.login.invalid":`Invalid token`,"network.login.serverError":`Server error — try again.`,"network.login.unreachable":`Kōbō is unreachable — check your connection.`,"layout.toggleWorkspaces":`Toggle workspaces panel`,"layout.togglePanel":`Toggle side panel`,"unsaved.title":`Leave without saving?`,"unsaved.message":`You have unsaved changes. Leaving this page discards them.`,"unsaved.leave":`Leave`,"unsaved.stay":`Stay`,"prCheckout.staleRetriesExhausted":`The repository state kept changing while we tried to apply your choices. Close this dialog and try again from the pull request picker.`,"prPicker.title":`Import from a pull request`,"prPicker.filterAll":`All`,"prPicker.filterMine":`Mine`,"prPicker.filterReviewRequested":`Review requested`,"prPicker.searchPlaceholder":`Search pull requests…`,"prPicker.loadMore":`Load more`,"prPicker.empty":`No open pull request matches.`,"prPicker.forkNotSupported":`This PR comes from a fork; Kōbō cannot check it out.`,"prPicker.loadFailed":`Failed to load pull requests.`,"prPicker.badge.workspaceExists":`Already open in Kōbō`,"prPicker.badge.worktreePresent":`Worktree present`,"prPicker.badge.localBranch":`Local branch`,"prPicker.badge.new":`New`,"prPicker.badge.draft":`Draft`,"prCheckout.title":`Prepare the worktree`,"prCheckout.apply":`Apply`,"prCheckout.cancel":`Cancel`,"prCheckout.retry":`Retry`,"prCheckout.diagnoseFailed":`Failed to diagnose the pull request.`,"prCheckout.resolveFailed":`Failed to resolve the pull request checkout.`,"prCheckout.path.required":`Enter a worktree path that does not already exist.`,"prCheckout.workspace.restoreNotAvailable":"Restoring a purged workspace isn't available yet from here. Recreate its worktree folder on disk (e.g. `git worktree add`) and Kōbō will reattach it automatically within about 30 seconds.","prCheckout.staleReloaded":`The repository changed; the diagnosis has been refreshed.`,"prCheckout.step.blocked":`Cannot continue`,"prCheckout.step.path":`Worktree location`,"prCheckout.step.workspace":`Existing workspace`,"prCheckout.step.worktree":`Existing worktree`,"prCheckout.step.operation":`Git operation in progress`,"prCheckout.step.changes":`Uncommitted changes`,"prCheckout.step.divergence":`Local branch vs origin`,"prCheckout.workspace.activeHint":`A workspace named "{name}" already tracks this branch.`,"prCheckout.workspace.open":`Open that workspace`,"prCheckout.workspace.continue":`Continue on another path`,"prCheckout.workspace.unarchive":`Unarchive and open it`,"prCheckout.workspace.restore":`Recreate its worktree`,"prCheckout.worktree.orphanHint":`A worktree already sits on this branch at {path}.`,"prCheckout.worktree.attach":`Attach it`,"prCheckout.worktree.branchInUse":`This branch is already checked out. Attach its existing worktree.`,"prCheckout.worktree.createElsewhere":`Create another one elsewhere`,"prCheckout.operation.hint":`A {operation} is in progress in that worktree.`,"prCheckout.operation.abort":`Abort it`,"prCheckout.operation.cancel":`Leave it alone and stop here`,"prCheckout.changes.hint":`{modified} modified, {staged} staged, {untracked} untracked.`,"prCheckout.changes.stash":`Stash them`,"prCheckout.changes.commit":`Commit them`,"prCheckout.changes.discard":`Discard them (kept as a labelled stash)`,"prCheckout.changes.keepResetConflict":`Keeping local changes is incompatible with a hard reset. Stash or commit them first, or keep the branch.`,"prCheckout.changes.keep":`Keep them as they are`,"prCheckout.divergence.behindHint":`Your branch is {behind} commit(s) behind origin.`,"prCheckout.divergence.aheadHint":`Your branch has {ahead} unpushed commit(s).`,"prCheckout.divergence.divergedHint":`{ahead} ahead, {behind} behind origin.`,"prCheckout.divergence.fastForward":`Fast-forward to origin`,"prCheckout.divergence.rebase":`Rebase onto origin`,"prCheckout.divergence.resetHard":`Reset to origin (a backup branch is created first)`,"prCheckout.divergence.keep":`Keep the local state`,"prCheckout.blocked.forgeUnavailable":`The forge CLI is missing or not authenticated.`,"prCheckout.blocked.forkPr":`This PR comes from a fork; Kōbō cannot check it out.`,"prCheckout.blocked.headBranchDeleted":`The branch no longer exists on the remote.`,"prCheckout.blocked.indexLock":`Another git process is running (index.lock is present).`,"prCheckout.blocked.pathOccupied":`{path} already exists and is not a worktree.`,"prCheckout.blocked.worktreeOtherBranch":`{path} is a worktree on another branch ({branch}).`,"prCheckout.blocked.noCommonAncestor":`A local branch named {branch} exists with unrelated history.`,"split.title":`Double workspace`,"split.open":`Open side by side`,"split.openBeside":`Open beside`,"split.close":`Close split view`,"split.left":`Left workspace`,"split.right":`Right workspace`,"split.choose":`Choose a workspace`,"split.recipient":`Send to: {name}`,"absence.title":`Since your last visit`,"absence.pending":`Changes to review`,"absence.retention":`Significant activity from the last 30 days, recorded since this feature was installed. Visit tracking is local to this browser.`,"absence.since":`Since {date}`,"absence.error":`Unable to load activity.`,"absence.retry":`Retry`,"absence.empty":`No new activity.`,"absence.more":`Load more`,"absence.markRead":`Mark displayed events as read`,"absence.kind.question":`Question asked`,"absence.kind.permission":`Approval requested`,"absence.kind.completed":`Session completed`,"absence.kind.error":`Agent error`,"absence.kind.pr-merged":`PR merged`,"absence.kind.pr-approved":`PR approved`,"absence.kind.pr-changes-requested":`Changes requested`,"absence.kind.pr-ci-failed":`CI failed`,"absence.kind.pr-ci-recovered":`CI recovered`,"absence.kind.pr-merge-conflict":`Merge conflict`,"absence.kind.pr-ready-to-merge":`PR ready to merge`,"absence.kind.archived":`Workspace archived`,"absence.kind.purged":`Worktree purged`,"absence.kind.restored":`Worktree restored`,"tours.split.controls.title":`Two independent workspaces`,"tours.split.controls.description":`Choose one workspace per pane. Resize the divider; each conversation keeps its own recipient and panels.`,"tours.home.sort.title":`Sort workspaces`,"tours.home.sort.description":`Choose the order and direction within each group. Your choice is remembered.`,"tours.home.activity.title":`Review activity after an absence`,"tours.home.activity.description":`At the bottom of the left drawer, find questions, session endings, errors and PR changes since your last visit.`},Lc=`modulepreload`,Rc=function(e){return`/`+e},zc={},Y=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=Rc(t,n),t=s(t),t in zc)return;zc[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Lc,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Bc=`kobo:locale`,Vc=[`en`,`fr`,`de`,`es`,`it`];function Hc(e){return Vc.includes(e)}function Uc(){let e=localStorage.getItem(Bc);if(e&&Hc(e))return e;let t=navigator.language.split(`-`)[0];return t&&Hc(t)?(localStorage.setItem(Bc,t),t):(localStorage.setItem(Bc,`en`),`en`)}var Wc=Uc(),Gc=Io({legacy:!1,locale:Wc,fallbackLocale:`en`,messages:{en:Ic}}),Kc=new Set([`en`]),qc={fr:()=>Y(()=>import(`./fr-KCK6r5ga.js`),[]),de:()=>Y(()=>import(`./de-BdLe7apJ.js`),[]),es:()=>Y(()=>import(`./es-C1LM-3aq.js`),[]),it:()=>Y(()=>import(`./it-BM6t0IGU.js`),[])},Jc=0;async function Yc(e){let t=++Jc;if(!Kc.has(e)&&e!==`en`){let t=await qc[e]();Gc.global.setLocaleMessage(e,t.default),Kc.add(e)}t===Jc&&(Gc.global.locale.value=e,Xc(e))}function Xc(e){typeof document>`u`||(document.documentElement.lang=e)}Xc(Wc);var Zc=class{constructor(){Vn(this,`pending`,new Map)}wait(e,t,n){return new Promise((r,i)=>{let a=setTimeout(()=>o(Error(n)),3e4),o=e=>{clearTimeout(a),this.pending.delete(t),e?i(e):r()};this.pending.set(t,{workspaceId:e,finish:o})})}settle(e,t,n){let r=this.pending.get(t);r?.workspaceId===e&&r.finish(n)}disconnect(e){for(let t of this.pending.values())t.finish(Error(e))}},Qc=new Map,$c=d(0);function el(){$c.value++}function tl(e){e.reconnectTimer&&=(clearTimeout(e.reconnectTimer),void 0)}function nl(e){let t=Qc.get(e);t&&(tl(t),t.ws&&(t.ws.onclose=null,t.ws.readyState===WebSocket.OPEN&&t.ws.close()),t.onDataDisposable?.dispose(),t.terminal.dispose(),Qc.delete(e),el())}var rl=5e3,il=Ve(`agent-stream`,()=>{let e=t(new Map),n=t(new Map),r=t(new Map),i=t(new Map),a=t(new Map),o=t(new Map),s=t(new Map),c=t(new Map),l=d(new Map),u=t(new Map);function f(e,t){p(e);let n=0;for(let[r,i]of u.value.get(e)??[])t(r)&&(n+=i);return n}function p(e){l.value.get(e)}function m(e){l.value.set(e,(l.value.get(e)??0)+1)}function h(e){return l.value.get(e)??0}function g(e){let t=c.value.get(e);return t||(t=new Set,c.value.set(e,t)),t}function _(e){return p(e),s.value.get(e)??!1}function v(e,t){(s.value.get(e)??!1)!==t&&(s.value.set(e,t),m(e))}function y(t){return p(t),e.value.get(t)??[]}function b(e){return p(e),n.value.get(e)??[]}function x(e){return p(e),r.value.get(e)??[]}function S(e){return p(e),i.value.get(e)??[]}function C(e){return p(e),a.value.get(e)}function w(e){return p(e),o.value.get(e)??!0}function T(t,o,s,c,l,d=!0){let f=e.value.get(t)??[],p=n.value.get(t)??[],h=r.value.get(t)??[],_=i.value.get(t)??[],v=g(t);if(c&&v.has(c))return;if(d){let e=u.value.get(t)??new Map;e.set(l??null,(e.get(l??null)??0)+1),u.value.set(t,e)}let y=f.length===0;f.push(o),p.push(s??new Date().toISOString()),h.push(l??null),_.push(c??null),c&&v.add(c),e.value.set(t,f),n.value.set(t,p),r.value.set(t,h),i.value.set(t,_),y&&c&&a.value.set(t,c),E(t,f,p,h,_),m(t)}function E(e,t,n,r,i){let s=t.length-rl;if(s<=0)return;let c=s+500-1,l=i.slice(0,c),u=g(e);for(let e of l)e&&u.delete(e);t.splice(0,c),n.splice(0,c),r.splice(0,c),i.splice(0,c);let d=i.find(e=>typeof e==`string`);d?a.value.set(e,d):a.value.delete(e),o.value.set(e,!0)}function D(t,o,s,c){let l=e.value.get(t)??[],u=n.value.get(t)??[],d=r.value.get(t)??[],f=i.value.get(t)??[],p=g(t),h=[];for(let e=0;e<o.length;e++){let t=o[e];if(!t)continue;let n=c.eventIds[e]??null;n&&p.has(n)||(l.push(t),u.push(s[e]??new Date().toISOString()),d.push(c.sessionIds[e]??null),f.push(n),n&&p.add(n),h.push(e))}if(h.length===0)return h;if(e.value.set(t,l),n.value.set(t,u),r.value.set(t,d),i.value.set(t,f),!a.value.has(t)){let e=f.find(e=>typeof e==`string`);e&&a.value.set(t,e)}return E(t,l,u,d,f),m(t),h}function O(t,s,c,l){let u=[...s],d=c?[...c]:s.map(()=>new Date().toISOString()),f=l?.sessionIds?[...l.sessionIds]:s.map(()=>null),p=l?.eventIds?[...l.eventIds]:s.map(()=>null);e.value.set(t,u),n.value.set(t,d),r.value.set(t,f),i.value.set(t,p);let h=g(t);h.clear();for(let e of p)e&&h.add(e);l?.oldestId?a.value.set(t,l.oldestId):a.value.delete(t),l&&typeof l.hasMoreOlder==`boolean`?o.value.set(t,l.hasMoreOlder):o.value.delete(t),E(t,u,d,f,p),m(t)}function ee(t,s,c,l){if(s.length===0){o.value.set(t,l.hasMoreOlder),m(t);return}let u=e.value.get(t)??[],d=n.value.get(t)??[],f=r.value.get(t)??[],p=i.value.get(t)??[],h=l.sessionIds??s.map(()=>null),_=l.eventIds??s.map(()=>null);e.value.set(t,[...s,...u]),n.value.set(t,[...c,...d]),r.value.set(t,[...h,...f]),i.value.set(t,[..._,...p]);let v=g(t);for(let e of _)e&&v.add(e);l.oldestId&&a.value.set(t,l.oldestId),o.value.set(t,l.hasMoreOlder),m(t)}function k(t,a){let o=e.value.get(t),s=i.value.get(t);if(!o||!s)return;let c=s.indexOf(a);if(c===-1)return;let l=n.value.get(t),u=r.value.get(t);o.splice(c,1),s.splice(c,1),l&&l.splice(c,1),u&&u.splice(c,1),g(t).delete(a),m(t)}function A(t){e.value.delete(t),n.value.delete(t),r.value.delete(t),i.value.delete(t),a.value.delete(t),o.value.delete(t),s.value.delete(t),c.value.delete(t),u.value.delete(t),m(t)}return{events:e,timestamps:n,sessionIds:r,eventIds:i,versions:l,versionFor:h,liveAppendCountFor:f,eventsFor:y,timestampsFor:b,sessionIdsFor:x,eventIdsFor:S,oldestIdFor:C,hasMoreOlderFor:w,isCompacting:_,setCompacting:v,append:T,merge:D,reset:O,prepend:ee,removeByEventId:k,clear:A}}),al=class extends Error{constructor(e,t,n,r){super(e),Vn(this,`status`,void 0),Vn(this,`code`,void 0),Vn(this,`body`,void 0),this.name=`ApiError`,this.status=t,this.code=n,this.body=r}},ol=class extends Error{constructor(e){super(`Request timed out after ${e} ms`),Vn(this,`timeoutMs`,void 0),this.name=`ApiTimeoutError`,this.timeoutMs=e}},sl=3e4;function cl(e,t){let n=e.trim();if(n.length===0)return{message:`HTTP ${t}`,code:void 0};try{let e=JSON.parse(n),r=typeof e.code==`string`?e.code:void 0;return typeof e.error==`string`&&e.error.length>0?{message:e.error,code:r}:typeof e.message==`string`&&e.message.length>0?{message:e.message,code:r}:{message:`HTTP ${t}`,code:r}}catch{return{message:n.slice(0,500),code:void 0}}}async function X(e,t={}){let{body:n,timeoutMs:r=sl,signal:i,headers:a,...o}=t;if(i?.aborted)throw i.reason??new DOMException(`Aborted`,`AbortError`);let s=new AbortController,c=!1,l=r>0?setTimeout(()=>{c=!0,s.abort()},r):null,u=()=>s.abort();i?.addEventListener(`abort`,u);try{let t={...o,signal:s.signal};n===void 0?a&&(t.headers=a):typeof n==`string`||n instanceof FormData||n instanceof Blob?(t.body=n,a&&(t.headers=a)):(t.body=JSON.stringify(n),t.headers={"Content-Type":`application/json`,...a??{}});let r=await fetch(e,t);if(!r.ok){let e=await r.text(),{message:t,code:n}=cl(e,r.status);throw new al(t,r.status,n,e)}if(r.status===204)return;let i=await r.text();if(i.length===0)return;try{return JSON.parse(i)}catch(e){throw new al(`Server returned a non-JSON body for a successful response: ${e instanceof Error?e.message:String(e)}`,r.status,void 0,i)}}catch(e){throw c?new ol(r):e}finally{l!==null&&clearTimeout(l),i?.removeEventListener(`abort`,u)}}var ll=`/sounds`,ul=[{id:`basic-notification.mp3`,labelKey:`settings.notificationSoundBasic`},{id:`hey.mp3`,labelKey:`settings.notificationSoundHey`},{id:`warcraft-3-humain-travail.mp3`,labelKey:`settings.notificationSoundWorkspaceCreated`},{id:`travail_termine.mp3`,labelKey:`settings.notificationSoundTravailTermine`},{id:`faaah.mp3`,labelKey:`settings.notificationSoundFaaah`},{id:`ca_va_peter.mp3`,labelKey:`settings.notificationSoundCaVaPeter`},{id:`dry-fart.mp3`,labelKey:`settings.notificationSoundDryFart`},{id:`for-shure.mp3`,labelKey:`settings.notificationSoundForShure`},{id:`7eme-compagnie-03.mp3`,labelKey:`settings.notificationSoundSeptiemeCompagnie03`},{id:`aller-ftg.mp3`,labelKey:`settings.notificationSoundAllerFtg`},{id:`arrete-de-mentir.mp3`,labelKey:`settings.notificationSoundArreteDeMentir`},{id:`arretez-les-messages.mp3`,labelKey:`settings.notificationSoundArretezLesMessages`},{id:`bah-alors-on-est-nul.mp3`,labelKey:`settings.notificationSoundBahAlorsOnEstNul`},{id:`gta-v-death.mp3`,labelKey:`settings.notificationSoundGtaVDeath`},{id:`nan-tu-degages.mp3`,labelKey:`settings.notificationSoundNanTuDegages`},{id:`nan-wallah-pardon.mp3`,labelKey:`settings.notificationSoundNanWallahPardon`},{id:`ouais-cest-greg.mp3`,labelKey:`settings.notificationSoundOuaisCestGreg`},{id:`pas-ca-zinedine.mp3`,labelKey:`settings.notificationSoundPasCaZinedine`},{id:`ta-gueule.mp3`,labelKey:`settings.notificationSoundTaGueule`},{id:`tu-vas-la-fermer.mp3`,labelKey:`settings.notificationSoundTuVasLaFermer`},{id:`yaaa.mp3`,labelKey:`settings.notificationSoundYaaa`},{id:`mais-laisse-moi-dormir-zebi.mp3`,labelKey:`settings.notificationSoundMaisLaisseMoiDormirZebi`}],dl=`hey.mp3`,fl=`inherit`,pl=`none`,ml=[`audioPrCiFailedSound`,`audioPrCiRecoveredSound`,`audioPrChangesRequestedSound`,`audioPrApprovedSound`,`audioPrMergeConflictSound`,`audioPrReadyToMergeSound`,`audioPrMergedSound`],hl=[`audioPrCiFailedEnabled`,`audioPrCiFailedVolume`,`audioPrCiRecoveredEnabled`,`audioPrCiRecoveredVolume`,`audioPrChangesRequestedEnabled`,`audioPrChangesRequestedVolume`,`audioPrApprovedEnabled`,`audioPrApprovedVolume`,`audioPrMergeConflictEnabled`,`audioPrMergeConflictVolume`,`audioPrReadyToMergeEnabled`,`audioPrReadyToMergeVolume`,`audioPrMergedEnabled`,`audioPrMergedVolume`],gl={audioPrCiFailedSound:fl,audioPrCiRecoveredSound:fl,audioPrChangesRequestedSound:fl,audioPrApprovedSound:fl,audioPrMergeConflictSound:fl,audioPrReadyToMergeSound:fl,audioPrMergedSound:fl,audioPrCiFailedEnabled:!1,audioPrCiFailedVolume:1,audioPrCiRecoveredEnabled:!1,audioPrCiRecoveredVolume:1,audioPrChangesRequestedEnabled:!1,audioPrChangesRequestedVolume:1,audioPrApprovedEnabled:!1,audioPrApprovedVolume:1,audioPrMergeConflictEnabled:!1,audioPrMergeConflictVolume:1,audioPrReadyToMergeEnabled:!1,audioPrReadyToMergeVolume:1,audioPrMergedEnabled:!1,audioPrMergedVolume:1};function _l(e){return ul.some(t=>t.id===e)}function vl(e){return e&&_l(e)?e:dl}function yl(e){if(e===`none`)return null;if(e!==`inherit`)return typeof e==`string`&&_l(e)?e:void 0}function bl(e){let t=yl(e);return t===null?pl:t??`inherit`}function xl(e){return`${ll}/${vl(e)}`}var Sl=`mod+shift+x`,Cl=[`mod`,`ctrl`,`meta`,`alt`,`shift`],wl=new Set([`mod+w`,`mod+shift+w`,`ctrl+w`,`ctrl+shift+w`,`meta+w`,`meta+shift+w`]),Tl=new Set([`control`,...Cl]);function El(e){return wl.has(e)}function Dl(e){if(typeof e!=`string`||e.length===0||e!==e.toLowerCase()||El(e))return null;let t=e.split(`+`);if(t.some(e=>e.length===0))return null;let n=t.at(-1);if(!n||!/^[a-z0-9][a-z0-9_-]*$/.test(n)||Tl.has(n))return null;let r=t.slice(0,-1),i=new Set,a=-1;for(let e of r){let t=Cl.indexOf(e);if(t<=a)return null;a=t,i.add(e)}return{modifiers:i,key:n}}var Ol=new Set([`control`,`meta`,`alt`,`shift`]),kl={" ":`space`,"+":`plus`,"-":`minus`,"=":`equal`,",":`comma`,".":`period`,"/":`slash`,"\\":`backslash`,";":`semicolon`,"'":`quote`,"[":`bracketleft`,"]":`bracketright`,"`":`backquote`};function Al(e){let t=kl[e]??e.toLowerCase();return/^[a-z0-9][a-z0-9_-]*$/.test(t)?t:null}function jl(e=globalThis.navigator?.platform??``){return/mac|iphone|ipad|ipod/i.test(e)?`mac`:`other`}function Ml(e,t){if(e.key===`Escape`)return{status:`cancelled`};if(Ol.has(e.key.toLowerCase()))return{status:`pending`};let n=Al(e.key);if(!n)return{status:`pending`};let r=new Set;(t===`mac`?e.metaKey:e.ctrlKey)&&r.add(`mod`),t===`mac`&&e.ctrlKey&&r.add(`ctrl`),t===`other`&&e.metaKey&&r.add(`meta`),e.altKey&&r.add(`alt`),e.shiftKey&&r.add(`shift`);let i=[...Cl.filter(e=>r.has(e)),n].join(`+`);return El(i)?{status:`reserved`}:{status:`accepted`,shortcut:i}}function Nl(e,t,n){let r=Dl(t),i=Al(e.key);if(!r||!i||i!==r.key)return!1;let a=r.modifiers.has(`ctrl`)||n===`other`&&r.modifiers.has(`mod`),o=r.modifiers.has(`meta`)||n===`mac`&&r.modifiers.has(`mod`);return e.ctrlKey===a&&e.metaKey===o&&e.altKey===r.modifiers.has(`alt`)&&e.shiftKey===r.modifiers.has(`shift`)}function Pl(e){return{space:`Space`,arrowup:`↑`,arrowdown:`↓`,arrowleft:`←`,arrowright:`→`}[e]??e.toUpperCase()}function Fl(e,t){let n=Dl(e);return n?t===`mac`?`${[n.modifiers.has(`mod`)||n.modifiers.has(`meta`)?`⌘`:``,n.modifiers.has(`ctrl`)?`⌃`:``,n.modifiers.has(`alt`)?`⌥`:``,n.modifiers.has(`shift`)?`⇧`:``].join(``)}${Pl(n.key)}`:[n.modifiers.has(`mod`)||n.modifiers.has(`ctrl`)?`Ctrl`:``,n.modifiers.has(`meta`)?`Meta`:``,n.modifiers.has(`alt`)?`Alt`:``,n.modifiers.has(`shift`)?`Shift`:``,Pl(n.key)].filter(Boolean).join(`+`):e}var Il=`.worktrees`;function Ll(e){return btoa(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}var Rl=Ve(`settings`,{state:()=>({global:{defaultModelByEngine:{"claude-code":`auto`,codex:`auto`},dangerouslySkipPermissions:!0,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,finalizationPrompt:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,editorCommand:``,fileManagerCommand:``,terminalCommand:``,autoPurgeOnPrMerged:!1,autoLoopMaxRetries:5,awaitingUserReminderMinutes:0,wsEventsRetentionDays:0,wsEventsKeepPerWorkspace:0,browserNotifications:!0,audioNotifications:!0,audioQuestionNotifications:!1,audioWorkspaceCreatedNotifications:!1,audioAgentErrorNotifications:!1,audioNotificationSound:`hey.mp3`,audioQuestionSound:`inherit`,audioWorkspaceCreatedSound:`inherit`,audioAgentErrorSound:`inherit`,...gl,audioNotificationVolume:1,audioQuestionVolume:1,audioWorkspaceCreatedVolume:1,audioAgentErrorVolume:1,notionStatusProperty:``,notionInProgressStatus:``,notionAssigneeProperty:``,notionUserId:``,defaultPermissionModeByEngine:{"claude-code":`plan`,codex:`plan`},notionMcpKey:``,sentryMcpKey:``,bitbucketToken:``,bitbucketUsername:``,notionEnabled:!0,sentryEnabled:!0,showThinkingBlocks:!0,whipEnabled:!1,whipShortcut:Sl,whipVolume:1,tags:[],branchPrefixes:[],setupScript:``,cleanupScript:``,cleanupScriptMode:`no-tasks`,cleanupScriptOnlyOnChanges:!1,archiveScript:``,changeSourceBranchScript:``,sessionEndedScript:``,prMergedScript:``,autoLoopDisabledScript:``,worktreesPath:Il,worktreesPrefixByProject:!1,voiceEnabled:!1,voicePttKey:`alt`,voiceLanguage:`auto`,voiceModel:null,voiceCommandPath:``,voiceFfmpegPath:``,voiceTemperature:0,voicePrompt:``,voiceTranslateToEnglish:!1,voiceSuppressNonSpeechTokens:!0,flattenWorkspaceList:!1,skillSuite:`superpowers`,customReviewTemplate:``,customAutoLoopReviewGate:``,customAutoLoopGroomingIntro:``,customQaPromptTemplate:``,customBrainstormingInstruction:``},voiceModels:[],voiceModelsLoading:!1,voiceModelsDir:``,voiceRuntime:null,activeMcpServers:[],projects:[],loading:!1,loaded:!1,loadError:null,showVerboseSystemMessages:localStorage.getItem(`kobo:showVerboseSystemMessages`)===`true`}),getters:{getProjectByPath:e=>t=>e.projects.find(e=>e.path===t)??null,projectPaths:e=>e.projects.map(e=>e.path)},actions:{_assertLoaded(){if(!this.loaded)throw Error(`Settings were never loaded successfully — refusing to overwrite the stored configuration`)},async fetchSettings(){this.loading=!0;try{let e=await X(`/api/settings`);this.global=e.global,this.projects=e.projects,this.loadError=null,this.loaded=!0}catch(e){this.loadError=e instanceof Error?e.message:String(e),this.loaded=!1,console.error(`[settings store] fetchSettings failed:`,e)}finally{this.loading=!1}},async fetchActiveMcpServers(){try{this.activeMcpServers=await X(`/api/settings/mcp-servers`)}catch(e){console.error(`[settings store] fetchActiveMcpServers failed:`,e),this.activeMcpServers=[]}},async fetchGlobalDefaults(){return X(`/api/settings/defaults`)},async previewRetention(e,t){return X(`/api/settings/ws-events-retention-preview?days=${e}&keep=${t}`)},async updateGlobal(e){this._assertLoaded(),this.global=await X(`/api/settings/global`,{method:`PUT`,body:e})},async upsertProject(e,t){this._assertLoaded();let n=await X(`/api/settings/projects/${Ll(e)}`,{method:`PUT`,body:t}),r=this.projects.findIndex(t=>t.path===e);r>=0?this.projects[r]=n:this.projects.push(n)},toggleVerboseSystemMessages(){this.setVerboseSystemMessages(!this.showVerboseSystemMessages)},setVerboseSystemMessages(e){this.showVerboseSystemMessages=e,localStorage.setItem(`kobo:showVerboseSystemMessages`,String(e))},async deleteProject(e){this._assertLoaded(),await X(`/api/settings/projects/${Ll(e)}`,{method:`DELETE`}),this.projects=this.projects.filter(t=>t.path!==e)},async fetchVoiceModels(){this.voiceModelsLoading=!0;try{let e=await X(`/api/voice/models`);this.voiceModels=e.available,this.voiceModelsDir=e.modelsDir,this.global.voiceModel=e.activeModel}catch(e){console.error(`[settings store] fetchVoiceModels failed:`,e)}finally{this.voiceModelsLoading=!1}},async cancelVoiceModelDownload(e){try{await X(`/api/voice/models/${encodeURIComponent(e)}/download`,{method:`DELETE`})}catch(e){if(!(e instanceof al)||e.status!==404)throw e}await this.fetchVoiceModels()},async fetchVoiceRuntime(){try{this.voiceRuntime=await X(`/api/voice/runtime`)}catch(e){console.error(`[settings store] fetchVoiceRuntime failed:`,e)}},async downloadVoiceModel(e){await X(`/api/voice/models/${encodeURIComponent(e)}/download`,{method:`POST`}),await this.fetchVoiceModels()},async deleteVoiceModel(e){await X(`/api/voice/models/${encodeURIComponent(e)}`,{method:`DELETE`}),await this.fetchVoiceModels()}}});function zl(e,t){let n=e=>e.split(`.`).map(e=>Number.parseInt(e,10)||0),r=n(e),i=n(t),a=Math.max(r.length,i.length);for(let e=0;e<a;e++){let t=(r[e]??0)-(i[e]??0);if(t!==0)return t}return 0}var Bl=`kobo:dismissed-update-version`,Vl=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/,Hl=e=>typeof e==`string`&&Vl.test(e),Ul=Ve(`update`,()=>{let e=d(null),t=d(null),n=d(localStorage.getItem(Bl)),r=d(null),i=d(null),a=d(`unknown`),o=null,s=k(()=>t.value&&e.value&&zl(t.value,e.value)>0&&t.value!==n.value?t.value:null);function c(n){if(!Hl(n.currentVersion))return;let o=typeof n.lastAttemptAt==`string`&&Number.isFinite(Date.parse(n.lastAttemptAt))?n.lastAttemptAt:null;r.value&&(!o||Date.parse(o)<Date.parse(r.value))||(e.value=n.currentVersion,Hl(n.latestVersion)&&(t.value=n.latestVersion),o&&(r.value=o),typeof n.lastSuccessAt==`string`&&(i.value=n.lastSuccessAt),(n.checkStatus===`success`||n.checkStatus===`failed`||n.checkStatus===`unknown`)&&(a.value=n.checkStatus))}function l(){return o||(o=(async()=>{try{let e=await fetch(`/api/changelog`);e.ok&&c(await e.json())}catch{}finally{o=null}})(),o)}function u(){let e=s.value;e&&(n.value=e,localStorage.setItem(Bl,e))}return{currentVersion:e,latestVersion:t,availableVersion:s,lastAttemptAt:r,lastSuccessAt:i,checkStatus:a,applySnapshot:c,refreshSnapshot:l,dismissUpdate:u}}),Wl=new Set([`output`,`complete`,`error`]);function Gl(e){if(!e.startsWith(`hook:`))return null;let t=e.slice(5),n=t.lastIndexOf(`:`);if(n<=0)return null;let r=t.slice(0,n),i=t.slice(n+1);return Wl.has(i)?{event:r,kind:i}:null}function Kl(e){return`hook:${e}`}function ql(e){return e.startsWith(`hook:`)}var Jl=6e3,Yl=typeof window<`u`&&window.parent!==window&&new URLSearchParams(window.location.search).get(`pane`)===`1`;function Xl(e,t=window.location.pathname){return`${t}?pane=1#/workspace/${encodeURIComponent(e)}`}function Zl(e){let t=Number(e??50);return Number.isFinite(t)?Math.max(25,Math.min(75,t)):50}function Ql(e,t){return e&&e!==t?{left:e,right:t}:{left:t}}var $l=null;function eu(e,t){return t.name===`split`&&e.name===`split`&&e.fullPath===$l}async function tu(e,t){let n={name:`split`,query:t},r=e.resolve(n).fullPath;if(!(e.currentRoute.value.fullPath===r||$l)){$l=r;try{await e.replace(n)}finally{$l=null}}}function nu(e,t){return e||Object.keys(t).length>0}var ru=new Map,iu=[],au=!1;function ou(e){let t=ru.get(e);return t||(t=new Audio(xl(e)),ru.set(e,t)),t}function su(e,t){let n=new Audio(xl(vl(e)));n.preload=`auto`,n.volume=t,n.play().catch(()=>{})}function cu(){Yl||`Notification`in window&&Notification.permission==="default"&&Notification.requestPermission()}function lu(e){return typeof e!=`number`||!Number.isFinite(e)?1:Math.max(0,Math.min(1,e))}function uu(){let e=iu.shift();if(!e){au=!1;return}au=!0;let t=ou(vl(e.soundId));t.volume=e.volume,t.currentTime=0;let n=!1,r=()=>{n||(n=!0,t.removeEventListener(`ended`,r),t.removeEventListener(`error`,r),uu())};t.addEventListener(`ended`,r,{once:!0}),t.addEventListener(`error`,r,{once:!0}),t.play().catch(r)}function du(e,t){let n={soundId:vl(e),volume:lu(t)};if(document.visibilityState===`hidden`){su(n.soundId,n.volume);return}iu.push(n),au||uu()}function fu(e,t){let n=ou(vl(e));n.volume=lu(t),n.currentTime=0,n.play().catch(()=>{})}function pu(e,t,n,r,i,a){if(Yl)return;let o=Rl();if(!document.hasFocus()&&o.global.browserNotifications&&`Notification`in window&&Notification.permission===`granted`){let r=new Notification(e,{body:t,icon:`/favicon.ico`});n&&(r.onclick=()=>{window.focus(),window.location.hash=`#/workspace/${n}`,r.close()})}(a??o.global.audioNotifications)&&r!==null&&du(r&&r.length>0?r:o.global.audioNotificationSound??`hey.mp3`,i??o.global.audioNotificationVolume)}function mu(e,t){let n=[{label:t.retryLabel,color:`white`,handler:t.onRetry}];t.detailsLabel&&t.onDetails&&n.push({label:t.detailsLabel,color:`white`,handler:t.onDetails}),n.push({label:t.dismissLabel,color:`grey-5`}),Fc.create({type:`negative`,position:`top`,multiLine:!0,message:e,timeout:t.timeout??0,actions:n})}function hu(e){return(typeof e==`string`?Array.from(e.replace(/[\p{Cc}\s]+/gu,` `).replace(/\p{Cs}/gu,`�`).trim()).slice(0,100).join(``):``)||`External MCP client`}function gu(e){if(!e||typeof e!=`object`)return;let t=e;if(!(t.kind!==`mcp`||t.transport!==`http`&&t.transport!==`stdio`))return{kind:`mcp`,clientName:hu(t.clientName),transport:t.transport}}var _u=new Map,vu=Ve(`devServer`,{state:()=>({statuses:{},logs:{}}),getters:{getStatus:e=>t=>e.statuses[t]??null},actions:{async fetchStatus(e){let t=(_u.get(e)??0)+1;_u.set(e,t);let n=this.statuses[e];try{let r=await X(`/api/dev-server/${e}/status`);_u.get(e)===t&&this.statuses[e]===n&&(this.statuses[e]=r)}catch(e){console.error(`[dev-server store] fetchStatus failed:`,e)}},async startDevServer(e){try{let t=await fetch(`/api/dev-server/${e}/start`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();this.statuses[e]=n}catch(e){throw console.error(`[dev-server store] startDevServer failed:`,e),e}},async stopDevServer(e){try{let t=await fetch(`/api/dev-server/${e}/stop`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();this.statuses[e]=n}catch(e){throw console.error(`[dev-server store] stopDevServer failed:`,e),e}},async fetchLogs(e,t=200){try{let n=await fetch(`/api/dev-server/${e}/logs?tail=${t}`);if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json();return this.logs[e]=r.logs,r.logs}catch(e){return console.error(`[dev-server store] fetchLogs failed:`,e),``}},updateFromWsEvent(e,t){this.statuses[e]=t}}});function yu(e){return e.state===`OPEN`&&e.reviewDecision===`CHANGES_REQUESTED`&&e.reviewers.some(e=>e.state===`CHANGES_REQUESTED`)}function bu(e){return e.state===`OPEN`&&e.ci.rollup===`FAILURE`}function xu(e){return e?bu(e)||yu(e):!1}var Su=[`executing`,`extracting`,`brainstorming`,`compacting`];function Cu(e){return!!e&&Su.includes(e)}function wu(e,t){return Cu(e)&&!t}function Tu(e,t,n){return wu(e,!t||n)}var Eu={created:`workspaceStatus.created`,extracting:`workspaceStatus.extracting`,brainstorming:`workspaceStatus.brainstorming`,executing:`workspaceStatus.executing`,compacting:`workspaceStatus.compacting`,"awaiting-user":`workspaceStatus.awaitingUser`,completed:`workspaceStatus.completed`,idle:`workspaceStatus.idle`,error:`workspaceStatus.error`,quota:`workspaceStatus.quota`};function Du(e){return e?Eu[e]??null:null}async function Ou(e){let t=await e.json().catch(()=>({}));return{ok:!0,branch:t.branch??``,upToDate:t.upToDate===!0}}var ku=class extends Error{constructor(e,t,n){super(e),Vn(this,`code`,void 0),Vn(this,`operation`,void 0),this.name=`WorkspaceActionError`,this.code=t,this.operation=n}};function Au(e){return e===`running`?`in_progress`:e}var ju=5e3,Mu=500,Nu=null,Pu=0,Fu=0,Iu=new Map,Lu=new Map,Ru=new Map,zu=new Map,Bu=new Map,Vu=new WeakMap;function Hu(e){Lu.set(e,(Lu.get(e)??0)+1)}function Uu(e,t,n){let r={...e},i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=t[a],o=e[a],s=(Lu.get(a)??0)!==(n.get(a)??0),c=i?Date.parse(i.updatedAt):NaN,l=o?Date.parse(o.updatedAt):NaN;(s||Number.isFinite(c)&&c>l)&&(i?r[a]=i:delete r[a])}return r}function Wu(e){return e===`claude-code`?`claude-code`:null}var Z=Ve(`workspace`,{state:()=>({workspaces:[],selectedWorkspaceId:null,tasks:[],activityFeeds:{},activityFeedIds:{},activityCounts:{},subagents:{},agentTodos:{},sessions:[],loadingSessions:{},selectedSessionId:null,archivedWorkspaces:[],archivedLoaded:!1,restoringWorktreeIds:[],workspaceLifecycleVersion:0,workspaceLifecycleVersions:{},listRequestVersion:0,archivedListRequestVersion:0,loading:!1,listLoadError:null,listPollFailureStreak:0,activeListLoadFailed:!1,loadingOlderEvents:!1,hasMoreEvents:{},providerUsage:{},chatDraft:``,queuedMessages:{},activeAgentSessionIds:{},settledAgentSessionIds:{},gitRefreshTrigger:0,gitStatsCache:{},pendingWakeups:{},pendingQuotaBackoffs:{},pendingDeferred:{},pendingQueue:{},prSnapshots:{},autoLoopStates:{},crons:{},creationProgress:null,agentLiveness:{},agentLivenessLoaded:{}}),getters:{selectedWorkspace:e=>e.workspaces.find(t=>t.id===e.selectedWorkspaceId)??e.archivedWorkspaces.find(t=>t.id===e.selectedWorkspaceId)??null,needsAttention(e){return e.workspaces.filter(t=>[`error`,`quota`,`awaiting-user`].includes(t.status)||xu(e.prSnapshots[t.id])||!Cu(t.status)&&!!e.prSnapshots[t.id]?.readyToMerge)},running(e){return e.workspaces.filter(t=>Cu(t.status)&&!xu(e.prSnapshots[t.id]))},idle(e){return e.workspaces.filter(t=>[`completed`,`idle`,`created`].includes(t.status)&&!xu(e.prSnapshots[t.id])&&!e.prSnapshots[t.id]?.readyToMerge)},favorites(e){return e.workspaces.filter(e=>e.favoritedAt!==null)},currentAgentTodos:e=>e.selectedWorkspaceId?e.agentTodos[e.selectedWorkspaceId]??[]:[],currentSubagents:e=>{if(!e.selectedWorkspaceId)return[];let t=e.subagents[e.selectedWorkspaceId]??{};return Object.values(t).sort((e,t)=>e.startedAt.localeCompare(t.startedAt))},activityFeed:e=>{if(!e.selectedWorkspaceId)return[];let t=e.activityFeeds[e.selectedWorkspaceId]??[];if(!e.selectedSessionId)return e.sessions.length===0?t:[];let n=e.sessions.find(t=>t.id===e.selectedSessionId)?.engineSessionId??null,r=e.sessions.length>0?e.sessions[e.sessions.length-1].id:null,i=e.selectedSessionId===r;return t.filter(t=>t.sessionId?t.sessionId===e.selectedSessionId||n!==null&&t.sessionId===n:i)},acceptanceCriteria:e=>e.tasks.filter(e=>e.isAcceptanceCriterion),archived:e=>e.archivedWorkspaces,currentProviderUsage(e){let t=e.workspaces.find(t=>t.id===e.selectedWorkspaceId);if(!t)return null;let n=Wu(t.engine);return n?e.providerUsage[n]??null:null}},actions:{clearWorkspaceLocalState(e){delete this.activityFeeds[e],delete this.activityFeedIds[e],delete this.activityCounts[e],delete this.subagents[e],delete this.agentTodos[e],delete this.hasMoreEvents[e],delete this.gitStatsCache[e],delete this.pendingWakeups[e],delete this.pendingQuotaBackoffs[e],delete this.pendingDeferred[e],delete this.pendingQueue[e],delete this.prSnapshots[e],delete this.autoLoopStates[e],delete this.crons[e],delete this.activeAgentSessionIds[e];for(let t of Object.keys(this.queuedMessages))t.startsWith(`${e}:`)&&delete this.queuedMessages[t];Iu.delete(e),Lu.delete(e),Ru.delete(e),zu.delete(e),il().clear(e),localStorage.removeItem(`kobo:session:${e}`)},setCreationProgress(e){this.creationProgress=e},clearCreationProgress(){this.creationProgress=null},async toggleFavorite(e){let t=this.workspaces.find(t=>t.id===e);if(!t)return;let n=t.favoritedAt,r=n===null,i=r?new Date().toISOString():null;this.workspaces=this.workspaces.map(t=>t.id===e?{...t,favoritedAt:i}:t);try{let t=await fetch(`/api/workspaces/${e}/favorite`,{method:r?`POST`:`DELETE`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();this.workspaces=this.workspaces.map(t=>t.id===e?n:t)}catch(t){throw this.workspaces=this.workspaces.map(t=>t.id===e?{...t,favoritedAt:n}:t),t}},async togglePrWatch(e){let t=this.workspaces.find(t=>t.id===e);if(!t)return;let n=t.prWatchDisabledAt===null,r=n?new Date().toISOString():null;this.workspaces=this.workspaces.map(t=>t.id===e?{...t,prWatchDisabledAt:r}:t);try{let t=await fetch(`/api/workspaces/${e}/pr-watch-disabled`,{method:n?`POST`:`DELETE`});if(!t.ok)throw Error(`HTTP ${t.status}`);if(n){let n=await t.json();this.workspaces=this.workspaces.map(t=>t.id===e?n:t),delete this.prSnapshots[e],Hu(e)}else{let{workspace:n,prSnapshot:r}=await t.json();this.workspaces=this.workspaces.map(t=>t.id===e?n:t),r?this.prSnapshots[e]=r:delete this.prSnapshots[e],Hu(e)}}catch(n){throw this.workspaces=this.workspaces.map(n=>n.id===e?{...n,prWatchDisabledAt:t.prWatchDisabledAt}:n),n}},async setWorkspaceTags(e,t){let n=this.workspaces.find(t=>t.id===e);if(!n)return;let r=n.tags,i=[...t];this.workspaces=this.workspaces.map(t=>t.id===e?{...t,tags:i}:t);try{let n=await fetch(`/api/workspaces/${e}/tags`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tags:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json();this.workspaces=this.workspaces.map(t=>t.id===e?r:t)}catch(t){throw this.workspaces=this.workspaces.map(t=>t.id===e?{...t,tags:r}:t),t}},async fetchOrphanWorktrees(e){return X(`/api/git/orphan-worktrees?projectPath=${encodeURIComponent(e)}`,{cache:`no-store`})},async fetchWorkspaces(){let e=++this.listRequestVersion,t=new Map(Iu),n=this.workspaceLifecycleVersion;this.loading=!0;try{let r=await X(`/api/workspaces`);if(e!==this.listRequestVersion||n!==this.workspaceLifecycleVersion)return;let i=new Map(this.workspaces.map(e=>[e.id,e]));this.workspaces=(Array.isArray(r)?r:r.workspaces??[]).map(e=>(Iu.get(e.id)??0)===(t.get(e.id)??0)?e:i.get(e.id)??e),this.listLoadError=null,this.activeListLoadFailed=!1,this.listPollFailureStreak=0;for(let e of this.workspaces)il().setCompacting(e.id,e.status===`compacting`),[`completed`,`idle`,`error`,`quota`].includes(e.status)&&this.finalizeRunningSubagents(e.id)}catch(t){if(e!==this.listRequestVersion||n!==this.workspaceLifecycleVersion)return;this.listLoadError=t instanceof Error?t.message:String(t),this.activeListLoadFailed=!0,console.error(`[workspace store] fetchWorkspaces failed:`,t)}finally{e===this.listRequestVersion&&(this.loading=!1)}},async retryLoadWorkspaces(){await this.fetchWorkspaces(),this.archivedLoaded&&await this.fetchArchivedWorkspaces()},async fetchArchivedWorkspaces(){let e=++this.archivedListRequestVersion,t=new Map(Iu),n=this.workspaceLifecycleVersion;try{let r=await X(`/api/workspaces/archived`);if(e!==this.archivedListRequestVersion||n!==this.workspaceLifecycleVersion)return;let i=new Map(this.archivedWorkspaces.map(e=>[e.id,e]));this.archivedWorkspaces=r.map(e=>(Iu.get(e.id)??0)===(t.get(e.id)??0)?e:i.get(e.id)??e),this.archivedLoaded=!0,this.activeListLoadFailed||(this.listLoadError=null)}catch(t){if(e!==this.archivedListRequestVersion||n!==this.workspaceLifecycleVersion)return;this.listLoadError=t instanceof Error?t.message:String(t),console.error(`[workspace store] fetchArchivedWorkspaces failed:`,t)}},async fetchWorkspaceDetails(e){let t=this.workspaceLifecycleVersions[e]??0,n=(zu.get(e)??0)+1;zu.set(e,n);let r=Iu.get(e)??0;try{let i=await X(`/api/workspaces/${e}`);if(this.selectedWorkspaceId!==e||zu.get(e)!==n)return;if(t===(this.workspaceLifecycleVersions[e]??0)){let t=(Iu.get(e)??0)!==r,n=i.workspace??i,a=t?{}:n;typeof a.status==`string`&&il().setCompacting(e,a.status===`compacting`);let o=this.workspaces.findIndex(t=>t.id===e);if(o>=0)this.workspaces[o]={...this.workspaces[o],...a};else{let t=this.archivedWorkspaces.findIndex(t=>t.id===e);t>=0?this.archivedWorkspaces[t]={...this.archivedWorkspaces[t],...a}:a?.archivedAt&&this.archivedWorkspaces.unshift(a)}}i.tasks&&(this.tasks=i.tasks),`agentLiveness`in i&&(Iu.get(e)??0)===r&&this.applyAgentLiveness(e,i.agentLiveness)}catch(e){console.error(`[workspace store] fetchWorkspaceDetails failed:`,e)}},applyAgentLiveness(e,t){if(this.agentLivenessLoaded={...this.agentLivenessLoaded,[e]:!0},t){this.agentLiveness={...this.agentLiveness,[e]:t};return}if(e in this.agentLiveness){let t={...this.agentLiveness};delete t[e],this.agentLiveness=t}},async createWorkspace(e,t=[]){try{let n=JSON.stringify(e);if(t.length>0){n=new FormData,n.append(`workspace`,JSON.stringify(e));for(let e of t)n.append(`attachments`,e)}let r=await fetch(`/api/workspaces`,{method:`POST`,...typeof n==`string`?{headers:{"Content-Type":`application/json`}}:{},body:n});if(!r.ok){let e=await r.json().catch(()=>({}));throw new ku(typeof e.error==`string`?e.error:`HTTP ${r.status}`,typeof e.step==`string`?e.step:void 0)}let i=r.headers.get(`X-Kobo-Branch-Adjusted`)===`1`,a=r.headers.get(`X-Kobo-Source-Fallback`)===`local`,o=await r.json(),s=o.workspace??o;this.invalidateWorkspaceLifecycleReads(s.id);let c=this.workspaces.findIndex(e=>e.id===s.id);return c>=0?this.workspaces[c]=s:this.workspaces.push(s),e.autoLoop&&this.fetchAutoLoopStates(),s._branchAdjusted=i,s._sourceFallback=a,s}catch(e){throw console.error(`[workspace store] createWorkspace failed:`,e),e}},async startWorkspace(e,t,n,r){try{await X(`/api/workspaces/${e}/start`,{method:`POST`,body:{prompt:t,agentSessionId:n,resume:r}}),await this.fetchWorkspaces()}catch(e){throw console.error(`[workspace store] startWorkspace failed:`,e),e}},async previewEngineHandoff(e,t){let n=await fetch(`/api/workspaces/${e}/engine-handoff-preview`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({engine:t})}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error??`HTTP ${n.status}`);return r.handoff},async switchEngine(e,t){let n=await fetch(`/api/workspaces/${e}/switch-engine`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error??`HTTP ${n.status}`);let i=r.workspace,a=this.workspaces.findIndex(t=>t.id===e);return a>=0&&(this.workspaces[a]=i),await this.fetchSessions(e,r.sessionId),{sessionId:r.sessionId}},async stopWorkspace(e){try{let t=await fetch(`/api/workspaces/${e}/stop`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);await this.fetchWorkspaces()}catch(e){throw console.error(`[workspace store] stopWorkspace failed:`,e),e}},async interruptAgent(e,t={}){try{let n=await fetch(`/api/workspaces/${e}/interrupt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>void 0),t=typeof e==`object`&&e&&!Array.isArray(e)?e:void 0,r=typeof t?.error==`string`?t.error:`HTTP ${n.status}`,i=t?.code;throw new ku(r,n.status===409&&(i===`no_agent_running`||i===`session_not_active`)||n.status===500&&i===`interrupt_failed`?i:void 0)}}catch(e){throw console.error(`[workspace store] interruptAgent failed:`,e),e}},async deleteWorkspace(e,t){try{let n=await fetch(`/api/workspaces/${e}`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t??{})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=[];if(n.status===200){let e=await n.json().catch(()=>({}));r=Array.isArray(e.warnings)?e.warnings:[]}return this.workspaces=this.workspaces.filter(t=>t.id!==e),this.archivedWorkspaces=this.archivedWorkspaces.filter(t=>t.id!==e),this.clearWorkspaceLocalState(e),nl(e),this.selectedWorkspaceId===e&&(this.selectedWorkspaceId=null,this.tasks=[]),{warnings:r}}catch(e){throw console.error(`[workspace store] deleteWorkspace failed:`,e),e}},async deleteAllArchived(e){try{let t=this.archivedWorkspaces.map(e=>e.id),n=await fetch(`/api/workspaces/archived`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e??{})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json().catch(()=>({})),i=typeof r.deleted==`number`?r.deleted:0,a=Array.isArray(r.warnings)?r.warnings:[];this.archivedWorkspaces=[];for(let e of t)this.clearWorkspaceLocalState(e),nl(e),this.selectedWorkspaceId===e&&(this.selectedWorkspaceId=null,this.tasks=[]);return{deleted:i,warnings:a,ids:t}}catch(e){throw console.error(`[workspace store] deleteAllArchived failed:`,e),e}},async updateModel(e,t){try{let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json(),i=this.workspaces.findIndex(t=>t.id===e);i>=0&&(this.workspaces[i]=r)}catch(e){throw console.error(`[workspace store] updateModel failed:`,e),e}},async updateWorkspaceDescription(e,t){let n=this.workspaces.findIndex(t=>t.id===e);if(n<0)throw Error(`Workspace '${e}' not found in store`);let r=this.workspaces[n].description;this.workspaces[n]={...this.workspaces[n],description:t};try{let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({description:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}let r=await n.json();this.workspaces=this.workspaces.map(t=>t.id===e?{...t,...r}:t)}catch(n){let i=this.workspaces.findIndex(t=>t.id===e);throw i>=0&&this.workspaces[i].description===t&&(this.workspaces[i]={...this.workspaces[i],description:r}),n}},async updateReasoningEffort(e,t){try{let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reasoningEffort:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json(),i=this.workspaces.findIndex(t=>t.id===e);i>=0&&(this.workspaces[i]=r)}catch(e){throw console.error(`[workspace store] updateReasoningEffort failed:`,e),e}},async renameWorkspaceBranch(e,t){let n=await fetch(`/api/workspaces/${e}/rename-branch`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({newName:t})}),r=await n.json().catch(()=>null);if(!n.ok)throw new ku(r?.error??`Rename failed`,r?.code);let i=r,a=this.workspaces.findIndex(t=>t.id===e);return a>=0&&(this.workspaces[a]=i),i},async resyncWorkspaceBranch(e){let t=await fetch(`/api/workspaces/${e}/resync-branch`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();if(n.changed){let t=this.workspaces.findIndex(t=>t.id===e);t>=0&&(this.workspaces[t]={...this.workspaces[t],workingBranch:n.workingBranch})}return n},async updateAgentPermissionMode(e,t){try{let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agentPermissionMode:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json(),i=this.workspaces.findIndex(t=>t.id===e);i>=0&&(this.workspaces[i]=r)}catch(e){throw console.error(`[workspace store] updateAgentPermissionMode failed:`,e),e}},async pushBranch(e,t={}){let n=await fetch(`/api/workspaces/${e}/push`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({force:t.force===!0})});if(!n.ok){let e=await n.json().catch(()=>({error:`Push failed`}));throw new ku(e.error??`Push failed`,e.code,e.operation)}return Ou(n)},async forcePushBranch(e){let t=await fetch(`/api/workspaces/${e}/force-push`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({error:`Push failed`}));throw new ku(e.error??`Push failed`,e.code,e.operation)}return Ou(t)},async fetchGitStats(e,t={}){let n=await X(`/api/workspaces/${e}/git-stats${t.freshFetch?`?freshFetch=1`:``}`,{signal:t.signal,timeoutMs:6e4});return this.gitStatsCache[e]=n,n},async fetchBranchDivergence(e,t={}){let n=`/api/workspaces/${e}/branch-divergence?limit=${t.limit??50}`,r=await fetch(n,{signal:t.signal});if(!r.ok)throw Error(`HTTP ${r.status}`);return await r.json()},async openPullRequest(e){let t=await fetch(`/api/workspaces/${e}/open-pr`,{method:`POST`}),n=await t.json().catch(()=>null);if(!t.ok)throw new ku(n?.error??`Open PR failed`,n?.code);return n},async archiveWorkspace(e){try{let t=await fetch(`/api/workspaces/${e}/archive`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();return this.workspaces=this.workspaces.filter(t=>t.id!==e),this.archivedLoaded&&this.archivedWorkspaces.unshift(n),this.selectedWorkspaceId===e&&(this.selectedWorkspaceId=null,this.tasks=[]),n}catch(e){throw console.error(`[workspace store] archiveWorkspace failed:`,e),e}},invalidateWorkspaceLifecycleReads(e){this.workspaceLifecycleVersion+=1,e&&(this.workspaceLifecycleVersions[e]=(this.workspaceLifecycleVersions[e]??0)+1)},applyRestoredWorkspace(e){this.invalidateWorkspaceLifecycleReads(e.id);let t=this.workspaces.findIndex(t=>t.id===e.id);t===-1?this.workspaces.unshift(e):this.workspaces[t]=e,this.archivedWorkspaces=this.archivedWorkspaces.filter(t=>t.id!==e.id)},restoreWorktree(e){let t=Vu.get(this);t||(t=new Map,Vu.set(this,t));let n=t.get(e);if(n)return n;let r=this.workspaceLifecycleVersions[e]??0;this.restoringWorktreeIds.push(e);let i=(async()=>{try{let t=await fetch(`/api/workspaces/${e}/restore-worktree`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({}));throw new ku(e.error??`HTTP ${t.status}`,e.code)}let{workspace:n}=await t.json();return r===(this.workspaceLifecycleVersions[e]??0)&&this.applyRestoredWorkspace(n),n}finally{this.restoringWorktreeIds=this.restoringWorktreeIds.filter(t=>t!==e),t.delete(e)}})();return t.set(e,i),i},async unarchiveWorkspace(e){try{let t=await fetch(`/api/workspaces/${e}/unarchive`,{method:`POST`});if(!t.ok){if(t.status===409){let e=await t.json().catch(()=>({})),n=Error(e.error??`worktree-purged`);throw n.code=`worktree-purged`,n}throw Error(`HTTP ${t.status}`)}let n=await t.json();return this.archivedWorkspaces=this.archivedWorkspaces.filter(t=>t.id!==e),this.workspaces.unshift(n),n}catch(e){throw console.error(`[workspace store] unarchiveWorkspace failed:`,e),e}},async createTask(e,t,n){try{let r=await fetch(`/api/workspaces/${e}/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:t,isAcceptanceCriterion:n})});if(!r.ok)throw Error(`HTTP ${r.status}`);await this.fetchWorkspaceDetails(e)}catch(e){throw console.error(`[workspace store] createTask failed:`,e),e}},async updateTaskTitle(e,t,n){try{let r=await fetch(`/api/workspaces/${e}/tasks/${t}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:n})});if(!r.ok)throw Error(`HTTP ${r.status}`);await this.fetchWorkspaceDetails(e)}catch(e){throw console.error(`[workspace store] updateTaskTitle failed:`,e),e}},async deleteTask(e,t){try{let n=await fetch(`/api/workspaces/${e}/tasks/${t}`,{method:`DELETE`});if(!n.ok)throw Error(`HTTP ${n.status}`);await this.fetchWorkspaceDetails(e)}catch(e){throw console.error(`[workspace store] deleteTask failed:`,e),e}},selectWorkspace(e){this.selectedWorkspaceId=e,this.selectedSessionId=null,this.sessions=[],this.tasks=[],this.markRead(e),this.fetchWorkspaceDetails(e),this.fetchSessions(e),this.fetchPendingQuotaBackoff(e),this.fetchGitStats(e).catch(()=>{}),this.activityFeeds[e]?.length||od().subscribe(e)},async fetchSessions(e,t){let n=(Ru.get(e)??0)+1;Ru.set(e,n),this.loadingSessions[e]=!0;try{let r=await fetch(`/api/workspaces/${e}/sessions`);if(!r.ok)throw Error(`HTTP ${r.status}`);let i=await r.json();if(this.selectedWorkspaceId!==e||Ru.get(e)!==n)return;if(this.sessions=i,t&&this.sessions.some(e=>e.id===t)){this.selectSession(t);return}let a=this.selectedSessionId&&this.sessions.some(e=>e.id===this.selectedSessionId);if(this.sessions.length>0&&!a){let t=localStorage.getItem(`kobo:session:${e}`),n=t?this.sessions.find(e=>e.id===t):null;this.selectSession(n?n.id:this.sessions[0].id)}}catch(e){console.error(`[workspace store] fetchSessions failed:`,e)}finally{Ru.get(e)===n&&delete this.loadingSessions[e]}},async fetchOlderEvents(e){if(this.loadingOlderEvents||this.hasMoreEvents[e]===!1)return!1;let t=this.activityFeeds[e];if(!t?.length)return!1;let n=t[0].id;this.loadingOlderEvents=!0;try{let t=await fetch(`/api/workspaces/${e}/events?before=${encodeURIComponent(n)}&limit=100`);if(!t.ok)throw Error(`HTTP ${t.status}`);let r=await t.json();if(this.hasMoreEvents[e]=r.hasMore,r.events.length>0){let e=od();for(let t of r.events)e._routeMessage(t)}return r.events.length>0}catch(e){return console.error(`[workspace store] fetchOlderEvents failed:`,e),!1}finally{this.loadingOlderEvents=!1}},selectSession(e){this.selectedSessionId=e,this.selectedWorkspaceId&&localStorage.setItem(`kobo:session:${this.selectedWorkspaceId}`,e)},async createSession(e){try{let t=await fetch(`/api/workspaces/${e}/sessions`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}let n=await t.json();return this.selectedWorkspaceId===e&&(this.sessions.unshift(n),this.selectSession(n.id)),n}catch(e){throw console.error(`[workspace store] createSession failed:`,e),e}},async renameWorkspace(e,t){let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}let r=await n.json(),i=this.workspaces.findIndex(t=>t.id===e);i>=0&&(this.workspaces[i]={...this.workspaces[i],...r});let a=this.archivedWorkspaces.findIndex(t=>t.id===e);a>=0&&(this.archivedWorkspaces[a]={...this.archivedWorkspaces[a],...r})},async renameSession(e,t,n){let r=await fetch(`/api/workspaces/${e}/sessions/${t}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:n})});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}let i=await r.json().catch(()=>null),a=this.sessions.find(e=>e.id===t);a&&(a.name=i?.name??n)},async deleteSession(e,t){let n=await fetch(`/api/workspaces/${e}/sessions/${t}`,{method:`DELETE`}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error??`HTTP ${n.status}`);let i=this.selectedSessionId===t,a=r.workspace;if(a){let t=this.workspaces.findIndex(t=>t.id===e);t>=0&&(this.workspaces[t]=a)}await this.fetchSessions(e),i&&this.selectedWorkspaceId===e&&this.selectSession(this.sessions[0]?.id??null)},addActivityItem(e,t){if(this.activityFeeds[e]||(this.activityFeeds[e]=[]),this.activityFeedIds[e]||(this.activityFeedIds[e]=new Set),this.activityCounts[e]||(this.activityCounts[e]={toolUses:0,agentMessages:0,userMessages:0,errors:0}),t.meta?.sender!==`user`&&t.meta?.sender!==`system-prompt`)for(let t of this.activityFeeds[e])t.meta?.pending&&(t.meta.pending=!1);if(!this.activityFeedIds[e].has(t.id)){this.activityFeedIds[e].add(t.id),this.activityFeeds[e].push(t);let n=this.activityCounts[e];t.type===`tool_use`?n.toolUses++:t.type===`error`&&n.errors++,t.meta?.sender===`user`?n.userMessages++:t.type===`text`&&t.meta?.sender!==`system-prompt`&&n.agentMessages++}let n=this.activityFeeds[e];if(n.length>ju){let t=n.splice(0,n.length-ju),r=this.activityFeedIds[e];for(let e of t)r.delete(e.id)}},removeActivityItem(e,t){let n=this.activityFeeds[e],r=this.activityFeedIds[e];if(!n||!r)return;let i=n.findIndex(e=>e.id===t);if(i<0)return;let[a]=n.splice(i,1);r.delete(t);let o=this.activityCounts[e];o&&a&&(a.type===`tool_use`?o.toolUses=Math.max(0,o.toolUses-1):a.type===`error`&&(o.errors=Math.max(0,o.errors-1)),a.meta?.sender===`user`?o.userMessages=Math.max(0,o.userMessages-1):a.type===`text`&&a.meta?.sender!==`system-prompt`&&(o.agentMessages=Math.max(0,o.agentMessages-1)))},clearActivityFeed(e){e?(delete this.activityFeeds[e],delete this.activityFeedIds[e],delete this.activityCounts[e]):(this.activityFeeds={},this.activityFeedIds={},this.activityCounts={})},applyUsageSnapshot(e){this.providerUsage[e.providerId]=e.snapshot},async requestUsageRefresh(e){try{await fetch(`/api/usage/${e}/refresh`,{method:`POST`})}catch(e){console.error(`[workspace store] requestUsageRefresh failed:`,e)}},triggerGitRefresh(){this.gitRefreshTrigger++,this.schedulePrSnapshotsRefresh()},schedulePrSnapshotsRefresh(){Nu!==null&&clearTimeout(Nu),Nu=setTimeout(()=>{Nu=null,this.fetchPrSnapshots()},Mu)},async fetchPrSnapshots(){let e=++Fu,t=new Map(Lu);try{let n=await fetch(`/api/workspaces/pr-states`,{cache:`no-store`});if(!n.ok)return;let r=await n.json();if(e!==Fu)return;this.prSnapshots=Uu(r,this.prSnapshots,t)}catch(e){console.error(`[workspace-store] fetchPrSnapshots failed:`,e)}},async fetchWorkspacesInfo(){let e=this.workspaceLifecycleVersion,t=++Pu,n=new Map(Iu),r=new Map(Lu),i=new Map(Bu);try{let a=await X(`/api/workspaces/info`,{cache:`no-store`});if(this.listPollFailureStreak=0,this.activeListLoadFailed=!1,this.listLoadError=null,t!==Pu||e!==this.workspaceLifecycleVersion)return;if(this.agentLiveness=a.agentLiveness??{},a.pendingInputs)for(let e of a.workspaces){if((Bu.get(e.id)??0)!==(i.get(e.id)??0))continue;let t=this.pendingQueue[e.id]??[],n=new Map(t.map(e=>[e.toolCallId,e])),r=(a.pendingInputs[e.id]??[]).map(e=>{let t=n.get(e.toolCallId);return t&&Vt.deepEqual(t,e)?t:e});if(!(r.length===t.length&&r.every((e,n)=>e===t[n]))){this.clearAllPending(e.id);for(let t of r)this.enqueuePending(e.id,t)}}let o={...this.agentLivenessLoaded};for(let e of a.workspaces)o[e.id]=!0;this.agentLivenessLoaded=o;let s=new Map(this.workspaces.map(e=>[e.id,e]));this.workspaces=a.workspaces.map(e=>{let t=s.get(e.id),r=(Iu.get(e.id)??0)!==(n.get(e.id)??0);return t&&r?{...e,...t}:e});for(let e of this.workspaces)il().setCompacting(e.id,e.status===`compacting`),[`completed`,`idle`,`error`,`quota`].includes(e.status)&&this.finalizeRunningSubagents(e.id);this.prSnapshots=Uu(a.prSnapshots,this.prSnapshots,r);let c={...this.gitStatsCache};for(let[e,t]of Object.entries(a.gitStats)){let n=c[e];(!n||(t.computedAt??0)>=(n.computedAt??0))&&(c[e]=t)}this.gitStatsCache=c}catch(e){console.error(`[workspace-store] fetchWorkspacesInfo failed:`,e),this.listPollFailureStreak+=1,this.listPollFailureStreak>=2&&(this.activeListLoadFailed=!0,this.listLoadError=e instanceof Error?e.message:String(e))}},async refreshPrSnapshot(e){try{let t=await fetch(`/api/workspaces/pr-snapshot/refresh/${e}`,{method:`POST`});if(t.status===404){let t={...this.prSnapshots};return delete t[e],this.prSnapshots=t,Hu(e),null}if(!t.ok)return console.error(`[workspace-store] refreshPrSnapshot non-OK:`,t.status),null;let n=await t.json();return this.prSnapshots={...this.prSnapshots,[e]:n.snapshot},Hu(e),n.snapshot}catch(e){return console.error(`[workspace-store] refreshPrSnapshot failed:`,e),null}},async fetchAutoLoopStates(){try{let e=await fetch(`/api/workspaces/auto-loop-states`,{cache:`no-store`});if(!e.ok)return;let t=await e.json();this.autoLoopStates=t}catch(e){console.error(`[workspace-store] fetchAutoLoopStates failed:`,e)}},async enableAutoLoop(e){let t=this.workspaces.find(t=>t.id===e);if(t&&t.agentPermissionMode===`plan`)try{await this.updateAgentPermissionMode(e,`bypass`)}catch{}let n=await fetch(`/api/workspaces/${e}/auto-loop`,{method:`POST`});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}await this.fetchAutoLoopStates()},async disableAutoLoop(e){let t=await fetch(`/api/workspaces/${e}/auto-loop`,{method:`DELETE`});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}await this.fetchAutoLoopStates()},async forceAutoLoopReady(e){let t=await fetch(`/api/workspaces/${e}/auto-loop-ready`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);await this.fetchAutoLoopStates()},setAutoLoopState(e,t){this.autoLoopStates[e]=t},clearAutoLoopState(e){delete this.autoLoopStates[e]},async fetchCrons(e){try{let t=await fetch(`/api/workspaces/${e}/crons`);if(!t.ok)return;let n=await t.json();this.crons[e]=n.crons}catch(e){console.error(`[workspace-store] fetchCrons failed:`,e)}},async cancelCron(e,t){let n=this.crons[e]??[];this.crons[e]=n.filter(e=>e.id!==t);try{let n=await fetch(`/api/workspaces/${e}/crons/${t}`,{method:`DELETE`});if(!n.ok)throw Error(`HTTP ${n.status}`)}catch(t){throw this.crons[e]=n,t}},async createCron(e,t){let n=await fetch(`/api/workspaces/${e}/crons`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}await this.fetchCrons(e)},async scheduleManualWakeup(e,t){let n=await fetch(`/api/workspaces/${e}/pending-wakeup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}let r=await n.json();r.pending&&(this.pendingWakeups[e]=r.pending)},async fetchPendingWakeup(e){try{let t=await fetch(`/api/workspaces/${e}/pending-wakeup`,{cache:`no-store`});if(!t.ok)return;let n=await t.json();n?this.pendingWakeups[e]=n:delete this.pendingWakeups[e]}catch(e){console.error(`[workspace-store] fetchPendingWakeup failed:`,e)}},setPendingWakeup(e,t){this.pendingWakeups[e]=t},clearPendingWakeup(e){delete this.pendingWakeups[e]},async cancelPendingWakeup(e){let t=this.pendingWakeups[e]!==void 0;delete this.pendingWakeups[e];try{let t=await fetch(`/api/workspaces/${e}/pending-wakeup`,{method:`DELETE`});if(!t.ok)throw Error(`HTTP ${t.status}`)}catch(n){console.error(`[workspace-store] cancelPendingWakeup failed:`,n),t&&await this.fetchPendingWakeup(e)}},async fetchPendingQuotaBackoff(e){try{let t=await fetch(`/api/workspaces/${e}/quota-backoff`,{cache:`no-store`});if(!t.ok)return;let n=await t.json();n?this.pendingQuotaBackoffs[e]={...n,reason:n.reason===`transient`?`transient`:`quota`}:delete this.pendingQuotaBackoffs[e]}catch(e){console.error(`[workspace-store] fetchPendingQuotaBackoff failed:`,e)}},setPendingQuotaBackoff(e,t){this.pendingQuotaBackoffs[e]=t},clearPendingQuotaBackoff(e){delete this.pendingQuotaBackoffs[e]},async cancelQuotaBackoff(e){let t=this.pendingQuotaBackoffs[e]!==void 0;delete this.pendingQuotaBackoffs[e];try{let t=await fetch(`/api/workspaces/${e}/quota-backoff`,{method:`DELETE`});if(!t.ok)throw Error(`HTTP ${t.status}`)}catch(n){console.error(`[workspace-store] cancelQuotaBackoff failed:`,n),t&&await this.fetchPendingQuotaBackoff(e)}},async resumeQuotaBackoffNow(e){await this.fetchSessions(e);let t=this.sessions[0];t&&(t.status===`completed`||t.status===`error`)?await this.startWorkspace(e,void 0,t.id,!0):await this.startWorkspace(e)},enqueuePending(e,t){Bu.set(e,(Bu.get(e)??0)+1);let n=this.pendingQueue[e]??[];n.some(e=>e.toolCallId===t.toolCallId)||(n.push(t),this.pendingQueue[e]=n,t.kind===`question`&&(this.pendingDeferred[e]={toolCallId:t.toolCallId,toolName:t.toolName,input:t.input,agentSessionId:t.agentSessionId}))},peekPending(e){return this.pendingQueue[e]?.[0]},dequeuePending(e){Bu.set(e,(Bu.get(e)??0)+1);let t=this.pendingQueue[e];if(!t||t.length===0)return;let n=t.shift();t.length===0&&delete this.pendingQueue[e];let r=this.pendingQueue[e]?.[0];return r&&r.kind===`question`?this.pendingDeferred[e]={toolCallId:r.toolCallId,toolName:r.toolName,input:r.input,agentSessionId:r.agentSessionId}:delete this.pendingDeferred[e],n},clearPendingForSession(e,t){if(Bu.set(e,(Bu.get(e)??0)+1),t===null)return;let n=this.pendingQueue[e];if(!n)return;let r=n.filter(e=>e.agentSessionId!==t);r.length===0?delete this.pendingQueue[e]:this.pendingQueue[e]=r;let i=this.pendingDeferred[e];i&&i.agentSessionId===t&&delete this.pendingDeferred[e]},clearAllPending(e){Bu.set(e,(Bu.get(e)??0)+1),delete this.pendingQueue[e],delete this.pendingDeferred[e]},setPendingDeferred(e,t){this.enqueuePending(e,{kind:`question`,agentSessionId:t.agentSessionId,toolCallId:t.toolCallId,toolName:t.toolName,input:t.input})},clearPendingDeferred(e,t=null){if(t===null){this.clearAllPending(e);return}this.clearPendingForSession(e,t)},getPendingDeferred(e){let t=this.peekPending(e);if(t?.kind===`question`)return{toolCallId:t.toolCallId,toolName:t.toolName,input:t.input,agentSessionId:t.agentSessionId}},async submitDeferredAnswer(e,t,n,r,i){let a=await fetch(`/api/workspaces/${e}/deferred-tool-use/answer`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({answers:t,toolCallId:n,awaitingFreeForm:r,response:i})});if(!a.ok){let t=(await a.json().catch(()=>({}))).error??`HTTP ${a.status}`;if(/no deferred tool use pending|no agent running|no active engine process|no pending callback/i.test(t)){console.warn(`[workspace] submitDeferredAnswer: deferred callback expired — clearing zombie panel locally`),this.dequeuePending(e),this.fetchWorkspaces();return}throw Error(t)}this.dequeuePending(e),this.fetchWorkspaces()},async cancelDeferredAnswer(e,t,n){let r=await fetch(`/api/workspaces/${e}/deferred-tool-use/cancel`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({reason:t,toolCallId:n})});if(!r.ok){let t=(await r.json().catch(()=>({}))).error??`HTTP ${r.status}`;if(/no deferred tool use pending/i.test(t)){console.warn(`[workspace] cancelDeferredAnswer: backend has no pending — clearing zombie panel locally`),this.dequeuePending(e),this.fetchWorkspaces();return}throw Error(t)}this.dequeuePending(e),this.fetchWorkspaces()},async submitDeferredPermission(e,t,n,r,i=`once`){let a=await fetch(`/api/workspaces/${e}/deferred-permission/decision`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({toolCallId:t,decision:n,reason:r,scope:i})});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.error??`HTTP ${a.status}`)}this.dequeuePending(e),this.fetchWorkspaces()},updateAgentTodos(e,t){this.agentTodos[e]=t},agentTaskCreate(e,t,n){let r=this.agentTodos[e]?[...this.agentTodos[e]]:[];r.some(e=>e.id===t)||(r.push({id:t,content:n.subject||n.description||``,status:`pending`,activeForm:n.activeForm}),this.agentTodos[e]=r)},agentTaskSetNumber(e,t,n){let r=this.agentTodos[e];r&&(this.agentTodos[e]=r.map(e=>e.id===t?{...e,taskNumber:n}:e))},agentTaskUpdate(e,t,n){let r=this.agentTodos[e];if(r){if(n.status===`deleted`){this.agentTodos[e]=r.filter(e=>e.taskNumber!==t);return}this.agentTodos[e]=r.map(e=>e.taskNumber===t?{...e,status:n.status?Au(n.status):e.status,content:n.content??e.content,activeForm:n.activeForm??e.activeForm}:e)}},finalizeRunningSubagents(e){let t=this.subagents[e];if(!t)return;let n=new Date().toISOString();for(let e of Object.keys(t)){let r=t[e];r.status===`running`&&(t[e]={...r,status:`done`,updatedAt:n})}},upsertSubagent(e,t){this.subagents[e]||(this.subagents[e]={});let n=this.subagents[e][t.toolUseId],r=new Date().toISOString(),i=n?.status===`done`?`done`:t.status??n?.status??`running`;this.subagents[e][t.toolUseId]={toolUseId:t.toolUseId,description:t.description??n?.description??``,taskType:t.taskType??n?.taskType,status:i,lastToolName:t.lastToolName??n?.lastToolName,lastDescription:t.lastDescription??n?.lastDescription,totalTokens:t.totalTokens??n?.totalTokens,toolUses:t.toolUses??n?.toolUses,durationMs:t.durationMs??n?.durationMs,startedAt:n?.startedAt??r,updatedAt:r}},async markRead(e){try{let t=await fetch(`/api/workspaces/${e}/mark-read`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=this.workspaces.findIndex(t=>t.id===e);n>=0&&(this.workspaces[n]={...this.workspaces[n],hasUnread:!1})}catch(e){console.error(`[workspace store] markRead failed:`,e)}},async purgeWorktree(e){try{let t=await fetch(`/api/workspaces/${e}/purge-worktree`,{method:`POST`}),n=await t.json();if(!t.ok)return{ok:!1,error:n.error??`HTTP ${t.status}`};let r=n.workspace;return r&&(this.updateWorkspaceFromEvent(e,{archivedAt:r.archivedAt,worktreePurgedAt:r.worktreePurgedAt,worktreePurgeRestoreData:r.worktreePurgeRestoreData}),r.archivedAt&&this.archivedLoaded&&(this.archivedWorkspaces.some(t=>t.id===e)||this.archivedWorkspaces.unshift(r),this.workspaces=this.workspaces.filter(t=>t.id!==e),this.selectedWorkspaceId===e&&(this.selectedWorkspaceId=null,this.tasks=[]))),{ok:!0,warnings:n.warnings??[]}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}},async dismissPrAttention(e,t){let n=this.prSnapshots[e];if(n)try{let r=await fetch(`/api/workspaces/${e}/dismiss-pr-attention`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:t,prUpdatedAt:n.updatedAt})});if(!r.ok)throw Error(`HTTP ${r.status}`);let i=t===`changes-requested`?{prChangesDismissedAt:n.updatedAt}:{prCiFailureDismissedAt:n.updatedAt};this.updateWorkspaceFromEvent(e,i)}catch(e){console.error(`[workspace store] dismissPrAttention failed:`,e)}},async restorePrAttention(e,t){try{let n=await fetch(`/api/workspaces/${e}/restore-pr-attention`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=t===`changes-requested`?{prChangesDismissedAt:null}:{prCiFailureDismissedAt:null};this.updateWorkspaceFromEvent(e,r)}catch(e){console.error(`[workspace store] restorePrAttention failed:`,e)}},queuedMessageKey(e,t){return`${e}:${t}`},getQueuedMessage(e,t){return t?this.queuedMessages[this.queuedMessageKey(e,t)]:void 0},queueMessage(e,t,n){let r=pc(this);if(r)return r.queue(e,t,n);this.queuedMessages[this.queuedMessageKey(e,n)]={content:t,sessionId:n}},cancelQueuedMessage(e,t){let n=pc(this);if(n)return n.cancel(e,t);t&&delete this.queuedMessages[this.queuedMessageKey(e,t)]},flushQueuedMessage(e,t){let n=pc(this);if(n)return n.flush(e,t);let r=this.getQueuedMessage(e,t);if(!r)return;let i=od();i.isCompacting(e)||(this.cancelQueuedMessage(e,t),i.sendChatMessage(e,r.content,t))},setActiveAgentSession(e,t){this.activeAgentSessionIds[e]=t,delete this.settledAgentSessionIds[e]},markAgentTurnSettled(e,t){this.activeAgentSessionIds[e]===t&&(this.settledAgentSessionIds[e]=t)},isAgentTurnSettled(e){let t=this.activeAgentSessionIds[e];return t!==void 0&&this.settledAgentSessionIds[e]===t},clearActiveAgentSession(e,t){this.activeAgentSessionIds[e]===t&&(delete this.activeAgentSessionIds[e],delete this.settledAgentSessionIds[e])},clearActiveAgentSessionOwner(e){delete this.activeAgentSessionIds[e],delete this.settledAgentSessionIds[e]},updateWorkspaceFromEvent(e,t){Iu.set(e,(Iu.get(e)??0)+1);let n=this.workspaces.findIndex(t=>t.id===e);if(n>=0&&(this.workspaces[n]={...this.workspaces[n],...t}),t.status!==void 0){if(il().setCompacting(e,t.status===`compacting`),e in this.agentLivenessLoaded){let t={...this.agentLivenessLoaded};delete t[e],this.agentLivenessLoaded=t}e===this.selectedWorkspaceId&&this.fetchWorkspaceDetails(e)}if(t.status&&[`completed`,`idle`,`error`,`quota`].includes(t.status)){let t=this.activityFeeds[e];if(t)for(let e of t)e.meta?.pending&&(e.meta.pending=!1);let n=this.subagents[e];if(n)for(let[e,t]of Object.entries(n))t.status===`running`&&(n[e]={...t,status:`done`})}}}}),Q=Gc.global.t,Gu=new Zc,Ku=0,qu={"pr:ci-failed":{soundKey:`audioPrCiFailedSound`,enabledKey:`audioPrCiFailedEnabled`,volumeKey:`audioPrCiFailedVolume`},"pr:ci-recovered":{soundKey:`audioPrCiRecoveredSound`,enabledKey:`audioPrCiRecoveredEnabled`,volumeKey:`audioPrCiRecoveredVolume`},"pr:changes-requested":{soundKey:`audioPrChangesRequestedSound`,enabledKey:`audioPrChangesRequestedEnabled`,volumeKey:`audioPrChangesRequestedVolume`},"pr:approved":{soundKey:`audioPrApprovedSound`,enabledKey:`audioPrApprovedEnabled`,volumeKey:`audioPrApprovedVolume`},"pr:merge-conflict":{soundKey:`audioPrMergeConflictSound`,enabledKey:`audioPrMergeConflictEnabled`,volumeKey:`audioPrMergeConflictVolume`},"pr:ready-to-merge":{soundKey:`audioPrReadyToMergeSound`,enabledKey:`audioPrReadyToMergeEnabled`,volumeKey:`audioPrReadyToMergeVolume`},"pr:merged":{soundKey:`audioPrMergedSound`,enabledKey:`audioPrMergedEnabled`,volumeKey:`audioPrMergedVolume`}};function Ju(e,t,n){let r=Rl().global,i=qu[n];pu(e,void 0,t,yl(r[i.soundKey]),Number(r[i.volumeKey]),!!r[i.enabledKey])}function Yu(e,t){let n=[];return t&&n.push({label:Q(`pr.openPr`),color:`white`,noDismiss:!0,handler:()=>window.open(t,`_blank`)}),n.push({label:Q(`pr.openWorkspace`),color:`white`,noDismiss:!0,handler:()=>{window.location.hash=`#/workspace/${e}`}}),n.push({label:Q(`pr.dismiss`),color:`white`}),n}var Xu=null,Zu=null,Qu=0,$u=!1,ed=!1,td=!1;function nd(e){td=e}function rd(e,t,n){if(t.kind!==`session:started`)return;let r=Z();if(n){r.setActiveAgentSession(e,n);let t=r.peekPending(e);t&&t.agentSessionId===n&&r.dequeuePending(e)}let i=r.workspaces.find(t=>t.id===e);i&&(i.status===`completed`||i.status===`idle`||i.status===`error`||i.status===`quota`)&&r.updateWorkspaceFromEvent(e,{status:`executing`}),!td&&n&&r.selectedWorkspaceId===e&&r.selectedSessionId!==n&&r.fetchSessions(e,n).catch(e=>{console.error(`[websocket] fetchSessions on session:started failed:`,e)})}function id(e,t){let n=Z();if(t.kind===`tool:call`&&t.name===`TodoWrite`){let r=t.input?.todos;return Array.isArray(r)&&n.updateAgentTodos(e,r.map(e=>({content:typeof e.content==`string`?e.content:``,status:typeof e.status==`string`?e.status:`pending`,activeForm:typeof e.activeForm==`string`?e.activeForm:void 0}))),!0}if(t.kind===`tool:call`&&t.name===`TaskCreate`){let r=t.input??{};return n.agentTaskCreate(e,t.toolCallId,{subject:typeof r.subject==`string`?r.subject:void 0,description:typeof r.description==`string`?r.description:void 0,activeForm:typeof r.activeForm==`string`?r.activeForm:void 0}),!0}if(t.kind===`tool:result`&&typeof t.output==`string`){let r=t.output.match(/^Task #(\d+) created successfully/);if(r)return n.agentTaskSetNumber(e,t.toolCallId,Number(r[1])),!0}if(t.kind===`tool:call`&&t.name===`TaskUpdate`){let r=t.input??{},i=r.task_id??r.taskId??r.id,a=typeof i==`number`?i:typeof i==`string`?Number(i):NaN;return Number.isFinite(a)&&n.agentTaskUpdate(e,a,{status:typeof r.status==`string`?r.status:void 0,content:typeof r.subject==`string`?r.subject:void 0,activeForm:typeof r.activeForm==`string`?r.activeForm:void 0}),!0}return!1}function ad(e,t,n,r,i){let a=il(),o=Z().activeAgentSessionIds[e],s=!i||!o||i===o;if(t.kind===`session:compacting`){!td&&s&&a.setCompacting(e,t.active);return}a.append(e,t,n,r,i,!td),!td&&s&&(t.kind===`session:compacted`||t.kind===`message:text`||t.kind===`tool:call`)&&a.setCompacting(e,!1),rd(e,t,i??void 0);let c=Z();if(t.kind===`session:user-input-requested`){if(t.requestKind===`question`?c.enqueuePending(e,{kind:`question`,agentSessionId:i??null,toolCallId:t.toolCallId,toolName:t.toolName,input:t.payload}):c.enqueuePending(e,{kind:`permission`,agentSessionId:i??null,toolCallId:t.toolCallId,toolName:t.toolName,toolInput:t.payload}),od().isCompacting(e)||c.updateWorkspaceFromEvent(e,{status:`awaiting-user`}),!td){let n=c.workspaces.find(t=>t.id===e)?.name??``,r=t.requestKind===`question`?Q(`notification.agentQuestion`,{name:n}):Q(`notification.agentPermissionRequest`,{name:n}),i=Rl().global;pu(r,void 0,e,t.requestKind===`question`?i.audioQuestionSound:void 0,t.requestKind===`question`?i.audioQuestionVolume:void 0,i.audioQuestionNotifications)}return}if(t.kind===`subagent:progress`){c.upsertSubagent(e,{toolUseId:t.toolCallId,status:t.status,description:t.description,taskType:t.taskType,lastToolName:t.lastToolName,totalTokens:t.totalTokens,toolUses:t.toolUses,durationMs:t.durationMs});return}if(!id(e,t)){if(t.kind===`tool:call`&&t.name===`Bash`){let n=t.input,r=`${n?.command??``} ${n?.description??``}`;/\bgit\b|commit|push|pull|merge|rebase|checkout|branch/i.test(r)&&c.triggerGitRefresh(),/\bgit\s+branch\s+-m\b/i.test(r)&&setTimeout(()=>{c.resyncWorkspaceBranch(e).catch(e=>{console.error(`[websocket] Branch resync failed:`,e)})},2500),/\bgh\s+pr\s+create\b/i.test(r)&&setTimeout(()=>c.triggerGitRefresh(),3e3)}if(t.kind===`tool:call`&&t.name===`ExitPlanMode`&&c.workspaces.find(t=>t.id===e)?.agentPermissionMode===`plan`&&(c.updateWorkspaceFromEvent(e,{agentPermissionMode:`bypass`}),c.updateAgentPermissionMode(e,`bypass`).catch(e=>{console.error(`[websocket] failed to persist ExitPlanMode flip:`,e)})),t.kind!==`session:started`){if(t.kind===`turn:completed`){i&&c.markAgentTurnSettled(e,i);return}if(t.kind===`session:ended`){i&&c.clearPendingForSession(e,i);let n=c.activeAgentSessionIds[e];if(t.superseded===!0||typeof i==`string`&&i.length>0&&n!==void 0&&i!==n){pc(c)||c.cancelQueuedMessage(e,i),i&&c.clearActiveAgentSession(e,i);return}td||a.setCompacting(e,!1),i?c.clearActiveAgentSession(e,i):c.clearActiveAgentSessionOwner(e);let r=c.workspaces.find(t=>t.id===e)?.status===`quota`?`quota`:t.reason===`completed`?`completed`:t.reason===`error`?`error`:`idle`;c.updateWorkspaceFromEvent(e,{status:r}),i&&t.reason===`completed`&&!pc(c)&&c.flushQueuedMessage(e,i),c.finalizeRunningSubagents(e),c.fetchWorkspaces(),!td&&t.reason!==`killed`&&t.reason!==`error`&&c.autoLoopStates[e]?.auto_loop!==!0&&pu(Q(`notification.agentFinished`,{name:c.workspaces.find(t=>t.id===e)?.name??``}),void 0,e);return}if(t.kind===`error`&&(t.category===`quota`&&(c.updateWorkspaceFromEvent(e,{status:`quota`}),c.fetchWorkspaces()),!td)){let t=Rl().global;pu(Q(`notification.agentError`,{name:c.workspaces.find(t=>t.id===e)?.name??``}),void 0,e,t.audioAgentErrorSound,t.audioAgentErrorVolume,t.audioAgentErrorNotifications)}}}}var od=Ve(`websocket`,{state:()=>({connected:!1,reconnecting:!1,reconnectAttempt:0,lastEventId:null,pendingSyncRequests:[],_replaying:!1,_drainInProgress:!1,_refreshAfterSync:!1,_workspacesToRefreshAfterDrain:new Set}),actions:{connect(){if(Xu)return;if($u=!0,ed||(ed=!0,window.addEventListener(`online`,()=>{$u&&this.connect()}),window.addEventListener(`offline`,()=>{this.connected=!1,this.reconnecting=$u,this.pendingSyncRequests=[],Gu.disconnect(Q(`network.login.unreachable`));let e=Xu;Xu=null,e?.close(),Zu&&=(clearTimeout(Zu),null)})),!navigator.onLine){this.connected=!1,this.reconnecting=!0,this.pendingSyncRequests=[];return}let e=ac(`${window.location.protocol===`https:`?`wss:`:`ws:`}//${window.location.host}/ws`,nc()),t=new WebSocket(e);Xu=t,t.addEventListener(`open`,()=>{if(Xu!==t)return;this.connected=!0,Ul().refreshSnapshot(),this.reconnecting=!1,Qu=0,this.reconnectAttempt=0;let e=Z().workspaces.map(e=>e.id);for(let t of e)this._send({type:`subscribe`,payload:{workspaceId:t}});this._refreshAfterSync=!0,this.lastEventId?this._send({type:`sync:request`,payload:{lastEventId:this.lastEventId,workspaceIds:e}}):(this._refreshAfterSync=!1,this.refreshLiveState())}),t.addEventListener(`message`,e=>{if(Xu===t)try{let t=JSON.parse(e.data);this._routeMessage(t)}catch{}}),t.addEventListener(`close`,()=>{Xu===t&&(Gu.disconnect(Q(`network.login.unreachable`)),this.connected=!1,this.pendingSyncRequests=[],Xu=null,$u&&this._scheduleReconnect())}),t.addEventListener(`error`,()=>{})},async refreshLiveState(){let e=Z(),t=new Set(e.workspaces.map(e=>e.id));if(await e.fetchWorkspacesInfo(),!this.connected)return;for(let n of e.workspaces)t.has(n.id)||(this._refreshAfterSync=!0,this.subscribe(n.id));let n=vu(),r=new Set(Object.keys(n.statuses));e.selectedWorkspaceId&&r.add(e.selectedWorkspaceId),await Promise.allSettled([...r].map(e=>n.fetchStatus(e)))},disconnect(){Gu.disconnect(Q(`network.login.unreachable`)),$u=!1,this.pendingSyncRequests=[],Zu&&=(clearTimeout(Zu),null),Xu&&=(Xu.close(),null),this.connected=!1,this.reconnecting=!1,this.reconnectAttempt=0},subscribe(e){this._drainInProgress&&this._workspacesToRefreshAfterDrain.add(e),this._send({type:`subscribe`,payload:{workspaceId:e}}),this._send({type:`sync:request`,payload:{workspaceIds:[e]}})},unsubscribe(e){this._send({type:`unsubscribe`,payload:{workspaceId:e}})},subscribeChannel(e){this._send({type:`subscribe`,payload:{workspaceId:e}})},isCompacting(e){let t=Z();return(t.workspaces.find(t=>t.id===e)??t.archivedWorkspaces.find(t=>t.id===e))?.status===`compacting`||il().isCompacting(e)},sendChatMessage(e,t,n,r,i=!1,a){if(this.isCompacting(e)||!this._send({type:`chat:message`,payload:{workspaceId:e,content:t,sessionId:n,agentPermissionModeOverride:r,force:i,clientMessageId:a}}))return!1;let o=Z(),s=o.workspaces.find(t=>t.id===e);return s&&(s.status===`completed`||s.status===`idle`||s.status===`error`||s.status===`quota`)&&o.updateWorkspaceFromEvent(e,{status:`executing`}),!0},sendChatMessageConfirmed(e,t,n){let r=`${Array.from(crypto.getRandomValues(new Uint32Array(4)),e=>e.toString(16)).join(`-`)}-${++Ku}`,i=Gu.wait(e,r,Q(`network.login.unreachable`));return this.sendChatMessage(e,t,n,void 0,!1,r)||Gu.settle(e,r,Error(Q(`network.login.unreachable`))),i},_send(e){if(Xu&&Xu.readyState===WebSocket.OPEN&&navigator.onLine){try{Xu.send(JSON.stringify(e))}catch{return!1}if(e.type===`sync:request`){let t=e.payload;this.pendingSyncRequests.push([...t?.workspaceIds??Z().workspaces.map(e=>e.id)])}return!0}return!1},isSyncPending(e){return this.pendingSyncRequests.some(t=>t.includes(e))},isConnected(){return Xu!==null&&Xu.readyState===WebSocket.OPEN},_scheduleReconnect(){if(Zu)return;if(!$u||!navigator.onLine){this.reconnecting=$u;return}let e=Math.min(1e3*2**Qu,3e4),t=Math.round(e*(.8+Math.random()*.4));Qu++,this.reconnecting=!0,this.reconnectAttempt=Qu,Qu===4&&nc()&&sc(),Zu=setTimeout(()=>{Zu=null,this.connect()},t)},_routeMessage(e){let t=Z();e.replayable!==!1&&e.id?this.lastEventId=e.id:e.replayable!==!1&&e.eventId&&(this.lastEventId=e.eventId);let n=e.payload??{},r=e.workspaceId??n.workspaceId??``,i=Gl(e.type);if(i){let n=Kl(i.event),a=e.createdAt??new Date().toISOString(),o=Q(`chat.hookScript`,{event:i.event}),s=i.kind===`output`?e.payload?.text??``:i.kind===`complete`?e.payload?.hadOutput===!1?Q(`chat.scriptDone`):Q(`chat.scriptComplete`,{phase:o}):Q(`chat.scriptError`,{phase:o,message:e.payload?.message??Q(`chat.unknownError`)});t.addActivityItem(r,{id:e.id??`${n}-${i.kind}-${Date.now()}`,type:`text`,content:s,timestamp:a,meta:{sender:n}});return}switch(e.type){case`kobo:update-checked`:Ul().applySnapshot(n);break;case`workspace:status`:{if(!r||this._replaying||typeof n.status!=`string`)break;let e=t.activeAgentSessionIds[r];if(e&&typeof n.sessionId==`string`&&e!==n.sessionId)break;t.updateWorkspaceFromEvent(r,{status:n.status});break}case`chat:accepted`:{if(typeof n.clientMessageId==`string`){r&&Gu.settle(r,n.clientMessageId);break}let e=typeof n.sessionId==`string`?n.sessionId:void 0;r&&e&&t.cancelQueuedMessage(r,e);break}case`chat:rejected`:{if(typeof n.clientMessageId==`string`){r&&Gu.settle(r,n.clientMessageId,Error(typeof n.message==`string`?n.message:Q(`network.login.unreachable`)));break}let e=typeof n.sessionId==`string`?n.sessionId:void 0,i=typeof n.content==`string`?n.content:void 0,a=typeof n.message==`string`?n.message:Q(`network.login.unreachable`);if(r&&i){let n=(t.activityFeeds[r]??[]).find(e=>e.meta?.sender===`user`&&e.meta?.pending&&e.content===i);n&&t.removeActivityItem(r,n.id),e&&t.queueMessage(r,i,e)}Fc.create({type:`negative`,message:a,position:`top`,timeout:6e3});break}case`agent:event`:{if(!r)break;let t=e.createdAt;ad(r,n,t,e.id??e.eventId,e.sessionId??null);break}case`agent:progress`:n.tasks&&Array.isArray(n.tasks)&&(t.tasks=n.tasks);break;case`user:message`:if(r&&typeof n.clientMessageId==`string`&&Gu.settle(r,n.clientMessageId),r&&n.content){let i=n.content,a=n.sender??`user`,o=gu(n.source),s=e.sessionId,c=e.id??e.eventId??`user-${Date.now()}`,l=typeof e.createdAt==`string`?e.createdAt:void 0,u=l??new Date().toISOString(),d=t.activityFeeds[r]??[];if(!o&&a===`user`&&d.some(e=>e.meta?.sender===`user`&&e.content===i&&e.meta?.pending)){let e=d.findIndex(e=>e.meta?.sender===`user`&&e.content===i&&e.meta?.pending);e>=0&&(d[e]={...d[e],id:c,sessionId:s,...l?{timestamp:l}:{}})}else t.addActivityItem(r,{id:c,type:`text`,content:i,timestamp:u,sessionId:s,meta:{sender:a,...o?{source:o}:{}}})}break;case`sync:empty`:case`sync:error`:this.pendingSyncRequests.shift();break;case`sync:response`:{let e=this.pendingSyncRequests[0];this._replaying=!0,nd(!0);try{let e=n.events??[],r=n.mode===`delta`?`delta`:`snapshot`,i=new Map;for(let t of e)if(t.type!==`sync:response`){if(t.type===`agent:event`&&t.workspaceId){let e=i.get(t.workspaceId)??{events:[],timestamps:[],sessionIds:[],eventIds:[],oldestId:void 0};e.events.push(t.payload),e.timestamps.push(t.createdAt),e.sessionIds.push(t.sessionId??null),e.eventIds.push(t.id??null),e.oldestId||=t.id,i.set(t.workspaceId,e);continue}this._routeMessage(t)}if(i.size>0){let e=il();for(let[t,{events:n,timestamps:a,sessionIds:o,eventIds:s,oldestId:c}]of i){let i=r===`delta`?e.merge(t,n,a,{sessionIds:o,eventIds:s}):n.map((e,t)=>t);r===`snapshot`&&e.reset(t,n,a,{oldestId:c,hasMoreOlder:!0,sessionIds:o,eventIds:s}),r===`snapshot`&&Z().updateAgentTodos(t,[]);for(let e of i){let r=n[e];if(!r)continue;let i=o[e]??null;if(r.kind===`session:user-input-requested`){r.requestKind===`question`?Z().enqueuePending(t,{kind:`question`,agentSessionId:i,toolCallId:r.toolCallId,toolName:r.toolName,input:r.payload}):Z().enqueuePending(t,{kind:`permission`,agentSessionId:i,toolCallId:r.toolCallId,toolName:r.toolName,toolInput:r.payload});continue}if(r.kind===`session:started`){if(i){let e=Z();e.setActiveAgentSession(t,i);let n=e.peekPending(t);n&&n.agentSessionId===i&&e.dequeuePending(t)}continue}if(r.kind===`session:ended`){let e=Z();i?(e.clearPendingForSession(t,i),pc(e)||e.cancelQueuedMessage(t,i),e.clearActiveAgentSession(t,i)):r.superseded!==!0&&e.clearActiveAgentSessionOwner(t);continue}if(r.kind===`subagent:progress`){Z().upsertSubagent(t,{toolUseId:r.toolCallId,status:r.status,description:r.description,taskType:r.taskType,lastToolName:r.lastToolName,totalTokens:r.totalTokens,toolUses:r.toolUses,durationMs:r.durationMs});continue}id(t,r)}}}let a=this.lastEventId,o=e.findLast(e=>e.replayable!==!1&&typeof e.id==`string`);if(o&&(this.lastEventId=o.id),n.truncated===!0&&o&&this.lastEventId!==a)this._drainInProgress=!0,this._send({type:`sync:request`,payload:{lastEventId:this.lastEventId,workspaceIds:t.workspaces.map(e=>e.id)}});else if(this._drainInProgress&&(this._drainInProgress=!1,this._workspacesToRefreshAfterDrain.size>0)){let e=[...this._workspacesToRefreshAfterDrain];this._workspacesToRefreshAfterDrain.clear(),this._send({type:`sync:request`,payload:{lastEventId:this.lastEventId,workspaceIds:e}})}}finally{if(this._replaying=!1,nd(!1),e){let t=this.pendingSyncRequests.indexOf(e);t!==-1&&this.pendingSyncRequests.splice(t,1)}this._refreshAfterSync&&this.pendingSyncRequests.length===0&&(this._refreshAfterSync=!1,this.refreshLiveState())}break}case`usage:snapshot`:{let e=n;e.providerId&&e.snapshot&&t.applyUsageSnapshot({providerId:e.providerId,snapshot:e.snapshot});break}case`devserver:status`:{let e=vu();r&&e.updateFromWsEvent(r,n);break}case`task:updated`:r&&t.fetchWorkspaceDetails(r);break;case`setup:output`:t.addActivityItem(r,{id:e.id??`setup-${Date.now()}`,type:`text`,content:e.payload?.text??``,timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`setup`}});break;case`setup:complete`:t.addActivityItem(r,{id:e.id??`setup-complete-${Date.now()}`,type:`text`,content:e.payload?.hadOutput===!1?Q(`chat.scriptDone`):Q(`chat.scriptComplete`,{phase:`setup`}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`setup`}});break;case`setup:error`:t.addActivityItem(r,{id:e.id??`setup-error-${Date.now()}`,type:`text`,content:Q(`chat.scriptError`,{phase:`setup`,message:e.payload?.message??Q(`chat.unknownError`)}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`setup`}});break;case`cleanup:output`:t.addActivityItem(r,{id:e.id??`cleanup-${Date.now()}`,type:`text`,content:e.payload?.text??``,timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`cleanup`}});break;case`cleanup:complete`:t.addActivityItem(r,{id:e.id??`cleanup-complete-${Date.now()}`,type:`text`,content:e.payload?.hadOutput===!1?Q(`chat.scriptDone`):Q(`chat.scriptComplete`,{phase:`cleanup`}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`cleanup`}});break;case`cleanup:error`:t.addActivityItem(r,{id:e.id??`cleanup-error-${Date.now()}`,type:`text`,content:Q(`chat.scriptError`,{phase:`cleanup`,message:e.payload?.message??Q(`chat.unknownError`)}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`cleanup`}});break;case`archive:output`:t.addActivityItem(r,{id:e.id??`archive-${Date.now()}`,type:`text`,content:e.payload?.text??``,timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`archive`}});break;case`archive:complete`:t.addActivityItem(r,{id:e.id??`archive-complete-${Date.now()}`,type:`text`,content:e.payload?.hadOutput===!1?Q(`chat.scriptDone`):Q(`chat.scriptComplete`,{phase:`archive`}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`archive`}});break;case`archive:error`:t.addActivityItem(r,{id:e.id??`archive-error-${Date.now()}`,type:`text`,content:Q(`chat.scriptError`,{phase:`archive`,message:e.payload?.message??Q(`chat.unknownError`)}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`archive`}});break;case`workspace:unread`:if(r){let e=n.hasUnread??!1;t.updateWorkspaceFromEvent(r,{hasUnread:e})}break;case`workspace:awaiting-reminder`:{let e=n;if(!e.workspaceId)break;let t=Rl().global,r=Q(`notification.awaitingReminder`,{name:e.workspaceName??``,minutes:e.waitingMinutes??0});if(pu(r,void 0,e.workspaceId,t.audioQuestionSound,t.audioQuestionVolume,t.audioQuestionNotifications),document.hasFocus()){let t=e.workspaceId;Fc.create({type:`info`,position:`top`,timeout:1e4,message:r,actions:[{label:Q(`common.open`),color:`white`,handler:()=>{window.location.hash=`#/workspace/${t}`}}]})}break}case`workspace:pr-attention-dismissed`:if(r){let e=n.kind,i=n.prUpdatedAt;e&&i&&t.updateWorkspaceFromEvent(r,e===`changes-requested`?{prChangesDismissedAt:i}:{prCiFailureDismissedAt:i})}break;case`workspace:description-updated`:{if(!r)break;let e=n.description??null;t.updateWorkspaceFromEvent(r,{description:e});break}case`workspace:agent-description-updated`:{if(!r)break;let e=n.agentDescription??null;t.updateWorkspaceFromEvent(r,{agentDescription:e});break}case`cron:created`:{if(!r)break;let e=n.cron;if(!e)break;let i=t.crons[r]??[];i.some(t=>t.id===e.id)||(t.crons[r]=[...i,e]);let a=t.autoLoopStates[r];a&&(a.crons_count=t.crons[r].length);break}case`cron:fired`:{if(!r)break;let e=n,i=t.crons[r]??[];t.crons[r]=i.map(t=>t.id===e.id?{...t,nextFireAt:e.nextFireAt??t.nextFireAt,lastFiredAt:e.lastFiredAt??new Date().toISOString()}:t);break}case`cron:cancelled`:{if(!r)break;let e=n.id;if(!e)break;t.crons[r]=(t.crons[r]??[]).filter(t=>t.id!==e);let i=t.autoLoopStates[r];i&&(i.crons_count=t.crons[r].length);break}case`cron:updated`:{if(!r)break;let e=n.crons;if(Array.isArray(e)){t.crons[r]=e;let n=t.autoLoopStates[r];n&&(n.crons_count=e.length)}break}case`workspace:archived`:case`workspace:unarchived`:case`workspace:worktree-restored`:case`workspace:worktree-purged`:{let i=n.workspace;e.type===`workspace:worktree-restored`&&i&&i.id===r?t.applyRestoredWorkspace(i):t.invalidateWorkspaceLifecycleReads(r),(e.type===`workspace:archived`||e.type===`workspace:worktree-purged`)&&r&&nl(r),e.type===`workspace:archived`&&r&&t.selectedWorkspaceId===r&&(t.selectedWorkspaceId=null),t.fetchWorkspaces(),t.archivedLoaded&&t.fetchArchivedWorkspaces();break}case`workspace:deleted`:t.invalidateWorkspaceLifecycleReads(r),r&&nl(r),r&&t.selectedWorkspaceId===r&&(t.selectedWorkspaceId=null),t.fetchWorkspaces(),t.archivedLoaded&&t.fetchArchivedWorkspaces();break;case`pr:base-changed`:{if(!r)break;let e=n,i=e.oldBase??``,a=e.newBase??``;t.updateWorkspaceFromEvent(r,{sourceBranch:a}),Fc.create({type:`info`,position:`top`,timeout:Jl,message:Q(`pr.baseChanged`,{oldBase:i,newBase:a}),actions:Yu(r,e.prUrl)}),pu(Q(`pr.baseChanged`,{oldBase:i,newBase:a}),void 0,r);break}case`pr:ci-failed`:case`pr:ci-recovered`:case`pr:merge-conflict`:case`pr:merged`:{if(!r)break;let i=e.type,a=n,o=a.prNumber??0,s={"pr:ci-failed":{key:`toast.prCiFailed`,type:`negative`,timeout:4e3},"pr:ci-recovered":{key:`toast.prCiRecovered`,type:`positive`,timeout:5e3},"pr:merge-conflict":{key:`toast.prMergeConflict`,type:`warning`,timeout:Jl},"pr:merged":{key:`toast.prMerged`,type:`positive`,timeout:5e3}}[i],c=Q(s.key,{n:o});Fc.create({type:s.type,position:`top`,timeout:s.timeout,message:c,actions:Yu(r,a.prUrl)}),Ju(c,r,i),i!==`pr:merged`&&t.refreshPrSnapshot(r);break}case`pr:changes-requested`:{if(!r)break;let e=n,i=Q(`toast.prChangesRequested`,{n:e.prNumber??0});Fc.create({type:`warning`,position:`top`,timeout:Jl,message:i,actions:Yu(r,e.prUrl)}),Ju(i,r,`pr:changes-requested`),t.refreshPrSnapshot(r);break}case`pr:approved`:{if(!r)break;let e=n,i=Q(`toast.prApproved`,{n:e.prNumber??0});Fc.create({type:`positive`,position:`top`,timeout:5e3,message:i,actions:Yu(r,e.prUrl)}),Ju(i,r,`pr:approved`),t.refreshPrSnapshot(r);break}case`pr:ready-to-merge`:{if(!r)break;let e=n,i=Q(`toast.prReadyToMerge`,{n:e.prNumber??0});Fc.create({type:`positive`,position:`top`,timeout:5e3,message:i,actions:Yu(r,e.prUrl)}),Ju(i,r,`pr:ready-to-merge`),t.refreshPrSnapshot(r);break}case`wakeup:scheduled`:if(r){let e=n;typeof e.targetAt==`string`&&t.setPendingWakeup(r,{targetAt:e.targetAt,reason:e.reason})}break;case`wakeup:cancelled`:case`wakeup:fired`:case`wakeup:skipped`:r&&t.clearPendingWakeup(r);break;case`agent:quota-recovered`:r&&(t.clearPendingQuotaBackoff(r),t.updateWorkspaceFromEvent(r,{status:`executing`}));break;case`agent:quota-backoff`:{if(!r)break;let e=n;typeof e.targetAt==`string`&&typeof e.source==`string`&&t.setPendingQuotaBackoff(r,{targetAt:e.targetAt,resetsAt:e.resetsAt??null,source:e.source,reason:e.reason===`transient`?`transient`:`quota`});break}case`agent:quota-backoff-cancelled`:r&&(t.clearPendingQuotaBackoff(r),n.reason===`completed`&&t.fetchWorkspaces());break;case`autoloop:enabled`:case`autoloop:iteration-started`:case`autoloop:ready-flipped`:t.fetchAutoLoopStates();break;case`autoloop:permission-overridden`:r&&pu(Q(`notification.autoLoopPermissionOverridden`,{name:t.workspaces.find(e=>e.id===r)?.name??``}),void 0,r);break;case`autoloop:waiting-for-slot`:{if(!r)break;let e=n,i=t.workspaces.find(e=>e.id===r)?.name??``;Fc.create({type:`info`,position:`top`,timeout:6e3,message:Q(`notification.autoLoopWaitingForSlot`,{name:i,running:e.running??0,limit:e.limit??0})});break}case`autoloop:disabled`:if(t.fetchAutoLoopStates(),r){let e=n?.reason,i=t.workspaces.find(e=>e.id===r)?.name??``,a=e===`error`?`notification.autoLoopError`:e===`stall`?`notification.autoLoopStalled`:e===`completed`?`notification.autoLoopCompleted`:e===`awaiting-clarification`?`notification.autoLoopAwaitingClarification`:null;a&&pu(Q(a,{name:i}),void 0,r)}break;case`workspace:create-progress`:{let e=typeof n.step==`string`?n.step:``,r=typeof n.creationId==`string`?n.creationId:``;r&&e&&t.setCreationProgress({creationId:r,step:e,index:typeof n.index==`number`?n.index:0,total:typeof n.total==`number`?n.total:0});break}case`workspace:create-failed`:{let e=typeof n.creationId==`string`?n.creationId:``,r=typeof n.step==`string`?n.step:``;e&&r&&t.setCreationProgress({creationId:e,step:r,index:-1,total:0});break}case`migration:progress`:case`migration:error`:Hn().update(n)}}}}),sd=N({__name:`App`,setup(e){let t=od(),n=_c(),r=Z(),i=Yl?window.parent.koboWorkspaceQueues:void 0,a;if(i)a=gc(r,i);else{let e=hc(r);window.koboWorkspaceQueues=e,a=()=>{e.dispose(),delete window.koboWorkspaceQueues}}return y(()=>{t.connect(),n.fetchTemplates(),cu()}),p(()=>{a?.(),t.disconnect()}),(e,t)=>{let n=S(`router-view`);return h(),A(j,null,[w(n),w(ts),w(dc)],64)}}}),cd=e=>e,ld=cd,ud=cd,dd=cd(()=>He()),fd={true:`inset`,item:`item-inset`,"item-thumbnail":`item-thumbnail-inset`},pd={xs:2,sm:4,md:8,lg:16,xl:24},md=Ne({name:`QSeparator`,props:{...ze,spaced:[Boolean,String],inset:[Boolean,String],vertical:Boolean,color:String,size:String},setup(e){let t=Re(),n=Be(e,t),r=k(()=>e.vertical?`vertical`:`horizontal`),i=k(()=>` q-separator--${r.value}`),a=k(()=>e.inset?`${i.value}-${fd[e.inset]}`:``),o=k(()=>`q-separator${i.value}${a.value}`+(e.color===void 0?``:` bg-${e.color}`)+(n()?` q-separator--dark`:``)),s=k(()=>{let t={};if(e.size!==void 0&&(t[e.vertical?`width`:`height`]=e.size),e.spaced){let n=e.spaced===!0?`${pd.md}px`:e.spaced in pd?`${pd[e.spaced]}px`:e.spaced,r=e.vertical?[`Left`,`Right`]:[`Top`,`Bottom`];t[`margin${r[0]}`]=t[`margin${r[1]}`]=n}return t});return()=>f(`hr`,{class:o.value,style:s.value,"aria-orientation":r.value})}}),hd=()=>f(`svg`,{key:`svg`,class:`q-radio__bg absolute non-selectable`,viewBox:`0 0 24 24`},[f(`path`,{d:`M12,22a10,10 0 0 1 -10,-10a10,10 0 0 1 10,-10a10,10 0 0 1 10,10a10,10 0 0 1 -10,10m0,-22a12,12 0 0 0 -12,12a12,12 0 0 0 12,12a12,12 0 0 0 12,-12a12,12 0 0 0 -12,-12`}),f(`path`,{class:`q-radio__check`,d:`M12,6a6,6 0 0 0 -6,6a6,6 0 0 0 6,6a6,6 0 0 0 6,-6a6,6 0 0 0 -6,-6`})]);function gd(e){(e.keyCode===13||e.keyCode===32)&&ve(e)}var _d=Ne({name:`QRadio`,props:{...ze,...re,...rt,modelValue:{required:!0},val:{required:!0},label:String,leftLabel:Boolean,checkedIcon:String,uncheckedIcon:String,color:String,keepColor:Boolean,dense:Boolean,disable:Boolean,tabindex:[String,Number]},emits:[`update:modelValue`],setup(n,{slots:r,emit:i}){let{proxy:a}=T(),o=Re(),s=Be(n,o),c=t(null),{refocusTargetEl:l,refocusTarget:u}=ot(n,c),d=k(()=>e(n.modelValue)===e(n.val)),p=k(()=>`q-radio cursor-pointer no-outline row inline no-wrap items-center`+(n.disable?` disabled`:``)+(s()?` q-radio--dark`:``)+(n.dense?` q-radio--dense`:``)+(n.leftLabel?` reverse`:``)),m=k(()=>{let e=n.color!==void 0&&(n.keepColor||d.value)?` text-${n.color}`:``;return`q-radio__inner relative-position q-radio__inner--${d.value?`truthy`:`falsy`}${e}`}),h=k(()=>(d.value?n.checkedIcon:n.uncheckedIcon)||null),g=k(()=>n.disable?-1:n.tabindex||0),_=it(()=>{let e={type:`radio`};return n.name!==void 0&&Object.assign(e,{".checked":d.value,"^checked":d.value?`checked`:void 0,name:n.name,value:n.val}),e});function v(e){e!==void 0&&(ve(e),u(e)),!n.disable&&!d.value&&i(`update:modelValue`,n.val,e)}function y(e){(e.keyCode===13||e.keyCode===32)&&v(e)}Object.assign(a,{set:v});let b=hd();return()=>{let e=h.value===null?[b]:[f(`div`,{key:`icon`,class:`q-radio__icon-container absolute-full flex flex-center no-wrap`},[f(we,{class:`q-radio__icon`,name:h.value})])];n.disable||_(e,`unshift`,` q-radio__native q-ma-none q-pa-none`);let t=[f(`div`,{class:m.value,style:st(n.size),"aria-hidden":`true`},e)];l.value!==null&&t.push(l.value);let i=n.label===void 0?P(r.default):he(r.default,[n.label]);return i!==void 0&&t.push(f(`div`,{class:`q-radio__label q-anchor--skip`},i)),f(`div`,{ref:c,class:p.value,tabindex:g.value,role:`radio`,"aria-label":n.label,"aria-checked":d.value?`true`:`false`,"aria-disabled":n.disable?`true`:void 0,onClick:v,onKeydown:gd,onKeyup:y},t)}}}),vd=()=>f(`div`,{key:`svg`,class:`q-checkbox__bg absolute`},[f(`svg`,{class:`q-checkbox__svg fit absolute-full`,viewBox:`0 0 24 24`},[f(`path`,{class:`q-checkbox__truthy`,fill:`none`,d:`M1.73,12.91 8.1,19.28 22.79,4.59`}),f(`path`,{class:`q-checkbox__indet`,d:`M4,14H20V10H4`})])]),yd=Ne({name:`QCheckbox`,props:lt,emits:ct,setup(e){let t=vd();function n(n,r){let i=k(()=>(n.value?e.checkedIcon:r.value?e.indeterminateIcon:e.uncheckedIcon)||null);return()=>i.value===null?[t]:[f(`div`,{key:`icon`,class:`q-checkbox__icon-container absolute-full flex flex-center no-wrap`},[f(we,{class:`q-checkbox__icon`,name:i.value})])]}return ut(`checkbox`,n)}}),bd=Ne({name:`QToggle`,props:{...lt,icon:String,iconColor:String},emits:ct,setup(e){function t(t,n){let r=k(()=>(t.value?e.checkedIcon:n.value?e.indeterminateIcon:e.uncheckedIcon)||e.icon),i=k(()=>t.value?e.iconColor:null);return()=>[f(`div`,{class:`q-toggle__track`}),f(`div`,{class:`q-toggle__thumb absolute flex flex-center no-wrap`},r.value===void 0?void 0:[f(we,{name:r.value,color:i.value})])]}return ut(`toggle`,t)}}),xd={radio:_d,checkbox:yd,toggle:bd},Sd=Object.keys(xd);function Cd(e,t){if(typeof e==`function`)return e;let n=e===void 0?t:e;return e=>e[n]}var wd=Ne({name:`QOptionGroup`,props:{...ze,modelValue:{required:!0},options:{type:Array,validator:e=>e.every(Lt),default:()=>[]},optionValue:[Function,String],optionLabel:[Function,String],optionDisable:[Function,String],name:String,type:{type:String,default:`radio`,validator:e=>Sd.includes(e)},color:String,keepColor:Boolean,dense:Boolean,size:String,leftLabel:Boolean,inline:Boolean,disable:Boolean},emits:[`update:modelValue`],setup(n,{emit:r,slots:i}){let a=Re(),o=Array.isArray(n.modelValue);n.type===`radio`?o&&console.error(`q-option-group: model should not be array`):o||console.error(`q-option-group: model should be array in your case`);let s=Be(n,a),c=k(()=>xd[n.type]),l=t(null),u=k(()=>Cd(n.optionValue,`value`)),d=k(()=>Cd(n.optionLabel,`label`)),p=k(()=>Cd(n.optionDisable,`disable`)),m=k(()=>n.options.map(e=>({val:u.value(e),name:e.name===void 0?n.name:e.name,disable:n.disable||p.value(e),leftLabel:e.leftLabel===void 0?n.leftLabel:e.leftLabel,color:e.color===void 0?n.color:e.color,checkedIcon:e.checkedIcon,uncheckedIcon:e.uncheckedIcon,dark:e.dark===void 0?s():e.dark,size:e.size===void 0?n.size:e.size,dense:n.dense,keepColor:e.keepColor===void 0?n.keepColor:e.keepColor}))),h=k(()=>{let t=e(n.modelValue),r=m.value,i=r.findIndex(n=>!n.disable&&e(n.val)===t);return i===-1?r.findIndex(e=>!e.disable):i}),g=k(()=>`q-option-group q-gutter-x-sm`+(n.inline?` q-option-group--inline`:``)),_=k(()=>{let e={role:n.type===`radio`?`radiogroup`:`group`};return n.disable&&(e[`aria-disabled`]=`true`),e});function v(e){r(`update:modelValue`,e)}function y(t){let i=t.keyCode===37||t.keyCode===38?-1:+(t.keyCode===39||t.keyCode===40);if(i===0)return;let o=l.value.getElementsByClassName(`q-radio`),s=Array.prototype.indexOf.call(o,t.target);if(s===-1)return;ve(t);let c=(t.keyCode===37||t.keyCode===39)&&a.lang.rtl===!0?-i:i,u=m.value,d=u.length,f=s;do f=(f+c+d)%d;while(f!==s&&u[f].disable);f!==s&&(o[f].focus(),e(u[f].val)!==e(n.modelValue)&&r(`update:modelValue`,u[f].val))}return()=>f(`div`,{ref:l,class:g.value,..._.value,onKeydown:n.type===`radio`?y:void 0},n.options.map((e,t)=>{let r=i[`label-`+t]===void 0?i.label===void 0?void 0:()=>i.label(e):()=>i[`label-`+t](e);return f(`div`,[f(c.value,{label:r===void 0?d.value(e):null,modelValue:n.modelValue,"onUpdate:modelValue":v,...m.value[t],tabindex:n.type===`radio`?t===h.value?0:-1:void 0},r)])}))}}),Td=()=>!0;function Ed(e){let t={};return e.forEach(e=>{t[e]=Td}),t}function Dd(e){return e===void 0?`programmatic`:e.type.indexOf(`key`)===0?`escape`:`backdrop`}function Od(){let{emit:e,proxy:n}=T(),r=t(null),i=null;function a(){i=null,r.value.show()}function o(){r.value.hide()}function s(t){e(`ok`,t),o()}function c(){i=`cancel`,o()}function l(t){e(`hide`,i===null?Dd(t):i)}return Object.assign(n,{show:a,hide:o}),{dialogRef:r,onDialogHide:l,onDialogOK:s,onDialogCancel:c}}var kd=[`ok`,`hide`];Od.emits=kd,Od.emitsObject=Ed(kd);var Ad=Ne({name:`DialogPluginComponent`,props:{...ze,title:String,message:String,prompt:Object,options:Object,progress:[Boolean,Object],html:Boolean,ok:{type:[String,Object,Boolean],default:!0},cancel:[String,Object,Boolean],focus:{type:String,default:`ok`,validator:e=>[`ok`,`cancel`,`none`].includes(e)},stackButtons:Boolean,color:String,cardClass:[String,Array,Object],cardStyle:[String,Array,Object]},emits:[`ok`,`hide`],setup(t){let n=Re(),r=Be(t,n),{dialogRef:i,onDialogHide:a,onDialogOK:o,onDialogCancel:s}=Od(),c=d(t.prompt===void 0?t.options===void 0?void 0:t.options.model:t.prompt.model),l=k(()=>`q-dialog-plugin`+(r()?` q-dialog-plugin--dark q-dark`:``)+(t.progress===!1?``:` q-dialog-plugin--progress`)),u=k(()=>t.color||(r()?`amber`:`primary`)),p=k(()=>t.progress===!1?null:Lt(t.progress)?{component:t.progress.spinner||Ie,props:{color:t.progress.color||u.value}}:{component:Ie,props:{color:u.value}}),h=k(()=>t.prompt!==void 0||t.options!==void 0),g=k(()=>{if(!h.value)return{};let{model:e,isValid:n,items:r,...i}=t.prompt===void 0?t.options:t.prompt;return i}),_=k(()=>Lt(t.ok)||t.ok===!0?n.lang.label.ok:t.ok),v=k(()=>Lt(t.cancel)||t.cancel===!0?n.lang.label.cancel:t.cancel),y=k(()=>t.prompt===void 0?t.options!==void 0&&t.options.isValid!==void 0&&!t.options.isValid(c.value):t.prompt.isValid!==void 0&&!t.prompt.isValid(c.value)),b=k(()=>({color:u.value,label:_.value,ripple:!1,disable:y.value,...Lt(t.ok)?t.ok:{flat:!0},"data-autofocus":t.focus===`ok`&&!h.value||void 0,onClick:S})),x=k(()=>({color:u.value,label:v.value,ripple:!1,...Lt(t.cancel)?t.cancel:{flat:!0},"data-autofocus":t.focus===`cancel`&&!h.value||void 0,onClick:s}));m(()=>t.prompt&&t.prompt.model,C),m(()=>t.options&&t.options.model,C);function S(){o(e(c.value))}function C(e){c.value=e}function w(e){!y.value&&t.prompt.type!==`textarea`&&de(e,13)&&S()}function T(e,n){return t.html?f(qt,{class:e,innerHTML:n}):f(qt,{class:e},()=>n)}function E(){return[f($s,{color:u.value,dense:!0,autofocus:!0,dark:r(),...g.value,modelValue:c.value,"onUpdate:modelValue":C,onKeyup:w})]}function D(){return[f(wd,{color:u.value,options:t.options.items,dark:r(),...g.value,modelValue:c.value,"onUpdate:modelValue":C})]}function O(){let e=[];return t.cancel&&e.push(f(Me,x.value)),t.ok&&e.push(f(Me,b.value)),f(ec,{class:t.stackButtons?`items-end`:``,vertical:t.stackButtons,align:`right`},()=>e)}function ee(){let e=[];return t.title&&e.push(T(`q-dialog__title`,t.title)),t.progress!==!1&&e.push(f(qt,{class:`q-dialog__progress`},()=>f(p.value.component,p.value.props))),t.message&&e.push(T(`q-dialog__message`,t.message)),t.prompt===void 0?t.options!==void 0&&e.push(f(md,{dark:r()}),f(qt,{class:`scroll q-dialog-plugin__form`},D),f(md,{dark:r()})):e.push(f(qt,{class:`scroll q-dialog-plugin__form`},E)),(t.ok||t.cancel)&&e.push(O()),e}function A(){return[f(Zt,{class:[l.value,t.cardClass],style:t.cardStyle,dark:r()},ee)]}return()=>f(Ln,{ref:i,onHide:a},A)}});function jd(e,t){for(let n in t)n!==`spinner`&&Object(t[n])===t[n]&&!Array.isArray(t[n])?(e[n]=Object(e[n])===e[n]?{...e[n]}:{},jd(e[n],t[n])):e[n]=t[n]}function Md(e,n,r){return i=>{let a,o,s=n&&i.component!==void 0;if(s){let{component:e,componentProps:t}=i;a=typeof e==`string`?r.component(e):e,o=t||{}}else{let{class:t,style:n,...r}=i;a=e,o=r,t!==void 0&&(r.cardClass=t),n!==void 0&&(r.cardStyle=n)}let c,l=!1,u=t(null),d=Oe(!1,`dialog`),p=e=>{if(u.value?.[e]!==void 0){u.value[e]();return}let t=c.$.subTree?.component;for(;t;){if(typeof t.proxy?.[e]==`function`){t.proxy[e]();return}t=t.subTree?.component}console.error(`[Quasar] Incorrectly defined Dialog component`)},m=[],h=[],g={onOk(e){return m.push(e),g},onCancel(e){return h.push(e),g},onDismiss(e){return m.push(e),h.push(e),g},hide(){return p(`hide`),g},update(e){if(c!==null){if(s)Object.assign(o,e);else{let{class:t,style:n,...r}=e;t!==void 0&&(r.cardClass=t),n!==void 0&&(r.cardStyle=n),jd(o,r)}c.$forceUpdate()}return g}},_=e=>{l=!0,m.forEach(t=>{t(e)})},y=e=>{b.unmount(d),Te(d),b=null,c=null,l||h.forEach(t=>{t(e)})},b=Ut({name:`QGlobalDialog`,setup:()=>()=>f(a,{...o,ref:u,onOk:_,onHide:y,onVnodeMounted(...e){typeof o.onVnodeMounted==`function`&&o.onVnodeMounted(...e),v(()=>p(`show`))}})},r);return c=b.mount(d),g}}var Nd={install({$q:e,parentApp:t}){e.dialog=this.create=Md(Ad,!0,t)}},Pd=new Map;function Fd(e,t){Pd.set(e,t)}function Id(e){Pd.delete(e)}function Ld(){let e=[];for(let[t,n]of Pd)try{n()&&e.push(t)}catch{}return e}function Rd(){return Ld().length>0}var zd=e=>e.startsWith(`/`);function Bd(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function Vd(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&Bd(e.default)}var $=Object.assign;function Hd(e,t){let n={};for(let r in t){let i=t[r];n[r]=Wd(i)?i.map(e):e(i)}return n}var Ud=()=>{},Wd=Array.isArray;function Gd(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var Kd=Symbol(``);function qd(e,t){return $(Error(),{type:e,[Kd]:!0},t)}function Jd(e,t){return e instanceof Error&&Kd in e&&(t==null||!!(e.type&t))}var Yd=Symbol(``),Xd=Symbol(``),Zd=Symbol(``),Qd=Symbol(``),$d=Symbol(``);function ef(){return x(Zd)}function tf(e){return x(Qd)}var nf=typeof document<`u`,rf=/#/g,af=/&/g,of=/\//g,sf=/=/g,cf=/\?/g,lf=/\+/g,uf=/%5B/g,df=/%5D/g,ff=/%5E/g,pf=/%60/g,mf=/%7B/g,hf=/%7C/g,gf=/%7D/g,_f=/%20/g;function vf(e){return e==null?``:encodeURI(``+e).replace(hf,`|`).replace(uf,`[`).replace(df,`]`)}function yf(e){return vf(e).replace(mf,`{`).replace(gf,`}`).replace(ff,`^`)}function bf(e){return vf(e).replace(lf,`%2B`).replace(_f,`+`).replace(rf,`%23`).replace(af,`%26`).replace(pf,"`").replace(mf,`{`).replace(gf,`}`).replace(ff,`^`)}function xf(e){return bf(e).replace(sf,`%3D`)}function Sf(e){return vf(e).replace(rf,`%23`).replace(cf,`%3F`)}function Cf(e){return Sf(e).replace(of,`%2F`)}function wf(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var Tf=/\/$/,Ef=e=>e.replace(Tf,``);function Df(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=Ff(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:wf(o)}}function Of(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function kf(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function Af(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&jf(t.matched[r],n.matched[i])&&Mf(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function jf(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Mf(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Nf(e[n],t[n]))return!1;return!0}function Nf(e,t){return Wd(e)?Pf(e,t):Wd(t)?Pf(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function Pf(e,t){return Wd(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function Ff(e,t){if(zd(e))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`){if(s===`..`)a>1&&a--;else break}return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var If={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function Lf(e){if(!e){if(nf){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),Ef(e)}var Rf=/^[^#]+#/;function zf(e,t){return e.replace(Rf,`#`)+t}function Bf(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var Vf=()=>history.scrollRestoration===`manual`?{left:window.scrollX,top:window.scrollY}:null;function Hf(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=Bf(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function Uf(e,t){return(history.state?history.state.position-t:-1)+e}var Wf=new Map;function Gf(e){Wf.set(e,Vf())}function Kf(e){let t=Wf.get(e);return Wf.delete(e),t}function qf(e){return typeof e==`string`||e&&typeof e==`object`}function Jf(e){return typeof e==`string`||typeof e==`symbol`}function Yf(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(lf,` `),i=r.indexOf(`=`),a=wf(i<0?r:r.slice(0,i)),o=i<0?null:wf(r.slice(i+1));if(a in t){let e=t[a];Wd(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function Xf(e){let t=``;for(let n in e){let r=e[n];if(n=xf(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(Wd(r)?r.map(e=>e&&bf(e)):[r&&bf(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Zf(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=Wd(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function Qf(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function $f(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(qd(4,{from:n,to:t})):e instanceof Error?c(e):qf(e)?c(qd(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function ep(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(t===`beforeRouteEnter`||o.instances[e]){if(Bd(s)){let c=(s.__vccOpts||s)[t];c&&a.push($f(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=Vd(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&$f(c,n,r,o,e,i)()}))}}}return a}function tp(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>jf(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>jf(e,s))||i.push(s))}return[n,r,i]}var np=()=>location.protocol+`//`+location.host;function rp(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),kf(n,``)}return kf(n,e)+r+i}function ip(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=rp(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){let{history:e}=window;e.state&&e.replaceState($({},e.state,{scroll:Vf()}),``)}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),{pauseListeners:c,listen:l,destroy:d}}function ap(e,t,n,r=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:null}}function op(e){let{history:t,location:n}=window,r={value:rp(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:np()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,$({},t.state,ap(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=$({},i.value,t.state,{forward:e,scroll:Vf()});a(o.current,o,!0),a(e,$({},ap(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function sp(e){e=Lf(e);let t=op(e),n=ip(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=$({location:``,base:e,go:r,createHref:zf.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}function cp(e){return e=location.host?e||location.pathname+location.search:``,e.includes(`#`)||(e+=`#`),sp(e)}var lp={type:0,value:``},up=/[a-zA-Z0-9_]/;function dp(e){if(!e)return[[]];if(e===`/`)return[[lp]];if(!zd(e))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;)switch(c=e[s++],n){case 0:c===`\\`?(r=n,n=4):c===`/`?(l&&d(),o()):c===`:`?(d(),n=1):f();break;case 4:f(),n=r;break;case 1:c===`(`?n=2:up.test(c)?f():(d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case 2:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=3:u+=c;break;case 3:d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`)}return n===2&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var fp=`[^/]+?`,pp={sensitive:!1,strict:!1,start:!0,end:!0},mp=/[.+*?^${}()[\]/\\]/g;function hp(e,t){let n=$({},pp,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[90];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=40+(n.sensitive?.25:0);if(o.type===0)r||(i+=`/`),i+=o.value.replace(mp,`\\$&`),s+=40;else if(o.type===1){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||fp;if(u!==fp){s+=10;try{RegExp(`(${u})`)}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=20,c&&(s+=-8),n&&(s+=-20),u===`.*`&&(s+=-50)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=.7000000000000001}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===0)n+=e.value;else if(e.type===1){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(Wd(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=Wd(c)?c.join(`/`):c;if(!l){if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`)}n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function gp(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function _p(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=gp(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(vp(r))return 1;if(vp(i))return-1}return i.length-r.length}function vp(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var yp={strict:!1,end:!0,sensitive:!1};function bp(e,t,n){let r=$(hp(dp(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function xp(e,t){let n=[],r=new Map;t=Gd(yp,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Cp(e);s.aliasOf=r&&r.record;let l=Gd(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Cp($({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&!zd(u)){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=bp(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!Tp(d)&&o(e.name)),kp(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:Ud}function o(e){if(Jf(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Dp(e,n);n.splice(t,0,e),e.record.name&&!Tp(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw qd(1,{location:e});s=i.record.name,a=$(Sp(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Sp(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw qd(1,{location:e,currentLocation:t});s=i.record.name,a=$({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Ep(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Sp(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Cp(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:wp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function wp(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function Tp(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Ep(e){return e.reduce((e,t)=>$(e,t.meta),{})}function Dp(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;_p(e,t[i])<0?r=i:n=i+1}let i=Op(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Op(e){let t=e;for(;t=t.parent;)if(kp(t)&&_p(e,t)===0)return t}function kp({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ap(e){let t=x(Zd),n=x(Qd),r=k(()=>{let n=o(e.to);return t.resolve(n)}),i=k(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(jf.bind(null,i));if(o>-1)return o;let s=Fp(e[t-2]);return t>1&&Fp(i)===s&&a[a.length-1].path!==s?a.findIndex(jf.bind(null,e[t-2])):o}),a=k(()=>i.value>-1&&Pp(n.params,r.value.params)),s=k(()=>i.value>-1&&i.value===n.matched.length-1&&Mf(n.params,r.value.params));function c(n={}){if(Np(n)){let n=t[o(e.replace)?`replace`:`push`](o(e.to)).catch(Ud);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:k(()=>r.value.href),isActive:a,isExactActive:s,navigate:c}}function jp(e){return e.length===1?e[0]:e}var Mp=N({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:Ap,setup(e,{slots:t}){let n=a(Ap(e)),{options:r}=x(Zd),i=k(()=>({[Ip(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[Ip(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&jp(t.default(n));return e.custom?r:f(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function Np(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Pp(e,t){for(let n in t){let r=t[n],i=e[n];if(Wd(r)){if(!Wd(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}else if(r!==i)return!1}return!0}function Fp(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var Ip=(e,t,n)=>e??t??n,Lp=N({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=x($d),i=k(()=>e.route||r.value),a=x(Xd,0),s=k(()=>{let e=o(a),{matched:t}=i.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),c=k(()=>i.value.matched[s.value]);b(Xd,k(()=>s.value+1)),b(Yd,c),b($d,i);let l=d();return m(()=>[l.value,c.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!jf(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=i.value,a=e.name,o=c.value,s=o&&o.components[a];if(!s)return Rp(n.default,{Component:s,route:r});let u=o.props[a],d=u?u===!0?r.params:typeof u==`function`?u(r):u:null,p=f(s,$({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[a]=null)},ref:l}));return Rp(n.default,{Component:p,route:r})||p}}});function Rp(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var zp=Lp;function Bp(e){let n=xp(e.routes,e),i=e.parseQuery||Yf,a=e.stringifyQuery||Xf,s=e.history,c=Qf(),l=Qf(),u=Qf(),d=t(If),f=t(0),p=If;nf&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let m=Hd.bind(null,e=>``+e),h=Hd.bind(null,Cf),g=Hd.bind(null,wf);function _(e,t){let r,i;Jf(e)?(r=n.getRecordMatcher(e),i=t):i=e;let a=n.addRoute(i,r);return f.value++,()=>{a(),f.value++}}function y(e){let t=n.getRecordMatcher(e);t&&(n.removeRoute(t),f.value++)}function b(){n.clearRoutes(),f.value++}function x(){return n.getRoutes().map(e=>e.record)}function S(e){return!!n.getRecordMatcher(e)}function C(e,t){if(f.value,typeof e==`string`){t||=e.startsWith(`/`)?If:d.value;let r=Df(i,e,t.path),a=n.resolve({path:r.path},t),o=s.createHref(r.fullPath);return $(r,a,{params:g(a.params),redirectedFrom:void 0,href:o})}t=$({},t||(e.path!=null&&e.path.startsWith(`/`)&&!(`name`in e&&e.name)?If:d.value));let r;if(e.path!=null)r=$({},e,{path:Df(i,e.path,t.path).path});else{let n=$({},e.params);for(let e in n)n[e]??delete n[e];r=$({},e,{params:h(n)}),t.params=h(t.params)}let o=n.resolve(r,t),c=e.hash||``;o.params=m(g(o.params));let l=Of(a,$({},e,{hash:yf(c),path:o.path})),u=s.createHref(l);return $({fullPath:l,hash:c,query:a===Xf?Zf(e.query):e.query||{}},o,{redirectedFrom:void 0,href:u})}function w(e){return typeof e==`string`?Df(i,e,d.value.path):$({},e)}function T(e,t){if(p!==e)return qd(8,{from:t,to:e})}function E(e){return ee(e)}function D(e){return E($(w(e),{replace:!0}))}function O(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=w(i):{path:i},i.params={}),$({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function ee(e,t){let n=p=C(e),r=d.value,i=e.state,o=e.force,s=e.replace===!0,c=O(n,r);if(c)return ee($(w(c),{state:typeof c==`object`?$({},i,c.state):i,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!o&&Af(a,r,n)&&(u=qd(16,{to:l,from:r}),le(r,r,!0,!1)),(u?Promise.resolve(u):j(l,r)).catch(e=>Jd(e)?Jd(e,2)?e:ce(e):oe(e,l,r)).then(e=>{if(e){if(Jd(e,2))return ee($({replace:s},w(e.to),{state:typeof e.to==`object`?$({},i,e.to.state):i,force:o}),t||l)}else e=M(l,r,!0,s,i);return te(l,r,e),e})}function k(e,t){let n=T(e,t);return n?Promise.reject(n):Promise.resolve()}function A(e){let t=de.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function j(e,t){let n,[r,i,a]=tp(e,t);n=ep(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push($f(r,e,t))});let o=k.bind(null,e,t);return n.push(o),pe(n).then(()=>{n=[];for(let r of c.list())n.push($f(r,e,t));return n.push(o),pe(n)}).then(()=>{n=ep(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push($f(r,e,t))});return n.push(o),pe(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter){if(Wd(r.beforeEnter))for(let i of r.beforeEnter)n.push($f(i,e,t));else n.push($f(r.beforeEnter,e,t))}return n.push(o),pe(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=ep(a,`beforeRouteEnter`,e,t,A),n.push(o),pe(n))).then(()=>{n=[];for(let r of l.list())n.push($f(r,e,t));return n.push(o),pe(n)}).catch(e=>Jd(e,8)?e:Promise.reject(e))}function te(e,t,n){u.list().forEach(r=>A(()=>r(e,t,n)))}function M(e,t,n,r,i){let a=T(e,t);if(a)return a;let o=t===If,c=nf?history.state:{};n&&(r||o?s.replace(e.fullPath,$({scroll:o&&c&&c.scroll},i)):s.push(e.fullPath,i)),d.value=e,le(e,t,n,o),ce()}let N;function ne(){N||=s.listen((e,t,n)=>{if(!fe.listening)return;let r=C(e),i=O(r,fe.currentRoute.value);if(i){ee($(i,{replace:!0,force:!0}),r).catch(Ud);return}p=r;let a=d.value;nf&&n.delta&&Gf(Uf(a.fullPath,n.delta)),j(r,a).catch(e=>Jd(e,12)?e:Jd(e,2)?(ee($(w(e.to),{force:!0}),r).then(e=>{Jd(e,20)&&!n.delta&&n.type===`pop`&&s.go(-1,!1)}).catch(Ud),Promise.reject()):(n.delta&&s.go(-n.delta,!1),oe(e,r,a))).then(e=>{e||=M(r,a,!1),e&&(n.delta&&!Jd(e,8)?s.go(-n.delta,!1):n.type===`pop`&&Jd(e,20)&&s.go(-1,!1)),te(r,a,e)}).catch(Ud)})}let re=Qf(),ie=Qf(),ae;function oe(e,t,n){ce(e);let r=ie.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function se(){return ae&&d.value!==If?Promise.resolve():new Promise((e,t)=>{re.add([e,t])})}function ce(e){return ae||(ae=!e,ne(),re.list().forEach(([t,n])=>e?n(e):t()),re.reset()),e}function le(t,n,r,i){let{scrollBehavior:a}=e;if(!nf||!a)return Promise.resolve();let o=!r&&Kf(Uf(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return v().then(()=>a(t,n,o)).then(e=>t===d.value&&e&&Hf(e)).catch(e=>t===d.value&&oe(e,t,n))}let P=e=>s.go(e),ue,de=new Set,fe={currentRoute:d,listening:!0,addRoute:_,removeRoute:y,clearRoutes:b,hasRoute:S,getRoutes:x,resolve:C,options:e,push:E,replace:D,go:P,back:()=>P(-1),forward:()=>P(1),beforeEach:c.add,beforeResolve:l.add,afterEach:u.add,onError:ie.add,isReady:se,install(e){e.component(`RouterLink`,Mp),e.component(`RouterView`,zp),e.config.globalProperties.$router=fe,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>o(d)}),nf&&!ue&&d.value===If&&(ue=!0,E(s.location).catch(e=>{}));let t={};for(let e in If)Object.defineProperty(t,e,{get:()=>d.value[e],enumerable:!0});e.provide(Zd,fe),e.provide(Qd,r(t)),e.provide($d,d);let n=e.unmount;de.add(e),e.unmount=function(){de.delete(e),de.size<1&&(p=If,N&&N(),N=null,d.value=If,ue=!1,ae=!1),n()}}};function pe(e){return e.reduce((e,t)=>e.then(()=>A(t)),Promise.resolve())}return fe}var Vp=[{path:`/`,component:()=>Y(()=>import(`./MainLayout-Duwnq3cc.js`).then(e=>e.t),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37])),children:[{path:``,redirect:{name:`workspace`}},{path:`dashboard`,name:`dashboard`,component:()=>Y(()=>import(`./DashboardPage-CIo_gesD.js`),__vite__mapDeps([38,1,2,3,4,39,10,5,11,21,15,22,23,26,32,34,40]))},{path:`workspace/:id?`,name:`workspace`,component:()=>Y(()=>import(`./WorkspacePage-Dy0spsfi.js`).then(e=>e.t),__vite__mapDeps([41,1,2,3,42,6,4,7,5,8,9,10,11,12,13,15,16,17,18,19,20,43,26,27,22,32,44,45,46,29,25,30,31,24,28,33,34,35,36,47,48]))},{path:`split`,name:`split`,component:()=>Y(()=>import(`./SplitWorkspacePage-vz6jN1DM.js`),__vite__mapDeps([49,1,2,3,4,5,7,8,9,10,11,12,25,32,47,50]))},{path:`create`,name:`create`,component:()=>Y(()=>import(`./CreatePage-DbY5gBv8.js`),__vite__mapDeps([51,1,2,3,42,6,4,7,5,8,9,10,11,12,13,15,17,52,31,20,26,28,32,33,19,34,44,45,35,53]))},{path:`settings`,name:`settings`,component:()=>Y(()=>import(`./SettingsPage-DnO-ImWE.js`),__vite__mapDeps([29,1,2,3,4,8,6,7,5,9,10,11,12,13,25,15,18,19,30,31,24,26,28,32,33,34,35,36]))},{path:`search`,name:`search`,component:()=>Y(()=>import(`./SearchPage-BGi1yRxU.js`),__vite__mapDeps([54,1,2,3,10,4,5,11,17,22,32,33,15,19,34,46,55]))},{path:`health`,name:`health`,component:()=>Y(()=>import(`./HealthPage-_q3vy_xn.js`),__vite__mapDeps([56,1,2,3,6,4,9,10,5,11,17,32,33,15,19,34,57]))},{path:`changelog`,name:`changelog`,component:()=>Y(()=>import(`./ChangelogPage-BWeu0YeI.js`),__vite__mapDeps([58,1,2,3,10,4,5,11,16,12,32,33,15,19,34,59]))}]},{path:`/:catchAll(.*)*`,redirect:`/`}],Hp=ud(()=>{let e=Bp({scrollBehavior:()=>({left:0,top:0}),routes:Vp,history:cp()});e.beforeEach((e,t)=>{if(eu(e,t)||e.fullPath===t.fullPath||!Rd())return!0;let n=Gc.global.t;return new Promise(e=>{Nd.create({title:n(`unsaved.title`),message:n(`unsaved.message`),dark:!0,cancel:{flat:!0,label:n(`unsaved.stay`),color:`grey-5`},ok:{flat:!0,label:n(`unsaved.leave`),color:`negative`}}).onOk(()=>e(!0)).onCancel(()=>e(!1))})});let t=()=>{let e=Z();return nu(Rd(),pc(e)?{}:e.queuedMessages)};return window.addEventListener(`beforeunload`,e=>{t()&&(e.preventDefault(),e.returnValue=``)}),Yl&&(window.koboPane={hasUnsavedWork:t,ready:()=>e.currentRoute.value.name!=null,navigate:t=>e.push({name:`workspace`,params:{id:t}}),workspaceId:()=>typeof e.currentRoute.value.params.id==`string`?e.currentRoute.value.params.id:void 0}),e});async function Up(e,t){let n=e(sd);n.use(Kt,t);let r=typeof dd==`function`?await dd({}):dd;n.use(r);let a=i(typeof Hp==`function`?await Hp({store:r}):Hp);return r.use(({store:e})=>{e.router=a}),{app:n,store:r,router:a}}var Wp={config:{dark:!0,brand:{primary:`#6c63ff`,secondary:`#26a69a`,accent:`#9c27b0`,dark:`#1a1a2e`,"dark-page":`#1a1a2e`,positive:`#21ba45`,negative:`#c10015`,info:`#31ccec`,warning:`#f2c037`}},plugins:{Notify:Fc,Dialog:Nd}},Gp=function(){return!!(window.location.hostname===`localhost`||window.location.hostname===`[::1]`||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/))},Kp;typeof window<`u`&&(Kp=typeof Promise<`u`?new Promise(function(e){return window.addEventListener(`load`,e)}):{then:function(e){return window.addEventListener(`load`,e)}});function qp(e,t){t===void 0&&(t={});var n=t.registrationOptions;n===void 0&&(n={}),delete t.registrationOptions;var r=function(e){for(var n=[],r=arguments.length-1;r-->0;)n[r]=arguments[r+1];t&&t[e]&&t[e].apply(t,n)};`serviceWorker`in navigator&&Kp.then(function(){Gp()?(Xp(e,r,n),navigator.serviceWorker.ready.then(function(e){r(`ready`,e)}).catch(function(e){return Jp(r,e)})):(Yp(e,r,n),navigator.serviceWorker.ready.then(function(e){r(`ready`,e)}).catch(function(e){return Jp(r,e)}))})}function Jp(e,t){navigator.onLine||e(`offline`),e(`error`,t)}function Yp(e,t,n){navigator.serviceWorker.register(e,n).then(function(e){if(t(`registered`,e),e.waiting){t(`updated`,e);return}e.onupdatefound=function(){t(`updatefound`,e);var n=e.installing;n.onstatechange=function(){n.state===`installed`&&(navigator.serviceWorker.controller?t(`updated`,e):t(`cached`,e))}}}).catch(function(e){return Jp(t,e)})}function Xp(e,t,n){fetch(e).then(function(r){r.status===404?(t(`error`,Error(`Service worker not found at `+e)),Zp()):r.headers.get(`content-type`).indexOf(`javascript`)===-1?(t(`error`,Error(`Expected `+e+` to have javascript content-type, but received `+r.headers.get(`content-type`))),Zp()):Yp(e,t,n)}).catch(function(e){return Jp(t,e)})}function Zp(){`serviceWorker`in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()}).catch(function(e){return Jp(emit,e)})}qp(`/sw.js`);var Qp=`/`;async function $p({app:e,router:t,store:n},r){let i=!1,a=e=>{try{return t.resolve(e).href}catch{}return Object(e)===e?null:e},o=e=>{if(i=!0,typeof e==`string`&&/^https?:\/\//.test(e)){window.location.href=e;return}let t=a(e);t!==null&&(window.location.href=t,window.location.reload())},s=window.location.hash.slice(1)||`/`;for(let a=0;i===!1&&a<r.length;a++)try{await r[a]({app:e,router:t,store:n,ssrContext:null,redirect:o,urlPath:s,publicPath:Qp})}catch(e){i||console.error(`[Quasar] boot error:`,e);return}i||(e.use(t),e.mount(`#q-app`))}Up(Fe,Wp).then(e=>{let[t,n]=Promise.allSettled===void 0?[`all`,e=>e.map(e=>e.default)]:[`allSettled`,e=>e.map(e=>{if(e.status===`rejected`){console.error(`[Quasar] boot error:`,e.reason);return}return e.value.default})];return Promise[t]([Y(()=>import(`./i18n-BkUirOzl.js`),[]),Y(()=>import(`./network-auth-CVGS__6a.js`),[]),Y(()=>import(`./notify-theme-DIKLxr8F.js`),[])]).then(t=>{$p(e,n(t).filter(e=>typeof e==`function`))})});export{tl as $,ql as A,kn as At,dl as B,Qt as Bt,fu as C,Cs as Ct,Ql as D,Ln as Dt,Zl as E,Vn as Et,Ml as F,fn as Ft,ml as G,Bt as Gt,fl as H,Xt as Ht,jl as I,nn as It,vl as J,bl as K,Lt as Kt,Fl as L,$t as Lt,zl as M,Tn as Mt,Rl as N,rn as Nt,tu as O,Mn as Ot,Il as P,tn as Pt,el as Q,Nl as R,un as Rt,mu as S,xs as St,Yl as T,Lo as Tt,ul as U,qt as Ut,gl as V,Zt as Vt,hl as W,It as Wt,X,al as Y,il as Z,yu as _,$s as _t,wd as a,Wc as at,hu as b,Fs as bt,_d as c,Fc as ct,od as d,sc as dt,nl as et,ku as f,ac as ft,Du as g,ec as gt,Tu as h,ic as ht,Id as i,Gc as it,Ul as j,wn as jt,Jl as k,Nn as kt,md as l,vc as lt,Cu as m,rc as mt,ef as n,$c as nt,bd as o,Yc as ot,Z as p,nc as pt,yl as q,Fd as r,Xc as rt,yd as s,Y as st,tf as t,Qc as tt,ld as u,_c as ut,bu as v,Qs as vt,Xl as w,is as wt,gu as x,Ss as xt,vu as y,bs as yt,Sl as z,ln as zt};
|
|
20
|
+
sudo setfacl -Rd -m u:$(whoami):rwX . && sudo setfacl -R -m u:$(whoami):rwX .`,"settings.purgeDocsPermissionsRecoverChownIntro":`Option B — Take ownership (simpler, loses the "created by root in container" trace but rarely matters):`,"settings.purgeDocsPermissionsRecoverChownCommand":` sudo chown -R $(whoami):$(whoami) .`,"settings.purgeDocsPermissionsRecoverFootnote":"Tip: you can run these commands directly on the worktrees root (e.g. `~/.worktrees/`) to cover all existing AND future workspaces at once. Once done, Kōbō purge will work without permission errors.","contextMenu.runSetup":`Run setup script`,"contextMenu.exportEvents":`Export events (CSV)`,"contextMenu.dismissChangesRequested":`Mark 'Changes requested' as seen`,"contextMenu.dismissCiFailure":`Mark 'CI failure' as seen`,"contextMenu.restoreChangesRequested":`Mark 'Changes requested' as unseen`,"contextMenu.restoreCiFailure":`Mark 'CI failure' as unseen`,"contextMenu.exportingEvents":`Preparing export…`,"contextMenu.exportEventsError":`Event export failed`,"contextMenu.openNotion":`Open in Notion`,"contextMenu.openSentry":`Open in Sentry`,"contextMenu.openPr":`Open PR`,"contextMenu.ignorePrWatch":`Ignore PR checks`,"contextMenu.resumePrWatch":`Resume PR checks`,"contextMenu.prWatchToggleFailed":`Failed to update PR checks setting`,"workspace.favorite":`Mark as favorite`,"workspace.unfavorite":`Remove from favorites`,"workspace.showFavoritesOnly":`Show favorites only`,"workspace.searchArchivedToggle":`Also search archived workspaces`,"workspace.descriptionPlaceholder":`Add a short description`,"workspace.descriptionDialogHint":`Plain text, 200 characters max. Leave empty to clear.`,"workspace.descriptionTooLong":`Description must be 200 characters or fewer.`,"workspace.descriptionSaveFailed":`Failed to save description.`,"workspace.agentDescriptionTooltip":`Live status maintained by the agent`,"mcp.tool.setWorkspaceDescription":`Set the workspace short description (≤ 200 chars).`,"tags.manage":`Manage tags`,"tags.manageTitle":`Manage workspace tags`,"tags.noTagsDefined":`No tags defined. Add some in Settings > Global > Tags.`,"tags.orphanedHint":`{count} tag(s) are no longer in the global catalog. Uncheck to remove them.`,"settings.tagsTitle":`Workspace tags`,"settings.tagsHint":`Define the tags you can assign to workspaces. Type to add, click the cross to remove.`,"settings.tagsLabel":`Available tags`,"settings.branchPrefixesTitle":`Branch prefixes`,"settings.branchPrefixesHint":`Manage the git branch prefixes available on the workspace creation page. The first one is pre-selected by default.`,"settings.branchPrefixesEmpty":`No branch prefix defined. Add at least one below.`,"settings.branchPrefixesAddLabel":`New prefix`,"settings.branchPrefixesEditHint":`Click to rename`,"settings.branchPrefixesMoveUp":`Move up`,"settings.branchPrefixesMoveDown":`Move down`,"settings.worktreesTitle":`Git worktrees`,"settings.worktreesHint":`Choose where new workspace worktrees are created. Relative paths are project-relative; Linux/macOS and Windows absolute paths, $HOME, ~, and %USERPROFILE% are supported.`,"settings.worktreesPathLabel":`Worktrees path`,"settings.worktreesPathRequired":`Worktrees path is required.`,"settings.worktreesPrefixByProject":`Prefix worktrees by project name`,"settings.worktreesPrefixByProjectHint":`Place each worktree under a sub-directory named after the project, to avoid collisions when multiple projects share the same worktrees root.`,"settings.shareTitle":`Share configuration`,"settings.shareHint":`Export your settings, templates and tags as a JSON bundle. MCP API keys are stripped from exports for security.`,"settings.exportConfig":`Export`,"settings.importConfig":`Import`,"settings.exportSuccess":`Configuration exported`,"settings.importSuccess":`Configuration imported`,"settings.importConfirmTitle":`Import configuration`,"settings.importConfirmMessage":`This will replace your current settings, templates and tags. Your MCP keys are preserved. Continue?`,"settings.mcp.title":`External LLM connections (MCP)`,"settings.mcp.hint":`Connect an MCP client to read workspace conversations, send messages and answer questions.`,"settings.mcp.remoteDisabled":`Remote connections require network access and a server restart after enabling it.`,"settings.mcp.clientName":`Client name (optional)`,"settings.mcp.connection":`Connection`,"settings.mcp.local":`Local HTTP`,"settings.mcp.remote":`Remote HTTP`,"settings.mcp.proxy":`Reverse proxy`,"settings.mcp.stdio":`Local stdio`,"settings.mcp.copyUrl":`Copy URL`,"settings.mcp.copyConfig":`Copy configuration`,"settings.mcp.copyWithToken":`Copy with token`,"settings.mcp.genericFormat":`These examples use a generic mcpServers format. Adapt the container format to your MCP client. Token placeholders are kept in previews.`,"settings.mcp.tokenUnavailable":`No token is available. Enable network access before copying authenticated configuration.`,"settings.mcp.stdioUnavailable":`The stdio entrypoint is unavailable in this installation. Use HTTP or build Kōbō first.`,"settings.mcp.copyFailed":`Could not copy to the clipboard.`,"tours.settings.mcp.title":`Connect an external LLM`,"tours.settings.mcp.description":`Copy an HTTP or stdio configuration to let an external assistant communicate with your workspaces.`,"settings.network.title":`Network access`,"settings.network.hint":`Control Kōbō from another device on your trusted LAN. Off = localhost only. On = reachable on your network, protected by a token. Restart Kōbō after toggling.`,"settings.network.enable":`Enable network access`,"settings.network.behindProxy":`Behind a reverse proxy`,"settings.network.behindProxyHint":`Kōbō can no longer tell your own machine apart from a proxied request — even localhost will need the token from now on. Enable this only if a reverse proxy (Traefik, nginx, Caddy…) sits in front of Kōbō.`,"settings.network.restartRequired":`Restart Kōbō to apply the new bind address.`,"settings.network.token":`Access token`,"settings.network.copy":`Copy`,"settings.network.copied":`Copied`,"settings.network.regenerate":`Regenerate`,"settings.network.regenerateConfirm":`Regenerate the token? Connected devices will need the new token.`,"settings.network.urls":`LAN URLs`,"settings.network.scan":`Scan to connect`,"settings.network.noUrls":`No LAN address detected.`,"settings.network.loadFailed":`Failed to load network access settings.`,"settings.network.updateFailed":`Failed to update network access settings.`,"settings.unsavedChanges.title":`Unsaved changes`,"settings.unsavedChanges.message":`This project has unsaved changes. Switching projects will discard them.`,"settings.unsavedChanges.discard":`Discard and switch`,"settings.unsavedChanges.cancel":`Cancel`,"settings.loadFailed":`Settings could not be loaded`,"settings.loadFailedHint":`Saving is disabled: the form is showing default values, and writing them would overwrite your real configuration.`,"health.title":`Health`,"health.tooltip":`System health`,"changelog.title":`Changelog`,"changelog.tooltip":`What's new in Kōbō`,"changelog.empty":`No changelog available.`,"changelog.current":`current`,"changelog.currentVersion":`Current version: v{version}`,"health.envTitle":`Environment`,"health.version":`Version`,"health.koboHome":`Kōbō home`,"health.dbTitle":`Database`,"health.dbPath":`Path`,"health.dbSize":`Size`,"health.schemaVersion":`Schema version`,"health.settingsSchemaVersion":`Settings schema`,"health.runtimesTitle":`Agent runtimes`,"health.claudeCliTitle":`Claude Code`,"health.claudeCliMissing":`claude not on PATH`,"health.codexCliTitle":`OpenAI Codex`,"health.codexCliMissing":`codex binary not resolvable`,"health.forgeCliTitle":`Forge CLI (gh / glab)`,"health.forgeCliMissing":`Neither gh nor glab found — pull requests and CI watching are unavailable`,"health.workspacesTitle":`Workspaces`,"health.workspacesCount":`{total} total, {archived} archived`,"health.worktreesMissing":`{count} worktree(s) missing on disk`,"health.sessionsTitle":`Agent sessions`,"health.sessionsOrphaned":`{n} orphaned running session(s)`,"health.integrationsTitle":`Integrations`,"health.integrationConfigured":`configured`,"health.integrationMissing":`not configured`,"health.integrationDisabled":`disabled`,"settings.integrationEnabled":`Enable integration`,"health.activeTitle":`Active state`,"health.activeQuotaBackoffs":`Pending quota backoffs`,"health.activeWakeups":`Scheduled wakeups`,"health.activeAutoLoop":`Auto-loop running`,"health.activeAgentSessions":`Live agent sessions`,"health.activeDevServers":`Running dev servers`,"health.noneActive":`None.`,"health.quotaResumeAt":`resumes at {time}`,"health.wakeupAt":`wakes at {time}`,"health.startedAgo":`started {time} ago`,"health.autoLoopReady":`ready, iterating`,"health.autoLoopGrooming":`grooming in progress`,"session.started":`Session started`,"session.ended":`Session ended`,"session.compacted":`Context compacted`,"session.endedCompleted":`Turn finished — send a message to continue`,"session.endedKilled":`Session stopped`,"session.endedError":`Session ended on an error`,"session.endedWatchdog":`Session force-closed after a period of inactivity`,"tool.running":`Running...`,"activity.raw_lines":`Raw output lines ({n})`,"activity.loading_older":`Loading older messages…`,"activity.compacting":`Compacting context…`,"activity.prev_user_message":`Previous user message`,"activity.scroll_to_bottom":`Scroll to bottom`,"activity.empty":`Nothing yet`,"activity.emptyHint":`The agent output will show up here as soon as a session starts.`,"activity.a11y.region":`Agent activity announcements`,"activity.a11y.agentSaid":`Agent: {text}`,"activity.a11y.toolStarted":`Tool {name} started`,"activity.a11y.toolFinished":`Tool {name} finished`,"activity.a11y.toolFailed":`Tool {name} failed`,"chat.systemPrompt":`System prompt`,"chat.agent":`Agent`,"chat.cleanupScript":`Cleanup script`,"chat.archiveScript":`Archive script`,"chat.setupScript":`Setup script`,"chat.hookScript":`Hook {event}`,"chat.scriptDone":`Done`,"chat.scriptComplete":`[{phase}] Complete`,"chat.scriptError":`[{phase}] Error: {message}`,"chat.unknownError":`unknown`,"chat.you":`You`,"chat.session":`Session`,"chat.nActions":`{n} action | {n} actions`,"chat.lastUpdatedAt":`Last updated at {time}`,"chat.scrollToTurnTop":`Scroll to top of this message`,"migration.backing_up":`Backing up the database…`,"migration.running":`Migrating agent data — {processed}/{total}`,"migration.error":`Migration failed`,"migration.backup_location":`A backup was saved at {path}. Restart Kōbō to retry.`,"migration.retry":`Restart Kōbō to retry.`,"engine.select":`Engine`,"engine.model":`Model`,"engine.effort":`Reasoning effort`,"wakeup.scheduledIn":`Next wakeup in {n}s`,"wakeup.scheduledAt":`Next wakeup at {time}`,"wakeup.firing":`Waking up...`,"wakeup.reason":`Reason: {reason}`,"wakeup.cancel":`Cancel this wakeup`,"wakeup.pendingIndicator":`Wakeup scheduled`,"cron.pendingIndicator":`{n} cron(s) scheduled`,"schedule.tabLabel":`Schedule`,"schedule.panelTitle":`Automation`,"schedule.panelDescription":`Wake this workspace later or run instructions on a schedule.`,"schedule.activeTitle":`Active schedules`,"schedule.emptyTitle":`Nothing scheduled`,"schedule.emptyDescription":`Create a wakeup or recurring task below.`,"schedule.cancelWakeup":`Cancel this wakeup`,"schedule.cancelCron":`Delete this recurring task`,"schedule.createTitle":`Create a schedule`,"schedule.createDescription":`Choose when and how the agent should run.`,"schedule.typeWakeup":`One-time wakeup`,"schedule.typeRecurring":`Recurring task`,"schedule.wakeupDescription":`Run the prompt once after a delay.`,"schedule.cronDescription":`Run the prompt repeatedly on a fixed schedule.`,"schedule.promptHint":`Instructions that will be sent to the agent`,"schedule.frequencyTitle":`Frequency`,"schedule.advancedDescription":`Use a raw cron expression`,"schedule.cronExpressionLabel":`Cron expression`,"schedule.sessionModeTitle":`Execution session`,"schedule.modeResume":`Resume session`,"schedule.oneShotHint":`Remove this schedule after its first run.`,"schedule.wakeupTitle":`Wakeup pending`,"schedule.cronsTitle":`Recurring schedules`,"schedule.noWakeup":`No wakeup scheduled`,"schedule.noCrons":`No cron scheduled`,"schedule.invalidCron":`Inactive: invalid expression. Remove and recreate this schedule.`,"schedule.nextFireAt":`next at {time}`,"schedule.lastFiredAt":`last fired {time} ago`,"schedule.addCronTitle":`Add a recurring task`,"schedule.addWakeupTitle":`Schedule a wakeup`,"schedule.every":`Every`,"schedule.unitMinutes":`minutes`,"schedule.unitHours":`hours`,"schedule.unitDays":`days`,"schedule.daysDriftWarning":`The interval may shrink to 1 day at the end of the month (cron limitation).`,"schedule.advancedExpression":`Advanced expression (optional)`,"schedule.advancedHint":`Raw cron (e.g. */15 * * * *) or {'@'}hourly/{'@'}daily — overrides the picker when set.`,"schedule.promptLabel":`Prompt`,"schedule.labelOptional":`Label (optional)`,"schedule.delayMinutes":`Delay (minutes)`,"schedule.modeFresh":`New session`,"schedule.oneShot":`Run only once`,"schedule.addCronBtn":`Add cron`,"schedule.addWakeupBtn":`Schedule wakeup`,"schedule.cronCreated":`Recurring task added`,"schedule.wakeupCreated":`Wakeup scheduled`,"askUserQuestion.title":`The agent is asking a question`,"askUserQuestion.submit":`Submit answer`,"askUserQuestion.multiSelectHint":`Select one or more options`,"askUserQuestion.otherOption":`Other`,"askUserQuestion.otherOptionHint":`specify in your next chat message`,"askUserQuestion.freeFormLabel":`Specify your answer`,"askUserQuestion.freeFormHint":`This answer will be sent directly to the agent.`,"askUserQuestion.noPending":`No pending question`,"askUserQuestion.next":`Next`,"askUserQuestion.previous":`Previous`,"askUserQuestion.cancel":`Cancel`,"askUserQuestion.cancelTooltip":`Skip this question — the agent will proceed without an answer`,"askUserQuestion.collapse":`Collapse the question panel`,"askUserQuestion.expand":`Expand the question panel`,"permissionRequest.title":`The agent wants to use a tool`,"permissionRequest.allow":`Allow`,"permissionRequest.allowOnce":`Allow once`,"permissionRequest.allowTurn":`Allow this turn`,"permissionRequest.operationUnavailable":`Operation details unavailable; approve once or the entire tool.`,"permissionRequest.allowOperation":`Always this operation`,"permissionRequest.allowTool":`Always this tool`,"permissionRequest.deny":`Deny`,"permissionRequest.tool":`Tool`,"permissionRequest.input":`Input`,"permissionRequest.rawInput":`Technical details`,"permissionRequest.collapse":`Collapse the permission panel`,"permissionRequest.expand":`Expand the permission panel`,"permissionRequest.denied":`denied by user`,"workspaceStatus.created":`created`,"workspaceStatus.extracting":`extracting`,"workspaceStatus.brainstorming":`brainstorming`,"workspaceStatus.compacting":`compacting`,"chatInput.compactingBanner":`Context compaction in progress. Sending will be available when it finishes.`,"workspaceStatus.executing":`running`,"workspaceStatus.awaitingUser":`awaiting your answer`,"workspaceStatus.completed":`completed`,"workspaceStatus.idle":`idle`,"workspaceStatus.error":`error`,"workspaceStatus.quota":`quota reached`,"workspaceStatus.retrying":`auto-resuming`,"workspaceList.prOpen":`#{n} — Pull request open`,"workspaceList.prWatchDisabledIndicator":`PR checks ignored for this workspace`,"workspaceList.prChangesRequested":`#{n} — Changes requested`,"workspaceList.attentionCiFailed":`CI failed`,"workspaceList.attentionChangesRequested":`Changes requested`,"workspaceList.attentionReadyToMerge":`Ready to merge`,"autoLoop.toggle":`Auto-loop`,"autoLoop.start":`Start auto-loop`,"autoLoop.prepare":`Prepare for auto-loop`,"autoLoop.reprepare":`Re-prepare for auto-loop`,"autoLoop.reprepareTooltip":`Re-run the grooming pass to add or refresh tasks before resuming the loop`,"autoLoop.prepareBusy":`Wait for the agent to finish before preparing`,"autoLoop.forceReady":`I know what I'm doing — skip grooming`,"autoLoop.forceReadyConfirm":`Skip grooming and mark auto-loop ready? This may cause the loop to stall if tasks aren't atomic.`,"autoLoop.stop":`Stop auto-loop`,"autoLoop.notReady":`Run 'Prepare for auto-loop' first`,"autoLoop.noTasks":`Add tasks first`,"autoLoop.progress":`Auto-loop · {done}/{total} tasks`,"autoLoop.preparing":`Auto-loop · preparing`,"autoLoop.preparingTooltip":`Grooming in progress — the agent is creating / reviewing tasks. The loop will start running once it calls mark_auto_loop_ready.`,"autoLoop.running":`Auto-loop running`,"autoLoop.startInMode":`Start in auto-loop mode`,"autoLoop.brainstormModelPrefix":`Brainstorm:`,"autoLoop.brainstormModelTooltip":`Model used only for the initial brainstorming session — every task after that uses the model picked above`,"autoLoop.brainstormReasoningPrefix":`Brainstorm:`,"autoLoop.brainstormReasoningTooltip":`Reasoning level used only for the initial brainstorming session`,"autoLoop.executionModelPrefix":`Loop:`,"autoLoop.executionModelTooltip":`Model used for every auto-loop task after the initial brainstorming session`,"autoLoop.sessionMode.perTask":`New session per task`,"autoLoop.sessionMode.label":`Session:`,"autoLoop.sessionMode.perTaskTooltip":`Each task starts a fresh Claude Code session with no memory of prior tasks`,"autoLoop.sessionMode.continuous":`Continuous session`,"autoLoop.sessionMode.continuousTooltip":`All tasks run in the same session — the agent keeps full context, but the session grows longer over time`,"koboCommand.prepAutoloopDesc":`Prepare tasks for auto-loop mode (groom for atomicity)`,"staleSessionBanner.title":`Auto-loop running`,"staleSessionBanner.message":`You're viewing an older session — the agent is currently working in the latest one.`,"staleSessionBanner.staleTitle":`Older session`,"staleSessionBanner.staleMessage":`You're viewing an older session — messages you send go to this session, not the latest one.`,"staleSessionBanner.switchToCurrent":`Switch to current`,"network.login.title":`Network access`,"network.login.description":`This Kōbō requires a token to be controlled from the network. Paste the token shown in Settings on the host machine.`,"network.login.tokenLabel":`Token`,"network.login.tokenPlaceholder":`Paste your token`,"network.login.connect":`Connect`,"network.login.invalid":`Invalid token`,"network.login.serverError":`Server error — try again.`,"network.login.unreachable":`Kōbō is unreachable — check your connection.`,"layout.toggleWorkspaces":`Toggle workspaces panel`,"layout.togglePanel":`Toggle side panel`,"unsaved.title":`Leave without saving?`,"unsaved.message":`You have unsaved changes. Leaving this page discards them.`,"unsaved.leave":`Leave`,"unsaved.stay":`Stay`,"prCheckout.staleRetriesExhausted":`The repository state kept changing while we tried to apply your choices. Close this dialog and try again from the pull request picker.`,"prPicker.title":`Import from a pull request`,"prPicker.filterAll":`All`,"prPicker.filterMine":`Mine`,"prPicker.filterReviewRequested":`Review requested`,"prPicker.searchPlaceholder":`Search pull requests…`,"prPicker.loadMore":`Load more`,"prPicker.empty":`No open pull request matches.`,"prPicker.forkNotSupported":`This PR comes from a fork; Kōbō cannot check it out.`,"prPicker.loadFailed":`Failed to load pull requests.`,"prPicker.badge.workspaceExists":`Already open in Kōbō`,"prPicker.badge.worktreePresent":`Worktree present`,"prPicker.badge.localBranch":`Local branch`,"prPicker.badge.new":`New`,"prPicker.badge.draft":`Draft`,"prCheckout.title":`Prepare the worktree`,"prCheckout.apply":`Apply`,"prCheckout.cancel":`Cancel`,"prCheckout.retry":`Retry`,"prCheckout.diagnoseFailed":`Failed to diagnose the pull request.`,"prCheckout.resolveFailed":`Failed to resolve the pull request checkout.`,"prCheckout.path.required":`Enter a worktree path that does not already exist.`,"prCheckout.workspace.restoreNotAvailable":"Restoring a purged workspace isn't available yet from here. Recreate its worktree folder on disk (e.g. `git worktree add`) and Kōbō will reattach it automatically within about 30 seconds.","prCheckout.staleReloaded":`The repository changed; the diagnosis has been refreshed.`,"prCheckout.step.blocked":`Cannot continue`,"prCheckout.step.path":`Worktree location`,"prCheckout.step.workspace":`Existing workspace`,"prCheckout.step.worktree":`Existing worktree`,"prCheckout.step.operation":`Git operation in progress`,"prCheckout.step.changes":`Uncommitted changes`,"prCheckout.step.divergence":`Local branch vs origin`,"prCheckout.workspace.activeHint":`A workspace named "{name}" already tracks this branch.`,"prCheckout.workspace.open":`Open that workspace`,"prCheckout.workspace.continue":`Continue on another path`,"prCheckout.workspace.unarchive":`Unarchive and open it`,"prCheckout.workspace.restore":`Recreate its worktree`,"prCheckout.worktree.orphanHint":`A worktree already sits on this branch at {path}.`,"prCheckout.worktree.attach":`Attach it`,"prCheckout.worktree.branchInUse":`This branch is already checked out. Attach its existing worktree.`,"prCheckout.worktree.createElsewhere":`Create another one elsewhere`,"prCheckout.operation.hint":`A {operation} is in progress in that worktree.`,"prCheckout.operation.abort":`Abort it`,"prCheckout.operation.cancel":`Leave it alone and stop here`,"prCheckout.changes.hint":`{modified} modified, {staged} staged, {untracked} untracked.`,"prCheckout.changes.stash":`Stash them`,"prCheckout.changes.commit":`Commit them`,"prCheckout.changes.discard":`Discard them (kept as a labelled stash)`,"prCheckout.changes.keepResetConflict":`Keeping local changes is incompatible with a hard reset. Stash or commit them first, or keep the branch.`,"prCheckout.changes.keep":`Keep them as they are`,"prCheckout.divergence.behindHint":`Your branch is {behind} commit(s) behind origin.`,"prCheckout.divergence.aheadHint":`Your branch has {ahead} unpushed commit(s).`,"prCheckout.divergence.divergedHint":`{ahead} ahead, {behind} behind origin.`,"prCheckout.divergence.fastForward":`Fast-forward to origin`,"prCheckout.divergence.rebase":`Rebase onto origin`,"prCheckout.divergence.resetHard":`Reset to origin (a backup branch is created first)`,"prCheckout.divergence.keep":`Keep the local state`,"prCheckout.blocked.forgeUnavailable":`The forge CLI is missing or not authenticated.`,"prCheckout.blocked.forkPr":`This PR comes from a fork; Kōbō cannot check it out.`,"prCheckout.blocked.headBranchDeleted":`The branch no longer exists on the remote.`,"prCheckout.blocked.indexLock":`Another git process is running (index.lock is present).`,"prCheckout.blocked.pathOccupied":`{path} already exists and is not a worktree.`,"prCheckout.blocked.worktreeOtherBranch":`{path} is a worktree on another branch ({branch}).`,"prCheckout.blocked.noCommonAncestor":`A local branch named {branch} exists with unrelated history.`,"split.title":`Double workspace`,"split.open":`Open side by side`,"split.openBeside":`Open beside`,"split.close":`Close split view`,"split.left":`Left workspace`,"split.right":`Right workspace`,"split.choose":`Choose a workspace`,"split.recipient":`Send to: {name}`,"absence.title":`Since your last visit`,"settings.activityDigestHint":`Show a summary of events that occurred while you were away. Turning this off hides the entry and stops collecting new events without deleting existing history.`,"absence.pending":`Changes to review`,"absence.retention":`Significant activity from the last 30 days, recorded since this feature was installed. Visit tracking is local to this browser.`,"absence.since":`Since {date}`,"absence.error":`Unable to load activity.`,"absence.retry":`Retry`,"absence.empty":`No new activity.`,"absence.more":`Load more`,"absence.markRead":`Mark displayed events as read`,"absence.kind.question":`Question asked`,"absence.kind.permission":`Approval requested`,"absence.kind.completed":`Session completed`,"absence.kind.error":`Agent error`,"absence.kind.pr-merged":`PR merged`,"absence.kind.pr-approved":`PR approved`,"absence.kind.pr-changes-requested":`Changes requested`,"absence.kind.pr-ci-failed":`CI failed`,"absence.kind.pr-ci-recovered":`CI recovered`,"absence.kind.pr-merge-conflict":`Merge conflict`,"absence.kind.pr-ready-to-merge":`PR ready to merge`,"absence.kind.archived":`Workspace archived`,"absence.kind.purged":`Worktree purged`,"absence.kind.restored":`Worktree restored`,"tours.split.controls.title":`Two independent workspaces`,"tours.split.controls.description":`Choose one workspace per pane. Resize the divider; each conversation keeps its own recipient and panels.`,"tours.home.sort.title":`Sort workspaces`,"tours.home.sort.description":`Choose the order and direction within each group. Your choice is remembered.`,"tours.home.activity.title":`Review activity after an absence`,"tours.home.activity.description":`At the bottom of the left drawer, find questions, session endings, errors and PR changes since your last visit.`},Lc=`modulepreload`,Rc=function(e){return`/`+e},zc={},Y=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=Rc(t,n),t=s(t),t in zc)return;zc[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Lc,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Bc=`kobo:locale`,Vc=[`en`,`fr`,`de`,`es`,`it`];function Hc(e){return Vc.includes(e)}function Uc(){let e=localStorage.getItem(Bc);if(e&&Hc(e))return e;let t=navigator.language.split(`-`)[0];return t&&Hc(t)?(localStorage.setItem(Bc,t),t):(localStorage.setItem(Bc,`en`),`en`)}var Wc=Uc(),Gc=Io({legacy:!1,locale:Wc,fallbackLocale:`en`,messages:{en:Ic}}),Kc=new Set([`en`]),qc={fr:()=>Y(()=>import(`./fr-Qv-edVJn.js`),[]),de:()=>Y(()=>import(`./de-D9gPXN_a.js`),[]),es:()=>Y(()=>import(`./es-B4Q1ncyP.js`),[]),it:()=>Y(()=>import(`./it-D-qzfo9T.js`),[])},Jc=0;async function Yc(e){let t=++Jc;if(!Kc.has(e)&&e!==`en`){let t=await qc[e]();Gc.global.setLocaleMessage(e,t.default),Kc.add(e)}t===Jc&&(Gc.global.locale.value=e,Xc(e))}function Xc(e){typeof document>`u`||(document.documentElement.lang=e)}Xc(Wc);var Zc=class{constructor(){Vn(this,`pending`,new Map)}wait(e,t,n){return new Promise((r,i)=>{let a=setTimeout(()=>o(Error(n)),3e4),o=e=>{clearTimeout(a),this.pending.delete(t),e?i(e):r()};this.pending.set(t,{workspaceId:e,finish:o})})}settle(e,t,n){let r=this.pending.get(t);r?.workspaceId===e&&r.finish(n)}disconnect(e){for(let t of this.pending.values())t.finish(Error(e))}},Qc=new Map,$c=d(0);function el(){$c.value++}function tl(e){e.reconnectTimer&&=(clearTimeout(e.reconnectTimer),void 0)}function nl(e){let t=Qc.get(e);t&&(tl(t),t.ws&&(t.ws.onclose=null,t.ws.readyState===WebSocket.OPEN&&t.ws.close()),t.onDataDisposable?.dispose(),t.terminal.dispose(),Qc.delete(e),el())}var rl=5e3,il=Ve(`agent-stream`,()=>{let e=t(new Map),n=t(new Map),r=t(new Map),i=t(new Map),a=t(new Map),o=t(new Map),s=t(new Map),c=t(new Map),l=d(new Map),u=t(new Map);function f(e,t){p(e);let n=0;for(let[r,i]of u.value.get(e)??[])t(r)&&(n+=i);return n}function p(e){l.value.get(e)}function m(e){l.value.set(e,(l.value.get(e)??0)+1)}function h(e){return l.value.get(e)??0}function g(e){let t=c.value.get(e);return t||(t=new Set,c.value.set(e,t)),t}function _(e){return p(e),s.value.get(e)??!1}function v(e,t){(s.value.get(e)??!1)!==t&&(s.value.set(e,t),m(e))}function y(t){return p(t),e.value.get(t)??[]}function b(e){return p(e),n.value.get(e)??[]}function x(e){return p(e),r.value.get(e)??[]}function S(e){return p(e),i.value.get(e)??[]}function C(e){return p(e),a.value.get(e)}function w(e){return p(e),o.value.get(e)??!0}function T(t,o,s,c,l,d=!0){let f=e.value.get(t)??[],p=n.value.get(t)??[],h=r.value.get(t)??[],_=i.value.get(t)??[],v=g(t);if(c&&v.has(c))return;if(d){let e=u.value.get(t)??new Map;e.set(l??null,(e.get(l??null)??0)+1),u.value.set(t,e)}let y=f.length===0;f.push(o),p.push(s??new Date().toISOString()),h.push(l??null),_.push(c??null),c&&v.add(c),e.value.set(t,f),n.value.set(t,p),r.value.set(t,h),i.value.set(t,_),y&&c&&a.value.set(t,c),E(t,f,p,h,_),m(t)}function E(e,t,n,r,i){let s=t.length-rl;if(s<=0)return;let c=s+500-1,l=i.slice(0,c),u=g(e);for(let e of l)e&&u.delete(e);t.splice(0,c),n.splice(0,c),r.splice(0,c),i.splice(0,c);let d=i.find(e=>typeof e==`string`);d?a.value.set(e,d):a.value.delete(e),o.value.set(e,!0)}function D(t,o,s,c){let l=e.value.get(t)??[],u=n.value.get(t)??[],d=r.value.get(t)??[],f=i.value.get(t)??[],p=g(t),h=[];for(let e=0;e<o.length;e++){let t=o[e];if(!t)continue;let n=c.eventIds[e]??null;n&&p.has(n)||(l.push(t),u.push(s[e]??new Date().toISOString()),d.push(c.sessionIds[e]??null),f.push(n),n&&p.add(n),h.push(e))}if(h.length===0)return h;if(e.value.set(t,l),n.value.set(t,u),r.value.set(t,d),i.value.set(t,f),!a.value.has(t)){let e=f.find(e=>typeof e==`string`);e&&a.value.set(t,e)}return E(t,l,u,d,f),m(t),h}function O(t,s,c,l){let u=[...s],d=c?[...c]:s.map(()=>new Date().toISOString()),f=l?.sessionIds?[...l.sessionIds]:s.map(()=>null),p=l?.eventIds?[...l.eventIds]:s.map(()=>null);e.value.set(t,u),n.value.set(t,d),r.value.set(t,f),i.value.set(t,p);let h=g(t);h.clear();for(let e of p)e&&h.add(e);l?.oldestId?a.value.set(t,l.oldestId):a.value.delete(t),l&&typeof l.hasMoreOlder==`boolean`?o.value.set(t,l.hasMoreOlder):o.value.delete(t),E(t,u,d,f,p),m(t)}function ee(t,s,c,l){if(s.length===0){o.value.set(t,l.hasMoreOlder),m(t);return}let u=e.value.get(t)??[],d=n.value.get(t)??[],f=r.value.get(t)??[],p=i.value.get(t)??[],h=l.sessionIds??s.map(()=>null),_=l.eventIds??s.map(()=>null);e.value.set(t,[...s,...u]),n.value.set(t,[...c,...d]),r.value.set(t,[...h,...f]),i.value.set(t,[..._,...p]);let v=g(t);for(let e of _)e&&v.add(e);l.oldestId&&a.value.set(t,l.oldestId),o.value.set(t,l.hasMoreOlder),m(t)}function k(t,a){let o=e.value.get(t),s=i.value.get(t);if(!o||!s)return;let c=s.indexOf(a);if(c===-1)return;let l=n.value.get(t),u=r.value.get(t);o.splice(c,1),s.splice(c,1),l&&l.splice(c,1),u&&u.splice(c,1),g(t).delete(a),m(t)}function A(t){e.value.delete(t),n.value.delete(t),r.value.delete(t),i.value.delete(t),a.value.delete(t),o.value.delete(t),s.value.delete(t),c.value.delete(t),u.value.delete(t),m(t)}return{events:e,timestamps:n,sessionIds:r,eventIds:i,versions:l,versionFor:h,liveAppendCountFor:f,eventsFor:y,timestampsFor:b,sessionIdsFor:x,eventIdsFor:S,oldestIdFor:C,hasMoreOlderFor:w,isCompacting:_,setCompacting:v,append:T,merge:D,reset:O,prepend:ee,removeByEventId:k,clear:A}}),al=class extends Error{constructor(e,t,n,r){super(e),Vn(this,`status`,void 0),Vn(this,`code`,void 0),Vn(this,`body`,void 0),this.name=`ApiError`,this.status=t,this.code=n,this.body=r}},ol=class extends Error{constructor(e){super(`Request timed out after ${e} ms`),Vn(this,`timeoutMs`,void 0),this.name=`ApiTimeoutError`,this.timeoutMs=e}},sl=3e4;function cl(e,t){let n=e.trim();if(n.length===0)return{message:`HTTP ${t}`,code:void 0};try{let e=JSON.parse(n),r=typeof e.code==`string`?e.code:void 0;return typeof e.error==`string`&&e.error.length>0?{message:e.error,code:r}:typeof e.message==`string`&&e.message.length>0?{message:e.message,code:r}:{message:`HTTP ${t}`,code:r}}catch{return{message:n.slice(0,500),code:void 0}}}async function X(e,t={}){let{body:n,timeoutMs:r=sl,signal:i,headers:a,...o}=t;if(i?.aborted)throw i.reason??new DOMException(`Aborted`,`AbortError`);let s=new AbortController,c=!1,l=r>0?setTimeout(()=>{c=!0,s.abort()},r):null,u=()=>s.abort();i?.addEventListener(`abort`,u);try{let t={...o,signal:s.signal};n===void 0?a&&(t.headers=a):typeof n==`string`||n instanceof FormData||n instanceof Blob?(t.body=n,a&&(t.headers=a)):(t.body=JSON.stringify(n),t.headers={"Content-Type":`application/json`,...a??{}});let r=await fetch(e,t);if(!r.ok){let e=await r.text(),{message:t,code:n}=cl(e,r.status);throw new al(t,r.status,n,e)}if(r.status===204)return;let i=await r.text();if(i.length===0)return;try{return JSON.parse(i)}catch(e){throw new al(`Server returned a non-JSON body for a successful response: ${e instanceof Error?e.message:String(e)}`,r.status,void 0,i)}}catch(e){throw c?new ol(r):e}finally{l!==null&&clearTimeout(l),i?.removeEventListener(`abort`,u)}}var ll=`/sounds`,ul=[{id:`basic-notification.mp3`,labelKey:`settings.notificationSoundBasic`},{id:`hey.mp3`,labelKey:`settings.notificationSoundHey`},{id:`warcraft-3-humain-travail.mp3`,labelKey:`settings.notificationSoundWorkspaceCreated`},{id:`travail_termine.mp3`,labelKey:`settings.notificationSoundTravailTermine`},{id:`faaah.mp3`,labelKey:`settings.notificationSoundFaaah`},{id:`ca_va_peter.mp3`,labelKey:`settings.notificationSoundCaVaPeter`},{id:`dry-fart.mp3`,labelKey:`settings.notificationSoundDryFart`},{id:`for-shure.mp3`,labelKey:`settings.notificationSoundForShure`},{id:`7eme-compagnie-03.mp3`,labelKey:`settings.notificationSoundSeptiemeCompagnie03`},{id:`aller-ftg.mp3`,labelKey:`settings.notificationSoundAllerFtg`},{id:`arrete-de-mentir.mp3`,labelKey:`settings.notificationSoundArreteDeMentir`},{id:`arretez-les-messages.mp3`,labelKey:`settings.notificationSoundArretezLesMessages`},{id:`bah-alors-on-est-nul.mp3`,labelKey:`settings.notificationSoundBahAlorsOnEstNul`},{id:`gta-v-death.mp3`,labelKey:`settings.notificationSoundGtaVDeath`},{id:`nan-tu-degages.mp3`,labelKey:`settings.notificationSoundNanTuDegages`},{id:`nan-wallah-pardon.mp3`,labelKey:`settings.notificationSoundNanWallahPardon`},{id:`ouais-cest-greg.mp3`,labelKey:`settings.notificationSoundOuaisCestGreg`},{id:`pas-ca-zinedine.mp3`,labelKey:`settings.notificationSoundPasCaZinedine`},{id:`ta-gueule.mp3`,labelKey:`settings.notificationSoundTaGueule`},{id:`tu-vas-la-fermer.mp3`,labelKey:`settings.notificationSoundTuVasLaFermer`},{id:`yaaa.mp3`,labelKey:`settings.notificationSoundYaaa`},{id:`mais-laisse-moi-dormir-zebi.mp3`,labelKey:`settings.notificationSoundMaisLaisseMoiDormirZebi`}],dl=`hey.mp3`,fl=`inherit`,pl=`none`,ml=[`audioPrCiFailedSound`,`audioPrCiRecoveredSound`,`audioPrChangesRequestedSound`,`audioPrApprovedSound`,`audioPrMergeConflictSound`,`audioPrReadyToMergeSound`,`audioPrMergedSound`],hl=[`audioPrCiFailedEnabled`,`audioPrCiFailedVolume`,`audioPrCiRecoveredEnabled`,`audioPrCiRecoveredVolume`,`audioPrChangesRequestedEnabled`,`audioPrChangesRequestedVolume`,`audioPrApprovedEnabled`,`audioPrApprovedVolume`,`audioPrMergeConflictEnabled`,`audioPrMergeConflictVolume`,`audioPrReadyToMergeEnabled`,`audioPrReadyToMergeVolume`,`audioPrMergedEnabled`,`audioPrMergedVolume`],gl={audioPrCiFailedSound:fl,audioPrCiRecoveredSound:fl,audioPrChangesRequestedSound:fl,audioPrApprovedSound:fl,audioPrMergeConflictSound:fl,audioPrReadyToMergeSound:fl,audioPrMergedSound:fl,audioPrCiFailedEnabled:!1,audioPrCiFailedVolume:1,audioPrCiRecoveredEnabled:!1,audioPrCiRecoveredVolume:1,audioPrChangesRequestedEnabled:!1,audioPrChangesRequestedVolume:1,audioPrApprovedEnabled:!1,audioPrApprovedVolume:1,audioPrMergeConflictEnabled:!1,audioPrMergeConflictVolume:1,audioPrReadyToMergeEnabled:!1,audioPrReadyToMergeVolume:1,audioPrMergedEnabled:!1,audioPrMergedVolume:1};function _l(e){return ul.some(t=>t.id===e)}function vl(e){return e&&_l(e)?e:dl}function yl(e){if(e===`none`)return null;if(e!==`inherit`)return typeof e==`string`&&_l(e)?e:void 0}function bl(e){let t=yl(e);return t===null?pl:t??`inherit`}function xl(e){return`${ll}/${vl(e)}`}var Sl=`mod+shift+x`,Cl=[`mod`,`ctrl`,`meta`,`alt`,`shift`],wl=new Set([`mod+w`,`mod+shift+w`,`ctrl+w`,`ctrl+shift+w`,`meta+w`,`meta+shift+w`]),Tl=new Set([`control`,...Cl]);function El(e){return wl.has(e)}function Dl(e){if(typeof e!=`string`||e.length===0||e!==e.toLowerCase()||El(e))return null;let t=e.split(`+`);if(t.some(e=>e.length===0))return null;let n=t.at(-1);if(!n||!/^[a-z0-9][a-z0-9_-]*$/.test(n)||Tl.has(n))return null;let r=t.slice(0,-1),i=new Set,a=-1;for(let e of r){let t=Cl.indexOf(e);if(t<=a)return null;a=t,i.add(e)}return{modifiers:i,key:n}}var Ol=new Set([`control`,`meta`,`alt`,`shift`]),kl={" ":`space`,"+":`plus`,"-":`minus`,"=":`equal`,",":`comma`,".":`period`,"/":`slash`,"\\":`backslash`,";":`semicolon`,"'":`quote`,"[":`bracketleft`,"]":`bracketright`,"`":`backquote`};function Al(e){let t=kl[e]??e.toLowerCase();return/^[a-z0-9][a-z0-9_-]*$/.test(t)?t:null}function jl(e=globalThis.navigator?.platform??``){return/mac|iphone|ipad|ipod/i.test(e)?`mac`:`other`}function Ml(e,t){if(e.key===`Escape`)return{status:`cancelled`};if(Ol.has(e.key.toLowerCase()))return{status:`pending`};let n=Al(e.key);if(!n)return{status:`pending`};let r=new Set;(t===`mac`?e.metaKey:e.ctrlKey)&&r.add(`mod`),t===`mac`&&e.ctrlKey&&r.add(`ctrl`),t===`other`&&e.metaKey&&r.add(`meta`),e.altKey&&r.add(`alt`),e.shiftKey&&r.add(`shift`);let i=[...Cl.filter(e=>r.has(e)),n].join(`+`);return El(i)?{status:`reserved`}:{status:`accepted`,shortcut:i}}function Nl(e,t,n){let r=Dl(t),i=Al(e.key);if(!r||!i||i!==r.key)return!1;let a=r.modifiers.has(`ctrl`)||n===`other`&&r.modifiers.has(`mod`),o=r.modifiers.has(`meta`)||n===`mac`&&r.modifiers.has(`mod`);return e.ctrlKey===a&&e.metaKey===o&&e.altKey===r.modifiers.has(`alt`)&&e.shiftKey===r.modifiers.has(`shift`)}function Pl(e){return{space:`Space`,arrowup:`↑`,arrowdown:`↓`,arrowleft:`←`,arrowright:`→`}[e]??e.toUpperCase()}function Fl(e,t){let n=Dl(e);return n?t===`mac`?`${[n.modifiers.has(`mod`)||n.modifiers.has(`meta`)?`⌘`:``,n.modifiers.has(`ctrl`)?`⌃`:``,n.modifiers.has(`alt`)?`⌥`:``,n.modifiers.has(`shift`)?`⇧`:``].join(``)}${Pl(n.key)}`:[n.modifiers.has(`mod`)||n.modifiers.has(`ctrl`)?`Ctrl`:``,n.modifiers.has(`meta`)?`Meta`:``,n.modifiers.has(`alt`)?`Alt`:``,n.modifiers.has(`shift`)?`Shift`:``,Pl(n.key)].filter(Boolean).join(`+`):e}var Il=`.worktrees`;function Ll(e){return btoa(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}var Rl=Ve(`settings`,{state:()=>({global:{defaultModelByEngine:{"claude-code":`auto`,codex:`auto`},dangerouslySkipPermissions:!0,prPromptTemplate:``,reviewPromptTemplate:``,ciFixPromptTemplate:``,finalizationPrompt:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,editorCommand:``,fileManagerCommand:``,terminalCommand:``,autoPurgeOnPrMerged:!1,autoLoopMaxRetries:5,awaitingUserReminderMinutes:0,activityDigestEnabled:!0,wsEventsRetentionDays:0,wsEventsKeepPerWorkspace:0,browserNotifications:!0,audioNotifications:!0,audioQuestionNotifications:!1,audioWorkspaceCreatedNotifications:!1,audioAgentErrorNotifications:!1,audioNotificationSound:`hey.mp3`,audioQuestionSound:`inherit`,audioWorkspaceCreatedSound:`inherit`,audioAgentErrorSound:`inherit`,...gl,audioNotificationVolume:1,audioQuestionVolume:1,audioWorkspaceCreatedVolume:1,audioAgentErrorVolume:1,notionStatusProperty:``,notionInProgressStatus:``,notionAssigneeProperty:``,notionUserId:``,defaultPermissionModeByEngine:{"claude-code":`plan`,codex:`plan`},notionMcpKey:``,sentryMcpKey:``,bitbucketToken:``,bitbucketUsername:``,notionEnabled:!0,sentryEnabled:!0,showThinkingBlocks:!0,whipEnabled:!1,whipShortcut:Sl,whipVolume:1,tags:[],branchPrefixes:[],setupScript:``,cleanupScript:``,cleanupScriptMode:`no-tasks`,cleanupScriptOnlyOnChanges:!1,archiveScript:``,changeSourceBranchScript:``,sessionEndedScript:``,prMergedScript:``,autoLoopDisabledScript:``,worktreesPath:Il,worktreesPrefixByProject:!1,voiceEnabled:!1,voicePttKey:`alt`,voiceLanguage:`auto`,voiceModel:null,voiceCommandPath:``,voiceFfmpegPath:``,voiceTemperature:0,voicePrompt:``,voiceTranslateToEnglish:!1,voiceSuppressNonSpeechTokens:!0,flattenWorkspaceList:!1,skillSuite:`superpowers`,customReviewTemplate:``,customAutoLoopReviewGate:``,customAutoLoopGroomingIntro:``,customQaPromptTemplate:``,customBrainstormingInstruction:``},voiceModels:[],voiceModelsLoading:!1,voiceModelsDir:``,voiceRuntime:null,activeMcpServers:[],projects:[],loading:!1,loaded:!1,loadError:null,showVerboseSystemMessages:localStorage.getItem(`kobo:showVerboseSystemMessages`)===`true`}),getters:{getProjectByPath:e=>t=>e.projects.find(e=>e.path===t)??null,projectPaths:e=>e.projects.map(e=>e.path)},actions:{_assertLoaded(){if(!this.loaded)throw Error(`Settings were never loaded successfully — refusing to overwrite the stored configuration`)},async fetchSettings(){this.loading=!0;try{let e=await X(`/api/settings`);this.global=e.global,this.projects=e.projects,this.loadError=null,this.loaded=!0}catch(e){this.loadError=e instanceof Error?e.message:String(e),this.loaded=!1,console.error(`[settings store] fetchSettings failed:`,e)}finally{this.loading=!1}},async fetchActiveMcpServers(){try{this.activeMcpServers=await X(`/api/settings/mcp-servers`)}catch(e){console.error(`[settings store] fetchActiveMcpServers failed:`,e),this.activeMcpServers=[]}},async fetchGlobalDefaults(){return X(`/api/settings/defaults`)},async previewRetention(e,t){return X(`/api/settings/ws-events-retention-preview?days=${e}&keep=${t}`)},async updateGlobal(e){this._assertLoaded(),this.global=await X(`/api/settings/global`,{method:`PUT`,body:e})},async upsertProject(e,t){this._assertLoaded();let n=await X(`/api/settings/projects/${Ll(e)}`,{method:`PUT`,body:t}),r=this.projects.findIndex(t=>t.path===e);r>=0?this.projects[r]=n:this.projects.push(n)},toggleVerboseSystemMessages(){this.setVerboseSystemMessages(!this.showVerboseSystemMessages)},setVerboseSystemMessages(e){this.showVerboseSystemMessages=e,localStorage.setItem(`kobo:showVerboseSystemMessages`,String(e))},async deleteProject(e){this._assertLoaded(),await X(`/api/settings/projects/${Ll(e)}`,{method:`DELETE`}),this.projects=this.projects.filter(t=>t.path!==e)},async fetchVoiceModels(){this.voiceModelsLoading=!0;try{let e=await X(`/api/voice/models`);this.voiceModels=e.available,this.voiceModelsDir=e.modelsDir,this.global.voiceModel=e.activeModel}catch(e){console.error(`[settings store] fetchVoiceModels failed:`,e)}finally{this.voiceModelsLoading=!1}},async cancelVoiceModelDownload(e){try{await X(`/api/voice/models/${encodeURIComponent(e)}/download`,{method:`DELETE`})}catch(e){if(!(e instanceof al)||e.status!==404)throw e}await this.fetchVoiceModels()},async fetchVoiceRuntime(){try{this.voiceRuntime=await X(`/api/voice/runtime`)}catch(e){console.error(`[settings store] fetchVoiceRuntime failed:`,e)}},async downloadVoiceModel(e){await X(`/api/voice/models/${encodeURIComponent(e)}/download`,{method:`POST`}),await this.fetchVoiceModels()},async deleteVoiceModel(e){await X(`/api/voice/models/${encodeURIComponent(e)}`,{method:`DELETE`}),await this.fetchVoiceModels()}}});function zl(e,t){let n=e=>e.split(`.`).map(e=>Number.parseInt(e,10)||0),r=n(e),i=n(t),a=Math.max(r.length,i.length);for(let e=0;e<a;e++){let t=(r[e]??0)-(i[e]??0);if(t!==0)return t}return 0}var Bl=`kobo:dismissed-update-version`,Vl=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/,Hl=e=>typeof e==`string`&&Vl.test(e),Ul=Ve(`update`,()=>{let e=d(null),t=d(null),n=d(localStorage.getItem(Bl)),r=d(null),i=d(null),a=d(`unknown`),o=null,s=k(()=>t.value&&e.value&&zl(t.value,e.value)>0&&t.value!==n.value?t.value:null);function c(n){if(!Hl(n.currentVersion))return;let o=typeof n.lastAttemptAt==`string`&&Number.isFinite(Date.parse(n.lastAttemptAt))?n.lastAttemptAt:null;r.value&&(!o||Date.parse(o)<Date.parse(r.value))||(e.value=n.currentVersion,Hl(n.latestVersion)&&(t.value=n.latestVersion),o&&(r.value=o),typeof n.lastSuccessAt==`string`&&(i.value=n.lastSuccessAt),(n.checkStatus===`success`||n.checkStatus===`failed`||n.checkStatus===`unknown`)&&(a.value=n.checkStatus))}function l(){return o||(o=(async()=>{try{let e=await fetch(`/api/changelog`);e.ok&&c(await e.json())}catch{}finally{o=null}})(),o)}function u(){let e=s.value;e&&(n.value=e,localStorage.setItem(Bl,e))}return{currentVersion:e,latestVersion:t,availableVersion:s,lastAttemptAt:r,lastSuccessAt:i,checkStatus:a,applySnapshot:c,refreshSnapshot:l,dismissUpdate:u}}),Wl=new Set([`output`,`complete`,`error`]);function Gl(e){if(!e.startsWith(`hook:`))return null;let t=e.slice(5),n=t.lastIndexOf(`:`);if(n<=0)return null;let r=t.slice(0,n),i=t.slice(n+1);return Wl.has(i)?{event:r,kind:i}:null}function Kl(e){return`hook:${e}`}function ql(e){return e.startsWith(`hook:`)}var Jl=6e3,Yl=typeof window<`u`&&window.parent!==window&&new URLSearchParams(window.location.search).get(`pane`)===`1`;function Xl(e,t=window.location.pathname){return`${t}?pane=1#/workspace/${encodeURIComponent(e)}`}function Zl(e){let t=Number(e??50);return Number.isFinite(t)?Math.max(25,Math.min(75,t)):50}function Ql(e,t){return e&&e!==t?{left:e,right:t}:{left:t}}var $l=null;function eu(e,t){return t.name===`split`&&e.name===`split`&&e.fullPath===$l}async function tu(e,t){let n={name:`split`,query:t},r=e.resolve(n).fullPath;if(!(e.currentRoute.value.fullPath===r||$l)){$l=r;try{await e.replace(n)}finally{$l=null}}}function nu(e,t){return e||Object.keys(t).length>0}var ru=new Map,iu=[],au=!1;function ou(e){let t=ru.get(e);return t||(t=new Audio(xl(e)),ru.set(e,t)),t}function su(e,t){let n=new Audio(xl(vl(e)));n.preload=`auto`,n.volume=t,n.play().catch(()=>{})}function cu(){Yl||`Notification`in window&&Notification.permission==="default"&&Notification.requestPermission()}function lu(e){return typeof e!=`number`||!Number.isFinite(e)?1:Math.max(0,Math.min(1,e))}function uu(){let e=iu.shift();if(!e){au=!1;return}au=!0;let t=ou(vl(e.soundId));t.volume=e.volume,t.currentTime=0;let n=!1,r=()=>{n||(n=!0,t.removeEventListener(`ended`,r),t.removeEventListener(`error`,r),uu())};t.addEventListener(`ended`,r,{once:!0}),t.addEventListener(`error`,r,{once:!0}),t.play().catch(r)}function du(e,t){let n={soundId:vl(e),volume:lu(t)};if(document.visibilityState===`hidden`){su(n.soundId,n.volume);return}iu.push(n),au||uu()}function fu(e,t){let n=ou(vl(e));n.volume=lu(t),n.currentTime=0,n.play().catch(()=>{})}function pu(e,t,n,r,i,a){if(Yl)return;let o=Rl();if(!document.hasFocus()&&o.global.browserNotifications&&`Notification`in window&&Notification.permission===`granted`){let r=new Notification(e,{body:t,icon:`/favicon.ico`});n&&(r.onclick=()=>{window.focus(),window.location.hash=`#/workspace/${n}`,r.close()})}(a??o.global.audioNotifications)&&r!==null&&du(r&&r.length>0?r:o.global.audioNotificationSound??`hey.mp3`,i??o.global.audioNotificationVolume)}function mu(e,t){let n=[{label:t.retryLabel,color:`white`,handler:t.onRetry}];t.detailsLabel&&t.onDetails&&n.push({label:t.detailsLabel,color:`white`,handler:t.onDetails}),n.push({label:t.dismissLabel,color:`grey-5`}),Fc.create({type:`negative`,position:`top`,multiLine:!0,message:e,timeout:t.timeout??0,actions:n})}function hu(e){return(typeof e==`string`?Array.from(e.replace(/[\p{Cc}\s]+/gu,` `).replace(/\p{Cs}/gu,`�`).trim()).slice(0,100).join(``):``)||`External MCP client`}function gu(e){if(!e||typeof e!=`object`)return;let t=e;if(!(t.kind!==`mcp`||t.transport!==`http`&&t.transport!==`stdio`))return{kind:`mcp`,clientName:hu(t.clientName),transport:t.transport}}var _u=new Map,vu=Ve(`devServer`,{state:()=>({statuses:{},logs:{}}),getters:{getStatus:e=>t=>e.statuses[t]??null},actions:{async fetchStatus(e){let t=(_u.get(e)??0)+1;_u.set(e,t);let n=this.statuses[e];try{let r=await X(`/api/dev-server/${e}/status`);_u.get(e)===t&&this.statuses[e]===n&&(this.statuses[e]=r)}catch(e){console.error(`[dev-server store] fetchStatus failed:`,e)}},async startDevServer(e){try{let t=await fetch(`/api/dev-server/${e}/start`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();this.statuses[e]=n}catch(e){throw console.error(`[dev-server store] startDevServer failed:`,e),e}},async stopDevServer(e){try{let t=await fetch(`/api/dev-server/${e}/stop`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();this.statuses[e]=n}catch(e){throw console.error(`[dev-server store] stopDevServer failed:`,e),e}},async fetchLogs(e,t=200){try{let n=await fetch(`/api/dev-server/${e}/logs?tail=${t}`);if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json();return this.logs[e]=r.logs,r.logs}catch(e){return console.error(`[dev-server store] fetchLogs failed:`,e),``}},updateFromWsEvent(e,t){this.statuses[e]=t}}});function yu(e){return e.state===`OPEN`&&e.reviewDecision===`CHANGES_REQUESTED`&&e.reviewers.some(e=>e.state===`CHANGES_REQUESTED`)}function bu(e){return e.state===`OPEN`&&e.ci.rollup===`FAILURE`}function xu(e){return e?bu(e)||yu(e):!1}var Su=[`executing`,`extracting`,`brainstorming`,`compacting`];function Cu(e){return!!e&&Su.includes(e)}function wu(e,t){return Cu(e)&&!t}function Tu(e,t,n){return wu(e,!t||n)}var Eu={created:`workspaceStatus.created`,extracting:`workspaceStatus.extracting`,brainstorming:`workspaceStatus.brainstorming`,executing:`workspaceStatus.executing`,compacting:`workspaceStatus.compacting`,"awaiting-user":`workspaceStatus.awaitingUser`,completed:`workspaceStatus.completed`,idle:`workspaceStatus.idle`,error:`workspaceStatus.error`,quota:`workspaceStatus.quota`};function Du(e){return e?Eu[e]??null:null}async function Ou(e){let t=await e.json().catch(()=>({}));return{ok:!0,branch:t.branch??``,upToDate:t.upToDate===!0}}var ku=class extends Error{constructor(e,t,n){super(e),Vn(this,`code`,void 0),Vn(this,`operation`,void 0),this.name=`WorkspaceActionError`,this.code=t,this.operation=n}};function Au(e){return e===`running`?`in_progress`:e}var ju=5e3,Mu=500,Nu=null,Pu=0,Fu=0,Iu=new Map,Lu=new Map,Ru=new Map,zu=new Map,Bu=new Map,Vu=new WeakMap;function Hu(e){Lu.set(e,(Lu.get(e)??0)+1)}function Uu(e,t,n){let r={...e},i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=t[a],o=e[a],s=(Lu.get(a)??0)!==(n.get(a)??0),c=i?Date.parse(i.updatedAt):NaN,l=o?Date.parse(o.updatedAt):NaN;(s||Number.isFinite(c)&&c>l)&&(i?r[a]=i:delete r[a])}return r}function Wu(e){return e===`claude-code`?`claude-code`:null}var Z=Ve(`workspace`,{state:()=>({workspaces:[],selectedWorkspaceId:null,tasks:[],activityFeeds:{},activityFeedIds:{},activityCounts:{},subagents:{},agentTodos:{},sessions:[],loadingSessions:{},selectedSessionId:null,archivedWorkspaces:[],archivedLoaded:!1,restoringWorktreeIds:[],workspaceLifecycleVersion:0,workspaceLifecycleVersions:{},listRequestVersion:0,archivedListRequestVersion:0,loading:!1,listLoadError:null,listPollFailureStreak:0,activeListLoadFailed:!1,loadingOlderEvents:!1,hasMoreEvents:{},providerUsage:{},chatDraft:``,queuedMessages:{},activeAgentSessionIds:{},settledAgentSessionIds:{},gitRefreshTrigger:0,gitStatsCache:{},pendingWakeups:{},pendingQuotaBackoffs:{},pendingDeferred:{},pendingQueue:{},prSnapshots:{},autoLoopStates:{},crons:{},creationProgress:null,agentLiveness:{},agentLivenessLoaded:{}}),getters:{selectedWorkspace:e=>e.workspaces.find(t=>t.id===e.selectedWorkspaceId)??e.archivedWorkspaces.find(t=>t.id===e.selectedWorkspaceId)??null,needsAttention(e){return e.workspaces.filter(t=>[`error`,`quota`,`awaiting-user`].includes(t.status)||xu(e.prSnapshots[t.id])||!Cu(t.status)&&!!e.prSnapshots[t.id]?.readyToMerge)},running(e){return e.workspaces.filter(t=>Cu(t.status)&&!xu(e.prSnapshots[t.id]))},idle(e){return e.workspaces.filter(t=>[`completed`,`idle`,`created`].includes(t.status)&&!xu(e.prSnapshots[t.id])&&!e.prSnapshots[t.id]?.readyToMerge)},favorites(e){return e.workspaces.filter(e=>e.favoritedAt!==null)},currentAgentTodos:e=>e.selectedWorkspaceId?e.agentTodos[e.selectedWorkspaceId]??[]:[],currentSubagents:e=>{if(!e.selectedWorkspaceId)return[];let t=e.subagents[e.selectedWorkspaceId]??{};return Object.values(t).sort((e,t)=>e.startedAt.localeCompare(t.startedAt))},activityFeed:e=>{if(!e.selectedWorkspaceId)return[];let t=e.activityFeeds[e.selectedWorkspaceId]??[];if(!e.selectedSessionId)return e.sessions.length===0?t:[];let n=e.sessions.find(t=>t.id===e.selectedSessionId)?.engineSessionId??null,r=e.sessions.length>0?e.sessions[e.sessions.length-1].id:null,i=e.selectedSessionId===r;return t.filter(t=>t.sessionId?t.sessionId===e.selectedSessionId||n!==null&&t.sessionId===n:i)},acceptanceCriteria:e=>e.tasks.filter(e=>e.isAcceptanceCriterion),archived:e=>e.archivedWorkspaces,currentProviderUsage(e){let t=e.workspaces.find(t=>t.id===e.selectedWorkspaceId);if(!t)return null;let n=Wu(t.engine);return n?e.providerUsage[n]??null:null}},actions:{clearWorkspaceLocalState(e){delete this.activityFeeds[e],delete this.activityFeedIds[e],delete this.activityCounts[e],delete this.subagents[e],delete this.agentTodos[e],delete this.hasMoreEvents[e],delete this.gitStatsCache[e],delete this.pendingWakeups[e],delete this.pendingQuotaBackoffs[e],delete this.pendingDeferred[e],delete this.pendingQueue[e],delete this.prSnapshots[e],delete this.autoLoopStates[e],delete this.crons[e],delete this.activeAgentSessionIds[e];for(let t of Object.keys(this.queuedMessages))t.startsWith(`${e}:`)&&delete this.queuedMessages[t];Iu.delete(e),Lu.delete(e),Ru.delete(e),zu.delete(e),il().clear(e),localStorage.removeItem(`kobo:session:${e}`)},setCreationProgress(e){this.creationProgress=e},clearCreationProgress(){this.creationProgress=null},async toggleFavorite(e){let t=this.workspaces.find(t=>t.id===e);if(!t)return;let n=t.favoritedAt,r=n===null,i=r?new Date().toISOString():null;this.workspaces=this.workspaces.map(t=>t.id===e?{...t,favoritedAt:i}:t);try{let t=await fetch(`/api/workspaces/${e}/favorite`,{method:r?`POST`:`DELETE`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();this.workspaces=this.workspaces.map(t=>t.id===e?n:t)}catch(t){throw this.workspaces=this.workspaces.map(t=>t.id===e?{...t,favoritedAt:n}:t),t}},async togglePrWatch(e){let t=this.workspaces.find(t=>t.id===e);if(!t)return;let n=t.prWatchDisabledAt===null,r=n?new Date().toISOString():null;this.workspaces=this.workspaces.map(t=>t.id===e?{...t,prWatchDisabledAt:r}:t);try{let t=await fetch(`/api/workspaces/${e}/pr-watch-disabled`,{method:n?`POST`:`DELETE`});if(!t.ok)throw Error(`HTTP ${t.status}`);if(n){let n=await t.json();this.workspaces=this.workspaces.map(t=>t.id===e?n:t),delete this.prSnapshots[e],Hu(e)}else{let{workspace:n,prSnapshot:r}=await t.json();this.workspaces=this.workspaces.map(t=>t.id===e?n:t),r?this.prSnapshots[e]=r:delete this.prSnapshots[e],Hu(e)}}catch(n){throw this.workspaces=this.workspaces.map(n=>n.id===e?{...n,prWatchDisabledAt:t.prWatchDisabledAt}:n),n}},async setWorkspaceTags(e,t){let n=this.workspaces.find(t=>t.id===e);if(!n)return;let r=n.tags,i=[...t];this.workspaces=this.workspaces.map(t=>t.id===e?{...t,tags:i}:t);try{let n=await fetch(`/api/workspaces/${e}/tags`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({tags:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json();this.workspaces=this.workspaces.map(t=>t.id===e?r:t)}catch(t){throw this.workspaces=this.workspaces.map(t=>t.id===e?{...t,tags:r}:t),t}},async fetchOrphanWorktrees(e){return X(`/api/git/orphan-worktrees?projectPath=${encodeURIComponent(e)}`,{cache:`no-store`})},async fetchWorkspaces(){let e=++this.listRequestVersion,t=new Map(Iu),n=this.workspaceLifecycleVersion;this.loading=!0;try{let r=await X(`/api/workspaces`);if(e!==this.listRequestVersion||n!==this.workspaceLifecycleVersion)return;let i=new Map(this.workspaces.map(e=>[e.id,e]));this.workspaces=(Array.isArray(r)?r:r.workspaces??[]).map(e=>(Iu.get(e.id)??0)===(t.get(e.id)??0)?e:i.get(e.id)??e),this.listLoadError=null,this.activeListLoadFailed=!1,this.listPollFailureStreak=0;for(let e of this.workspaces)il().setCompacting(e.id,e.status===`compacting`),[`completed`,`idle`,`error`,`quota`].includes(e.status)&&this.finalizeRunningSubagents(e.id)}catch(t){if(e!==this.listRequestVersion||n!==this.workspaceLifecycleVersion)return;this.listLoadError=t instanceof Error?t.message:String(t),this.activeListLoadFailed=!0,console.error(`[workspace store] fetchWorkspaces failed:`,t)}finally{e===this.listRequestVersion&&(this.loading=!1)}},async retryLoadWorkspaces(){await this.fetchWorkspaces(),this.archivedLoaded&&await this.fetchArchivedWorkspaces()},async fetchArchivedWorkspaces(){let e=++this.archivedListRequestVersion,t=new Map(Iu),n=this.workspaceLifecycleVersion;try{let r=await X(`/api/workspaces/archived`);if(e!==this.archivedListRequestVersion||n!==this.workspaceLifecycleVersion)return;let i=new Map(this.archivedWorkspaces.map(e=>[e.id,e]));this.archivedWorkspaces=r.map(e=>(Iu.get(e.id)??0)===(t.get(e.id)??0)?e:i.get(e.id)??e),this.archivedLoaded=!0,this.activeListLoadFailed||(this.listLoadError=null)}catch(t){if(e!==this.archivedListRequestVersion||n!==this.workspaceLifecycleVersion)return;this.listLoadError=t instanceof Error?t.message:String(t),console.error(`[workspace store] fetchArchivedWorkspaces failed:`,t)}},async fetchWorkspaceDetails(e){let t=this.workspaceLifecycleVersions[e]??0,n=(zu.get(e)??0)+1;zu.set(e,n);let r=Iu.get(e)??0;try{let i=await X(`/api/workspaces/${e}`);if(this.selectedWorkspaceId!==e||zu.get(e)!==n)return;if(t===(this.workspaceLifecycleVersions[e]??0)){let t=(Iu.get(e)??0)!==r,n=i.workspace??i,a=t?{}:n;typeof a.status==`string`&&il().setCompacting(e,a.status===`compacting`);let o=this.workspaces.findIndex(t=>t.id===e);if(o>=0)this.workspaces[o]={...this.workspaces[o],...a};else{let t=this.archivedWorkspaces.findIndex(t=>t.id===e);t>=0?this.archivedWorkspaces[t]={...this.archivedWorkspaces[t],...a}:a?.archivedAt&&this.archivedWorkspaces.unshift(a)}}i.tasks&&(this.tasks=i.tasks),`agentLiveness`in i&&(Iu.get(e)??0)===r&&this.applyAgentLiveness(e,i.agentLiveness)}catch(e){console.error(`[workspace store] fetchWorkspaceDetails failed:`,e)}},applyAgentLiveness(e,t){if(this.agentLivenessLoaded={...this.agentLivenessLoaded,[e]:!0},t){this.agentLiveness={...this.agentLiveness,[e]:t};return}if(e in this.agentLiveness){let t={...this.agentLiveness};delete t[e],this.agentLiveness=t}},async createWorkspace(e,t=[]){try{let n=JSON.stringify(e);if(t.length>0){n=new FormData,n.append(`workspace`,JSON.stringify(e));for(let e of t)n.append(`attachments`,e)}let r=await fetch(`/api/workspaces`,{method:`POST`,...typeof n==`string`?{headers:{"Content-Type":`application/json`}}:{},body:n});if(!r.ok){let e=await r.json().catch(()=>({}));throw new ku(typeof e.error==`string`?e.error:`HTTP ${r.status}`,typeof e.step==`string`?e.step:void 0)}let i=r.headers.get(`X-Kobo-Branch-Adjusted`)===`1`,a=r.headers.get(`X-Kobo-Source-Fallback`)===`local`,o=await r.json(),s=o.workspace??o;this.invalidateWorkspaceLifecycleReads(s.id);let c=this.workspaces.findIndex(e=>e.id===s.id);return c>=0?this.workspaces[c]=s:this.workspaces.push(s),e.autoLoop&&this.fetchAutoLoopStates(),s._branchAdjusted=i,s._sourceFallback=a,s}catch(e){throw console.error(`[workspace store] createWorkspace failed:`,e),e}},async startWorkspace(e,t,n,r){try{await X(`/api/workspaces/${e}/start`,{method:`POST`,body:{prompt:t,agentSessionId:n,resume:r}}),await this.fetchWorkspaces()}catch(e){throw console.error(`[workspace store] startWorkspace failed:`,e),e}},async previewEngineHandoff(e,t){let n=await fetch(`/api/workspaces/${e}/engine-handoff-preview`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({engine:t})}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error??`HTTP ${n.status}`);return r.handoff},async switchEngine(e,t){let n=await fetch(`/api/workspaces/${e}/switch-engine`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error??`HTTP ${n.status}`);let i=r.workspace,a=this.workspaces.findIndex(t=>t.id===e);return a>=0&&(this.workspaces[a]=i),await this.fetchSessions(e,r.sessionId),{sessionId:r.sessionId}},async stopWorkspace(e){try{let t=await fetch(`/api/workspaces/${e}/stop`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);await this.fetchWorkspaces()}catch(e){throw console.error(`[workspace store] stopWorkspace failed:`,e),e}},async interruptAgent(e,t={}){try{let n=await fetch(`/api/workspaces/${e}/interrupt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>void 0),t=typeof e==`object`&&e&&!Array.isArray(e)?e:void 0,r=typeof t?.error==`string`?t.error:`HTTP ${n.status}`,i=t?.code;throw new ku(r,n.status===409&&(i===`no_agent_running`||i===`session_not_active`)||n.status===500&&i===`interrupt_failed`?i:void 0)}}catch(e){throw console.error(`[workspace store] interruptAgent failed:`,e),e}},async deleteWorkspace(e,t){try{let n=await fetch(`/api/workspaces/${e}`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t??{})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=[];if(n.status===200){let e=await n.json().catch(()=>({}));r=Array.isArray(e.warnings)?e.warnings:[]}return this.workspaces=this.workspaces.filter(t=>t.id!==e),this.archivedWorkspaces=this.archivedWorkspaces.filter(t=>t.id!==e),this.clearWorkspaceLocalState(e),nl(e),this.selectedWorkspaceId===e&&(this.selectedWorkspaceId=null,this.tasks=[]),{warnings:r}}catch(e){throw console.error(`[workspace store] deleteWorkspace failed:`,e),e}},async deleteAllArchived(e){try{let t=this.archivedWorkspaces.map(e=>e.id),n=await fetch(`/api/workspaces/archived`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e??{})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json().catch(()=>({})),i=typeof r.deleted==`number`?r.deleted:0,a=Array.isArray(r.warnings)?r.warnings:[];this.archivedWorkspaces=[];for(let e of t)this.clearWorkspaceLocalState(e),nl(e),this.selectedWorkspaceId===e&&(this.selectedWorkspaceId=null,this.tasks=[]);return{deleted:i,warnings:a,ids:t}}catch(e){throw console.error(`[workspace store] deleteAllArchived failed:`,e),e}},async updateModel(e,t){try{let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json(),i=this.workspaces.findIndex(t=>t.id===e);i>=0&&(this.workspaces[i]=r)}catch(e){throw console.error(`[workspace store] updateModel failed:`,e),e}},async updateWorkspaceDescription(e,t){let n=this.workspaces.findIndex(t=>t.id===e);if(n<0)throw Error(`Workspace '${e}' not found in store`);let r=this.workspaces[n].description;this.workspaces[n]={...this.workspaces[n],description:t};try{let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({description:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}let r=await n.json();this.workspaces=this.workspaces.map(t=>t.id===e?{...t,...r}:t)}catch(n){let i=this.workspaces.findIndex(t=>t.id===e);throw i>=0&&this.workspaces[i].description===t&&(this.workspaces[i]={...this.workspaces[i],description:r}),n}},async updateReasoningEffort(e,t){try{let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({reasoningEffort:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json(),i=this.workspaces.findIndex(t=>t.id===e);i>=0&&(this.workspaces[i]=r)}catch(e){throw console.error(`[workspace store] updateReasoningEffort failed:`,e),e}},async renameWorkspaceBranch(e,t){let n=await fetch(`/api/workspaces/${e}/rename-branch`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({newName:t})}),r=await n.json().catch(()=>null);if(!n.ok)throw new ku(r?.error??`Rename failed`,r?.code);let i=r,a=this.workspaces.findIndex(t=>t.id===e);return a>=0&&(this.workspaces[a]=i),i},async resyncWorkspaceBranch(e){let t=await fetch(`/api/workspaces/${e}/resync-branch`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();if(n.changed){let t=this.workspaces.findIndex(t=>t.id===e);t>=0&&(this.workspaces[t]={...this.workspaces[t],workingBranch:n.workingBranch})}return n},async updateAgentPermissionMode(e,t){try{let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agentPermissionMode:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=await n.json(),i=this.workspaces.findIndex(t=>t.id===e);i>=0&&(this.workspaces[i]=r)}catch(e){throw console.error(`[workspace store] updateAgentPermissionMode failed:`,e),e}},async pushBranch(e,t={}){let n=await fetch(`/api/workspaces/${e}/push`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({force:t.force===!0})});if(!n.ok){let e=await n.json().catch(()=>({error:`Push failed`}));throw new ku(e.error??`Push failed`,e.code,e.operation)}return Ou(n)},async forcePushBranch(e){let t=await fetch(`/api/workspaces/${e}/force-push`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({error:`Push failed`}));throw new ku(e.error??`Push failed`,e.code,e.operation)}return Ou(t)},async fetchGitStats(e,t={}){let n=await X(`/api/workspaces/${e}/git-stats${t.freshFetch?`?freshFetch=1`:``}`,{signal:t.signal,timeoutMs:6e4});return this.gitStatsCache[e]=n,n},async fetchBranchDivergence(e,t={}){let n=`/api/workspaces/${e}/branch-divergence?limit=${t.limit??50}`,r=await fetch(n,{signal:t.signal});if(!r.ok)throw Error(`HTTP ${r.status}`);return await r.json()},async openPullRequest(e){let t=await fetch(`/api/workspaces/${e}/open-pr`,{method:`POST`}),n=await t.json().catch(()=>null);if(!t.ok)throw new ku(n?.error??`Open PR failed`,n?.code);return n},async archiveWorkspace(e){try{let t=await fetch(`/api/workspaces/${e}/archive`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();return this.workspaces=this.workspaces.filter(t=>t.id!==e),this.archivedLoaded&&this.archivedWorkspaces.unshift(n),this.selectedWorkspaceId===e&&(this.selectedWorkspaceId=null,this.tasks=[]),n}catch(e){throw console.error(`[workspace store] archiveWorkspace failed:`,e),e}},invalidateWorkspaceLifecycleReads(e){this.workspaceLifecycleVersion+=1,e&&(this.workspaceLifecycleVersions[e]=(this.workspaceLifecycleVersions[e]??0)+1)},applyRestoredWorkspace(e){this.invalidateWorkspaceLifecycleReads(e.id);let t=this.workspaces.findIndex(t=>t.id===e.id);t===-1?this.workspaces.unshift(e):this.workspaces[t]=e,this.archivedWorkspaces=this.archivedWorkspaces.filter(t=>t.id!==e.id)},restoreWorktree(e){let t=Vu.get(this);t||(t=new Map,Vu.set(this,t));let n=t.get(e);if(n)return n;let r=this.workspaceLifecycleVersions[e]??0;this.restoringWorktreeIds.push(e);let i=(async()=>{try{let t=await fetch(`/api/workspaces/${e}/restore-worktree`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({}));throw new ku(e.error??`HTTP ${t.status}`,e.code)}let{workspace:n}=await t.json();return r===(this.workspaceLifecycleVersions[e]??0)&&this.applyRestoredWorkspace(n),n}finally{this.restoringWorktreeIds=this.restoringWorktreeIds.filter(t=>t!==e),t.delete(e)}})();return t.set(e,i),i},async unarchiveWorkspace(e){try{let t=await fetch(`/api/workspaces/${e}/unarchive`,{method:`POST`});if(!t.ok){if(t.status===409){let e=await t.json().catch(()=>({})),n=Error(e.error??`worktree-purged`);throw n.code=`worktree-purged`,n}throw Error(`HTTP ${t.status}`)}let n=await t.json();return this.archivedWorkspaces=this.archivedWorkspaces.filter(t=>t.id!==e),this.workspaces.unshift(n),n}catch(e){throw console.error(`[workspace store] unarchiveWorkspace failed:`,e),e}},async createTask(e,t,n){try{let r=await fetch(`/api/workspaces/${e}/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:t,isAcceptanceCriterion:n})});if(!r.ok)throw Error(`HTTP ${r.status}`);await this.fetchWorkspaceDetails(e)}catch(e){throw console.error(`[workspace store] createTask failed:`,e),e}},async updateTaskTitle(e,t,n){try{let r=await fetch(`/api/workspaces/${e}/tasks/${t}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({title:n})});if(!r.ok)throw Error(`HTTP ${r.status}`);await this.fetchWorkspaceDetails(e)}catch(e){throw console.error(`[workspace store] updateTaskTitle failed:`,e),e}},async deleteTask(e,t){try{let n=await fetch(`/api/workspaces/${e}/tasks/${t}`,{method:`DELETE`});if(!n.ok)throw Error(`HTTP ${n.status}`);await this.fetchWorkspaceDetails(e)}catch(e){throw console.error(`[workspace store] deleteTask failed:`,e),e}},selectWorkspace(e){this.selectedWorkspaceId=e,this.selectedSessionId=null,this.sessions=[],this.tasks=[],this.markRead(e),this.fetchWorkspaceDetails(e),this.fetchSessions(e),this.fetchPendingQuotaBackoff(e),this.fetchGitStats(e).catch(()=>{}),this.activityFeeds[e]?.length||od().subscribe(e)},async fetchSessions(e,t){let n=(Ru.get(e)??0)+1;Ru.set(e,n),this.loadingSessions[e]=!0;try{let r=await fetch(`/api/workspaces/${e}/sessions`);if(!r.ok)throw Error(`HTTP ${r.status}`);let i=await r.json();if(this.selectedWorkspaceId!==e||Ru.get(e)!==n)return;if(this.sessions=i,t&&this.sessions.some(e=>e.id===t)){this.selectSession(t);return}let a=this.selectedSessionId&&this.sessions.some(e=>e.id===this.selectedSessionId);if(this.sessions.length>0&&!a){let t=localStorage.getItem(`kobo:session:${e}`),n=t?this.sessions.find(e=>e.id===t):null;this.selectSession(n?n.id:this.sessions[0].id)}}catch(e){console.error(`[workspace store] fetchSessions failed:`,e)}finally{Ru.get(e)===n&&delete this.loadingSessions[e]}},async fetchOlderEvents(e){if(this.loadingOlderEvents||this.hasMoreEvents[e]===!1)return!1;let t=this.activityFeeds[e];if(!t?.length)return!1;let n=t[0].id;this.loadingOlderEvents=!0;try{let t=await fetch(`/api/workspaces/${e}/events?before=${encodeURIComponent(n)}&limit=100`);if(!t.ok)throw Error(`HTTP ${t.status}`);let r=await t.json();if(this.hasMoreEvents[e]=r.hasMore,r.events.length>0){let e=od();for(let t of r.events)e._routeMessage(t)}return r.events.length>0}catch(e){return console.error(`[workspace store] fetchOlderEvents failed:`,e),!1}finally{this.loadingOlderEvents=!1}},selectSession(e){this.selectedSessionId=e,this.selectedWorkspaceId&&localStorage.setItem(`kobo:session:${this.selectedWorkspaceId}`,e)},async createSession(e){try{let t=await fetch(`/api/workspaces/${e}/sessions`,{method:`POST`});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}let n=await t.json();return this.selectedWorkspaceId===e&&(this.sessions.unshift(n),this.selectSession(n.id)),n}catch(e){throw console.error(`[workspace store] createSession failed:`,e),e}},async renameWorkspace(e,t){let n=await fetch(`/api/workspaces/${e}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}let r=await n.json(),i=this.workspaces.findIndex(t=>t.id===e);i>=0&&(this.workspaces[i]={...this.workspaces[i],...r});let a=this.archivedWorkspaces.findIndex(t=>t.id===e);a>=0&&(this.archivedWorkspaces[a]={...this.archivedWorkspaces[a],...r})},async renameSession(e,t,n){let r=await fetch(`/api/workspaces/${e}/sessions/${t}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:n})});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}let i=await r.json().catch(()=>null),a=this.sessions.find(e=>e.id===t);a&&(a.name=i?.name??n)},async deleteSession(e,t){let n=await fetch(`/api/workspaces/${e}/sessions/${t}`,{method:`DELETE`}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error??`HTTP ${n.status}`);let i=this.selectedSessionId===t,a=r.workspace;if(a){let t=this.workspaces.findIndex(t=>t.id===e);t>=0&&(this.workspaces[t]=a)}await this.fetchSessions(e),i&&this.selectedWorkspaceId===e&&this.selectSession(this.sessions[0]?.id??null)},addActivityItem(e,t){if(this.activityFeeds[e]||(this.activityFeeds[e]=[]),this.activityFeedIds[e]||(this.activityFeedIds[e]=new Set),this.activityCounts[e]||(this.activityCounts[e]={toolUses:0,agentMessages:0,userMessages:0,errors:0}),t.meta?.sender!==`user`&&t.meta?.sender!==`system-prompt`)for(let t of this.activityFeeds[e])t.meta?.pending&&(t.meta.pending=!1);if(!this.activityFeedIds[e].has(t.id)){this.activityFeedIds[e].add(t.id),this.activityFeeds[e].push(t);let n=this.activityCounts[e];t.type===`tool_use`?n.toolUses++:t.type===`error`&&n.errors++,t.meta?.sender===`user`?n.userMessages++:t.type===`text`&&t.meta?.sender!==`system-prompt`&&n.agentMessages++}let n=this.activityFeeds[e];if(n.length>ju){let t=n.splice(0,n.length-ju),r=this.activityFeedIds[e];for(let e of t)r.delete(e.id)}},removeActivityItem(e,t){let n=this.activityFeeds[e],r=this.activityFeedIds[e];if(!n||!r)return;let i=n.findIndex(e=>e.id===t);if(i<0)return;let[a]=n.splice(i,1);r.delete(t);let o=this.activityCounts[e];o&&a&&(a.type===`tool_use`?o.toolUses=Math.max(0,o.toolUses-1):a.type===`error`&&(o.errors=Math.max(0,o.errors-1)),a.meta?.sender===`user`?o.userMessages=Math.max(0,o.userMessages-1):a.type===`text`&&a.meta?.sender!==`system-prompt`&&(o.agentMessages=Math.max(0,o.agentMessages-1)))},clearActivityFeed(e){e?(delete this.activityFeeds[e],delete this.activityFeedIds[e],delete this.activityCounts[e]):(this.activityFeeds={},this.activityFeedIds={},this.activityCounts={})},applyUsageSnapshot(e){this.providerUsage[e.providerId]=e.snapshot},async requestUsageRefresh(e){try{await fetch(`/api/usage/${e}/refresh`,{method:`POST`})}catch(e){console.error(`[workspace store] requestUsageRefresh failed:`,e)}},triggerGitRefresh(){this.gitRefreshTrigger++,this.schedulePrSnapshotsRefresh()},schedulePrSnapshotsRefresh(){Nu!==null&&clearTimeout(Nu),Nu=setTimeout(()=>{Nu=null,this.fetchPrSnapshots()},Mu)},async fetchPrSnapshots(){let e=++Fu,t=new Map(Lu);try{let n=await fetch(`/api/workspaces/pr-states`,{cache:`no-store`});if(!n.ok)return;let r=await n.json();if(e!==Fu)return;this.prSnapshots=Uu(r,this.prSnapshots,t)}catch(e){console.error(`[workspace-store] fetchPrSnapshots failed:`,e)}},async fetchWorkspacesInfo(){let e=this.workspaceLifecycleVersion,t=++Pu,n=new Map(Iu),r=new Map(Lu),i=new Map(Bu);try{let a=await X(`/api/workspaces/info`,{cache:`no-store`});if(this.listPollFailureStreak=0,this.activeListLoadFailed=!1,this.listLoadError=null,t!==Pu||e!==this.workspaceLifecycleVersion)return;if(this.agentLiveness=a.agentLiveness??{},a.pendingInputs)for(let e of a.workspaces){if((Bu.get(e.id)??0)!==(i.get(e.id)??0))continue;let t=this.pendingQueue[e.id]??[],n=new Map(t.map(e=>[e.toolCallId,e])),r=(a.pendingInputs[e.id]??[]).map(e=>{let t=n.get(e.toolCallId);return t&&Vt.deepEqual(t,e)?t:e});if(!(r.length===t.length&&r.every((e,n)=>e===t[n]))){this.clearAllPending(e.id);for(let t of r)this.enqueuePending(e.id,t)}}let o={...this.agentLivenessLoaded};for(let e of a.workspaces)o[e.id]=!0;this.agentLivenessLoaded=o;let s=new Map(this.workspaces.map(e=>[e.id,e]));this.workspaces=a.workspaces.map(e=>{let t=s.get(e.id),r=(Iu.get(e.id)??0)!==(n.get(e.id)??0);return t&&r?{...e,...t}:e});for(let e of this.workspaces)il().setCompacting(e.id,e.status===`compacting`),[`completed`,`idle`,`error`,`quota`].includes(e.status)&&this.finalizeRunningSubagents(e.id);this.prSnapshots=Uu(a.prSnapshots,this.prSnapshots,r);let c={...this.gitStatsCache};for(let[e,t]of Object.entries(a.gitStats)){let n=c[e];(!n||(t.computedAt??0)>=(n.computedAt??0))&&(c[e]=t)}this.gitStatsCache=c}catch(e){console.error(`[workspace-store] fetchWorkspacesInfo failed:`,e),this.listPollFailureStreak+=1,this.listPollFailureStreak>=2&&(this.activeListLoadFailed=!0,this.listLoadError=e instanceof Error?e.message:String(e))}},async refreshPrSnapshot(e){try{let t=await fetch(`/api/workspaces/pr-snapshot/refresh/${e}`,{method:`POST`});if(t.status===404){let t={...this.prSnapshots};return delete t[e],this.prSnapshots=t,Hu(e),null}if(!t.ok)return console.error(`[workspace-store] refreshPrSnapshot non-OK:`,t.status),null;let n=await t.json();return this.prSnapshots={...this.prSnapshots,[e]:n.snapshot},Hu(e),n.snapshot}catch(e){return console.error(`[workspace-store] refreshPrSnapshot failed:`,e),null}},async fetchAutoLoopStates(){try{let e=await fetch(`/api/workspaces/auto-loop-states`,{cache:`no-store`});if(!e.ok)return;let t=await e.json();this.autoLoopStates=t}catch(e){console.error(`[workspace-store] fetchAutoLoopStates failed:`,e)}},async enableAutoLoop(e){let t=this.workspaces.find(t=>t.id===e);if(t&&t.agentPermissionMode===`plan`)try{await this.updateAgentPermissionMode(e,`bypass`)}catch{}let n=await fetch(`/api/workspaces/${e}/auto-loop`,{method:`POST`});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}await this.fetchAutoLoopStates()},async disableAutoLoop(e){let t=await fetch(`/api/workspaces/${e}/auto-loop`,{method:`DELETE`});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`HTTP ${t.status}`)}await this.fetchAutoLoopStates()},async forceAutoLoopReady(e){let t=await fetch(`/api/workspaces/${e}/auto-loop-ready`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);await this.fetchAutoLoopStates()},setAutoLoopState(e,t){this.autoLoopStates[e]=t},clearAutoLoopState(e){delete this.autoLoopStates[e]},async fetchCrons(e){try{let t=await fetch(`/api/workspaces/${e}/crons`);if(!t.ok)return;let n=await t.json();this.crons[e]=n.crons}catch(e){console.error(`[workspace-store] fetchCrons failed:`,e)}},async cancelCron(e,t){let n=this.crons[e]??[];this.crons[e]=n.filter(e=>e.id!==t);try{let n=await fetch(`/api/workspaces/${e}/crons/${t}`,{method:`DELETE`});if(!n.ok)throw Error(`HTTP ${n.status}`)}catch(t){throw this.crons[e]=n,t}},async createCron(e,t){let n=await fetch(`/api/workspaces/${e}/crons`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}await this.fetchCrons(e)},async scheduleManualWakeup(e,t){let n=await fetch(`/api/workspaces/${e}/pending-wakeup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`HTTP ${n.status}`)}let r=await n.json();r.pending&&(this.pendingWakeups[e]=r.pending)},async fetchPendingWakeup(e){try{let t=await fetch(`/api/workspaces/${e}/pending-wakeup`,{cache:`no-store`});if(!t.ok)return;let n=await t.json();n?this.pendingWakeups[e]=n:delete this.pendingWakeups[e]}catch(e){console.error(`[workspace-store] fetchPendingWakeup failed:`,e)}},setPendingWakeup(e,t){this.pendingWakeups[e]=t},clearPendingWakeup(e){delete this.pendingWakeups[e]},async cancelPendingWakeup(e){let t=this.pendingWakeups[e]!==void 0;delete this.pendingWakeups[e];try{let t=await fetch(`/api/workspaces/${e}/pending-wakeup`,{method:`DELETE`});if(!t.ok)throw Error(`HTTP ${t.status}`)}catch(n){console.error(`[workspace-store] cancelPendingWakeup failed:`,n),t&&await this.fetchPendingWakeup(e)}},async fetchPendingQuotaBackoff(e){try{let t=await fetch(`/api/workspaces/${e}/quota-backoff`,{cache:`no-store`});if(!t.ok)return;let n=await t.json();n?this.pendingQuotaBackoffs[e]={...n,reason:n.reason===`transient`?`transient`:`quota`}:delete this.pendingQuotaBackoffs[e]}catch(e){console.error(`[workspace-store] fetchPendingQuotaBackoff failed:`,e)}},setPendingQuotaBackoff(e,t){this.pendingQuotaBackoffs[e]=t},clearPendingQuotaBackoff(e){delete this.pendingQuotaBackoffs[e]},async cancelQuotaBackoff(e){let t=this.pendingQuotaBackoffs[e]!==void 0;delete this.pendingQuotaBackoffs[e];try{let t=await fetch(`/api/workspaces/${e}/quota-backoff`,{method:`DELETE`});if(!t.ok)throw Error(`HTTP ${t.status}`)}catch(n){console.error(`[workspace-store] cancelQuotaBackoff failed:`,n),t&&await this.fetchPendingQuotaBackoff(e)}},async resumeQuotaBackoffNow(e){await this.fetchSessions(e);let t=this.sessions[0];t&&(t.status===`completed`||t.status===`error`)?await this.startWorkspace(e,void 0,t.id,!0):await this.startWorkspace(e)},enqueuePending(e,t){Bu.set(e,(Bu.get(e)??0)+1);let n=this.pendingQueue[e]??[];n.some(e=>e.toolCallId===t.toolCallId)||(n.push(t),this.pendingQueue[e]=n,t.kind===`question`&&(this.pendingDeferred[e]={toolCallId:t.toolCallId,toolName:t.toolName,input:t.input,agentSessionId:t.agentSessionId}))},peekPending(e){return this.pendingQueue[e]?.[0]},dequeuePending(e){Bu.set(e,(Bu.get(e)??0)+1);let t=this.pendingQueue[e];if(!t||t.length===0)return;let n=t.shift();t.length===0&&delete this.pendingQueue[e];let r=this.pendingQueue[e]?.[0];return r&&r.kind===`question`?this.pendingDeferred[e]={toolCallId:r.toolCallId,toolName:r.toolName,input:r.input,agentSessionId:r.agentSessionId}:delete this.pendingDeferred[e],n},clearPendingForSession(e,t){if(Bu.set(e,(Bu.get(e)??0)+1),t===null)return;let n=this.pendingQueue[e];if(!n)return;let r=n.filter(e=>e.agentSessionId!==t);r.length===0?delete this.pendingQueue[e]:this.pendingQueue[e]=r;let i=this.pendingDeferred[e];i&&i.agentSessionId===t&&delete this.pendingDeferred[e]},clearAllPending(e){Bu.set(e,(Bu.get(e)??0)+1),delete this.pendingQueue[e],delete this.pendingDeferred[e]},setPendingDeferred(e,t){this.enqueuePending(e,{kind:`question`,agentSessionId:t.agentSessionId,toolCallId:t.toolCallId,toolName:t.toolName,input:t.input})},clearPendingDeferred(e,t=null){if(t===null){this.clearAllPending(e);return}this.clearPendingForSession(e,t)},getPendingDeferred(e){let t=this.peekPending(e);if(t?.kind===`question`)return{toolCallId:t.toolCallId,toolName:t.toolName,input:t.input,agentSessionId:t.agentSessionId}},async submitDeferredAnswer(e,t,n,r,i){let a=await fetch(`/api/workspaces/${e}/deferred-tool-use/answer`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({answers:t,toolCallId:n,awaitingFreeForm:r,response:i})});if(!a.ok){let t=(await a.json().catch(()=>({}))).error??`HTTP ${a.status}`;if(/no deferred tool use pending|no agent running|no active engine process|no pending callback/i.test(t)){console.warn(`[workspace] submitDeferredAnswer: deferred callback expired — clearing zombie panel locally`),this.dequeuePending(e),this.fetchWorkspaces();return}throw Error(t)}this.dequeuePending(e),this.fetchWorkspaces()},async cancelDeferredAnswer(e,t,n){let r=await fetch(`/api/workspaces/${e}/deferred-tool-use/cancel`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({reason:t,toolCallId:n})});if(!r.ok){let t=(await r.json().catch(()=>({}))).error??`HTTP ${r.status}`;if(/no deferred tool use pending/i.test(t)){console.warn(`[workspace] cancelDeferredAnswer: backend has no pending — clearing zombie panel locally`),this.dequeuePending(e),this.fetchWorkspaces();return}throw Error(t)}this.dequeuePending(e),this.fetchWorkspaces()},async submitDeferredPermission(e,t,n,r,i=`once`){let a=await fetch(`/api/workspaces/${e}/deferred-permission/decision`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({toolCallId:t,decision:n,reason:r,scope:i})});if(!a.ok){let e=await a.json().catch(()=>({}));throw Error(e.error??`HTTP ${a.status}`)}this.dequeuePending(e),this.fetchWorkspaces()},updateAgentTodos(e,t){this.agentTodos[e]=t},agentTaskCreate(e,t,n){let r=this.agentTodos[e]?[...this.agentTodos[e]]:[];r.some(e=>e.id===t)||(r.push({id:t,content:n.subject||n.description||``,status:`pending`,activeForm:n.activeForm}),this.agentTodos[e]=r)},agentTaskSetNumber(e,t,n){let r=this.agentTodos[e];r&&(this.agentTodos[e]=r.map(e=>e.id===t?{...e,taskNumber:n}:e))},agentTaskUpdate(e,t,n){let r=this.agentTodos[e];if(r){if(n.status===`deleted`){this.agentTodos[e]=r.filter(e=>e.taskNumber!==t);return}this.agentTodos[e]=r.map(e=>e.taskNumber===t?{...e,status:n.status?Au(n.status):e.status,content:n.content??e.content,activeForm:n.activeForm??e.activeForm}:e)}},finalizeRunningSubagents(e){let t=this.subagents[e];if(!t)return;let n=new Date().toISOString();for(let e of Object.keys(t)){let r=t[e];r.status===`running`&&(t[e]={...r,status:`done`,updatedAt:n})}},upsertSubagent(e,t){this.subagents[e]||(this.subagents[e]={});let n=this.subagents[e][t.toolUseId],r=new Date().toISOString(),i=n?.status===`done`?`done`:t.status??n?.status??`running`;this.subagents[e][t.toolUseId]={toolUseId:t.toolUseId,description:t.description??n?.description??``,taskType:t.taskType??n?.taskType,status:i,lastToolName:t.lastToolName??n?.lastToolName,lastDescription:t.lastDescription??n?.lastDescription,totalTokens:t.totalTokens??n?.totalTokens,toolUses:t.toolUses??n?.toolUses,durationMs:t.durationMs??n?.durationMs,startedAt:n?.startedAt??r,updatedAt:r}},async markRead(e){try{let t=await fetch(`/api/workspaces/${e}/mark-read`,{method:`POST`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=this.workspaces.findIndex(t=>t.id===e);n>=0&&(this.workspaces[n]={...this.workspaces[n],hasUnread:!1})}catch(e){console.error(`[workspace store] markRead failed:`,e)}},async purgeWorktree(e){try{let t=await fetch(`/api/workspaces/${e}/purge-worktree`,{method:`POST`}),n=await t.json();if(!t.ok)return{ok:!1,error:n.error??`HTTP ${t.status}`};let r=n.workspace;return r&&(this.updateWorkspaceFromEvent(e,{archivedAt:r.archivedAt,worktreePurgedAt:r.worktreePurgedAt,worktreePurgeRestoreData:r.worktreePurgeRestoreData}),r.archivedAt&&this.archivedLoaded&&(this.archivedWorkspaces.some(t=>t.id===e)||this.archivedWorkspaces.unshift(r),this.workspaces=this.workspaces.filter(t=>t.id!==e),this.selectedWorkspaceId===e&&(this.selectedWorkspaceId=null,this.tasks=[]))),{ok:!0,warnings:n.warnings??[]}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}},async dismissPrAttention(e,t){let n=this.prSnapshots[e];if(n)try{let r=await fetch(`/api/workspaces/${e}/dismiss-pr-attention`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:t,prUpdatedAt:n.updatedAt})});if(!r.ok)throw Error(`HTTP ${r.status}`);let i=t===`changes-requested`?{prChangesDismissedAt:n.updatedAt}:{prCiFailureDismissedAt:n.updatedAt};this.updateWorkspaceFromEvent(e,i)}catch(e){console.error(`[workspace store] dismissPrAttention failed:`,e)}},async restorePrAttention(e,t){try{let n=await fetch(`/api/workspaces/${e}/restore-pr-attention`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:t})});if(!n.ok)throw Error(`HTTP ${n.status}`);let r=t===`changes-requested`?{prChangesDismissedAt:null}:{prCiFailureDismissedAt:null};this.updateWorkspaceFromEvent(e,r)}catch(e){console.error(`[workspace store] restorePrAttention failed:`,e)}},queuedMessageKey(e,t){return`${e}:${t}`},getQueuedMessage(e,t){return t?this.queuedMessages[this.queuedMessageKey(e,t)]:void 0},queueMessage(e,t,n){let r=pc(this);if(r)return r.queue(e,t,n);this.queuedMessages[this.queuedMessageKey(e,n)]={content:t,sessionId:n}},cancelQueuedMessage(e,t){let n=pc(this);if(n)return n.cancel(e,t);t&&delete this.queuedMessages[this.queuedMessageKey(e,t)]},flushQueuedMessage(e,t){let n=pc(this);if(n)return n.flush(e,t);let r=this.getQueuedMessage(e,t);if(!r)return;let i=od();i.isCompacting(e)||(this.cancelQueuedMessage(e,t),i.sendChatMessage(e,r.content,t))},setActiveAgentSession(e,t){this.activeAgentSessionIds[e]=t,delete this.settledAgentSessionIds[e]},markAgentTurnSettled(e,t){this.activeAgentSessionIds[e]===t&&(this.settledAgentSessionIds[e]=t)},isAgentTurnSettled(e){let t=this.activeAgentSessionIds[e];return t!==void 0&&this.settledAgentSessionIds[e]===t},clearActiveAgentSession(e,t){this.activeAgentSessionIds[e]===t&&(delete this.activeAgentSessionIds[e],delete this.settledAgentSessionIds[e])},clearActiveAgentSessionOwner(e){delete this.activeAgentSessionIds[e],delete this.settledAgentSessionIds[e]},updateWorkspaceFromEvent(e,t){Iu.set(e,(Iu.get(e)??0)+1);let n=this.workspaces.findIndex(t=>t.id===e);if(n>=0&&(this.workspaces[n]={...this.workspaces[n],...t}),t.status!==void 0){if(il().setCompacting(e,t.status===`compacting`),e in this.agentLivenessLoaded){let t={...this.agentLivenessLoaded};delete t[e],this.agentLivenessLoaded=t}e===this.selectedWorkspaceId&&this.fetchWorkspaceDetails(e)}if(t.status&&[`completed`,`idle`,`error`,`quota`].includes(t.status)){let t=this.activityFeeds[e];if(t)for(let e of t)e.meta?.pending&&(e.meta.pending=!1);let n=this.subagents[e];if(n)for(let[e,t]of Object.entries(n))t.status===`running`&&(n[e]={...t,status:`done`})}}}}),Q=Gc.global.t,Gu=new Zc,Ku=0,qu={"pr:ci-failed":{soundKey:`audioPrCiFailedSound`,enabledKey:`audioPrCiFailedEnabled`,volumeKey:`audioPrCiFailedVolume`},"pr:ci-recovered":{soundKey:`audioPrCiRecoveredSound`,enabledKey:`audioPrCiRecoveredEnabled`,volumeKey:`audioPrCiRecoveredVolume`},"pr:changes-requested":{soundKey:`audioPrChangesRequestedSound`,enabledKey:`audioPrChangesRequestedEnabled`,volumeKey:`audioPrChangesRequestedVolume`},"pr:approved":{soundKey:`audioPrApprovedSound`,enabledKey:`audioPrApprovedEnabled`,volumeKey:`audioPrApprovedVolume`},"pr:merge-conflict":{soundKey:`audioPrMergeConflictSound`,enabledKey:`audioPrMergeConflictEnabled`,volumeKey:`audioPrMergeConflictVolume`},"pr:ready-to-merge":{soundKey:`audioPrReadyToMergeSound`,enabledKey:`audioPrReadyToMergeEnabled`,volumeKey:`audioPrReadyToMergeVolume`},"pr:merged":{soundKey:`audioPrMergedSound`,enabledKey:`audioPrMergedEnabled`,volumeKey:`audioPrMergedVolume`}};function Ju(e,t,n){let r=Rl().global,i=qu[n];pu(e,void 0,t,yl(r[i.soundKey]),Number(r[i.volumeKey]),!!r[i.enabledKey])}function Yu(e,t){let n=[];return t&&n.push({label:Q(`pr.openPr`),color:`white`,noDismiss:!0,handler:()=>window.open(t,`_blank`)}),n.push({label:Q(`pr.openWorkspace`),color:`white`,noDismiss:!0,handler:()=>{window.location.hash=`#/workspace/${e}`}}),n.push({label:Q(`pr.dismiss`),color:`white`}),n}var Xu=null,Zu=null,Qu=0,$u=!1,ed=!1,td=!1;function nd(e){td=e}function rd(e,t,n){if(t.kind!==`session:started`)return;let r=Z();if(n){r.setActiveAgentSession(e,n);let t=r.peekPending(e);t&&t.agentSessionId===n&&r.dequeuePending(e)}let i=r.workspaces.find(t=>t.id===e);i&&(i.status===`completed`||i.status===`idle`||i.status===`error`||i.status===`quota`)&&r.updateWorkspaceFromEvent(e,{status:`executing`}),!td&&n&&r.selectedWorkspaceId===e&&r.selectedSessionId!==n&&r.fetchSessions(e,n).catch(e=>{console.error(`[websocket] fetchSessions on session:started failed:`,e)})}function id(e,t){let n=Z();if(t.kind===`tool:call`&&t.name===`TodoWrite`){let r=t.input?.todos;return Array.isArray(r)&&n.updateAgentTodos(e,r.map(e=>({content:typeof e.content==`string`?e.content:``,status:typeof e.status==`string`?e.status:`pending`,activeForm:typeof e.activeForm==`string`?e.activeForm:void 0}))),!0}if(t.kind===`tool:call`&&t.name===`TaskCreate`){let r=t.input??{};return n.agentTaskCreate(e,t.toolCallId,{subject:typeof r.subject==`string`?r.subject:void 0,description:typeof r.description==`string`?r.description:void 0,activeForm:typeof r.activeForm==`string`?r.activeForm:void 0}),!0}if(t.kind===`tool:result`&&typeof t.output==`string`){let r=t.output.match(/^Task #(\d+) created successfully/);if(r)return n.agentTaskSetNumber(e,t.toolCallId,Number(r[1])),!0}if(t.kind===`tool:call`&&t.name===`TaskUpdate`){let r=t.input??{},i=r.task_id??r.taskId??r.id,a=typeof i==`number`?i:typeof i==`string`?Number(i):NaN;return Number.isFinite(a)&&n.agentTaskUpdate(e,a,{status:typeof r.status==`string`?r.status:void 0,content:typeof r.subject==`string`?r.subject:void 0,activeForm:typeof r.activeForm==`string`?r.activeForm:void 0}),!0}return!1}function ad(e,t,n,r,i){let a=il(),o=Z().activeAgentSessionIds[e],s=!i||!o||i===o;if(t.kind===`session:compacting`){!td&&s&&a.setCompacting(e,t.active);return}a.append(e,t,n,r,i,!td),!td&&s&&(t.kind===`session:compacted`||t.kind===`message:text`||t.kind===`tool:call`)&&a.setCompacting(e,!1),rd(e,t,i??void 0);let c=Z();if(t.kind===`session:user-input-requested`){if(t.requestKind===`question`?c.enqueuePending(e,{kind:`question`,agentSessionId:i??null,toolCallId:t.toolCallId,toolName:t.toolName,input:t.payload}):c.enqueuePending(e,{kind:`permission`,agentSessionId:i??null,toolCallId:t.toolCallId,toolName:t.toolName,toolInput:t.payload}),od().isCompacting(e)||c.updateWorkspaceFromEvent(e,{status:`awaiting-user`}),!td){let n=c.workspaces.find(t=>t.id===e)?.name??``,r=t.requestKind===`question`?Q(`notification.agentQuestion`,{name:n}):Q(`notification.agentPermissionRequest`,{name:n}),i=Rl().global;pu(r,void 0,e,t.requestKind===`question`?i.audioQuestionSound:void 0,t.requestKind===`question`?i.audioQuestionVolume:void 0,i.audioQuestionNotifications)}return}if(t.kind===`subagent:progress`){c.upsertSubagent(e,{toolUseId:t.toolCallId,status:t.status,description:t.description,taskType:t.taskType,lastToolName:t.lastToolName,totalTokens:t.totalTokens,toolUses:t.toolUses,durationMs:t.durationMs});return}if(!id(e,t)){if(t.kind===`tool:call`&&t.name===`Bash`){let n=t.input,r=`${n?.command??``} ${n?.description??``}`;/\bgit\b|commit|push|pull|merge|rebase|checkout|branch/i.test(r)&&c.triggerGitRefresh(),/\bgit\s+branch\s+-m\b/i.test(r)&&setTimeout(()=>{c.resyncWorkspaceBranch(e).catch(e=>{console.error(`[websocket] Branch resync failed:`,e)})},2500),/\bgh\s+pr\s+create\b/i.test(r)&&setTimeout(()=>c.triggerGitRefresh(),3e3)}if(t.kind===`tool:call`&&t.name===`ExitPlanMode`&&c.workspaces.find(t=>t.id===e)?.agentPermissionMode===`plan`&&(c.updateWorkspaceFromEvent(e,{agentPermissionMode:`bypass`}),c.updateAgentPermissionMode(e,`bypass`).catch(e=>{console.error(`[websocket] failed to persist ExitPlanMode flip:`,e)})),t.kind!==`session:started`){if(t.kind===`turn:completed`){i&&c.markAgentTurnSettled(e,i);return}if(t.kind===`session:ended`){i&&c.clearPendingForSession(e,i);let n=c.activeAgentSessionIds[e];if(t.superseded===!0||typeof i==`string`&&i.length>0&&n!==void 0&&i!==n){pc(c)||c.cancelQueuedMessage(e,i),i&&c.clearActiveAgentSession(e,i);return}td||a.setCompacting(e,!1),i?c.clearActiveAgentSession(e,i):c.clearActiveAgentSessionOwner(e);let r=c.workspaces.find(t=>t.id===e)?.status===`quota`?`quota`:t.reason===`completed`?`completed`:t.reason===`error`?`error`:`idle`;c.updateWorkspaceFromEvent(e,{status:r}),i&&t.reason===`completed`&&!pc(c)&&c.flushQueuedMessage(e,i),c.finalizeRunningSubagents(e),c.fetchWorkspaces(),!td&&t.reason!==`killed`&&t.reason!==`error`&&c.autoLoopStates[e]?.auto_loop!==!0&&pu(Q(`notification.agentFinished`,{name:c.workspaces.find(t=>t.id===e)?.name??``}),void 0,e);return}if(t.kind===`error`&&(t.category===`quota`&&(c.updateWorkspaceFromEvent(e,{status:`quota`}),c.fetchWorkspaces()),!td)){let t=Rl().global;pu(Q(`notification.agentError`,{name:c.workspaces.find(t=>t.id===e)?.name??``}),void 0,e,t.audioAgentErrorSound,t.audioAgentErrorVolume,t.audioAgentErrorNotifications)}}}}var od=Ve(`websocket`,{state:()=>({connected:!1,reconnecting:!1,reconnectAttempt:0,lastEventId:null,pendingSyncRequests:[],_replaying:!1,_drainInProgress:!1,_refreshAfterSync:!1,_workspacesToRefreshAfterDrain:new Set}),actions:{connect(){if(Xu)return;if($u=!0,ed||(ed=!0,window.addEventListener(`online`,()=>{$u&&this.connect()}),window.addEventListener(`offline`,()=>{this.connected=!1,this.reconnecting=$u,this.pendingSyncRequests=[],Gu.disconnect(Q(`network.login.unreachable`));let e=Xu;Xu=null,e?.close(),Zu&&=(clearTimeout(Zu),null)})),!navigator.onLine){this.connected=!1,this.reconnecting=!0,this.pendingSyncRequests=[];return}let e=ac(`${window.location.protocol===`https:`?`wss:`:`ws:`}//${window.location.host}/ws`,nc()),t=new WebSocket(e);Xu=t,t.addEventListener(`open`,()=>{if(Xu!==t)return;this.connected=!0,Ul().refreshSnapshot(),this.reconnecting=!1,Qu=0,this.reconnectAttempt=0;let e=Z().workspaces.map(e=>e.id);for(let t of e)this._send({type:`subscribe`,payload:{workspaceId:t}});this._refreshAfterSync=!0,this.lastEventId?this._send({type:`sync:request`,payload:{lastEventId:this.lastEventId,workspaceIds:e}}):(this._refreshAfterSync=!1,this.refreshLiveState())}),t.addEventListener(`message`,e=>{if(Xu===t)try{let t=JSON.parse(e.data);this._routeMessage(t)}catch{}}),t.addEventListener(`close`,()=>{Xu===t&&(Gu.disconnect(Q(`network.login.unreachable`)),this.connected=!1,this.pendingSyncRequests=[],Xu=null,$u&&this._scheduleReconnect())}),t.addEventListener(`error`,()=>{})},async refreshLiveState(){let e=Z(),t=new Set(e.workspaces.map(e=>e.id));if(await e.fetchWorkspacesInfo(),!this.connected)return;for(let n of e.workspaces)t.has(n.id)||(this._refreshAfterSync=!0,this.subscribe(n.id));let n=vu(),r=new Set(Object.keys(n.statuses));e.selectedWorkspaceId&&r.add(e.selectedWorkspaceId),await Promise.allSettled([...r].map(e=>n.fetchStatus(e)))},disconnect(){Gu.disconnect(Q(`network.login.unreachable`)),$u=!1,this.pendingSyncRequests=[],Zu&&=(clearTimeout(Zu),null),Xu&&=(Xu.close(),null),this.connected=!1,this.reconnecting=!1,this.reconnectAttempt=0},subscribe(e){this._drainInProgress&&this._workspacesToRefreshAfterDrain.add(e),this._send({type:`subscribe`,payload:{workspaceId:e}}),this._send({type:`sync:request`,payload:{workspaceIds:[e]}})},unsubscribe(e){this._send({type:`unsubscribe`,payload:{workspaceId:e}})},subscribeChannel(e){this._send({type:`subscribe`,payload:{workspaceId:e}})},isCompacting(e){let t=Z();return(t.workspaces.find(t=>t.id===e)??t.archivedWorkspaces.find(t=>t.id===e))?.status===`compacting`||il().isCompacting(e)},sendChatMessage(e,t,n,r,i=!1,a){if(this.isCompacting(e)||!this._send({type:`chat:message`,payload:{workspaceId:e,content:t,sessionId:n,agentPermissionModeOverride:r,force:i,clientMessageId:a}}))return!1;let o=Z(),s=o.workspaces.find(t=>t.id===e);return s&&(s.status===`completed`||s.status===`idle`||s.status===`error`||s.status===`quota`)&&o.updateWorkspaceFromEvent(e,{status:`executing`}),!0},sendChatMessageConfirmed(e,t,n){let r=`${Array.from(crypto.getRandomValues(new Uint32Array(4)),e=>e.toString(16)).join(`-`)}-${++Ku}`,i=Gu.wait(e,r,Q(`network.login.unreachable`));return this.sendChatMessage(e,t,n,void 0,!1,r)||Gu.settle(e,r,Error(Q(`network.login.unreachable`))),i},_send(e){if(Xu&&Xu.readyState===WebSocket.OPEN&&navigator.onLine){try{Xu.send(JSON.stringify(e))}catch{return!1}if(e.type===`sync:request`){let t=e.payload;this.pendingSyncRequests.push([...t?.workspaceIds??Z().workspaces.map(e=>e.id)])}return!0}return!1},isSyncPending(e){return this.pendingSyncRequests.some(t=>t.includes(e))},isConnected(){return Xu!==null&&Xu.readyState===WebSocket.OPEN},_scheduleReconnect(){if(Zu)return;if(!$u||!navigator.onLine){this.reconnecting=$u;return}let e=Math.min(1e3*2**Qu,3e4),t=Math.round(e*(.8+Math.random()*.4));Qu++,this.reconnecting=!0,this.reconnectAttempt=Qu,Qu===4&&nc()&&sc(),Zu=setTimeout(()=>{Zu=null,this.connect()},t)},_routeMessage(e){let t=Z();e.replayable!==!1&&e.id?this.lastEventId=e.id:e.replayable!==!1&&e.eventId&&(this.lastEventId=e.eventId);let n=e.payload??{},r=e.workspaceId??n.workspaceId??``,i=Gl(e.type);if(i){let n=Kl(i.event),a=e.createdAt??new Date().toISOString(),o=Q(`chat.hookScript`,{event:i.event}),s=i.kind===`output`?e.payload?.text??``:i.kind===`complete`?e.payload?.hadOutput===!1?Q(`chat.scriptDone`):Q(`chat.scriptComplete`,{phase:o}):Q(`chat.scriptError`,{phase:o,message:e.payload?.message??Q(`chat.unknownError`)});t.addActivityItem(r,{id:e.id??`${n}-${i.kind}-${Date.now()}`,type:`text`,content:s,timestamp:a,meta:{sender:n}});return}switch(e.type){case`kobo:update-checked`:Ul().applySnapshot(n);break;case`workspace:status`:{if(!r||this._replaying||typeof n.status!=`string`)break;let e=t.activeAgentSessionIds[r];if(e&&typeof n.sessionId==`string`&&e!==n.sessionId)break;t.updateWorkspaceFromEvent(r,{status:n.status});break}case`chat:accepted`:{if(typeof n.clientMessageId==`string`){r&&Gu.settle(r,n.clientMessageId);break}let e=typeof n.sessionId==`string`?n.sessionId:void 0;r&&e&&t.cancelQueuedMessage(r,e);break}case`chat:rejected`:{if(typeof n.clientMessageId==`string`){r&&Gu.settle(r,n.clientMessageId,Error(typeof n.message==`string`?n.message:Q(`network.login.unreachable`)));break}let e=typeof n.sessionId==`string`?n.sessionId:void 0,i=typeof n.content==`string`?n.content:void 0,a=typeof n.message==`string`?n.message:Q(`network.login.unreachable`);if(r&&i){let n=(t.activityFeeds[r]??[]).find(e=>e.meta?.sender===`user`&&e.meta?.pending&&e.content===i);n&&t.removeActivityItem(r,n.id),e&&t.queueMessage(r,i,e)}Fc.create({type:`negative`,message:a,position:`top`,timeout:6e3});break}case`agent:event`:{if(!r)break;let t=e.createdAt;ad(r,n,t,e.id??e.eventId,e.sessionId??null);break}case`agent:progress`:n.tasks&&Array.isArray(n.tasks)&&(t.tasks=n.tasks);break;case`user:message`:if(r&&typeof n.clientMessageId==`string`&&Gu.settle(r,n.clientMessageId),r&&n.content){let i=n.content,a=n.sender??`user`,o=gu(n.source),s=e.sessionId,c=e.id??e.eventId??`user-${Date.now()}`,l=typeof e.createdAt==`string`?e.createdAt:void 0,u=l??new Date().toISOString(),d=t.activityFeeds[r]??[];if(!o&&a===`user`&&d.some(e=>e.meta?.sender===`user`&&e.content===i&&e.meta?.pending)){let e=d.findIndex(e=>e.meta?.sender===`user`&&e.content===i&&e.meta?.pending);e>=0&&(d[e]={...d[e],id:c,sessionId:s,...l?{timestamp:l}:{}})}else t.addActivityItem(r,{id:c,type:`text`,content:i,timestamp:u,sessionId:s,meta:{sender:a,...o?{source:o}:{}}})}break;case`sync:empty`:case`sync:error`:this.pendingSyncRequests.shift();break;case`sync:response`:{let e=this.pendingSyncRequests[0];this._replaying=!0,nd(!0);try{let e=n.events??[],r=n.mode===`delta`?`delta`:`snapshot`,i=new Map;for(let t of e)if(t.type!==`sync:response`){if(t.type===`agent:event`&&t.workspaceId){let e=i.get(t.workspaceId)??{events:[],timestamps:[],sessionIds:[],eventIds:[],oldestId:void 0};e.events.push(t.payload),e.timestamps.push(t.createdAt),e.sessionIds.push(t.sessionId??null),e.eventIds.push(t.id??null),e.oldestId||=t.id,i.set(t.workspaceId,e);continue}this._routeMessage(t)}if(i.size>0){let e=il();for(let[t,{events:n,timestamps:a,sessionIds:o,eventIds:s,oldestId:c}]of i){let i=r===`delta`?e.merge(t,n,a,{sessionIds:o,eventIds:s}):n.map((e,t)=>t);r===`snapshot`&&e.reset(t,n,a,{oldestId:c,hasMoreOlder:!0,sessionIds:o,eventIds:s}),r===`snapshot`&&Z().updateAgentTodos(t,[]);for(let e of i){let r=n[e];if(!r)continue;let i=o[e]??null;if(r.kind===`session:user-input-requested`){r.requestKind===`question`?Z().enqueuePending(t,{kind:`question`,agentSessionId:i,toolCallId:r.toolCallId,toolName:r.toolName,input:r.payload}):Z().enqueuePending(t,{kind:`permission`,agentSessionId:i,toolCallId:r.toolCallId,toolName:r.toolName,toolInput:r.payload});continue}if(r.kind===`session:started`){if(i){let e=Z();e.setActiveAgentSession(t,i);let n=e.peekPending(t);n&&n.agentSessionId===i&&e.dequeuePending(t)}continue}if(r.kind===`session:ended`){let e=Z();i?(e.clearPendingForSession(t,i),pc(e)||e.cancelQueuedMessage(t,i),e.clearActiveAgentSession(t,i)):r.superseded!==!0&&e.clearActiveAgentSessionOwner(t);continue}if(r.kind===`subagent:progress`){Z().upsertSubagent(t,{toolUseId:r.toolCallId,status:r.status,description:r.description,taskType:r.taskType,lastToolName:r.lastToolName,totalTokens:r.totalTokens,toolUses:r.toolUses,durationMs:r.durationMs});continue}id(t,r)}}}let a=this.lastEventId,o=e.findLast(e=>e.replayable!==!1&&typeof e.id==`string`);if(o&&(this.lastEventId=o.id),n.truncated===!0&&o&&this.lastEventId!==a)this._drainInProgress=!0,this._send({type:`sync:request`,payload:{lastEventId:this.lastEventId,workspaceIds:t.workspaces.map(e=>e.id)}});else if(this._drainInProgress&&(this._drainInProgress=!1,this._workspacesToRefreshAfterDrain.size>0)){let e=[...this._workspacesToRefreshAfterDrain];this._workspacesToRefreshAfterDrain.clear(),this._send({type:`sync:request`,payload:{lastEventId:this.lastEventId,workspaceIds:e}})}}finally{if(this._replaying=!1,nd(!1),e){let t=this.pendingSyncRequests.indexOf(e);t!==-1&&this.pendingSyncRequests.splice(t,1)}this._refreshAfterSync&&this.pendingSyncRequests.length===0&&(this._refreshAfterSync=!1,this.refreshLiveState())}break}case`usage:snapshot`:{let e=n;e.providerId&&e.snapshot&&t.applyUsageSnapshot({providerId:e.providerId,snapshot:e.snapshot});break}case`devserver:status`:{let e=vu();r&&e.updateFromWsEvent(r,n);break}case`task:updated`:r&&t.fetchWorkspaceDetails(r);break;case`setup:output`:t.addActivityItem(r,{id:e.id??`setup-${Date.now()}`,type:`text`,content:e.payload?.text??``,timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`setup`}});break;case`setup:complete`:t.addActivityItem(r,{id:e.id??`setup-complete-${Date.now()}`,type:`text`,content:e.payload?.hadOutput===!1?Q(`chat.scriptDone`):Q(`chat.scriptComplete`,{phase:`setup`}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`setup`}});break;case`setup:error`:t.addActivityItem(r,{id:e.id??`setup-error-${Date.now()}`,type:`text`,content:Q(`chat.scriptError`,{phase:`setup`,message:e.payload?.message??Q(`chat.unknownError`)}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`setup`}});break;case`cleanup:output`:t.addActivityItem(r,{id:e.id??`cleanup-${Date.now()}`,type:`text`,content:e.payload?.text??``,timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`cleanup`}});break;case`cleanup:complete`:t.addActivityItem(r,{id:e.id??`cleanup-complete-${Date.now()}`,type:`text`,content:e.payload?.hadOutput===!1?Q(`chat.scriptDone`):Q(`chat.scriptComplete`,{phase:`cleanup`}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`cleanup`}});break;case`cleanup:error`:t.addActivityItem(r,{id:e.id??`cleanup-error-${Date.now()}`,type:`text`,content:Q(`chat.scriptError`,{phase:`cleanup`,message:e.payload?.message??Q(`chat.unknownError`)}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`cleanup`}});break;case`archive:output`:t.addActivityItem(r,{id:e.id??`archive-${Date.now()}`,type:`text`,content:e.payload?.text??``,timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`archive`}});break;case`archive:complete`:t.addActivityItem(r,{id:e.id??`archive-complete-${Date.now()}`,type:`text`,content:e.payload?.hadOutput===!1?Q(`chat.scriptDone`):Q(`chat.scriptComplete`,{phase:`archive`}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`archive`}});break;case`archive:error`:t.addActivityItem(r,{id:e.id??`archive-error-${Date.now()}`,type:`text`,content:Q(`chat.scriptError`,{phase:`archive`,message:e.payload?.message??Q(`chat.unknownError`)}),timestamp:e.createdAt??new Date().toISOString(),meta:{sender:`archive`}});break;case`workspace:unread`:if(r){let e=n.hasUnread??!1;t.updateWorkspaceFromEvent(r,{hasUnread:e})}break;case`workspace:awaiting-reminder`:{let e=n;if(!e.workspaceId)break;let t=Rl().global,r=Q(`notification.awaitingReminder`,{name:e.workspaceName??``,minutes:e.waitingMinutes??0});if(pu(r,void 0,e.workspaceId,t.audioQuestionSound,t.audioQuestionVolume,t.audioQuestionNotifications),document.hasFocus()){let t=e.workspaceId;Fc.create({type:`info`,position:`top`,timeout:1e4,message:r,actions:[{label:Q(`common.open`),color:`white`,handler:()=>{window.location.hash=`#/workspace/${t}`}}]})}break}case`workspace:pr-attention-dismissed`:if(r){let e=n.kind,i=n.prUpdatedAt;e&&i&&t.updateWorkspaceFromEvent(r,e===`changes-requested`?{prChangesDismissedAt:i}:{prCiFailureDismissedAt:i})}break;case`workspace:description-updated`:{if(!r)break;let e=n.description??null;t.updateWorkspaceFromEvent(r,{description:e});break}case`workspace:agent-description-updated`:{if(!r)break;let e=n.agentDescription??null;t.updateWorkspaceFromEvent(r,{agentDescription:e});break}case`cron:created`:{if(!r)break;let e=n.cron;if(!e)break;let i=t.crons[r]??[];i.some(t=>t.id===e.id)||(t.crons[r]=[...i,e]);let a=t.autoLoopStates[r];a&&(a.crons_count=t.crons[r].length);break}case`cron:fired`:{if(!r)break;let e=n,i=t.crons[r]??[];t.crons[r]=i.map(t=>t.id===e.id?{...t,nextFireAt:e.nextFireAt??t.nextFireAt,lastFiredAt:e.lastFiredAt??new Date().toISOString()}:t);break}case`cron:cancelled`:{if(!r)break;let e=n.id;if(!e)break;t.crons[r]=(t.crons[r]??[]).filter(t=>t.id!==e);let i=t.autoLoopStates[r];i&&(i.crons_count=t.crons[r].length);break}case`cron:updated`:{if(!r)break;let e=n.crons;if(Array.isArray(e)){t.crons[r]=e;let n=t.autoLoopStates[r];n&&(n.crons_count=e.length)}break}case`workspace:archived`:case`workspace:unarchived`:case`workspace:worktree-restored`:case`workspace:worktree-purged`:{let i=n.workspace;e.type===`workspace:worktree-restored`&&i&&i.id===r?t.applyRestoredWorkspace(i):t.invalidateWorkspaceLifecycleReads(r),(e.type===`workspace:archived`||e.type===`workspace:worktree-purged`)&&r&&nl(r),e.type===`workspace:archived`&&r&&t.selectedWorkspaceId===r&&(t.selectedWorkspaceId=null),t.fetchWorkspaces(),t.archivedLoaded&&t.fetchArchivedWorkspaces();break}case`workspace:deleted`:t.invalidateWorkspaceLifecycleReads(r),r&&nl(r),r&&t.selectedWorkspaceId===r&&(t.selectedWorkspaceId=null),t.fetchWorkspaces(),t.archivedLoaded&&t.fetchArchivedWorkspaces();break;case`pr:base-changed`:{if(!r)break;let e=n,i=e.oldBase??``,a=e.newBase??``;t.updateWorkspaceFromEvent(r,{sourceBranch:a}),Fc.create({type:`info`,position:`top`,timeout:Jl,message:Q(`pr.baseChanged`,{oldBase:i,newBase:a}),actions:Yu(r,e.prUrl)}),pu(Q(`pr.baseChanged`,{oldBase:i,newBase:a}),void 0,r);break}case`pr:ci-failed`:case`pr:ci-recovered`:case`pr:merge-conflict`:case`pr:merged`:{if(!r)break;let i=e.type,a=n,o=a.prNumber??0,s={"pr:ci-failed":{key:`toast.prCiFailed`,type:`negative`,timeout:4e3},"pr:ci-recovered":{key:`toast.prCiRecovered`,type:`positive`,timeout:5e3},"pr:merge-conflict":{key:`toast.prMergeConflict`,type:`warning`,timeout:Jl},"pr:merged":{key:`toast.prMerged`,type:`positive`,timeout:5e3}}[i],c=Q(s.key,{n:o});Fc.create({type:s.type,position:`top`,timeout:s.timeout,message:c,actions:Yu(r,a.prUrl)}),Ju(c,r,i),i!==`pr:merged`&&t.refreshPrSnapshot(r);break}case`pr:changes-requested`:{if(!r)break;let e=n,i=Q(`toast.prChangesRequested`,{n:e.prNumber??0});Fc.create({type:`warning`,position:`top`,timeout:Jl,message:i,actions:Yu(r,e.prUrl)}),Ju(i,r,`pr:changes-requested`),t.refreshPrSnapshot(r);break}case`pr:approved`:{if(!r)break;let e=n,i=Q(`toast.prApproved`,{n:e.prNumber??0});Fc.create({type:`positive`,position:`top`,timeout:5e3,message:i,actions:Yu(r,e.prUrl)}),Ju(i,r,`pr:approved`),t.refreshPrSnapshot(r);break}case`pr:ready-to-merge`:{if(!r)break;let e=n,i=Q(`toast.prReadyToMerge`,{n:e.prNumber??0});Fc.create({type:`positive`,position:`top`,timeout:5e3,message:i,actions:Yu(r,e.prUrl)}),Ju(i,r,`pr:ready-to-merge`),t.refreshPrSnapshot(r);break}case`wakeup:scheduled`:if(r){let e=n;typeof e.targetAt==`string`&&t.setPendingWakeup(r,{targetAt:e.targetAt,reason:e.reason})}break;case`wakeup:cancelled`:case`wakeup:fired`:case`wakeup:skipped`:r&&t.clearPendingWakeup(r);break;case`agent:quota-recovered`:r&&(t.clearPendingQuotaBackoff(r),t.updateWorkspaceFromEvent(r,{status:`executing`}));break;case`agent:quota-backoff`:{if(!r)break;let e=n;typeof e.targetAt==`string`&&typeof e.source==`string`&&t.setPendingQuotaBackoff(r,{targetAt:e.targetAt,resetsAt:e.resetsAt??null,source:e.source,reason:e.reason===`transient`?`transient`:`quota`});break}case`agent:quota-backoff-cancelled`:r&&(t.clearPendingQuotaBackoff(r),n.reason===`completed`&&t.fetchWorkspaces());break;case`autoloop:enabled`:case`autoloop:iteration-started`:case`autoloop:ready-flipped`:t.fetchAutoLoopStates();break;case`autoloop:permission-overridden`:r&&pu(Q(`notification.autoLoopPermissionOverridden`,{name:t.workspaces.find(e=>e.id===r)?.name??``}),void 0,r);break;case`autoloop:waiting-for-slot`:{if(!r)break;let e=n,i=t.workspaces.find(e=>e.id===r)?.name??``;Fc.create({type:`info`,position:`top`,timeout:6e3,message:Q(`notification.autoLoopWaitingForSlot`,{name:i,running:e.running??0,limit:e.limit??0})});break}case`autoloop:disabled`:if(t.fetchAutoLoopStates(),r){let e=n?.reason,i=t.workspaces.find(e=>e.id===r)?.name??``,a=e===`error`?`notification.autoLoopError`:e===`stall`?`notification.autoLoopStalled`:e===`completed`?`notification.autoLoopCompleted`:e===`awaiting-clarification`?`notification.autoLoopAwaitingClarification`:null;a&&pu(Q(a,{name:i}),void 0,r)}break;case`workspace:create-progress`:{let e=typeof n.step==`string`?n.step:``,r=typeof n.creationId==`string`?n.creationId:``;r&&e&&t.setCreationProgress({creationId:r,step:e,index:typeof n.index==`number`?n.index:0,total:typeof n.total==`number`?n.total:0});break}case`workspace:create-failed`:{let e=typeof n.creationId==`string`?n.creationId:``,r=typeof n.step==`string`?n.step:``;e&&r&&t.setCreationProgress({creationId:e,step:r,index:-1,total:0});break}case`migration:progress`:case`migration:error`:Hn().update(n)}}}}),sd=N({__name:`App`,setup(e){let t=od(),n=_c(),r=Z(),i=Yl?window.parent.koboWorkspaceQueues:void 0,a;if(i)a=gc(r,i);else{let e=hc(r);window.koboWorkspaceQueues=e,a=()=>{e.dispose(),delete window.koboWorkspaceQueues}}return y(()=>{t.connect(),n.fetchTemplates(),cu()}),p(()=>{a?.(),t.disconnect()}),(e,t)=>{let n=S(`router-view`);return h(),A(j,null,[w(n),w(ts),w(dc)],64)}}}),cd=e=>e,ld=cd,ud=cd,dd=cd(()=>He()),fd={true:`inset`,item:`item-inset`,"item-thumbnail":`item-thumbnail-inset`},pd={xs:2,sm:4,md:8,lg:16,xl:24},md=Ne({name:`QSeparator`,props:{...ze,spaced:[Boolean,String],inset:[Boolean,String],vertical:Boolean,color:String,size:String},setup(e){let t=Re(),n=Be(e,t),r=k(()=>e.vertical?`vertical`:`horizontal`),i=k(()=>` q-separator--${r.value}`),a=k(()=>e.inset?`${i.value}-${fd[e.inset]}`:``),o=k(()=>`q-separator${i.value}${a.value}`+(e.color===void 0?``:` bg-${e.color}`)+(n()?` q-separator--dark`:``)),s=k(()=>{let t={};if(e.size!==void 0&&(t[e.vertical?`width`:`height`]=e.size),e.spaced){let n=e.spaced===!0?`${pd.md}px`:e.spaced in pd?`${pd[e.spaced]}px`:e.spaced,r=e.vertical?[`Left`,`Right`]:[`Top`,`Bottom`];t[`margin${r[0]}`]=t[`margin${r[1]}`]=n}return t});return()=>f(`hr`,{class:o.value,style:s.value,"aria-orientation":r.value})}}),hd=()=>f(`svg`,{key:`svg`,class:`q-radio__bg absolute non-selectable`,viewBox:`0 0 24 24`},[f(`path`,{d:`M12,22a10,10 0 0 1 -10,-10a10,10 0 0 1 10,-10a10,10 0 0 1 10,10a10,10 0 0 1 -10,10m0,-22a12,12 0 0 0 -12,12a12,12 0 0 0 12,12a12,12 0 0 0 12,-12a12,12 0 0 0 -12,-12`}),f(`path`,{class:`q-radio__check`,d:`M12,6a6,6 0 0 0 -6,6a6,6 0 0 0 6,6a6,6 0 0 0 6,-6a6,6 0 0 0 -6,-6`})]);function gd(e){(e.keyCode===13||e.keyCode===32)&&ve(e)}var _d=Ne({name:`QRadio`,props:{...ze,...re,...rt,modelValue:{required:!0},val:{required:!0},label:String,leftLabel:Boolean,checkedIcon:String,uncheckedIcon:String,color:String,keepColor:Boolean,dense:Boolean,disable:Boolean,tabindex:[String,Number]},emits:[`update:modelValue`],setup(n,{slots:r,emit:i}){let{proxy:a}=T(),o=Re(),s=Be(n,o),c=t(null),{refocusTargetEl:l,refocusTarget:u}=ot(n,c),d=k(()=>e(n.modelValue)===e(n.val)),p=k(()=>`q-radio cursor-pointer no-outline row inline no-wrap items-center`+(n.disable?` disabled`:``)+(s()?` q-radio--dark`:``)+(n.dense?` q-radio--dense`:``)+(n.leftLabel?` reverse`:``)),m=k(()=>{let e=n.color!==void 0&&(n.keepColor||d.value)?` text-${n.color}`:``;return`q-radio__inner relative-position q-radio__inner--${d.value?`truthy`:`falsy`}${e}`}),h=k(()=>(d.value?n.checkedIcon:n.uncheckedIcon)||null),g=k(()=>n.disable?-1:n.tabindex||0),_=it(()=>{let e={type:`radio`};return n.name!==void 0&&Object.assign(e,{".checked":d.value,"^checked":d.value?`checked`:void 0,name:n.name,value:n.val}),e});function v(e){e!==void 0&&(ve(e),u(e)),!n.disable&&!d.value&&i(`update:modelValue`,n.val,e)}function y(e){(e.keyCode===13||e.keyCode===32)&&v(e)}Object.assign(a,{set:v});let b=hd();return()=>{let e=h.value===null?[b]:[f(`div`,{key:`icon`,class:`q-radio__icon-container absolute-full flex flex-center no-wrap`},[f(we,{class:`q-radio__icon`,name:h.value})])];n.disable||_(e,`unshift`,` q-radio__native q-ma-none q-pa-none`);let t=[f(`div`,{class:m.value,style:st(n.size),"aria-hidden":`true`},e)];l.value!==null&&t.push(l.value);let i=n.label===void 0?P(r.default):he(r.default,[n.label]);return i!==void 0&&t.push(f(`div`,{class:`q-radio__label q-anchor--skip`},i)),f(`div`,{ref:c,class:p.value,tabindex:g.value,role:`radio`,"aria-label":n.label,"aria-checked":d.value?`true`:`false`,"aria-disabled":n.disable?`true`:void 0,onClick:v,onKeydown:gd,onKeyup:y},t)}}}),vd=()=>f(`div`,{key:`svg`,class:`q-checkbox__bg absolute`},[f(`svg`,{class:`q-checkbox__svg fit absolute-full`,viewBox:`0 0 24 24`},[f(`path`,{class:`q-checkbox__truthy`,fill:`none`,d:`M1.73,12.91 8.1,19.28 22.79,4.59`}),f(`path`,{class:`q-checkbox__indet`,d:`M4,14H20V10H4`})])]),yd=Ne({name:`QCheckbox`,props:lt,emits:ct,setup(e){let t=vd();function n(n,r){let i=k(()=>(n.value?e.checkedIcon:r.value?e.indeterminateIcon:e.uncheckedIcon)||null);return()=>i.value===null?[t]:[f(`div`,{key:`icon`,class:`q-checkbox__icon-container absolute-full flex flex-center no-wrap`},[f(we,{class:`q-checkbox__icon`,name:i.value})])]}return ut(`checkbox`,n)}}),bd=Ne({name:`QToggle`,props:{...lt,icon:String,iconColor:String},emits:ct,setup(e){function t(t,n){let r=k(()=>(t.value?e.checkedIcon:n.value?e.indeterminateIcon:e.uncheckedIcon)||e.icon),i=k(()=>t.value?e.iconColor:null);return()=>[f(`div`,{class:`q-toggle__track`}),f(`div`,{class:`q-toggle__thumb absolute flex flex-center no-wrap`},r.value===void 0?void 0:[f(we,{name:r.value,color:i.value})])]}return ut(`toggle`,t)}}),xd={radio:_d,checkbox:yd,toggle:bd},Sd=Object.keys(xd);function Cd(e,t){if(typeof e==`function`)return e;let n=e===void 0?t:e;return e=>e[n]}var wd=Ne({name:`QOptionGroup`,props:{...ze,modelValue:{required:!0},options:{type:Array,validator:e=>e.every(Lt),default:()=>[]},optionValue:[Function,String],optionLabel:[Function,String],optionDisable:[Function,String],name:String,type:{type:String,default:`radio`,validator:e=>Sd.includes(e)},color:String,keepColor:Boolean,dense:Boolean,size:String,leftLabel:Boolean,inline:Boolean,disable:Boolean},emits:[`update:modelValue`],setup(n,{emit:r,slots:i}){let a=Re(),o=Array.isArray(n.modelValue);n.type===`radio`?o&&console.error(`q-option-group: model should not be array`):o||console.error(`q-option-group: model should be array in your case`);let s=Be(n,a),c=k(()=>xd[n.type]),l=t(null),u=k(()=>Cd(n.optionValue,`value`)),d=k(()=>Cd(n.optionLabel,`label`)),p=k(()=>Cd(n.optionDisable,`disable`)),m=k(()=>n.options.map(e=>({val:u.value(e),name:e.name===void 0?n.name:e.name,disable:n.disable||p.value(e),leftLabel:e.leftLabel===void 0?n.leftLabel:e.leftLabel,color:e.color===void 0?n.color:e.color,checkedIcon:e.checkedIcon,uncheckedIcon:e.uncheckedIcon,dark:e.dark===void 0?s():e.dark,size:e.size===void 0?n.size:e.size,dense:n.dense,keepColor:e.keepColor===void 0?n.keepColor:e.keepColor}))),h=k(()=>{let t=e(n.modelValue),r=m.value,i=r.findIndex(n=>!n.disable&&e(n.val)===t);return i===-1?r.findIndex(e=>!e.disable):i}),g=k(()=>`q-option-group q-gutter-x-sm`+(n.inline?` q-option-group--inline`:``)),_=k(()=>{let e={role:n.type===`radio`?`radiogroup`:`group`};return n.disable&&(e[`aria-disabled`]=`true`),e});function v(e){r(`update:modelValue`,e)}function y(t){let i=t.keyCode===37||t.keyCode===38?-1:+(t.keyCode===39||t.keyCode===40);if(i===0)return;let o=l.value.getElementsByClassName(`q-radio`),s=Array.prototype.indexOf.call(o,t.target);if(s===-1)return;ve(t);let c=(t.keyCode===37||t.keyCode===39)&&a.lang.rtl===!0?-i:i,u=m.value,d=u.length,f=s;do f=(f+c+d)%d;while(f!==s&&u[f].disable);f!==s&&(o[f].focus(),e(u[f].val)!==e(n.modelValue)&&r(`update:modelValue`,u[f].val))}return()=>f(`div`,{ref:l,class:g.value,..._.value,onKeydown:n.type===`radio`?y:void 0},n.options.map((e,t)=>{let r=i[`label-`+t]===void 0?i.label===void 0?void 0:()=>i.label(e):()=>i[`label-`+t](e);return f(`div`,[f(c.value,{label:r===void 0?d.value(e):null,modelValue:n.modelValue,"onUpdate:modelValue":v,...m.value[t],tabindex:n.type===`radio`?t===h.value?0:-1:void 0},r)])}))}}),Td=()=>!0;function Ed(e){let t={};return e.forEach(e=>{t[e]=Td}),t}function Dd(e){return e===void 0?`programmatic`:e.type.indexOf(`key`)===0?`escape`:`backdrop`}function Od(){let{emit:e,proxy:n}=T(),r=t(null),i=null;function a(){i=null,r.value.show()}function o(){r.value.hide()}function s(t){e(`ok`,t),o()}function c(){i=`cancel`,o()}function l(t){e(`hide`,i===null?Dd(t):i)}return Object.assign(n,{show:a,hide:o}),{dialogRef:r,onDialogHide:l,onDialogOK:s,onDialogCancel:c}}var kd=[`ok`,`hide`];Od.emits=kd,Od.emitsObject=Ed(kd);var Ad=Ne({name:`DialogPluginComponent`,props:{...ze,title:String,message:String,prompt:Object,options:Object,progress:[Boolean,Object],html:Boolean,ok:{type:[String,Object,Boolean],default:!0},cancel:[String,Object,Boolean],focus:{type:String,default:`ok`,validator:e=>[`ok`,`cancel`,`none`].includes(e)},stackButtons:Boolean,color:String,cardClass:[String,Array,Object],cardStyle:[String,Array,Object]},emits:[`ok`,`hide`],setup(t){let n=Re(),r=Be(t,n),{dialogRef:i,onDialogHide:a,onDialogOK:o,onDialogCancel:s}=Od(),c=d(t.prompt===void 0?t.options===void 0?void 0:t.options.model:t.prompt.model),l=k(()=>`q-dialog-plugin`+(r()?` q-dialog-plugin--dark q-dark`:``)+(t.progress===!1?``:` q-dialog-plugin--progress`)),u=k(()=>t.color||(r()?`amber`:`primary`)),p=k(()=>t.progress===!1?null:Lt(t.progress)?{component:t.progress.spinner||Ie,props:{color:t.progress.color||u.value}}:{component:Ie,props:{color:u.value}}),h=k(()=>t.prompt!==void 0||t.options!==void 0),g=k(()=>{if(!h.value)return{};let{model:e,isValid:n,items:r,...i}=t.prompt===void 0?t.options:t.prompt;return i}),_=k(()=>Lt(t.ok)||t.ok===!0?n.lang.label.ok:t.ok),v=k(()=>Lt(t.cancel)||t.cancel===!0?n.lang.label.cancel:t.cancel),y=k(()=>t.prompt===void 0?t.options!==void 0&&t.options.isValid!==void 0&&!t.options.isValid(c.value):t.prompt.isValid!==void 0&&!t.prompt.isValid(c.value)),b=k(()=>({color:u.value,label:_.value,ripple:!1,disable:y.value,...Lt(t.ok)?t.ok:{flat:!0},"data-autofocus":t.focus===`ok`&&!h.value||void 0,onClick:S})),x=k(()=>({color:u.value,label:v.value,ripple:!1,...Lt(t.cancel)?t.cancel:{flat:!0},"data-autofocus":t.focus===`cancel`&&!h.value||void 0,onClick:s}));m(()=>t.prompt&&t.prompt.model,C),m(()=>t.options&&t.options.model,C);function S(){o(e(c.value))}function C(e){c.value=e}function w(e){!y.value&&t.prompt.type!==`textarea`&&de(e,13)&&S()}function T(e,n){return t.html?f(qt,{class:e,innerHTML:n}):f(qt,{class:e},()=>n)}function E(){return[f($s,{color:u.value,dense:!0,autofocus:!0,dark:r(),...g.value,modelValue:c.value,"onUpdate:modelValue":C,onKeyup:w})]}function D(){return[f(wd,{color:u.value,options:t.options.items,dark:r(),...g.value,modelValue:c.value,"onUpdate:modelValue":C})]}function O(){let e=[];return t.cancel&&e.push(f(Me,x.value)),t.ok&&e.push(f(Me,b.value)),f(ec,{class:t.stackButtons?`items-end`:``,vertical:t.stackButtons,align:`right`},()=>e)}function ee(){let e=[];return t.title&&e.push(T(`q-dialog__title`,t.title)),t.progress!==!1&&e.push(f(qt,{class:`q-dialog__progress`},()=>f(p.value.component,p.value.props))),t.message&&e.push(T(`q-dialog__message`,t.message)),t.prompt===void 0?t.options!==void 0&&e.push(f(md,{dark:r()}),f(qt,{class:`scroll q-dialog-plugin__form`},D),f(md,{dark:r()})):e.push(f(qt,{class:`scroll q-dialog-plugin__form`},E)),(t.ok||t.cancel)&&e.push(O()),e}function A(){return[f(Zt,{class:[l.value,t.cardClass],style:t.cardStyle,dark:r()},ee)]}return()=>f(Ln,{ref:i,onHide:a},A)}});function jd(e,t){for(let n in t)n!==`spinner`&&Object(t[n])===t[n]&&!Array.isArray(t[n])?(e[n]=Object(e[n])===e[n]?{...e[n]}:{},jd(e[n],t[n])):e[n]=t[n]}function Md(e,n,r){return i=>{let a,o,s=n&&i.component!==void 0;if(s){let{component:e,componentProps:t}=i;a=typeof e==`string`?r.component(e):e,o=t||{}}else{let{class:t,style:n,...r}=i;a=e,o=r,t!==void 0&&(r.cardClass=t),n!==void 0&&(r.cardStyle=n)}let c,l=!1,u=t(null),d=Oe(!1,`dialog`),p=e=>{if(u.value?.[e]!==void 0){u.value[e]();return}let t=c.$.subTree?.component;for(;t;){if(typeof t.proxy?.[e]==`function`){t.proxy[e]();return}t=t.subTree?.component}console.error(`[Quasar] Incorrectly defined Dialog component`)},m=[],h=[],g={onOk(e){return m.push(e),g},onCancel(e){return h.push(e),g},onDismiss(e){return m.push(e),h.push(e),g},hide(){return p(`hide`),g},update(e){if(c!==null){if(s)Object.assign(o,e);else{let{class:t,style:n,...r}=e;t!==void 0&&(r.cardClass=t),n!==void 0&&(r.cardStyle=n),jd(o,r)}c.$forceUpdate()}return g}},_=e=>{l=!0,m.forEach(t=>{t(e)})},y=e=>{b.unmount(d),Te(d),b=null,c=null,l||h.forEach(t=>{t(e)})},b=Ut({name:`QGlobalDialog`,setup:()=>()=>f(a,{...o,ref:u,onOk:_,onHide:y,onVnodeMounted(...e){typeof o.onVnodeMounted==`function`&&o.onVnodeMounted(...e),v(()=>p(`show`))}})},r);return c=b.mount(d),g}}var Nd={install({$q:e,parentApp:t}){e.dialog=this.create=Md(Ad,!0,t)}},Pd=new Map;function Fd(e,t){Pd.set(e,t)}function Id(e){Pd.delete(e)}function Ld(){let e=[];for(let[t,n]of Pd)try{n()&&e.push(t)}catch{}return e}function Rd(){return Ld().length>0}var zd=e=>e.startsWith(`/`);function Bd(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function Vd(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&Bd(e.default)}var $=Object.assign;function Hd(e,t){let n={};for(let r in t){let i=t[r];n[r]=Wd(i)?i.map(e):e(i)}return n}var Ud=()=>{},Wd=Array.isArray;function Gd(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var Kd=Symbol(``);function qd(e,t){return $(Error(),{type:e,[Kd]:!0},t)}function Jd(e,t){return e instanceof Error&&Kd in e&&(t==null||!!(e.type&t))}var Yd=Symbol(``),Xd=Symbol(``),Zd=Symbol(``),Qd=Symbol(``),$d=Symbol(``);function ef(){return x(Zd)}function tf(e){return x(Qd)}var nf=typeof document<`u`,rf=/#/g,af=/&/g,of=/\//g,sf=/=/g,cf=/\?/g,lf=/\+/g,uf=/%5B/g,df=/%5D/g,ff=/%5E/g,pf=/%60/g,mf=/%7B/g,hf=/%7C/g,gf=/%7D/g,_f=/%20/g;function vf(e){return e==null?``:encodeURI(``+e).replace(hf,`|`).replace(uf,`[`).replace(df,`]`)}function yf(e){return vf(e).replace(mf,`{`).replace(gf,`}`).replace(ff,`^`)}function bf(e){return vf(e).replace(lf,`%2B`).replace(_f,`+`).replace(rf,`%23`).replace(af,`%26`).replace(pf,"`").replace(mf,`{`).replace(gf,`}`).replace(ff,`^`)}function xf(e){return bf(e).replace(sf,`%3D`)}function Sf(e){return vf(e).replace(rf,`%23`).replace(cf,`%3F`)}function Cf(e){return Sf(e).replace(of,`%2F`)}function wf(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var Tf=/\/$/,Ef=e=>e.replace(Tf,``);function Df(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=Ff(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:wf(o)}}function Of(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function kf(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function Af(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&jf(t.matched[r],n.matched[i])&&Mf(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function jf(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Mf(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!Nf(e[n],t[n]))return!1;return!0}function Nf(e,t){return Wd(e)?Pf(e,t):Wd(t)?Pf(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function Pf(e,t){return Wd(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function Ff(e,t){if(zd(e))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o<r.length;o++)if(s=r[o],s!==`.`){if(s===`..`)a>1&&a--;else break}return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var If={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function Lf(e){if(!e){if(nf){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),Ef(e)}var Rf=/^[^#]+#/;function zf(e,t){return e.replace(Rf,`#`)+t}function Bf(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var Vf=()=>history.scrollRestoration===`manual`?{left:window.scrollX,top:window.scrollY}:null;function Hf(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=Bf(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function Uf(e,t){return(history.state?history.state.position-t:-1)+e}var Wf=new Map;function Gf(e){Wf.set(e,Vf())}function Kf(e){let t=Wf.get(e);return Wf.delete(e),t}function qf(e){return typeof e==`string`||e&&typeof e==`object`}function Jf(e){return typeof e==`string`||typeof e==`symbol`}function Yf(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;e<n.length;++e){let r=n[e].replace(lf,` `),i=r.indexOf(`=`),a=wf(i<0?r:r.slice(0,i)),o=i<0?null:wf(r.slice(i+1));if(a in t){let e=t[a];Wd(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function Xf(e){let t=``;for(let n in e){let r=e[n];if(n=xf(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(Wd(r)?r.map(e=>e&&bf(e)):[r&&bf(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function Zf(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=Wd(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function Qf(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function $f(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(qd(4,{from:n,to:t})):e instanceof Error?c(e):qf(e)?c(qd(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function ep(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(t===`beforeRouteEnter`||o.instances[e]){if(Bd(s)){let c=(s.__vccOpts||s)[t];c&&a.push($f(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=Vd(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&$f(c,n,r,o,e,i)()}))}}}return a}function tp(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;o<a;o++){let a=t.matched[o];a&&(e.matched.find(e=>jf(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>jf(e,s))||i.push(s))}return[n,r,i]}var np=()=>location.protocol+`//`+location.host;function rp(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),kf(n,``)}return kf(n,e)+r+i}function ip(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=rp(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){let{history:e}=window;e.state&&e.replaceState($({},e.state,{scroll:Vf()}),``)}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),{pauseListeners:c,listen:l,destroy:d}}function ap(e,t,n,r=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:null}}function op(e){let{history:t,location:n}=window,r={value:rp(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:np()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,$({},t.state,ap(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=$({},i.value,t.state,{forward:e,scroll:Vf()});a(o.current,o,!0),a(e,$({},ap(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function sp(e){e=Lf(e);let t=op(e),n=ip(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=$({location:``,base:e,go:r,createHref:zf.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}function cp(e){return e=location.host?e||location.pathname+location.search:``,e.includes(`#`)||(e+=`#`),sp(e)}var lp={type:0,value:``},up=/[a-zA-Z0-9_]/;function dp(e){if(!e)return[[]];if(e===`/`)return[[lp]];if(!zd(e))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;s<e.length;)switch(c=e[s++],n){case 0:c===`\\`?(r=n,n=4):c===`/`?(l&&d(),o()):c===`:`?(d(),n=1):f();break;case 4:f(),n=r;break;case 1:c===`(`?n=2:up.test(c)?f():(d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--);break;case 2:c===`)`?u[u.length-1]==`\\`?u=u.slice(0,-1)+c:n=3:u+=c;break;case 3:d(),n=0,c!==`*`&&c!==`?`&&c!==`+`&&s--,u=``;break;default:t(`Unknown state`)}return n===2&&t(`Unfinished custom RegExp for param "${l}"`),d(),o(),i}var fp=`[^/]+?`,pp={sensitive:!1,strict:!1,start:!0,end:!0},mp=/[.+*?^${}()[\]/\\]/g;function hp(e,t){let n=$({},pp,t),r=[],i=n.start?`^`:``,a=[];for(let t of e){let e=t.length?[]:[90];n.strict&&!t.length&&(i+=`/`);for(let r=0;r<t.length;r++){let o=t[r],s=40+(n.sensitive?.25:0);if(o.type===0)r||(i+=`/`),i+=o.value.replace(mp,`\\$&`),s+=40;else if(o.type===1){let{value:e,repeatable:n,optional:c,regexp:l}=o;a.push({name:e,repeatable:n,optional:c});let u=l||fp;if(u!==fp){s+=10;try{RegExp(`(${u})`)}catch(t){throw Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let d=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(d=c&&t.length<2?`(?:/${d})`:`/`+d),c&&(d+=`?`),i+=d,s+=20,c&&(s+=-8),n&&(s+=-20),u===`.*`&&(s+=-50)}e.push(s)}r.push(e)}if(n.strict&&n.end){let e=r.length-1;r[e][r[e].length-1]+=.7000000000000001}n.strict||(i+=`/?`),n.end?i+=`$`:n.strict&&!i.endsWith(`/`)&&(i+=`(?:/|$)`);let o=new RegExp(i,n.sensitive?``:`i`);function s(e){let t=e.match(o),n={};if(!t)return null;for(let e=1;e<t.length;e++){let r=t[e]||``,i=a[e-1];n[i.name]=r&&i.repeatable?r.split(`/`):r}return n}function c(t){let n=``,r=!1;for(let i of e){(!r||!n.endsWith(`/`))&&(n+=`/`),r=!1;for(let e of i)if(e.type===0)n+=e.value;else if(e.type===1){let{value:a,repeatable:o,optional:s}=e,c=a in t?t[a]:``;if(Wd(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=Wd(c)?c.join(`/`):c;if(!l){if(s)i.length<2&&(n.endsWith(`/`)?n=n.slice(0,-1):r=!0);else throw Error(`Missing required param "${a}"`)}n+=l}}return n||`/`}return{re:o,score:r,keys:a,parse:s,stringify:c}}function gp(e,t){let n=0;for(;n<e.length&&n<t.length;){let r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function _p(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=gp(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(vp(r))return 1;if(vp(i))return-1}return i.length-r.length}function vp(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var yp={strict:!1,end:!0,sensitive:!1};function bp(e,t,n){let r=$(hp(dp(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function xp(e,t){let n=[],r=new Map;t=Gd(yp,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=Cp(e);s.aliasOf=r&&r.record;let l=Gd(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(Cp($({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&!zd(u)){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=bp(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!Tp(d)&&o(e.name)),kp(d)&&c(d),s.children){let e=s.children;for(let t=0;t<e.length;t++)a(e[t],d,r&&r.children[t])}r||=d}return f?()=>{o(f)}:Ud}function o(e){if(Jf(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=Dp(e,n);n.splice(t,0,e),e.record.name&&!Tp(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw qd(1,{location:e});s=i.record.name,a=$(Sp(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Sp(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw qd(1,{location:e,currentLocation:t});s=i.record.name,a=$({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:Ep(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function Sp(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function Cp(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:wp(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function wp(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function Tp(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Ep(e){return e.reduce((e,t)=>$(e,t.meta),{})}function Dp(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;_p(e,t[i])<0?r=i:n=i+1}let i=Op(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Op(e){let t=e;for(;t=t.parent;)if(kp(t)&&_p(e,t)===0)return t}function kp({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ap(e){let t=x(Zd),n=x(Qd),r=k(()=>{let n=o(e.to);return t.resolve(n)}),i=k(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(jf.bind(null,i));if(o>-1)return o;let s=Fp(e[t-2]);return t>1&&Fp(i)===s&&a[a.length-1].path!==s?a.findIndex(jf.bind(null,e[t-2])):o}),a=k(()=>i.value>-1&&Pp(n.params,r.value.params)),s=k(()=>i.value>-1&&i.value===n.matched.length-1&&Mf(n.params,r.value.params));function c(n={}){if(Np(n)){let n=t[o(e.replace)?`replace`:`push`](o(e.to)).catch(Ud);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:k(()=>r.value.href),isActive:a,isExactActive:s,navigate:c}}function jp(e){return e.length===1?e[0]:e}var Mp=N({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:Ap,setup(e,{slots:t}){let n=a(Ap(e)),{options:r}=x(Zd),i=k(()=>({[Ip(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[Ip(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&jp(t.default(n));return e.custom?r:f(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function Np(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Pp(e,t){for(let n in t){let r=t[n],i=e[n];if(Wd(r)){if(!Wd(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}else if(r!==i)return!1}return!0}function Fp(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var Ip=(e,t,n)=>e??t??n,Lp=N({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let r=x($d),i=k(()=>e.route||r.value),a=x(Xd,0),s=k(()=>{let e=o(a),{matched:t}=i.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),c=k(()=>i.value.matched[s.value]);b(Xd,k(()=>s.value+1)),b(Yd,c),b($d,i);let l=d();return m(()=>[l.value,c.value,e.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!jf(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=i.value,a=e.name,o=c.value,s=o&&o.components[a];if(!s)return Rp(n.default,{Component:s,route:r});let u=o.props[a],d=u?u===!0?r.params:typeof u==`function`?u(r):u:null,p=f(s,$({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(o.instances[a]=null)},ref:l}));return Rp(n.default,{Component:p,route:r})||p}}});function Rp(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var zp=Lp;function Bp(e){let n=xp(e.routes,e),i=e.parseQuery||Yf,a=e.stringifyQuery||Xf,s=e.history,c=Qf(),l=Qf(),u=Qf(),d=t(If),f=t(0),p=If;nf&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let m=Hd.bind(null,e=>``+e),h=Hd.bind(null,Cf),g=Hd.bind(null,wf);function _(e,t){let r,i;Jf(e)?(r=n.getRecordMatcher(e),i=t):i=e;let a=n.addRoute(i,r);return f.value++,()=>{a(),f.value++}}function y(e){let t=n.getRecordMatcher(e);t&&(n.removeRoute(t),f.value++)}function b(){n.clearRoutes(),f.value++}function x(){return n.getRoutes().map(e=>e.record)}function S(e){return!!n.getRecordMatcher(e)}function C(e,t){if(f.value,typeof e==`string`){t||=e.startsWith(`/`)?If:d.value;let r=Df(i,e,t.path),a=n.resolve({path:r.path},t),o=s.createHref(r.fullPath);return $(r,a,{params:g(a.params),redirectedFrom:void 0,href:o})}t=$({},t||(e.path!=null&&e.path.startsWith(`/`)&&!(`name`in e&&e.name)?If:d.value));let r;if(e.path!=null)r=$({},e,{path:Df(i,e.path,t.path).path});else{let n=$({},e.params);for(let e in n)n[e]??delete n[e];r=$({},e,{params:h(n)}),t.params=h(t.params)}let o=n.resolve(r,t),c=e.hash||``;o.params=m(g(o.params));let l=Of(a,$({},e,{hash:yf(c),path:o.path})),u=s.createHref(l);return $({fullPath:l,hash:c,query:a===Xf?Zf(e.query):e.query||{}},o,{redirectedFrom:void 0,href:u})}function w(e){return typeof e==`string`?Df(i,e,d.value.path):$({},e)}function T(e,t){if(p!==e)return qd(8,{from:t,to:e})}function E(e){return ee(e)}function D(e){return E($(w(e),{replace:!0}))}function O(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=w(i):{path:i},i.params={}),$({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function ee(e,t){let n=p=C(e),r=d.value,i=e.state,o=e.force,s=e.replace===!0,c=O(n,r);if(c)return ee($(w(c),{state:typeof c==`object`?$({},i,c.state):i,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!o&&Af(a,r,n)&&(u=qd(16,{to:l,from:r}),le(r,r,!0,!1)),(u?Promise.resolve(u):j(l,r)).catch(e=>Jd(e)?Jd(e,2)?e:ce(e):oe(e,l,r)).then(e=>{if(e){if(Jd(e,2))return ee($({replace:s},w(e.to),{state:typeof e.to==`object`?$({},i,e.to.state):i,force:o}),t||l)}else e=M(l,r,!0,s,i);return te(l,r,e),e})}function k(e,t){let n=T(e,t);return n?Promise.reject(n):Promise.resolve()}function A(e){let t=de.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function j(e,t){let n,[r,i,a]=tp(e,t);n=ep(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push($f(r,e,t))});let o=k.bind(null,e,t);return n.push(o),pe(n).then(()=>{n=[];for(let r of c.list())n.push($f(r,e,t));return n.push(o),pe(n)}).then(()=>{n=ep(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push($f(r,e,t))});return n.push(o),pe(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter){if(Wd(r.beforeEnter))for(let i of r.beforeEnter)n.push($f(i,e,t));else n.push($f(r.beforeEnter,e,t))}return n.push(o),pe(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=ep(a,`beforeRouteEnter`,e,t,A),n.push(o),pe(n))).then(()=>{n=[];for(let r of l.list())n.push($f(r,e,t));return n.push(o),pe(n)}).catch(e=>Jd(e,8)?e:Promise.reject(e))}function te(e,t,n){u.list().forEach(r=>A(()=>r(e,t,n)))}function M(e,t,n,r,i){let a=T(e,t);if(a)return a;let o=t===If,c=nf?history.state:{};n&&(r||o?s.replace(e.fullPath,$({scroll:o&&c&&c.scroll},i)):s.push(e.fullPath,i)),d.value=e,le(e,t,n,o),ce()}let N;function ne(){N||=s.listen((e,t,n)=>{if(!fe.listening)return;let r=C(e),i=O(r,fe.currentRoute.value);if(i){ee($(i,{replace:!0,force:!0}),r).catch(Ud);return}p=r;let a=d.value;nf&&n.delta&&Gf(Uf(a.fullPath,n.delta)),j(r,a).catch(e=>Jd(e,12)?e:Jd(e,2)?(ee($(w(e.to),{force:!0}),r).then(e=>{Jd(e,20)&&!n.delta&&n.type===`pop`&&s.go(-1,!1)}).catch(Ud),Promise.reject()):(n.delta&&s.go(-n.delta,!1),oe(e,r,a))).then(e=>{e||=M(r,a,!1),e&&(n.delta&&!Jd(e,8)?s.go(-n.delta,!1):n.type===`pop`&&Jd(e,20)&&s.go(-1,!1)),te(r,a,e)}).catch(Ud)})}let re=Qf(),ie=Qf(),ae;function oe(e,t,n){ce(e);let r=ie.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function se(){return ae&&d.value!==If?Promise.resolve():new Promise((e,t)=>{re.add([e,t])})}function ce(e){return ae||(ae=!e,ne(),re.list().forEach(([t,n])=>e?n(e):t()),re.reset()),e}function le(t,n,r,i){let{scrollBehavior:a}=e;if(!nf||!a)return Promise.resolve();let o=!r&&Kf(Uf(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return v().then(()=>a(t,n,o)).then(e=>t===d.value&&e&&Hf(e)).catch(e=>t===d.value&&oe(e,t,n))}let P=e=>s.go(e),ue,de=new Set,fe={currentRoute:d,listening:!0,addRoute:_,removeRoute:y,clearRoutes:b,hasRoute:S,getRoutes:x,resolve:C,options:e,push:E,replace:D,go:P,back:()=>P(-1),forward:()=>P(1),beforeEach:c.add,beforeResolve:l.add,afterEach:u.add,onError:ie.add,isReady:se,install(e){e.component(`RouterLink`,Mp),e.component(`RouterView`,zp),e.config.globalProperties.$router=fe,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>o(d)}),nf&&!ue&&d.value===If&&(ue=!0,E(s.location).catch(e=>{}));let t={};for(let e in If)Object.defineProperty(t,e,{get:()=>d.value[e],enumerable:!0});e.provide(Zd,fe),e.provide(Qd,r(t)),e.provide($d,d);let n=e.unmount;de.add(e),e.unmount=function(){de.delete(e),de.size<1&&(p=If,N&&N(),N=null,d.value=If,ue=!1,ae=!1),n()}}};function pe(e){return e.reduce((e,t)=>e.then(()=>A(t)),Promise.resolve())}return fe}var Vp=[{path:`/`,component:()=>Y(()=>import(`./MainLayout-BM14JTBB.js`).then(e=>e.t),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38])),children:[{path:``,redirect:{name:`workspace`}},{path:`dashboard`,name:`dashboard`,component:()=>Y(()=>import(`./DashboardPage-CRTkx9P-.js`),__vite__mapDeps([39,1,2,3,4,40,10,5,11,21,15,22,23,26,32,34,41]))},{path:`workspace/:id?`,name:`workspace`,component:()=>Y(()=>import(`./WorkspacePage-DE6-wlf7.js`).then(e=>e.t),__vite__mapDeps([42,1,2,3,43,6,4,7,5,8,9,10,11,12,13,15,16,17,18,19,20,44,26,27,22,32,45,46,47,36,29,25,30,31,24,28,33,34,35,37,48]))},{path:`split`,name:`split`,component:()=>Y(()=>import(`./SplitWorkspacePage-AXMYd-9b.js`),__vite__mapDeps([49,1,2,3,4,5,7,8,9,10,11,12,25,32,36,50]))},{path:`create`,name:`create`,component:()=>Y(()=>import(`./CreatePage-DHe0x63K.js`),__vite__mapDeps([51,1,2,3,43,6,4,7,5,8,9,10,11,12,13,15,17,52,31,20,26,28,32,33,19,34,45,46,35,53]))},{path:`settings`,name:`settings`,component:()=>Y(()=>import(`./SettingsPage-msHMBS7q.js`),__vite__mapDeps([29,1,2,3,4,8,6,7,5,9,10,11,12,13,25,15,18,19,30,31,24,26,28,32,33,34,35,36,37]))},{path:`search`,name:`search`,component:()=>Y(()=>import(`./SearchPage-l4m1qxKs.js`),__vite__mapDeps([54,1,2,3,10,4,5,11,17,22,32,33,15,19,34,47,55]))},{path:`health`,name:`health`,component:()=>Y(()=>import(`./HealthPage-9VEvoR_4.js`),__vite__mapDeps([56,1,2,3,6,4,9,10,5,11,17,32,33,15,19,34,57]))},{path:`changelog`,name:`changelog`,component:()=>Y(()=>import(`./ChangelogPage-B6xjI-I4.js`),__vite__mapDeps([58,1,2,3,10,4,5,11,16,12,32,33,15,19,34,59]))}]},{path:`/:catchAll(.*)*`,redirect:`/`}],Hp=ud(()=>{let e=Bp({scrollBehavior:()=>({left:0,top:0}),routes:Vp,history:cp()});e.beforeEach((e,t)=>{if(eu(e,t)||e.fullPath===t.fullPath||!Rd())return!0;let n=Gc.global.t;return new Promise(e=>{Nd.create({title:n(`unsaved.title`),message:n(`unsaved.message`),dark:!0,cancel:{flat:!0,label:n(`unsaved.stay`),color:`grey-5`},ok:{flat:!0,label:n(`unsaved.leave`),color:`negative`}}).onOk(()=>e(!0)).onCancel(()=>e(!1))})});let t=()=>{let e=Z();return nu(Rd(),pc(e)?{}:e.queuedMessages)};return window.addEventListener(`beforeunload`,e=>{t()&&(e.preventDefault(),e.returnValue=``)}),Yl&&(window.koboPane={hasUnsavedWork:t,ready:()=>e.currentRoute.value.name!=null,navigate:t=>e.push({name:`workspace`,params:{id:t}}),workspaceId:()=>typeof e.currentRoute.value.params.id==`string`?e.currentRoute.value.params.id:void 0}),e});async function Up(e,t){let n=e(sd);n.use(Kt,t);let r=typeof dd==`function`?await dd({}):dd;n.use(r);let a=i(typeof Hp==`function`?await Hp({store:r}):Hp);return r.use(({store:e})=>{e.router=a}),{app:n,store:r,router:a}}var Wp={config:{dark:!0,brand:{primary:`#6c63ff`,secondary:`#26a69a`,accent:`#9c27b0`,dark:`#1a1a2e`,"dark-page":`#1a1a2e`,positive:`#21ba45`,negative:`#c10015`,info:`#31ccec`,warning:`#f2c037`}},plugins:{Notify:Fc,Dialog:Nd}},Gp=function(){return!!(window.location.hostname===`localhost`||window.location.hostname===`[::1]`||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/))},Kp;typeof window<`u`&&(Kp=typeof Promise<`u`?new Promise(function(e){return window.addEventListener(`load`,e)}):{then:function(e){return window.addEventListener(`load`,e)}});function qp(e,t){t===void 0&&(t={});var n=t.registrationOptions;n===void 0&&(n={}),delete t.registrationOptions;var r=function(e){for(var n=[],r=arguments.length-1;r-->0;)n[r]=arguments[r+1];t&&t[e]&&t[e].apply(t,n)};`serviceWorker`in navigator&&Kp.then(function(){Gp()?(Xp(e,r,n),navigator.serviceWorker.ready.then(function(e){r(`ready`,e)}).catch(function(e){return Jp(r,e)})):(Yp(e,r,n),navigator.serviceWorker.ready.then(function(e){r(`ready`,e)}).catch(function(e){return Jp(r,e)}))})}function Jp(e,t){navigator.onLine||e(`offline`),e(`error`,t)}function Yp(e,t,n){navigator.serviceWorker.register(e,n).then(function(e){if(t(`registered`,e),e.waiting){t(`updated`,e);return}e.onupdatefound=function(){t(`updatefound`,e);var n=e.installing;n.onstatechange=function(){n.state===`installed`&&(navigator.serviceWorker.controller?t(`updated`,e):t(`cached`,e))}}}).catch(function(e){return Jp(t,e)})}function Xp(e,t,n){fetch(e).then(function(r){r.status===404?(t(`error`,Error(`Service worker not found at `+e)),Zp()):r.headers.get(`content-type`).indexOf(`javascript`)===-1?(t(`error`,Error(`Expected `+e+` to have javascript content-type, but received `+r.headers.get(`content-type`))),Zp()):Yp(e,t,n)}).catch(function(e){return Jp(t,e)})}function Zp(){`serviceWorker`in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()}).catch(function(e){return Jp(emit,e)})}qp(`/sw.js`);var Qp=`/`;async function $p({app:e,router:t,store:n},r){let i=!1,a=e=>{try{return t.resolve(e).href}catch{}return Object(e)===e?null:e},o=e=>{if(i=!0,typeof e==`string`&&/^https?:\/\//.test(e)){window.location.href=e;return}let t=a(e);t!==null&&(window.location.href=t,window.location.reload())},s=window.location.hash.slice(1)||`/`;for(let a=0;i===!1&&a<r.length;a++)try{await r[a]({app:e,router:t,store:n,ssrContext:null,redirect:o,urlPath:s,publicPath:Qp})}catch(e){i||console.error(`[Quasar] boot error:`,e);return}i||(e.use(t),e.mount(`#q-app`))}Up(Fe,Wp).then(e=>{let[t,n]=Promise.allSettled===void 0?[`all`,e=>e.map(e=>e.default)]:[`allSettled`,e=>e.map(e=>{if(e.status===`rejected`){console.error(`[Quasar] boot error:`,e.reason);return}return e.value.default})];return Promise[t]([Y(()=>import(`./i18n-eiyc92m_.js`),[]),Y(()=>import(`./network-auth-BLGlHVxR.js`),[]),Y(()=>import(`./notify-theme-tvaTlaFw.js`),[])]).then(t=>{$p(e,n(t).filter(e=>typeof e==`function`))})});export{tl as $,ql as A,kn as At,dl as B,Qt as Bt,fu as C,Cs as Ct,Ql as D,Ln as Dt,Zl as E,Vn as Et,Ml as F,fn as Ft,ml as G,Bt as Gt,fl as H,Xt as Ht,jl as I,nn as It,vl as J,bl as K,Lt as Kt,Fl as L,$t as Lt,zl as M,Tn as Mt,Rl as N,rn as Nt,tu as O,Mn as Ot,Il as P,tn as Pt,el as Q,Nl as R,un as Rt,mu as S,xs as St,Yl as T,Lo as Tt,ul as U,qt as Ut,gl as V,Zt as Vt,hl as W,It as Wt,X,al as Y,il as Z,yu as _,$s as _t,wd as a,Wc as at,hu as b,Fs as bt,_d as c,Fc as ct,od as d,sc as dt,nl as et,ku as f,ac as ft,Du as g,ec as gt,Tu as h,ic as ht,Id as i,Gc as it,Ul as j,wn as jt,Jl as k,Nn as kt,md as l,vc as lt,Cu as m,rc as mt,ef as n,$c as nt,bd as o,Yc as ot,Z as p,nc as pt,yl as q,Fd as r,Xc as rt,yd as s,Y as st,tf as t,Qc as tt,ld as u,_c as ut,bu as v,Qs as vt,Xl as w,is as wt,gu as x,Ss as xt,vu as y,bs as yt,Sl as z,ln as zt};
|