@loicngr/kobo 2.1.21 → 2.1.23

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 (93) hide show
  1. package/AGENTS.md +69 -4
  2. package/CHANGELOG.md +9 -0
  3. package/CONFIGURATION.md +112 -2
  4. package/dist/mcp-server/kobo-tasks-server.js +4 -4
  5. package/dist/server/index.js +21 -6
  6. package/dist/server/services/agent/engines/claude-code/engine.js +5 -2
  7. package/dist/server/services/agent/engines/codex/engine.js +3 -0
  8. package/dist/server/services/agent/orchestrator.js +2 -0
  9. package/dist/server/services/agent/turn-liveness.js +1 -1
  10. package/dist/server/services/dev-server-service.js +41 -13
  11. package/dist/server/services/lifecycle-hook-service.js +29 -2
  12. package/dist/server/services/settings-service.js +66 -0
  13. package/dist/server/utils/script-runner.js +3 -1
  14. package/dist/shared/launch-instructions.js +8 -4
  15. package/dist/shared/memory-tools.js +2 -2
  16. package/docker-compose.vps.yml +1 -1
  17. package/docs/deployment-vps.md +36 -10
  18. package/docs/getting-started.md +11 -0
  19. package/package.json +1 -1
  20. package/scripts/kobo-update +25 -13
  21. package/src/client/dist/pwa/assets/ActivityFeed-1OKX_g3B.js +2 -0
  22. package/src/client/dist/pwa/assets/{ActivityFeed-DdJvMzRI.css → ActivityFeed-CmAFv-2c.css} +1 -1
  23. package/src/client/dist/pwa/assets/{AutoLoopFinalReviewSettings-f4VDR5dd.js → AutoLoopFinalReviewSettings-VoA9uBw0.js} +1 -1
  24. package/src/client/dist/pwa/assets/{ChangelogPage-dEWpjTlp.js → ChangelogPage-DHl3hD3t.js} +1 -1
  25. package/src/client/dist/pwa/assets/{ComparisonPanel-Bwbqgvr4.js → ComparisonPanel-D6EKTtni.js} +1 -1
  26. package/src/client/dist/pwa/assets/{CreatePage-CCCCAhrx.js → CreatePage-CZzEOVVq.js} +1 -1
  27. package/src/client/dist/pwa/assets/{DashboardPage-3byhBITf.js → DashboardPage-DjLoUvjA.js} +1 -1
  28. package/src/client/dist/pwa/assets/{DiffViewer-Bj_NTfCF.js → DiffViewer-BQ6OEmoi.js} +3 -3
  29. package/src/client/dist/pwa/assets/{DocumentsPanel-xyLDV3T1.js → DocumentsPanel-yrQviqCd.js} +1 -1
  30. package/src/client/dist/pwa/assets/{DrawerToggleButton-pwBSstQP.js → DrawerToggleButton-D5qNeXnn.js} +1 -1
  31. package/src/client/dist/pwa/assets/{GitPanel-DvIdrkVw.js → GitPanel-DCXlhcAD.js} +3 -3
  32. package/src/client/dist/pwa/assets/{HealthPage-BSwhZQRo.js → HealthPage-COicuNQn.js} +1 -1
  33. package/src/client/dist/pwa/assets/{MainLayout-DZJ9BvZw.js → MainLayout-ZcExZTqC.js} +2 -2
  34. package/src/client/dist/pwa/assets/{MemoryPanel-ChR032zP.js → MemoryPanel-D73Qz9f7.js} +1 -1
  35. package/src/client/dist/pwa/assets/{MemoryProposalList-BRKSoS4K.js → MemoryProposalList-BGlq2DkD.js} +1 -1
  36. package/src/client/dist/pwa/assets/{QBtnDropdown-o3QH0Bb8.js → QBtnDropdown-CykBCmwa.js} +1 -1
  37. package/src/client/dist/pwa/assets/{QExpansionItem-BhFHiyq9.js → QExpansionItem-CAW9J1Uv.js} +1 -1
  38. package/src/client/dist/pwa/assets/{QScrollArea-BsNY6slB.js → QScrollArea-C_d-8eO7.js} +1 -1
  39. package/src/client/dist/pwa/assets/{QSelect-bEq3g_io.js → QSelect-C1AN93yA.js} +1 -1
  40. package/src/client/dist/pwa/assets/{QTooltip-xYZ6KNu2.js → QTooltip-C9qaLW_h.js} +1 -1
  41. package/src/client/dist/pwa/assets/{SchedulePanel-DIFv_FTY.js → SchedulePanel-CQpzDhq7.js} +1 -1
  42. package/src/client/dist/pwa/assets/{SearchPage-BqTBIt5E.js → SearchPage-fZlSSEu_.js} +1 -1
  43. package/src/client/dist/pwa/assets/{SettingsPage-BRvUAZ5r.css → SettingsPage-BCOF0ssp.css} +1 -1
  44. package/src/client/dist/pwa/assets/SettingsPage-eyJZxeCJ.js +9 -0
  45. package/src/client/dist/pwa/assets/{SplitWorkspacePage-D6r2pl5g.js → SplitWorkspacePage-CfeO6TZb.js} +1 -1
  46. package/src/client/dist/pwa/assets/{TerminalPanel-CladK9Vv.js → TerminalPanel-CfDZOteT.js} +1 -1
  47. package/src/client/dist/pwa/assets/{ToolCallItem-CdzEME4w.js → ToolCallItem-CHE6tylq.js} +2 -2
  48. package/src/client/dist/pwa/assets/{TouchPan-B4gQPwGN.js → TouchPan-Csev_qU6.js} +1 -1
  49. package/src/client/dist/pwa/assets/{TourReplayButton-B0j6AZwU.js → TourReplayButton-Crr7tF1b.js} +1 -1
  50. package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-CeVhoidC.js → WorkspaceAttentionLabels-DpUZOiJv.js} +1 -1
  51. package/src/client/dist/pwa/assets/{WorkspacePage-w2bF8wTd.css → WorkspacePage-Bk-WWOYM.css} +1 -1
  52. package/src/client/dist/pwa/assets/{WorkspacePage-CK5XCuG_.js → WorkspacePage-_QSKLO42.js} +3 -3
  53. package/src/client/dist/pwa/assets/{browser-B8tNScg1.js → browser-o7ftkZex.js} +1 -1
  54. package/src/client/dist/pwa/assets/{build-path-tree-kmVAcvs_.js → build-path-tree-D6dZQpIb.js} +1 -1
  55. package/src/client/dist/pwa/assets/{custom-sounds-CJwd-8TL.js → custom-sounds-DVX9zCET.js} +1 -1
  56. package/src/client/dist/pwa/assets/{de-BaO6kbdO.js → de-DOE4H_Jf.js} +2 -2
  57. package/src/client/dist/pwa/assets/{editor.api-CgbPVW9s.js → editor.api-C8TYnUXm.js} +1 -1
  58. package/src/client/dist/pwa/assets/{efforts-y7Wf_Rgd.js → efforts-DfsG0_o0.js} +1 -1
  59. package/src/client/dist/pwa/assets/{es-DTvSsbD0.js → es-BW57JPlm.js} +2 -2
  60. package/src/client/dist/pwa/assets/{expand-template-BFbbjj7X.js → expand-template-CJZlWMfI.js} +1 -1
  61. package/src/client/dist/pwa/assets/{format-BETfc4z9.js → format-DOCqk2Dn.js} +1 -1
  62. package/src/client/dist/pwa/assets/{formatters-C22K9vlC.js → formatters-BFocC6LJ.js} +1 -1
  63. package/src/client/dist/pwa/assets/{fr-BH7V66Yz.js → fr-DnmIKHaQ.js} +2 -2
  64. package/src/client/dist/pwa/assets/{freemarker2-DiRVvp9O.js → freemarker2-CfME4WOK.js} +1 -1
  65. package/src/client/dist/pwa/assets/{handlebars-BLYRroSQ.js → handlebars-uvKdDnJl.js} +1 -1
  66. package/src/client/dist/pwa/assets/{html-DAW2vteY.js → html-BrEPgLuD.js} +1 -1
  67. package/src/client/dist/pwa/assets/i18n-BmTCjikk.js +1 -0
  68. package/src/client/dist/pwa/assets/{index-CbyHfF8I.js → index-z1Oh2-I_.js} +4 -4
  69. package/src/client/dist/pwa/assets/{it-DZGbkkoy.js → it-DSrEQgZQ.js} +2 -2
  70. package/src/client/dist/pwa/assets/{javascript-Bb5J8n0k.js → javascript-KH2xP4lQ.js} +1 -1
  71. package/src/client/dist/pwa/assets/{liquid-Dqx3adnJ.js → liquid-D08TlsVs.js} +1 -1
  72. package/src/client/dist/pwa/assets/{mdx-D_7igLV3.js → mdx-y74A51cS.js} +1 -1
  73. package/src/client/dist/pwa/assets/{monaco-contributions-C-0CbrAy.js → monaco-contributions-Cx8iaAhd.js} +1 -1
  74. package/src/client/dist/pwa/assets/{monaco.contribution-c6JPBEZI.js → monaco.contribution-CFq0guCl.js} +2 -2
  75. package/src/client/dist/pwa/assets/{network-auth-BE4qbvWm.js → network-auth-DnGOOzCV.js} +1 -1
  76. package/src/client/dist/pwa/assets/{notify-theme-BVFBBGrJ.js → notify-theme-B9lUAgQl.js} +1 -1
  77. package/src/client/dist/pwa/assets/{project-color-CHOR2jB5.js → project-color-TgENPFLi.js} +1 -1
  78. package/src/client/dist/pwa/assets/{python-Dqubw1F5.js → python-Cy3bAVPq.js} +1 -1
  79. package/src/client/dist/pwa/assets/{razor-BQphc9Kt.js → razor-gD9QOuiV.js} +1 -1
  80. package/src/client/dist/pwa/assets/{typescript-Dep00l0X.js → typescript-CEItY0bH.js} +1 -1
  81. package/src/client/dist/pwa/assets/{use-search-index-status-CQHHvHwM.js → use-search-index-status-BtJ0pOy9.js} +1 -1
  82. package/src/client/dist/pwa/assets/{use-tours-IVbXTmz2.js → use-tours-COLDth2h.js} +2 -2
  83. package/src/client/dist/pwa/assets/{use-worktree-restore-B3s5xDGR.js → use-worktree-restore-CShbwpGy.js} +1 -1
  84. package/src/client/dist/pwa/assets/{workspace-templates-CyuTpztP.js → workspace-templates-BOMNQgBl.js} +1 -1
  85. package/src/client/dist/pwa/assets/{xml-BMS2dvaF.js → xml-BJvL5qcE.js} +1 -1
  86. package/src/client/dist/pwa/assets/{yaml-CYw92aic.js → yaml-DtkVRZaX.js} +1 -1
  87. package/src/client/dist/pwa/index.html +1 -1
  88. package/src/client/dist/pwa/sw.js +1 -1
  89. package/src/mcp-server/README.md +13 -0
  90. package/src/mcp-server/kobo-tasks-server.ts +5 -4
  91. package/src/client/dist/pwa/assets/ActivityFeed-DiUxnmGJ.js +0 -2
  92. package/src/client/dist/pwa/assets/SettingsPage-BLD0xWFB.js +0 -9
  93. package/src/client/dist/pwa/assets/i18n-DnuTmw3O.js +0 -1
@@ -1,8 +1,8 @@
1
- import{M as e,O as t,S as n,lt as r,n as i,pt as a,v as o}from"./reactivity.esm-bundler-DY1JkAEA.js";import{J as s,L as c,P as l,Y as u,_ as d,b as f,d as p,f as m,g as h,j as g,l as _,p as v,r as y,u as b,w as x,y as S,z as C}from"./runtime-core.esm-bundler-Bqg71Vll.js";import{$ as w,M as T,c as E,d as D}from"./dom-BtYTvLeN.js";import{l as O,t as k,u as A}from"./QBtn-BUSdPaf4.js";import{$t as j,Kt as M,P as N,Qt as P,Ut as F,at as I,cn as L,ft as ee,mt as R,pt as z,sn as te,un as ne}from"./index-CbyHfF8I.js";import{a as B}from"./use-tours-IVbXTmz2.js";import{t as re}from"./QTooltip-xYZ6KNu2.js";import{i as ie,o as ae,r as oe,t as V}from"./render-chat-markdown-CafzCcmu.js";function H(e){let r=n({width:0,height:0}),a=f(),o=null,s=null,c=null,u=0,d,p={width:-1,height:-1};function m(){c!==null&&(clearTimeout(c),c=null)}function h(){if(m(),s===null)return;let{offsetWidth:e,offsetHeight:t}=o;(e!==p.width||t!==p.height)&&(p={width:e,height:t},r.value=p,d?.(p))}function _(){u>0?c===null&&(c=setTimeout(h,u)):h()}function v(){m(),s!==null&&(s.disconnect(),s=null)}let y=new i(()=>{let n=t(e)??{},r=E(n.target,a);if(u=Number(n.debounce)||0,d=n.onResize,r!==o&&(v(),o=r,p={width:-1,height:-1}),n.disabled===!0||o===null){v();return}s===null&&(s=new ResizeObserver(_),s.observe(o,{box:`border-box`}),h())});return y.scheduler=()=>{y.run()},a===null?y.run():(l(()=>{y.run()}),g(v)),{elementSize:r,refreshElementSize:h,stopElementSize(){v(),o=null,y.stop()}}}var{passive:U}=T;function W(e){let r=n({top:0,left:0}),a=o(`down`),s=o(!1),c=n({top:0,left:0}),u=n({top:0,left:0}),d={scrollPosition:r,scrollDirection:a,scrollDirectionChanged:s,scrollDelta:c,scrollInflectionPoint:u},p=f(),m=p!==null||x()?D():void 0,h=null,_=!1,v=null,y=`vertical`,b,S,C,w=0,T=0,O=`down`,k={top:0,left:0};function A(){v!==null&&(v(),v=null)}function j(){if(A(),h===null)return;let e=Math.max(0,ne(h)),t=te(h),n=e-w,i=t-T;if(y===`vertical`&&n===0||y===`horizontal`&&i===0||n===0&&i===0)return;let o=Math.abs(n)>=Math.abs(i)?n<0?`up`:`down`:i<0?`left`:`right`,l=O!==o,d={top:e,left:t},f={top:n,left:i};w=e,T=t,r.value=d,c.value=f,s.value=l,l&&(O=o,k=d,a.value=o,u.value=d),C?.({position:d,direction:o,directionChanged:l,delta:f,inflectionPoint:k})}function M(){if(b===0)j();else if(v===null){if(b===void 0){let e=requestAnimationFrame(j);v=()=>{cancelAnimationFrame(e)}}else{let e=setTimeout(j,b);v=()=>{clearTimeout(e)}}}}function N(){A(),_&&=(h.removeEventListener(`scroll`,M,U),!1)}let P=new i(()=>{let n=t(e)??{},i=t(n.scrollTarget),o=E(n.target,p),l=i==null?o===null?null:L(o):L(o,i);y=n.axis??`vertical`,b=n.debounce===void 0||n.debounce===null?void 0:Number(n.debounce)||0,C=n.onScroll,l!==h&&(N(),h=l,(w!==0||T!==0)&&(w=T=0,r.value={top:w,left:T},c.value={top:w,left:T}),O!==`down`&&(O=`down`,a.value=O),s.value&&=!1,(k.top!==0||k.left!==0)&&(k={top:0,left:0},u.value=k));let d=m?.lang.rtl===!0,f=S!==void 0&&S!==d;if(S=d,n.disabled===!0||h===null){N();return}_?f&&j():(h.addEventListener(`scroll`,M,U),_=!0,j())});return P.scheduler=()=>{P.run()},p===null?P.run():(l(()=>{P.run()}),g(N)),{...d,refreshScroll:j,stopScroll(){N(),h=null,P.stop()}}}function G(e,t,n){if(e?.kind!==`subagent`)return;let r=t.filter(ee);return(n?r.find(e=>e.toolUseId===n||e.taskId===n):void 0)||r.find(t=>{let n=new Set([t.toolUseId,...t.taskId?[t.taskId]:[]]);return e.toolCallId!==void 0&&n.has(e.toolCallId)||e.threadId!==void 0&&(t.threadIds??[]).includes(e.threadId)})}function K(e,t){if(!(`origin`in e)||!e.origin||e.origin.kind!==`subagent`)return!1;let n=new Set([t.toolUseId,...t.taskId?[t.taskId]:[]]);return(e.kind===`tool:call`||e.kind===`tool:result`)&&n.has(e.toolCallId)||e.origin.toolCallId!==void 0&&n.has(e.origin.toolCallId)||e.origin.threadId!==void 0&&(t.threadIds??[]).includes(e.origin.threadId)}function q(e,t,n){return e.filter((e,r)=>(!n.sessionId||t[r]===n.sessionId)&&K(e,n))}var se=Symbol(`openSubagentActivity`),ce=Symbol(`subagentActivityTarget`),J=j(`documents`,()=>{let e=o({}),t=o(!1),n=o(!1),r=o(null),i=o(0),a=z();function s(t){return e.value[t]??[]}async function c(n){t.value=!0;try{let t=await F(`/api/workspaces/${n}/documents`);if(!t.ok)throw await M(t);let r=await t.json();e.value[n]=r.documents}catch(t){console.error(`[documents-store] fetchDocuments failed:`,t),e.value[n]=[]}finally{t.value=!1}}async function l(e,t){await u(e,t,a.begin())}async function u(e,t,i){n.value=!0;try{let n=await F(`/api/workspaces/${e}/document?path=${encodeURIComponent(t.path)}`,{signal:i});if(!n.ok)throw await M(n);let o=await n.json();return a.isCurrent(i)?(r.value={path:o.path,name:t.name,content:o.content},!0):!1}catch(e){if(R(e)||!a.isCurrent(i))return!1;throw console.error(`[documents-store] openDocument failed:`,e),e}finally{a.isCurrent(i)&&(n.value=!1)}}async function d(t,r){let o=a.begin();try{let n=()=>(e.value[t]??[]).find(e=>e.path===r)??null,s=n();return s||=(await c(t),n()),!s||!a.isCurrent(o)||!await u(t,s,o)||!a.isCurrent(o)?!1:(i.value++,!0)}finally{a.isCurrent(o)&&(n.value=!1)}}function f(){a.abort(),n.value=!1,r.value=null}function p(t){delete e.value[t],f()}return{documentsByWorkspace:e,loadingList:t,loadingContent:n,selected:r,requestOpen:i,documentsFor:s,fetchDocuments:c,openDocument:l,openDocumentByPath:d,closeDocument:f,clearForWorkspace:p}});function le(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){ue(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 ue(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=de(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 de(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 fe=[`innerHTML`],pe=B(S({__name:`TextMessageItem`,props:{item:{}},setup(e){let t=e,n=J(),r=I(),i=D(),{t:a}=P(),o=_(()=>{let e=r.selectedWorkspaceId;return e?n.documentsFor(e).map(e=>e.path):[]}),s=_(()=>{let e=t.item;if(e.streaming)return V(e.text);let n=o.value;return oe(`${e.messageId}|${n.join(`,`)}`,e.text,e=>{let t=le(ae.parse(e,{async:!1,breaks:!0,gfm:!0}),n);return ie(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)=>(c(),v(`div`,{class:`markdown-message`,onClick:l},[b(`div`,{innerHTML:s.value},null,8,fe),e.item.streaming?(c(),p(A,{key:0,size:`xs`,class:`q-ml-xs`})):m(``,!0)]))}}),[[`__scopeId`,`data-v-99371035`]]);function me(e,t){let n=e.split(`
1
+ import{M as e,O as t,S as n,lt as r,n as i,pt as a,v as o}from"./reactivity.esm-bundler-DY1JkAEA.js";import{J as s,L as c,P as l,Y as u,_ as d,b as f,d as p,f as m,g as h,j as g,l as _,p as v,r as y,u as b,w as x,y as S,z as C}from"./runtime-core.esm-bundler-Bqg71Vll.js";import{$ as w,M as T,c as E,d as D}from"./dom-BtYTvLeN.js";import{l as O,t as k,u as A}from"./QBtn-BUSdPaf4.js";import{$t as j,Kt as M,P as N,Qt as P,Ut as F,at as I,cn as L,ft as ee,mt as R,pt as z,sn as te,un as ne}from"./index-z1Oh2-I_.js";import{a as B}from"./use-tours-COLDth2h.js";import{t as re}from"./QTooltip-C9qaLW_h.js";import{i as ie,o as ae,r as oe,t as V}from"./render-chat-markdown-CafzCcmu.js";function H(e){let r=n({width:0,height:0}),a=f(),o=null,s=null,c=null,u=0,d,p={width:-1,height:-1};function m(){c!==null&&(clearTimeout(c),c=null)}function h(){if(m(),s===null)return;let{offsetWidth:e,offsetHeight:t}=o;(e!==p.width||t!==p.height)&&(p={width:e,height:t},r.value=p,d?.(p))}function _(){u>0?c===null&&(c=setTimeout(h,u)):h()}function v(){m(),s!==null&&(s.disconnect(),s=null)}let y=new i(()=>{let n=t(e)??{},r=E(n.target,a);if(u=Number(n.debounce)||0,d=n.onResize,r!==o&&(v(),o=r,p={width:-1,height:-1}),n.disabled===!0||o===null){v();return}s===null&&(s=new ResizeObserver(_),s.observe(o,{box:`border-box`}),h())});return y.scheduler=()=>{y.run()},a===null?y.run():(l(()=>{y.run()}),g(v)),{elementSize:r,refreshElementSize:h,stopElementSize(){v(),o=null,y.stop()}}}var{passive:U}=T;function W(e){let r=n({top:0,left:0}),a=o(`down`),s=o(!1),c=n({top:0,left:0}),u=n({top:0,left:0}),d={scrollPosition:r,scrollDirection:a,scrollDirectionChanged:s,scrollDelta:c,scrollInflectionPoint:u},p=f(),m=p!==null||x()?D():void 0,h=null,_=!1,v=null,y=`vertical`,b,S,C,w=0,T=0,O=`down`,k={top:0,left:0};function A(){v!==null&&(v(),v=null)}function j(){if(A(),h===null)return;let e=Math.max(0,ne(h)),t=te(h),n=e-w,i=t-T;if(y===`vertical`&&n===0||y===`horizontal`&&i===0||n===0&&i===0)return;let o=Math.abs(n)>=Math.abs(i)?n<0?`up`:`down`:i<0?`left`:`right`,l=O!==o,d={top:e,left:t},f={top:n,left:i};w=e,T=t,r.value=d,c.value=f,s.value=l,l&&(O=o,k=d,a.value=o,u.value=d),C?.({position:d,direction:o,directionChanged:l,delta:f,inflectionPoint:k})}function M(){if(b===0)j();else if(v===null){if(b===void 0){let e=requestAnimationFrame(j);v=()=>{cancelAnimationFrame(e)}}else{let e=setTimeout(j,b);v=()=>{clearTimeout(e)}}}}function N(){A(),_&&=(h.removeEventListener(`scroll`,M,U),!1)}let P=new i(()=>{let n=t(e)??{},i=t(n.scrollTarget),o=E(n.target,p),l=i==null?o===null?null:L(o):L(o,i);y=n.axis??`vertical`,b=n.debounce===void 0||n.debounce===null?void 0:Number(n.debounce)||0,C=n.onScroll,l!==h&&(N(),h=l,(w!==0||T!==0)&&(w=T=0,r.value={top:w,left:T},c.value={top:w,left:T}),O!==`down`&&(O=`down`,a.value=O),s.value&&=!1,(k.top!==0||k.left!==0)&&(k={top:0,left:0},u.value=k));let d=m?.lang.rtl===!0,f=S!==void 0&&S!==d;if(S=d,n.disabled===!0||h===null){N();return}_?f&&j():(h.addEventListener(`scroll`,M,U),_=!0,j())});return P.scheduler=()=>{P.run()},p===null?P.run():(l(()=>{P.run()}),g(N)),{...d,refreshScroll:j,stopScroll(){N(),h=null,P.stop()}}}function G(e,t,n){if(e?.kind!==`subagent`)return;let r=t.filter(ee);return(n?r.find(e=>e.toolUseId===n||e.taskId===n):void 0)||r.find(t=>{let n=new Set([t.toolUseId,...t.taskId?[t.taskId]:[]]);return e.toolCallId!==void 0&&n.has(e.toolCallId)||e.threadId!==void 0&&(t.threadIds??[]).includes(e.threadId)})}function K(e,t){if(!(`origin`in e)||!e.origin||e.origin.kind!==`subagent`)return!1;let n=new Set([t.toolUseId,...t.taskId?[t.taskId]:[]]);return(e.kind===`tool:call`||e.kind===`tool:result`)&&n.has(e.toolCallId)||e.origin.toolCallId!==void 0&&n.has(e.origin.toolCallId)||e.origin.threadId!==void 0&&(t.threadIds??[]).includes(e.origin.threadId)}function q(e,t,n){return e.filter((e,r)=>(!n.sessionId||t[r]===n.sessionId)&&K(e,n))}var se=Symbol(`openSubagentActivity`),ce=Symbol(`subagentActivityTarget`),J=j(`documents`,()=>{let e=o({}),t=o(!1),n=o(!1),r=o(null),i=o(0),a=z();function s(t){return e.value[t]??[]}async function c(n){t.value=!0;try{let t=await F(`/api/workspaces/${n}/documents`);if(!t.ok)throw await M(t);let r=await t.json();e.value[n]=r.documents}catch(t){console.error(`[documents-store] fetchDocuments failed:`,t),e.value[n]=[]}finally{t.value=!1}}async function l(e,t){await u(e,t,a.begin())}async function u(e,t,i){n.value=!0;try{let n=await F(`/api/workspaces/${e}/document?path=${encodeURIComponent(t.path)}`,{signal:i});if(!n.ok)throw await M(n);let o=await n.json();return a.isCurrent(i)?(r.value={path:o.path,name:t.name,content:o.content},!0):!1}catch(e){if(R(e)||!a.isCurrent(i))return!1;throw console.error(`[documents-store] openDocument failed:`,e),e}finally{a.isCurrent(i)&&(n.value=!1)}}async function d(t,r){let o=a.begin();try{let n=()=>(e.value[t]??[]).find(e=>e.path===r)??null,s=n();return s||=(await c(t),n()),!s||!a.isCurrent(o)||!await u(t,s,o)||!a.isCurrent(o)?!1:(i.value++,!0)}finally{a.isCurrent(o)&&(n.value=!1)}}function f(){a.abort(),n.value=!1,r.value=null}function p(t){delete e.value[t],f()}return{documentsByWorkspace:e,loadingList:t,loadingContent:n,selected:r,requestOpen:i,documentsFor:s,fetchDocuments:c,openDocument:l,openDocumentByPath:d,closeDocument:f,clearForWorkspace:p}});function le(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){ue(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 ue(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=de(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 de(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 fe=[`innerHTML`],pe=B(S({__name:`TextMessageItem`,props:{item:{}},setup(e){let t=e,n=J(),r=I(),i=D(),{t:a}=P(),o=_(()=>{let e=r.selectedWorkspaceId;return e?n.documentsFor(e).map(e=>e.path):[]}),s=_(()=>{let e=t.item;if(e.streaming)return V(e.text);let n=o.value;return oe(`${e.messageId}|${n.join(`,`)}`,e.text,e=>{let t=le(ae.parse(e,{async:!1,breaks:!0,gfm:!0}),n);return ie(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)=>(c(),v(`div`,{class:`markdown-message`,onClick:l},[b(`div`,{innerHTML:s.value},null,8,fe),e.item.streaming?(c(),p(A,{key:0,size:`xs`,class:`q-ml-xs`})):m(``,!0)]))}}),[[`__scopeId`,`data-v-99371035`]]);function me(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,...he(l,u),...c]}function he(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 ge(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 _e(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=ge(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(`
5
5
  `).length:0,deletions:t?t.split(`
6
6
  `).length:0}}if(e===`Write`){let e=n.file_path;if(!e)return null;let t=n.content??``;return{toolName:`Write`,filePath:e,content:t,additions:t?t.split(`
7
- `).length:0,deletions:0}}if(e===`Bash`){let e=(n.command??``).match(/^\s*rm\s+(?:-[a-zA-Z]*\s+)*(.+)/);if(e)return{toolName:`Bash:rm`,filePath:e[1].trim().replace(/["']/g,``),additions:0,deletions:1}}return null}function Y(e,t){if(!e||!t?.projectPath)return e;let n=t.worktreePath;if(n){let t=X(e,n);if(t!==e)return t}let r=X(e,`${t.projectPath}/${N}/${t.workingBranch}`);return r===e?X(e,t.projectPath):r}function X(e,t){if(!t)return e;let n=ve(t);return n?e.replace(RegExp(`${n}[\\\\/]+`,`g`),``).replace(RegExp(`${n}(?=\\s|$|["'\`])`,`g`),`.`):e}function ve(e){let t=e.replace(/[\\/]+$/,``);return t?`${/^[\\/]+/.test(t)?`[\\\\/]+`:``}${t.split(/[\\/]+/).filter(Boolean).map(ye).join(`[\\\\/]+`)}`:``}function ye(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}var Z=[{name:`list_memory_scopes`,description:`List the global, project and workspace memory scopes available to this workspace.`,inputSchema:{type:`object`,properties:{cursor:{type:`string`,pattern:`^\\d+$`},limit:{type:`integer`,minimum:1,maximum:100}},required:[]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`list_memories`,description:`List applicable memories, or one of their exact scope IDs, with bounded pagination.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},cursor:{type:`string`,pattern:`^\\d+$`},limit:{type:`integer`,minimum:1,maximum:100}},required:[]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`read_memory`,description:`Read one memory by its exact scope and entry IDs.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},entry_id:{type:`string`,minLength:1},cursor:{type:`string`,pattern:`^\\d+\\.\\d+$`,description:`Opaque revision-and-code-point offset cursor from the prior fragment.`},repeat:{type:`boolean`,description:`Explicitly reread an unchanged fragment and spend budget again.`}},required:[`scope_id`,`entry_id`]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`search_memories`,description:`Search memories in one exact applicable scope with bounded pagination.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},query:{type:`string`,minLength:1,maxLength:200},cursor:{type:`string`,pattern:`^\\d+$`},limit:{type:`integer`,minimum:1,maximum:100}},required:[`scope_id`,`query`]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`list_memory_operations`,description:`List the bounded, content-free operation journal for one applicable scope.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},cursor:{type:`string`,pattern:`^\\d+$`},limit:{type:`integer`,minimum:1,maximum:100}},required:[`scope_id`]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`remember`,description:`Create or update a concise memory; current mode may deny, apply, or propose the change. Available even when the retrieval budget is exhausted; never echoes the saved body.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},expected_generation:{type:`integer`,minimum:0},key:{type:`string`,minLength:1,maxLength:80},title:{type:`string`,minLength:1,maxLength:160},body:{type:`string`,minLength:1,maxLength:2e3},entry_id:{type:`string`,minLength:1},expected_revision:{type:`integer`,minimum:1}},required:[`scope_id`,`expected_generation`,`key`,`title`,`body`]},annotations:{readOnlyHint:!1,destructiveHint:!1,openWorldHint:!1}}],be=new Set(Z.map(e=>e.name));function xe(e){return be.has(e)}Z.map(e=>{let t={...e.inputSchema.properties};return t.memory_context_id={type:`string`,minLength:12,maxLength:128,description:`Reuse the opaque response-budget handle returned by Kōbō.`},e.name===`list_memory_scopes`?(t.workspace_id={type:`string`,minLength:1},t.cursor={type:`string`,pattern:`^\\d+$`},t.limit={type:`integer`,minimum:1,maximum:100}):(e.name===`list_memories`||e.name===`search_memories`||e.name===`list_memory_operations`)&&(t.workspace_id={type:`string`,minLength:1}),{...e,description:e.name===`list_memory_scopes`?`List selectable existing scopes, or the exact global/project/workspace scopes applicable to an existing workspace.`:e.description,inputSchema:{...e.inputSchema,properties:t,required:e.inputSchema.required.filter(t=>t!==`scope_id`||e.name===`read_memory`||e.name===`remember`)}}});function Q(e,t){let n=e.replace(/^(?:mcp__kobo-tasks__|kobo__)/,``);if(!t?.isError||!xe(n))return!1;let r=e=>e==null?!0:typeof e==`string`?e.trim()===``||e.trim()===`Unknown error`:!1;return Array.isArray(t.output)?t.output.every(e=>{if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`text`&&r(t.text)}):r(t.output)}var $=new Map;function Se(e,t){$.set(e,t)}function Ce(e){let t=$.get(e)??null;return $.delete(e),t}var we={class:`tool-name`},Te=[`title`],Ee={key:0,class:`tool-stat-add`},De={key:1,class:`tool-stat-del`},Oe={class:`diff-sign`},ke={class:`tool-name`},Ae=[`title`],je=B(S({__name:`ToolCallItem`,props:{item:{}},setup(t){let n=t,i=o(!1),l=I(),{t:f}=P(),g=_(()=>_e(n.item.name,n.item.input)),x=_(()=>g.value?Y(g.value.filePath,l.selectedWorkspace):``),S={Bash:`terminal`,Read:`description`,Edit:`edit`,Write:`edit_note`,MultiEdit:`edit`,Glob:`folder_open`,Grep:`manage_search`,LS:`list`,Skill:`auto_awesome`,Task:`hub`,Agent:`hub`,TodoWrite:`checklist`,TodoRead:`checklist`,TaskCreate:`add_task`,TaskUpdate:`checklist`,TaskGet:`checklist`,TaskList:`checklist`,ToolSearch:`search`,WebFetch:`public`,WebSearch:`travel_explore`,NotebookRead:`book`,NotebookEdit:`edit_note`,SendMessage:`send`,ExitPlanMode:`check_circle_outline`,KillShell:`stop_circle`,BashOutput:`terminal`},T=_(()=>S[n.item.name]??`build`),E=_(()=>{if(g.value)return``;let e=n.item.input,t=D(e);return t?Y(t,l.selectedWorkspace):``});function D(e){if(!e||typeof e!=`object`)return typeof e==`string`?e:``;let t=e;for(let e of[`file_path`,`path`,`command`,`pattern`,`query`,`url`,`skill`,`description`,`subject`,`prompt`]){let n=t[e];if(typeof n==`string`&&n.length>0)return n}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return e;return``}let A=_(()=>{let e=g.value;return e?e.diffLines?e.diffLines:e.toolName===`Edit`&&e.oldString!==void 0&&e.newString!==void 0?me(e.oldString,e.newString):e.toolName===`Write`&&e.content!==void 0?e.content.split(`
7
+ `).length:0,deletions:0}}if(e===`Bash`){let e=(n.command??``).match(/^\s*rm\s+(?:-[a-zA-Z]*\s+)*(.+)/);if(e)return{toolName:`Bash:rm`,filePath:e[1].trim().replace(/["']/g,``),additions:0,deletions:1}}return null}function Y(e,t){if(!e||!t?.projectPath)return e;let n=t.worktreePath;if(n){let t=X(e,n);if(t!==e)return t}let r=X(e,`${t.projectPath}/${N}/${t.workingBranch}`);return r===e?X(e,t.projectPath):r}function X(e,t){if(!t)return e;let n=ve(t);return n?e.replace(RegExp(`${n}[\\\\/]+`,`g`),``).replace(RegExp(`${n}(?=\\s|$|["'\`])`,`g`),`.`):e}function ve(e){let t=e.replace(/[\\/]+$/,``);return t?`${/^[\\/]+/.test(t)?`[\\\\/]+`:``}${t.split(/[\\/]+/).filter(Boolean).map(ye).join(`[\\\\/]+`)}`:``}function ye(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}var Z=[{name:`list_memory_scopes`,description:`Discover the global, project and workspace scopes of Kōbō internal shared memory before targeted retrieval or permitted saving. Use returned scope IDs and generations; do not guess them. Scope discovery remains available when the retrieval budget is exhausted, but must not be polled.`,inputSchema:{type:`object`,properties:{cursor:{type:`string`,pattern:`^\\d+$`},limit:{type:`integer`,minimum:1,maximum:100}},required:[]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`list_memories`,description:`List applicable memories, or one of their exact scope IDs, with bounded pagination.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},cursor:{type:`string`,pattern:`^\\d+$`},limit:{type:`integer`,minimum:1,maximum:100}},required:[]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`read_memory`,description:`Read one memory by its exact scope and entry IDs.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},entry_id:{type:`string`,minLength:1},cursor:{type:`string`,pattern:`^\\d+\\.\\d+$`,description:`Opaque revision-and-code-point offset cursor from the prior fragment.`},repeat:{type:`boolean`,description:`Explicitly reread an unchanged fragment and spend budget again.`}},required:[`scope_id`,`entry_id`]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`search_memories`,description:`Search memories in one exact applicable scope with bounded pagination.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},query:{type:`string`,minLength:1,maxLength:200},cursor:{type:`string`,pattern:`^\\d+$`},limit:{type:`integer`,minimum:1,maximum:100}},required:[`scope_id`,`query`]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`list_memory_operations`,description:`List the bounded, content-free operation journal for one applicable scope.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},cursor:{type:`string`,pattern:`^\\d+$`},limit:{type:`integer`,minimum:1,maximum:100}},required:[`scope_id`]},annotations:{readOnlyHint:!0,destructiveHint:!1,openWorldHint:!1}},{name:`remember`,description:`Save a confirmed reusable decision, convention, environment requirement or root cause in Kōbō internal shared memory. Choose the narrowest applicable scope and update an existing matching entry instead of duplicating it. Do not store secrets, raw logs or routine progress. Current mode and launch permissions may deny, apply, or propose the change; a proposal still needs approval. Available even when the retrieval budget is exhausted; never echoes the saved body.`,inputSchema:{type:`object`,properties:{scope_id:{type:`string`,minLength:1},expected_generation:{type:`integer`,minimum:0},key:{type:`string`,minLength:1,maxLength:80},title:{type:`string`,minLength:1,maxLength:160},body:{type:`string`,minLength:1,maxLength:2e3},entry_id:{type:`string`,minLength:1},expected_revision:{type:`integer`,minimum:1}},required:[`scope_id`,`expected_generation`,`key`,`title`,`body`]},annotations:{readOnlyHint:!1,destructiveHint:!1,openWorldHint:!1}}],be=new Set(Z.map(e=>e.name));function xe(e){return be.has(e)}Z.map(e=>{let t={...e.inputSchema.properties};return t.memory_context_id={type:`string`,minLength:12,maxLength:128,description:`Reuse the opaque response-budget handle returned by Kōbō.`},e.name===`list_memory_scopes`?(t.workspace_id={type:`string`,minLength:1},t.cursor={type:`string`,pattern:`^\\d+$`},t.limit={type:`integer`,minimum:1,maximum:100}):(e.name===`list_memories`||e.name===`search_memories`||e.name===`list_memory_operations`)&&(t.workspace_id={type:`string`,minLength:1}),{...e,description:e.name===`list_memory_scopes`?`List selectable existing scopes, or the exact global/project/workspace scopes applicable to an existing workspace.`:e.description,inputSchema:{...e.inputSchema,properties:t,required:e.inputSchema.required.filter(t=>t!==`scope_id`||e.name===`read_memory`||e.name===`remember`)}}});function Q(e,t){let n=e.replace(/^(?:mcp__kobo-tasks__|kobo__)/,``);if(!t?.isError||!xe(n))return!1;let r=e=>e==null?!0:typeof e==`string`?e.trim()===``||e.trim()===`Unknown error`:!1;return Array.isArray(t.output)?t.output.every(e=>{if(!e||typeof e!=`object`)return!1;let t=e;return t.type===`text`&&r(t.text)}):r(t.output)}var $=new Map;function Se(e,t){$.set(e,t)}function Ce(e){let t=$.get(e)??null;return $.delete(e),t}var we={class:`tool-name`},Te=[`title`],Ee={key:0,class:`tool-stat-add`},De={key:1,class:`tool-stat-del`},Oe={class:`diff-sign`},ke={class:`tool-name`},Ae=[`title`],je=B(S({__name:`ToolCallItem`,props:{item:{}},setup(t){let n=t,i=o(!1),l=I(),{t:f}=P(),g=_(()=>_e(n.item.name,n.item.input)),x=_(()=>g.value?Y(g.value.filePath,l.selectedWorkspace):``),S={Bash:`terminal`,Read:`description`,Edit:`edit`,Write:`edit_note`,MultiEdit:`edit`,Glob:`folder_open`,Grep:`manage_search`,LS:`list`,Skill:`auto_awesome`,Task:`hub`,Agent:`hub`,TodoWrite:`checklist`,TodoRead:`checklist`,TaskCreate:`add_task`,TaskUpdate:`checklist`,TaskGet:`checklist`,TaskList:`checklist`,ToolSearch:`search`,WebFetch:`public`,WebSearch:`travel_explore`,NotebookRead:`book`,NotebookEdit:`edit_note`,SendMessage:`send`,ExitPlanMode:`check_circle_outline`,KillShell:`stop_circle`,BashOutput:`terminal`},T=_(()=>S[n.item.name]??`build`),E=_(()=>{if(g.value)return``;let e=n.item.input,t=D(e);return t?Y(t,l.selectedWorkspace):``});function D(e){if(!e||typeof e!=`object`)return typeof e==`string`?e:``;let t=e;for(let e of[`file_path`,`path`,`command`,`pattern`,`query`,`url`,`skill`,`description`,`subject`,`prompt`]){let n=t[e];if(typeof n==`string`&&n.length>0)return n}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return e;return``}let A=_(()=>{let e=g.value;return e?e.diffLines?e.diffLines:e.toolName===`Edit`&&e.oldString!==void 0&&e.newString!==void 0?me(e.oldString,e.newString):e.toolName===`Write`&&e.content!==void 0?e.content.split(`
8
8
  `).map(e=>({type:`add`,content:e})):e.toolName===`Bash:rm`?[{type:`del`,content:`File deleted`}]:null:null}),j=_(()=>{let e=n.item.result;if(!e)return``;if(Q(n.item.name,e))return f(`memory.tool.unexplainedError`);if(typeof e.output==`string`)return e.output;try{return JSON.stringify(e.output)}catch{return String(e.output)}}),M=new Set([`Read`]),N=_(()=>!!(n.item.result&&j.value)&&(!M.has(n.item.name)||n.item.result?.isError===!0));function F(){i.value=!i.value}function L(){let e=g.value?.filePath,t=l.selectedWorkspace,n=t?.id,r=e?Y(e,t):``;r&&!/^(?:[A-Za-z]:)?[\\/]/.test(r)&&n&&(Se(n,r),window.dispatchEvent(new CustomEvent(`kobo:open-diff`,{detail:{workspaceId:n,path:r}})))}return s(()=>n.item.result?.isError===!0,e=>{e&&(i.value=!0)},{immediate:!0}),(n,o)=>g.value?(c(),v(`div`,{key:0,class:r([`tool-row`,{"tool-row-expanded":i.value}])},[b(`div`,{class:`tool-header`,onClick:F},[d(O,{name:T.value,size:`14px`,class:`tool-icon`},null,8,[`name`]),b(`span`,we,a(g.value.toolName===`Bash:rm`?`Bash`:g.value.toolName),1),b(`span`,{class:`tool-path`,title:g.value.filePath},a(x.value),9,Te),d(k,{flat:``,dense:``,round:``,size:`xs`,icon:`open_in_new`,class:`tool-open-diff`,onClick:w(L,[`stop`])},{default:u(()=>[d(re,null,{default:u(()=>[h(a(e(f)(`chat.openInGitDiff`)),1)]),_:1})]),_:1}),g.value.additions>0?(c(),v(`span`,Ee,`+`+a(g.value.additions),1)):m(``,!0),g.value.deletions>0?(c(),v(`span`,De,`-`+a(g.value.deletions),1)):m(``,!0),t.item.result?.isError?(c(),p(O,{key:2,name:`error_outline`,color:`negative`,size:`xs`,class:`q-ml-xs`})):t.item.result?(c(),p(O,{key:3,name:`check`,color:`positive`,size:`xs`,class:`q-ml-xs`})):m(``,!0),d(O,{name:i.value?`expand_less`:`expand_more`,size:`xs`,class:`q-ml-auto text-kobo-3`},null,8,[`name`])]),i.value&&A.value?(c(),v(`div`,{key:0,class:`tool-diff`,onClick:o[0]||=w(()=>{},[`stop`])},[(c(!0),v(y,null,C(A.value,(e,t)=>(c(),v(`div`,{key:t,class:r([`diff-line`,{"diff-del":e.type===`del`,"diff-add":e.type===`add`,"diff-context":e.type===`context`}])},[b(`span`,Oe,a(e.type===`del`?`-`:e.type===`add`?`+`:` `),1),h(a(e.content),1)],2))),128))])):m(``,!0)],2)):(c(),v(`div`,{key:1,class:r([`tool-row tool-row-generic`,{"tool-row-expanded":i.value,"tool-row--toggleable":N.value}])},[b(`div`,{class:`tool-header`,onClick:o[1]||=e=>N.value&&F()},[d(O,{name:T.value,size:`14px`,class:`tool-icon`},null,8,[`name`]),b(`span`,ke,a(t.item.name),1),E.value?(c(),v(`span`,{key:0,class:`tool-arg`,title:D(t.item.input)||E.value},a(E.value),9,Ae)):m(``,!0),t.item.result?.isError?(c(),p(O,{key:1,name:`error_outline`,color:`negative`,size:`xs`,class:`q-ml-auto`})):t.item.result?(c(),p(O,{key:2,name:`check`,color:`positive`,size:`xs`,class:`q-ml-auto`})):m(``,!0),N.value?(c(),p(O,{key:3,name:i.value?`expand_less`:`expand_more`,size:`xs`,class:`q-ml-xs text-kobo-3`},null,8,[`name`])):m(``,!0)]),i.value&&N.value?(c(),v(`div`,{key:0,class:`tool-output`,onClick:o[2]||=w(()=>{},[`stop`])},a(j.value),1)):m(``,!0)],2))}}),[[`__scopeId`,`data-v-cc06bbb7`]]);export{se as a,G as c,H as d,J as i,q as l,Ce as n,ce as o,pe as r,K as s,je as t,W as u};
@@ -1 +1 @@
1
- import{B as e,F as t,I as n,L as r,M as i,N as a,P as o,R as s,U as c,j as l}from"./dom-BtYTvLeN.js";import{a as u,o as d}from"./QSelect-bEq3g_io.js";import{p as f}from"./use-tours-IVbXTmz2.js";var{passive:p,passiveCapture:m,notPassiveCapture:h}=i,g=0;function _(e,t,n){let r=o(e),i,a=r.left-t.event.x,s=r.top-t.event.y,c=Math.abs(a),l=Math.abs(s),u=t.direction;u.horizontal&&!u.vertical?i=a<0?`left`:`right`:!u.horizontal&&u.vertical?i=s<0?`up`:`down`:u.up&&s<0?(i=`up`,c>l&&(u.left&&a<0?i=`left`:u.right&&a>0&&(i=`right`))):u.down&&s>0?(i=`down`,c>l&&(u.left&&a<0?i=`left`:u.right&&a>0&&(i=`right`))):u.left&&a<0?(i=`left`,c<l&&(u.up&&s<0?i=`up`:u.down&&s>0&&(i=`down`))):u.right&&a>0&&(i=`right`,c<l&&(u.up&&s<0?i=`up`:u.down&&s>0&&(i=`down`)));let d=!1;if(i===void 0&&n===!1){if(t.event.isFirst||t.event.lastDir===void 0)return{};i=t.event.lastDir,d=!0,i===`left`||i===`right`?(r.left-=a,c=0,a=0):(r.top-=s,l=0,s=0)}return{synthetic:d,payload:{evt:e,touch:t.event.mouse!==!0,mouse:t.event.mouse===!0,position:r,direction:i,isFirst:t.event.isFirst,isFinal:n===!0,duration:Date.now()-t.event.time,distance:{x:c,y:l},offset:{x:a,y:s},delta:{x:r.left-t.event.lastX,y:r.top-t.event.lastY}}}}function v(e,t,n){t.modifiers=n,t.direction=u(n),t.stop=n.stop===!0,t.prevent=n.prevent===!0,t.mouseAllDir=n.mouseAllDir===!0||n.mousealldir===!0,t.preserveCursor=n.preserveCursor===!0||n.preservecursor===!0;let r=n.mouse?n.mouseCapture||n.mousecapture?m:p:null;r!==t.mouseOpts&&(t.mouseOpts!==null&&e.removeEventListener(`mousedown`,y,t.mouseOpts),r!==null&&e.addEventListener(`mousedown`,y,r),t.mouseOpts=r);let i=c.has.touch?n.capture?m:p:null;i!==t.touchOpts&&(t.touchOpts!==null&&e.removeEventListener(`touchstart`,b,t.touchOpts),i!==null&&e.addEventListener(`touchstart`,b,i),t.touchOpts=i)}function y(e){let t=e.currentTarget.__qtouchpan;d(e,t)&&l(e)&&(t.target=document,document.addEventListener(`mousemove`,t,h),document.addEventListener(`mouseup`,t,m),C(t,e,!0))}function b(e){let t=e.currentTarget.__qtouchpan;if(d(e,t)){let{target:n}=e;t.target=n,n.addEventListener(`touchmove`,t,h),n.addEventListener(`touchcancel`,t,m),n.addEventListener(`touchend`,t,m),C(t,e,!1)}}function x(e){e.type===`mousemove`||e.type===`touchmove`?E(this,e):D(this,e)}function S(e,n,i){i?s(n):(e.stop&&r(n),e.prevent&&t(n))}function C(e,i,a){if(c.is.firefox&&n(e.el,!0),e.lastEvt=i,a||e.stop){if(!e.direction.all&&(!a||!e.mouseAllDir)){let n=i.type.includes(`mouse`)?new MouseEvent(i.type,i):new TouchEvent(i.type,i);i.defaultPrevented&&t(n),i.cancelBubble&&r(n),Object.assign(n,{qKeyEvent:i.qKeyEvent,qClickOutside:i.qClickOutside,qAnchorHandled:i.qAnchorHandled,qClonedBy:i.qClonedBy===void 0?[e.uid]:i.qClonedBy.concat(e.uid)}),e.initialEvent={target:i.target,event:n}}r(i)}let{left:s,top:l}=o(i);e.event={x:s,y:l,time:Date.now(),mouse:a,detected:!1,isFirst:!0,isFinal:!1,lastX:s,lastY:l,lastDir:void 0}}function w(e,t,n){S(e,t,n),e.styled=!0,e.preserveCursor||(e.cursor=document.documentElement.style.cursor||``,document.documentElement.style.cursor=`grabbing`),n&&document.body.classList.add(`no-pointer-events--children`),document.body.classList.add(`non-selectable`),f()}function T(e,t){e.styled=!1,e.cursor!==void 0&&(document.documentElement.style.cursor=e.cursor,e.cursor=void 0),document.body.classList.remove(`non-selectable`),t&&document.body.classList.remove(`no-pointer-events--children`)}function E(e,t){let{event:n}=e;if(n===void 0)return;let r=o(t),i=r.left-n.x,a=r.top-n.y;if(i===0&&a===0)return;e.lastEvt=t;let{mouse:s}=n;if(n.detected){n.isFirst||S(e,t,s);let{payload:r,synthetic:i}=_(t,e,!1);r!==void 0&&(e.handler(r)===!1?D(e,t):(!e.styled&&n.isFirst&&w(e,t,s),n.lastX=r.position.left,n.lastY=r.position.top,n.lastDir=i?void 0:r.direction,n.isFirst=!1));return}let{direction:c}=e;if(c.all||s&&e.mouseAllDir){w(e,t,s),n.detected=!0,E(e,t);return}let l=Math.abs(i),u=Math.abs(a);l!==u&&(c.horizontal&&l>u||c.vertical&&l<u||c.up&&l<u&&a<0||c.down&&l<u&&a>0||c.left&&l>u&&i<0||c.right&&l>u&&i>0?(n.detected=!0,E(e,t)):D(e,t,!0))}function D(e,t,r){let{event:i,target:a}=e;if(i===void 0)return;let{mouse:o}=i;if(o?(a.removeEventListener(`mousemove`,e,h),a.removeEventListener(`mouseup`,e,m)):(a.removeEventListener(`touchmove`,e,h),a.removeEventListener(`touchcancel`,e,m),a.removeEventListener(`touchend`,e,m)),c.is.firefox&&n(e.el,!1),r)e.styled&&T(e,o),!i.detected&&e.initialEvent!==void 0&&e.initialEvent.target.dispatchEvent(e.initialEvent.event);else if(i.detected){t===void 0&&(t=e.lastEvt),i.isFirst&&e.handler(_(t,e).payload);let{payload:n}=_(t,e,!0),{handler:r}=e;e.styled?(T(e,o),o?setTimeout(r,50,n):r(n)):r(n)}e.event=void 0,e.initialEvent=void 0,e.lastEvt=void 0,e.target=null}var O=e({name:`touch-pan`,beforeMount(e,{value:t,modifiers:n}){let r={handleEvent:x,el:e,uid:`qvtp_`+g++,handler:t,modifiers:void 0,direction:void 0,stop:!1,prevent:!1,mouseAllDir:!1,preserveCursor:!1,mouseOpts:null,touchOpts:null,target:null,event:void 0,initialEvent:void 0,lastEvt:void 0,styled:!1,cursor:void 0};e.__qtouchpan=r,v(e,r,n),r.touchOpts!==null&&e.addEventListener(`touchmove`,a,h)},updated(e,{oldValue:t,value:n,modifiers:r}){let i=e.__qtouchpan;i!==void 0&&(t!==n&&(typeof n!=`function`&&D(i),i.handler=n),r!==i.modifiers&&v(e,i,r))},beforeUnmount(e){let t=e.__qtouchpan;t!==void 0&&(D(t),t.mouseOpts!==null&&e.removeEventListener(`mousedown`,y,t.mouseOpts),t.touchOpts!==null&&(e.removeEventListener(`touchstart`,b,t.touchOpts),e.removeEventListener(`touchmove`,a,h)),e.__qtouchpan=void 0)}});export{O as t};
1
+ import{B as e,F as t,I as n,L as r,M as i,N as a,P as o,R as s,U as c,j as l}from"./dom-BtYTvLeN.js";import{a as u,o as d}from"./QSelect-C1AN93yA.js";import{p as f}from"./use-tours-COLDth2h.js";var{passive:p,passiveCapture:m,notPassiveCapture:h}=i,g=0;function _(e,t,n){let r=o(e),i,a=r.left-t.event.x,s=r.top-t.event.y,c=Math.abs(a),l=Math.abs(s),u=t.direction;u.horizontal&&!u.vertical?i=a<0?`left`:`right`:!u.horizontal&&u.vertical?i=s<0?`up`:`down`:u.up&&s<0?(i=`up`,c>l&&(u.left&&a<0?i=`left`:u.right&&a>0&&(i=`right`))):u.down&&s>0?(i=`down`,c>l&&(u.left&&a<0?i=`left`:u.right&&a>0&&(i=`right`))):u.left&&a<0?(i=`left`,c<l&&(u.up&&s<0?i=`up`:u.down&&s>0&&(i=`down`))):u.right&&a>0&&(i=`right`,c<l&&(u.up&&s<0?i=`up`:u.down&&s>0&&(i=`down`)));let d=!1;if(i===void 0&&n===!1){if(t.event.isFirst||t.event.lastDir===void 0)return{};i=t.event.lastDir,d=!0,i===`left`||i===`right`?(r.left-=a,c=0,a=0):(r.top-=s,l=0,s=0)}return{synthetic:d,payload:{evt:e,touch:t.event.mouse!==!0,mouse:t.event.mouse===!0,position:r,direction:i,isFirst:t.event.isFirst,isFinal:n===!0,duration:Date.now()-t.event.time,distance:{x:c,y:l},offset:{x:a,y:s},delta:{x:r.left-t.event.lastX,y:r.top-t.event.lastY}}}}function v(e,t,n){t.modifiers=n,t.direction=u(n),t.stop=n.stop===!0,t.prevent=n.prevent===!0,t.mouseAllDir=n.mouseAllDir===!0||n.mousealldir===!0,t.preserveCursor=n.preserveCursor===!0||n.preservecursor===!0;let r=n.mouse?n.mouseCapture||n.mousecapture?m:p:null;r!==t.mouseOpts&&(t.mouseOpts!==null&&e.removeEventListener(`mousedown`,y,t.mouseOpts),r!==null&&e.addEventListener(`mousedown`,y,r),t.mouseOpts=r);let i=c.has.touch?n.capture?m:p:null;i!==t.touchOpts&&(t.touchOpts!==null&&e.removeEventListener(`touchstart`,b,t.touchOpts),i!==null&&e.addEventListener(`touchstart`,b,i),t.touchOpts=i)}function y(e){let t=e.currentTarget.__qtouchpan;d(e,t)&&l(e)&&(t.target=document,document.addEventListener(`mousemove`,t,h),document.addEventListener(`mouseup`,t,m),C(t,e,!0))}function b(e){let t=e.currentTarget.__qtouchpan;if(d(e,t)){let{target:n}=e;t.target=n,n.addEventListener(`touchmove`,t,h),n.addEventListener(`touchcancel`,t,m),n.addEventListener(`touchend`,t,m),C(t,e,!1)}}function x(e){e.type===`mousemove`||e.type===`touchmove`?E(this,e):D(this,e)}function S(e,n,i){i?s(n):(e.stop&&r(n),e.prevent&&t(n))}function C(e,i,a){if(c.is.firefox&&n(e.el,!0),e.lastEvt=i,a||e.stop){if(!e.direction.all&&(!a||!e.mouseAllDir)){let n=i.type.includes(`mouse`)?new MouseEvent(i.type,i):new TouchEvent(i.type,i);i.defaultPrevented&&t(n),i.cancelBubble&&r(n),Object.assign(n,{qKeyEvent:i.qKeyEvent,qClickOutside:i.qClickOutside,qAnchorHandled:i.qAnchorHandled,qClonedBy:i.qClonedBy===void 0?[e.uid]:i.qClonedBy.concat(e.uid)}),e.initialEvent={target:i.target,event:n}}r(i)}let{left:s,top:l}=o(i);e.event={x:s,y:l,time:Date.now(),mouse:a,detected:!1,isFirst:!0,isFinal:!1,lastX:s,lastY:l,lastDir:void 0}}function w(e,t,n){S(e,t,n),e.styled=!0,e.preserveCursor||(e.cursor=document.documentElement.style.cursor||``,document.documentElement.style.cursor=`grabbing`),n&&document.body.classList.add(`no-pointer-events--children`),document.body.classList.add(`non-selectable`),f()}function T(e,t){e.styled=!1,e.cursor!==void 0&&(document.documentElement.style.cursor=e.cursor,e.cursor=void 0),document.body.classList.remove(`non-selectable`),t&&document.body.classList.remove(`no-pointer-events--children`)}function E(e,t){let{event:n}=e;if(n===void 0)return;let r=o(t),i=r.left-n.x,a=r.top-n.y;if(i===0&&a===0)return;e.lastEvt=t;let{mouse:s}=n;if(n.detected){n.isFirst||S(e,t,s);let{payload:r,synthetic:i}=_(t,e,!1);r!==void 0&&(e.handler(r)===!1?D(e,t):(!e.styled&&n.isFirst&&w(e,t,s),n.lastX=r.position.left,n.lastY=r.position.top,n.lastDir=i?void 0:r.direction,n.isFirst=!1));return}let{direction:c}=e;if(c.all||s&&e.mouseAllDir){w(e,t,s),n.detected=!0,E(e,t);return}let l=Math.abs(i),u=Math.abs(a);l!==u&&(c.horizontal&&l>u||c.vertical&&l<u||c.up&&l<u&&a<0||c.down&&l<u&&a>0||c.left&&l>u&&i<0||c.right&&l>u&&i>0?(n.detected=!0,E(e,t)):D(e,t,!0))}function D(e,t,r){let{event:i,target:a}=e;if(i===void 0)return;let{mouse:o}=i;if(o?(a.removeEventListener(`mousemove`,e,h),a.removeEventListener(`mouseup`,e,m)):(a.removeEventListener(`touchmove`,e,h),a.removeEventListener(`touchcancel`,e,m),a.removeEventListener(`touchend`,e,m)),c.is.firefox&&n(e.el,!1),r)e.styled&&T(e,o),!i.detected&&e.initialEvent!==void 0&&e.initialEvent.target.dispatchEvent(e.initialEvent.event);else if(i.detected){t===void 0&&(t=e.lastEvt),i.isFirst&&e.handler(_(t,e).payload);let{payload:n}=_(t,e,!0),{handler:r}=e;e.styled?(T(e,o),o?setTimeout(r,50,n):r(n)):r(n)}e.event=void 0,e.initialEvent=void 0,e.lastEvt=void 0,e.target=null}var O=e({name:`touch-pan`,beforeMount(e,{value:t,modifiers:n}){let r={handleEvent:x,el:e,uid:`qvtp_`+g++,handler:t,modifiers:void 0,direction:void 0,stop:!1,prevent:!1,mouseAllDir:!1,preserveCursor:!1,mouseOpts:null,touchOpts:null,target:null,event:void 0,initialEvent:void 0,lastEvt:void 0,styled:!1,cursor:void 0};e.__qtouchpan=r,v(e,r,n),r.touchOpts!==null&&e.addEventListener(`touchmove`,a,h)},updated(e,{oldValue:t,value:n,modifiers:r}){let i=e.__qtouchpan;i!==void 0&&(t!==n&&(typeof n!=`function`&&D(i),i.handler=n),r!==i.modifiers&&v(e,i,r))},beforeUnmount(e){let t=e.__qtouchpan;t!==void 0&&(D(t),t.mouseOpts!==null&&e.removeEventListener(`mousedown`,y,t.mouseOpts),t.touchOpts!==null&&(e.removeEventListener(`touchstart`,b,t.touchOpts),e.removeEventListener(`touchmove`,a,h)),e.__qtouchpan=void 0)}});export{O as t};
@@ -1 +1 @@
1
- import{pt as e}from"./reactivity.esm-bundler-DY1JkAEA.js";import{L as t,Y as n,_ as r,d as i,g as a,y as o}from"./runtime-core.esm-bundler-Bqg71Vll.js";import{t as s}from"./QBtn-BUSdPaf4.js";import{n as c}from"./use-tours-IVbXTmz2.js";import{t as l}from"./QTooltip-xYZ6KNu2.js";var u=o({__name:`TourReplayButton`,props:{tourId:{}},setup(o){let u=o,{runTour:d}=c();function f(){d(u.tourId)}return(o,c)=>(t(),i(s,{flat:``,round:``,dense:``,icon:`help_outline`,size:`sm`,color:`kobo-2`,"aria-label":o.$t(`help.replayThis`),onClick:f},{default:n(()=>[r(l,null,{default:n(()=>[a(e(o.$t(`help.replayThis`)),1)]),_:1})]),_:1},8,[`aria-label`]))}});export{u as t};
1
+ import{pt as e}from"./reactivity.esm-bundler-DY1JkAEA.js";import{L as t,Y as n,_ as r,d as i,g as a,y as o}from"./runtime-core.esm-bundler-Bqg71Vll.js";import{t as s}from"./QBtn-BUSdPaf4.js";import{n as c}from"./use-tours-COLDth2h.js";import{t as l}from"./QTooltip-C9qaLW_h.js";var u=o({__name:`TourReplayButton`,props:{tourId:{}},setup(o){let u=o,{runTour:d}=c();function f(){d(u.tourId)}return(o,c)=>(t(),i(s,{flat:``,round:``,dense:``,icon:`help_outline`,size:`sm`,color:`kobo-2`,"aria-label":o.$t(`help.replayThis`),onClick:f},{default:n(()=>[r(l,null,{default:n(()=>[a(e(o.$t(`help.replayThis`)),1)]),_:1})]),_:1},8,[`aria-label`]))}});export{u as t};
@@ -1 +1 @@
1
- import{M as e,lt as t,pt as n,v as r}from"./reactivity.esm-bundler-DY1JkAEA.js";import{L as i,Y as a,_ as o,d as s,f as c,g as l,l as u,p as d,r as f,u as p,y as m,z as h}from"./runtime-core.esm-bundler-Bqg71Vll.js";import{$ as g,d as _}from"./dom-BtYTvLeN.js";import{l as v,t as y}from"./QBtn-BUSdPaf4.js";import{Qt as b,Ut as x,at as S,dt as C,st as w,ut as T}from"./index-CbyHfF8I.js";import{a as E}from"./use-tours-IVbXTmz2.js";import{t as D}from"./QTooltip-xYZ6KNu2.js";import{t as O}from"./formatters-C22K9vlC.js";function k(e){let t=[],n=[],r=[],i=[];for(let a of e){if(a.status!==`COMPLETED`){n.push(a);continue}a.conclusion===`FAILURE`||a.conclusion===`CANCELLED`||a.conclusion===`TIMED_OUT`?t.push(a):a.conclusion===`SUCCESS`?r.push(a):i.push(a)}let a=(e,t)=>e.name.localeCompare(t.name);return t.sort(a),n.sort(a),r.sort(a),i.sort(a),{failed:t,pending:n,passed:r,skipped:i}}var A={"awaiting-user":{kind:`awaiting-user`,icon:`help`,color:`amber-5`},error:{kind:`error`,icon:`warning`,color:`red-5`},quota:{kind:`quota`,icon:`warning`,color:`red-5`}};function j(e,t,n){let r=[];if(e.status===`quota`&&n===`transient`)r.push({kind:`quota-retry`,icon:`autorenew`,color:`amber-5`});else{let t=A[e.status];t&&r.push(t)}return t&&C(t)&&!M(e.prCiFailureDismissedAt,t)&&r.push({kind:`ci-failed`,icon:`cancel`,color:`red-5`}),t&&T(t)&&!M(e.prChangesDismissedAt,t)&&r.push({kind:`changes-requested`,icon:`rate_review`,color:`red-5`}),t?.readyToMerge&&!w(e.status)&&r.push({kind:`ready-to-merge`,icon:`check_circle`,color:`green-5`}),r}function M(e,t){return e?t.updatedAt<=e:!1}var N={key:0,class:`text-caption q-mt-xs`},P={key:1,class:`q-ml-xs text-kobo-3`},F={key:1,class:`row items-center no-wrap ci-recap`},I={class:`text-amber-5`},L={class:`text-kobo-2`},R={class:`text-kobo-3`},z={class:`text-red-5`},B={class:`text-weight-medium text-amber-4 q-mb-xs row items-center no-wrap`},V={key:0,class:`text-red-4 q-mt-xs`},H={class:`text-kobo-2 q-mt-xs`},U=E(m({__name:`WorkspaceAttentionLabels`,props:{workspace:{},ciRecapOnly:{type:Boolean}},setup(m){let C=m,w=S(),T=_(),{t:E}=b(),{timeAgo:A}=O(),M=u(()=>j(C.workspace,w.prSnapshots[C.workspace.id],w.pendingQuotaBackoffs[C.workspace.id]?.reason===`transient`?`transient`:`quota`)),U=u(()=>k(w.prSnapshots[C.workspace.id]?.ci.checks??[])),W=u(()=>U.value.pending.length>0),G=r(!1);async function K(){if(!G.value){G.value=!0;try{let e=await x(`/api/workspaces/${C.workspace.id}/start-ci-fix`,{method:`POST`}),t=await e.json().catch(()=>({}));if(!e.ok){T.notify({type:`negative`,message:t.error??E(`tools.fixCiFailed`),position:`top`,timeout:0});return}T.notify({type:`positive`,message:E(`tools.fixCiLaunched`),position:`top`,timeout:3e3})}catch(e){let t=e instanceof Error?e.message:E(`tools.fixCiFailed`);T.notify({type:`negative`,message:t,position:`top`,timeout:0})}finally{G.value=!1}}}function q(e){switch(e){case`awaiting-user`:return E(`workspaceStatus.awaitingUser`);case`error`:return E(`workspaceStatus.error`);case`quota`:return E(`workspaceStatus.quota`);case`quota-retry`:return E(`workspaceStatus.retrying`);case`ci-failed`:return E(`workspaceList.attentionCiFailed`);case`changes-requested`:return E(`workspaceList.attentionChangesRequested`);case`ready-to-merge`:return E(`workspaceList.attentionReadyToMerge`)}}return(r,u)=>!m.ciRecapOnly&&M.value.length>0||W.value?(i(),d(`div`,N,[m.ciRecapOnly?c(``,!0):(i(!0),d(f,{key:0},h(M.value,(r,u)=>(i(),d(`div`,{key:r.kind,class:`row items-center no-wrap`},[o(v,{name:r.icon,size:`xs`,color:r.color,class:`q-mr-xs`},null,8,[`name`,`color`]),p(`span`,{class:t(`text-${r.color}`)},n(q(r.kind)),3),r.kind===`ci-failed`&&!m.workspace.archivedAt?(i(),s(y,{key:0,flat:``,dense:``,round:``,size:`xs`,color:`red-4`,icon:`build_circle`,class:`q-ml-xs`,loading:G.value,disable:G.value,onClick:g(K,[`stop`])},{default:a(()=>[o(D,null,{default:a(()=>[l(n(e(E)(`tools.fixCiTooltip`)),1)]),_:1})]),_:1},8,[`loading`,`disable`])):c(``,!0),u===M.value.length-1?(i(),d(`span`,P,` · `+n(e(A)(m.workspace.updatedAt)),1)):c(``,!0)]))),128)),W.value?(i(),d(`div`,F,[o(v,{name:`hourglass_empty`,size:`12px`,color:`amber-5`,class:`q-mr-xs`}),p(`span`,I,n(e(E)(`git.pr.ci.pendingCount`,{n:U.value.pending.length})),1),u[2]||=p(`span`,{class:`q-mx-xs text-kobo-3`},`·`,-1),o(v,{name:`check_circle`,size:`12px`,color:`green-5`,class:`q-mr-xs`}),p(`span`,L,n(U.value.passed.length),1),U.value.skipped.length>0?(i(),d(f,{key:0},[u[0]||=p(`span`,{class:`q-mx-xs text-kobo-3`},`·`,-1),o(v,{name:`remove_circle_outline`,size:`12px`,color:`kobo-3`,class:`q-mr-xs`}),p(`span`,R,n(U.value.skipped.length),1)],64)):c(``,!0),U.value.failed.length>0?(i(),d(f,{key:1},[u[1]||=p(`span`,{class:`q-mx-xs text-kobo-3`},`·`,-1),o(v,{name:`cancel`,size:`12px`,color:`red-5`,class:`q-mr-xs`}),p(`span`,z,n(U.value.failed.length),1)],64)):c(``,!0),o(D,{anchor:`bottom start`,self:`top start`,class:`ci-recap-tooltip`},{default:a(()=>[p(`div`,B,[o(v,{name:`hourglass_empty`,size:`13px`,class:`q-mr-xs`}),l(` `+n(e(E)(`git.pr.ci.pendingCount`,{n:U.value.pending.length})),1)]),(i(!0),d(f,null,h(U.value.pending,e=>(i(),d(`div`,{key:e.name,class:`ci-recap-tooltip__job`},n(e.name),1))),128)),U.value.failed.length>0?(i(),d(`div`,V,n(e(E)(`git.pr.ci.failedCount`,{n:U.value.failed.length})),1)):c(``,!0),p(`div`,H,n(e(E)(`git.pr.ci.passedCount`,{n:U.value.passed.length}))+` · `+n(e(E)(`git.pr.ci.skippedCount`,{n:U.value.skipped.length})),1)]),_:1})])):c(``,!0)])):c(``,!0)}}),[[`__scopeId`,`data-v-7bb2dad6`]]);export{j as n,k as r,U as t};
1
+ import{M as e,lt as t,pt as n,v as r}from"./reactivity.esm-bundler-DY1JkAEA.js";import{L as i,Y as a,_ as o,d as s,f as c,g as l,l as u,p as d,r as f,u as p,y as m,z as h}from"./runtime-core.esm-bundler-Bqg71Vll.js";import{$ as g,d as _}from"./dom-BtYTvLeN.js";import{l as v,t as y}from"./QBtn-BUSdPaf4.js";import{Qt as b,Ut as x,at as S,dt as C,st as w,ut as T}from"./index-z1Oh2-I_.js";import{a as E}from"./use-tours-COLDth2h.js";import{t as D}from"./QTooltip-C9qaLW_h.js";import{t as O}from"./formatters-BFocC6LJ.js";function k(e){let t=[],n=[],r=[],i=[];for(let a of e){if(a.status!==`COMPLETED`){n.push(a);continue}a.conclusion===`FAILURE`||a.conclusion===`CANCELLED`||a.conclusion===`TIMED_OUT`?t.push(a):a.conclusion===`SUCCESS`?r.push(a):i.push(a)}let a=(e,t)=>e.name.localeCompare(t.name);return t.sort(a),n.sort(a),r.sort(a),i.sort(a),{failed:t,pending:n,passed:r,skipped:i}}var A={"awaiting-user":{kind:`awaiting-user`,icon:`help`,color:`amber-5`},error:{kind:`error`,icon:`warning`,color:`red-5`},quota:{kind:`quota`,icon:`warning`,color:`red-5`}};function j(e,t,n){let r=[];if(e.status===`quota`&&n===`transient`)r.push({kind:`quota-retry`,icon:`autorenew`,color:`amber-5`});else{let t=A[e.status];t&&r.push(t)}return t&&C(t)&&!M(e.prCiFailureDismissedAt,t)&&r.push({kind:`ci-failed`,icon:`cancel`,color:`red-5`}),t&&T(t)&&!M(e.prChangesDismissedAt,t)&&r.push({kind:`changes-requested`,icon:`rate_review`,color:`red-5`}),t?.readyToMerge&&!w(e.status)&&r.push({kind:`ready-to-merge`,icon:`check_circle`,color:`green-5`}),r}function M(e,t){return e?t.updatedAt<=e:!1}var N={key:0,class:`text-caption q-mt-xs`},P={key:1,class:`q-ml-xs text-kobo-3`},F={key:1,class:`row items-center no-wrap ci-recap`},I={class:`text-amber-5`},L={class:`text-kobo-2`},R={class:`text-kobo-3`},z={class:`text-red-5`},B={class:`text-weight-medium text-amber-4 q-mb-xs row items-center no-wrap`},V={key:0,class:`text-red-4 q-mt-xs`},H={class:`text-kobo-2 q-mt-xs`},U=E(m({__name:`WorkspaceAttentionLabels`,props:{workspace:{},ciRecapOnly:{type:Boolean}},setup(m){let C=m,w=S(),T=_(),{t:E}=b(),{timeAgo:A}=O(),M=u(()=>j(C.workspace,w.prSnapshots[C.workspace.id],w.pendingQuotaBackoffs[C.workspace.id]?.reason===`transient`?`transient`:`quota`)),U=u(()=>k(w.prSnapshots[C.workspace.id]?.ci.checks??[])),W=u(()=>U.value.pending.length>0),G=r(!1);async function K(){if(!G.value){G.value=!0;try{let e=await x(`/api/workspaces/${C.workspace.id}/start-ci-fix`,{method:`POST`}),t=await e.json().catch(()=>({}));if(!e.ok){T.notify({type:`negative`,message:t.error??E(`tools.fixCiFailed`),position:`top`,timeout:0});return}T.notify({type:`positive`,message:E(`tools.fixCiLaunched`),position:`top`,timeout:3e3})}catch(e){let t=e instanceof Error?e.message:E(`tools.fixCiFailed`);T.notify({type:`negative`,message:t,position:`top`,timeout:0})}finally{G.value=!1}}}function q(e){switch(e){case`awaiting-user`:return E(`workspaceStatus.awaitingUser`);case`error`:return E(`workspaceStatus.error`);case`quota`:return E(`workspaceStatus.quota`);case`quota-retry`:return E(`workspaceStatus.retrying`);case`ci-failed`:return E(`workspaceList.attentionCiFailed`);case`changes-requested`:return E(`workspaceList.attentionChangesRequested`);case`ready-to-merge`:return E(`workspaceList.attentionReadyToMerge`)}}return(r,u)=>!m.ciRecapOnly&&M.value.length>0||W.value?(i(),d(`div`,N,[m.ciRecapOnly?c(``,!0):(i(!0),d(f,{key:0},h(M.value,(r,u)=>(i(),d(`div`,{key:r.kind,class:`row items-center no-wrap`},[o(v,{name:r.icon,size:`xs`,color:r.color,class:`q-mr-xs`},null,8,[`name`,`color`]),p(`span`,{class:t(`text-${r.color}`)},n(q(r.kind)),3),r.kind===`ci-failed`&&!m.workspace.archivedAt?(i(),s(y,{key:0,flat:``,dense:``,round:``,size:`xs`,color:`red-4`,icon:`build_circle`,class:`q-ml-xs`,loading:G.value,disable:G.value,onClick:g(K,[`stop`])},{default:a(()=>[o(D,null,{default:a(()=>[l(n(e(E)(`tools.fixCiTooltip`)),1)]),_:1})]),_:1},8,[`loading`,`disable`])):c(``,!0),u===M.value.length-1?(i(),d(`span`,P,` · `+n(e(A)(m.workspace.updatedAt)),1)):c(``,!0)]))),128)),W.value?(i(),d(`div`,F,[o(v,{name:`hourglass_empty`,size:`12px`,color:`amber-5`,class:`q-mr-xs`}),p(`span`,I,n(e(E)(`git.pr.ci.pendingCount`,{n:U.value.pending.length})),1),u[2]||=p(`span`,{class:`q-mx-xs text-kobo-3`},`·`,-1),o(v,{name:`check_circle`,size:`12px`,color:`green-5`,class:`q-mr-xs`}),p(`span`,L,n(U.value.passed.length),1),U.value.skipped.length>0?(i(),d(f,{key:0},[u[0]||=p(`span`,{class:`q-mx-xs text-kobo-3`},`·`,-1),o(v,{name:`remove_circle_outline`,size:`12px`,color:`kobo-3`,class:`q-mr-xs`}),p(`span`,R,n(U.value.skipped.length),1)],64)):c(``,!0),U.value.failed.length>0?(i(),d(f,{key:1},[u[1]||=p(`span`,{class:`q-mx-xs text-kobo-3`},`·`,-1),o(v,{name:`cancel`,size:`12px`,color:`red-5`,class:`q-mr-xs`}),p(`span`,z,n(U.value.failed.length),1)],64)):c(``,!0),o(D,{anchor:`bottom start`,self:`top start`,class:`ci-recap-tooltip`},{default:a(()=>[p(`div`,B,[o(v,{name:`hourglass_empty`,size:`13px`,class:`q-mr-xs`}),l(` `+n(e(E)(`git.pr.ci.pendingCount`,{n:U.value.pending.length})),1)]),(i(!0),d(f,null,h(U.value.pending,e=>(i(),d(`div`,{key:e.name,class:`ci-recap-tooltip__job`},n(e.name),1))),128)),U.value.failed.length>0?(i(),d(`div`,V,n(e(E)(`git.pr.ci.failedCount`,{n:U.value.failed.length})),1)):c(``,!0),p(`div`,H,n(e(E)(`git.pr.ci.passedCount`,{n:U.value.passed.length}))+` · `+n(e(E)(`git.pr.ci.skippedCount`,{n:U.value.skipped.length})),1)]),_:1})])):c(``,!0)])):c(``,!0)}}),[[`__scopeId`,`data-v-7bb2dad6`]]);export{j as n,k as r,U as t};
@@ -1 +1 @@
1
- .markdown-thinking[data-v-c2dfdaf1] p{margin:0 0 .4em}.markdown-thinking[data-v-c2dfdaf1] p:last-child{margin-bottom:0}.markdown-thinking[data-v-c2dfdaf1] code{background:#ffffff14;border-radius:3px;padding:.1em .3em}.thinking-expansion[data-v-c2dfdaf1] .q-item__section--side{margin-left:auto}.thinking-inline[data-v-c2dfdaf1]{min-height:20px;line-height:20px}.ask-user-question-panel[data-v-33b0d3cb]{border-top:1px solid #ffffff14;border-bottom:1px solid #ffffff14;max-height:38vh;overflow-y:auto}.ask-user-question-panel.collapsed[data-v-33b0d3cb]{max-height:none;overflow-y:visible}.ask-user-question-panel.collapsed .row[data-v-33b0d3cb]{margin-bottom:0}.aukq-stepper[data-v-33b0d3cb] .q-stepper__header{min-height:56px}.aukq-stepper[data-v-33b0d3cb] .q-stepper__tab{padding:8px 12px}.aukq-stepper[data-v-33b0d3cb] .q-stepper__title{white-space:nowrap;font-size:12px}.aukq-stepper[data-v-33b0d3cb] .q-stepper__caption{display:none}.aukq-stepper[data-v-33b0d3cb] .q-stepper__step-inner{padding:12px}.aukq-stepper[data-v-33b0d3cb] .q-stepper__nav{padding-top:8px}.aukq-options[data-v-33b0d3cb]{margin-bottom:4px}.auto-loop-panel[data-v-e4848b57]{padding:var(--kobo-space-sm);color:var(--kobo-text-2);border-bottom:1px solid var(--kobo-border-subtle)}.auto-loop-panel__heading[data-v-e4848b57],.auto-loop-panel__status[data-v-e4848b57],.auto-loop-panel__actions[data-v-e4848b57]{align-items:center;gap:var(--kobo-space-sm);flex-wrap:wrap;display:flex}.auto-loop-panel__heading[data-v-e4848b57]{justify-content:space-between}.auto-loop-panel__status--blocked[data-v-e4848b57]{color:var(--kobo-warning)}.auto-loop-panel__detail[data-v-e4848b57]{margin:var(--kobo-space-xs) 0}.auto-loop-panel__error[data-v-e4848b57]{color:var(--kobo-danger);margin:var(--kobo-space-xs) 0}.auto-loop-panel__messages[data-v-e4848b57]{margin-top:var(--kobo-space-sm)}.auto-loop-panel__messages summary[data-v-e4848b57]{cursor:pointer}.auto-loop-panel__messages ol[data-v-e4848b57]{margin:var(--kobo-space-sm) 0;padding-left:var(--kobo-space-xl);max-height:calc(var(--kobo-space-4xl) * 4);overflow-y:auto}.auto-loop-panel__messages li+li[data-v-e4848b57]{margin-top:var(--kobo-space-sm)}.auto-loop-panel__message-state[data-v-e4848b57]{color:var(--kobo-text-3)}.auto-loop-panel__content[data-v-e4848b57]{margin:var(--kobo-space-xs) 0;white-space:pre-wrap;overflow-wrap:anywhere}.quota-footer[data-v-cb0734fe]{white-space:nowrap;cursor:pointer;align-items:center;gap:.5rem;display:inline-flex}.quota-bucket-compact[data-v-cb0734fe]{align-items:center;gap:.3rem;display:inline-flex}.bucket-pct[data-v-cb0734fe]{font-variant-numeric:tabular-nums}.quota-bar[data-v-cb0734fe]{border:1px solid var(--kobo-border-strong);border-radius:4px;width:48px;height:7px}.full-bar[data-v-cb0734fe]{border-radius:3px;height:6px}.quota-menu[data-v-cb0734fe]{min-width:240px}.review-return-panel[data-v-582748c8]{padding:var(--kobo-space-sm);color:var(--kobo-text-2);border-bottom:1px solid var(--kobo-border-subtle)}.review-return-panel p[data-v-582748c8]{margin:var(--kobo-space-xs) 0}.review-return-panel__actions[data-v-582748c8]{gap:var(--kobo-space-sm);flex-wrap:wrap;display:flex}.review-return-panel__error[data-v-582748c8]{color:var(--kobo-danger)}.chat-input-container[data-v-4a1108f9]{background-color:var(--kobo-bg-deep);border-top:1px solid var(--kobo-border-subtle);min-height:48px;position:relative}.chat-input-container.chat-input-dragging[data-v-4a1108f9]{outline:2px dashed var(--kobo-accent);outline-offset:-2px}.chat-input[data-v-4a1108f9]{background-color:var(--kobo-surface);padding:4px 12px}.chat-input[data-v-4a1108f9] .q-field__control{min-height:32px}.chat-input[data-v-4a1108f9] textarea,.chat-input[data-v-4a1108f9] input{color:var(--kobo-text-2);font-size:13px}.chat-slash-popup[data-v-4a1108f9]{z-index:9999;position:absolute;bottom:calc(100% + 4px);left:8px;right:48px}.chat-file-popup[data-v-4a1108f9]{background-color:var(--kobo-surface);border:1px solid #ffffff1a;border-radius:6px;max-height:300px;overflow-y:auto}.chat-file-popup .chat-file-path[data-v-4a1108f9]{font-family:var(--kobo-font-mono);word-break:break-all;font-size:12px}.chat-file-popup .chat-file-item--active[data-v-4a1108f9]{background-color:#665fdd26}.attachment-tag[data-v-4a1108f9]{font-family:var(--kobo-font-mono);font-size:12px;line-height:1}.attachment-tag--uploading[data-v-4a1108f9]{background-color:var(--kobo-hover);border:1px solid var(--kobo-border);color:var(--kobo-text-3)}.attachment-tag--ready[data-v-4a1108f9]{color:var(--kobo-success);background-color:#34d3991f;border:1px solid #34d39959}.attachment-tag--error[data-v-4a1108f9]{color:var(--kobo-danger);background-color:#f871711f;border:1px solid #f8717159}.attachment-tag-label[data-v-4a1108f9]{text-overflow:ellipsis;white-space:nowrap;max-width:250px;overflow:hidden}.chat-hint[data-v-4a1108f9]{text-align:left;min-width:0;padding:2px 4px 0;font-size:10px}.chat-hint__shortcuts[data-v-4a1108f9]{flex:auto;min-width:0;overflow:hidden}.chat-hint__primary[data-v-4a1108f9]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-hint__status[data-v-4a1108f9],.chat-hint__interrupt[data-v-4a1108f9]{flex:none}.chat-hint kbd[data-v-4a1108f9]{background-color:var(--kobo-hover);font-family:var(--kobo-font-mono);border-radius:3px;padding:1px 4px;font-size:9px}.chat-shortcuts-menu[data-v-4a1108f9]{min-width:190px;font-size:12px}.queue-banner[data-v-4a1108f9]{background-color:#fbbf241f;border-bottom:1px solid #fbbf2459}.autoloop-banner[data-v-4a1108f9]{background-color:var(--kobo-surface-2);border-top:1px solid #665fdd66;border-bottom:1px solid #665fdd66}.voice-btn--recording[data-v-4a1108f9]{animation:1.1s ease-in-out infinite voice-pulse-4a1108f9}@keyframes voice-pulse-4a1108f9{0%{opacity:1;transform:scale(1)}50%{opacity:.86;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}.attachment-tag-close[data-v-4a1108f9]{color:var(--kobo-danger);opacity:.7}.attachment-tag-close[data-v-4a1108f9]:hover{opacity:1}.latest-thinking-panel[data-v-680337f1]{border-top:1px solid #ffffff0f}.permission-request-panel[data-v-7fa3c38b]{border-top:1px solid #ffffff14;border-bottom:1px solid #ffffff14}.permission-request-panel.collapsed .row[data-v-7fa3c38b]{margin-bottom:0}.permission-input-pre[data-v-7fa3c38b]{white-space:pre-wrap;word-break:break-word;background:#00000059;border-radius:4px;max-height:30vh;margin:0;padding:.5em .75em;font-size:12px;overflow-y:auto}.permission-file-path[data-v-7fa3c38b]{font-family:var(--kobo-font-mono);color:var(--kobo-text-2);word-break:break-all;margin-bottom:.4em;font-size:12px}.session-progress[data-v-79001747]{border-top:1px solid var(--kobo-border-subtle);min-width:0;padding:var(--kobo-space-xs) var(--kobo-space-sm);color:var(--kobo-text-2);background:var(--kobo-bg);flex:none;font-size:13px}.progress-rows[data-v-79001747]{overscroll-behavior:contain;max-height:min(30vh,240px);overflow-y:auto}.progress-row[data-v-79001747]{align-items:center;gap:var(--kobo-space-sm);padding:var(--kobo-space-xs) 0;display:flex}.progress-row+.progress-row[data-v-79001747]{border-top:1px solid var(--kobo-border-subtle)}.progress-content[data-v-79001747]{flex:1;min-width:0}.progress-heading[data-v-79001747]{gap:var(--kobo-space-xs) var(--kobo-space-sm);flex-wrap:wrap;display:flex}.progress-label[data-v-79001747]{overflow-wrap:anywhere;color:var(--kobo-text);font-weight:500}.progress-status[data-v-79001747]{color:var(--kobo-text-3);margin-left:auto}.progress-step[data-v-79001747]{overflow-wrap:anywhere;color:var(--kobo-text-3)}.progress-meter-row[data-v-79001747]{align-items:center;gap:var(--kobo-space-sm);margin-top:var(--kobo-space-xs);display:flex}.progress-track[data-v-79001747]{height:var(--kobo-space-xs);background:var(--kobo-border);flex:1;overflow:hidden}.progress-track.indeterminate[data-v-79001747]{border:1px solid var(--kobo-text-3);background:var(--kobo-surface-2)}.progress-fill[data-v-79001747]{background:var(--kobo-text-2);height:100%}.progress-values[data-v-79001747]{font-variant-numeric:tabular-nums;font-size:12px}[data-status=succeeded] .progress-status[data-v-79001747]{color:var(--kobo-success)}[data-status=failed] .progress-status[data-v-79001747]{color:var(--kobo-danger)}[data-status=interrupted] .progress-status[data-v-79001747]{color:var(--kobo-warning)}.progress-dismiss[data-v-79001747],.progress-overflow[data-v-79001747]{font:inherit;color:var(--kobo-text-2);border-radius:var(--kobo-radius-sm);cursor:pointer;background:0 0;border:0}.progress-dismiss[data-v-79001747]:hover,.progress-overflow[data-v-79001747]:hover{background:var(--kobo-hover)}:is(.progress-dismiss[data-v-79001747]:focus-visible,.progress-overflow[data-v-79001747]:focus-visible){outline:2px solid var(--kobo-accent);outline-offset:-2px}.progress-dismiss[data-v-79001747]{flex:0 0 44px;place-items:center;width:44px;min-height:44px;display:grid}.progress-dismiss .material-icons[data-v-79001747]{font-size:16px}.progress-overflow[data-v-79001747]{min-height:44px;padding:var(--kobo-space-xs) var(--kobo-space-sm);overflow-wrap:anywhere;max-width:100%}.progress-error[data-v-79001747]{color:var(--kobo-danger);overflow-wrap:anywhere}.progress-announcement[data-v-79001747]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.history-results[data-v-b57fddbc]{border:1px solid var(--kobo-border);background:var(--kobo-bg-deep);max-height:360px;overflow-y:auto}.history-result[data-v-b57fddbc]{border-left:2px solid #0000;min-height:62px;padding:9px 12px}.history-result+.history-result[data-v-b57fddbc]{border-top:1px solid #ffffff0f}.history-result[data-v-b57fddbc]:hover{border-left-color:var(--kobo-accent);background:#818cf81a}.history-result-avatar[data-v-b57fddbc]{min-width:32px;padding-right:4px}.history-result-snippet[data-v-b57fddbc]{color:var(--kobo-text-2);white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:3px;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.whip-overlay{z-index:10000;cursor:none;touch-action:none;width:100vw;height:100vh;position:fixed;top:0;bottom:0;left:0;right:0}.whip-canvas{display:block}.wp-title[data-v-4bc5c8fa]{flex:1 1 0;justify-content:flex-start;min-width:0}.wp-title[data-v-4bc5c8fa] .q-btn__content{flex-wrap:nowrap;justify-content:flex-start;min-width:0}.wp-status[data-v-4bc5c8fa],.wp-configure[data-v-4bc5c8fa]{white-space:nowrap;flex-shrink:0}.wp-status[data-v-4bc5c8fa],.wp-active-model[data-v-4bc5c8fa]{font-size:10px}.wp-active-model[data-v-4bc5c8fa]{min-width:0;max-width:180px}.wp-toolbar-menu[data-v-4bc5c8fa]{width:300px;max-width:calc(100vw - 24px)}.wp-header>.q-btn[data-v-4bc5c8fa]{flex-shrink:0}.wp-header>.wp-title[data-v-4bc5c8fa]{flex-shrink:1}.wp-header[data-v-4bc5c8fa]{background-color:var(--kobo-bg-deep);border-bottom:1px solid var(--kobo-border-subtle);min-height:48px}.command-palette-card[data-v-4bc5c8fa]{width:min(520px,100vw - 32px)}.palette-hint[data-v-4bc5c8fa]{font-family:var(--kobo-font-mono);color:var(--kobo-text-3);font-size:11px}.palette-shortcut-hint[data-v-4bc5c8fa]{font-family:var(--kobo-font-mono);color:var(--kobo-text-3);background-color:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-sm);font-size:11px}.wp-archived-banner[data-v-4bc5c8fa]{background-color:#ffffff08;border-bottom:1px solid #ffffff0f}.wp-purged-banner[data-v-4bc5c8fa]{background-color:#f59e0b14;border-bottom:1px solid #f59e0b2e}.wp-pending-prompt-banner[data-v-4bc5c8fa]{background-color:#f59e0b14;border-bottom:1px solid #f59e0b26}
1
+ .markdown-thinking[data-v-c2dfdaf1] p{margin:0 0 .4em}.markdown-thinking[data-v-c2dfdaf1] p:last-child{margin-bottom:0}.markdown-thinking[data-v-c2dfdaf1] code{background:#ffffff14;border-radius:3px;padding:.1em .3em}.thinking-expansion[data-v-c2dfdaf1] .q-item__section--side{margin-left:auto}.thinking-inline[data-v-c2dfdaf1]{min-height:20px;line-height:20px}.ask-user-question-panel[data-v-33b0d3cb]{border-top:1px solid #ffffff14;border-bottom:1px solid #ffffff14;max-height:38vh;overflow-y:auto}.ask-user-question-panel.collapsed[data-v-33b0d3cb]{max-height:none;overflow-y:visible}.ask-user-question-panel.collapsed .row[data-v-33b0d3cb]{margin-bottom:0}.aukq-stepper[data-v-33b0d3cb] .q-stepper__header{min-height:56px}.aukq-stepper[data-v-33b0d3cb] .q-stepper__tab{padding:8px 12px}.aukq-stepper[data-v-33b0d3cb] .q-stepper__title{white-space:nowrap;font-size:12px}.aukq-stepper[data-v-33b0d3cb] .q-stepper__caption{display:none}.aukq-stepper[data-v-33b0d3cb] .q-stepper__step-inner{padding:12px}.aukq-stepper[data-v-33b0d3cb] .q-stepper__nav{padding-top:8px}.aukq-options[data-v-33b0d3cb]{margin-bottom:4px}.auto-loop-panel[data-v-e4848b57]{padding:var(--kobo-space-sm);color:var(--kobo-text-2);border-bottom:1px solid var(--kobo-border-subtle)}.auto-loop-panel__heading[data-v-e4848b57],.auto-loop-panel__status[data-v-e4848b57],.auto-loop-panel__actions[data-v-e4848b57]{align-items:center;gap:var(--kobo-space-sm);flex-wrap:wrap;display:flex}.auto-loop-panel__heading[data-v-e4848b57]{justify-content:space-between}.auto-loop-panel__status--blocked[data-v-e4848b57]{color:var(--kobo-warning)}.auto-loop-panel__detail[data-v-e4848b57]{margin:var(--kobo-space-xs) 0}.auto-loop-panel__error[data-v-e4848b57]{color:var(--kobo-danger);margin:var(--kobo-space-xs) 0}.auto-loop-panel__messages[data-v-e4848b57]{margin-top:var(--kobo-space-sm)}.auto-loop-panel__messages summary[data-v-e4848b57]{cursor:pointer}.auto-loop-panel__messages ol[data-v-e4848b57]{margin:var(--kobo-space-sm) 0;padding-left:var(--kobo-space-xl);max-height:calc(var(--kobo-space-4xl) * 4);overflow-y:auto}.auto-loop-panel__messages li+li[data-v-e4848b57]{margin-top:var(--kobo-space-sm)}.auto-loop-panel__message-state[data-v-e4848b57]{color:var(--kobo-text-3)}.auto-loop-panel__content[data-v-e4848b57]{margin:var(--kobo-space-xs) 0;white-space:pre-wrap;overflow-wrap:anywhere}.quota-footer[data-v-cb0734fe]{white-space:nowrap;cursor:pointer;align-items:center;gap:.5rem;display:inline-flex}.quota-bucket-compact[data-v-cb0734fe]{align-items:center;gap:.3rem;display:inline-flex}.bucket-pct[data-v-cb0734fe]{font-variant-numeric:tabular-nums}.quota-bar[data-v-cb0734fe]{border:1px solid var(--kobo-border-strong);border-radius:4px;width:48px;height:7px}.full-bar[data-v-cb0734fe]{border-radius:3px;height:6px}.quota-menu[data-v-cb0734fe]{min-width:240px}.review-return-panel[data-v-582748c8]{padding:var(--kobo-space-sm);color:var(--kobo-text-2);border-bottom:1px solid var(--kobo-border-subtle)}.review-return-panel p[data-v-582748c8]{margin:var(--kobo-space-xs) 0}.review-return-panel__actions[data-v-582748c8]{gap:var(--kobo-space-sm);flex-wrap:wrap;display:flex}.review-return-panel__error[data-v-582748c8]{color:var(--kobo-danger)}.chat-input-container[data-v-4a1108f9]{background-color:var(--kobo-bg-deep);border-top:1px solid var(--kobo-border-subtle);min-height:48px;position:relative}.chat-input-container.chat-input-dragging[data-v-4a1108f9]{outline:2px dashed var(--kobo-accent);outline-offset:-2px}.chat-input[data-v-4a1108f9]{background-color:var(--kobo-surface);padding:4px 12px}.chat-input[data-v-4a1108f9] .q-field__control{min-height:32px}.chat-input[data-v-4a1108f9] textarea,.chat-input[data-v-4a1108f9] input{color:var(--kobo-text-2);font-size:13px}.chat-slash-popup[data-v-4a1108f9]{z-index:9999;position:absolute;bottom:calc(100% + 4px);left:8px;right:48px}.chat-file-popup[data-v-4a1108f9]{background-color:var(--kobo-surface);border:1px solid #ffffff1a;border-radius:6px;max-height:300px;overflow-y:auto}.chat-file-popup .chat-file-path[data-v-4a1108f9]{font-family:var(--kobo-font-mono);word-break:break-all;font-size:12px}.chat-file-popup .chat-file-item--active[data-v-4a1108f9]{background-color:#665fdd26}.attachment-tag[data-v-4a1108f9]{font-family:var(--kobo-font-mono);font-size:12px;line-height:1}.attachment-tag--uploading[data-v-4a1108f9]{background-color:var(--kobo-hover);border:1px solid var(--kobo-border);color:var(--kobo-text-3)}.attachment-tag--ready[data-v-4a1108f9]{color:var(--kobo-success);background-color:#34d3991f;border:1px solid #34d39959}.attachment-tag--error[data-v-4a1108f9]{color:var(--kobo-danger);background-color:#f871711f;border:1px solid #f8717159}.attachment-tag-label[data-v-4a1108f9]{text-overflow:ellipsis;white-space:nowrap;max-width:250px;overflow:hidden}.chat-hint[data-v-4a1108f9]{text-align:left;min-width:0;padding:2px 4px 0;font-size:10px}.chat-hint__shortcuts[data-v-4a1108f9]{flex:auto;min-width:0;overflow:hidden}.chat-hint__primary[data-v-4a1108f9]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chat-hint__status[data-v-4a1108f9],.chat-hint__interrupt[data-v-4a1108f9]{flex:none}.chat-hint kbd[data-v-4a1108f9]{background-color:var(--kobo-hover);font-family:var(--kobo-font-mono);border-radius:3px;padding:1px 4px;font-size:9px}.chat-shortcuts-menu[data-v-4a1108f9]{min-width:190px;font-size:12px}.queue-banner[data-v-4a1108f9]{background-color:#fbbf241f;border-bottom:1px solid #fbbf2459}.autoloop-banner[data-v-4a1108f9]{background-color:var(--kobo-surface-2);border-top:1px solid #665fdd66;border-bottom:1px solid #665fdd66}.voice-btn--recording[data-v-4a1108f9]{animation:1.1s ease-in-out infinite voice-pulse-4a1108f9}@keyframes voice-pulse-4a1108f9{0%{opacity:1;transform:scale(1)}50%{opacity:.86;transform:scale(1.06)}to{opacity:1;transform:scale(1)}}.attachment-tag-close[data-v-4a1108f9]{color:var(--kobo-danger);opacity:.7}.attachment-tag-close[data-v-4a1108f9]:hover{opacity:1}.latest-thinking-panel[data-v-680337f1]{border-top:1px solid #ffffff0f}.permission-request-panel[data-v-7fa3c38b]{border-top:1px solid #ffffff14;border-bottom:1px solid #ffffff14}.permission-request-panel.collapsed .row[data-v-7fa3c38b]{margin-bottom:0}.permission-input-pre[data-v-7fa3c38b]{white-space:pre-wrap;word-break:break-word;background:#00000059;border-radius:4px;max-height:30vh;margin:0;padding:.5em .75em;font-size:12px;overflow-y:auto}.permission-file-path[data-v-7fa3c38b]{font-family:var(--kobo-font-mono);color:var(--kobo-text-2);word-break:break-all;margin-bottom:.4em;font-size:12px}.session-progress[data-v-0f3e43f1]{border-top:1px solid var(--kobo-border-subtle);min-width:0;padding:var(--kobo-space-xs) var(--kobo-space-sm);color:var(--kobo-text-2);background:var(--kobo-bg);flex:none;font-size:13px}.progress-rows[data-v-0f3e43f1]{overscroll-behavior:contain;max-height:min(30vh,240px);overflow-y:auto}.progress-row[data-v-0f3e43f1]{align-items:center;gap:var(--kobo-space-sm);padding:var(--kobo-space-xs) 0;display:flex}.progress-row+.progress-row[data-v-0f3e43f1]{border-top:1px solid var(--kobo-border-subtle)}.progress-content[data-v-0f3e43f1]{flex:1;min-width:0}.progress-heading[data-v-0f3e43f1]{gap:var(--kobo-space-xs) var(--kobo-space-sm);flex-wrap:wrap;display:flex}.progress-label[data-v-0f3e43f1]{overflow-wrap:anywhere;color:var(--kobo-text);font-weight:500}.progress-status[data-v-0f3e43f1]{color:var(--kobo-text-3);margin-left:auto}.progress-step[data-v-0f3e43f1]{overflow-wrap:anywhere;color:var(--kobo-text-3)}.progress-meter-row[data-v-0f3e43f1]{align-items:center;gap:var(--kobo-space-sm);margin-top:var(--kobo-space-xs);display:flex}.progress-track[data-v-0f3e43f1]{height:var(--kobo-space-xs);background:var(--kobo-border);flex:1;overflow:hidden}.progress-track.indeterminate[data-v-0f3e43f1]{border:1px solid var(--kobo-text-3);background:var(--kobo-surface-2)}.progress-fill[data-v-0f3e43f1]{background:var(--kobo-text-2);height:100%}.progress-values[data-v-0f3e43f1]{font-variant-numeric:tabular-nums;font-size:12px}[data-status=succeeded] .progress-status[data-v-0f3e43f1]{color:var(--kobo-success)}[data-status=failed] .progress-status[data-v-0f3e43f1]{color:var(--kobo-danger)}[data-status=interrupted] .progress-status[data-v-0f3e43f1]{color:var(--kobo-warning)}.progress-dismiss[data-v-0f3e43f1],.progress-overflow[data-v-0f3e43f1]{font:inherit;color:var(--kobo-text-2);border-radius:var(--kobo-radius-sm);cursor:pointer;background:0 0;border:0}.progress-dismiss[data-v-0f3e43f1]:hover,.progress-overflow[data-v-0f3e43f1]:hover{background:var(--kobo-hover)}:is(.progress-dismiss[data-v-0f3e43f1]:focus-visible,.progress-overflow[data-v-0f3e43f1]:focus-visible){outline:2px solid var(--kobo-accent);outline-offset:-2px}.progress-dismiss[data-v-0f3e43f1]{flex:0 0 44px;place-items:center;width:44px;min-height:44px;display:grid}.progress-dismiss .material-icons[data-v-0f3e43f1]{font-size:16px}.progress-overflow[data-v-0f3e43f1]{min-height:44px;padding:var(--kobo-space-xs) var(--kobo-space-sm);overflow-wrap:anywhere;max-width:100%}.progress-error[data-v-0f3e43f1]{color:var(--kobo-danger);overflow-wrap:anywhere}.progress-announcement[data-v-0f3e43f1]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.history-results[data-v-b57fddbc]{border:1px solid var(--kobo-border);background:var(--kobo-bg-deep);max-height:360px;overflow-y:auto}.history-result[data-v-b57fddbc]{border-left:2px solid #0000;min-height:62px;padding:9px 12px}.history-result+.history-result[data-v-b57fddbc]{border-top:1px solid #ffffff0f}.history-result[data-v-b57fddbc]:hover{border-left-color:var(--kobo-accent);background:#818cf81a}.history-result-avatar[data-v-b57fddbc]{min-width:32px;padding-right:4px}.history-result-snippet[data-v-b57fddbc]{color:var(--kobo-text-2);white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:3px;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.whip-overlay{z-index:10000;cursor:none;touch-action:none;width:100vw;height:100vh;position:fixed;top:0;bottom:0;left:0;right:0}.whip-canvas{display:block}.wp-title[data-v-4bc5c8fa]{flex:1 1 0;justify-content:flex-start;min-width:0}.wp-title[data-v-4bc5c8fa] .q-btn__content{flex-wrap:nowrap;justify-content:flex-start;min-width:0}.wp-status[data-v-4bc5c8fa],.wp-configure[data-v-4bc5c8fa]{white-space:nowrap;flex-shrink:0}.wp-status[data-v-4bc5c8fa],.wp-active-model[data-v-4bc5c8fa]{font-size:10px}.wp-active-model[data-v-4bc5c8fa]{min-width:0;max-width:180px}.wp-toolbar-menu[data-v-4bc5c8fa]{width:300px;max-width:calc(100vw - 24px)}.wp-header>.q-btn[data-v-4bc5c8fa]{flex-shrink:0}.wp-header>.wp-title[data-v-4bc5c8fa]{flex-shrink:1}.wp-header[data-v-4bc5c8fa]{background-color:var(--kobo-bg-deep);border-bottom:1px solid var(--kobo-border-subtle);min-height:48px}.command-palette-card[data-v-4bc5c8fa]{width:min(520px,100vw - 32px)}.palette-hint[data-v-4bc5c8fa]{font-family:var(--kobo-font-mono);color:var(--kobo-text-3);font-size:11px}.palette-shortcut-hint[data-v-4bc5c8fa]{font-family:var(--kobo-font-mono);color:var(--kobo-text-3);background-color:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-sm);font-size:11px}.wp-archived-banner[data-v-4bc5c8fa]{background-color:#ffffff08;border-bottom:1px solid #ffffff0f}.wp-purged-banner[data-v-4bc5c8fa]{background-color:#f59e0b14;border-bottom:1px solid #f59e0b2e}.wp-pending-prompt-banner[data-v-4bc5c8fa]{background-color:#f59e0b14;border-bottom:1px solid #f59e0b26}