@loicngr/kobo 1.7.6 → 1.7.7
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/README.md +84 -0
- package/dist/server/index.js +2 -0
- package/dist/server/routes/voice.js +149 -0
- package/dist/server/services/settings-service.js +57 -0
- package/dist/server/services/transcription-service.js +206 -0
- package/package.json +12 -10
- package/src/client/dist/spa/assets/{ActivityFeed-BboSPm4b.js → ActivityFeed-DlPVoOGb.js} +1 -1
- package/src/client/dist/spa/assets/{AutoLoopChip-w8D77bI5.js → AutoLoopChip-CkSzkC0C.js} +1 -1
- package/src/client/dist/spa/assets/{ClosePopup-D_UAdwkA.js → ClosePopup-DTcbxsC0.js} +1 -1
- package/src/client/dist/spa/assets/CreatePage-BoRappO3.css +1 -0
- package/src/client/dist/spa/assets/CreatePage-DpCVNwYk.js +2 -0
- package/src/client/dist/spa/assets/{DiffViewer-CblFgn8w.js → DiffViewer-D-uNbBq0.js} +3 -3
- package/src/client/dist/spa/assets/{HealthPage-CBSw7e5q.js → HealthPage-xZ0PP4F-.js} +1 -1
- package/src/client/dist/spa/assets/{MainLayout-DhaYycak.js → MainLayout-DdkKM2ba.js} +2 -2
- package/src/client/dist/spa/assets/{QBadge-DWH42dbo.js → QBadge-C7r6oPSi.js} +1 -1
- package/src/client/dist/spa/assets/{QBtn-a6jxWjmW.js → QBtn-DEuWKHbR.js} +1 -1
- package/src/client/dist/spa/assets/{QCheckbox-D5jfsxLV.js → QCheckbox-BvHfXBFY.js} +1 -1
- package/src/client/dist/spa/assets/{QChip-ByxK0Tuf.js → QChip-erWIZgxW.js} +1 -1
- package/src/client/dist/spa/assets/{QExpansionItem-CH1ipL9n.js → QExpansionItem-BGg74no1.js} +1 -1
- package/src/client/dist/spa/assets/QIcon-qfJNZLIW.js +1 -0
- package/src/client/dist/spa/assets/{QInput-Cm5-AGQ4.js → QInput-DCJEwE8V.js} +1 -1
- package/src/client/dist/spa/assets/{QItemLabel-DrTxqTqV.js → QItemLabel-CHkgkZVj.js} +1 -1
- package/src/client/dist/spa/assets/{QItemSection-5YpFpPDm.js → QItemSection-CQUDd0Vg.js} +1 -1
- package/src/client/dist/spa/assets/{QList-D0FtnQJI.js → QList-BbnN_oNX.js} +1 -1
- package/src/client/dist/spa/assets/{QMenu-B4xMxMGd.js → QMenu-D6uqosRg.js} +1 -1
- package/src/client/dist/spa/assets/{QPage-DFi3K093.js → QPage-Co2h9wd_.js} +1 -1
- package/src/client/dist/spa/assets/{QRadio-B3aKjCVu.js → QRadio-DJxOyOA3.js} +1 -1
- package/src/client/dist/spa/assets/QSpace-DKIph84L.js +1 -0
- package/src/client/dist/spa/assets/{QSpinnerDots-CszPQQ9J.js → QSpinnerDots-Bfl2RMy4.js} +1 -1
- package/src/client/dist/spa/assets/{QTabPanels-D2ks0UIA.js → QTabPanels-ClPY9y4T.js} +1 -1
- package/src/client/dist/spa/assets/{QToggle-1-N9qWq4.js → QToggle-DNOTC_3a.js} +1 -1
- package/src/client/dist/spa/assets/{QTooltip-fDNzBEfN.js → QTooltip-DUGPNNeQ.js} +1 -1
- package/src/client/dist/spa/assets/{SearchPage-cZTwP4Lf.js → SearchPage-C07dgzT9.js} +1 -1
- package/src/client/dist/spa/assets/SettingsPage-CLNmI0Rr.css +1 -0
- package/src/client/dist/spa/assets/SettingsPage-D0CZNqkA.js +9 -0
- package/src/client/dist/spa/assets/{TouchPan-DoE24Io3.js → TouchPan-DvVlszwO.js} +1 -1
- package/src/client/dist/spa/assets/WorkspacePage-CKeCLPi0.js +4 -0
- package/src/client/dist/spa/assets/WorkspacePage-CRIcsASQ.css +1 -0
- package/src/client/dist/spa/assets/{build-path-tree-B1Lvvqto.js → build-path-tree-CCMckvpr.js} +1 -1
- package/src/client/dist/spa/assets/{cssMode-BFLYiiEw.js → cssMode-D6XTTdwy.js} +1 -1
- package/src/client/dist/spa/assets/{documents-kx0vLfSG.js → documents-soWtna0O.js} +1 -1
- package/src/client/dist/spa/assets/{editor.api-2asmmhth.js → editor.api-6hDVHddO.js} +1 -1
- package/src/client/dist/spa/assets/{editor.main-ChCYZyez.js → editor.main-DsLU1RWu.js} +3 -3
- package/src/client/dist/spa/assets/{expand-template-CXQFkQOJ.js → expand-template-Crz1uiBt.js} +1 -1
- package/src/client/dist/spa/assets/{formatters-DCAQ6ANJ.js → formatters-guwb-rzl.js} +1 -1
- package/src/client/dist/spa/assets/{freemarker2-BaBL9E9G.js → freemarker2-Bn1f0t2U.js} +1 -1
- package/src/client/dist/spa/assets/{handlebars-BxDour4L.js → handlebars-O92Cbq66.js} +1 -1
- package/src/client/dist/spa/assets/{html-C6hnkfIL.js → html-Ck95BMBU.js} +1 -1
- package/src/client/dist/spa/assets/{htmlMode-9zT3-dmz.js → htmlMode-DDYhH2FJ.js} +1 -1
- package/src/client/dist/spa/assets/i18n-BLgknHpf.js +1 -0
- package/src/client/dist/spa/assets/index-CdHDdk1y.js +2 -0
- package/src/client/dist/spa/assets/{javascript-C3YjvKbE.js → javascript-Cy2ddqHg.js} +1 -1
- package/src/client/dist/spa/assets/{jsonMode-DcJDgMzf.js → jsonMode-BIfVcp5z.js} +1 -1
- package/src/client/dist/spa/assets/{liquid-CsT8SjJM.js → liquid-B287eegh.js} +1 -1
- package/src/client/dist/spa/assets/{mdx-CT3yVSyc.js → mdx-B8HSzGai.js} +1 -1
- package/src/client/dist/spa/assets/{models-BsjWUKqM.js → models-Bd_v3W7Q.js} +1 -1
- package/src/client/dist/spa/assets/{monaco.contribution-DKGNz1oQ.js → monaco.contribution-CofcHzEf.js} +2 -2
- package/src/client/dist/spa/assets/{notifications-OnPq4FrH.js → notifications-BPnKFW60.js} +1 -1
- package/src/client/dist/spa/assets/{purify.es-CPieV82n.js → purify.es-BCEwTYRx.js} +1 -1
- package/src/client/dist/spa/assets/{python-Ca5miKgj.js → python-csaKR6_U.js} +1 -1
- package/src/client/dist/spa/assets/{razor-7qzusGRc.js → razor-C2wEv-nX.js} +1 -1
- package/src/client/dist/spa/assets/{render-chat-markdown-Bqq2G-yI.js → render-chat-markdown-Bjcei0vn.js} +1 -1
- package/src/client/dist/spa/assets/runtime-core.esm-bundler-9Z0QAO_7.js +1 -0
- package/src/client/dist/spa/assets/{tsMode-BdvO8jZ2.js → tsMode-DGLVs57K.js} +1 -1
- package/src/client/dist/spa/assets/{typescript-BfVNzhgs.js → typescript-w0GWHzZ3.js} +1 -1
- package/src/client/dist/spa/assets/{use-checkbox-D7zmRxGI.js → use-checkbox-y_fOkYZN.js} +1 -1
- package/src/client/dist/spa/assets/{use-id-CuaR1RiE.js → use-id-_7wiRcgb.js} +1 -1
- package/src/client/dist/spa/assets/{use-panel-D-8nAQns.js → use-panel-CbJ44rqY.js} +1 -1
- package/src/client/dist/spa/assets/use-quasar-DQYS47mh.js +1 -0
- package/src/client/dist/spa/assets/{vue-i18n-BcfTCFFS.js → vue-i18n-DI-gS-CC.js} +1 -1
- package/src/client/dist/spa/assets/{xml-DGNXGqXL.js → xml-CTn-vnEd.js} +1 -1
- package/src/client/dist/spa/assets/{yaml-CtAtOyt5.js → yaml-CTyUSvLZ.js} +1 -1
- package/src/client/dist/spa/index.html +12 -12
- package/src/client/dist/spa/assets/CreatePage-BDObLDJc.js +0 -2
- package/src/client/dist/spa/assets/CreatePage-DssmsAsV.css +0 -1
- package/src/client/dist/spa/assets/QIcon-BJuyqdsT.js +0 -1
- package/src/client/dist/spa/assets/QSpace-CLtL3aPy.js +0 -1
- package/src/client/dist/spa/assets/SettingsPage-C1efO0VM.js +0 -1
- package/src/client/dist/spa/assets/SettingsPage-CMyeQ9_u.css +0 -1
- package/src/client/dist/spa/assets/WorkspacePage-3jcof896.js +0 -4
- package/src/client/dist/spa/assets/WorkspacePage-CCtIrBiR.css +0 -1
- package/src/client/dist/spa/assets/i18n-CLY0XI9-.js +0 -1
- package/src/client/dist/spa/assets/index-D6wj_wQ9.js +0 -2
- package/src/client/dist/spa/assets/runtime-core.esm-bundler-C3IgBgY5.js +0 -1
- package/src/client/dist/spa/assets/use-quasar-Sdcq6zzV.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{E as e,F as t,H as n,L as r,M as ee,N as te,Q as i,T as ne,U as a,_t as re,bt as o,d as s,f as c,g as l,h as u,l as d,p as f,r as ie,rt as p,u as m,v as ae,vt as oe,x as se}from"./runtime-core.esm-bundler-9Z0QAO_7.js";import{H as ce,R as le,U as h,t as g}from"./QIcon-qfJNZLIW.js";import{r as _}from"./use-id-_7wiRcgb.js";import{s as ue}from"./notifications-BPnKFW60.js";import{t as v}from"./QBtn-DEuWKHbR.js";import{n as de}from"./vue-i18n-DI-gS-CC.js";import{t as y}from"./QInput-DCJEwE8V.js";import{a as fe,h as pe,l as me,s as he}from"./index-CdHDdk1y.js";import{t as ge}from"./QSpinnerDots-Bfl2RMy4.js";import{n as b,t as x}from"./QItemSection-CQUDd0Vg.js";import{t as S}from"./QItemLabel-CHkgkZVj.js";import{t as C}from"./QTooltip-DUGPNNeQ.js";import{t as _e}from"./QExpansionItem-BGg74no1.js";import{t as ve}from"./_plugin-vue_export-helper-Cj6tcsj6.js";import{t as ye}from"./QSpace-DKIph84L.js";import{t as be}from"./use-quasar-DQYS47mh.js";import{n as w,t as xe}from"./models-Bd_v3W7Q.js";import{t as Se}from"./QPage-Co2h9wd_.js";import{i as Ce,n as we,r as Te,t as Ee}from"./expand-template-Crz1uiBt.js";var T=`kobo:create-page-prefs`;function De(){try{let e=localStorage.getItem(T);return e===null?void 0:JSON.parse(e)}catch{return}}function E(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Oe(){let e=De();if(!E(e))return{};let t={};return typeof e.projectPath==`string`&&e.projectPath.length>0&&(t.projectPath=e.projectPath),typeof e.autoLoop==`boolean`&&(t.autoLoop=e.autoLoop),t}function ke(e){try{localStorage.setItem(T,JSON.stringify(e))}catch{}}var Ae={class:`create-inner`},je={class:`create-title text-center text-weight-bold q-mb-lg text-grey-3`},Me={class:`create-card rounded-borders`},Ne={class:`card-top-bar row items-center q-px-md q-py-xs`},Pe={class:`model-badge cursor-default row items-center q-gutter-xs`},Fe={class:`text-indigo-3 text-weight-medium text-caption`},Ie={key:0,class:`notion-url-wrap`},Le={key:0,class:`notion-error text-caption q-px-md q-pb-xs text-red-5`},Re={key:1,class:`notion-valid text-caption q-px-md q-pb-xs text-green-4`},ze={key:2,class:`notion-peek-choice q-px-md q-pb-sm`},Be={class:`text-caption text-grey-4 q-mb-sm`},Ve={class:`row q-gutter-sm`},He={class:`peek-card-text`},Ue={class:`peek-card-title`},We={class:`peek-card-desc`},Ge={class:`peek-card-text`},Ke={class:`peek-card-title`},qe={class:`peek-card-desc`},Je={key:0,class:`sentry-url-wrap`},Ye={key:0,class:`sentry-error text-caption q-px-md q-pb-xs text-red-5`},Xe={key:1,class:`sentry-valid text-caption q-px-md q-pb-xs text-red-4`},Ze={class:`card-name-wrap`},Qe={class:`card-textarea-wrap`},$e={class:`row items-center justify-end q-px-sm q-pb-xs q-gutter-sm`},et={key:0,class:`row items-center text-caption text-amber-6`},tt={class:`manual-hint q-px-md q-py-sm text-caption text-grey-6`},nt={class:`q-pa-sm manual-section-body`},rt={class:`row items-center q-gutter-sm q-mb-sm`},it={class:`col text-caption text-grey-4`},at={class:`q-pa-sm manual-section-body`},ot={class:`row items-center q-gutter-sm q-mb-sm`},st={class:`col text-caption text-grey-4`},ct={class:`card-bottom-bar`},lt={class:`row q-col-gutter-xs q-px-xs`},ut={key:0,class:`col-12 col-sm-6 col-md-3`},dt={class:`bottom-select-label row items-center no-wrap`},ft={class:`col-12 col-sm-6 col-md-3`},pt={class:`bottom-select-label row items-center no-wrap`},mt={class:`col-12 col-sm-6 col-md-3`},ht={class:`bottom-select-label row items-center no-wrap`},gt={class:`col-12 col-md-3`},_t={class:`bottom-select-label row items-center no-wrap`},vt={class:`row q-col-gutter-xs q-pa-xs col-12 items-center justify-center`},yt={class:`col-12 col-md-auto`},bt={class:`col-12 col-md-auto`},xt={class:`col-12 col-md-auto`},St={class:`row q-col-gutter-xs q-px-xs bottom-row-git`},Ct={class:`col-12 col-md-4`},wt={key:0,class:`col-12 col-md-4`},Tt={class:`bottom-select-label row items-center no-wrap`},Et={key:1,class:`col-12 col-md-4`},Dt={class:`bottom-select-label row items-center no-wrap`},Ot={class:`col-12 col-md-4`},kt={class:`bottom-select-label row items-center no-wrap`},At={class:`row justify-center q-px-sm q-py-sm`},jt={class:`create-hint text-center text-body2 q-mt-md text-grey-8`},Mt=6e4,D=ve(ae({__name:`CreatePage`,setup(ae){let ve=fe(),T=be(),De=me(),E=ue(),{t:D}=de(),Nt=i([]),Pt=i(``),O=i(``),Ft=i(null),k=i(!1),A=i(!1),It=i(null),Lt=i(null),Rt=i([]),zt=i(null),j=i(``),M=i(!1),N=i(`claude-opus-4-7`),Bt=i(`auto`),P=i(``),F=i(null),Vt=i(`feature`),I=i(!1),Ht=d(()=>E.global.voiceEnabled),Ut=i([]),L=i(`claude-code`),Wt=d(()=>Ut.value.find(e=>e.id===L.value)),Gt=d(()=>Ut.value.map(e=>({value:e.id,label:e.displayName}))),Kt=[{label:`feature/`,value:`feature`},{label:`fix/`,value:`fix`},{label:`hotfix/`,value:`hotfix`},{label:`chore/`,value:`chore`},{label:`refactor/`,value:`refactor`},{label:`docs/`,value:`docs`},{label:`test/`,value:`test`}],qt=[`plan`,`bypass`,`strict`,`interactive`];function Jt(e){let t=e?E.getProjectByPath(e):void 0,n=t?.agentPermissionMode;if(typeof n==`string`&&qt.includes(n))return n;let r=E.global.defaultPermissionMode;return qt.includes(r)?r:r===`plan`?`plan`:t?.dangerouslySkipPermissions??E.global.dangerouslySkipPermissions??!0?`bypass`:`interactive`}let R=i(Jt(``)),Yt=d(()=>{switch(R.value){case`plan`:return`visibility`;case`bypass`:return`flash_on`;case`strict`:return`lock`;case`interactive`:return`security`}}),Xt=d(()=>(Wt.value?.capabilities.permissionModes??qt).map(e=>({value:e,label:D(`agentPermissionMode.${e}`),disabled:e===`plan`&&Y.value}))),z=i([]),Zt=i([]),Qt=i(!1),$t=i(!1);function en(e,t){t(()=>{Zt.value=e?z.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())):z.value})}let tn=pe();function nn(){return Ft.value?.nativeEl??null}let{showSkills:rn,selectedSkillIndex:B,groupedDropdown:an,flatDropdown:V,fetchSkills:on,detectSlashFragment:sn,replaceFragmentWith:cn,closeDropdown:ln}=Te(O,nn,{excludeKoboCommands:!0});on(),n(O,async()=>{await e(),await sn()});function un(e){if(e.type===`template`){let t=tn.templates.find(t=>t.slug===e.name);if(!t)return;cn(we(t.content,Ee({workspace:null,gitStats:null,sessionName:null}))),ln();return}cn(`/${e.name} `),ln()}function dn(e){!rn.value||V.value.length===0||(e.key===`ArrowDown`?(e.preventDefault(),B.value=(B.value+1)%V.value.length):e.key===`ArrowUp`?(e.preventDefault(),B.value=(B.value-1+V.value.length)%V.value.length):e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey?(e.preventDefault(),un(V.value[B.value])):e.key===`Escape`&&(e.preventDefault(),ln()))}async function fn(){if(!(!Ht.value||k.value||A.value)){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>`u`){T.notify({type:`warning`,message:D(`voice.notSupported`),position:`top`,timeout:4e3});return}try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});Lt.value=e,Rt.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&&Rt.value.push(e.data)},n.start(),It.value=n,k.value=!0,zt.value=setTimeout(()=>{H(),T.notify({type:`info`,message:D(`voice.maxDurationReached`),position:`top`,timeout:3500})},Mt)}catch{T.notify({type:`negative`,message:D(`voice.errorMicPermission`),position:`top`,timeout:5e3})}}}async function H(){if(!k.value)return;let e=It.value;if(!e)return;k.value=!1,A.value=!0,zt.value&&=(clearTimeout(zt.value),null);let t=await new Promise(t=>{e.onstop=()=>t(new Blob(Rt.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`,E.global.voiceLanguage||`auto`);let n=await fetch(`/api/voice/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()&&(O.value=O.value?`${O.value.trimEnd()} ${r.text.trim()}`:r.text.trim())}catch(e){let t=e instanceof Error?e.message:`TRANSCRIPTION_FAILED`;T.notify({type:`negative`,message:D({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{It.value=null,Rt.value=[],Lt.value?.getTracks().forEach(e=>{e.stop()}),Lt.value=null,A.value=!1}}function pn(e){return Ht.value?E.global.voicePttKey===`ctrl+space`?e.ctrlKey&&e.code===`Space`:e.key===`Alt`:!1}function mn(e){!pn(e)||e.repeat||(e.preventDefault(),fn())}function hn(e){pn(e)&&(e.preventDefault(),H())}function gn(){k.value&&H()}function _n(){document.visibilityState!==`visible`&&k.value&&H()}let vn=d(()=>xe.map(e=>({label:D(e.i18nLabelKey),value:e.value,description:D(e.i18nDescriptionKey)})));function U(e){let t=e.indexOf(`:`);return t>=0?e.slice(t+1).trim():e}let yn=d(()=>[{label:U(D(`reasoning.auto`)),value:`auto`,description:D(`reasoning.autoDescription`)},{label:U(D(`reasoning.low`)),value:`low`,description:D(`reasoning.lowDescription`)},{label:U(D(`reasoning.medium`)),value:`medium`,description:D(`reasoning.mediumDescription`)},{label:U(D(`reasoning.high`)),value:`high`,description:D(`reasoning.highDescription`)},{label:U(D(`reasoning.xhigh`)),value:`xhigh`,description:D(`reasoning.xhighDescription`)},{label:U(D(`reasoning.max`)),value:`max`,description:D(`reasoning.maxDescription`)}]),W=d(()=>j.value.trim().startsWith(`https://www.notion.so/`)),bn=d(()=>/[?&]p=[0-9a-f]{32}(?:[&#]|$)/i.test(j.value)),G=i(`panel`);function xn(){let e=j.value.trim();return G.value===`parent`&&bn.value?e.replace(/([?&])p=[0-9a-f]{32}(?=[&#]|$)/i,`$1`).replace(/([?&])pm=[a-z]+(?=[&#]|$)/i,`$1`).replace(/[?&]+$/,``).replace(/\?&/,`?`):e}let K=i([]),q=i([]),Sn=i(``),Cn=i(``),wn=d(()=>!M.value||!W.value);function Tn(){let e=Sn.value.trim();e&&(K.value.push(e),Sn.value=``)}function En(e){K.value.splice(e,1)}function Dn(){let e=Cn.value.trim();e&&(q.value.push(e),Cn.value=``)}function On(e){q.value.splice(e,1)}function kn(){M.value=!M.value,M.value||(j.value=``)}let J=i(!1),Y=i(!1);n(()=>Y.value,e=>{e&&R.value!==`bypass`&&(R.value=`bypass`,T.notify({type:`info`,message:D(`agentPermissionMode.autoLoopLocked`),timeout:4e3}))});let X=i(``),An=d(()=>/\/issues\/\d+/.test(X.value.trim()));function jn(){J.value=!J.value,J.value||(X.value=``)}let Z=i(!1),Q=i(null),$=i([]),Mn=i(!1);async function Nn(){if(!P.value.trim()){$.value=[];return}Mn.value=!0;try{$.value=await De.fetchOrphanWorktrees(P.value.trim())}catch{$.value=[]}finally{Mn.value=!1}}function Pn(){Z.value=!Z.value,Z.value?(M.value=!1,j.value=``,J.value=!1,X.value=``,I.value=!0,Nn()):Q.value=null}n(P,()=>{Q.value=null,Z.value&&Nn()}),n(Q,e=>{if(!e)return;let t=$.value.find(t=>t.path===e);t&&(F.value=t.suggestedSourceBranch),I.value=!0});async function Fn(e){if(!e.trim()){z.value=[],F.value=null;return}Qt.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();z.value=n.local??n.branches??[],z.value.length>0&&!F.value&&(F.value=z.value[0]??null)}catch{z.value=[],F.value=null}finally{Qt.value=!1}}function In(e){let t=E.getProjectByPath(e);t&&(t.defaultSourceBranch&&(F.value=t.defaultSourceBranch),t.defaultModel?N.value=t.defaultModel:E.global.defaultModel&&(N.value=E.global.defaultModel)),R.value=Jt(e)}let Ln=null;n(P,e=>{Ln&&clearTimeout(Ln),Ln=setTimeout(()=>{F.value=null,Fn(e),In(e)},500)});function Rn(e,t){t(()=>{Nt.value=E.projectPaths.filter(t=>t.toLowerCase().includes(e.toLowerCase()))})}ee(async()=>{await E.fetchSettings();let e=Oe();e.autoLoop===!0&&(Y.value=!0),e.projectPath&&E.projectPaths.includes(e.projectPath)&&(P.value=e.projectPath),R.value=Jt(P.value);try{let e=await fetch(`/api/engines`);e.ok&&(Ut.value=await e.json())}catch{}window.addEventListener(`keydown`,mn),window.addEventListener(`keyup`,hn),window.addEventListener(`blur`,gn),document.addEventListener(`visibilitychange`,_n)}),te(()=>{Ln&&clearTimeout(Ln),window.removeEventListener(`keydown`,mn),window.removeEventListener(`keyup`,hn),window.removeEventListener(`blur`,gn),document.removeEventListener(`visibilitychange`,_n),zt.value&&=(clearTimeout(zt.value),null),k.value&&H()});function zn(e){return e.normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).toLowerCase().replace(/[^a-z0-9\s-]/g,``).trim().replace(/\s+/g,`-`).replace(/-+/g,`-`).substring(0,50)}function Bn(){return Pt.value.trim()?Pt.value.trim().substring(0,80):!M.value&&!J.value&&O.value.trim()&&(O.value.trim().split(`
|
|
2
|
+
`)[0]??``).substring(0,80)||`workspace`}function Vn(e){let t=(e.split(`/`).pop()??``).split(`-`);t.length>1&&/^[0-9a-f]{12,}$/i.test(t[t.length-1])&&t.pop();let n=t.join(`-`).toLowerCase(),r=n.match(/tk-(\d+)/);if(r){let e=`TK-${r[1]}`,t=n.replace(/tk-\d+/i,``).replace(/-+/g,`-`).replace(/^-|-$/g,``).substring(0,40);return t?`${e}--${t}`:e}return n.substring(0,50)||`task-${Date.now()}`}function Hn(){return M.value&&!W.value?D(`createPage.validationNotionUrl`):J.value&&!An.value?D(`createPage.sentryValidation`):!M.value&&!J.value&&!O.value.trim()?D(`createPage.validationDescription`):!M.value&&!J.value&&(!Bn()||Bn()===`workspace`)&&!Pt.value.trim()&&!O.value.trim()?D(`createPage.validationName`):P.value.trim()?F.value?null:D(`createPage.validationBranch`):D(`createPage.validationPath`)}async function Un(){let e=Hn();if(e){T.notify({type:`negative`,message:e,position:`top`});return}if(Z.value&&!Q.value){T.notify({type:`negative`,message:D(`createPage.pickWorktreeRequired`),position:`top`});return}$t.value=!0;try{let e=Bn(),t;t=M.value&&W.value?Vn(xn()):e===`workspace`?`task-${Date.now()}`:zn(e);let n=`${Vt.value}/${t}`,r={name:e,projectPath:P.value.trim(),sourceBranch:F.value,...Z.value&&Q.value?{worktreePath:Q.value,skipSetupScript:!0}:{workingBranch:n},engine:L.value,model:N.value,reasoningEffort:Bt.value,...M.value&&W.value?{notionUrl:xn()}:{},...J.value&&An.value?{sentryUrl:X.value.trim()}:{},...wn.value&&K.value.length>0?{tasks:K.value}:{},...wn.value&&q.value.length>0?{acceptanceCriteria:q.value}:{},...I.value&&!Z.value?{skipSetupScript:!0}:{},...O.value.trim()?{description:O.value.trim()}:{},...Y.value?{autoLoop:!0}:{},agentPermissionMode:Y.value&&R.value===`plan`?`bypass`:R.value},ee=await De.createWorkspace(r);ke({projectPath:P.value.trim(),autoLoop:Y.value}),he().subscribe(ee.id),De.selectWorkspace(ee.id),ve.push({name:`workspace`,params:{id:ee.id}})}catch{T.notify({type:`negative`,message:D(`createPage.errorCreating`),position:`top`})}finally{$t.value=!1}}return(e,n)=>(t(),s(Se,{class:`create-page flex flex-center column`},{default:a(()=>[m(`div`,Ae,[m(`div`,je,o(e.$t(`createPage.title`)),1),m(`div`,Me,[m(`div`,Ne,[m(`span`,Pe,[l(g,{name:`auto_awesome`,size:`14px`,color:`indigo-4`}),m(`span`,Fe,o(Wt.value?.displayName??e.$t(`createPage.claudeCode`)),1)]),l(ye),l(v,{flat:``,dense:``,"no-caps":``,size:`sm`,color:M.value?`green-4`:`grey-5`,class:`notion-toggle-btn text-caption rounded-borders`,disable:Z.value,onClick:kn},{default:a(()=>[l(g,{name:`description`,size:`14px`,class:`q-mr-xs`}),u(` `+o(M.value?e.$t(`createPage.notionEnabled`):e.$t(`createPage.importNotion`)),1)]),_:1},8,[`color`,`disable`]),l(v,{flat:``,dense:``,"no-caps":``,size:`sm`,color:J.value?`red-4`:`grey-5`,class:`sentry-toggle-btn text-caption rounded-borders q-ml-sm`,disable:Z.value,onClick:jn},{default:a(()=>[l(g,{name:`bug_report`,size:`14px`,class:`q-mr-xs`}),u(` `+o(J.value?e.$t(`createPage.sentryEnabled`):e.$t(`createPage.importSentry`)),1)]),_:1},8,[`color`,`disable`])]),l(_,{color:`grey-9`}),l(le,{name:`slide`},{default:a(()=>[M.value?(t(),f(`div`,Ie,[l(y,{modelValue:j.value,"onUpdate:modelValue":n[0]||=e=>j.value=e,borderless:``,dense:``,placeholder:e.$t(`createPage.notionPlaceholder`),class:`notion-url-input`,"input-class":`notion-url-input-inner`},{prepend:a(()=>[l(g,{name:`link`,size:`16px`,color:W.value?`green-4`:`grey-6`},null,8,[`color`])]),_:1},8,[`modelValue`,`placeholder`]),j.value.trim()&&!W.value?(t(),f(`div`,Le,o(e.$t(`createPage.notionValidation`)),1)):c(``,!0),W.value?(t(),f(`div`,Re,o(e.$t(`createPage.notionAutoExtract`)),1)):c(``,!0),W.value&&bn.value?(t(),f(`div`,ze,[m(`div`,Be,[l(g,{name:`info`,size:`14px`,color:`indigo-4`,class:`q-mr-xs`}),u(` `+o(e.$t(`createPage.notionPanelChoiceLabel`)),1)]),m(`div`,Ve,[m(`button`,{type:`button`,class:re([`peek-card col`,{"peek-card--active":G.value===`panel`}]),onClick:n[1]||=e=>G.value=`panel`},[l(g,{name:`article`,size:`22px`,class:`peek-card-icon`}),m(`div`,He,[m(`div`,Ue,o(e.$t(`createPage.notionPanelOption`)),1),m(`div`,We,o(e.$t(`createPage.notionPanelOptionDesc`)),1)]),G.value===`panel`?(t(),s(g,{key:0,name:`check_circle`,size:`18px`,color:`indigo-4`,class:`peek-card-check`})):c(``,!0)],2),m(`button`,{type:`button`,class:re([`peek-card col`,{"peek-card--active":G.value===`parent`}]),onClick:n[2]||=e=>G.value=`parent`},[l(g,{name:`folder_open`,size:`22px`,class:`peek-card-icon`}),m(`div`,Ge,[m(`div`,Ke,o(e.$t(`createPage.notionParentOption`)),1),m(`div`,qe,o(e.$t(`createPage.notionParentOptionDesc`)),1)]),G.value===`parent`?(t(),s(g,{key:0,name:`check_circle`,size:`18px`,color:`indigo-4`,class:`peek-card-check`})):c(``,!0)],2)])])):c(``,!0)])):c(``,!0)]),_:1}),M.value?(t(),s(_,{key:0,color:`grey-9`})):c(``,!0),l(le,{name:`slide`},{default:a(()=>[J.value?(t(),f(`div`,Je,[l(y,{modelValue:X.value,"onUpdate:modelValue":n[3]||=e=>X.value=e,borderless:``,dense:``,placeholder:e.$t(`createPage.sentryPlaceholder`),class:`sentry-url-input`,"input-class":`sentry-url-input-inner`},{prepend:a(()=>[l(g,{name:`link`,size:`16px`,color:An.value?`red-4`:`grey-6`},null,8,[`color`])]),_:1},8,[`modelValue`,`placeholder`]),X.value.trim()&&!An.value?(t(),f(`div`,Ye,o(e.$t(`createPage.sentryValidation`)),1)):c(``,!0),An.value?(t(),f(`div`,Xe,o(e.$t(`createPage.sentryAutoExtract`)),1)):c(``,!0)])):c(``,!0)]),_:1}),J.value?(t(),s(_,{key:1,color:`grey-9`})):c(``,!0),m(`div`,Ze,[l(y,{modelValue:Pt.value,"onUpdate:modelValue":n[4]||=e=>Pt.value=e,borderless:``,dense:``,placeholder:M.value&&W.value?e.$t(`createPage.workspaceName`):e.$t(`createPage.workspaceNamePlaceholder`),class:`name-input`,"input-class":`name-input-inner`},null,8,[`modelValue`,`placeholder`])]),l(_,{color:`grey-9`}),m(`div`,Qe,[l(y,{ref_key:`descriptionRef`,ref:Ft,modelValue:O.value,"onUpdate:modelValue":n[5]||=e=>O.value=e,type:`textarea`,borderless:``,autogrow:``,rows:3,placeholder:M.value?e.$t(`createPage.instructions`):e.$t(`createPage.instructionsPlaceholder`),class:`create-textarea`,"input-class":`create-textarea-input`,onKeydown:[dn,ce(h(Un,[`ctrl`]),[`enter`]),ce(h(Un,[`meta`]),[`enter`])]},null,8,[`modelValue`,`placeholder`,`onKeydown`]),m(`div`,$e,[A.value?(t(),f(`div`,et,[l(ge,{size:`14px`,color:`amber-6`,class:`q-mr-xs`}),m(`span`,null,o(e.$t(`voice.transcribing`)),1)])):c(``,!0),l(v,{flat:``,dense:``,size:`sm`,icon:A.value?`hourglass_top`:k.value?`mic`:`mic_none`,color:k.value?`red-5`:A.value?`amber-6`:`grey-6`,disable:!Ht.value||A.value,class:re({"voice-btn--recording":k.value}),onMousedown:h(fn,[`prevent`]),onMouseup:h(H,[`prevent`]),onMouseleave:h(H,[`prevent`]),onTouchstart:h(fn,[`prevent`]),onTouchend:h(H,[`prevent`])},{default:a(()=>[l(C,null,{default:a(()=>[u(o(A.value?e.$t(`voice.transcribing`):k.value?e.$t(`voice.recording`):e.$t(`voice.holdToTalk`)),1)]),_:1})]),_:1},8,[`icon`,`color`,`disable`,`class`])]),p(rn)&&p(V).length>0?(t(),s(Ce,{key:0,class:`create-slash-popup`,"grouped-dropdown":p(an),"flat-dropdown":p(V),"selected-index":p(B),onSelect:un},null,8,[`grouped-dropdown`,`flat-dropdown`,`selected-index`])):c(``,!0)]),l(_,{color:`grey-9`}),wn.value?(t(),f(ie,{key:2},[m(`div`,tt,o(e.$t(`createPage.manualHint`)),1),l(_e,{dark:``,dense:``,label:e.$t(`createPage.tasks`,{count:K.value.length}),"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm`},{default:a(()=>[m(`div`,nt,[m(`div`,rt,[l(y,{modelValue:Sn.value,"onUpdate:modelValue":n[6]||=e=>Sn.value=e,dark:``,dense:``,borderless:``,placeholder:e.$t(`createPage.addTask`),class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:ce(h(Tn,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`]),l(v,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!Sn.value.trim(),onClick:Tn},{default:a(()=>[l(C,null,{default:a(()=>[u(o(e.$t(`tooltip.addTask`)),1)]),_:1})]),_:1},8,[`disable`])]),(t(!0),f(ie,null,r(K.value,(n,r)=>(t(),f(`div`,{key:`task-${r}`,class:`row items-center q-py-xs manual-item`},[m(`span`,it,o(n),1),l(v,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>En(r)},{default:a(()=>[l(C,null,{default:a(()=>[u(o(e.$t(`tooltip.removeTask`)),1)]),_:1})]),_:1},8,[`onClick`])]))),128))])]),_:1},8,[`label`]),l(_e,{dark:``,dense:``,label:e.$t(`createPage.acceptanceCriteria`,{count:q.value.length}),"header-class":`text-grey-4 manual-expansion-header`,class:`manual-expansion q-mx-sm q-mb-sm`},{default:a(()=>[m(`div`,at,[m(`div`,ot,[l(y,{modelValue:Cn.value,"onUpdate:modelValue":n[7]||=e=>Cn.value=e,dark:``,dense:``,borderless:``,placeholder:e.$t(`createPage.addCriterion`),class:`col manual-input`,"input-class":`manual-input-inner`,onKeydown:ce(h(Dn,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`]),l(v,{flat:``,dense:``,round:``,icon:`add`,color:`indigo-4`,disable:!Cn.value.trim(),onClick:Dn},{default:a(()=>[l(C,null,{default:a(()=>[u(o(e.$t(`tooltip.addCriterion`)),1)]),_:1})]),_:1},8,[`disable`])]),(t(!0),f(ie,null,r(q.value,(n,r)=>(t(),f(`div`,{key:`crit-${r}`,class:`row items-center q-py-xs manual-item`},[m(`span`,st,o(n),1),l(v,{flat:``,dense:``,round:``,icon:`close`,size:`xs`,color:`grey-6`,onClick:e=>On(r)},{default:a(()=>[l(C,null,{default:a(()=>[u(o(e.$t(`tooltip.removeCriterion`)),1)]),_:1})]),_:1},8,[`onClick`])]))),128))])]),_:1},8,[`label`]),l(_,{color:`grey-9`})],64)):c(``,!0),m(`div`,ct,[m(`div`,lt,[Gt.value.length>0?(t(),f(`div`,ut,[l(w,{modelValue:L.value,"onUpdate:modelValue":n[8]||=e=>L.value=e,options:Gt.value,dense:``,borderless:``,class:`bottom-select rounded-borders`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`},{selected:a(()=>[m(`span`,dt,[l(g,{name:`hub`,size:`12px`,color:`grey-5`,class:`q-mr-xs`}),u(` `+o(Gt.value.find(e=>e.value===L.value)?.label??L.value)+` `,1),l(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),default:a(()=>[l(C,null,{default:a(()=>[u(o(e.$t(`engine.select`)),1)]),_:1})]),_:1},8,[`modelValue`,`options`])])):c(``,!0),m(`div`,ft,[l(w,{modelValue:N.value,"onUpdate:modelValue":n[9]||=e=>N.value=e,options:vn.value,dense:``,borderless:``,class:`bottom-select rounded-borders model-select`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`},{selected:a(()=>[m(`span`,pt,[u(o(vn.value.find(e=>e.value===N.value)?.label??N.value)+` `,1),l(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),option:a(({opt:e,itemProps:t})=>[l(b,ne(t,{class:`model-option`}),{default:a(()=>[l(x,null,{default:a(()=>[l(S,{class:`text-white`},{default:a(()=>[u(o(e.label),1)]),_:2},1024),l(S,{caption:``,class:`text-grey-5`},{default:a(()=>[u(o(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`,`options`])]),m(`div`,mt,[l(w,{modelValue:Bt.value,"onUpdate:modelValue":n[10]||=e=>Bt.value=e,options:yn.value,dense:``,borderless:``,class:`bottom-select rounded-borders`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`},{selected:a(()=>[m(`span`,ht,[l(g,{name:`psychology`,size:`12px`,color:`grey-5`,class:`q-mr-xs`}),u(` `+o(yn.value.find(e=>e.value===Bt.value)?.label??Bt.value)+` `,1),l(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),option:a(({opt:e,itemProps:t})=>[l(b,oe(se(t)),{default:a(()=>[l(x,null,{default:a(()=>[l(S,{class:`text-white`},{default:a(()=>[u(o(e.label),1)]),_:2},1024),l(S,{caption:``,class:`text-grey-5`},{default:a(()=>[u(o(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`,`options`])]),m(`div`,gt,[l(w,{modelValue:R.value,"onUpdate:modelValue":n[11]||=e=>R.value=e,options:Xt.value,disable:Y.value,dense:``,borderless:``,class:`bottom-select rounded-borders`,"hide-dropdown-icon":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,"option-disable":e=>e.disabled===!0},{selected:a(()=>[m(`span`,_t,[l(g,{name:Yt.value,size:`12px`,color:`amber-6`,class:`q-mr-xs`},null,8,[`name`]),u(` `+o(Xt.value.find(e=>e.value===R.value)?.label??R.value)+` `,1),Y.value?c(``,!0):(t(),s(g,{key:0,name:`expand_more`,size:`12px`,color:`grey-5`}))])]),default:a(()=>[l(C,null,{default:a(()=>[u(o(Y.value?e.$t(`agentPermissionMode.autoLoopLocked`):e.$t(`agentPermissionMode.tooltip`)),1)]),_:1})]),_:1},8,[`modelValue`,`options`,`disable`,`option-disable`])])]),m(`div`,vt,[m(`div`,yt,[l(v,{flat:``,dense:``,size:`sm`,"no-caps":``,icon:Y.value?`autorenew`:`sync_disabled`,color:Y.value?`amber-4`:`grey-5`,label:e.$t(`autoLoop.startInMode`),class:`skip-setup-btn`,onClick:n[12]||=e=>Y.value=!Y.value},{default:a(()=>[l(C,null,{default:a(()=>[u(o(e.$t(`autoLoop.startInMode`)),1)]),_:1})]),_:1},8,[`icon`,`color`,`label`])]),m(`div`,bt,[l(v,{flat:``,dense:``,size:`sm`,"no-caps":``,icon:I.value?`play_disabled`:`play_circle`,color:I.value?`orange-4`:`grey-5`,label:e.$t(`createPage.skipSetupScript`),class:`skip-setup-btn`,onClick:n[13]||=e=>I.value=!I.value},{default:a(()=>[l(C,null,{default:a(()=>[u(o(e.$t(`createPage.skipSetupScript`)),1)]),_:1})]),_:1},8,[`icon`,`color`,`label`])]),m(`div`,xt,[l(v,{flat:``,dense:``,size:`sm`,"no-caps":``,icon:`folder_open`,color:Z.value?`cyan-4`:`grey-5`,label:Z.value?e.$t(`createPage.attachWorktreeEnabled`):e.$t(`createPage.attachWorktreeToggle`),class:`skip-setup-btn`,onClick:Pn},null,8,[`color`,`label`])])]),m(`div`,St,[m(`div`,Ct,[l(w,{modelValue:P.value,"onUpdate:modelValue":n[14]||=e=>P.value=e,options:Nt.value,dense:``,borderless:``,"use-input":``,"fill-input":``,"hide-selected":``,"input-debounce":`0`,"new-value-mode":`add`,class:`bottom-select rounded-borders repo-select`,"hide-dropdown-icon":``,"input-class":P.value?``:`repo-input-empty`,placeholder:e.$t(`createPage.projectPath`),behavior:p(E).projectPaths.length>0?`menu`:`dialog`,onFilter:Rn,onInputValue:n[15]||=e=>{P.value=e}},{prepend:a(()=>[l(g,{name:`folder`,size:`14px`,color:`grey-5`})]),"no-option":a(()=>[l(b,null,{default:a(()=>[l(x,{class:`text-grey-6 text-caption`},{default:a(()=>[u(o(e.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`input-class`,`placeholder`,`behavior`])]),Z.value?c(``,!0):(t(),f(`div`,wt,[l(w,{modelValue:Vt.value,"onUpdate:modelValue":n[16]||=e=>Vt.value=e,options:Kt,"emit-value":``,"map-options":``,dense:``,borderless:``,class:`bottom-select rounded-borders branch-type-select`,"hide-dropdown-icon":``},{selected:a(()=>[m(`span`,Tt,[l(g,{name:`account_tree`,size:`12px`,color:`grey-5`,class:`q-mr-xs`}),u(` `+o(Vt.value)+`/ `,1),l(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),default:a(()=>[l(C,null,{default:a(()=>[u(o(e.$t(`createPage.branchType`)),1)]),_:1})]),_:1},8,[`modelValue`])])),Z.value?(t(),f(`div`,Et,[l(w,{modelValue:Q.value,"onUpdate:modelValue":n[17]||=e=>Q.value=e,options:$.value,"option-label":`branch`,"option-value":`path`,"emit-value":``,"map-options":``,"use-input":``,dense:``,borderless:``,class:`bottom-select rounded-borders worktree-select`,"hide-dropdown-icon":``,loading:Mn.value,disable:!P.value.trim()||Mn.value},{selected:a(()=>[m(`span`,Dt,[l(g,{name:`folder_open`,size:`12px`,color:`cyan-5`,class:`q-mr-xs`}),u(` `+o(Q.value?$.value.find(e=>e.path===Q.value)?.branch??Q.value:e.$t(`createPage.worktreePickerLabel`))+` `,1),l(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),option:a(e=>[l(b,oe(se(e.itemProps)),{default:a(()=>[l(x,null,{default:a(()=>[l(S,null,{default:a(()=>[u(o(e.opt.branch),1)]),_:2},1024),l(S,{caption:``},{default:a(()=>[u(o(e.opt.path),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),"no-option":a(()=>[l(b,null,{default:a(()=>[l(x,{class:`text-grey-6 text-caption`},{default:a(()=>[u(o(P.value.trim()?e.$t(`createPage.noOrphanWorktrees`):e.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`loading`,`disable`])])):c(``,!0),m(`div`,Ot,[l(w,{modelValue:F.value,"onUpdate:modelValue":n[18]||=e=>F.value=e,options:Zt.value,dense:``,borderless:``,class:`bottom-select rounded-borders branch-select`,"hide-dropdown-icon":``,"use-input":``,"input-debounce":`0`,loading:Qt.value,disable:!P.value.trim()||Qt.value,onFilter:en},{selected:a(()=>[m(`span`,kt,[l(g,{name:`call_split`,size:`12px`,color:`grey-5`,class:`q-mr-xs`}),u(` `+o(F.value??e.$t(`createPage.branch`))+` `,1),l(g,{name:`expand_more`,size:`12px`,color:`grey-5`})])]),"no-option":a(()=>[l(b,null,{default:a(()=>[l(x,{class:`text-grey-6 text-caption`},{default:a(()=>[u(o(P.value.trim()?e.$t(`createPage.noBranches`):e.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`loading`,`disable`])])])]),m(`div`,At,[l(v,{label:e.$t(`createPage.create`),"no-caps":``,unelevated:``,class:`create-btn text-weight-bold rounded-borders`,loading:$t.value,disable:$t.value||Z.value&&!Q.value,onClick:Un},null,8,[`label`,`loading`,`disable`])])]),m(`div`,jt,o(M.value?e.$t(`createPage.notionExtractHint`):e.$t(`createPage.notionImportHint`)),1)])]),_:1}))}}),[[`__scopeId`,`data-v-f1afc3a6`]]);export{D as default};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/editor.main-
|
|
2
|
-
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,l as h,p as g,r as _,rt as v,u as y,v as b,yt as x}from"./runtime-core.esm-bundler-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/editor.main-DsLU1RWu.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/editor.api-6hDVHddO.js","assets/editor-COGk2gAX.css","assets/monaco.contribution-CofcHzEf.js","assets/editor-CS3NEPi9.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
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,l as h,p as g,r as _,rt as v,u as y,v as b,yt as x}from"./runtime-core.esm-bundler-9Z0QAO_7.js";import{P as S,a as C,t as w}from"./QIcon-qfJNZLIW.js";import{r as ee}from"./use-id-_7wiRcgb.js";import{n as T,t as E}from"./QBtn-DEuWKHbR.js";import{n as te}from"./vue-i18n-DI-gS-CC.js";import{i as D,o as O,t as k}from"./QInput-DCJEwE8V.js";import{l as ne,r as re,s as ie}from"./index-CdHDdk1y.js";import{t as ae}from"./QSpinnerDots-Bfl2RMy4.js";import{n as oe,t as se}from"./QItemSection-CQUDd0Vg.js";import{t as A}from"./QTooltip-DUGPNNeQ.js";import{r as ce,t as j}from"./render-chat-markdown-Bjcei0vn.js";import{t as M}from"./_plugin-vue_export-helper-Cj6tcsj6.js";import{t as N}from"./QBadge-C7r6oPSi.js";import{t as le}from"./QSpace-DKIph84L.js";import{i as P,n as ue,r as de,t as fe}from"./build-path-tree-CCMckvpr.js";import{t as pe}from"./QList-BbnN_oNX.js";import{t as me}from"./QMenu-D6uqosRg.js";import{t as he}from"./ClosePopup-DTcbxsC0.js";import{t as ge}from"./use-quasar-DQYS47mh.js";var F=S({name:`QBtnToggle`,props:{...O,modelValue:{required:!0},options:{type:Array,required:!0,validator:e=>e.every(e=>(`label`in e||`icon`in e||`slot`in e)&&`value`in e)},color:String,textColor:String,toggleColor:{type:String,default:`primary`},toggleTextColor:String,outline:Boolean,flat:Boolean,unelevated:Boolean,rounded:Boolean,push:Boolean,glossy:Boolean,size:String,padding:String,noCaps:Boolean,noWrap:Boolean,dense:Boolean,readonly:Boolean,disable:Boolean,stack:Boolean,stretch:Boolean,spread:Boolean,clearable:Boolean,ripple:{type:[Boolean,Object],default:!0}},emits:[`update:modelValue`,`clear`,`click`],setup(e,{slots:t,emit:n}){let r=h(()=>e.options.find(t=>t.value===e.modelValue)!==void 0),i=D(h(()=>({type:`hidden`,name:e.name,value:e.modelValue}))),a=h(()=>T(e)),s=h(()=>({rounded:e.rounded,dense:e.dense,...a.value})),c=h(()=>e.options.map((t,n)=>{let{attrs:r,value:i,slot:a,...o}=t;return{slot:a,props:{key:n,"aria-pressed":i===e.modelValue?`true`:`false`,...r,...o,...s.value,disable:e.disable===!0||o.disable===!0,color:i===e.modelValue?u(o,`toggleColor`):u(o,`color`),textColor:i===e.modelValue?u(o,`toggleTextColor`):u(o,`textColor`),noCaps:u(o,`noCaps`)===!0,noWrap:u(o,`noWrap`)===!0,size:u(o,`size`),padding:u(o,`padding`),ripple:u(o,`ripple`),stack:u(o,`stack`)===!0,stretch:u(o,`stretch`)===!0,onClick(e){l(i,t,e)}}}}));function l(t,r,i){e.readonly!==!0&&(e.modelValue===t?e.clearable===!0&&(n(`update:modelValue`,null,null),n(`clear`)):n(`update:modelValue`,t,r),n(`click`,i))}function u(t,n){return t[n]===void 0?e[n]:t[n]}function d(){let n=c.value.map(e=>o(E,e.props,e.slot===void 0?void 0:t[e.slot]));return e.name!==void 0&&e.disable!==!0&&r.value===!0&&i(n,`push`),C(t.default,n)}return()=>o(P,{class:`q-btn-toggle`,...a.value,rounded:e.rounded,stretch:e.stretch,glossy:e.glossy,spread:e.spread},d)}});function I(e){if(!e.filePath||e.filePath.startsWith(`/`))throw Error(`Invalid filePath: must be non-empty POSIX path relative to workspace root`);return{id:crypto.randomUUID(),filePath:e.filePath,line:e.line,content:e.content,createdAt:new Date().toISOString()}}function L(e){let t=e.split(`
|
|
3
3
|
`);return t.length===1?e:t.map((e,t)=>t===0?e:` ${e}`).join(`
|
|
4
4
|
`)}function R(e){let{comments:t,globalMessage:n}=e;if(t.length===0)return`## Code review\n\n${n}`;let r=new Map;for(let e of t){let t=r.get(e.filePath)??[];t.push(e),r.set(e.filePath,t)}for(let e of r.values())e.sort((e,t)=>e.line-t.line||e.createdAt.localeCompare(t.createdAt));let i=Array.from(r.keys()).sort(),a=i.map(e=>`### \`${e}\`\n\n${r.get(e).map(e=>`- **L${e.line}** : ${L(e.content)}`).join(`
|
|
5
5
|
`)}`),o=i.length,s=`_${t.length} comment${t.length===1?``:`s`} across ${o} file${o===1?``:`s`}. Address them and ping me back when done._`;return`## Code review — please address the following${n?`\n\n${n}`:``}\n\n${a.join(`
|
|
6
6
|
|
|
7
|
-
`)}\n\n---\n${s}`}var z=300;function B(e){return`kobo:review-draft:${e}`}function V(e){let t=localStorage.getItem(B(e));if(!t)return{comments:[],globalMessage:``};try{let e=JSON.parse(t);return{comments:Array.isArray(e.comments)?e.comments:[],globalMessage:typeof e.globalMessage==`string`?e.globalMessage:``}}catch{return{comments:[],globalMessage:``}}}function _e(e,t){let n=a(V(e)),r=null;function i(){r!==null&&clearTimeout(r),r=setTimeout(()=>{r=null;try{localStorage.setItem(B(e),JSON.stringify(n.value))}catch(e){console.warn(`[review-draft] persist failed:`,e)}},z)}function o(){if(r!==null){clearTimeout(r),r=null;try{localStorage.setItem(B(e),JSON.stringify(n.value))}catch(e){console.warn(`[review-draft] flush failed:`,e)}}}function s(e){let t=I(e);return n.value.comments.push(t),i(),t}function c(e,t){let r=n.value.comments.find(t=>t.id===e);r&&(r.content=t,i())}function l(e){n.value.comments=n.value.comments.filter(t=>t.id!==e),i()}function u(e){n.value.globalMessage=e,i()}function d(){n.value={comments:[],globalMessage:``},r!==null&&(clearTimeout(r),r=null),localStorage.removeItem(B(e))}async function f(r){if(n.value.comments.length===0&&n.value.globalMessage.trim()===``)return{ok:!1,error:`Draft is empty`};o();let i=R(n.value);try{await t.sendChatMessage(e,i,r)}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}return d(),{ok:!0}}return{draft:n,addComment:s,updateComment:c,deleteComment:l,setGlobalMessage:u,clearDraft:d,flush:o,submit:f}}var ve={class:`review-comment-block`},ye={class:`comment-actions q-mt-xs`},H=[`innerHTML`],be={class:`comment-footer`},U={class:`comment-time text-caption text-grey-7`},xe={class:`comment-actions q-mt-xs`},Se=M(b({__name:`ReviewCommentBlock`,props:{comments:{},startInAddMode:{type:Boolean}},emits:[`add`,`update`,`delete`,`dismissEmpty`],setup(t,{emit:r}){let i=t,o=r,{t:c}=te(),h=ge(),v=a(null),b=a(``),x=a(i.startInAddMode===!0),S=a(``);function C(e){return j(e)}function w(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return c(`common.justNow`);if(n<60)return c(`common.minutesAgo`,{count:n});let r=Math.floor(n/60);return r<24?c(`common.hoursAgo`,{count:r}):c(`common.daysAgo`,{count:Math.floor(r/24)})}function ee(e){v.value=e.id,b.value=e.content}function T(){v.value=null,b.value=``}function D(e){let t=b.value.trim();t&&(o(`update`,e,t),v.value=null,b.value=``)}function O(e){h.dialog({title:c(`diff.deleteComment`),message:c(`diff.deleteCommentConfirm`),cancel:!0,persistent:!0,ok:{label:c(`diff.deleteComment`),color:`negative`,flat:!1,unelevated:!0}}).onOk(()=>{o(`delete`,e)})}function ne(){x.value=!1,S.value=``,i.comments.length===0&&o(`dismissEmpty`)}function re(){let e=S.value.trim();e&&(o(`add`,e),x.value=!1,S.value=``)}return(r,i)=>(e(),g(`div`,ve,[(e(!0),g(_,null,n(t.comments,(t,n)=>(e(),g(`div`,{key:t.id,class:l([`comment-thread-item`,{"with-separator":n>0}])},[v.value===t.id?(e(),g(_,{key:0},[p(k,{modelValue:b.value,"onUpdate:modelValue":i[0]||=e=>b.value=e,type:`textarea`,autogrow:``,dense:``,dark:``,outlined:``,autofocus:``,class:`comment-textarea`,placeholder:r.$t(`diff.commentPlaceholder`)},null,8,[`modelValue`,`placeholder`]),y(`div`,ye,[p(E,{flat:``,dense:``,size:`sm`,label:r.$t(`common.cancel`),onClick:T},null,8,[`label`]),p(E,{unelevated:``,dense:``,size:`sm`,color:`primary`,label:r.$t(`common.save`),onClick:e=>D(t.id)},null,8,[`label`,`onClick`])])],64)):(e(),g(_,{key:1},[y(`div`,{class:`comment-content`,innerHTML:C(t.content)},null,8,H),y(`div`,be,[y(`span`,U,u(w(t.createdAt)),1),p(E,{flat:``,dense:``,round:``,size:`xs`,icon:`edit`,color:`grey-5`,onClick:e=>ee(t)},{default:s(()=>[p(A,null,{default:s(()=>[m(u(r.$t(`diff.editComment`)),1)]),_:1})]),_:1},8,[`onClick`]),p(E,{flat:``,dense:``,round:``,size:`xs`,icon:`delete`,color:`grey-5`,onClick:e=>O(t.id)},{default:s(()=>[p(A,null,{default:s(()=>[m(u(r.$t(`diff.deleteComment`)),1)]),_:1})]),_:1},8,[`onClick`])])],64))],2))),128)),x.value?(e(),g(_,{key:0},[p(k,{modelValue:S.value,"onUpdate:modelValue":i[1]||=e=>S.value=e,type:`textarea`,autogrow:``,dense:``,dark:``,outlined:``,autofocus:``,class:`comment-textarea q-mt-sm`,placeholder:r.$t(`diff.commentPlaceholder`)},null,8,[`modelValue`,`placeholder`]),y(`div`,xe,[p(E,{flat:``,dense:``,size:`sm`,label:r.$t(`common.cancel`),onClick:ne},null,8,[`label`]),p(E,{unelevated:``,dense:``,size:`sm`,color:`primary`,disable:!S.value.trim(),label:r.$t(`diff.addComment`),onClick:re},null,8,[`disable`,`label`])])],64)):t.comments.length>0?(e(),d(E,{key:1,flat:``,dense:``,size:`sm`,icon:`reply`,label:r.$t(`diff.replyComment`),class:`reply-btn q-mt-xs`,onClick:i[2]||=e=>x.value=!0},null,8,[`label`])):f(``,!0)]))}}),[[`__scopeId`,`data-v-9abff76f`]]),Ce={class:`review-draft-panel q-pa-sm`},W={class:`text-caption text-uppercase text-weight-bold text-grey-6 q-mb-sm`,style:{"letter-spacing":`0.05em`}},we={key:0,class:`text-caption text-grey-7 q-pa-sm`},Te=[`onClick`],G={style:{"font-family":`'Roboto Mono', monospace`,"font-size":`11px`}},K=[`onClick`],Ee={class:`text-grey-6 q-mr-xs`,style:{"font-family":`monospace`}},De={class:`text-grey-3 ellipsis`},Oe={class:`global-message-box q-mt-sm`},ke=M(b({__name:`ReviewDraftPanel`,props:{comments:{},globalMessage:{},submitting:{type:Boolean}},emits:[`updateGlobal`,`jumpToFile`,`jumpToComment`,`submit`],setup(t,{emit:r}){let i=t,a=r,o=h(()=>i.comments.length),c=h(()=>{let e=new Map;for(let t of i.comments){let n=e.get(t.filePath)??[];n.push(t),e.set(t.filePath,n)}for(let t of e.values())t.sort((e,t)=>e.line-t.line||e.createdAt.localeCompare(t.createdAt));return Array.from(e.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({filePath:e,comments:t}))});function l(e){let t=e.replace(/\n+/g,` `).trim();return t.length>80?`${t.slice(0,77)}…`:t}return(r,i)=>(e(),g(`div`,Ce,[y(`div`,W,u(r.$t(`diff.reviewDraft`)),1),p(ce,{class:`comments-scroll`,style:{height:`calc(100% - 220px)`}},{default:s(()=>[c.value.length===0?(e(),g(`div`,we,u(r.$t(`diff.reviewEmpty`)),1)):f(``,!0),(e(!0),g(_,null,n(c.value,t=>(e(),g(`div`,{key:t.filePath,class:`file-group q-mb-sm`},[y(`div`,{class:`file-group-header text-grey-3 cursor-pointer ellipsis`,onClick:e=>a(`jumpToFile`,t.filePath)},[p(w,{name:`description`,size:`14px`,color:`indigo-4`,class:`q-mr-xs`}),y(`span`,G,u(t.filePath),1),p(N,{label:String(t.comments.length),color:`indigo-8`,"text-color":`white`,class:`q-ml-xs`},null,8,[`label`])],8,Te),(e(!0),g(_,null,n(t.comments,t=>(e(),g(`div`,{key:t.id,class:`draft-line cursor-pointer`,onClick:e=>a(`jumpToComment`,t.filePath,t.line)},[y(`span`,Ee,`L`+u(t.line),1),y(`span`,De,u(l(t.content)),1)],8,K))),128))]))),128))]),_:1}),y(`div`,Oe,[p(k,{"model-value":t.globalMessage,type:`textarea`,autogrow:``,rows:`3`,dense:``,dark:``,outlined:``,placeholder:r.$t(`diff.reviewGlobalPlaceholder`),class:`global-textarea`,"onUpdate:modelValue":i[0]||=e=>a(`updateGlobal`,String(e))},null,8,[`model-value`,`placeholder`]),p(E,{unelevated:``,"no-caps":``,color:`primary`,class:`full-width q-mt-sm`,disable:o.value===0&&!t.globalMessage.trim(),loading:t.submitting,onClick:i[1]||=e=>a(`submit`)},{default:s(()=>[m(u(r.$t(`diff.submitReview`,{n:o.value})),1)]),_:1},8,[`disable`,`loading`])])]))}}),[[`__scopeId`,`data-v-e21064fb`]]),Ae={class:`diff-viewer column full-height`},je={class:`diff-header row items-center q-px-md q-py-sm no-wrap`},Me={class:`text-body1 text-weight-medium text-grey-3`},Ne={key:0,class:`text-caption text-grey-6 q-ml-md`,style:{"font-size":`11px`}},Pe={class:`text-grey-7`},Fe={class:`text-green-4`},Ie={class:`text-grey-7`},Le={key:1,class:`text-caption text-grey-5 q-ml-md ellipsis`,style:{"font-size":`11px`,"font-family":`'Roboto Mono', monospace`,"max-width":`400px`}},Re={class:`row col no-wrap`,style:{"min-height":`0`}},ze={key:0,class:`review-draft-panel-wrapper`,style:{width:`300px`,minWidth:`240px`,flexShrink:0,borderRight:`1px solid #2a2a4a`}},Be={key:1,class:`text-caption text-grey-8 q-pa-sm`},Ve={class:`text-grey-4`,style:{"font-family":`'Roboto Mono', monospace`,"font-size":`11px`}},He={class:`text-grey-3 ellipsis`,style:{"font-family":`'Roboto Mono', monospace`,"font-size":`11px`}},Ue={class:`col column`,style:{"min-width":`0`,position:`relative`}},We={key:0,class:`col column items-center justify-center`},Ge={key:1,class:`col column items-center justify-center text-grey-8 text-caption`},Ke=`kobo:diff:hideUnchanged`,qe=`kobo:diff:includeUntracked`,Je=`kobo:diff:mode`,Ye=`kobo:diffViewerFileListWidth`,q=180,Xe=600,Ze=M(b({__name:`DiffViewer`,props:{workspaceId:{},initialReviewMode:{type:Boolean}},emits:[`close`,`sendToChat`],setup(o,{emit:l}){let b=o,S=l,{t:C}=te(),T=ge(),D=a([]),O=a(``),k=a(``),j=a(null),M=a(!1),P=a(!1),I=a(null),L=a(`side`),R=a(localStorage.getItem(Ke)!==`0`),z=a(localStorage.getItem(qe)===`1`),B=a(`branch`),V=a(b.initialReviewMode||localStorage.getItem(Je)===`review`?`review`:`inspect`);t(V,e=>{localStorage.setItem(Je,e),e===`review`?ye():ve()});function ve(){nt();for(let e of Z)e.dispose();Z=[],Y&&Y.getModifiedEditor().getDomNode()?.classList.remove(`review-mode-active`)}function ye(){Y&&(ut(),j.value&&ot(j.value))}let H=ie(),be=ne(),U=_e(b.workspaceId,{sendChatMessage:async(e,t,n)=>{if(!H.isConnected())throw Error(`WebSocket not connected — cannot send the review`);H.sendChatMessage(e,t,n)}}),xe=h(()=>U.draft.value.comments),Ce=h(()=>U.draft.value.globalMessage),W=a(!1);async function we(){W.value=!0;try{let e=await U.submit(be.selectedSessionId??void 0);e.ok?(T.notify({type:`positive`,message:C(`diff.reviewSubmitted`),position:`top`}),S(`close`)):T.notify({type:`negative`,message:C(`diff.reviewSubmitFailed`,{error:e.error??``}),position:`top`})}finally{W.value=!1}}let Te=h(()=>{let e=new Map;if(V.value!==`review`)return e;for(let t of U.draft.value.comments)e.set(t.filePath,(e.get(t.filePath)??0)+1);return e});function G(e){if(V.value!==`review`||!e)return 0;let t=0;for(let n of U.draft.value.comments)n.filePath.startsWith(`${e}/`)&&t++;return t}function K(e){return e.nodeKey.startsWith(`dir:`)?e.nodeKey.slice(4):``}function Ee(e){j.value=e}async function De(e=3e3){let t=Date.now();for(;P.value;){if(Date.now()-t>e)return;await new Promise(e=>setTimeout(e,30))}}async function Oe(e,t){j.value!==e&&(j.value=e,await De()),Y?.getModifiedEditor().revealLineInCenter(t)}let Ze=parseInt(localStorage.getItem(Ye)??`280`,10),Qe=a(Math.min(Xe,Math.max(q,Ze)));function $e(e){e.preventDefault();let t=e.target.closest(`.diff-viewer`);if(!t)return;let n=t.getBoundingClientRect().left,r=e=>{Qe.value=Math.min(Xe,Math.max(q,e.clientX-n))},i=()=>{localStorage.setItem(Ye,String(Qe.value)),document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i),document.body.style.cursor=``,document.body.style.userSelect=``};document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`,document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}let J=null,Y=null,X=[],Z=[],Q=a([]),et=a(null);function tt(){if(!Y)return;let e=Y.getModifiedEditor();for(let t of Q.value)t.topPx=e.getTopForLineNumber(t.line+1)-e.getScrollTop()-t.heightPx}function nt(){if(!Y){Q.value=[];return}Y.getModifiedEditor().changeViewZones(e=>{for(let t of Q.value)try{e.removeZone(t.zoneId)}catch{}}),Q.value=[]}function rt(e,t,n){if(!Y)return;let r=Y.getModifiedEditor(),i=r.getModel()?.getLineCount()??0;if(e<1||e>i)return;let a=document.createElement(`div`);a.style.pointerEvents=`none`;let o=t.length>0?t.length*4+1:0,s=Math.max(6,o+(n?6:0)),c=``;r.changeViewZones(t=>{c=t.addZone({afterLineNumber:e,heightInLines:s,domNode:a})});let l=s*18,u=r.getTopForLineNumber(e+1)-r.getScrollTop()-l;Q.value.push({zoneId:c,placeholderNode:a,line:e,comments:t,transient:n,topPx:u,heightPx:l})}function it(e){if(!Y)return;let t=Y.getModifiedEditor(),n=Q.value.filter(t=>t.line===e);n.length!==0&&(t.changeViewZones(e=>{for(let t of n)try{e.removeZone(t.zoneId)}catch{}}),Q.value=Q.value.filter(t=>t.line!==e))}function at(e,t){it(t);let n=U.draft.value.comments.filter(n=>n.filePath===e&&n.line===t);n.length!==0&&(n.sort((e,t)=>e.createdAt.localeCompare(t.createdAt)),rt(t,n,!1))}function ot(e){if(!Y||V.value!==`review`)return;let t=U.draft.value.comments.filter(t=>t.filePath===e),n=new Map;for(let e of t){let t=n.get(e.line)??[];t.push(e),n.set(e.line,t)}for(let e of n.values())e.sort((e,t)=>e.createdAt.localeCompare(t.createdAt));for(let[e,t]of n)rt(e,t,!1)}function st(e,t,n){U.addComment({filePath:e,line:t,content:n}),at(e,t)}function ct(e,t,n,r){U.updateComment(n,r),at(e,t)}function lt(e,t,n){U.deleteComment(n),at(e,t)}function ut(){if(!Y||V.value!==`review`||!J)return;let e=Y.getModifiedEditor(),t=e.getDomNode();t&&t.classList.add(`review-mode-active`),Z.push(e.onMouseDown(e=>{if(e.target.type!==3)return;let t=e.target.position?.lineNumber??0;t<1||!j.value||dt(j.value,t)}),e.onDidScrollChange(()=>tt()),e.onDidLayoutChange(()=>tt()))}function dt(e,t){it(t),rt(t,U.draft.value.comments.filter(n=>n.filePath===e&&n.line===t).sort((e,t)=>e.createdAt.localeCompare(t.createdAt)),!0)}function ft(){nt();for(let e of Z)e.dispose();if(Z=[],!Y)return;Y.getModifiedEditor().getDomNode()?.classList.remove(`review-mode-active`);for(let e of X)e.dispose();X=[];let e=Y.getModel();Y.dispose(),Y=null,e?.original?.dispose(),e?.modified?.dispose()}let pt=h(()=>fe(D.value)),mt=h(()=>j.value?`file:${j.value}`:``);async function $(){M.value=!0;try{let e=new URLSearchParams({mode:B.value});B.value===`branch`&&z.value&&e.set(`includeUntracked`,`1`);let t=await fetch(`/api/workspaces/${b.workspaceId}/diff?${e}`,{cache:`no-store`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();D.value=n.files,O.value=n.sourceBranch??``,k.value=n.workingBranch??``}catch(e){console.error(`Failed to load diff files:`,e)}finally{M.value=!1}}async function ht(e){if(I.value){P.value=!0;try{J||(self.MonacoEnvironment={getWorker(e,t){return t===`json`?new Worker(new URL(`/assets/json.worker-C9p7xCYk.js`,``+import.meta.url),{type:`module`}):t===`css`||t===`scss`||t===`less`?new Worker(new URL(`/assets/css.worker-D1piIYC4.js`,``+import.meta.url),{type:`module`}):t===`html`||t===`handlebars`||t===`razor`?new Worker(new URL(`/assets/html.worker-C4q4XMPn.js`,``+import.meta.url),{type:`module`}):t===`typescript`||t===`javascript`?new Worker(new URL(`/assets/ts.worker-Cj3zTgVE.js`,``+import.meta.url),{type:`module`}):new Worker(new URL(`/assets/editor.worker-CJ9iTmkr.js`,``+import.meta.url),{type:`module`})}},J=await re(()=>import(`./editor.main-ChCYZyez.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])),J.editor.defineTheme(`kobo-dark`,{base:`vs-dark`,inherit:!0,rules:[],colors:{"editor.background":`#1a1a2e`,"diffEditor.insertedTextBackground":`#22c55e20`,"diffEditor.removedTextBackground":`#ef444420`}}));let t=await fetch(`/api/workspaces/${b.workspaceId}/diff-file?path=${encodeURIComponent(e)}&mode=${B.value}`,{cache:`no-store`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json(),r={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,vue:`html`,html:`html`,css:`css`,scss:`scss`,json:`json`,md:`markdown`,yaml:`yaml`,yml:`yaml`,sh:`shell`,sql:`sql`,py:`python`,rs:`rust`,go:`go`}[e.split(`.`).pop()??``]??`plaintext`;ft();let i=J.editor.createModel(n.original??``,r),a=J.editor.createModel(n.modified??``,r);Y=J.editor.createDiffEditor(I.value,{theme:`kobo-dark`,readOnly:!0,renderSideBySide:L.value===`side`,automaticLayout:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,lineHeight:18,hideUnchangedRegions:{enabled:R.value,contextLineCount:3,minimumLineCount:3,revealLineCount:20}}),Y.setModel({original:i,modified:a}),yt(),V.value===`review`&&(ut(),ot(e))}catch(e){console.error(`Failed to load file diff:`,e)}finally{P.value=!1}}}function gt(e,t){let n=t===`untracked`;T.dialog({title:C(n?`diff.deleteUntracked`:`diff.rollbackToRemote`),message:C(n?`diff.deleteUntrackedConfirm`:`diff.rollbackConfirm`,{path:e}),cancel:!0,persistent:!0,color:n?`red`:`orange`,ok:{label:C(n?`diff.deleteUntrackedConfirmOk`:`diff.rollbackConfirmOk`),color:n?`red-7`:`orange-7`,flat:!1,unelevated:!0}}).onOk(()=>{_t(e)})}async function _t(e){try{let t=await fetch(`/api/workspaces/${b.workspaceId}/rollback-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})});if(!t.ok){let e=await t.json().catch(()=>({}));T.notify({type:`negative`,message:e.error||C(`diff.rollbackFailed`),position:`top`});return}let n=await t.json().catch(()=>({})),r=C(`diff.rollbackDoneRemote`);n.target===`head`?r=C(`diff.rollbackDoneHead`):n.target===`deleted`&&(r=C(`diff.rollbackDoneDeleted`)),T.notify({type:`positive`,message:r,position:`top`}),await $(),j.value===e&&(D.value.some(t=>t.path===e)?await ht(e):j.value=null)}catch(e){console.error(`rollbackFile failed:`,e),T.notify({type:`negative`,message:C(`diff.rollbackFailed`),position:`top`})}}let vt=a(!1);function yt(){if(!Y)return;for(let e of X)e.dispose();X=[];let e=Y.getModifiedEditor(),t=Y.getOriginalEditor();for(let n of[e,t]){let e=n.onDidChangeCursorSelection(()=>{let e=n.getSelection();vt.value=!!(e&&!e.isEmpty())});X.push(e)}}function bt(){if(!(!Y||!j.value))for(let e of[Y.getModifiedEditor(),Y.getOriginalEditor()]){let t=e.getSelection();if(t&&!t.isEmpty()){let n=e.getModel();if(!n)continue;let r=n.getValueInRange(t),i=e===Y.getModifiedEditor()?`modified`:`original`;S(`sendToChat`,`\`\`\`\n// ${j.value} (${i}) L${t.startLineNumber}-L${t.endLineNumber}\n${r}\n\`\`\``);return}}}t(j,e=>{e?ht(e):ft()}),t(L,()=>{Y&&Y.updateOptions({renderSideBySide:L.value===`side`})}),t(R,e=>{localStorage.setItem(Ke,e?`1`:`0`),Y&&Y.updateOptions({hideUnchangedRegions:{enabled:e,contextLineCount:3,minimumLineCount:3,revealLineCount:20}})}),t(B,async()=>{let e=j.value;await $(),e&&D.value.some(t=>t.path===e)?ht(e):j.value=null}),t(z,async e=>{localStorage.setItem(qe,e?`1`:`0`),await $(),j.value&&!D.value.some(e=>e.path===j.value)&&(j.value=null)});function xt(e){switch(e){case`added`:return`#4ade80`;case`untracked`:return`#86efac`;case`deleted`:return`#f87171`;case`renamed`:return`#60a5fa`;default:return`#f59e0b`}}return r($),i(()=>{U.flush(),ft()}),(t,r)=>(e(),g(`div`,Ae,[y(`div`,je,[p(w,{name:`difference`,size:`18px`,color:`indigo-4`,class:`q-mr-xs`}),y(`span`,Me,u(t.$t(`diff.title`)),1),p(N,{label:`${D.value.length}`,color:`grey-8`,"text-color":`grey-4`,class:`q-ml-sm`,style:{"font-size":`10px`}},null,8,[`label`]),O.value?(e(),g(`span`,Ne,[B.value===`branch`?(e(),g(_,{key:0},[y(`span`,Pe,u(O.value),1),p(w,{name:`arrow_forward`,size:`11px`,color:`grey-8`,class:`q-mx-xs`}),y(`span`,Fe,u(k.value),1)],64)):(e(),g(_,{key:1},[y(`span`,Ie,`origin/`+u(k.value),1),p(w,{name:`arrow_forward`,size:`11px`,color:`grey-8`,class:`q-mx-xs`}),r[7]||=y(`span`,{class:`text-green-4`},`HEAD`,-1)],64))])):f(``,!0),j.value?(e(),g(`span`,Le,u(j.value),1)):f(``,!0),p(le),p(F,{modelValue:B.value,"onUpdate:modelValue":r[0]||=e=>B.value=e,dense:``,"no-caps":``,size:`sm`,"toggle-color":`indigo-8`,color:`grey-9`,"text-color":`grey-5`,options:[{label:t.$t(`diff.scopeBranch`),value:`branch`},{label:t.$t(`diff.scopeUnpushed`),value:`unpushed`}],class:`q-mr-sm`},null,8,[`modelValue`,`options`]),p(F,{modelValue:V.value,"onUpdate:modelValue":r[1]||=e=>V.value=e,dense:``,"no-caps":``,size:`sm`,"toggle-color":`indigo-8`,color:`grey-9`,"text-color":`grey-5`,options:[{label:t.$t(`diff.modeInspect`),value:`inspect`},{label:t.$t(`diff.modeReview`),value:`review`}],class:`q-mr-sm`},null,8,[`modelValue`,`options`]),p(F,{modelValue:L.value,"onUpdate:modelValue":r[2]||=e=>L.value=e,dense:``,"no-caps":``,size:`sm`,"toggle-color":`indigo-8`,color:`grey-9`,"text-color":`grey-5`,options:[{label:t.$t(`diff.side`),value:`side`},{label:t.$t(`diff.inline`),value:`inline`}],class:`q-mr-sm`},null,8,[`modelValue`,`options`]),p(E,{icon:R.value?`unfold_less`:`unfold_more`,dense:``,flat:``,size:`sm`,color:R.value?`indigo-4`:`grey-5`,class:`q-mr-sm`,onClick:r[3]||=e=>R.value=!R.value},{default:s(()=>[p(A,{anchor:`bottom middle`,self:`top middle`,delay:400},{default:s(()=>[m(u(R.value?t.$t(`diff.showUnchanged`):t.$t(`diff.hideUnchanged`)),1)]),_:1})]),_:1},8,[`icon`,`color`]),B.value===`branch`?(e(),d(E,{key:2,icon:`visibility`,dense:``,flat:``,size:`sm`,color:z.value?`indigo-4`:`grey-5`,class:`q-mr-sm`,onClick:r[4]||=e=>z.value=!z.value},{default:s(()=>[p(A,{anchor:`bottom middle`,self:`top middle`,delay:400},{default:s(()=>[m(u(z.value?t.$t(`diff.hideUntracked`):t.$t(`diff.showUntracked`)),1)]),_:1})]),_:1},8,[`color`])):f(``,!0),p(E,{flat:``,round:``,dense:``,icon:`close`,color:`grey-5`,size:`sm`,disable:W.value,onClick:r[5]||=e=>S(`close`)},{default:s(()=>[p(A,null,{default:s(()=>[m(u(t.$t(`tooltip.closeDiffViewer`)),1)]),_:1})]),_:1},8,[`disable`])]),p(ee,{dark:``}),y(`div`,Re,[V.value===`review`?(e(),g(`div`,ze,[p(ke,{comments:xe.value,"global-message":Ce.value,submitting:W.value,onUpdateGlobal:v(U).setGlobalMessage,onJumpToFile:Ee,onJumpToComment:Oe,onSubmit:we},null,8,[`comments`,`global-message`,`submitting`,`onUpdateGlobal`])])):f(``,!0),y(`div`,{class:`diff-file-list-wrapper`,style:x({width:`${Qe.value}px`,minWidth:`${q}px`})},[p(ce,{class:`diff-file-list q-pa-xs`,style:{width:`100%`,height:`100%`,"border-right":`1px solid #2a2a4a`}},{default:s(()=>[M.value?(e(),d(ae,{key:0,size:`24px`,color:`grey-6`,class:`q-ma-md`})):D.value.length===0?(e(),g(`div`,Be,u(t.$t(`diff.noChanges`)),1)):(e(),d(de,{key:2,nodes:pt.value,"node-key":`nodeKey`,"label-key":`label`,"children-key":`children`,dark:``,dense:``,"default-expand-all":``,"no-selection-unset":``,selected:mt.value,class:`diff-tree`,"onUpdate:selected":r[6]||=e=>{typeof e!=`string`||!e.startsWith(`file:`)||(j.value=e.slice(5))}},{"default-header":s(({node:n})=>[n.isFolder?(e(),g(_,{key:0},[p(w,{name:`folder`,size:`14px`,color:`indigo-4`,class:`q-mr-xs`}),y(`span`,Ve,u(n.label),1),p(N,{label:n.children?v(ue)(n.children):0,color:`grey-9`,"text-color":`grey-5`,class:`q-ml-xs`,style:{"font-size":`9px`}},null,8,[`label`]),V.value===`review`&&G(K(n))>0?(e(),d(N,{key:0,label:String(G(K(n))),color:`grey-7`,"text-color":`grey-3`,class:`q-ml-xs`,style:{"font-size":`9px`}},null,8,[`label`])):f(``,!0)],64)):(e(),g(_,{key:1},[p(w,{name:`description`,size:`14px`,style:x({color:xt(n.file.status)}),class:`q-mr-xs`},{default:s(()=>[p(A,null,{default:s(()=>[m(u(n.file.status),1)]),_:2},1024)]),_:2},1032,[`style`]),y(`span`,He,u(n.label),1),V.value===`review`&&(Te.value.get(n.file.path)??0)>0?(e(),d(N,{key:0,label:String(Te.value.get(n.file.path)),color:`indigo-8`,"text-color":`white`,class:`q-ml-xs`,style:{"font-size":`9px`}},null,8,[`label`])):f(``,!0),p(me,{"touch-position":``,"context-menu":``},{default:s(()=>[p(pe,{dense:``,dark:``,style:{"min-width":`220px`}},{default:s(()=>[c((e(),d(oe,{clickable:``,onClick:e=>gt(n.file.path,n.file.status)},{default:s(()=>[p(se,{avatar:``},{default:s(()=>[p(w,{name:n.file.status===`untracked`?`delete`:`restore`,size:`16px`,color:n.file.status===`untracked`?`red-5`:`orange-5`},null,8,[`name`,`color`])]),_:2},1024),p(se,null,{default:s(()=>[m(u(n.file.status===`untracked`?t.$t(`diff.deleteUntracked`):t.$t(`diff.rollbackToRemote`)),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[he]])]),_:2},1024)]),_:2},1024)],64))]),_:1},8,[`nodes`,`selected`]))]),_:1}),y(`div`,{class:`diff-file-list-resize-handle`,onMousedown:$e},null,32)],4),y(`div`,Ue,[P.value?(e(),g(`div`,We,[p(ae,{size:`32px`,color:`indigo-4`})])):j.value?f(``,!0):(e(),g(`div`,Ge,u(t.$t(`diff.selectFile`)),1)),y(`div`,{ref_key:`editorWrapperRef`,ref:et,class:`col`,style:{"min-height":`0`,position:`relative`,overflow:`hidden`}},[y(`div`,{ref_key:`editorContainer`,ref:I,style:{position:`absolute`,inset:`0`}},null,512),(e(!0),g(_,null,n(Q.value,t=>(e(),g(`div`,{key:t.zoneId,class:`review-zone-overlay`,style:x({top:`${t.topPx}px`,height:`${t.heightPx}px`})},[p(Se,{comments:t.comments,"start-in-add-mode":t.transient,onAdd:e=>st(j.value??``,t.line,e),onUpdate:(e,n)=>ct(j.value??``,t.line,e,n),onDelete:e=>lt(j.value??``,t.line,e),onDismissEmpty:e=>it(t.line)},null,8,[`comments`,`start-in-add-mode`,`onAdd`,`onUpdate`,`onDelete`,`onDismissEmpty`])],4))),128))],512),vt.value?(e(),d(E,{key:2,"no-caps":``,dense:``,size:`sm`,color:`primary`,icon:`chat`,label:t.$t(`diff.addToChat`),class:`send-to-chat-btn`,onClick:bt},null,8,[`label`])):f(``,!0)])])]))}}),[[`__scopeId`,`data-v-e60cf8ea`]]);export{Ze as default};
|
|
7
|
+
`)}\n\n---\n${s}`}var z=300;function B(e){return`kobo:review-draft:${e}`}function V(e){let t=localStorage.getItem(B(e));if(!t)return{comments:[],globalMessage:``};try{let e=JSON.parse(t);return{comments:Array.isArray(e.comments)?e.comments:[],globalMessage:typeof e.globalMessage==`string`?e.globalMessage:``}}catch{return{comments:[],globalMessage:``}}}function _e(e,t){let n=a(V(e)),r=null;function i(){r!==null&&clearTimeout(r),r=setTimeout(()=>{r=null;try{localStorage.setItem(B(e),JSON.stringify(n.value))}catch(e){console.warn(`[review-draft] persist failed:`,e)}},z)}function o(){if(r!==null){clearTimeout(r),r=null;try{localStorage.setItem(B(e),JSON.stringify(n.value))}catch(e){console.warn(`[review-draft] flush failed:`,e)}}}function s(e){let t=I(e);return n.value.comments.push(t),i(),t}function c(e,t){let r=n.value.comments.find(t=>t.id===e);r&&(r.content=t,i())}function l(e){n.value.comments=n.value.comments.filter(t=>t.id!==e),i()}function u(e){n.value.globalMessage=e,i()}function d(){n.value={comments:[],globalMessage:``},r!==null&&(clearTimeout(r),r=null),localStorage.removeItem(B(e))}async function f(r){if(n.value.comments.length===0&&n.value.globalMessage.trim()===``)return{ok:!1,error:`Draft is empty`};o();let i=R(n.value);try{await t.sendChatMessage(e,i,r)}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}return d(),{ok:!0}}return{draft:n,addComment:s,updateComment:c,deleteComment:l,setGlobalMessage:u,clearDraft:d,flush:o,submit:f}}var ve={class:`review-comment-block`},ye={class:`comment-actions q-mt-xs`},H=[`innerHTML`],be={class:`comment-footer`},U={class:`comment-time text-caption text-grey-7`},xe={class:`comment-actions q-mt-xs`},Se=M(b({__name:`ReviewCommentBlock`,props:{comments:{},startInAddMode:{type:Boolean}},emits:[`add`,`update`,`delete`,`dismissEmpty`],setup(t,{emit:r}){let i=t,o=r,{t:c}=te(),h=ge(),v=a(null),b=a(``),x=a(i.startInAddMode===!0),S=a(``);function C(e){return j(e)}function w(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return c(`common.justNow`);if(n<60)return c(`common.minutesAgo`,{count:n});let r=Math.floor(n/60);return r<24?c(`common.hoursAgo`,{count:r}):c(`common.daysAgo`,{count:Math.floor(r/24)})}function ee(e){v.value=e.id,b.value=e.content}function T(){v.value=null,b.value=``}function D(e){let t=b.value.trim();t&&(o(`update`,e,t),v.value=null,b.value=``)}function O(e){h.dialog({title:c(`diff.deleteComment`),message:c(`diff.deleteCommentConfirm`),cancel:!0,persistent:!0,ok:{label:c(`diff.deleteComment`),color:`negative`,flat:!1,unelevated:!0}}).onOk(()=>{o(`delete`,e)})}function ne(){x.value=!1,S.value=``,i.comments.length===0&&o(`dismissEmpty`)}function re(){let e=S.value.trim();e&&(o(`add`,e),x.value=!1,S.value=``)}return(r,i)=>(e(),g(`div`,ve,[(e(!0),g(_,null,n(t.comments,(t,n)=>(e(),g(`div`,{key:t.id,class:l([`comment-thread-item`,{"with-separator":n>0}])},[v.value===t.id?(e(),g(_,{key:0},[p(k,{modelValue:b.value,"onUpdate:modelValue":i[0]||=e=>b.value=e,type:`textarea`,autogrow:``,dense:``,dark:``,outlined:``,autofocus:``,class:`comment-textarea`,placeholder:r.$t(`diff.commentPlaceholder`)},null,8,[`modelValue`,`placeholder`]),y(`div`,ye,[p(E,{flat:``,dense:``,size:`sm`,label:r.$t(`common.cancel`),onClick:T},null,8,[`label`]),p(E,{unelevated:``,dense:``,size:`sm`,color:`primary`,label:r.$t(`common.save`),onClick:e=>D(t.id)},null,8,[`label`,`onClick`])])],64)):(e(),g(_,{key:1},[y(`div`,{class:`comment-content`,innerHTML:C(t.content)},null,8,H),y(`div`,be,[y(`span`,U,u(w(t.createdAt)),1),p(E,{flat:``,dense:``,round:``,size:`xs`,icon:`edit`,color:`grey-5`,onClick:e=>ee(t)},{default:s(()=>[p(A,null,{default:s(()=>[m(u(r.$t(`diff.editComment`)),1)]),_:1})]),_:1},8,[`onClick`]),p(E,{flat:``,dense:``,round:``,size:`xs`,icon:`delete`,color:`grey-5`,onClick:e=>O(t.id)},{default:s(()=>[p(A,null,{default:s(()=>[m(u(r.$t(`diff.deleteComment`)),1)]),_:1})]),_:1},8,[`onClick`])])],64))],2))),128)),x.value?(e(),g(_,{key:0},[p(k,{modelValue:S.value,"onUpdate:modelValue":i[1]||=e=>S.value=e,type:`textarea`,autogrow:``,dense:``,dark:``,outlined:``,autofocus:``,class:`comment-textarea q-mt-sm`,placeholder:r.$t(`diff.commentPlaceholder`)},null,8,[`modelValue`,`placeholder`]),y(`div`,xe,[p(E,{flat:``,dense:``,size:`sm`,label:r.$t(`common.cancel`),onClick:ne},null,8,[`label`]),p(E,{unelevated:``,dense:``,size:`sm`,color:`primary`,disable:!S.value.trim(),label:r.$t(`diff.addComment`),onClick:re},null,8,[`disable`,`label`])])],64)):t.comments.length>0?(e(),d(E,{key:1,flat:``,dense:``,size:`sm`,icon:`reply`,label:r.$t(`diff.replyComment`),class:`reply-btn q-mt-xs`,onClick:i[2]||=e=>x.value=!0},null,8,[`label`])):f(``,!0)]))}}),[[`__scopeId`,`data-v-9abff76f`]]),Ce={class:`review-draft-panel q-pa-sm`},W={class:`text-caption text-uppercase text-weight-bold text-grey-6 q-mb-sm`,style:{"letter-spacing":`0.05em`}},we={key:0,class:`text-caption text-grey-7 q-pa-sm`},Te=[`onClick`],G={style:{"font-family":`'Roboto Mono', monospace`,"font-size":`11px`}},K=[`onClick`],Ee={class:`text-grey-6 q-mr-xs`,style:{"font-family":`monospace`}},De={class:`text-grey-3 ellipsis`},Oe={class:`global-message-box q-mt-sm`},ke=M(b({__name:`ReviewDraftPanel`,props:{comments:{},globalMessage:{},submitting:{type:Boolean}},emits:[`updateGlobal`,`jumpToFile`,`jumpToComment`,`submit`],setup(t,{emit:r}){let i=t,a=r,o=h(()=>i.comments.length),c=h(()=>{let e=new Map;for(let t of i.comments){let n=e.get(t.filePath)??[];n.push(t),e.set(t.filePath,n)}for(let t of e.values())t.sort((e,t)=>e.line-t.line||e.createdAt.localeCompare(t.createdAt));return Array.from(e.entries()).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({filePath:e,comments:t}))});function l(e){let t=e.replace(/\n+/g,` `).trim();return t.length>80?`${t.slice(0,77)}…`:t}return(r,i)=>(e(),g(`div`,Ce,[y(`div`,W,u(r.$t(`diff.reviewDraft`)),1),p(ce,{class:`comments-scroll`,style:{height:`calc(100% - 220px)`}},{default:s(()=>[c.value.length===0?(e(),g(`div`,we,u(r.$t(`diff.reviewEmpty`)),1)):f(``,!0),(e(!0),g(_,null,n(c.value,t=>(e(),g(`div`,{key:t.filePath,class:`file-group q-mb-sm`},[y(`div`,{class:`file-group-header text-grey-3 cursor-pointer ellipsis`,onClick:e=>a(`jumpToFile`,t.filePath)},[p(w,{name:`description`,size:`14px`,color:`indigo-4`,class:`q-mr-xs`}),y(`span`,G,u(t.filePath),1),p(N,{label:String(t.comments.length),color:`indigo-8`,"text-color":`white`,class:`q-ml-xs`},null,8,[`label`])],8,Te),(e(!0),g(_,null,n(t.comments,t=>(e(),g(`div`,{key:t.id,class:`draft-line cursor-pointer`,onClick:e=>a(`jumpToComment`,t.filePath,t.line)},[y(`span`,Ee,`L`+u(t.line),1),y(`span`,De,u(l(t.content)),1)],8,K))),128))]))),128))]),_:1}),y(`div`,Oe,[p(k,{"model-value":t.globalMessage,type:`textarea`,autogrow:``,rows:`3`,dense:``,dark:``,outlined:``,placeholder:r.$t(`diff.reviewGlobalPlaceholder`),class:`global-textarea`,"onUpdate:modelValue":i[0]||=e=>a(`updateGlobal`,String(e))},null,8,[`model-value`,`placeholder`]),p(E,{unelevated:``,"no-caps":``,color:`primary`,class:`full-width q-mt-sm`,disable:o.value===0&&!t.globalMessage.trim(),loading:t.submitting,onClick:i[1]||=e=>a(`submit`)},{default:s(()=>[m(u(r.$t(`diff.submitReview`,{n:o.value})),1)]),_:1},8,[`disable`,`loading`])])]))}}),[[`__scopeId`,`data-v-e21064fb`]]),Ae={class:`diff-viewer column full-height`},je={class:`diff-header row items-center q-px-md q-py-sm no-wrap`},Me={class:`text-body1 text-weight-medium text-grey-3`},Ne={key:0,class:`text-caption text-grey-6 q-ml-md`,style:{"font-size":`11px`}},Pe={class:`text-grey-7`},Fe={class:`text-green-4`},Ie={class:`text-grey-7`},Le={key:1,class:`text-caption text-grey-5 q-ml-md ellipsis`,style:{"font-size":`11px`,"font-family":`'Roboto Mono', monospace`,"max-width":`400px`}},Re={class:`row col no-wrap`,style:{"min-height":`0`}},ze={key:0,class:`review-draft-panel-wrapper`,style:{width:`300px`,minWidth:`240px`,flexShrink:0,borderRight:`1px solid #2a2a4a`}},Be={key:1,class:`text-caption text-grey-8 q-pa-sm`},Ve={class:`text-grey-4`,style:{"font-family":`'Roboto Mono', monospace`,"font-size":`11px`}},He={class:`text-grey-3 ellipsis`,style:{"font-family":`'Roboto Mono', monospace`,"font-size":`11px`}},Ue={class:`col column`,style:{"min-width":`0`,position:`relative`}},We={key:0,class:`col column items-center justify-center`},Ge={key:1,class:`col column items-center justify-center text-grey-8 text-caption`},Ke=`kobo:diff:hideUnchanged`,qe=`kobo:diff:includeUntracked`,Je=`kobo:diff:mode`,Ye=`kobo:diffViewerFileListWidth`,q=180,Xe=600,Ze=M(b({__name:`DiffViewer`,props:{workspaceId:{},initialReviewMode:{type:Boolean}},emits:[`close`,`sendToChat`],setup(o,{emit:l}){let b=o,S=l,{t:C}=te(),T=ge(),D=a([]),O=a(``),k=a(``),j=a(null),M=a(!1),P=a(!1),I=a(null),L=a(`side`),R=a(localStorage.getItem(Ke)!==`0`),z=a(localStorage.getItem(qe)===`1`),B=a(`branch`),V=a(b.initialReviewMode||localStorage.getItem(Je)===`review`?`review`:`inspect`);t(V,e=>{localStorage.setItem(Je,e),e===`review`?ye():ve()});function ve(){nt();for(let e of Z)e.dispose();Z=[],Y&&Y.getModifiedEditor().getDomNode()?.classList.remove(`review-mode-active`)}function ye(){Y&&(ut(),j.value&&ot(j.value))}let H=ie(),be=ne(),U=_e(b.workspaceId,{sendChatMessage:async(e,t,n)=>{if(!H.isConnected())throw Error(`WebSocket not connected — cannot send the review`);H.sendChatMessage(e,t,n)}}),xe=h(()=>U.draft.value.comments),Ce=h(()=>U.draft.value.globalMessage),W=a(!1);async function we(){W.value=!0;try{let e=await U.submit(be.selectedSessionId??void 0);e.ok?(T.notify({type:`positive`,message:C(`diff.reviewSubmitted`),position:`top`}),S(`close`)):T.notify({type:`negative`,message:C(`diff.reviewSubmitFailed`,{error:e.error??``}),position:`top`})}finally{W.value=!1}}let Te=h(()=>{let e=new Map;if(V.value!==`review`)return e;for(let t of U.draft.value.comments)e.set(t.filePath,(e.get(t.filePath)??0)+1);return e});function G(e){if(V.value!==`review`||!e)return 0;let t=0;for(let n of U.draft.value.comments)n.filePath.startsWith(`${e}/`)&&t++;return t}function K(e){return e.nodeKey.startsWith(`dir:`)?e.nodeKey.slice(4):``}function Ee(e){j.value=e}async function De(e=3e3){let t=Date.now();for(;P.value;){if(Date.now()-t>e)return;await new Promise(e=>setTimeout(e,30))}}async function Oe(e,t){j.value!==e&&(j.value=e,await De()),Y?.getModifiedEditor().revealLineInCenter(t)}let Ze=parseInt(localStorage.getItem(Ye)??`280`,10),Qe=a(Math.min(Xe,Math.max(q,Ze)));function $e(e){e.preventDefault();let t=e.target.closest(`.diff-viewer`);if(!t)return;let n=t.getBoundingClientRect().left,r=e=>{Qe.value=Math.min(Xe,Math.max(q,e.clientX-n))},i=()=>{localStorage.setItem(Ye,String(Qe.value)),document.removeEventListener(`mousemove`,r),document.removeEventListener(`mouseup`,i),document.body.style.cursor=``,document.body.style.userSelect=``};document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`,document.addEventListener(`mousemove`,r),document.addEventListener(`mouseup`,i)}let J=null,Y=null,X=[],Z=[],Q=a([]),et=a(null);function tt(){if(!Y)return;let e=Y.getModifiedEditor();for(let t of Q.value)t.topPx=e.getTopForLineNumber(t.line+1)-e.getScrollTop()-t.heightPx}function nt(){if(!Y){Q.value=[];return}Y.getModifiedEditor().changeViewZones(e=>{for(let t of Q.value)try{e.removeZone(t.zoneId)}catch{}}),Q.value=[]}function rt(e,t,n){if(!Y)return;let r=Y.getModifiedEditor(),i=r.getModel()?.getLineCount()??0;if(e<1||e>i)return;let a=document.createElement(`div`);a.style.pointerEvents=`none`;let o=t.length>0?t.length*4+1:0,s=Math.max(6,o+(n?6:0)),c=``;r.changeViewZones(t=>{c=t.addZone({afterLineNumber:e,heightInLines:s,domNode:a})});let l=s*18,u=r.getTopForLineNumber(e+1)-r.getScrollTop()-l;Q.value.push({zoneId:c,placeholderNode:a,line:e,comments:t,transient:n,topPx:u,heightPx:l})}function it(e){if(!Y)return;let t=Y.getModifiedEditor(),n=Q.value.filter(t=>t.line===e);n.length!==0&&(t.changeViewZones(e=>{for(let t of n)try{e.removeZone(t.zoneId)}catch{}}),Q.value=Q.value.filter(t=>t.line!==e))}function at(e,t){it(t);let n=U.draft.value.comments.filter(n=>n.filePath===e&&n.line===t);n.length!==0&&(n.sort((e,t)=>e.createdAt.localeCompare(t.createdAt)),rt(t,n,!1))}function ot(e){if(!Y||V.value!==`review`)return;let t=U.draft.value.comments.filter(t=>t.filePath===e),n=new Map;for(let e of t){let t=n.get(e.line)??[];t.push(e),n.set(e.line,t)}for(let e of n.values())e.sort((e,t)=>e.createdAt.localeCompare(t.createdAt));for(let[e,t]of n)rt(e,t,!1)}function st(e,t,n){U.addComment({filePath:e,line:t,content:n}),at(e,t)}function ct(e,t,n,r){U.updateComment(n,r),at(e,t)}function lt(e,t,n){U.deleteComment(n),at(e,t)}function ut(){if(!Y||V.value!==`review`||!J)return;let e=Y.getModifiedEditor(),t=e.getDomNode();t&&t.classList.add(`review-mode-active`),Z.push(e.onMouseDown(e=>{if(e.target.type!==3)return;let t=e.target.position?.lineNumber??0;t<1||!j.value||dt(j.value,t)}),e.onDidScrollChange(()=>tt()),e.onDidLayoutChange(()=>tt()))}function dt(e,t){it(t),rt(t,U.draft.value.comments.filter(n=>n.filePath===e&&n.line===t).sort((e,t)=>e.createdAt.localeCompare(t.createdAt)),!0)}function ft(){nt();for(let e of Z)e.dispose();if(Z=[],!Y)return;Y.getModifiedEditor().getDomNode()?.classList.remove(`review-mode-active`);for(let e of X)e.dispose();X=[];let e=Y.getModel();Y.dispose(),Y=null,e?.original?.dispose(),e?.modified?.dispose()}let pt=h(()=>fe(D.value)),mt=h(()=>j.value?`file:${j.value}`:``);async function $(){M.value=!0;try{let e=new URLSearchParams({mode:B.value});B.value===`branch`&&z.value&&e.set(`includeUntracked`,`1`);let t=await fetch(`/api/workspaces/${b.workspaceId}/diff?${e}`,{cache:`no-store`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json();D.value=n.files,O.value=n.sourceBranch??``,k.value=n.workingBranch??``}catch(e){console.error(`Failed to load diff files:`,e)}finally{M.value=!1}}async function ht(e){if(I.value){P.value=!0;try{J||(self.MonacoEnvironment={getWorker(e,t){return t===`json`?new Worker(new URL(`/assets/json.worker-C9p7xCYk.js`,``+import.meta.url),{type:`module`}):t===`css`||t===`scss`||t===`less`?new Worker(new URL(`/assets/css.worker-D1piIYC4.js`,``+import.meta.url),{type:`module`}):t===`html`||t===`handlebars`||t===`razor`?new Worker(new URL(`/assets/html.worker-C4q4XMPn.js`,``+import.meta.url),{type:`module`}):t===`typescript`||t===`javascript`?new Worker(new URL(`/assets/ts.worker-Cj3zTgVE.js`,``+import.meta.url),{type:`module`}):new Worker(new URL(`/assets/editor.worker-CJ9iTmkr.js`,``+import.meta.url),{type:`module`})}},J=await re(()=>import(`./editor.main-DsLU1RWu.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17])),J.editor.defineTheme(`kobo-dark`,{base:`vs-dark`,inherit:!0,rules:[],colors:{"editor.background":`#1a1a2e`,"diffEditor.insertedTextBackground":`#22c55e20`,"diffEditor.removedTextBackground":`#ef444420`}}));let t=await fetch(`/api/workspaces/${b.workspaceId}/diff-file?path=${encodeURIComponent(e)}&mode=${B.value}`,{cache:`no-store`});if(!t.ok)throw Error(`HTTP ${t.status}`);let n=await t.json(),r={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,vue:`html`,html:`html`,css:`css`,scss:`scss`,json:`json`,md:`markdown`,yaml:`yaml`,yml:`yaml`,sh:`shell`,sql:`sql`,py:`python`,rs:`rust`,go:`go`}[e.split(`.`).pop()??``]??`plaintext`;ft();let i=J.editor.createModel(n.original??``,r),a=J.editor.createModel(n.modified??``,r);Y=J.editor.createDiffEditor(I.value,{theme:`kobo-dark`,readOnly:!0,renderSideBySide:L.value===`side`,automaticLayout:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,fontSize:12,lineHeight:18,hideUnchangedRegions:{enabled:R.value,contextLineCount:3,minimumLineCount:3,revealLineCount:20}}),Y.setModel({original:i,modified:a}),yt(),V.value===`review`&&(ut(),ot(e))}catch(e){console.error(`Failed to load file diff:`,e)}finally{P.value=!1}}}function gt(e,t){let n=t===`untracked`;T.dialog({title:C(n?`diff.deleteUntracked`:`diff.rollbackToRemote`),message:C(n?`diff.deleteUntrackedConfirm`:`diff.rollbackConfirm`,{path:e}),cancel:!0,persistent:!0,color:n?`red`:`orange`,ok:{label:C(n?`diff.deleteUntrackedConfirmOk`:`diff.rollbackConfirmOk`),color:n?`red-7`:`orange-7`,flat:!1,unelevated:!0}}).onOk(()=>{_t(e)})}async function _t(e){try{let t=await fetch(`/api/workspaces/${b.workspaceId}/rollback-file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e})});if(!t.ok){let e=await t.json().catch(()=>({}));T.notify({type:`negative`,message:e.error||C(`diff.rollbackFailed`),position:`top`});return}let n=await t.json().catch(()=>({})),r=C(`diff.rollbackDoneRemote`);n.target===`head`?r=C(`diff.rollbackDoneHead`):n.target===`deleted`&&(r=C(`diff.rollbackDoneDeleted`)),T.notify({type:`positive`,message:r,position:`top`}),await $(),j.value===e&&(D.value.some(t=>t.path===e)?await ht(e):j.value=null)}catch(e){console.error(`rollbackFile failed:`,e),T.notify({type:`negative`,message:C(`diff.rollbackFailed`),position:`top`})}}let vt=a(!1);function yt(){if(!Y)return;for(let e of X)e.dispose();X=[];let e=Y.getModifiedEditor(),t=Y.getOriginalEditor();for(let n of[e,t]){let e=n.onDidChangeCursorSelection(()=>{let e=n.getSelection();vt.value=!!(e&&!e.isEmpty())});X.push(e)}}function bt(){if(!(!Y||!j.value))for(let e of[Y.getModifiedEditor(),Y.getOriginalEditor()]){let t=e.getSelection();if(t&&!t.isEmpty()){let n=e.getModel();if(!n)continue;let r=n.getValueInRange(t),i=e===Y.getModifiedEditor()?`modified`:`original`;S(`sendToChat`,`\`\`\`\n// ${j.value} (${i}) L${t.startLineNumber}-L${t.endLineNumber}\n${r}\n\`\`\``);return}}}t(j,e=>{e?ht(e):ft()}),t(L,()=>{Y&&Y.updateOptions({renderSideBySide:L.value===`side`})}),t(R,e=>{localStorage.setItem(Ke,e?`1`:`0`),Y&&Y.updateOptions({hideUnchangedRegions:{enabled:e,contextLineCount:3,minimumLineCount:3,revealLineCount:20}})}),t(B,async()=>{let e=j.value;await $(),e&&D.value.some(t=>t.path===e)?ht(e):j.value=null}),t(z,async e=>{localStorage.setItem(qe,e?`1`:`0`),await $(),j.value&&!D.value.some(e=>e.path===j.value)&&(j.value=null)});function xt(e){switch(e){case`added`:return`#4ade80`;case`untracked`:return`#86efac`;case`deleted`:return`#f87171`;case`renamed`:return`#60a5fa`;default:return`#f59e0b`}}return r($),i(()=>{U.flush(),ft()}),(t,r)=>(e(),g(`div`,Ae,[y(`div`,je,[p(w,{name:`difference`,size:`18px`,color:`indigo-4`,class:`q-mr-xs`}),y(`span`,Me,u(t.$t(`diff.title`)),1),p(N,{label:`${D.value.length}`,color:`grey-8`,"text-color":`grey-4`,class:`q-ml-sm`,style:{"font-size":`10px`}},null,8,[`label`]),O.value?(e(),g(`span`,Ne,[B.value===`branch`?(e(),g(_,{key:0},[y(`span`,Pe,u(O.value),1),p(w,{name:`arrow_forward`,size:`11px`,color:`grey-8`,class:`q-mx-xs`}),y(`span`,Fe,u(k.value),1)],64)):(e(),g(_,{key:1},[y(`span`,Ie,`origin/`+u(k.value),1),p(w,{name:`arrow_forward`,size:`11px`,color:`grey-8`,class:`q-mx-xs`}),r[7]||=y(`span`,{class:`text-green-4`},`HEAD`,-1)],64))])):f(``,!0),j.value?(e(),g(`span`,Le,u(j.value),1)):f(``,!0),p(le),p(F,{modelValue:B.value,"onUpdate:modelValue":r[0]||=e=>B.value=e,dense:``,"no-caps":``,size:`sm`,"toggle-color":`indigo-8`,color:`grey-9`,"text-color":`grey-5`,options:[{label:t.$t(`diff.scopeBranch`),value:`branch`},{label:t.$t(`diff.scopeUnpushed`),value:`unpushed`}],class:`q-mr-sm`},null,8,[`modelValue`,`options`]),p(F,{modelValue:V.value,"onUpdate:modelValue":r[1]||=e=>V.value=e,dense:``,"no-caps":``,size:`sm`,"toggle-color":`indigo-8`,color:`grey-9`,"text-color":`grey-5`,options:[{label:t.$t(`diff.modeInspect`),value:`inspect`},{label:t.$t(`diff.modeReview`),value:`review`}],class:`q-mr-sm`},null,8,[`modelValue`,`options`]),p(F,{modelValue:L.value,"onUpdate:modelValue":r[2]||=e=>L.value=e,dense:``,"no-caps":``,size:`sm`,"toggle-color":`indigo-8`,color:`grey-9`,"text-color":`grey-5`,options:[{label:t.$t(`diff.side`),value:`side`},{label:t.$t(`diff.inline`),value:`inline`}],class:`q-mr-sm`},null,8,[`modelValue`,`options`]),p(E,{icon:R.value?`unfold_less`:`unfold_more`,dense:``,flat:``,size:`sm`,color:R.value?`indigo-4`:`grey-5`,class:`q-mr-sm`,onClick:r[3]||=e=>R.value=!R.value},{default:s(()=>[p(A,{anchor:`bottom middle`,self:`top middle`,delay:400},{default:s(()=>[m(u(R.value?t.$t(`diff.showUnchanged`):t.$t(`diff.hideUnchanged`)),1)]),_:1})]),_:1},8,[`icon`,`color`]),B.value===`branch`?(e(),d(E,{key:2,icon:`visibility`,dense:``,flat:``,size:`sm`,color:z.value?`indigo-4`:`grey-5`,class:`q-mr-sm`,onClick:r[4]||=e=>z.value=!z.value},{default:s(()=>[p(A,{anchor:`bottom middle`,self:`top middle`,delay:400},{default:s(()=>[m(u(z.value?t.$t(`diff.hideUntracked`):t.$t(`diff.showUntracked`)),1)]),_:1})]),_:1},8,[`color`])):f(``,!0),p(E,{flat:``,round:``,dense:``,icon:`close`,color:`grey-5`,size:`sm`,disable:W.value,onClick:r[5]||=e=>S(`close`)},{default:s(()=>[p(A,null,{default:s(()=>[m(u(t.$t(`tooltip.closeDiffViewer`)),1)]),_:1})]),_:1},8,[`disable`])]),p(ee,{dark:``}),y(`div`,Re,[V.value===`review`?(e(),g(`div`,ze,[p(ke,{comments:xe.value,"global-message":Ce.value,submitting:W.value,onUpdateGlobal:v(U).setGlobalMessage,onJumpToFile:Ee,onJumpToComment:Oe,onSubmit:we},null,8,[`comments`,`global-message`,`submitting`,`onUpdateGlobal`])])):f(``,!0),y(`div`,{class:`diff-file-list-wrapper`,style:x({width:`${Qe.value}px`,minWidth:`${q}px`})},[p(ce,{class:`diff-file-list q-pa-xs`,style:{width:`100%`,height:`100%`,"border-right":`1px solid #2a2a4a`}},{default:s(()=>[M.value?(e(),d(ae,{key:0,size:`24px`,color:`grey-6`,class:`q-ma-md`})):D.value.length===0?(e(),g(`div`,Be,u(t.$t(`diff.noChanges`)),1)):(e(),d(de,{key:2,nodes:pt.value,"node-key":`nodeKey`,"label-key":`label`,"children-key":`children`,dark:``,dense:``,"default-expand-all":``,"no-selection-unset":``,selected:mt.value,class:`diff-tree`,"onUpdate:selected":r[6]||=e=>{typeof e!=`string`||!e.startsWith(`file:`)||(j.value=e.slice(5))}},{"default-header":s(({node:n})=>[n.isFolder?(e(),g(_,{key:0},[p(w,{name:`folder`,size:`14px`,color:`indigo-4`,class:`q-mr-xs`}),y(`span`,Ve,u(n.label),1),p(N,{label:n.children?v(ue)(n.children):0,color:`grey-9`,"text-color":`grey-5`,class:`q-ml-xs`,style:{"font-size":`9px`}},null,8,[`label`]),V.value===`review`&&G(K(n))>0?(e(),d(N,{key:0,label:String(G(K(n))),color:`grey-7`,"text-color":`grey-3`,class:`q-ml-xs`,style:{"font-size":`9px`}},null,8,[`label`])):f(``,!0)],64)):(e(),g(_,{key:1},[p(w,{name:`description`,size:`14px`,style:x({color:xt(n.file.status)}),class:`q-mr-xs`},{default:s(()=>[p(A,null,{default:s(()=>[m(u(n.file.status),1)]),_:2},1024)]),_:2},1032,[`style`]),y(`span`,He,u(n.label),1),V.value===`review`&&(Te.value.get(n.file.path)??0)>0?(e(),d(N,{key:0,label:String(Te.value.get(n.file.path)),color:`indigo-8`,"text-color":`white`,class:`q-ml-xs`,style:{"font-size":`9px`}},null,8,[`label`])):f(``,!0),p(me,{"touch-position":``,"context-menu":``},{default:s(()=>[p(pe,{dense:``,dark:``,style:{"min-width":`220px`}},{default:s(()=>[c((e(),d(oe,{clickable:``,onClick:e=>gt(n.file.path,n.file.status)},{default:s(()=>[p(se,{avatar:``},{default:s(()=>[p(w,{name:n.file.status===`untracked`?`delete`:`restore`,size:`16px`,color:n.file.status===`untracked`?`red-5`:`orange-5`},null,8,[`name`,`color`])]),_:2},1024),p(se,null,{default:s(()=>[m(u(n.file.status===`untracked`?t.$t(`diff.deleteUntracked`):t.$t(`diff.rollbackToRemote`)),1)]),_:2},1024)]),_:2},1032,[`onClick`])),[[he]])]),_:2},1024)]),_:2},1024)],64))]),_:1},8,[`nodes`,`selected`]))]),_:1}),y(`div`,{class:`diff-file-list-resize-handle`,onMousedown:$e},null,32)],4),y(`div`,Ue,[P.value?(e(),g(`div`,We,[p(ae,{size:`32px`,color:`indigo-4`})])):j.value?f(``,!0):(e(),g(`div`,Ge,u(t.$t(`diff.selectFile`)),1)),y(`div`,{ref_key:`editorWrapperRef`,ref:et,class:`col`,style:{"min-height":`0`,position:`relative`,overflow:`hidden`}},[y(`div`,{ref_key:`editorContainer`,ref:I,style:{position:`absolute`,inset:`0`}},null,512),(e(!0),g(_,null,n(Q.value,t=>(e(),g(`div`,{key:t.zoneId,class:`review-zone-overlay`,style:x({top:`${t.topPx}px`,height:`${t.heightPx}px`})},[p(Se,{comments:t.comments,"start-in-add-mode":t.transient,onAdd:e=>st(j.value??``,t.line,e),onUpdate:(e,n)=>ct(j.value??``,t.line,e,n),onDelete:e=>lt(j.value??``,t.line,e),onDismissEmpty:e=>it(t.line)},null,8,[`comments`,`start-in-add-mode`,`onAdd`,`onUpdate`,`onDelete`,`onDismissEmpty`])],4))),128))],512),vt.value?(e(),d(E,{key:2,"no-caps":``,dense:``,size:`sm`,color:`primary`,icon:`chat`,label:t.$t(`diff.addToChat`),class:`send-to-chat-btn`,onClick:bt},null,8,[`label`])):f(``,!0)])])]))}}),[[`__scopeId`,`data-v-e60cf8ea`]]);export{Ze as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{F as e,L as t,M as n,Q as r,U as i,_t as ee,bt as a,d as o,f as s,g as c,h as te,l,p as u,r as d,rt as ne,u as f,v as re}from"./runtime-core.esm-bundler-C3IgBgY5.js";import{t as p}from"./QIcon-BJuyqdsT.js";import{t as m}from"./QBtn-a6jxWjmW.js";import{a as ie,b as h,y as g}from"./index-D6wj_wQ9.js";import{n as _,t as v}from"./QItemSection-5YpFpPDm.js";import{t as y}from"./QBadge-DWH42dbo.js";import{t as b}from"./QSpace-CLtL3aPy.js";import{t as x}from"./QList-D0FtnQJI.js";import{t as ae}from"./use-quasar-Sdcq6zzV.js";import{t as oe}from"./QPage-DFi3K093.js";var se={class:`row items-center q-mb-md`},ce={class:`text-h6 q-ml-sm`},le={key:0,class:`text-grey-6 text-center q-pa-lg`},ue={key:1,class:`column q-gutter-md`},de={class:`text-subtitle2 q-mb-sm`},S={class:`text-caption text-grey-6`},C={class:`text-body2`},w={class:`row items-center`},T={class:`text-subtitle2`},E={class:`row q-col-gutter-md q-mt-xs`},D={class:`col`},O={class:`text-caption text-grey-6`},k={class:`text-body2`},A={class:`col-auto`},j={class:`text-caption text-grey-6`},M={class:`text-body2`},N={class:`col-auto`},P={class:`text-caption text-grey-6`},F={class:`text-body2`},I={class:`row items-center`},L={class:`text-subtitle2`},R={key:0,class:`text-caption text-grey-5 q-mt-xs`},z={key:1,class:`text-caption text-negative q-mt-xs`},B={class:`row items-center`},V={class:`text-subtitle2`},H={class:`text-caption text-grey-6 q-mt-xs`},fe={key:0,class:`q-mt-sm`},pe={class:`text-caption text-negative q-mb-xs`},me={class:`text-body2`},he={class:`text-caption text-grey-6`},ge={class:`row items-center`},_e={class:`text-subtitle2`},ve={class:`text-subtitle1 q-mt-md q-mb-xs text-grey-5`},ye={class:`row items-center`},be={class:`text-subtitle2`},xe={key:0,class:`text-caption text-grey-7 q-mt-xs`},Se={class:`text-body2`},Ce={class:`text-caption text-grey-6`},we={class:`row items-center`},Te={class:`text-subtitle2`},Ee={key:0,class:`text-caption text-grey-7 q-mt-xs`},U={class:`text-body2`},De={class:`text-caption text-grey-6`},Oe={key:0},ke={class:`row items-center`},Ae={class:`text-subtitle2`},je={key:0,class:`text-caption text-grey-7 q-mt-xs`},Me={class:`text-body2`},Ne={class:`text-caption text-grey-6`},Pe={class:`row items-center`},Fe={class:`text-subtitle2`},Ie={key:0,class:`text-caption text-grey-7 q-mt-xs`},Le={class:`text-body2`},Re={class:`text-caption text-grey-6`},ze={class:`row items-center`},Be={class:`text-subtitle2`},Ve={key:0,class:`text-caption text-grey-7 q-mt-xs`},He={class:`text-body2`},Ue={class:`text-subtitle2 q-mb-sm`},We={class:`column q-gutter-xs`},Ge={class:`row items-center`},Ke={class:`q-ml-sm text-caption text-grey-6`},qe={class:`row items-center`},Je={class:`q-ml-sm text-caption text-grey-6`},Ye={class:`row items-center`},Xe={class:`q-ml-sm text-caption text-grey-6`},W=re({__name:`HealthPage`,setup(re){let W=ae(),G=ie(),K=r(null),q=r(!1);async function J(){q.value=!0;try{let e=await fetch(`/api/health/report`);if(!e.ok)throw Error(`HTTP ${e.status}`);K.value=await e.json()}catch(e){W.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}finally{q.value=!1}}n(J);let Ze=l(()=>{let e=K.value?.db.sizeBytes;return e==null?`—`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}),Y=l(()=>{let e=K.value;return e?e.db.schemaVersion===e.db.currentSchemaVersion:!1});function X(e){return e?`check_circle`:`error`}function Z(e){return e?`positive`:`negative`}function Q(e){return new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`})}function Qe(e){let t=Date.now()-new Date(e).getTime();if(Number.isNaN(t)||t<0)return`—`;let n=Math.floor(t/1e3);if(n<60)return`${n}s`;let r=Math.floor(n/60);if(r<60)return`${r}m`;let i=Math.floor(r/60);return i<24?`${i}h${r%60?` ${r%60}m`:``}`:`${Math.floor(i/24)}d`}function $(e){G.push({name:`workspace`,params:{id:e}}).catch(()=>{})}return(n,r)=>(e(),o(oe,{class:`q-pa-md`,style:{"max-width":`900px`,margin:`0 auto`}},{default:i(()=>[f(`div`,se,[c(m,{flat:``,dense:``,round:``,icon:`arrow_back`,onClick:r[0]||=e=>ne(G).back()}),f(`div`,ce,a(n.$t(`health.title`)),1),c(b),c(m,{flat:``,dense:``,icon:`refresh`,loading:q.value,label:n.$t(`common.refresh`),onClick:J},null,8,[`loading`,`label`])]),!K.value&&q.value?(e(),u(`div`,le,a(n.$t(`common.loading`)),1)):K.value?(e(),u(`div`,ue,[c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,de,a(n.$t(`health.envTitle`)),1),f(`div`,S,a(n.$t(`health.koboHome`)),1),f(`div`,C,a(K.value.koboHome),1)]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,w,[f(`div`,T,a(n.$t(`health.dbTitle`)),1),c(b),c(p,{name:X(Y.value),color:Z(Y.value)},null,8,[`name`,`color`])]),f(`div`,E,[f(`div`,D,[f(`div`,O,a(n.$t(`health.dbPath`)),1),f(`div`,k,a(K.value.db.path),1)]),f(`div`,A,[f(`div`,j,a(n.$t(`health.dbSize`)),1),f(`div`,M,a(Ze.value),1)]),f(`div`,N,[f(`div`,P,a(n.$t(`health.schemaVersion`)),1),f(`div`,F,a(K.value.db.schemaVersion)+` / `+a(K.value.db.currentSchemaVersion),1)])])]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,I,[f(`div`,L,a(n.$t(`health.cliTitle`)),1),c(b),c(p,{name:X(K.value.claudeCli.available),color:Z(K.value.claudeCli.available)},null,8,[`name`,`color`])]),K.value.claudeCli.available?(e(),u(`div`,R,a(K.value.claudeCli.version),1)):(e(),u(`div`,z,a(n.$t(`health.cliMissing`)),1))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,B,[f(`div`,V,a(n.$t(`health.workspacesTitle`)),1),c(b),c(p,{name:X(K.value.workspaces.worktreesMissing.length===0),color:Z(K.value.workspaces.worktreesMissing.length===0)},null,8,[`name`,`color`])]),f(`div`,H,a(n.$t(`health.workspacesCount`,{total:K.value.workspaces.total,archived:K.value.workspaces.archived})),1),K.value.workspaces.worktreesMissing.length>0?(e(),u(`div`,fe,[f(`div`,pe,a(n.$t(`health.worktreesMissing`,{count:K.value.workspaces.worktreesMissing.length})),1),c(x,{dense:``,dark:``},{default:i(()=>[(e(!0),u(d,null,t(K.value.workspaces.worktreesMissing,t=>(e(),o(_,{key:t.workspaceId},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,me,a(t.name),1),f(`div`,he,a(t.path),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):s(``,!0)]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,ge,[f(`div`,_e,a(n.$t(`health.sessionsTitle`)),1),c(b),c(p,{name:X(K.value.agentSessions.orphaned===0),color:Z(K.value.agentSessions.orphaned===0)},null,8,[`name`,`color`])]),f(`div`,{class:ee([`text-caption q-mt-xs`,K.value.agentSessions.orphaned>0?`text-negative`:`text-grey-6`])},a(n.$t(`health.sessionsOrphaned`,{n:K.value.agentSessions.orphaned})),3)]),_:1})]),_:1}),f(`div`,ve,a(n.$t(`health.activeTitle`)),1),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,ye,[c(p,{name:`hourglass_top`,size:`sm`,color:`amber-6`,class:`q-mr-sm`}),f(`div`,be,a(n.$t(`health.activeQuotaBackoffs`)),1),c(b),c(y,{label:K.value.active.quotaBackoffs.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.quotaBackoffs.length===0?(e(),u(`div`,xe,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.quotaBackoffs,t=>(e(),o(_,{key:t.workspaceId,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,Se,a(t.name),1),f(`div`,Ce,a(n.$t(`health.quotaResumeAt`,{time:Q(t.targetAt)}))+` · `+a(t.source)+` · retry #`+a(t.retryCount),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,we,[c(p,{name:`schedule`,size:`sm`,color:`indigo-4`,class:`q-mr-sm`}),f(`div`,Te,a(n.$t(`health.activeWakeups`)),1),c(b),c(y,{label:K.value.active.pendingWakeups.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.pendingWakeups.length===0?(e(),u(`div`,Ee,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.pendingWakeups,t=>(e(),o(_,{key:t.workspaceId,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,U,a(t.name),1),f(`div`,De,[te(a(n.$t(`health.wakeupAt`,{time:Q(t.targetAt)}))+` `,1),t.reason?(e(),u(`span`,Oe,` · `+a(t.reason),1)):s(``,!0)])]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,ke,[c(p,{name:`autorenew`,size:`sm`,color:`amber-7`,class:`q-mr-sm`}),f(`div`,Ae,a(n.$t(`health.activeAutoLoop`)),1),c(b),c(y,{label:K.value.active.autoLoopActive.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.autoLoopActive.length===0?(e(),u(`div`,je,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.autoLoopActive,t=>(e(),o(_,{key:t.workspaceId,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,Me,a(t.name),1),f(`div`,Ne,a(t.ready?n.$t(`health.autoLoopReady`):n.$t(`health.autoLoopGrooming`)),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,Pe,[c(p,{name:`play_arrow`,size:`sm`,color:`green-5`,class:`q-mr-sm`}),f(`div`,Fe,a(n.$t(`health.activeAgentSessions`)),1),c(b),c(y,{label:K.value.active.agentSessionsAlive.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.agentSessionsAlive.length===0?(e(),u(`div`,Ie,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.agentSessionsAlive,t=>(e(),o(_,{key:`${t.workspaceId}-${t.pid}`,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,Le,a(t.workspaceName),1),f(`div`,Re,` pid `+a(t.pid)+` · `+a(n.$t(`health.startedAgo`,{time:Qe(t.startedAt)})),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,ze,[c(p,{name:`dns`,size:`sm`,color:`cyan-5`,class:`q-mr-sm`}),f(`div`,Be,a(n.$t(`health.activeDevServers`)),1),c(b),c(y,{label:K.value.active.devServersRunning.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.devServersRunning.length===0?(e(),u(`div`,Ve,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.devServersRunning,t=>(e(),o(_,{key:t.workspaceId,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,He,a(t.name),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,Ue,a(n.$t(`health.integrationsTitle`)),1),f(`div`,We,[f(`div`,Ge,[c(p,{name:X(K.value.integrations.notion.configured),color:Z(K.value.integrations.notion.configured),size:`sm`},null,8,[`name`,`color`]),r[1]||=f(`span`,{class:`q-ml-sm text-body2`},`Notion`,-1),f(`span`,Ke,a(K.value.integrations.notion.configured?n.$t(`health.integrationConfigured`):n.$t(`health.integrationMissing`)),1)]),f(`div`,qe,[c(p,{name:X(K.value.integrations.sentry.configured),color:Z(K.value.integrations.sentry.configured),size:`sm`},null,8,[`name`,`color`]),r[2]||=f(`span`,{class:`q-ml-sm text-body2`},`Sentry`,-1),f(`span`,Je,a(K.value.integrations.sentry.configured?n.$t(`health.integrationConfigured`):n.$t(`health.integrationMissing`)),1)]),f(`div`,Ye,[c(p,{name:X(K.value.integrations.editor.configured),color:Z(K.value.integrations.editor.configured),size:`sm`},null,8,[`name`,`color`]),r[3]||=f(`span`,{class:`q-ml-sm text-body2`},`Editor`,-1),f(`span`,Xe,a(K.value.integrations.editor.configured?n.$t(`health.integrationConfigured`):n.$t(`health.integrationMissing`)),1)])])]),_:1})]),_:1})])):s(``,!0)]),_:1}))}});export{W as default};
|
|
1
|
+
import{F as e,L as t,M as n,Q as r,U as i,_t as ee,bt as a,d as o,f as s,g as c,h as te,l,p as u,r as d,rt as ne,u as f,v as re}from"./runtime-core.esm-bundler-9Z0QAO_7.js";import{t as p}from"./QIcon-qfJNZLIW.js";import{t as m}from"./QBtn-DEuWKHbR.js";import{a as ie,b as h,y as g}from"./index-CdHDdk1y.js";import{n as _,t as v}from"./QItemSection-CQUDd0Vg.js";import{t as y}from"./QBadge-C7r6oPSi.js";import{t as b}from"./QSpace-DKIph84L.js";import{t as x}from"./QList-BbnN_oNX.js";import{t as ae}from"./use-quasar-DQYS47mh.js";import{t as oe}from"./QPage-Co2h9wd_.js";var se={class:`row items-center q-mb-md`},ce={class:`text-h6 q-ml-sm`},le={key:0,class:`text-grey-6 text-center q-pa-lg`},ue={key:1,class:`column q-gutter-md`},de={class:`text-subtitle2 q-mb-sm`},S={class:`text-caption text-grey-6`},C={class:`text-body2`},w={class:`row items-center`},T={class:`text-subtitle2`},E={class:`row q-col-gutter-md q-mt-xs`},D={class:`col`},O={class:`text-caption text-grey-6`},k={class:`text-body2`},A={class:`col-auto`},j={class:`text-caption text-grey-6`},M={class:`text-body2`},N={class:`col-auto`},P={class:`text-caption text-grey-6`},F={class:`text-body2`},I={class:`row items-center`},L={class:`text-subtitle2`},R={key:0,class:`text-caption text-grey-5 q-mt-xs`},z={key:1,class:`text-caption text-negative q-mt-xs`},B={class:`row items-center`},V={class:`text-subtitle2`},H={class:`text-caption text-grey-6 q-mt-xs`},fe={key:0,class:`q-mt-sm`},pe={class:`text-caption text-negative q-mb-xs`},me={class:`text-body2`},he={class:`text-caption text-grey-6`},ge={class:`row items-center`},_e={class:`text-subtitle2`},ve={class:`text-subtitle1 q-mt-md q-mb-xs text-grey-5`},ye={class:`row items-center`},be={class:`text-subtitle2`},xe={key:0,class:`text-caption text-grey-7 q-mt-xs`},Se={class:`text-body2`},Ce={class:`text-caption text-grey-6`},we={class:`row items-center`},Te={class:`text-subtitle2`},Ee={key:0,class:`text-caption text-grey-7 q-mt-xs`},U={class:`text-body2`},De={class:`text-caption text-grey-6`},Oe={key:0},ke={class:`row items-center`},Ae={class:`text-subtitle2`},je={key:0,class:`text-caption text-grey-7 q-mt-xs`},Me={class:`text-body2`},Ne={class:`text-caption text-grey-6`},Pe={class:`row items-center`},Fe={class:`text-subtitle2`},Ie={key:0,class:`text-caption text-grey-7 q-mt-xs`},Le={class:`text-body2`},Re={class:`text-caption text-grey-6`},ze={class:`row items-center`},Be={class:`text-subtitle2`},Ve={key:0,class:`text-caption text-grey-7 q-mt-xs`},He={class:`text-body2`},Ue={class:`text-subtitle2 q-mb-sm`},We={class:`column q-gutter-xs`},Ge={class:`row items-center`},Ke={class:`q-ml-sm text-caption text-grey-6`},qe={class:`row items-center`},Je={class:`q-ml-sm text-caption text-grey-6`},Ye={class:`row items-center`},Xe={class:`q-ml-sm text-caption text-grey-6`},W=re({__name:`HealthPage`,setup(re){let W=ae(),G=ie(),K=r(null),q=r(!1);async function J(){q.value=!0;try{let e=await fetch(`/api/health/report`);if(!e.ok)throw Error(`HTTP ${e.status}`);K.value=await e.json()}catch(e){W.notify({type:`negative`,message:String(e),position:`top`,timeout:4e3})}finally{q.value=!1}}n(J);let Ze=l(()=>{let e=K.value?.db.sizeBytes;return e==null?`—`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}),Y=l(()=>{let e=K.value;return e?e.db.schemaVersion===e.db.currentSchemaVersion:!1});function X(e){return e?`check_circle`:`error`}function Z(e){return e?`positive`:`negative`}function Q(e){return new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`})}function Qe(e){let t=Date.now()-new Date(e).getTime();if(Number.isNaN(t)||t<0)return`—`;let n=Math.floor(t/1e3);if(n<60)return`${n}s`;let r=Math.floor(n/60);if(r<60)return`${r}m`;let i=Math.floor(r/60);return i<24?`${i}h${r%60?` ${r%60}m`:``}`:`${Math.floor(i/24)}d`}function $(e){G.push({name:`workspace`,params:{id:e}}).catch(()=>{})}return(n,r)=>(e(),o(oe,{class:`q-pa-md`,style:{"max-width":`900px`,margin:`0 auto`}},{default:i(()=>[f(`div`,se,[c(m,{flat:``,dense:``,round:``,icon:`arrow_back`,onClick:r[0]||=e=>ne(G).back()}),f(`div`,ce,a(n.$t(`health.title`)),1),c(b),c(m,{flat:``,dense:``,icon:`refresh`,loading:q.value,label:n.$t(`common.refresh`),onClick:J},null,8,[`loading`,`label`])]),!K.value&&q.value?(e(),u(`div`,le,a(n.$t(`common.loading`)),1)):K.value?(e(),u(`div`,ue,[c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,de,a(n.$t(`health.envTitle`)),1),f(`div`,S,a(n.$t(`health.koboHome`)),1),f(`div`,C,a(K.value.koboHome),1)]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,w,[f(`div`,T,a(n.$t(`health.dbTitle`)),1),c(b),c(p,{name:X(Y.value),color:Z(Y.value)},null,8,[`name`,`color`])]),f(`div`,E,[f(`div`,D,[f(`div`,O,a(n.$t(`health.dbPath`)),1),f(`div`,k,a(K.value.db.path),1)]),f(`div`,A,[f(`div`,j,a(n.$t(`health.dbSize`)),1),f(`div`,M,a(Ze.value),1)]),f(`div`,N,[f(`div`,P,a(n.$t(`health.schemaVersion`)),1),f(`div`,F,a(K.value.db.schemaVersion)+` / `+a(K.value.db.currentSchemaVersion),1)])])]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,I,[f(`div`,L,a(n.$t(`health.cliTitle`)),1),c(b),c(p,{name:X(K.value.claudeCli.available),color:Z(K.value.claudeCli.available)},null,8,[`name`,`color`])]),K.value.claudeCli.available?(e(),u(`div`,R,a(K.value.claudeCli.version),1)):(e(),u(`div`,z,a(n.$t(`health.cliMissing`)),1))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,B,[f(`div`,V,a(n.$t(`health.workspacesTitle`)),1),c(b),c(p,{name:X(K.value.workspaces.worktreesMissing.length===0),color:Z(K.value.workspaces.worktreesMissing.length===0)},null,8,[`name`,`color`])]),f(`div`,H,a(n.$t(`health.workspacesCount`,{total:K.value.workspaces.total,archived:K.value.workspaces.archived})),1),K.value.workspaces.worktreesMissing.length>0?(e(),u(`div`,fe,[f(`div`,pe,a(n.$t(`health.worktreesMissing`,{count:K.value.workspaces.worktreesMissing.length})),1),c(x,{dense:``,dark:``},{default:i(()=>[(e(!0),u(d,null,t(K.value.workspaces.worktreesMissing,t=>(e(),o(_,{key:t.workspaceId},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,me,a(t.name),1),f(`div`,he,a(t.path),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):s(``,!0)]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,ge,[f(`div`,_e,a(n.$t(`health.sessionsTitle`)),1),c(b),c(p,{name:X(K.value.agentSessions.orphaned===0),color:Z(K.value.agentSessions.orphaned===0)},null,8,[`name`,`color`])]),f(`div`,{class:ee([`text-caption q-mt-xs`,K.value.agentSessions.orphaned>0?`text-negative`:`text-grey-6`])},a(n.$t(`health.sessionsOrphaned`,{n:K.value.agentSessions.orphaned})),3)]),_:1})]),_:1}),f(`div`,ve,a(n.$t(`health.activeTitle`)),1),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,ye,[c(p,{name:`hourglass_top`,size:`sm`,color:`amber-6`,class:`q-mr-sm`}),f(`div`,be,a(n.$t(`health.activeQuotaBackoffs`)),1),c(b),c(y,{label:K.value.active.quotaBackoffs.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.quotaBackoffs.length===0?(e(),u(`div`,xe,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.quotaBackoffs,t=>(e(),o(_,{key:t.workspaceId,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,Se,a(t.name),1),f(`div`,Ce,a(n.$t(`health.quotaResumeAt`,{time:Q(t.targetAt)}))+` · `+a(t.source)+` · retry #`+a(t.retryCount),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,we,[c(p,{name:`schedule`,size:`sm`,color:`indigo-4`,class:`q-mr-sm`}),f(`div`,Te,a(n.$t(`health.activeWakeups`)),1),c(b),c(y,{label:K.value.active.pendingWakeups.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.pendingWakeups.length===0?(e(),u(`div`,Ee,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.pendingWakeups,t=>(e(),o(_,{key:t.workspaceId,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,U,a(t.name),1),f(`div`,De,[te(a(n.$t(`health.wakeupAt`,{time:Q(t.targetAt)}))+` `,1),t.reason?(e(),u(`span`,Oe,` · `+a(t.reason),1)):s(``,!0)])]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,ke,[c(p,{name:`autorenew`,size:`sm`,color:`amber-7`,class:`q-mr-sm`}),f(`div`,Ae,a(n.$t(`health.activeAutoLoop`)),1),c(b),c(y,{label:K.value.active.autoLoopActive.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.autoLoopActive.length===0?(e(),u(`div`,je,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.autoLoopActive,t=>(e(),o(_,{key:t.workspaceId,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,Me,a(t.name),1),f(`div`,Ne,a(t.ready?n.$t(`health.autoLoopReady`):n.$t(`health.autoLoopGrooming`)),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,Pe,[c(p,{name:`play_arrow`,size:`sm`,color:`green-5`,class:`q-mr-sm`}),f(`div`,Fe,a(n.$t(`health.activeAgentSessions`)),1),c(b),c(y,{label:K.value.active.agentSessionsAlive.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.agentSessionsAlive.length===0?(e(),u(`div`,Ie,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.agentSessionsAlive,t=>(e(),o(_,{key:`${t.workspaceId}-${t.pid}`,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,Le,a(t.workspaceName),1),f(`div`,Re,` pid `+a(t.pid)+` · `+a(n.$t(`health.startedAgo`,{time:Qe(t.startedAt)})),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,ze,[c(p,{name:`dns`,size:`sm`,color:`cyan-5`,class:`q-mr-sm`}),f(`div`,Be,a(n.$t(`health.activeDevServers`)),1),c(b),c(y,{label:K.value.active.devServersRunning.length,color:`grey-8`,"text-color":`grey-3`},null,8,[`label`])]),K.value.active.devServersRunning.length===0?(e(),u(`div`,Ve,a(n.$t(`health.noneActive`)),1)):(e(),o(x,{key:1,dense:``,dark:``,class:`q-mt-xs`},{default:i(()=>[(e(!0),u(d,null,t(K.value.active.devServersRunning,t=>(e(),o(_,{key:t.workspaceId,clickable:``,onClick:e=>$(t.workspaceId)},{default:i(()=>[c(v,null,{default:i(()=>[f(`div`,He,a(t.name),1)]),_:2},1024)]),_:2},1032,[`onClick`]))),128))]),_:1}))]),_:1})]),_:1}),c(g,{dark:``,flat:``,bordered:``},{default:i(()=>[c(h,null,{default:i(()=>[f(`div`,Ue,a(n.$t(`health.integrationsTitle`)),1),f(`div`,We,[f(`div`,Ge,[c(p,{name:X(K.value.integrations.notion.configured),color:Z(K.value.integrations.notion.configured),size:`sm`},null,8,[`name`,`color`]),r[1]||=f(`span`,{class:`q-ml-sm text-body2`},`Notion`,-1),f(`span`,Ke,a(K.value.integrations.notion.configured?n.$t(`health.integrationConfigured`):n.$t(`health.integrationMissing`)),1)]),f(`div`,qe,[c(p,{name:X(K.value.integrations.sentry.configured),color:Z(K.value.integrations.sentry.configured),size:`sm`},null,8,[`name`,`color`]),r[2]||=f(`span`,{class:`q-ml-sm text-body2`},`Sentry`,-1),f(`span`,Je,a(K.value.integrations.sentry.configured?n.$t(`health.integrationConfigured`):n.$t(`health.integrationMissing`)),1)]),f(`div`,Ye,[c(p,{name:X(K.value.integrations.editor.configured),color:Z(K.value.integrations.editor.configured),size:`sm`},null,8,[`name`,`color`]),r[3]||=f(`span`,{class:`q-ml-sm text-body2`},`Editor`,-1),f(`span`,Xe,a(K.value.integrations.editor.configured?n.$t(`health.integrationConfigured`):n.$t(`health.integrationMissing`)),1)])])]),_:1})]),_:1})])):s(``,!0)]),_:1}))}});export{W as default};
|