@loicngr/kobo 1.11.28 → 1.11.29

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/server/routes/workspaces.js +16 -6
  3. package/dist/server/services/comparison-stats-service.js +43 -0
  4. package/package.json +1 -1
  5. package/src/client/dist/pwa/assets/{ActivityFeed-LDzg5XPx.js → ActivityFeed-Dm-h5c8M.js} +1 -1
  6. package/src/client/dist/pwa/assets/{ChangelogPage-CjiWI9Qa.js → ChangelogPage-tLjrU4kh.js} +1 -1
  7. package/src/client/dist/pwa/assets/{ClosePopup-CK6wvsMy.js → ClosePopup-CekolbY5.js} +1 -1
  8. package/src/client/dist/pwa/assets/ComparisonPanel-CsdFl1JL.js +2 -0
  9. package/src/client/dist/pwa/assets/ComparisonPanel-x1iuICgd.css +1 -0
  10. package/src/client/dist/pwa/assets/{CreatePage-DHBa7ZL5.js → CreatePage-B1iRRP_d.js} +1 -1
  11. package/src/client/dist/pwa/assets/{DashboardPage-Xev4suQ7.js → DashboardPage-CNTYrE-N.js} +1 -1
  12. package/src/client/dist/pwa/assets/{DiffViewer-D0BQ5Dip.js → DiffViewer-CxXPJSsu.js} +3 -3
  13. package/src/client/dist/pwa/assets/{DocumentsPanel-7hMCYUTd.js → DocumentsPanel-Du7qG8uv.js} +1 -1
  14. package/src/client/dist/pwa/assets/{DrawerToggleButton-BASeszPg.js → DrawerToggleButton-D0i0wUjb.js} +1 -1
  15. package/src/client/dist/pwa/assets/{GitPanel-D-rwHnFn.js → GitPanel-tuTj7lhu.js} +3 -3
  16. package/src/client/dist/pwa/assets/{HealthPage-BKXqP1li.js → HealthPage-DL_RBg9X.js} +1 -1
  17. package/src/client/dist/pwa/assets/{MainLayout-DnPtpWgP.js → MainLayout-CuPokl9k.js} +2 -2
  18. package/src/client/dist/pwa/assets/{QBtnDropdown-52YHuBbx.js → QBtnDropdown-VaaGdcMX.js} +1 -1
  19. package/src/client/dist/pwa/assets/{SchedulePanel-C7NK1hIK.js → SchedulePanel-CyWvfNkF.js} +1 -1
  20. package/src/client/dist/pwa/assets/{SearchPage-Cm8chltA.js → SearchPage-c_MuOKwZ.js} +1 -1
  21. package/src/client/dist/pwa/assets/{SettingsPage-B4xs1RUl.js → SettingsPage-QkPo7j0B.js} +1 -1
  22. package/src/client/dist/pwa/assets/{TerminalPanel-CSPk8QtK.js → TerminalPanel-Io_WshA3.js} +1 -1
  23. package/src/client/dist/pwa/assets/{TouchPan-CpO61wPy.js → TouchPan-DO0Y0lcH.js} +1 -1
  24. package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-DZrbJ0vD.js → WorkspaceAttentionLabels-NqQsltOl.js} +1 -1
  25. package/src/client/dist/pwa/assets/{WorkspacePage-D0-FkRVJ.js → WorkspacePage-Ct8QYOU_.js} +3 -3
  26. package/src/client/dist/pwa/assets/{build-path-tree-DH4SSsEz.js → build-path-tree-CmeIBsJq.js} +1 -1
  27. package/src/client/dist/pwa/assets/{de-Bf_OsgDw.js → de-DUTfyzTm.js} +1 -1
  28. package/src/client/dist/pwa/assets/{documents-CDZqd_g5.js → documents-DuT_pUBs.js} +1 -1
  29. package/src/client/dist/pwa/assets/{editor.api-CMsYdZTX.js → editor.api-B7h7KULV.js} +1 -1
  30. package/src/client/dist/pwa/assets/{efforts-Db4w0alg.js → efforts-CFRBNt5s.js} +1 -1
  31. package/src/client/dist/pwa/assets/{engineFeatures-BjtQR0vB.js → engineFeatures-DmG1z2N2.js} +1 -1
  32. package/src/client/dist/pwa/assets/{es-1ib0e9jm.js → es-ft4_w4dQ.js} +1 -1
  33. package/src/client/dist/pwa/assets/{expand-template-DY8ntqUb.js → expand-template-DXzAXadA.js} +1 -1
  34. package/src/client/dist/pwa/assets/{format-C-9jMgWb.js → format-klpA_BIb.js} +1 -1
  35. package/src/client/dist/pwa/assets/{fr-nj0BrM3X.js → fr-SGSKyQ_T.js} +1 -1
  36. package/src/client/dist/pwa/assets/{freemarker2-KxB1BtrL.js → freemarker2-AB32EM-g.js} +1 -1
  37. package/src/client/dist/pwa/assets/{handlebars-7TByd_Zc.js → handlebars-C87HpXgr.js} +1 -1
  38. package/src/client/dist/pwa/assets/{html-BoVZ_gre.js → html-fZ2Q-EN9.js} +1 -1
  39. package/src/client/dist/pwa/assets/{i18n-BubYp85n.js → i18n-jUVcMUna.js} +1 -1
  40. package/src/client/dist/pwa/assets/{index-Ck1_qrff.js → index-BgV6UXly.js} +3 -3
  41. package/src/client/dist/pwa/assets/{it-B9MEgvg1.js → it-C5q5LNGX.js} +1 -1
  42. package/src/client/dist/pwa/assets/{javascript-BLL8vPQy.js → javascript-DaRn-B3h.js} +1 -1
  43. package/src/client/dist/pwa/assets/{layout-CFuk4mdG.js → layout-DdQC-2Sz.js} +1 -1
  44. package/src/client/dist/pwa/assets/{liquid-DzcT-R6k.js → liquid-BxIQD86X.js} +1 -1
  45. package/src/client/dist/pwa/assets/{mdx-Bguo999w.js → mdx-BB8ir9N_.js} +1 -1
  46. package/src/client/dist/pwa/assets/{monaco-contributions-CM7FH-iZ.js → monaco-contributions-B0YHWDBM.js} +1 -1
  47. package/src/client/dist/pwa/assets/{monaco.contribution-Dkq0qtWA.js → monaco.contribution-Nxc5lpNj.js} +2 -2
  48. package/src/client/dist/pwa/assets/{network-auth-C0moem8_.js → network-auth-0EqcSNjT.js} +1 -1
  49. package/src/client/dist/pwa/assets/{notify-theme-C7mNmzKx.js → notify-theme-CJQIBqdX.js} +1 -1
  50. package/src/client/dist/pwa/assets/{pending-diff-open-BaQ_SNEF.js → pending-diff-open-BTLtsmQt.js} +1 -1
  51. package/src/client/dist/pwa/assets/{permissionModes-CJZsT9Fl.js → permissionModes-BR2CNlno.js} +1 -1
  52. package/src/client/dist/pwa/assets/{project-color-54JZHVy2.js → project-color-CZmTicBX.js} +1 -1
  53. package/src/client/dist/pwa/assets/{python-D5RQNiPF.js → python-BdCzK6Il.js} +1 -1
  54. package/src/client/dist/pwa/assets/{razor-CVwoDJol.js → razor-ClnzXrTz.js} +1 -1
  55. package/src/client/dist/pwa/assets/{render-chat-markdown-NAmPVIQp.js → render-chat-markdown-CzR8e-Uh.js} +1 -1
  56. package/src/client/dist/pwa/assets/{typescript-qdgwClKe.js → typescript-Dk26pRlO.js} +1 -1
  57. package/src/client/dist/pwa/assets/{use-onboarding-DbYF8ZX_.js → use-onboarding-BwDLVLlc.js} +1 -1
  58. package/src/client/dist/pwa/assets/{use-quasar-B4eIgSfZ.js → use-quasar-B2sgdABh.js} +1 -1
  59. package/src/client/dist/pwa/assets/{xml-DNSfQSlk.js → xml-DdBTQmk2.js} +1 -1
  60. package/src/client/dist/pwa/assets/{yaml-6gnX2NnP.js → yaml-DTv5uGmK.js} +1 -1
  61. package/src/client/dist/pwa/index.html +1 -1
  62. package/src/client/dist/pwa/sw.js +1 -1
  63. package/src/client/dist/pwa/assets/ComparisonPanel-C0hI2D1O.css +0 -1
  64. package/src/client/dist/pwa/assets/ComparisonPanel-D6eEciwQ.js +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to Kōbō are documented here. The format is based on
4
4
  [Keep a Changelog](https://keepachangelog.com/). Each release is an `## <version>`
5
5
  section — the in-app "What's new" dialog reads this file.
6
6
 
7
+ ## 1.11.29
8
+
9
+ - feat(comparison): task progress, activity stats and CSV export
10
+
7
11
  ## 1.11.28
8
12
 
9
13
  - feat: lifecycle hooks, reminders, engine comparison and audit follow-ups
@@ -14,6 +14,7 @@ import * as autoLoopService from '../services/auto-loop-service.js';
14
14
  import { changeSourceBranch } from '../services/change-source-branch-service.js';
15
15
  import { listChatHistory, pushChatHistory } from '../services/chat-history-service.js';
16
16
  import { renderCiFixTemplate } from '../services/ci-fix-template-service.js';
17
+ import { computeWorkspaceActivityStats } from '../services/comparison-stats-service.js';
17
18
  import * as cronService from '../services/cron-service.js';
18
19
  import * as devServerService from '../services/dev-server-service.js';
19
20
  import { buildEngineHandoff } from '../services/engine-handoff-service.js';
@@ -1426,12 +1427,21 @@ app.get('/:id/comparison', (c) => {
1426
1427
  if (!workspace.comparisonId)
1427
1428
  return c.json({ comparisonId: null, members: [] });
1428
1429
  const stats = getAllGitStats();
1429
- const members = workspaceService.listComparisonMembers(workspace.comparisonId).map((member) => ({
1430
- workspace: member,
1431
- // Null, not zeros: "not measured yet" and "changed nothing" are
1432
- // different answers, and only one of them is true here.
1433
- gitStats: stats[member.id] ?? null,
1434
- }));
1430
+ const members = workspaceService.listComparisonMembers(workspace.comparisonId).map((member) => {
1431
+ // Same count as the auto-loop badge: every task, acceptance criteria
1432
+ // included. How finely each engine planned the task is visible before
1433
+ // a single line of code is, and it colours every later number.
1434
+ const tasks = workspaceService.listTasks(member.id);
1435
+ return {
1436
+ workspace: member,
1437
+ // Null, not zeros: "not measured yet" and "changed nothing" are
1438
+ // different answers, and only one of them is true here.
1439
+ gitStats: stats[member.id] ?? null,
1440
+ tasks: { done: tasks.filter((t) => t.status === 'done').length, total: tasks.length },
1441
+ // What it took: messages, questions, tools, tokens, over every session.
1442
+ activity: computeWorkspaceActivityStats(getDb(), member.id),
1443
+ };
1444
+ });
1435
1445
  return c.json({ comparisonId: workspace.comparisonId, members });
1436
1446
  }
1437
1447
  catch (err) {
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The tools an engine calls to ask the user a question. The persisted
3
+ * `session:user-input-requested` event is purged once answered, so the tool
4
+ * call — which stays — is what gets counted.
5
+ */
6
+ const QUESTION_TOOLS = ['AskUserQuestion', 'request_user_input'];
7
+ export function computeWorkspaceActivityStats(db, workspaceId) {
8
+ const sessions = db
9
+ .prepare(`SELECT COUNT(*) AS count,
10
+ COALESCE(SUM(CASE WHEN ended_at IS NOT NULL
11
+ THEN MAX(0, (julianday(ended_at) - julianday(started_at)) * 86400000.0)
12
+ ELSE 0 END), 0) AS duration_ms
13
+ FROM agent_sessions WHERE workspace_id = ?`)
14
+ .get(workspaceId);
15
+ const metrics = db
16
+ .prepare(`SELECT COALESCE(SUM(tool_calls), 0) AS tool_calls, COALESCE(SUM(errors), 0) AS errors,
17
+ COALESCE(SUM(input_tokens), 0) AS input_tokens, COALESCE(SUM(output_tokens), 0) AS output_tokens
18
+ FROM session_event_metrics WHERE workspace_id = ?`)
19
+ .get(workspaceId);
20
+ const messages = db
21
+ .prepare(`SELECT
22
+ SUM(CASE WHEN type = 'user:message' AND json_extract(payload, '$.sender') = 'user' THEN 1 ELSE 0 END) AS user_messages,
23
+ SUM(CASE WHEN type = 'user:message' AND json_extract(payload, '$.sender') != 'user' THEN 1 ELSE 0 END) AS injected,
24
+ COUNT(DISTINCT CASE WHEN type = 'agent:event' AND json_extract(payload, '$.kind') = 'message:text'
25
+ THEN json_extract(payload, '$.messageId') END) AS agent_messages,
26
+ SUM(CASE WHEN type = 'agent:event' AND json_extract(payload, '$.kind') = 'tool:call'
27
+ AND json_extract(payload, '$.name') IN (${QUESTION_TOOLS.map(() => '?').join(', ')})
28
+ THEN 1 ELSE 0 END) AS questions
29
+ FROM ws_events WHERE workspace_id = ? AND json_valid(payload)`)
30
+ .get(...QUESTION_TOOLS, workspaceId);
31
+ return {
32
+ sessions: sessions.count,
33
+ durationMs: Math.round(sessions.duration_ms),
34
+ userMessages: messages.user_messages ?? 0,
35
+ injectedPrompts: messages.injected ?? 0,
36
+ agentMessages: messages.agent_messages,
37
+ questions: messages.questions ?? 0,
38
+ toolCalls: metrics.tool_calls,
39
+ errors: metrics.errors,
40
+ inputTokens: metrics.input_tokens,
41
+ outputTokens: metrics.output_tokens,
42
+ };
43
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loicngr/kobo",
3
- "version": "1.11.28",
3
+ "version": "1.11.29",
4
4
  "description": "Kōbō — multi-workspace agent manager for Claude Code. Orchestrates isolated git worktrees with dev servers, Notion integration, and MCP tools.",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0-or-later",
@@ -1,4 +1,4 @@
1
- import{B as e,C as t,St as n,wt as r,yt as i}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as a,A as o,At as s,B as c,Dt as l,Et as u,H as d,It as f,Mt as p,Ot as m,Rt as h,Tt as g,U as _,V as v,W as y,Wt as b,X as x,Z as S,_n as C,fn as w,t as T,ut as E,w as D}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as O}from"./vue-i18n-DtajJy_8.js";import{W as k,Z as A,b as j,l as M,t as N,w as P}from"./QBtn-B7WFdfmy.js";import{C as F,Et as ee,H as te,T as ne,kt as I,m as re,p as L,vt as R,w as ie}from"./index-Ck1_qrff.js";import{t as ae}from"./QSpinnerDots-DWOFEezR.js";import{r as oe}from"./QItemSection-CEUi4Tz0.js";import{t as se}from"./QMarkupTable-DcoQpjPu.js";import{_ as ce,b as z,x as B}from"./permissionModes-CJZsT9Fl.js";import{r as le,t as V}from"./pending-diff-open-BaQ_SNEF.js";import{t as H}from"./documents-CDZqd_g5.js";import{n as U,r as W,t as ue}from"./use-quasar-B4eIgSfZ.js";import{i as de,n as G,o as fe,r as K,t as pe}from"./render-chat-markdown-NAmPVIQp.js";import{a as me,i as he,n as q,o as ge,r as _e,s as ve}from"./WorkspacePage-D0-FkRVJ.js";function ye(e,t){return E(`div`,e,[E(`table`,{class:`q-table`},t)])}var J={list:oe,table:se},Y=[`list`,`table`,`__qtable`],be=A({name:`QVirtualScroll`,props:{...B,type:{type:String,default:`list`,validator:e=>Y.includes(e)},items:{type:Array,default:()=>[]},itemsFn:Function,itemsSize:Number,scrollTarget:I},setup(e,{slots:n,attrs:r}){let i,a=t(null),o=c(()=>e.itemsSize>=0&&e.itemsFn!==void 0?Number.parseInt(e.itemsSize,10):Array.isArray(e.items)?e.items.length:0),{virtualScrollSliceRange:d,localResetVirtualScroll:f,padVirtualScroll:h,onVirtualScrollEvt:g}=z({virtualScrollLength:o,getVirtualScrollTarget:x,getVirtualScrollEl:b}),_=c(()=>{if(o.value===0)return[];let t=(e,t)=>({index:d.value.from+t,item:e});return e.itemsFn===void 0?e.items.slice(d.value.from,d.value.to).map(t):e.itemsFn(d.value.from,d.value.to-d.value.from).map(t)}),v=c(()=>`q-virtual-scroll q-virtual-scroll`+(e.virtualScrollHorizontal?`--horizontal`:`--vertical`)+(e.scrollTarget===void 0?` scroll`:``)),y=c(()=>e.scrollTarget===void 0?{tabindex:0}:{});w(o,()=>{f()}),w(()=>e.scrollTarget,()=>{C(),S()});function b(){let e=a.value;return e===null?null:e.$el||e}function x(){return i}function S(){let t=b();t!==null&&(i=ee(t,e.scrollTarget),i.addEventListener(`scroll`,g,k.passive))}function C(){i!==void 0&&(i.removeEventListener(`scroll`,g,k.passive),i=void 0)}function T(){let t=h(e.type===`list`?`div`:`tbody`,_.value.map(n.default));return n.before!==void 0&&(t=n.before().concat(t)),j(n.after,t)}return l(()=>{f()}),p(()=>{S()}),u(()=>{S()}),s(()=>{C()}),m(()=>{C()}),()=>{if(n.default===void 0){console.error(`QVirtualScroll: default scoped slot is required for rendering`);return}return e.type===`__qtable`?ye({ref:a,class:`q-table__middle `+v.value},T()):E(J[e.type],{...r,ref:a,class:[r.class,v.value],...y.value},T)}}}),xe=new Set([`setup`,`cleanup`,`archive`]);function Se(e){switch(e.type){case`user`:return e.sender===`system-prompt`?`system-prompt`:xe.has(e.sender)||F(e.sender)?`script`:`user`;case`session`:return`session`;default:return`agent`}}function Ce(e){let t=[],n=null,r=null;for(let i of e){let e=Se(i),a=e===`session`||e===`system-prompt`,o=e===`script`&&i.type===`user`?`script:${i.sender}`:e;!n||r!==o||a?(n={speaker:e,ts:i.ts,items:[i]},r=o,t.push(n),a&&(n=null)):n.items.push(i)}return t}function we(e){switch(e.type){case`text`:return`text:${e.messageId}`;case`thinking`:return`thinking:${e.messageId}:${e.eventIds?.[0]??e.ts??``}`;case`tool`:return`tool:${e.toolCallId}`;case`session`:return`session:${e.kind}:${e.eventIds?.[0]??e.ts??``}`;case`user`:return`user:${e.eventIds?.[0]??`${e.sender}:${e.ts??``}`}`;case`error`:return`error:${e.eventIds?.[0]??`${e.category}:${e.ts??``}`}`}}function Te(e){let t=e.items[0];return`${e.speaker}:${t?we(t):`empty`}`}function Ee(e,t){let n=Math.min(t,e.length)-1;for(let t=n;t>=0;t--)if(e[t]?.speaker===`user`)return t;return-1}function De(e,t,n){return new Promise(r=>{let i=!1,a=null,o=null,s=e=>{i||(i=!0,a!==null&&clearTimeout(a),a=null,o?.(),r(e))};if(o=w(e,e=>{t(e)&&s(!0)},{immediate:!0}),i){o();return}a=setTimeout(()=>s(!1),n)})}var Oe={class:`agent-error-item`},ke={class:`agent-error-item__body`},Ae={class:`agent-error-item__title`},je={class:`agent-error-item__message`},X=U(a({__name:`AgentErrorItem`,props:{item:{}},setup(e){let t=e,{te:n}=O(),i=c(()=>{let e=`agent.error.${t.item.category}`;return n(e)?e:`agent.error.other`});return(t,n)=>(h(),y(`div`,Oe,[S(M,{name:`error_outline`,size:`16px`,class:`agent-error-item__icon`}),v(`div`,ke,[v(`div`,Ae,r(t.$t(i.value)),1),v(`div`,je,r(e.item.message),1)])]))}}),[[`__scopeId`,`data-v-e98c3c02`]]),Me={class:`text-caption text-kobo-3`},Z=a({__name:`SessionEventItem`,props:{item:{}},setup(e){let t=e,n=c(()=>{switch(t.item.kind){case`started`:return`session.started`;case`ended`:return ve(t.item.detail);case`compacted`:return`session.compacted`;default:return`session.started`}});return(e,t)=>(h(),y(`span`,Me,r(e.$t(n.value)),1))}});function Ne(e,t){if(t.length===0||e.length===0)return e;let n=[...t].sort((e,t)=>t.length-e.length),r=new DOMParser().parseFromString(`<div>${e}</div>`,`text/html`),i=r.body.firstChild;if(!i)return e;function a(e){if(e.nodeType===Node.TEXT_NODE){Q(e,n,r);return}if(e.nodeName===`A`)return;let t=Array.from(e.childNodes);for(let e of t)a(e)}return a(i),i.innerHTML}function Q(e,t,n){let r=e.textContent??``;if(!t.some(e=>r.includes(e)))return;let i=n.createDocumentFragment(),a=0;for(;a<r.length;){let e=$(r,a,t);if(!e){i.appendChild(n.createTextNode(r.slice(a)));break}e.index>a&&i.appendChild(n.createTextNode(r.slice(a,e.index)));let o=n.createElement(`a`);o.className=`document-link`,o.setAttribute(`data-document-path`,e.path),o.setAttribute(`href`,`#`),o.textContent=e.path,i.appendChild(o),a=e.index+e.path.length}e.parentNode?.replaceChild(i,e)}function $(e,t,n){let r=null;for(let i of n){let n=e.indexOf(i,t);n<0||(!r||n<r.index||n===r.index&&i.length>r.path.length)&&(r={index:n,path:i})}return r}var Pe=[`innerHTML`],Fe=U(a({__name:`TextMessageItem`,props:{item:{}},setup(e){let t=e,n=H(),r=L(),i=ue(),{t:a}=O(),o=c(()=>{let e=r.selectedWorkspaceId;return e?n.documentsFor(e).map(e=>e.path):[]}),s=c(()=>{let e=t.item;if(e.streaming)return pe(e.text);let n=o.value;return K(`${e.messageId}|${n.join(`,`)}`,e.text,e=>{let t=Ne(fe.parse(e,{async:!1,breaks:!0,gfm:!0}),n);return de(t,{addAttr:[`data-document-path`]})})});function l(e){let t=e.target?.closest(`.document-link`);if(!t)return;e.preventDefault();let o=t.getAttribute(`data-document-path`),s=r.selectedWorkspaceId;!o||!s||n.openDocumentByPath(s,o).catch(e=>{console.error(`[TextMessageItem] openDocumentByPath failed:`,e),i.notify({type:`negative`,message:a(`documents.loadFailed`),position:`top`})})}return(t,n)=>(h(),y(`div`,{class:`markdown-message`,onClick:l},[v(`div`,{innerHTML:s.value},null,8,Pe),e.item.streaming?(h(),d(P,{key:0,size:`xs`,class:`q-ml-xs`})):_(``,!0)]))}}),[[`__scopeId`,`data-v-99371035`]]);function Ie(e,t){let n=e.split(`
1
+ import{B as e,C as t,St as n,wt as r,yt as i}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as a,A as o,At as s,B as c,Dt as l,Et as u,H as d,It as f,Mt as p,Ot as m,Rt as h,Tt as g,U as _,V as v,W as y,Wt as b,X as x,Z as S,_n as C,fn as w,t as T,ut as E,w as D}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as O}from"./vue-i18n-DtajJy_8.js";import{W as k,Z as A,b as j,l as M,t as N,w as P}from"./QBtn-B7WFdfmy.js";import{C as F,Et as ee,H as te,T as ne,kt as I,m as re,p as L,vt as R,w as ie}from"./index-BgV6UXly.js";import{t as ae}from"./QSpinnerDots-DWOFEezR.js";import{r as oe}from"./QItemSection-CEUi4Tz0.js";import{t as se}from"./QMarkupTable-DcoQpjPu.js";import{_ as ce,b as z,x as B}from"./permissionModes-BR2CNlno.js";import{r as le,t as V}from"./pending-diff-open-BTLtsmQt.js";import{t as H}from"./documents-DuT_pUBs.js";import{n as U,r as W,t as ue}from"./use-quasar-B2sgdABh.js";import{i as de,n as G,o as fe,r as K,t as pe}from"./render-chat-markdown-CzR8e-Uh.js";import{a as me,i as he,n as q,o as ge,r as _e,s as ve}from"./WorkspacePage-Ct8QYOU_.js";function ye(e,t){return E(`div`,e,[E(`table`,{class:`q-table`},t)])}var J={list:oe,table:se},Y=[`list`,`table`,`__qtable`],be=A({name:`QVirtualScroll`,props:{...B,type:{type:String,default:`list`,validator:e=>Y.includes(e)},items:{type:Array,default:()=>[]},itemsFn:Function,itemsSize:Number,scrollTarget:I},setup(e,{slots:n,attrs:r}){let i,a=t(null),o=c(()=>e.itemsSize>=0&&e.itemsFn!==void 0?Number.parseInt(e.itemsSize,10):Array.isArray(e.items)?e.items.length:0),{virtualScrollSliceRange:d,localResetVirtualScroll:f,padVirtualScroll:h,onVirtualScrollEvt:g}=z({virtualScrollLength:o,getVirtualScrollTarget:x,getVirtualScrollEl:b}),_=c(()=>{if(o.value===0)return[];let t=(e,t)=>({index:d.value.from+t,item:e});return e.itemsFn===void 0?e.items.slice(d.value.from,d.value.to).map(t):e.itemsFn(d.value.from,d.value.to-d.value.from).map(t)}),v=c(()=>`q-virtual-scroll q-virtual-scroll`+(e.virtualScrollHorizontal?`--horizontal`:`--vertical`)+(e.scrollTarget===void 0?` scroll`:``)),y=c(()=>e.scrollTarget===void 0?{tabindex:0}:{});w(o,()=>{f()}),w(()=>e.scrollTarget,()=>{C(),S()});function b(){let e=a.value;return e===null?null:e.$el||e}function x(){return i}function S(){let t=b();t!==null&&(i=ee(t,e.scrollTarget),i.addEventListener(`scroll`,g,k.passive))}function C(){i!==void 0&&(i.removeEventListener(`scroll`,g,k.passive),i=void 0)}function T(){let t=h(e.type===`list`?`div`:`tbody`,_.value.map(n.default));return n.before!==void 0&&(t=n.before().concat(t)),j(n.after,t)}return l(()=>{f()}),p(()=>{S()}),u(()=>{S()}),s(()=>{C()}),m(()=>{C()}),()=>{if(n.default===void 0){console.error(`QVirtualScroll: default scoped slot is required for rendering`);return}return e.type===`__qtable`?ye({ref:a,class:`q-table__middle `+v.value},T()):E(J[e.type],{...r,ref:a,class:[r.class,v.value],...y.value},T)}}}),xe=new Set([`setup`,`cleanup`,`archive`]);function Se(e){switch(e.type){case`user`:return e.sender===`system-prompt`?`system-prompt`:xe.has(e.sender)||F(e.sender)?`script`:`user`;case`session`:return`session`;default:return`agent`}}function Ce(e){let t=[],n=null,r=null;for(let i of e){let e=Se(i),a=e===`session`||e===`system-prompt`,o=e===`script`&&i.type===`user`?`script:${i.sender}`:e;!n||r!==o||a?(n={speaker:e,ts:i.ts,items:[i]},r=o,t.push(n),a&&(n=null)):n.items.push(i)}return t}function we(e){switch(e.type){case`text`:return`text:${e.messageId}`;case`thinking`:return`thinking:${e.messageId}:${e.eventIds?.[0]??e.ts??``}`;case`tool`:return`tool:${e.toolCallId}`;case`session`:return`session:${e.kind}:${e.eventIds?.[0]??e.ts??``}`;case`user`:return`user:${e.eventIds?.[0]??`${e.sender}:${e.ts??``}`}`;case`error`:return`error:${e.eventIds?.[0]??`${e.category}:${e.ts??``}`}`}}function Te(e){let t=e.items[0];return`${e.speaker}:${t?we(t):`empty`}`}function Ee(e,t){let n=Math.min(t,e.length)-1;for(let t=n;t>=0;t--)if(e[t]?.speaker===`user`)return t;return-1}function De(e,t,n){return new Promise(r=>{let i=!1,a=null,o=null,s=e=>{i||(i=!0,a!==null&&clearTimeout(a),a=null,o?.(),r(e))};if(o=w(e,e=>{t(e)&&s(!0)},{immediate:!0}),i){o();return}a=setTimeout(()=>s(!1),n)})}var Oe={class:`agent-error-item`},ke={class:`agent-error-item__body`},Ae={class:`agent-error-item__title`},je={class:`agent-error-item__message`},X=U(a({__name:`AgentErrorItem`,props:{item:{}},setup(e){let t=e,{te:n}=O(),i=c(()=>{let e=`agent.error.${t.item.category}`;return n(e)?e:`agent.error.other`});return(t,n)=>(h(),y(`div`,Oe,[S(M,{name:`error_outline`,size:`16px`,class:`agent-error-item__icon`}),v(`div`,ke,[v(`div`,Ae,r(t.$t(i.value)),1),v(`div`,je,r(e.item.message),1)])]))}}),[[`__scopeId`,`data-v-e98c3c02`]]),Me={class:`text-caption text-kobo-3`},Z=a({__name:`SessionEventItem`,props:{item:{}},setup(e){let t=e,n=c(()=>{switch(t.item.kind){case`started`:return`session.started`;case`ended`:return ve(t.item.detail);case`compacted`:return`session.compacted`;default:return`session.started`}});return(e,t)=>(h(),y(`span`,Me,r(e.$t(n.value)),1))}});function Ne(e,t){if(t.length===0||e.length===0)return e;let n=[...t].sort((e,t)=>t.length-e.length),r=new DOMParser().parseFromString(`<div>${e}</div>`,`text/html`),i=r.body.firstChild;if(!i)return e;function a(e){if(e.nodeType===Node.TEXT_NODE){Q(e,n,r);return}if(e.nodeName===`A`)return;let t=Array.from(e.childNodes);for(let e of t)a(e)}return a(i),i.innerHTML}function Q(e,t,n){let r=e.textContent??``;if(!t.some(e=>r.includes(e)))return;let i=n.createDocumentFragment(),a=0;for(;a<r.length;){let e=$(r,a,t);if(!e){i.appendChild(n.createTextNode(r.slice(a)));break}e.index>a&&i.appendChild(n.createTextNode(r.slice(a,e.index)));let o=n.createElement(`a`);o.className=`document-link`,o.setAttribute(`data-document-path`,e.path),o.setAttribute(`href`,`#`),o.textContent=e.path,i.appendChild(o),a=e.index+e.path.length}e.parentNode?.replaceChild(i,e)}function $(e,t,n){let r=null;for(let i of n){let n=e.indexOf(i,t);n<0||(!r||n<r.index||n===r.index&&i.length>r.path.length)&&(r={index:n,path:i})}return r}var Pe=[`innerHTML`],Fe=U(a({__name:`TextMessageItem`,props:{item:{}},setup(e){let t=e,n=H(),r=L(),i=ue(),{t:a}=O(),o=c(()=>{let e=r.selectedWorkspaceId;return e?n.documentsFor(e).map(e=>e.path):[]}),s=c(()=>{let e=t.item;if(e.streaming)return pe(e.text);let n=o.value;return K(`${e.messageId}|${n.join(`,`)}`,e.text,e=>{let t=Ne(fe.parse(e,{async:!1,breaks:!0,gfm:!0}),n);return de(t,{addAttr:[`data-document-path`]})})});function l(e){let t=e.target?.closest(`.document-link`);if(!t)return;e.preventDefault();let o=t.getAttribute(`data-document-path`),s=r.selectedWorkspaceId;!o||!s||n.openDocumentByPath(s,o).catch(e=>{console.error(`[TextMessageItem] openDocumentByPath failed:`,e),i.notify({type:`negative`,message:a(`documents.loadFailed`),position:`top`})})}return(t,n)=>(h(),y(`div`,{class:`markdown-message`,onClick:l},[v(`div`,{innerHTML:s.value},null,8,Pe),e.item.streaming?(h(),d(P,{key:0,size:`xs`,class:`q-ml-xs`})):_(``,!0)]))}}),[[`__scopeId`,`data-v-99371035`]]);function Ie(e,t){let n=e.split(`
2
2
  `),r=t.split(`
3
3
  `),i=0;for(;i<n.length&&i<r.length&&n[i]===r[i];)i++;let a=n.length,o=r.length;for(;a>i&&o>i&&n[a-1]===r[o-1];)a--,o--;let s=n.slice(0,i).map(e=>({type:`context`,content:e})),c=n.slice(a).map(e=>({type:`context`,content:e})),l=n.slice(i,a),u=r.slice(i,o);return l.length>800||u.length>800?[...s,...l.map(e=>({type:`del`,content:e})),...u.map(e=>({type:`add`,content:e})),...c]:[...s,...Le(l,u),...c]}function Le(e,t){let n=e.length,r=t.length;if(n===0&&r===0)return[];if(n===0)return t.map(e=>({type:`add`,content:e}));if(r===0)return e.map(e=>({type:`del`,content:e}));let i=r+1,a=new Int32Array((n+1)*i);for(let o=n-1;o>=0;o--)for(let n=r-1;n>=0;n--)a[o*i+n]=e[o]===t[n]?a[(o+1)*i+(n+1)]+1:Math.max(a[(o+1)*i+n],a[o*i+(n+1)]);let o=[],s=0,c=0;for(;s<n&&c<r;)e[s]===t[c]?(o.push({type:`context`,content:e[s]}),s++,c++):a[(s+1)*i+c]>=a[s*i+(c+1)]?(o.push({type:`del`,content:e[s]}),s++):(o.push({type:`add`,content:t[c]}),c++);for(;s<n;)o.push({type:`del`,content:e[s++]});for(;c<r;)o.push({type:`add`,content:t[c++]});return o}function Re(e){let t=e.split(`
4
4
  `),n=[],r=!1;for(let e of t){if(e.startsWith(`@@`)){r=!0;continue}!r&&(e.startsWith(`+++`)||e.startsWith(`---`))||(e.startsWith(`+`)?n.push({type:`add`,content:e.slice(1)}):e.startsWith(`-`)?n.push({type:`del`,content:e.slice(1)}):e.startsWith(` `)?n.push({type:`context`,content:e.slice(1)}):e.length>0&&n.push({type:`context`,content:e}))}return n}function ze(e,t){if(!t||typeof t!=`object`)return null;let n=t;if(e===`Edit`){let e=n.file_path;if(!e)return null;let t=n.old_string??``,r=n.new_string??``,i=typeof n.diff==`string`?n.diff:``;if(!t&&!r&&i.length>0){let t=Re(i);return{toolName:`Edit`,filePath:e,additions:t.filter(e=>e.type===`add`).length,deletions:t.filter(e=>e.type===`del`).length,diffLines:t}}return{toolName:`Edit`,filePath:e,oldString:t,newString:r,replaceAll:n.replace_all??!1,additions:r?r.split(`
@@ -1 +1 @@
1
- import{B as e,C as t,wt as n}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as r,A as i,H as a,Mt as o,Rt as s,U as c,V as l,W as u,Wt as d,Z as f,_n as p}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{t as m}from"./QBtn-B7WFdfmy.js";import{Jt as h,Kt as g,n as _}from"./index-Ck1_qrff.js";import{n as v}from"./use-quasar-B4eIgSfZ.js";import{n as y}from"./render-chat-markdown-NAmPVIQp.js";import{t as b}from"./QSpace-D3PNLwa4.js";import{t as x}from"./QChip-DpUYTCOJ.js";import{t as S}from"./QPage-RpDxx5ah.js";import{t as C}from"./DrawerToggleButton-BASeszPg.js";var w={class:`row items-center q-mb-md`},T={class:`text-h6 q-ml-sm`},E={key:0,class:`text-kobo-3 text-center q-pa-lg`},D={key:1,class:`text-negative text-center q-pa-lg`},O={key:2,class:`text-kobo-3 text-center q-pa-lg`},k={key:3,class:`column q-gutter-md`},A={key:0,class:`text-caption text-kobo-3`},j={class:`row items-center q-mb-sm`},M={class:`text-subtitle1 text-kobo-2`,style:{"font-family":`var(--kobo-font-mono, monospace)`}},N=[`innerHTML`],P=v(r({__name:`ChangelogPage`,setup(r){let v=_(),P=t([]),F=t(``),I=t(!1),L=t(null);function R(e){return y(e)}async function z(){I.value=!0,L.value=null;try{let e=await fetch(`/api/changelog`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();F.value=t.currentVersion??``,P.value=t.versions??[]}catch(e){L.value=e instanceof Error?e.message:String(e)}finally{I.value=!1}}return o(z),(t,r)=>(s(),a(S,{class:`q-pa-md`,style:{"max-width":`900px`,margin:`0 auto`}},{default:p(()=>[l(`div`,w,[f(C,{class:`q-mr-xs`}),f(m,{flat:``,dense:``,round:``,icon:`arrow_back`,onClick:r[0]||=t=>e(v).back()}),l(`div`,T,n(t.$t(`changelog.title`)),1),f(b),f(m,{flat:``,dense:``,icon:`refresh`,loading:I.value,label:t.$t(`common.refresh`),onClick:z},null,8,[`loading`,`label`])]),I.value&&P.value.length===0?(s(),u(`div`,E,n(t.$t(`common.loading`)),1)):L.value?(s(),u(`div`,D,n(L.value),1)):P.value.length===0?(s(),u(`div`,O,n(t.$t(`changelog.empty`)),1)):(s(),u(`div`,k,[F.value?(s(),u(`div`,A,n(t.$t(`changelog.currentVersion`,{version:F.value})),1)):c(``,!0),(s(!0),u(i,null,d(P.value,e=>(s(),a(g,{key:e.version,dark:``,flat:``,bordered:``},{default:p(()=>[f(h,null,{default:p(()=>[l(`div`,j,[l(`div`,M,` v`+n(e.version),1),e.version===F.value?(s(),a(x,{key:0,dense:``,size:`sm`,color:`primary`,"text-color":`kobo-1`,label:t.$t(`changelog.current`),class:`q-ml-sm`},null,8,[`label`])):c(``,!0)]),l(`div`,{class:`changelog-notes`,innerHTML:R(e.notes)},null,8,N)]),_:2},1024)]),_:2},1024))),128))]))]),_:1}))}}),[[`__scopeId`,`data-v-303054e6`]]);export{P as default};
1
+ import{B as e,C as t,wt as n}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as r,A as i,H as a,Mt as o,Rt as s,U as c,V as l,W as u,Wt as d,Z as f,_n as p}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{t as m}from"./QBtn-B7WFdfmy.js";import{Jt as h,Kt as g,n as _}from"./index-BgV6UXly.js";import{n as v}from"./use-quasar-B2sgdABh.js";import{n as y}from"./render-chat-markdown-CzR8e-Uh.js";import{t as b}from"./QSpace-D3PNLwa4.js";import{t as x}from"./QChip-DpUYTCOJ.js";import{t as S}from"./QPage-RpDxx5ah.js";import{t as C}from"./DrawerToggleButton-D0i0wUjb.js";var w={class:`row items-center q-mb-md`},T={class:`text-h6 q-ml-sm`},E={key:0,class:`text-kobo-3 text-center q-pa-lg`},D={key:1,class:`text-negative text-center q-pa-lg`},O={key:2,class:`text-kobo-3 text-center q-pa-lg`},k={key:3,class:`column q-gutter-md`},A={key:0,class:`text-caption text-kobo-3`},j={class:`row items-center q-mb-sm`},M={class:`text-subtitle1 text-kobo-2`,style:{"font-family":`var(--kobo-font-mono, monospace)`}},N=[`innerHTML`],P=v(r({__name:`ChangelogPage`,setup(r){let v=_(),P=t([]),F=t(``),I=t(!1),L=t(null);function R(e){return y(e)}async function z(){I.value=!0,L.value=null;try{let e=await fetch(`/api/changelog`);if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.json();F.value=t.currentVersion??``,P.value=t.versions??[]}catch(e){L.value=e instanceof Error?e.message:String(e)}finally{I.value=!1}}return o(z),(t,r)=>(s(),a(S,{class:`q-pa-md`,style:{"max-width":`900px`,margin:`0 auto`}},{default:p(()=>[l(`div`,w,[f(C,{class:`q-mr-xs`}),f(m,{flat:``,dense:``,round:``,icon:`arrow_back`,onClick:r[0]||=t=>e(v).back()}),l(`div`,T,n(t.$t(`changelog.title`)),1),f(b),f(m,{flat:``,dense:``,icon:`refresh`,loading:I.value,label:t.$t(`common.refresh`),onClick:z},null,8,[`loading`,`label`])]),I.value&&P.value.length===0?(s(),u(`div`,E,n(t.$t(`common.loading`)),1)):L.value?(s(),u(`div`,D,n(L.value),1)):P.value.length===0?(s(),u(`div`,O,n(t.$t(`changelog.empty`)),1)):(s(),u(`div`,k,[F.value?(s(),u(`div`,A,n(t.$t(`changelog.currentVersion`,{version:F.value})),1)):c(``,!0),(s(!0),u(i,null,d(P.value,e=>(s(),a(g,{key:e.version,dark:``,flat:``,bordered:``},{default:p(()=>[f(h,null,{default:p(()=>[l(`div`,j,[l(`div`,M,` v`+n(e.version),1),e.version===F.value?(s(),a(x,{key:0,dense:``,size:`sm`,color:`primary`,"text-color":`kobo-1`,label:t.$t(`changelog.current`),class:`q-ml-sm`},null,8,[`label`])):c(``,!0)]),l(`div`,{class:`changelog-notes`,innerHTML:R(e.notes)},null,8,N)]),_:2},1024)]),_:2},1024))),128))]))]),_:1}))}}),[[`__scopeId`,`data-v-303054e6`]]);export{P as default};
@@ -1 +1 @@
1
- import{Q as e,R as t}from"./QBtn-B7WFdfmy.js";import{Ft as n,It as r}from"./index-Ck1_qrff.js";function i(e){return e===!1?0:e===!0||e===void 0?1:Number.parseInt(e,10)||0}var a=e({name:`close-popup`,beforeMount(e,{value:a}){let o={depth:i(a),handler(t){o.depth!==0&&setTimeout(()=>{let i=r(e);i!==void 0&&n(i,t,o.depth)},0)},handlerKey(e){t(e,13)&&o.handler(e)}};e.__qclosepopup=o,e.addEventListener(`click`,o.handler),e.addEventListener(`keyup`,o.handlerKey)},updated(e,{value:t,oldValue:n}){t!==n&&(e.__qclosepopup.depth=i(t))},beforeUnmount(e){let t=e.__qclosepopup;e.removeEventListener(`click`,t.handler),e.removeEventListener(`keyup`,t.handlerKey),delete e.__qclosepopup}});export{a as t};
1
+ import{Q as e,R as t}from"./QBtn-B7WFdfmy.js";import{Ft as n,It as r}from"./index-BgV6UXly.js";function i(e){return e===!1?0:e===!0||e===void 0?1:Number.parseInt(e,10)||0}var a=e({name:`close-popup`,beforeMount(e,{value:a}){let o={depth:i(a),handler(t){o.depth!==0&&setTimeout(()=>{let i=r(e);i!==void 0&&n(i,t,o.depth)},0)},handlerKey(e){t(e,13)&&o.handler(e)}};e.__qclosepopup=o,e.addEventListener(`click`,o.handler),e.addEventListener(`keyup`,o.handlerKey)},updated(e,{value:t,oldValue:n}){t!==n&&(e.__qclosepopup.depth=i(t))},beforeUnmount(e){let t=e.__qclosepopup;e.removeEventListener(`click`,t.handler),e.removeEventListener(`keyup`,t.handlerKey),delete e.__qclosepopup}});export{a as t};
@@ -0,0 +1,2 @@
1
+ import{C as e,wt as t,yt as n}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as r,A as ee,B as te,H as i,Mt as a,Rt as o,U as s,V as c,W as l,Wt as u,X as d,Z as f,_n as ne,fn as re}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as ie}from"./vue-i18n-DtajJy_8.js";import{t as p}from"./QBtn-B7WFdfmy.js";import{n as ae,p as oe}from"./index-BgV6UXly.js";import{t as m}from"./QMarkupTable-DcoQpjPu.js";import{n as h}from"./use-quasar-B2sgdABh.js";import{t as g}from"./QSpace-D3PNLwa4.js";var _=[`workspace`,`engine`,`model`,`status`,`branch`,`tasks_done`,`tasks_total`,`commits`,`files_changed`,`insertions`,`deletions`,`agent_messages`,`user_messages`,`injected_prompts`,`questions`,`tool_calls`,`errors`,`input_tokens`,`output_tokens`,`sessions`,`duration_seconds`];function v(e){if(e==null)return``;let t=String(e);return/[",\r\n]/.test(t)?`"${t.replace(/"/g,`""`)}"`:t}function y(e){let t=e.map(e=>{let t=e.gitStats,n=e.activity;return[e.workspace.name,e.workspace.engine,e.workspace.model,e.workspace.status,e.workspace.workingBranch,e.tasks.done,e.tasks.total,t?.commitCount??null,t?.filesChanged??null,t?.insertions??null,t?.deletions??null,n.agentMessages,n.userMessages,n.injectedPrompts,n.questions,n.toolCalls,n.errors,n.inputTokens,n.outputTokens,n.sessions,Math.round(n.durationMs/1e3)].map(v).join(`,`)});return`${[_.join(`,`),...t].join(`\r
2
+ `)}`}var b={key:0,class:`comparison-panel q-pa-md`},x={class:`row items-center q-mb-sm`},S={class:`text-subtitle2`},C={class:`text-caption text-kobo-3 q-mb-sm`},w={class:`text-left`},T={class:`text-left`},E={class:`text-right`},D={class:`text-right`},O={class:`text-right`},k={class:`text-right`},A={class:`text-right`},j={class:`text-right`},M={class:`text-right`},N={class:`text-right`},P={class:`text-right`},F={class:`text-right`},I={class:`text-right`},L={class:`text-caption text-kobo-3 comparison-mono`},R={key:0,class:`text-caption text-kobo-3`},z={class:`text-right comparison-mono`},B={class:`text-right`},V={class:`text-right`},se={class:`text-right`},H={key:0,class:`comparison-mono`},U={class:`text-kobo-success`},W={class:`text-kobo-danger q-ml-xs`},G={key:1,class:`text-kobo-3`},K={class:`text-right comparison-mono`},ce=[`title`],le={class:`text-right`},ue={class:`text-right`},de={class:`text-right comparison-mono`},fe=[`title`],pe={class:`text-right`},me={class:`text-right comparison-mono`},he={class:`text-right`},ge={key:1,class:`text-caption text-kobo-3`},_e={key:0,class:`text-caption text-kobo-warning q-mt-sm`},q=h(r({__name:`ComparisonPanel`,props:{workspaceId:{}},setup(r){let h=r;function _(e){return e<1e3?String(e):e<1e6?`${(e/1e3).toFixed(+(e<1e4))}k`:`${(e/1e6).toFixed(1)}M`}function v(e){if(e<=0)return`-`;let t=Math.round(e/1e3);if(t<60)return J(`reliability.durationSeconds`,{s:t});let n=Math.floor(t/60);return n<60?J(`reliability.durationMinutes`,{m:n,s:t%60}):J(`reliability.durationHours`,{h:Math.floor(n/60),m:n%60})}let q=ae(),ve=oe(),{t:J}=ie(),Y=e([]),X=e(!1),ye={created:`workspaceStatus.created`,extracting:`workspaceStatus.extracting`,brainstorming:`workspaceStatus.brainstorming`,executing:`workspaceStatus.executing`,"awaiting-user":`workspaceStatus.awaitingUser`,completed:`workspaceStatus.completed`,idle:`workspaceStatus.idle`,error:`workspaceStatus.error`,quota:`workspaceStatus.quota`,retrying:`workspaceStatus.retrying`},Z=e({});function be(e){return Z.value[e]??e}async function xe(){try{let e=await fetch(`/api/engines`);if(!e.ok)return;let t=await e.json();Z.value=Object.fromEntries(t.map(e=>[e.id,e.displayName]))}catch{}}function Se(e){let t=ye[e];return t?J(t):e}let Ce=te(()=>h.workspaceId);function Q(e){return e.workspace.id===Ce.value}function we(e){ve.selectWorkspace(e),q.push({name:`workspace`,params:{id:e}})}function Te(){let e=y(Y.value),t=new Blob([e],{type:`text/csv;charset=utf-8`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`kobo-comparison-${Y.value[0]?.workspace.comparisonId??`comparison`}.csv`,r.click(),URL.revokeObjectURL(n)}async function $(){X.value=!0;try{let e=await fetch(`/api/workspaces/${h.workspaceId}/comparison`);if(!e.ok){Y.value=[];return}let t=await e.json();Y.value=t.members??[]}catch{Y.value=[]}finally{X.value=!1}}return a(()=>{xe(),$()}),re(()=>h.workspaceId,$),(e,r)=>Y.value.length>0?(o(),l(`div`,b,[c(`div`,x,[c(`div`,S,t(e.$t(`comparison.title`)),1),f(g),f(p,{flat:``,dense:``,round:``,size:`sm`,icon:`download`,title:e.$t(`comparison.exportCsv`),onClick:Te},null,8,[`title`]),f(p,{flat:``,dense:``,round:``,size:`sm`,icon:`refresh`,loading:X.value,onClick:$},null,8,[`loading`])]),c(`div`,C,t(e.$t(`comparison.hint`)),1),f(m,{flat:``,dense:``,dark:``,class:`comparison-table`},{default:ne(()=>[c(`thead`,null,[c(`tr`,null,[c(`th`,w,t(e.$t(`comparison.engine`)),1),c(`th`,T,t(e.$t(`comparison.status`)),1),c(`th`,E,t(e.$t(`comparison.tasks`)),1),c(`th`,D,t(e.$t(`comparison.commits`)),1),c(`th`,O,t(e.$t(`comparison.files`)),1),c(`th`,k,t(e.$t(`comparison.diff`)),1),c(`th`,A,t(e.$t(`comparison.messages`)),1),c(`th`,j,t(e.$t(`comparison.questions`)),1),c(`th`,M,t(e.$t(`comparison.tools`)),1),c(`th`,N,t(e.$t(`comparison.errors`)),1),c(`th`,P,t(e.$t(`comparison.tokens`)),1),c(`th`,F,t(e.$t(`comparison.sessions`)),1),c(`th`,I,t(e.$t(`comparison.duration`)),1),r[0]||=c(`th`,null,null,-1)])]),c(`tbody`,null,[(o(!0),l(ee,null,u(Y.value,r=>(o(),l(`tr`,{key:r.workspace.id,class:n({"comparison-current":Q(r)})},[c(`td`,null,[c(`div`,null,t(be(r.workspace.engine)),1),c(`div`,L,t(r.workspace.model),1)]),c(`td`,null,[d(t(Se(r.workspace.status))+` `,1),r.workspace.archivedAt?(o(),l(`span`,R,` · `+t(e.$t(`comparison.archived`)),1)):s(``,!0)]),c(`td`,z,t(r.tasks.done)+`/`+t(r.tasks.total),1),c(`td`,B,t(r.gitStats?.commitCount??`-`),1),c(`td`,V,t(r.gitStats?.filesChanged??`-`),1),c(`td`,se,[r.gitStats?(o(),l(`span`,H,[c(`span`,U,`+`+t(r.gitStats.insertions),1),c(`span`,W,`-`+t(r.gitStats.deletions),1)])):(o(),l(`span`,G,`-`))]),c(`td`,K,[c(`span`,{title:e.$t(`comparison.messagesTitle`)},t(r.activity.agentMessages)+` / `+t(r.activity.userMessages),9,ce)]),c(`td`,le,t(r.activity.questions),1),c(`td`,ue,t(r.activity.toolCalls),1),c(`td`,{class:n([`text-right`,r.activity.errors>0?`text-kobo-danger`:``])},t(r.activity.errors),3),c(`td`,de,[c(`span`,{title:e.$t(`comparison.tokensTitle`)},t(_(r.activity.inputTokens))+` / `+t(_(r.activity.outputTokens)),9,fe)]),c(`td`,pe,t(r.activity.sessions),1),c(`td`,me,t(v(r.activity.durationMs)),1),c(`td`,he,[Q(r)?(o(),l(`span`,ge,t(e.$t(`comparison.current`)),1)):(o(),i(p,{key:0,flat:``,dense:``,"no-caps":``,size:`sm`,label:e.$t(`comparison.open`),onClick:e=>we(r.workspace.id)},null,8,[`label`,`onClick`]))])],2))),128))])]),_:1}),Y.value.length<2?(o(),l(`div`,_e,t(e.$t(`comparison.incomplete`)),1)):s(``,!0)])):s(``,!0)}}),[[`__scopeId`,`data-v-95e8c6b5`]]);export{q as default};
@@ -0,0 +1 @@
1
+ .comparison-panel[data-v-95e8c6b5]{border-bottom:1px solid var(--kobo-border)}.comparison-table[data-v-95e8c6b5]{background:var(--kobo-surface);border:1px solid var(--kobo-border);border-radius:var(--kobo-radius-md)}.comparison-current[data-v-95e8c6b5]{background:var(--kobo-surface-2)}.comparison-mono[data-v-95e8c6b5]{font-family:var(--kobo-font-mono)}
@@ -1,2 +1,2 @@
1
- import{B as e,C as t,wt as n,x as r,xt as i,yt as a}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as o,A as s,B as c,C as l,H as u,It as ee,Mt as d,Ot as te,Rt as f,Tt as p,U as m,V as h,W as g,Wt as ne,X as _,Z as v,_n as y,fn as b,lt as x,t as S,w as C}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as re}from"./vue-i18n-DtajJy_8.js";import{l as w,t as T,w as E}from"./QBtn-B7WFdfmy.js";import{Jt as D,Kt as ie,a as O,ct as ae,d as k,et as oe,i as se,l as ce,n as le,o as ue,p as de,r as fe,st as A,tt as pe,vt as j,w as me,x as he}from"./index-Ck1_qrff.js";import{t as ge}from"./QSpinnerDots-DWOFEezR.js";import{n as M,r as _e,t as N}from"./QItemSection-CEUi4Tz0.js";import{_ as ve,a as P,i as ye,o as F,r as be,t as xe,y as I}from"./permissionModes-CJZsT9Fl.js";import{n as Se,r as Ce,t as we}from"./use-quasar-B4eIgSfZ.js";import{t as Te}from"./QBadge-BgS0-MXB.js";import{t as Ee}from"./QChip-DpUYTCOJ.js";import{t as De}from"./QBtnToggle-eMu_yinY.js";import{t as Oe}from"./efforts-Db4w0alg.js";import{i as ke}from"./project-color-54JZHVy2.js";import{t as Ae}from"./QPage-RpDxx5ah.js";import{t as je}from"./DrawerToggleButton-BASeszPg.js";import{a as L,i as Me,n as Ne,o as Pe,r as Fe,t as Ie}from"./expand-template-DY8ntqUb.js";var Le=new Set([`path-occupied`,`worktree-other-branch`]);function R(e){if(e.blockers.filter(e=>!Le.has(e.kind)).length>0)return[{id:`blocked`,blocking:!0,titleKey:`prCheckout.step.blocked`}];let t=[];return e.blockers.some(e=>Le.has(e.kind))&&t.push({id:`path`,blocking:!1,titleKey:`prCheckout.step.path`}),e.workspace.state!==`none`&&t.push({id:`workspace`,blocking:!1,titleKey:`prCheckout.step.workspace`}),e.workspace.state!==`purged`&&(e.worktree.state===`orphan`||e.worktree.state===`attached`)&&t.push({id:`worktree`,blocking:!1,titleKey:`prCheckout.step.worktree`}),e.ongoingOperation&&t.push({id:`operation`,blocking:!1,titleKey:`prCheckout.step.operation`}),e.localChanges.present&&t.push({id:`changes`,blocking:!1,titleKey:`prCheckout.step.changes`}),(e.branch.state===`behind`||e.branch.state===`ahead`||e.branch.state===`diverged`)&&t.push({id:`divergence`,blocking:!1,titleKey:`prCheckout.step.divergence`}),t}function Re(e){let t={};return e.workspace.state===`active`&&(t.existingWorkspace=`open`),e.workspace.state===`archived`&&(t.archivedWorkspace=`unarchive`),e.workspace.state===`purged`&&(t.purgedWorktree=`restore`),e.workspace.state!==`purged`&&e.worktree.state===`orphan`&&(t.orphanWorktree=`attach`),e.ongoingOperation&&(t.ongoingOperation=`cancel`),e.localChanges.present&&(t.localChanges=`keep`),e.branch.state===`behind`?t.divergence=`fast-forward`:(e.branch.state===`ahead`||e.branch.state===`diverged`)&&(t.divergence=`keep`),t}var ze={class:`text-subtitle1 text-kobo-1`},Be={class:`text-body2 text-kobo-1`},Ve={class:`text-caption text-warning`},He={class:`text-caption text-negative`},z={class:`text-caption text-kobo-3 q-mb-sm`},B={class:`text-caption text-kobo-3 q-mb-sm`},V={class:`text-caption text-kobo-3 q-mb-sm`},H={class:`text-caption text-kobo-3 q-mb-sm`},Ue={class:`text-caption text-kobo-3 q-mb-sm`},U=3,We=o({__name:`PrCheckoutStepper`,props:{modelValue:{type:Boolean},projectPath:{},pr:{}},emits:[`update:modelValue`,`resolved`,`openWorkspace`],setup(e,{emit:i}){let a=e,o=i,{t:l}=re(),ee=t(!1),d=t(!1),p=t(null),_=t(!1),x=t(null),S=t(null),C=t(``),w=t([]),k=r({}),oe=t(0),se=t(``),le=t(0);function ue(){ee.value=!1,d.value=!1,p.value=null,_.value=!1,x.value=null,S.value=null,C.value=``,w.value=[],oe.value=0,se.value=``,le.value=0;for(let e of Object.keys(k))delete k[e]}function de(e,t,n){x.value=e,t&&(S.value=t),C.value=n,w.value=R(e);let r=Re(e);for(let e of Object.keys(k))delete k[e];Object.assign(k,r),se.value=``,oe.value=0}let fe=null;async function pe(){fe?.abort();let e=new AbortController;fe=e,ee.value=!0,p.value=null;try{let t=await(await fetch(`/api/pull-requests/diagnose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({projectPath:a.projectPath,prNumber:a.pr.number}),signal:e.signal})).json();de(t.report,t.pr,t.fingerprint),w.value.length===0&&xe()}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return;p.value=e instanceof Error?e.message:l(`prCheckout.diagnoseFailed`)}finally{fe===e&&(ee.value=!1)}}async function me(){le.value=0,await pe()}let he=c(()=>x.value?.blockers.some(e=>e.kind===`index-lock`)??!1),ge=c(()=>{let e=x.value?.worktree;return e&&e.state!==`none`?e.path:``}),M=c(()=>w.value.some(e=>e.id===`path`)&&!k.pathCollision),_e={"forge-unavailable":`prCheckout.blocked.forgeUnavailable`,"fork-pr":`prCheckout.blocked.forkPr`,"head-branch-deleted":`prCheckout.blocked.headBranchDeleted`,"index-lock":`prCheckout.blocked.indexLock`,"path-occupied":`prCheckout.blocked.pathOccupied`,"worktree-other-branch":`prCheckout.blocked.worktreeOtherBranch`,"no-common-ancestor":`prCheckout.blocked.noCommonAncestor`},N=c(()=>{let e=(x.value?.blockers??[])[0];return e?_e[e.kind]??`prCheckout.step.blocked`:`prCheckout.step.blocked`}),ve=c(()=>{switch(x.value?.branch.state){case`behind`:return`prCheckout.divergence.behindHint`;case`ahead`:return`prCheckout.divergence.aheadHint`;case`diverged`:return`prCheckout.divergence.divergedHint`;default:return`prCheckout.step.divergence`}}),P=c(()=>{let e=x.value?.branch.state;return e===`behind`?[{label:l(`prCheckout.divergence.fastForward`),value:`fast-forward`},{label:l(`prCheckout.divergence.keep`),value:`keep`}]:e===`diverged`?[{label:l(`prCheckout.divergence.rebase`),value:`rebase`},{label:l(`prCheckout.divergence.resetHard`),value:`reset-hard`},{label:l(`prCheckout.divergence.keep`),value:`keep`}]:[{label:l(`prCheckout.divergence.keep`),value:`keep`}]});function ye(e){let t=typeof e==`string`?e.trim():``;t?k.pathCollision={worktreePath:t}:delete k.pathCollision}function F(){o(`update:modelValue`,!1)}function be(e){o(`update:modelValue`,e)}async function xe(){p.value=null;let e=x.value;if(e){if(k.existingWorkspace===`open`&&e.workspace.state===`active`){o(`openWorkspace`,e.workspace.id),F();return}if(k.archivedWorkspace===`unarchive`&&e.workspace.state===`archived`){o(`openWorkspace`,e.workspace.id),F();return}if(k.ongoingOperation===`cancel`){F();return}if(k.purgedWorktree===`restore`&&e.workspace.state===`purged`){p.value=l(`prCheckout.workspace.restoreNotAvailable`);return}d.value=!0;try{let e=await fetch(`/api/pull-requests/resolve`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({projectPath:a.projectPath,prNumber:a.pr.number,headBranch:S.value?.headBranch??a.pr.headBranch,baseBranch:S.value?.baseBranch??a.pr.baseBranch,decisions:k,fingerprint:C.value})}),t=await e.json().catch(()=>null);if(e.status===409){if(le.value+=1,le.value>U){p.value=l(`prCheckout.staleRetriesExhausted`);return}_.value=!0,await pe();return}if(!e.ok){p.value=t?.error??`HTTP ${e.status}`;return}_.value=!1,o(`resolved`,t),F()}catch(e){p.value=e instanceof Error?e.message:l(`prCheckout.resolveFailed`)}finally{d.value=!1}}}return b(()=>a.modelValue,e=>{e?(ue(),pe()):fe?.abort()},{immediate:!0}),te(()=>{fe?.abort()}),(t,r)=>(f(),u(j,{"model-value":e.modelValue,persistent:``,"onUpdate:modelValue":be},{default:y(()=>[v(ie,{dark:``,style:{"min-width":`560px`,"max-width":`720px`,width:`100%`}},{default:y(()=>[v(D,null,{default:y(()=>[h(`div`,ze,n(t.$t(`prCheckout.title`)),1)]),_:1}),v(ce,{dark:``}),ee.value||x.value&&w.value.length===0?(f(),u(D,{key:0,class:`row justify-center q-pa-xl`},{default:y(()=>[v(E,{color:`primary`,size:`var(--kobo-space-2xl)`})]),_:1})):x.value&&w.value.length>0&&w.value[0].id===`blocked`?(f(),g(s,{key:1},[v(D,{class:`column q-gutter-y-sm`},{default:y(()=>[h(`div`,Be,n(t.$t(N.value)),1)]),_:1}),v(ce,{dark:``}),v(A,{align:`right`,class:`q-pa-md`},{default:y(()=>[he.value?(f(),u(T,{key:0,flat:``,"no-caps":``,label:t.$t(`prCheckout.retry`),color:`kobo-2`,loading:ee.value,onClick:me},null,8,[`label`,`loading`])):m(``,!0),v(T,{flat:``,"no-caps":``,label:t.$t(`prCheckout.cancel`),color:`kobo-2`,onClick:F},null,8,[`label`])]),_:1})],64)):x.value&&w.value.length>0?(f(),g(s,{key:2},[_.value?(f(),u(D,{key:0,class:`q-pb-none`},{default:y(()=>[h(`div`,Ve,n(t.$t(`prCheckout.staleReloaded`)),1)]),_:1})):m(``,!0),p.value?(f(),u(D,{key:1,class:`q-pb-none`},{default:y(()=>[h(`div`,He,n(p.value),1)]),_:1})):m(``,!0),v(D,null,{default:y(()=>[v(L,{modelValue:oe.value,"onUpdate:modelValue":r[8]||=e=>oe.value=e,flat:``,dark:``,animated:``,"header-nav":``,color:`primary`,class:`bg-transparent`},{default:y(()=>[(f(!0),g(s,null,ne(w.value,(e,i)=>(f(),u(Pe,{key:e.id,name:i,title:t.$t(e.titleKey),done:i<oe.value},{default:y(()=>[e.id===`workspace`?(f(),g(s,{key:0},[h(`div`,z,n(t.$t(`prCheckout.workspace.activeHint`)),1),x.value.workspace.state===`active`?(f(),u(O,{key:0,modelValue:k.existingWorkspace,"onUpdate:modelValue":r[0]||=e=>k.existingWorkspace=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.workspace.open`),value:`open`},{label:t.$t(`prCheckout.workspace.continue`),value:`continue`}]},null,8,[`modelValue`,`options`])):x.value.workspace.state===`archived`?(f(),u(O,{key:1,modelValue:k.archivedWorkspace,"onUpdate:modelValue":r[1]||=e=>k.archivedWorkspace=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.workspace.unarchive`),value:`unarchive`},{label:t.$t(`prCheckout.workspace.continue`),value:`continue`}]},null,8,[`modelValue`,`options`])):x.value.workspace.state===`purged`?(f(),u(O,{key:2,modelValue:k.purgedWorktree,"onUpdate:modelValue":r[2]||=e=>k.purgedWorktree=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.workspace.restore`),value:`restore`}]},null,8,[`modelValue`,`options`])):m(``,!0)],64)):e.id===`worktree`?(f(),g(s,{key:1},[h(`div`,B,n(t.$t(`prCheckout.worktree.orphanHint`,{path:ge.value})),1),v(O,{modelValue:k.orphanWorktree,"onUpdate:modelValue":r[3]||=e=>k.orphanWorktree=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.worktree.attach`),value:`attach`},{label:t.$t(`prCheckout.worktree.createElsewhere`),value:`create-elsewhere`}]},null,8,[`modelValue`,`options`])],64)):e.id===`path`?(f(),u(ae,{key:2,modelValue:se.value,"onUpdate:modelValue":[r[4]||=e=>se.value=e,ye],dark:``,dense:``,outlined:``,label:t.$t(`prCheckout.step.path`),error:M.value,"error-message":t.$t(`prCheckout.path.required`)},null,8,[`modelValue`,`label`,`error`,`error-message`])):e.id===`operation`?(f(),g(s,{key:3},[h(`div`,V,n(t.$t(`prCheckout.operation.hint`)),1),v(O,{modelValue:k.ongoingOperation,"onUpdate:modelValue":r[5]||=e=>k.ongoingOperation=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.operation.abort`),value:`abort`},{label:t.$t(`prCheckout.operation.cancel`),value:`cancel`}]},null,8,[`modelValue`,`options`])],64)):e.id===`changes`?(f(),g(s,{key:4},[h(`div`,H,n(t.$t(`prCheckout.changes.hint`)),1),v(O,{modelValue:k.localChanges,"onUpdate:modelValue":r[6]||=e=>k.localChanges=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.changes.stash`),value:`stash`},{label:t.$t(`prCheckout.changes.commit`),value:`commit`},{label:t.$t(`prCheckout.changes.discard`),value:`discard`},{label:t.$t(`prCheckout.changes.keep`),value:`keep`}]},null,8,[`modelValue`,`options`])],64)):e.id===`divergence`?(f(),g(s,{key:5},[h(`div`,Ue,n(t.$t(ve.value)),1),v(O,{modelValue:k.divergence,"onUpdate:modelValue":r[7]||=e=>k.divergence=e,dark:``,color:`primary`,options:P.value},null,8,[`modelValue`,`options`])],64)):m(``,!0)]),_:2},1032,[`name`,`title`,`done`]))),128))]),_:1},8,[`modelValue`])]),_:1})],64)):m(``,!0),v(ce,{dark:``}),x.value&&w.value.length>0&&w.value[0].id!==`blocked`?(f(),u(A,{key:3,align:`right`,class:`q-pa-md`},{default:y(()=>[v(T,{flat:``,"no-caps":``,label:t.$t(`prCheckout.cancel`),color:`kobo-2`,disable:d.value,onClick:F},null,8,[`label`,`disable`]),v(T,{unelevated:``,"no-caps":``,label:t.$t(`prCheckout.apply`),color:`primary`,loading:d.value,disable:M.value,onClick:xe},null,8,[`label`,`loading`,`disable`])]),_:1})):m(``,!0)]),_:1})]),_:1},8,[`model-value`]))}}),Ge={class:`text-subtitle1 text-kobo-1`},W={key:0,class:`text-caption text-negative q-pa-md`},G={class:`text-kobo-3`,style:{"font-family":`var(--kobo-font-mono)`,"font-size":`var(--kobo-space-md)`}},Ke={class:`text-kobo-1 ellipsis`},qe={style:{"font-family":`var(--kobo-font-mono)`}},Je={style:{"font-family":`var(--kobo-font-mono)`}},Ye={key:2,class:`text-caption text-kobo-3 q-pa-md`},K={key:3,class:`row justify-center q-pa-md`},Xe={key:4,class:`row justify-center q-pa-md`},q=3,Ze=Se(o({__name:`PrPickerDialog`,props:{modelValue:{type:Boolean},projectPath:{}},emits:[`update:modelValue`,`select`],setup(e,{emit:i}){let a=e,o=i,{t:c}=re(),l=[{label:c(`prPicker.filterAll`),value:`all`},{label:c(`prPicker.filterMine`),value:`mine`},{label:c(`prPicker.filterReviewRequested`),value:`review-requested`}],ee=t(null),d=t([]),p=t(null),x=t(`all`),S=t(``),C=t(!1),O=t(null),k=r({});function oe(e){return e.workspace.state===`none`?e.worktree.state===`orphan`?`prPicker.badge.worktreePresent`:e.branch.state===`absent`?`prPicker.badge.new`:`prPicker.badge.localBranch`:`prPicker.badge.workspaceExists`}function se(e){let t=k[e];return t?oe(t):null}let le=new Map,ue=0,de=[];function fe(){for(;ue<q&&de.length>0;){let e=de.shift();e!==void 0&&k[e]===null&&(ue+=1,me(e).finally(()=>{--ue,fe()}))}}function pe(e){k[e]=null,de.push(e),fe()}async function me(e){let t=new AbortController;le.set(e,t);try{let n=await fetch(`/api/pull-requests/diagnose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({projectPath:a.projectPath,prNumber:e}),signal:t.signal});if(!n.ok)return;let r=await n.json();k[e]=r.report}catch(t){t instanceof DOMException&&t.name===`AbortError`&&delete k[e]}finally{le.delete(e)}}function he(){for(let e of le.values())e.abort();le.clear(),de.length=0,ue=0}let ge=null;function ve(){return ge||(ge=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=Number(t.target.dataset.prNumber);ge?.unobserve(t.target),Number.isFinite(e)&&k[e]===void 0&&pe(e)}},{root:ee.value?.$el??null,rootMargin:`50px`}),ge)}function P(e,t){let n=e?.$el??e;!n||!(n instanceof HTMLElement)||(n.dataset.prNumber=String(t),ve().observe(n))}function ye(){F?.abort(),he()}te(()=>{ye(),ge?.disconnect(),ge=null});let F=null;async function be(e){F?.abort();let t=new AbortController;F=t,C.value=!0,O.value=null;try{let n=new URLSearchParams({projectPath:a.projectPath,filter:x.value,search:S.value,perPage:`25`});e&&n.set(`cursor`,e);let r=await fetch(`/api/pull-requests?${n.toString()}`,{signal:t.signal}),i=await r.json().catch(()=>null);if(!r.ok)throw Error(i?.error??`HTTP ${r.status}`);let o=i;e?d.value=[...d.value,...o.items]:d.value=o.items,p.value=o.nextCursor}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return;O.value=e instanceof Error?e.message:c(`prPicker.loadFailed`)}finally{F===t&&(C.value=!1)}}function xe(){d.value=[],p.value=null,be(null)}function Se(){p.value!==null&&be(p.value)}function we(e){e.isFork||(o(`select`,e),o(`update:modelValue`,!1))}return b(()=>a.modelValue,e=>{e?(x.value=`all`,S.value=``,xe()):ye()}),b(x,()=>{a.modelValue&&xe()}),b(S,()=>{a.modelValue&&xe()}),(t,r)=>(f(),u(j,{"model-value":e.modelValue,"onUpdate:modelValue":r[3]||=e=>o(`update:modelValue`,e)},{default:y(()=>[v(ie,{dark:``,style:{"min-width":`560px`,"max-width":`720px`,width:`100%`}},{default:y(()=>[v(D,null,{default:y(()=>[h(`div`,Ge,n(t.$t(`prPicker.title`)),1)]),_:1}),v(ce,{dark:``}),v(D,{class:`column q-gutter-y-md`},{default:y(()=>[v(De,{modelValue:x.value,"onUpdate:modelValue":r[0]||=e=>x.value=e,spread:``,"no-caps":``,unelevated:``,"toggle-color":`primary`,color:`kobo-surface-2`,"text-color":`kobo-2`,options:l},null,8,[`modelValue`]),v(ae,{modelValue:S.value,"onUpdate:modelValue":r[1]||=e=>S.value=e,dense:``,dark:``,outlined:``,debounce:`300`,clearable:``,placeholder:t.$t(`prPicker.searchPlaceholder`)},{prepend:y(()=>[v(w,{name:`search`,size:`18px`})]),_:1},8,[`modelValue`,`placeholder`])]),_:1}),v(ce,{dark:``}),v(D,{class:`pr-picker__list-section`,ref_key:`listSectionEl`,ref:ee},{default:y(()=>[O.value?(f(),g(`div`,W,n(O.value),1)):d.value.length>0?(f(),u(_e,{key:1,dark:``,class:`pr-picker__list`},{default:y(()=>[(f(!0),g(s,null,ne(d.value,e=>(f(),u(M,{key:e.number,clickable:``,disable:e.isFork,class:`pr-picker__item`,ref_for:!0,ref:t=>P(t,e.number),onClick:t=>we(e)},{default:y(()=>[v(N,null,{default:y(()=>[v(I,{class:`row items-center q-gutter-x-xs no-wrap`},{default:y(()=>[h(`span`,G,`#`+n(e.number),1),h(`span`,Ke,n(e.title),1),e.ci===`SUCCESS`?(f(),u(w,{key:0,name:`check_circle`,color:`positive`,size:`14px`})):e.ci===`FAILURE`?(f(),u(w,{key:1,name:`cancel`,color:`negative`,size:`14px`})):m(``,!0),e.isDraft?(f(),u(Te,{key:2,color:`kobo-hover`,"text-color":`kobo-2`,label:t.$t(`prPicker.badge.draft`)},null,8,[`label`])):m(``,!0),se(e.number)?(f(),u(Te,{key:3,color:`kobo-surface-2`,"text-color":`kobo-2`,label:t.$t(se(e.number))},null,8,[`label`])):m(``,!0)]),_:2},1024),v(I,{caption:``,class:`text-kobo-3`},{default:y(()=>[_(` @`+n(e.author)+` · `,1),h(`span`,qe,n(e.headBranch),1),v(w,{name:`arrow_forward`,size:`11px`,class:`q-mx-xs`}),h(`span`,Je,n(e.baseBranch),1)]),_:2},1024)]),_:2},1024),e.isFork?(f(),u(Ce,{key:0},{default:y(()=>[_(n(t.$t(`prPicker.forkNotSupported`)),1)]),_:1})):m(``,!0)]),_:2},1032,[`disable`,`onClick`]))),128))]),_:1})):C.value?m(``,!0):(f(),g(`div`,Ye,n(t.$t(`prPicker.empty`)),1)),C.value?(f(),g(`div`,K,[v(E,{color:`primary`,size:`var(--kobo-space-2xl)`})])):m(``,!0),!C.value&&p.value!==null?(f(),g(`div`,Xe,[v(T,{flat:``,"no-caps":``,label:t.$t(`prPicker.loadMore`),color:`kobo-2`,onClick:Se},null,8,[`label`])])):m(``,!0)]),_:1},512),v(A,{align:`right`,class:`q-pa-md`},{default:y(()=>[v(T,{flat:``,"no-caps":``,label:t.$t(`common.cancel`),color:`kobo-2`,onClick:r[2]||=e=>o(`update:modelValue`,!1)},null,8,[`label`])]),_:1})]),_:1})]),_:1},8,[`model-value`]))}}),[[`__scopeId`,`data-v-2cab3a30`]]);function Qe(e){let t=[],n=e.skipSetupScript;e.useExistingWorktree&&!n&&(n=!0,t.push(`setup-script-forced`));let r=e.agentPermissionMode;return e.autoLoop&&r===`plan`&&(r=`bypass`,t.push(`permission-mode-downgraded`)),{skipSetupScript:n,agentPermissionMode:r,applied:t}}var J=`kobo:create-page-prefs`;function $e(){try{let e=localStorage.getItem(J);return e===null?void 0:JSON.parse(e)}catch{return}}function et(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function tt(){let e=$e();if(!et(e))return{};let t={};if(typeof e.projectPath==`string`&&e.projectPath.length>0&&(t.projectPath=e.projectPath),typeof e.autoLoop==`boolean`&&(t.autoLoop=e.autoLoop),(e.autoLoopSessionMode===`per_task`||e.autoLoopSessionMode===`continuous`)&&(t.autoLoopSessionMode=e.autoLoopSessionMode),typeof e.brainstormModel==`string`&&e.brainstormModel.length>0&&(t.brainstormModel=e.brainstormModel),et(e.reasoningEffortByModel)){let n=Object.entries(e.reasoningEffortByModel).filter(([e,t])=>e.length>0&&typeof t==`string`&&t.length>0);t.reasoningEffortByModel=Object.fromEntries(n)}return t}function nt(e){try{localStorage.setItem(J,JSON.stringify(e))}catch{}}var rt={class:`create-inner q-mx-auto`},it={class:`q-mb-lg`},at={class:`create-title text-weight-bold text-kobo-1`},ot={class:`text-body1 text-kobo-2 q-mt-xs`},st={key:0,class:`create-page__overrides q-mb-lg`},ct={class:`create-page__overrides-title text-caption`},lt={class:`create-sections column`},ut={class:`text-subtitle1 text-weight-medium text-kobo-1`},dt={class:`text-body2 text-kobo-3`},ft={class:`card-textarea-wrap`},pt={class:`column items-center self-end q-pb-xs`},mt={class:`column q-gutter-y-sm`},ht={class:`text-caption text-weight-medium text-kobo-2`},gt={class:`row q-gutter-sm`},_t={key:0,class:`source-panel column q-gutter-y-sm q-pa-md rounded-borders`},vt={key:0},yt={class:`text-body2 text-kobo-2 q-mb-sm`},bt={class:`responsive-fields responsive-fields--sm row q-col-gutter-x-sm`},xt={class:`col-12 col-sm-6`},St={class:`col`},Ct={class:`text-body2 text-weight-medium`},wt={class:`text-caption text-kobo-3`},Tt={class:`col-12 col-sm-6`},Et={class:`col`},Dt={class:`text-body2 text-weight-medium`},Ot={class:`text-caption text-kobo-3`},kt={key:0,class:`source-panel q-pa-md rounded-borders`},At={key:0,class:`responsive-fields row q-col-gutter-x-md`},jt={class:`col-12 col-md-6`},Mt={class:`q-pa-md column q-gutter-y-sm`},Nt={key:0,class:`row q-gutter-xs`},Pt={class:`col-12 col-md-6`},Ft={class:`q-pa-md column q-gutter-y-sm`},It={key:0,class:`row q-gutter-xs`},Lt={class:`text-subtitle1 text-weight-medium text-kobo-1`},Rt={class:`text-body2 text-kobo-3`},zt={class:`text-caption text-weight-medium text-kobo-2 q-mb-sm`},Bt={key:0,class:`row items-center q-mt-xs q-gutter-x-xs`},Vt={class:`text-caption text-kobo-3`},Ht={class:`responsive-fields row q-col-gutter-x-md`},Ut={class:`col-12 col-md-6`},Wt={class:`col-12 col-md-6`},Gt={key:0,class:`responsive-fields row q-col-gutter-x-md`},Kt={class:`col-12 col-md-4`},qt={class:`col-12 col-md-8`},Jt={class:`self-center full-width no-outline text-kobo-2 ellipsis`,tabindex:`0`},Yt={class:`self-center full-width no-outline text-kobo-2 ellipsis`,tabindex:`0`},Xt={class:`col`},Zt={class:`text-subtitle1 text-weight-medium text-kobo-1`},Qt={class:`text-body2 text-kobo-3`},$t={key:0,class:`col-12 q-mb-sm`},en={key:0,class:`text-caption text-kobo-3 q-mt-xs`},tn={key:1,class:`col-12 text-overline text-kobo-3 q-mb-xs`},nn={key:2,class:`col-12 col-sm-6`},rn={class:`col-12 col-sm-6`},an={class:`col-12 col-sm-6`},on={class:`col-12 col-sm-6`},sn={class:`col-12 text-overline text-kobo-3 q-mt-md q-mb-xs`},cn={class:`col-12 col-sm-6`},ln={class:`col-12 col-sm-6`},un={class:`col-12 col-sm-6`},dn={class:`col-12 col-sm-6`},fn={class:`text-subtitle2 text-amber-3`},pn={key:0,class:`text-caption text-kobo-3 q-mt-sm`},mn={class:`responsive-fields row q-col-gutter-x-md`},hn={class:`col-12 col-sm-6`},gn={class:`col-12 col-sm-6`},_n={class:`text-caption text-kobo-3`},vn={class:`row q-gutter-sm create-actions`},yn={class:`create-page__progress-step`},bn={key:0,class:`create-page__progress-counter`},xn=6e4,Sn=Se(o({__name:`CreatePage`,setup(r){function o(e){return e.disabled===!0}let te=le(),E=we(),O=de(),A=me(),{t:j,te:_e}=re(),Se=t([]),Te=t(``),L=t(``),Pe=t(null),Le=t(``),R=t(!1),Re=t(!1),ze=t(null),Be=t(null),Ve=t([]),He=t(null),z=t(``),B=t(!1),V=t(`claude-opus-4-8`),H=t(`claude-opus-4-8`),Ue=t(`auto`),U=t(`auto`),Ge=t({}),W=t(``),G=t(null),Ke=t(`feature`),qe=t(!1),Je=c(()=>A.global.voiceEnabled),Ye=t([]),K=t(`claude-code`),Xe=c(()=>Ye.value.find(e=>e.id===K.value)),q=t(!1),J=t(`codex`),$e=t(`auto`),et=t(`auto`),Sn=t(`bypass`),Cn=c(()=>Ye.value.map(e=>({value:e.id,label:e.displayName}))),wn=c(()=>Ye.value.filter(e=>e.id!==K.value).map(e=>({value:e.id,label:e.displayName}))),Tn=c(()=>A.global.branchPrefixes.map(e=>({label:`${e}/`,value:e}))),En=[`plan`,`bypass`,`strict`,`interactive`];function Dn(e,t){let n=e?A.getProjectByPath(e):void 0,r=n?.agentPermissionMode;if(typeof r==`string`&&En.includes(r))return r;let i=A.global.defaultPermissionModeByEngine?.[t];return typeof i==`string`&&En.includes(i)?i:n?.dangerouslySkipPermissions??A.global.dangerouslySkipPermissions??!0?`bypass`:t===`codex`?`plan`:`interactive`}let On=t(Dn(``,K.value)),kn=c(()=>{switch(Ur.value.agentPermissionMode){case`plan`:return`visibility`;case`bypass`:return`flash_on`;case`strict`:return`lock`;case`interactive`:return`security`}}),An=c(()=>(xe[K.value]??En).map(e=>({value:e,label:j(`agentPermissionMode.${e}`),disabled:e===`plan`&&Z.value}))),jn=t([]),Mn=t([]),Nn=t(!1),Pn=t(!1),Fn=t(null),In=c(()=>{let e=O.creationProgress;if(!e||e.creationId!==Fn.value)return``;let t=`createPage.progress.${e.step}`;return _e(t)?j(t):e.step}),Ln=c(()=>{let e=O.creationProgress;return!e||e.creationId!==Fn.value||e.index<0?``:j(`createPage.progress.step`,{index:e.index+1,total:e.total})});function Rn(e,t){t(()=>{Mn.value=e?jn.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())):jn.value})}let zn=pe();function Bn(){return Pe.value?.nativeEl??null}let{showSkills:Vn,selectedSkillIndex:Hn,groupedDropdown:Un,flatDropdown:Wn,fetchSkills:Gn,detectSlashFragment:Kn,replaceFragmentWith:qn,closeDropdown:Jn}=Fe(L,Bn,{excludeKoboCommands:!0});Gn(),b(L,async()=>{await p(),await Kn()});function Yn(e){if(e.type===`template`){let t=zn.templates.find(t=>t.slug===e.name);if(!t)return;let n=Ne(t.content,Ie({workspace:null,gitStats:null,sessionName:null}));qn(n),Jn();return}qn(`/${e.name} `),Jn()}function Xn(e){!Vn.value||Wn.value.length===0||(e.key===`ArrowDown`?(e.preventDefault(),Hn.value=(Hn.value+1)%Wn.value.length):e.key===`ArrowUp`?(e.preventDefault(),Hn.value=(Hn.value-1+Wn.value.length)%Wn.value.length):e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey?(e.preventDefault(),Yn(Wn.value[Hn.value])):e.key===`Escape`&&(e.preventDefault(),Jn()))}async function Zn(){if(!(!Je.value||R.value||Re.value)){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>`u`){E.notify({type:`warning`,message:j(`voice.notSupported`),position:`top`,timeout:4e3});return}try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});Be.value=e,Ve.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&&Ve.value.push(e.data)},n.start(),ze.value=n,R.value=!0,He.value=setTimeout(()=>{Qn(),E.notify({type:`info`,message:j(`voice.maxDurationReached`),position:`top`,timeout:3500})},xn)}catch{E.notify({type:`negative`,message:j(`voice.errorMicPermission`),position:`top`,timeout:5e3})}}}async function Qn(){if(!R.value)return;let e=ze.value;if(!e)return;R.value=!1,Re.value=!0,He.value&&=(clearTimeout(He.value),null);let t=await new Promise(t=>{e.onstop=()=>t(new Blob(Ve.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`,A.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()&&(L.value=L.value?`${L.value.trimEnd()} ${r.text.trim()}`:r.text.trim())}catch(e){let t=e instanceof Error?e.message:`TRANSCRIPTION_FAILED`;E.notify({type:`negative`,message:j({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{ze.value=null,Ve.value=[],Be.value?.getTracks().forEach(e=>{e.stop()}),Be.value=null,Re.value=!1}}function $n(e){return Je.value?A.global.voicePttKey===`ctrl+space`?e.ctrlKey&&e.code===`Space`:e.key===`Alt`:!1}function er(e){!$n(e)||e.repeat||(e.preventDefault(),Zn())}function tr(e){$n(e)&&(e.preventDefault(),Qn())}function nr(){R.value&&Qn()}function rr(){document.visibilityState!==`visible`&&R.value&&Qn()}let ir=c(()=>(ye[K.value]??be).map(e=>({label:j(e.i18nLabelKey),value:e.value,description:j(e.i18nDescriptionKey)})));b([K,wn],()=>{wn.value.some(e=>e.value===J.value)||(J.value=wn.value[0]?.value??``)});let ar=c(()=>(ye[J.value]??be).map(e=>({label:j(e.i18nLabelKey),value:e.value,description:j(e.i18nDescriptionKey)}))),or=c(()=>(Oe[J.value]??Oe[`claude-code`]).map(e=>({value:e.value,label:lr(j(e.i18nLabelKey)),description:j(e.i18nDescriptionKey)}))),sr=c(()=>(xe[J.value]??En).map(e=>({value:e,label:j(`agentPermissionMode.${e}`),disabled:e===`plan`&&Z.value}))),cr=c(()=>Qe({useExistingWorktree:Q.value,skipSetupScript:qe.value,autoLoop:Z.value,agentPermissionMode:Sn.value}));b([J,ar],()=>{let e=ar.value.map(e=>e.value);if(e.length>0){let t=A.global.defaultModelByEngine?.[J.value];typeof t==`string`&&e.includes(t)?$e.value=t:e.includes($e.value)||($e.value=e.includes(`auto`)?`auto`:e[0]??`auto`)}let t=xe[J.value]??[];t.length>0&&!t.includes(Sn.value)&&(Sn.value=Dn(W.value,J.value));let n=(Oe[J.value]??[]).map(e=>e.value);n.length>0&&!n.includes(et.value)&&(et.value=n.includes(`auto`)?`auto`:n[0]??`auto`)},{immediate:!0}),b(K,()=>{let e=ir.value.map(e=>e.value);if(e.length>0){let t=A.global.defaultModelByEngine?.[K.value];typeof t==`string`&&e.includes(t)?V.value=t:e.includes(V.value)||(V.value=e.includes(`auto`)?`auto`:e[0]??`auto`)}e.length>0&&!e.includes(H.value)&&(H.value=e.includes(`auto`)?`auto`:e[0]??`auto`);let t=xe[K.value]??[];t.length>0&&!t.includes(On.value)&&(On.value=Dn(W.value,K.value));let n=(Oe[K.value]??[]).map(e=>e.value);n.length>0&&!n.includes(U.value)&&(U.value=n.includes(`auto`)?`auto`:n[0]??`auto`)});function lr(e){let t=e.indexOf(`:`);return t>=0?e.slice(t+1).trim():e}let ur=c(()=>(Oe[K.value]??Oe[`claude-code`]).map(e=>({value:e.value,label:lr(j(e.i18nLabelKey)),description:j(e.i18nDescriptionKey)})));b(V,e=>{let t=Ge.value[e];t&&ur.value.some(e=>e.value===t)&&(U.value=t)}),b(U,e=>{Ge.value={...Ge.value,[V.value]:e},nt({...tt(),reasoningEffortByModel:Ge.value})});let Y=c(()=>{let e=z.value.trim();return e.startsWith(`https://www.notion.so/`)||e.startsWith(`https://app.notion.com/`)}),dr=c(()=>/[?&]p=[0-9a-f]{32}(?:[&#]|$)/i.test(z.value)),fr=t(`panel`);function pr(){let e=z.value.trim();return fr.value===`parent`&&dr.value?e.replace(/([?&])p=[0-9a-f]{32}(?=[&#]|$)/i,`$1`).replace(/([?&])pm=[a-z]+(?=[&#]|$)/i,`$1`).replace(/[?&]+$/,``).replace(/\?&/,`?`):e}let mr=t([]),hr=t([]),gr=t(``),_r=t(``),vr=c(()=>!B.value||!Y.value);function yr(){let e=gr.value.trim();e&&(mr.value.push(e),gr.value=``)}function br(e){mr.value.splice(e,1)}function xr(){let e=_r.value.trim();e&&(hr.value.push(e),_r.value=``)}function Sr(e){hr.value.splice(e,1)}function Cr(){B.value=!B.value,B.value||(z.value=``)}let X=t(!1),Z=t(!1),wr=t(`per_task`);function Tr(){Z.value=!Z.value,Z.value&&(H.value=V.value)}let Er=t(``),Dr=c(()=>/\/issues\/\d+/.test(Er.value.trim()));function Or(){X.value=!X.value,X.value||(Er.value=``)}let Q=t(!1),$=t(null),kr=t([]),Ar=t(!1),jr=t(!1),Mr=t(!1),Nr=t(!1),Pr=t(null),Fr=t(!1),Ir=t(null),Lr=t(null);async function Rr(e){if(!e.trim()){jr.value=!1;return}try{let t=await fetch(`/api/pull-requests?projectPath=${encodeURIComponent(e.trim())}&perPage=1`);jr.value=t.ok}catch{jr.value=!1}}function zr(e){Mr.value=!1,Pr.value=e,Nr.value=!0}function Br(e){Nr.value=!1,te.push({name:`workspace`,params:{id:e}})}function Vr(e){Nr.value=!1,Mr.value=!1,Q.value=!0,$.value=e.worktreePath,G.value=e.sourceBranch,Fr.value=!0,Ir.value=Pr.value?.number??null,Lr.value=Pr.value?.url??null,E.notify({type:`positive`,message:j(`createPage.prReadyToCreate`,{number:Ir.value??``}),position:`top`,timeout:4e3})}b(Nr,e=>{e||(Pr.value=null)});function Hr(){Fr.value=!1,Q.value=!1,$.value=null,G.value=null,Pr.value=null,Ir.value=null,Lr.value=null}let Ur=c(()=>Qe({useExistingWorktree:Q.value,skipSetupScript:qe.value,autoLoop:Z.value,agentPermissionMode:On.value}));async function Wr(){if(!W.value.trim()){kr.value=[];return}Ar.value=!0;try{kr.value=await O.fetchOrphanWorktrees(W.value.trim())}catch{kr.value=[]}finally{Ar.value=!1}}function Gr(){Q.value=!Q.value,Q.value?(B.value=!1,z.value=``,X.value=!1,Er.value=``,qe.value=!0,Wr()):$.value=null}function Kr(e){e===`existing`!==Q.value&&Gr()}b(W,()=>{$.value=null,Q.value&&Wr()}),b($,e=>{if(!e)return;let t=kr.value.find(t=>t.path===e);t&&(G.value=t.suggestedSourceBranch),qe.value=!0});async function qr(e){if(!e.trim()){jn.value=[],G.value=null;return}Nn.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();jn.value=n.local??n.branches??[],jn.value.length>0&&!G.value&&(G.value=jn.value[0]??null)}catch{jn.value=[],G.value=null}finally{Nn.value=!1}}function Jr(e){let t=A.getProjectByPath(e);if(t){t.defaultSourceBranch&&(G.value=t.defaultSourceBranch);let e=t.taskPromptTemplate??``;(L.value===``||L.value===Le.value)&&(L.value=e,Le.value=e);let n=ir.value.map(e=>e.value);if(t.defaultModel&&n.includes(t.defaultModel))V.value=t.defaultModel;else{let e=A.global.defaultModelByEngine?.[K.value];typeof e==`string`&&n.includes(e)&&(V.value=e)}}On.value=Dn(e,K.value)}let Yr=null;b(W,e=>{Yr&&clearTimeout(Yr),Yr=setTimeout(()=>{G.value=null,qr(e),Jr(e),Rr(e)},500)});function Xr(e,t){let n=e.toLowerCase();t(()=>{Se.value=A.projectPaths.filter(e=>e.toLowerCase().includes(n)||ke(e).toLowerCase().includes(n))})}function Zr(e){let t=A.projectPaths.find(t=>ke(t)===e);W.value=t??e}d(async()=>{await A.fetchSettings();let e=A.global.branchPrefixes;e.length>0&&!e.includes(Ke.value)&&(Ke.value=e[0]);let t=tt();Ge.value=t.reasoningEffortByModel??{},t.autoLoop===!0&&(Z.value=!0),t.autoLoopSessionMode===`continuous`&&(wr.value=`continuous`),t.autoLoop===!0&&t.brainstormModel&&(H.value=t.brainstormModel),t.projectPath&&A.projectPaths.includes(t.projectPath)&&(W.value=t.projectPath),On.value=Dn(W.value,K.value);try{let e=await fetch(`/api/engines`);e.ok&&(Ye.value=await e.json())}catch{}{let e=ir.value.map(e=>e.value),t=A.global.defaultModelByEngine?.[K.value];typeof t==`string`&&e.includes(t)?V.value=t:e.length>0&&!e.includes(V.value)&&(V.value=e.includes(`auto`)?`auto`:e[0]??`auto`)}let n=Ge.value[V.value];n&&ur.value.some(e=>e.value===n)&&(U.value=n);{let e=ir.value.map(e=>e.value);e.length>0&&!e.includes(H.value)&&(H.value=e.includes(`auto`)?`auto`:e[0]??`auto`)}window.addEventListener(`keydown`,er),window.addEventListener(`keyup`,tr),window.addEventListener(`blur`,nr),document.addEventListener(`visibilitychange`,rr),fe(`create:form`,()=>!Pn.value&&(L.value.trim().length>0||mr.value.length>0||hr.value.length>0))}),ee(()=>{Yr&&clearTimeout(Yr),window.removeEventListener(`keydown`,er),window.removeEventListener(`keyup`,tr),window.removeEventListener(`blur`,nr),document.removeEventListener(`visibilitychange`,rr),se(`create:form`),He.value&&=(clearTimeout(He.value),null),R.value&&Qn()});function Qr(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 $r(){return Te.value.trim()?Te.value.trim().substring(0,80):!B.value&&!X.value&&L.value.trim()&&(L.value.trim().split(`
1
+ import{B as e,C as t,wt as n,x as r,xt as i,yt as a}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as o,A as s,B as c,C as l,H as u,It as ee,Mt as d,Ot as te,Rt as f,Tt as p,U as m,V as h,W as g,Wt as ne,X as _,Z as v,_n as y,fn as b,lt as x,t as S,w as C}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as re}from"./vue-i18n-DtajJy_8.js";import{l as w,t as T,w as E}from"./QBtn-B7WFdfmy.js";import{Jt as D,Kt as ie,a as O,ct as ae,d as k,et as oe,i as se,l as ce,n as le,o as ue,p as de,r as fe,st as A,tt as pe,vt as j,w as me,x as he}from"./index-BgV6UXly.js";import{t as ge}from"./QSpinnerDots-DWOFEezR.js";import{n as M,r as _e,t as N}from"./QItemSection-CEUi4Tz0.js";import{_ as ve,a as P,i as ye,o as F,r as be,t as xe,y as I}from"./permissionModes-BR2CNlno.js";import{n as Se,r as Ce,t as we}from"./use-quasar-B2sgdABh.js";import{t as Te}from"./QBadge-BgS0-MXB.js";import{t as Ee}from"./QChip-DpUYTCOJ.js";import{t as De}from"./QBtnToggle-eMu_yinY.js";import{t as Oe}from"./efforts-CFRBNt5s.js";import{i as ke}from"./project-color-CZmTicBX.js";import{t as Ae}from"./QPage-RpDxx5ah.js";import{t as je}from"./DrawerToggleButton-D0i0wUjb.js";import{a as L,i as Me,n as Ne,o as Pe,r as Fe,t as Ie}from"./expand-template-DXzAXadA.js";var Le=new Set([`path-occupied`,`worktree-other-branch`]);function R(e){if(e.blockers.filter(e=>!Le.has(e.kind)).length>0)return[{id:`blocked`,blocking:!0,titleKey:`prCheckout.step.blocked`}];let t=[];return e.blockers.some(e=>Le.has(e.kind))&&t.push({id:`path`,blocking:!1,titleKey:`prCheckout.step.path`}),e.workspace.state!==`none`&&t.push({id:`workspace`,blocking:!1,titleKey:`prCheckout.step.workspace`}),e.workspace.state!==`purged`&&(e.worktree.state===`orphan`||e.worktree.state===`attached`)&&t.push({id:`worktree`,blocking:!1,titleKey:`prCheckout.step.worktree`}),e.ongoingOperation&&t.push({id:`operation`,blocking:!1,titleKey:`prCheckout.step.operation`}),e.localChanges.present&&t.push({id:`changes`,blocking:!1,titleKey:`prCheckout.step.changes`}),(e.branch.state===`behind`||e.branch.state===`ahead`||e.branch.state===`diverged`)&&t.push({id:`divergence`,blocking:!1,titleKey:`prCheckout.step.divergence`}),t}function Re(e){let t={};return e.workspace.state===`active`&&(t.existingWorkspace=`open`),e.workspace.state===`archived`&&(t.archivedWorkspace=`unarchive`),e.workspace.state===`purged`&&(t.purgedWorktree=`restore`),e.workspace.state!==`purged`&&e.worktree.state===`orphan`&&(t.orphanWorktree=`attach`),e.ongoingOperation&&(t.ongoingOperation=`cancel`),e.localChanges.present&&(t.localChanges=`keep`),e.branch.state===`behind`?t.divergence=`fast-forward`:(e.branch.state===`ahead`||e.branch.state===`diverged`)&&(t.divergence=`keep`),t}var ze={class:`text-subtitle1 text-kobo-1`},Be={class:`text-body2 text-kobo-1`},Ve={class:`text-caption text-warning`},He={class:`text-caption text-negative`},z={class:`text-caption text-kobo-3 q-mb-sm`},B={class:`text-caption text-kobo-3 q-mb-sm`},V={class:`text-caption text-kobo-3 q-mb-sm`},H={class:`text-caption text-kobo-3 q-mb-sm`},Ue={class:`text-caption text-kobo-3 q-mb-sm`},U=3,We=o({__name:`PrCheckoutStepper`,props:{modelValue:{type:Boolean},projectPath:{},pr:{}},emits:[`update:modelValue`,`resolved`,`openWorkspace`],setup(e,{emit:i}){let a=e,o=i,{t:l}=re(),ee=t(!1),d=t(!1),p=t(null),_=t(!1),x=t(null),S=t(null),C=t(``),w=t([]),k=r({}),oe=t(0),se=t(``),le=t(0);function ue(){ee.value=!1,d.value=!1,p.value=null,_.value=!1,x.value=null,S.value=null,C.value=``,w.value=[],oe.value=0,se.value=``,le.value=0;for(let e of Object.keys(k))delete k[e]}function de(e,t,n){x.value=e,t&&(S.value=t),C.value=n,w.value=R(e);let r=Re(e);for(let e of Object.keys(k))delete k[e];Object.assign(k,r),se.value=``,oe.value=0}let fe=null;async function pe(){fe?.abort();let e=new AbortController;fe=e,ee.value=!0,p.value=null;try{let t=await(await fetch(`/api/pull-requests/diagnose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({projectPath:a.projectPath,prNumber:a.pr.number}),signal:e.signal})).json();de(t.report,t.pr,t.fingerprint),w.value.length===0&&xe()}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return;p.value=e instanceof Error?e.message:l(`prCheckout.diagnoseFailed`)}finally{fe===e&&(ee.value=!1)}}async function me(){le.value=0,await pe()}let he=c(()=>x.value?.blockers.some(e=>e.kind===`index-lock`)??!1),ge=c(()=>{let e=x.value?.worktree;return e&&e.state!==`none`?e.path:``}),M=c(()=>w.value.some(e=>e.id===`path`)&&!k.pathCollision),_e={"forge-unavailable":`prCheckout.blocked.forgeUnavailable`,"fork-pr":`prCheckout.blocked.forkPr`,"head-branch-deleted":`prCheckout.blocked.headBranchDeleted`,"index-lock":`prCheckout.blocked.indexLock`,"path-occupied":`prCheckout.blocked.pathOccupied`,"worktree-other-branch":`prCheckout.blocked.worktreeOtherBranch`,"no-common-ancestor":`prCheckout.blocked.noCommonAncestor`},N=c(()=>{let e=(x.value?.blockers??[])[0];return e?_e[e.kind]??`prCheckout.step.blocked`:`prCheckout.step.blocked`}),ve=c(()=>{switch(x.value?.branch.state){case`behind`:return`prCheckout.divergence.behindHint`;case`ahead`:return`prCheckout.divergence.aheadHint`;case`diverged`:return`prCheckout.divergence.divergedHint`;default:return`prCheckout.step.divergence`}}),P=c(()=>{let e=x.value?.branch.state;return e===`behind`?[{label:l(`prCheckout.divergence.fastForward`),value:`fast-forward`},{label:l(`prCheckout.divergence.keep`),value:`keep`}]:e===`diverged`?[{label:l(`prCheckout.divergence.rebase`),value:`rebase`},{label:l(`prCheckout.divergence.resetHard`),value:`reset-hard`},{label:l(`prCheckout.divergence.keep`),value:`keep`}]:[{label:l(`prCheckout.divergence.keep`),value:`keep`}]});function ye(e){let t=typeof e==`string`?e.trim():``;t?k.pathCollision={worktreePath:t}:delete k.pathCollision}function F(){o(`update:modelValue`,!1)}function be(e){o(`update:modelValue`,e)}async function xe(){p.value=null;let e=x.value;if(e){if(k.existingWorkspace===`open`&&e.workspace.state===`active`){o(`openWorkspace`,e.workspace.id),F();return}if(k.archivedWorkspace===`unarchive`&&e.workspace.state===`archived`){o(`openWorkspace`,e.workspace.id),F();return}if(k.ongoingOperation===`cancel`){F();return}if(k.purgedWorktree===`restore`&&e.workspace.state===`purged`){p.value=l(`prCheckout.workspace.restoreNotAvailable`);return}d.value=!0;try{let e=await fetch(`/api/pull-requests/resolve`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({projectPath:a.projectPath,prNumber:a.pr.number,headBranch:S.value?.headBranch??a.pr.headBranch,baseBranch:S.value?.baseBranch??a.pr.baseBranch,decisions:k,fingerprint:C.value})}),t=await e.json().catch(()=>null);if(e.status===409){if(le.value+=1,le.value>U){p.value=l(`prCheckout.staleRetriesExhausted`);return}_.value=!0,await pe();return}if(!e.ok){p.value=t?.error??`HTTP ${e.status}`;return}_.value=!1,o(`resolved`,t),F()}catch(e){p.value=e instanceof Error?e.message:l(`prCheckout.resolveFailed`)}finally{d.value=!1}}}return b(()=>a.modelValue,e=>{e?(ue(),pe()):fe?.abort()},{immediate:!0}),te(()=>{fe?.abort()}),(t,r)=>(f(),u(j,{"model-value":e.modelValue,persistent:``,"onUpdate:modelValue":be},{default:y(()=>[v(ie,{dark:``,style:{"min-width":`560px`,"max-width":`720px`,width:`100%`}},{default:y(()=>[v(D,null,{default:y(()=>[h(`div`,ze,n(t.$t(`prCheckout.title`)),1)]),_:1}),v(ce,{dark:``}),ee.value||x.value&&w.value.length===0?(f(),u(D,{key:0,class:`row justify-center q-pa-xl`},{default:y(()=>[v(E,{color:`primary`,size:`var(--kobo-space-2xl)`})]),_:1})):x.value&&w.value.length>0&&w.value[0].id===`blocked`?(f(),g(s,{key:1},[v(D,{class:`column q-gutter-y-sm`},{default:y(()=>[h(`div`,Be,n(t.$t(N.value)),1)]),_:1}),v(ce,{dark:``}),v(A,{align:`right`,class:`q-pa-md`},{default:y(()=>[he.value?(f(),u(T,{key:0,flat:``,"no-caps":``,label:t.$t(`prCheckout.retry`),color:`kobo-2`,loading:ee.value,onClick:me},null,8,[`label`,`loading`])):m(``,!0),v(T,{flat:``,"no-caps":``,label:t.$t(`prCheckout.cancel`),color:`kobo-2`,onClick:F},null,8,[`label`])]),_:1})],64)):x.value&&w.value.length>0?(f(),g(s,{key:2},[_.value?(f(),u(D,{key:0,class:`q-pb-none`},{default:y(()=>[h(`div`,Ve,n(t.$t(`prCheckout.staleReloaded`)),1)]),_:1})):m(``,!0),p.value?(f(),u(D,{key:1,class:`q-pb-none`},{default:y(()=>[h(`div`,He,n(p.value),1)]),_:1})):m(``,!0),v(D,null,{default:y(()=>[v(L,{modelValue:oe.value,"onUpdate:modelValue":r[8]||=e=>oe.value=e,flat:``,dark:``,animated:``,"header-nav":``,color:`primary`,class:`bg-transparent`},{default:y(()=>[(f(!0),g(s,null,ne(w.value,(e,i)=>(f(),u(Pe,{key:e.id,name:i,title:t.$t(e.titleKey),done:i<oe.value},{default:y(()=>[e.id===`workspace`?(f(),g(s,{key:0},[h(`div`,z,n(t.$t(`prCheckout.workspace.activeHint`)),1),x.value.workspace.state===`active`?(f(),u(O,{key:0,modelValue:k.existingWorkspace,"onUpdate:modelValue":r[0]||=e=>k.existingWorkspace=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.workspace.open`),value:`open`},{label:t.$t(`prCheckout.workspace.continue`),value:`continue`}]},null,8,[`modelValue`,`options`])):x.value.workspace.state===`archived`?(f(),u(O,{key:1,modelValue:k.archivedWorkspace,"onUpdate:modelValue":r[1]||=e=>k.archivedWorkspace=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.workspace.unarchive`),value:`unarchive`},{label:t.$t(`prCheckout.workspace.continue`),value:`continue`}]},null,8,[`modelValue`,`options`])):x.value.workspace.state===`purged`?(f(),u(O,{key:2,modelValue:k.purgedWorktree,"onUpdate:modelValue":r[2]||=e=>k.purgedWorktree=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.workspace.restore`),value:`restore`}]},null,8,[`modelValue`,`options`])):m(``,!0)],64)):e.id===`worktree`?(f(),g(s,{key:1},[h(`div`,B,n(t.$t(`prCheckout.worktree.orphanHint`,{path:ge.value})),1),v(O,{modelValue:k.orphanWorktree,"onUpdate:modelValue":r[3]||=e=>k.orphanWorktree=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.worktree.attach`),value:`attach`},{label:t.$t(`prCheckout.worktree.createElsewhere`),value:`create-elsewhere`}]},null,8,[`modelValue`,`options`])],64)):e.id===`path`?(f(),u(ae,{key:2,modelValue:se.value,"onUpdate:modelValue":[r[4]||=e=>se.value=e,ye],dark:``,dense:``,outlined:``,label:t.$t(`prCheckout.step.path`),error:M.value,"error-message":t.$t(`prCheckout.path.required`)},null,8,[`modelValue`,`label`,`error`,`error-message`])):e.id===`operation`?(f(),g(s,{key:3},[h(`div`,V,n(t.$t(`prCheckout.operation.hint`)),1),v(O,{modelValue:k.ongoingOperation,"onUpdate:modelValue":r[5]||=e=>k.ongoingOperation=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.operation.abort`),value:`abort`},{label:t.$t(`prCheckout.operation.cancel`),value:`cancel`}]},null,8,[`modelValue`,`options`])],64)):e.id===`changes`?(f(),g(s,{key:4},[h(`div`,H,n(t.$t(`prCheckout.changes.hint`)),1),v(O,{modelValue:k.localChanges,"onUpdate:modelValue":r[6]||=e=>k.localChanges=e,dark:``,color:`primary`,options:[{label:t.$t(`prCheckout.changes.stash`),value:`stash`},{label:t.$t(`prCheckout.changes.commit`),value:`commit`},{label:t.$t(`prCheckout.changes.discard`),value:`discard`},{label:t.$t(`prCheckout.changes.keep`),value:`keep`}]},null,8,[`modelValue`,`options`])],64)):e.id===`divergence`?(f(),g(s,{key:5},[h(`div`,Ue,n(t.$t(ve.value)),1),v(O,{modelValue:k.divergence,"onUpdate:modelValue":r[7]||=e=>k.divergence=e,dark:``,color:`primary`,options:P.value},null,8,[`modelValue`,`options`])],64)):m(``,!0)]),_:2},1032,[`name`,`title`,`done`]))),128))]),_:1},8,[`modelValue`])]),_:1})],64)):m(``,!0),v(ce,{dark:``}),x.value&&w.value.length>0&&w.value[0].id!==`blocked`?(f(),u(A,{key:3,align:`right`,class:`q-pa-md`},{default:y(()=>[v(T,{flat:``,"no-caps":``,label:t.$t(`prCheckout.cancel`),color:`kobo-2`,disable:d.value,onClick:F},null,8,[`label`,`disable`]),v(T,{unelevated:``,"no-caps":``,label:t.$t(`prCheckout.apply`),color:`primary`,loading:d.value,disable:M.value,onClick:xe},null,8,[`label`,`loading`,`disable`])]),_:1})):m(``,!0)]),_:1})]),_:1},8,[`model-value`]))}}),Ge={class:`text-subtitle1 text-kobo-1`},W={key:0,class:`text-caption text-negative q-pa-md`},G={class:`text-kobo-3`,style:{"font-family":`var(--kobo-font-mono)`,"font-size":`var(--kobo-space-md)`}},Ke={class:`text-kobo-1 ellipsis`},qe={style:{"font-family":`var(--kobo-font-mono)`}},Je={style:{"font-family":`var(--kobo-font-mono)`}},Ye={key:2,class:`text-caption text-kobo-3 q-pa-md`},K={key:3,class:`row justify-center q-pa-md`},Xe={key:4,class:`row justify-center q-pa-md`},q=3,Ze=Se(o({__name:`PrPickerDialog`,props:{modelValue:{type:Boolean},projectPath:{}},emits:[`update:modelValue`,`select`],setup(e,{emit:i}){let a=e,o=i,{t:c}=re(),l=[{label:c(`prPicker.filterAll`),value:`all`},{label:c(`prPicker.filterMine`),value:`mine`},{label:c(`prPicker.filterReviewRequested`),value:`review-requested`}],ee=t(null),d=t([]),p=t(null),x=t(`all`),S=t(``),C=t(!1),O=t(null),k=r({});function oe(e){return e.workspace.state===`none`?e.worktree.state===`orphan`?`prPicker.badge.worktreePresent`:e.branch.state===`absent`?`prPicker.badge.new`:`prPicker.badge.localBranch`:`prPicker.badge.workspaceExists`}function se(e){let t=k[e];return t?oe(t):null}let le=new Map,ue=0,de=[];function fe(){for(;ue<q&&de.length>0;){let e=de.shift();e!==void 0&&k[e]===null&&(ue+=1,me(e).finally(()=>{--ue,fe()}))}}function pe(e){k[e]=null,de.push(e),fe()}async function me(e){let t=new AbortController;le.set(e,t);try{let n=await fetch(`/api/pull-requests/diagnose`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({projectPath:a.projectPath,prNumber:e}),signal:t.signal});if(!n.ok)return;let r=await n.json();k[e]=r.report}catch(t){t instanceof DOMException&&t.name===`AbortError`&&delete k[e]}finally{le.delete(e)}}function he(){for(let e of le.values())e.abort();le.clear(),de.length=0,ue=0}let ge=null;function ve(){return ge||(ge=new IntersectionObserver(e=>{for(let t of e){if(!t.isIntersecting)continue;let e=Number(t.target.dataset.prNumber);ge?.unobserve(t.target),Number.isFinite(e)&&k[e]===void 0&&pe(e)}},{root:ee.value?.$el??null,rootMargin:`50px`}),ge)}function P(e,t){let n=e?.$el??e;!n||!(n instanceof HTMLElement)||(n.dataset.prNumber=String(t),ve().observe(n))}function ye(){F?.abort(),he()}te(()=>{ye(),ge?.disconnect(),ge=null});let F=null;async function be(e){F?.abort();let t=new AbortController;F=t,C.value=!0,O.value=null;try{let n=new URLSearchParams({projectPath:a.projectPath,filter:x.value,search:S.value,perPage:`25`});e&&n.set(`cursor`,e);let r=await fetch(`/api/pull-requests?${n.toString()}`,{signal:t.signal}),i=await r.json().catch(()=>null);if(!r.ok)throw Error(i?.error??`HTTP ${r.status}`);let o=i;e?d.value=[...d.value,...o.items]:d.value=o.items,p.value=o.nextCursor}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return;O.value=e instanceof Error?e.message:c(`prPicker.loadFailed`)}finally{F===t&&(C.value=!1)}}function xe(){d.value=[],p.value=null,be(null)}function Se(){p.value!==null&&be(p.value)}function we(e){e.isFork||(o(`select`,e),o(`update:modelValue`,!1))}return b(()=>a.modelValue,e=>{e?(x.value=`all`,S.value=``,xe()):ye()}),b(x,()=>{a.modelValue&&xe()}),b(S,()=>{a.modelValue&&xe()}),(t,r)=>(f(),u(j,{"model-value":e.modelValue,"onUpdate:modelValue":r[3]||=e=>o(`update:modelValue`,e)},{default:y(()=>[v(ie,{dark:``,style:{"min-width":`560px`,"max-width":`720px`,width:`100%`}},{default:y(()=>[v(D,null,{default:y(()=>[h(`div`,Ge,n(t.$t(`prPicker.title`)),1)]),_:1}),v(ce,{dark:``}),v(D,{class:`column q-gutter-y-md`},{default:y(()=>[v(De,{modelValue:x.value,"onUpdate:modelValue":r[0]||=e=>x.value=e,spread:``,"no-caps":``,unelevated:``,"toggle-color":`primary`,color:`kobo-surface-2`,"text-color":`kobo-2`,options:l},null,8,[`modelValue`]),v(ae,{modelValue:S.value,"onUpdate:modelValue":r[1]||=e=>S.value=e,dense:``,dark:``,outlined:``,debounce:`300`,clearable:``,placeholder:t.$t(`prPicker.searchPlaceholder`)},{prepend:y(()=>[v(w,{name:`search`,size:`18px`})]),_:1},8,[`modelValue`,`placeholder`])]),_:1}),v(ce,{dark:``}),v(D,{class:`pr-picker__list-section`,ref_key:`listSectionEl`,ref:ee},{default:y(()=>[O.value?(f(),g(`div`,W,n(O.value),1)):d.value.length>0?(f(),u(_e,{key:1,dark:``,class:`pr-picker__list`},{default:y(()=>[(f(!0),g(s,null,ne(d.value,e=>(f(),u(M,{key:e.number,clickable:``,disable:e.isFork,class:`pr-picker__item`,ref_for:!0,ref:t=>P(t,e.number),onClick:t=>we(e)},{default:y(()=>[v(N,null,{default:y(()=>[v(I,{class:`row items-center q-gutter-x-xs no-wrap`},{default:y(()=>[h(`span`,G,`#`+n(e.number),1),h(`span`,Ke,n(e.title),1),e.ci===`SUCCESS`?(f(),u(w,{key:0,name:`check_circle`,color:`positive`,size:`14px`})):e.ci===`FAILURE`?(f(),u(w,{key:1,name:`cancel`,color:`negative`,size:`14px`})):m(``,!0),e.isDraft?(f(),u(Te,{key:2,color:`kobo-hover`,"text-color":`kobo-2`,label:t.$t(`prPicker.badge.draft`)},null,8,[`label`])):m(``,!0),se(e.number)?(f(),u(Te,{key:3,color:`kobo-surface-2`,"text-color":`kobo-2`,label:t.$t(se(e.number))},null,8,[`label`])):m(``,!0)]),_:2},1024),v(I,{caption:``,class:`text-kobo-3`},{default:y(()=>[_(` @`+n(e.author)+` · `,1),h(`span`,qe,n(e.headBranch),1),v(w,{name:`arrow_forward`,size:`11px`,class:`q-mx-xs`}),h(`span`,Je,n(e.baseBranch),1)]),_:2},1024)]),_:2},1024),e.isFork?(f(),u(Ce,{key:0},{default:y(()=>[_(n(t.$t(`prPicker.forkNotSupported`)),1)]),_:1})):m(``,!0)]),_:2},1032,[`disable`,`onClick`]))),128))]),_:1})):C.value?m(``,!0):(f(),g(`div`,Ye,n(t.$t(`prPicker.empty`)),1)),C.value?(f(),g(`div`,K,[v(E,{color:`primary`,size:`var(--kobo-space-2xl)`})])):m(``,!0),!C.value&&p.value!==null?(f(),g(`div`,Xe,[v(T,{flat:``,"no-caps":``,label:t.$t(`prPicker.loadMore`),color:`kobo-2`,onClick:Se},null,8,[`label`])])):m(``,!0)]),_:1},512),v(A,{align:`right`,class:`q-pa-md`},{default:y(()=>[v(T,{flat:``,"no-caps":``,label:t.$t(`common.cancel`),color:`kobo-2`,onClick:r[2]||=e=>o(`update:modelValue`,!1)},null,8,[`label`])]),_:1})]),_:1})]),_:1},8,[`model-value`]))}}),[[`__scopeId`,`data-v-2cab3a30`]]);function Qe(e){let t=[],n=e.skipSetupScript;e.useExistingWorktree&&!n&&(n=!0,t.push(`setup-script-forced`));let r=e.agentPermissionMode;return e.autoLoop&&r===`plan`&&(r=`bypass`,t.push(`permission-mode-downgraded`)),{skipSetupScript:n,agentPermissionMode:r,applied:t}}var J=`kobo:create-page-prefs`;function $e(){try{let e=localStorage.getItem(J);return e===null?void 0:JSON.parse(e)}catch{return}}function et(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function tt(){let e=$e();if(!et(e))return{};let t={};if(typeof e.projectPath==`string`&&e.projectPath.length>0&&(t.projectPath=e.projectPath),typeof e.autoLoop==`boolean`&&(t.autoLoop=e.autoLoop),(e.autoLoopSessionMode===`per_task`||e.autoLoopSessionMode===`continuous`)&&(t.autoLoopSessionMode=e.autoLoopSessionMode),typeof e.brainstormModel==`string`&&e.brainstormModel.length>0&&(t.brainstormModel=e.brainstormModel),et(e.reasoningEffortByModel)){let n=Object.entries(e.reasoningEffortByModel).filter(([e,t])=>e.length>0&&typeof t==`string`&&t.length>0);t.reasoningEffortByModel=Object.fromEntries(n)}return t}function nt(e){try{localStorage.setItem(J,JSON.stringify(e))}catch{}}var rt={class:`create-inner q-mx-auto`},it={class:`q-mb-lg`},at={class:`create-title text-weight-bold text-kobo-1`},ot={class:`text-body1 text-kobo-2 q-mt-xs`},st={key:0,class:`create-page__overrides q-mb-lg`},ct={class:`create-page__overrides-title text-caption`},lt={class:`create-sections column`},ut={class:`text-subtitle1 text-weight-medium text-kobo-1`},dt={class:`text-body2 text-kobo-3`},ft={class:`card-textarea-wrap`},pt={class:`column items-center self-end q-pb-xs`},mt={class:`column q-gutter-y-sm`},ht={class:`text-caption text-weight-medium text-kobo-2`},gt={class:`row q-gutter-sm`},_t={key:0,class:`source-panel column q-gutter-y-sm q-pa-md rounded-borders`},vt={key:0},yt={class:`text-body2 text-kobo-2 q-mb-sm`},bt={class:`responsive-fields responsive-fields--sm row q-col-gutter-x-sm`},xt={class:`col-12 col-sm-6`},St={class:`col`},Ct={class:`text-body2 text-weight-medium`},wt={class:`text-caption text-kobo-3`},Tt={class:`col-12 col-sm-6`},Et={class:`col`},Dt={class:`text-body2 text-weight-medium`},Ot={class:`text-caption text-kobo-3`},kt={key:0,class:`source-panel q-pa-md rounded-borders`},At={key:0,class:`responsive-fields row q-col-gutter-x-md`},jt={class:`col-12 col-md-6`},Mt={class:`q-pa-md column q-gutter-y-sm`},Nt={key:0,class:`row q-gutter-xs`},Pt={class:`col-12 col-md-6`},Ft={class:`q-pa-md column q-gutter-y-sm`},It={key:0,class:`row q-gutter-xs`},Lt={class:`text-subtitle1 text-weight-medium text-kobo-1`},Rt={class:`text-body2 text-kobo-3`},zt={class:`text-caption text-weight-medium text-kobo-2 q-mb-sm`},Bt={key:0,class:`row items-center q-mt-xs q-gutter-x-xs`},Vt={class:`text-caption text-kobo-3`},Ht={class:`responsive-fields row q-col-gutter-x-md`},Ut={class:`col-12 col-md-6`},Wt={class:`col-12 col-md-6`},Gt={key:0,class:`responsive-fields row q-col-gutter-x-md`},Kt={class:`col-12 col-md-4`},qt={class:`col-12 col-md-8`},Jt={class:`self-center full-width no-outline text-kobo-2 ellipsis`,tabindex:`0`},Yt={class:`self-center full-width no-outline text-kobo-2 ellipsis`,tabindex:`0`},Xt={class:`col`},Zt={class:`text-subtitle1 text-weight-medium text-kobo-1`},Qt={class:`text-body2 text-kobo-3`},$t={key:0,class:`col-12 q-mb-sm`},en={key:0,class:`text-caption text-kobo-3 q-mt-xs`},tn={key:1,class:`col-12 text-overline text-kobo-3 q-mb-xs`},nn={key:2,class:`col-12 col-sm-6`},rn={class:`col-12 col-sm-6`},an={class:`col-12 col-sm-6`},on={class:`col-12 col-sm-6`},sn={class:`col-12 text-overline text-kobo-3 q-mt-md q-mb-xs`},cn={class:`col-12 col-sm-6`},ln={class:`col-12 col-sm-6`},un={class:`col-12 col-sm-6`},dn={class:`col-12 col-sm-6`},fn={class:`text-subtitle2 text-amber-3`},pn={key:0,class:`text-caption text-kobo-3 q-mt-sm`},mn={class:`responsive-fields row q-col-gutter-x-md`},hn={class:`col-12 col-sm-6`},gn={class:`col-12 col-sm-6`},_n={class:`text-caption text-kobo-3`},vn={class:`row q-gutter-sm create-actions`},yn={class:`create-page__progress-step`},bn={key:0,class:`create-page__progress-counter`},xn=6e4,Sn=Se(o({__name:`CreatePage`,setup(r){function o(e){return e.disabled===!0}let te=le(),E=we(),O=de(),A=me(),{t:j,te:_e}=re(),Se=t([]),Te=t(``),L=t(``),Pe=t(null),Le=t(``),R=t(!1),Re=t(!1),ze=t(null),Be=t(null),Ve=t([]),He=t(null),z=t(``),B=t(!1),V=t(`claude-opus-4-8`),H=t(`claude-opus-4-8`),Ue=t(`auto`),U=t(`auto`),Ge=t({}),W=t(``),G=t(null),Ke=t(`feature`),qe=t(!1),Je=c(()=>A.global.voiceEnabled),Ye=t([]),K=t(`claude-code`),Xe=c(()=>Ye.value.find(e=>e.id===K.value)),q=t(!1),J=t(`codex`),$e=t(`auto`),et=t(`auto`),Sn=t(`bypass`),Cn=c(()=>Ye.value.map(e=>({value:e.id,label:e.displayName}))),wn=c(()=>Ye.value.filter(e=>e.id!==K.value).map(e=>({value:e.id,label:e.displayName}))),Tn=c(()=>A.global.branchPrefixes.map(e=>({label:`${e}/`,value:e}))),En=[`plan`,`bypass`,`strict`,`interactive`];function Dn(e,t){let n=e?A.getProjectByPath(e):void 0,r=n?.agentPermissionMode;if(typeof r==`string`&&En.includes(r))return r;let i=A.global.defaultPermissionModeByEngine?.[t];return typeof i==`string`&&En.includes(i)?i:n?.dangerouslySkipPermissions??A.global.dangerouslySkipPermissions??!0?`bypass`:t===`codex`?`plan`:`interactive`}let On=t(Dn(``,K.value)),kn=c(()=>{switch(Ur.value.agentPermissionMode){case`plan`:return`visibility`;case`bypass`:return`flash_on`;case`strict`:return`lock`;case`interactive`:return`security`}}),An=c(()=>(xe[K.value]??En).map(e=>({value:e,label:j(`agentPermissionMode.${e}`),disabled:e===`plan`&&Z.value}))),jn=t([]),Mn=t([]),Nn=t(!1),Pn=t(!1),Fn=t(null),In=c(()=>{let e=O.creationProgress;if(!e||e.creationId!==Fn.value)return``;let t=`createPage.progress.${e.step}`;return _e(t)?j(t):e.step}),Ln=c(()=>{let e=O.creationProgress;return!e||e.creationId!==Fn.value||e.index<0?``:j(`createPage.progress.step`,{index:e.index+1,total:e.total})});function Rn(e,t){t(()=>{Mn.value=e?jn.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())):jn.value})}let zn=pe();function Bn(){return Pe.value?.nativeEl??null}let{showSkills:Vn,selectedSkillIndex:Hn,groupedDropdown:Un,flatDropdown:Wn,fetchSkills:Gn,detectSlashFragment:Kn,replaceFragmentWith:qn,closeDropdown:Jn}=Fe(L,Bn,{excludeKoboCommands:!0});Gn(),b(L,async()=>{await p(),await Kn()});function Yn(e){if(e.type===`template`){let t=zn.templates.find(t=>t.slug===e.name);if(!t)return;let n=Ne(t.content,Ie({workspace:null,gitStats:null,sessionName:null}));qn(n),Jn();return}qn(`/${e.name} `),Jn()}function Xn(e){!Vn.value||Wn.value.length===0||(e.key===`ArrowDown`?(e.preventDefault(),Hn.value=(Hn.value+1)%Wn.value.length):e.key===`ArrowUp`?(e.preventDefault(),Hn.value=(Hn.value-1+Wn.value.length)%Wn.value.length):e.key===`Enter`&&!e.shiftKey&&!e.ctrlKey&&!e.metaKey?(e.preventDefault(),Yn(Wn.value[Hn.value])):e.key===`Escape`&&(e.preventDefault(),Jn()))}async function Zn(){if(!(!Je.value||R.value||Re.value)){if(!navigator.mediaDevices?.getUserMedia||typeof MediaRecorder>`u`){E.notify({type:`warning`,message:j(`voice.notSupported`),position:`top`,timeout:4e3});return}try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});Be.value=e,Ve.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&&Ve.value.push(e.data)},n.start(),ze.value=n,R.value=!0,He.value=setTimeout(()=>{Qn(),E.notify({type:`info`,message:j(`voice.maxDurationReached`),position:`top`,timeout:3500})},xn)}catch{E.notify({type:`negative`,message:j(`voice.errorMicPermission`),position:`top`,timeout:5e3})}}}async function Qn(){if(!R.value)return;let e=ze.value;if(!e)return;R.value=!1,Re.value=!0,He.value&&=(clearTimeout(He.value),null);let t=await new Promise(t=>{e.onstop=()=>t(new Blob(Ve.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`,A.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()&&(L.value=L.value?`${L.value.trimEnd()} ${r.text.trim()}`:r.text.trim())}catch(e){let t=e instanceof Error?e.message:`TRANSCRIPTION_FAILED`;E.notify({type:`negative`,message:j({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{ze.value=null,Ve.value=[],Be.value?.getTracks().forEach(e=>{e.stop()}),Be.value=null,Re.value=!1}}function $n(e){return Je.value?A.global.voicePttKey===`ctrl+space`?e.ctrlKey&&e.code===`Space`:e.key===`Alt`:!1}function er(e){!$n(e)||e.repeat||(e.preventDefault(),Zn())}function tr(e){$n(e)&&(e.preventDefault(),Qn())}function nr(){R.value&&Qn()}function rr(){document.visibilityState!==`visible`&&R.value&&Qn()}let ir=c(()=>(ye[K.value]??be).map(e=>({label:j(e.i18nLabelKey),value:e.value,description:j(e.i18nDescriptionKey)})));b([K,wn],()=>{wn.value.some(e=>e.value===J.value)||(J.value=wn.value[0]?.value??``)});let ar=c(()=>(ye[J.value]??be).map(e=>({label:j(e.i18nLabelKey),value:e.value,description:j(e.i18nDescriptionKey)}))),or=c(()=>(Oe[J.value]??Oe[`claude-code`]).map(e=>({value:e.value,label:lr(j(e.i18nLabelKey)),description:j(e.i18nDescriptionKey)}))),sr=c(()=>(xe[J.value]??En).map(e=>({value:e,label:j(`agentPermissionMode.${e}`),disabled:e===`plan`&&Z.value}))),cr=c(()=>Qe({useExistingWorktree:Q.value,skipSetupScript:qe.value,autoLoop:Z.value,agentPermissionMode:Sn.value}));b([J,ar],()=>{let e=ar.value.map(e=>e.value);if(e.length>0){let t=A.global.defaultModelByEngine?.[J.value];typeof t==`string`&&e.includes(t)?$e.value=t:e.includes($e.value)||($e.value=e.includes(`auto`)?`auto`:e[0]??`auto`)}let t=xe[J.value]??[];t.length>0&&!t.includes(Sn.value)&&(Sn.value=Dn(W.value,J.value));let n=(Oe[J.value]??[]).map(e=>e.value);n.length>0&&!n.includes(et.value)&&(et.value=n.includes(`auto`)?`auto`:n[0]??`auto`)},{immediate:!0}),b(K,()=>{let e=ir.value.map(e=>e.value);if(e.length>0){let t=A.global.defaultModelByEngine?.[K.value];typeof t==`string`&&e.includes(t)?V.value=t:e.includes(V.value)||(V.value=e.includes(`auto`)?`auto`:e[0]??`auto`)}e.length>0&&!e.includes(H.value)&&(H.value=e.includes(`auto`)?`auto`:e[0]??`auto`);let t=xe[K.value]??[];t.length>0&&!t.includes(On.value)&&(On.value=Dn(W.value,K.value));let n=(Oe[K.value]??[]).map(e=>e.value);n.length>0&&!n.includes(U.value)&&(U.value=n.includes(`auto`)?`auto`:n[0]??`auto`)});function lr(e){let t=e.indexOf(`:`);return t>=0?e.slice(t+1).trim():e}let ur=c(()=>(Oe[K.value]??Oe[`claude-code`]).map(e=>({value:e.value,label:lr(j(e.i18nLabelKey)),description:j(e.i18nDescriptionKey)})));b(V,e=>{let t=Ge.value[e];t&&ur.value.some(e=>e.value===t)&&(U.value=t)}),b(U,e=>{Ge.value={...Ge.value,[V.value]:e},nt({...tt(),reasoningEffortByModel:Ge.value})});let Y=c(()=>{let e=z.value.trim();return e.startsWith(`https://www.notion.so/`)||e.startsWith(`https://app.notion.com/`)}),dr=c(()=>/[?&]p=[0-9a-f]{32}(?:[&#]|$)/i.test(z.value)),fr=t(`panel`);function pr(){let e=z.value.trim();return fr.value===`parent`&&dr.value?e.replace(/([?&])p=[0-9a-f]{32}(?=[&#]|$)/i,`$1`).replace(/([?&])pm=[a-z]+(?=[&#]|$)/i,`$1`).replace(/[?&]+$/,``).replace(/\?&/,`?`):e}let mr=t([]),hr=t([]),gr=t(``),_r=t(``),vr=c(()=>!B.value||!Y.value);function yr(){let e=gr.value.trim();e&&(mr.value.push(e),gr.value=``)}function br(e){mr.value.splice(e,1)}function xr(){let e=_r.value.trim();e&&(hr.value.push(e),_r.value=``)}function Sr(e){hr.value.splice(e,1)}function Cr(){B.value=!B.value,B.value||(z.value=``)}let X=t(!1),Z=t(!1),wr=t(`per_task`);function Tr(){Z.value=!Z.value,Z.value&&(H.value=V.value)}let Er=t(``),Dr=c(()=>/\/issues\/\d+/.test(Er.value.trim()));function Or(){X.value=!X.value,X.value||(Er.value=``)}let Q=t(!1),$=t(null),kr=t([]),Ar=t(!1),jr=t(!1),Mr=t(!1),Nr=t(!1),Pr=t(null),Fr=t(!1),Ir=t(null),Lr=t(null);async function Rr(e){if(!e.trim()){jr.value=!1;return}try{let t=await fetch(`/api/pull-requests?projectPath=${encodeURIComponent(e.trim())}&perPage=1`);jr.value=t.ok}catch{jr.value=!1}}function zr(e){Mr.value=!1,Pr.value=e,Nr.value=!0}function Br(e){Nr.value=!1,te.push({name:`workspace`,params:{id:e}})}function Vr(e){Nr.value=!1,Mr.value=!1,Q.value=!0,$.value=e.worktreePath,G.value=e.sourceBranch,Fr.value=!0,Ir.value=Pr.value?.number??null,Lr.value=Pr.value?.url??null,E.notify({type:`positive`,message:j(`createPage.prReadyToCreate`,{number:Ir.value??``}),position:`top`,timeout:4e3})}b(Nr,e=>{e||(Pr.value=null)});function Hr(){Fr.value=!1,Q.value=!1,$.value=null,G.value=null,Pr.value=null,Ir.value=null,Lr.value=null}let Ur=c(()=>Qe({useExistingWorktree:Q.value,skipSetupScript:qe.value,autoLoop:Z.value,agentPermissionMode:On.value}));async function Wr(){if(!W.value.trim()){kr.value=[];return}Ar.value=!0;try{kr.value=await O.fetchOrphanWorktrees(W.value.trim())}catch{kr.value=[]}finally{Ar.value=!1}}function Gr(){Q.value=!Q.value,Q.value?(B.value=!1,z.value=``,X.value=!1,Er.value=``,qe.value=!0,Wr()):$.value=null}function Kr(e){e===`existing`!==Q.value&&Gr()}b(W,()=>{$.value=null,Q.value&&Wr()}),b($,e=>{if(!e)return;let t=kr.value.find(t=>t.path===e);t&&(G.value=t.suggestedSourceBranch),qe.value=!0});async function qr(e){if(!e.trim()){jn.value=[],G.value=null;return}Nn.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();jn.value=n.local??n.branches??[],jn.value.length>0&&!G.value&&(G.value=jn.value[0]??null)}catch{jn.value=[],G.value=null}finally{Nn.value=!1}}function Jr(e){let t=A.getProjectByPath(e);if(t){t.defaultSourceBranch&&(G.value=t.defaultSourceBranch);let e=t.taskPromptTemplate??``;(L.value===``||L.value===Le.value)&&(L.value=e,Le.value=e);let n=ir.value.map(e=>e.value);if(t.defaultModel&&n.includes(t.defaultModel))V.value=t.defaultModel;else{let e=A.global.defaultModelByEngine?.[K.value];typeof e==`string`&&n.includes(e)&&(V.value=e)}}On.value=Dn(e,K.value)}let Yr=null;b(W,e=>{Yr&&clearTimeout(Yr),Yr=setTimeout(()=>{G.value=null,qr(e),Jr(e),Rr(e)},500)});function Xr(e,t){let n=e.toLowerCase();t(()=>{Se.value=A.projectPaths.filter(e=>e.toLowerCase().includes(n)||ke(e).toLowerCase().includes(n))})}function Zr(e){let t=A.projectPaths.find(t=>ke(t)===e);W.value=t??e}d(async()=>{await A.fetchSettings();let e=A.global.branchPrefixes;e.length>0&&!e.includes(Ke.value)&&(Ke.value=e[0]);let t=tt();Ge.value=t.reasoningEffortByModel??{},t.autoLoop===!0&&(Z.value=!0),t.autoLoopSessionMode===`continuous`&&(wr.value=`continuous`),t.autoLoop===!0&&t.brainstormModel&&(H.value=t.brainstormModel),t.projectPath&&A.projectPaths.includes(t.projectPath)&&(W.value=t.projectPath),On.value=Dn(W.value,K.value);try{let e=await fetch(`/api/engines`);e.ok&&(Ye.value=await e.json())}catch{}{let e=ir.value.map(e=>e.value),t=A.global.defaultModelByEngine?.[K.value];typeof t==`string`&&e.includes(t)?V.value=t:e.length>0&&!e.includes(V.value)&&(V.value=e.includes(`auto`)?`auto`:e[0]??`auto`)}let n=Ge.value[V.value];n&&ur.value.some(e=>e.value===n)&&(U.value=n);{let e=ir.value.map(e=>e.value);e.length>0&&!e.includes(H.value)&&(H.value=e.includes(`auto`)?`auto`:e[0]??`auto`)}window.addEventListener(`keydown`,er),window.addEventListener(`keyup`,tr),window.addEventListener(`blur`,nr),document.addEventListener(`visibilitychange`,rr),fe(`create:form`,()=>!Pn.value&&(L.value.trim().length>0||mr.value.length>0||hr.value.length>0))}),ee(()=>{Yr&&clearTimeout(Yr),window.removeEventListener(`keydown`,er),window.removeEventListener(`keyup`,tr),window.removeEventListener(`blur`,nr),document.removeEventListener(`visibilitychange`,rr),se(`create:form`),He.value&&=(clearTimeout(He.value),null),R.value&&Qn()});function Qr(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 $r(){return Te.value.trim()?Te.value.trim().substring(0,80):!B.value&&!X.value&&L.value.trim()&&(L.value.trim().split(`
2
2
  `)[0]??``).substring(0,80)||`workspace`}function ei(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()}`}let ti=c(()=>{if(B.value&&Y.value)return`${Ke.value}/${ei(pr())}`;let e=$r(),t=e===`workspace`?j(`createPage.branchNamePending`):Qr(e);return`${Ke.value}/${t}`}),ni=t(null),ri=t(``),ii=t(null),ai=t(null),oi=t(null),si=t(null),ci=t(null);function li(e){switch(e){case`name`:return ii.value;case`description`:return Pe.value;case`notionUrl`:return ai.value;case`sentryUrl`:return oi.value;case`projectPath`:return si.value;case`branch`:return ci.value}}async function ui(e,t){ni.value=e,ri.value=t,await p();let n=li(e);(n?.$el??n)?.scrollIntoView({behavior:`smooth`,block:`center`}),n?.focus?.()}b([Te,L,z,Er,W,G],()=>{ni.value!==null&&(ni.value=null,ri.value=``)});function di(){return B.value&&!Y.value?{field:`notionUrl`,message:j(`createPage.validationNotionUrl`)}:X.value&&!Dr.value?{field:`sentryUrl`,message:j(`createPage.sentryValidation`)}:!B.value&&!X.value&&!L.value.trim()?{field:`description`,message:j(`createPage.validationDescription`)}:!B.value&&!X.value&&(!$r()||$r()===`workspace`)&&!Te.value.trim()&&!L.value.trim()?{field:`name`,message:j(`createPage.validationName`)}:W.value.trim()?G.value?null:{field:`branch`,message:j(`createPage.validationBranch`)}:{field:`projectPath`,message:j(`createPage.validationPath`)}}async function fi(){if(Pn.value)return;let e=di();if(e){E.notify({type:`negative`,message:`${e.message} — ${j(`createPage.validationFocusHint`)}`,position:`top`}),ui(e.field,e.message);return}if(Q.value&&!$.value){E.notify({type:`negative`,message:j(`createPage.pickWorktreeRequired`),position:`top`});return}if(q.value&&Q.value){E.notify({type:`negative`,message:j(`createPage.compareNeedsNewWorktree`),position:`top`});return}if(q.value&&(!J.value||J.value===K.value)){E.notify({type:`negative`,message:j(`createPage.compareNeedsSecondEngine`),position:`top`});return}Pn.value=!0;let t=k(),n=$r(),r;r=B.value&&Y.value?ei(pr()):n===`workspace`?`task-${Date.now()}`:Qr(n);let i=q.value?[mi(K.value,n,r),mi(J.value,n,r)]:[{engine:K.value,name:n,workingBranch:`${Ke.value}/${r}`,model:V.value,reasoningEffort:U.value,agentPermissionMode:Ur.value.agentPermissionMode}],a=i.length>1?`cmp-${pi()}`:void 0,o=[];try{for(let e of i)o.push(await hi(e,a,t))}catch(e){let t=e?.code,n=e instanceof Error&&e.message?e.message:j(`createPage.errorCreating`);E.notify({type:`negative`,position:`top`,timeout:0,multiLine:!0,message:t?j(`createPage.errorAtStep`,{step:t,message:n}):n,actions:[{label:j(`common.close`),color:`white`}]}),o.length>0&&o.length<i.length&&E.notify({type:`warning`,position:`top`,timeout:0,multiLine:!0,message:j(`createPage.comparisonPartial`,{count:o.length,total:i.length}),actions:[{label:j(`common.close`),color:`white`}]})}finally{Pn.value=!1,Fn.value=null,O.clearCreationProgress()}let s=o[0];s&&(nt({projectPath:W.value.trim(),autoLoop:Z.value,autoLoopSessionMode:wr.value,...Z.value?{brainstormModel:H.value}:{},reasoningEffortByModel:{...Ge.value,[V.value]:U.value}}),O.selectWorkspace(s.id),se(`create:form`),te.push({name:`workspace`,params:{id:s.id}}))}function pi(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function mi(e,t,n){let r=e===K.value;return{engine:e,name:`${t} (${Ye.value.find(t=>t.id===e)?.displayName??e})`,workingBranch:`${Ke.value}/${n}-${e}`,model:r?V.value:$e.value,reasoningEffort:r?U.value:et.value,agentPermissionMode:r?Ur.value.agentPermissionMode:cr.value.agentPermissionMode}}async function hi(e,t,n){let r=`create-${pi()}`;Fn.value=r,O.clearCreationProgress(),n.subscribeChannel(r);try{let i={name:e.name,projectPath:W.value.trim(),sourceBranch:G.value,creationId:r,...Q.value&&$.value?{worktreePath:$.value,workingBranch:e.workingBranch}:{workingBranch:e.workingBranch},engine:e.engine,model:e.model,reasoningEffort:e.reasoningEffort,...t?{comparisonId:t}:{},...B.value&&Y.value?{notionUrl:pr()}:{},...X.value&&Dr.value?{sentryUrl:Er.value.trim()}:{},...Lr.value?{prUrl:Lr.value}:{},...vr.value&&mr.value.length>0?{tasks:mr.value}:{},...vr.value&&hr.value.length>0?{acceptanceCriteria:hr.value}:{},...Ur.value.skipSetupScript?{skipSetupScript:!0}:{},...L.value.trim()?{description:L.value.trim()}:{},...Z.value?{autoLoop:!0,autoLoopSessionMode:wr.value,...t?{brainstormModel:e.model,brainstormReasoningEffort:e.reasoningEffort}:{brainstormModel:H.value,brainstormReasoningEffort:Ue.value}}:{},agentPermissionMode:e.agentPermissionMode},a=await O.createWorkspace(i);return A.global.audioWorkspaceCreatedNotifications&&he(A.global.audioWorkspaceCreatedSound,A.global.audioWorkspaceCreatedVolume),a._branchAdjusted&&E.notify({type:`info`,message:j(`createPage.branchAdjusted`,{branch:a.workingBranch}),position:`top`,timeout:6e3}),a._sourceFallback&&E.notify({type:`warning`,message:j(`createPage.localSourceFallback`),position:`top`,timeout:6e3}),n.subscribe(a.id),{id:a.id,workingBranch:a.workingBranch}}finally{n.unsubscribe(r)}}return(t,r)=>(f(),u(Ae,{class:`create-page`},{default:y(()=>[v(je,{class:`create-page__drawer-toggle`}),h(`div`,rt,[h(`header`,it,[h(`div`,at,n(t.$t(`createPage.title`)),1),h(`div`,ot,n(t.$t(`createPage.subtitle`)),1)]),Ur.value.applied.length>0?(f(),g(`div`,st,[h(`div`,ct,[v(w,{name:`info`,size:`16px`}),_(` `+n(t.$t(`createPage.override.title`)),1)]),(f(!0),g(s,null,ne(Ur.value.applied,e=>(f(),g(`div`,{key:e,class:`create-page__overrides-item text-caption`},n(t.$t(`createPage.override.${e}`)),1))),128))])):m(``,!0),h(`div`,lt,[v(ie,{flat:``,bordered:``,class:`create-section-card`},{default:y(()=>[v(D,{class:`row items-start no-wrap q-gutter-md`},{default:y(()=>[v(oe,{color:`primary`,"text-color":`white`,icon:`assignment`,size:`42px`}),h(`div`,null,[h(`div`,ut,n(t.$t(`createPage.sectionMission`)),1),h(`div`,dt,n(t.$t(`createPage.sectionMissionHint`)),1)])]),_:1}),v(ce,{dark:``}),v(D,{class:`column q-gutter-y-md`},{default:y(()=>[v(ae,{ref_key:`nameFieldRef`,ref:ii,modelValue:Te.value,"onUpdate:modelValue":r[0]||=e=>Te.value=e,dark:``,dense:``,outlined:``,"stack-label":``,error:ni.value===`name`,"error-message":ri.value,label:t.$t(`createPage.workspaceNameLabel`),placeholder:B.value&&Y.value?t.$t(`createPage.workspaceName`):t.$t(`createPage.workspaceNamePlaceholder`)},null,8,[`modelValue`,`error`,`error-message`,`label`,`placeholder`]),h(`div`,ft,[v(ae,{ref_key:`descriptionRef`,ref:Pe,modelValue:L.value,"onUpdate:modelValue":r[1]||=e=>L.value=e,dark:``,dense:``,outlined:``,"stack-label":``,type:`textarea`,autogrow:``,rows:6,error:ni.value===`description`,"error-message":ri.value,label:t.$t(`createPage.descriptionLabel`),placeholder:B.value?t.$t(`createPage.instructions`):t.$t(`createPage.instructionsPlaceholder`),class:`create-textarea`,onKeydown:[Xn,l(C(fi,[`ctrl`]),[`enter`]),l(C(fi,[`meta`]),[`enter`])]},{append:y(()=>[h(`div`,pt,[Re.value?(f(),u(ge,{key:0,size:`18px`,color:`amber-6`})):m(``,!0),v(T,{flat:``,dense:``,round:``,size:`sm`,icon:Re.value?`hourglass_top`:R.value?`mic`:`mic_none`,color:R.value?`red-5`:Re.value?`amber-6`:`kobo-3`,disable:!Je.value||Re.value,class:a({"voice-btn--recording":R.value}),onMousedown:C(Zn,[`prevent`]),onMouseup:C(Qn,[`prevent`]),onMouseleave:C(Qn,[`prevent`]),onTouchstart:C(Zn,[`prevent`]),onTouchend:C(Qn,[`prevent`])},{default:y(()=>[v(Ce,null,{default:y(()=>[_(n(Re.value?t.$t(`voice.transcribing`):R.value?t.$t(`voice.recording`):t.$t(`voice.holdToTalk`)),1)]),_:1})]),_:1},8,[`icon`,`color`,`disable`,`class`])])]),_:1},8,[`modelValue`,`error`,`error-message`,`label`,`placeholder`,`onKeydown`]),e(Vn)&&e(Wn).length>0?(f(),u(Me,{key:0,class:`create-slash-popup`,"grouped-dropdown":e(Un),"flat-dropdown":e(Wn),"selected-index":e(Hn),onSelect:Yn},null,8,[`grouped-dropdown`,`flat-dropdown`,`selected-index`])):m(``,!0)]),h(`div`,mt,[h(`div`,ht,n(t.$t(`createPage.sources`)),1),h(`div`,gt,[e(A).global.notionEnabled?(f(),u(T,{key:0,dense:``,outline:``,"no-caps":``,icon:`description`,color:B.value?`green-4`:`kobo-2`,label:B.value?t.$t(`createPage.notionEnabled`):t.$t(`createPage.importNotion`),disable:Q.value,onClick:Cr},null,8,[`color`,`label`,`disable`])):m(``,!0),e(A).global.sentryEnabled?(f(),u(T,{key:1,dense:``,outline:``,"no-caps":``,icon:`bug_report`,color:X.value?`red-4`:`kobo-2`,label:X.value?t.$t(`createPage.sentryEnabled`):t.$t(`createPage.importSentry`),disable:Q.value,onClick:Or},null,8,[`color`,`label`,`disable`])):m(``,!0),v(T,{dense:``,outline:``,"no-caps":``,icon:`call_merge`,color:`kobo-2`,label:t.$t(`createPage.importPr`),disable:Q.value||!W.value.trim()||!jr.value,onClick:r[2]||=e=>Mr.value=!0},{default:y(()=>[W.value.trim()?jr.value?m(``,!0):(f(),u(Ce,{key:1},{default:y(()=>[_(n(t.$t(`createPage.importPrNotSupported`)),1)]),_:1})):(f(),u(Ce,{key:0},{default:y(()=>[_(n(t.$t(`createPage.importPrRequiresProject`)),1)]),_:1}))]),_:1},8,[`label`,`disable`])])]),v(S,{name:`slide`},{default:y(()=>[B.value?(f(),g(`div`,_t,[v(ae,{ref_key:`notionFieldRef`,ref:ai,modelValue:z.value,"onUpdate:modelValue":r[3]||=e=>z.value=e,dark:``,outlined:``,dense:``,"stack-label":``,label:t.$t(`createPage.importNotion`),placeholder:t.$t(`createPage.notionPlaceholder`),error:!!z.value.trim()&&!Y.value,"error-message":t.$t(`createPage.notionValidation`),hint:Y.value?t.$t(`createPage.notionAutoExtract`):void 0},{prepend:y(()=>[v(w,{name:`link`,color:Y.value?`green-4`:`kobo-3`},null,8,[`color`])]),_:1},8,[`modelValue`,`label`,`placeholder`,`error`,`error-message`,`hint`]),Y.value&&dr.value?(f(),g(`div`,vt,[h(`div`,yt,[v(w,{name:`info`,color:`primary`,class:`q-mr-xs`}),_(` `+n(t.$t(`createPage.notionPanelChoiceLabel`)),1)]),h(`div`,bt,[h(`div`,xt,[v(ie,{flat:``,bordered:``,class:a([`peek-card full-height cursor-pointer`,{"peek-card--active":fr.value===`panel`}]),onClick:r[4]||=e=>fr.value=`panel`},{default:y(()=>[v(D,{class:`row items-center no-wrap q-gutter-sm q-pa-sm`},{default:y(()=>[v(w,{name:`article`,size:`24px`,class:`peek-card-icon`}),h(`div`,St,[h(`div`,Ct,n(t.$t(`createPage.notionPanelOption`)),1),h(`div`,wt,n(t.$t(`createPage.notionPanelOptionDesc`)),1)]),fr.value===`panel`?(f(),u(w,{key:0,name:`check_circle`,color:`primary`})):m(``,!0)]),_:1})]),_:1},8,[`class`])]),h(`div`,Tt,[v(ie,{flat:``,bordered:``,class:a([`peek-card full-height cursor-pointer`,{"peek-card--active":fr.value===`parent`}]),onClick:r[5]||=e=>fr.value=`parent`},{default:y(()=>[v(D,{class:`row items-center no-wrap q-gutter-sm q-pa-sm`},{default:y(()=>[v(w,{name:`folder_open`,size:`24px`,class:`peek-card-icon`}),h(`div`,Et,[h(`div`,Dt,n(t.$t(`createPage.notionParentOption`)),1),h(`div`,Ot,n(t.$t(`createPage.notionParentOptionDesc`)),1)]),fr.value===`parent`?(f(),u(w,{key:0,name:`check_circle`,color:`primary`})):m(``,!0)]),_:1})]),_:1},8,[`class`])])])])):m(``,!0)])):m(``,!0)]),_:1}),v(S,{name:`slide`},{default:y(()=>[X.value?(f(),g(`div`,kt,[v(ae,{ref_key:`sentryFieldRef`,ref:oi,modelValue:Er.value,"onUpdate:modelValue":r[6]||=e=>Er.value=e,dark:``,outlined:``,dense:``,"stack-label":``,label:t.$t(`createPage.importSentry`),placeholder:t.$t(`createPage.sentryPlaceholder`),error:!!Er.value.trim()&&!Dr.value,"error-message":t.$t(`createPage.sentryValidation`),hint:Dr.value?t.$t(`createPage.sentryAutoExtract`):void 0},{prepend:y(()=>[v(w,{name:`link`,color:Dr.value?`red-4`:`kobo-3`},null,8,[`color`])]),_:1},8,[`modelValue`,`label`,`placeholder`,`error`,`error-message`,`hint`])])):m(``,!0)]),_:1}),vr.value?(f(),g(`div`,At,[h(`div`,jt,[v(ve,{dark:``,dense:``,"expand-separator":``,icon:`checklist`,label:t.$t(`createPage.tasks`,{count:mr.value.length}),class:`manual-expansion rounded-borders`},{default:y(()=>[h(`div`,Mt,[v(ae,{modelValue:gr.value,"onUpdate:modelValue":r[7]||=e=>gr.value=e,dark:``,dense:``,outlined:``,placeholder:t.$t(`createPage.addTask`),onKeydown:l(C(yr,[`prevent`]),[`enter`])},{append:y(()=>[v(T,{flat:``,dense:``,round:``,icon:`add`,color:`primary`,disable:!gr.value.trim(),onClick:yr},{default:y(()=>[v(Ce,null,{default:y(()=>[_(n(t.$t(`tooltip.addTask`)),1)]),_:1})]),_:1},8,[`disable`])]),_:1},8,[`modelValue`,`placeholder`,`onKeydown`]),mr.value.length?(f(),g(`div`,Nt,[(f(!0),g(s,null,ne(mr.value,(e,t)=>(f(),u(Ee,{key:`task-${t}`,dark:``,dense:``,removable:``,color:`kobo-surface-2`,"text-color":`kobo-1`,onRemove:e=>br(t)},{default:y(()=>[_(n(e),1)]),_:2},1032,[`onRemove`]))),128))])):m(``,!0)])]),_:1},8,[`label`])]),h(`div`,Pt,[v(ve,{dark:``,dense:``,"expand-separator":``,icon:`fact_check`,label:t.$t(`createPage.acceptanceCriteria`,{count:hr.value.length}),class:`manual-expansion rounded-borders`},{default:y(()=>[h(`div`,Ft,[v(ae,{modelValue:_r.value,"onUpdate:modelValue":r[8]||=e=>_r.value=e,dark:``,dense:``,outlined:``,placeholder:t.$t(`createPage.addCriterion`),onKeydown:l(C(xr,[`prevent`]),[`enter`])},{append:y(()=>[v(T,{flat:``,dense:``,round:``,icon:`add`,color:`primary`,disable:!_r.value.trim(),onClick:xr},{default:y(()=>[v(Ce,null,{default:y(()=>[_(n(t.$t(`tooltip.addCriterion`)),1)]),_:1})]),_:1},8,[`disable`])]),_:1},8,[`modelValue`,`placeholder`,`onKeydown`]),hr.value.length?(f(),g(`div`,It,[(f(!0),g(s,null,ne(hr.value,(e,t)=>(f(),u(Ee,{key:`criterion-${t}`,dark:``,dense:``,removable:``,color:`kobo-surface-2`,"text-color":`kobo-1`,onRemove:e=>Sr(t)},{default:y(()=>[_(n(e),1)]),_:2},1032,[`onRemove`]))),128))])):m(``,!0)])]),_:1},8,[`label`])])])):m(``,!0)]),_:1})]),_:1}),v(ie,{flat:``,bordered:``,class:`create-section-card`},{default:y(()=>[v(D,{class:`row items-start no-wrap q-gutter-md`},{default:y(()=>[v(oe,{color:`blue-grey-9`,"text-color":`blue-grey-2`,icon:`account_tree`,size:`42px`}),h(`div`,null,[h(`div`,Lt,n(t.$t(`createPage.sectionGit`)),1),h(`div`,Rt,n(t.$t(`createPage.sectionGitHint`)),1)])]),_:1}),v(ce,{dark:``}),v(D,{class:`column q-gutter-y-md`},{default:y(()=>[h(`div`,null,[h(`div`,zt,n(t.$t(`createPage.worktreeMode`)),1),v(De,{"model-value":Q.value?`existing`:`new`,dense:``,spread:``,"no-caps":``,unelevated:``,"toggle-color":`primary`,color:`kobo-surface-2`,"text-color":`kobo-2`,disable:Fr.value,options:[{label:t.$t(`createPage.worktreeNew`),value:`new`,icon:`add_box`},{label:t.$t(`createPage.worktreeExisting`),value:`existing`,icon:`folder_open`}],"onUpdate:modelValue":Kr},null,8,[`model-value`,`disable`,`options`]),Fr.value?(f(),g(`div`,Bt,[h(`div`,Vt,[v(w,{name:`lock`,size:`14px`,class:`q-mr-xs`}),_(` `+n(t.$t(`createPage.lockedToPr`,{number:Ir.value})),1)]),v(T,{flat:``,dense:``,"no-caps":``,size:`sm`,color:`primary`,icon:`lock_open`,label:t.$t(`createPage.unlockPrCheckout`),onClick:Hr},null,8,[`label`])])):m(``,!0)]),h(`div`,Ht,[h(`div`,Ut,[v(P,{ref_key:`projectFieldRef`,ref:si,modelValue:W.value,"onUpdate:modelValue":r[9]||=e=>W.value=e,options:Se.value,dark:``,dense:``,outlined:``,"stack-label":``,error:ni.value===`projectPath`,"error-message":ri.value,"use-input":``,"fill-input":``,"hide-selected":``,"input-debounce":`0`,"new-value-mode":`add`,label:t.$t(`createPage.projectLabel`),placeholder:t.$t(`createPage.projectPath`),behavior:e(A).projectPaths.length>0?`menu`:`dialog`,"option-label":t=>t?e(ke)(t):``,disable:Fr.value,onFilter:Xr,onInputValue:Zr},{prepend:y(()=>[v(w,{name:`folder`})]),option:y(({opt:t,itemProps:r})=>[v(M,i(x(r)),{default:y(()=>[v(N,null,{default:y(()=>[v(I,null,{default:y(()=>[_(n(e(ke)(t)),1)]),_:2},1024),v(I,{caption:``},{default:y(()=>[_(n(t),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),"no-option":y(()=>[v(M,null,{default:y(()=>[v(N,{class:`text-kobo-3`},{default:y(()=>[_(n(t.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`error`,`error-message`,`label`,`placeholder`,`behavior`,`option-label`,`disable`])]),h(`div`,Wt,[v(P,{ref_key:`branchFieldRef`,ref:ci,modelValue:G.value,"onUpdate:modelValue":r[10]||=e=>G.value=e,options:Mn.value,dark:``,dense:``,outlined:``,"stack-label":``,error:ni.value===`branch`,"error-message":ri.value,"use-input":``,"input-debounce":`0`,label:t.$t(`createPage.sourceBranch`),loading:Nn.value,disable:!W.value.trim()||Nn.value||Fr.value,onFilter:Rn},{prepend:y(()=>[v(w,{name:`call_split`})]),"no-option":y(()=>[v(M,null,{default:y(()=>[v(N,{class:`text-kobo-3`},{default:y(()=>[_(n(W.value.trim()?t.$t(`createPage.noBranches`):t.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`error`,`error-message`,`label`,`loading`,`disable`])])]),Q.value?m(``,!0):(f(),g(`div`,Gt,[h(`div`,Kt,[v(P,{modelValue:Ke.value,"onUpdate:modelValue":r[11]||=e=>Ke.value=e,options:Tn.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,label:t.$t(`createPage.branchType`)},{prepend:y(()=>[v(w,{name:`account_tree`})]),_:1},8,[`modelValue`,`options`,`label`])]),h(`div`,qt,[v(F,{dark:``,dense:``,outlined:``,"stack-label":``,readonly:``,label:t.$t(`createPage.workingBranchPreview`)},{control:y(()=>[h(`div`,Jt,n(ti.value),1)]),prepend:y(()=>[v(w,{name:`fork_right`})]),_:1},8,[`label`])])])),Q.value&&Fr.value?(f(),u(F,{key:1,dark:``,dense:``,outlined:``,"stack-label":``,readonly:``,label:t.$t(`createPage.worktreePickerLabel`)},{control:y(()=>[h(`div`,Yt,n($.value),1)]),prepend:y(()=>[v(w,{name:`folder_open`,color:`cyan-5`})]),_:1},8,[`label`])):Q.value?(f(),u(P,{key:2,modelValue:$.value,"onUpdate:modelValue":r[12]||=e=>$.value=e,options:kr.value,dark:``,dense:``,outlined:``,"stack-label":``,"option-label":`branch`,"option-value":`path`,"emit-value":``,"map-options":``,"use-input":``,label:t.$t(`createPage.worktreePickerLabel`),loading:Ar.value,disable:!W.value.trim()||Ar.value},{prepend:y(()=>[v(w,{name:`folder_open`,color:`cyan-5`})]),option:y(e=>[v(M,i(x(e.itemProps)),{default:y(()=>[v(N,null,{default:y(()=>[v(I,null,{default:y(()=>[_(n(e.opt.branch),1)]),_:2},1024),v(I,{caption:``},{default:y(()=>[_(n(e.opt.path),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),"no-option":y(()=>[v(M,null,{default:y(()=>[v(N,{class:`text-kobo-3`},{default:y(()=>[_(n(W.value.trim()?t.$t(`createPage.noOrphanWorktrees`):t.$t(`createPage.enterPath`)),1)]),_:1})]),_:1})]),_:1},8,[`modelValue`,`options`,`label`,`loading`,`disable`])):m(``,!0)]),_:1})]),_:1}),v(ie,{flat:``,bordered:``,class:`create-section-card`},{default:y(()=>[v(D,{class:`row items-start no-wrap q-gutter-md`},{default:y(()=>[v(oe,{color:`primary`,"text-color":`white`,icon:`smart_toy`,size:`42px`}),h(`div`,Xt,[h(`div`,Zt,n(t.$t(`createPage.sectionAgent`)),1),h(`div`,Qt,n(t.$t(`createPage.sectionAgentHint`)),1)]),v(ue,{"model-value":Z.value,dense:``,color:`amber-6`,icon:`autorenew`,label:t.$t(`autoLoop.toggle`),"left-label":``,"onUpdate:modelValue":Tr},null,8,[`model-value`,`label`])]),_:1}),v(ce,{dark:``}),v(ve,{dark:``,dense:``,"expand-separator":``,icon:`tune`,label:t.$t(`createPage.configureAgent`),"header-class":`agent-config-header`},{header:y(()=>[v(N,{avatar:``},{default:y(()=>[v(w,{name:`tune`,color:`primary`})]),_:1}),v(N,null,{default:y(()=>[v(I,null,{default:y(()=>[_(n(t.$t(`createPage.configureAgent`)),1)]),_:1}),v(I,{caption:``,class:`agent-summary row q-gutter-x-xs q-mt-xs`},{default:y(()=>[v(Ee,{dense:``,color:`kobo-surface-2`,"text-color":`kobo-1`,icon:`hub`},{default:y(()=>[_(n(Xe.value?.displayName??K.value),1)]),_:1}),v(Ee,{dense:``,color:`kobo-surface-2`,"text-color":`kobo-1`},{default:y(()=>[_(n(ir.value.find(e=>e.value===V.value)?.label??V.value),1)]),_:1}),v(Ee,{dense:``,color:`kobo-surface-2`,"text-color":`kobo-1`,icon:`psychology`},{default:y(()=>[_(n(ur.value.find(e=>e.value===U.value)?.label??U.value),1)]),_:1}),v(Ee,{dense:``,color:`kobo-surface-2`,"text-color":`kobo-1`,icon:kn.value},{default:y(()=>[_(n(An.value.find(e=>e.value===Ur.value.agentPermissionMode)?.label??Ur.value.agentPermissionMode),1)]),_:1},8,[`icon`])]),_:1})]),_:1})]),default:y(()=>[v(D,{class:`responsive-fields row q-col-gutter-x-md q-pt-md`},{default:y(()=>[Cn.value.length>1?(f(),g(`div`,$t,[v(ue,{modelValue:q.value,"onUpdate:modelValue":r[13]||=e=>q.value=e,label:t.$t(`createPage.compareEngines`),dark:``,dense:``,color:`primary`,class:`text-kobo-2 text-caption`},null,8,[`modelValue`,`label`]),q.value?(f(),g(`div`,en,n(t.$t(`createPage.compareEnginesHint`)),1)):m(``,!0)])):m(``,!0),q.value?(f(),g(`div`,tn,n(t.$t(`createPage.engineA`)),1)):m(``,!0),Cn.value.length>0?(f(),g(`div`,nn,[v(P,{modelValue:K.value,"onUpdate:modelValue":r[14]||=e=>K.value=e,options:Cn.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,label:t.$t(`engine.select`)},null,8,[`modelValue`,`options`,`label`])])):m(``,!0),h(`div`,rn,[v(P,{modelValue:V.value,"onUpdate:modelValue":r[15]||=e=>V.value=e,options:ir.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,label:t.$t(`engine.model`)},{option:y(({opt:e,itemProps:t})=>[v(M,i(x(t)),{default:y(()=>[v(N,null,{default:y(()=>[v(I,null,{default:y(()=>[_(n(e.label),1)]),_:2},1024),v(I,{caption:``},{default:y(()=>[_(n(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`,`options`,`label`])]),h(`div`,an,[v(P,{modelValue:U.value,"onUpdate:modelValue":r[16]||=e=>U.value=e,options:ur.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,label:t.$t(`engine.effort`)},{option:y(({opt:e,itemProps:t})=>[v(M,i(x(t)),{default:y(()=>[v(N,null,{default:y(()=>[v(I,null,{default:y(()=>[_(n(e.label),1)]),_:2},1024),v(I,{caption:``},{default:y(()=>[_(n(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`,`options`,`label`])]),h(`div`,on,[v(P,{"model-value":Ur.value.agentPermissionMode,options:An.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,"option-disable":o,disable:Z.value,label:t.$t(`agentPermissionMode.label`),hint:Z.value?t.$t(`agentPermissionMode.autoLoopLocked`):void 0,"onUpdate:modelValue":r[17]||=e=>On.value=e},null,8,[`model-value`,`options`,`disable`,`label`,`hint`])]),q.value?(f(),g(s,{key:3},[h(`div`,sn,n(t.$t(`createPage.engineB`)),1),h(`div`,cn,[v(P,{modelValue:J.value,"onUpdate:modelValue":r[18]||=e=>J.value=e,options:wn.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,label:t.$t(`engine.select`)},null,8,[`modelValue`,`options`,`label`])]),h(`div`,ln,[v(P,{modelValue:$e.value,"onUpdate:modelValue":r[19]||=e=>$e.value=e,options:ar.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,label:t.$t(`engine.model`)},{option:y(({opt:e,itemProps:t})=>[v(M,i(x(t)),{default:y(()=>[v(N,null,{default:y(()=>[v(I,null,{default:y(()=>[_(n(e.label),1)]),_:2},1024),v(I,{caption:``},{default:y(()=>[_(n(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`,`options`,`label`])]),h(`div`,un,[v(P,{modelValue:et.value,"onUpdate:modelValue":r[20]||=e=>et.value=e,options:or.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,label:t.$t(`engine.effort`)},{option:y(({opt:e,itemProps:t})=>[v(M,i(x(t)),{default:y(()=>[v(N,null,{default:y(()=>[v(I,null,{default:y(()=>[_(n(e.label),1)]),_:2},1024),v(I,{caption:``},{default:y(()=>[_(n(e.description),1)]),_:2},1024)]),_:2},1024)]),_:2},1040)]),_:1},8,[`modelValue`,`options`,`label`])]),h(`div`,dn,[v(P,{"model-value":cr.value.agentPermissionMode,options:sr.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,"option-disable":o,disable:Z.value,label:t.$t(`agentPermissionMode.label`),hint:Z.value?t.$t(`agentPermissionMode.autoLoopLocked`):void 0,"onUpdate:modelValue":r[21]||=e=>Sn.value=e},null,8,[`model-value`,`options`,`disable`,`label`,`hint`])])],64)):m(``,!0)]),_:1})]),_:1},8,[`label`]),v(S,{name:`slide`},{default:y(()=>[Z.value?(f(),u(D,{key:0,class:`auto-loop-panel column`},{default:y(()=>[h(`div`,fn,n(t.$t(`autoLoop.startInMode`)),1),v(De,{modelValue:wr.value,"onUpdate:modelValue":r[22]||=e=>wr.value=e,dense:``,size:`sm`,spread:``,"no-caps":``,unelevated:``,class:`auto-loop-session-toggle`,"toggle-color":`primary`,color:`kobo-surface-2`,"text-color":`kobo-2`,options:[{label:t.$t(`autoLoop.sessionMode.perTask`),value:`per_task`,icon:`restart_alt`},{label:t.$t(`autoLoop.sessionMode.continuous`),value:`continuous`,icon:`link`}]},null,8,[`modelValue`,`options`]),q.value?(f(),g(`div`,pn,n(t.$t(`createPage.compareBrainstormLocked`)),1)):m(``,!0),h(`div`,mn,[h(`div`,hn,[v(P,{modelValue:H.value,"onUpdate:modelValue":r[23]||=e=>H.value=e,options:ir.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,disable:q.value,label:t.$t(`autoLoop.brainstormModelPrefix`)},null,8,[`modelValue`,`options`,`disable`,`label`])]),h(`div`,gn,[v(P,{modelValue:Ue.value,"onUpdate:modelValue":r[24]||=e=>Ue.value=e,options:ur.value,dark:``,dense:``,outlined:``,"stack-label":``,"emit-value":``,"map-options":``,"option-value":`value`,"option-label":`label`,disable:q.value,label:t.$t(`autoLoop.brainstormReasoningPrefix`)},null,8,[`modelValue`,`options`,`disable`,`label`])])])]),_:1})):m(``,!0)]),_:1})]),_:1}),v(ve,{dark:``,dense:``,"expand-separator":``,icon:`settings`,label:t.$t(`createPage.advancedOptions`),class:`advanced-options rounded-borders`},{default:y(()=>[v(D,null,{default:y(()=>[v(ue,{modelValue:qe.value,"onUpdate:modelValue":r[25]||=e=>qe.value=e,dense:``,color:`orange-5`,icon:`play_disabled`,label:t.$t(`createPage.skipSetupScript`),disable:Q.value},null,8,[`modelValue`,`label`,`disable`])]),_:1})]),_:1},8,[`label`]),v(ie,{flat:``,bordered:``,class:`create-actions-card`},{default:y(()=>[v(D,{class:`row items-center justify-between q-gutter-md`},{default:y(()=>[h(`div`,_n,n(B.value?t.$t(`createPage.notionExtractHint`):t.$t(`createPage.keyboardHint`)),1),h(`div`,vn,[v(T,{flat:``,dense:``,"no-caps":``,color:`kobo-2`,label:t.$t(`common.cancel`),onClick:r[26]||=t=>e(te).back()},null,8,[`label`]),v(T,{unelevated:``,dense:``,"no-caps":``,color:`primary`,"icon-right":`arrow_forward`,label:t.$t(`createPage.createWorkspace`),loading:Pn.value,disable:Pn.value||Q.value&&!$.value,onClick:fi},null,8,[`label`,`loading`,`disable`])])]),_:1}),Pn.value&&In.value?(f(),u(D,{key:0,class:`create-page__progress text-caption q-pt-none`},{default:y(()=>[v(ge,{size:`18px`}),h(`span`,yn,n(In.value),1),Ln.value?(f(),g(`span`,bn,n(Ln.value),1)):m(``,!0)]),_:1})):m(``,!0)]),_:1})])]),v(Ze,{modelValue:Mr.value,"onUpdate:modelValue":r[27]||=e=>Mr.value=e,"project-path":W.value,onSelect:zr},null,8,[`modelValue`,`project-path`]),Pr.value?(f(),u(We,{key:0,modelValue:Nr.value,"onUpdate:modelValue":r[28]||=e=>Nr.value=e,"project-path":W.value,pr:Pr.value,onResolved:Vr,onOpenWorkspace:Br},null,8,[`modelValue`,`project-path`,`pr`])):m(``,!0)]),_:1}))}}),[[`__scopeId`,`data-v-143438a3`]]);export{Sn as default};
@@ -1 +1 @@
1
- import{B as e,C as t,wt as n,yt as r}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as i,A as a,B as ee,H as o,Mt as te,Rt as s,U as ne,V as c,W as l,Wt as u,X as d,Z as f,_n as p,w as m}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as h}from"./vue-i18n-DtajJy_8.js";import{l as g}from"./QBtn-B7WFdfmy.js";import{r as re}from"./pinia-ClsyLh3i.js";import{Jt as _,Kt as ie,n as ae,p as v}from"./index-Ck1_qrff.js";import{t as y}from"./QMarkupTable-DcoQpjPu.js";import{n as b}from"./use-quasar-B4eIgSfZ.js";import{t as x}from"./QSpace-D3PNLwa4.js";import{n as S,t as C}from"./WorkspaceAttentionLabels-DZrbJ0vD.js";import{t as w}from"./QBanner-CDiXUya7.js";import{t as T}from"./formatters-CQ90Icr4.js";import{t as E}from"./QPage-RpDxx5ah.js";var D={class:`row items-center q-mb-md`},O={class:`text-h6`},k={class:`text-caption text-kobo-3`},A={class:`text-left`},j={class:`text-left`},M={class:`text-left`},N={class:`text-left`},P={class:`text-right`},F={class:`text-right`},I=[`onClick`],L={class:`row items-center no-wrap`},R={class:`ellipsis`},z={class:`text-caption text-kobo-3 ellipsis`},B={key:0,class:`text-kobo-3`},V=[`href`],H={key:1,class:`text-kobo-3`},U={class:`text-right`},W={key:0,class:`kobo-dashboard-diff`},G={class:`text-kobo-success`},K={class:`text-kobo-danger q-ml-xs`},q={key:1,class:`text-kobo-3`},J={class:`text-right text-kobo-3`},oe={class:`text-subtitle2`},se={class:`text-caption text-kobo-3`},ce={class:`text-left`},le={class:`text-left`},ue={class:`text-right`},de={class:`text-right`},fe={class:`text-right`},pe={class:`text-right`},me={class:`text-right`},he={class:`text-right`},ge={class:`text-right`},_e={class:`kobo-dashboard-diff`},ve={class:`text-right`},ye={class:`text-right`},be={class:`text-right`},xe={class:`text-right`},Se={class:`text-right text-kobo-3`},Ce={class:`text-right kobo-dashboard-diff`},Y=b(i({__name:`DashboardPage`,setup(i){let b=ae(),Y=v(),{workspaces:we,prSnapshots:Te,gitStatsCache:Ee}=re(Y),{timeAgo:De}=T(),{t:X}=h(),Oe={created:`workspaceStatus.created`,extracting:`workspaceStatus.extracting`,brainstorming:`workspaceStatus.brainstorming`,executing:`workspaceStatus.executing`,"awaiting-user":`workspaceStatus.awaitingUser`,completed:`workspaceStatus.completed`,idle:`workspaceStatus.idle`,error:`workspaceStatus.error`,quota:`workspaceStatus.quota`};function ke(e){let t=Oe[e];return t?X(t):e}let Z=ee(()=>we.value.filter(e=>!e.archivedAt).map(e=>({workspace:e,stats:Ee.value[e.id],reasons:S(e,Te.value[e.id])})).sort((e,t)=>e.reasons.length===t.reasons.length?t.workspace.updatedAt.localeCompare(e.workspace.updatedAt):t.reasons.length-e.reasons.length));function Ae(e){return e===`error`||e===`quota`?`kobo-danger`:e===`executing`||e===`brainstorming`||e===`extracting`?`kobo-2`:e===`awaiting-user`?`kobo-warning`:`kobo-3`}function je(e){b.push({name:`workspace`,params:{id:e}})}let Q=t([]),$=t(!1);function Me(e){return e.total<5?`kobo-3`:e.completedRatio>=.8?`kobo-success`:e.completedRatio>=.5?`kobo-warning`:`kobo-danger`}function Ne(e){return`${Math.round(e.completedRatio*100)}%`}function Pe(e){if(e===null)return`-`;let t=Math.round(e/1e3);if(t<60)return X(`reliability.durationSeconds`,{s:t});let n=Math.floor(t/60);return n<60?X(`reliability.durationMinutes`,{m:n,s:t%60}):X(`reliability.durationHours`,{h:Math.floor(n/60),m:n%60})}async function Fe(){try{let e=await fetch(`/api/usage/reliability`);if(!e.ok){$.value=!0;return}let t=await e.json();Q.value=t.engines??[],$.value=!1}catch{$.value=!0}}return te(()=>{Y.fetchWorkspacesInfo(),Fe()}),(t,i)=>(s(),o(E,{class:`q-pa-md`},{default:p(()=>[c(`div`,D,[c(`div`,O,n(t.$t(`dashboard.title`)),1),f(x),c(`div`,k,n(t.$t(`dashboard.count`,{n:Z.value.length},Z.value.length)),1)]),Z.value.length===0?(s(),o(w,{key:0,dense:``,class:`kobo-dashboard-empty`},{default:p(()=>[d(n(t.$t(`dashboard.empty`)),1)]),_:1})):(s(),o(y,{key:1,flat:``,dense:``,dark:``,class:`kobo-dashboard-table`},{default:p(()=>[c(`thead`,null,[c(`tr`,null,[c(`th`,A,n(t.$t(`dashboard.workspace`)),1),c(`th`,j,n(t.$t(`dashboard.status`)),1),c(`th`,M,n(t.$t(`dashboard.attention`)),1),c(`th`,N,n(t.$t(`dashboard.pr`)),1),c(`th`,P,n(t.$t(`dashboard.diff`)),1),c(`th`,F,n(t.$t(`dashboard.activity`)),1)])]),c(`tbody`,null,[(s(!0),l(a,null,u(Z.value,a=>(s(),l(`tr`,{key:a.workspace.id,class:`kobo-dashboard-row`,onClick:e=>je(a.workspace.id)},[c(`td`,null,[c(`div`,L,[a.workspace.favoritedAt?(s(),o(g,{key:0,name:`star`,size:`xs`,class:`q-mr-xs text-kobo-2`})):ne(``,!0),c(`span`,R,n(a.workspace.name),1)]),c(`div`,z,n(a.workspace.workingBranch),1)]),c(`td`,null,[c(`span`,{class:r(`text-${Ae(a.workspace.status)}`)},n(ke(a.workspace.status)),3)]),c(`td`,null,[a.reasons.length===0?(s(),l(`span`,B,`-`)):(s(),o(C,{key:1,workspace:a.workspace},null,8,[`workspace`]))]),c(`td`,null,[a.stats?.prUrl?(s(),l(`a`,{key:0,href:a.stats.prUrl,target:`_blank`,rel:`noopener`,class:`kobo-dashboard-link`,onClick:i[0]||=m(()=>{},[`stop`])},n(a.stats.prState??t.$t(`dashboard.prOpen`)),9,V)):(s(),l(`span`,H,`-`))]),c(`td`,U,[a.stats?(s(),l(`span`,W,[c(`span`,G,`+`+n(a.stats.insertions),1),c(`span`,K,`-`+n(a.stats.deletions),1)])):(s(),l(`span`,q,`-`))]),c(`td`,J,n(e(De)(a.workspace.updatedAt)),1)],8,I))),128))])]),_:1})),f(ie,{dark:``,flat:``,bordered:``,class:`q-mt-lg`},{default:p(()=>[f(_,null,{default:p(()=>[c(`div`,oe,n(t.$t(`reliability.title`)),1),c(`div`,se,n(t.$t(`reliability.subtitle`)),1)]),_:1}),$.value?(s(),o(_,{key:0,class:`q-pt-none text-caption text-kobo-warning`},{default:p(()=>[d(n(t.$t(`reliability.loadFailed`)),1)]),_:1})):Q.value.length===0?(s(),o(_,{key:1,class:`q-pt-none text-caption text-kobo-3`},{default:p(()=>[d(n(t.$t(`reliability.empty`)),1)]),_:1})):(s(),o(y,{key:2,flat:``,dense:``,dark:``},{default:p(()=>[c(`thead`,null,[c(`tr`,null,[c(`th`,ce,n(t.$t(`reliability.engine`)),1),c(`th`,le,n(t.$t(`reliability.model`)),1),c(`th`,ue,n(t.$t(`reliability.sessions`)),1),c(`th`,de,n(t.$t(`reliability.completed`)),1),c(`th`,fe,n(t.$t(`reliability.watchdog`)),1),c(`th`,pe,n(t.$t(`reliability.killed`)),1),c(`th`,me,n(t.$t(`reliability.errors`)),1),c(`th`,he,n(t.$t(`reliability.unknown`)),1),c(`th`,ge,n(t.$t(`reliability.median`)),1)])]),c(`tbody`,null,[(s(!0),l(a,null,u(Q.value,e=>(s(),l(`tr`,{key:`${e.engine}/${e.model}`},[c(`td`,null,n(e.engine===`unknown`?t.$t(`reliability.unknown`):e.engine),1),c(`td`,_e,n(e.model===`unknown`?t.$t(`reliability.unknown`):e.model),1),c(`td`,ve,n(e.total),1),c(`td`,{class:r([`text-right`,`text-${Me(e)}`])},n(Ne(e)),3),c(`td`,ye,n(e.watchdog),1),c(`td`,be,n(e.killed),1),c(`td`,xe,n(e.error),1),c(`td`,Se,n(e.unknown),1),c(`td`,Ce,n(Pe(e.medianDurationMs)),1)]))),128))])]),_:1}))]),_:1})]),_:1}))}}),[[`__scopeId`,`data-v-68de1655`]]);export{Y as default};
1
+ import{B as e,C as t,wt as n,yt as r}from"./reactivity.esm-bundler-DtSZKRQB.js";import{$ as i,A as a,B as ee,H as o,Mt as te,Rt as s,U as ne,V as c,W as l,Wt as u,X as d,Z as f,_n as p,w as m}from"./runtime-dom.esm-bundler-DgevF6KV.js";import{n as h}from"./vue-i18n-DtajJy_8.js";import{l as g}from"./QBtn-B7WFdfmy.js";import{r as re}from"./pinia-ClsyLh3i.js";import{Jt as _,Kt as ie,n as ae,p as v}from"./index-BgV6UXly.js";import{t as y}from"./QMarkupTable-DcoQpjPu.js";import{n as b}from"./use-quasar-B2sgdABh.js";import{t as x}from"./QSpace-D3PNLwa4.js";import{n as S,t as C}from"./WorkspaceAttentionLabels-NqQsltOl.js";import{t as w}from"./QBanner-CDiXUya7.js";import{t as T}from"./formatters-CQ90Icr4.js";import{t as E}from"./QPage-RpDxx5ah.js";var D={class:`row items-center q-mb-md`},O={class:`text-h6`},k={class:`text-caption text-kobo-3`},A={class:`text-left`},j={class:`text-left`},M={class:`text-left`},N={class:`text-left`},P={class:`text-right`},F={class:`text-right`},I=[`onClick`],L={class:`row items-center no-wrap`},R={class:`ellipsis`},z={class:`text-caption text-kobo-3 ellipsis`},B={key:0,class:`text-kobo-3`},V=[`href`],H={key:1,class:`text-kobo-3`},U={class:`text-right`},W={key:0,class:`kobo-dashboard-diff`},G={class:`text-kobo-success`},K={class:`text-kobo-danger q-ml-xs`},q={key:1,class:`text-kobo-3`},J={class:`text-right text-kobo-3`},oe={class:`text-subtitle2`},se={class:`text-caption text-kobo-3`},ce={class:`text-left`},le={class:`text-left`},ue={class:`text-right`},de={class:`text-right`},fe={class:`text-right`},pe={class:`text-right`},me={class:`text-right`},he={class:`text-right`},ge={class:`text-right`},_e={class:`kobo-dashboard-diff`},ve={class:`text-right`},ye={class:`text-right`},be={class:`text-right`},xe={class:`text-right`},Se={class:`text-right text-kobo-3`},Ce={class:`text-right kobo-dashboard-diff`},Y=b(i({__name:`DashboardPage`,setup(i){let b=ae(),Y=v(),{workspaces:we,prSnapshots:Te,gitStatsCache:Ee}=re(Y),{timeAgo:De}=T(),{t:X}=h(),Oe={created:`workspaceStatus.created`,extracting:`workspaceStatus.extracting`,brainstorming:`workspaceStatus.brainstorming`,executing:`workspaceStatus.executing`,"awaiting-user":`workspaceStatus.awaitingUser`,completed:`workspaceStatus.completed`,idle:`workspaceStatus.idle`,error:`workspaceStatus.error`,quota:`workspaceStatus.quota`};function ke(e){let t=Oe[e];return t?X(t):e}let Z=ee(()=>we.value.filter(e=>!e.archivedAt).map(e=>({workspace:e,stats:Ee.value[e.id],reasons:S(e,Te.value[e.id])})).sort((e,t)=>e.reasons.length===t.reasons.length?t.workspace.updatedAt.localeCompare(e.workspace.updatedAt):t.reasons.length-e.reasons.length));function Ae(e){return e===`error`||e===`quota`?`kobo-danger`:e===`executing`||e===`brainstorming`||e===`extracting`?`kobo-2`:e===`awaiting-user`?`kobo-warning`:`kobo-3`}function je(e){b.push({name:`workspace`,params:{id:e}})}let Q=t([]),$=t(!1);function Me(e){return e.total<5?`kobo-3`:e.completedRatio>=.8?`kobo-success`:e.completedRatio>=.5?`kobo-warning`:`kobo-danger`}function Ne(e){return`${Math.round(e.completedRatio*100)}%`}function Pe(e){if(e===null)return`-`;let t=Math.round(e/1e3);if(t<60)return X(`reliability.durationSeconds`,{s:t});let n=Math.floor(t/60);return n<60?X(`reliability.durationMinutes`,{m:n,s:t%60}):X(`reliability.durationHours`,{h:Math.floor(n/60),m:n%60})}async function Fe(){try{let e=await fetch(`/api/usage/reliability`);if(!e.ok){$.value=!0;return}let t=await e.json();Q.value=t.engines??[],$.value=!1}catch{$.value=!0}}return te(()=>{Y.fetchWorkspacesInfo(),Fe()}),(t,i)=>(s(),o(E,{class:`q-pa-md`},{default:p(()=>[c(`div`,D,[c(`div`,O,n(t.$t(`dashboard.title`)),1),f(x),c(`div`,k,n(t.$t(`dashboard.count`,{n:Z.value.length},Z.value.length)),1)]),Z.value.length===0?(s(),o(w,{key:0,dense:``,class:`kobo-dashboard-empty`},{default:p(()=>[d(n(t.$t(`dashboard.empty`)),1)]),_:1})):(s(),o(y,{key:1,flat:``,dense:``,dark:``,class:`kobo-dashboard-table`},{default:p(()=>[c(`thead`,null,[c(`tr`,null,[c(`th`,A,n(t.$t(`dashboard.workspace`)),1),c(`th`,j,n(t.$t(`dashboard.status`)),1),c(`th`,M,n(t.$t(`dashboard.attention`)),1),c(`th`,N,n(t.$t(`dashboard.pr`)),1),c(`th`,P,n(t.$t(`dashboard.diff`)),1),c(`th`,F,n(t.$t(`dashboard.activity`)),1)])]),c(`tbody`,null,[(s(!0),l(a,null,u(Z.value,a=>(s(),l(`tr`,{key:a.workspace.id,class:`kobo-dashboard-row`,onClick:e=>je(a.workspace.id)},[c(`td`,null,[c(`div`,L,[a.workspace.favoritedAt?(s(),o(g,{key:0,name:`star`,size:`xs`,class:`q-mr-xs text-kobo-2`})):ne(``,!0),c(`span`,R,n(a.workspace.name),1)]),c(`div`,z,n(a.workspace.workingBranch),1)]),c(`td`,null,[c(`span`,{class:r(`text-${Ae(a.workspace.status)}`)},n(ke(a.workspace.status)),3)]),c(`td`,null,[a.reasons.length===0?(s(),l(`span`,B,`-`)):(s(),o(C,{key:1,workspace:a.workspace},null,8,[`workspace`]))]),c(`td`,null,[a.stats?.prUrl?(s(),l(`a`,{key:0,href:a.stats.prUrl,target:`_blank`,rel:`noopener`,class:`kobo-dashboard-link`,onClick:i[0]||=m(()=>{},[`stop`])},n(a.stats.prState??t.$t(`dashboard.prOpen`)),9,V)):(s(),l(`span`,H,`-`))]),c(`td`,U,[a.stats?(s(),l(`span`,W,[c(`span`,G,`+`+n(a.stats.insertions),1),c(`span`,K,`-`+n(a.stats.deletions),1)])):(s(),l(`span`,q,`-`))]),c(`td`,J,n(e(De)(a.workspace.updatedAt)),1)],8,I))),128))])]),_:1})),f(ie,{dark:``,flat:``,bordered:``,class:`q-mt-lg`},{default:p(()=>[f(_,null,{default:p(()=>[c(`div`,oe,n(t.$t(`reliability.title`)),1),c(`div`,se,n(t.$t(`reliability.subtitle`)),1)]),_:1}),$.value?(s(),o(_,{key:0,class:`q-pt-none text-caption text-kobo-warning`},{default:p(()=>[d(n(t.$t(`reliability.loadFailed`)),1)]),_:1})):Q.value.length===0?(s(),o(_,{key:1,class:`q-pt-none text-caption text-kobo-3`},{default:p(()=>[d(n(t.$t(`reliability.empty`)),1)]),_:1})):(s(),o(y,{key:2,flat:``,dense:``,dark:``},{default:p(()=>[c(`thead`,null,[c(`tr`,null,[c(`th`,ce,n(t.$t(`reliability.engine`)),1),c(`th`,le,n(t.$t(`reliability.model`)),1),c(`th`,ue,n(t.$t(`reliability.sessions`)),1),c(`th`,de,n(t.$t(`reliability.completed`)),1),c(`th`,fe,n(t.$t(`reliability.watchdog`)),1),c(`th`,pe,n(t.$t(`reliability.killed`)),1),c(`th`,me,n(t.$t(`reliability.errors`)),1),c(`th`,he,n(t.$t(`reliability.unknown`)),1),c(`th`,ge,n(t.$t(`reliability.median`)),1)])]),c(`tbody`,null,[(s(!0),l(a,null,u(Q.value,e=>(s(),l(`tr`,{key:`${e.engine}/${e.model}`},[c(`td`,null,n(e.engine===`unknown`?t.$t(`reliability.unknown`):e.engine),1),c(`td`,_e,n(e.model===`unknown`?t.$t(`reliability.unknown`):e.model),1),c(`td`,ve,n(e.total),1),c(`td`,{class:r([`text-right`,`text-${Me(e)}`])},n(Ne(e)),3),c(`td`,ye,n(e.watchdog),1),c(`td`,be,n(e.killed),1),c(`td`,xe,n(e.error),1),c(`td`,Se,n(e.unknown),1),c(`td`,Ce,n(Pe(e.medianDurationMs)),1)]))),128))])]),_:1}))]),_:1})]),_:1}))}}),[[`__scopeId`,`data-v-68de1655`]]);export{Y as default};