@loicngr/kobo 1.11.25 → 1.11.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/package.json +1 -1
- package/src/client/dist/pwa/assets/{ActivityFeed-DePXS5oh.js → ActivityFeed-CGMEOMn5.js} +1 -1
- package/src/client/dist/pwa/assets/{ChangelogPage-DEF1geul.js → ChangelogPage-rvISZfJb.js} +1 -1
- package/src/client/dist/pwa/assets/{CreatePage-CEjwXKQF.js → CreatePage-BptAgVvu.js} +1 -1
- package/src/client/dist/pwa/assets/{DiffViewer-FrpLqWlv.js → DiffViewer-ZrvQ0YWN.js} +3 -3
- package/src/client/dist/pwa/assets/{DocumentsPanel-4j-UIHic.js → DocumentsPanel-DuWbZiID.js} +1 -1
- package/src/client/dist/pwa/assets/{GitPanel-oLfllkFW.js → GitPanel-BiIXQPfL.js} +3 -3
- package/src/client/dist/pwa/assets/{HealthPage-DS46JzBg.js → HealthPage-DTrmhh3X.js} +1 -1
- package/src/client/dist/pwa/assets/{MainLayout-WBL2b8tD.js → MainLayout-PSmlvfJd.js} +2 -2
- package/src/client/dist/pwa/assets/{QBtnDropdown-CrhiOT1R.js → QBtnDropdown-Ckvd3IVR.js} +1 -1
- package/src/client/dist/pwa/assets/{SchedulePanel-Cfeyie6U.js → SchedulePanel-DJWMsAoh.js} +1 -1
- package/src/client/dist/pwa/assets/{SearchPage-DSj7yg7w.js → SearchPage-BI8w9utc.js} +1 -1
- package/src/client/dist/pwa/assets/{SettingsPage-DzF8gAj4.js → SettingsPage-Dr8oSevA.js} +1 -1
- package/src/client/dist/pwa/assets/{TerminalPanel-e4Mmlz6H.js → TerminalPanel-DVC58DJb.js} +1 -1
- package/src/client/dist/pwa/assets/{TouchPan-D8ih3XMN.js → TouchPan-pqksSni0.js} +1 -1
- package/src/client/dist/pwa/assets/{WorkspacePage-D-YQa2pY.js → WorkspacePage-DRP9Ypmz.js} +3 -3
- package/src/client/dist/pwa/assets/{build-path-tree-BW6daoqZ.js → build-path-tree-CQ4zZqo0.js} +1 -1
- package/src/client/dist/pwa/assets/{cssMode-CpDMzly7.js → cssMode-MGWKgqj7.js} +1 -1
- package/src/client/dist/pwa/assets/{editor.api-DSpAvlaE.js → editor.api-Dq41Mm99.js} +1 -1
- package/src/client/dist/pwa/assets/{efforts-D0XglPsK.js → efforts-BPZzMyrc.js} +1 -1
- package/src/client/dist/pwa/assets/{engineFeatures-Df8DgaJk.js → engineFeatures-Dd_dxoOS.js} +1 -1
- package/src/client/dist/pwa/assets/{expand-template-CqiZhw0u.js → expand-template-BfZqON3q.js} +1 -1
- package/src/client/dist/pwa/assets/{freemarker2-BzDrgBen.js → freemarker2-BqVyQSGe.js} +1 -1
- package/src/client/dist/pwa/assets/{handlebars-P-1hO0gb.js → handlebars-9K762gzW.js} +1 -1
- package/src/client/dist/pwa/assets/{html-BhvJWTDE.js → html-CRmp4AC_.js} +1 -1
- package/src/client/dist/pwa/assets/{htmlMode-CNuL7DKZ.js → htmlMode-CFxFF9iH.js} +1 -1
- package/src/client/dist/pwa/assets/i18n-BsWCIFmf.js +1 -0
- package/src/client/dist/pwa/assets/{index-DMyroqeJ.js → index-xTf0VfFG.js} +2 -2
- package/src/client/dist/pwa/assets/{javascript-DOLOmOsk.js → javascript-DB9a_ZGm.js} +1 -1
- package/src/client/dist/pwa/assets/{jsonMode-CNjA0mBf.js → jsonMode-JhLTE1-C.js} +1 -1
- package/src/client/dist/pwa/assets/{liquid-b-gv156K.js → liquid-C67ZTBj7.js} +1 -1
- package/src/client/dist/pwa/assets/{lspLanguageFeatures-Cu5au25t.js → lspLanguageFeatures-BIDd3ml0.js} +1 -1
- package/src/client/dist/pwa/assets/{mdx-CthI5Pfx.js → mdx-C_K9rc9_.js} +1 -1
- package/src/client/dist/pwa/assets/{network-auth-jClRVM5o.js → network-auth-BPxfeLcl.js} +1 -1
- package/src/client/dist/pwa/assets/{notify-theme-D7WNwTAk.js → notify-theme-thUiJn9n.js} +1 -1
- package/src/client/dist/pwa/assets/{pending-diff-open-BjmrYqfo.js → pending-diff-open-BdA8vrDx.js} +1 -1
- package/src/client/dist/pwa/assets/{permissionModes-BIjHkGNz.js → permissionModes-D09rnNgv.js} +1 -1
- package/src/client/dist/pwa/assets/{project-color-DOOxOoXY.js → project-color-hgNWqp0x.js} +1 -1
- package/src/client/dist/pwa/assets/{python-BBwkm7ly.js → python-D1CBO9Uf.js} +1 -1
- package/src/client/dist/pwa/assets/{razor-LwTiJwRy.js → razor-BCiKSj6_.js} +1 -1
- package/src/client/dist/pwa/assets/{render-chat-markdown-Bl9MpfC9.js → render-chat-markdown-Cw1_NLqs.js} +1 -1
- package/src/client/dist/pwa/assets/{tsMode-BZWTBrEG.js → tsMode-Db77HzVu.js} +1 -1
- package/src/client/dist/pwa/assets/{typescript-CBEi6s0G.js → typescript-D-8UENST.js} +1 -1
- package/src/client/dist/pwa/assets/{use-onboarding-DJxL4chd.js → use-onboarding-BafrD9nc.js} +1 -1
- package/src/client/dist/pwa/assets/{vs-BBBJO4M1.js → vs-Bb18eQC8.js} +3 -3
- package/src/client/dist/pwa/assets/{workers-DxK2n_dl.js → workers-CImko7IX.js} +1 -1
- package/src/client/dist/pwa/assets/{xml-DafnVQfx.js → xml-BBPvJ9QP.js} +1 -1
- package/src/client/dist/pwa/assets/{yaml-CbIbKyyP.js → yaml-D4q1p7HX.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/i18n-B0-TME1H.js +0 -1
|
@@ -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-PSmlvfJd.js","assets/vue-i18n-C3W5i7h6.js","assets/reactivity.esm-bundler-DtSZKRQB.js","assets/runtime-dom.esm-bundler-DgevF6KV.js","assets/QBtn-B7WFdfmy.js","assets/use-id-DlouqdB8.js","assets/QItemSection-5GBV9MR2.js","assets/permissionModes-D09rnNgv.js","assets/debounce-CDIE7CV6.js","assets/private.use-form-D8Yuc3aU.js","assets/layout-nWIyHeJf.js","assets/QChip-BzB_GF4Z.js","assets/documents-B6eOZeFK.js","assets/render-chat-markdown-Cw1_NLqs.js","assets/QBadge-BgS0-MXB.js","assets/QSpace-D3PNLwa4.js","assets/ClosePopup-BK6mNWsy.js","assets/efforts-BPZzMyrc.js","assets/use-onboarding-BafrD9nc.js","assets/TouchPan-pqksSni0.js","assets/use-onboarding-CTZuBZOi.css","assets/engineFeatures-Dd_dxoOS.js","assets/formatters-D0dU6VcA.js","assets/project-color-hgNWqp0x.js","assets/MainLayout-Vq1iUPjx.css","assets/WorkspacePage-DRP9Ypmz.js","assets/QSpinnerDots-DWOFEezR.js","assets/clipboard-t9qe6lK7.js","assets/QPage-RpDxx5ah.js","assets/expand-template-BfZqON3q.js","assets/expand-template-B4LAsXAF.css","assets/QBanner-BoAbhM1O.js","assets/WorkspacePage-3rwxkeew.css","assets/CreatePage-BptAgVvu.js","assets/QBtnToggle-eMu_yinY.js","assets/QBtnGroup-BMQlX2YS.js","assets/DrawerToggleButton-CBdOJzVZ.js","assets/CreatePage-BCuDTB_0.css","assets/SettingsPage-Dr8oSevA.js","assets/QBtnDropdown-Ckvd3IVR.js","assets/SettingsPage-CDZhPV6A.css","assets/SearchPage-BI8w9utc.js","assets/SearchPage-DdWM01rq.css","assets/HealthPage-DTrmhh3X.js","assets/HealthPage-BbqLoFQj.css","assets/ChangelogPage-rvISZfJb.js","assets/ChangelogPage-D_WOVByV.css"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{n as e,t}from"./vue-i18n-C3W5i7h6.js";import{A as n,B as r,C as i,O as a,T as o,g as s,wt as c,x as l}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as u,A as d,At as f,B as p,Bt as m,C as h,Et as g,H as _,It as v,Kt as y,Mt as b,Ot as x,Rt as S,Tt as C,U as w,V as T,W as E,Z as D,_n as O,fn as k,i as A,kt as ee,n as j,st as M,t as te,ut as N,vt as P}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{$ as F,A as ne,B as re,D as ie,G as I,N as ae,O as L,R as oe,S as R,W as z,X as se,Y as ce,Z as B,b as le,et as ue,j as de,k as fe,l as pe,m as me,nt as he,o as ge,p as _e,q as ve,rt as ye,s as be,t as xe,tt as V,u as Se,w as Ce,x as we,z as Te}from"./QBtn-B7WFdfmy.js";import{t as Ee}from"./debounce-CDIE7CV6.js";import{C as De,D as Oe,E as ke,O as Ae,S as je,T as Me,a as Ne,g as Pe,h as Fe,i as Ie,k as Le,m as Re,o as ze,r as Be,s as Ve,t as He,u as Ue,w as We,x as Ge}from"./use-id-DlouqdB8.js";import{i as Ke,n as qe,r as Je}from"./private.use-form-D8Yuc3aU.js";import{a as Ye,i as Xe,n as Ze,r as Qe,t as $e}from"./use-checkbox-z-Qs4ZHY.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 et=[`sm`,`md`,`lg`,`xl`],{passive:tt}=z,nt=F({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:I,setDebounce:I,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||V.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=>{et.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`)&&et.forEach(t=>{this.sizes[t]=Number.parseInt(e.getPropertyValue(`--q-size-${t}`),10)}),this.setSizes=e=>{et.forEach(t=>{e[t]&&(this.sizes[t]=e[t])}),this.__update(!0)},this.setDebounce=e=>{s!==void 0&&r.removeEventListener(`resize`,s,tt),s=e>0?Ee(this.__update,e):this.__update,r.addEventListener(`resize`,s,tt)},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`)};he.value?t.push(u):u()}}),H=F({isActive:!1,mode:!1},{__media:void 0,set(e){H.mode=e,e===`auto`?(H.__media===void 0&&(H.__media=window.matchMedia(`(prefers-color-scheme: dark)`),H.__updateMedia=()=>{H.set(`auto`)},H.__media.addListener(H.__updateMedia)),e=H.__media.matches):H.__media!==void 0&&(H.__media.removeListener(H.__updateMedia),H.__media=void 0),H.isActive=e===!0,document.body.classList.remove(`body--${e===!0?`light`:`dark`}`),document.body.classList.add(`body--${e===!0?`dark`:`light`}`)},toggle(){H.set(!H.isActive)},install({$q:e,ssrContext:t}){let n=e.config.dark;e.dark=this,this.__installed||this.set(n!==void 0&&n)}});function rt(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 it(e){if(e.ios)return`ios`;if(e.android)return`android`}function at({is:e,has:t,within:n},r){let i=[e.desktop?`desktop`:`mobile`,`${t.touch?``:`no-`}touch`];if(e.mobile){let t=it(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 ot(){let{is:e}=V,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=it(e);t!==void 0&&n.add(`platform-${t}`)}}V.has.touch&&(n.delete(`no-touch`),n.add(`touch`)),V.within.iframe&&n.add(`within-iframe`);let r=[...n].join(` `);t!==r&&(document.body.className=r)}function st(e){for(let t in e)rt(t,e[t])}var ct={install(e){if(!this.__installed){if(he.value)ot();else{let{$q:t}=e;t.config.brand!==void 0&&st(t.config.brand),document.body.classList.add(...at(V,t.config))}V.is.ios&&document.body.addEventListener(`touchstart`,I),window.addEventListener(`keydown`,Te,!0)}}},lt=()=>!0;function ut(e){return typeof e==`string`&&e!==``&&e!==`/`&&e!==`#/`}function dt(e){return e.startsWith(`#`)&&(e=e.slice(1)),e.startsWith(`/`)||(e=`/`+e),e.endsWith(`/`)&&(e=e.slice(0,-1)),`#`+e}function ft(e){if(e.backButtonExit===!1)return()=>!1;if(e.backButtonExit===`*`)return lt;let t=[`#/`];return Array.isArray(e.backButtonExit)&&t.push(...e.backButtonExit.filter(ut).map(dt)),()=>t.includes(window.location.hash)}var pt={__history:[],add:I,remove:I,install({$q:e}){if(this.__installed)return;let{cordova:t,capacitor:n}=V.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=lt),this.__history.push(e)},this.remove=e=>{let t=this.__history.indexOf(e);t!==-1&&this.__history.splice(t,1)};let i=ft({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)}},mt={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`,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`},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`},pagination:{first:`First page`,prev:`Previous page`,next:`Next page`,last:`Last page`},editor:{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 ht(){let e=Array.isArray(navigator.languages)&&navigator.languages.length!==0?navigator.languages[0]:navigator.language;if(typeof e==`string`)return e.split(/[-_]/).map((e,t)=>t===0?e.toLowerCase():t>1||e.length<4?e.toUpperCase():e[0].toUpperCase()+e.slice(1).toLowerCase()).join(`-`)}var gt=F({__qLang:{}},{getLocale:ht,set(e=mt,t){let n={...e,rtl:e.rtl===!0,getLocale:ht};if(n.set=gt.set,gt.__langConfig===void 0||!gt.__langConfig.noHtmlAttrs){let e=document.documentElement;e.setAttribute(`dir`,n.rtl?`rtl`:`ltr`),e.setAttribute(`lang`,n.isoName)}Object.assign(gt.__qLang,n)},install({$q:e,lang:t,ssrContext:n}){e.lang=gt.__qLang,gt.__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`)}}),this.set(t||mt))}}),_t={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`}},vt=F({iconMapFn:null,__qIconSet:{}},{set(e,t){let n={...e};n.set=vt.set,Object.assign(vt.__qIconSet,n)},install({$q:e,iconSet:t,ssrContext:n}){e.config.iconMapFn!==void 0&&(this.iconMapFn=e.config.iconMapFn),e.iconSet=this.__qIconSet,ye(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||_t))}});function yt(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(!yt(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(!yt(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.buffer!=null&&e.buffer.constructor===ArrayBuffer){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(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.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(!yt(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function U(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function bt(e){return typeof e==`number`&&Number.isFinite(e)}var xt=[ue,ct,H,nt,pt,gt,vt];function St(e,t){let n=A(e);n.config.globalProperties=t.config.globalProperties;let{reload:r,...i}=t._context;return Object.assign(n._context,i),n}function Ct(e,t){t.forEach(t=>{t.install(e),t.__installed=!0})}function wt(e,t,n){e.config.globalProperties.$q=n.$q,e.provide(`_q_`,n.$q),Ct(n,xt),t.components!==void 0&&Object.values(t.components).forEach(t=>{U(t)&&t.name!==void 0&&e.component(t.name,t)}),t.directives!==void 0&&Object.values(t.directives).forEach(t=>{U(t)&&t.name!==void 0&&e.directive(t.name,t)}),t.plugins!==void 0&&Ct(n,Object.values(t.plugins).filter(e=>typeof e.install==`function`&&!xt.includes(e))),he.value&&(n.$q.onSSRHydrated=()=>{n.onSSRHydrated.forEach(e=>{e()}),n.$q.onSSRHydrated=()=>{}})}var Tt={name:`Quasar`,version:`2.24.0`,install:function(e,t={}){let n={version:`2.24.0`};de?n.config=t.config||{}:(t.config!==void 0&&Object.assign(ne,t.config),n.config={...ne},fe()),wt(e,t,{parentApp:e,$q:n,lang:t.lang,iconSet:t.iconSet,onSSRHydrated:[]})},lang:gt,iconSet:vt},W=B({name:`QCardSection`,props:{tag:{type:String,default:`div`},horizontal:Boolean},setup(e,{slots:t}){let n=p(()=>`q-card__section q-card__section--${e.horizontal?`horiz row no-wrap`:`vert`}`);return()=>N(e.tag,{class:n.value},R(t.default))}}),Et={xs:2,sm:4,md:6,lg:10,xl:14};function Dt(e){return{transform:`scale3d(${e},1,1)`}}var Ot=B({name:`QLinearProgress`,props:{...Le,...L,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{proxy:n}=M(),r=Ae(e,n.$q),i=ie(e,Et),a=p(()=>e.indeterminate||e.query),o=p(()=>({...i.value===null?{}:i.value,"--q-linear-progress-speed":`${e.animationSpeed}ms`})),s=p(()=>`q-linear-progress`+(e.color===void 0?``:` text-${e.color}`)+(e.reverse||e.query?` q-linear-progress--reverse`:``)+(e.rounded?` rounded-borders`:``)),c=p(()=>Dt(e.buffer===void 0?1:e.buffer)),l=p(()=>`with${e.instantFeedback?`out`:``}-transition`),u=p(()=>`q-linear-progress__track absolute-full q-linear-progress__track--${l.value} q-linear-progress__track--${r.value?`dark`:`light`}`+(e.trackColor===void 0?``:` bg-${e.trackColor}`)),d=p(()=>Dt(a.value?1:e.value)),f=p(()=>`q-linear-progress__model absolute-full q-linear-progress__model--${l.value} q-linear-progress__model--${a.value?`in`:``}determinate`),m=p(()=>({width:`${e.value*100}%`})),h=p(()=>`q-linear-progress__stripe absolute-${e.reverse?`right`:`left`} q-linear-progress__stripe--${l.value}`);return()=>{let n=[N(`div`,{class:u.value,style:c.value}),N(`div`,{class:f.value,style:d.value})];return e.stripe&&!a.value&&n.push(N(`div`,{class:h.value,style:m.value})),N(`div`,{class:s.value,style:o.value,role:`progressbar`,"aria-valuemin":0,"aria-valuemax":1,"aria-valuenow":e.indeterminate?void 0:e.value},le(t.default,n))}}}),kt=B({name:`QCard`,props:{...Le,tag:{type:String,default:`div`},square:Boolean,flat:Boolean,bordered:Boolean},setup(e,{slots:t}){let{proxy:{$q:n}}=M(),r=Ae(e,n),i=p(()=>`q-card`+(r.value?` 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()=>N(e.tag,{class:i.value},R(t.default))}});function At(e,t,n){let r;function i(){r!==void 0&&(pt.remove(r),r=void 0)}return x(()=>{e.value&&i()}),{removeFromHistory:i,addToHistory(){r={condition:()=>n.value,handler:t},pt.add(r)}}}var jt=0,Mt,Nt,Pt,Ft=!1,It,Lt,Rt,zt=null;function Bt(e){e.target===document&&(document.scrollingElement.scrollTop=document.scrollingElement.scrollTop)}function Vt(e){Ft||(Ft=!0,requestAnimationFrame(()=>{Ft=!1;let{height:t}=e.target,{clientHeight:n,scrollTop:r}=document.scrollingElement;(Pt===void 0||t!==window.innerHeight)&&(Pt=n-t,document.scrollingElement.scrollTop=r),r>Pt&&(document.scrollingElement.scrollTop-=Math.ceil((r-Pt)/8))}))}function Ht(e){let t=document.body,n=window.visualViewport!==void 0;if(e===`add`){let{overflowY:e,overflowX:r}=window.getComputedStyle(t);Mt=Ve(window),Nt=Ue(window),It=t.style.left,Lt=t.style.top,Rt=window.location.pathname,t.style.left=`-${Mt}px`,t.style.top=`-${Nt}px`,r!==`hidden`&&(r===`scroll`||t.scrollWidth>window.innerWidth)&&t.classList.add(`q-body--force-scrollbar-x`),e!==`hidden`&&(e===`scroll`||t.scrollHeight>window.innerHeight)&&t.classList.add(`q-body--force-scrollbar-y`),document.documentElement.classList.add(`q-document--prevent-scroll`),document.qScrollPrevented=!0,V.is.ios&&(n?(window.scrollTo(0,0),window.visualViewport.addEventListener(`resize`,Vt,z.passiveCapture),window.visualViewport.addEventListener(`scroll`,Vt,z.passiveCapture),window.scrollTo(0,0)):window.addEventListener(`scroll`,Bt,z.passiveCapture))}else V.is.ios&&(n?(window.visualViewport.removeEventListener(`resize`,Vt,z.passiveCapture),window.visualViewport.removeEventListener(`scroll`,Vt,z.passiveCapture)):window.removeEventListener(`scroll`,Bt,z.passiveCapture)),document.documentElement.classList.remove(`q-document--prevent-scroll`),t.classList.remove(`q-body--force-scrollbar-x`,`q-body--force-scrollbar-y`),document.qScrollPrevented=!1,t.style.left=It,t.style.top=Lt,window.location.pathname===Rt&&window.scrollTo(Mt,Nt),Pt=void 0}function Ut(e){let t=`add`;if(e===!0){if(jt++,zt!==null){clearTimeout(zt),zt=null;return}if(jt>1)return}else{if(jt===0||(jt--,jt>0))return;if(t=`remove`,V.is.ios&&V.is.nativeMobile){zt!==null&&clearTimeout(zt),zt=setTimeout(()=>{Ht(t),zt=null},100);return}}Ht(t)}function Wt(){let e;return{preventBodyScroll(t){t!==e&&(e!==void 0||t)&&(e=t,Ut(t))}}}var Gt=[];function Kt(e){Gt.at(-1)(e)}function qt(e){V.is.desktop&&(Gt.push(e),Gt.length===1&&document.body.addEventListener(`focusin`,Kt))}function Jt(e){let t=Gt.indexOf(e);t!==-1&&(Gt.splice(t,1),Gt.length===0&&document.body.removeEventListener(`focusin`,Kt))}var Yt=new Map;function Xt(e){for(let[t,n]of Yt)if(n.$el.contains(e)===!0)return t}function Zt(e,t){if(e==null)return!1;let n=new Set;for(let r=Xt(t);r!==void 0&&n.has(r)===!1;r=Xt(r)){if(Se(e,r)===!0)return!0;n.add(r)}return!1}var Qt=0,$t={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`},en={standard:[`scale`,`scale`],top:[`slide-down`,`slide-up`],bottom:[`slide-up`,`slide-down`],right:[`slide-left`,`slide-right`],left:[`slide-right`,`slide-left`]},tn=B({name:`QDialog`,inheritAttrs:!1,props:{...Me,...je,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:[...We,`shake`,`click`,`escapeKey`],setup(e,{slots:t,emit:n,attrs:r}){let a=M(),o=i(null),s=i(!1),c=i(!1),l=null,u=null,d=!1,f=!1,m=p(()=>!e.persistent&&!e.noRouteDismiss&&!e.seamless),{preventBodyScroll:h}=Wt(),{registerTimeout:g}=Oe(),{registerTick:_,removeTick:v}=ke(),{transitionProps:y,transitionStyle:b}=Ge(e,()=>en[e.position][0],()=>en[e.position][1]),S=p(()=>b.value+(e.backdropFilter===void 0?``:`;backdrop-filter:${e.backdropFilter};-webkit-backdrop-filter:${e.backdropFilter}`)),{showPortal:C,hidePortal:w,portalIsAccessible:T,renderPortal:E}=Re(a,o,le,`dialog`),{hide:D}=De({showing:s,hideOnRouteChange:m,handleShow:ne,handleHide:re,handleRouteChange:ie,processOnMount:!0}),{addToHistory:O,removeFromHistory:A}=At(s,D,m),ee=p(()=>`q-dialog__inner flex no-pointer-events q-dialog__inner--${e.maximized?`maximized`:`minimized`} q-dialog__inner--${e.position} ${$t[e.position]}`+(c.value?` q-dialog__inner--animating`:``)+(e.fullWidth?` q-dialog__inner--fullwidth`:``)+(e.fullHeight?` q-dialog__inner--fullheight`:``)+(e.square?` q-dialog__inner--square`:``)),j=p(()=>s.value&&!e.seamless),P=p(()=>e.autoClose?{onClick:se}:{}),F=p(()=>[`q-dialog fullscreen no-pointer-events q-dialog--${j.value?`modal`:`seamless`}`,r.class]);k(()=>e.maximized,e=>{s.value&&z(e)}),k(j,e=>{h(e),e?(qt(B),Ne(L)):(Jt(B),ze(L))});function ne(t){O(),u=!e.noRefocus&&document.activeElement!==null?document.activeElement:null,z(e.maximized),C(),c.value=!0,e.noFocus?v():(document.activeElement?.blur(),_(I)),g(()=>{if(a.proxy.$q.platform.is.ios){if(!e.seamless&&document.activeElement){let{top:e,bottom:t}=document.activeElement.getBoundingClientRect(),{innerHeight:n}=window,r=window.visualViewport===void 0?n:window.visualViewport.height;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()}f=!0,o.value.click(),f=!1}C(!0),c.value=!1,n(`show`,t)},e.transitionDuration)}function re(t){if(v(),A(),oe(!0),c.value=!0,w(),u!==null){let e=(t?.type.indexOf(`key`)===0?u.closest(`[tabindex]:not([tabindex^="-"])`):void 0)||u;u=null,Fe(()=>{e.isConnected&&e.focus({preventScroll:!0})})}g(()=>{w(!0),c.value=!1,n(`hide`,t)},e.transitionDuration)}function ie(){u=null}function I(e){Fe(()=>{let t=o.value;if(t!==null){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 ae(e){e&&typeof e.focus==`function`?e.focus({preventScroll:!0}):I(),n(`shake`);let t=o.value;t!==null&&(t.classList.remove(`q-animate--scale`),t.classList.add(`q-animate--scale`),l!==null&&clearTimeout(l),l=setTimeout(()=>{l=null,o.value!==null&&(t.classList.remove(`q-animate--scale`),I())},170))}function L(){e.seamless||(e.persistent||e.noEscDismiss?!e.maximized&&!e.noShake&&ae():(n(`escapeKey`),D()))}function oe(t){l!==null&&(clearTimeout(l),l=null),(t||s.value)&&(z(!1),e.seamless||(h(!1),Jt(B),ze(L))),t||(u=null)}function z(e){e?d||=(Qt<1&&document.body.classList.add(`q-body--dialog`),Qt++,!0):d&&=(Qt<2&&document.body.classList.remove(`q-body--dialog`),Qt--,!1)}function se(e){f||(D(e),n(`click`,e))}function ce(t){!e.persistent&&!e.noBackdropDismiss?D(t):e.noShake||ae()}function B(t){!e.allowFocusOutside&&T.value&&!Se(o.value,t.target)&&!Zt(o.value,t.target)&&I(`[tabindex]:not([tabindex="-1"])`)}Object.assign(a.proxy,{focus:I,shake:ae,__updateRefocusTarget(e){u=e||null}}),x(oe);function le(){return N(`div`,{role:`dialog`,"aria-modal":j.value?`true`:`false`,...r,class:F.value},[N(te,{name:`q-transition--fade`,appear:!0},()=>j.value?N(`div`,{class:`q-dialog__backdrop fixed-full`,style:S.value,"aria-hidden":`true`,onClick:ce}):null),N(te,y.value,()=>s.value?N(`div`,{ref:o,class:ee.value,style:b.value,tabindex:-1,...P.value},R(t.default)):null)])}return E}});function nn(e){"@babel/helpers - typeof";return nn=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},nn(e)}function rn(e,t){if(nn(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(nn(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function an(e){var t=rn(e,`string`);return nn(t)==`symbol`?t:t+``}function on(e,t,n){return(t=an(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var sn=Ie(`migration`,()=>{let e=i({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}}),cn={class:`text-h6`},ln={class:`text-h6`},un={class:`text-h6 text-negative`},dn={class:`q-mt-sm`},fn={key:0,class:`q-mt-md text-caption`},pn={class:`q-mt-md text-caption`},mn=u({__name:`MigrationOverlay`,setup(t){let{t:n}=e(),i=sn(),a=p(()=>[`backing-up`,`running`,`error`].includes(i.status.state));return b(()=>{i.fetchInitial()}),(e,t)=>(S(),_(tn,{modelValue:a.value,"onUpdate:modelValue":t[0]||=e=>a.value=e,persistent:``,"no-backdrop-dismiss":``},{default:O(()=>[D(kt,{style:{"min-width":`400px`}},{default:O(()=>[r(i).status.state===`backing-up`?(S(),_(W,{key:0},{default:O(()=>[T(`div`,cn,c(r(n)(`migration.backing_up`)),1),D(Ce,{class:`q-mt-md`})]),_:1})):r(i).status.state===`running`?(S(),_(W,{key:1},{default:O(()=>[T(`div`,ln,c(r(n)(`migration.running`,{processed:r(i).status.processed,total:r(i).status.total})),1),D(Ot,{value:r(i).status.total>0?r(i).status.processed/r(i).status.total:0,class:`q-mt-md`},null,8,[`value`])]),_:1})):r(i).status.state===`error`?(S(),_(W,{key:2},{default:O(()=>[T(`div`,un,c(r(n)(`migration.error`)),1),T(`div`,dn,c(r(i).status.errorMessage),1),r(i).status.backupPath?(S(),E(`div`,fn,c(r(n)(`migration.backup_location`,{path:r(i).status.backupPath})),1)):w(``,!0),T(`div`,pn,c(r(n)(`migration.retry`)),1)]),_:1})):w(``,!0)]),_:1})]),_:1},8,[`modelValue`]))}}),hn=/^on[A-Z]/;function gn(){let e=M(),{attrs:t}=e,n={listeners:i({}),attributes:i({})};function r(){let r={},i={};for(let e in t)e!==`class`&&e!==`style`&&!hn.test(e)&&(r[e]=t[e]);for(let t in e.vnode.props)hn.test(t)&&(i[t]=e.vnode.props[t]);n.attributes.value=r,n.listeners.value=i}return ee(r),r(),n}function _n({validate:e,resetValidation:t,requiresQForm:n}){let r=P(ae,!1);if(r!==!1){let{props:n,proxy:i}=M();Object.assign(i,{validate:e,resetValidation:t}),k(()=>n.disable,e=>{e?(typeof t==`function`&&t(),r.unbindComponent(i)):r.bindComponent(i)}),b(()=>{n.disable||r.bindComponent(i)}),x(()=>{n.disable||r.unbindComponent(i)})}else n&&console.error(`Parent QForm not found on useFormChild()!`)}var vn=/^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,yn=/^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,bn=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,xn=/^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])\)$/,Sn=/^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+)?)\)$/,Cn=/^-?[\d]+\/(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01])$/,wn=/^([0-1]?\d|2[0-3]):[0-5]\d$/,Tn=/^([0-1]?\d|2[0-3]):[0-5]\d:[0-5]\d$/,En=/^([0-1]?\d|2[0-3]):[0-5]\d(:[0-5]\d)?$/,Dn=/^(([^<>()[\]\\.,;:\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,}))$/,On={date:e=>Cn.test(e),time:e=>wn.test(e),fulltime:e=>Tn.test(e),timeOrFulltime:e=>En.test(e),email:e=>Dn.test(e),hexColor:e=>vn.test(e),hexaColor:e=>yn.test(e),hexOrHexaColor:e=>bn.test(e),rgbColor:e=>xn.test(e),rgbaColor:e=>Sn.test(e),rgbOrRgbaColor:e=>xn.test(e)||Sn.test(e),hexOrRgbColor:e=>vn.test(e)||xn.test(e),hexaOrRgbaColor:e=>yn.test(e)||Sn.test(e),anyColor:e=>bn.test(e)||xn.test(e)||Sn.test(e)},kn=[!0,!1,`ondemand`],An={modelValue:{},error:{type:Boolean,default:null},errorMessage:String,noErrorIcon:Boolean,rules:Array,reactiveRules:Boolean,lazyRules:{type:[Boolean,String],default:!1,validator:e=>kn.includes(e)}};function jn(e,t){let{props:n,proxy:r}=M(),a=i(!1),o=i(null),s=i(!1);_n({validate:_,resetValidation:g});let c=0,l,u=p(()=>n.rules!==void 0&&n.rules!==null&&n.rules.length!==0),d=p(()=>!n.disable&&u.value&&!t.value),f=p(()=>n.error===!0||a.value),m=p(()=>typeof n.errorMessage==`string`&&n.errorMessage.length!==0?n.errorMessage:o.value);k(()=>n.modelValue,()=>{s.value=!0,d.value&&n.lazyRules===!1&&v()});function h(){n.lazyRules!==`ondemand`&&d.value&&s.value&&v()}k(()=>n.reactiveRules,e=>{e?l===void 0&&(l=k(()=>n.rules,h,{immediate:!0,deep:!0})):l!==void 0&&(l(),l=void 0)},{immediate:!0}),k(()=>n.lazyRules,h),k(e,e=>{e?s.value=!0:d.value&&n.lazyRules!==`ondemand`&&v()});function g(){c++,t.value=!1,s.value=!1,a.value=!1,o.value=null,v.cancel()}function _(e=n.modelValue){if(n.disable||!u.value)return!0;let r=++c,i=t.value?()=>{}:()=>{s.value=!0},l=(e,n)=>{e&&i(),a.value=e,o.value=n||null,t.value=!1},d=[];for(let t=0;t<n.rules.length;t++){let r=n.rules[t],i;if(typeof r==`function`?i=r(e,On):typeof r==`string`&&(On[r]===void 0?(console.error(`Unknown validation pattern rule: "${r}"`),i=!1):i=On[r](e)),i===!1||typeof i==`string`)return l(!0,i),!1;i!==!0&&i!==void 0&&d.push(i)}return d.length===0?(l(!1),!0):(t.value=!0,Promise.all(d).then(e=>{if(e===void 0||!Array.isArray(e)||e.length===0)return r===c&&l(!1),!0;let t=e.find(e=>e===!1||typeof e==`string`);return r===c&&l(t!==void 0,t),t===void 0},e=>(r===c&&(console.error(e),l(!0)),!1)))}let v=Ee(_,0);return x(()=>{l?.(),v.cancel()}),Object.assign(r,{resetValidation:g,validate:_}),ye(r,`hasError`,()=>f.value),{isDirtyModel:s,hasRules:u,hasError:f,errorMessage:m,validate:_,resetValidation:g}}function Mn(e){return e!=null&&String(e).length!==0}var Nn={...Le,...An,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]},Pn=[`update:modelValue`,`clear`,`focus`,`blur`];function Fn({requiredForAttr:e=!0,tagProp:t,changeEvent:n=!1}={}){let{props:r,proxy:a}=M(),o=Ae(r,a.$q),s=He({required:e,getValue:()=>r.for});return{requiredForAttr:e,changeEvent:n,tag:t?p(()=>r.tag):{value:`label`},isDark:o,editable:p(()=>!r.disable&&!r.readonly),innerLoading:i(!1),focused:i(!1),hasPopupOpen:!1,splitAttrs:gn(),targetUid:s,rootRef:i(null),targetRef:i(null),controlRef:i(null)}}function In(e,t){return t===null?null:N(`div`,{key:e,class:`q-field__append q-field__marginal row no-wrap items-center q-anchor--skip`},t)}function Ln(e){let{props:t,emit:n,slots:r,attrs:i,proxy:a}=M(),{$q:o}=a,s=null;e.hasValue===void 0&&(e.hasValue=p(()=>Mn(t.modelValue))),e.emitValue===void 0&&(e.emitValue=e=>{n(`update:modelValue`,e)}),e.controlEvents===void 0&&(e.controlEvents={onFocusin:ee,onFocusout:j}),Object.assign(e,{clearValue:P,onControlFocusin:ee,onControlFocusout:j,focus:k}),e.computedCounter===void 0&&(e.computedCounter=p(()=>{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:m}=jn(e.focused,e.innerLoading),h=e.floatingLabel===void 0?p(()=>t.stackLabel||e.focused.value||e.hasValue.value):p(()=>t.stackLabel||e.focused.value||e.floatingLabel.value),_=p(()=>t.bottomSlots||t.hint!==void 0||l.value||t.counter||t.error!==null),v=p(()=>t.filled?`filled`:t.outlined?`outlined`:t.borderless?`borderless`:t.standout?`standout`:`standard`),y=p(()=>`q-field row no-wrap items-start q-field--${v.value}`+(e.fieldClass===void 0?``:` ${e.fieldClass.value}`)+(t.rounded?` q-field--rounded`:``)+(t.square?` q-field--square`:``)+(h.value?` q-field--float`:``)+(w.value?` q-field--labeled`:``)+(t.dense?` q-field--dense`:``)+(t.itemAligned?` q-field--item-aligned q-item-type`:``)+(e.isDark.value?` 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&&_.value?` q-field--with-bottom`:``)+(t.disable?` q-field--disabled`:t.readonly?` q-field--readonly`:``)),S=p(()=>`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}`)),w=p(()=>t.labelSlot||t.label!==void 0),T=p(()=>`q-field__label no-pointer-events absolute ellipsis`+(t.labelColor!==void 0&&!u.value?` text-${t.labelColor}`:``)),E=p(()=>ye({id:e.targetUid.value,editable:e.editable.value,focused:e.focused.value,floatingLabel:h.value,modelValue:t.modelValue,emitValue:e.emitValue},`field`,()=>e.rootRef.value)),D=p(()=>{let n={};return e.targetUid.value&&(n.for=e.targetUid.value),t.disable&&(n[`aria-disabled`]=`true`),n});function O(){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 k(){Fe(O)}function A(){Pe(O);let t=document.activeElement;t!==null&&e.rootRef.value.contains(t)&&t.blur()}function ee(t){s!==null&&(clearTimeout(s),s=null),e.editable.value&&!e.focused.value&&(e.focused.value=!0,n(`focus`,t))}function j(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 P(r){se(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),C(()=>{let e=c.value;m(),c.value=e})}function F(e){[13,32].includes(e.keyCode)&&P(e)}function ne(){let n=[];return r.prepend!==void 0&&n.push(N(`div`,{class:`q-field__prepend q-field__marginal row no-wrap items-center`,key:`prepend`,onClick:ve},r.prepend())),n.push(N(`div`,{class:`q-field__control-container col relative-position row no-wrap q-anchor--skip`},re())),u.value&&!t.noErrorIcon&&n.push(In(`error`,[N(pe,{name:o.iconSet.field.error,color:`negative`})])),t.loading||e.innerLoading.value?n.push(In(`inner-loading-append`,r.loading===void 0?[N(Ce,{color:t.color})]:r.loading())):t.clearable&&e.hasValue.value&&e.editable.value&&n.push(In(`inner-clearable-append`,[N(pe,{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:F,onClick:P})])),r.append!==void 0&&n.push(N(`div`,{class:`q-field__append q-field__marginal row no-wrap items-center`,key:`append`,onClick:ve},r.append())),e.getInnerAppend!==void 0&&n.push(In(`inner-append`,e.getInnerAppend())),e.getControlChild!==void 0&&n.push(e.getControlChild()),n}function re(){let n=[];return t.prefix!==void 0&&t.prefix!==null&&n.push(N(`div`,{class:`q-field__prefix no-pointer-events row items-center`},t.prefix)),e.getShadowControl!==void 0&&e.hasShadow.value&&n.push(e.getShadowControl()),w.value&&n.push(N(`div`,{class:T.value},R(r.label,t.label))),e.getControl===void 0?r.rawControl===void 0?r.control!==void 0&&n.push(N(`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(N(`div`,{class:`q-field__suffix no-pointer-events row items-center`},t.suffix)),n.concat(R(r.default))}function ie(){let n,i;u.value?d.value===null?(n=R(r.error),i=`q--slot-error`):(n=[N(`div`,{role:`alert`},d.value)],i=`q--slot-error-${d.value}`):(!t.hideHint||e.focused.value)&&(t.hint===void 0?(n=R(r.hint),i=`q--slot-hint`):(n=[N(`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=N(`div`,{key:i,class:`q-field__messages col`},n);return N(`div`,{class:`q-field__bottom row items-start q-field__bottom--`+(t.hideBottomSpace?`stale`:`animated`),onClick:ve},[t.hideBottomSpace?o:N(te,{name:`q-transition--field-message`},()=>o),a?N(`div`,{class:`q-field__counter`},r.counter===void 0?e.computedCounter.value:r.counter()):null])}let I=!1;return f(()=>{I=!0}),g(()=>{I&&t.autofocus&&a.focus()}),t.autofocus&&b(()=>{a.focus()}),x(()=>{s!==null&&clearTimeout(s)}),Object.assign(a,{focus:k,blur:A}),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 N(e.tag.value,{ref:e.rootRef,class:[y.value,i.class],style:i.style,...n},[r.before===void 0?null:N(`div`,{class:`q-field__before q-field__marginal row no-wrap items-center`,onClick:ve},r.before()),N(`div`,{class:`q-field__inner relative-position col self-stretch`},[N(`div`,{ref:e.controlRef,class:S.value,tabindex:-1,...e.controlEvents},ne()),_.value?ie():null]),r.after===void 0?null:N(`div`,{class:`q-field__after q-field__marginal row no-wrap items-center`,onClick:ve},r.after())])}}var Rn={date:`####/##/##`,datetime:`####/##/## ##:##`,time:`##:##`,fulltime:`##:##:##`,phone:`(###) ### - ####`,card:`#### #### #### ####`},{tokenMap:zn,tokenKeys:Bn}=Vn({"#":{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 Vn(e){let t=Object.keys(e),n={};return t.forEach(t=>{let r=e[t];n[t]={...r,regex:new RegExp(r.pattern)}}),{tokenMap:n,tokenKeys:t}}function Hn(e){return RegExp("\\\\([^.*+?^${}()|([\\]])|([.*+?^${}()|[\\]])|(["+e.join(``)+`])|(.)`,`g`)}var Un=/[.*+?^${}()|[\]\\]/g,Wn=Hn(Bn),G=String.fromCodePoint(1),Gn={mask:String,reverseFillMask:Boolean,fillMask:[Boolean,String],unmaskedValue:Boolean,maskTokens:Object};function Kn(e,t,n,r){let a,o,s,c,l,u,d=p(()=>{if(e.maskTokens===void 0||e.maskTokens===null)return{tokenMap:zn,tokenRegexMask:Wn};let{tokenMap:t}=Vn(e.maskTokens),n={...zn,...t};return{tokenMap:n,tokenRegexMask:Hn(Object.keys(n))}}),f=i(null),m=i(g());function h(){return e.autogrow||[`textarea`,`text`,`search`,`url`,`tel`,`password`].includes(e.type)}k(()=>e.type+e.autogrow,v),k(()=>e.mask,n=>{if(n!==void 0)y(m.value,!0);else{let n=D(m.value);v(),e.modelValue!==n&&t(`update:modelValue`,n)}}),k(()=>e.fillMask+e.reverseFillMask,()=>{f.value&&y(m.value,!0)}),k(()=>e.unmaskedValue,()=>{f.value&&y(m.value)}),k(()=>e.maskTokens,()=>{f.value&&y(m.value,!0)},{deep:!0});function g(){if(v(),f.value){let t=T(D(e.modelValue));return e.fillMask===!1?t:O(t)}return e.modelValue}function _(e){if(e<a.length)return a.slice(-e);let t=``,n=a,r=n.indexOf(G);if(r!==-1){for(let r=e-n.length;r>0;r--)t+=G;n=n.slice(0,r)+t+n.slice(r)}return n}function v(){if(f.value=e.mask!==void 0&&e.mask.length!==0&&h(),!f.value){c=void 0,a=``,o=``;return}let t=Rn[e.mask]===void 0?e.mask:Rn[e.mask],n=typeof e.fillMask==`string`&&e.fillMask.length!==0?e.fillMask.slice(0,1):`_`,r=n.replace(Un,String.raw`\$&`),i=[],l=[],u=[],p=e.reverseFillMask,m=``,g=``;t.replace(d.value.tokenRegexMask,(e,t,n,r,a)=>{if(r!==void 0){let e=d.value.tokenMap[r];u.push(e),g=e.negate,p&&=(l.push(`(?:`+g+`+)?(`+e.pattern+`+)?(?:`+g+`+)?(`+e.pattern+`+)?`),!1),l.push(`(?:`+g+`+)?(`+e.pattern+`)?`);return}if(n!==void 0)m=`\\`+(n===`\\`?``:n),u.push(n);else{let e=t===void 0?a:t;m=e===`\\`?String.raw`\\\\`:e.replace(Un,String.raw`\\$&`),u.push(e)}i.push(`([^`+m+`]+)?`+m+`?`)});let _=RegExp(`^`+i.join(``)+`(`+(m===``?`.`:`[^`+m+`]`)+`+)?`+(m===``?``:`[`+m+`]*`)+`$`),v=l.length-1,y=l.map((t,n)=>n===0&&e.reverseFillMask?RegExp(`^`+r+`*`+t):RegExp(n===v?`^`+t+`(`+(g===``?`.`:g)+`+)?`+(e.reverseFillMask?`$`:r+`*`):`^`+t));s=u,c=t=>{let n=_.exec(e.reverseFillMask?t:t.slice(0,u.length+1));n!==null&&(t=n.slice(1).join(``));let r=[],i=y.length;for(let e=0,n=t;e<i;e++){let t=y[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:G).join(``),o=a.split(G).join(n)}function y(t,i,s){let c=r.value,u=c?.selectionEnd??0,d=c===null?0:c.value.length-u,f=D(t);i===!0&&v();let p=T(f,i),h=e.fillMask===!1?p:O(p),g=m.value!==h;c!==null&&c.value!==h&&(c.value=h),g&&(m.value=h),c!==null&&document.activeElement===c&&C(()=>{if(h===o){let t=e.reverseFillMask?o.length:0;c.setSelectionRange(t,t,`forward`);return}if(s===`insertFromPaste`&&!e.reverseFillMask){let e=c.selectionEnd,t=u-1;for(let n=l;n<=t&&n<e;n++)a[n]!==G&&t++;x.right(c,t);return}if([`deleteContentBackward`,`deleteContentForward`].includes(s)){let t=e.reverseFillMask?u===0?+(h.length>p.length):Math.max(0,h.length-(h===o?0:Math.min(p.length,d)+1))+1:u;c.setSelectionRange(t,t,`forward`);return}if(e.reverseFillMask){if(g){let e=Math.max(0,h.length-(h===o?0:Math.min(p.length,d+1)));e===1&&u===1?c.setSelectionRange(e,e,`forward`):x.rightReverse(c,e)}else{let e=h.length-d;c.setSelectionRange(e,e,`backward`)}}else if(g){let e=Math.max(0,a.indexOf(G),Math.min(p.length,u)-1);x.right(c,e)}else{let e=u-1;x.right(c,e)}});let _=e.unmaskedValue?D(h):h;String(e.modelValue)!==_&&(e.modelValue!==null||_!==``)&&n(_,!0)}function b(e,t,n){let r=T(D(e.value));t=Math.max(0,a.indexOf(G),Math.min(r.length,t)),l=t,e.setSelectionRange(t,n,`forward`)}let x={left(e,t){let n=!a.slice(t-1).includes(G),r=Math.max(0,t-1);for(;r>=0;r--)if(a[r]===G){t=r,n&&t++;break}if(r<0&&a[t]!==void 0&&a[t]!==G)return x.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]===G){t=r;break}else a[r-1]===G&&(t=r);if(r>n&&a[t-1]!==void 0&&a[t-1]!==G)return x.left(e,n);e.setSelectionRange(t,t,`forward`)},leftReverse(e,t){let n=_(e.value.length),r=Math.max(0,t-1);for(;r>=0;r--)if(n[r-1]===G){t=r;break}else if(n[r]===G&&(t=r,r===0))break;if(r<0&&n[t]!==void 0&&n[t]!==G)return x.rightReverse(e,0);t>=0&&e.setSelectionRange(t,t,`backward`)},rightReverse(e,t){let n=e.value.length,r=_(n),i=!r.slice(0,t+1).includes(G),a=Math.min(n,t+1);for(;a<=n;a++)if(r[a-1]===G){t=a,t>0&&i&&t--;break}if(a>n&&r[t-1]!==void 0&&r[t-1]!==G)return x.leftReverse(e,n);e.setSelectionRange(t,t,`forward`)}};function S(e){t(`click`,e),u=void 0}function w(n){if(t(`keydown`,n),re(n)||n.altKey)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=x[(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?(x.left(i,a),i.setSelectionRange(i.selectionStart,o,`backward`)):n.keyCode===46&&e.reverseFillMask&&a===o&&(x.rightReverse(i,o),i.setSelectionRange(a,i.selectionEnd,`forward`))}function T(t,n){if(t==null||t===``)return``;if(e.reverseFillMask)return E(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.regex.test(o))a+=s.transform===void 0?o:s.transform(o),i++;else return a}return a}function E(e,t){let n=s,r=a.indexOf(G),i=e.length-1,o=``;for(let a=n.length-1;a>=0&&i!==-1;a--){let s=n[a],c=e[i];if(typeof s==`string`)o=s+o,t===!0&&c===s&&i--;else if(c!==void 0&&s.regex.test(c))do o=(s.transform===void 0?c:s.transform(c))+o,i--,c=e[i];while(r===a&&c!==void 0&&s.regex.test(c));else return o}return o}function D(e){return typeof e!=`string`||c===void 0?typeof e==`number`?c(String(e)):e:c(e)}function O(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:m,hasMask:f,moveCursorForPaste:b,updateMaskValue:y,onMaskedKeydown:w,onMaskedClick:S}}function qn(e,t){function n(){let t=e.modelValue;try{let e=`DataTransfer`in window?new DataTransfer:`ClipboardEvent`in window?new ClipboardEvent(``).clipboardData:void 0;return Object(t)===t&&(`length`in t?[...t]:[t]).forEach(t=>{e.items.add(t)}),{files:e.files}}catch{return{files:void 0}}}return p(t?()=>{if(e.type===`file`)return n()}:n)}var Jn=/[\u3000-\u303F\u3040-\u309F\u30A0-\u30FF\uFF00-\uFF9F\u4E00-\u9FAF\u3400-\u4DBF]/,Yn=/[\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,Xn=/[\u3131-\u314E\u314F-\u3163\uAC00-\uD7A3]/,Zn=/[a-z0-9_ -]$/i;function Qn(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`&&(V.is.firefox?!Zn.test(t.data):Jn.test(t.data)||Yn.test(t.data)||Xn.test(t.data))&&(t.target.qComposing=!0)}}var $n=B({name:`QInput`,inheritAttrs:!1,props:{...Nn,...Gn,...Ke,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:[...Pn,`paste`,`change`,`keydown`,`click`,`animationend`],setup(e,{emit:t,attrs:n}){let{proxy:r}=M(),{$q:a}=r,o={},s=NaN,c=!1,l=!1,u=null,d,f=i(null),m=Je(e),{innerValue:h,hasMask:g,moveCursorForPaste:_,updateMaskValue:v,onMaskedKeydown:y,onMaskedClick:S}=Kn(e,t,L,f),w=qn(e,!0),T=p(()=>Mn(h.value)),E=Qn(I);function D(e){if(g.value&&e.type===`compositionstart`){e.target.qComposing=!0;return}E(e)}let O=Fn({changeEvent:!0}),A=p(()=>e.type===`textarea`||e.autogrow),ee=p(()=>A.value||[`text`,`search`,`url`,`tel`,`password`].includes(e.type)),j=p(()=>{let t={...O.splitAttrs.listeners.value,onInput:I,onPaste:ie,onChange:se,onBlur:B,onFocus:ce};return t.onCompositionstart=t.onCompositionupdate=t.onCompositionend=D,g.value&&(t.onKeydown=y,t.onClick=S),e.autogrow&&(t.onAnimationend=ae),t}),te=p(()=>{let t={tabindex:0,"data-autofocus":e.autofocus||void 0,rows:e.type===`textarea`?6:void 0,"aria-label":e.label,name:m.value,...O.splitAttrs.attributes.value,id:O.targetUid.value,maxlength:e.maxlength,disabled:e.disable,readonly:e.readonly};return A.value||(t.type=e.type),e.autogrow&&(t.rows=1),t});k(()=>e.type,()=>{f.value&&(f.value.value=e.modelValue)}),k(()=>e.modelValue,t=>{if(u!==null&&(oe(),c=!1,l=!1,delete o.value),g.value){if(l&&(l=!1,String(t)===s))return;v(t)}else h.value!==t&&(h.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&&C(z)}),k(()=>e.autogrow,e=>{e?C(z):f.value!==null&&n.rows>0&&(f.value.style.height=`auto`)}),k(()=>e.dense,()=>{e.autogrow&&C(z)});function P(){let e=document.activeElement;f.value!==null&&f.value!==e&&(e===null||e.id!==O.targetUid.value)&&f.value.focus({preventScroll:!0})}function F(){Fe(P)}function ne(){Pe(P);let e=document.activeElement;e!==null&&O.rootRef.value.contains(e)&&e.blur()}function re(){f.value?.select()}function ie(n){if(g.value&&e.reverseFillMask!==!0){let e=n.target;_(e,e.selectionStart,e.selectionEnd)}t(`paste`,n)}function I(n){if(!n||!n.target)return;if(e.type===`file`){t(`update:modelValue`,n.target.files);return}let r=n.target.value;if(n.target.qComposing){o.value=r;return}if(g.value)v(r,!1,n.inputType);else if(e.modelModifiers?.trim===!0&&(o.value=r),L(r),ee.value&&n.target===document.activeElement){let{selectionStart:e,selectionEnd:t}=n.target;e!==void 0&&t!==void 0&&C(()=>{n.target===document.activeElement&&r.indexOf(n.target.value)===0&&n.target.setSelectionRange(e,t)})}e.autogrow&&z()}function ae(e){t(`animationend`,e),z()}function L(n,r){d=()=>{u=null,e.type!==`number`&&(e.modelModifiers?.trim!==!0||g.value)&&Object.hasOwn(o,`value`)&&delete o.value,e.modelValue!==n&&s!==n&&(s=n,r===!0&&(l=!0),t(`update:modelValue`,n),C(()=>{s===n&&(s=NaN)})),d=void 0},e.type===`number`&&(c=!0,o.value=n),e.debounce===void 0?d():(u!==null&&clearTimeout(u),o.value=n,u=setTimeout(d,e.debounce))}function oe(){u!==null&&(clearTimeout(u),u=null),d=void 0}function R(){oe(),c=!1,l=!1,delete o.value}function z(){requestAnimationFrame(()=>{let e=f.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 se(e){D(e),u!==null&&(clearTimeout(u),u=null),d?.(),t(`change`,e.target.value)}function B(t){t!==void 0&&ce(t),u!==null&&(clearTimeout(u),u=null),d?.(),c=!1,l=!1,delete o.value,e.type!==`file`&&setTimeout(()=>{f.value!==null&&(f.value.value=h.value===void 0?``:h.value)},0)}function le(){return Object.hasOwn(o,`value`)?o.value:h.value===void 0?``:h.value}x(()=>{B()}),b(()=>{e.autogrow&&z()}),Object.assign(O,{innerValue:h,fieldClass:p(()=>`q-${A.value?`textarea`:`input`}`+(e.autogrow?` q-textarea--autogrow`:``)),hasShadow:p(()=>e.type!==`file`&&typeof e.shadowText==`string`&&e.shadowText.length!==0),inputRef:f,emitValue:L,onClear:R,hasValue:T,floatingLabel:p(()=>T.value&&(e.type!==`number`||Number.isFinite(Number(h.value)))||Mn(e.displayValue)),getControl:()=>N(A.value?`textarea`:`input`,{ref:f,class:[`q-field__native q-placeholder`,e.inputClass],style:e.inputStyle,...te.value,...j.value,...e.type===`file`?w.value:{value:le()}}),getShadowControl:()=>N(`div`,{class:`q-field__native q-field__shadow absolute-bottom no-pointer-events`+(A.value?``:` text-no-wrap`)},[N(`span`,{class:`invisible`},le()),N(`span`,e.shadowText)])});let ue=Ln(O);return Object.assign(r,{focus:F,blur:ne,select:re,getNativeElement:()=>f.value}),ye(r,`nativeEl`,()=>f.value),ue}}),er=B({name:`QCardActions`,props:{...be,vertical:Boolean},setup(e,{slots:t}){let n=ge(e),r=p(()=>`q-card__actions ${n.value} q-card__actions--${e.vertical?`vert column`:`horiz row`}`);return()=>N(`div`,{class:r.value},R(t.default))}}),tr=`kobo:network-token`;function nr(){try{return localStorage.getItem(tr)}catch{return null}}function rr(e){try{localStorage.setItem(tr,e)}catch{}}function ir(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 ar(e,t){return t?`${e}${e.includes(`?`)?`&`:`?`}token=${encodeURIComponent(t)}`:e}var or=i(!1);function sr(){or.value=!0}function cr(){or.value=!1}var lr={class:`text-h6`},ur={class:`text-caption text-kobo-3 q-mt-sm`},dr=u({__name:`NetworkLoginDialog`,setup(t){let{t:n}=e(),a=p({get:()=>or.value,set:e=>{e||cr()}}),o=i(``),s=i(!1),l=i(!1),u=i(``);async function d(){let e=o.value.trim();if(e){s.value=!0,l.value=!1;try{let t=await fetch(`/api/settings/network/ping`,{headers:{"X-Kobo-Token":e}});if(t.ok){rr(e),cr(),window.location.reload();return}u.value=t.status===401?n(`network.login.invalid`):n(`network.login.serverError`),l.value=!0}catch{u.value=n(`network.login.unreachable`),l.value=!0}finally{s.value=!1}}}return(e,t)=>(S(),_(tn,{modelValue:a.value,"onUpdate:modelValue":t[1]||=e=>a.value=e,persistent:``},{default:O(()=>[D(kt,{style:{"min-width":`320px`,"max-width":`90vw`}},{default:O(()=>[D(W,null,{default:O(()=>[T(`div`,lr,c(r(n)(`network.login.title`)),1),T(`div`,ur,c(r(n)(`network.login.description`)),1)]),_:1}),D(W,null,{default:O(()=>[D($n,{modelValue:o.value,"onUpdate:modelValue":t[0]||=e=>o.value=e,label:r(n)(`network.login.tokenLabel`),placeholder:r(n)(`network.login.tokenPlaceholder`),error:l.value,"error-message":u.value,autofocus:``,dense:``,outlined:``,onKeyup:h(d,[`enter`])},null,8,[`modelValue`,`label`,`placeholder`,`error`,`error-message`])]),_:1}),D(er,{align:`right`},{default:O(()=>[D(xe,{label:r(n)(`network.login.connect`),color:`primary`,loading:s.value,unelevated:``,onClick:d},null,8,[`label`,`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]))}}),fr=Ie(`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}}}),pr=B({name:`QAvatar`,props:{...L,fontSize:String,color:String,textColor:String,icon:String,square:Boolean,rounded:Boolean},setup(e,{slots:t}){let n=ie(e),r=p(()=>`q-avatar`+(e.color?` bg-${e.color}`:``)+(e.textColor?` text-${e.textColor} q-chip--colored`:``)+(e.square?` q-avatar--square`:e.rounded?` rounded-borders`:``)),i=p(()=>e.fontSize?{fontSize:e.fontSize}:null);return()=>{let a=e.icon===void 0?void 0:[N(pe,{name:e.icon})];return N(`div`,{class:r.value,style:n.value},[N(`div`,{class:`q-avatar__content row flex-center overflow-hidden`,style:i.value},we(t.default,a))])}}}),mr=0,hr={},gr={},K={},_r={},vr=/^\s*$/,yr=[],br=[void 0,null,!0,!1,``],xr=[`top-left`,`top-right`,`bottom-left`,`bottom-right`,`top`,`bottom`,`left`,`right`,`center`],Sr=[`top-left`,`top-right`,`bottom-left`,`bottom-right`],Cr={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 wr(e,t,n){if(!e)return Dr(`parameter required`);let r,i={textColor:`white`};if(e.ignoreDefaults||Object.assign(i,hr),U(e)||(i.type&&Object.assign(i,Cr[i.type]),e={message:e}),Object.assign(i,Cr[e.type||i.type],e),typeof i.icon==`function`&&(i.icon=i.icon(t)),i.spinner=i.spinner?i.spinner===!0?Ce:s(i.spinner):!1,i.meta={hasMedia:!!(i.spinner||i.icon||i.avatar),hasText:Er(i.message)||Er(i.caption)},i.position){if(!xr.includes(i.position))return Dr(`wrong position`,e)}else i.position=`bottom`;if(br.includes(i.timeout))i.timeout=5e3;else{let t=Number.parseFloat(i.timeout);if(!Number.isFinite(t)||t<0)return Dr(`wrong timeout`,e);i.timeout=t}i.timeout===0?i.progress=!1:i.progress&&(i.meta.progressClass=`q-notification__progress`+(i.progressClass?` ${i.progressClass}`:``),i.meta.progressStyle={animationDuration:`${i.timeout+1e3}ms`});let a=[...Array.isArray(e.actions)?e.actions:[],...!e.ignoreDefaults&&Array.isArray(hr.actions)?hr.actions:[],...Array.isArray(Cr[e.type]?.actions)?Cr[e.type].actions:[]],{closeBtn:o}=i;if(o&&a.push({label:typeof o==`string`?o:t.lang.label.close}),i.actions=a.map(({handler:e,noDismiss:t,...n})=>({flat:!0,...n,onClick:typeof e==`function`?()=>{e(),t||c()}:()=>{c()}})),i.multiLine===void 0&&(i.multiLine=i.actions.length>1),Object.assign(i.meta,{class:`q-notification row items-stretch q-notification--${i.multiLine?`multi-line`:`standard`}`+(i.color===void 0?``:` bg-${i.color}`)+(i.textColor===void 0?``:` text-${i.textColor}`)+(i.classes===void 0?``:` ${i.classes}`),wrapperClass:`q-notification__wrapper col relative-position border-radius-inherit `+(i.multiLine?`column no-wrap justify-center`:`row items-center`),contentClass:`q-notification__content row items-center`+(i.multiLine?``:` col`),leftClass:i.meta.hasText?`additional`:`single`,attrs:{role:`alert`,...i.attrs}}),i.group===!1?(i.group=void 0,i.meta.group=void 0):((i.group===void 0||i.group===!0)&&(i.group=[i.message,i.caption,i.multiLine,...i.actions.map(e=>`${e.label}*${e.icon}`)].join(`|`)),i.meta.group=i.group+`|`+i.position),i.actions.length===0?i.actions=void 0:i.meta.actionsClass=`q-notification__actions row items-center `+(i.multiLine?`justify-end`:`col-auto`)+(i.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),i.meta.uid=n.notif.meta.uid;let e=K[i.position].value.indexOf(n.notif);K[i.position].value[e]=i}else{let t=gr[i.meta.group];if(t===void 0){if(i.meta.uid=mr++,i.meta.badge=1,[`left`,`right`,`center`].includes(i.position))K[i.position].value.splice(Math.floor(K[i.position].value.length/2),0,i);else{let e=i.position.includes(`top`)?`unshift`:`push`;K[i.position].value[e](i)}i.group!==void 0&&(gr[i.meta.group]=i)}else{if(t.meta.timer&&(clearTimeout(t.meta.timer),t.meta.timer=void 0),i.badgePosition!==void 0){if(!Sr.includes(i.badgePosition))return Dr(`wrong badgePosition`,e)}else i.badgePosition=`top-${i.position.includes(`left`)?`right`:`left`}`;i.meta.uid=t.meta.uid,i.meta.badge=t.meta.badge+1,i.meta.badgeClass=`q-notification__badge q-notification__badge--${i.badgePosition}`+(i.badgeColor===void 0?``:` bg-${i.badgeColor}`)+(i.badgeTextColor===void 0?``:` text-${i.badgeTextColor}`)+(i.badgeClass?` ${i.badgeClass}`:``);let n=K[i.position].value.indexOf(t);K[i.position].value[n]=gr[i.meta.group]=i}}let c=()=>{Tr(i),r=void 0};if(i.timeout>0&&(i.meta.timer=setTimeout(()=>{i.meta.timer=void 0,c()},i.timeout+1e3)),i.group!==void 0)return t=>{t===void 0?c():Dr(`trying to update a grouped one which is forbidden`,e)};if(r={dismiss:c,config:e,notif:i},n!==void 0){Object.assign(n,r);return}return e=>{r!==void 0&&(e===void 0?r.dismiss():wr({...r.config,...e,group:!1,position:i.position},t,r))}}function Tr(e){e.meta.timer&&(clearTimeout(e.meta.timer),e.meta.timer=void 0);let t=K[e.position].value.indexOf(e);if(t!==-1){e.group!==void 0&&delete gr[e.meta.group];let n=yr[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}K[e.position].value.splice(t,1),typeof e.onDismiss==`function`&&e.onDismiss()}}function Er(e){return e!=null&&!vr.test(e)}function Dr(e,t){return console.error(`Notify: ${e}`,t),!1}function Or(){return B({name:`QNotifications`,devtools:{hide:!0},setup(){return()=>N(`div`,{class:`q-notifications`},xr.map(e=>N(j,{key:e,class:_r[e],tag:`div`,name:`q-notification--${e}`},()=>K[e].value.map(e=>{let t=e.meta,n=[];if(t.hasMedia&&(e.spinner?n.push(N(e.spinner,{class:`q-notification__spinner q-notification__spinner--`+t.leftClass,color:e.spinnerColor,size:e.spinnerSize})):e.icon?n.push(N(pe,{class:`q-notification__icon q-notification__icon--`+t.leftClass,name:e.icon,color:e.iconColor,size:e.iconSize,role:`img`})):e.avatar&&n.push(N(pr,{class:`q-notification__avatar q-notification__avatar--`+t.leftClass},()=>N(`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?[N(`div`,n),N(`div`,{class:`q-notification__caption`},[e.caption])]:n}n.push(N(`div`,r,t))}let r=[N(`div`,{class:t.contentClass},n)];return e.progress&&r.push(N(`div`,{key:`${t.uid}|p|${t.badge}`,class:t.progressClass,style:t.progressStyle})),e.actions&&r.push(N(`div`,{class:t.actionsClass},e.actions.map(e=>N(xe,e)))),t.badge>1&&r.push(N(`div`,{key:`${t.uid}|${t.badge}`,class:e.meta.badgeClass,style:e.badgeStyle},[t.badge])),N(`div`,{ref:e=>{yr[String(t.uid)]=e},key:t.uid,class:t.class,...t.attrs},[N(`div`,{class:t.wrapperClass},r)])}))))}})}var kr={setDefaults(e){U(e)&&Object.assign(hr,e)},registerType(e,t){U(t)&&(Cr[e]=t)},install({$q:e,parentApp:t}){if(e.notify=this.create=t=>wr(t,e),e.notify.setDefaults=this.setDefaults,e.notify.registerType=this.registerType,e.config.notify!==void 0&&this.setDefaults(e.config.notify),!this.__installed){xr.forEach(e=>{K[e]=i([]);let t=e===`left`||e===`center`||e===`right`?`center`:e.includes(`top`)?`top`:`bottom`,n=e.includes(`left`)?`start`:e.includes(`right`)?`end`:`center`;_r[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=_e(`q-notify`);St(Or(),t).mount(e)}}},Ar={"model.tooltip":`Modell, das der Agent für diesen Workspace verwendet`,"reasoning.tooltip":`Denkaufwand des Agenten für diesen Workspace`,"thinking.label":`Überlegung`,"thinking.noDetails":`Der Agent denkt nach…`,"common.save":`Speichern`,"common.cancel":`Abbrechen`,"common.retry":`Erneut versuchen`,"common.delete":`Löschen`,"common.close":`Schließen`,"common.dismiss":`Verwerfen`,"common.details":`Details`,"common.ok":`OK`,"whatsNew.title":`Neuigkeiten`,"common.loading":`Laden...`,"common.search":`Suchen...`,"common.refresh":`Aktualisieren`,"common.copy":`Kopieren`,"common.copied":`In die Zwischenablage kopiert`,"common.copyFailed":`Kopieren fehlgeschlagen`,"common.add":`Hinzufügen`,"folderPicker.title":`Ordner auswählen`,"folderPicker.parent":`Übergeordneter Ordner`,"folderPicker.empty":`Keine Unterordner`,"folderPicker.select":`Diesen Ordner auswählen`,"common.start":`Starten`,"common.stop":`Stoppen`,"common.archive":`Archivieren`,"common.unarchive":`Wiederherstellen`,"common.selectWorkspace":`Arbeitsbereich auswählen`,"common.noResults":`Keine Ergebnisse für „{query}"`,"common.send":`senden`,"common.newLine":`neue Zeile`,"common.history":`Verlauf`,"common.justNow":`gerade eben`,"common.minutesAgo":`vor {count}m`,"common.hoursAgo":`vor {count}h`,"common.daysAgo":`vor {count}T`,"model.auto":`Auto`,"model.fable5":`Fable 5`,"model.mythos5":`Mythos 5 (Glasswing)`,"model.fable5Description":`Leistungsfähigstes Modell — Nachfolger von Opus 4.8, 1M Kontext, adaptive thinking`,"model.mythos5Description":`Fable 5 ohne Sicherheitsklassifikatoren — eingeschränkter Zugriff (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 wählt das optimale Modell`,"model.opus5Description":`Für komplexes agentisches Coding und Unternehmenseinsätze, 1M Kontext`,"model.opus48Description":`Leistungsfähigstes Opus — Long-Horizon-Coding, 1M-Kontext standardmäßig, hoher Effort standardmäßig`,"model.opus47ClassicDescription":`Neuestes Opus, am leistungsfähigsten`,"model.opus471mDescription":`Neuestes Opus, 1M Kontext`,"model.opusClassicDescription":`Am leistungsstärksten`,"model.opus1mDescription":`Am leistungsstärksten, 1M Kontext`,"model.sonnet5Description":`Beste Mischung aus Geschwindigkeit und Intelligenz, 1M Kontext`,"model.sonnetClassicDescription":`Ausgewogen`,"model.sonnet1mDescription":`Ausgewogen, 1M Kontext`,"model.haikuDescription":`Am schnellsten`,"model.gpt56sol":`GPT-5.6 Sol`,"model.gpt56solDescription":`Neuestes Spitzenmodell für agentisches Coding (erfordert ChatGPT-Anmeldung)`,"model.gpt56terra":`GPT-5.6 Terra`,"model.gpt56terraDescription":`Ausgewogenes agentisches Coding-Modell für den Alltag (erfordert ChatGPT-Anmeldung)`,"model.gpt56luna":`GPT-5.6 Luna`,"model.gpt56lunaDescription":`Schnelles und günstiges agentisches Coding-Modell (erfordert ChatGPT-Anmeldung)`,"model.gpt55":`GPT-5.5`,"model.gpt55Description":`Empfohlen für komplexes Coding (erfordert ChatGPT-Anmeldung)`,"model.gpt54":`GPT-5.4`,"model.gpt54Description":`Standard-Fallback — starkes Reasoning, funktioniert mit API-Key-Authentifizierung`,"model.gpt54mini":`GPT-5.4 mini`,"model.gpt54miniDescription":`Schnell und effizient — ideal für reaktive Aufgaben und Subagenten`,"model.gpt52":`GPT-5.2`,"model.gpt52Description":`Optimiert für professionelle Arbeit und langlaufende Agenten`,"model.gpt53codex":`GPT-5.3 Codex`,"model.gpt53codexDescription":`Auf Coding spezialisiertes Modell für komplexe Softwareentwicklung`,"reasoning.auto":`auto`,"reasoning.minimal":`minimal`,"reasoning.none":`keine`,"reasoning.low":`low`,"reasoning.medium":`medium`,"reasoning.high":`high`,"reasoning.xhigh":`xhigh`,"reasoning.max":`max`,"reasoning.autoDescription":`Engine entscheidet automatisch`,"reasoning.minimalDescription":`Schnellstes, oberflächlichstes Reasoning`,"reasoning.noneDescription":`Ohne zusätzliches Reasoning`,"reasoning.lowDescription":`Schneller, weniger Tiefe`,"reasoning.mediumDescription":`Ausgewogen`,"reasoning.highDescription":`Mehr Tiefe`,"reasoning.xhighDescription":`Erweiterte Tiefe, langfristige Aufgaben`,"reasoning.maxDescription":`Maximale Tiefe`,"agentPermissionMode.label":`Berechtigungsmodus`,"agentPermissionMode.plan":`Plan`,"agentPermissionMode.bypass":`Bypass`,"agentPermissionMode.strict":`Edits akzeptieren`,"agentPermissionMode.interactive":`Interaktiv`,"agentPermissionMode.tooltip":`Wie der Agent Tool-Berechtigungen handhabt. Plan: schreibgeschützt, keine Schreibvorgänge. Bypass: alle Nachfragen überspringen. Strict: Datei-Edits automatisch akzeptieren, allow/deny für den Rest beachten. Interaktiv: vor jedem Tool den Benutzer per Berechtigungs-Panel fragen.`,"agentPermissionMode.autoLoopOverride":`Auto-Loop erzwingt einen Modus außer Plan — Plan blockiert MCP-Tools und Edits, die der Loop benötigt. Wähle stattdessen Bypass, Strict oder Interaktiv.`,"agentPermissionMode.autoLoopLocked":`Auf Bypass gesperrt, solange Auto-Loop aktiv ist — jeder andere Modus würde den Loop bei Berechtigungsabfragen anhalten. AskUserQuestion funktioniert weiterhin.`,"workspaceList.title":`Arbeitsbereiche`,"workspaceList.a11y.groupToggle":`Gruppe {group}, {count} Workspaces`,"workspaceList.a11y.list":`Workspaces`,"workspaceList.a11y.card":`{name}, {status}`,"workspaceList.needsAttention":`Aufmerksamkeit erforderlich`,"workspaceList.running":`Aktiv`,"workspaceList.idle":`Inaktiv`,"workspaceList.archived":`Archiviert`,"workspaceList.archivedToast":`„{name}“ archiviert`,"workspaceList.archivedUndo":`Rückgängig`,"workspaceList.unarchiveFailed":`Workspace konnte nicht dearchiviert werden`,"workspaceList.noWorkspaces":`Noch keine Arbeitsbereiche`,"workspaceList.loadFailed":`Deine Workspaces konnten nicht geladen werden`,"workspaceList.loadFailedHint":`Das ist ein Verbindungsfehler, kein leeres Konto.`,"workspaceList.footer":`{count} Arbeitsbereich | {count} Arbeitsbereiche`,"workspaceList.footerRunning":`{count} aktiv`,"workspaceList.deleteDialog.title":`Arbeitsbereich löschen?`,"workspaceList.deleteDialog.deleteLocal":`Lokalen Branch löschen`,"workspaceList.deleteDialog.deleteRemote":`Remote-Branch löschen`,"workspaceList.deleteDialog.warning":`Achtung: Diese Aktion ist auf dem Remote unwiderruflich.`,"workspaceList.deleteArchivedDialog.tooltip":`Alle archivierten Arbeitsbereiche löschen`,"workspaceList.deleteArchivedDialog.title":`Alle archivierten Arbeitsbereiche löschen?`,"workspaceList.deleteArchivedDialog.message":`Dadurch werden die {count} archivierten Arbeitsbereiche endgültig gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.`,"workspacePage.selectWorkspace":`Arbeitsbereich auswählen, um zu beginnen`,"workspacePage.commandPalettePlaceholder":`Befehle suchen…`,"workspacePage.commandPaletteEmpty":`Kein passender Befehl`,"workspacePage.commandFocusChat":`Chat-Eingabe fokussieren`,"workspacePage.commandSearchHistory":`Workspace-Verlauf durchsuchen`,"workspacePage.commandTogglePanel":`Seitenleiste ein- oder ausblenden`,"workspacePage.commandStartAgent":`Agent starten`,"workspacePage.commandStopAgent":`Agent stoppen`,"workspacePage.commandOpenSettings":`Einstellungen öffnen`,"workspacePage.commandOpenCreate":`Workspace erstellen`,"workspacePage.commandOpenSearch":`Globale Suche`,"workspacePage.commandOpenHealth":`Health-Seite`,"workspacePage.commandOpenChangelog":`Changelog`,"workspacePage.commandGroupWorkspaces":`Zu einem Workspace wechseln`,"workspacePage.commandPaletteHint":`Befehlspalette`,"workspacePage.session":`Sitzung #{n}`,"workspacePage.newSession":`+ Neue Sitzung`,"workspacePage.renameSession":`Umbenennen`,"workspacePage.renameSessionTitle":`Sitzung umbenennen`,"workspacePage.sessionNameLabel":`Sitzungsname`,"workspacePage.sessionEndedNotice":`Diese Sitzung ist beendet. Erstelle eine neue Sitzung um fortzufahren.`,"workspacePage.renameFailed":`Umbenennung fehlgeschlagen`,"workspacePage.copySessionId":`Sitzungs-ID kopieren`,"workspacePage.deleteSession":`Sitzung löschen`,"workspacePage.deleteSessionTitle":`Sitzung löschen?`,"workspacePage.deleteSessionConfirm":`Diese Sitzung und ihr Gesprächsverlauf werden dauerhaft gelöscht.`,"workspacePage.deleteSessionFailed":`Sitzung konnte nicht gelöscht werden`,"workspacePage.noEngineSessionId":`Noch keine Sitzungs-ID — der Agent hat diese Sitzung noch nicht gestartet`,"workspacePage.createSessionFailed":`Sitzung konnte nicht erstellt werden`,"workspacePage.startFailed":`Start fehlgeschlagen`,"workspacePage.stopFailed":`Stopp fehlgeschlagen`,"workspacePage.interrupt":`Unterbrechen`,"workspacePage.interrupted":`Agent unterbrochen — wartet auf Ihre nächste Nachricht`,"workspacePage.lastAgentEvent":`Letztes Ereignis {when}`,"workspacePage.agentStopping":`Wird gestoppt…`,"workspacePage.agentNotRunning":`Kein Agent-Prozess — der Status ist veraltet`,"workspacePage.archivedBanner":`Archivierter Workspace — schreibgeschützt`,"workspacePage.worktreePurgedBanner":`Worktree gelöscht — Verlauf erhalten, keine Wiederherstellung in dieser Version`,"workspacePage.worktreePurgedTooltip":"Der Worktree-Ordner wurde von der Festplatte gelöscht, um Speicherplatz zurückzugewinnen. Chat-Verlauf, Sitzungen und PR-Metadaten bleiben hier abrufbar, aber das Arbeitsverzeichnis existiert lokal nicht mehr. Eine zukünftige Kōbō-Version wird den Worktree aus der gemergten PR wiederherstellen können — vorerst musst du ihn manuell über `gh pr checkout` oder `git worktree add` neu erstellen.","workspacePage.pendingInitialPromptBanner":`Ein anfänglicher Prompt ist ausstehend — der Agent hat ihn nie erhalten (Setup-Script abgestürzt oder Workspace nie gestartet). Klicke auf Start, um ihn jetzt zu senden.`,"workspacePage.unarchived":`Workspace dearchiviert`,"workspacePage.unarchiveFailed":`Dearchivierung fehlgeschlagen`,"workspacePage.interruptFailed":`Unterbrechung fehlgeschlagen`,"workspacePage.interruptHint":`Den laufenden Zug unterbrechen, ohne die Sitzung zu beenden.`,"workspacePage.interruptTooltip":`Sanfte Unterbrechung (wie Escape) — stoppt das aktuelle Tool, hält die Sitzung aktiv`,"workspacePage.pendingNextRun":`Beim nächsten Start angewendet`,"workspacePage.activeSessionModel":`Aktiv: {model}`,"workspacePage.activeSessionModelTooltip":`Modell, das von der ausgewählten Sitzung tatsächlich verwendet wird`,"workspacePage.switchEngine":`Engine wechseln`,"workspacePage.switchEngineHint":`Diesen Workspace mit einer anderen Agent-Engine fortsetzen`,"workspacePage.moreActions":`Weitere Aktionen`,"workspacePage.switchEngineTitle":`Agent-Engine wechseln`,"workspacePage.switchEngineWarning":`Der aktuelle Agent wird gestoppt und eine neue Sitzung startet im selben Worktree.`,"workspacePage.engineLabel":`Engine`,"workspacePage.engineClaude":`Claude Code`,"workspacePage.engineCodex":`Codex`,"workspacePage.engineHandoff":`Übergabe für die neue Engine`,"workspacePage.engineHandoffHint":`Überprüfen oder bearbeiten Sie den Kontext für den neuen Agenten.`,"workspacePage.confirmSwitchEngine":`Engine wechseln`,"workspacePage.switchEngineFailed":`Engine-Wechsel fehlgeschlagen`,"whip.dispatchFailed":`Peitschen-Nachricht konnte nicht gesendet werden`,"whip.phrase1":`Schneller, tocard!`,"whip.phrase2":`Leg einen Zahn zu, tocard!`,"whip.phrase3":`Zurück an die Arbeit, tocard!`,"whip.phrase4":`Zeig etwas Tempo, tocard!`,"whip.phrase5":`Weniger denken, mehr machen, tocard!`,"search.title":`Suche`,"search.tooltip":`Agent-Verlauf durchsuchen`,"search.placeholder":`In allen Agent-Nachrichten suchen…`,"search.includeArchived":`Archivierte Arbeitsbereiche einbeziehen`,"search.loading":`Suche läuft…`,"search.noResults":`Keine Treffer`,"search.error":`Suche fehlgeschlagen: {message}`,"search.resultCount":`{n} Treffer`,"search.eventType.userMessage":`Sie`,"search.eventType.agentOutput":`Agent`,"activityFeed.empty":`Noch keine Aktivität`,"activityFeed.emptyHint":`Starten Sie einen Arbeitsbereich, um die Agentenausgabe hier zu sehen`,"activityFeed.initialPrompt":`Initialer Prompt`,"activityFeed.you":`Sie`,"activityFeed.agent":`Agent`,"activityFeed.question":`Frage`,"activityFeed.goToPrevious":`Zur vorherigen Nachricht`,"activityFeed.scrollToBottom":`Nach unten scrollen`,"activityFeed.sendAnswers":`Antworten senden`,"agentBusy.banner":`Agent ist beschäftigt`,"agentBusy.subagentsRunning":`1 Sub-Agent aktiv | {n} Sub-Agents aktiv`,"agentBusy.viewSubagents":`Sub-Agents anzeigen`,"agentBusy.pendingMessage":`Warten — Agent ist beschäftigt`,"terminal.title":`Terminal`,"terminal.open":`Terminal öffnen`,"terminal.close":`Terminal schließen`,"terminal.noWorkspace":`Workspace auswählen`,"terminal.noWorktree":`Worktree noch nicht erstellt`,"terminal.error":`Terminalfehler`,"terminal.exited":`Terminal beendet`,"terminal.disconnected":`Verbindung verloren`,"terminal.reconnecting":`Verbindungsaufbau… (Versuch {attempt} von {max})`,"terminal.reconnect":`Neu verbinden`,"chatInput.placeholder":`Nachricht... (/ für Skills)`,"chatInput.fileSearchHint":`Datei suchen`,"chatInput.skills":`Skills`,"chatInput.attachImage":`Bild anhängen`,"chatInput.queueBanner":`Nachricht in Warteschlange — wird gesendet, wenn der Agent fertig ist`,"chatInput.forceQueue":`Senden erzwingen`,"chatInput.searchHistory":`suchen`,"chatInput.commandPalette":`Befehle`,"chatInput.shortcuts":`Tastenkürzel`,"chatInput.cancelQueue":`Warteschlange abbrechen`,"chatInput.autoLoopBanner":`Auto-Loop läuft — beende ihn, um eine Nachricht zu senden`,"chatInput.awaitingUserBanner":`Der Agent wartet auf deine Antwort oben — antworte über das Fragefenster`,"chatInput.autoLoopStop":`Beenden`,"koboCommand.checkProgressDesc":`Fortschritt bei Aufgaben und Akzeptanzkriterien prüfen`,"chatInput.uploading":`Wird hochgeladen...`,"voice.title":`Sprachtranskription`,"voice.enabled":`Lokale Sprachtranskription aktivieren`,"voice.pttKey":`Push-to-talk-Taste`,"voice.pttAlt":`Alt`,"voice.pttCtrlSpace":`Strg+Leertaste`,"voice.language":`Sprache (auto oder Code)`,"voice.model":`Aktives Modell`,"voice.commandPath":`Pfad zur Whisper-Binärdatei (optional)`,"voice.ffmpegPath":`Pfad zur ffmpeg-Binärdatei (optional)`,"voice.temperature":`Temperatur`,"voice.temperatureHint":`Niedriger = deterministischer, höher = flexibler, aber potenziell weniger stabil.`,"voice.initialPrompt":`Initial Prompt (optional)`,"voice.initialPromptHint":`Optionaler Kontext, um Whisper bei Namen, Fachbegriffen oder domänenspezifischem Vokabular zu helfen.`,"voice.translateToEnglish":`Ins Englische übersetzen`,"voice.translateToEnglishHint":`Wenn aktiviert, wird nicht-englische Sprache ins Englische übersetzt statt originalgetreu transkribiert.`,"voice.suppressNst":`Nicht-Sprach-Tokens unterdrücken`,"voice.suppressNstHint":`Versucht, Nicht-Sprach-Artefakte im Transkript zu reduzieren.`,"voice.installLink":`whisper.cpp installieren`,"voice.installGuideTitle":`Installationsanleitung`,"voice.installGuideIntro":`Installiere whisper.cpp und ffmpeg und setze bei Bedarf unten die Binärpfade.`,"voice.installGuideUbuntuTitle":`Ubuntu / Debian`,"voice.installGuideWindowsTitle":`Windows`,"voice.installGuideBinaryPathHint":`Nach dem CMake-Build liegt die Whisper-Binärdatei üblicherweise hier: whisper.cpp/build/bin/whisper-cli`,"voice.installGuideSettingsHint":`Danach in diesem Bereich „Pfad zur Whisper-Binärdatei“ und „Pfad zur ffmpeg-Binärdatei“ setzen (oder leer lassen, wenn im PATH).`,"voice.noneModel":`Kein aktives Modell`,"voice.notInstalled":`nicht installiert`,"voice.download":`Herunterladen`,"voice.delete":`Löschen`,"voice.holdToTalk":`Zum Sprechen gedrückt halten`,"voice.recording":`Aufnahme...`,"voice.transcribing":`Transkription...`,"voice.notSupported":`Sprachaufnahme wird in diesem Browser nicht unterstützt`,"voice.errorMicPermission":`Mikrofonberechtigung verweigert`,"voice.errorTranscription":`Sprachtranskription fehlgeschlagen`,"voice.downloadFailed":`Modelldownload fehlgeschlagen`,"voice.deleteFailed":`Modell konnte nicht gelöscht werden`,"voice.errorDisabled":`Sprachtranskription ist in den Einstellungen deaktiviert`,"voice.errorModelMissing":`Kein aktives Sprachmodell konfiguriert`,"voice.errorModelNotInstalled":`Das aktive Sprachmodell ist nicht installiert`,"voice.errorAudioInvalid":`Audioaufnahme ist ungültig oder leer`,"voice.errorLanguageInvalid":`Sprachkonfiguration ist ungültig`,"voice.errorRuntimeMissing":`Whisper-Runtime ist nicht installiert oder nicht im PATH`,"voice.maxDurationReached":`Maximale Aufnahmedauer erreicht`,"voice.runtimeReady":`Runtime bereit: {command}`,"voice.runtimeMissing":`Runtime fehlt: {command}`,"voice.ffmpegReady":`ffmpeg bereit`,"voice.ffmpegMissing":`ffmpeg fehlt`,"voice.sectionRuntime":`Runtime-Status`,"voice.sectionActivation":`Aktivierung`,"voice.sectionModels":`Whisper-Modelle`,"voice.sectionAdvanced":`Erweiterte Optionen`,"voice.sectionBehavior":`Transkriptionsverhalten`,"voice.sectionBinaries":`Binärpfade`,"voice.downloadModels":`Modell herunterladen`,"voice.cancelFailed":`Abbrechen des Downloads fehlgeschlagen`,"createPage.title":`Workspace erstellen`,"createPage.subtitle":`Beschreiben Sie die Aufgabe, wählen Sie ein Projekt und konfigurieren Sie den Agenten.`,"createPage.sectionMission":`Aufgabe`,"createPage.sectionMissionHint":`Geben Sie dem Agenten ein klares Ziel und den erforderlichen Kontext.`,"createPage.workspaceNameLabel":`Workspace-Name`,"createPage.descriptionLabel":`Aufgabenbeschreibung`,"createPage.sources":`Optionale Quellen`,"createPage.sectionGit":`Git-Projekt`,"createPage.sectionGitHint":`Wählen Sie Repository, Ausgangsbranch und Worktree-Modus.`,"createPage.worktreeMode":`Worktree-Modus`,"createPage.worktreeNew":`Neuer isolierter Worktree`,"createPage.worktreeExisting":`Vorhandenen Worktree verwenden`,"createPage.projectLabel":`Projekt`,"createPage.sourceBranch":`Ausgangsbranch`,"createPage.workingBranchPreview":`Vorschau des Arbeitsbranches`,"createPage.branchNamePending":`workspace-name`,"createPage.sectionAgent":`Agent`,"createPage.sectionAgentHint":`Prüfen Sie die Ausführungsvorgaben oder aktivieren Sie die Automatisierung.`,"createPage.configureAgent":`Agent konfigurieren`,"createPage.advancedOptions":`Erweiterte Optionen`,"createPage.keyboardHint":`Drücken Sie Strg/Cmd + Enter, um den Workspace zu erstellen.`,"createPage.createWorkspace":`Workspace erstellen`,"createPage.notionEnabled":`Notion aktiviert`,"createPage.importNotion":`Aus Notion importieren`,"createPage.notionPlaceholder":`https://www.notion.so/workspace/Page-title-abc123...`,"createPage.notionValidation":`Die URL muss mit https://www.notion.so/ oder https://app.notion.com/ beginnen`,"createPage.notionAutoExtract":`Unteraufgaben und Akzeptanzkriterien werden automatisch extrahiert.`,"createPage.notionPanelChoiceLabel":`Diese URL verweist auf eine Unterseite (?p=). An welcher möchtest du arbeiten?`,"createPage.notionPanelOption":`Unterseite (Panel)`,"createPage.notionPanelOptionDesc":`Die Seite, die du angesehen hast — empfohlen`,"createPage.notionParentOption":`Übergeordnete Seite`,"createPage.notionParentOptionDesc":`Das Epic / die Datenbank dazu`,"createPage.importSentry":`Sentry importieren`,"createPage.sentryEnabled":`Sentry aktiviert`,"createPage.sentryPlaceholder":`https://ihre-org.sentry.io/issues/123456`,"createPage.sentryValidation":`Die URL muss auf ein Sentry-Issue zeigen (/issues/<id>)`,"createPage.sentryAutoExtract":`Sentry-Issue wird automatisch importiert`,"createPage.sentryExtractHint":`Kobo extrahiert das Issue und schreibt es nach .ai/thoughts/`,"createPage.importPr":`Aus einem PR importieren`,"createPage.importPrRequiresProject":`Zuerst ein Projekt auswählen`,"createPage.importPrNotSupported":`Die Forge dieses Projekts unterstützt das Auflisten von Pull Requests nicht`,"createPage.lockedToPr":`Gesperrt auf PR #{number}`,"createPage.prReadyToCreate":`PR #{number} importiert — der Workspace kann erstellt werden.`,"createPage.unlockPrCheckout":`Entsperren`,"createPage.workspaceName":`Name des Arbeitsbereichs (Standard: Notion-Seitentitel)`,"createPage.workspaceNamePlaceholder":`Name des Arbeitsbereichs...`,"createPage.instructions":`Zusätzliche Anweisungen (optional)...`,"createPage.instructionsPlaceholder":`Aufgabe beschreiben...`,"createPage.tasks":`Aufgaben ({count})`,"createPage.addTask":`Aufgabe hinzufügen...`,"createPage.acceptanceCriteria":`Akzeptanzkriterien ({count})`,"createPage.addCriterion":`Kriterium hinzufügen...`,"createPage.projectPath":`Projektpfad eingeben`,"createPage.branchType":`Branch-Typ`,"createPage.branch":`Branch`,"createPage.noBranches":`Keine Branches gefunden`,"createPage.enterPath":`Projektpfad eingeben`,"createPage.skipSetupScript":`Setup-Skript überspringen`,"createPage.worktreePickerLabel":`Bestehender Worktree`,"createPage.noOrphanWorktrees":`Kein verwaister Worktree in diesem Projekt`,"createPage.pickWorktreeRequired":`Bitte einen Worktree zum Anhängen auswählen`,"createPage.notionExtractHint":`Unteraufgaben und Akzeptanzkriterien werden aus der Notion-Seite extrahiert.`,"createPage.errorCreating":`Fehler beim Erstellen des Arbeitsbereichs.`,"createPage.branchAdjusted":"Branch existierte bereits — stattdessen `{branch}` erstellt. Der zugehörige Worktree-Ordner verwendet das gleiche Suffix.","createPage.localSourceFallback":`Workspace vom lokalen Branch erstellt (origin nicht erreichbar) — die Basis ist möglicherweise veraltet.`,"createPage.validationNotionUrl":`Bitte eine gültige Notion-URL einfügen (https://www.notion.so/... oder https://app.notion.com/...).`,"createPage.validationDescription":`Bitte beschreiben Sie die Aufgabe.`,"createPage.validationName":`Bitte geben Sie einen Arbeitsbereichnamen an.`,"createPage.validationPath":`Bitte geben Sie den Projektpfad ein.`,"createPage.validationBranch":`Bitte wählen Sie einen Branch aus.`,"createPage.validationFocusHint":`Das zu korrigierende Feld ist unten hervorgehoben.`,"createPage.progress.validate":`Anfrage wird geprüft…`,"createPage.progress.fetch-source-branch":`Source-Branch wird von origin geholt…`,"createPage.progress.inspect-worktree":`Bestehender Worktree wird geprüft…`,"createPage.progress.extract-notion":`Notion-Seite wird extrahiert…`,"createPage.progress.extract-sentry":`Sentry-Issue wird extrahiert…`,"createPage.progress.create-record":`Workspace wird erstellt…`,"createPage.progress.create-tasks":`Tasks und Akzeptanzkriterien werden erstellt…`,"createPage.progress.create-worktree":`Git-Worktree wird erstellt…`,"createPage.progress.write-conventions":`Git-Konventionen werden geschrieben…`,"createPage.progress.write-context-files":`Kontextdateien werden geschrieben…`,"createPage.progress.build-prompt":`Initialer Prompt wird erstellt…`,"createPage.progress.setup-script":`Dein Setup-Skript läuft…`,"createPage.progress.start-agent":`Agent wird gestartet…`,"createPage.progress.rollback":`Fehlgeschlagene Erstellung wird rückgängig gemacht…`,"createPage.progress.done":`Fertig`,"createPage.progress.step":`Schritt {index} von {total}`,"createPage.errorAtStep":`Erstellung im Schritt „{step}“ fehlgeschlagen: {message}`,"createPage.override.title":`Zwei deiner Einstellungen wurden überschrieben`,"createPage.override.setup-script-forced":`Setup-Skript übersprungen: ein erneuter Lauf auf einem bereits vorbereiteten Worktree könnte dessen Inhalt zerstören.`,"createPage.override.permission-mode-downgraded":`Berechtigungsmodus von Plan auf Bypass geändert: eine autonome Schleife kann nicht in Plan laufen, der Tools und Änderungen blockiert.`,"settings.title":`Einstellungen`,"settings.language":`Sprache`,"settings.projectColor":`Farbe`,"settings.projectColorClear":`Löschen`,"settings.projectColorDefault":`Standard (grau)`,"settings.workspaceListSection":`Workspace-Liste`,"settings.flattenWorkspaceList":`Workspace-Liste flach anzeigen`,"settings.flattenWorkspaceListHint":`Zeigt alle Workspaces in einer flachen Liste mit Projekt-Badge, anstatt nach Projekt gruppiert.`,"settings.skillSuite.section":`Skill-Suite`,"settings.skillSuite.superpowers":`Superpowers`,"settings.skillSuite.gstack":`gstack`,"settings.skillSuite.custom":`Benutzerdefiniert`,"settings.skillSuite.superpowersHint":`Opinionierter TDD / Brainstorm / Plan-Workflow (github.com/obra/superpowers).`,"settings.skillSuite.gstackHint":`Garry Tans Suite — /review, /ship, /qa, /office-hours usw. (github.com/garrytan/gstack).`,"settings.skillSuite.superpowersGstack":`Superpowers + gstack`,"settings.skillSuite.superpowersGstackHint":`Beide Suites lassen sich kombinieren — superpowers für Methodik (Brainstorm / TDD / Pläne / Prinzipien-Review), gstack für konkrete Workflows (/review, /qa, /browse, /design-review, /investigate).`,"settings.skillSuite.ecc":`ECC`,"settings.skillSuite.eccHint":`Agent-Harness-Framework von affaan-m — Agents, Skills, Rules und Hooks zum Planen, Testen, Implementieren, Reviewen und Speichern (github.com/affaan-m/ECC).`,"settings.skillSuite.allThree":`Superpowers + gstack + ECC`,"settings.skillSuite.allThreeHint":`Alle drei lassen sich kombinieren — superpowers für Methodik, gstack für konkrete Workflows, ECC für strukturierte Multi-Agent-Review-/Implementierungsdurchläufe.`,"settings.skillSuite.customHint":`Stelle die fünf Prompts unten aus beliebigen Vorlagen zusammen und bearbeite sie frei.`,"settings.skillSuite.reloadDefaults":`Standard wiederherstellen`,"settings.skillSuite.reloadDefaultsConfirm":`Die fünf benutzerdefinierten Prompts durch die agnostischen Standardwerte ersetzen?`,"settings.skillSuite.customPrompts":`Benutzerdefinierte Prompts`,"settings.skillSuite.agnostic":`Agnostische Basis`,"settings.skillSuite.importPrompt":`Vorlage importieren`,"settings.skillSuite.imported":`Vorlage importiert. Du kannst sie jetzt bearbeiten.`,"settings.skillSuite.importFailed":`Vorlage konnte nicht importiert werden`,"settings.skillSuite.reviewTemplate":`Review-Vorlage`,"settings.skillSuite.autoLoopReviewGate":`Auto-Loop Review-Gate`,"settings.skillSuite.autoLoopGroomingIntro":`Auto-Loop Grooming-Intro`,"settings.skillSuite.qaTemplate":`QA-Vorlage`,"settings.skillSuite.brainstormingInstruction":`Anweisung für die Brainstorming-Phase`,"settings.global":`Allgemein`,"settings.projects":`Projekte`,"settings.globalSettings":`Allgemeine Einstellungen`,"settings.defaultModel":`Standardmodell`,"settings.defaultModelClaude":`Standardmodell (Claude Code)`,"settings.defaultModelCodex":`Standardmodell (OpenAI Codex)`,"settings.agentPermissions":`Agentenberechtigungen`,"settings.skipPermissions":`Berechtigungsabfragen überspringen (--dangerously-skip-permissions)`,"settings.skipPermissionsWarning":`Achtung: Wird diese Option deaktiviert, werden alle Tool-Berechtigungen (Write, Edit, Bash...) im Headless-Modus automatisch abgelehnt. Der Agent kann dann nur lesen.`,"settings.notifications":`Benachrichtigungen`,"settings.browserNotifications":`Browser-Benachrichtigung wenn Agent fertig ist`,"settings.audioNotifications":`Ton-Benachrichtigung wenn Agent fertig ist`,"settings.enableBrowserNotifications":`Browser-Benachrichtigungen aktivieren`,"settings.testBrowserNotification":`Benachrichtigung testen`,"settings.browserNotificationGranted":`Browser-Benachrichtigungen erlaubt`,"settings.browserNotificationDenied":`Browser-Benachrichtigungen blockiert`,"settings.browserNotificationAsk":`Browser-Berechtigung erforderlich`,"settings.browserNotificationUnsupported":`Browser-Benachrichtigungen nicht verfügbar`,"settings.browserNotificationPermissionNeeded":`Erlaube Browser-Benachrichtigungen, um einen Test zu senden.`,"settings.browserNotificationTestTitle":`Kōbō-Benachrichtigungstest`,"settings.browserNotificationTestBody":`Browser-Benachrichtigungen funktionieren.`,"settings.enableAudio":`Audio aktivieren`,"settings.notificationSound":`Benachrichtigungston`,"settings.notificationSoundHint":`Wird abgespielt, wenn der Agent fertig ist oder eine Berechtigung anfordert.`,"settings.questionSound":`Frageton`,"settings.questionSoundHint":`Wird nur abgespielt, wenn der Agent eine Frage stellt.`,"settings.workspaceCreatedSound":`Ton für Workspace-Erstellung`,"settings.workspaceCreatedSoundHint":`Wird nach dem Erstellen eines Workspaces abgespielt.`,"settings.notificationSoundPreview":`Anhören`,"settings.notificationVolume":`Lautstärke`,"settings.notificationSoundHey":`Hey`,"settings.agentErrorSound":`Agentenfehler`,"settings.agentErrorSoundHint":`Wird bei Quoten-, Rate-Limit- und Agentenfehlern abgespielt.`,"settings.notificationSoundBasic":`Standardbenachrichtigung`,"settings.notificationSoundWorkspaceCreated":`Warcraft III — Arbeit`,"settings.notificationSoundTravailTermine":`Arbeit erledigt`,"settings.notificationSoundFaaah":`Faaah`,"settings.notificationSoundCaVaPeter":`Das wird knallen`,"settings.notificationSoundDryFart":`Dry fart`,"settings.notificationSoundForShure":`For shure`,"settings.prSoundSection":`PR / MR und CI`,"settings.soundGeneral":`Allgemeiner Ton`,"settings.soundNone":`Kein Ton`,"settings.prCiFailedSound":`CI fehlgeschlagen`,"settings.prCiRecoveredSound":`CI wieder erfolgreich`,"settings.prChangesRequestedSound":`Änderungen angefordert`,"settings.prApprovedSound":`PR genehmigt`,"settings.prMergeConflictSound":`Merge-Konflikt`,"settings.prReadyToMergeSound":`Bereit zum Mergen`,"settings.prMergedSound":`PR gemergt`,"settings.prCiFailedSoundHint":`Wird abgespielt, wenn die CI fehlschlägt.`,"settings.prCiRecoveredSoundHint":`Wird abgespielt, wenn sich die CI nach einem Fehler erholt.`,"settings.prChangesRequestedSoundHint":`Wird abgespielt, wenn Änderungen angefordert werden.`,"settings.prApprovedSoundHint":`Wird abgespielt, wenn der Pull Request genehmigt wird.`,"settings.prMergeConflictSoundHint":`Wird abgespielt, wenn ein Merge-Konflikt erkannt wird.`,"settings.prReadyToMergeSoundHint":`Wird abgespielt, wenn der Pull Request merge-bereit ist.`,"settings.prMergedSoundHint":`Wird abgespielt, wenn der Pull Request gemergt wird.`,"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":`Standard-Berechtigungsmodus`,"settings.defaultPermissionModeClaude":`Standard-Berechtigungsmodus (Claude Code)`,"settings.defaultPermissionModeCodex":`Standard-Berechtigungsmodus (OpenAI Codex)`,"settings.defaultPermissionModeHint":`Modus bei der Erstellung eines neuen Workspaces. Plan = nur lesen, Bypass = keine Nachfragen, Strict = Edits automatisch akzeptieren mit allow-list, Interaktiv = vor jedem Tool fragen.`,"settings.activityFeed":`Aktivitätsfeed`,"settings.showThinkingBlocks":`Denkblöcke der Agenten anzeigen`,"settings.whipSettings":`Peitsche`,"settings.whipSettingsHint":`Konfiguriere den optionalen Peitschen-Kurzbefehl und die Lautstärke.`,"settings.whipEnabled":`Peitsche aktivieren`,"settings.whipEnabledHint":`Zeigt die interaktive Peitsche in geeigneten laufenden Workspaces an.`,"settings.whipVolume":`Peitschenlautstärke`,"settings.whipVolumeMasterAudioDisabled":`Der Hauptton ist ausgeschaltet. Aktivieren Sie Audio-Benachrichtigungen, um die Peitschenlautstärke anzupassen; der gespeicherte Wert bleibt erhalten.`,"whip.overlayLabel":`Interaktive Peitsche`,"whip.overlayInstructions":`Bewegen Sie den Zeiger, um die Peitsche zu steuern. Drücken Sie Eingabe oder Leertaste zum Knallen. Drücken Sie Escape zum Schließen.`,"settings.whipShortcut":`Peitschen-Tastenkürzel`,"settings.whipShortcutHint":`Klicken Sie und drücken Sie dann das gewünschte Tastenkürzel.`,"settings.whipShortcutRecording":`Tastenkürzel drücken…`,"settings.whipShortcutButtonLabel":`Peitschen-Tastenkürzel: {shortcut}`,"settings.whipShortcutRecordingLabel":`Peitschen-Tastenkürzel wird aufgezeichnet. Tastenkürzel drücken…`,"settings.whipShortcutReset":`Tastenkürzel zurücksetzen`,"settings.whipShortcutReserved":`Dieses Tastenkürzel ist vom Browser reserviert.`,"settings.testIntegration":`Verbindung testen`,"pwa.offline":`Du bist offline. Chat und Agenten benötigen den Kōbō-Server.`,"pwa.reconnecting":`Verbindung zum Kōbō-Server wird wiederhergestellt…`,"pwa.installReady":`Kōbō als App installieren.`,"pwa.install":`Installieren`,"pwa.ignore":`Ignorieren`,"pwa.updateReady":`Ein Kōbō-Update ist verfügbar.`,"pwa.reload":`Neu laden`,"chat.searchWorkspaceHistory":`Workspace-Verlauf durchsuchen`,"chat.historySearch.user":`Sie`,"chat.historySearch.agent":`Agent`,"chat.openInGitDiff":`Im Git-Diff öffnen`,"timeline.title":`Sitzungszeitachse`,"timeline.export":`Diagnose exportieren`,"timeline.unnamed":`Agent-Sitzung`,"timeline.tools":`{count} Tools`,"timeline.errors":`{count} Fehler`,"settings.verboseMessages":`Ausführliche Systemnachrichten anzeigen (task_progress, task_started)`,"settings.availableVariables":`Verfügbare Template-Variablen`,"settings.prPromptTemplate":`PR-Prompt-Vorlage`,"settings.prPromptPlaceholder":`Anweisungen für den Agenten bei der Erstellung von GitHub-PRs...`,"settings.prPromptHint":`Verwenden Sie die oben aufgeführten Platzhalter (doppelte geschweifte Klammern).`,"settings.reviewPromptTemplate":`Review-Prompt-Vorlage`,"settings.reviewPromptPlaceholder":`Anweisungen für den Agenten bei der Review von Branch-Änderungen...`,"settings.ciFixPromptTemplate":`CI-Fix-Prompt-Vorlage`,"settings.ciFixPromptHint":`Wird an den Agenten gesendet, wenn die CI eines Workspaces fehlschlägt. Variablen (doppelte geschweifte Klammern): pr_url, pr_number, pr_title, branch_name, source_branch, workspace_name, workspace_id, project_name, failed_jobs, ci_run_url.`,"settings.ciFixPromptPlaceholder":`Den Agenten bitten, die fehlschlagenden CI-Jobs zu diagnostizieren und zu beheben...`,"settings.finalizationPromptTemplate":`Auto-Loop-Finalisierungs-Prompt`,"settings.finalizationPromptHint":`Standard-Prompt für die letzte Auto-Loop-Iteration (abschließende Qualitätsprüfungen). Wird verwendet, wenn ein Projekt seinen eigenen Finalisierungs-Prompt leer lässt.`,"settings.finalizationPromptPlaceholder":`Run final quality checks before closing the workspace...`,"settings.notionInitialPrompt":`Notion-Initial-Prompt`,"settings.notionInitialPrompt.help":`Wird an den Workspace-Erstellungsprompt angehängt, wenn der Workspace ein Notion-Ticket hat. Variablen: {variables}.`,"settings.notionInitialPrompt.project":`Notion-Initial-Prompt (Überschreibung)`,"settings.sentryInitialPrompt":`Sentry-Initial-Prompt`,"settings.sentryInitialPrompt.help":`Wird an den Workspace-Erstellungsprompt angehängt, wenn der Workspace ein Sentry-Issue hat. Variablen: {variables}.`,"settings.sentryInitialPrompt.project":`Sentry-Initial-Prompt (Überschreibung)`,"settings.initialPrompt.inheritHint":`Leer lassen, um zu erben. Geben Sie ein Leerzeichen ein, um die Injektion auf dieser Ebene zu deaktivieren.`,"settings.resetToDefault":`Zurücksetzen`,"settings.resetFailed":`Standardwert konnte nicht geladen werden`,"settings.sentryIntegration":`Sentry-Integration`,"settings.var.prNumber":`PR-Nummer (z. B. 42)`,"settings.var.prUrl":`Vollständige URL der erstellten PR`,"settings.var.branchName":`Name des Arbeitsbranches`,"settings.var.sourceBranch":`Quellbranch, auf den die PR abzielt`,"settings.var.workspaceName":`Workspace-Name`,"settings.var.projectName":`Letztes Segment des Projektpfads`,"settings.var.notionUrl":`Notion-URL falls gesetzt, sonst leer`,"settings.var.commits":`Aufzählung der Commits zwischen Source und Head`,"settings.var.diffStats":`Git-Shortstat-Zusammenfassung (Dateien, Einfügungen, Löschungen)`,"settings.var.tasks":`Reguläre Aufgaben als Checkliste`,"settings.var.acceptanceCriteria":`Akzeptanzkriterien als Checkliste`,"settings.gitConventions":`Git-Konventionen (global)`,"settings.gitConventionsPlaceholder":`# Git-Konventionen...`,"settings.gitConventionsHint":`Diese Konventionen werden in .ai/.git-conventions.md jedes neuen Arbeitsbereichs geschrieben und müssen vom Agenten vor jeder Git-Operation eingehalten werden. Werden durch projektspezifische Konventionen überschrieben, falls definiert.`,"settings.setupScript":`Setup-Skript`,"settings.cleanupScript":`Cleanup-Skript`,"settings.archiveScript":`Archiv-Skript`,"settings.archiveScriptHint":`Shell-Skript, das serverseitig im Worktree ausgeführt wird, wenn ein Workspace archiviert wird. Leer lassen zum Deaktivieren.`,"settings.archiveScriptPlaceholder":`z. B. Container aufräumen, Speicherplatz freigeben…`,"settings.changeSourceBranchScript":`Quellbranch-Wechsel-Skript`,"settings.changeSourceBranchScript.help":`Ersetzt den eingebauten Cherry-Pick, wenn nicht leer. Das Skript verwaltet Git, PR-Basis, Force-Push und Konflikte; Kōbō verweigert nur, solange der Agent läuft, und aktualisiert die Quellbranch-Metadaten bei Exit 0.`,"settings.changeSourceBranchScript.envHelp":`KOBO_NEW_BASE — neuer Quellbranch aus dem Dialog
|
|
3
3
|
KOBO_OLD_BASE — vorheriger Quellbranch des Workspaces
|
|
4
4
|
KOBO_WORKING_BRANCH — Arbeitsbranch des Workspaces
|
|
@@ -79,4 +79,4 @@ KOBO_PR_NUMBER — numero della PR/MR sulla forge risolta (vuoto se nessuna
|
|
|
79
79
|
# Oppure direttamente con git (funziona su GitHub anche dopo eliminazione del branch):
|
|
80
80
|
git fetch origin pull/[numero-pr]/head:[nome-branch]
|
|
81
81
|
git worktree add [percorso] [nome-branch]`,"settings.purgeDocsRestoreFootnote":`GitHub mantiene il ref HEAD della PR accessibile a lungo dopo l'eliminazione del branch sorgente (mesi / anni). Il rilevamento automatico gira nel watcher 30 s — nessuna azione UI necessaria una volta che la cartella riappare.`,"settings.purgeDocsPermissionsTitle":`Evitare errori di permessi durante la pulizia`,"settings.purgeDocsPermissionsIntro":`Docker spesso lascia file root-owned in node_modules / vendor dentro il worktree. Quando Kōbō prova a rimuoverli, ricevi EACCES / EPERM e la pulizia fallisce. Due modi per prevenirlo:`,"settings.purgeDocsPermissionsDocker":'Configurare il container per girare come utente host — direttiva USER nel Dockerfile, o `user: "${UID}:${GID}"` in docker-compose (con UID/GID esportati nella shell).',"settings.purgeDocsPermissionsAcl":`Pre-impostare una ACL di default sulla root dei worktrees — rete di sicurezza che funziona nella MAGGIOR PARTE dei casi (ext4/btrfs/xfs + bind mount Docker classico). Ogni nuovo file eredita allora una voce di accesso per il tuo utente, oltre al proprietario nominale:`,"settings.purgeDocsPermissionsAclCommand":` setfacl -d -m u:$(whoami):rwX [root-worktrees]`,"settings.purgeDocsPermissionsFootnote":"Limiti delle ACL: NON funzionano sui volumi Docker con nome (usa un bind mount), filesystem senza supporto ACL (NTFS, exFAT, tmpfs), SELinux strict con `:Z`, o quando Docker `userns-remap` è attivato. La soluzione più affidabile resta configurare l'utente nel container (opzione 1). Suggerimento: `rwX` (X maiuscola) aggiunge il bit eseguibile solo a directory e file già eseguibili — più pulito di `rwx` che renderebbe eseguibile ogni file di testo.","settings.purgeDocsPermissionsRecoverTitle":`Sbloccare un worktree già rotto (file root-owned esistenti)`,"settings.purgeDocsPermissionsRecoverIntro":`Se ti ritrovi con un worktree già pieno di file root-owned (Docker ha già girato, vendor / node_modules sono bloccati), l'ACL preventiva sopra non basta — devi sistemare i file ESISTENTI. Due approcci, entrambi da eseguire dentro la cartella del worktree:`,"settings.purgeDocsPermissionsRecoverAclIntro":`Opzione A — ACL ricorsiva (preserva l'ownership root per audit, aggiunge solo accesso per il tuo utente in parallelo):`,"settings.purgeDocsPermissionsRecoverAclCommand":`# imposta ACL di default per i file futuri E concede accesso a tutto l'esistente
|
|
82
|
-
sudo setfacl -Rd -m u:$(whoami):rwX . && sudo setfacl -R -m u:$(whoami):rwX .`,"settings.purgeDocsPermissionsRecoverChownIntro":`Opzione B — Prendere la proprietà (più semplice, perde la traccia "creato da root nel container" ma raramente conta):`,"settings.purgeDocsPermissionsRecoverChownCommand":` sudo chown -R $(whoami):$(whoami) .`,"settings.purgeDocsPermissionsRecoverFootnote":"Suggerimento: puoi eseguire questi comandi direttamente sulla root dei worktrees (es. `~/.worktrees/`) per coprire tutti i workspace esistenti E futuri in un colpo solo. Una volta fatto, la pulizia Kōbō funzionerà senza errori di permessi.","contextMenu.runSetup":`Esegui script di setup`,"contextMenu.exportEvents":`Esporta eventi (CSV)`,"contextMenu.dismissChangesRequested":`Segna «Modifiche richieste» come visto`,"contextMenu.dismissCiFailure":`Segna «CI in errore» come visto`,"contextMenu.restoreChangesRequested":`Segna «Modifiche richieste» come non visto`,"contextMenu.restoreCiFailure":`Segna «CI in errore» come non visto`,"contextMenu.exportingEvents":`Preparazione dell'esportazione…`,"contextMenu.exportEventsError":`Esportazione degli eventi non riuscita`,"contextMenu.openNotion":`Apri in Notion`,"contextMenu.openSentry":`Apri in Sentry`,"contextMenu.openPr":`Apri PR`,"contextMenu.ignorePrWatch":`Ignora i controlli PR`,"contextMenu.resumePrWatch":`Riprendi i controlli PR`,"contextMenu.prWatchToggleFailed":`Aggiornamento dei controlli PR non riuscito`,"workspace.favorite":`Segna come preferito`,"workspace.unfavorite":`Rimuovi dai preferiti`,"workspace.showFavoritesOnly":`Mostra solo i preferiti`,"workspace.searchArchivedToggle":`Cerca anche nei workspace archiviati`,"workspace.descriptionPlaceholder":`Aggiungi una breve descrizione`,"workspace.descriptionDialogHint":`Testo semplice, massimo 200 caratteri. Lasciare vuoto per cancellare.`,"workspace.descriptionTooLong":`La descrizione deve avere al massimo 200 caratteri.`,"workspace.descriptionSaveFailed":`Impossibile salvare la descrizione.`,"workspace.agentDescriptionTooltip":`Stato live mantenuto dall'agente`,"mcp.tool.setWorkspaceDescription":`Imposta la breve descrizione del workspace (≤ 200 caratteri).`,"tags.manage":`Gestisci tag`,"tags.manageTitle":`Gestisci i tag del workspace`,"tags.noTagsDefined":`Nessun tag definito. Aggiungine in Impostazioni > Globale > Tag.`,"tags.orphanedHint":`{count} tag non sono più nel catalogo globale. Deseleziona per rimuoverli.`,"settings.tagsTitle":`Tag dei workspace`,"settings.tagsHint":`Definisci i tag assegnabili ai workspace. Digita per aggiungere, clicca la croce per rimuovere.`,"settings.tagsLabel":`Tag disponibili`,"settings.branchPrefixesTitle":`Prefissi di branch`,"settings.branchPrefixesHint":`Gestisci i prefissi di branch Git disponibili nella pagina di creazione del workspace. Il primo è preselezionato per impostazione predefinita.`,"settings.branchPrefixesEmpty":`Nessun prefisso di branch definito. Aggiungine almeno uno qui sotto.`,"settings.branchPrefixesAddLabel":`Nuovo prefisso`,"settings.branchPrefixesEditHint":`Clicca per rinominare`,"settings.branchPrefixesMoveUp":`Sposta su`,"settings.branchPrefixesMoveDown":`Sposta giù`,"settings.worktreesTitle":`Worktree Git`,"settings.worktreesHint":`Scegli dove creare i worktree dei nuovi workspace. I percorsi relativi sono risolti dal progetto; sono supportati percorsi assoluti Linux/macOS e Windows, $HOME, ~ e %USERPROFILE%.`,"settings.worktreesPathLabel":`Percorso worktree`,"settings.worktreesPathRequired":`Il percorso worktree è obbligatorio.`,"settings.worktreesPrefixByProject":`Aggiungi il nome del progetto come prefisso ai worktree`,"settings.worktreesPrefixByProjectHint":`Posiziona ogni worktree in una sottocartella con il nome del progetto per evitare collisioni quando più progetti condividono la stessa radice.`,"settings.shareTitle":`Condividi configurazione`,"settings.shareHint":`Esporta impostazioni, template e tag come bundle JSON. Le chiavi MCP sono escluse per sicurezza.`,"settings.exportConfig":`Esporta`,"settings.importConfig":`Importa`,"settings.exportSuccess":`Configurazione esportata`,"settings.importSuccess":`Configurazione importata`,"settings.importConfirmTitle":`Importa configurazione`,"settings.importConfirmMessage":`Questo sostituirà le tue impostazioni, template e tag attuali. Le chiavi MCP vengono preservate. Continuare?`,"settings.network.title":`Accesso di rete`,"settings.network.hint":`Controlla Kōbō da un altro dispositivo della tua LAN affidabile. Off = solo localhost. On = raggiungibile sulla rete, protetto da un token. Riavvia Kōbō dopo il cambio.`,"settings.network.enable":`Abilita accesso di rete`,"settings.network.behindProxy":`Dietro un reverse proxy`,"settings.network.behindProxyHint":`Kōbō non può più distinguere la tua macchina da una richiesta inoltrata — anche localhost dovrà presentare il token d'ora in poi. Attivalo solo se un reverse proxy (Traefik, nginx, Caddy…) si trova davanti a Kōbō.`,"settings.network.restartRequired":`Riavvia Kōbō per applicare il nuovo indirizzo di bind.`,"settings.network.token":`Token di accesso`,"settings.network.copy":`Copia`,"settings.network.copied":`Copiato`,"settings.network.regenerate":`Rigenera`,"settings.network.regenerateConfirm":`Rigenerare il token? I dispositivi connessi avranno bisogno del nuovo token.`,"settings.network.urls":`URL LAN`,"settings.network.scan":`Scansiona per connetterti`,"settings.network.noUrls":`Nessun indirizzo LAN rilevato.`,"settings.network.loadFailed":`Impossibile caricare le impostazioni di accesso di rete.`,"settings.network.updateFailed":`Impossibile aggiornare le impostazioni di accesso di rete.`,"settings.unsavedChanges.title":`Modifiche non salvate`,"settings.unsavedChanges.message":`Questo progetto ha modifiche non salvate. Cambiando progetto andranno perse.`,"settings.unsavedChanges.discard":`Scarta e cambia`,"settings.unsavedChanges.cancel":`Annulla`,"settings.loadFailed":`Impossibile caricare le impostazioni`,"settings.loadFailedHint":`Il salvataggio è disattivato: il modulo mostra i valori predefiniti e scriverli sovrascriverebbe la tua configurazione reale.`,"health.title":`Stato`,"health.tooltip":`Stato del sistema`,"changelog.title":`Changelog`,"changelog.tooltip":`Novità di Kōbō`,"changelog.empty":`Nessun changelog disponibile.`,"changelog.current":`corrente`,"changelog.currentVersion":`Versione corrente: v{version}`,"health.envTitle":`Ambiente`,"health.version":`Versione`,"health.koboHome":`Kōbō home`,"health.dbTitle":`Database`,"health.dbPath":`Percorso`,"health.dbSize":`Dimensione`,"health.schemaVersion":`Versione schema`,"health.settingsSchemaVersion":`Schema impostazioni`,"health.runtimesTitle":`Runtime agente`,"health.claudeCliTitle":`Claude Code`,"health.claudeCliMissing":`claude non trovato nel PATH`,"health.codexCliTitle":`OpenAI Codex`,"health.codexCliMissing":`binario codex non risolvibile`,"health.forgeCliTitle":`CLI di forge (gh / glab)`,"health.forgeCliMissing":`Né gh né glab trovati — pull request e monitoraggio CI non disponibili`,"health.workspacesTitle":`Workspace`,"health.workspacesCount":`{total} totali, {archived} archiviati`,"health.worktreesMissing":`{count} worktree mancanti sul disco`,"health.sessionsTitle":`Sessioni agente`,"health.sessionsOrphaned":`{n} sessione/sessioni orfana/e in esecuzione`,"health.integrationsTitle":`Integrazioni`,"health.integrationConfigured":`configurata`,"health.integrationMissing":`non configurata`,"health.integrationDisabled":`disabilitata`,"settings.integrationEnabled":`Attiva integrazione`,"health.activeTitle":`Stato attivo`,"health.activeQuotaBackoffs":`Quota backoff in attesa`,"health.activeWakeups":`Wakeup programmati`,"health.activeAutoLoop":`Auto-loop in esecuzione`,"health.activeAgentSessions":`Sessioni agente attive`,"health.activeDevServers":`Dev server in esecuzione`,"health.noneActive":`Nessuno.`,"health.quotaResumeAt":`riprende alle {time}`,"health.wakeupAt":`sveglia alle {time}`,"health.startedAgo":`avviata {time} fa`,"health.autoLoopReady":`pronto, in iterazione`,"health.autoLoopGrooming":`grooming in corso`,"session.started":`Sessione avviata`,"session.ended":`Sessione terminata`,"session.compacted":`Contesto compattato`,"session.endedCompleted":`Turno terminato — invia un messaggio per continuare`,"session.endedKilled":`Sessione interrotta`,"session.endedError":`Sessione terminata con un errore`,"session.endedWatchdog":`Sessione chiusa forzatamente dopo un periodo di inattività`,"tool.running":`In corso...`,"activity.raw_lines":`Righe di output grezze ({n})`,"activity.loading_older":`Caricamento messaggi precedenti…`,"activity.compacting":`Compattazione del contesto…`,"activity.prev_user_message":`Messaggio utente precedente`,"activity.scroll_to_bottom":`Scorri in fondo`,"activity.empty":`Ancora nulla`,"activity.emptyHint":`L’output dell’agente comparirà qui appena una sessione parte.`,"activity.a11y.region":`Annunci di attività dell’agente`,"activity.a11y.agentSaid":`Agente: {text}`,"activity.a11y.toolStarted":`Strumento {name} avviato`,"activity.a11y.toolFinished":`Strumento {name} completato`,"activity.a11y.toolFailed":`Strumento {name} fallito`,"chat.systemPrompt":`Prompt di sistema`,"chat.agent":`Agente`,"chat.cleanupScript":`Script di pulizia`,"chat.archiveScript":`Script di archiviazione`,"chat.setupScript":`Script di setup`,"chat.scriptDone":`Fatto`,"chat.scriptComplete":`[{phase}] Completato`,"chat.scriptError":`[{phase}] Errore: {message}`,"chat.unknownError":`sconosciuto`,"chat.you":`Tu`,"chat.session":`Sessione`,"chat.nActions":`{n} azione | {n} azioni`,"chat.lastUpdatedAt":`Ultimo aggiornamento alle {time}`,"chat.scrollToTurnTop":`Scorri all'inizio del messaggio`,"migration.backing_up":`Backup del database in corso…`,"migration.running":`Migrazione dei dati dell'agente — {processed}/{total}`,"migration.error":`Migrazione non riuscita`,"migration.backup_location":`Un backup è stato salvato in {path}. Riavvia Kōbō per riprovare.`,"migration.retry":`Riavvia Kōbō per riprovare.`,"engine.select":`Engine`,"engine.model":`Modello`,"engine.effort":`Livello di ragionamento`,"wakeup.scheduledIn":`Prossimo risveglio tra {n}s`,"wakeup.scheduledAt":`Prossimo risveglio alle {time}`,"wakeup.firing":`Risveglio in corso...`,"wakeup.reason":`Motivo: {reason}`,"wakeup.cancel":`Annulla questo risveglio`,"wakeup.pendingIndicator":`Risveglio programmato`,"cron.pendingIndicator":`{n} cron programmato/i`,"schedule.tabLabel":`Pianificazione`,"schedule.panelTitle":`Automazione`,"schedule.panelDescription":`Risvegliare questo workspace più tardi o eseguire istruzioni secondo una pianificazione.`,"schedule.activeTitle":`Pianificazioni attive`,"schedule.emptyTitle":`Nessuna pianificazione`,"schedule.emptyDescription":`Crea un wakeup singolo o un’attività ricorrente qui sotto.`,"schedule.cancelWakeup":`Annulla questo wakeup`,"schedule.cancelCron":`Elimina questa attività ricorrente`,"schedule.createTitle":`Crea una pianificazione`,"schedule.createDescription":`Scegli quando e come deve essere eseguito l'agente.`,"schedule.typeWakeup":`Wakeup singolo`,"schedule.typeRecurring":`Attività ricorrente`,"schedule.wakeupDescription":`Esegui il prompt una volta dopo un intervallo.`,"schedule.cronDescription":`Esegui il prompt periodicamente con una frequenza fissa.`,"schedule.promptHint":`Istruzioni che verranno inviate all'agente`,"schedule.frequencyTitle":`Frequenza`,"schedule.advancedDescription":`Usa un’espressione cron grezza`,"schedule.cronExpressionLabel":`Espressione cron`,"schedule.sessionModeTitle":`Sessione di esecuzione`,"schedule.modeResume":`Riprendi sessione`,"schedule.oneShotHint":`Rimuovi questa pianificazione dopo la prima esecuzione.`,"schedule.wakeupTitle":`Wakeup in attesa`,"schedule.cronsTitle":`Pianificazioni ricorrenti`,"schedule.noWakeup":`Nessun wakeup pianificato`,"schedule.noCrons":`Nessun cron pianificato`,"schedule.nextFireAt":`prossimo alle {time}`,"schedule.lastFiredAt":`ultimo {time} fa`,"schedule.addCronTitle":`Aggiungi un'attività ricorrente`,"schedule.addWakeupTitle":`Programma un wakeup`,"schedule.every":`Ogni`,"schedule.unitMinutes":`minuti`,"schedule.unitHours":`ore`,"schedule.unitDays":`giorni`,"schedule.daysDriftWarning":`L'intervallo può ridursi a 1 giorno a fine mese (limite di cron).`,"schedule.advancedExpression":`Espressione avanzata (opzionale)`,"schedule.advancedHint":`Cron grezzo (es. */15 * * * *) o {'@'}hourly/{'@'}daily — sostituisce il selettore se compilato.`,"schedule.promptLabel":`Prompt`,"schedule.labelOptional":`Etichetta (opzionale)`,"schedule.delayMinutes":`Ritardo (minuti)`,"schedule.modeFresh":`Nuova sessione`,"schedule.oneShot":`Esegui una sola volta`,"schedule.addCronBtn":`Aggiungi cron`,"schedule.addWakeupBtn":`Programma wakeup`,"schedule.cronCreated":`Attività ricorrente aggiunta`,"schedule.wakeupCreated":`Wakeup programmato`,"askUserQuestion.title":`L'agente sta facendo una domanda`,"askUserQuestion.submit":`Invia risposta`,"askUserQuestion.multiSelectHint":`Seleziona una o più opzioni`,"askUserQuestion.otherOption":`Altro`,"askUserQuestion.otherOptionHint":`specifica nel prossimo messaggio`,"askUserQuestion.freeFormLabel":`Specifica la tua risposta`,"askUserQuestion.freeFormHint":`Questa risposta verrà inviata direttamente all'agente.`,"askUserQuestion.noPending":`Nessuna domanda in attesa`,"askUserQuestion.next":`Avanti`,"askUserQuestion.previous":`Indietro`,"askUserQuestion.cancel":`Annulla`,"askUserQuestion.cancelTooltip":`Salta questa domanda — l'agente proseguirà senza risposta`,"askUserQuestion.collapse":`Riduci il pannello della domanda`,"askUserQuestion.expand":`Espandi il pannello della domanda`,"permissionRequest.title":`L'agente vuole usare uno strumento`,"permissionRequest.allow":`Consenti`,"permissionRequest.allowOnce":`Consenti una volta`,"permissionRequest.allowTurn":`Consenti questo turno`,"permissionRequest.allowOperation":`Consenti sempre questa operazione`,"permissionRequest.allowTool":`Consenti sempre questo strumento`,"permissionRequest.deny":`Nega`,"permissionRequest.tool":`Strumento`,"permissionRequest.input":`Input`,"permissionRequest.rawInput":`Dettagli tecnici`,"permissionRequest.collapse":`Riduci il pannello dei permessi`,"permissionRequest.expand":`Espandi il pannello dei permessi`,"permissionRequest.denied":`negato dall'utente`,"workspaceStatus.created":`creato`,"workspaceStatus.extracting":`estrazione`,"workspaceStatus.brainstorming":`brainstorming`,"workspaceStatus.executing":`in corso`,"workspaceStatus.awaitingUser":`in attesa della tua risposta`,"workspaceStatus.completed":`completato`,"workspaceStatus.idle":`inattivo`,"workspaceStatus.error":`errore`,"workspaceStatus.quota":`quota raggiunta`,"workspaceStatus.retrying":`ripresa automatica`,"workspaceList.prOpen":`#{n} — Pull request aperta`,"workspaceList.prWatchDisabledIndicator":`Controlli PR ignorati per questo workspace`,"workspaceList.prChangesRequested":`#{n} — Modifiche richieste`,"workspaceList.attentionCiFailed":`CI fallita`,"workspaceList.attentionChangesRequested":`Modifiche richieste`,"workspaceList.attentionReadyToMerge":`Pronto per il merge`,"autoLoop.toggle":`Auto-loop`,"autoLoop.start":`Avvia l'auto-loop`,"autoLoop.prepare":`Prepara per l'auto-loop`,"autoLoop.reprepare":`Ri-prepara per l'auto-loop`,"autoLoop.reprepareTooltip":`Rilancia la fase di grooming per aggiungere o aggiornare le attività prima di riavviare il loop`,"autoLoop.prepareBusy":`Attendi che l'agente finisca prima di preparare`,"autoLoop.forceReady":`So cosa faccio — salta la preparazione`,"autoLoop.forceReadyConfirm":`Saltare la preparazione e segnare auto-loop pronto? Il loop potrebbe bloccarsi se le attività non sono atomiche.`,"autoLoop.stop":`Ferma l'auto-loop`,"autoLoop.notReady":`Esegui prima «Prepara per l'auto-loop»`,"autoLoop.noTasks":`Aggiungi prima delle attività`,"autoLoop.progress":`Auto-loop · {done}/{total} attività`,"autoLoop.preparing":`Auto-loop · preparazione`,"autoLoop.preparingTooltip":`Grooming in corso — l'agente sta creando / revisionando le attività. Il loop partirà quando chiamerà mark_auto_loop_ready.`,"autoLoop.running":`Auto-loop in corso`,"autoLoop.startInMode":`Avvia in modalità auto-loop`,"autoLoop.brainstormModelPrefix":`Brainstorm:`,"autoLoop.brainstormModelTooltip":`Modello usato solo per la sessione di brainstorming iniziale — ogni attività successiva usa il modello scelto sopra`,"autoLoop.brainstormReasoningPrefix":`Brainstorm:`,"autoLoop.brainstormReasoningTooltip":`Livello di ragionamento usato solo per la sessione di brainstorming iniziale`,"autoLoop.executionModelPrefix":`Loop:`,"autoLoop.executionModelTooltip":`Modello usato per ogni attività dell'auto-loop dopo la sessione di brainstorming iniziale`,"autoLoop.sessionMode.perTask":`Nuova sessione per attività`,"autoLoop.sessionMode.label":`Sessione:`,"autoLoop.sessionMode.perTaskTooltip":`Ogni attività avvia una nuova sessione Claude Code senza memoria delle attività precedenti`,"autoLoop.sessionMode.continuous":`Sessione continua`,"autoLoop.sessionMode.continuousTooltip":`Tutte le attività si susseguono nella stessa sessione — l'agente mantiene tutto il contesto, ma la sessione si allunga nel tempo`,"koboCommand.prepAutoloopDesc":`Preparare le attività per la modalità auto-loop (atomicità)`,"staleSessionBanner.title":`Auto-loop in corso`,"staleSessionBanner.message":`Stai visualizzando una sessione precedente — l'agente sta lavorando nella più recente.`,"staleSessionBanner.staleTitle":`Sessione precedente`,"staleSessionBanner.staleMessage":`Stai visualizzando una sessione precedente — i messaggi inviati andranno a questa sessione, non alla più recente.`,"staleSessionBanner.switchToCurrent":`Passa a quella corrente`,"network.login.title":`Accesso di rete`,"network.login.description":`Questo Kōbō richiede un token per essere controllato dalla rete. Incolla il token mostrato nelle Impostazioni sulla macchina host.`,"network.login.tokenLabel":`Token`,"network.login.tokenPlaceholder":`Incolla il tuo token`,"network.login.connect":`Connetti`,"network.login.invalid":`Token non valido`,"network.login.serverError":`Errore del server — riprova.`,"network.login.unreachable":`Kōbō non è raggiungibile — controlla la connessione.`,"layout.toggleWorkspaces":`Mostra/nascondi il pannello degli spazi`,"layout.togglePanel":`Mostra/nascondi il pannello laterale`,"unsaved.title":`Uscire senza salvare?`,"unsaved.message":`Hai modifiche non salvate. Uscire da questa pagina le scarta.`,"unsaved.leave":`Esci`,"unsaved.stay":`Resta`,"prCheckout.staleRetriesExhausted":`Lo stato del repository ha continuato a cambiare mentre applicavamo le tue scelte. Chiudi questa finestra e riprova dal selettore delle pull request.`,"prPicker.title":`Importa da una pull request`,"prPicker.filterAll":`Tutte`,"prPicker.filterMine":`Le mie`,"prPicker.filterReviewRequested":`Revisione richiesta`,"prPicker.searchPlaceholder":`Cerca pull request…`,"prPicker.loadMore":`Carica altre`,"prPicker.empty":`Nessuna pull request aperta corrisponde.`,"prPicker.forkNotSupported":`Questa PR proviene da un fork; Kōbō non può eseguirne il checkout.`,"prPicker.loadFailed":`Impossibile caricare le pull request.`,"prPicker.badge.workspaceExists":`Già aperta in Kōbō`,"prPicker.badge.worktreePresent":`Worktree presente`,"prPicker.badge.localBranch":`Branch locale`,"prPicker.badge.new":`Nuova`,"prPicker.badge.draft":`Bozza`,"prCheckout.title":`Prepara la worktree`,"prCheckout.apply":`Applica`,"prCheckout.cancel":`Annulla`,"prCheckout.retry":`Riprova`,"prCheckout.diagnoseFailed":`Impossibile diagnosticare la pull request.`,"prCheckout.resolveFailed":`Impossibile risolvere il checkout della pull request.`,"prCheckout.path.required":`Inserisci un percorso di worktree che non esista già.`,"prCheckout.workspace.restoreNotAvailable":"Il ripristino di un workspace eliminato non è ancora disponibile da qui. Ricrea la sua cartella worktree su disco (ad es. con `git worktree add`) e Kōbō la ricollegherà automaticamente entro circa 30 secondi.","prCheckout.staleReloaded":`Il repository è cambiato; la diagnosi è stata aggiornata.`,"prCheckout.step.blocked":`Impossibile continuare`,"prCheckout.step.path":`Posizione della worktree`,"prCheckout.step.workspace":`Workspace esistente`,"prCheckout.step.worktree":`Worktree esistente`,"prCheckout.step.operation":`Operazione git in corso`,"prCheckout.step.changes":`Modifiche non commitate`,"prCheckout.step.divergence":`Branch locale vs origin`,"prCheckout.workspace.activeHint":`Un workspace chiamato "{name}" segue già questo branch.`,"prCheckout.workspace.open":`Apri quel workspace`,"prCheckout.workspace.continue":`Continua su un altro percorso`,"prCheckout.workspace.unarchive":`Ripristina e aprilo`,"prCheckout.workspace.restore":`Ricrea la sua worktree`,"prCheckout.worktree.orphanHint":`Esiste già una worktree su questo branch in {path}.`,"prCheckout.worktree.attach":`Collegala`,"prCheckout.worktree.createElsewhere":`Creane un'altra altrove`,"prCheckout.operation.hint":`Un {operation} è in corso in quella worktree.`,"prCheckout.operation.abort":`Interrompilo`,"prCheckout.operation.cancel":`Lascialo stare e fermati qui`,"prCheckout.changes.hint":`{modified} modificati, {staged} in stage, {untracked} non tracciati.`,"prCheckout.changes.stash":`Metti in stash`,"prCheckout.changes.commit":`Fai il commit`,"prCheckout.changes.discard":`Scartale (conservate in uno stash etichettato)`,"prCheckout.changes.keep":`Lasciale come sono`,"prCheckout.divergence.behindHint":`Il tuo branch è indietro di {behind} commit rispetto a origin.`,"prCheckout.divergence.aheadHint":`Il tuo branch ha {ahead} commit non pushati.`,"prCheckout.divergence.divergedHint":`{ahead} avanti, {behind} indietro rispetto a origin.`,"prCheckout.divergence.fastForward":`Fast-forward su origin`,"prCheckout.divergence.rebase":`Rebase su origin`,"prCheckout.divergence.resetHard":`Reimposta su origin (viene prima creato un branch di backup)`,"prCheckout.divergence.keep":`Mantieni lo stato locale`,"prCheckout.blocked.forgeUnavailable":`Il CLI della forge manca o non è autenticato.`,"prCheckout.blocked.forkPr":`Questa PR proviene da un fork; Kōbō non può eseguirne il checkout.`,"prCheckout.blocked.headBranchDeleted":`Il branch non esiste più sul remote.`,"prCheckout.blocked.indexLock":`È in corso un altro processo git (index.lock è presente).`,"prCheckout.blocked.pathOccupied":`{path} esiste già e non è una worktree.`,"prCheckout.blocked.worktreeOtherBranch":`{path} è una worktree su un altro branch ({branch}).`,"prCheckout.blocked.noCommonAncestor":`Esiste già un branch locale chiamato {branch} con una storia non correlata.`},Fr=`kobo:locale`,Ir=[`en`,`fr`,`de`,`es`,`it`];function Lr(e){return Ir.includes(e)}function Rr(){let e=localStorage.getItem(Fr);if(e&&Lr(e))return e;let t=navigator.language.split(`-`)[0];return t&&Lr(t)?(localStorage.setItem(Fr,t),t):(localStorage.setItem(Fr,`en`),`en`)}var zr=Rr(),Br=t({legacy:!1,locale:zr,fallbackLocale:`en`,messages:{en:jr,fr:Nr,de:Ar,es:Mr,it:Pr}});function Vr(e){typeof document>`u`||(document.documentElement.lang=e)}Vr(zr);var Hr=5e3,Ur=Ie(`agent-stream`,()=>{let e=i(new Map),t=i(new Map),n=i(new Map),r=i(new Map),a=i(new Map),o=i(new Map),s=i(new Map),c=i(new Map),l=i(new Map);function u(e){l.value.get(e)}function d(e){l.value.set(e,(l.value.get(e)??0)+1)}function f(e){return l.value.get(e)??0}function p(e){let t=c.value.get(e);return t||(t=new Set,c.value.set(e,t)),t}function m(e){return u(e),s.value.get(e)??!1}function h(e,t){(s.value.get(e)??!1)!==t&&(s.value.set(e,t),d(e))}function g(t){return u(t),e.value.get(t)??[]}function _(e){return u(e),t.value.get(e)??[]}function v(e){return u(e),n.value.get(e)??[]}function y(e){return u(e),r.value.get(e)??[]}function b(e){return u(e),a.value.get(e)}function x(e){return u(e),o.value.get(e)??!0}function S(i,o,s,c,l){let u=e.value.get(i)??[],f=t.value.get(i)??[],m=n.value.get(i)??[],h=r.value.get(i)??[],g=p(i);if(c&&g.has(c))return;let _=u.length===0;u.push(o),f.push(s??new Date().toISOString()),m.push(l??null),h.push(c??null),c&&g.add(c),e.value.set(i,u),t.value.set(i,f),n.value.set(i,m),r.value.set(i,h),_&&c&&a.value.set(i,c),C(i,u,f,m,h),d(i)}function C(e,t,n,r,i){let s=t.length-Hr;if(s<=0)return;let c=i.slice(0,s),l=p(e);for(let e of c)e&&l.delete(e);t.splice(0,s),n.splice(0,s),r.splice(0,s),i.splice(0,s);let u=i.find(e=>typeof e==`string`);u?a.value.set(e,u):a.value.delete(e),o.value.set(e,!0)}function w(i,o,s,c){let l=e.value.get(i)??[],u=t.value.get(i)??[],f=n.value.get(i)??[],m=r.value.get(i)??[],h=p(i),g=[];for(let e=0;e<o.length;e++){let t=o[e];if(!t)continue;let n=c.eventIds[e]??null;n&&h.has(n)||(l.push(t),u.push(s[e]??new Date().toISOString()),f.push(c.sessionIds[e]??null),m.push(n),n&&h.add(n),g.push(e))}if(g.length===0)return g;if(e.value.set(i,l),t.value.set(i,u),n.value.set(i,f),r.value.set(i,m),!a.value.has(i)){let e=m.find(e=>typeof e==`string`);e&&a.value.set(i,e)}return C(i,l,u,f,m),d(i),g}function T(i,s,c,l){e.value.set(i,[...s]),t.value.set(i,c?[...c]:s.map(()=>new Date().toISOString())),n.value.set(i,l?.sessionIds?[...l.sessionIds]:s.map(()=>null));let u=l?.eventIds?[...l.eventIds]:s.map(()=>null);r.value.set(i,u);let f=p(i);f.clear();for(let e of u)e&&f.add(e);l?.oldestId?a.value.set(i,l.oldestId):a.value.delete(i),l&&typeof l.hasMoreOlder==`boolean`?o.value.set(i,l.hasMoreOlder):o.value.delete(i),d(i)}function E(i,s,c,l){if(s.length===0){o.value.set(i,l.hasMoreOlder),d(i);return}let u=e.value.get(i)??[],f=t.value.get(i)??[],m=n.value.get(i)??[],h=r.value.get(i)??[],g=l.sessionIds??s.map(()=>null),_=l.eventIds??s.map(()=>null);e.value.set(i,[...s,...u]),t.value.set(i,[...c,...f]),n.value.set(i,[...g,...m]),r.value.set(i,[..._,...h]);let v=p(i);for(let e of _)e&&v.add(e);l.oldestId&&a.value.set(i,l.oldestId),o.value.set(i,l.hasMoreOlder),d(i)}function D(i,a){let o=e.value.get(i),s=r.value.get(i);if(!o||!s)return;let c=s.indexOf(a);if(c===-1)return;let l=t.value.get(i),u=n.value.get(i);o.splice(c,1),s.splice(c,1),l&&l.splice(c,1),u&&u.splice(c,1),p(i).delete(a),d(i)}function O(i){e.value.delete(i),t.value.delete(i),n.value.delete(i),r.value.delete(i),a.value.delete(i),o.value.delete(i),s.value.delete(i),c.value.delete(i),d(i)}return{events:e,timestamps:t,sessionIds:n,eventIds:r,versions:l,versionFor:f,eventsFor:g,timestampsFor:_,sessionIdsFor:v,eventIdsFor:y,oldestIdFor:b,hasMoreOlderFor:x,isCompacting:m,setCompacting:h,append:S,merge:w,reset:T,prepend:E,removeByEventId:D,clear:O}}),Wr=class extends Error{constructor(e,t,n,r){super(e),on(this,`status`,void 0),on(this,`code`,void 0),on(this,`body`,void 0),this.name=`ApiError`,this.status=t,this.code=n,this.body=r}},Gr=class extends Error{constructor(e){super(`Request timed out after ${e} ms`),on(this,`timeoutMs`,void 0),this.name=`ApiTimeoutError`,this.timeoutMs=e}},Kr=3e4;function qr(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 q(e,t={}){let{body:n,timeoutMs:r=Kr,signal:i,headers:a,...o}=t,s=new AbortController,c=!1,l=r>0?setTimeout(()=>{c=!0,s.abort()},r):null,u=()=>s.abort();i?.addEventListener(`abort`,u);let d={...o,signal:s.signal};n===void 0?a&&(d.headers=a):typeof n==`string`||n instanceof FormData||n instanceof Blob?(d.body=n,a&&(d.headers=a)):(d.body=JSON.stringify(n),d.headers={"Content-Type":`application/json`,...a??{}});let f;try{f=await fetch(e,d)}catch(e){throw c?new Gr(r):e}finally{l!==null&&clearTimeout(l),i?.removeEventListener(`abort`,u)}if(!f.ok){let e=await f.text().catch(()=>``),{message:t,code:n}=qr(e,f.status);throw new Wr(t,f.status,n,e)}if(f.status===204)return;let p=await f.text();if(p.length!==0)try{return JSON.parse(p)}catch(e){throw new Wr(`Server returned a non-JSON body for a successful response: ${e instanceof Error?e.message:String(e)}`,f.status,void 0,p)}}var Jr=`/sounds`,Yr=[{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`}],Xr=`hey.mp3`,Zr=`inherit`,Qr=`none`,$r=[`audioPrCiFailedSound`,`audioPrCiRecoveredSound`,`audioPrChangesRequestedSound`,`audioPrApprovedSound`,`audioPrMergeConflictSound`,`audioPrReadyToMergeSound`,`audioPrMergedSound`],ei=[`audioPrCiFailedEnabled`,`audioPrCiFailedVolume`,`audioPrCiRecoveredEnabled`,`audioPrCiRecoveredVolume`,`audioPrChangesRequestedEnabled`,`audioPrChangesRequestedVolume`,`audioPrApprovedEnabled`,`audioPrApprovedVolume`,`audioPrMergeConflictEnabled`,`audioPrMergeConflictVolume`,`audioPrReadyToMergeEnabled`,`audioPrReadyToMergeVolume`,`audioPrMergedEnabled`,`audioPrMergedVolume`],ti={audioPrCiFailedSound:Zr,audioPrCiRecoveredSound:Zr,audioPrChangesRequestedSound:Zr,audioPrApprovedSound:Zr,audioPrMergeConflictSound:Zr,audioPrReadyToMergeSound:Zr,audioPrMergedSound:Zr,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 ni(e){return Yr.some(t=>t.id===e)}function ri(e){return e&&ni(e)?e:Xr}function ii(e){if(e===`none`)return null;if(e!==`inherit`)return typeof e==`string`&&ni(e)?e:void 0}function ai(e){let t=ii(e);return t===null?Qr:t??`inherit`}function oi(e){return`${Jr}/${ri(e)}`}var si=`mod+shift+x`,ci=[`mod`,`ctrl`,`meta`,`alt`,`shift`],li=new Set([`mod+w`,`mod+shift+w`,`ctrl+w`,`ctrl+shift+w`,`meta+w`,`meta+shift+w`]),ui=new Set([`control`,...ci]);function di(e){return li.has(e)}function fi(e){if(typeof e!=`string`||e.length===0||e!==e.toLowerCase()||di(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)||ui.has(n))return null;let r=t.slice(0,-1),i=new Set,a=-1;for(let e of r){let t=ci.indexOf(e);if(t<=a)return null;a=t,i.add(e)}return{modifiers:i,key:n}}var pi=new Set([`control`,`meta`,`alt`,`shift`]),mi={" ":`space`,"+":`plus`,"-":`minus`,"=":`equal`,",":`comma`,".":`period`,"/":`slash`,"\\":`backslash`,";":`semicolon`,"'":`quote`,"[":`bracketleft`,"]":`bracketright`,"`":`backquote`};function hi(e){let t=mi[e]??e.toLowerCase();return/^[a-z0-9][a-z0-9_-]*$/.test(t)?t:null}function gi(e=globalThis.navigator?.platform??``){return/mac|iphone|ipad|ipod/i.test(e)?`mac`:`other`}function _i(e,t){if(e.key===`Escape`)return{status:`cancelled`};if(pi.has(e.key.toLowerCase()))return{status:`pending`};let n=hi(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=[...ci.filter(e=>r.has(e)),n].join(`+`);return di(i)?{status:`reserved`}:{status:`accepted`,shortcut:i}}function vi(e,t,n){let r=fi(t),i=hi(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 yi(e){return{space:`Space`,arrowup:`↑`,arrowdown:`↓`,arrowleft:`←`,arrowright:`→`}[e]??e.toUpperCase()}function bi(e,t){let n=fi(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(``)}${yi(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`:``,yi(n.key)].filter(Boolean).join(`+`):e}var xi=`.worktrees`;function Si(e){return btoa(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}var Ci=Ie(`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,wsEventsRetentionDays:0,wsEventsKeepPerWorkspace:0,browserNotifications:!0,audioNotifications:!0,audioQuestionNotifications:!1,audioWorkspaceCreatedNotifications:!1,audioAgentErrorNotifications:!1,audioNotificationSound:`hey.mp3`,audioQuestionSound:`inherit`,audioWorkspaceCreatedSound:`inherit`,audioAgentErrorSound:`inherit`,...ti,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:si,whipVolume:1,tags:[],branchPrefixes:[],setupScript:``,cleanupScript:``,cleanupScriptMode:`no-tasks`,cleanupScriptOnlyOnChanges:!1,archiveScript:``,changeSourceBranchScript:``,worktreesPath:xi,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 q(`/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 q(`/api/settings/mcp-servers`)}catch(e){console.error(`[settings store] fetchActiveMcpServers failed:`,e),this.activeMcpServers=[]}},async fetchGlobalDefaults(){return q(`/api/settings/defaults`)},async previewRetention(e,t){return q(`/api/settings/ws-events-retention-preview?days=${e}&keep=${t}`)},async updateGlobal(e){this._assertLoaded(),this.global=await q(`/api/settings/global`,{method:`PUT`,body:e})},async upsertProject(e,t){this._assertLoaded();let n=await q(`/api/settings/projects/${Si(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 q(`/api/settings/projects/${Si(e)}`,{method:`DELETE`}),this.projects=this.projects.filter(t=>t.path!==e)},async fetchVoiceModels(){this.voiceModelsLoading=!0;try{let e=await q(`/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 q(`/api/voice/models/${encodeURIComponent(e)}/download`,{method:`DELETE`})}catch(e){if(!(e instanceof Wr)||e.status!==404)throw e}await this.fetchVoiceModels()},async fetchVoiceRuntime(){try{this.voiceRuntime=await q(`/api/voice/runtime`)}catch(e){console.error(`[settings store] fetchVoiceRuntime failed:`,e)}},async downloadVoiceModel(e){await q(`/api/voice/models/${encodeURIComponent(e)}/download`,{method:`POST`}),await this.fetchVoiceModels()},async deleteVoiceModel(e){await q(`/api/voice/models/${encodeURIComponent(e)}`,{method:`DELETE`}),await this.fetchVoiceModels()}}}),wi=6e3,Ti=new Map,Ei=[],Di=!1;function Oi(e){let t=Ti.get(e);return t||(t=new Audio(oi(e)),Ti.set(e,t)),t}function ki(e,t){let n=new Audio(oi(ri(e)));n.preload=`auto`,n.volume=t,n.play().catch(()=>{})}function Ai(){`Notification`in window&&Notification.permission==="default"&&Notification.requestPermission()}function ji(e){return typeof e!=`number`||!Number.isFinite(e)?1:Math.max(0,Math.min(1,e))}function Mi(){let e=Ei.shift();if(!e){Di=!1;return}Di=!0;let t=Oi(ri(e.soundId));t.volume=e.volume,t.currentTime=0;let n=!1,r=()=>{n||(n=!0,t.removeEventListener(`ended`,r),t.removeEventListener(`error`,r),Mi())};t.addEventListener(`ended`,r,{once:!0}),t.addEventListener(`error`,r,{once:!0}),t.play().catch(r)}function Ni(e,t){let n={soundId:ri(e),volume:ji(t)};if(document.visibilityState===`hidden`){ki(n.soundId,n.volume);return}Ei.push(n),Di||Mi()}function Pi(e,t){let n=Oi(ri(e));n.volume=ji(t),n.currentTime=0,n.play().catch(()=>{})}function Fi(e,t,n,r,i,a){let o=Ci();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&&Ni(r&&r.length>0?r:o.global.audioNotificationSound??`hey.mp3`,i??o.global.audioNotificationVolume)}function Ii(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`}),kr.create({type:`negative`,position:`top`,multiLine:!0,message:e,timeout:t.timeout??0,actions:n})}var Li=Ie(`devServer`,{state:()=>({statuses:{},logs:{}}),getters:{getStatus:e=>t=>e.statuses[t]??null},actions:{async fetchStatus(e){try{let t=await fetch(`/api/dev-server/${e}/status`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();this.statuses[e]=n}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 Ri(e){return e.state===`OPEN`&&e.reviewDecision===`CHANGES_REQUESTED`&&e.reviewers.some(e=>e.state===`CHANGES_REQUESTED`)}function zi(e){return e.state===`OPEN`&&e.ci.rollup===`FAILURE`}function Bi(e){return e?zi(e)||Ri(e):!1}var Vi=[`executing`,`extracting`,`brainstorming`];function Hi(e){return!!e&&Vi.includes(e)}function Ui(e,t){return Hi(e)&&!t}function Wi(e,t,n){return Ui(e,!t||n)}var Gi={created:`workspaceStatus.created`,extracting:`workspaceStatus.extracting`,brainstorming:`workspaceStatus.brainstorming`,executing:`workspaceStatus.executing`,"awaiting-user":`workspaceStatus.awaitingUser`,completed:`workspaceStatus.completed`,idle:`workspaceStatus.idle`,error:`workspaceStatus.error`,quota:`workspaceStatus.quota`};function Ki(e){return e?Gi[e]??null:null}var qi=class extends Error{constructor(e,t){super(e),on(this,`code`,void 0),this.name=`WorkspaceActionError`,this.code=t}};function Ji(e){return e===`running`?`in_progress`:e}var Yi=5e3,Xi=500,Zi=null,Qi=0,$i=0,ea=new Map,ta=new Map,na=new Map,ra=new Map;function ia(e){ta.set(e,(ta.get(e)??0)+1)}function aa(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=(ta.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 oa(e){return e===`claude-code`?`claude-code`:null}var J=Ie(`workspace`,{state:()=>({workspaces:[],selectedWorkspaceId:null,tasks:[],activityFeeds:{},activityFeedIds:{},activityCounts:{},subagents:{},agentTodos:{},sessions:[],selectedSessionId:null,archivedWorkspaces:[],archivedLoaded:!1,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)||Bi(e.prSnapshots[t.id])||!Hi(t.status)&&!!e.prSnapshots[t.id]?.readyToMerge)},running(e){return e.workspaces.filter(t=>Hi(t.status)&&!Bi(e.prSnapshots[t.id]))},idle(e){return e.workspaces.filter(t=>[`completed`,`idle`,`created`].includes(t.status)&&!Bi(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=oa(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];ea.delete(e),ta.delete(e),na.delete(e),ra.delete(e),Ur().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],ia(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],ia(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 q(`/api/git/orphan-worktrees?projectPath=${encodeURIComponent(e)}`,{cache:`no-store`})},async fetchWorkspaces(){this.loading=!0;try{let e=await q(`/api/workspaces`);this.workspaces=Array.isArray(e)?e:e.workspaces??[],this.listLoadError=null,this.activeListLoadFailed=!1,this.listPollFailureStreak=0;for(let e of this.workspaces)[`completed`,`idle`,`error`,`quota`].includes(e.status)&&this.finalizeRunningSubagents(e.id)}catch(e){this.listLoadError=e instanceof Error?e.message:String(e),this.activeListLoadFailed=!0,console.error(`[workspace store] fetchWorkspaces failed:`,e)}finally{this.loading=!1}},async retryLoadWorkspaces(){await this.fetchWorkspaces(),this.archivedLoaded&&await this.fetchArchivedWorkspaces()},async fetchArchivedWorkspaces(){try{this.archivedWorkspaces=await q(`/api/workspaces/archived`),this.archivedLoaded=!0,this.activeListLoadFailed||(this.listLoadError=null)}catch(e){this.listLoadError=e instanceof Error?e.message:String(e),console.error(`[workspace store] fetchArchivedWorkspaces failed:`,e)}},async fetchWorkspaceDetails(e){let t=(ra.get(e)??0)+1;ra.set(e,t);let n=ea.get(e)??0;try{let r=await q(`/api/workspaces/${e}`);if(this.selectedWorkspaceId!==e||ra.get(e)!==t)return;let i=(ea.get(e)??0)!==n,a=r.workspace??r,o=i?{...a}:a;i&&delete o.status;let s=this.workspaces.findIndex(t=>t.id===e);if(s>=0)this.workspaces[s]={...this.workspaces[s],...o};else{let t=this.archivedWorkspaces.findIndex(t=>t.id===e);t>=0?this.archivedWorkspaces[t]={...this.archivedWorkspaces[t],...o}:o?.archivedAt&&this.archivedWorkspaces.unshift(o)}r.tasks&&(this.tasks=r.tasks),`agentLiveness`in r&&this.applyAgentLiveness(e,r.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){try{let t=await fetch(`/api/workspaces`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({}));throw new qi(typeof e.error==`string`?e.error:`HTTP ${t.status}`,typeof e.step==`string`?e.step:void 0)}let n=t.headers.get(`X-Kobo-Branch-Adjusted`)===`1`,r=t.headers.get(`X-Kobo-Source-Fallback`)===`local`,i=await t.json(),a=i.workspace??i,o=this.workspaces.findIndex(e=>e.id===a.id);return o>=0?this.workspaces[o]=a:this.workspaces.push(a),e.autoLoop&&this.fetchAutoLoopStates(),a._branchAdjusted=n,a._sourceFallback=r,a}catch(e){throw console.error(`[workspace store] createWorkspace failed:`,e),e}},async startWorkspace(e,t,n,r){try{await q(`/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 qi(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),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),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 qi(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 qi(e.error??`Push failed`,e.code)}},async fetchGitStats(e,t={}){let n=await q(`/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 qi(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}},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||ya().subscribe(e)},async fetchSessions(e,t){let n=(na.get(e)??0)+1;na.set(e,n);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||na.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)}},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=ya();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.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>Yi){let t=n.splice(0,n.length-Yi),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(){Zi!==null&&clearTimeout(Zi),Zi=setTimeout(()=>{Zi=null,this.fetchPrSnapshots()},Xi)},async fetchPrSnapshots(){let e=++$i,t=new Map(ta);try{let n=await fetch(`/api/workspaces/pr-states`,{cache:`no-store`});if(!n.ok)return;let r=await n.json();if(e!==$i)return;this.prSnapshots=aa(r,this.prSnapshots,t)}catch(e){console.error(`[workspace-store] fetchPrSnapshots failed:`,e)}},async fetchWorkspacesInfo(){let e=++Qi,t=new Map(ea),n=new Map(ta);try{let r=await q(`/api/workspaces/info`,{cache:`no-store`});if(this.listPollFailureStreak=0,this.activeListLoadFailed=!1,this.listLoadError=null,e!==Qi)return;this.agentLiveness=r.agentLiveness??{};let i={...this.agentLivenessLoaded};for(let e of r.workspaces)i[e.id]=!0;this.agentLivenessLoaded=i;let a=new Map(this.workspaces.map(e=>[e.id,e]));this.workspaces=r.workspaces.map(e=>{let n=a.get(e.id),r=(ea.get(e.id)??0)!==(t.get(e.id)??0);return n&&r?{...e,...n}:e});for(let e of this.workspaces)[`completed`,`idle`,`error`,`quota`].includes(e.status)&&this.finalizeRunningSubagents(e.id);this.prSnapshots=aa(r.prSnapshots,this.prSnapshots,n);let o={...this.gitStatsCache};for(let[e,t]of Object.entries(r.gitStats)){let n=o[e];(!n||(t.computedAt??0)>=(n.computedAt??0))&&(o[e]=t)}this.gitStatsCache=o}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,ia(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},ia(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.startWorkspace(e)},enqueuePending(e,t){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){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(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){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?Ji(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){this.queuedMessages[this.queuedMessageKey(e,n)]={content:t,sessionId:n}},cancelQueuedMessage(e,t){t&&delete this.queuedMessages[this.queuedMessageKey(e,t)]},flushQueuedMessage(e,t){let n=this.getQueuedMessage(e,t);n&&(this.cancelQueuedMessage(e,t),ya().sendChatMessage(e,n.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){ea.set(e,(ea.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(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`})}}}}),Y=Br.global.t,sa={"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 ca(e,t,n){let r=Ci().global,i=sa[n];Fi(e,void 0,t,ii(r[i.soundKey]),Number(r[i.volumeKey]),!!r[i.enabledKey])}function la(e,t){let n=[];return t&&n.push({label:Y(`pr.openPr`),color:`white`,noDismiss:!0,handler:()=>window.open(t,`_blank`)}),n.push({label:Y(`pr.openWorkspace`),color:`white`,noDismiss:!0,handler:()=>{window.location.hash=`#/workspace/${e}`}}),n.push({label:Y(`pr.dismiss`),color:`white`}),n}var X=null,ua=null,da=0,fa=!1,pa=!1,ma=!1;function ha(e){ma=e}function ga(e,t,n){if(t.kind!==`session:started`)return;let r=J();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`}),!ma&&n&&r.selectedWorkspaceId===e&&r.selectedSessionId!==n&&r.fetchSessions(e,n).catch(e=>{console.error(`[websocket] fetchSessions on session:started failed:`,e)})}function _a(e,t){let n=J();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 va(e,t,n,r,i){let a=Ur();if(t.kind===`session:compacting`){a.setCompacting(e,t.active);return}a.append(e,t,n,r,i),(t.kind===`session:compacted`||t.kind===`message:text`||t.kind===`tool:call`)&&a.setCompacting(e,!1),ga(e,t,i??void 0);let o=J();if(t.kind===`session:user-input-requested`){if(t.requestKind===`question`?o.enqueuePending(e,{kind:`question`,agentSessionId:i??null,toolCallId:t.toolCallId,toolName:t.toolName,input:t.payload}):o.enqueuePending(e,{kind:`permission`,agentSessionId:i??null,toolCallId:t.toolCallId,toolName:t.toolName,toolInput:t.payload}),o.updateWorkspaceFromEvent(e,{status:`awaiting-user`}),!ma){let n=o.workspaces.find(t=>t.id===e)?.name??``,r=t.requestKind===`question`?Y(`notification.agentQuestion`,{name:n}):Y(`notification.agentPermissionRequest`,{name:n}),i=Ci().global;Fi(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`){o.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(!_a(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)&&o.triggerGitRefresh(),/\bgit\s+branch\s+-m\b/i.test(r)&&setTimeout(()=>{o.resyncWorkspaceBranch(e).catch(e=>{console.error(`[websocket] Branch resync failed:`,e)})},2500),/\bgh\s+pr\s+create\b/i.test(r)&&setTimeout(()=>o.triggerGitRefresh(),3e3)}if(t.kind===`tool:call`&&t.name===`ExitPlanMode`&&o.workspaces.find(t=>t.id===e)?.agentPermissionMode===`plan`&&(o.updateWorkspaceFromEvent(e,{agentPermissionMode:`bypass`}),o.updateAgentPermissionMode(e,`bypass`).catch(e=>{console.error(`[websocket] failed to persist ExitPlanMode flip:`,e)})),t.kind!==`session:started`){if(t.kind===`turn:completed`){i&&o.markAgentTurnSettled(e,i);return}if(t.kind===`session:ended`){i&&o.clearPendingForSession(e,i);let n=o.activeAgentSessionIds[e];if(t.superseded===!0||typeof i==`string`&&i.length>0&&n!==void 0&&i!==n){o.cancelQueuedMessage(e,i),i&&o.clearActiveAgentSession(e,i);return}a.setCompacting(e,!1),i?o.clearActiveAgentSession(e,i):o.clearActiveAgentSessionOwner(e);let r=o.workspaces.find(t=>t.id===e)?.status===`quota`?`quota`:t.reason===`completed`?`completed`:t.reason===`error`?`error`:`idle`;o.updateWorkspaceFromEvent(e,{status:r}),i&&t.reason===`completed`&&o.flushQueuedMessage(e,i),o.finalizeRunningSubagents(e),o.fetchWorkspaces(),!ma&&t.reason!==`killed`&&t.reason!==`error`&&o.autoLoopStates[e]?.auto_loop!==!0&&Fi(Y(`notification.agentFinished`,{name:o.workspaces.find(t=>t.id===e)?.name??``}),void 0,e);return}if(t.kind===`error`&&(t.category===`quota`&&(o.updateWorkspaceFromEvent(e,{status:`quota`}),o.fetchWorkspaces()),!ma)){let t=Ci().global;Fi(Y(`notification.agentError`,{name:o.workspaces.find(t=>t.id===e)?.name??``}),void 0,e,t.audioAgentErrorSound,t.audioAgentErrorVolume,t.audioAgentErrorNotifications)}}}}var ya=Ie(`websocket`,{state:()=>({connected:!1,reconnecting:!1,reconnectAttempt:0,lastEventId:null,_replaying:!1}),actions:{connect(){if(X)return;if(fa=!0,pa||(pa=!0,window.addEventListener(`online`,()=>{fa&&this.connect()}),window.addEventListener(`offline`,()=>{this.connected=!1,this.reconnecting=fa,ua&&=(clearTimeout(ua),null)})),!navigator.onLine){this.connected=!1,this.reconnecting=!0;return}let e=ar(`${window.location.protocol===`https:`?`wss:`:`ws:`}//${window.location.host}/ws`,nr()),t=new WebSocket(e);X=t,t.addEventListener(`open`,()=>{this.connected=!0,this.reconnecting=!1,da=0,this.reconnectAttempt=0;let e=J().workspaces.map(e=>e.id);for(let t of e)this._send({type:`subscribe`,payload:{workspaceId:t}});this.lastEventId&&this._send({type:`sync:request`,payload:{lastEventId:this.lastEventId,workspaceIds:e}})}),t.addEventListener(`message`,e=>{try{let t=JSON.parse(e.data);this._routeMessage(t)}catch{}}),t.addEventListener(`close`,()=>{this.connected=!1,X=null,fa&&this._scheduleReconnect()}),t.addEventListener(`error`,()=>{})},disconnect(){fa=!1,ua&&=(clearTimeout(ua),null),X&&=(X.close(),null),this.connected=!1,this.reconnecting=!1,this.reconnectAttempt=0},subscribe(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}})},sendChatMessage(e,t,n,r,i=!1){let a=this._send({type:`chat:message`,payload:{workspaceId:e,content:t,sessionId:n,agentPermissionModeOverride:r,force:i}});if(/^\/compact(\s|$)/.test(t.trim())&&Ur().setCompacting(e,!0),!a)return!1;let o=J(),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},_send(e){return X&&X.readyState===WebSocket.OPEN?(X.send(JSON.stringify(e)),!0):!1},isConnected(){return X!==null&&X.readyState===WebSocket.OPEN},_scheduleReconnect(){if(ua)return;if(!fa||!navigator.onLine){this.reconnecting=fa;return}let e=Math.min(1e3*2**da,3e4),t=Math.round(e*(.8+Math.random()*.4));da++,this.reconnecting=!0,this.reconnectAttempt=da,da===4&&nr()&&sr(),ua=setTimeout(()=>{ua=null,this.connect()},t)},_routeMessage(e){let t=J();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??``;switch(e.type){case`chat:accepted`:{let e=typeof n.sessionId==`string`?n.sessionId:void 0;r&&e&&t.cancelQueuedMessage(r,e);break}case`chat:rejected`:{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:Y(`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)}kr.create({type:`negative`,message:a,position:`top`,timeout:6e3});break}case`agent:event`:{if(!r)break;let t=e.createdAt;va(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&&n.content){let i=n.content,a=n.sender??`user`,o=e.sessionId,s=e.id??e.eventId??`user-${Date.now()}`,c=typeof e.createdAt==`string`?e.createdAt:void 0,l=c??new Date().toISOString(),u=t.activityFeeds[r]??[];if(a===`user`&&u.some(e=>e.meta?.sender===`user`&&e.content===i&&e.meta?.pending)){let e=u.findIndex(e=>e.meta?.sender===`user`&&e.content===i&&e.meta?.pending);e>=0&&(u[e]={...u[e],id:s,sessionId:o,...c?{timestamp:c}:{}})}else t.addActivityItem(r,{id:s,type:`text`,content:i,timestamp:l,sessionId:o,meta:{sender:a}})}break;case`sync:response`:this._replaying=!0,ha(!0);try{let e=n.events??[],t=n.mode===`delta`?`delta`:`snapshot`,r=new Map;for(let t of e)if(t.type!==`sync:response`){if(t.type===`agent:event`&&t.workspaceId){let e=r.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,r.set(t.workspaceId,e);continue}this._routeMessage(t)}if(r.size>0){let e=Ur();for(let[n,{events:i,timestamps:a,sessionIds:o,eventIds:s,oldestId:c}]of r){let r=t===`delta`?e.merge(n,i,a,{sessionIds:o,eventIds:s}):i.map((e,t)=>t);t===`snapshot`&&e.reset(n,i,a,{oldestId:c,hasMoreOlder:!0,sessionIds:o,eventIds:s}),t===`snapshot`&&J().updateAgentTodos(n,[]);for(let e of r){let t=i[e];if(!t)continue;let r=o[e]??null;if(t.kind===`session:user-input-requested`){t.requestKind===`question`?J().enqueuePending(n,{kind:`question`,agentSessionId:r,toolCallId:t.toolCallId,toolName:t.toolName,input:t.payload}):J().enqueuePending(n,{kind:`permission`,agentSessionId:r,toolCallId:t.toolCallId,toolName:t.toolName,toolInput:t.payload});continue}if(t.kind===`session:started`){if(r){let e=J();e.setActiveAgentSession(n,r);let t=e.peekPending(n);t&&t.agentSessionId===r&&e.dequeuePending(n)}continue}if(t.kind===`session:ended`){let e=J();r?(e.clearPendingForSession(n,r),e.cancelQueuedMessage(n,r),e.clearActiveAgentSession(n,r)):t.superseded!==!0&&e.clearActiveAgentSessionOwner(n);continue}if(t.kind===`subagent:progress`){J().upsertSubagent(n,{toolUseId:t.toolCallId,status:t.status,description:t.description,taskType:t.taskType,lastToolName:t.lastToolName,totalTokens:t.totalTokens,toolUses:t.toolUses,durationMs:t.durationMs});continue}_a(n,t)}}}let i=e.findLast(e=>e.replayable!==!1&&typeof e.id==`string`);i&&(this.lastEventId=i.id)}finally{this._replaying=!1,ha(!1)}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=Li();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?Y(`chat.scriptDone`):Y(`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:Y(`chat.scriptError`,{phase:`setup`,message:e.payload?.message??Y(`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?Y(`chat.scriptDone`):Y(`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:Y(`chat.scriptError`,{phase:`cleanup`,message:e.payload?.message??Y(`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?Y(`chat.scriptDone`):Y(`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:Y(`chat.scriptError`,{phase:`archive`,message:e.payload?.message??Y(`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: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`:e.type===`workspace:archived`&&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}),kr.create({type:`info`,position:`top`,timeout:wi,message:Y(`pr.baseChanged`,{oldBase:i,newBase:a}),actions:la(r,e.prUrl)}),Fi(Y(`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:wi},"pr:merged":{key:`toast.prMerged`,type:`positive`,timeout:5e3}}[i],c=Y(s.key,{n:o});kr.create({type:s.type,position:`top`,timeout:s.timeout,message:c,actions:la(r,a.prUrl)}),ca(c,r,i),i!==`pr:merged`&&t.refreshPrSnapshot(r);break}case`pr:changes-requested`:{if(!r)break;let e=n,i=Y(`toast.prChangesRequested`,{n:e.prNumber??0});kr.create({type:`warning`,position:`top`,timeout:wi,message:i,actions:la(r,e.prUrl)}),ca(i,r,`pr:changes-requested`),t.refreshPrSnapshot(r);break}case`pr:approved`:{if(!r)break;let e=n,i=Y(`toast.prApproved`,{n:e.prNumber??0});kr.create({type:`positive`,position:`top`,timeout:5e3,message:i,actions:la(r,e.prUrl)}),ca(i,r,`pr:approved`),t.refreshPrSnapshot(r);break}case`pr:ready-to-merge`:{if(!r)break;let e=n,i=Y(`toast.prReadyToMerge`,{n:e.prNumber??0});kr.create({type:`positive`,position:`top`,timeout:5e3,message:i,actions:la(r,e.prUrl)}),ca(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-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);break;case`autoloop:enabled`:case`autoloop:iteration-started`:case`autoloop:ready-flipped`:t.fetchAutoLoopStates();break;case`autoloop:permission-overridden`:r&&Fi(Y(`notification.autoLoopPermissionOverridden`,{name:t.workspaces.find(e=>e.id===r)?.name??``}),void 0,r);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&&Fi(Y(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`:sn().update(n)}}}}),ba=u({__name:`App`,setup(e){let t=ya(),n=fr();return b(()=>{t.connect(),n.fetchTemplates(),Ai()}),v(()=>{t.disconnect()}),(e,t)=>{let n=y(`router-view`);return S(),E(d,null,[D(n),D(mn),D(dr)],64)}}}),xa=e=>e,Sa=xa,Ca=xa,wa=xa(()=>Be()),Ta={true:`inset`,item:`item-inset`,"item-thumbnail":`item-thumbnail-inset`},Ea={xs:2,sm:4,md:8,lg:16,xl:24},Da=B({name:`QSeparator`,props:{...Le,spaced:[Boolean,String],inset:[Boolean,String],vertical:Boolean,color:String,size:String},setup(e){let t=M(),n=Ae(e,t.proxy.$q),r=p(()=>e.vertical?`vertical`:`horizontal`),i=p(()=>` q-separator--${r.value}`),a=p(()=>e.inset?`${i.value}-${Ta[e.inset]}`:``),o=p(()=>`q-separator${i.value}${a.value}`+(e.color===void 0?``:` bg-${e.color}`)+(n.value?` q-separator--dark`:``)),s=p(()=>{let t={};if(e.size!==void 0&&(t[e.vertical?`width`:`height`]=e.size),e.spaced){let n=e.spaced===!0?`${Ea.md}px`:e.spaced in Ea?`${Ea[e.spaced]}px`:e.spaced,r=e.vertical?[`Left`,`Right`]:[`Top`,`Bottom`];t[`margin${r[0]}`]=t[`margin${r[1]}`]=n}return t});return()=>N(`hr`,{class:o.value,style:s.value,"aria-orientation":r.value})}}),Oa=()=>N(`svg`,{key:`svg`,class:`q-radio__bg absolute non-selectable`,viewBox:`0 0 24 24`},[N(`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`}),N(`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 ka(e){(e.keyCode===13||e.keyCode===32)&&se(e)}var Aa=B({name:`QRadio`,props:{...Le,...L,...Ke,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(e,{slots:t,emit:r}){let{proxy:a}=M(),o=Ae(e,a.$q),s=ie(e,Xe),c=i(null),{refocusTargetEl:l,refocusTarget:u}=Ye(e,c),d=p(()=>n(e.modelValue)===n(e.val)),f=p(()=>`q-radio cursor-pointer no-outline row inline no-wrap items-center`+(e.disable?` disabled`:``)+(o.value?` q-radio--dark`:``)+(e.dense?` q-radio--dense`:``)+(e.leftLabel?` reverse`:``)),m=p(()=>{let t=e.color!==void 0&&(e.keepColor||d.value)?` text-${e.color}`:``;return`q-radio__inner relative-position q-radio__inner--${d.value?`truthy`:`falsy`}${t}`}),h=p(()=>(d.value?e.checkedIcon:e.uncheckedIcon)||null),g=p(()=>e.disable?-1:e.tabindex||0),_=p(()=>{let t={type:`radio`};return e.name!==void 0&&Object.assign(t,{".checked":d.value,"^checked":d.value?`checked`:void 0,name:e.name,value:e.val}),t}),v=qe(_);function y(t){t!==void 0&&(se(t),u(t)),!e.disable&&!d.value&&r(`update:modelValue`,e.val,t)}function b(e){(e.keyCode===13||e.keyCode===32)&&y(e)}Object.assign(a,{set:y});let x=Oa();return()=>{let n=h.value===null?[x]:[N(`div`,{key:`icon`,class:`q-radio__icon-container absolute-full flex flex-center no-wrap`},[N(pe,{class:`q-radio__icon`,name:h.value})])];e.disable||v(n,`unshift`,` q-radio__native q-ma-none q-pa-none`);let r=[N(`div`,{class:m.value,style:s.value,"aria-hidden":`true`},n)];l.value!==null&&r.push(l.value);let i=e.label===void 0?R(t.default):le(t.default,[e.label]);return i!==void 0&&r.push(N(`div`,{class:`q-radio__label q-anchor--skip`},i)),N(`div`,{ref:c,class:f.value,tabindex:g.value,role:`radio`,"aria-label":e.label,"aria-checked":d.value?`true`:`false`,"aria-disabled":e.disable?`true`:void 0,onClick:y,onKeydown:ka,onKeyup:b},r)}}}),ja=()=>N(`div`,{key:`svg`,class:`q-checkbox__bg absolute`},[N(`svg`,{class:`q-checkbox__svg fit absolute-full`,viewBox:`0 0 24 24`},[N(`path`,{class:`q-checkbox__truthy`,fill:`none`,d:`M1.73,12.91 8.1,19.28 22.79,4.59`}),N(`path`,{class:`q-checkbox__indet`,d:`M4,14H20V10H4`})])]),Ma=B({name:`QCheckbox`,props:Qe,emits:Ze,setup(e){let t=ja();function n(n,r){let i=p(()=>(n.value?e.checkedIcon:r.value?e.indeterminateIcon:e.uncheckedIcon)||null);return()=>i.value===null?[t]:[N(`div`,{key:`icon`,class:`q-checkbox__icon-container absolute-full flex flex-center no-wrap`},[N(pe,{class:`q-checkbox__icon`,name:i.value})])]}return $e(`checkbox`,n)}}),Na=B({name:`QToggle`,props:{...Qe,icon:String,iconColor:String},emits:Ze,setup(e){function t(t,n){let r=p(()=>(t.value?e.checkedIcon:n.value?e.indeterminateIcon:e.uncheckedIcon)||e.icon),i=p(()=>t.value?e.iconColor:null);return()=>[N(`div`,{class:`q-toggle__track`}),N(`div`,{class:`q-toggle__thumb absolute flex flex-center no-wrap`},r.value===void 0?void 0:[N(pe,{name:r.value,color:i.value})])]}return $e(`toggle`,t)}}),Pa={radio:Aa,checkbox:Ma,toggle:Na},Fa=Object.keys(Pa);function Ia(e,t){if(typeof e==`function`)return e;let n=e===void 0?t:e;return e=>e[n]}var La=B({name:`QOptionGroup`,props:{...Le,modelValue:{required:!0},options:{type:Array,validator:e=>e.every(U),default:()=>[]},optionValue:[Function,String],optionLabel:[Function,String],optionDisable:[Function,String],name:String,type:{type:String,default:`radio`,validator:e=>Fa.includes(e)},color:String,keepColor:Boolean,dense:Boolean,size:String,leftLabel:Boolean,inline:Boolean,disable:Boolean},emits:[`update:modelValue`],setup(e,{emit:t,slots:n}){let{proxy:{$q:r}}=M(),i=Array.isArray(e.modelValue);e.type===`radio`?i&&console.error(`q-option-group: model should not be array`):i||console.error(`q-option-group: model should be array in your case`);let a=Ae(e,r),o=p(()=>Pa[e.type]),s=p(()=>Ia(e.optionValue,`value`)),c=p(()=>Ia(e.optionLabel,`label`)),l=p(()=>Ia(e.optionDisable,`disable`)),u=p(()=>e.options.map(t=>({val:s.value(t),name:t.name===void 0?e.name:t.name,disable:e.disable||l.value(t),leftLabel:t.leftLabel===void 0?e.leftLabel:t.leftLabel,color:t.color===void 0?e.color:t.color,checkedIcon:t.checkedIcon,uncheckedIcon:t.uncheckedIcon,dark:t.dark===void 0?a.value:t.dark,size:t.size===void 0?e.size:t.size,dense:e.dense,keepColor:t.keepColor===void 0?e.keepColor:t.keepColor}))),d=p(()=>`q-option-group q-gutter-x-sm`+(e.inline?` q-option-group--inline`:``)),f=p(()=>{let t={role:`group`};return e.type===`radio`&&(t.role=`radiogroup`,e.disable&&(t[`aria-disabled`]=`true`)),t});function m(e){t(`update:modelValue`,e)}return()=>N(`div`,{class:d.value,...f.value},e.options.map((t,r)=>{let i=n[`label-`+r]===void 0?n.label===void 0?void 0:()=>n.label(t):()=>n[`label-`+r](t);return N(`div`,[N(o.value,{label:i===void 0?c.value(t):null,modelValue:e.modelValue,"onUpdate:modelValue":m,...u.value[r]},i)])}))}}),Ra=B({name:`DialogPluginComponent`,props:{...Le,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(e,{emit:t}){let{proxy:r}=M(),{$q:a}=r,o=Ae(e,a),s=i(null),c=i(e.prompt===void 0?e.options===void 0?void 0:e.options.model:e.prompt.model),l=p(()=>`q-dialog-plugin`+(o.value?` q-dialog-plugin--dark q-dark`:``)+(e.progress===!1?``:` q-dialog-plugin--progress`)),u=p(()=>e.color||(o.value?`amber`:`primary`)),d=p(()=>e.progress===!1?null:U(e.progress)?{component:e.progress.spinner||Ce,props:{color:e.progress.color||u.value}}:{component:Ce,props:{color:u.value}}),f=p(()=>e.prompt!==void 0||e.options!==void 0),m=p(()=>{if(!f.value)return{};let{model:t,isValid:n,items:r,...i}=e.prompt===void 0?e.options:e.prompt;return i}),h=p(()=>U(e.ok)||e.ok===!0?a.lang.label.ok:e.ok),g=p(()=>U(e.cancel)||e.cancel===!0?a.lang.label.cancel:e.cancel),_=p(()=>e.prompt===void 0?e.options!==void 0&&e.options.isValid!==void 0&&!e.options.isValid(c.value):e.prompt.isValid!==void 0&&!e.prompt.isValid(c.value)),v=p(()=>({color:u.value,label:h.value,ripple:!1,disable:_.value,...U(e.ok)?e.ok:{flat:!0},"data-autofocus":e.focus===`ok`&&!f.value||void 0,onClick:S})),y=p(()=>({color:u.value,label:g.value,ripple:!1,...U(e.cancel)?e.cancel:{flat:!0},"data-autofocus":e.focus===`cancel`&&!f.value||void 0,onClick:C}));k(()=>e.prompt&&e.prompt.model,T),k(()=>e.options&&e.options.model,T);function b(){s.value.show()}function x(){s.value.hide()}function S(){t(`ok`,n(c.value)),x()}function C(){x()}function w(){t(`hide`)}function T(e){c.value=e}function E(t){!_.value&&e.prompt.type!==`textarea`&&oe(t,13)&&S()}function D(t,n){return e.html?N(W,{class:t,innerHTML:n}):N(W,{class:t},()=>n)}function O(){return[N($n,{color:u.value,dense:!0,autofocus:!0,dark:o.value,...m.value,modelValue:c.value,"onUpdate:modelValue":T,onKeyup:E})]}function A(){return[N(La,{color:u.value,options:e.options.items,dark:o.value,...m.value,modelValue:c.value,"onUpdate:modelValue":T})]}function ee(){let t=[];return e.cancel&&t.push(N(xe,y.value)),e.ok&&t.push(N(xe,v.value)),N(er,{class:e.stackButtons?`items-end`:``,vertical:e.stackButtons,align:`right`},()=>t)}function j(){let t=[];return e.title&&t.push(D(`q-dialog__title`,e.title)),e.progress!==!1&&t.push(N(W,{class:`q-dialog__progress`},()=>N(d.value.component,d.value.props))),e.message&&t.push(D(`q-dialog__message`,e.message)),e.prompt===void 0?e.options!==void 0&&t.push(N(Da,{dark:o.value}),N(W,{class:`scroll q-dialog-plugin__form`},A),N(Da,{dark:o.value})):t.push(N(W,{class:`scroll q-dialog-plugin__form`},O)),(e.ok||e.cancel)&&t.push(ee()),t}function te(){return[N(kt,{class:[l.value,e.cardClass],style:e.cardStyle,dark:o.value},j)]}return Object.assign(r,{show:b,hide:x}),()=>N(tn,{ref:s,onHide:w},te)}});function za(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]}:{},za(e[n],t[n])):e[n]=t[n]}function Ba(e,t,n){return r=>{let a,o,s=t&&r.component!==void 0;if(s){let{component:e,componentProps:t}=r;a=typeof e==`string`?n.component(e):e,o=t||{}}else{let{class:t,style:n,...i}=r;a=e,o=i,t!==void 0&&(i.cardClass=t),n!==void 0&&(i.cardStyle=n)}let c,l=!1,u=i(null),d=_e(!1,`dialog`),f=e=>{if(u.value?.[e]!==void 0){u.value[e]();return}let t=c.$.subTree;if(t?.component){if(t.component.proxy&&t.component.proxy[e]){t.component.proxy[e]();return}if(t.component.subTree&&t.component.subTree.component&&t.component.subTree.component.proxy&&t.component.subTree.component.proxy[e]){t.component.subTree.component.proxy[e]();return}}console.error(`[Quasar] Incorrectly defined Dialog component`)},p=[],m=[],h={onOk(e){return p.push(e),h},onCancel(e){return m.push(e),h},onDismiss(e){return p.push(e),m.push(e),h},hide(){return f(`hide`),h},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),za(o,r)}c.$forceUpdate()}return h}},g=e=>{l=!0,p.forEach(t=>{t(e)})},_=()=>{v.unmount(d),me(d),v=null,c=null,l||m.forEach(e=>{e()})},v=St({name:`QGlobalDialog`,setup:()=>()=>N(a,{...o,ref:u,onOk:g,onHide:_,onVnodeMounted(...e){typeof o.onVnodeMounted==`function`&&o.onVnodeMounted(...e),C(()=>f(`show`))}})},n);return c=v.mount(d),h}}var Va={install({$q:e,parentApp:t}){e.dialog=this.create=Ba(Ra,!0,t)}},Ha=new Map;function Ua(e,t){Ha.set(e,t)}function Wa(e){Ha.delete(e)}function Ga(){let e=[];for(let[t,n]of Ha)try{n()&&e.push(t)}catch{}return e}function Ka(){return Ga().length>0}function qa(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function Ja(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&qa(e.default)}var Z=Object.assign;function Ya(e,t){let n={};for(let r in t){let i=t[r];n[r]=Q(i)?i.map(e):e(i)}return n}var Xa=()=>{},Q=Array.isArray;function Za(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var Qa=Symbol(``);function $a(e,t){return Z(Error(),{type:e,[Qa]:!0},t)}function eo(e,t){return e instanceof Error&&Qa in e&&(t==null||!!(e.type&t))}var to=Symbol(``),no=Symbol(``),ro=Symbol(``),io=Symbol(``),ao=Symbol(``);function oo(){return P(ro)}function so(e){return P(io)}var co=typeof document<`u`,lo=/#/g,uo=/&/g,fo=/\//g,po=/=/g,mo=/\?/g,ho=/\+/g,go=/%5B/g,_o=/%5D/g,vo=/%5E/g,yo=/%60/g,bo=/%7B/g,xo=/%7C/g,So=/%7D/g,Co=/%20/g;function wo(e){return e==null?``:encodeURI(``+e).replace(xo,`|`).replace(go,`[`).replace(_o,`]`)}function To(e){return wo(e).replace(bo,`{`).replace(So,`}`).replace(vo,`^`)}function Eo(e){return wo(e).replace(ho,`%2B`).replace(Co,`+`).replace(lo,`%23`).replace(uo,`%26`).replace(yo,"`").replace(bo,`{`).replace(So,`}`).replace(vo,`^`)}function Do(e){return Eo(e).replace(po,`%3D`)}function Oo(e){return wo(e).replace(lo,`%23`).replace(mo,`%3F`)}function ko(e){return Oo(e).replace(fo,`%2F`)}function Ao(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var jo=/\/$/,Mo=e=>e.replace(jo,``);function No(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=Vo(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:Ao(o)}}function Po(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function Fo(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function Io(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&Lo(t.matched[r],n.matched[i])&&Ro(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Lo(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ro(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!zo(e[n],t[n]))return!1;return!0}function zo(e,t){return Q(e)?Bo(e,t):Q(t)?Bo(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function Bo(e,t){return Q(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function Vo(e,t){if(e.startsWith(`/`))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 Ho={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function Uo(e){if(!e){if(co){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),Mo(e)}var Wo=/^[^#]+#/;function Go(e,t){return e.replace(Wo,`#`)+t}function Ko(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 qo=()=>({left:window.scrollX,top:window.scrollY});function Jo(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=Ko(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 Yo(e,t){return(history.state?history.state.position-t:-1)+e}var Xo=new Map;function Zo(e,t){Xo.set(e,t)}function Qo(e){let t=Xo.get(e);return Xo.delete(e),t}function $o(e){return typeof e==`string`||e&&typeof e==`object`}function es(e){return typeof e==`string`||typeof e==`symbol`}function ts(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(ho,` `),i=r.indexOf(`=`),a=Ao(i<0?r:r.slice(0,i)),o=i<0?null:Ao(r.slice(i+1));if(a in t){let e=t[a];Q(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function ns(e){let t=``;for(let n in e){let r=e[n];if(n=Do(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(Q(r)?r.map(e=>e&&Eo(e)):[r&&Eo(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function rs(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=Q(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function is(){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 as(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($a(4,{from:n,to:t})):e instanceof Error?c(e):$o(e)?c($a(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 os(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(qa(s)){let c=(s.__vccOpts||s)[t];c&&a.push(as(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=Ja(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&as(c,n,r,o,e,i)()}))}}}return a}function ss(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=>Lo(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>Lo(e,s))||i.push(s))}return[n,r,i]}var cs=()=>location.protocol+`//`+location.host;function ls(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),Fo(n,``)}return Fo(n,e)+r+i}function us(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=ls(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(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(Z({},e.state,{scroll:qo()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function ds(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?qo():null}}function fs(e){let{history:t,location:n}=window,r={value:ls(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:cs()+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,Z({},t.state,ds(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=Z({},i.value,t.state,{forward:e,scroll:qo()});a(o.current,o,!0),a(e,Z({},ds(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function ps(e){e=Uo(e);let t=fs(e),n=us(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=Z({location:``,base:e,go:r,createHref:Go.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 ms(e){return e=location.host?e||location.pathname+location.search:``,e.includes(`#`)||(e+=`#`),ps(e)}var hs={type:0,value:``},gs=/[a-zA-Z0-9_]/;function _s(e){if(!e)return[[]];if(e===`/`)return[[hs]];if(!e.startsWith(`/`))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:gs.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 vs=`[^/]+?`,ys={sensitive:!1,strict:!1,start:!0,end:!0},bs=/[.+*?^${}()[\]/\\]/g;function xs(e,t){let n=Z({},ys,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(bs,`\\$&`),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||vs;if(u!==vs){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(Q(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=Q(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 Ss(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 Cs(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=Ss(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(ws(r))return 1;if(ws(i))return-1}return i.length-r.length}function ws(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var Ts={strict:!1,end:!0,sensitive:!1};function Es(e,t,n){let r=Z(xs(_s(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ds(e,t){let n=[],r=new Map;t=Za(Ts,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=ks(e);s.aliasOf=r&&r.record;let l=Za(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(ks(Z({},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&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Es(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!js(d)&&o(e.name)),Fs(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)}:Xa}function o(e){if(es(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=Ns(e,n);n.splice(t,0,e),e.record.name&&!js(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 $a(1,{location:e});s=i.record.name,a=Z(Os(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Os(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 $a(1,{location:e,currentLocation:t});s=i.record.name,a=Z({},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:Ms(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 Os(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function ks(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:As(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 As(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 js(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Ms(e){return e.reduce((e,t)=>Z(e,t.meta),{})}function Ns(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Cs(e,t[i])<0?r=i:n=i+1}let i=Ps(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Ps(e){let t=e;for(;t=t.parent;)if(Fs(t)&&Cs(e,t)===0)return t}function Fs({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Is(e){let t=P(ro),n=P(io),i=p(()=>{let n=r(e.to);return t.resolve(n)}),a=p(()=>{let{matched:e}=i.value,{length:t}=e,r=e[t-1],a=n.matched;if(!r||!a.length)return-1;let o=a.findIndex(Lo.bind(null,r));if(o>-1)return o;let s=Vs(e[t-2]);return t>1&&Vs(r)===s&&a[a.length-1].path!==s?a.findIndex(Lo.bind(null,e[t-2])):o}),o=p(()=>a.value>-1&&Bs(n.params,i.value.params)),s=p(()=>a.value>-1&&a.value===n.matched.length-1&&Ro(n.params,i.value.params));function c(n={}){if(zs(n)){let n=t[r(e.replace)?`replace`:`push`](r(e.to)).catch(Xa);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:i,href:p(()=>i.value.href),isActive:o,isExactActive:s,navigate:c}}function Ls(e){return e.length===1?e[0]:e}var Rs=u({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:Is,setup(e,{slots:t}){let n=l(Is(e)),{options:r}=P(ro),i=p(()=>({[Hs(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[Hs(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&Ls(t.default(n));return e.custom?r:N(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function zs(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 Bs(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!Q(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function Vs(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var Hs=(e,t,n)=>e??t??n,Us=u({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let a=P(ao),o=p(()=>e.route||a.value),s=P(no,0),c=p(()=>{let e=r(s),{matched:t}=o.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),l=p(()=>o.value.matched[c.value]);m(no,p(()=>c.value+1)),m(to,l),m(ao,o);let u=i();return k(()=>[u.value,l.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||!Lo(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=o.value,i=e.name,a=l.value,s=a&&a.components[i];if(!s)return Ws(n.default,{Component:s,route:r});let c=a.props[i],d=c?c===!0?r.params:typeof c==`function`?c(r):c:null,f=N(s,Z({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[i]=null)},ref:u}));return Ws(n.default,{Component:f,route:r})||f}}});function Ws(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var Gs=Us;function Ks(e){let t=Ds(e.routes,e),n=e.parseQuery||ts,i=e.stringifyQuery||ns,s=e.history,c=is(),l=is(),u=is(),d=a(Ho),f=Ho;co&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let p=Ya.bind(null,e=>``+e),m=Ya.bind(null,ko),h=Ya.bind(null,Ao);function g(e,n){let r,i;return es(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function _(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function v(){return t.getRoutes().map(e=>e.record)}function y(e){return!!t.getRecordMatcher(e)}function b(e,r){if(r=Z({},r||d.value),typeof e==`string`){let i=No(n,e,r.path),a=t.resolve({path:i.path},r),o=s.createHref(i.fullPath);return Z(i,a,{params:h(a.params),redirectedFrom:void 0,href:o})}let a;if(e.path!=null)a=Z({},e,{path:No(n,e.path,r.path).path});else{let t=Z({},e.params);for(let e in t)t[e]??delete t[e];a=Z({},e,{params:m(t)}),r.params=m(r.params)}let o=t.resolve(a,r),c=e.hash||``;o.params=p(h(o.params));let l=Po(i,Z({},e,{hash:To(c),path:o.path})),u=s.createHref(l);return Z({fullPath:l,hash:c,query:i===ns?rs(e.query):e.query||{}},o,{redirectedFrom:void 0,href:u})}function x(e){return typeof e==`string`?No(n,e,d.value.path):Z({},e)}function S(e,t){if(f!==e)return $a(8,{from:t,to:e})}function w(e){return D(e)}function T(e){return w(Z(x(e),{replace:!0}))}function E(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=x(i):{path:i},i.params={}),Z({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function D(e,t){let n=f=b(e),r=d.value,a=e.state,o=e.force,s=e.replace===!0,c=E(n,r);if(c)return D(Z(x(c),{state:typeof c==`object`?Z({},a,c.state):a,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!o&&Io(i,r,n)&&(u=$a(16,{to:l,from:r}),I(r,r,!0,!1)),(u?Promise.resolve(u):A(l,r)).catch(e=>eo(e)?eo(e,2)?e:ie(e):ne(e,l,r)).then(e=>{if(e){if(eo(e,2))return D(Z({replace:s},x(e.to),{state:typeof e.to==`object`?Z({},a,e.to.state):a,force:o}),t||l)}else e=j(l,r,!0,s,a);return ee(l,r,e),e})}function O(e,t){let n=S(e,t);return n?Promise.reject(n):Promise.resolve()}function k(e){let t=oe.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function A(e,t){let n,[r,i,a]=ss(e,t);n=os(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(as(r,e,t))});let o=O.bind(null,e,t);return n.push(o),z(n).then(()=>{n=[];for(let r of c.list())n.push(as(r,e,t));return n.push(o),z(n)}).then(()=>{n=os(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(as(r,e,t))});return n.push(o),z(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter){if(Q(r.beforeEnter))for(let i of r.beforeEnter)n.push(as(i,e,t));else n.push(as(r.beforeEnter,e,t))}return n.push(o),z(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=os(a,`beforeRouteEnter`,e,t,k),n.push(o),z(n))).then(()=>{n=[];for(let r of l.list())n.push(as(r,e,t));return n.push(o),z(n)}).catch(e=>eo(e,8)?e:Promise.reject(e))}function ee(e,t,n){u.list().forEach(r=>k(()=>r(e,t,n)))}function j(e,t,n,r,i){let a=S(e,t);if(a)return a;let o=t===Ho,c=co?history.state:{};n&&(r||o?s.replace(e.fullPath,Z({scroll:o&&c&&c.scroll},i)):s.push(e.fullPath,i)),d.value=e,I(e,t,n,o),ie()}let M;function te(){M||=s.listen((e,t,n)=>{if(!R.listening)return;let r=b(e),i=E(r,R.currentRoute.value);if(i){D(Z(i,{replace:!0,force:!0}),r).catch(Xa);return}f=r;let a=d.value;co&&Zo(Yo(a.fullPath,n.delta),qo()),A(r,a).catch(e=>eo(e,12)?e:eo(e,2)?(D(Z(x(e.to),{force:!0}),r).then(e=>{eo(e,20)&&!n.delta&&n.type===`pop`&&s.go(-1,!1)}).catch(Xa),Promise.reject()):(n.delta&&s.go(-n.delta,!1),ne(e,r,a))).then(e=>{e||=j(r,a,!1),e&&(n.delta&&!eo(e,8)?s.go(-n.delta,!1):n.type===`pop`&&eo(e,20)&&s.go(-1,!1)),ee(r,a,e)}).catch(Xa)})}let N=is(),P=is(),F;function ne(e,t,n){ie(e);let r=P.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function re(){return F&&d.value!==Ho?Promise.resolve():new Promise((e,t)=>{N.add([e,t])})}function ie(e){return F||(F=!e,te(),N.list().forEach(([t,n])=>e?n(e):t()),N.reset()),e}function I(t,n,r,i){let{scrollBehavior:a}=e;if(!co||!a)return Promise.resolve();let o=!r&&Qo(Yo(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return C().then(()=>a(t,n,o)).then(e=>t===d.value&&e&&Jo(e)).catch(e=>t===d.value&&ne(e,t,n))}let ae=e=>s.go(e),L,oe=new Set,R={currentRoute:d,listening:!0,addRoute:g,removeRoute:_,clearRoutes:t.clearRoutes,hasRoute:y,getRoutes:v,resolve:b,options:e,push:w,replace:T,go:ae,back:()=>ae(-1),forward:()=>ae(1),beforeEach:c.add,beforeResolve:l.add,afterEach:u.add,onError:P.add,isReady:re,install(e){e.component(`RouterLink`,Rs),e.component(`RouterView`,Gs),e.config.globalProperties.$router=R,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>r(d)}),co&&!L&&d.value===Ho&&(L=!0,w(s.location).catch(e=>{}));let t={};for(let e in Ho)Object.defineProperty(t,e,{get:()=>d.value[e],enumerable:!0});e.provide(ro,R),e.provide(io,o(t)),e.provide(ao,d);let n=e.unmount;oe.add(e),e.unmount=function(){oe.delete(e),oe.size<1&&(f=Ho,M&&M(),M=null,d.value=Ho,L=!1,F=!1),n()}}};function z(e){return e.reduce((e,t)=>e.then(()=>k(t)),Promise.resolve())}return R}var qs=`modulepreload`,Js=function(e){return`/`+e},Ys={},$=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=Js(t,n),t=s(t),t in Ys)return;Ys[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`:qs,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)})},Xs=[{path:`/`,component:()=>$(()=>import(`./MainLayout-WBL2b8tD.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])),children:[{path:``,redirect:{name:`workspace`}},{path:`workspace/:id?`,name:`workspace`,component:()=>$(()=>import(`./WorkspacePage-D-YQa2pY.js`).then(e=>e.t),__vite__mapDeps([25,1,2,3,4,26,6,5,7,8,9,10,11,13,14,15,16,17,27,21,22,28,29,30,31,32]))},{path:`create`,name:`create`,component:()=>$(()=>import(`./CreatePage-CEjwXKQF.js`),__vite__mapDeps([33,1,2,3,4,26,6,5,7,8,9,10,11,14,34,35,17,23,28,36,29,30,37]))},{path:`settings`,name:`settings`,component:()=>$(()=>import(`./SettingsPage-DzF8gAj4.js`),__vite__mapDeps([38,1,2,3,4,5,9,6,7,8,10,11,19,15,16,39,35,18,20,23,28,36,31,40]))},{path:`search`,name:`search`,component:()=>$(()=>import(`./SearchPage-DSj7yg7w.js`),__vite__mapDeps([41,1,2,3,4,5,10,14,15,22,28,36,42]))},{path:`health`,name:`health`,component:()=>$(()=>import(`./HealthPage-DS46JzBg.js`),__vite__mapDeps([43,2,3,4,6,5,10,14,15,28,36,44]))},{path:`changelog`,name:`changelog`,component:()=>$(()=>import(`./ChangelogPage-DEF1geul.js`),__vite__mapDeps([45,2,3,4,10,5,13,15,11,28,36,46]))}]},{path:`/:catchAll(.*)*`,redirect:`/`}],Zs=Ca(()=>{let e=Ks({scrollBehavior:()=>({left:0,top:0}),routes:Xs,history:ms()});return e.beforeEach((e,t)=>{if(e.fullPath===t.fullPath||!Ka())return!0;let n=Br.global.t;return new Promise(e=>{Va.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))})}),window.addEventListener(`beforeunload`,e=>{Ka()&&(e.preventDefault(),e.returnValue=``)}),e});async function Qs(e,t){let n=e(ba);n.use(Tt,t);let r=typeof wa==`function`?await wa({}):wa;n.use(r);let i=s(typeof Zs==`function`?await Zs({store:r}):Zs);return r.use(({store:e})=>{e.router=i}),{app:n,store:r,router:i}}var $s={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:kr,Dialog:Va}},ec=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}$/))},tc;typeof window<`u`&&(tc=typeof Promise<`u`?new Promise(function(e){return window.addEventListener(`load`,e)}):{then:function(e){return window.addEventListener(`load`,e)}});function nc(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&&tc.then(function(){ec()?(ac(e,r,n),navigator.serviceWorker.ready.then(function(e){r(`ready`,e)}).catch(function(e){return rc(r,e)})):(ic(e,r,n),navigator.serviceWorker.ready.then(function(e){r(`ready`,e)}).catch(function(e){return rc(r,e)}))})}function rc(e,t){navigator.onLine||e(`offline`),e(`error`,t)}function ic(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 rc(t,e)})}function ac(e,t,n){fetch(e).then(function(r){r.status===404?(t(`error`,Error(`Service worker not found at `+e)),oc()):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`))),oc()):ic(e,t,n)}).catch(function(e){return rc(t,e)})}function oc(){`serviceWorker`in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()}).catch(function(e){return rc(emit,e)})}nc(`/sw.js`);var sc=`/`;async function cc({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.href.replace(window.location.origin,``);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:sc})}catch(e){i||console.error(`[Quasar] boot error:`,e);return}i||(e.use(t),e.mount(`#q-app`))}Qs(A,$s).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]([$(()=>import(`./i18n-B0-TME1H.js`),[]),$(()=>import(`./network-auth-jClRVM5o.js`),[]),$(()=>import(`./notify-theme-D7WNwTAk.js`),[])]).then(t=>{cc(e,n(t).filter(e=>typeof e==`function`))})});export{ir as $,si as A,Wr as B,wi as C,gi as D,_i as E,ei as F,zr as G,Ur as H,$r as I,fr as J,kr as K,ai as L,ti as M,Zr as N,bi as O,Yr as P,rr as Q,ii as R,Pi as S,xi as T,Vr as U,q as V,Br as W,ar as X,sr as Y,nr as Z,Ki as _,W as _t,Wa as a,Pn as at,Li as b,U as bt,Ma as c,on as ct,Sa as d,qt as dt,er as et,ya as f,Jt as ft,Wi as g,Ot as gt,Hi as h,kt as ht,Ua as i,Ln as it,Xr as j,vi as k,Aa as l,tn as lt,J as m,At as mt,so as n,Qn as nt,La as o,Nn as ot,qi as p,Wt as pt,pr as q,oo as r,Mn as rt,Na as s,Fn as st,$ as t,$n as tt,Da as u,Zt as ut,Ri as v,yt as vt,Ci as w,Ii as x,zi as y,bt as yt,ri as z};
|
|
82
|
+
sudo setfacl -Rd -m u:$(whoami):rwX . && sudo setfacl -R -m u:$(whoami):rwX .`,"settings.purgeDocsPermissionsRecoverChownIntro":`Opzione B — Prendere la proprietà (più semplice, perde la traccia "creato da root nel container" ma raramente conta):`,"settings.purgeDocsPermissionsRecoverChownCommand":` sudo chown -R $(whoami):$(whoami) .`,"settings.purgeDocsPermissionsRecoverFootnote":"Suggerimento: puoi eseguire questi comandi direttamente sulla root dei worktrees (es. `~/.worktrees/`) per coprire tutti i workspace esistenti E futuri in un colpo solo. Una volta fatto, la pulizia Kōbō funzionerà senza errori di permessi.","contextMenu.runSetup":`Esegui script di setup`,"contextMenu.exportEvents":`Esporta eventi (CSV)`,"contextMenu.dismissChangesRequested":`Segna «Modifiche richieste» come visto`,"contextMenu.dismissCiFailure":`Segna «CI in errore» come visto`,"contextMenu.restoreChangesRequested":`Segna «Modifiche richieste» come non visto`,"contextMenu.restoreCiFailure":`Segna «CI in errore» come non visto`,"contextMenu.exportingEvents":`Preparazione dell'esportazione…`,"contextMenu.exportEventsError":`Esportazione degli eventi non riuscita`,"contextMenu.openNotion":`Apri in Notion`,"contextMenu.openSentry":`Apri in Sentry`,"contextMenu.openPr":`Apri PR`,"contextMenu.ignorePrWatch":`Ignora i controlli PR`,"contextMenu.resumePrWatch":`Riprendi i controlli PR`,"contextMenu.prWatchToggleFailed":`Aggiornamento dei controlli PR non riuscito`,"workspace.favorite":`Segna come preferito`,"workspace.unfavorite":`Rimuovi dai preferiti`,"workspace.showFavoritesOnly":`Mostra solo i preferiti`,"workspace.searchArchivedToggle":`Cerca anche nei workspace archiviati`,"workspace.descriptionPlaceholder":`Aggiungi una breve descrizione`,"workspace.descriptionDialogHint":`Testo semplice, massimo 200 caratteri. Lasciare vuoto per cancellare.`,"workspace.descriptionTooLong":`La descrizione deve avere al massimo 200 caratteri.`,"workspace.descriptionSaveFailed":`Impossibile salvare la descrizione.`,"workspace.agentDescriptionTooltip":`Stato live mantenuto dall'agente`,"mcp.tool.setWorkspaceDescription":`Imposta la breve descrizione del workspace (≤ 200 caratteri).`,"tags.manage":`Gestisci tag`,"tags.manageTitle":`Gestisci i tag del workspace`,"tags.noTagsDefined":`Nessun tag definito. Aggiungine in Impostazioni > Globale > Tag.`,"tags.orphanedHint":`{count} tag non sono più nel catalogo globale. Deseleziona per rimuoverli.`,"settings.tagsTitle":`Tag dei workspace`,"settings.tagsHint":`Definisci i tag assegnabili ai workspace. Digita per aggiungere, clicca la croce per rimuovere.`,"settings.tagsLabel":`Tag disponibili`,"settings.branchPrefixesTitle":`Prefissi di branch`,"settings.branchPrefixesHint":`Gestisci i prefissi di branch Git disponibili nella pagina di creazione del workspace. Il primo è preselezionato per impostazione predefinita.`,"settings.branchPrefixesEmpty":`Nessun prefisso di branch definito. Aggiungine almeno uno qui sotto.`,"settings.branchPrefixesAddLabel":`Nuovo prefisso`,"settings.branchPrefixesEditHint":`Clicca per rinominare`,"settings.branchPrefixesMoveUp":`Sposta su`,"settings.branchPrefixesMoveDown":`Sposta giù`,"settings.worktreesTitle":`Worktree Git`,"settings.worktreesHint":`Scegli dove creare i worktree dei nuovi workspace. I percorsi relativi sono risolti dal progetto; sono supportati percorsi assoluti Linux/macOS e Windows, $HOME, ~ e %USERPROFILE%.`,"settings.worktreesPathLabel":`Percorso worktree`,"settings.worktreesPathRequired":`Il percorso worktree è obbligatorio.`,"settings.worktreesPrefixByProject":`Aggiungi il nome del progetto come prefisso ai worktree`,"settings.worktreesPrefixByProjectHint":`Posiziona ogni worktree in una sottocartella con il nome del progetto per evitare collisioni quando più progetti condividono la stessa radice.`,"settings.shareTitle":`Condividi configurazione`,"settings.shareHint":`Esporta impostazioni, template e tag come bundle JSON. Le chiavi MCP sono escluse per sicurezza.`,"settings.exportConfig":`Esporta`,"settings.importConfig":`Importa`,"settings.exportSuccess":`Configurazione esportata`,"settings.importSuccess":`Configurazione importata`,"settings.importConfirmTitle":`Importa configurazione`,"settings.importConfirmMessage":`Questo sostituirà le tue impostazioni, template e tag attuali. Le chiavi MCP vengono preservate. Continuare?`,"settings.network.title":`Accesso di rete`,"settings.network.hint":`Controlla Kōbō da un altro dispositivo della tua LAN affidabile. Off = solo localhost. On = raggiungibile sulla rete, protetto da un token. Riavvia Kōbō dopo il cambio.`,"settings.network.enable":`Abilita accesso di rete`,"settings.network.behindProxy":`Dietro un reverse proxy`,"settings.network.behindProxyHint":`Kōbō non può più distinguere la tua macchina da una richiesta inoltrata — anche localhost dovrà presentare il token d'ora in poi. Attivalo solo se un reverse proxy (Traefik, nginx, Caddy…) si trova davanti a Kōbō.`,"settings.network.restartRequired":`Riavvia Kōbō per applicare il nuovo indirizzo di bind.`,"settings.network.token":`Token di accesso`,"settings.network.copy":`Copia`,"settings.network.copied":`Copiato`,"settings.network.regenerate":`Rigenera`,"settings.network.regenerateConfirm":`Rigenerare il token? I dispositivi connessi avranno bisogno del nuovo token.`,"settings.network.urls":`URL LAN`,"settings.network.scan":`Scansiona per connetterti`,"settings.network.noUrls":`Nessun indirizzo LAN rilevato.`,"settings.network.loadFailed":`Impossibile caricare le impostazioni di accesso di rete.`,"settings.network.updateFailed":`Impossibile aggiornare le impostazioni di accesso di rete.`,"settings.unsavedChanges.title":`Modifiche non salvate`,"settings.unsavedChanges.message":`Questo progetto ha modifiche non salvate. Cambiando progetto andranno perse.`,"settings.unsavedChanges.discard":`Scarta e cambia`,"settings.unsavedChanges.cancel":`Annulla`,"settings.loadFailed":`Impossibile caricare le impostazioni`,"settings.loadFailedHint":`Il salvataggio è disattivato: il modulo mostra i valori predefiniti e scriverli sovrascriverebbe la tua configurazione reale.`,"health.title":`Stato`,"health.tooltip":`Stato del sistema`,"changelog.title":`Changelog`,"changelog.tooltip":`Novità di Kōbō`,"changelog.empty":`Nessun changelog disponibile.`,"changelog.current":`corrente`,"changelog.currentVersion":`Versione corrente: v{version}`,"health.envTitle":`Ambiente`,"health.version":`Versione`,"health.koboHome":`Kōbō home`,"health.dbTitle":`Database`,"health.dbPath":`Percorso`,"health.dbSize":`Dimensione`,"health.schemaVersion":`Versione schema`,"health.settingsSchemaVersion":`Schema impostazioni`,"health.runtimesTitle":`Runtime agente`,"health.claudeCliTitle":`Claude Code`,"health.claudeCliMissing":`claude non trovato nel PATH`,"health.codexCliTitle":`OpenAI Codex`,"health.codexCliMissing":`binario codex non risolvibile`,"health.forgeCliTitle":`CLI di forge (gh / glab)`,"health.forgeCliMissing":`Né gh né glab trovati — pull request e monitoraggio CI non disponibili`,"health.workspacesTitle":`Workspace`,"health.workspacesCount":`{total} totali, {archived} archiviati`,"health.worktreesMissing":`{count} worktree mancanti sul disco`,"health.sessionsTitle":`Sessioni agente`,"health.sessionsOrphaned":`{n} sessione/sessioni orfana/e in esecuzione`,"health.integrationsTitle":`Integrazioni`,"health.integrationConfigured":`configurata`,"health.integrationMissing":`non configurata`,"health.integrationDisabled":`disabilitata`,"settings.integrationEnabled":`Attiva integrazione`,"health.activeTitle":`Stato attivo`,"health.activeQuotaBackoffs":`Quota backoff in attesa`,"health.activeWakeups":`Wakeup programmati`,"health.activeAutoLoop":`Auto-loop in esecuzione`,"health.activeAgentSessions":`Sessioni agente attive`,"health.activeDevServers":`Dev server in esecuzione`,"health.noneActive":`Nessuno.`,"health.quotaResumeAt":`riprende alle {time}`,"health.wakeupAt":`sveglia alle {time}`,"health.startedAgo":`avviata {time} fa`,"health.autoLoopReady":`pronto, in iterazione`,"health.autoLoopGrooming":`grooming in corso`,"session.started":`Sessione avviata`,"session.ended":`Sessione terminata`,"session.compacted":`Contesto compattato`,"session.endedCompleted":`Turno terminato — invia un messaggio per continuare`,"session.endedKilled":`Sessione interrotta`,"session.endedError":`Sessione terminata con un errore`,"session.endedWatchdog":`Sessione chiusa forzatamente dopo un periodo di inattività`,"tool.running":`In corso...`,"activity.raw_lines":`Righe di output grezze ({n})`,"activity.loading_older":`Caricamento messaggi precedenti…`,"activity.compacting":`Compattazione del contesto…`,"activity.prev_user_message":`Messaggio utente precedente`,"activity.scroll_to_bottom":`Scorri in fondo`,"activity.empty":`Ancora nulla`,"activity.emptyHint":`L’output dell’agente comparirà qui appena una sessione parte.`,"activity.a11y.region":`Annunci di attività dell’agente`,"activity.a11y.agentSaid":`Agente: {text}`,"activity.a11y.toolStarted":`Strumento {name} avviato`,"activity.a11y.toolFinished":`Strumento {name} completato`,"activity.a11y.toolFailed":`Strumento {name} fallito`,"chat.systemPrompt":`Prompt di sistema`,"chat.agent":`Agente`,"chat.cleanupScript":`Script di pulizia`,"chat.archiveScript":`Script di archiviazione`,"chat.setupScript":`Script di setup`,"chat.scriptDone":`Fatto`,"chat.scriptComplete":`[{phase}] Completato`,"chat.scriptError":`[{phase}] Errore: {message}`,"chat.unknownError":`sconosciuto`,"chat.you":`Tu`,"chat.session":`Sessione`,"chat.nActions":`{n} azione | {n} azioni`,"chat.lastUpdatedAt":`Ultimo aggiornamento alle {time}`,"chat.scrollToTurnTop":`Scorri all'inizio del messaggio`,"migration.backing_up":`Backup del database in corso…`,"migration.running":`Migrazione dei dati dell'agente — {processed}/{total}`,"migration.error":`Migrazione non riuscita`,"migration.backup_location":`Un backup è stato salvato in {path}. Riavvia Kōbō per riprovare.`,"migration.retry":`Riavvia Kōbō per riprovare.`,"engine.select":`Engine`,"engine.model":`Modello`,"engine.effort":`Livello di ragionamento`,"wakeup.scheduledIn":`Prossimo risveglio tra {n}s`,"wakeup.scheduledAt":`Prossimo risveglio alle {time}`,"wakeup.firing":`Risveglio in corso...`,"wakeup.reason":`Motivo: {reason}`,"wakeup.cancel":`Annulla questo risveglio`,"wakeup.pendingIndicator":`Risveglio programmato`,"cron.pendingIndicator":`{n} cron programmato/i`,"schedule.tabLabel":`Pianificazione`,"schedule.panelTitle":`Automazione`,"schedule.panelDescription":`Risvegliare questo workspace più tardi o eseguire istruzioni secondo una pianificazione.`,"schedule.activeTitle":`Pianificazioni attive`,"schedule.emptyTitle":`Nessuna pianificazione`,"schedule.emptyDescription":`Crea un wakeup singolo o un’attività ricorrente qui sotto.`,"schedule.cancelWakeup":`Annulla questo wakeup`,"schedule.cancelCron":`Elimina questa attività ricorrente`,"schedule.createTitle":`Crea una pianificazione`,"schedule.createDescription":`Scegli quando e come deve essere eseguito l'agente.`,"schedule.typeWakeup":`Wakeup singolo`,"schedule.typeRecurring":`Attività ricorrente`,"schedule.wakeupDescription":`Esegui il prompt una volta dopo un intervallo.`,"schedule.cronDescription":`Esegui il prompt periodicamente con una frequenza fissa.`,"schedule.promptHint":`Istruzioni che verranno inviate all'agente`,"schedule.frequencyTitle":`Frequenza`,"schedule.advancedDescription":`Usa un’espressione cron grezza`,"schedule.cronExpressionLabel":`Espressione cron`,"schedule.sessionModeTitle":`Sessione di esecuzione`,"schedule.modeResume":`Riprendi sessione`,"schedule.oneShotHint":`Rimuovi questa pianificazione dopo la prima esecuzione.`,"schedule.wakeupTitle":`Wakeup in attesa`,"schedule.cronsTitle":`Pianificazioni ricorrenti`,"schedule.noWakeup":`Nessun wakeup pianificato`,"schedule.noCrons":`Nessun cron pianificato`,"schedule.nextFireAt":`prossimo alle {time}`,"schedule.lastFiredAt":`ultimo {time} fa`,"schedule.addCronTitle":`Aggiungi un'attività ricorrente`,"schedule.addWakeupTitle":`Programma un wakeup`,"schedule.every":`Ogni`,"schedule.unitMinutes":`minuti`,"schedule.unitHours":`ore`,"schedule.unitDays":`giorni`,"schedule.daysDriftWarning":`L'intervallo può ridursi a 1 giorno a fine mese (limite di cron).`,"schedule.advancedExpression":`Espressione avanzata (opzionale)`,"schedule.advancedHint":`Cron grezzo (es. */15 * * * *) o {'@'}hourly/{'@'}daily — sostituisce il selettore se compilato.`,"schedule.promptLabel":`Prompt`,"schedule.labelOptional":`Etichetta (opzionale)`,"schedule.delayMinutes":`Ritardo (minuti)`,"schedule.modeFresh":`Nuova sessione`,"schedule.oneShot":`Esegui una sola volta`,"schedule.addCronBtn":`Aggiungi cron`,"schedule.addWakeupBtn":`Programma wakeup`,"schedule.cronCreated":`Attività ricorrente aggiunta`,"schedule.wakeupCreated":`Wakeup programmato`,"askUserQuestion.title":`L'agente sta facendo una domanda`,"askUserQuestion.submit":`Invia risposta`,"askUserQuestion.multiSelectHint":`Seleziona una o più opzioni`,"askUserQuestion.otherOption":`Altro`,"askUserQuestion.otherOptionHint":`specifica nel prossimo messaggio`,"askUserQuestion.freeFormLabel":`Specifica la tua risposta`,"askUserQuestion.freeFormHint":`Questa risposta verrà inviata direttamente all'agente.`,"askUserQuestion.noPending":`Nessuna domanda in attesa`,"askUserQuestion.next":`Avanti`,"askUserQuestion.previous":`Indietro`,"askUserQuestion.cancel":`Annulla`,"askUserQuestion.cancelTooltip":`Salta questa domanda — l'agente proseguirà senza risposta`,"askUserQuestion.collapse":`Riduci il pannello della domanda`,"askUserQuestion.expand":`Espandi il pannello della domanda`,"permissionRequest.title":`L'agente vuole usare uno strumento`,"permissionRequest.allow":`Consenti`,"permissionRequest.allowOnce":`Consenti una volta`,"permissionRequest.allowTurn":`Consenti questo turno`,"permissionRequest.allowOperation":`Consenti sempre questa operazione`,"permissionRequest.allowTool":`Consenti sempre questo strumento`,"permissionRequest.deny":`Nega`,"permissionRequest.tool":`Strumento`,"permissionRequest.input":`Input`,"permissionRequest.rawInput":`Dettagli tecnici`,"permissionRequest.collapse":`Riduci il pannello dei permessi`,"permissionRequest.expand":`Espandi il pannello dei permessi`,"permissionRequest.denied":`negato dall'utente`,"workspaceStatus.created":`creato`,"workspaceStatus.extracting":`estrazione`,"workspaceStatus.brainstorming":`brainstorming`,"workspaceStatus.executing":`in corso`,"workspaceStatus.awaitingUser":`in attesa della tua risposta`,"workspaceStatus.completed":`completato`,"workspaceStatus.idle":`inattivo`,"workspaceStatus.error":`errore`,"workspaceStatus.quota":`quota raggiunta`,"workspaceStatus.retrying":`ripresa automatica`,"workspaceList.prOpen":`#{n} — Pull request aperta`,"workspaceList.prWatchDisabledIndicator":`Controlli PR ignorati per questo workspace`,"workspaceList.prChangesRequested":`#{n} — Modifiche richieste`,"workspaceList.attentionCiFailed":`CI fallita`,"workspaceList.attentionChangesRequested":`Modifiche richieste`,"workspaceList.attentionReadyToMerge":`Pronto per il merge`,"autoLoop.toggle":`Auto-loop`,"autoLoop.start":`Avvia l'auto-loop`,"autoLoop.prepare":`Prepara per l'auto-loop`,"autoLoop.reprepare":`Ri-prepara per l'auto-loop`,"autoLoop.reprepareTooltip":`Rilancia la fase di grooming per aggiungere o aggiornare le attività prima di riavviare il loop`,"autoLoop.prepareBusy":`Attendi che l'agente finisca prima di preparare`,"autoLoop.forceReady":`So cosa faccio — salta la preparazione`,"autoLoop.forceReadyConfirm":`Saltare la preparazione e segnare auto-loop pronto? Il loop potrebbe bloccarsi se le attività non sono atomiche.`,"autoLoop.stop":`Ferma l'auto-loop`,"autoLoop.notReady":`Esegui prima «Prepara per l'auto-loop»`,"autoLoop.noTasks":`Aggiungi prima delle attività`,"autoLoop.progress":`Auto-loop · {done}/{total} attività`,"autoLoop.preparing":`Auto-loop · preparazione`,"autoLoop.preparingTooltip":`Grooming in corso — l'agente sta creando / revisionando le attività. Il loop partirà quando chiamerà mark_auto_loop_ready.`,"autoLoop.running":`Auto-loop in corso`,"autoLoop.startInMode":`Avvia in modalità auto-loop`,"autoLoop.brainstormModelPrefix":`Brainstorm:`,"autoLoop.brainstormModelTooltip":`Modello usato solo per la sessione di brainstorming iniziale — ogni attività successiva usa il modello scelto sopra`,"autoLoop.brainstormReasoningPrefix":`Brainstorm:`,"autoLoop.brainstormReasoningTooltip":`Livello di ragionamento usato solo per la sessione di brainstorming iniziale`,"autoLoop.executionModelPrefix":`Loop:`,"autoLoop.executionModelTooltip":`Modello usato per ogni attività dell'auto-loop dopo la sessione di brainstorming iniziale`,"autoLoop.sessionMode.perTask":`Nuova sessione per attività`,"autoLoop.sessionMode.label":`Sessione:`,"autoLoop.sessionMode.perTaskTooltip":`Ogni attività avvia una nuova sessione Claude Code senza memoria delle attività precedenti`,"autoLoop.sessionMode.continuous":`Sessione continua`,"autoLoop.sessionMode.continuousTooltip":`Tutte le attività si susseguono nella stessa sessione — l'agente mantiene tutto il contesto, ma la sessione si allunga nel tempo`,"koboCommand.prepAutoloopDesc":`Preparare le attività per la modalità auto-loop (atomicità)`,"staleSessionBanner.title":`Auto-loop in corso`,"staleSessionBanner.message":`Stai visualizzando una sessione precedente — l'agente sta lavorando nella più recente.`,"staleSessionBanner.staleTitle":`Sessione precedente`,"staleSessionBanner.staleMessage":`Stai visualizzando una sessione precedente — i messaggi inviati andranno a questa sessione, non alla più recente.`,"staleSessionBanner.switchToCurrent":`Passa a quella corrente`,"network.login.title":`Accesso di rete`,"network.login.description":`Questo Kōbō richiede un token per essere controllato dalla rete. Incolla il token mostrato nelle Impostazioni sulla macchina host.`,"network.login.tokenLabel":`Token`,"network.login.tokenPlaceholder":`Incolla il tuo token`,"network.login.connect":`Connetti`,"network.login.invalid":`Token non valido`,"network.login.serverError":`Errore del server — riprova.`,"network.login.unreachable":`Kōbō non è raggiungibile — controlla la connessione.`,"layout.toggleWorkspaces":`Mostra/nascondi il pannello degli spazi`,"layout.togglePanel":`Mostra/nascondi il pannello laterale`,"unsaved.title":`Uscire senza salvare?`,"unsaved.message":`Hai modifiche non salvate. Uscire da questa pagina le scarta.`,"unsaved.leave":`Esci`,"unsaved.stay":`Resta`,"prCheckout.staleRetriesExhausted":`Lo stato del repository ha continuato a cambiare mentre applicavamo le tue scelte. Chiudi questa finestra e riprova dal selettore delle pull request.`,"prPicker.title":`Importa da una pull request`,"prPicker.filterAll":`Tutte`,"prPicker.filterMine":`Le mie`,"prPicker.filterReviewRequested":`Revisione richiesta`,"prPicker.searchPlaceholder":`Cerca pull request…`,"prPicker.loadMore":`Carica altre`,"prPicker.empty":`Nessuna pull request aperta corrisponde.`,"prPicker.forkNotSupported":`Questa PR proviene da un fork; Kōbō non può eseguirne il checkout.`,"prPicker.loadFailed":`Impossibile caricare le pull request.`,"prPicker.badge.workspaceExists":`Già aperta in Kōbō`,"prPicker.badge.worktreePresent":`Worktree presente`,"prPicker.badge.localBranch":`Branch locale`,"prPicker.badge.new":`Nuova`,"prPicker.badge.draft":`Bozza`,"prCheckout.title":`Prepara la worktree`,"prCheckout.apply":`Applica`,"prCheckout.cancel":`Annulla`,"prCheckout.retry":`Riprova`,"prCheckout.diagnoseFailed":`Impossibile diagnosticare la pull request.`,"prCheckout.resolveFailed":`Impossibile risolvere il checkout della pull request.`,"prCheckout.path.required":`Inserisci un percorso di worktree che non esista già.`,"prCheckout.workspace.restoreNotAvailable":"Il ripristino di un workspace eliminato non è ancora disponibile da qui. Ricrea la sua cartella worktree su disco (ad es. con `git worktree add`) e Kōbō la ricollegherà automaticamente entro circa 30 secondi.","prCheckout.staleReloaded":`Il repository è cambiato; la diagnosi è stata aggiornata.`,"prCheckout.step.blocked":`Impossibile continuare`,"prCheckout.step.path":`Posizione della worktree`,"prCheckout.step.workspace":`Workspace esistente`,"prCheckout.step.worktree":`Worktree esistente`,"prCheckout.step.operation":`Operazione git in corso`,"prCheckout.step.changes":`Modifiche non commitate`,"prCheckout.step.divergence":`Branch locale vs origin`,"prCheckout.workspace.activeHint":`Un workspace chiamato "{name}" segue già questo branch.`,"prCheckout.workspace.open":`Apri quel workspace`,"prCheckout.workspace.continue":`Continua su un altro percorso`,"prCheckout.workspace.unarchive":`Ripristina e aprilo`,"prCheckout.workspace.restore":`Ricrea la sua worktree`,"prCheckout.worktree.orphanHint":`Esiste già una worktree su questo branch in {path}.`,"prCheckout.worktree.attach":`Collegala`,"prCheckout.worktree.createElsewhere":`Creane un'altra altrove`,"prCheckout.operation.hint":`Un {operation} è in corso in quella worktree.`,"prCheckout.operation.abort":`Interrompilo`,"prCheckout.operation.cancel":`Lascialo stare e fermati qui`,"prCheckout.changes.hint":`{modified} modificati, {staged} in stage, {untracked} non tracciati.`,"prCheckout.changes.stash":`Metti in stash`,"prCheckout.changes.commit":`Fai il commit`,"prCheckout.changes.discard":`Scartale (conservate in uno stash etichettato)`,"prCheckout.changes.keep":`Lasciale come sono`,"prCheckout.divergence.behindHint":`Il tuo branch è indietro di {behind} commit rispetto a origin.`,"prCheckout.divergence.aheadHint":`Il tuo branch ha {ahead} commit non pushati.`,"prCheckout.divergence.divergedHint":`{ahead} avanti, {behind} indietro rispetto a origin.`,"prCheckout.divergence.fastForward":`Fast-forward su origin`,"prCheckout.divergence.rebase":`Rebase su origin`,"prCheckout.divergence.resetHard":`Reimposta su origin (viene prima creato un branch di backup)`,"prCheckout.divergence.keep":`Mantieni lo stato locale`,"prCheckout.blocked.forgeUnavailable":`Il CLI della forge manca o non è autenticato.`,"prCheckout.blocked.forkPr":`Questa PR proviene da un fork; Kōbō non può eseguirne il checkout.`,"prCheckout.blocked.headBranchDeleted":`Il branch non esiste più sul remote.`,"prCheckout.blocked.indexLock":`È in corso un altro processo git (index.lock è presente).`,"prCheckout.blocked.pathOccupied":`{path} esiste già e non è una worktree.`,"prCheckout.blocked.worktreeOtherBranch":`{path} è una worktree su un altro branch ({branch}).`,"prCheckout.blocked.noCommonAncestor":`Esiste già un branch locale chiamato {branch} con una storia non correlata.`},Fr=`kobo:locale`,Ir=[`en`,`fr`,`de`,`es`,`it`];function Lr(e){return Ir.includes(e)}function Rr(){let e=localStorage.getItem(Fr);if(e&&Lr(e))return e;let t=navigator.language.split(`-`)[0];return t&&Lr(t)?(localStorage.setItem(Fr,t),t):(localStorage.setItem(Fr,`en`),`en`)}var zr=Rr(),Br=t({legacy:!1,locale:zr,fallbackLocale:`en`,messages:{en:jr,fr:Nr,de:Ar,es:Mr,it:Pr}});function Vr(e){typeof document>`u`||(document.documentElement.lang=e)}Vr(zr);var Hr=5e3,Ur=Ie(`agent-stream`,()=>{let e=i(new Map),t=i(new Map),n=i(new Map),r=i(new Map),a=i(new Map),o=i(new Map),s=i(new Map),c=i(new Map),l=i(new Map);function u(e){l.value.get(e)}function d(e){l.value.set(e,(l.value.get(e)??0)+1)}function f(e){return l.value.get(e)??0}function p(e){let t=c.value.get(e);return t||(t=new Set,c.value.set(e,t)),t}function m(e){return u(e),s.value.get(e)??!1}function h(e,t){(s.value.get(e)??!1)!==t&&(s.value.set(e,t),d(e))}function g(t){return u(t),e.value.get(t)??[]}function _(e){return u(e),t.value.get(e)??[]}function v(e){return u(e),n.value.get(e)??[]}function y(e){return u(e),r.value.get(e)??[]}function b(e){return u(e),a.value.get(e)}function x(e){return u(e),o.value.get(e)??!0}function S(i,o,s,c,l){let u=e.value.get(i)??[],f=t.value.get(i)??[],m=n.value.get(i)??[],h=r.value.get(i)??[],g=p(i);if(c&&g.has(c))return;let _=u.length===0;u.push(o),f.push(s??new Date().toISOString()),m.push(l??null),h.push(c??null),c&&g.add(c),e.value.set(i,u),t.value.set(i,f),n.value.set(i,m),r.value.set(i,h),_&&c&&a.value.set(i,c),C(i,u,f,m,h),d(i)}function C(e,t,n,r,i){let s=t.length-Hr;if(s<=0)return;let c=i.slice(0,s),l=p(e);for(let e of c)e&&l.delete(e);t.splice(0,s),n.splice(0,s),r.splice(0,s),i.splice(0,s);let u=i.find(e=>typeof e==`string`);u?a.value.set(e,u):a.value.delete(e),o.value.set(e,!0)}function w(i,o,s,c){let l=e.value.get(i)??[],u=t.value.get(i)??[],f=n.value.get(i)??[],m=r.value.get(i)??[],h=p(i),g=[];for(let e=0;e<o.length;e++){let t=o[e];if(!t)continue;let n=c.eventIds[e]??null;n&&h.has(n)||(l.push(t),u.push(s[e]??new Date().toISOString()),f.push(c.sessionIds[e]??null),m.push(n),n&&h.add(n),g.push(e))}if(g.length===0)return g;if(e.value.set(i,l),t.value.set(i,u),n.value.set(i,f),r.value.set(i,m),!a.value.has(i)){let e=m.find(e=>typeof e==`string`);e&&a.value.set(i,e)}return C(i,l,u,f,m),d(i),g}function T(i,s,c,l){e.value.set(i,[...s]),t.value.set(i,c?[...c]:s.map(()=>new Date().toISOString())),n.value.set(i,l?.sessionIds?[...l.sessionIds]:s.map(()=>null));let u=l?.eventIds?[...l.eventIds]:s.map(()=>null);r.value.set(i,u);let f=p(i);f.clear();for(let e of u)e&&f.add(e);l?.oldestId?a.value.set(i,l.oldestId):a.value.delete(i),l&&typeof l.hasMoreOlder==`boolean`?o.value.set(i,l.hasMoreOlder):o.value.delete(i),d(i)}function E(i,s,c,l){if(s.length===0){o.value.set(i,l.hasMoreOlder),d(i);return}let u=e.value.get(i)??[],f=t.value.get(i)??[],m=n.value.get(i)??[],h=r.value.get(i)??[],g=l.sessionIds??s.map(()=>null),_=l.eventIds??s.map(()=>null);e.value.set(i,[...s,...u]),t.value.set(i,[...c,...f]),n.value.set(i,[...g,...m]),r.value.set(i,[..._,...h]);let v=p(i);for(let e of _)e&&v.add(e);l.oldestId&&a.value.set(i,l.oldestId),o.value.set(i,l.hasMoreOlder),d(i)}function D(i,a){let o=e.value.get(i),s=r.value.get(i);if(!o||!s)return;let c=s.indexOf(a);if(c===-1)return;let l=t.value.get(i),u=n.value.get(i);o.splice(c,1),s.splice(c,1),l&&l.splice(c,1),u&&u.splice(c,1),p(i).delete(a),d(i)}function O(i){e.value.delete(i),t.value.delete(i),n.value.delete(i),r.value.delete(i),a.value.delete(i),o.value.delete(i),s.value.delete(i),c.value.delete(i),d(i)}return{events:e,timestamps:t,sessionIds:n,eventIds:r,versions:l,versionFor:f,eventsFor:g,timestampsFor:_,sessionIdsFor:v,eventIdsFor:y,oldestIdFor:b,hasMoreOlderFor:x,isCompacting:m,setCompacting:h,append:S,merge:w,reset:T,prepend:E,removeByEventId:D,clear:O}}),Wr=class extends Error{constructor(e,t,n,r){super(e),on(this,`status`,void 0),on(this,`code`,void 0),on(this,`body`,void 0),this.name=`ApiError`,this.status=t,this.code=n,this.body=r}},Gr=class extends Error{constructor(e){super(`Request timed out after ${e} ms`),on(this,`timeoutMs`,void 0),this.name=`ApiTimeoutError`,this.timeoutMs=e}},Kr=3e4;function qr(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 q(e,t={}){let{body:n,timeoutMs:r=Kr,signal:i,headers:a,...o}=t,s=new AbortController,c=!1,l=r>0?setTimeout(()=>{c=!0,s.abort()},r):null,u=()=>s.abort();i?.addEventListener(`abort`,u);let d={...o,signal:s.signal};n===void 0?a&&(d.headers=a):typeof n==`string`||n instanceof FormData||n instanceof Blob?(d.body=n,a&&(d.headers=a)):(d.body=JSON.stringify(n),d.headers={"Content-Type":`application/json`,...a??{}});let f;try{f=await fetch(e,d)}catch(e){throw c?new Gr(r):e}finally{l!==null&&clearTimeout(l),i?.removeEventListener(`abort`,u)}if(!f.ok){let e=await f.text().catch(()=>``),{message:t,code:n}=qr(e,f.status);throw new Wr(t,f.status,n,e)}if(f.status===204)return;let p=await f.text();if(p.length!==0)try{return JSON.parse(p)}catch(e){throw new Wr(`Server returned a non-JSON body for a successful response: ${e instanceof Error?e.message:String(e)}`,f.status,void 0,p)}}var Jr=`/sounds`,Yr=[{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`}],Xr=`hey.mp3`,Zr=`inherit`,Qr=`none`,$r=[`audioPrCiFailedSound`,`audioPrCiRecoveredSound`,`audioPrChangesRequestedSound`,`audioPrApprovedSound`,`audioPrMergeConflictSound`,`audioPrReadyToMergeSound`,`audioPrMergedSound`],ei=[`audioPrCiFailedEnabled`,`audioPrCiFailedVolume`,`audioPrCiRecoveredEnabled`,`audioPrCiRecoveredVolume`,`audioPrChangesRequestedEnabled`,`audioPrChangesRequestedVolume`,`audioPrApprovedEnabled`,`audioPrApprovedVolume`,`audioPrMergeConflictEnabled`,`audioPrMergeConflictVolume`,`audioPrReadyToMergeEnabled`,`audioPrReadyToMergeVolume`,`audioPrMergedEnabled`,`audioPrMergedVolume`],ti={audioPrCiFailedSound:Zr,audioPrCiRecoveredSound:Zr,audioPrChangesRequestedSound:Zr,audioPrApprovedSound:Zr,audioPrMergeConflictSound:Zr,audioPrReadyToMergeSound:Zr,audioPrMergedSound:Zr,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 ni(e){return Yr.some(t=>t.id===e)}function ri(e){return e&&ni(e)?e:Xr}function ii(e){if(e===`none`)return null;if(e!==`inherit`)return typeof e==`string`&&ni(e)?e:void 0}function ai(e){let t=ii(e);return t===null?Qr:t??`inherit`}function oi(e){return`${Jr}/${ri(e)}`}var si=`mod+shift+x`,ci=[`mod`,`ctrl`,`meta`,`alt`,`shift`],li=new Set([`mod+w`,`mod+shift+w`,`ctrl+w`,`ctrl+shift+w`,`meta+w`,`meta+shift+w`]),ui=new Set([`control`,...ci]);function di(e){return li.has(e)}function fi(e){if(typeof e!=`string`||e.length===0||e!==e.toLowerCase()||di(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)||ui.has(n))return null;let r=t.slice(0,-1),i=new Set,a=-1;for(let e of r){let t=ci.indexOf(e);if(t<=a)return null;a=t,i.add(e)}return{modifiers:i,key:n}}var pi=new Set([`control`,`meta`,`alt`,`shift`]),mi={" ":`space`,"+":`plus`,"-":`minus`,"=":`equal`,",":`comma`,".":`period`,"/":`slash`,"\\":`backslash`,";":`semicolon`,"'":`quote`,"[":`bracketleft`,"]":`bracketright`,"`":`backquote`};function hi(e){let t=mi[e]??e.toLowerCase();return/^[a-z0-9][a-z0-9_-]*$/.test(t)?t:null}function gi(e=globalThis.navigator?.platform??``){return/mac|iphone|ipad|ipod/i.test(e)?`mac`:`other`}function _i(e,t){if(e.key===`Escape`)return{status:`cancelled`};if(pi.has(e.key.toLowerCase()))return{status:`pending`};let n=hi(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=[...ci.filter(e=>r.has(e)),n].join(`+`);return di(i)?{status:`reserved`}:{status:`accepted`,shortcut:i}}function vi(e,t,n){let r=fi(t),i=hi(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 yi(e){return{space:`Space`,arrowup:`↑`,arrowdown:`↓`,arrowleft:`←`,arrowright:`→`}[e]??e.toUpperCase()}function bi(e,t){let n=fi(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(``)}${yi(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`:``,yi(n.key)].filter(Boolean).join(`+`):e}var xi=`.worktrees`;function Si(e){return btoa(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}var Ci=Ie(`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,wsEventsRetentionDays:0,wsEventsKeepPerWorkspace:0,browserNotifications:!0,audioNotifications:!0,audioQuestionNotifications:!1,audioWorkspaceCreatedNotifications:!1,audioAgentErrorNotifications:!1,audioNotificationSound:`hey.mp3`,audioQuestionSound:`inherit`,audioWorkspaceCreatedSound:`inherit`,audioAgentErrorSound:`inherit`,...ti,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:si,whipVolume:1,tags:[],branchPrefixes:[],setupScript:``,cleanupScript:``,cleanupScriptMode:`no-tasks`,cleanupScriptOnlyOnChanges:!1,archiveScript:``,changeSourceBranchScript:``,worktreesPath:xi,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 q(`/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 q(`/api/settings/mcp-servers`)}catch(e){console.error(`[settings store] fetchActiveMcpServers failed:`,e),this.activeMcpServers=[]}},async fetchGlobalDefaults(){return q(`/api/settings/defaults`)},async previewRetention(e,t){return q(`/api/settings/ws-events-retention-preview?days=${e}&keep=${t}`)},async updateGlobal(e){this._assertLoaded(),this.global=await q(`/api/settings/global`,{method:`PUT`,body:e})},async upsertProject(e,t){this._assertLoaded();let n=await q(`/api/settings/projects/${Si(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 q(`/api/settings/projects/${Si(e)}`,{method:`DELETE`}),this.projects=this.projects.filter(t=>t.path!==e)},async fetchVoiceModels(){this.voiceModelsLoading=!0;try{let e=await q(`/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 q(`/api/voice/models/${encodeURIComponent(e)}/download`,{method:`DELETE`})}catch(e){if(!(e instanceof Wr)||e.status!==404)throw e}await this.fetchVoiceModels()},async fetchVoiceRuntime(){try{this.voiceRuntime=await q(`/api/voice/runtime`)}catch(e){console.error(`[settings store] fetchVoiceRuntime failed:`,e)}},async downloadVoiceModel(e){await q(`/api/voice/models/${encodeURIComponent(e)}/download`,{method:`POST`}),await this.fetchVoiceModels()},async deleteVoiceModel(e){await q(`/api/voice/models/${encodeURIComponent(e)}`,{method:`DELETE`}),await this.fetchVoiceModels()}}}),wi=6e3,Ti=new Map,Ei=[],Di=!1;function Oi(e){let t=Ti.get(e);return t||(t=new Audio(oi(e)),Ti.set(e,t)),t}function ki(e,t){let n=new Audio(oi(ri(e)));n.preload=`auto`,n.volume=t,n.play().catch(()=>{})}function Ai(){`Notification`in window&&Notification.permission==="default"&&Notification.requestPermission()}function ji(e){return typeof e!=`number`||!Number.isFinite(e)?1:Math.max(0,Math.min(1,e))}function Mi(){let e=Ei.shift();if(!e){Di=!1;return}Di=!0;let t=Oi(ri(e.soundId));t.volume=e.volume,t.currentTime=0;let n=!1,r=()=>{n||(n=!0,t.removeEventListener(`ended`,r),t.removeEventListener(`error`,r),Mi())};t.addEventListener(`ended`,r,{once:!0}),t.addEventListener(`error`,r,{once:!0}),t.play().catch(r)}function Ni(e,t){let n={soundId:ri(e),volume:ji(t)};if(document.visibilityState===`hidden`){ki(n.soundId,n.volume);return}Ei.push(n),Di||Mi()}function Pi(e,t){let n=Oi(ri(e));n.volume=ji(t),n.currentTime=0,n.play().catch(()=>{})}function Fi(e,t,n,r,i,a){let o=Ci();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&&Ni(r&&r.length>0?r:o.global.audioNotificationSound??`hey.mp3`,i??o.global.audioNotificationVolume)}function Ii(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`}),kr.create({type:`negative`,position:`top`,multiLine:!0,message:e,timeout:t.timeout??0,actions:n})}var Li=Ie(`devServer`,{state:()=>({statuses:{},logs:{}}),getters:{getStatus:e=>t=>e.statuses[t]??null},actions:{async fetchStatus(e){try{let t=await fetch(`/api/dev-server/${e}/status`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();this.statuses[e]=n}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 Ri(e){return e.state===`OPEN`&&e.reviewDecision===`CHANGES_REQUESTED`&&e.reviewers.some(e=>e.state===`CHANGES_REQUESTED`)}function zi(e){return e.state===`OPEN`&&e.ci.rollup===`FAILURE`}function Bi(e){return e?zi(e)||Ri(e):!1}var Vi=[`executing`,`extracting`,`brainstorming`];function Hi(e){return!!e&&Vi.includes(e)}function Ui(e,t){return Hi(e)&&!t}function Wi(e,t,n){return Ui(e,!t||n)}var Gi={created:`workspaceStatus.created`,extracting:`workspaceStatus.extracting`,brainstorming:`workspaceStatus.brainstorming`,executing:`workspaceStatus.executing`,"awaiting-user":`workspaceStatus.awaitingUser`,completed:`workspaceStatus.completed`,idle:`workspaceStatus.idle`,error:`workspaceStatus.error`,quota:`workspaceStatus.quota`};function Ki(e){return e?Gi[e]??null:null}var qi=class extends Error{constructor(e,t){super(e),on(this,`code`,void 0),this.name=`WorkspaceActionError`,this.code=t}};function Ji(e){return e===`running`?`in_progress`:e}var Yi=5e3,Xi=500,Zi=null,Qi=0,$i=0,ea=new Map,ta=new Map,na=new Map,ra=new Map;function ia(e){ta.set(e,(ta.get(e)??0)+1)}function aa(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=(ta.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 oa(e){return e===`claude-code`?`claude-code`:null}var J=Ie(`workspace`,{state:()=>({workspaces:[],selectedWorkspaceId:null,tasks:[],activityFeeds:{},activityFeedIds:{},activityCounts:{},subagents:{},agentTodos:{},sessions:[],selectedSessionId:null,archivedWorkspaces:[],archivedLoaded:!1,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)||Bi(e.prSnapshots[t.id])||!Hi(t.status)&&!!e.prSnapshots[t.id]?.readyToMerge)},running(e){return e.workspaces.filter(t=>Hi(t.status)&&!Bi(e.prSnapshots[t.id]))},idle(e){return e.workspaces.filter(t=>[`completed`,`idle`,`created`].includes(t.status)&&!Bi(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=oa(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];ea.delete(e),ta.delete(e),na.delete(e),ra.delete(e),Ur().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],ia(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],ia(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 q(`/api/git/orphan-worktrees?projectPath=${encodeURIComponent(e)}`,{cache:`no-store`})},async fetchWorkspaces(){this.loading=!0;try{let e=await q(`/api/workspaces`);this.workspaces=Array.isArray(e)?e:e.workspaces??[],this.listLoadError=null,this.activeListLoadFailed=!1,this.listPollFailureStreak=0;for(let e of this.workspaces)[`completed`,`idle`,`error`,`quota`].includes(e.status)&&this.finalizeRunningSubagents(e.id)}catch(e){this.listLoadError=e instanceof Error?e.message:String(e),this.activeListLoadFailed=!0,console.error(`[workspace store] fetchWorkspaces failed:`,e)}finally{this.loading=!1}},async retryLoadWorkspaces(){await this.fetchWorkspaces(),this.archivedLoaded&&await this.fetchArchivedWorkspaces()},async fetchArchivedWorkspaces(){try{this.archivedWorkspaces=await q(`/api/workspaces/archived`),this.archivedLoaded=!0,this.activeListLoadFailed||(this.listLoadError=null)}catch(e){this.listLoadError=e instanceof Error?e.message:String(e),console.error(`[workspace store] fetchArchivedWorkspaces failed:`,e)}},async fetchWorkspaceDetails(e){let t=(ra.get(e)??0)+1;ra.set(e,t);let n=ea.get(e)??0;try{let r=await q(`/api/workspaces/${e}`);if(this.selectedWorkspaceId!==e||ra.get(e)!==t)return;let i=(ea.get(e)??0)!==n,a=r.workspace??r,o=i?{...a}:a;i&&delete o.status;let s=this.workspaces.findIndex(t=>t.id===e);if(s>=0)this.workspaces[s]={...this.workspaces[s],...o};else{let t=this.archivedWorkspaces.findIndex(t=>t.id===e);t>=0?this.archivedWorkspaces[t]={...this.archivedWorkspaces[t],...o}:o?.archivedAt&&this.archivedWorkspaces.unshift(o)}r.tasks&&(this.tasks=r.tasks),`agentLiveness`in r&&this.applyAgentLiveness(e,r.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){try{let t=await fetch(`/api/workspaces`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)});if(!t.ok){let e=await t.json().catch(()=>({}));throw new qi(typeof e.error==`string`?e.error:`HTTP ${t.status}`,typeof e.step==`string`?e.step:void 0)}let n=t.headers.get(`X-Kobo-Branch-Adjusted`)===`1`,r=t.headers.get(`X-Kobo-Source-Fallback`)===`local`,i=await t.json(),a=i.workspace??i,o=this.workspaces.findIndex(e=>e.id===a.id);return o>=0?this.workspaces[o]=a:this.workspaces.push(a),e.autoLoop&&this.fetchAutoLoopStates(),a._branchAdjusted=n,a._sourceFallback=r,a}catch(e){throw console.error(`[workspace store] createWorkspace failed:`,e),e}},async startWorkspace(e,t,n,r){try{await q(`/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 qi(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),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),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 qi(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 qi(e.error??`Push failed`,e.code)}},async fetchGitStats(e,t={}){let n=await q(`/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 qi(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}},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||ya().subscribe(e)},async fetchSessions(e,t){let n=(na.get(e)??0)+1;na.set(e,n);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||na.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)}},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=ya();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.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>Yi){let t=n.splice(0,n.length-Yi),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(){Zi!==null&&clearTimeout(Zi),Zi=setTimeout(()=>{Zi=null,this.fetchPrSnapshots()},Xi)},async fetchPrSnapshots(){let e=++$i,t=new Map(ta);try{let n=await fetch(`/api/workspaces/pr-states`,{cache:`no-store`});if(!n.ok)return;let r=await n.json();if(e!==$i)return;this.prSnapshots=aa(r,this.prSnapshots,t)}catch(e){console.error(`[workspace-store] fetchPrSnapshots failed:`,e)}},async fetchWorkspacesInfo(){let e=++Qi,t=new Map(ea),n=new Map(ta);try{let r=await q(`/api/workspaces/info`,{cache:`no-store`});if(this.listPollFailureStreak=0,this.activeListLoadFailed=!1,this.listLoadError=null,e!==Qi)return;this.agentLiveness=r.agentLiveness??{};let i={...this.agentLivenessLoaded};for(let e of r.workspaces)i[e.id]=!0;this.agentLivenessLoaded=i;let a=new Map(this.workspaces.map(e=>[e.id,e]));this.workspaces=r.workspaces.map(e=>{let n=a.get(e.id),r=(ea.get(e.id)??0)!==(t.get(e.id)??0);return n&&r?{...e,...n}:e});for(let e of this.workspaces)[`completed`,`idle`,`error`,`quota`].includes(e.status)&&this.finalizeRunningSubagents(e.id);this.prSnapshots=aa(r.prSnapshots,this.prSnapshots,n);let o={...this.gitStatsCache};for(let[e,t]of Object.entries(r.gitStats)){let n=o[e];(!n||(t.computedAt??0)>=(n.computedAt??0))&&(o[e]=t)}this.gitStatsCache=o}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,ia(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},ia(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){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){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(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){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?Ji(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){this.queuedMessages[this.queuedMessageKey(e,n)]={content:t,sessionId:n}},cancelQueuedMessage(e,t){t&&delete this.queuedMessages[this.queuedMessageKey(e,t)]},flushQueuedMessage(e,t){let n=this.getQueuedMessage(e,t);n&&(this.cancelQueuedMessage(e,t),ya().sendChatMessage(e,n.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){ea.set(e,(ea.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(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`})}}}}),Y=Br.global.t,sa={"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 ca(e,t,n){let r=Ci().global,i=sa[n];Fi(e,void 0,t,ii(r[i.soundKey]),Number(r[i.volumeKey]),!!r[i.enabledKey])}function la(e,t){let n=[];return t&&n.push({label:Y(`pr.openPr`),color:`white`,noDismiss:!0,handler:()=>window.open(t,`_blank`)}),n.push({label:Y(`pr.openWorkspace`),color:`white`,noDismiss:!0,handler:()=>{window.location.hash=`#/workspace/${e}`}}),n.push({label:Y(`pr.dismiss`),color:`white`}),n}var X=null,ua=null,da=0,fa=!1,pa=!1,ma=!1;function ha(e){ma=e}function ga(e,t,n){if(t.kind!==`session:started`)return;let r=J();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`}),!ma&&n&&r.selectedWorkspaceId===e&&r.selectedSessionId!==n&&r.fetchSessions(e,n).catch(e=>{console.error(`[websocket] fetchSessions on session:started failed:`,e)})}function _a(e,t){let n=J();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 va(e,t,n,r,i){let a=Ur();if(t.kind===`session:compacting`){a.setCompacting(e,t.active);return}a.append(e,t,n,r,i),(t.kind===`session:compacted`||t.kind===`message:text`||t.kind===`tool:call`)&&a.setCompacting(e,!1),ga(e,t,i??void 0);let o=J();if(t.kind===`session:user-input-requested`){if(t.requestKind===`question`?o.enqueuePending(e,{kind:`question`,agentSessionId:i??null,toolCallId:t.toolCallId,toolName:t.toolName,input:t.payload}):o.enqueuePending(e,{kind:`permission`,agentSessionId:i??null,toolCallId:t.toolCallId,toolName:t.toolName,toolInput:t.payload}),o.updateWorkspaceFromEvent(e,{status:`awaiting-user`}),!ma){let n=o.workspaces.find(t=>t.id===e)?.name??``,r=t.requestKind===`question`?Y(`notification.agentQuestion`,{name:n}):Y(`notification.agentPermissionRequest`,{name:n}),i=Ci().global;Fi(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`){o.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(!_a(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)&&o.triggerGitRefresh(),/\bgit\s+branch\s+-m\b/i.test(r)&&setTimeout(()=>{o.resyncWorkspaceBranch(e).catch(e=>{console.error(`[websocket] Branch resync failed:`,e)})},2500),/\bgh\s+pr\s+create\b/i.test(r)&&setTimeout(()=>o.triggerGitRefresh(),3e3)}if(t.kind===`tool:call`&&t.name===`ExitPlanMode`&&o.workspaces.find(t=>t.id===e)?.agentPermissionMode===`plan`&&(o.updateWorkspaceFromEvent(e,{agentPermissionMode:`bypass`}),o.updateAgentPermissionMode(e,`bypass`).catch(e=>{console.error(`[websocket] failed to persist ExitPlanMode flip:`,e)})),t.kind!==`session:started`){if(t.kind===`turn:completed`){i&&o.markAgentTurnSettled(e,i);return}if(t.kind===`session:ended`){i&&o.clearPendingForSession(e,i);let n=o.activeAgentSessionIds[e];if(t.superseded===!0||typeof i==`string`&&i.length>0&&n!==void 0&&i!==n){o.cancelQueuedMessage(e,i),i&&o.clearActiveAgentSession(e,i);return}a.setCompacting(e,!1),i?o.clearActiveAgentSession(e,i):o.clearActiveAgentSessionOwner(e);let r=o.workspaces.find(t=>t.id===e)?.status===`quota`?`quota`:t.reason===`completed`?`completed`:t.reason===`error`?`error`:`idle`;o.updateWorkspaceFromEvent(e,{status:r}),i&&t.reason===`completed`&&o.flushQueuedMessage(e,i),o.finalizeRunningSubagents(e),o.fetchWorkspaces(),!ma&&t.reason!==`killed`&&t.reason!==`error`&&o.autoLoopStates[e]?.auto_loop!==!0&&Fi(Y(`notification.agentFinished`,{name:o.workspaces.find(t=>t.id===e)?.name??``}),void 0,e);return}if(t.kind===`error`&&(t.category===`quota`&&(o.updateWorkspaceFromEvent(e,{status:`quota`}),o.fetchWorkspaces()),!ma)){let t=Ci().global;Fi(Y(`notification.agentError`,{name:o.workspaces.find(t=>t.id===e)?.name??``}),void 0,e,t.audioAgentErrorSound,t.audioAgentErrorVolume,t.audioAgentErrorNotifications)}}}}var ya=Ie(`websocket`,{state:()=>({connected:!1,reconnecting:!1,reconnectAttempt:0,lastEventId:null,_replaying:!1}),actions:{connect(){if(X)return;if(fa=!0,pa||(pa=!0,window.addEventListener(`online`,()=>{fa&&this.connect()}),window.addEventListener(`offline`,()=>{this.connected=!1,this.reconnecting=fa,ua&&=(clearTimeout(ua),null)})),!navigator.onLine){this.connected=!1,this.reconnecting=!0;return}let e=ar(`${window.location.protocol===`https:`?`wss:`:`ws:`}//${window.location.host}/ws`,nr()),t=new WebSocket(e);X=t,t.addEventListener(`open`,()=>{this.connected=!0,this.reconnecting=!1,da=0,this.reconnectAttempt=0;let e=J().workspaces.map(e=>e.id);for(let t of e)this._send({type:`subscribe`,payload:{workspaceId:t}});this.lastEventId&&this._send({type:`sync:request`,payload:{lastEventId:this.lastEventId,workspaceIds:e}})}),t.addEventListener(`message`,e=>{try{let t=JSON.parse(e.data);this._routeMessage(t)}catch{}}),t.addEventListener(`close`,()=>{this.connected=!1,X=null,fa&&this._scheduleReconnect()}),t.addEventListener(`error`,()=>{})},disconnect(){fa=!1,ua&&=(clearTimeout(ua),null),X&&=(X.close(),null),this.connected=!1,this.reconnecting=!1,this.reconnectAttempt=0},subscribe(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}})},sendChatMessage(e,t,n,r,i=!1){let a=this._send({type:`chat:message`,payload:{workspaceId:e,content:t,sessionId:n,agentPermissionModeOverride:r,force:i}});if(/^\/compact(\s|$)/.test(t.trim())&&Ur().setCompacting(e,!0),!a)return!1;let o=J(),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},_send(e){return X&&X.readyState===WebSocket.OPEN?(X.send(JSON.stringify(e)),!0):!1},isConnected(){return X!==null&&X.readyState===WebSocket.OPEN},_scheduleReconnect(){if(ua)return;if(!fa||!navigator.onLine){this.reconnecting=fa;return}let e=Math.min(1e3*2**da,3e4),t=Math.round(e*(.8+Math.random()*.4));da++,this.reconnecting=!0,this.reconnectAttempt=da,da===4&&nr()&&sr(),ua=setTimeout(()=>{ua=null,this.connect()},t)},_routeMessage(e){let t=J();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??``;switch(e.type){case`chat:accepted`:{let e=typeof n.sessionId==`string`?n.sessionId:void 0;r&&e&&t.cancelQueuedMessage(r,e);break}case`chat:rejected`:{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:Y(`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)}kr.create({type:`negative`,message:a,position:`top`,timeout:6e3});break}case`agent:event`:{if(!r)break;let t=e.createdAt;va(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&&n.content){let i=n.content,a=n.sender??`user`,o=e.sessionId,s=e.id??e.eventId??`user-${Date.now()}`,c=typeof e.createdAt==`string`?e.createdAt:void 0,l=c??new Date().toISOString(),u=t.activityFeeds[r]??[];if(a===`user`&&u.some(e=>e.meta?.sender===`user`&&e.content===i&&e.meta?.pending)){let e=u.findIndex(e=>e.meta?.sender===`user`&&e.content===i&&e.meta?.pending);e>=0&&(u[e]={...u[e],id:s,sessionId:o,...c?{timestamp:c}:{}})}else t.addActivityItem(r,{id:s,type:`text`,content:i,timestamp:l,sessionId:o,meta:{sender:a}})}break;case`sync:response`:this._replaying=!0,ha(!0);try{let e=n.events??[],t=n.mode===`delta`?`delta`:`snapshot`,r=new Map;for(let t of e)if(t.type!==`sync:response`){if(t.type===`agent:event`&&t.workspaceId){let e=r.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,r.set(t.workspaceId,e);continue}this._routeMessage(t)}if(r.size>0){let e=Ur();for(let[n,{events:i,timestamps:a,sessionIds:o,eventIds:s,oldestId:c}]of r){let r=t===`delta`?e.merge(n,i,a,{sessionIds:o,eventIds:s}):i.map((e,t)=>t);t===`snapshot`&&e.reset(n,i,a,{oldestId:c,hasMoreOlder:!0,sessionIds:o,eventIds:s}),t===`snapshot`&&J().updateAgentTodos(n,[]);for(let e of r){let t=i[e];if(!t)continue;let r=o[e]??null;if(t.kind===`session:user-input-requested`){t.requestKind===`question`?J().enqueuePending(n,{kind:`question`,agentSessionId:r,toolCallId:t.toolCallId,toolName:t.toolName,input:t.payload}):J().enqueuePending(n,{kind:`permission`,agentSessionId:r,toolCallId:t.toolCallId,toolName:t.toolName,toolInput:t.payload});continue}if(t.kind===`session:started`){if(r){let e=J();e.setActiveAgentSession(n,r);let t=e.peekPending(n);t&&t.agentSessionId===r&&e.dequeuePending(n)}continue}if(t.kind===`session:ended`){let e=J();r?(e.clearPendingForSession(n,r),e.cancelQueuedMessage(n,r),e.clearActiveAgentSession(n,r)):t.superseded!==!0&&e.clearActiveAgentSessionOwner(n);continue}if(t.kind===`subagent:progress`){J().upsertSubagent(n,{toolUseId:t.toolCallId,status:t.status,description:t.description,taskType:t.taskType,lastToolName:t.lastToolName,totalTokens:t.totalTokens,toolUses:t.toolUses,durationMs:t.durationMs});continue}_a(n,t)}}}let i=e.findLast(e=>e.replayable!==!1&&typeof e.id==`string`);i&&(this.lastEventId=i.id)}finally{this._replaying=!1,ha(!1)}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=Li();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?Y(`chat.scriptDone`):Y(`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:Y(`chat.scriptError`,{phase:`setup`,message:e.payload?.message??Y(`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?Y(`chat.scriptDone`):Y(`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:Y(`chat.scriptError`,{phase:`cleanup`,message:e.payload?.message??Y(`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?Y(`chat.scriptDone`):Y(`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:Y(`chat.scriptError`,{phase:`archive`,message:e.payload?.message??Y(`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: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`:e.type===`workspace:archived`&&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}),kr.create({type:`info`,position:`top`,timeout:wi,message:Y(`pr.baseChanged`,{oldBase:i,newBase:a}),actions:la(r,e.prUrl)}),Fi(Y(`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:wi},"pr:merged":{key:`toast.prMerged`,type:`positive`,timeout:5e3}}[i],c=Y(s.key,{n:o});kr.create({type:s.type,position:`top`,timeout:s.timeout,message:c,actions:la(r,a.prUrl)}),ca(c,r,i),i!==`pr:merged`&&t.refreshPrSnapshot(r);break}case`pr:changes-requested`:{if(!r)break;let e=n,i=Y(`toast.prChangesRequested`,{n:e.prNumber??0});kr.create({type:`warning`,position:`top`,timeout:wi,message:i,actions:la(r,e.prUrl)}),ca(i,r,`pr:changes-requested`),t.refreshPrSnapshot(r);break}case`pr:approved`:{if(!r)break;let e=n,i=Y(`toast.prApproved`,{n:e.prNumber??0});kr.create({type:`positive`,position:`top`,timeout:5e3,message:i,actions:la(r,e.prUrl)}),ca(i,r,`pr:approved`),t.refreshPrSnapshot(r);break}case`pr:ready-to-merge`:{if(!r)break;let e=n,i=Y(`toast.prReadyToMerge`,{n:e.prNumber??0});kr.create({type:`positive`,position:`top`,timeout:5e3,message:i,actions:la(r,e.prUrl)}),ca(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-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);break;case`autoloop:enabled`:case`autoloop:iteration-started`:case`autoloop:ready-flipped`:t.fetchAutoLoopStates();break;case`autoloop:permission-overridden`:r&&Fi(Y(`notification.autoLoopPermissionOverridden`,{name:t.workspaces.find(e=>e.id===r)?.name??``}),void 0,r);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&&Fi(Y(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`:sn().update(n)}}}}),ba=u({__name:`App`,setup(e){let t=ya(),n=fr();return b(()=>{t.connect(),n.fetchTemplates(),Ai()}),v(()=>{t.disconnect()}),(e,t)=>{let n=y(`router-view`);return S(),E(d,null,[D(n),D(mn),D(dr)],64)}}}),xa=e=>e,Sa=xa,Ca=xa,wa=xa(()=>Be()),Ta={true:`inset`,item:`item-inset`,"item-thumbnail":`item-thumbnail-inset`},Ea={xs:2,sm:4,md:8,lg:16,xl:24},Da=B({name:`QSeparator`,props:{...Le,spaced:[Boolean,String],inset:[Boolean,String],vertical:Boolean,color:String,size:String},setup(e){let t=M(),n=Ae(e,t.proxy.$q),r=p(()=>e.vertical?`vertical`:`horizontal`),i=p(()=>` q-separator--${r.value}`),a=p(()=>e.inset?`${i.value}-${Ta[e.inset]}`:``),o=p(()=>`q-separator${i.value}${a.value}`+(e.color===void 0?``:` bg-${e.color}`)+(n.value?` q-separator--dark`:``)),s=p(()=>{let t={};if(e.size!==void 0&&(t[e.vertical?`width`:`height`]=e.size),e.spaced){let n=e.spaced===!0?`${Ea.md}px`:e.spaced in Ea?`${Ea[e.spaced]}px`:e.spaced,r=e.vertical?[`Left`,`Right`]:[`Top`,`Bottom`];t[`margin${r[0]}`]=t[`margin${r[1]}`]=n}return t});return()=>N(`hr`,{class:o.value,style:s.value,"aria-orientation":r.value})}}),Oa=()=>N(`svg`,{key:`svg`,class:`q-radio__bg absolute non-selectable`,viewBox:`0 0 24 24`},[N(`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`}),N(`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 ka(e){(e.keyCode===13||e.keyCode===32)&&se(e)}var Aa=B({name:`QRadio`,props:{...Le,...L,...Ke,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(e,{slots:t,emit:r}){let{proxy:a}=M(),o=Ae(e,a.$q),s=ie(e,Xe),c=i(null),{refocusTargetEl:l,refocusTarget:u}=Ye(e,c),d=p(()=>n(e.modelValue)===n(e.val)),f=p(()=>`q-radio cursor-pointer no-outline row inline no-wrap items-center`+(e.disable?` disabled`:``)+(o.value?` q-radio--dark`:``)+(e.dense?` q-radio--dense`:``)+(e.leftLabel?` reverse`:``)),m=p(()=>{let t=e.color!==void 0&&(e.keepColor||d.value)?` text-${e.color}`:``;return`q-radio__inner relative-position q-radio__inner--${d.value?`truthy`:`falsy`}${t}`}),h=p(()=>(d.value?e.checkedIcon:e.uncheckedIcon)||null),g=p(()=>e.disable?-1:e.tabindex||0),_=p(()=>{let t={type:`radio`};return e.name!==void 0&&Object.assign(t,{".checked":d.value,"^checked":d.value?`checked`:void 0,name:e.name,value:e.val}),t}),v=qe(_);function y(t){t!==void 0&&(se(t),u(t)),!e.disable&&!d.value&&r(`update:modelValue`,e.val,t)}function b(e){(e.keyCode===13||e.keyCode===32)&&y(e)}Object.assign(a,{set:y});let x=Oa();return()=>{let n=h.value===null?[x]:[N(`div`,{key:`icon`,class:`q-radio__icon-container absolute-full flex flex-center no-wrap`},[N(pe,{class:`q-radio__icon`,name:h.value})])];e.disable||v(n,`unshift`,` q-radio__native q-ma-none q-pa-none`);let r=[N(`div`,{class:m.value,style:s.value,"aria-hidden":`true`},n)];l.value!==null&&r.push(l.value);let i=e.label===void 0?R(t.default):le(t.default,[e.label]);return i!==void 0&&r.push(N(`div`,{class:`q-radio__label q-anchor--skip`},i)),N(`div`,{ref:c,class:f.value,tabindex:g.value,role:`radio`,"aria-label":e.label,"aria-checked":d.value?`true`:`false`,"aria-disabled":e.disable?`true`:void 0,onClick:y,onKeydown:ka,onKeyup:b},r)}}}),ja=()=>N(`div`,{key:`svg`,class:`q-checkbox__bg absolute`},[N(`svg`,{class:`q-checkbox__svg fit absolute-full`,viewBox:`0 0 24 24`},[N(`path`,{class:`q-checkbox__truthy`,fill:`none`,d:`M1.73,12.91 8.1,19.28 22.79,4.59`}),N(`path`,{class:`q-checkbox__indet`,d:`M4,14H20V10H4`})])]),Ma=B({name:`QCheckbox`,props:Qe,emits:Ze,setup(e){let t=ja();function n(n,r){let i=p(()=>(n.value?e.checkedIcon:r.value?e.indeterminateIcon:e.uncheckedIcon)||null);return()=>i.value===null?[t]:[N(`div`,{key:`icon`,class:`q-checkbox__icon-container absolute-full flex flex-center no-wrap`},[N(pe,{class:`q-checkbox__icon`,name:i.value})])]}return $e(`checkbox`,n)}}),Na=B({name:`QToggle`,props:{...Qe,icon:String,iconColor:String},emits:Ze,setup(e){function t(t,n){let r=p(()=>(t.value?e.checkedIcon:n.value?e.indeterminateIcon:e.uncheckedIcon)||e.icon),i=p(()=>t.value?e.iconColor:null);return()=>[N(`div`,{class:`q-toggle__track`}),N(`div`,{class:`q-toggle__thumb absolute flex flex-center no-wrap`},r.value===void 0?void 0:[N(pe,{name:r.value,color:i.value})])]}return $e(`toggle`,t)}}),Pa={radio:Aa,checkbox:Ma,toggle:Na},Fa=Object.keys(Pa);function Ia(e,t){if(typeof e==`function`)return e;let n=e===void 0?t:e;return e=>e[n]}var La=B({name:`QOptionGroup`,props:{...Le,modelValue:{required:!0},options:{type:Array,validator:e=>e.every(U),default:()=>[]},optionValue:[Function,String],optionLabel:[Function,String],optionDisable:[Function,String],name:String,type:{type:String,default:`radio`,validator:e=>Fa.includes(e)},color:String,keepColor:Boolean,dense:Boolean,size:String,leftLabel:Boolean,inline:Boolean,disable:Boolean},emits:[`update:modelValue`],setup(e,{emit:t,slots:n}){let{proxy:{$q:r}}=M(),i=Array.isArray(e.modelValue);e.type===`radio`?i&&console.error(`q-option-group: model should not be array`):i||console.error(`q-option-group: model should be array in your case`);let a=Ae(e,r),o=p(()=>Pa[e.type]),s=p(()=>Ia(e.optionValue,`value`)),c=p(()=>Ia(e.optionLabel,`label`)),l=p(()=>Ia(e.optionDisable,`disable`)),u=p(()=>e.options.map(t=>({val:s.value(t),name:t.name===void 0?e.name:t.name,disable:e.disable||l.value(t),leftLabel:t.leftLabel===void 0?e.leftLabel:t.leftLabel,color:t.color===void 0?e.color:t.color,checkedIcon:t.checkedIcon,uncheckedIcon:t.uncheckedIcon,dark:t.dark===void 0?a.value:t.dark,size:t.size===void 0?e.size:t.size,dense:e.dense,keepColor:t.keepColor===void 0?e.keepColor:t.keepColor}))),d=p(()=>`q-option-group q-gutter-x-sm`+(e.inline?` q-option-group--inline`:``)),f=p(()=>{let t={role:`group`};return e.type===`radio`&&(t.role=`radiogroup`,e.disable&&(t[`aria-disabled`]=`true`)),t});function m(e){t(`update:modelValue`,e)}return()=>N(`div`,{class:d.value,...f.value},e.options.map((t,r)=>{let i=n[`label-`+r]===void 0?n.label===void 0?void 0:()=>n.label(t):()=>n[`label-`+r](t);return N(`div`,[N(o.value,{label:i===void 0?c.value(t):null,modelValue:e.modelValue,"onUpdate:modelValue":m,...u.value[r]},i)])}))}}),Ra=B({name:`DialogPluginComponent`,props:{...Le,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(e,{emit:t}){let{proxy:r}=M(),{$q:a}=r,o=Ae(e,a),s=i(null),c=i(e.prompt===void 0?e.options===void 0?void 0:e.options.model:e.prompt.model),l=p(()=>`q-dialog-plugin`+(o.value?` q-dialog-plugin--dark q-dark`:``)+(e.progress===!1?``:` q-dialog-plugin--progress`)),u=p(()=>e.color||(o.value?`amber`:`primary`)),d=p(()=>e.progress===!1?null:U(e.progress)?{component:e.progress.spinner||Ce,props:{color:e.progress.color||u.value}}:{component:Ce,props:{color:u.value}}),f=p(()=>e.prompt!==void 0||e.options!==void 0),m=p(()=>{if(!f.value)return{};let{model:t,isValid:n,items:r,...i}=e.prompt===void 0?e.options:e.prompt;return i}),h=p(()=>U(e.ok)||e.ok===!0?a.lang.label.ok:e.ok),g=p(()=>U(e.cancel)||e.cancel===!0?a.lang.label.cancel:e.cancel),_=p(()=>e.prompt===void 0?e.options!==void 0&&e.options.isValid!==void 0&&!e.options.isValid(c.value):e.prompt.isValid!==void 0&&!e.prompt.isValid(c.value)),v=p(()=>({color:u.value,label:h.value,ripple:!1,disable:_.value,...U(e.ok)?e.ok:{flat:!0},"data-autofocus":e.focus===`ok`&&!f.value||void 0,onClick:S})),y=p(()=>({color:u.value,label:g.value,ripple:!1,...U(e.cancel)?e.cancel:{flat:!0},"data-autofocus":e.focus===`cancel`&&!f.value||void 0,onClick:C}));k(()=>e.prompt&&e.prompt.model,T),k(()=>e.options&&e.options.model,T);function b(){s.value.show()}function x(){s.value.hide()}function S(){t(`ok`,n(c.value)),x()}function C(){x()}function w(){t(`hide`)}function T(e){c.value=e}function E(t){!_.value&&e.prompt.type!==`textarea`&&oe(t,13)&&S()}function D(t,n){return e.html?N(W,{class:t,innerHTML:n}):N(W,{class:t},()=>n)}function O(){return[N($n,{color:u.value,dense:!0,autofocus:!0,dark:o.value,...m.value,modelValue:c.value,"onUpdate:modelValue":T,onKeyup:E})]}function A(){return[N(La,{color:u.value,options:e.options.items,dark:o.value,...m.value,modelValue:c.value,"onUpdate:modelValue":T})]}function ee(){let t=[];return e.cancel&&t.push(N(xe,y.value)),e.ok&&t.push(N(xe,v.value)),N(er,{class:e.stackButtons?`items-end`:``,vertical:e.stackButtons,align:`right`},()=>t)}function j(){let t=[];return e.title&&t.push(D(`q-dialog__title`,e.title)),e.progress!==!1&&t.push(N(W,{class:`q-dialog__progress`},()=>N(d.value.component,d.value.props))),e.message&&t.push(D(`q-dialog__message`,e.message)),e.prompt===void 0?e.options!==void 0&&t.push(N(Da,{dark:o.value}),N(W,{class:`scroll q-dialog-plugin__form`},A),N(Da,{dark:o.value})):t.push(N(W,{class:`scroll q-dialog-plugin__form`},O)),(e.ok||e.cancel)&&t.push(ee()),t}function te(){return[N(kt,{class:[l.value,e.cardClass],style:e.cardStyle,dark:o.value},j)]}return Object.assign(r,{show:b,hide:x}),()=>N(tn,{ref:s,onHide:w},te)}});function za(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]}:{},za(e[n],t[n])):e[n]=t[n]}function Ba(e,t,n){return r=>{let a,o,s=t&&r.component!==void 0;if(s){let{component:e,componentProps:t}=r;a=typeof e==`string`?n.component(e):e,o=t||{}}else{let{class:t,style:n,...i}=r;a=e,o=i,t!==void 0&&(i.cardClass=t),n!==void 0&&(i.cardStyle=n)}let c,l=!1,u=i(null),d=_e(!1,`dialog`),f=e=>{if(u.value?.[e]!==void 0){u.value[e]();return}let t=c.$.subTree;if(t?.component){if(t.component.proxy&&t.component.proxy[e]){t.component.proxy[e]();return}if(t.component.subTree&&t.component.subTree.component&&t.component.subTree.component.proxy&&t.component.subTree.component.proxy[e]){t.component.subTree.component.proxy[e]();return}}console.error(`[Quasar] Incorrectly defined Dialog component`)},p=[],m=[],h={onOk(e){return p.push(e),h},onCancel(e){return m.push(e),h},onDismiss(e){return p.push(e),m.push(e),h},hide(){return f(`hide`),h},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),za(o,r)}c.$forceUpdate()}return h}},g=e=>{l=!0,p.forEach(t=>{t(e)})},_=()=>{v.unmount(d),me(d),v=null,c=null,l||m.forEach(e=>{e()})},v=St({name:`QGlobalDialog`,setup:()=>()=>N(a,{...o,ref:u,onOk:g,onHide:_,onVnodeMounted(...e){typeof o.onVnodeMounted==`function`&&o.onVnodeMounted(...e),C(()=>f(`show`))}})},n);return c=v.mount(d),h}}var Va={install({$q:e,parentApp:t}){e.dialog=this.create=Ba(Ra,!0,t)}},Ha=new Map;function Ua(e,t){Ha.set(e,t)}function Wa(e){Ha.delete(e)}function Ga(){let e=[];for(let[t,n]of Ha)try{n()&&e.push(t)}catch{}return e}function Ka(){return Ga().length>0}function qa(e){return typeof e==`object`||`displayName`in e||`props`in e||`__vccOpts`in e}function Ja(e){return e.__esModule||e[Symbol.toStringTag]===`Module`||e.default&&qa(e.default)}var Z=Object.assign;function Ya(e,t){let n={};for(let r in t){let i=t[r];n[r]=Q(i)?i.map(e):e(i)}return n}var Xa=()=>{},Q=Array.isArray;function Za(e,t){let n={};for(let r in e)n[r]=r in t?t[r]:e[r];return n}var Qa=Symbol(``);function $a(e,t){return Z(Error(),{type:e,[Qa]:!0},t)}function eo(e,t){return e instanceof Error&&Qa in e&&(t==null||!!(e.type&t))}var to=Symbol(``),no=Symbol(``),ro=Symbol(``),io=Symbol(``),ao=Symbol(``);function oo(){return P(ro)}function so(e){return P(io)}var co=typeof document<`u`,lo=/#/g,uo=/&/g,fo=/\//g,po=/=/g,mo=/\?/g,ho=/\+/g,go=/%5B/g,_o=/%5D/g,vo=/%5E/g,yo=/%60/g,bo=/%7B/g,xo=/%7C/g,So=/%7D/g,Co=/%20/g;function wo(e){return e==null?``:encodeURI(``+e).replace(xo,`|`).replace(go,`[`).replace(_o,`]`)}function To(e){return wo(e).replace(bo,`{`).replace(So,`}`).replace(vo,`^`)}function Eo(e){return wo(e).replace(ho,`%2B`).replace(Co,`+`).replace(lo,`%23`).replace(uo,`%26`).replace(yo,"`").replace(bo,`{`).replace(So,`}`).replace(vo,`^`)}function Do(e){return Eo(e).replace(po,`%3D`)}function Oo(e){return wo(e).replace(lo,`%23`).replace(mo,`%3F`)}function ko(e){return Oo(e).replace(fo,`%2F`)}function Ao(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var jo=/\/$/,Mo=e=>e.replace(jo,``);function No(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=Vo(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:Ao(o)}}function Po(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function Fo(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function Io(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&Lo(t.matched[r],n.matched[i])&&Ro(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Lo(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ro(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!zo(e[n],t[n]))return!1;return!0}function zo(e,t){return Q(e)?Bo(e,t):Q(t)?Bo(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function Bo(e,t){return Q(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function Vo(e,t){if(e.startsWith(`/`))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 Ho={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function Uo(e){if(!e){if(co){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),Mo(e)}var Wo=/^[^#]+#/;function Go(e,t){return e.replace(Wo,`#`)+t}function Ko(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 qo=()=>({left:window.scrollX,top:window.scrollY});function Jo(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=Ko(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 Yo(e,t){return(history.state?history.state.position-t:-1)+e}var Xo=new Map;function Zo(e,t){Xo.set(e,t)}function Qo(e){let t=Xo.get(e);return Xo.delete(e),t}function $o(e){return typeof e==`string`||e&&typeof e==`object`}function es(e){return typeof e==`string`||typeof e==`symbol`}function ts(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(ho,` `),i=r.indexOf(`=`),a=Ao(i<0?r:r.slice(0,i)),o=i<0?null:Ao(r.slice(i+1));if(a in t){let e=t[a];Q(e)||(e=t[a]=[e]),e.push(o)}else t[a]=o}return t}function ns(e){let t=``;for(let n in e){let r=e[n];if(n=Do(n),r==null){r!==void 0&&(t+=(t.length?`&`:``)+n);continue}(Q(r)?r.map(e=>e&&Eo(e)):[r&&Eo(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function rs(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=Q(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function is(){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 as(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($a(4,{from:n,to:t})):e instanceof Error?c(e):$o(e)?c($a(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 os(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(qa(s)){let c=(s.__vccOpts||s)[t];c&&a.push(as(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=Ja(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&as(c,n,r,o,e,i)()}))}}}return a}function ss(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=>Lo(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>Lo(e,s))||i.push(s))}return[n,r,i]}var cs=()=>location.protocol+`//`+location.host;function ls(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),Fo(n,``)}return Fo(n,e)+r+i}function us(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=ls(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(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(Z({},e.state,{scroll:qo()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function ds(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?qo():null}}function fs(e){let{history:t,location:n}=window,r={value:ls(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:cs()+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,Z({},t.state,ds(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=Z({},i.value,t.state,{forward:e,scroll:qo()});a(o.current,o,!0),a(e,Z({},ds(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function ps(e){e=Uo(e);let t=fs(e),n=us(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=Z({location:``,base:e,go:r,createHref:Go.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 ms(e){return e=location.host?e||location.pathname+location.search:``,e.includes(`#`)||(e+=`#`),ps(e)}var hs={type:0,value:``},gs=/[a-zA-Z0-9_]/;function _s(e){if(!e)return[[]];if(e===`/`)return[[hs]];if(!e.startsWith(`/`))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:gs.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 vs=`[^/]+?`,ys={sensitive:!1,strict:!1,start:!0,end:!0},bs=/[.+*?^${}()[\]/\\]/g;function xs(e,t){let n=Z({},ys,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(bs,`\\$&`),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||vs;if(u!==vs){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(Q(c)&&!o)throw Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);let l=Q(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 Ss(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 Cs(e,t){let n=0,r=e.score,i=t.score;for(;n<r.length&&n<i.length;){let e=Ss(r[n],i[n]);if(e)return e;n++}if(Math.abs(i.length-r.length)===1){if(ws(r))return 1;if(ws(i))return-1}return i.length-r.length}function ws(e){let t=e[e.length-1];return e.length>0&&t[t.length-1]<0}var Ts={strict:!1,end:!0,sensitive:!1};function Es(e,t,n){let r=Z(xs(_s(e.path),n),{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Ds(e,t){let n=[],r=new Map;t=Za(Ts,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=ks(e);s.aliasOf=r&&r.record;let l=Za(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(ks(Z({},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&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=Es(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!js(d)&&o(e.name)),Fs(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)}:Xa}function o(e){if(es(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=Ns(e,n);n.splice(t,0,e),e.record.name&&!js(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 $a(1,{location:e});s=i.record.name,a=Z(Os(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&Os(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 $a(1,{location:e,currentLocation:t});s=i.record.name,a=Z({},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:Ms(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 Os(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function ks(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:As(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 As(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 js(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Ms(e){return e.reduce((e,t)=>Z(e,t.meta),{})}function Ns(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;Cs(e,t[i])<0?r=i:n=i+1}let i=Ps(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function Ps(e){let t=e;for(;t=t.parent;)if(Fs(t)&&Cs(e,t)===0)return t}function Fs({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Is(e){let t=P(ro),n=P(io),i=p(()=>{let n=r(e.to);return t.resolve(n)}),a=p(()=>{let{matched:e}=i.value,{length:t}=e,r=e[t-1],a=n.matched;if(!r||!a.length)return-1;let o=a.findIndex(Lo.bind(null,r));if(o>-1)return o;let s=Vs(e[t-2]);return t>1&&Vs(r)===s&&a[a.length-1].path!==s?a.findIndex(Lo.bind(null,e[t-2])):o}),o=p(()=>a.value>-1&&Bs(n.params,i.value.params)),s=p(()=>a.value>-1&&a.value===n.matched.length-1&&Ro(n.params,i.value.params));function c(n={}){if(zs(n)){let n=t[r(e.replace)?`replace`:`push`](r(e.to)).catch(Xa);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:i,href:p(()=>i.value.href),isActive:o,isExactActive:s,navigate:c}}function Ls(e){return e.length===1?e[0]:e}var Rs=u({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:Is,setup(e,{slots:t}){let n=l(Is(e)),{options:r}=P(ro),i=p(()=>({[Hs(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[Hs(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&Ls(t.default(n));return e.custom?r:N(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function zs(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 Bs(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!Q(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function Vs(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var Hs=(e,t,n)=>e??t??n,Us=u({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){let a=P(ao),o=p(()=>e.route||a.value),s=P(no,0),c=p(()=>{let e=r(s),{matched:t}=o.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),l=p(()=>o.value.matched[c.value]);m(no,p(()=>c.value+1)),m(to,l),m(ao,o);let u=i();return k(()=>[u.value,l.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||!Lo(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let r=o.value,i=e.name,a=l.value,s=a&&a.components[i];if(!s)return Ws(n.default,{Component:s,route:r});let c=a.props[i],d=c?c===!0?r.params:typeof c==`function`?c(r):c:null,f=N(s,Z({},d,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[i]=null)},ref:u}));return Ws(n.default,{Component:f,route:r})||f}}});function Ws(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var Gs=Us;function Ks(e){let t=Ds(e.routes,e),n=e.parseQuery||ts,i=e.stringifyQuery||ns,s=e.history,c=is(),l=is(),u=is(),d=a(Ho),f=Ho;co&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let p=Ya.bind(null,e=>``+e),m=Ya.bind(null,ko),h=Ya.bind(null,Ao);function g(e,n){let r,i;return es(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function _(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function v(){return t.getRoutes().map(e=>e.record)}function y(e){return!!t.getRecordMatcher(e)}function b(e,r){if(r=Z({},r||d.value),typeof e==`string`){let i=No(n,e,r.path),a=t.resolve({path:i.path},r),o=s.createHref(i.fullPath);return Z(i,a,{params:h(a.params),redirectedFrom:void 0,href:o})}let a;if(e.path!=null)a=Z({},e,{path:No(n,e.path,r.path).path});else{let t=Z({},e.params);for(let e in t)t[e]??delete t[e];a=Z({},e,{params:m(t)}),r.params=m(r.params)}let o=t.resolve(a,r),c=e.hash||``;o.params=p(h(o.params));let l=Po(i,Z({},e,{hash:To(c),path:o.path})),u=s.createHref(l);return Z({fullPath:l,hash:c,query:i===ns?rs(e.query):e.query||{}},o,{redirectedFrom:void 0,href:u})}function x(e){return typeof e==`string`?No(n,e,d.value.path):Z({},e)}function S(e,t){if(f!==e)return $a(8,{from:t,to:e})}function w(e){return D(e)}function T(e){return w(Z(x(e),{replace:!0}))}function E(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=x(i):{path:i},i.params={}),Z({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function D(e,t){let n=f=b(e),r=d.value,a=e.state,o=e.force,s=e.replace===!0,c=E(n,r);if(c)return D(Z(x(c),{state:typeof c==`object`?Z({},a,c.state):a,force:o,replace:s}),t||n);let l=n;l.redirectedFrom=t;let u;return!o&&Io(i,r,n)&&(u=$a(16,{to:l,from:r}),I(r,r,!0,!1)),(u?Promise.resolve(u):A(l,r)).catch(e=>eo(e)?eo(e,2)?e:ie(e):ne(e,l,r)).then(e=>{if(e){if(eo(e,2))return D(Z({replace:s},x(e.to),{state:typeof e.to==`object`?Z({},a,e.to.state):a,force:o}),t||l)}else e=j(l,r,!0,s,a);return ee(l,r,e),e})}function O(e,t){let n=S(e,t);return n?Promise.reject(n):Promise.resolve()}function k(e){let t=oe.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function A(e,t){let n,[r,i,a]=ss(e,t);n=os(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(as(r,e,t))});let o=O.bind(null,e,t);return n.push(o),z(n).then(()=>{n=[];for(let r of c.list())n.push(as(r,e,t));return n.push(o),z(n)}).then(()=>{n=os(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(as(r,e,t))});return n.push(o),z(n)}).then(()=>{n=[];for(let r of a)if(r.beforeEnter){if(Q(r.beforeEnter))for(let i of r.beforeEnter)n.push(as(i,e,t));else n.push(as(r.beforeEnter,e,t))}return n.push(o),z(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=os(a,`beforeRouteEnter`,e,t,k),n.push(o),z(n))).then(()=>{n=[];for(let r of l.list())n.push(as(r,e,t));return n.push(o),z(n)}).catch(e=>eo(e,8)?e:Promise.reject(e))}function ee(e,t,n){u.list().forEach(r=>k(()=>r(e,t,n)))}function j(e,t,n,r,i){let a=S(e,t);if(a)return a;let o=t===Ho,c=co?history.state:{};n&&(r||o?s.replace(e.fullPath,Z({scroll:o&&c&&c.scroll},i)):s.push(e.fullPath,i)),d.value=e,I(e,t,n,o),ie()}let M;function te(){M||=s.listen((e,t,n)=>{if(!R.listening)return;let r=b(e),i=E(r,R.currentRoute.value);if(i){D(Z(i,{replace:!0,force:!0}),r).catch(Xa);return}f=r;let a=d.value;co&&Zo(Yo(a.fullPath,n.delta),qo()),A(r,a).catch(e=>eo(e,12)?e:eo(e,2)?(D(Z(x(e.to),{force:!0}),r).then(e=>{eo(e,20)&&!n.delta&&n.type===`pop`&&s.go(-1,!1)}).catch(Xa),Promise.reject()):(n.delta&&s.go(-n.delta,!1),ne(e,r,a))).then(e=>{e||=j(r,a,!1),e&&(n.delta&&!eo(e,8)?s.go(-n.delta,!1):n.type===`pop`&&eo(e,20)&&s.go(-1,!1)),ee(r,a,e)}).catch(Xa)})}let N=is(),P=is(),F;function ne(e,t,n){ie(e);let r=P.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function re(){return F&&d.value!==Ho?Promise.resolve():new Promise((e,t)=>{N.add([e,t])})}function ie(e){return F||(F=!e,te(),N.list().forEach(([t,n])=>e?n(e):t()),N.reset()),e}function I(t,n,r,i){let{scrollBehavior:a}=e;if(!co||!a)return Promise.resolve();let o=!r&&Qo(Yo(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return C().then(()=>a(t,n,o)).then(e=>t===d.value&&e&&Jo(e)).catch(e=>t===d.value&&ne(e,t,n))}let ae=e=>s.go(e),L,oe=new Set,R={currentRoute:d,listening:!0,addRoute:g,removeRoute:_,clearRoutes:t.clearRoutes,hasRoute:y,getRoutes:v,resolve:b,options:e,push:w,replace:T,go:ae,back:()=>ae(-1),forward:()=>ae(1),beforeEach:c.add,beforeResolve:l.add,afterEach:u.add,onError:P.add,isReady:re,install(e){e.component(`RouterLink`,Rs),e.component(`RouterView`,Gs),e.config.globalProperties.$router=R,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>r(d)}),co&&!L&&d.value===Ho&&(L=!0,w(s.location).catch(e=>{}));let t={};for(let e in Ho)Object.defineProperty(t,e,{get:()=>d.value[e],enumerable:!0});e.provide(ro,R),e.provide(io,o(t)),e.provide(ao,d);let n=e.unmount;oe.add(e),e.unmount=function(){oe.delete(e),oe.size<1&&(f=Ho,M&&M(),M=null,d.value=Ho,L=!1,F=!1),n()}}};function z(e){return e.reduce((e,t)=>e.then(()=>k(t)),Promise.resolve())}return R}var qs=`modulepreload`,Js=function(e){return`/`+e},Ys={},$=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=Js(t,n),t=s(t),t in Ys)return;Ys[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`:qs,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)})},Xs=[{path:`/`,component:()=>$(()=>import(`./MainLayout-PSmlvfJd.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])),children:[{path:``,redirect:{name:`workspace`}},{path:`workspace/:id?`,name:`workspace`,component:()=>$(()=>import(`./WorkspacePage-DRP9Ypmz.js`).then(e=>e.t),__vite__mapDeps([25,1,2,3,4,26,6,5,7,8,9,10,11,13,14,15,16,17,27,21,22,28,29,30,31,32]))},{path:`create`,name:`create`,component:()=>$(()=>import(`./CreatePage-BptAgVvu.js`),__vite__mapDeps([33,1,2,3,4,26,6,5,7,8,9,10,11,14,34,35,17,23,28,36,29,30,37]))},{path:`settings`,name:`settings`,component:()=>$(()=>import(`./SettingsPage-Dr8oSevA.js`),__vite__mapDeps([38,1,2,3,4,5,9,6,7,8,10,11,19,15,16,39,35,18,20,23,28,36,31,40]))},{path:`search`,name:`search`,component:()=>$(()=>import(`./SearchPage-BI8w9utc.js`),__vite__mapDeps([41,1,2,3,4,5,10,14,15,22,28,36,42]))},{path:`health`,name:`health`,component:()=>$(()=>import(`./HealthPage-DTrmhh3X.js`),__vite__mapDeps([43,2,3,4,6,5,10,14,15,28,36,44]))},{path:`changelog`,name:`changelog`,component:()=>$(()=>import(`./ChangelogPage-rvISZfJb.js`),__vite__mapDeps([45,2,3,4,10,5,13,15,11,28,36,46]))}]},{path:`/:catchAll(.*)*`,redirect:`/`}],Zs=Ca(()=>{let e=Ks({scrollBehavior:()=>({left:0,top:0}),routes:Xs,history:ms()});return e.beforeEach((e,t)=>{if(e.fullPath===t.fullPath||!Ka())return!0;let n=Br.global.t;return new Promise(e=>{Va.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))})}),window.addEventListener(`beforeunload`,e=>{Ka()&&(e.preventDefault(),e.returnValue=``)}),e});async function Qs(e,t){let n=e(ba);n.use(Tt,t);let r=typeof wa==`function`?await wa({}):wa;n.use(r);let i=s(typeof Zs==`function`?await Zs({store:r}):Zs);return r.use(({store:e})=>{e.router=i}),{app:n,store:r,router:i}}var $s={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:kr,Dialog:Va}},ec=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}$/))},tc;typeof window<`u`&&(tc=typeof Promise<`u`?new Promise(function(e){return window.addEventListener(`load`,e)}):{then:function(e){return window.addEventListener(`load`,e)}});function nc(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&&tc.then(function(){ec()?(ac(e,r,n),navigator.serviceWorker.ready.then(function(e){r(`ready`,e)}).catch(function(e){return rc(r,e)})):(ic(e,r,n),navigator.serviceWorker.ready.then(function(e){r(`ready`,e)}).catch(function(e){return rc(r,e)}))})}function rc(e,t){navigator.onLine||e(`offline`),e(`error`,t)}function ic(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 rc(t,e)})}function ac(e,t,n){fetch(e).then(function(r){r.status===404?(t(`error`,Error(`Service worker not found at `+e)),oc()):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`))),oc()):ic(e,t,n)}).catch(function(e){return rc(t,e)})}function oc(){`serviceWorker`in navigator&&navigator.serviceWorker.ready.then(function(e){e.unregister()}).catch(function(e){return rc(emit,e)})}nc(`/sw.js`);var sc=`/`;async function cc({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.href.replace(window.location.origin,``);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:sc})}catch(e){i||console.error(`[Quasar] boot error:`,e);return}i||(e.use(t),e.mount(`#q-app`))}Qs(A,$s).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]([$(()=>import(`./i18n-BsWCIFmf.js`),[]),$(()=>import(`./network-auth-BPxfeLcl.js`),[]),$(()=>import(`./notify-theme-thUiJn9n.js`),[])]).then(t=>{cc(e,n(t).filter(e=>typeof e==`function`))})});export{ir as $,si as A,Wr as B,wi as C,gi as D,_i as E,ei as F,zr as G,Ur as H,$r as I,fr as J,kr as K,ai as L,ti as M,Zr as N,bi as O,Yr as P,rr as Q,ii as R,Pi as S,xi as T,Vr as U,q as V,Br as W,ar as X,sr as Y,nr as Z,Ki as _,W as _t,Wa as a,Pn as at,Li as b,U as bt,Ma as c,on as ct,Sa as d,qt as dt,er as et,ya as f,Jt as ft,Wi as g,Ot as gt,Hi as h,kt as ht,Ua as i,Ln as it,Xr as j,vi as k,Aa as l,tn as lt,J as m,At as mt,so as n,Qn as nt,La as o,Nn as ot,qi as p,Wt as pt,pr as q,oo as r,Mn as rt,Na as s,Fn as st,$ as t,$n as tt,Da as u,Zt as ut,Ri as v,yt as vt,Ci as w,Ii as x,zi as y,bt as yt,ri as z};
|