@loicngr/kobo 1.7.7 → 1.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +29 -0
- package/README.md +62 -4
- package/dist/mcp-server/kobo-tasks-server.js +27 -0
- package/dist/server/routes/health.js +14 -0
- package/dist/server/routes/workspaces.js +33 -9
- package/dist/server/services/agent/engines/claude-code/capabilities.js +7 -0
- package/dist/server/services/agent/engines/codex/capabilities.js +18 -0
- package/dist/server/services/agent/engines/codex/client.js +36 -0
- package/dist/server/services/agent/engines/codex/engine.js +276 -0
- package/dist/server/services/agent/engines/codex/event-mapper.js +473 -0
- package/dist/server/services/agent/engines/codex/jsonrpc/peer.js +60 -0
- package/dist/server/services/agent/engines/codex/jsonrpc/transport.js +31 -0
- package/dist/server/services/agent/engines/codex/options-builder.js +81 -0
- package/dist/server/services/agent/engines/codex/protocol/types.js +11 -0
- package/dist/server/services/agent/engines/codex/server-requests.js +99 -0
- package/dist/server/services/agent/engines/codex/spawn.js +27 -0
- package/dist/server/services/agent/engines/registry.js +2 -0
- package/dist/server/services/agent/orchestrator.js +1 -1
- package/dist/server/services/settings-service.js +68 -6
- package/dist/server/utils/paths.js +7 -0
- package/dist/shared/codex-models.js +43 -0
- package/package.json +2 -1
- package/src/client/dist/spa/assets/ActivityFeed-CPZdjJpH.js +8 -0
- package/src/client/dist/spa/assets/{ActivityFeed-tE4LVYck.css → ActivityFeed-WjiQ9716.css} +1 -1
- package/src/client/dist/spa/assets/{ClosePopup-DTcbxsC0.js → ClosePopup-C5JlH6Hy.js} +1 -1
- package/src/client/dist/spa/assets/CreatePage-CdfbFlXf.js +2 -0
- package/src/client/dist/spa/assets/CreatePage-ZyBHUbl0.css +1 -0
- package/src/client/dist/spa/assets/{DiffViewer-D-uNbBq0.js → DiffViewer-DkiP6nWz.js} +3 -3
- package/src/client/dist/spa/assets/HealthPage-BHGZJTgS.js +1 -0
- package/src/client/dist/spa/assets/{MainLayout-DdkKM2ba.js → MainLayout-C0tClQZl.js} +17 -17
- package/src/client/dist/spa/assets/{MainLayout-drolsINz.css → MainLayout-DKnTGN_Q.css} +1 -1
- package/src/client/dist/spa/assets/{QExpansionItem-BGg74no1.js → QExpansionItem-CW6sPoP9.js} +1 -1
- package/src/client/dist/spa/assets/{QMenu-D6uqosRg.js → QMenu-CaVfoMu6.js} +1 -1
- package/src/client/dist/spa/assets/{QTabPanels-ClPY9y4T.js → QTabPanels-E66qDYmr.js} +1 -1
- package/src/client/dist/spa/assets/{QTooltip-DUGPNNeQ.js → QTooltip-DYey0zHV.js} +1 -1
- package/src/client/dist/spa/assets/{SearchPage-C07dgzT9.js → SearchPage-BaI3iU58.js} +1 -1
- package/src/client/dist/spa/assets/SettingsPage-BqBOQKeM.js +9 -0
- package/src/client/dist/spa/assets/SettingsPage-Zeu2cZqi.css +1 -0
- package/src/client/dist/spa/assets/{TouchPan-DvVlszwO.js → TouchPan-DQILDzd3.js} +1 -1
- package/src/client/dist/spa/assets/{WorkspacePage-CRIcsASQ.css → WorkspacePage-C9eT5LAo.css} +1 -1
- package/src/client/dist/spa/assets/WorkspacePage-DqMyUSFG.js +4 -0
- package/src/client/dist/spa/assets/{build-path-tree-CCMckvpr.js → build-path-tree-BpcCBm9A.js} +1 -1
- package/src/client/dist/spa/assets/{cssMode-D6XTTdwy.js → cssMode-BaeNVqUm.js} +1 -1
- package/src/client/dist/spa/assets/{editor.api-6hDVHddO.js → editor.api-DMLl_PBy.js} +1 -1
- package/src/client/dist/spa/assets/{editor.main-DsLU1RWu.js → editor.main-D2pRsQAX.js} +3 -3
- package/src/client/dist/spa/assets/{AutoLoopChip-CkSzkC0C.js → engineFeatures-RffgP255.js} +1 -1
- package/src/client/dist/spa/assets/{expand-template-Crz1uiBt.js → expand-template-z2wIJOD2.js} +1 -1
- package/src/client/dist/spa/assets/{freemarker2-Bn1f0t2U.js → freemarker2-Bh6ItnVy.js} +1 -1
- package/src/client/dist/spa/assets/{handlebars-O92Cbq66.js → handlebars-D8OXeysi.js} +1 -1
- package/src/client/dist/spa/assets/{html-Ck95BMBU.js → html-9Y1AHhvw.js} +1 -1
- package/src/client/dist/spa/assets/{htmlMode-DDYhH2FJ.js → htmlMode-z00se0fQ.js} +1 -1
- package/src/client/dist/spa/assets/i18n-C-VMW7h5.js +1 -0
- package/src/client/dist/spa/assets/index-BLlWqEZC.js +2 -0
- package/src/client/dist/spa/assets/{javascript-Cy2ddqHg.js → javascript-D0LSb7WU.js} +1 -1
- package/src/client/dist/spa/assets/{jsonMode-BIfVcp5z.js → jsonMode-BSmyaoX3.js} +1 -1
- package/src/client/dist/spa/assets/{liquid-B287eegh.js → liquid-BsY5UXNl.js} +1 -1
- package/src/client/dist/spa/assets/{mdx-B8HSzGai.js → mdx-BUcXih4e.js} +1 -1
- package/src/client/dist/spa/assets/{monaco.contribution-CofcHzEf.js → monaco.contribution-DrpufOT3.js} +2 -2
- package/src/client/dist/spa/assets/{notifications-BPnKFW60.js → notifications-C255ApfS.js} +1 -1
- package/src/client/dist/spa/assets/permissionModes-BocOmzU8.js +1 -0
- package/src/client/dist/spa/assets/{purify.es-BCEwTYRx.js → purify.es-aV6SU8N4.js} +1 -1
- package/src/client/dist/spa/assets/{python-csaKR6_U.js → python-C0PoB7M8.js} +1 -1
- package/src/client/dist/spa/assets/{razor-C2wEv-nX.js → razor-Bu0-fwxD.js} +1 -1
- package/src/client/dist/spa/assets/{render-chat-markdown-Bjcei0vn.js → render-chat-markdown-DALCdDVE.js} +1 -1
- package/src/client/dist/spa/assets/{tsMode-DGLVs57K.js → tsMode-Blc1d2dp.js} +1 -1
- package/src/client/dist/spa/assets/{typescript-w0GWHzZ3.js → typescript-CV4ME9fo.js} +1 -1
- package/src/client/dist/spa/assets/{use-panel-CbJ44rqY.js → use-panel-DCPiSURS.js} +1 -1
- package/src/client/dist/spa/assets/{xml-CTn-vnEd.js → xml-DLYRBBbI.js} +1 -1
- package/src/client/dist/spa/assets/{yaml-CTyUSvLZ.js → yaml-QIBjI5Dl.js} +1 -1
- package/src/client/dist/spa/index.html +2 -2
- package/src/mcp-server/kobo-tasks-server.ts +27 -0
- package/src/client/dist/spa/assets/ActivityFeed-DlPVoOGb.js +0 -7
- package/src/client/dist/spa/assets/CreatePage-BoRappO3.css +0 -1
- package/src/client/dist/spa/assets/CreatePage-DpCVNwYk.js +0 -2
- package/src/client/dist/spa/assets/HealthPage-xZ0PP4F-.js +0 -1
- package/src/client/dist/spa/assets/SettingsPage-CLNmI0Rr.css +0 -1
- package/src/client/dist/spa/assets/SettingsPage-D0CZNqkA.js +0 -9
- package/src/client/dist/spa/assets/WorkspacePage-CKeCLPi0.js +0 -4
- package/src/client/dist/spa/assets/i18n-BLgknHpf.js +0 -1
- package/src/client/dist/spa/assets/index-CdHDdk1y.js +0 -2
- package/src/client/dist/spa/assets/models-Bd_v3W7Q.js +0 -1
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{F as e,H as t,L as n,M as r,N as i,Q as a,S as o,U as s,W as c,_t as l,bt as u,d,f,g as p,h as m,k as h,l as g,p as _,r as v,rt as y,u as b,v as x,y as S}from"./runtime-core.esm-bundler-9Z0QAO_7.js";import{N as C,P as w,i as ee,k as te,n as T,r as E,t as ne}from"./QIcon-qfJNZLIW.js";import{r as D}from"./use-id-_7wiRcgb.js";import{I as O,L as k,a as re,c as ie,i as ae,n as oe,o as se,s as ce}from"./notifications-BPnKFW60.js";import{t as A}from"./QBtn-DEuWKHbR.js";import{n as le}from"./vue-i18n-DI-gS-CC.js";import{i as ue,o as j,r as M,t as N}from"./QInput-DCJEwE8V.js";import{t as P}from"./QToggle-DNOTC_3a.js";import{b as de,g as fe,h as pe,n as me,y as he}from"./index-CdHDdk1y.js";import{n as ge,t as _e}from"./QItemSection-CQUDd0Vg.js";import{t as ve}from"./QItemLabel-CHkgkZVj.js";import{d as F,t as ye}from"./QTooltip-DUGPNNeQ.js";import{t as be}from"./QExpansionItem-BGg74no1.js";import{t as xe}from"./TouchPan-DvVlszwO.js";import{t as I}from"./_plugin-vue_export-helper-Cj6tcsj6.js";import{t as L}from"./QSpace-DKIph84L.js";import{t as Se}from"./QList-BbnN_oNX.js";import{t as Ce}from"./ClosePopup-DTcbxsC0.js";import{t as we}from"./use-quasar-DQYS47mh.js";import{i as Te,n as Ee,r as De,t as Oe}from"./QTabPanels-ClPY9y4T.js";import{n as R,t as ke}from"./models-Bd_v3W7Q.js";import{t as Ae}from"./QPage-Co2h9wd_.js";var z=`q-slider__marker-labels`,B=e=>({value:e}),V=({marker:e})=>o(`div`,{key:e.value,style:e.style,class:e.classes},e.label),H=[34,37,40,33,39,38],U={...E,...j,min:{type:Number,default:0},max:{type:Number,default:100},innerMin:Number,innerMax:Number,step:{type:Number,default:1,validator:e=>e>=0},snap:Boolean,vertical:Boolean,reverse:Boolean,color:String,markerLabelsClass:String,label:Boolean,labelColor:String,labelTextColor:String,labelAlways:Boolean,switchLabelSide:Boolean,markers:[Boolean,Number],markerLabels:[Boolean,Array,Object,Function],switchMarkerLabelsSide:Boolean,trackImg:String,trackColor:String,innerTrackImg:String,innerTrackColor:String,selectionColor:String,selectionImg:String,thumbSize:{type:String,default:`20px`},trackSize:{type:String,default:`4px`},disable:Boolean,readonly:Boolean,dense:Boolean,tabindex:[String,Number],thumbColor:String,thumbPath:{type:String,default:`M 4, 10 a 6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0`}},W=[`pan`,`update:modelValue`,`change`];function je({updateValue:e,updatePosition:t,getDragging:n,formAttrs:r}){let{props:i,emit:s,slots:c,proxy:{$q:l}}=S(),u=T(i,l),d=ue(r),f=a(!1),p=a(!1),m=a(!1),_=a(!1),v=g(()=>i.vertical===!0?`--v`:`--h`),y=g(()=>`-`+(i.switchLabelSide===!0?`switched`:`standard`)),b=g(()=>i.vertical===!0?i.reverse===!0:i.reverse!==(l.lang.rtl===!0)),x=g(()=>isNaN(i.innerMin)===!0||i.innerMin<i.min?i.min:i.innerMin),C=g(()=>isNaN(i.innerMax)===!0||i.innerMax>i.max?i.max:i.innerMax),w=g(()=>i.disable!==!0&&i.readonly!==!0&&x.value<C.value),E=g(()=>{if(i.step===0)return e=>e;let e=(String(i.step).trim().split(`.`)[1]||``).length;return t=>parseFloat(t.toFixed(e))}),ne=g(()=>i.step===0?1:i.step),D=g(()=>w.value===!0?i.tabindex||0:-1),re=g(()=>i.max-i.min),ie=g(()=>C.value-x.value),ae=g(()=>Se(x.value)),oe=g(()=>Se(C.value)),se=g(()=>i.vertical===!0?b.value===!0?`bottom`:`top`:b.value===!0?`right`:`left`),ce=g(()=>i.vertical===!0?`height`:`width`),A=g(()=>i.vertical===!0?`width`:`height`),le=g(()=>i.vertical===!0?`vertical`:`horizontal`),j=g(()=>{let e={role:`slider`,"aria-valuemin":x.value,"aria-valuemax":C.value,"aria-orientation":le.value,"data-step":i.step};return i.disable===!0?e[`aria-disabled`]=`true`:i.readonly===!0&&(e[`aria-readonly`]=`true`),e}),M=g(()=>`q-slider q-slider${v.value} q-slider--${f.value===!0?``:`in`}active inline no-wrap `+(i.vertical===!0?`row`:`column`)+(i.disable===!0?` disabled`:` q-slider--enabled`+(w.value===!0?` q-slider--editable`:``))+(m.value===`both`?` q-slider--focus`:``)+(i.label||i.labelAlways===!0?` q-slider--label`:``)+(i.labelAlways===!0?` q-slider--label-always`:``)+(u.value===!0?` q-slider--dark`:``)+(i.dense===!0?` q-slider--dense q-slider--dense`+v.value:``));function N(e){let t=`q-slider__`+e;return`${t} ${t}${v.value} ${t}${v.value}${y.value}`}function P(e){let t=`q-slider__`+e;return`${t} ${t}${v.value}`}let de=g(()=>{let e=i.selectionColor||i.color;return`q-slider__selection absolute`+(e===void 0?``:` text-${e}`)}),fe=g(()=>P(`markers`)+` absolute overflow-hidden`),pe=g(()=>P(`track-container`)),me=g(()=>N(`pin`)),he=g(()=>N(`label`)),ge=g(()=>N(`text-container`)),_e=g(()=>N(`marker-labels-container`)+(i.markerLabelsClass===void 0?``:` ${i.markerLabelsClass}`)),ve=g(()=>`q-slider__track relative-position no-outline`+(i.trackColor===void 0?``:` bg-${i.trackColor}`)),ye=g(()=>{let e={[A.value]:i.trackSize};return i.trackImg!==void 0&&(e.backgroundImage=`url(${i.trackImg}) !important`),e}),be=g(()=>`q-slider__inner absolute`+(i.innerTrackColor===void 0?``:` bg-${i.innerTrackColor}`)),I=g(()=>{let e=oe.value-ae.value,t={[se.value]:`${100*ae.value}%`,[ce.value]:e===0?`2px`:`${100*e}%`};return i.innerTrackImg!==void 0&&(t.backgroundImage=`url(${i.innerTrackImg}) !important`),t});function L(e){let{min:t,max:n,step:r}=i,a=t+e*(n-t);if(r>0){let e=(a-x.value)%r;a+=(Math.abs(e)>=r/2?(e<0?-1:1)*r:0)-e}return a=E.value(a),F(a,x.value,C.value)}function Se(e){return re.value===0?0:(e-i.min)/re.value}function Ce(e,t){let n=te(e),r=i.vertical===!0?F((n.top-t.top)/t.height,0,1):F((n.left-t.left)/t.width,0,1);return F(b.value===!0?1-r:r,ae.value,oe.value)}let we=g(()=>O(i.markers)===!0?i.markers:ne.value),Te=g(()=>{let e=[],t=we.value,n=i.max,r=i.min;do e.push(r),r+=t;while(r<n);return e.push(n),e}),Ee=g(()=>{let e=` ${z}${v.value}-`;return`q-slider__marker-labels${e}${i.switchMarkerLabelsSide===!0?`switched`:`standard`}${e}${b.value===!0?`rtl`:`ltr`}`}),De=g(()=>i.markerLabels===!1?null:ke(i.markerLabels).map((e,t)=>({index:t,value:e.value,label:e.label||e.value,classes:Ee.value+(e.classes===void 0?``:` `+e.classes),style:{...Ae(e.value),...e.style||{}}}))),Oe=g(()=>({markerList:De.value,markerMap:U.value,classes:Ee.value,getStyle:Ae})),R=g(()=>{let e=ie.value===0?`2px`:100*we.value/ie.value;return{...I.value,backgroundSize:i.vertical===!0?`2px ${e}%`:`${e}% 2px`}});function ke(e){if(e===!1)return null;if(e===!0)return Te.value.map(B);if(typeof e==`function`)return Te.value.map(t=>{let n=e(t);return k(n)===!0?{...n,value:t}:{value:t,label:n}});let t=({value:e})=>e>=i.min&&e<=i.max;return Array.isArray(e)===!0?e.map(e=>k(e)===!0?e:{value:e}).filter(t):Object.keys(e).map(t=>{let n=e[t],r=Number(t);return k(n)===!0?{...n,value:r}:{value:r,label:n}}).filter(t)}function Ae(e){return{[se.value]:`${100*(e-i.min)/re.value}%`}}let U=g(()=>{if(i.markerLabels===!1)return null;let e={};return De.value.forEach(t=>{e[t.value]=t}),e});function W(){if(c[`marker-label-group`]!==void 0)return c[`marker-label-group`](Oe.value);let e=c[`marker-label`]||V;return De.value.map(t=>e({marker:t,...Oe.value}))}let je=g(()=>[[xe,Me,void 0,{[le.value]:!0,prevent:!0,stop:!0,mouse:!0,mouseAllDir:!0}]]);function Me(r){r.isFinal===!0?(_.value!==void 0&&(t(r.evt),r.touch===!0&&e(!0),_.value=void 0,s(`pan`,`end`)),f.value=!1,m.value=!1):r.isFirst===!0?(_.value=n(r.evt),t(r.evt),e(),f.value=!0,s(`pan`,`start`)):(t(r.evt),e())}function Ne(){m.value=!1}function Pe(r){t(r,n(r)),e(),p.value=!0,f.value=!0,document.addEventListener(`mouseup`,Fe,!0)}function Fe(){p.value=!1,f.value=!1,e(!0),Ne(),document.removeEventListener(`mouseup`,Fe,!0)}function Ie(r){t(r,n(r)),e(!0)}function Le(t){H.includes(t.keyCode)&&e(!0)}function Re(e){if(i.vertical===!0)return null;let t=l.lang.rtl===i.reverse?e:1-e;return{transform:`translateX(calc(${2*t-1} * ${i.thumbSize} / 2 + ${50-100*t}%))`}}function ze(e){let t=g(()=>p.value===!1&&(m.value===e.focusValue||m.value===`both`)?` q-slider--focus`:``),n=g(()=>`q-slider__thumb q-slider__thumb${v.value} q-slider__thumb${v.value}-${b.value===!0?`rtl`:`ltr`} absolute non-selectable`+t.value+(e.thumbColor.value===void 0?``:` text-${e.thumbColor.value}`)),r=g(()=>({width:i.thumbSize,height:i.thumbSize,[se.value]:`${100*e.ratio.value}%`,zIndex:m.value===e.focusValue?2:void 0})),a=g(()=>e.labelColor.value===void 0?``:` text-${e.labelColor.value}`),s=g(()=>Re(e.ratio.value)),c=g(()=>`q-slider__text`+(e.labelTextColor.value===void 0?``:` text-${e.labelTextColor.value}`));return()=>{let t=[o(`svg`,{class:`q-slider__thumb-shape absolute-full`,viewBox:`0 0 20 20`,"aria-hidden":`true`},[o(`path`,{d:i.thumbPath})]),o(`div`,{class:`q-slider__focus-ring fit`})];return(i.label===!0||i.labelAlways===!0)&&(t.push(o(`div`,{class:me.value+` absolute fit no-pointer-events`+a.value},[o(`div`,{class:he.value,style:{minWidth:i.thumbSize}},[o(`div`,{class:ge.value,style:s.value},[o(`span`,{class:c.value},e.label.value)])])])),i.name!==void 0&&i.disable!==!0&&d(t,`push`)),o(`div`,{class:n.value,style:r.value,...e.getNodeData()},t)}}function Be(e,t,n,r){let a=[];i.innerTrackColor!==`transparent`&&a.push(o(`div`,{key:`inner`,class:be.value,style:I.value})),i.selectionColor!==`transparent`&&a.push(o(`div`,{key:`selection`,class:de.value,style:e.value})),i.markers!==!1&&a.push(o(`div`,{key:`marker`,class:fe.value,style:R.value})),r(a);let s=[ee(`div`,{key:`trackC`,class:pe.value,tabindex:t.value,...n.value},[o(`div`,{class:ve.value,style:ye.value},a)],`slide`,w.value,()=>je.value)];return i.markerLabels!==!1&&s[i.switchMarkerLabelsSide===!0?`unshift`:`push`](o(`div`,{key:`markerL`,class:_e.value},W())),s}return h(()=>{document.removeEventListener(`mouseup`,Fe,!0)}),{state:{active:f,focus:m,preventFocus:p,dragging:_,editable:w,classes:M,tabindex:D,attributes:j,roundValueFn:E,keyStep:ne,trackLen:re,innerMin:x,innerMinRatio:ae,innerMax:C,innerMaxRatio:oe,positionProp:se,sizeProp:ce,isReversed:b},methods:{onActivate:Pe,onMobileClick:Ie,onBlur:Ne,onKeyup:Le,getContent:Be,getThumbRenderFn:ze,convertRatioToModel:L,convertModelToRatio:Se,getDraggingRatio:Ce}}}var Me=()=>({}),Ne=w({name:`QSlider`,props:{...U,modelValue:{required:!0,default:null,validator:e=>typeof e==`number`||e===null},labelValue:[String,Number]},emits:W,setup(e,{emit:n}){let{proxy:{$q:r}}=S(),{state:i,methods:s}=je({updateValue:v,updatePosition:b,getDragging:y,formAttrs:M(e)}),c=a(null),l=a(0),u=a(0);function d(){u.value=e.modelValue===null?i.innerMin.value:F(e.modelValue,i.innerMin.value,i.innerMax.value)}t(()=>`${e.modelValue}|${i.innerMin.value}|${i.innerMax.value}`,d),d();let f=g(()=>s.convertModelToRatio(u.value)),p=g(()=>i.active.value===!0?l.value:f.value),m=g(()=>{let t={[i.positionProp.value]:`${100*i.innerMinRatio.value}%`,[i.sizeProp.value]:`${100*(p.value-i.innerMinRatio.value)}%`};return e.selectionImg!==void 0&&(t.backgroundImage=`url(${e.selectionImg}) !important`),t}),h=s.getThumbRenderFn({focusValue:!0,getNodeData:Me,ratio:p,label:g(()=>e.labelValue===void 0?u.value:e.labelValue),thumbColor:g(()=>e.thumbColor||e.color),labelColor:g(()=>e.labelColor),labelTextColor:g(()=>e.labelTextColor)}),_=g(()=>i.editable.value===!0?r.platform.is.mobile===!0?{onClick:s.onMobileClick}:{onMousedown:s.onActivate,onFocus:x,onBlur:s.onBlur,onKeydown:w,onKeyup:s.onKeyup}:{});function v(t){u.value!==e.modelValue&&n(`update:modelValue`,u.value),t===!0&&n(`change`,u.value)}function y(){return c.value.getBoundingClientRect()}function b(t,n=i.dragging.value){let r=s.getDraggingRatio(t,n);u.value=s.convertRatioToModel(r),l.value=e.snap!==!0||e.step===0?r:s.convertModelToRatio(u.value)}function x(){i.focus.value=!0}function w(t){if(H.includes(t.keyCode)===!1)return;C(t);let n=([34,33].includes(t.keyCode)?10:1)*i.keyStep.value,r=([34,37,40].includes(t.keyCode)?-1:1)*(i.isReversed.value===!0?-1:1)*(e.vertical===!0?-1:1)*n;u.value=F(i.roundValueFn.value(u.value+r),i.innerMin.value,i.innerMax.value),v()}return()=>{let t=s.getContent(m,i.tabindex,_,e=>{e.push(h())});return o(`div`,{ref:c,class:i.classes.value+(e.modelValue===null?` q-slider--no-value`:``),...i.attributes.value,"aria-valuenow":e.modelValue},t)}}}),Pe={class:`settings-inner`},Fe={class:`settings-header row items-center q-mb-lg`},Ie={class:`text-h5 text-weight-medium text-grey-3`},Le={class:`settings-card rounded-borders q-pa-lg`},Re={class:`text-subtitle1 text-weight-medium q-mb-md text-grey-3`},ze={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},Be={class:`text-subtitle2 q-mb-sm`},Ve={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},He={class:`text-subtitle2 q-mb-sm`},Ue={class:`text-subtitle2 q-mb-sm q-mt-md`},We={class:`text-caption text-grey-7 q-mb-sm`},Ge={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},Ke={class:`text-subtitle2 q-mb-sm`},qe={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},Je={class:`text-subtitle2 q-mb-sm`},Ye={class:`column q-gutter-xs`},Xe={class:`row items-center q-gutter-sm q-mt-sm`},Ze={class:`row items-center q-gutter-sm q-mt-sm`},Qe={class:`text-grey-5 text-caption`,style:{"min-width":`80px`}},$e={class:`text-grey-5 text-caption`,style:{"min-width":`40px`,"text-align":`right`}},et={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},tt={class:`text-subtitle2 q-mb-sm`},nt={class:`column q-gutter-sm`},rt={class:`row items-center q-gutter-sm`},it={class:`text-caption text-grey-5`},at={class:`text-caption text-grey-5`,style:{"min-width":`40px`,"text-align":`right`}},ot={class:`text-caption text-grey-7 q-mt-xs q-mb-sm`},st={class:`text-caption text-grey-7 q-mt-xs q-mb-sm`},ct={class:`text-caption text-grey-7 q-mt-xs q-mb-sm`},lt={class:`text-caption text-grey-7 q-mt-xs q-mb-sm`},ut={class:`row q-gutter-sm items-center`},dt={class:`row items-center q-mt-sm`},ft={class:`row items-center q-mt-xs`},pt={class:`q-pa-sm text-caption text-grey-5`},mt={class:`q-mb-sm`},ht={class:`q-mb-sm`},gt={href:`https://github.com/ggml-org/whisper.cpp`,target:`_blank`,rel:`noopener noreferrer`,class:`text-indigo-4`},_t={class:`q-mb-xs text-grey-4`},vt={class:`q-mb-sm`},yt={class:`q-mb-xs text-grey-4`},bt={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},xt={class:`row items-center q-mb-sm`},St={class:`text-subtitle2`},Ct={class:`text-caption text-grey-7 q-mb-sm`},wt={class:`q-mb-sm`},Tt={class:`row items-center q-mb-sm q-mt-md`},Et={class:`text-subtitle2`},Dt={class:`text-caption text-grey-7 q-mb-sm`},Ot={class:`row items-center q-mb-sm q-mt-md`},kt={class:`text-subtitle2`},At={class:`text-caption text-grey-7 q-mb-sm`},jt={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},Mt={class:`text-subtitle2 q-mb-sm`},Nt={class:`text-caption text-grey-7 q-mb-sm`},Pt={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},Ft={class:`text-subtitle2 q-mb-sm`},It={class:`text-caption text-grey-7 q-mb-sm`},Lt={class:`q-mb-sm`},Rt={class:`field-label-sub text-caption q-mb-xs text-grey-7`},zt={class:`q-mb-sm`},Bt={class:`field-label-sub text-caption q-mb-xs text-grey-7`},Vt={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},Ht={class:`text-subtitle2 q-mb-sm`},Ut={class:`text-caption text-grey-7 q-mb-sm`},Wt={class:`q-mb-sm`},Gt={class:`field-label-sub text-caption q-mb-xs text-grey-7`},Kt={class:`q-mb-sm`},qt={class:`field-label-sub text-caption q-mb-xs text-grey-7`},Jt={class:`row items-center q-mb-sm`},Yt={class:`text-subtitle2`},Xt={class:`text-caption text-grey-7 q-mb-xs`},Zt={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},Qt={class:`text-subtitle2 q-mb-sm`},$t={class:`row items-center q-mb-sm`},en={class:`text-subtitle2`},tn={class:`text-caption text-grey-7 q-mb-xs`},nn={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},rn={class:`text-subtitle2 q-mb-sm`},an={class:`text-caption text-grey-7 q-mb-sm`},on={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},sn={class:`text-subtitle2 q-mb-sm`},cn={class:`text-caption text-grey-7 q-mb-sm`},ln={class:`text-caption text-grey-7 q-mt-xs`},un={class:`settings-card q-pa-md rounded-borders q-pb-sm q-mb-sm`},dn={class:`text-subtitle2 q-mb-sm`},fn={class:`text-caption text-grey-7 q-mb-sm`},pn={class:`row q-gutter-sm`},mn={class:`row justify-end settings-sticky-actions`},hn={class:`row q-gutter-md`,style:{"min-height":`500px`}},gn={class:`project-list-col`},_n={class:`settings-card rounded-borders`,style:{height:`100%`}},vn={class:`q-pa-sm`},yn={class:`text-caption text-uppercase text-weight-bold q-px-sm q-py-xs text-grey-6`,style:{"letter-spacing":`0.05em`}},bn={key:0,class:`q-pa-md text-center text-caption text-grey-8`},xn={class:`q-pa-sm`},Sn={class:`project-form-col`},Cn={class:`settings-card rounded-borders q-pa-lg`,style:{height:`100%`}},wn={class:`text-subtitle1 text-weight-medium q-mb-md text-grey-3`},Tn={key:0,class:`q-mb-md`},En={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Dn={class:`text-caption text-grey-7 q-mt-xs`},On={class:`q-mb-md`},kn={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},An={class:`q-mb-md`},jn={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Mn={class:`q-mb-md`},Nn={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Pn={class:`q-mb-md`},Fn={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},In={class:`q-mb-md`},Ln={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Rn={class:`q-mb-md`},zn={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Bn={class:`q-mb-md`},Vn={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Hn={class:`text-caption text-grey-7 q-mb-xs`},Un={class:`q-mb-md`},Wn={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Gn={class:`text-caption text-grey-7 q-mb-xs`},Kn={class:`q-mb-md`},qn={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Jn={class:`text-caption text-grey-7 q-mt-xs`},Yn={class:`q-mb-lg`},Xn={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},Zn={class:`text-caption text-grey-7 q-mt-xs`},Qn={class:`q-mb-lg`},$n={class:`field-label text-body2 text-weight-medium q-mb-sm text-grey-6`},er={class:`q-mb-md`},tr={class:`field-label-sub text-caption q-mb-xs text-grey-7`},nr={class:`field-label-sub text-caption q-mb-xs text-grey-7`},rr={class:`q-mb-lg`},ir={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},ar={class:`text-caption text-grey-7 q-mb-sm`},or={class:`q-mb-lg`},sr={class:`field-label text-body2 text-weight-medium q-mb-xs text-grey-6`},cr={class:`text-caption text-grey-7 q-mb-sm`},lr={class:`row items-center q-gutter-sm settings-sticky-actions`},ur={key:1,class:`column items-center justify-center`,style:{height:`100%`,"min-height":`300px`}},dr={class:`text-body2 text-grey-8`},fr={class:`settings-card rounded-borders q-pa-lg`},pr={class:`row items-center justify-between q-mb-md`},mr={class:`text-subtitle1 text-weight-medium text-grey-3`},hr={key:0,class:`text-grey-6 q-py-lg text-center`},gr={key:1,class:`column q-gutter-sm`},_r={class:`row items-start justify-between no-wrap`},vr={class:`col`},yr={class:`text-body1 text-weight-medium`,style:{"font-family":`'Roboto Mono', monospace`}},br={class:`text-caption text-grey-5 q-mt-xs`},xr={class:`row no-wrap q-gutter-xs`},Sr={class:`text-caption text-grey-7 q-mt-lg`,style:{"font-family":`'Roboto Mono', monospace`}},Cr={class:`text-subtitle1`},wr={class:`q-pl-md q-pt-xs`,style:{"font-size":`11px`,"font-family":`'Roboto Mono', monospace`,columns:`2`,"column-gap":`24px`}},Tr={key:0,class:`text-negative text-caption`},Er=I(x({__name:`SettingsPage`,setup(o){let h=we(),x=ce(),S=pe(),{t:C,locale:w}=le(),ee=a(`global`),te=a(`auto`),T=a(``),E=a(``),O=a(``),k=a(``),ue=a(!0),j=a(!0),M=a(ae),F=a(1),xe=a(``),I=a(``),z=a(``),B=a(``),V=a(null),H=a(`bypass`),U=a(``),W=a(``),je=a([]),Me=a(ie),Er=a(null),Dr=a(!0),Or=a(!1),kr=a(`alt`),Ar=a(`auto`),G=a(null),jr=a(``),Mr=a(``),Nr=a(0),Pr=a(``),Fr=a(!1),Ir=a(!0),Lr=a(null),Rr=a(!1);function zr(e){return!e||e===`tiny`||e===`base`?.1:.2}let Br=[e=>e.trim().length>0||C(`settings.worktreesPathRequired`)],Vr=a(!1),K=a(-1),q=a(!1),J=a({path:``,displayName:``,defaultSourceBranch:``,defaultModel:``,prPromptTemplate:``,reviewPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}}),Hr=[`defaultModel`,`prPromptTemplate`,`reviewPromptTemplate`,`notionInitialPromptTemplate`,`sentryInitialPromptTemplate`,`gitConventions`,`setupScript`,`devServer`,`e2e`,`finalization`],Y=a(null),X=a(null),Ur=g(()=>x.projects.map(e=>({value:e.path,label:Ri(e)||e.path})));function Wr(e){let t=x.projects.find(t=>t.path===e);t&&(J.value.defaultModel=t.defaultModel??``,J.value.prPromptTemplate=t.prPromptTemplate??``,J.value.reviewPromptTemplate=t.reviewPromptTemplate??``,J.value.notionInitialPromptTemplate=t.notionInitialPromptTemplate??``,J.value.sentryInitialPromptTemplate=t.sentryInitialPromptTemplate??``,J.value.gitConventions=t.gitConventions??``,J.value.setupScript=t.setupScript??``,J.value.devServer={startCommand:t.devServer?.startCommand??``,stopCommand:t.devServer?.stopCommand??``},J.value.e2e={framework:t.e2e?.framework??``,skill:t.e2e?.skill??``,prompt:t.e2e?.prompt??``},J.value.finalization={prompt:t.finalization?.prompt??``})}function Gr(){let e={defaultModel:``,prPromptTemplate:``,reviewPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}};return Hr.every(t=>JSON.stringify(J.value[t])===JSON.stringify(e[t]))}function Kr(e){if(e===null){Y.value=null,X.value=null;return}if(X.value===null&&Gr()){Wr(e),Y.value=e,X.value=e;return}let t=x.projects.find(t=>t.path===e),n=t&&Ri(t)||e;h.dialog({title:C(`settings.copyFromConfirmTitle`),message:C(`settings.copyFromConfirm`,{project:n}),cancel:!0,persistent:!0,dark:!0}).onOk(()=>{Wr(e),Y.value=e,X.value=e}).onCancel(()=>{Y.value=X.value})}let qr=a([]),Jr=a([]);async function Yr(){try{let e=await fetch(`/api/skills`);e.ok&&(qr.value=await e.json())}catch{}}function Xr(e,t){t(()=>{let t=e.trim().toLowerCase();Jr.value=t?qr.value.filter(e=>e.toLowerCase().includes(t)):qr.value.slice()})}let Zr=a([]),Qr=a(!1),$r=a(!1),ei=a(!1),ti=a(!1),Z=a(null),ni=a(``),ri=a(``),Q=a(``),$=a(``),ii=a(!1),ai=g(()=>[...S.templates].sort((e,t)=>e.slug.localeCompare(t.slug))),oi=[`{workspace_name}`,`{working_branch}`,`{source_branch}`,`{project_path}`,`{worktree_path}`,`{commit_count}`,`{unpushed_count}`,`{files_changed}`,`{insertions}`,`{deletions}`,`{pr_number}`,`{pr_url}`,`{pr_state}`,`{session_name}`];function si(){Z.value=null,ni.value=``,ri.value=``,Q.value=``,$.value=``,ti.value=!0}function ci(e){Z.value=e.slug,ni.value=e.slug,ri.value=e.description,Q.value=e.content,$.value=``,ti.value=!0}async function li(){$.value=``;let e=ni.value.trim(),t=ri.value.trim();if(Z.value===null&&!/^[a-z0-9][a-z0-9-]{0,63}$/.test(e)){$.value=C(`templates.slugInvalid`);return}if(!t){$.value=C(`templates.descriptionRequired`);return}if(!Q.value.trim()){$.value=C(`templates.contentRequired`);return}ii.value=!0;try{Z.value===null?await S.createTemplate({slug:e,description:t,content:Q.value}):await S.updateTemplate(Z.value,{description:t,content:Q.value}),ti.value=!1}catch(e){$.value=e instanceof Error?e.message:C(`templates.createFailed`)}finally{ii.value=!1}}async function ui(e){h.dialog({title:C(`templates.deleteTemplate`),message:`${C(`templates.deleteConfirm`,{slug:e.slug})}\n\n${C(`templates.deleteConfirmMessage`)}`,dark:!0,cancel:{flat:!0,label:C(`common.cancel`),color:`grey-5`},ok:{flat:!0,label:C(`templates.deleteTemplate`),color:`red-5`}}).onOk(async()=>{try{await S.deleteTemplate(e.slug)}catch(e){h.notify({type:`negative`,message:e instanceof Error?e.message:C(`templates.deleteFailed`),position:`top`})}})}let di=[{label:`English`,value:`en`},{label:`Français`,value:`fr`},{label:`Deutsch`,value:`de`},{label:`Español`,value:`es`},{label:`Italiano`,value:`it`}];function fi(e){w.value=e,localStorage.setItem(`kobo:locale`,e)}let pi=g(()=>[...ke.map(e=>({label:C(e.i18nLabelKey),value:e.value}))]),mi=g(()=>[{label:C(`settings.useGlobal`),value:``},...pi.value]),hi=g(()=>[{name:`{{pr_number}}`,description:C(`settings.var.prNumber`)},{name:`{{pr_url}}`,description:C(`settings.var.prUrl`)},{name:`{{branch_name}}`,description:C(`settings.var.branchName`)},{name:`{{source_branch}}`,description:C(`settings.var.sourceBranch`)},{name:`{{workspace_name}}`,description:C(`settings.var.workspaceName`)},{name:`{{project_name}}`,description:C(`settings.var.projectName`)},{name:`{{notion_url}}`,description:C(`settings.var.notionUrl`)},{name:`{{commits}}`,description:C(`settings.var.commits`)},{name:`{{diff_stats}}`,description:C(`settings.var.diffStats`)},{name:`{{tasks}}`,description:C(`settings.var.tasks`)},{name:`{{acceptance_criteria}}`,description:C(`settings.var.acceptanceCriteria`)}]),gi=g(()=>[{label:C(`settings.mcpAutoSelect`),value:``},...x.activeMcpServers.map(e=>({label:e.key,value:e.key}))]),_i=g(()=>re.map(e=>({label:C(e.labelKey),value:e.id}))),vi=g(()=>[{label:C(`voice.noneModel`),value:null}].concat(x.voiceModels.map(e=>({label:e.installed?`${e.name}`:`${e.name} (${C(`voice.notInstalled`)})`,value:e.name})))),yi=[{label:`auto`,value:`auto`},{label:`ar`,value:`ar`},{label:`de`,value:`de`},{label:`en`,value:`en`},{label:`es`,value:`es`},{label:`fr`,value:`fr`},{label:`hi`,value:`hi`},{label:`it`,value:`it`},{label:`ja`,value:`ja`},{label:`ko`,value:`ko`},{label:`nl`,value:`nl`},{label:`pl`,value:`pl`},{label:`pt`,value:`pt`},{label:`ru`,value:`ru`},{label:`tr`,value:`tr`},{label:`uk`,value:`uk`},{label:`vi`,value:`vi`},{label:`zh`,value:`zh`}];function bi(){oe(M.value,F.value)}let xi=g(()=>K.value<0||K.value>=x.projects.length?null:x.projects[K.value]??null);function Si(){Rr.value=!0,te.value=x.global.defaultModel,T.value=x.global.prPromptTemplate,E.value=x.global.reviewPromptTemplate??``,O.value=x.global.gitConventions,k.value=x.global.editorCommand??``,ue.value=x.global.browserNotifications??!0,j.value=x.global.audioNotifications??!0,M.value=se(x.global.audioNotificationSound);let e=x.global.audioNotificationVolume;F.value=typeof e==`number`&&Number.isFinite(e)?Math.max(0,Math.min(1,e)):1,xe.value=x.global.notionStatusProperty??``,I.value=x.global.notionInProgressStatus??``,z.value=x.global.notionInitialPromptTemplate??``,B.value=x.global.sentryInitialPromptTemplate??``;{let e=x.global.defaultPermissionMode;H.value=e===`plan`||e===`bypass`||e===`strict`||e===`interactive`?e:`bypass`}U.value=x.global.notionMcpKey??``,W.value=x.global.sentryMcpKey??``,je.value=Array.isArray(x.global.tags)?[...x.global.tags]:[],Me.value=x.global.worktreesPath??`.worktrees`,Dr.value=x.global.worktreesPrefixByProject??!1,Or.value=x.global.voiceEnabled??!1,kr.value=x.global.voicePttKey===`ctrl+space`?`ctrl+space`:`alt`,Ar.value=x.global.voiceLanguage??`auto`,G.value=x.global.voiceModel??null,jr.value=x.global.voiceCommandPath??``,Mr.value=x.global.voiceFfmpegPath??``,Nr.value=typeof x.global.voiceTemperature==`number`?x.global.voiceTemperature:0,Pr.value=x.global.voicePrompt??``,Fr.value=x.global.voiceTranslateToEnglish??!1,Ir.value=x.global.voiceSuppressNonSpeechTokens??!0,Rr.value=!1}t(()=>G.value,(e,t)=>{Rr.value||e!==t&&(Nr.value=zr(e))});function Ci(e){if(!e){J.value={path:``,displayName:``,defaultSourceBranch:``,defaultModel:``,prPromptTemplate:``,reviewPromptTemplate:``,notionInitialPromptTemplate:``,sentryInitialPromptTemplate:``,gitConventions:``,setupScript:``,devServer:{startCommand:``,stopCommand:``},e2e:{framework:``,skill:``,prompt:``},finalization:{prompt:``}},Zr.value=[];return}J.value={path:e.path,displayName:e.displayName,defaultSourceBranch:e.defaultSourceBranch,defaultModel:e.defaultModel,prPromptTemplate:e.prPromptTemplate,reviewPromptTemplate:e.reviewPromptTemplate??``,notionInitialPromptTemplate:e.notionInitialPromptTemplate??``,sentryInitialPromptTemplate:e.sentryInitialPromptTemplate??``,gitConventions:e.gitConventions??``,setupScript:e.setupScript??``,devServer:{startCommand:e.devServer?.startCommand??``,stopCommand:e.devServer?.stopCommand??``},e2e:{framework:e.e2e?.framework??``,skill:e.e2e?.skill??``,prompt:e.e2e?.prompt??``},finalization:{prompt:e.finalization?.prompt??``}},e.path&&wi(e.path)}async function wi(e){if(!e.trim()){Zr.value=[];return}Qr.value=!0;try{let t=await fetch(`/api/git/branches?path=${encodeURIComponent(e.trim())}`);if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();Zr.value=n.local??n.branches??[]}catch{Zr.value=[]}finally{Qr.value=!1}}let Ti=null;t(()=>J.value.path,e=>{Ti&&clearTimeout(Ti),Ti=setTimeout(()=>{wi(e)},500)}),t(K,()=>{q.value=!1,Ci(xi.value)});let Ei=a(null);async function Di(){try{let e=await fetch(`/api/settings/export`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json(),n=new Blob([JSON.stringify(t,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`kobo-config-${new Date().toISOString().replace(/[:.]/g,`-`)}.json`,i.click(),URL.revokeObjectURL(r),h.notify({type:`positive`,message:C(`settings.exportSuccess`),position:`top`,timeout:3e3})}catch(e){h.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}}function Oi(){Ei.value?.click()}async function ki(e){let t=e.target,n=t.files?.[0];if(n)try{h.dialog({title:C(`settings.importConfirmTitle`),message:C(`settings.importConfirmMessage`),cancel:!0,persistent:!0,dark:!0}).onOk(async()=>{try{let e=await n.text(),t=JSON.parse(e),r=await fetch(`/api/settings/import`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)});if(!r.ok){let e=await r.json().catch(()=>({}));throw Error(e.error??`HTTP ${r.status}`)}await x.fetchSettings(),Si(),h.notify({type:`positive`,message:C(`settings.importSuccess`),position:`top`,timeout:3e3})}catch(e){h.notify({type:`negative`,message:String(e),position:`top`,timeout:5e3})}})}finally{t.value=``}}async function Ai(e){if(V.value===null){V.value=e;try{let t=await x.fetchGlobalDefaults(),n={prPromptTemplate:T,reviewPromptTemplate:E,gitConventions:O,notionInitialPromptTemplate:z,sentryInitialPromptTemplate:B};n[e].value=t[e]}catch(e){console.error(`[SettingsPage] resetFieldToDefault failed:`,e),h.notify({type:`negative`,message:C(`settings.resetFailed`),position:`top`})}finally{V.value=null}}}async function ji(){if(await Er.value?.validate()!==!1){Vr.value=!0;try{await x.updateGlobal({defaultModel:te.value,prPromptTemplate:T.value,reviewPromptTemplate:E.value,gitConventions:O.value,editorCommand:k.value,browserNotifications:ue.value,audioNotifications:j.value,audioNotificationSound:M.value,audioNotificationVolume:F.value,notionStatusProperty:xe.value,notionInProgressStatus:I.value,notionInitialPromptTemplate:z.value,sentryInitialPromptTemplate:B.value,defaultPermissionMode:H.value,notionMcpKey:U.value,sentryMcpKey:W.value,tags:je.value,worktreesPath:Me.value,worktreesPrefixByProject:Dr.value,voiceEnabled:Or.value,voicePttKey:kr.value,voiceLanguage:Ar.value,voiceModel:G.value,voiceCommandPath:jr.value.trim(),voiceFfmpegPath:Mr.value.trim(),voiceTemperature:Nr.value,voicePrompt:Pr.value,voiceTranslateToEnglish:Fr.value,voiceSuppressNonSpeechTokens:Ir.value}),h.notify({type:`positive`,message:C(`settings.saved`),position:`top`})}catch{h.notify({type:`negative`,message:C(`settings.saveError`),position:`top`})}finally{Vr.value=!1}}}async function Mi(e){Lr.value=e;try{await x.downloadVoiceModel(e)}catch{h.notify({type:`negative`,message:C(`voice.downloadFailed`),position:`top`})}finally{Lr.value=null}}async function Ni(e){Lr.value=e;try{await x.deleteVoiceModel(e),G.value===e&&(G.value=null)}catch{h.notify({type:`negative`,message:C(`voice.deleteFailed`),position:`top`})}finally{Lr.value=null}}async function Pi(){if(!J.value.path.trim()){h.notify({type:`negative`,message:C(`settings.projectPathRequired`),position:`top`});return}$r.value=!0;try{await x.upsertProject(J.value.path.trim(),{displayName:J.value.displayName,defaultSourceBranch:J.value.defaultSourceBranch,defaultModel:J.value.defaultModel,prPromptTemplate:J.value.prPromptTemplate,reviewPromptTemplate:J.value.reviewPromptTemplate,notionInitialPromptTemplate:J.value.notionInitialPromptTemplate,sentryInitialPromptTemplate:J.value.sentryInitialPromptTemplate,gitConventions:J.value.gitConventions,setupScript:J.value.setupScript,devServer:J.value.devServer,e2e:J.value.e2e,finalization:J.value.finalization}),q.value=!1;let e=x.projects.findIndex(e=>e.path===J.value.path.trim());e>=0&&(K.value=e),h.notify({type:`positive`,message:C(`settings.projectSaved`),position:`top`})}catch{h.notify({type:`negative`,message:C(`settings.projectSaveError`),position:`top`})}finally{$r.value=!1}}async function Fi(){if(xi.value){ei.value=!0;try{await x.deleteProject(xi.value.path),K.value=-1,q.value=!1,Ci(null),h.notify({type:`positive`,message:C(`settings.projectDeleted`),position:`top`})}catch{h.notify({type:`negative`,message:C(`settings.projectDeleteError`),position:`top`})}finally{ei.value=!1}}}function Ii(){K.value=-1,q.value=!0,Ci(null),Y.value=null,X.value=null}function Li(e){q.value=!1,K.value=e,Y.value=null,X.value=null}function Ri(e){if(e.displayName)return e.displayName;let t=e.path.split(`/`);return t[t.length-1]??e.path}let zi=a([]);function Bi(e,t){t(()=>{zi.value=e?Zr.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())):Zr.value})}return r(async()=>{await Promise.all([x.fetchSettings(),x.fetchActiveMcpServers(),Yr()]),await x.fetchVoiceModels(),await x.fetchVoiceRuntime(),Si()}),i(()=>{Ti&&clearTimeout(Ti)}),(t,r)=>(e(),d(Ae,{class:`settings-page`},{default:s(()=>[b(`div`,Pe,[b(`div`,Fe,[p(ne,{name:`settings`,size:`24px`,color:`indigo-4`,class:`q-mr-sm`}),b(`span`,Ie,u(t.$t(`settings.title`)),1)]),p(De,{modelValue:ee.value,"onUpdate:modelValue":r[0]||=e=>ee.value=e,dense:``,"active-color":`indigo-4`,"indicator-color":`indigo-4`,class:`settings-tabs q-mb-lg`,align:`left`,"narrow-indicator":``},{default:s(()=>[p(Te,{name:`global`,label:t.$t(`settings.global`)},null,8,[`label`]),p(Te,{name:`projects`,label:t.$t(`settings.projects`)},null,8,[`label`]),p(Te,{name:`templates`,label:t.$t(`templates.title`)},null,8,[`label`])]),_:1},8,[`modelValue`]),p(Oe,{modelValue:ee.value,"onUpdate:modelValue":r[53]||=e=>ee.value=e,animated:``,class:`settings-panels`},{default:s(()=>[p(Ee,{name:`global`,class:`q-pa-none`},{default:s(()=>[b(`div`,Le,[b(`div`,Re,u(t.$t(`settings.globalSettings`)),1),p(D,{dark:``,class:`q-mb-md`}),b(`div`,ze,[b(`div`,Be,u(t.$t(`settings.language`)),1),p(R,{"model-value":y(w),options:di,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input`,"onUpdate:modelValue":fi},null,8,[`model-value`])]),b(`div`,Ve,[b(`div`,He,u(t.$t(`settings.defaultModel`)),1),p(R,{modelValue:te.value,"onUpdate:modelValue":r[1]||=e=>te.value=e,options:pi.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-md`},null,8,[`modelValue`,`options`]),b(`div`,Ue,u(t.$t(`settings.defaultPermissionMode`)),1),b(`div`,We,u(t.$t(`settings.defaultPermissionModeHint`)),1),p(R,{modelValue:H.value,"onUpdate:modelValue":r[2]||=e=>H.value=e,options:[{label:t.$t(`agentPermissionMode.plan`),value:`plan`},{label:t.$t(`agentPermissionMode.bypass`),value:`bypass`},{label:t.$t(`agentPermissionMode.strict`),value:`strict`},{label:t.$t(`agentPermissionMode.interactive`),value:`interactive`}],"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`options`])]),b(`div`,Ge,[b(`div`,Ke,u(t.$t(`settings.activityFeed`)),1),p(P,{"model-value":y(x).showVerboseSystemMessages,label:t.$t(`settings.verboseMessages`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`,"onUpdate:modelValue":r[3]||=e=>y(x).toggleVerboseSystemMessages()},null,8,[`model-value`,`label`])]),b(`div`,qe,[b(`div`,Je,u(t.$t(`settings.notifications`)),1),b(`div`,Ye,[p(P,{modelValue:ue.value,"onUpdate:modelValue":r[4]||=e=>ue.value=e,label:t.$t(`settings.browserNotifications`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`]),p(P,{modelValue:j.value,"onUpdate:modelValue":r[5]||=e=>j.value=e,label:t.$t(`settings.audioNotifications`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`])]),b(`div`,Xe,[p(R,{modelValue:M.value,"onUpdate:modelValue":r[6]||=e=>M.value=e,options:_i.value,label:t.$t(`settings.notificationSound`),disable:!j.value,dark:``,dense:``,outlined:``,"emit-value":``,"map-options":``,color:`indigo-4`,class:`col`},null,8,[`modelValue`,`options`,`label`,`disable`]),p(A,{flat:``,dense:``,color:`indigo-4`,icon:`play_arrow`,label:t.$t(`settings.notificationSoundPreview`),disable:!j.value,onClick:bi},null,8,[`label`,`disable`])]),b(`div`,Ze,[b(`div`,Qe,u(t.$t(`settings.notificationVolume`)),1),p(Ne,{modelValue:F.value,"onUpdate:modelValue":r[7]||=e=>F.value=e,min:0,max:1,step:.05,disable:!j.value,dark:``,dense:``,color:`indigo-4`,class:`col`},null,8,[`modelValue`,`disable`]),b(`div`,$e,u(Math.round(F.value*100))+`% `,1)])]),b(`div`,et,[b(`div`,tt,u(t.$t(`voice.title`)),1),b(`div`,nt,[p(P,{modelValue:Or.value,"onUpdate:modelValue":r[8]||=e=>Or.value=e,label:t.$t(`voice.enabled`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`]),p(R,{modelValue:kr.value,"onUpdate:modelValue":r[9]||=e=>kr.value=e,label:t.$t(`voice.pttKey`),options:[{label:t.$t(`voice.pttAlt`),value:`alt`},{label:t.$t(`voice.pttCtrlSpace`),value:`ctrl+space`}],"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`label`,`options`]),p(R,{modelValue:Ar.value,"onUpdate:modelValue":r[10]||=e=>Ar.value=e,label:t.$t(`voice.language`),options:yi,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`label`]),p(R,{modelValue:G.value,"onUpdate:modelValue":r[11]||=e=>G.value=e,label:t.$t(`voice.model`),options:vi.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`label`,`options`]),p(N,{modelValue:jr.value,"onUpdate:modelValue":r[12]||=e=>jr.value=e,label:t.$t(`voice.commandPath`),dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`label`]),p(N,{modelValue:Mr.value,"onUpdate:modelValue":r[13]||=e=>Mr.value=e,label:t.$t(`voice.ffmpegPath`),dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`label`]),b(`div`,rt,[b(`div`,it,u(t.$t(`voice.temperature`)),1),p(Ne,{modelValue:Nr.value,"onUpdate:modelValue":r[14]||=e=>Nr.value=e,min:0,max:1,step:.05,dark:``,dense:``,color:`indigo-4`,class:`col`},null,8,[`modelValue`]),b(`div`,at,u(Nr.value.toFixed(2)),1)]),b(`div`,ot,u(t.$t(`voice.temperatureHint`)),1),p(N,{modelValue:Pr.value,"onUpdate:modelValue":r[15]||=e=>Pr.value=e,label:t.$t(`voice.initialPrompt`),type:`textarea`,dense:``,dark:``,outlined:``,rows:2,class:`settings-input`},null,8,[`modelValue`,`label`]),b(`div`,st,u(t.$t(`voice.initialPromptHint`)),1),p(P,{modelValue:Fr.value,"onUpdate:modelValue":r[16]||=e=>Fr.value=e,label:t.$t(`voice.translateToEnglish`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`]),b(`div`,ct,u(t.$t(`voice.translateToEnglishHint`)),1),p(P,{modelValue:Ir.value,"onUpdate:modelValue":r[17]||=e=>Ir.value=e,label:t.$t(`voice.suppressNst`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption`},null,8,[`modelValue`,`label`]),b(`div`,lt,u(t.$t(`voice.suppressNstHint`)),1),b(`div`,ut,[(e(!0),_(v,null,n(y(x).voiceModels,n=>(e(),d(A,{key:n.name,flat:``,dense:``,"no-caps":``,size:`sm`,color:n.installed?`red-5`:`indigo-4`,label:n.installed?`${t.$t(`voice.delete`)} ${n.name}`:`${t.$t(`voice.download`)} ${n.name}`,loading:Lr.value===n.name,onClick:e=>n.installed?Ni(n.name):Mi(n.name)},null,8,[`color`,`label`,`loading`,`onClick`]))),128))]),b(`div`,dt,[b(`span`,{class:l([`text-caption`,y(x).voiceRuntime?.available?`text-green-5`:`text-red-5`])},u(y(x).voiceRuntime?.available?y(C)(`voice.runtimeReady`,{command:y(x).voiceRuntime?.command??`whisper-cli`}):y(C)(`voice.runtimeMissing`,{command:y(x).voiceRuntime?.command??`whisper-cli`})),3),p(L),p(A,{flat:``,dense:``,size:`sm`,icon:`refresh`,color:`grey-5`,label:y(C)(`common.refresh`),onClick:r[18]||=e=>y(x).fetchVoiceRuntime()},null,8,[`label`])]),b(`div`,ft,[b(`span`,{class:l([`text-caption`,y(x).voiceRuntime?.ffmpegAvailable?`text-green-5`:`text-red-5`])},u(y(x).voiceRuntime?.ffmpegAvailable?y(C)(`voice.ffmpegReady`):y(C)(`voice.ffmpegMissing`)),3)]),p(be,{dense:``,dark:``,icon:`help_outline`,label:t.$t(`voice.installGuideTitle`),class:`variables-panel rounded-borders q-mt-sm`},{default:s(()=>[b(`div`,pt,[b(`div`,mt,u(t.$t(`voice.installGuideIntro`)),1),b(`div`,ht,[b(`a`,gt,u(t.$t(`voice.installLink`)),1)]),b(`div`,_t,u(t.$t(`voice.installGuideUbuntuTitle`)),1),r[58]||=b(`pre`,{class:`mono-guide q-mb-sm`},`sudo apt update
|
|
2
|
-
sudo apt install -y cmake build-essential ffmpeg
|
|
3
|
-
git clone https://github.com/ggml-org/whisper.cpp.git
|
|
4
|
-
cd whisper.cpp
|
|
5
|
-
cmake -B build
|
|
6
|
-
cmake --build build -j`,-1),b(`div`,vt,u(t.$t(`voice.installGuideBinaryPathHint`)),1),b(`div`,yt,u(t.$t(`voice.installGuideWindowsTitle`)),1),r[59]||=b(`pre`,{class:`mono-guide q-mb-sm`},`# Install CMake + Visual Studio Build Tools (C/C++)
|
|
7
|
-
# Install ffmpeg (choco/scoop)
|
|
8
|
-
where whisper-cli
|
|
9
|
-
where ffmpeg`,-1),b(`div`,null,u(t.$t(`voice.installGuideSettingsHint`)),1)])]),_:1},8,[`label`])])]),b(`div`,bt,[b(`div`,xt,[b(`div`,St,u(t.$t(`settings.prPromptTemplate`)),1),p(L),p(A,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`grey-5`,icon:`restart_alt`,label:y(C)(`settings.resetToDefault`),loading:V.value===`prPromptTemplate`,disable:V.value!==null&&V.value!==`prPromptTemplate`,onClick:r[19]||=e=>Ai(`prPromptTemplate`)},null,8,[`label`,`loading`,`disable`])]),b(`div`,Ct,u(t.$t(`settings.prPromptHint`)),1),p(N,{modelValue:T.value,"onUpdate:modelValue":r[20]||=e=>T.value=e,type:`textarea`,dense:``,dark:``,outlined:``,rows:8,placeholder:t.$t(`settings.prPromptPlaceholder`),class:`settings-input mono-textarea q-mb-md`},null,8,[`modelValue`,`placeholder`]),b(`div`,wt,[p(be,{dense:``,dark:``,icon:`code`,label:t.$t(`settings.availableVariables`),class:`variables-panel rounded-borders`},{default:s(()=>[p(Se,{dense:``,dark:``,class:`q-pa-sm`},{default:s(()=>[(e(!0),_(v,null,n(hi.value,t=>(e(),d(ge,{key:t.name,dense:``},{default:s(()=>[p(_e,null,{default:s(()=>[p(ve,{class:`text-caption`,style:{"font-family":`monospace`}},{default:s(()=>[m(u(t.name),1)]),_:2},1024),p(ve,{caption:``,class:`text-grey-7`},{default:s(()=>[m(u(t.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1},8,[`label`])]),b(`div`,Tt,[b(`div`,Et,u(t.$t(`settings.reviewPromptTemplate`)),1),p(L),p(A,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`grey-5`,icon:`restart_alt`,label:y(C)(`settings.resetToDefault`),loading:V.value===`reviewPromptTemplate`,disable:V.value!==null&&V.value!==`reviewPromptTemplate`,onClick:r[21]||=e=>Ai(`reviewPromptTemplate`)},null,8,[`label`,`loading`,`disable`])]),b(`div`,Dt,u(t.$t(`settings.prPromptHint`)),1),p(N,{modelValue:E.value,"onUpdate:modelValue":r[22]||=e=>E.value=e,type:`textarea`,dense:``,dark:``,outlined:``,rows:8,placeholder:t.$t(`settings.reviewPromptPlaceholder`),class:`settings-input mono-textarea q-mb-md`},null,8,[`modelValue`,`placeholder`]),b(`div`,Ot,[b(`div`,kt,u(t.$t(`settings.gitConventions`)),1),p(L),p(A,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`grey-5`,icon:`restart_alt`,label:y(C)(`settings.resetToDefault`),loading:V.value===`gitConventions`,disable:V.value!==null&&V.value!==`gitConventions`,onClick:r[23]||=e=>Ai(`gitConventions`)},null,8,[`label`,`loading`,`disable`])]),b(`div`,At,u(t.$t(`settings.gitConventionsHint`)),1),p(N,{modelValue:O.value,"onUpdate:modelValue":r[24]||=e=>O.value=e,type:`textarea`,dense:``,dark:``,outlined:``,rows:8,placeholder:t.$t(`settings.gitConventionsPlaceholder`),class:`settings-input mono-textarea`},null,8,[`modelValue`,`placeholder`])]),b(`div`,jt,[b(`div`,Mt,u(t.$t(`settings.editorCommand`)),1),b(`div`,Nt,u(t.$t(`settings.editorCommandHint`)),1),p(N,{modelValue:k.value,"onUpdate:modelValue":r[25]||=e=>k.value=e,dense:``,dark:``,outlined:``,placeholder:t.$t(`settings.editorCommandPlaceholder`),class:`settings-input`},null,8,[`modelValue`,`placeholder`])]),b(`div`,Pt,[b(`div`,Ft,u(t.$t(`settings.mcpSelection`)),1),b(`div`,It,u(t.$t(`settings.mcpSelectionHint`)),1),b(`div`,Lt,[b(`div`,Rt,u(t.$t(`settings.notionMcp`)),1),p(R,{modelValue:U.value,"onUpdate:modelValue":r[26]||=e=>U.value=e,options:gi.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`options`])]),b(`div`,zt,[b(`div`,Bt,u(t.$t(`settings.sentryMcp`)),1),p(R,{modelValue:W.value,"onUpdate:modelValue":r[27]||=e=>W.value=e,options:gi.value,"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`options`])])]),b(`div`,Vt,[b(`div`,Ht,u(t.$t(`settings.notionStatus`)),1),b(`div`,Ut,u(t.$t(`settings.notionStatusHint`)),1),b(`div`,Wt,[b(`div`,Gt,u(t.$t(`settings.notionStatusProperty`)),1),p(N,{modelValue:xe.value,"onUpdate:modelValue":r[28]||=e=>xe.value=e,dense:``,dark:``,outlined:``,placeholder:t.$t(`settings.notionStatusPropertyPlaceholder`),class:`settings-input`},null,8,[`modelValue`,`placeholder`])]),b(`div`,Kt,[b(`div`,qt,u(t.$t(`settings.notionInProgressStatus`)),1),p(N,{modelValue:I.value,"onUpdate:modelValue":r[29]||=e=>I.value=e,dense:``,dark:``,outlined:``,placeholder:t.$t(`settings.notionInProgressStatusPlaceholder`),class:`settings-input`},null,8,[`modelValue`,`placeholder`])]),b(`div`,Jt,[b(`div`,Yt,u(y(C)(`settings.notionInitialPrompt`)),1),p(L),p(A,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`grey-5`,icon:`restart_alt`,label:y(C)(`settings.resetToDefault`),loading:V.value===`notionInitialPromptTemplate`,disable:V.value!==null&&V.value!==`notionInitialPromptTemplate`,onClick:r[30]||=e=>Ai(`notionInitialPromptTemplate`)},null,8,[`label`,`loading`,`disable`])]),b(`div`,Xt,u(y(C)(`settings.notionInitialPrompt.help`,{variables:`{ticket_id}, {notion_url}, {notion_file_path}`})),1),p(N,{modelValue:z.value,"onUpdate:modelValue":r[31]||=e=>z.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`])]),b(`div`,Zt,[b(`div`,Qt,u(y(C)(`settings.sentryIntegration`)),1),b(`div`,$t,[b(`div`,en,u(y(C)(`settings.sentryInitialPrompt`)),1),p(L),p(A,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`grey-5`,icon:`restart_alt`,label:y(C)(`settings.resetToDefault`),loading:V.value===`sentryInitialPromptTemplate`,disable:V.value!==null&&V.value!==`sentryInitialPromptTemplate`,onClick:r[32]||=e=>Ai(`sentryInitialPromptTemplate`)},null,8,[`label`,`loading`,`disable`])]),b(`div`,tn,u(y(C)(`settings.sentryInitialPrompt.help`,{variables:`{issue_id}, {sentry_url}, {sentry_file_path}`})),1),p(N,{modelValue:B.value,"onUpdate:modelValue":r[33]||=e=>B.value=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`])]),b(`div`,nn,[b(`div`,rn,u(t.$t(`settings.tagsTitle`)),1),b(`div`,an,u(t.$t(`settings.tagsHint`)),1),p(R,{modelValue:je.value,"onUpdate:modelValue":r[34]||=e=>je.value=e,label:t.$t(`settings.tagsLabel`),dark:``,outlined:``,multiple:``,"use-input":``,"use-chips":``,"new-value-mode":`add-unique`,"hide-dropdown-icon":``,"input-debounce":`0`,class:`settings-input`},null,8,[`modelValue`,`label`])]),b(`div`,on,[b(`div`,sn,u(t.$t(`settings.worktreesTitle`)),1),b(`div`,cn,u(t.$t(`settings.worktreesHint`)),1),p(N,{ref_key:`globalWorktreesPathInput`,ref:Er,modelValue:Me.value,"onUpdate:modelValue":r[35]||=e=>Me.value=e,label:t.$t(`settings.worktreesPathLabel`),dense:``,dark:``,outlined:``,placeholder:y(ie),rules:Br,"lazy-rules":``,class:`settings-input`},null,8,[`modelValue`,`label`,`placeholder`]),p(P,{modelValue:Dr.value,"onUpdate:modelValue":r[36]||=e=>Dr.value=e,label:t.$t(`settings.worktreesPrefixByProject`),dark:``,dense:``,color:`indigo-4`,class:`text-grey-5 text-caption q-mt-sm`},null,8,[`modelValue`,`label`]),b(`div`,ln,u(t.$t(`settings.worktreesPrefixByProjectHint`)),1)]),b(`div`,un,[b(`div`,dn,u(t.$t(`settings.shareTitle`)),1),b(`div`,fn,u(t.$t(`settings.shareHint`)),1),b(`div`,pn,[p(A,{label:t.$t(`settings.exportConfig`),icon:`download`,"no-caps":``,outline:``,color:`grey-4`,onClick:Di},null,8,[`label`]),p(A,{label:t.$t(`settings.importConfig`),icon:`upload`,"no-caps":``,outline:``,color:`grey-4`,onClick:Oi},null,8,[`label`]),b(`input`,{ref_key:`importFileInput`,ref:Ei,type:`file`,accept:`application/json,.json`,style:{display:`none`},onChange:ki},null,544)])]),b(`div`,mn,[p(A,{label:t.$t(`common.save`),"no-caps":``,unelevated:``,size:`sm`,color:`primary`,loading:Vr.value,onClick:ji},null,8,[`label`,`loading`])])])]),_:1}),p(Ee,{name:`projects`,class:`q-pa-none`},{default:s(()=>[b(`div`,hn,[b(`div`,gn,[b(`div`,_n,[b(`div`,vn,[b(`div`,yn,u(t.$t(`settings.configuredProjects`)),1)]),p(D,{dark:``}),p(Se,{dark:``,dense:``,class:`q-py-xs`},{default:s(()=>[(e(!0),_(v,null,n(y(x).projects,(t,n)=>(e(),d(ge,{key:t.path,clickable:``,active:K.value===n&&!q.value,"active-class":`project-item--active`,class:`project-item q-mx-xs rounded-borders`,style:{"min-height":`40px`},onClick:e=>Li(n)},{default:s(()=>[p(_e,null,{default:s(()=>[p(ve,{class:`text-body2 text-grey-3`},{default:s(()=>[m(u(Ri(t)),1)]),_:2},1024),p(ve,{caption:``,class:`text-grey-7 ellipsis`,style:{"font-size":`11px`,"font-family":`monospace`}},{default:s(()=>[m(u(t.path),1)]),_:2},1024)]),_:2},1024)]),_:2},1032,[`active`,`onClick`]))),128))]),_:1}),y(x).projects.length===0&&!y(x).loading?(e(),_(`div`,bn,u(t.$t(`settings.noProjects`)),1)):f(``,!0),p(D,{dark:``}),b(`div`,xn,[p(A,{label:t.$t(`settings.addProject`),icon:`add`,"no-caps":``,flat:``,dense:``,class:`full-width`,color:`indigo-4`,onClick:Ii},null,8,[`label`])])])]),b(`div`,Sn,[b(`div`,Cn,[xi.value||q.value?(e(),_(v,{key:0},[b(`div`,wn,u(q.value?t.$t(`settings.newProject`):t.$t(`settings.editProject`)),1),p(D,{dark:``,class:`q-mb-md`}),q.value&&y(x).projects.length>0?(e(),_(`div`,Tn,[b(`div`,En,u(t.$t(`settings.copyFrom`)),1),p(R,{"model-value":Y.value,options:Ur.value,"option-value":`value`,"option-label":`label`,"emit-value":``,"map-options":``,clearable:``,dense:``,dark:``,outlined:``,placeholder:t.$t(`settings.copyFromPlaceholder`),class:`settings-input`,"onUpdate:modelValue":Kr},null,8,[`model-value`,`options`,`placeholder`]),b(`div`,Dn,u(t.$t(`settings.copyFromHint`)),1)])):f(``,!0),b(`div`,On,[b(`div`,kn,u(t.$t(`settings.projectPath`)),1),p(N,{modelValue:J.value.path,"onUpdate:modelValue":r[37]||=e=>J.value.path=e,dense:``,dark:``,outlined:``,readonly:!q.value,placeholder:t.$t(`settings.projectPathPlaceholder`),class:l([`settings-input`,{"readonly-input":!q.value}])},null,8,[`modelValue`,`readonly`,`placeholder`,`class`])]),b(`div`,An,[b(`div`,jn,u(t.$t(`settings.displayName`)),1),p(N,{modelValue:J.value.displayName,"onUpdate:modelValue":r[38]||=e=>J.value.displayName=e,dense:``,dark:``,outlined:``,placeholder:t.$t(`settings.displayNamePlaceholder`),class:`settings-input`},null,8,[`modelValue`,`placeholder`])]),b(`div`,Mn,[b(`div`,Nn,u(t.$t(`settings.defaultSourceBranch`)),1),p(R,{modelValue:J.value.defaultSourceBranch,"onUpdate:modelValue":r[39]||=e=>J.value.defaultSourceBranch=e,options:zi.value,dense:``,dark:``,outlined:``,"use-input":``,"emit-value":``,loading:Qr.value,class:`settings-input`,placeholder:`main`,onFilter:Bi},{"no-option":s(()=>[p(ge,null,{default:s(()=>[p(_e,{class:`text-grey-6 text-caption`},{default:s(()=>[m(u(J.value.path.trim()?t.$t(`createPage.noBranches`):t.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`loading`])]),b(`div`,Pn,[b(`div`,Fn,u(t.$t(`settings.defaultModel.project`)),1),p(R,{modelValue:J.value.defaultModel,"onUpdate:modelValue":r[40]||=e=>J.value.defaultModel=e,options:mi.value,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,dense:``,dark:``,outlined:``,class:`settings-input`},null,8,[`modelValue`,`options`])]),b(`div`,In,[b(`div`,Ln,u(t.$t(`settings.prPromptTemplate.project`)),1),p(N,{modelValue:J.value.prPromptTemplate,"onUpdate:modelValue":r[41]||=e=>J.value.prPromptTemplate=e,type:`textarea`,dense:``,dark:``,outlined:``,rows:4,placeholder:t.$t(`settings.prPromptPlaceholder.project`),class:`settings-input mono-textarea`},null,8,[`modelValue`,`placeholder`])]),b(`div`,Rn,[b(`div`,zn,u(t.$t(`settings.reviewPromptTemplate.project`)),1),p(N,{modelValue:J.value.reviewPromptTemplate,"onUpdate:modelValue":r[42]||=e=>J.value.reviewPromptTemplate=e,type:`textarea`,dense:``,dark:``,outlined:``,rows:4,placeholder:t.$t(`settings.reviewPromptPlaceholder`),class:`settings-input mono-textarea`},null,8,[`modelValue`,`placeholder`])]),b(`div`,Bn,[b(`div`,Vn,u(y(C)(`settings.notionInitialPrompt.project`)),1),b(`div`,Hn,u(y(C)(`settings.initialPrompt.inheritHint`)),1),p(N,{modelValue:J.value.notionInitialPromptTemplate,"onUpdate:modelValue":r[43]||=e=>J.value.notionInitialPromptTemplate=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`])]),b(`div`,Un,[b(`div`,Wn,u(y(C)(`settings.sentryInitialPrompt.project`)),1),b(`div`,Gn,u(y(C)(`settings.initialPrompt.inheritHint`)),1),p(N,{modelValue:J.value.sentryInitialPromptTemplate,"onUpdate:modelValue":r[44]||=e=>J.value.sentryInitialPromptTemplate=e,type:`textarea`,outlined:``,autogrow:``,class:`settings-input mono-textarea`},null,8,[`modelValue`])]),b(`div`,Kn,[b(`div`,qn,u(t.$t(`settings.gitConventions.project`)),1),p(N,{modelValue:J.value.gitConventions,"onUpdate:modelValue":r[45]||=e=>J.value.gitConventions=e,type:`textarea`,dense:``,dark:``,outlined:``,rows:6,placeholder:t.$t(`settings.gitConventionsEmpty`),class:`settings-input mono-textarea`},null,8,[`modelValue`,`placeholder`]),b(`div`,Jn,u(t.$t(`settings.gitConventionsEmpty`)),1)]),b(`div`,Yn,[b(`div`,Xn,u(t.$t(`settings.setupScript`)),1),p(N,{modelValue:J.value.setupScript,"onUpdate:modelValue":r[46]||=e=>J.value.setupScript=e,type:`textarea`,dense:``,dark:``,outlined:``,rows:5,placeholder:t.$t(`settings.setupScriptPlaceholder`),class:`settings-input mono-textarea`},null,8,[`modelValue`,`placeholder`]),b(`div`,Zn,u(t.$t(`settings.setupScriptHint`)),1)]),b(`div`,Qn,[b(`div`,$n,u(t.$t(`settings.devServer`)),1),b(`div`,er,[b(`div`,tr,u(t.$t(`settings.devServerStart`)),1),p(N,{modelValue:J.value.devServer.startCommand,"onUpdate:modelValue":r[47]||=e=>J.value.devServer.startCommand=e,type:`textarea`,dense:``,dark:``,outlined:``,rows:3,placeholder:t.$t(`settings.devServerStartPlaceholder`),class:`settings-input mono-textarea`},null,8,[`modelValue`,`placeholder`])]),b(`div`,null,[b(`div`,nr,u(t.$t(`settings.devServerStop`)),1),p(N,{modelValue:J.value.devServer.stopCommand,"onUpdate:modelValue":r[48]||=e=>J.value.devServer.stopCommand=e,type:`textarea`,dense:``,dark:``,outlined:``,rows:3,placeholder:t.$t(`settings.devServerStopPlaceholder`),class:`settings-input mono-textarea`},null,8,[`modelValue`,`placeholder`])])]),b(`div`,rr,[b(`div`,ir,u(t.$t(`settings.e2e.title`)),1),b(`div`,ar,u(t.$t(`settings.e2e.helpText`)),1),p(R,{modelValue:J.value.e2e.framework,"onUpdate:modelValue":r[49]||=e=>J.value.e2e.framework=e,options:[{label:t.$t(`settings.e2e.frameworkNone`),value:``},{label:`Cypress`,value:`cypress`},{label:`Playwright`,value:`playwright`},{label:`Jest`,value:`jest`},{label:`Vitest`,value:`vitest`},{label:t.$t(`settings.e2e.frameworkOther`),value:`other`}],"emit-value":``,"map-options":``,dense:``,dark:``,outlined:``,class:`settings-input q-mb-sm`,label:t.$t(`settings.e2e.framework`)},null,8,[`modelValue`,`options`,`label`]),J.value.e2e.framework?(e(),_(v,{key:0},[p(R,{modelValue:J.value.e2e.skill,"onUpdate:modelValue":r[50]||=e=>J.value.e2e.skill=e,options:Jr.value,"use-input":``,"fill-input":``,"hide-selected":``,"hide-dropdown-icon":``,"input-debounce":`200`,"new-value-mode":`add-unique`,dense:``,dark:``,outlined:``,class:`settings-input q-mb-sm`,label:t.$t(`settings.e2e.skill`),placeholder:t.$t(`settings.e2e.skillPlaceholder`),onFilter:Xr},null,8,[`modelValue`,`options`,`label`,`placeholder`]),p(N,{modelValue:J.value.e2e.prompt,"onUpdate:modelValue":r[51]||=e=>J.value.e2e.prompt=e,type:`textarea`,autogrow:``,dense:``,dark:``,outlined:``,class:`settings-input mono-textarea`,label:t.$t(`settings.e2e.prompt`),placeholder:t.$t(`settings.e2e.promptPlaceholder`)},null,8,[`modelValue`,`label`,`placeholder`])],64)):f(``,!0)]),b(`div`,or,[b(`div`,sr,u(t.$t(`settings.finalization.title`)),1),b(`div`,cr,u(t.$t(`settings.finalization.helpText`)),1),p(N,{modelValue:J.value.finalization.prompt,"onUpdate:modelValue":r[52]||=e=>J.value.finalization.prompt=e,type:`textarea`,autogrow:``,rows:`4`,dense:``,dark:``,outlined:``,class:`settings-input mono-textarea q-mb-sm`,label:t.$t(`settings.finalization.prompt`),placeholder:t.$t(`settings.finalization.promptPlaceholder`)},null,8,[`modelValue`,`label`,`placeholder`])]),b(`div`,lr,[q.value?f(``,!0):(e(),d(A,{key:0,label:t.$t(`common.delete`),"no-caps":``,flat:``,size:`sm`,color:`red-5`,loading:ei.value,onClick:Fi},null,8,[`label`,`loading`])),p(L),p(A,{label:t.$t(`common.save`),"no-caps":``,unelevated:``,size:`sm`,color:`primary`,loading:$r.value,onClick:Pi},null,8,[`label`,`loading`])])],64)):(e(),_(`div`,ur,[p(ne,{name:`folder_open`,size:`48px`,color:`grey-7`,class:`q-mb-md`}),b(`div`,dr,u(t.$t(`settings.selectProject`)),1)]))])])])]),_:1}),p(Ee,{name:`templates`,class:`q-pa-none`},{default:s(()=>[b(`div`,fr,[b(`div`,pr,[b(`div`,mr,u(t.$t(`templates.title`)),1),p(A,{color:`primary`,icon:`add`,label:t.$t(`templates.newTemplate`),dense:``,"no-caps":``,onClick:si},null,8,[`label`])]),p(D,{dark:``,class:`q-mb-md`}),ai.value.length===0?(e(),_(`div`,hr,u(t.$t(`templates.empty`)),1)):(e(),_(`div`,gr,[(e(!0),_(v,null,n(ai.value,n=>(e(),d(he,{key:n.slug,dark:``,flat:``,bordered:``,class:`q-pa-md template-card`},{default:s(()=>[b(`div`,_r,[b(`div`,vr,[b(`div`,yr,` /`+u(n.slug),1),b(`div`,br,u(n.description),1)]),b(`div`,xr,[p(A,{flat:``,dense:``,round:``,size:`sm`,icon:`edit`,color:`grey-5`,onClick:e=>ci(n)},{default:s(()=>[p(ye,null,{default:s(()=>[m(u(t.$t(`templates.editTemplate`)),1)]),_:1})]),_:1},8,[`onClick`]),p(A,{flat:``,dense:``,round:``,size:`sm`,icon:`delete`,color:`red-4`,onClick:e=>ui(n)},{default:s(()=>[p(ye,null,{default:s(()=>[m(u(t.$t(`templates.deleteTemplate`)),1)]),_:1})]),_:1},8,[`onClick`])])])]),_:2},1024))),128))])),b(`div`,Sr,u(t.$t(`templates.filePath`,{path:`~/.config/kobo/templates.json`})),1)])]),_:1})]),_:1},8,[`modelValue`])]),p(fe,{modelValue:ti.value,"onUpdate:modelValue":r[57]||=e=>ti.value=e,persistent:``},{default:s(()=>[p(he,{dark:``,style:{"min-width":`560px`,"max-width":`800px`,width:`80vw`}},{default:s(()=>[p(de,null,{default:s(()=>[b(`div`,Cr,u(Z.value===null?t.$t(`templates.newTemplate`):t.$t(`templates.editTemplate`)),1)]),_:1}),p(de,{class:`q-gutter-md`},{default:s(()=>[p(N,{modelValue:ni.value,"onUpdate:modelValue":r[54]||=e=>ni.value=e,label:t.$t(`templates.slug`),hint:t.$t(`templates.slugHint`),dark:``,dense:``,prefix:`/`,disable:Z.value!==null,rules:[e=>/^[a-z0-9][a-z0-9-]{0,63}$/.test(e)||t.$t(`templates.slugInvalid`)],"lazy-rules":``},null,8,[`modelValue`,`label`,`hint`,`disable`,`rules`]),p(N,{modelValue:ri.value,"onUpdate:modelValue":r[55]||=e=>ri.value=e,label:t.$t(`templates.description`),hint:t.$t(`templates.descriptionHint`),dark:``,dense:``,counter:``,maxlength:`120`,rules:[e=>e&&e.trim().length>0||``]},null,8,[`modelValue`,`label`,`hint`,`rules`]),p(N,{modelValue:Q.value,"onUpdate:modelValue":r[56]||=e=>Q.value=e,label:t.$t(`templates.content`),hint:t.$t(`templates.contentHint`),dark:``,dense:``,type:`textarea`,autogrow:``,counter:``,maxlength:`4096`,rules:[e=>e&&e.trim().length>0||``]},null,8,[`modelValue`,`label`,`hint`,`rules`]),p(be,{dense:``,"dense-toggle":``,label:t.$t(`templates.availableVars`),"header-class":`text-grey-6 text-caption q-pa-none`,style:{"font-size":`11px`}},{default:s(()=>[b(`div`,wr,[(e(),_(v,null,n(oi,e=>b(`div`,{key:e,class:`text-grey-5 q-mb-xs`},u(e),1)),64))])]),_:1},8,[`label`]),$.value?(e(),_(`div`,Tr,u($.value),1)):f(``,!0)]),_:1}),p(me,{align:`right`},{default:s(()=>[c(p(A,{flat:``,label:t.$t(`common.cancel`)},null,8,[`label`]),[[Ce]]),p(A,{flat:``,color:`primary`,label:Z.value===null?t.$t(`templates.create`):t.$t(`templates.save`),loading:ii.value,onClick:li},null,8,[`label`,`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}}),[[`__scopeId`,`data-v-c3dc90e1`]]);export{Er as default};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ActivityFeed-DlPVoOGb.js","assets/index-CdHDdk1y.js","assets/vue-i18n-DI-gS-CC.js","assets/runtime-core.esm-bundler-9Z0QAO_7.js","assets/QIcon-qfJNZLIW.js","assets/use-id-_7wiRcgb.js","assets/QBtn-DEuWKHbR.js","assets/QCheckbox-BvHfXBFY.js","assets/use-checkbox-y_fOkYZN.js","assets/QInput-DCJEwE8V.js","assets/QRadio-DJxOyOA3.js","assets/QToggle-DNOTC_3a.js","assets/notifications-BPnKFW60.js","assets/index-eX_lKHSg.css","assets/_plugin-vue_export-helper-Cj6tcsj6.js","assets/purify.es-BCEwTYRx.js","assets/QExpansionItem-BGg74no1.js","assets/QItemSection-CQUDd0Vg.js","assets/QItemLabel-CHkgkZVj.js","assets/QTooltip-DUGPNNeQ.js","assets/render-chat-markdown-Bjcei0vn.js","assets/TouchPan-DvVlszwO.js","assets/touch-HRdTUO2o.js","assets/QSpinnerDots-Bfl2RMy4.js","assets/documents-soWtna0O.js","assets/ActivityFeed-tE4LVYck.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{E as e,F as t,H as n,I as r,L as i,M as a,N as o,Q as s,S as c,T as l,U as u,W as d,_ as f,_t as p,a as m,bt as h,d as g,f as _,g as v,h as y,i as b,k as x,l as S,p as C,r as w,rt as T,u as E,v as D,w as ee,y as O}from"./runtime-core.esm-bundler-9Z0QAO_7.js";import{H as te,P as k,U as A,a as j,i as ne,m as M,n as re,r as N,s as P,t as F,v as I}from"./QIcon-qfJNZLIW.js";import{r as ie}from"./use-id-_7wiRcgb.js";import{s as ae}from"./notifications-BPnKFW60.js";import{n as oe,t as se}from"./QRadio-DJxOyOA3.js";import{c as L,t as R}from"./QBtn-DEuWKHbR.js";import{n as z}from"./vue-i18n-DI-gS-CC.js";import{t as ce}from"./QInput-DCJEwE8V.js";import{t as B}from"./QCheckbox-BvHfXBFY.js";import{a as le,b as ue,d as V,g as H,h as U,i as W,l as G,n as de,p as K,r as fe,s as pe,y as me}from"./index-CdHDdk1y.js";import{t as he}from"./QSpinnerDots-Bfl2RMy4.js";import{n as ge,t as _e}from"./QItemSection-CQUDd0Vg.js";import{t as ve}from"./QItemLabel-CHkgkZVj.js";import{m as q,t as J}from"./QTooltip-DUGPNNeQ.js";import{t as Y}from"./_plugin-vue_export-helper-Cj6tcsj6.js";import{t as ye}from"./QBadge-C7r6oPSi.js";import{t as X}from"./QSpace-DKIph84L.js";import{t as be}from"./QMenu-D6uqosRg.js";import{t as xe}from"./ClosePopup-DTcbxsC0.js";import{t as Se}from"./use-quasar-DQYS47mh.js";import{a as Ce,i as we,n as Te,r as Ee,t as De}from"./use-panel-CbJ44rqY.js";import{t as Oe}from"./kobo-commands-w8VepGvD.js";import{t as ke}from"./AutoLoopChip-CkSzkC0C.js";import{t as Ae}from"./formatters-guwb-rzl.js";import{n as je,t as Me}from"./models-Bd_v3W7Q.js";import{t as Ne}from"./QPage-Co2h9wd_.js";import{i as Pe,n as Fe,r as Ie,t as Le}from"./expand-template-Crz1uiBt.js";var Re={key:0,class:`row items-center q-pa-xs q-px-sm bg-dark text-grey-5 text-caption`},ze={key:0,class:`q-ml-xs`},Be=D({__name:`AgentBusyBanner`,setup(e){let{t:n}=z(),r=G(),i=ee(`openDrawerTab`),a=S(()=>r.currentSubagents.filter(e=>e.status===`running`).length),o=S(()=>{let e=r.selectedWorkspace;return e?V(e.status):!1});function s(){i?.(`subagents`)}return(e,r)=>o.value?(t(),C(`div`,Re,[v(he,{size:`14px`,color:`indigo-4`,class:`q-mr-sm`}),E(`span`,null,h(T(n)(`agentBusy.banner`)),1),a.value>0?(t(),C(`span`,ze,` — `+h(T(n)(`agentBusy.subagentsRunning`,{n:a.value},a.value)),1)):_(``,!0),a.value>0?(t(),C(w,{key:1},[v(X),E(`span`,{class:`text-indigo-4 cursor-pointer`,style:{"text-decoration":`underline`},onClick:s},h(T(n)(`agentBusy.viewSubagents`)),1)],64)):_(``,!0)])):_(``,!0)}}),Ve=k({name:`QBanner`,props:{...N,inlineActions:Boolean,dense:Boolean,rounded:Boolean},setup(e,{slots:t}){let{proxy:{$q:n}}=O(),r=re(e,n),i=S(()=>`q-banner row items-center`+(e.dense===!0?` q-banner--dense`:``)+(r.value===!0?` q-banner--dark q-dark`:``)+(e.rounded===!0?` rounded-borders`:``)),a=S(()=>`q-banner__actions row items-center justify-end col-${e.inlineActions===!0?`auto`:`all`}`);return()=>{let n=[c(`div`,{class:`q-banner__avatar col-auto row items-center self-start`},P(t.avatar)),c(`div`,{class:`q-banner__content col text-body2`},P(t.default))],r=P(t.action);return r!==void 0&&n.push(c(`div`,{class:a.value},r)),c(`div`,{class:i.value+(e.inlineActions===!1&&r!==void 0?` q-banner--top-padding`:``),role:`alert`},n)}}}),Z={class:`text-subtitle2`},Q={class:`text-caption`},He=D({__name:`AgentErrorBanner`,props:{workspaceId:{}},setup(e){let n=e,{t:r}=z(),i=K();async function a(){let e=c.value;if(e){i.removeByEventId(n.workspaceId,e);try{await fetch(`/api/workspaces/${n.workspaceId}/events/${e}`,{method:`DELETE`})}catch(e){console.warn(`[agent-error-banner] failed to persist dismiss:`,e)}}}function o(e){let t=e.replace(/\u001b\[\d+m/g,``).trim();return/^warning:/i.test(t)}let s=S(()=>{let e=i.eventsFor(n.workspaceId);for(let t=e.length-1;t>=0;t--){let n=e[t];if(!(n.kind!==`error`||n.category===`quota`)&&!(n.category===`other`&&o(n.message)))return n}return null}),c=S(()=>{let e=i.eventsFor(n.workspaceId),t=i.eventIdsFor(n.workspaceId);for(let n=e.length-1;n>=0;n--){let r=e[n];if(!(r.kind!==`error`||r.category===`quota`)&&!(r.category===`other`&&o(r.message)))return t[n]??null}return null}),l=s;return(e,n)=>T(l)?(t(),g(Ve,{key:0,class:`bg-negative text-white q-ma-sm`},{avatar:u(()=>[v(F,{name:`error_outline`})]),action:u(()=>[v(R,{flat:``,dense:``,round:``,icon:`close`,"aria-label":T(r)(`common.close`),onClick:a},{default:u(()=>[v(J,null,{default:u(()=>[y(h(T(r)(`common.close`)),1)]),_:1})]),_:1},8,[`aria-label`])]),default:u(()=>[E(`div`,Z,h(T(r)(`agent.error.${T(l).category}`)),1),E(`div`,Q,h(T(l).message),1)]),_:1})):_(``,!0)}}),Ue=k({name:`StepHeader`,props:{stepper:{},step:{},goToPanel:Function},setup(e,{attrs:t}){let{proxy:{$q:n}}=O(),r=s(null),i=S(()=>e.stepper.modelValue===e.step.name),a=S(()=>{let t=e.step.disable;return t===!0||t===``}),o=S(()=>{let t=e.step.error;return t===!0||t===``}),l=S(()=>{let t=e.step.done;return a.value===!1&&(t===!0||t===``)}),u=S(()=>{let t=e.step.headerNav,n=t===!0||t===``||t===void 0;return a.value===!1&&e.stepper.headerNav&&n}),f=S(()=>e.step.prefix&&(i.value===!1||e.stepper.activeIcon===`none`)&&(o.value===!1||e.stepper.errorIcon===`none`)&&(l.value===!1||e.stepper.doneIcon===`none`)),p=S(()=>{let t=e.step.icon||e.stepper.inactiveIcon;if(i.value===!0){let r=e.step.activeIcon||e.stepper.activeIcon;return r===`none`?t:r||n.iconSet.stepper.active}if(o.value===!0){let r=e.step.errorIcon||e.stepper.errorIcon;return r===`none`?t:r||n.iconSet.stepper.error}if(a.value===!1&&l.value===!0){let r=e.step.doneIcon||e.stepper.doneIcon;return r===`none`?t:r||n.iconSet.stepper.done}return t}),m=S(()=>{let t=o.value===!0?e.step.errorColor||e.stepper.errorColor:void 0;if(i.value===!0){let n=e.step.activeColor||e.stepper.activeColor||e.step.color;return n===void 0?t:n}return t===void 0?a.value===!1&&l.value===!0?e.step.doneColor||e.stepper.doneColor||e.step.color||e.stepper.inactiveColor:e.step.color||e.stepper.inactiveColor:t}),h=S(()=>`q-stepper__tab col-grow flex items-center no-wrap relative-position`+(m.value===void 0?``:` text-${m.value}`)+(o.value===!0?` q-stepper__tab--error q-stepper__tab--error-with-`+(f.value===!0?`prefix`:`icon`):``)+(i.value===!0?` q-stepper__tab--active`:``)+(l.value===!0?` q-stepper__tab--done`:``)+(u.value===!0?` q-stepper__tab--navigation q-focusable q-hoverable`:``)+(a.value===!0?` q-stepper__tab--disabled`:``)),g=S(()=>e.stepper.headerNav===!0?u.value:!1);function _(){r.value?.focus(),i.value===!1&&e.goToPanel(e.step.name)}function v(t){t.keyCode===13&&i.value===!1&&e.goToPanel(e.step.name)}return()=>{let n={class:h.value};u.value===!0&&(n.onClick=_,n.onKeyup=v,Object.assign(n,a.value===!0?{tabindex:-1,"aria-disabled":`true`}:{tabindex:t.tabindex||0}));let i=[c(`div`,{class:`q-focus-helper`,tabindex:-1,ref:r}),c(`div`,{class:`q-stepper__dot row flex-center q-stepper__line relative-position`},[c(`span`,{class:`row flex-center`},[f.value===!0?e.step.prefix:c(F,{name:p.value})])])];if(e.step.title!==void 0&&e.step.title!==null){let t=[c(`div`,{class:`q-stepper__title`},e.step.title)];e.step.caption!==void 0&&e.step.caption!==null&&t.push(c(`div`,{class:`q-stepper__caption`},e.step.caption)),i.push(c(`div`,{class:`q-stepper__label q-stepper__line relative-position`},t))}return d(c(`div`,n,i),[[L,g.value]])}}});function We(e){return c(`div`,{class:`q-stepper__step-content`},[c(`div`,{class:`q-stepper__step-inner`},P(e.default))])}var Ge={setup(e,{slots:t}){return()=>We(t)}},Ke=k({name:`QStep`,props:{...Te,icon:String,color:String,title:{type:String,required:!0},caption:String,prefix:[String,Number],doneIcon:String,doneColor:String,activeIcon:String,activeColor:String,errorIcon:String,errorColor:String,headerNav:{type:Boolean,default:!0},done:Boolean,error:Boolean,onScroll:[Function,Array]},setup(e,{slots:t,emit:n}){let{proxy:{$q:r}}=O(),i=ee(I,M);if(i===M)return console.error(`QStep needs to be a child of QStepper`),M;let{getCache:a}=Ce(),o=s(null),l=S(()=>i.value.modelValue===e.name),u=S(()=>r.platform.is.ios!==!0&&r.platform.is.chrome===!0||l.value!==!0||i.value.vertical!==!0?{}:{onScroll(t){let{target:r}=t;r.scrollTop>0&&(r.scrollTop=0),e.onScroll!==void 0&&n(`scroll`,t)}}),d=S(()=>typeof e.name==`string`||typeof e.name==`number`?e.name:String(e.name));function f(){let e=i.value.vertical;return e===!0&&i.value.keepAlive===!0?c(b,i.value.keepAliveProps.value,l.value===!0?[c(i.value.needsUniqueKeepAliveWrapper.value===!0?a(d.value,()=>({...Ge,name:d.value})):Ge,{key:d.value},t.default)]:void 0):e!==!0||l.value===!0?We(t):void 0}return()=>c(`div`,{ref:o,class:`q-stepper__step`,role:`tabpanel`,...u.value},i.value.vertical===!0?[c(Ue,{stepper:i.value,step:e,goToPanel:i.value.goToPanel}),i.value.animated===!0?c(q,f):f()]:[f()])}}),$=k({name:`QStepperNavigation`,setup(e,{slots:t}){return()=>c(`div`,{class:`q-stepper__nav`},P(t.default))}}),qe=/(-\w)/g;function Je(e){let t={};for(let n in e){let r=n.replace(qe,e=>e[1].toUpperCase());t[r]=e[n]}return t}var Ye=k({name:`QStepper`,props:{...N,...we,flat:Boolean,bordered:Boolean,alternativeLabels:Boolean,headerNav:Boolean,contracted:Boolean,headerClass:String,inactiveColor:String,inactiveIcon:String,doneIcon:String,doneColor:String,activeIcon:String,activeColor:String,errorIcon:String,errorColor:String},emits:Ee,setup(e,{slots:t}){let n=re(e,O().proxy.$q),{updatePanelsList:i,isValidPanelName:a,updatePanelIndex:o,getPanelContent:s,getPanels:l,panelDirectives:u,goToPanel:d,keepAliveProps:f,needsUniqueKeepAliveWrapper:p}=De();r(I,S(()=>({goToPanel:d,keepAliveProps:f,needsUniqueKeepAliveWrapper:p,...e})));let m=S(()=>`q-stepper q-stepper--${e.vertical===!0?`vertical`:`horizontal`}`+(e.flat===!0?` q-stepper--flat`:``)+(e.bordered===!0?` q-stepper--bordered`:``)+(n.value===!0?` q-stepper--dark q-dark`:``)),h=S(()=>`q-stepper__header row items-stretch justify-between q-stepper__header--${e.alternativeLabels===!0?`alternative`:`standard`}-labels`+(e.flat===!1||e.bordered===!0?` q-stepper__header--border`:``)+(e.contracted===!0?` q-stepper__header--contracted`:``)+(e.headerClass===void 0?``:` ${e.headerClass}`));function g(){let n=P(t.message,[]);if(e.vertical===!0){a(e.modelValue)&&o();let r=c(`div`,{class:`q-stepper__content`},P(t.default));return n===void 0?[r]:n.concat(r)}return[c(`div`,{class:h.value},l().map(t=>{let n=Je(t.props);return c(Ue,{key:n.name,stepper:e,step:n,goToPanel:d})})),n,ne(`div`,{class:`q-stepper__content q-panel-parent`},s(),`cont`,e.swipeable,()=>u.value)]}return()=>(i(t),c(`div`,{class:m.value},j(t.navigation,g())))}}),Xe=`__KOBO_OTHER__`,Ze=`Other — the user will provide a free-form clarification in their next message. Please wait for their input before proceeding.`;function Qe(e,t){if(t)return(Array.isArray(e)?e:[]).map(e=>e===`__KOBO_OTHER__`?Ze:e).join(`, `);let n=Array.isArray(e)?e[0]??``:e;return n===`__KOBO_OTHER__`?Ze:n}var $e={class:`text-grey-3`},et={key:0,class:`text-grey-6 q-ml-xs`},tt={key:1,class:`text-grey-6 q-ml-xs`},nt=D({__name:`AukqOptionLabel`,props:{label:{},description:{}},setup(e){let n=e,{t:r}=z(),i=S(()=>n.label===Xe);return(n,a)=>(t(),C(w,null,[E(`span`,$e,h(i.value?T(r)(`askUserQuestion.otherOption`):e.label),1),i.value?(t(),C(`span`,et,`— `+h(T(r)(`askUserQuestion.otherOptionHint`)),1)):e.description?(t(),C(`span`,tt,`— `+h(e.description),1)):_(``,!0)],64))}}),rt={key:0,class:`ask-user-question-panel q-pa-sm bg-dark text-grey-3`},it={class:`row items-center q-mb-xs`},at={class:`text-caption text-uppercase text-weight-bold text-amber-4`,style:{"letter-spacing":`0.05em`}},ot={key:0,class:`text-caption text-grey-6`},st={class:`text-body2 text-grey-2 q-mb-sm`},ct={key:0,class:`text-caption text-grey-6 q-mb-xs`},lt={class:`aukq-options column q-gutter-xs`},ut={class:`row items-center q-gutter-sm`},dt={key:3,class:`text-negative text-caption`},ft=Y(D({__name:`AskUserQuestionPanel`,props:{workspaceId:{}},setup(e){let r=e,{t:a}=z(),o=G(),c=S(()=>{let e=o.peekPending(r.workspaceId);if(!(!e||e.kind!==`question`))return e}),l=S(()=>c.value?(c.value.input?.questions??[]).map(e=>({...e,options:[...e.options,{label:Xe}]})):[]),d=S(()=>l.value[x.value]),f=s({}),p=s({}),m=s(!1),b=s(null),x=s(0);n(l,e=>{f.value=Object.fromEntries(e.map(e=>[e.question,[]])),p.value=Object.fromEntries(e.map(e=>[e.question,``])),b.value=null,x.value=0,m.value=!1},{immediate:!0});function D(e,t){return e.header?e.header:`Q${t+1}`}function ee(e){return te(e)?`check`:`help_outline`}function O(e){let t=l.value[e];return t?t.multiSelect?(f.value[t.question]??[]).length>0:!!p.value[t.question]:!1}function te(e){return O(e)&&e<x.value}let k=S(()=>x.value===l.value.length-1),A=S(()=>l.value.every((e,t)=>O(t)));function j(){x.value<l.value.length-1&&(x.value+=1)}function ne(){x.value>0&&--x.value}async function M(){if(!m.value){m.value=!0,b.value=null;try{let e={};for(let t of l.value)t.multiSelect?e[t.question]=Qe(f.value[t.question]??[],!0):e[t.question]=Qe(p.value[t.question]??``,!1);await o.submitDeferredAnswer(r.workspaceId,e,c.value?.toolCallId)}catch(e){b.value=e instanceof Error?e.message:String(e)}finally{m.value=!1}}}async function re(){if(!m.value){m.value=!0,b.value=null;try{await o.cancelDeferredAnswer(r.workspaceId,`User cancelled the question via the UI`,c.value?.toolCallId)}catch(e){b.value=e instanceof Error?e.message:String(e)}finally{m.value=!1}}}return(e,n)=>c.value?(t(),C(`div`,rt,[E(`div`,it,[v(F,{name:`question_answer`,size:`16px`,color:`amber-4`,class:`q-mr-sm`}),E(`div`,at,h(T(a)(`askUserQuestion.title`)),1),v(X),l.value.length>1?(t(),C(`span`,ot,h(x.value+1)+` / `+h(l.value.length),1)):_(``,!0)]),d.value?(t(),g(Ye,{key:0,ref:`stepperRef`,modelValue:x.value,"onUpdate:modelValue":n[0]||=e=>x.value=e,flat:``,dark:``,animated:``,"header-nav":``,class:`aukq-stepper bg-transparent`,color:`amber-5`,"active-color":`amber-4`,"done-color":`amber-5`},{navigation:u(()=>[v($,null,{default:u(()=>[E(`div`,ut,[x.value>0?(t(),g(R,{key:0,flat:``,dense:``,color:`grey-4`,label:T(a)(`askUserQuestion.previous`),disable:m.value,onClick:ne},null,8,[`label`,`disable`])):_(``,!0),k.value?(t(),g(R,{key:2,label:T(a)(`askUserQuestion.submit`),color:`indigo-5`,dense:``,unelevated:``,loading:m.value,disable:!A.value||m.value,onClick:M},null,8,[`label`,`loading`,`disable`])):(t(),g(R,{key:1,label:T(a)(`askUserQuestion.next`),color:`indigo-5`,dense:``,unelevated:``,disable:!O(x.value)||m.value,onClick:j},null,8,[`label`,`disable`])),v(R,{label:T(a)(`askUserQuestion.cancel`),flat:``,dense:``,color:`grey-4`,disable:m.value,onClick:re},{default:u(()=>[v(J,null,{default:u(()=>[y(h(T(a)(`askUserQuestion.cancelTooltip`)),1)]),_:1})]),_:1},8,[`label`,`disable`]),v(X),b.value?(t(),C(`span`,dt,h(b.value),1)):_(``,!0)])]),_:1})]),default:u(()=>[(t(!0),C(w,null,i(l.value,(e,n)=>(t(),g(Ke,{key:n,name:n,title:D(e,n),icon:ee(n),"active-icon":`edit`,done:te(n),"header-nav":te(n)||n===x.value},{default:u(()=>[E(`div`,st,h(e.question),1),e.multiSelect?(t(),C(`div`,ct,h(T(a)(`askUserQuestion.multiSelectHint`)),1)):_(``,!0),E(`div`,lt,[e.multiSelect?(t(!0),C(w,{key:0},i(e.options,n=>(t(),g(B,{key:n.label,modelValue:f.value[e.question],"onUpdate:modelValue":t=>f.value[e.question]=t,val:n.label,dark:``,dense:``,color:`indigo-4`,disable:m.value},{default:u(()=>[v(nt,{label:n.label,description:n.description},null,8,[`label`,`description`])]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`val`,`disable`]))),128)):(t(!0),C(w,{key:1},i(e.options,n=>(t(),g(se,{key:n.label,modelValue:p.value[e.question],"onUpdate:modelValue":t=>p.value[e.question]=t,val:n.label,dark:``,dense:``,color:`indigo-4`,disable:m.value},{default:u(()=>[v(nt,{label:n.label,description:n.description},null,8,[`label`,`description`])]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`val`,`disable`]))),128))])]),_:2},1032,[`name`,`title`,`icon`,`done`,`header-nav`]))),128))]),_:1},8,[`modelValue`])):_(``,!0)])):_(``,!0)}}),[[`__scopeId`,`data-v-ab068179`]]);function pt(e,t){return e===`five_hour`?t(`rateLimitType.fiveHour`):e===`seven_day`?t(`rateLimitType.sevenDay`):e}function mt(e,t){try{let n=new Date(e);return Number.isNaN(n.getTime())?e:n.toLocaleTimeString(t?.locale,{hour:`2-digit`,minute:`2-digit`,hour12:!1,timeZone:t?.timeZone})}catch{return e}}function ht(e,t,n){return e.id===`text-detected`&&e.resetAt?n(`stats.resetsAt`,{value:mt(e.resetAt)}):!e.label||e.label.trim().length===0?n(`stats.usageBucket`,{n:t+1}):pt(e.label,n)}function gt(e){return e<50?`positive`:e<75?`warning`:e<90?`orange`:`negative`}var _t={class:`quota-footer`},vt={key:0,class:`text-grey-7`},yt={class:`text-negative text-weight-medium`},bt={class:`text-weight-medium q-mb-sm`},xt={class:`text-caption q-mb-sm`},St={class:`text-orange text-weight-medium`},Ct={class:`text-weight-medium q-mb-sm`},wt={class:`text-caption text-orange q-mb-sm`},Tt={class:`text-grey-8`},Et={class:`text-weight-medium q-mb-sm`},Dt={class:`row items-center justify-between q-mb-xs`},Ot={key:0,class:`text-caption q-mt-xs`},kt={class:`text-caption q-mt-sm`},At={class:`row q-gutter-sm q-mt-sm`},jt=Y(D({__name:`QuotaFooter`,setup(e){let n=G(),{t:r}=z(),a=S(()=>n.currentProviderUsage),o=s(!1),c=S(()=>{let e=a.value;if(!e)return``;try{return new Date(e.fetchedAt).toLocaleTimeString()}catch{return e.fetchedAt}});function l(e,t){let n=a.value?.buckets[t];return n?ht({id:n.id,label:e,usedPct:n.usedPct,resetAt:n.resetsAt},t,r):r(`stats.usageBucket`,{n:t+1})}async function d(){if(!o.value){o.value=!0;try{await n.requestUsageRefresh(`claude-code`)}finally{o.value=!1}}}return(e,n)=>(t(),C(`span`,_t,[a.value?a.value.status===`unauthenticated`?(t(),C(w,{key:1},[v(F,{name:`warning`,color:`negative`,size:`14px`,class:`q-mr-xs`}),E(`span`,yt,h(e.$t(`quotaFooter.popover.unauthenticated`)),1),v(be,{anchor:`top right`,self:`bottom right`,class:`q-pa-md quota-menu`},{default:u(()=>[E(`div`,bt,h(e.$t(`quotaFooter.popover.title`)),1),E(`div`,xt,h(e.$t(`quotaFooter.popover.unauthenticatedHint`)),1),v(R,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,label:e.$t(`quotaFooter.popover.refreshNow`),loading:o.value,disable:o.value,onClick:d},null,8,[`label`,`loading`,`disable`])]),_:1})],64)):a.value.status===`error`?(t(),C(w,{key:2},[v(F,{name:`error_outline`,color:`orange`,size:`14px`,class:`q-mr-xs`}),E(`span`,St,h(e.$t(`quotaFooter.popover.error`)),1),v(be,{anchor:`top right`,self:`bottom right`,class:`q-pa-md quota-menu`},{default:u(()=>[E(`div`,Ct,h(e.$t(`quotaFooter.popover.title`)),1),E(`div`,wt,h(a.value.errorMessage),1),v(R,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,label:e.$t(`quotaFooter.popover.refreshNow`),loading:o.value,disable:o.value,onClick:d},null,8,[`label`,`loading`,`disable`])]),_:1})],64)):(t(),C(w,{key:3},[(t(!0),C(w,null,i(a.value.buckets,(e,n)=>(t(),C(`span`,{key:e.id,class:`quota-bucket-compact`},[E(`span`,Tt,h(l(e.label,n)),1),v(oe,{value:Math.max(0,Math.min(1,e.usedPct/100)),color:T(gt)(e.usedPct),"track-color":`grey-9`,class:`quota-bar`},null,8,[`value`,`color`]),E(`span`,{class:p([`bucket-pct`,`text-${T(gt)(e.usedPct)}`])},h(e.usedPct.toFixed(0))+`%`,3)]))),128)),v(be,{anchor:`top right`,self:`bottom right`,class:`q-pa-md quota-menu`},{default:u(()=>[E(`div`,Et,h(e.$t(`quotaFooter.popover.title`)),1),(t(!0),C(w,null,i(a.value.buckets,(n,r)=>(t(),C(`div`,{key:n.id,class:`q-mb-sm`},[E(`div`,Dt,[E(`span`,null,h(l(n.label,r)),1),E(`span`,{class:p(`text-${T(gt)(n.usedPct)}`)},h(n.usedPct.toFixed(0))+`%`,3)]),v(oe,{value:Math.max(0,Math.min(1,n.usedPct/100)),color:T(gt)(n.usedPct),"track-color":`grey-9`,class:`full-bar`},null,8,[`value`,`color`]),n.resetsAt?(t(),C(`div`,Ot,h(e.$t(`quotaFooter.popover.resetsIn`,{value:T(mt)(n.resetsAt)})),1)):_(``,!0)]))),128)),E(`div`,kt,h(e.$t(`quotaFooter.lastUpdated`,{time:c.value})),1),E(`div`,At,[v(R,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,label:e.$t(`quotaFooter.popover.refreshNow`),loading:o.value,disable:o.value,onClick:d},null,8,[`label`,`loading`,`disable`])])]),_:1})],64)):(t(),C(`span`,vt,h(e.$t(`quotaFooter.empty`)),1))]))}}),[[`__scopeId`,`data-v-2edf9322`]]),Mt={key:0,class:`row items-center q-gutter-xs q-mb-xs q-px-xs`,style:{"flex-wrap":`wrap`}},Nt={class:`text-caption image-tag-label`},Pt={key:2,class:`queue-banner row items-center q-pa-xs q-px-sm text-caption text-amber-6`},Ft={key:3,class:`autoloop-banner row items-center no-wrap q-pa-xs q-px-sm text-caption text-indigo-3`},It={class:`col`},Lt={key:4,class:`awaiting-user-banner row items-center q-pa-xs q-px-sm text-caption text-amber-5`},Rt={class:`row items-center q-gutter-sm`},zt={class:`chat-hint row items-center text-caption text-grey-8`},Bt={key:0,class:`row items-center text-caption text-amber-6 q-mr-sm`},Vt=6e4,Ht=Y(D({__name:`ChatInput`,props:{workspaceId:{}},setup(r){let a=r,{t:c}=z(),l=Se(),d=G(),f=ae(),m=pe(),b=U(),x=s(``),D=s(!1),ee=S(()=>V(d.selectedWorkspace?.status));async function O(){if(a.workspaceId){D.value=!0;try{await d.interruptAgent(a.workspaceId),l.notify({type:`info`,message:c(`workspacePage.interrupted`),position:`top`,timeout:3e3})}catch(e){let t=e instanceof Error?e.message:c(`workspacePage.interruptFailed`);l.notify({type:`negative`,message:t,position:`top`,timeout:6e3})}finally{D.value=!1}}}let te=S(()=>V(d.selectedWorkspace?.status)),k=S(()=>!!d.queuedMessages[a.workspaceId]),j=s(null);function ne(){let e=j.value;return e?e.getNativeElement?.()??null:null}let{showSkills:M,skillFilter:re,selectedSkillIndex:N,groupedDropdown:P,flatDropdown:I,fetchSkills:ie,detectSlashFragment:oe,replaceFragmentWith:se,closeDropdown:L}=Ie(x,()=>ne()),B=s([]),le=s(null),ue=s(!1),H=s(!1),W=s(!1),de=s(null),K=s(null),fe=s([]),me=s(null),ge=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`];function _e(t){let n=ne(),r=n?.selectionStart??x.value.length,i=x.value.slice(0,r),a=x.value.slice(r);x.value=i+t+a,e(()=>{if(n){let e=r+t.length;n.focus(),n.setSelectionRange(e,e)}})}function ve(){let e=`[image: ${c(`chatInput.uploading`)}]`,t=new Set(B.value.map(e=>e.placeholder));if(!t.has(e))return e;let n=2;for(;t.has(`[image: ${c(`chatInput.uploading`)} ${n}]`);)n++;return`[image: ${c(`chatInput.uploading`)} ${n}]`}async function q(e){if(!ge.includes(e.type))return;let t=crypto.randomUUID(),n=e.name||`pasted-image.png`,r=ve(),i={tempId:t,originalName:n,placeholder:r,status:`uploading`};B.value.push(i),_e(r);try{let n=new FormData;n.append(`image`,e);let r=await fetch(`/api/workspaces/${a.workspaceId}/images`,{method:`POST`,body:n});if(!r.ok){let e=await r.json();throw Error(e.error||`Upload failed`)}let i=await r.json(),o=B.value.find(e=>e.tempId===t);if(o){o.uid=i.uid,o.path=i.path,o.status=`ready`;let e=`[image: ${i.path}]`;e!==o.placeholder&&(x.value=x.value.split(o.placeholder).join(e),o.placeholder=e)}}catch{let e=B.value.find(e=>e.tempId===t);e&&(e.status=`error`)}}function Y(e,t){fetch(`/api/workspaces/${e}/images/${t}`,{method:`DELETE`}).catch(()=>{})}function ye(e){let t=B.value.find(t=>t.tempId===e);if(t){B.value=B.value.filter(t=>t.tempId!==e);{let e=t.placeholder.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);x.value=x.value.replace(RegExp(`${e}\\s?`,`g`),``)}t.uid&&Y(a.workspaceId,t.uid)}}function be(e){if(e.clipboardData){for(let t of Array.from(e.clipboardData.items))if(t.type.startsWith(`image/`)){let e=t.getAsFile();e&&q(e)}}}function xe(e){if(e.preventDefault(),ue.value=!1,e.dataTransfer)for(let t of Array.from(e.dataTransfer.files))ge.includes(t.type)&&q(t)}function Ce(e){e.preventDefault(),ue.value=!0}function we(){ue.value=!1}function Te(e){let t=e.target;if(t.files){for(let e of Array.from(t.files))q(e);t.value=``}}let Ee=S(()=>B.value.some(e=>e.status===`uploading`)),De=S(()=>d.sessions.find(e=>e.id===d.selectedSessionId)??null);ie(),n(()=>d.chatDraft,e=>{e&&(x.value=x.value?`${x.value}\n${e}`:e,d.chatDraft=``)});let ke=!1;function Ae(){ke=!0,d.cancelQueuedMessage(a.workspaceId)}n(k,(e,t)=>{t&&!e&&!ke&&(x.value=``),ke=!1}),n(()=>a.workspaceId,e=>{let t=d.queuedMessages[e];x.value=t?t.content:``,H.value&&$()}),n(x,async()=>{await e(),await oe();let t=[];for(let e of B.value)x.value.includes(e.placeholder)||t.push(e.tempId);for(let e of t)ye(e)}),window.addEventListener(`keydown`,Je),window.addEventListener(`keyup`,Ye),window.addEventListener(`blur`,Xe),document.addEventListener(`visibilitychange`,Ze),o(()=>{window.removeEventListener(`keydown`,Je),window.removeEventListener(`keyup`,Ye),window.removeEventListener(`blur`,Xe),document.removeEventListener(`visibilitychange`,Ze),me.value&&=(clearTimeout(me.value),null),H.value&&$()});function je(e){if(!e)return;if(e.type===`template`){let t=b.templates.find(t=>t.slug===e.name);if(!t)return;let n=d.workspaces.find(e=>e.id===a.workspaceId)??null,r=d.gitStatsCache[a.workspaceId]??null,i=d.sessions.find(e=>e.id===d.selectedSessionId)??null,o=null;if(i)if(i.name)o=i.name;else{let e=d.sessions.findIndex(e=>e.id===i.id);o=c(`workspacePage.session`,{n:d.sessions.length-e})}let s;if(r?.prUrl){let e=r.prUrl.match(/\/pull\/(\d+)/);e&&(s=parseInt(e[1],10))}let l=Le({workspace:n?{name:n.name,workingBranch:n.workingBranch,sourceBranch:n.sourceBranch,projectPath:n.projectPath}:null,gitStats:r?{commitCount:r.commitCount,unpushedCount:r.unpushedCount,filesChanged:r.filesChanged,insertions:r.insertions,deletions:r.deletions,prNumber:s,prUrl:r.prUrl,prState:r.prState}:null,sessionName:o});se(Fe(t.content,l)),L();return}let t=`/${e.name}`;if(e.type===`kobo`&&Oe[t]){x.value=t,L(),Ge();return}se(`${t} `),L()}let Me=S(()=>{let e=a.workspaceId;if(!e)return!1;let t=d.autoLoopStates[e];return t?.auto_loop===!0&&t?.auto_loop_ready===!0}),Ne=S(()=>d.selectedWorkspace?.status===`awaiting-user`),Re=S(()=>!a.workspaceId||Me.value||Ne.value),ze=S(()=>f.global.voiceEnabled&&!Re.value),Be=s(!1);async function Ve(){if(!(!a.workspaceId||Be.value)){Be.value=!0;try{await d.disableAutoLoop(a.workspaceId)}finally{Be.value=!1}}}let Z=s(JSON.parse(localStorage.getItem(`kobo:chatHistory`)??`[]`)),Q=s(-1),He=s(``);function Ue(e){e&&Z.value[0]!==e&&(Z.value.unshift(e),Z.value.length>50&&Z.value.pop(),localStorage.setItem(`kobo:chatHistory`,JSON.stringify(Z.value)))}function We(){Q.value=-1,He.value=``}async function Ge(){let e=x.value.trim();if(!e&&B.value.length===0||Re.value||Ee.value)return;let t=De.value,n=Oe[e];if(n){m.sendChatMessage(a.workspaceId,n.prompt,d.selectedSessionId??void 0),d.markRead(a.workspaceId),d.addActivityItem(a.workspaceId,{id:`user-${Date.now()}`,type:`text`,content:n.prompt,timestamp:new Date().toISOString(),sessionId:d.selectedSessionId??void 0,meta:{sender:`user`,pending:!0}}),Ue(e),We(),x.value=``;return}if(te.value){d.queueMessage(a.workspaceId,e,d.selectedSessionId??void 0);return}d.cancelQueuedMessage(a.workspaceId);let r=e,i=B.value.filter(e=>e.status===`ready`&&e.path&&!r.includes(`[image: ${e.path}]`)).map(e=>`[image: ${e.path}]`).join(` `);i&&(r=`${r} ${i}`.trim());let o=d.selectedSessionId??void 0;if((t?.status===`completed`||t?.status===`error`)&&!t.engineSessionId){l.notify({type:`warning`,message:c(`workspacePage.sessionEndedNotice`),position:`top`,timeout:5e3});return}let s=`user-${Date.now()}`;d.markRead(a.workspaceId),d.addActivityItem(a.workspaceId,{id:s,type:`text`,content:r,timestamp:new Date().toISOString(),sessionId:o,meta:{sender:`user`,pending:!0}});let u=e;Ue(e),We(),x.value=``,B.value=[];let f=(e,t)=>{console.error(`[ChatInput] ${t} failed:`,e),d.removeActivityItem(a.workspaceId,s),x.value=u;let n=e instanceof Error?e.message:null;l.notify({type:`negative`,message:n??c(`workspacePage.startFailed`),position:`top`,timeout:6e3})};if(t?.status===`idle`)try{await d.startWorkspace(a.workspaceId,r,t.id),await d.fetchSessions(a.workspaceId)}catch(e){f(e,`startWorkspace`)}else if(t?.status===`completed`||t?.status===`error`)try{await d.startWorkspace(a.workspaceId,r,t.id,!0),await d.fetchSessions(a.workspaceId)}catch(e){f(e,`resume session`)}else m.sendChatMessage(a.workspaceId,r,d.selectedSessionId??void 0)}async function Ke(){if(!(!ze.value||H.value||W.value)){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>`u`){l.notify({type:`warning`,message:c(`voice.notSupported`),position:`top`,timeout:4e3});return}try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});K.value=e,fe.value=[];let t=MediaRecorder.isTypeSupported(`audio/webm`)?`audio/webm`:``,n=t?new MediaRecorder(e,{mimeType:t}):new MediaRecorder(e);n.ondataavailable=e=>{e.data&&e.data.size>0&&fe.value.push(e.data)},n.start(),de.value=n,H.value=!0,me.value=setTimeout(()=>{$(),l.notify({type:`info`,message:c(`voice.maxDurationReached`),position:`top`,timeout:3500})},Vt)}catch{l.notify({type:`negative`,message:c(`voice.errorMicPermission`),position:`top`,timeout:5e3})}}}async function $(){if(!H.value)return;let e=de.value;if(!e)return;H.value=!1,W.value=!0,me.value&&=(clearTimeout(me.value),null);let t=await new Promise(t=>{e.onstop=()=>t(new Blob(fe.value,{type:`audio/webm`})),e.stop()});try{if(t.size===0)throw Error(`MIC_AUDIO_INVALID`);let e=new FormData;e.append(`audio`,t,`voice.webm`),e.append(`language`,f.global.voiceLanguage||`auto`);let n=await fetch(`/api/voice/workspaces/${encodeURIComponent(a.workspaceId)}/transcribe`,{method:`POST`,body:e});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(String(e.code??e.error??`HTTP_${n.status}`))}let r=await n.json();r.text?.trim()&&(x.value=x.value?`${x.value.trimEnd()} ${r.text.trim()}`:r.text.trim())}catch(e){let t=e instanceof Error?e.message:`TRANSCRIPTION_FAILED`;l.notify({type:`negative`,message:c({VOICE_DISABLED:`voice.errorDisabled`,MODEL_NOT_CONFIGURED:`voice.errorModelMissing`,MODEL_NOT_INSTALLED:`voice.errorModelNotInstalled`,VOICE_RUNTIME_MISSING:`voice.errorRuntimeMissing`,MIC_AUDIO_INVALID:`voice.errorAudioInvalid`,LANGUAGE_INVALID:`voice.errorLanguageInvalid`,TRANSCRIPTION_TIMEOUT:`voice.errorTranscription`}[t]??`voice.errorTranscription`),position:`top`,timeout:5e3})}finally{de.value=null,fe.value=[],K.value?.getTracks().forEach(e=>{e.stop()}),K.value=null,W.value=!1}}function qe(e){return ze.value?f.global.voicePttKey===`ctrl+space`?e.ctrlKey&&e.code===`Space`:e.key===`Alt`:!1}function Je(e){!qe(e)||e.repeat||(e.preventDefault(),Ke())}function Ye(e){qe(e)&&(e.preventDefault(),$())}function Xe(){H.value&&$()}function Ze(){document.visibilityState!==`visible`&&H.value&&$()}function Qe(e){if(M.value&&I.value.length>0){if(e.key===`ArrowDown`){e.preventDefault(),N.value=Math.min(N.value+1,I.value.length-1);return}if(e.key===`ArrowUp`){e.preventDefault(),N.value=Math.max(N.value-1,0);return}if(e.key===`Tab`||e.key===`Enter`&&!e.shiftKey){e.preventDefault(),je(I.value[N.value]);return}if(e.key===`Escape`){e.preventDefault(),L();return}}if(e.key===`ArrowUp`&&Z.value.length>0){let t=e.target;if(!(!t||t.selectionStart<=(x.value.indexOf(`
|
|
3
|
-
`)===-1?x.value.length:x.value.indexOf(`
|
|
4
|
-
`)))&&Q.value===-1)return;e.preventDefault(),Q.value===-1&&(He.value=x.value),Q.value<Z.value.length-1&&(Q.value++,x.value=Z.value[Q.value]);return}if(e.key===`ArrowDown`&&Q.value>=0){e.preventDefault(),Q.value--,x.value=Q.value>=0?Z.value[Q.value]:He.value;return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Ge())}return(e,n)=>(t(),C(`div`,{class:p([`chat-input-container column q-pa-sm`,{"chat-input-dragging":ue.value}]),onDragover:Ce,onDragleave:we,onDrop:xe},[B.value.length>0?(t(),C(`div`,Mt,[(t(!0),C(w,null,i(B.value,n=>(t(),C(`div`,{key:n.tempId,class:p([`image-tag row items-center q-px-sm q-py-xs rounded-borders`,{"image-tag--uploading":n.status===`uploading`,"image-tag--ready":n.status===`ready`,"image-tag--error":n.status===`error`}])},[n.status===`uploading`?(t(),g(he,{key:0,size:`14px`,color:`grey-6`,class:`q-mr-xs`})):n.status===`ready`?(t(),g(F,{key:1,name:`image`,size:`14px`,color:`green-6`,class:`q-mr-xs`})):(t(),g(F,{key:2,name:`error`,size:`14px`,color:`red-6`,class:`q-mr-xs`})),E(`span`,Nt,h(n.status===`uploading`?e.$t(`chatInput.uploading`):n.path||n.originalName),1),v(R,{flat:``,dense:``,round:``,size:`xs`,icon:`close`,class:`q-ml-xs image-tag-close`,onClick:e=>ye(n.tempId)},{default:u(()=>[v(J,null,{default:u(()=>[y(h(e.$t(`tooltip.removeImage`)),1)]),_:1})]),_:1},8,[`onClick`])],2))),128))])):_(``,!0),T(M)&&T(I).length>0?(t(),g(Pe,{key:1,class:`chat-slash-popup`,"grouped-dropdown":T(P),"flat-dropdown":T(I),"selected-index":T(N),onSelect:je},null,8,[`grouped-dropdown`,`flat-dropdown`,`selected-index`])):_(``,!0),k.value?(t(),C(`div`,Pt,[v(F,{name:`schedule`,size:`14px`,color:`amber-6`,class:`q-mr-sm`}),E(`span`,null,h(e.$t(`chatInput.queueBanner`)),1)])):_(``,!0),Me.value?(t(),C(`div`,Ft,[v(F,{name:`all_inclusive`,size:`14px`,color:`indigo-4`,class:`q-mr-sm`}),E(`span`,It,h(e.$t(`chatInput.autoLoopBanner`)),1),v(R,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`stop_circle`,color:`orange-4`,label:e.$t(`chatInput.autoLoopStop`),loading:Be.value,disable:Be.value,onClick:Ve},null,8,[`label`,`loading`,`disable`])])):_(``,!0),Ne.value&&!Me.value?(t(),C(`div`,Lt,[v(F,{name:`question_answer`,size:`14px`,color:`amber-5`,class:`q-mr-sm`}),E(`span`,null,h(e.$t(`chatInput.awaitingUserBanner`)),1)])):_(``,!0),E(`div`,Rt,[v(ce,{ref_key:`chatInputRef`,ref:j,modelValue:x.value,"onUpdate:modelValue":n[0]||=e=>x.value=e,dense:``,dark:``,borderless:``,autogrow:``,readonly:k.value,placeholder:e.$t(`chatInput.placeholder`),class:`chat-input col rounded-borders`,disable:Re.value,onKeydown:Qe,onPaste:be},null,8,[`modelValue`,`readonly`,`placeholder`,`disable`]),E(`input`,{ref_key:`fileInputRef`,ref:le,type:`file`,accept:`image/png,image/jpeg,image/gif,image/webp`,multiple:``,style:{display:`none`},onChange:Te},null,544),v(R,{flat:``,dense:``,icon:`attach_file`,color:`grey-6`,disable:Re.value,onClick:n[1]||=e=>le.value?.click()},{default:u(()=>[v(J,null,{default:u(()=>[y(h(e.$t(`chatInput.attachImage`)),1)]),_:1})]),_:1},8,[`disable`]),v(R,{flat:``,dense:``,icon:W.value?`hourglass_top`:H.value?`mic`:`mic_none`,color:H.value?`red-5`:W.value?`amber-6`:`grey-6`,disable:!ze.value||W.value,class:p({"voice-btn--recording":H.value}),onMousedown:A(Ke,[`prevent`]),onMouseup:A($,[`prevent`]),onMouseleave:A($,[`prevent`]),onTouchstart:A(Ke,[`prevent`]),onTouchend:A($,[`prevent`])},{default:u(()=>[v(J,null,{default:u(()=>[y(h(W.value?e.$t(`voice.transcribing`):H.value?e.$t(`voice.recording`):e.$t(`voice.holdToTalk`)),1)]),_:1})]),_:1},8,[`icon`,`color`,`disable`,`class`]),k.value?(t(),g(R,{key:0,flat:``,dense:``,icon:`cancel`,color:`orange`,onClick:Ae},{default:u(()=>[v(J,null,{default:u(()=>[y(h(e.$t(`chatInput.cancelQueue`)),1)]),_:1})]),_:1})):(t(),g(R,{key:1,flat:``,dense:``,icon:`send`,color:`primary`,disable:Re.value||!x.value.trim()&&B.value.length===0||Ee.value,onClick:Ge},{default:u(()=>[v(J,null,{default:u(()=>[y(h(e.$t(`tooltip.sendMessage`)),1)]),_:1})]),_:1},8,[`disable`]))]),E(`div`,zt,[E(`div`,null,[n[2]||=E(`kbd`,null,`Enter`,-1),y(` `+h(e.$t(`common.send`))+` `,1),n[3]||=E(`span`,{class:`q-mx-xs`},`·`,-1),n[4]||=y(),n[5]||=E(`kbd`,null,`Shift+Enter`,-1),y(` `+h(e.$t(`common.newLine`))+` `,1),n[6]||=E(`span`,{class:`q-mx-xs`},`·`,-1),n[7]||=y(),n[8]||=E(`kbd`,null,`↑↓`,-1),y(` `+h(e.$t(`common.history`)),1)]),v(X),W.value?(t(),C(`div`,Bt,[v(he,{size:`14px`,color:`amber-6`,class:`q-mr-xs`}),E(`span`,null,h(e.$t(`voice.transcribing`)),1)])):_(``,!0),v(jt,{class:`q-mr-md`}),ee.value?(t(),g(R,{key:1,flat:``,dense:``,"no-caps":``,size:`sm`,color:`orange-4`,icon:`pause`,label:e.$t(`workspacePage.interrupt`),loading:D.value,disable:D.value,onClick:O},{default:u(()=>[v(J,null,{default:u(()=>[y(h(e.$t(`workspacePage.interruptTooltip`)),1)]),_:1})]),_:1},8,[`label`,`loading`,`disable`])):_(``,!0)])],34))}}),[[`__scopeId`,`data-v-aecf7098`]]),Ut={key:0,class:`permission-request-panel q-pa-sm bg-dark text-grey-3`},Wt={class:`row items-center q-mb-sm`},Gt={class:`text-caption text-uppercase text-weight-bold text-amber-4`,style:{"letter-spacing":`0.05em`}},Kt={class:`text-body2 text-grey-2 q-mb-xs`},qt={class:`text-weight-medium`},Jt={class:`q-ml-xs`},Yt={class:`text-caption text-grey-6 q-mb-xs`},Xt={class:`permission-input-pre`},Zt={class:`row items-center q-gutter-sm q-mt-sm`},Qt={key:0,class:`text-negative text-caption`},$t=Y(D({__name:`PermissionRequestPanel`,props:{workspaceId:{}},setup(e){let r=e,{t:i}=z(),a=G(),o=S(()=>{let e=a.peekPending(r.workspaceId);if(!(!e||e.kind!==`permission`))return e}),c=S(()=>{if(!o.value)return``;try{return JSON.stringify(o.value.toolInput,null,2)}catch{return String(o.value.toolInput)}}),l=s(!1),u=s(null);n(()=>o.value?.toolCallId??null,()=>{l.value=!1,u.value=null});async function d(e){if(o.value&&!l.value){l.value=!0,u.value=null;try{await a.submitDeferredPermission(r.workspaceId,o.value.toolCallId,e,e===`deny`?i(`permissionRequest.denied`):void 0)}catch(e){u.value=e instanceof Error?e.message:String(e)}finally{l.value=!1}}}return(e,n)=>o.value?(t(),C(`div`,Ut,[E(`div`,Wt,[v(F,{name:`security`,size:`16px`,color:`amber-4`,class:`q-mr-sm`}),E(`div`,Gt,h(T(i)(`permissionRequest.title`)),1)]),E(`div`,Kt,[E(`span`,qt,h(T(i)(`permissionRequest.tool`))+`:`,1),E(`code`,Jt,h(o.value.toolName),1)]),E(`div`,Yt,h(T(i)(`permissionRequest.input`)),1),E(`pre`,Xt,h(c.value),1),E(`div`,Zt,[v(R,{label:T(i)(`permissionRequest.allow`),color:`indigo-5`,dense:``,unelevated:``,loading:l.value,disable:l.value,onClick:n[0]||=e=>d(`allow`)},null,8,[`label`,`loading`,`disable`]),v(R,{label:T(i)(`permissionRequest.deny`),flat:``,dense:``,color:`grey-4`,disable:l.value,onClick:n[1]||=e=>d(`deny`)},null,8,[`label`,`disable`]),v(X),u.value?(t(),C(`span`,Qt,h(u.value),1)):_(``,!0)])])):_(``,!0)}}),[[`__scopeId`,`data-v-12227c33`]]),en={key:0,class:`quota-backoff-banner row items-center q-px-md q-py-sm`,style:{"background-color":`#b87333`,color:`#f0f0f0`}},tn={class:`text-body2`},nn=D({__name:`QuotaBackoffBanner`,props:{workspaceId:{}},setup(e){let n=e,{t:r}=z(),i=Se(),a=G(),o=s(!1),c=S(()=>a.pendingQuotaBackoffs[n.workspaceId]),l=S(()=>a.workspaces.find(e=>e.id===n.workspaceId)),d=S(()=>a.autoLoopStates[n.workspaceId]),f=S(()=>l.value?.status===`quota`&&d.value?.auto_loop===!0&&c.value!==void 0),p=S(()=>{let e=c.value?.targetAt;return e?new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`}):``}),m=S(()=>{let e=c.value?.resetsAt;return e?new Date(e).toLocaleString():``});async function b(){if(!o.value){o.value=!0;try{await a.cancelQuotaBackoff(n.workspaceId),i.notify({type:`info`,message:r(`quotaBackoff.cancelled`),position:`top`,timeout:4e3})}catch(e){i.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}finally{o.value=!1}}}return(e,n)=>f.value?(t(),C(`div`,en,[v(F,{name:`hourglass_top`,size:`18px`,class:`q-mr-sm`}),E(`span`,tn,h(T(r)(`quotaBackoff.banner.title`,{time:p.value})),1),c.value?.resetsAt?(t(),g(J,{key:0},{default:u(()=>[y(h(T(r)(`quotaBackoff.banner.tooltip`,{resets_at:m.value})),1)]),_:1})):_(``,!0),v(X),v(R,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`grey-3`,label:T(r)(`quotaBackoff.banner.cancel`),loading:o.value,onClick:b},null,8,[`label`,`loading`])])):_(``,!0)}}),rn={class:`text-subtitle2`},an={class:`text-caption`},on=D({__name:`StaleSessionBanner`,props:{workspaceId:{}},setup(e){let n=e,r=G(),i=S(()=>{if(!r.selectedSessionId||r.sessions.length<2)return!1;let e=r.sessions[0];if(!e||e.id===r.selectedSessionId)return!1;let t=r.workspaces.find(e=>e.id===n.workspaceId);return!t||!V(t.status)?!1:r.autoLoopStates[n.workspaceId]?.auto_loop===!0});function a(){let e=r.sessions[0];e&&r.selectSession(e.id)}return(e,n)=>i.value?(t(),g(Ve,{key:0,class:`bg-indigo-9 text-white q-ma-sm`,rounded:``},{avatar:u(()=>[v(F,{name:`loop`})]),action:u(()=>[v(R,{flat:``,dense:``,"no-caps":``,label:e.$t(`staleSessionBanner.switchToCurrent`),onClick:a},null,8,[`label`])]),default:u(()=>[E(`div`,rn,h(e.$t(`staleSessionBanner.title`)),1),E(`div`,an,h(e.$t(`staleSessionBanner.message`)),1)]),_:1})):_(``,!0)}}),sn={key:0,class:`row items-center q-pa-xs q-px-sm bg-dark text-grey-5 text-caption`},cn=D({__name:`WakeupBanner`,setup(e){let{t:n}=z(),r=G(),i=s(Date.now()),o=null;a(()=>{o=setInterval(()=>{i.value=Date.now()},1e3)}),x(()=>{o&&clearInterval(o)});let c=S(()=>{let e=r.selectedWorkspace;return e?r.pendingWakeups[e.id]??null:null}),l=S(()=>r.selectedWorkspace?!!c.value:!1),d=S(()=>{if(!c.value)return 0;let e=Math.ceil((new Date(c.value.targetAt).getTime()-i.value)/1e3);return Math.max(0,e)}),f=S(()=>d.value===0?n(`wakeup.firing`):n(`wakeup.scheduledIn`,{n:d.value}));function p(){let e=r.selectedWorkspace;e&&r.cancelPendingWakeup(e.id)}return(e,r)=>l.value?(t(),C(`div`,sn,[v(F,{name:`schedule`,size:`14px`,color:`amber-4`,class:`q-mr-sm`}),E(`span`,null,[y(h(f.value)+` `,1),c.value?.reason?(t(),g(J,{key:0,anchor:`top middle`,self:`bottom middle`,offset:[0,6]},{default:u(()=>[y(h(T(n)(`wakeup.reason`,{reason:c.value.reason})),1)]),_:1})):_(``,!0)]),v(X),v(R,{flat:``,dense:``,round:``,size:`xs`,icon:`close`,color:`grey-5`,"aria-label":T(n)(`wakeup.cancel`),onClick:p},{default:u(()=>[v(J,null,{default:u(()=>[y(h(T(n)(`wakeup.cancel`)),1)]),_:1})]),_:1},8,[`aria-label`])])):_(``,!0)}}),ln={class:`wp-header row items-center q-px-md q-py-sm no-wrap`},un={class:`text-body1 text-weight-medium text-grey-3 ellipsis`,style:{"max-width":`480px`}},dn={class:`row items-center no-wrap text-caption text-grey-5`},fn={class:`row items-center no-wrap text-caption text-grey-5`},pn={class:`row items-center no-wrap text-caption text-grey-5`},mn={key:1,class:`text-body2 text-grey-8`},hn={key:0,class:`wp-subheader column q-px-md q-pb-sm`},gn=[`title`],_n={class:`col column items-center justify-center`},vn={class:`text-grey-6 text-caption q-mt-sm`},yn={class:`text-subtitle1`},bn=Y(D({__name:`WorkspacePage`,setup(e){let r=f(()=>Promise.all([fe(()=>import(`./ActivityFeed-DlPVoOGb.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25])),new Promise(e=>setTimeout(e,500))]).then(([e])=>e)),i=Se(),o=G(),{t:c}=z(),{timeAgo:b}=Ae();function x(e){return e===`awaiting-user`?c(`workspaceStatus.awaitingUser`):e}s(!1);let D=s(!1),ee=new Set,O=s(``);n(()=>o.selectedWorkspace?.description??``,e=>{O.value=e},{immediate:!0});async function k(){if(!o.selectedWorkspace)return;let e=O.value.trim();if(e!==(o.selectedWorkspace.description??``)){if(e.length>200){i.notify({type:`negative`,message:c(`workspace.descriptionTooLong`),position:`top`});return}try{await o.updateWorkspaceDescription(o.selectedWorkspace.id,e.length>0?e:null)}catch(e){let t=e instanceof Error?e.message:c(`workspace.descriptionSaveFailed`);i.notify({type:`negative`,message:t,position:`top`})}}}let j=s(new Set),ne=S(()=>V(o.selectedWorkspace?.status));n(ne,e=>{e||(j.value=new Set)}),n(()=>o.selectedWorkspaceId,e=>{j.value=new Set,e&&o.fetchPendingWakeup(e)},{immediate:!0});function M(e){if(!ne.value)return;let t=new Set(j.value);t.add(e),j.value=t}function re(e){ee.add(e),e.finally(()=>{ee.delete(e)})}s(!1);async function N(){if(o.selectedWorkspaceId){D.value=!0;try{await o.stopWorkspace(o.selectedWorkspaceId)}catch(e){let t=e instanceof Error?e.message:c(`workspacePage.stopFailed`);i.notify({type:`negative`,message:t,position:`top`,timeout:6e3})}finally{D.value=!1}}}let P=S(()=>[...Me.map(e=>({label:c(e.i18nLabelKey),value:e.value}))]),I=S(()=>[{label:L(c(`reasoning.auto`)),value:`auto`},{label:L(c(`reasoning.low`)),value:`low`},{label:L(c(`reasoning.medium`)),value:`medium`},{label:L(c(`reasoning.high`)),value:`high`},{label:L(c(`reasoning.xhigh`)),value:`xhigh`},{label:L(c(`reasoning.max`)),value:`max`}]),ae=S(()=>{let e=o.selectedWorkspace,t=e?o.autoLoopStates[e.id]?.auto_loop??e.autoLoop:!1;return[{label:c(`agentPermissionMode.plan`),value:`plan`,disable:t},{label:c(`agentPermissionMode.bypass`),value:`bypass`,disable:!1},{label:c(`agentPermissionMode.strict`),value:`strict`,disable:!1},{label:c(`agentPermissionMode.interactive`),value:`interactive`,disable:!1}]}),oe=S({get:()=>o.selectedWorkspace?.model??`auto`,set:e=>{o.selectedWorkspaceId&&(M(`model`),re(o.updateModel(o.selectedWorkspaceId,e)))}}),se=S({get:()=>o.selectedWorkspace?.reasoningEffort??`auto`,set:e=>{o.selectedWorkspaceId&&(M(`reasoningEffort`),re(o.updateReasoningEffort(o.selectedWorkspaceId,e)))}});function L(e){let t=e.indexOf(`:`);return t>=0?e.slice(t+1).trim():e}function B(e){return I.value.find(t=>t.value===e)?.label??e}let U=S({get:()=>o.selectedWorkspace?.agentPermissionMode??`bypass`,set:e=>{o.selectedWorkspaceId&&(M(`agentPermissionMode`),re(o.updateAgentPermissionMode(o.selectedWorkspaceId,e)))}}),K=W(),pe=le(),q=S(()=>o.selectedWorkspaceId),Y=S(()=>o.selectedWorkspace),be=S(()=>o.sessions),Ce=S({get:()=>o.selectedSessionId,set:e=>{if(e===`__new__`){Ie();return}if(!e)return;o.selectSession(e);let t={...K.query};t.session=e,pe.replace({query:t})}}),we=S(()=>[...o.sessions.map((e,t)=>({label:e.name??c(`workspacePage.session`,{n:o.sessions.length-t}),value:e.id,caption:b(e.startedAt),isSession:!0})),{label:c(`workspacePage.newSession`),value:`__new__`,caption:``,isSession:!1}]),Te=s(!1),Ee=s(null),De=s(``),Oe=s(!1);function Pe(e,t){let n=o.sessions.find(t=>t.id===e);n&&(Ee.value={id:e},De.value=n.name??t,Te.value=!0)}async function Fe(){if(!(!Ee.value||!o.selectedWorkspaceId))try{await o.renameSession(o.selectedWorkspaceId,Ee.value.id,De.value.trim())}catch(e){console.error(`[WorkspacePage] renameSession failed:`,e),i.notify({type:`negative`,message:c(`workspacePage.renameFailed`),position:`top`})}finally{Te.value=!1}}async function Ie(){if(o.selectedWorkspaceId){Oe.value=!0;try{await o.createSession(o.selectedWorkspaceId)}catch(e){console.error(`[WorkspacePage] createSession failed:`,e);let t=e instanceof Error?e.message:null;i.notify({type:`negative`,message:t??c(`workspacePage.createSessionFailed`),position:`top`,timeout:6e3})}finally{Oe.value=!1}}}return a(()=>{let e=K.params.id;e&&(o.selectWorkspace(e),o.fetchPendingWakeup(e));let t=K.query.session;t&&o.selectSession(t)}),n(()=>K.params.id,e=>{e&&e!==o.selectedWorkspaceId&&o.selectWorkspace(e)}),n(()=>o.selectedWorkspaceId,e=>{e===null&&K.params.id&&pe.push({name:`workspace`})}),(e,n)=>(t(),g(Ne,{class:`column no-wrap`,style:{height:`100vh`}},{default:u(()=>[E(`div`,ln,[Y.value?(t(),C(w,{key:0},[E(`span`,un,[y(h(Y.value.name)+` `,1),v(J,null,{default:u(()=>[y(h(Y.value.name),1)]),_:1})]),v(ye,{label:x(Y.value.status),color:[`error`,`quota`].includes(Y.value.status)?`red-9`:Y.value.status===`awaiting-user`?`amber-9`:T(V)(Y.value.status)?`green-9`:`grey-8`,class:`q-ml-sm`,style:{"font-size":`10px`}},null,8,[`label`,`color`]),v(ke),be.value.length>0?(t(),g(je,{key:0,modelValue:Ce.value,"onUpdate:modelValue":n[0]||=e=>Ce.value=e,options:we.value,"emit-value":``,"map-options":``,dense:``,dark:``,borderless:``,"options-dense":``,loading:Oe.value,disable:Oe.value,class:`q-ml-sm`,style:{"min-width":`160px`,"max-width":`220px`,"font-size":`11px`}},{option:u(e=>[e.opt.isSession?_(``,!0):(t(),g(ie,{key:0,spaced:``})),v(ge,l(e.itemProps,{clickable:``,dense:``,class:`row items-center no-wrap`}),{default:u(()=>[v(_e,null,{default:u(()=>[v(ve,{class:p(e.opt.isSession?``:`text-grey-5`)},{default:u(()=>[y(h(e.opt.label),1)]),_:2},1032,[`class`]),e.opt.caption?(t(),g(ve,{key:0,caption:``},{default:u(()=>[y(h(e.opt.caption),1)]),_:2},1024)):_(``,!0)]),_:2},1024),e.opt.isSession?(t(),g(_e,{key:0,side:``},{default:u(()=>[v(R,{icon:`more_vert`,flat:``,dense:``,round:``,size:`xs`,color:`grey-6`,onClick:A(t=>Pe(e.opt.value,e.opt.label),[`stop`])},null,8,[`onClick`])]),_:2},1024)):_(``,!0)]),_:2},1040)]),_:1},8,[`modelValue`,`options`,`loading`,`disable`])):_(``,!0),v(X),v(je,{modelValue:U.value,"onUpdate:modelValue":n[1]||=e=>U.value=e,options:ae.value,"emit-value":``,"map-options":``,dense:``,dark:``,borderless:``,"options-dense":``,class:`q-mr-xs`,style:{"min-width":`80px`,"max-width":`140px`,"font-size":`11px`}},{selected:u(()=>[E(`span`,dn,[v(F,{name:U.value===`plan`?`visibility`:U.value===`strict`?`lock`:U.value===`interactive`?`security`:`flash_on`,size:`12px`,color:`amber-6`,class:`q-mr-xs`},null,8,[`name`]),y(` `+h(ae.value.find(e=>e.value===U.value)?.label??U.value)+` `,1),j.value.has(`agentPermissionMode`)?(t(),g(F,{key:0,name:`schedule`,size:`11px`,color:`orange-6`,class:`q-ml-xs`},{default:u(()=>[v(J,null,{default:u(()=>[y(h(e.$t(`workspacePage.pendingNextRun`)),1)]),_:1})]),_:1})):_(``,!0)])]),_:1},8,[`modelValue`,`options`]),v(je,{modelValue:oe.value,"onUpdate:modelValue":n[2]||=e=>oe.value=e,options:P.value,"emit-value":``,"map-options":``,dense:``,dark:``,borderless:``,"options-dense":``,class:`q-mr-sm model-select`,style:{"min-width":`100px`,"max-width":`160px`,"font-size":`11px`}},{selected:u(()=>[E(`span`,fn,[v(F,{name:`auto_awesome`,size:`12px`,color:`indigo-4`,class:`q-mr-xs`}),y(` `+h(P.value.find(e=>e.value===oe.value)?.label??oe.value)+` `,1),j.value.has(`model`)?(t(),g(F,{key:0,name:`schedule`,size:`11px`,color:`orange-6`,class:`q-ml-xs`},{default:u(()=>[v(J,null,{default:u(()=>[y(h(e.$t(`workspacePage.pendingNextRun`)),1)]),_:1})]),_:1})):_(``,!0)])]),_:1},8,[`modelValue`,`options`]),v(je,{modelValue:se.value,"onUpdate:modelValue":n[3]||=e=>se.value=e,options:I.value,"emit-value":``,"map-options":``,dense:``,dark:``,borderless:``,"options-dense":``,class:`q-mr-sm`,style:{"min-width":`90px`,"max-width":`140px`,"font-size":`11px`}},{selected:u(()=>[E(`span`,pn,[v(F,{name:`psychology`,size:`12px`,color:`amber-6`,class:`q-mr-xs`}),y(` `+h(B(se.value))+` `,1),j.value.has(`reasoningEffort`)?(t(),g(F,{key:0,name:`schedule`,size:`11px`,color:`orange-6`,class:`q-ml-xs`},{default:u(()=>[v(J,null,{default:u(()=>[y(h(e.$t(`workspacePage.pendingNextRun`)),1)]),_:1})]),_:1})):_(``,!0)])]),_:1},8,[`modelValue`,`options`]),T(V)(Y.value.status)?(t(),g(R,{key:1,dense:``,"no-caps":``,size:`sm`,color:`negative`,icon:`stop`,label:e.$t(`common.stop`),class:`q-mr-xs`,loading:D.value,disable:D.value,onClick:N},null,8,[`label`,`loading`,`disable`])):_(``,!0)],64)):(t(),C(`span`,mn,h(e.$t(`workspacePage.selectWorkspace`)),1))]),Y.value?(t(),C(`div`,hn,[v(ce,{modelValue:O.value,"onUpdate:modelValue":n[4]||=e=>O.value=e,dense:``,dark:``,borderless:``,placeholder:T(c)(`workspace.descriptionPlaceholder`),maxlength:200,"input-class":`text-caption text-grey-5`,class:`workspace-description-input`,style:{width:`100%`,"max-width":`960px`},onBlur:k,onKeydown:te(A(k,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`]),Y.value?.agentDescription?(t(),C(`div`,{key:0,class:`text-caption text-grey-7 q-mt-xs ellipsis`,style:{"font-style":`italic`,"max-width":`960px`},title:T(c)(`workspace.agentDescriptionTooltip`)},h(Y.value.agentDescription),9,gn)):_(``,!0)])):_(``,!0),v(ie,{dark:``}),q.value?(t(),g(He,{key:1,"workspace-id":q.value},null,8,[`workspace-id`])):_(``,!0),q.value?(t(),g(on,{key:2,"workspace-id":q.value},null,8,[`workspace-id`])):_(``,!0),q.value?(t(),g(nn,{key:3,"workspace-id":q.value},null,8,[`workspace-id`])):_(``,!0),q.value?(t(),g(m,{key:4},{fallback:u(()=>[E(`div`,_n,[v(he,{size:`40px`,color:`indigo-4`}),E(`div`,vn,h(e.$t(`common.loading`)),1)])]),default:u(()=>[v(T(r),{class:`col`,style:{"min-height":`0`},"workspace-id":q.value},null,8,[`workspace-id`])]),_:1})):_(``,!0),v(Be),v(cn),q.value?(t(),g(ft,{key:5,"workspace-id":q.value},null,8,[`workspace-id`])):_(``,!0),q.value?(t(),g($t,{key:6,"workspace-id":q.value},null,8,[`workspace-id`])):_(``,!0),q.value?(t(),g(Ht,{key:7,"workspace-id":q.value},null,8,[`workspace-id`])):_(``,!0),v(H,{modelValue:Te.value,"onUpdate:modelValue":n[6]||=e=>Te.value=e,persistent:``},{default:u(()=>[v(me,{dark:``,style:{"min-width":`320px`}},{default:u(()=>[v(ue,null,{default:u(()=>[E(`div`,yn,h(T(c)(`workspacePage.renameSessionTitle`)),1)]),_:1}),v(ue,null,{default:u(()=>[v(ce,{modelValue:De.value,"onUpdate:modelValue":n[5]||=e=>De.value=e,label:T(c)(`workspacePage.sessionNameLabel`),dark:``,dense:``,autofocus:``,onKeyup:te(Fe,[`enter`])},null,8,[`modelValue`,`label`])]),_:1}),v(de,{align:`right`},{default:u(()=>[d(v(R,{flat:``,label:T(c)(`common.cancel`)},null,8,[`label`]),[[xe]]),v(R,{flat:``,color:`primary`,label:T(c)(`workspacePage.renameSession`),disable:!De.value.trim(),onClick:Fe},null,8,[`label`,`disable`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}}),[[`__scopeId`,`data-v-455e6597`]]);export{bn as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as e,o as t}from"./index-CdHDdk1y.js";var n=t(({app:t})=>{t.use(e)});export{n as default};
|