@loicngr/kobo 1.7.4 → 1.7.6
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 +26 -9
- package/dist/mcp-server/kobo-tasks-handlers.js +41 -1
- package/dist/mcp-server/kobo-tasks-server.js +157 -8
- package/dist/server/db/migrations.js +87 -0
- package/dist/server/db/schema.js +27 -0
- package/dist/server/index.js +9 -1
- package/dist/server/routes/health.js +68 -3
- package/dist/server/routes/workspaces.js +183 -4
- package/dist/server/services/agent/engines/claude-code/engine.js +13 -6
- package/dist/server/services/agent/engines/claude-code/event-mapper.js +96 -7
- package/dist/server/services/agent/orchestrator.js +113 -71
- package/dist/server/services/auto-loop-service.js +16 -3
- package/dist/server/services/cron-service.js +279 -0
- package/dist/server/services/quota-backoff-service.js +127 -0
- package/dist/server/services/wakeup-service.js +1 -1
- package/dist/server/services/workspace-service.js +98 -0
- package/dist/server/utils/git-ops.js +8 -1
- package/package.json +2 -1
- package/src/client/dist/spa/assets/{ActivityFeed-ClJLeAXJ.js → ActivityFeed-BboSPm4b.js} +2 -2
- package/src/client/dist/spa/assets/{ActivityFeed-DVBfmJWJ.css → ActivityFeed-tE4LVYck.css} +1 -1
- package/src/client/dist/spa/assets/AutoLoopChip-w8D77bI5.js +1 -0
- package/src/client/dist/spa/assets/{CreatePage-BOkt0Psl.js → CreatePage-BDObLDJc.js} +1 -1
- package/src/client/dist/spa/assets/{DiffViewer-Dls1jFCN.js → DiffViewer-CblFgn8w.js} +3 -3
- package/src/client/dist/spa/assets/{DiffViewer-wFfQ9tcY.css → DiffViewer-DTdDcKZC.css} +1 -1
- package/src/client/dist/spa/assets/HealthPage-CBSw7e5q.js +1 -0
- package/src/client/dist/spa/assets/{MainLayout-DHNIerYJ.js → MainLayout-DhaYycak.js} +17 -17
- package/src/client/dist/spa/assets/MainLayout-drolsINz.css +1 -0
- package/src/client/dist/spa/assets/{SearchPage-BEnZ-CLq.js → SearchPage-cZTwP4Lf.js} +1 -1
- package/src/client/dist/spa/assets/{SettingsPage-DeCbWvPb.js → SettingsPage-C1efO0VM.js} +1 -1
- package/src/client/dist/spa/assets/WorkspacePage-3jcof896.js +4 -0
- package/src/client/dist/spa/assets/{WorkspacePage-eymEd4kx.css → WorkspacePage-CCtIrBiR.css} +1 -1
- package/src/client/dist/spa/assets/{cssMode-AlflsawW.js → cssMode-BFLYiiEw.js} +1 -1
- package/src/client/dist/spa/assets/{editor.api-DtvjQlUm.js → editor.api-2asmmhth.js} +1 -1
- package/src/client/dist/spa/assets/{editor.main-Ccy_gjVD.js → editor.main-ChCYZyez.js} +3 -3
- package/src/client/dist/spa/assets/{expand-template-AQsvbQ8_.js → expand-template-CXQFkQOJ.js} +1 -1
- package/src/client/dist/spa/assets/{freemarker2-DdQktlXK.js → freemarker2-BaBL9E9G.js} +1 -1
- package/src/client/dist/spa/assets/{handlebars-CE3ee2NH.js → handlebars-BxDour4L.js} +1 -1
- package/src/client/dist/spa/assets/{html-CCKX8Xv9.js → html-C6hnkfIL.js} +1 -1
- package/src/client/dist/spa/assets/{htmlMode-Dh8jDJum.js → htmlMode-9zT3-dmz.js} +1 -1
- package/src/client/dist/spa/assets/i18n-CLY0XI9-.js +1 -0
- package/src/client/dist/spa/assets/index-D6wj_wQ9.js +2 -0
- package/src/client/dist/spa/assets/{javascript-DhmZNdUp.js → javascript-C3YjvKbE.js} +1 -1
- package/src/client/dist/spa/assets/{jsonMode-B0xAtnNK.js → jsonMode-DcJDgMzf.js} +1 -1
- package/src/client/dist/spa/assets/{liquid-ByL0HpZ0.js → liquid-CsT8SjJM.js} +1 -1
- package/src/client/dist/spa/assets/{mdx-DX4pehAZ.js → mdx-CT3yVSyc.js} +1 -1
- package/src/client/dist/spa/assets/{models-ClWoqWeC.js → models-BsjWUKqM.js} +1 -1
- package/src/client/dist/spa/assets/{monaco.contribution-Fegh8Y1Y.js → monaco.contribution-DKGNz1oQ.js} +2 -2
- package/src/client/dist/spa/assets/{purify.es-BWZjBa9F.js → purify.es-CPieV82n.js} +1 -1
- package/src/client/dist/spa/assets/{python-COS2MM8n.js → python-Ca5miKgj.js} +1 -1
- package/src/client/dist/spa/assets/{razor-Cc3xCJU7.js → razor-7qzusGRc.js} +1 -1
- package/src/client/dist/spa/assets/{render-chat-markdown-DcGIpMoe.js → render-chat-markdown-Bqq2G-yI.js} +1 -1
- package/src/client/dist/spa/assets/{tsMode-eQIJjERk.js → tsMode-BdvO8jZ2.js} +1 -1
- package/src/client/dist/spa/assets/{typescript-DwIlacVU.js → typescript-BfVNzhgs.js} +1 -1
- package/src/client/dist/spa/assets/{xml-DP-09Aih.js → xml-DGNXGqXL.js} +1 -1
- package/src/client/dist/spa/assets/{yaml-BhrtimeA.js → yaml-CtAtOyt5.js} +1 -1
- package/src/client/dist/spa/index.html +1 -1
- package/src/mcp-server/kobo-tasks-handlers.ts +55 -1
- package/src/mcp-server/kobo-tasks-server.ts +165 -7
- package/src/client/dist/spa/assets/HealthPage-CMxH3SBS.js +0 -1
- package/src/client/dist/spa/assets/MainLayout-DKurmqtk.css +0 -1
- package/src/client/dist/spa/assets/WorkspacePage-DFAFT5OW.js +0 -4
- package/src/client/dist/spa/assets/i18n-BOsrrRj4.js +0 -1
- package/src/client/dist/spa/assets/index-_ZaIBxd6.js +0 -2
- /package/src/client/dist/spa/assets/{QPage-ChUKoaKe.js → QPage-DFi3K093.js} +0 -0
- /package/src/client/dist/spa/assets/{formatters-BD0_hovB.js → formatters-DCAQ6ANJ.js} +0 -0
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ActivityFeed-ClJLeAXJ.js","assets/index-_ZaIBxd6.js","assets/vue-i18n-BcfTCFFS.js","assets/runtime-core.esm-bundler-C3IgBgY5.js","assets/QIcon-BJuyqdsT.js","assets/use-id-CuaR1RiE.js","assets/QBtn-a6jxWjmW.js","assets/QCheckbox-D5jfsxLV.js","assets/use-checkbox-D7zmRxGI.js","assets/QInput-Cm5-AGQ4.js","assets/QRadio-B3aKjCVu.js","assets/QToggle-1-N9qWq4.js","assets/notifications-OnPq4FrH.js","assets/index-eX_lKHSg.css","assets/_plugin-vue_export-helper-Cj6tcsj6.js","assets/purify.es-BWZjBa9F.js","assets/QExpansionItem-CH1ipL9n.js","assets/QItemSection-5YpFpPDm.js","assets/QItemLabel-DrTxqTqV.js","assets/QTooltip-fDNzBEfN.js","assets/render-chat-markdown-DcGIpMoe.js","assets/TouchPan-DoE24Io3.js","assets/touch-HRdTUO2o.js","assets/QSpinnerDots-CszPQQ9J.js","assets/documents-kx0vLfSG.js","assets/ActivityFeed-DVBfmJWJ.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{E as e,F as t,H as n,I as r,L as i,M as a,Q as o,S as s,T as c,U as l,W as u,_ as d,_t as f,a as p,bt as m,d as h,f as g,g as _,h as v,i as y,k as b,l as x,p as S,r as C,rt as w,u as T,v as E,w as D,y as O}from"./runtime-core.esm-bundler-C3IgBgY5.js";import{H as k,P as A,U as ee,a as te,i as ne,m as j,n as re,r as M,s as N,t as P,v as ie}from"./QIcon-BJuyqdsT.js";import{r as ae}from"./use-id-CuaR1RiE.js";import{n as F,t as I}from"./QRadio-B3aKjCVu.js";import{c as L,t as R}from"./QBtn-a6jxWjmW.js";import{n as z}from"./vue-i18n-BcfTCFFS.js";import{t as oe}from"./QInput-Cm5-AGQ4.js";import{t as se}from"./QCheckbox-D5jfsxLV.js";import{a as ce,b as le,d as B,g as ue,h as V,i as de,l as H,n as fe,p as U,r as pe,s as me,y as he}from"./index-_ZaIBxd6.js";import{t as ge}from"./QSpinnerDots-CszPQQ9J.js";import{n as _e,t as ve}from"./QItemSection-5YpFpPDm.js";import{t as ye}from"./QItemLabel-DrTxqTqV.js";import{m as W,t as G}from"./QTooltip-fDNzBEfN.js";import{t as K}from"./_plugin-vue_export-helper-Cj6tcsj6.js";import{t as be}from"./QBadge-DWH42dbo.js";import{t as q}from"./QSpace-CLtL3aPy.js";import{t as xe}from"./QMenu-B4xMxMGd.js";import{t as Se}from"./ClosePopup-D_UAdwkA.js";import{t as Ce}from"./use-quasar-Sdcq6zzV.js";import{t as J}from"./QChip-ByxK0Tuf.js";import{a as we,i as Y,n as X,r as Z,t as Q}from"./use-panel-D-8nAQns.js";import{t as Te}from"./kobo-commands-w8VepGvD.js";import{t as $}from"./formatters-BD0_hovB.js";import{n as Ee,t as De}from"./models-ClWoqWeC.js";import{t as Oe}from"./QPage-ChUKoaKe.js";import{i as ke,n as Ae,r as je,t as Me}from"./expand-template-AQsvbQ8_.js";var Ne={key:0,class:`row items-center q-pa-xs q-px-sm bg-dark text-grey-5 text-caption`},Pe={key:0,class:`q-ml-xs`},Fe=E({__name:`AgentBusyBanner`,setup(e){let{t:n}=z(),r=H(),i=D(`openDrawerTab`),a=x(()=>r.currentSubagents.filter(e=>e.status===`running`).length),o=x(()=>{let e=r.selectedWorkspace;return e?B(e.status):!1});function s(){i?.(`subagents`)}return(e,r)=>o.value?(t(),S(`div`,Ne,[_(ge,{size:`14px`,color:`indigo-4`,class:`q-mr-sm`}),T(`span`,null,m(w(n)(`agentBusy.banner`)),1),a.value>0?(t(),S(`span`,Pe,` — `+m(w(n)(`agentBusy.subagentsRunning`,{n:a.value},a.value)),1)):g(``,!0),a.value>0?(t(),S(C,{key:1},[_(q),T(`span`,{class:`text-indigo-4 cursor-pointer`,style:{"text-decoration":`underline`},onClick:s},m(w(n)(`agentBusy.viewSubagents`)),1)],64)):g(``,!0)])):g(``,!0)}}),Ie=A({name:`QBanner`,props:{...M,inlineActions:Boolean,dense:Boolean,rounded:Boolean},setup(e,{slots:t}){let{proxy:{$q:n}}=O(),r=re(e,n),i=x(()=>`q-banner row items-center`+(e.dense===!0?` q-banner--dense`:``)+(r.value===!0?` q-banner--dark q-dark`:``)+(e.rounded===!0?` rounded-borders`:``)),a=x(()=>`q-banner__actions row items-center justify-end col-${e.inlineActions===!0?`auto`:`all`}`);return()=>{let n=[s(`div`,{class:`q-banner__avatar col-auto row items-center self-start`},N(t.avatar)),s(`div`,{class:`q-banner__content col text-body2`},N(t.default))],r=N(t.action);return r!==void 0&&n.push(s(`div`,{class:a.value},r)),s(`div`,{class:i.value+(e.inlineActions===!1&&r!==void 0?` q-banner--top-padding`:``),role:`alert`},n)}}}),Le={class:`text-subtitle2`},Re={class:`text-caption`},ze=E({__name:`AgentErrorBanner`,props:{workspaceId:{}},setup(e){let n=e,{t:r}=z(),i=U();async function a(){let e=c.value;if(e){i.removeByEventId(n.workspaceId,e);try{await fetch(`/api/workspaces/${n.workspaceId}/events/${e}`,{method:`DELETE`})}catch(e){console.warn(`[agent-error-banner] failed to persist dismiss:`,e)}}}function o(e){let t=e.replace(/\u001b\[\d+m/g,``).trim();return/^warning:/i.test(t)}let s=x(()=>{let e=i.eventsFor(n.workspaceId);for(let t=e.length-1;t>=0;t--){let n=e[t];if(!(n.kind!==`error`||n.category===`quota`)&&!(n.category===`other`&&o(n.message)))return n}return null}),c=x(()=>{let e=i.eventsFor(n.workspaceId),t=i.eventIdsFor(n.workspaceId);for(let n=e.length-1;n>=0;n--){let r=e[n];if(!(r.kind!==`error`||r.category===`quota`)&&!(r.category===`other`&&o(r.message)))return t[n]??null}return null}),u=s;return(e,n)=>w(u)?(t(),h(Ie,{key:0,class:`bg-negative text-white q-ma-sm`},{avatar:l(()=>[_(P,{name:`error_outline`})]),action:l(()=>[_(R,{flat:``,dense:``,round:``,icon:`close`,"aria-label":w(r)(`common.close`),onClick:a},{default:l(()=>[_(G,null,{default:l(()=>[v(m(w(r)(`common.close`)),1)]),_:1})]),_:1},8,[`aria-label`])]),default:l(()=>[T(`div`,Le,m(w(r)(`agent.error.${w(u).category}`)),1),T(`div`,Re,m(w(u).message),1)]),_:1})):g(``,!0)}}),Be=A({name:`StepHeader`,props:{stepper:{},step:{},goToPanel:Function},setup(e,{attrs:t}){let{proxy:{$q:n}}=O(),r=o(null),i=x(()=>e.stepper.modelValue===e.step.name),a=x(()=>{let t=e.step.disable;return t===!0||t===``}),c=x(()=>{let t=e.step.error;return t===!0||t===``}),l=x(()=>{let t=e.step.done;return a.value===!1&&(t===!0||t===``)}),d=x(()=>{let t=e.step.headerNav,n=t===!0||t===``||t===void 0;return a.value===!1&&e.stepper.headerNav&&n}),f=x(()=>e.step.prefix&&(i.value===!1||e.stepper.activeIcon===`none`)&&(c.value===!1||e.stepper.errorIcon===`none`)&&(l.value===!1||e.stepper.doneIcon===`none`)),p=x(()=>{let t=e.step.icon||e.stepper.inactiveIcon;if(i.value===!0){let r=e.step.activeIcon||e.stepper.activeIcon;return r===`none`?t:r||n.iconSet.stepper.active}if(c.value===!0){let r=e.step.errorIcon||e.stepper.errorIcon;return r===`none`?t:r||n.iconSet.stepper.error}if(a.value===!1&&l.value===!0){let r=e.step.doneIcon||e.stepper.doneIcon;return r===`none`?t:r||n.iconSet.stepper.done}return t}),m=x(()=>{let t=c.value===!0?e.step.errorColor||e.stepper.errorColor:void 0;if(i.value===!0){let n=e.step.activeColor||e.stepper.activeColor||e.step.color;return n===void 0?t:n}return t===void 0?a.value===!1&&l.value===!0?e.step.doneColor||e.stepper.doneColor||e.step.color||e.stepper.inactiveColor:e.step.color||e.stepper.inactiveColor:t}),h=x(()=>`q-stepper__tab col-grow flex items-center no-wrap relative-position`+(m.value===void 0?``:` text-${m.value}`)+(c.value===!0?` q-stepper__tab--error q-stepper__tab--error-with-`+(f.value===!0?`prefix`:`icon`):``)+(i.value===!0?` q-stepper__tab--active`:``)+(l.value===!0?` q-stepper__tab--done`:``)+(d.value===!0?` q-stepper__tab--navigation q-focusable q-hoverable`:``)+(a.value===!0?` q-stepper__tab--disabled`:``)),g=x(()=>e.stepper.headerNav===!0?d.value:!1);function _(){r.value?.focus(),i.value===!1&&e.goToPanel(e.step.name)}function v(t){t.keyCode===13&&i.value===!1&&e.goToPanel(e.step.name)}return()=>{let n={class:h.value};d.value===!0&&(n.onClick=_,n.onKeyup=v,Object.assign(n,a.value===!0?{tabindex:-1,"aria-disabled":`true`}:{tabindex:t.tabindex||0}));let i=[s(`div`,{class:`q-focus-helper`,tabindex:-1,ref:r}),s(`div`,{class:`q-stepper__dot row flex-center q-stepper__line relative-position`},[s(`span`,{class:`row flex-center`},[f.value===!0?e.step.prefix:s(P,{name:p.value})])])];if(e.step.title!==void 0&&e.step.title!==null){let t=[s(`div`,{class:`q-stepper__title`},e.step.title)];e.step.caption!==void 0&&e.step.caption!==null&&t.push(s(`div`,{class:`q-stepper__caption`},e.step.caption)),i.push(s(`div`,{class:`q-stepper__label q-stepper__line relative-position`},t))}return u(s(`div`,n,i),[[L,g.value]])}}});function Ve(e){return s(`div`,{class:`q-stepper__step-content`},[s(`div`,{class:`q-stepper__step-inner`},N(e.default))])}var He={setup(e,{slots:t}){return()=>Ve(t)}},Ue=A({name:`QStep`,props:{...X,icon:String,color:String,title:{type:String,required:!0},caption:String,prefix:[String,Number],doneIcon:String,doneColor:String,activeIcon:String,activeColor:String,errorIcon:String,errorColor:String,headerNav:{type:Boolean,default:!0},done:Boolean,error:Boolean,onScroll:[Function,Array]},setup(e,{slots:t,emit:n}){let{proxy:{$q:r}}=O(),i=D(ie,j);if(i===j)return console.error(`QStep needs to be a child of QStepper`),j;let{getCache:a}=we(),c=o(null),l=x(()=>i.value.modelValue===e.name),u=x(()=>r.platform.is.ios!==!0&&r.platform.is.chrome===!0||l.value!==!0||i.value.vertical!==!0?{}:{onScroll(t){let{target:r}=t;r.scrollTop>0&&(r.scrollTop=0),e.onScroll!==void 0&&n(`scroll`,t)}}),d=x(()=>typeof e.name==`string`||typeof e.name==`number`?e.name:String(e.name));function f(){let e=i.value.vertical;return e===!0&&i.value.keepAlive===!0?s(y,i.value.keepAliveProps.value,l.value===!0?[s(i.value.needsUniqueKeepAliveWrapper.value===!0?a(d.value,()=>({...He,name:d.value})):He,{key:d.value},t.default)]:void 0):e!==!0||l.value===!0?Ve(t):void 0}return()=>s(`div`,{ref:c,class:`q-stepper__step`,role:`tabpanel`,...u.value},i.value.vertical===!0?[s(Be,{stepper:i.value,step:e,goToPanel:i.value.goToPanel}),i.value.animated===!0?s(W,f):f()]:[f()])}}),We=A({name:`QStepperNavigation`,setup(e,{slots:t}){return()=>s(`div`,{class:`q-stepper__nav`},N(t.default))}}),Ge=/(-\w)/g;function Ke(e){let t={};for(let n in e){let r=n.replace(Ge,e=>e[1].toUpperCase());t[r]=e[n]}return t}var qe=A({name:`QStepper`,props:{...M,...Y,flat:Boolean,bordered:Boolean,alternativeLabels:Boolean,headerNav:Boolean,contracted:Boolean,headerClass:String,inactiveColor:String,inactiveIcon:String,doneIcon:String,doneColor:String,activeIcon:String,activeColor:String,errorIcon:String,errorColor:String},emits:Z,setup(e,{slots:t}){let n=re(e,O().proxy.$q),{updatePanelsList:i,isValidPanelName:a,updatePanelIndex:o,getPanelContent:c,getPanels:l,panelDirectives:u,goToPanel:d,keepAliveProps:f,needsUniqueKeepAliveWrapper:p}=Q();r(ie,x(()=>({goToPanel:d,keepAliveProps:f,needsUniqueKeepAliveWrapper:p,...e})));let m=x(()=>`q-stepper q-stepper--${e.vertical===!0?`vertical`:`horizontal`}`+(e.flat===!0?` q-stepper--flat`:``)+(e.bordered===!0?` q-stepper--bordered`:``)+(n.value===!0?` q-stepper--dark q-dark`:``)),h=x(()=>`q-stepper__header row items-stretch justify-between q-stepper__header--${e.alternativeLabels===!0?`alternative`:`standard`}-labels`+(e.flat===!1||e.bordered===!0?` q-stepper__header--border`:``)+(e.contracted===!0?` q-stepper__header--contracted`:``)+(e.headerClass===void 0?``:` ${e.headerClass}`));function g(){let n=N(t.message,[]);if(e.vertical===!0){a(e.modelValue)&&o();let r=s(`div`,{class:`q-stepper__content`},N(t.default));return n===void 0?[r]:n.concat(r)}return[s(`div`,{class:h.value},l().map(t=>{let n=Ke(t.props);return s(Be,{key:n.name,stepper:e,step:n,goToPanel:d})})),n,ne(`div`,{class:`q-stepper__content q-panel-parent`},c(),`cont`,e.swipeable,()=>u.value)]}return()=>(i(t),s(`div`,{class:m.value},te(t.navigation,g())))}}),Je=`__KOBO_OTHER__`,Ye=`Other — the user will provide a free-form clarification in their next message. Please wait for their input before proceeding.`;function Xe(e,t){if(t)return(Array.isArray(e)?e:[]).map(e=>e===`__KOBO_OTHER__`?Ye:e).join(`, `);let n=Array.isArray(e)?e[0]??``:e;return n===`__KOBO_OTHER__`?Ye:n}var Ze={class:`text-grey-3`},Qe={key:0,class:`text-grey-6 q-ml-xs`},$e={key:1,class:`text-grey-6 q-ml-xs`},et=E({__name:`AukqOptionLabel`,props:{label:{},description:{}},setup(e){let n=e,{t:r}=z(),i=x(()=>n.label===Je);return(n,a)=>(t(),S(C,null,[T(`span`,Ze,m(i.value?w(r)(`askUserQuestion.otherOption`):e.label),1),i.value?(t(),S(`span`,Qe,`— `+m(w(r)(`askUserQuestion.otherOptionHint`)),1)):e.description?(t(),S(`span`,$e,`— `+m(e.description),1)):g(``,!0)],64))}}),tt={key:0,class:`ask-user-question-panel q-pa-sm bg-dark text-grey-3`},nt={class:`row items-center q-mb-xs`},rt={class:`text-caption text-uppercase text-weight-bold text-amber-4`,style:{"letter-spacing":`0.05em`}},it={key:0,class:`text-caption text-grey-6`},at={class:`text-body2 text-grey-2 q-mb-sm`},ot={key:0,class:`text-caption text-grey-6 q-mb-xs`},st={class:`aukq-options column q-gutter-xs`},ct={class:`row items-center q-gutter-sm`},lt={key:3,class:`text-negative text-caption`},ut=K(E({__name:`AskUserQuestionPanel`,props:{workspaceId:{}},setup(e){let r=e,{t:a}=z(),s=H(),c=x(()=>{let e=s.peekPending(r.workspaceId);if(!(!e||e.kind!==`question`))return e}),u=x(()=>c.value?(c.value.input?.questions??[]).map(e=>({...e,options:[...e.options,{label:Je}]})):[]),d=x(()=>u.value[E.value]),f=o({}),p=o({}),y=o(!1),b=o(null),E=o(0);n(u,e=>{f.value=Object.fromEntries(e.map(e=>[e.question,[]])),p.value=Object.fromEntries(e.map(e=>[e.question,``])),b.value=null,E.value=0,y.value=!1},{immediate:!0});function D(e,t){return e.header?e.header:`Q${t+1}`}function O(e){return A(e)?`check`:`help_outline`}function k(e){let t=u.value[e];return t?t.multiSelect?(f.value[t.question]??[]).length>0:!!p.value[t.question]:!1}function A(e){return k(e)&&e<E.value}let ee=x(()=>E.value===u.value.length-1),te=x(()=>u.value.every((e,t)=>k(t)));function ne(){E.value<u.value.length-1&&(E.value+=1)}function j(){E.value>0&&--E.value}async function re(){if(!y.value){y.value=!0,b.value=null;try{let e={};for(let t of u.value)t.multiSelect?e[t.question]=Xe(f.value[t.question]??[],!0):e[t.question]=Xe(p.value[t.question]??``,!1);await s.submitDeferredAnswer(r.workspaceId,e,c.value?.toolCallId)}catch(e){b.value=e instanceof Error?e.message:String(e)}finally{y.value=!1}}}async function M(){if(!y.value){y.value=!0,b.value=null;try{await s.cancelDeferredAnswer(r.workspaceId,`User cancelled the question via the UI`,c.value?.toolCallId)}catch(e){b.value=e instanceof Error?e.message:String(e)}finally{y.value=!1}}}return(e,n)=>c.value?(t(),S(`div`,tt,[T(`div`,nt,[_(P,{name:`question_answer`,size:`16px`,color:`amber-4`,class:`q-mr-sm`}),T(`div`,rt,m(w(a)(`askUserQuestion.title`)),1),_(q),u.value.length>1?(t(),S(`span`,it,m(E.value+1)+` / `+m(u.value.length),1)):g(``,!0)]),d.value?(t(),h(qe,{key:0,ref:`stepperRef`,modelValue:E.value,"onUpdate:modelValue":n[0]||=e=>E.value=e,flat:``,dark:``,animated:``,"header-nav":``,class:`aukq-stepper bg-transparent`,color:`amber-5`,"active-color":`amber-4`,"done-color":`amber-5`},{navigation:l(()=>[_(We,null,{default:l(()=>[T(`div`,ct,[E.value>0?(t(),h(R,{key:0,flat:``,dense:``,color:`grey-4`,label:w(a)(`askUserQuestion.previous`),disable:y.value,onClick:j},null,8,[`label`,`disable`])):g(``,!0),ee.value?(t(),h(R,{key:2,label:w(a)(`askUserQuestion.submit`),color:`indigo-5`,dense:``,unelevated:``,loading:y.value,disable:!te.value||y.value,onClick:re},null,8,[`label`,`loading`,`disable`])):(t(),h(R,{key:1,label:w(a)(`askUserQuestion.next`),color:`indigo-5`,dense:``,unelevated:``,disable:!k(E.value)||y.value,onClick:ne},null,8,[`label`,`disable`])),_(R,{label:w(a)(`askUserQuestion.cancel`),flat:``,dense:``,color:`grey-4`,disable:y.value,onClick:M},{default:l(()=>[_(G,null,{default:l(()=>[v(m(w(a)(`askUserQuestion.cancelTooltip`)),1)]),_:1})]),_:1},8,[`label`,`disable`]),_(q),b.value?(t(),S(`span`,lt,m(b.value),1)):g(``,!0)])]),_:1})]),default:l(()=>[(t(!0),S(C,null,i(u.value,(e,n)=>(t(),h(Ue,{key:n,name:n,title:D(e,n),icon:O(n),"active-icon":`edit`,done:A(n),"header-nav":A(n)||n===E.value},{default:l(()=>[T(`div`,at,m(e.question),1),e.multiSelect?(t(),S(`div`,ot,m(w(a)(`askUserQuestion.multiSelectHint`)),1)):g(``,!0),T(`div`,st,[e.multiSelect?(t(!0),S(C,{key:0},i(e.options,n=>(t(),h(se,{key:n.label,modelValue:f.value[e.question],"onUpdate:modelValue":t=>f.value[e.question]=t,val:n.label,dark:``,dense:``,color:`indigo-4`,disable:y.value},{default:l(()=>[_(et,{label:n.label,description:n.description},null,8,[`label`,`description`])]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`val`,`disable`]))),128)):(t(!0),S(C,{key:1},i(e.options,n=>(t(),h(I,{key:n.label,modelValue:p.value[e.question],"onUpdate:modelValue":t=>p.value[e.question]=t,val:n.label,dark:``,dense:``,color:`indigo-4`,disable:y.value},{default:l(()=>[_(et,{label:n.label,description:n.description},null,8,[`label`,`description`])]),_:2},1032,[`modelValue`,`onUpdate:modelValue`,`val`,`disable`]))),128))])]),_:2},1032,[`name`,`title`,`icon`,`done`,`header-nav`]))),128))]),_:1},8,[`modelValue`])):g(``,!0)])):g(``,!0)}}),[[`__scopeId`,`data-v-ab068179`]]),dt=E({__name:`AutoLoopChip`,setup(e){let{t:n}=z(),r=H(),i=x(()=>r.selectedWorkspace),a=x(()=>i.value?r.autoLoopStates[i.value.id]??null:null),o=x(()=>!!a.value?.auto_loop),s=x(()=>!!a.value?.auto_loop_ready),c=x(()=>r.tasks.filter(e=>e.status===`done`).length),u=x(()=>r.tasks.length);return(e,r)=>o.value&&!s.value?(t(),h(J,{key:0,dense:``,square:``,size:`sm`,color:`indigo-4`,"text-color":`white`,icon:`hourglass_top`,class:`q-ml-sm`},{default:l(()=>[v(m(w(n)(`autoLoop.preparing`))+` `,1),_(G,null,{default:l(()=>[v(m(w(n)(`autoLoop.preparingTooltip`)),1)]),_:1})]),_:1})):o.value?(t(),h(J,{key:1,dense:``,square:``,size:`sm`,color:`amber-9`,"text-color":`white`,icon:`autorenew`,class:`q-ml-sm`},{default:l(()=>[v(m(w(n)(`autoLoop.progress`,{done:c.value,total:u.value})),1)]),_:1})):g(``,!0)}});function ft(e,t){return e===`five_hour`?t(`rateLimitType.fiveHour`):e===`seven_day`?t(`rateLimitType.sevenDay`):e}function pt(e,t){try{let n=new Date(e);return Number.isNaN(n.getTime())?e:n.toLocaleTimeString(t?.locale,{hour:`2-digit`,minute:`2-digit`,hour12:!1,timeZone:t?.timeZone})}catch{return e}}function mt(e,t,n){return e.id===`text-detected`&&e.resetAt?n(`stats.resetsAt`,{value:pt(e.resetAt)}):!e.label||e.label.trim().length===0?n(`stats.usageBucket`,{n:t+1}):ft(e.label,n)}function ht(e){return e<50?`positive`:e<75?`warning`:e<90?`orange`:`negative`}var gt={class:`quota-footer`},_t={key:0,class:`text-grey-7`},vt={class:`text-negative text-weight-medium`},yt={class:`text-weight-medium q-mb-sm`},bt={class:`text-caption q-mb-sm`},xt={class:`text-orange text-weight-medium`},St={class:`text-weight-medium q-mb-sm`},Ct={class:`text-caption text-orange q-mb-sm`},wt={class:`text-grey-8`},Tt={class:`text-weight-medium q-mb-sm`},Et={class:`row items-center justify-between q-mb-xs`},Dt={key:0,class:`text-caption q-mt-xs`},Ot={class:`text-caption q-mt-sm`},kt={class:`row q-gutter-sm q-mt-sm`},At=K(E({__name:`QuotaFooter`,setup(e){let n=H(),{t:r}=z(),a=x(()=>n.currentProviderUsage),s=o(!1),c=x(()=>{let e=a.value;if(!e)return``;try{return new Date(e.fetchedAt).toLocaleTimeString()}catch{return e.fetchedAt}});function u(e,t){let n=a.value?.buckets[t];return n?mt({id:n.id,label:e,usedPct:n.usedPct,resetAt:n.resetsAt},t,r):r(`stats.usageBucket`,{n:t+1})}async function d(){if(!s.value){s.value=!0;try{await n.requestUsageRefresh(`claude-code`)}finally{s.value=!1}}}return(e,n)=>(t(),S(`span`,gt,[a.value?a.value.status===`unauthenticated`?(t(),S(C,{key:1},[_(P,{name:`warning`,color:`negative`,size:`14px`,class:`q-mr-xs`}),T(`span`,vt,m(e.$t(`quotaFooter.popover.unauthenticated`)),1),_(xe,{anchor:`top right`,self:`bottom right`,class:`q-pa-md quota-menu`},{default:l(()=>[T(`div`,yt,m(e.$t(`quotaFooter.popover.title`)),1),T(`div`,bt,m(e.$t(`quotaFooter.popover.unauthenticatedHint`)),1),_(R,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,label:e.$t(`quotaFooter.popover.refreshNow`),loading:s.value,disable:s.value,onClick:d},null,8,[`label`,`loading`,`disable`])]),_:1})],64)):a.value.status===`error`?(t(),S(C,{key:2},[_(P,{name:`error_outline`,color:`orange`,size:`14px`,class:`q-mr-xs`}),T(`span`,xt,m(e.$t(`quotaFooter.popover.error`)),1),_(xe,{anchor:`top right`,self:`bottom right`,class:`q-pa-md quota-menu`},{default:l(()=>[T(`div`,St,m(e.$t(`quotaFooter.popover.title`)),1),T(`div`,Ct,m(a.value.errorMessage),1),_(R,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,label:e.$t(`quotaFooter.popover.refreshNow`),loading:s.value,disable:s.value,onClick:d},null,8,[`label`,`loading`,`disable`])]),_:1})],64)):(t(),S(C,{key:3},[(t(!0),S(C,null,i(a.value.buckets,(e,n)=>(t(),S(`span`,{key:e.id,class:`quota-bucket-compact`},[T(`span`,wt,m(u(e.label,n)),1),_(F,{value:Math.max(0,Math.min(1,e.usedPct/100)),color:w(ht)(e.usedPct),"track-color":`grey-9`,class:`quota-bar`},null,8,[`value`,`color`]),T(`span`,{class:f([`bucket-pct`,`text-${w(ht)(e.usedPct)}`])},m(e.usedPct.toFixed(0))+`%`,3)]))),128)),_(xe,{anchor:`top right`,self:`bottom right`,class:`q-pa-md quota-menu`},{default:l(()=>[T(`div`,Tt,m(e.$t(`quotaFooter.popover.title`)),1),(t(!0),S(C,null,i(a.value.buckets,(n,r)=>(t(),S(`div`,{key:n.id,class:`q-mb-sm`},[T(`div`,Et,[T(`span`,null,m(u(n.label,r)),1),T(`span`,{class:f(`text-${w(ht)(n.usedPct)}`)},m(n.usedPct.toFixed(0))+`%`,3)]),_(F,{value:Math.max(0,Math.min(1,n.usedPct/100)),color:w(ht)(n.usedPct),"track-color":`grey-9`,class:`full-bar`},null,8,[`value`,`color`]),n.resetsAt?(t(),S(`div`,Dt,m(e.$t(`quotaFooter.popover.resetsIn`,{value:w(pt)(n.resetsAt)})),1)):g(``,!0)]))),128)),T(`div`,Ot,m(e.$t(`quotaFooter.lastUpdated`,{time:c.value})),1),T(`div`,kt,[_(R,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`refresh`,label:e.$t(`quotaFooter.popover.refreshNow`),loading:s.value,disable:s.value,onClick:d},null,8,[`label`,`loading`,`disable`])])]),_:1})],64)):(t(),S(`span`,_t,m(e.$t(`quotaFooter.empty`)),1))]))}}),[[`__scopeId`,`data-v-2edf9322`]]),jt={key:0,class:`row items-center q-gutter-xs q-mb-xs q-px-xs`,style:{"flex-wrap":`wrap`}},Mt={class:`text-caption image-tag-label`},Nt={key:2,class:`queue-banner row items-center q-pa-xs q-px-sm text-caption text-amber-6`},Pt={key:3,class:`autoloop-banner row items-center no-wrap q-pa-xs q-px-sm text-caption text-indigo-3`},Ft={class:`col`},It={key:4,class:`awaiting-user-banner row items-center q-pa-xs q-px-sm text-caption text-amber-5`},Lt={class:`row items-center q-gutter-sm`},Rt={class:`chat-hint row items-center text-caption text-grey-8`},zt=K(E({__name:`ChatInput`,props:{workspaceId:{}},setup(r){let a=r,{t:s}=z(),c=Ce(),u=H(),d=me(),p=V(),y=o(``),b=o(!1),E=x(()=>B(u.selectedWorkspace?.status));async function D(){if(a.workspaceId){b.value=!0;try{await u.interruptAgent(a.workspaceId),c.notify({type:`info`,message:s(`workspacePage.interrupted`),position:`top`,timeout:3e3})}catch(e){let t=e instanceof Error?e.message:s(`workspacePage.interruptFailed`);c.notify({type:`negative`,message:t,position:`top`,timeout:6e3})}finally{b.value=!1}}}let O=x(()=>B(u.selectedWorkspace?.status)),k=x(()=>!!u.queuedMessages[a.workspaceId]),A=o(null);function ee(){let e=A.value;return e?e.getNativeElement?.()??null:null}let{showSkills:te,skillFilter:ne,selectedSkillIndex:j,groupedDropdown:re,flatDropdown:M,fetchSkills:N,detectSlashFragment:ie,replaceFragmentWith:ae,closeDropdown:F}=je(y,()=>ee()),I=o([]),L=o(null),se=o(!1),ce=[`image/png`,`image/jpeg`,`image/gif`,`image/webp`];function le(t){let n=ee(),r=n?.selectionStart??y.value.length,i=y.value.slice(0,r),a=y.value.slice(r);y.value=i+t+a,e(()=>{if(n){let e=r+t.length;n.focus(),n.setSelectionRange(e,e)}})}function ue(){let e=`[image: ${s(`chatInput.uploading`)}]`,t=new Set(I.value.map(e=>e.placeholder));if(!t.has(e))return e;let n=2;for(;t.has(`[image: ${s(`chatInput.uploading`)} ${n}]`);)n++;return`[image: ${s(`chatInput.uploading`)} ${n}]`}async function de(e){if(!ce.includes(e.type))return;let t=crypto.randomUUID(),n=e.name||`pasted-image.png`,r=ue(),i={tempId:t,originalName:n,placeholder:r,status:`uploading`};I.value.push(i),le(r);try{let n=new FormData;n.append(`image`,e);let r=await fetch(`/api/workspaces/${a.workspaceId}/images`,{method:`POST`,body:n});if(!r.ok){let e=await r.json();throw Error(e.error||`Upload failed`)}let i=await r.json(),o=I.value.find(e=>e.tempId===t);if(o){o.uid=i.uid,o.path=i.path,o.status=`ready`;let e=`[image: ${i.path}]`;e!==o.placeholder&&(y.value=y.value.split(o.placeholder).join(e),o.placeholder=e)}}catch{let e=I.value.find(e=>e.tempId===t);e&&(e.status=`error`)}}function fe(e,t){fetch(`/api/workspaces/${e}/images/${t}`,{method:`DELETE`}).catch(()=>{})}function U(e){let t=I.value.find(t=>t.tempId===e);if(t){I.value=I.value.filter(t=>t.tempId!==e);{let e=t.placeholder.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);y.value=y.value.replace(RegExp(`${e}\\s?`,`g`),``)}t.uid&&fe(a.workspaceId,t.uid)}}function pe(e){if(e.clipboardData){for(let t of Array.from(e.clipboardData.items))if(t.type.startsWith(`image/`)){let e=t.getAsFile();e&&de(e)}}}function he(e){if(e.preventDefault(),se.value=!1,e.dataTransfer)for(let t of Array.from(e.dataTransfer.files))ce.includes(t.type)&&de(t)}function _e(e){e.preventDefault(),se.value=!0}function ve(){se.value=!1}function ye(e){let t=e.target;if(t.files){for(let e of Array.from(t.files))de(e);t.value=``}}let W=x(()=>I.value.some(e=>e.status===`uploading`)),K=x(()=>u.sessions.find(e=>e.id===u.selectedSessionId)??null);N(),n(()=>u.chatDraft,e=>{e&&(y.value=y.value?`${y.value}\n${e}`:e,u.chatDraft=``)});let be=!1;function xe(){be=!0,u.cancelQueuedMessage(a.workspaceId)}n(k,(e,t)=>{t&&!e&&!be&&(y.value=``),be=!1}),n(()=>a.workspaceId,e=>{let t=u.queuedMessages[e];y.value=t?t.content:``}),n(y,async()=>{await e(),await ie();let t=[];for(let e of I.value)y.value.includes(e.placeholder)||t.push(e.tempId);for(let e of t)U(e)});function Se(e){if(!e)return;if(e.type===`template`){let t=p.templates.find(t=>t.slug===e.name);if(!t)return;let n=u.workspaces.find(e=>e.id===a.workspaceId)??null,r=u.gitStatsCache[a.workspaceId]??null,i=u.sessions.find(e=>e.id===u.selectedSessionId)??null,o=null;if(i)if(i.name)o=i.name;else{let e=u.sessions.findIndex(e=>e.id===i.id);o=s(`workspacePage.session`,{n:u.sessions.length-e})}let c;if(r?.prUrl){let e=r.prUrl.match(/\/pull\/(\d+)/);e&&(c=parseInt(e[1],10))}let l=Me({workspace:n?{name:n.name,workingBranch:n.workingBranch,sourceBranch:n.sourceBranch,projectPath:n.projectPath}:null,gitStats:r?{commitCount:r.commitCount,unpushedCount:r.unpushedCount,filesChanged:r.filesChanged,insertions:r.insertions,deletions:r.deletions,prNumber:c,prUrl:r.prUrl,prState:r.prState}:null,sessionName:o});ae(Ae(t.content,l)),F();return}let t=`/${e.name}`;if(e.type===`kobo`&&Te[t]){y.value=t,F(),Ne();return}ae(`${t} `),F()}let J=x(()=>{let e=a.workspaceId;if(!e)return!1;let t=u.autoLoopStates[e];return t?.auto_loop===!0&&t?.auto_loop_ready===!0}),we=x(()=>u.selectedWorkspace?.status===`awaiting-user`),Y=x(()=>!a.workspaceId||J.value||we.value),X=o(!1);async function Z(){if(!(!a.workspaceId||X.value)){X.value=!0;try{await u.disableAutoLoop(a.workspaceId)}finally{X.value=!1}}}let Q=o(JSON.parse(localStorage.getItem(`kobo:chatHistory`)??`[]`)),$=o(-1),Ee=o(``);function De(e){e&&Q.value[0]!==e&&(Q.value.unshift(e),Q.value.length>50&&Q.value.pop(),localStorage.setItem(`kobo:chatHistory`,JSON.stringify(Q.value)))}function Oe(){$.value=-1,Ee.value=``}async function Ne(){let e=y.value.trim();if(!e&&I.value.length===0||Y.value||W.value)return;let t=K.value,n=Te[e];if(n){d.sendChatMessage(a.workspaceId,n.prompt,u.selectedSessionId??void 0),u.markRead(a.workspaceId),u.addActivityItem(a.workspaceId,{id:`user-${Date.now()}`,type:`text`,content:n.prompt,timestamp:new Date().toISOString(),sessionId:u.selectedSessionId??void 0,meta:{sender:`user`,pending:!0}}),De(e),Oe(),y.value=``;return}if(O.value){u.queueMessage(a.workspaceId,e,u.selectedSessionId??void 0);return}u.cancelQueuedMessage(a.workspaceId);let r=e,i=I.value.filter(e=>e.status===`ready`&&e.path&&!r.includes(`[image: ${e.path}]`)).map(e=>`[image: ${e.path}]`).join(` `);i&&(r=`${r} ${i}`.trim());let o=u.selectedSessionId??void 0;if((t?.status===`completed`||t?.status===`error`)&&!t.engineSessionId){c.notify({type:`warning`,message:s(`workspacePage.sessionEndedNotice`),position:`top`,timeout:5e3});return}let l=`user-${Date.now()}`;u.markRead(a.workspaceId),u.addActivityItem(a.workspaceId,{id:l,type:`text`,content:r,timestamp:new Date().toISOString(),sessionId:o,meta:{sender:`user`,pending:!0}});let f=e;De(e),Oe(),y.value=``,I.value=[];let p=(e,t)=>{console.error(`[ChatInput] ${t} failed:`,e),u.removeActivityItem(a.workspaceId,l),y.value=f;let n=e instanceof Error?e.message:null;c.notify({type:`negative`,message:n??s(`workspacePage.startFailed`),position:`top`,timeout:6e3})};if(t?.status===`idle`)try{await u.startWorkspace(a.workspaceId,r,t.id),await u.fetchSessions(a.workspaceId)}catch(e){p(e,`startWorkspace`)}else if(t?.status===`completed`||t?.status===`error`)try{await u.startWorkspace(a.workspaceId,r,t.id,!0),await u.fetchSessions(a.workspaceId)}catch(e){p(e,`resume session`)}else d.sendChatMessage(a.workspaceId,r,u.selectedSessionId??void 0)}function Pe(e){if(te.value&&M.value.length>0){if(e.key===`ArrowDown`){e.preventDefault(),j.value=Math.min(j.value+1,M.value.length-1);return}if(e.key===`ArrowUp`){e.preventDefault(),j.value=Math.max(j.value-1,0);return}if(e.key===`Tab`||e.key===`Enter`&&!e.shiftKey){e.preventDefault(),Se(M.value[j.value]);return}if(e.key===`Escape`){e.preventDefault(),F();return}}if(e.key===`ArrowUp`&&Q.value.length>0){let t=e.target;if(!(!t||t.selectionStart<=(y.value.indexOf(`
|
|
3
|
-
`)===-1?y.value.length:y.value.indexOf(`
|
|
4
|
-
`)))&&$.value===-1)return;e.preventDefault(),$.value===-1&&(Ee.value=y.value),$.value<Q.value.length-1&&($.value++,y.value=Q.value[$.value]);return}if(e.key===`ArrowDown`&&$.value>=0){e.preventDefault(),$.value--,y.value=$.value>=0?Q.value[$.value]:Ee.value;return}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Ne())}return(e,n)=>(t(),S(`div`,{class:f([`chat-input-container column q-pa-sm`,{"chat-input-dragging":se.value}]),onDragover:_e,onDragleave:ve,onDrop:he},[I.value.length>0?(t(),S(`div`,jt,[(t(!0),S(C,null,i(I.value,n=>(t(),S(`div`,{key:n.tempId,class:f([`image-tag row items-center q-px-sm q-py-xs rounded-borders`,{"image-tag--uploading":n.status===`uploading`,"image-tag--ready":n.status===`ready`,"image-tag--error":n.status===`error`}])},[n.status===`uploading`?(t(),h(ge,{key:0,size:`14px`,color:`grey-6`,class:`q-mr-xs`})):n.status===`ready`?(t(),h(P,{key:1,name:`image`,size:`14px`,color:`green-6`,class:`q-mr-xs`})):(t(),h(P,{key:2,name:`error`,size:`14px`,color:`red-6`,class:`q-mr-xs`})),T(`span`,Mt,m(n.status===`uploading`?e.$t(`chatInput.uploading`):n.path||n.originalName),1),_(R,{flat:``,dense:``,round:``,size:`xs`,icon:`close`,class:`q-ml-xs image-tag-close`,onClick:e=>U(n.tempId)},{default:l(()=>[_(G,null,{default:l(()=>[v(m(e.$t(`tooltip.removeImage`)),1)]),_:1})]),_:1},8,[`onClick`])],2))),128))])):g(``,!0),w(te)&&w(M).length>0?(t(),h(ke,{key:1,class:`chat-slash-popup`,"grouped-dropdown":w(re),"flat-dropdown":w(M),"selected-index":w(j),onSelect:Se},null,8,[`grouped-dropdown`,`flat-dropdown`,`selected-index`])):g(``,!0),k.value?(t(),S(`div`,Nt,[_(P,{name:`schedule`,size:`14px`,color:`amber-6`,class:`q-mr-sm`}),T(`span`,null,m(e.$t(`chatInput.queueBanner`)),1)])):g(``,!0),J.value?(t(),S(`div`,Pt,[_(P,{name:`all_inclusive`,size:`14px`,color:`indigo-4`,class:`q-mr-sm`}),T(`span`,Ft,m(e.$t(`chatInput.autoLoopBanner`)),1),_(R,{flat:``,dense:``,"no-caps":``,size:`sm`,icon:`stop_circle`,color:`orange-4`,label:e.$t(`chatInput.autoLoopStop`),loading:X.value,disable:X.value,onClick:Z},null,8,[`label`,`loading`,`disable`])])):g(``,!0),we.value&&!J.value?(t(),S(`div`,It,[_(P,{name:`question_answer`,size:`14px`,color:`amber-5`,class:`q-mr-sm`}),T(`span`,null,m(e.$t(`chatInput.awaitingUserBanner`)),1)])):g(``,!0),T(`div`,Lt,[_(oe,{ref_key:`chatInputRef`,ref:A,modelValue:y.value,"onUpdate:modelValue":n[0]||=e=>y.value=e,dense:``,dark:``,borderless:``,autogrow:``,readonly:k.value,placeholder:e.$t(`chatInput.placeholder`),class:`chat-input col rounded-borders`,disable:Y.value,onKeydown:Pe,onPaste:pe},null,8,[`modelValue`,`readonly`,`placeholder`,`disable`]),T(`input`,{ref_key:`fileInputRef`,ref:L,type:`file`,accept:`image/png,image/jpeg,image/gif,image/webp`,multiple:``,style:{display:`none`},onChange:ye},null,544),_(R,{flat:``,dense:``,icon:`attach_file`,color:`grey-6`,disable:Y.value,onClick:n[1]||=e=>L.value?.click()},{default:l(()=>[_(G,null,{default:l(()=>[v(m(e.$t(`chatInput.attachImage`)),1)]),_:1})]),_:1},8,[`disable`]),k.value?(t(),h(R,{key:0,flat:``,dense:``,icon:`cancel`,color:`orange`,onClick:xe},{default:l(()=>[_(G,null,{default:l(()=>[v(m(e.$t(`chatInput.cancelQueue`)),1)]),_:1})]),_:1})):(t(),h(R,{key:1,flat:``,dense:``,icon:`send`,color:`primary`,disable:Y.value||!y.value.trim()&&I.value.length===0||W.value,onClick:Ne},{default:l(()=>[_(G,null,{default:l(()=>[v(m(e.$t(`tooltip.sendMessage`)),1)]),_:1})]),_:1},8,[`disable`]))]),T(`div`,Rt,[T(`div`,null,[n[2]||=T(`kbd`,null,`Enter`,-1),v(` `+m(e.$t(`common.send`))+` `,1),n[3]||=T(`span`,{class:`q-mx-xs`},`·`,-1),n[4]||=v(),n[5]||=T(`kbd`,null,`Shift+Enter`,-1),v(` `+m(e.$t(`common.newLine`))+` `,1),n[6]||=T(`span`,{class:`q-mx-xs`},`·`,-1),n[7]||=v(),n[8]||=T(`kbd`,null,`↑↓`,-1),v(` `+m(e.$t(`common.history`)),1)]),_(q),_(At,{class:`q-mr-md`}),E.value?(t(),h(R,{key:0,flat:``,dense:``,"no-caps":``,size:`sm`,color:`orange-4`,icon:`pause`,label:e.$t(`workspacePage.interrupt`),loading:b.value,disable:b.value,onClick:D},{default:l(()=>[_(G,null,{default:l(()=>[v(m(e.$t(`workspacePage.interruptTooltip`)),1)]),_:1})]),_:1},8,[`label`,`loading`,`disable`])):g(``,!0)])],34))}}),[[`__scopeId`,`data-v-84c366ba`]]),Bt={key:0,class:`permission-request-panel q-pa-sm bg-dark text-grey-3`},Vt={class:`row items-center q-mb-sm`},Ht={class:`text-caption text-uppercase text-weight-bold text-amber-4`,style:{"letter-spacing":`0.05em`}},Ut={class:`text-body2 text-grey-2 q-mb-xs`},Wt={class:`text-weight-medium`},Gt={class:`q-ml-xs`},Kt={class:`text-caption text-grey-6 q-mb-xs`},qt={class:`permission-input-pre`},Jt={class:`row items-center q-gutter-sm q-mt-sm`},Yt={key:0,class:`text-negative text-caption`},Xt=K(E({__name:`PermissionRequestPanel`,props:{workspaceId:{}},setup(e){let r=e,{t:i}=z(),a=H(),s=x(()=>{let e=a.peekPending(r.workspaceId);if(!(!e||e.kind!==`permission`))return e}),c=x(()=>{if(!s.value)return``;try{return JSON.stringify(s.value.toolInput,null,2)}catch{return String(s.value.toolInput)}}),l=o(!1),u=o(null);n(()=>s.value?.toolCallId??null,()=>{l.value=!1,u.value=null});async function d(e){if(s.value&&!l.value){l.value=!0,u.value=null;try{await a.submitDeferredPermission(r.workspaceId,s.value.toolCallId,e,e===`deny`?i(`permissionRequest.denied`):void 0)}catch(e){u.value=e instanceof Error?e.message:String(e)}finally{l.value=!1}}}return(e,n)=>s.value?(t(),S(`div`,Bt,[T(`div`,Vt,[_(P,{name:`security`,size:`16px`,color:`amber-4`,class:`q-mr-sm`}),T(`div`,Ht,m(w(i)(`permissionRequest.title`)),1)]),T(`div`,Ut,[T(`span`,Wt,m(w(i)(`permissionRequest.tool`))+`:`,1),T(`code`,Gt,m(s.value.toolName),1)]),T(`div`,Kt,m(w(i)(`permissionRequest.input`)),1),T(`pre`,qt,m(c.value),1),T(`div`,Jt,[_(R,{label:w(i)(`permissionRequest.allow`),color:`indigo-5`,dense:``,unelevated:``,loading:l.value,disable:l.value,onClick:n[0]||=e=>d(`allow`)},null,8,[`label`,`loading`,`disable`]),_(R,{label:w(i)(`permissionRequest.deny`),flat:``,dense:``,color:`grey-4`,disable:l.value,onClick:n[1]||=e=>d(`deny`)},null,8,[`label`,`disable`]),_(q),u.value?(t(),S(`span`,Yt,m(u.value),1)):g(``,!0)])])):g(``,!0)}}),[[`__scopeId`,`data-v-12227c33`]]),Zt={class:`text-subtitle2`},Qt={class:`text-caption`},$t=E({__name:`StaleSessionBanner`,props:{workspaceId:{}},setup(e){let n=e,r=H(),i=x(()=>{if(!r.selectedSessionId||r.sessions.length<2)return!1;let e=r.sessions[0];if(!e||e.id===r.selectedSessionId)return!1;let t=r.workspaces.find(e=>e.id===n.workspaceId);return!t||!B(t.status)?!1:r.autoLoopStates[n.workspaceId]?.auto_loop===!0});function a(){let e=r.sessions[0];e&&r.selectSession(e.id)}return(e,n)=>i.value?(t(),h(Ie,{key:0,class:`bg-indigo-9 text-white q-ma-sm`,rounded:``},{avatar:l(()=>[_(P,{name:`loop`})]),action:l(()=>[_(R,{flat:``,dense:``,"no-caps":``,label:e.$t(`staleSessionBanner.switchToCurrent`),onClick:a},null,8,[`label`])]),default:l(()=>[T(`div`,Zt,m(e.$t(`staleSessionBanner.title`)),1),T(`div`,Qt,m(e.$t(`staleSessionBanner.message`)),1)]),_:1})):g(``,!0)}}),en={key:0,class:`row items-center q-pa-xs q-px-sm bg-dark text-grey-5 text-caption`},tn=E({__name:`WakeupBanner`,setup(e){let{t:n}=z(),r=H(),i=o(Date.now()),s=null;a(()=>{s=setInterval(()=>{i.value=Date.now()},1e3)}),b(()=>{s&&clearInterval(s)});let c=x(()=>{let e=r.selectedWorkspace;return e?r.pendingWakeups[e.id]??null:null}),u=x(()=>r.selectedWorkspace?!!c.value:!1),d=x(()=>{if(!c.value)return 0;let e=Math.ceil((new Date(c.value.targetAt).getTime()-i.value)/1e3);return Math.max(0,e)}),f=x(()=>d.value===0?n(`wakeup.firing`):n(`wakeup.scheduledIn`,{n:d.value}));function p(){let e=r.selectedWorkspace;e&&r.cancelPendingWakeup(e.id)}return(e,r)=>u.value?(t(),S(`div`,en,[_(P,{name:`schedule`,size:`14px`,color:`amber-4`,class:`q-mr-sm`}),T(`span`,null,[v(m(f.value)+` `,1),c.value?.reason?(t(),h(G,{key:0,anchor:`top middle`,self:`bottom middle`,offset:[0,6]},{default:l(()=>[v(m(w(n)(`wakeup.reason`,{reason:c.value.reason})),1)]),_:1})):g(``,!0)]),_(q),_(R,{flat:``,dense:``,round:``,size:`xs`,icon:`close`,color:`grey-5`,"aria-label":w(n)(`wakeup.cancel`),onClick:p},{default:l(()=>[_(G,null,{default:l(()=>[v(m(w(n)(`wakeup.cancel`)),1)]),_:1})]),_:1},8,[`aria-label`])])):g(``,!0)}}),nn={class:`wp-header row items-center q-px-md q-py-sm no-wrap`},rn={class:`text-body1 text-weight-medium text-grey-3 ellipsis`,style:{"max-width":`480px`}},an={class:`row items-center no-wrap text-caption text-grey-5`},on={class:`row items-center no-wrap text-caption text-grey-5`},sn={class:`row items-center no-wrap text-caption text-grey-5`},cn={key:1,class:`text-body2 text-grey-8`},ln={class:`col column items-center justify-center`},un={class:`text-grey-6 text-caption q-mt-sm`},dn={class:`text-subtitle1`},fn=K(E({__name:`WorkspacePage`,setup(e){let r=d(()=>Promise.all([pe(()=>import(`./ActivityFeed-ClJLeAXJ.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25])),new Promise(e=>setTimeout(e,500))]).then(([e])=>e)),i=Ce(),s=H(),{t:y}=z(),{timeAgo:b}=$();function E(e){return e===`awaiting-user`?y(`workspaceStatus.awaitingUser`):e}o(!1);let D=o(!1),O=new Set,A=o(new Set),te=x(()=>B(s.selectedWorkspace?.status));n(te,e=>{e||(A.value=new Set)}),n(()=>s.selectedWorkspaceId,e=>{A.value=new Set,e&&s.fetchPendingWakeup(e)},{immediate:!0});function ne(e){if(!te.value)return;let t=new Set(A.value);t.add(e),A.value=t}function j(e){O.add(e),e.finally(()=>{O.delete(e)})}o(!1);async function re(){if(s.selectedWorkspaceId){D.value=!0;try{await s.stopWorkspace(s.selectedWorkspaceId)}catch(e){let t=e instanceof Error?e.message:y(`workspacePage.stopFailed`);i.notify({type:`negative`,message:t,position:`top`,timeout:6e3})}finally{D.value=!1}}}let M=x(()=>[...De.map(e=>({label:y(e.i18nLabelKey),value:e.value}))]),N=x(()=>[{label:L(y(`reasoning.auto`)),value:`auto`},{label:L(y(`reasoning.low`)),value:`low`},{label:L(y(`reasoning.medium`)),value:`medium`},{label:L(y(`reasoning.high`)),value:`high`},{label:L(y(`reasoning.xhigh`)),value:`xhigh`},{label:L(y(`reasoning.max`)),value:`max`}]),ie=x(()=>{let e=s.selectedWorkspace,t=e?s.autoLoopStates[e.id]?.auto_loop??e.autoLoop:!1;return[{label:y(`agentPermissionMode.plan`),value:`plan`,disable:t},{label:y(`agentPermissionMode.bypass`),value:`bypass`,disable:!1},{label:y(`agentPermissionMode.strict`),value:`strict`,disable:!1},{label:y(`agentPermissionMode.interactive`),value:`interactive`,disable:!1}]}),F=x({get:()=>s.selectedWorkspace?.model??`auto`,set:e=>{s.selectedWorkspaceId&&(ne(`model`),j(s.updateModel(s.selectedWorkspaceId,e)))}}),I=x({get:()=>s.selectedWorkspace?.reasoningEffort??`auto`,set:e=>{s.selectedWorkspaceId&&(ne(`reasoningEffort`),j(s.updateReasoningEffort(s.selectedWorkspaceId,e)))}});function L(e){let t=e.indexOf(`:`);return t>=0?e.slice(t+1).trim():e}function se(e){return N.value.find(t=>t.value===e)?.label??e}let V=x({get:()=>s.selectedWorkspace?.agentPermissionMode??`bypass`,set:e=>{s.selectedWorkspaceId&&(ne(`agentPermissionMode`),j(s.updateAgentPermissionMode(s.selectedWorkspaceId,e)))}}),U=de(),me=ce(),W=x(()=>s.selectedWorkspaceId),K=x(()=>s.selectedWorkspace),xe=x(()=>s.sessions),J=x({get:()=>s.selectedSessionId,set:e=>{if(e===`__new__`){Ae();return}if(!e)return;s.selectSession(e);let t={...U.query};t.session=e,me.replace({query:t})}}),we=x(()=>[...s.sessions.map((e,t)=>({label:e.name??y(`workspacePage.session`,{n:s.sessions.length-t}),value:e.id,caption:b(e.startedAt),isSession:!0})),{label:y(`workspacePage.newSession`),value:`__new__`,caption:``,isSession:!1}]),Y=o(!1),X=o(null),Z=o(``),Q=o(!1);function Te(e,t){let n=s.sessions.find(t=>t.id===e);n&&(X.value={id:e},Z.value=n.name??t,Y.value=!0)}async function ke(){if(!(!X.value||!s.selectedWorkspaceId))try{await s.renameSession(s.selectedWorkspaceId,X.value.id,Z.value.trim())}catch(e){console.error(`[WorkspacePage] renameSession failed:`,e),i.notify({type:`negative`,message:y(`workspacePage.renameFailed`),position:`top`})}finally{Y.value=!1}}async function Ae(){if(s.selectedWorkspaceId){Q.value=!0;try{await s.createSession(s.selectedWorkspaceId)}catch(e){console.error(`[WorkspacePage] createSession failed:`,e);let t=e instanceof Error?e.message:null;i.notify({type:`negative`,message:t??y(`workspacePage.createSessionFailed`),position:`top`,timeout:6e3})}finally{Q.value=!1}}}return a(()=>{let e=U.params.id;e&&(s.selectWorkspace(e),s.fetchPendingWakeup(e));let t=U.query.session;t&&s.selectSession(t)}),n(()=>U.params.id,e=>{e&&e!==s.selectedWorkspaceId&&s.selectWorkspace(e)}),n(()=>s.selectedWorkspaceId,e=>{e===null&&U.params.id&&me.push({name:`workspace`})}),(e,n)=>(t(),h(Oe,{class:`column no-wrap`,style:{height:`100vh`}},{default:l(()=>[T(`div`,nn,[K.value?(t(),S(C,{key:0},[T(`span`,rn,[v(m(K.value.name)+` `,1),_(G,null,{default:l(()=>[v(m(K.value.name),1)]),_:1})]),_(be,{label:E(K.value.status),color:[`error`,`quota`].includes(K.value.status)?`red-9`:K.value.status===`awaiting-user`?`amber-9`:w(B)(K.value.status)?`green-9`:`grey-8`,class:`q-ml-sm`,style:{"font-size":`10px`}},null,8,[`label`,`color`]),_(dt),xe.value.length>0?(t(),h(Ee,{key:0,modelValue:J.value,"onUpdate:modelValue":n[0]||=e=>J.value=e,options:we.value,"emit-value":``,"map-options":``,dense:``,dark:``,borderless:``,"options-dense":``,loading:Q.value,disable:Q.value,class:`q-ml-sm`,style:{"min-width":`160px`,"max-width":`220px`,"font-size":`11px`}},{option:l(e=>[e.opt.isSession?g(``,!0):(t(),h(ae,{key:0,spaced:``})),_(_e,c(e.itemProps,{clickable:``,dense:``,class:`row items-center no-wrap`}),{default:l(()=>[_(ve,null,{default:l(()=>[_(ye,{class:f(e.opt.isSession?``:`text-grey-5`)},{default:l(()=>[v(m(e.opt.label),1)]),_:2},1032,[`class`]),e.opt.caption?(t(),h(ye,{key:0,caption:``},{default:l(()=>[v(m(e.opt.caption),1)]),_:2},1024)):g(``,!0)]),_:2},1024),e.opt.isSession?(t(),h(ve,{key:0,side:``},{default:l(()=>[_(R,{icon:`more_vert`,flat:``,dense:``,round:``,size:`xs`,color:`grey-6`,onClick:ee(t=>Te(e.opt.value,e.opt.label),[`stop`])},null,8,[`onClick`])]),_:2},1024)):g(``,!0)]),_:2},1040)]),_:1},8,[`modelValue`,`options`,`loading`,`disable`])):g(``,!0),_(q),_(Ee,{modelValue:V.value,"onUpdate:modelValue":n[1]||=e=>V.value=e,options:ie.value,"emit-value":``,"map-options":``,dense:``,dark:``,borderless:``,"options-dense":``,class:`q-mr-xs`,style:{"min-width":`80px`,"max-width":`140px`,"font-size":`11px`}},{selected:l(()=>[T(`span`,an,[_(P,{name:V.value===`plan`?`visibility`:V.value===`strict`?`lock`:V.value===`interactive`?`security`:`flash_on`,size:`12px`,color:`amber-6`,class:`q-mr-xs`},null,8,[`name`]),v(` `+m(ie.value.find(e=>e.value===V.value)?.label??V.value)+` `,1),A.value.has(`agentPermissionMode`)?(t(),h(P,{key:0,name:`schedule`,size:`11px`,color:`orange-6`,class:`q-ml-xs`},{default:l(()=>[_(G,null,{default:l(()=>[v(m(e.$t(`workspacePage.pendingNextRun`)),1)]),_:1})]),_:1})):g(``,!0)])]),_:1},8,[`modelValue`,`options`]),_(Ee,{modelValue:F.value,"onUpdate:modelValue":n[2]||=e=>F.value=e,options:M.value,"emit-value":``,"map-options":``,dense:``,dark:``,borderless:``,"options-dense":``,class:`q-mr-sm model-select`,style:{"min-width":`100px`,"max-width":`160px`,"font-size":`11px`}},{selected:l(()=>[T(`span`,on,[_(P,{name:`auto_awesome`,size:`12px`,color:`indigo-4`,class:`q-mr-xs`}),v(` `+m(M.value.find(e=>e.value===F.value)?.label??F.value)+` `,1),A.value.has(`model`)?(t(),h(P,{key:0,name:`schedule`,size:`11px`,color:`orange-6`,class:`q-ml-xs`},{default:l(()=>[_(G,null,{default:l(()=>[v(m(e.$t(`workspacePage.pendingNextRun`)),1)]),_:1})]),_:1})):g(``,!0)])]),_:1},8,[`modelValue`,`options`]),_(Ee,{modelValue:I.value,"onUpdate:modelValue":n[3]||=e=>I.value=e,options:N.value,"emit-value":``,"map-options":``,dense:``,dark:``,borderless:``,"options-dense":``,class:`q-mr-sm`,style:{"min-width":`90px`,"max-width":`140px`,"font-size":`11px`}},{selected:l(()=>[T(`span`,sn,[_(P,{name:`psychology`,size:`12px`,color:`amber-6`,class:`q-mr-xs`}),v(` `+m(se(I.value))+` `,1),A.value.has(`reasoningEffort`)?(t(),h(P,{key:0,name:`schedule`,size:`11px`,color:`orange-6`,class:`q-ml-xs`},{default:l(()=>[_(G,null,{default:l(()=>[v(m(e.$t(`workspacePage.pendingNextRun`)),1)]),_:1})]),_:1})):g(``,!0)])]),_:1},8,[`modelValue`,`options`]),w(B)(K.value.status)?(t(),h(R,{key:1,dense:``,"no-caps":``,size:`sm`,color:`negative`,icon:`stop`,label:e.$t(`common.stop`),class:`q-mr-xs`,loading:D.value,disable:D.value,onClick:re},null,8,[`label`,`loading`,`disable`])):g(``,!0)],64)):(t(),S(`span`,cn,m(e.$t(`workspacePage.selectWorkspace`)),1))]),_(ae,{dark:``}),W.value?(t(),h(ze,{key:0,"workspace-id":W.value},null,8,[`workspace-id`])):g(``,!0),W.value?(t(),h($t,{key:1,"workspace-id":W.value},null,8,[`workspace-id`])):g(``,!0),W.value?(t(),h(p,{key:2},{fallback:l(()=>[T(`div`,ln,[_(ge,{size:`40px`,color:`indigo-4`}),T(`div`,un,m(e.$t(`common.loading`)),1)])]),default:l(()=>[_(w(r),{class:`col`,style:{"min-height":`0`},"workspace-id":W.value},null,8,[`workspace-id`])]),_:1})):g(``,!0),_(Fe),_(tn),W.value?(t(),h(ut,{key:3,"workspace-id":W.value},null,8,[`workspace-id`])):g(``,!0),W.value?(t(),h(Xt,{key:4,"workspace-id":W.value},null,8,[`workspace-id`])):g(``,!0),W.value?(t(),h(zt,{key:5,"workspace-id":W.value},null,8,[`workspace-id`])):g(``,!0),_(ue,{modelValue:Y.value,"onUpdate:modelValue":n[5]||=e=>Y.value=e,persistent:``},{default:l(()=>[_(he,{dark:``,style:{"min-width":`320px`}},{default:l(()=>[_(le,null,{default:l(()=>[T(`div`,dn,m(w(y)(`workspacePage.renameSessionTitle`)),1)]),_:1}),_(le,null,{default:l(()=>[_(oe,{modelValue:Z.value,"onUpdate:modelValue":n[4]||=e=>Z.value=e,label:w(y)(`workspacePage.sessionNameLabel`),dark:``,dense:``,autofocus:``,onKeyup:k(ke,[`enter`])},null,8,[`modelValue`,`label`])]),_:1}),_(fe,{align:`right`},{default:l(()=>[u(_(R,{flat:``,label:w(y)(`common.cancel`)},null,8,[`label`]),[[Se]]),_(R,{flat:``,color:`primary`,label:w(y)(`workspacePage.renameSession`),disable:!Z.value.trim(),onClick:ke},null,8,[`label`,`disable`])]),_:1})]),_:1})]),_:1},8,[`modelValue`])]),_:1}))}}),[[`__scopeId`,`data-v-bdf991b8`]]);export{fn as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as e,o as t}from"./index-_ZaIBxd6.js";var n=t(({app:t})=>{t.use(e)});export{n as default};
|