@shawnstack/quickforge 1.7.10 → 1.7.12

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 (124) hide show
  1. package/dist/assets/{AgentProfilesPage-Dw9orPNt.js → AgentProfilesPage-CApCpsDd.js} +1 -1
  2. package/dist/assets/ChatPanelHost-COTO7swS.js +48 -0
  3. package/dist/assets/CloudAccountSettingsPage-Be5r3dtv.js +1 -0
  4. package/dist/assets/{PluginsPage-Dj1bmsEf.js → PluginsPage-BIbIDfWY.js} +1 -1
  5. package/dist/assets/ScheduledTasksPage-BOqmBNCx.js +2 -0
  6. package/dist/assets/{SettingsWorkspacePage-CFuvSATi.js → SettingsWorkspacePage-BCRtycRN.js} +304 -304
  7. package/dist/assets/ShareLinksSettingsPage-BrxQacJn.js +1 -0
  8. package/dist/assets/{SharedConversationPage-DLo05j7c.js → SharedConversationPage-DJa0M0El.js} +1 -1
  9. package/dist/assets/TerminalDock-Cqz_9mTC.js +2 -0
  10. package/dist/assets/WorkspaceInspector-C-GOK81D.js +36 -0
  11. package/dist/assets/{abnfDiagram-VRR7QNED-CMhVoYUh.js → abnfDiagram-VRR7QNED-DGklo3PO.js} +1 -1
  12. package/dist/assets/{architectureDiagram-ZJ3FMSHR-C52qL6Hg.js → architectureDiagram-ZJ3FMSHR-CioWLVTp.js} +1 -1
  13. package/dist/assets/{blockDiagram-677ZJIJ3-CM3XbLol.js → blockDiagram-677ZJIJ3-BJWBq5e9.js} +1 -1
  14. package/dist/assets/{c4Diagram-LMCZKHZV-D7Bh1ui1.js → c4Diagram-LMCZKHZV-BacRvqFK.js} +1 -1
  15. package/dist/assets/channel-CeXY-wZo.js +1 -0
  16. package/dist/assets/{chunk-32BRIVSS-xgrtbT8e.js → chunk-32BRIVSS-B53BNE2C.js} +1 -1
  17. package/dist/assets/{chunk-52WLFC77-CDbaHw80.js → chunk-52WLFC77-CYq4hT4f.js} +1 -1
  18. package/dist/assets/{chunk-C7G6YPKG-ZMLUvfLy.js → chunk-C7G6YPKG-KFaGpP_Z.js} +1 -1
  19. package/dist/assets/{chunk-EX3LRPZG-BcQhaqt7.js → chunk-EX3LRPZG-DqVd_ihG.js} +1 -1
  20. package/dist/assets/{chunk-FWX5IMBZ-DrnrdrSu.js → chunk-FWX5IMBZ-BxRjZkOP.js} +2 -2
  21. package/dist/assets/{chunk-HOUHSVGY-tdc-Z9eW.js → chunk-HOUHSVGY-C9QO8omv.js} +1 -1
  22. package/dist/assets/{chunk-ICXQ74PX-Cd7igVGt.js → chunk-ICXQ74PX-ClbGPgLV.js} +1 -1
  23. package/dist/assets/{chunk-MOJQB5TN-CLTjV5ov.js → chunk-MOJQB5TN-Ba4wlF1J.js} +1 -1
  24. package/dist/assets/{chunk-OGEWGWER-TgvkXkFX.js → chunk-OGEWGWER-DczhQmcx.js} +1 -1
  25. package/dist/assets/{chunk-PUDLZKDR-C5GMVYup.js → chunk-PUDLZKDR-CPWpcKUF.js} +1 -1
  26. package/dist/assets/{chunk-Q4XR5HBZ-fo5-HsqY.js → chunk-Q4XR5HBZ-CiF6T--X.js} +1 -1
  27. package/dist/assets/{chunk-V7JOEXUC-CEDazV6w.js → chunk-V7JOEXUC-Dxv0zwmw.js} +1 -1
  28. package/dist/assets/{chunk-VAUOI2AC-CWYjg8zE.js → chunk-VAUOI2AC-D3J5bw1P.js} +1 -1
  29. package/dist/assets/{chunk-VR4S4FIN-C_-eEj-9.js → chunk-VR4S4FIN-BXQSwwII.js} +1 -1
  30. package/dist/assets/{chunk-WYO6CB5R-NF-MsJJR.js → chunk-WYO6CB5R-C0azl-fk.js} +2 -2
  31. package/dist/assets/{chunk-ZGVPDNZ5-CRrAYi4g.js → chunk-ZGVPDNZ5-D_8F4Akx.js} +1 -1
  32. package/dist/assets/classDiagram-OUVF2IWQ-B8M6sf49.js +1 -0
  33. package/dist/assets/classDiagram-v2-EOCWNBFH-BY7fzBDH.js +1 -0
  34. package/dist/assets/{cynefinDiagram-TSTJHNR4-D4sZ7LYI.js → cynefinDiagram-TSTJHNR4-BFlsWz0B.js} +1 -1
  35. package/dist/assets/{dagre-VKFMJZFB-BlsnSh-Q.js → dagre-VKFMJZFB-DXhpjlEs.js} +1 -1
  36. package/dist/assets/{diagram-FQU43EPY-DW1yQiRO.js → diagram-FQU43EPY-DRVVOD9k.js} +1 -1
  37. package/dist/assets/{diagram-G47NLZAW-BTUAsFjb.js → diagram-G47NLZAW-BV9Gw1tL.js} +1 -1
  38. package/dist/assets/{diagram-NH7WQ7WH-BcaomqSd.js → diagram-NH7WQ7WH-CrUkXfRY.js} +1 -1
  39. package/dist/assets/{diagram-OA4YK3LP-DDLX7Xwr.js → diagram-OA4YK3LP-CuILjn7v.js} +1 -1
  40. package/dist/assets/{diagram-WEI45ONY-CIave0An.js → diagram-WEI45ONY-nlNN3tWB.js} +1 -1
  41. package/dist/assets/{ebnfDiagram-CCIWWBDH-Cr1Y6lPu.js → ebnfDiagram-CCIWWBDH-BuDgZt9n.js} +1 -1
  42. package/dist/assets/{erDiagram-Q63AITRT-D3EgiVVH.js → erDiagram-Q63AITRT-MEwxjmtP.js} +1 -1
  43. package/dist/assets/flowDiagram-23GEKE2U-BiUP-Scq.js +1 -0
  44. package/dist/assets/{ganttDiagram-NO4QXBWP-B0oyDIqK.js → ganttDiagram-NO4QXBWP-DNw5qghE.js} +1 -1
  45. package/dist/assets/{gitGraphDiagram-IHSO6WYX-uQtr6IqK.js → gitGraphDiagram-IHSO6WYX-CaTcakAt.js} +1 -1
  46. package/dist/assets/index-BWf6y3Kh.css +3 -0
  47. package/dist/assets/index-D3GWkXJR.js +66 -0
  48. package/dist/assets/{infoDiagram-FWYZ7A6U-B_GzlLIM.js → infoDiagram-FWYZ7A6U-DwfyP7dU.js} +1 -1
  49. package/dist/assets/{ishikawaDiagram-FXEZZL3T-CKQIsSdU.js → ishikawaDiagram-FXEZZL3T-CmrzbOCV.js} +1 -1
  50. package/dist/assets/{journeyDiagram-5HDEW3XC-DrrvzZL1.js → journeyDiagram-5HDEW3XC-CYqe3sgr.js} +1 -1
  51. package/dist/assets/{kanban-definition-HUTT4EX6-CJQRTdXz.js → kanban-definition-HUTT4EX6-BMDO_mv0.js} +1 -1
  52. package/dist/assets/{line-B4DxX7tC.js → line-SbxJR8ZT.js} +1 -1
  53. package/dist/assets/lit-vendor-CinchGmI.js +2 -0
  54. package/dist/assets/local-tools-DY0yEU3T.js +350 -0
  55. package/dist/assets/{mcp-servers-dialog-CwHp0K4q.js → mcp-servers-dialog-7Xwu2RVW.js} +2 -2
  56. package/dist/assets/{mermaid.core-DWpShXCs.js → mermaid.core-CwXTzYjs.js} +3 -3
  57. package/dist/assets/{mindmap-definition-LN4V7U3C-CEVwZD78.js → mindmap-definition-LN4V7U3C-CLyJ78mO.js} +1 -1
  58. package/dist/assets/{pegDiagram-2B236MQR-CBLkBdnQ.js → pegDiagram-2B236MQR-4qFznrSw.js} +1 -1
  59. package/dist/assets/{pi-web-ui-DV5jKjSg.js → pi-web-ui-BNuvqKDT.js} +289 -289
  60. package/dist/assets/{pieDiagram-ENE6RG2P-8tCnwtWS.js → pieDiagram-ENE6RG2P-141sGxVe.js} +1 -1
  61. package/dist/assets/{quadrantDiagram-ABIIQ3AL-CWd28cHF.js → quadrantDiagram-ABIIQ3AL-SUI44pAX.js} +1 -1
  62. package/dist/assets/{railroadDiagram-RFXS5EU6-CI4ouOBs.js → railroadDiagram-RFXS5EU6-1oiZuYBB.js} +1 -1
  63. package/dist/assets/{requirementDiagram-TGXJPOKE-DtFz7sw4.js → requirementDiagram-TGXJPOKE-CfVishLi.js} +1 -1
  64. package/dist/assets/{sankeyDiagram-HTMAVEWB--VeOwwk9.js → sankeyDiagram-HTMAVEWB-DVu7J_Z9.js} +1 -1
  65. package/dist/assets/{sequenceDiagram-DBY2YBRQ-B8AHk5Oe.js → sequenceDiagram-DBY2YBRQ-D-Ip2yiS.js} +1 -1
  66. package/dist/assets/{skills-dialog-k9ycekIU.js → skills-dialog-C_JvWbAa.js} +3 -3
  67. package/dist/assets/{stateDiagram-2N3HPSRC-etXnJ8X8.js → stateDiagram-2N3HPSRC-Cg0hWwrp.js} +1 -1
  68. package/dist/assets/stateDiagram-v2-6OUMAXLB-DhmzNQd9.js +1 -0
  69. package/dist/assets/{swimlanes-5IMT3BWC-pabIKAmn.js → swimlanes-5IMT3BWC-Co5D-cGU.js} +1 -1
  70. package/dist/assets/swimlanesDiagram-G3AALYLV-BEvomQNa.js +8 -0
  71. package/dist/assets/{timeline-definition-FHXFAJF6-C55MKm3L.js → timeline-definition-FHXFAJF6-CBk4c_Ua.js} +1 -1
  72. package/dist/assets/{vennDiagram-L72KCM5P-CgNf1Q9W.js → vennDiagram-L72KCM5P-BII7wdRx.js} +1 -1
  73. package/dist/assets/{wardleyDiagram-EHGQE667-Drt5ytec.js → wardleyDiagram-EHGQE667-CkyJJIXP.js} +1 -1
  74. package/dist/assets/{xychartDiagram-FW5EYKEG-hhoEo_Ar.js → xychartDiagram-FW5EYKEG-B1A66Ks0.js} +1 -1
  75. package/dist/index.html +6 -6
  76. package/package.json +1 -1
  77. package/server/acp/server.mjs +3 -6
  78. package/server/agent-manager.mjs +192 -48
  79. package/server/approval-store.mjs +1 -0
  80. package/server/ask-store.mjs +78 -0
  81. package/server/auto-archive.mjs +55 -8
  82. package/server/index.mjs +172 -51
  83. package/server/lan-access-cutover.mjs +21 -4
  84. package/server/maintenance/downgrade-session-state-v1.mjs +46 -85
  85. package/server/maintenance/export-session-state-v1.mjs +1 -11
  86. package/server/routes/agent.mjs +9 -0
  87. package/server/routes/backup.mjs +1 -1
  88. package/server/routes/storage.mjs +63 -49
  89. package/server/scheduled-runs-cutover.mjs +15 -1
  90. package/server/session-index-service.mjs +57 -391
  91. package/server/session-state-backup.mjs +56 -5
  92. package/server/session-state-import.mjs +174 -0
  93. package/server/session-state-maintenance.mjs +126 -0
  94. package/server/session-state-service.mjs +128 -210
  95. package/server/share-cutover.mjs +21 -4
  96. package/server/sqlite/database.mjs +142 -7
  97. package/server/sqlite/lan-access-repository.mjs +6 -4
  98. package/server/sqlite/migrations.mjs +109 -0
  99. package/server/sqlite/scheduled-task-runs-repository.mjs +6 -3
  100. package/server/sqlite/session-index-repository.mjs +59 -208
  101. package/server/sqlite/session-state-repository.mjs +337 -387
  102. package/server/sqlite/share-repository.mjs +56 -45
  103. package/server/startup-state.mjs +107 -0
  104. package/server/storage.mjs +218 -454
  105. package/server/tools/definitions.mjs +18 -0
  106. package/server/tools/index.mjs +14 -2
  107. package/server/utils/logger.mjs +15 -4
  108. package/dist/assets/ChatPanelHost-CW3-MQyL.js +0 -48
  109. package/dist/assets/CloudAccountSettingsPage-CDkKN1Sz.js +0 -1
  110. package/dist/assets/ScheduledTasksPage-C9lOTi75.js +0 -2
  111. package/dist/assets/ShareLinksSettingsPage-CH_t33A3.js +0 -1
  112. package/dist/assets/TerminalDock-CSOVub-m.js +0 -2
  113. package/dist/assets/WorkspaceInspector-DPXgLIum.js +0 -36
  114. package/dist/assets/channel-Duu1CuH9.js +0 -1
  115. package/dist/assets/classDiagram-OUVF2IWQ-Cc63fLWP.js +0 -1
  116. package/dist/assets/classDiagram-v2-EOCWNBFH-CoXU0qT6.js +0 -1
  117. package/dist/assets/flowDiagram-23GEKE2U-BS7KXcqn.js +0 -1
  118. package/dist/assets/index-DQBOm9gt.js +0 -66
  119. package/dist/assets/index-ps85guTs.css +0 -3
  120. package/dist/assets/lit-vendor-DvaQX_UQ.js +0 -2
  121. package/dist/assets/local-tools-BxfQeIUQ.js +0 -270
  122. package/dist/assets/stateDiagram-v2-6OUMAXLB-Dms3pICj.js +0 -1
  123. package/dist/assets/swimlanesDiagram-G3AALYLV-B14aWjv6.js +0 -8
  124. package/server/session-state-cutover.mjs +0 -563
@@ -0,0 +1,350 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-CwXTzYjs.js","assets/pi-ai-Cr2ee4a0.js","assets/rolldown-runtime-DWdDZTNf.js","assets/chunk-HOUHSVGY-C9QO8omv.js","assets/src-PYsDme0X.js","assets/chunk-Y2CYZVJY-D6N-CrJv.js","assets/chunk-WYO6CB5R-C0azl-fk.js","assets/chunk-ICXQ74PX-ClbGPgLV.js","assets/dist-CLg13NtV.js","assets/chunk-52WLFC77-CYq4hT4f.js","assets/line-SbxJR8ZT.js","assets/path-6uRLdFF7.js","assets/array-B9UHiPd-.js","assets/chunk-7BUUIJ7U-CCcsI9XE.js","assets/chunk-C7G6YPKG-KFaGpP_Z.js","assets/chunk-OGEWGWER-DczhQmcx.js","assets/chunk-Q4XR5HBZ-CiF6T--X.js","assets/pi-web-ui-BNuvqKDT.js","assets/lit-vendor-CinchGmI.js","assets/chunk-ZGVPDNZ5-D_8F4Akx.js","assets/rough.esm-Bud4g4fh.js","assets/chunk-FWX5IMBZ-BxRjZkOP.js","assets/chunk-VAUOI2AC-D3J5bw1P.js","assets/chunk-ZIRB5QZD-Dc1s5bLM.js"])))=>i.map(i=>d[i]);
2
+ import{f as e,l as t,u as n}from"./lit-vendor-CinchGmI.js";import{y as r}from"./pi-web-ui-BNuvqKDT.js";import{J as i}from"./pi-ai-Cr2ee4a0.js";import{$t as a,At as o,Dt as s,Et as c,Gt as l,Jt as u,Kt as d,Ln as f,Ot as p,Qt as m,Xt as h,Yt as g,Zt as _,an as v,d as y,en as b,in as x,nn as S,on as C,ot as w,qt as T,r as E,rn as D,sn as O,tn as k}from"./index-D3GWkXJR.js";function ee(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function te(e,t,n){if(!e||e.isError||t||!ee(e.details))return``;let r=e.details.action,i=e.details.status,a=e.details.markdown;if(typeof a!=`string`)return``;if(r===`read`){if(a)return a;if(i===`empty`||i===void 0)return n(`memoryContentEmpty`)}return r===`write`&&(i===`saved`||i===void 0)?n(`memoryContentSaved`):``}var ne=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\.(?:png|jpg|webp|gif)$/i,re=new Set([`image/png`,`image/jpeg`,`image/webp`,`image/gif`]);function A(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function ie(e){if(!A(e)||e.type!==`generated_image_result`||typeof e.sessionId!=`string`||!e.sessionId||typeof e.prompt!=`string`||typeof e.model!=`string`||!Array.isArray(e.assets))return null;let t=e.assets.flatMap(e=>!A(e)||typeof e.assetId!=`string`||!ne.test(e.assetId)||typeof e.mimeType!=`string`||!re.has(e.mimeType)||typeof e.size!=`number`||!Number.isFinite(e.size)||e.size<0?[]:[{assetId:e.assetId,mimeType:e.mimeType,size:e.size}]);return t.length?{type:`generated_image_result`,sessionId:e.sessionId,prompt:e.prompt,model:e.model,assets:t,...typeof e.text==`string`&&e.text?{text:e.text}:{}}:null}function j(e,t,n=window.location.pathname){let r=n.match(/^\/share\/([^/]+)\/?$/)?.[1];return r?`/api/shared/${encodeURIComponent(decodeURIComponent(r))}/assets/${encodeURIComponent(t.assetId)}`:`/api/session-assets/${encodeURIComponent(e.sessionId)}/${encodeURIComponent(t.assetId)}`}var ae=1e3,M=1e3,N=`cubic-bezier(.22, 1, .36, 1)`,oe=class{runtimes;current;roll;generation=0;text=``;running=!1;host;env;constructor(e,t){this.host=e,this.env=t,this.runtimes=e.views.map(e=>({view:e})),this.current=this.runtimes[0],this.runtimes[1].view.el.style.visibility=`hidden`}dispose(){this.generation+=1,this.roll&&=(this.roll.animations.forEach(e=>e.cancel()),void 0);for(let e of this.runtimes)this.clearViewTimer(e),this.stopViewAnimation(e),e.view.el.style.transform=``}sync(e,t,n=!1){if(this.running=t,e===this.text){if(!t){this.finishRoll(),this.clearViewTimer(this.current),this.stopViewAnimation(this.current);return}if(n&&!this.roll){this.scheduleHorizontal(this.current,e,!0);return}!this.roll&&this.current.restartTimer===void 0&&this.current.animation===void 0&&this.scheduleHorizontal(this.current,e,!1);return}let r=this.text;this.text=e;let i=!!(r&&e&&t)&&!this.env.prefersReducedMotion();if(this.finishRoll(),!i){this.applyInstant(e);return}this.beginRoll()}applyInstant(e){this.current.view.staticSpan.textContent=e,this.current.view.movingSpan.textContent=e,this.resetOtherView(),this.scheduleHorizontal(this.current,e,!0)}beginRoll(){let e=this.current,t=this.otherOf(e);t.view.staticSpan.textContent=this.text,t.view.movingSpan.textContent=this.text,this.stopViewAnimation(t);let n=++this.generation;t.view.el.style.visibility=``,t.view.el.style.transform=`translateY(100%)`,e.view.el.style.transform=`translateY(0)`;let r=[this.env.animate(e.view.el,[{transform:`translateY(0)`,offset:0,easing:N},{transform:`translateY(-100%)`,offset:1,easing:N}],{duration:260,fill:`forwards`}),this.env.animate(t.view.el,[{transform:`translateY(100%)`,offset:0,easing:N},{transform:`translateY(0)`,offset:1,easing:N}],{duration:260,fill:`forwards`})];this.roll={animations:r,outgoing:e,incoming:t,text:this.text,generation:n},Promise.all(r.map(e=>e.finished)).then(()=>{!this.roll||this.roll.generation!==n||this.finishRoll()}).catch(()=>void 0)}finishRoll(){let e=this.roll;e&&(this.roll=void 0,e.animations.forEach(e=>e.cancel()),this.stopViewAnimation(e.outgoing),e.outgoing.view.el.style.transform=``,e.outgoing.view.el.style.visibility=`hidden`,e.incoming.view.el.style.transform=``,e.incoming.view.el.style.visibility=``,this.current=e.incoming,this.scheduleHorizontal(e.incoming,e.text,!0))}scheduleHorizontal(e,t,n){if(this.clearViewTimer(e),!this.running||!t||this.env.prefersReducedMotion()){this.stopViewAnimation(e);return}e.view.movingSpan.style.display=`inline-block`;let r=e.view.movingSpan.scrollWidth-this.host.getClientWidth();if(e.view.movingSpan.style.display=``,r<=1||this.host.getClientWidth()<=0){this.stopViewAnimation(e);return}if(!n&&e.animation&&e.animatedText===t)return;this.stopViewAnimation(e);let i=++this.generation;e.restartTimer=this.env.setTimeout(()=>{e.restartTimer=void 0,i===this.generation&&this.runCycle(e,i,t,r)},400)}runCycle(e,t,n,r){if(t!==this.generation)return;let{staticSpan:i,movingSpan:a}=e.view;i.style.visibility=`hidden`,a.style.display=`inline-block`;let o=r/35*1e3,s=Math.min(500,Math.max(240,o*.25)),c=o+ae+s,l=o/c,u=(o+ae)/c,d=this.env.animate(a,[{transform:`translateX(0)`,offset:0,easing:`linear`},{transform:`translateX(-${r}px)`,offset:l,easing:`linear`},{transform:`translateX(-${r}px)`,offset:u,easing:`ease-out`},{transform:`translateX(0)`,offset:1,easing:`linear`}],{duration:c,fill:`forwards`});e.animation=d,e.animatedText=n,d.finished.then(()=>{e.animation!==d||t!==this.generation||(d.cancel(),e.animation=void 0,i.style.visibility=``,a.style.display=``,a.style.transform=``,e.restartTimer=this.env.setTimeout(()=>{e.restartTimer=void 0,t===this.generation&&this.runCycle(e,t,n,r)},M))}).catch(()=>void 0)}otherOf(e){return this.runtimes[0]===e?this.runtimes[1]:this.runtimes[0]}resetOtherView(){let e=this.otherOf(this.current);this.clearViewTimer(e),this.stopViewAnimation(e),e.view.el.style.transform=``,e.view.el.style.visibility=`hidden`}clearViewTimer(e){e.restartTimer!==void 0&&(this.env.clearTimeout(e.restartTimer),e.restartTimer=void 0)}stopViewAnimation(e){e.animation&&=(e.animation.cancel(),void 0),e.view.staticSpan.style.visibility=``,e.view.movingSpan.style.display=``,e.view.movingSpan.style.transform=``,e.animatedText=void 0}};function se(e,t,n=6){if(!Number.isFinite(e)||e<=0)return 0;let r=Math.max(1,Math.round(n)),i=Number.isFinite(t)&&t>0?t:0;return Math.ceil(r*e+i)}function ce(e,t,n=6,r=30){let i=se(e,t,n);return i<=0?0:Math.ceil(i+(Number.isFinite(r)&&r>0?r:0))}function le(e,t,n){return!Number.isFinite(t)||t<=0||!Number.isFinite(e)||e<=t+.5?`fits`:n?`expanded`:`collapsed`}var ue=class{expanded=!1;settleTimer;options;constructor(e){this.options=e}isExpanded(){return this.expanded}sync(){this.clearSettleTimer();let e=le(this.options.getNaturalHeightPx(),this.options.getClampHeightPx(),this.expanded);if(e===`fits`){this.options.box.setAttribute(`data-quickforge-fits`,`true`),this.options.box.setAttribute(`data-quickforge-clamped`,`false`),this.options.box.setAttribute(`data-quickforge-expanded`,`false`),this.options.box.style.maxHeight=``,this.options.onStateApplied?.(this.expanded,e);return}this.options.box.setAttribute(`data-quickforge-fits`,`false`),this.expanded?(this.options.box.setAttribute(`data-quickforge-clamped`,`false`),this.options.box.setAttribute(`data-quickforge-expanded`,`true`),this.options.box.style.maxHeight=`none`):(this.options.box.setAttribute(`data-quickforge-clamped`,`true`),this.options.box.setAttribute(`data-quickforge-expanded`,`false`),this.options.box.style.maxHeight=``),this.options.onStateApplied?.(this.expanded,e)}setExpanded(e){if(e===this.expanded){this.sync();return}if(this.expanded=e,this.options.env.prefersReducedMotion()){this.sync();return}this.clearSettleTimer();let t=Math.ceil(this.options.getLayoutHeightPx?.()??this.options.getNaturalHeightPx());if(this.options.box.setAttribute(`data-quickforge-fits`,`false`),e)this.options.box.setAttribute(`data-quickforge-clamped`,`false`),this.options.box.setAttribute(`data-quickforge-expanded`,`true`),this.options.box.style.maxHeight=`${t}px`,this.settleTimer=this.options.env.setTimeout(()=>{this.settleTimer=void 0,this.expanded&&(this.options.box.style.maxHeight=`none`)},320);else{let e=Math.ceil(this.options.getCollapsedHeightPx?.()??this.options.getClampHeightPx());this.options.box.setAttribute(`data-quickforge-clamped`,`true`),this.options.box.setAttribute(`data-quickforge-expanded`,`false`),this.options.box.style.maxHeight=`${t}px`,this.options.box.offsetHeight,this.options.box.style.maxHeight=e>0?`${e}px`:``}this.options.onStateApplied?.(this.expanded,this.expanded?`expanded`:`collapsed`)}toggle(){this.setExpanded(!this.expanded)}dispose(){this.clearSettleTimer()}clearSettleTimer(){this.settleTimer!==void 0&&(this.options.env.clearTimeout(this.settleTimer),this.settleTimer=void 0)}},de=`<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>`,fe=new WeakMap,pe=new WeakMap;function me(){return{prefersReducedMotion:()=>window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,setTimeout:(e,t)=>window.setTimeout(e,t),clearTimeout:e=>window.clearTimeout(e)}}function he(e){let t=window.getComputedStyle(e),n=parseFloat(t.lineHeight),r=(parseFloat(t.paddingTop)||0)+(parseFloat(t.paddingBottom)||0)+(parseFloat(t.borderTopWidth)||0)+(parseFloat(t.borderBottomWidth)||0);return{contentHeight:se(n,r),clampHeight:ce(n,r)}}function ge(e){let{clampHeight:t}=he(e);return t>0?e.style.setProperty(`--quickforge-input-clamp-h`,`${t}px`):e.style.removeProperty(`--quickforge-input-clamp-h`),t}function _e(e){return e.querySelector(`:scope > .quickforge-input-clamp-safe-area`)?.offsetHeight??0}function ve(e){let t=window.getComputedStyle(e),n=(parseFloat(t.borderTopWidth)||0)+(parseFloat(t.borderBottomWidth)||0);return e.scrollHeight-_e(e)+n}function ye(e){let t=window.getComputedStyle(e),n=(parseFloat(t.borderTopWidth)||0)+(parseFloat(t.borderBottomWidth)||0);return e.scrollHeight+n}function be(e,t){if(!e.querySelector(`:scope > .quickforge-input-clamp-safe-area`)){let t=document.createElement(`div`);t.className=`quickforge-input-clamp-safe-area`,t.setAttribute(`aria-hidden`,`true`),e.append(t)}if(!e.querySelector(`:scope > .quickforge-input-clamp-fade`)){let t=document.createElement(`div`);t.className=`quickforge-input-clamp-fade`,t.setAttribute(`aria-hidden`,`true`),e.append(t)}if(!e.querySelector(`:scope > .quickforge-input-clamp-toggle`)){let n=document.createElement(`button`);n.type=`button`,n.className=`quickforge-input-clamp-toggle`,n.setAttribute(`aria-expanded`,`false`),n.innerHTML=`${de}<span class="quickforge-input-clamp-toggle-label">${t.collapsed()}</span>`,n.addEventListener(`click`,t=>{t.stopPropagation(),Te(e)}),e.append(n)}}function xe(e,t){let n=e.querySelector(`:scope > .quickforge-input-clamp-toggle`);if(!n)return;n.setAttribute(`aria-expanded`,String(t));let r=n.querySelector(`:scope > .quickforge-input-clamp-toggle-label`),i=pe.get(e);r&&i&&(r.textContent=t?i.expanded():i.collapsed())}function Se(e,t){pe.set(e,t);let n=fe.get(e);return n||(be(e,t),n=new ue({box:e,env:me(),getClampHeightPx:()=>he(e).contentHeight,getCollapsedHeightPx:()=>ge(e),getNaturalHeightPx:()=>ve(e),getLayoutHeightPx:()=>ye(e),onStateApplied:(t,n)=>{n===`collapsed`&&(e.style.maxHeight=`${ge(e)}px`),xe(e,t)}}),fe.set(e,n)),n}function Ce(e,t){Se(e,t).sync()}function we(e,t){e.querySelectorAll(`[data-quickforge-input-clamp]`).forEach(e=>Ce(e,t))}function Te(e){let t=fe.get(e);return t?(t.toggle(),t.isExpanded()):!1}function Ee(e,t){let n=e.querySelector(`.user-message-container`);n&&(n.classList.add(`quickforge-input-clamp`),n.setAttribute(`data-quickforge-input-clamp`,`true`),Ce(n,t))}function De(e){return Math.max(0,Math.round(Number.isFinite(e)?e:0))}var Oe=class{root;env;addSide;delSide;constructor(e,t){for(this.root=e,this.env=t;e.children.length>0;)e.removeChild(e.children[0])}dispose(){for(let e of[this.addSide,this.delSide])for(let t of e?.digits??[])t.enterTimer!==void 0&&this.env.clearTimeout(t.enterTimer)}sync(e,t,n){let r=this.env.prefersReducedMotion();this.root.classList.toggle(`quickforge-diff-counter`,!0),this.root.classList.toggle(`quickforge-diff-counter-running`,n),this.root.classList.toggle(`quickforge-odometer-reduced`,r),this.syncSide(this.addSide??=this.createSide(`add`,`+`),De(e)),this.syncSide(this.delSide??=this.createSide(`del`,`−`),De(t))}createSide(e,t){let n=this.env.createElement(`span`);n.className=`quickforge-odometer-side ${e}`;let r=this.env.createElement(`span`);return r.className=`quickforge-odometer-sign`,r.textContent=t,n.appendChild(r),this.root.appendChild(n),{group:n,sign:r,digits:[]}}createDigitColumn(e){let t=this.env.createElement(`span`);t.className=`quickforge-odometer-digit enter`;let n=this.env.createElement(`span`);n.className=`quickforge-odometer-strip`;for(let e=0;e<=9;e++){let t=this.env.createElement(`span`);t.textContent=String(e),n.appendChild(t)}return n.style.transform=`translateY(-${e}em)`,t.appendChild(n),{holder:t,strip:n,enterTimer:void 0}}syncSide(e,t){let n=String(t).split(``).map(Number);for(;e.digits.length>n.length;){let t=e.digits.shift();if(!t)break;t.enterTimer!==void 0&&this.env.clearTimeout(t.enterTimer),e.group.removeChild(t.holder)}for(;e.digits.length<n.length;){let t=this.createDigitColumn(0);e.group.insertBefore(t.holder,e.group.children[1]??null),t.enterTimer=this.env.setTimeout(()=>{t.enterTimer=void 0,t.holder.className=`quickforge-odometer-digit`},380),e.digits.unshift(t)}e.digits.forEach((e,t)=>{e.strip.style.transform=`translateY(-${n[t]}em)`})}},ke=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/,Ae=4e4;function je(e){let t=/^\+\+\+ b\/(.+)$/m.exec(e);if(!t?.[1])return null;let n=/^--- (?:a\/(.+)|\/dev\/null)$/m.exec(e);return{path:t[1],isNewFile:n!==null&&n[1]===void 0}}function Me(e){let t=e.split(`
3
+ `);t.length>1&&t[t.length-1]===``&&t.pop();let n=[],r=0,i=0,a=0,o=!1,s=!0;for(let e of t){if(e.startsWith(`--- `)||e.startsWith(`+++ `))continue;let t=ke.exec(e);if(t){let e=Number.parseInt(t[1]??`1`,10),c=e-a-1;c>0&&n.push({kind:`gap`,count:c,first:s&&!o}),r=e,i=Number.parseInt(t[2]??`1`,10),s=!1;continue}e.startsWith(`+`)?n.push({kind:`add`,text:e.slice(1),oldNo:null,newNo:i++}):e.startsWith(`-`)?n.push({kind:`del`,text:e.slice(1),oldNo:r++,newNo:null}):n.push({kind:`ctx`,text:e.length>0?e.slice(1):e,oldNo:r++,newNo:i++}),a=r-1,o=!0}return Ne(n),n}function Ne(e){for(let t=0;t<e.length;t++){if(e[t]?.kind!==`del`)continue;let n=t,r=[],i=[];for(;e[n]?.kind===`del`;)r.push(e[n++]);for(;e[n]?.kind===`add`;)i.push(e[n++]);let a=Math.min(r.length,i.length);for(let e=0;e<a;e++){let t=r[e],n=i[e],a=Pe(t.text),o=Pe(n.text),{aMarks:s,bMarks:c}=Fe(a,o);t.segments=Ie(a,s),n.segments=Ie(o,c)}t=n-1}}function Pe(e){return e.match(/\s+|[A-Za-z0-9_$]+|./gu)??[]}function Fe(e,t){let n=Array(e.length).fill(!0),r=Array(t.length).fill(!0);if(e.length===0||t.length===0||e.length*t.length>Ae)return{aMarks:n,bMarks:r};let i=Array.from({length:e.length+1},()=>new Uint32Array(t.length+1));for(let n=e.length-1;n>=0;n--)for(let r=t.length-1;r>=0;r--)i[n][r]=e[n]===t[r]?(i[n+1][r+1]??0)+1:Math.max(i[n+1][r]??0,i[n][r+1]??0);let a=0,o=0;for(;a<e.length&&o<t.length;)e[a]===t[o]?(n[a]=!1,r[o]=!1,a++,o++):(i[a+1][o]??0)>=(i[a][o+1]??0)?a++:o++;return{aMarks:n,bMarks:r}}function Ie(e,t){let n=[],r;for(let i=0;i<e.length;i++){let a=e[i]??``;r&&r.changed===t[i]?r.text+=a:(r={text:a,changed:t[i]??!0},n.push(r))}return n}var P=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`,Le=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>`,Re=`<svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9 14 4 9l5-5"/><path d="M4 9h10.5a5.5 5.5 0 0 1 0 11H11"/></svg>`,ze=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="18" r="3"/><circle cx="6" cy="6" r="3"/><circle cx="18" cy="6" r="3"/><path d="M18 9v1a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V9"/><path d="M12 12v3"/></svg>`,Be=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 2v6h-6"/><path d="M3 12a9 9 0 0 1 15.36-5.64L21 9"/><path d="M3 22v-6h6"/><path d="M21 12a9 9 0 0 1-15.36 5.64L3 15"/></svg>`,Ve=`<svg class="quickforge-plan-mode-icon" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h1"/><path d="M4 12h1"/><path d="M4 18h1"/><path d="M9 6h11"/><path d="M9 12h11"/><path d="M9 18h11"/></svg>`,He=`<svg class="quickforge-plan-remove-icon" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>`,Ue=`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 5v14"/><path d="M5 12h14"/></svg>`,We=`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"/></svg>`,F=`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M7.5 4.5h5a1.5 1.5 0 0 1 1.5 1.5v2h1a2.5 2.5 0 0 1 0 5h-1v2a1.5 1.5 0 0 1-1.5 1.5h-2v1a2.5 2.5 0 0 1-5 0v-1h-2A1.5 1.5 0 0 1 2 15.5v-3h1a2 2 0 1 0 0-4H2v-2A1.5 1.5 0 0 1 3.5 5h2v-1a2.5 2.5 0 0 1 5 0v.5Z"/></svg>`,Ge=`<svg viewBox="0 0 20 20" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.65" stroke-linecap="round" stroke-linejoin="round"><path d="M5.4 2.8h6.1L15.8 7v10.2H5.4z"/><path d="M11.4 2.9V7h4.1"/><path d="M7.6 10.2h5"/><path d="M7.6 13h4.3"/></svg>`,Ke=`<svg viewBox="0 0 20 20" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.65" stroke-linecap="round" stroke-linejoin="round"><rect x="3.4" y="4" width="13.2" height="12.2" rx="1.5"/><path d="M3.4 8h13.2"/><path d="M7.8 4v12.2"/><path d="M12.2 4v12.2"/><path d="M3.4 12h13.2"/></svg>`,qe=`<svg viewBox="0 0 20 20" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.65" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4.2h14"/><rect x="4.2" y="4.2" width="11.6" height="8.4" rx="1.2"/><path d="M10 12.6v3.2"/><path d="m7.2 17 2.8-1.2 2.8 1.2"/><path d="M7.1 9.5 9 7.7l1.5 1.3 2.4-2.5"/></svg>`,Je=`<svg class="quickforge-agent-access-trigger-icon" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3 19 6v5c0 4.5-2.8 8.4-7 10-4.2-1.6-7-5.5-7-10V6l7-3Z"/><path d="M9 12h6"/></svg>`,Ye=`<svg class="quickforge-agent-access-option-icon" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m21.73 18-8-14a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>`,Xe=`<svg class="quickforge-agent-access-check" xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>`,Ze=`<svg class="quickforge-agent-access-chevron" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>`,Qe=`<svg class="quickforge-opencode-config-icon" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 20V10"/><path d="M18 20V4"/><path d="M6 20v-4"/><path d="M18 4a2 2 0 0 0-4 0"/><path d="M6 16a2 2 0 0 0-4 0"/><path d="M12 10a2 2 0 0 0-4 0"/></svg>`;function $e(e){return f(e===`full-access`?`agentAccessFullLabel`:`agentAccessDefaultLabel`)}function I(e){let t=document.querySelector(`.quickforge-agent-access-menu`);t?.__quickforgeDismissHandler&&(document.removeEventListener(`pointerdown`,t.__quickforgeDismissHandler,!0),document.removeEventListener(`keydown`,t.__quickforgeDismissHandler,!0),window.removeEventListener(`resize`,t.__quickforgeDismissHandler,!0),window.removeEventListener(`scroll`,t.__quickforgeDismissHandler,!0),t.__quickforgeDismissHandler=void 0),t?.remove(),e.querySelector(`.quickforge-agent-access-inline`)?.setAttribute(`aria-expanded`,`false`)}function et(e,t,n){let r=e===t,i=document.createElement(`button`);return i.type=`button`,i.className=`quickforge-agent-access-item`,i.setAttribute(`role`,`menuitemradio`),i.setAttribute(`aria-checked`,String(r)),i.dataset.quickforgeAgentAccessMode=e,i.innerHTML=`
4
+ <span class="quickforge-agent-access-check-slot">${r?Xe:``}</span>
5
+ <span class="quickforge-agent-access-option-icon-wrap">${e===`full-access`?Ye:Je}</span>
6
+ <span class="quickforge-agent-access-item-label"></span>
7
+ `,i.querySelector(`.quickforge-agent-access-item-label`).textContent=$e(e),i.onpointerdown=t=>{t.preventDefault(),t.stopPropagation(),n(e)},i}function tt(e){let{panel:t,trigger:n,agentAccessMode:r,onAccessModeChange:i,dismissComposerMenus:a}=e;if(document.querySelector(`.quickforge-agent-access-menu`)){I(t);return}a(),I(t);let o=document.createElement(`div`);o.className=`quickforge-agent-access-menu`,o.setAttribute(`role`,`menu`),o.setAttribute(`aria-label`,f(`agentAccessMenuLabel`));let s=e=>{I(t),e!==r&&i(e)};o.append(et(`default`,r,s),et(`full-access`,r,s));let c=()=>{let e=n.getBoundingClientRect(),t=Math.min(196,window.innerWidth-24);o.style.width=`${t}px`;let r=o.offsetHeight||96,i=Math.max(12,Math.min(e.left,window.innerWidth-t-12)),a=Math.max(12,e.top-r-8);o.style.left=`${i}px`,o.style.top=`${a}px`},l=e=>{if(e.type===`resize`||e.type===`scroll`){c();return}if(e instanceof KeyboardEvent){if(e.key!==`Escape`)return;e.preventDefault()}else{let t=e.target;if(o.contains(t)||n.contains(t))return}I(t)};o.__quickforgeDismissHandler=l,o.addEventListener(`pointerdown`,e=>e.stopPropagation()),document.addEventListener(`pointerdown`,l,!0),document.addEventListener(`keydown`,l,!0),window.addEventListener(`resize`,l,!0),window.addEventListener(`scroll`,l,!0),document.body.append(o),c(),n.setAttribute(`aria-expanded`,`true`)}function nt(e){let{panel:t,leftControls:n,agentAccessMode:r,onAccessModeChange:i,dismissComposerMenus:a}=e;n.classList.add(`quickforge-composer-left-controls`),t.querySelector(`.quickforge-yolo-inline`)?.remove();let o=$e(r),s=f(r===`full-access`?`agentAccessFullTitle`:`agentAccessDefaultTitle`),c=`${r===`full-access`?Ye:Je}<span class="quickforge-agent-access-label"></span>${Ze}`,l=`quickforge-agent-access-inline inline-flex h-8 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 text-xs font-medium text-muted-foreground${r===`full-access`?` quickforge-agent-access-inline-full`:``}`,d=n.querySelector(`.quickforge-agent-access-inline`),p=e=>{u(e,c),e.querySelector(`.quickforge-agent-access-label`).textContent=o,e.title=s,e.setAttribute(`aria-label`,s),e.setAttribute(`aria-haspopup`,`menu`),e.setAttribute(`aria-expanded`,document.querySelector(`.quickforge-agent-access-menu`)?`true`:`false`),e.dataset.quickforgeAgentAccessMode=r,e.className=l,e.onpointerdown=n=>{n.preventDefault(),n.stopPropagation(),tt({panel:t,trigger:e,agentAccessMode:r,onAccessModeChange:i,dismissComposerMenus:a})},e.onclick=e=>{e.preventDefault(),e.stopPropagation()},e.onkeydown=n=>{n.key!==`Enter`&&n.key!==` `&&n.key!==`ArrowDown`||(n.preventDefault(),tt({panel:t,trigger:e,agentAccessMode:r,onAccessModeChange:i,dismissComposerMenus:a}))}};if(d)p(d);else{let e=document.createElement(`button`);e.type=`button`,p(e),n.append(e)}let m=n.querySelector(`.quickforge-agent-access-inline`),h=n.querySelector(`.quickforge-plan-inline`);m&&h&&m.nextSibling!==h&&n.insertBefore(h,m.nextSibling)}function rt(e){return typeof e.group==`string`&&Array.isArray(e.options)}function it(e){let t=e?.configOptions;return Array.isArray(t)&&t.length>0}function at(e){return e.description?`${e.name} — ${e.description}`:e.name}function ot(e){if(!Array.isArray(e))return{groups:[],flat:[]};let t=[],n=[];for(let r of e)r&&rt(r)?(t.push({group:r.group,options:r.options}),n.push(...r.options)):r&&typeof r.value==`string`&&n.push(r);return{groups:t,flat:n}}function L(e){let t=document.querySelector(`.quickforge-opencode-config-menu`);t?.__quickforgeDismissHandler&&(document.removeEventListener(`pointerdown`,t.__quickforgeDismissHandler,!0),document.removeEventListener(`keydown`,t.__quickforgeDismissHandler,!0),window.removeEventListener(`resize`,t.__quickforgeDismissHandler,!0),window.removeEventListener(`scroll`,t.__quickforgeDismissHandler,!0),t.__quickforgeDismissHandler=void 0),t?.remove(),e.querySelector(`.quickforge-opencode-config-inline`)?.setAttribute(`aria-expanded`,`false`)}function st(e,t,n){let r=e.currentValue===!0,i=document.createElement(`button`);return i.type=`button`,i.className=`quickforge-opencode-config-item quickforge-opencode-config-toggle`,i.setAttribute(`role`,`menuitemcheckbox`),i.setAttribute(`aria-checked`,String(r)),i.disabled=t,i.innerHTML=`
8
+ <span class="quickforge-opencode-config-check-slot">${r?Xe:``}</span>
9
+ <span class="quickforge-opencode-config-item-label"></span>
10
+ `,i.querySelector(`.quickforge-opencode-config-item-label`).textContent=e.name,e.description&&(i.title=e.description),i.onpointerdown=e=>{e.preventDefault(),e.stopPropagation(),t||n(!r)},i}function ct(e,t,n,r){let i=e.value===t,a=document.createElement(`button`);return a.type=`button`,a.className=`quickforge-opencode-config-item quickforge-opencode-config-select-option`,a.setAttribute(`role`,`menuitemradio`),a.setAttribute(`aria-checked`,String(i)),a.disabled=n,a.innerHTML=`
11
+ <span class="quickforge-opencode-config-check-slot">${i?Xe:``}</span>
12
+ <span class="quickforge-opencode-config-item-label"></span>
13
+ `,a.querySelector(`.quickforge-opencode-config-item-label`).textContent=at(e),a.onpointerdown=t=>{t.preventDefault(),t.stopPropagation(),!n&&!i&&r(e.value)},a}function lt(e){let t=document.createElement(`div`);return t.className=`quickforge-opencode-config-section-title`,t.textContent=e,t}function ut(e){let{panel:t,trigger:n,acpSession:r,disabled:i,onConfigOptionChange:a,dismissComposerMenus:o}=e;if(document.querySelector(`.quickforge-opencode-config-menu`)){L(t);return}if(!it(r)){L(t);return}o(),L(t);let s=document.createElement(`div`);s.className=`quickforge-opencode-config-menu`,s.setAttribute(`role`,`menu`),s.setAttribute(`aria-label`,f(`openCodeConfigMenuLabel`));let c=Array.isArray(r?.configOptions)?r.configOptions:[];if(c.length>0){s.append(lt(f(`openCodeConfigOptionsTitle`)));for(let e of c){if(e.type===`boolean`){s.append(st(e,i,t=>a(e.id,t)));continue}if(e.type===`select`){let{groups:t,flat:n}=ot(e.options),r=typeof e.currentValue==`string`?e.currentValue:``,o=lt(e.name);if(e.description&&(o.title=e.description),s.append(o),t.length>0)for(let n of t){let t=document.createElement(`div`);t.className=`quickforge-opencode-config-group-label`,t.textContent=n.group,s.append(t);for(let t of n.options)s.append(ct(t,r,i,t=>a(e.id,t)))}else for(let t of n)s.append(ct(t,r,i,t=>a(e.id,t)))}}}let l=()=>{let e=n.getBoundingClientRect(),t=Math.min(232,window.innerWidth-24);s.style.width=`${t}px`,s.style.maxHeight=`${Math.max(180,window.innerHeight-32)}px`;let r=s.offsetHeight||160,i=Math.max(12,Math.min(e.left,window.innerWidth-t-12)),a=Math.max(12,e.top-r-8);s.style.left=`${i}px`,s.style.top=`${a}px`},u=e=>{if(e.type===`resize`||e.type===`scroll`){l();return}if(e instanceof KeyboardEvent){if(e.key!==`Escape`)return;e.preventDefault()}else{let t=e.target;if(s.contains(t)||n.contains(t))return}L(t)};s.__quickforgeDismissHandler=u,s.addEventListener(`pointerdown`,e=>e.stopPropagation()),document.addEventListener(`pointerdown`,u,!0),document.addEventListener(`keydown`,u,!0),window.addEventListener(`resize`,u,!0),window.addEventListener(`scroll`,u,!0),document.body.append(s),l(),n.setAttribute(`aria-expanded`,`true`)}function dt(e){let{panel:t,leftControls:n,getAcpSession:r,isStreaming:i,onConfigOptionChange:a,onModeChange:o,dismissComposerMenus:s}=e;if(n.classList.add(`quickforge-composer-left-controls`),!it(r())){n.querySelector(`.quickforge-opencode-config-inline`)?.remove(),L(t);return}let c=e=>{ut({panel:t,leftControls:n,getAcpSession:r,isStreaming:i,trigger:e,acpSession:r(),disabled:i(),onConfigOptionChange:a,onModeChange:o,dismissComposerMenus:s})},l=e=>{let t=i(),n=f(t?`openCodeConfigDisabledWhileStreaming`:`openCodeConfigMenuLabel`);u(e,`${Qe}<span class="quickforge-opencode-config-label"></span>${Ze}`),e.querySelector(`.quickforge-opencode-config-label`).textContent=f(`openCodeConfigButtonLabel`),e.title=n,e.setAttribute(`aria-label`,n),e.setAttribute(`aria-haspopup`,`menu`),e.setAttribute(`aria-expanded`,document.querySelector(`.quickforge-opencode-config-menu`)?`true`:`false`),e.disabled=t,e.className=`quickforge-opencode-config-inline inline-flex h-8 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 text-xs font-medium text-muted-foreground`,e.onpointerdown=t=>{t.preventDefault(),t.stopPropagation(),e.disabled||c(e)},e.onclick=e=>{e.preventDefault(),e.stopPropagation()},e.onkeydown=t=>{t.key!==`Enter`&&t.key!==` `&&t.key!==`ArrowDown`||(t.preventDefault(),e.disabled||c(e))}},d=n.querySelector(`.quickforge-opencode-config-inline`);if(d)l(d);else{let e=document.createElement(`button`);e.type=`button`,l(e),n.append(e)}}function ft(e){let t=e?.modes;return!!(t&&Array.isArray(t.availableModes)&&t.availableModes.length>0)}function pt(e){let t=e?.modes?.currentModeId;return t?e?.modes?.availableModes?.find(e=>e.id===t)?.name??t:``}function R(e){let t=document.querySelector(`.quickforge-opencode-mode-menu`);t?.__quickforgeDismissHandler&&(document.removeEventListener(`pointerdown`,t.__quickforgeDismissHandler,!0),document.removeEventListener(`keydown`,t.__quickforgeDismissHandler,!0),window.removeEventListener(`resize`,t.__quickforgeDismissHandler,!0),window.removeEventListener(`scroll`,t.__quickforgeDismissHandler,!0),t.__quickforgeDismissHandler=void 0),t?.remove(),e.querySelector(`.quickforge-opencode-mode-inline`)?.setAttribute(`aria-expanded`,`false`)}function mt(e,t,n,r){let i=e.id===t,a=document.createElement(`button`);a.type=`button`,a.className=`quickforge-model-menu-item`,a.setAttribute(`role`,`menuitemradio`),a.setAttribute(`aria-checked`,String(i)),a.disabled=n;let o=document.createElement(`span`);o.className=`quickforge-model-menu-item-label`,o.textContent=e.description?`${e.name} — ${e.description}`:e.name;let s=document.createElement(`span`);return s.className=`quickforge-model-menu-item-suffix`,s.textContent=i?`✓`:``,a.append(o,s),a.onpointerdown=t=>{t.preventDefault(),t.stopPropagation(),r(e.id)},a}function ht(e){let{panel:t,trigger:n,acpSession:r,disabled:i,onModeChange:a,dismissComposerMenus:o}=e;if(document.querySelector(`.quickforge-opencode-mode-menu`)){R(t);return}if(!ft(r)){R(t);return}o(),R(t);let s=document.createElement(`div`);s.className=`quickforge-opencode-mode-menu quickforge-model-menu`,s.setAttribute(`role`,`menu`),s.setAttribute(`aria-label`,f(`openCodeModeMenuLabel`));let c=r?.modes?.currentModeId??``,l=document.createElement(`div`);l.className=`quickforge-model-menu-header`,l.textContent=f(`openCodeConfigModesTitle`),s.append(l);let u=e=>{R(t),e!==c&&a(e)};for(let e of r?.modes?.availableModes??[])s.append(mt(e,c,i,u));let d=()=>{let e=n.getBoundingClientRect(),t=Math.min(260,window.innerWidth-24);s.style.width=`${t}px`;let r=s.offsetHeight||160,i=Math.max(12,Math.min(e.right-t,window.innerWidth-t-12)),a=e.top-r-8,o=e.bottom+8,c=a>=12?a:Math.min(o,window.innerHeight-r-12);s.style.left=`${i}px`,s.style.top=`${Math.max(12,c)}px`},p=e=>{if(e.type===`resize`||e.type===`scroll`){d();return}if(e instanceof KeyboardEvent){if(e.key!==`Escape`)return;e.preventDefault()}else{let t=e.target;if(s.contains(t)||n.contains(t))return}R(t)};s.__quickforgeDismissHandler=p,s.addEventListener(`pointerdown`,e=>e.stopPropagation()),document.addEventListener(`pointerdown`,p,!0),document.addEventListener(`keydown`,p,!0),window.addEventListener(`resize`,p,!0),window.addEventListener(`scroll`,p,!0),document.body.append(s),d(),n.setAttribute(`aria-expanded`,`true`)}function gt(e){let{panel:t,rightControls:n,getAcpSession:r,isStreaming:i,onModeChange:a,dismissComposerMenus:o}=e;if(!ft(r())){t.querySelector(`.quickforge-opencode-mode-inline`)?.remove(),R(t);return}let s=e=>{ht({panel:t,rightControls:n,getAcpSession:r,isStreaming:i,onModeChange:a,dismissComposerMenus:o,trigger:e,acpSession:r(),disabled:i()})},c=n.querySelector(`.quickforge-opencode-mode-inline`)??document.createElement(`button`);c.type=`button`;let l=i(),d=f(l?`openCodeModeDisabledWhileStreaming`:`openCodeModeMenuLabel`);u(c,`<span class="quickforge-opencode-mode-label"></span>`),c.querySelector(`.quickforge-opencode-mode-label`).textContent=pt(r()),c.title=d,c.setAttribute(`aria-label`,d),c.setAttribute(`aria-haspopup`,`menu`),c.setAttribute(`aria-expanded`,document.querySelector(`.quickforge-opencode-mode-menu`)?`true`:`false`),c.disabled=l,c.className=`quickforge-opencode-mode-inline quickforge-model-trigger inline-flex h-8 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 text-xs font-medium text-muted-foreground`,c.onpointerdown=e=>{e.preventDefault(),e.stopPropagation(),c.disabled||s(c)},c.onclick=e=>{e.preventDefault(),e.stopPropagation()},c.onkeydown=e=>{e.key!==`Enter`&&e.key!==` `&&e.key!==`ArrowDown`||(e.preventDefault(),c.disabled||s(c))};let p=n.querySelector(`button:last-child`);if(!p)n.append(c);else if(p!==c)n.insertBefore(c,p);else{let e=Array.from(n.querySelectorAll(`button`)).filter(e=>e!==c).pop();e?n.insertBefore(c,e.nextSibling):n.prepend(c)}}var _t={plugin:F,document:Ge,spreadsheet:Ke,presentation:qe,skill:F,tool:F,command:F};function z(e){let t=e.querySelector(`.quickforge-plus-popover`);t?.__quickforgeDismissHandler&&(document.removeEventListener(`pointerdown`,t.__quickforgeDismissHandler,!0),t.__quickforgeDismissHandler=void 0),t?.remove(),e.querySelector(`.quickforge-plus-inline`)?.setAttribute(`aria-expanded`,`false`)}function vt(e,t){e.querySelectorAll(`.quickforge-native-attachment-hidden`).forEach(e=>{t.contains(e)||e.classList.remove(`quickforge-native-attachment-hidden`)})}function yt(e){return e.querySelector(`.quickforge-native-attachment-hidden`)||Array.from(e.querySelectorAll(`button`)).find(e=>!e.classList.contains(`quickforge-plus-inline`)&&!e.classList.contains(`quickforge-agent-access-inline`)&&!e.classList.contains(`quickforge-yolo-inline`)&&!e.classList.contains(`quickforge-plan-inline`))}function bt(e,t){e.querySelectorAll(`input[type="file"]`).forEach(e=>{e.disabled=!0}),t&&(vt(e,t),yt(t)?.classList.add(`quickforge-native-attachment-hidden`))}function xt(e,t){let n=e.querySelector(`input[type="file"]`);if(n){n.click();return}yt(t)?.click()}function St({className:e,icon:t,label:n,description:r,pluginName:i,onSelect:a}){let o=document.createElement(`button`);o.type=`button`,o.className=`quickforge-plus-popover-item${e?` ${e}`:``}`,i&&(o.dataset.quickforgePluginName=i),o.innerHTML=`
14
+ <span class="quickforge-plus-popover-item-icon">${t}</span>
15
+ <span class="quickforge-plus-popover-item-main">
16
+ <span class="quickforge-plus-popover-item-label"></span>
17
+ ${r?`<span class="quickforge-plus-popover-item-description"></span>`:``}
18
+ </span>
19
+ `,o.querySelector(`.quickforge-plus-popover-item-label`).textContent=n;let s=o.querySelector(`.quickforge-plus-popover-item-description`);return s&&r&&(s.textContent=r),o.onpointerdown=e=>{e.preventDefault(),e.stopPropagation(),a()},o}function Ct(e,t){let{panel:n,editor:r,leftControls:i,insertBuiltinPluginMention:a,removeCommandSuggestions:o,removeCapabilitySuggestions:s}=e;R(n),o(),s();let c=n.querySelector(`.quickforge-plus-popover`)??document.createElement(`div`);c.className=`quickforge-plus-popover`,c.setAttribute(`role`,`menu`),c.innerHTML=``;let l=document.createElement(`div`);if(l.className=`quickforge-plus-popover-header`,l.textContent=f(t===`plugins`?`composerAddPlugins`:`composerAddMenu`),c.append(l),t===`main`)e.attachmentsEnabled&&c.append(St({icon:We,label:f(`composerAddAttachment`),onSelect:()=>{z(n),xt(r,i)}})),e.pluginsEnabled&&e.availablePluginRows().length>0&&c.append(St({icon:F,label:f(`composerAddPlugins`),onSelect:()=>Ct(e,`plugins`)}));else{let t=St({className:`quickforge-plus-popover-back`,icon:`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m15 18-6-6 6-6"/></svg>`,label:f(`composerAddBack`),onSelect:()=>Ct(e,`main`)});c.append(t);for(let t of e.availablePluginRows())c.append(St({icon:_t[t.iconKind],label:t.label,description:t.description,pluginName:t.pluginName,onSelect:()=>{a(t.mention),z(n)}}))}c.isConnected||r.parentElement?.insertBefore(c,r),c.__quickforgeDismissHandler&&document.removeEventListener(`pointerdown`,c.__quickforgeDismissHandler,!0),c.__quickforgeDismissHandler=e=>{let t=e.target;c.contains(t)||n.querySelector(`.quickforge-plus-inline`)?.contains(t)||z(n)},document.addEventListener(`pointerdown`,c.__quickforgeDismissHandler,!0),n.querySelector(`.quickforge-plus-inline`)?.setAttribute(`aria-expanded`,`true`)}function wt(e){let{panel:t,editor:n,leftControls:r}=e;vt(n,r),yt(r)?.classList.add(`quickforge-native-attachment-hidden`);let i=r.querySelector(`.quickforge-plus-inline`),a=n=>{n.type=`button`,u(n,Ue),n.title=f(`composerAddMenu`),n.setAttribute(`aria-label`,f(`composerAddMenu`)),n.setAttribute(`aria-haspopup`,`menu`),n.setAttribute(`aria-expanded`,t.querySelector(`.quickforge-plus-popover`)?`true`:`false`),n.className=`quickforge-plus-inline inline-flex h-8 w-8 items-center justify-center rounded-md border border-transparent text-muted-foreground`,n.onpointerdown=n=>{n.preventDefault(),n.stopPropagation(),t.querySelector(`.quickforge-plus-popover`)?z(t):Ct(e,`main`)},n.onclick=e=>{e.preventDefault(),e.stopPropagation()}};if(i){a(i);return}let o=document.createElement(`button`);a(o),r.prepend(o)}function Tt(e){switch(e){case`low`:return f(`thinkingLow`);case`medium`:return f(`thinkingMedium`);case`high`:return f(`thinkingHigh`);case`xhigh`:return f(`thinkingXHigh`);default:return f(`thinkingOff`)}}function Et(e,t){let n=e,r=n?.currentModel;t.querySelector(`[data-quickforge-thinking-badge]`)?.remove();let i=Array.from(t.querySelectorAll(`button:not(.quickforge-agent-access-inline):not(.quickforge-yolo-inline):not(.quickforge-plan-inline):not(.quickforge-opencode-mode-inline)`)).find(e=>!!(r?.id&&e.textContent?.includes(r.id)));i&&(i.classList.add(`quickforge-model-trigger`),i.setAttribute(`aria-haspopup`,`menu`),i.setAttribute(`aria-expanded`,document.querySelector(`.quickforge-model-menu`)?`true`:`false`),r?.reasoning?i.dataset.quickforgeThinkingLevel=`· ${Tt(n?.thinkingLevel)}`:delete i.dataset.quickforgeThinkingLevel)}function Dt(e){let t=e?.querySelector(`textarea`);t?.__quickforgePlanModeHandler&&(t.removeEventListener(`keydown`,t.__quickforgePlanModeHandler,!0),t.__quickforgePlanModeHandler=void 0),e&&delete e.dataset.quickforgePlanMode}function Ot(e,t,n){let r=e?.querySelector(`textarea`);if(!r)return;let i=r;i.__quickforgePlanModeHandler&&i.removeEventListener(`keydown`,i.__quickforgePlanModeHandler,!0),i.__quickforgePlanModeHandler=e=>{e.isComposing||e.key===`Process`||e.key!==`Tab`||!e.shiftKey||(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),n())},i.addEventListener(`keydown`,i.__quickforgePlanModeHandler,!0),e&&(e.dataset.quickforgePlanMode=String(t))}function kt(e){let{panel:t,leftControls:n,planMode:r,onTogglePlanMode:i}=e,a=f(`planModeEnabledTitle`),o=`${Ve}${He}<span>${f(`planModeLabel`)}</span>`,s=e=>{e.preventDefault(),e.stopPropagation(),i()},c=e=>{e.key!==`Enter`&&e.key!==` `||s(e)},l=t.querySelector(`.quickforge-plan-inline`),d=e=>{u(e,o),e.title=a,e.setAttribute(`aria-label`,a),e.setAttribute(`aria-pressed`,String(r)),e.className=`quickforge-plan-inline inline-flex h-8 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 text-xs font-medium text-muted-foreground`,e.onpointerdown=s,e.onclick=e=>{e.preventDefault(),e.stopPropagation()},e.onkeydown=c};if(!r)l?.remove();else if(l)d(l);else{let e=document.createElement(`button`);e.type=`button`,d(e);let t=n.querySelector(`.quickforge-agent-access-inline`);t?n.insertBefore(e,t.nextSibling):n.append(e)}}function At(e){let{rightControls:t,isStreaming:n,isWaiting:r,abort:i,removeCommandSuggestions:a}=e,o=t.querySelector(`button:last-child`);if(!o)return;let s=()=>{o.__quickforgeStopHandler&&=(o.removeEventListener(`pointerdown`,o.__quickforgeStopHandler,!0),o.removeEventListener(`click`,o.__quickforgeStopHandler,!0),void 0)};if(n())o.disabled=!1,o.classList.remove(`quickforge-send-button`),o.classList.add(`quickforge-stop-button`),o.classList.toggle(`quickforge-stop-button--waiting`,r?r():!1),o.title=`Stop`,o.setAttribute(`aria-label`,`Stop`),delete o.dataset.quickforgeSendIcon,g(o,`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><rect x="6" y="6" width="12" height="12" rx="2"/></svg>`),o.__quickforgeStopHandler||(o.__quickforgeStopHandler=e=>{e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),a(),i()},o.addEventListener(`pointerdown`,o.__quickforgeStopHandler,!0),o.addEventListener(`click`,o.__quickforgeStopHandler,!0));else if(s(),o.classList.remove(`quickforge-stop-button`),o.classList.remove(`quickforge-stop-button--waiting`),o.classList.add(`quickforge-send-button`),o.dataset.quickforgeSendIcon!==`arrow-up`){o.dataset.quickforgeSendIcon=`arrow-up`,g(o,`<svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 19V5"/><path d="m5 12 7-7 7 7"/></svg>`);let e=o.querySelector(`svg`)?.parentElement;e&&e!==o&&e.style.transform&&(e.style.transform=``)}}function jt(e){let{editor:t,onInput:n,onFilesChange:r,removeCommandSuggestions:i,updateCommandSuggestions:a,removeCapabilitySuggestions:o,updateCapabilitySuggestions:s,attachmentsEnabled:c=!0,onBeforeSend:l}=e;if(!t)return;t.__quickforgeAttachmentPasteGuard&&t.removeEventListener(`paste`,t.__quickforgeAttachmentPasteGuard,!0),t.__quickforgeAttachmentDropGuard&&t.removeEventListener(`drop`,t.__quickforgeAttachmentDropGuard,!0),c?(t.__quickforgeAttachmentPasteGuard=void 0,t.__quickforgeAttachmentDropGuard=void 0,t.onFilesChange=e=>{r(e?[...e]:[])}):(t.attachments=[],t.onFilesChange=()=>r([]),t.__quickforgeAttachmentPasteGuard=e=>{[...e.clipboardData?.items??[]].some(e=>e.kind===`file`)&&(e.preventDefault(),e.stopPropagation())},t.__quickforgeAttachmentDropGuard=e=>{(e.dataTransfer?.files.length??0)!==0&&(e.preventDefault(),e.stopPropagation())},t.addEventListener(`paste`,t.__quickforgeAttachmentPasteGuard,!0),t.addEventListener(`drop`,t.__quickforgeAttachmentDropGuard,!0)),t.onInput=e=>{n(e),a(e),s(e)};let u=t.onSend;u&&u!==t.__quickforgePlanWrappedOnSend&&(t.__quickforgePlanBaseOnSend=u);let d=t.__quickforgePlanBaseOnSend;if(d){let e=(e,t)=>{let n=String(e??``);E({attachments:c},n,t)&&(l?.(n),i(),o(),d(n,c?t:[]))};t.__quickforgePlanWrappedOnSend=e,t.onSend=e}a(),s()}function Mt(e){let t=e.querySelector(`message-editor`),n=t?.querySelector(`textarea`);return{text:t?.value??n?.value??``,attachments:t?.attachments?[...t.attachments]:[]}}function Nt(e,t,n){let r=Mt(e);d(r)?t.set(n,r):t.delete(n)}function Pt(e,t,n,r){if(!d(t))return!1;let i={text:t.text,attachments:t.attachments?[...t.attachments]:[]},a=e.querySelector(`message-editor`),o=a?.querySelector(`textarea`);return!a&&!o?!1:(a&&(a.value=i.text,a.attachments=i.attachments,a.requestUpdate?.(),a.onInput?.(i.text),a.onFilesChange?.(i.attachments)),o&&(o.value=i.text,o.dispatchEvent(new Event(`input`,{bubbles:!0})),o.focus()),n.set(r,i),!0)}function Ft(e,t,n,r,i={}){let a=!0,o,s=new Set,c=()=>{o!==void 0&&(window.cancelAnimationFrame(o),o=void 0);for(let e of s)window.clearTimeout(e);s.clear()},l=()=>{a&&(a=!1,c())},u=()=>{if(a){if(i.shouldApply&&!i.shouldApply()){l();return}i.onApplyStart?.();try{if(!Pt(e,t,n,r))return;i.onApplied?.(),l()}finally{i.onApplyEnd?.()}}};if(u(),a){o=window.requestAnimationFrame(u);for(let e of[0,50,150,300,600]){let t=window.setTimeout(()=>{s.delete(t),u()},e);s.add(t)}i.updateComplete?.then(u)}return{cancel:l}}function B(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function It(e){return e.split(`
20
+ `).map(e=>{let t=B(e);return e.startsWith(`+`)?`<span style="color:rgb(22 101 52);background:rgba(34,197,94,.14);display:block;">${t}</span>`:e.startsWith(`-`)?`<span style="color:rgb(153 27 27);background:rgba(239,68,68,.12);display:block;">${t}</span>`:e.startsWith(`@@`)?`<span style="color:rgb(37 99 235);background:rgba(37,99,235,.10);display:block;">${t}</span>`:`<span style="display:block;">${t||` `}</span>`}).join(`
21
+ `)}function Lt(e,t){let n=e.split(`
22
+ `),r=t.split(`
23
+ `),i=[];for(let e of n)i.push(`<span style="color:rgb(153 27 27);background:rgba(239,68,68,.12);display:block;">- ${B(e)}</span>`);for(let e of r)i.push(`<span style="color:rgb(22 101 52);background:rgba(34,197,94,.14);display:block;">+ ${B(e)}</span>`);return i.join(`
24
+ `)}function Rt(e){return JSON.stringify({tone:e.tone,disabled:e.disabled,disabledReason:e.disabledReason,copy:{status:e.status,title:e.title,risk:e.risk,approve:e.approveLabel,reject:e.rejectLabel},toolDisplayName:e.toolDisplayName,badges:e.badges,criticalParameters:e.criticalParameters,keySummary:e.keySummary,details:e.details,integration:e.integration})}var zt=`.quickforge-approval-card`,Bt={manage_global_memory:`manageGlobalMemory`,read_file:`readFile`,grep_files:`searchFiles`,write_file:`writeFile`,edit_file:`editFile`,run_command:`runCommand`,present_files:`presentFiles`,activate_skill:`activateSkill`,read_skill_resource:`readSkillResource`,run_subagent:`runSubagent`,generate_image:`generateImage`};function Vt(e){if(typeof e!=`string`||!e.startsWith(`mcp__`))return null;let t=e.slice(5),n=t.indexOf(`__`);return n<=0||n>=t.length-2?null:{serverName:t.slice(0,n),toolName:t.slice(n+2)}}function Ht(e){if(typeof e!=`string`||!e.startsWith(`plugin__`))return null;let t=e.slice(8),n=t.indexOf(`__`);return n<=0||n>=t.length-2?null:{pluginName:t.slice(0,n),toolName:t.slice(n+2)}}function Ut(e,t=f){let n=Bt[e];if(n)return t(n);let r=Vt(e);if(r)return`MCP · ${r.serverName} · ${r.toolName}`;let i=Ht(e);return i?`Plugin · ${i.pluginName} · ${i.toolName}`:e}function Wt(e,t){return typeof t.summary==`string`?t.summary:e===`run_command`&&typeof t.command==`string`?t.command:e===`activate_skill`&&typeof t.name==`string`?t.name:e===`read_skill_resource`&&typeof t.path==`string`||typeof t.path==`string`?t.path:typeof t.query==`string`?t.query:typeof t.name==`string`?t.name:``}function Gt(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Kt({toolName:e,args:t,source:n,tone:r=`warning`,copy:i,disabled:a=!1,disabledReason:o=``,translate:s=f}){let c=Vt(e),l=Ht(e),u=Ut(e,s),d=[];c?d.push({label:s(`toolApprovalSource`),value:`MCP`},{label:s(`toolApprovalServer`),value:c.serverName},{label:s(`toolApprovalTool`),value:c.toolName}):l&&d.push({label:s(`toolApprovalSource`),value:`Plugin`},{label:s(`toolApprovalPlugin`),value:l.pluginName},{label:s(`toolApprovalTool`),value:l.toolName}),typeof t.path==`string`&&t.path&&d.push({label:s(`toolApprovalPath`),value:t.path}),typeof t.command==`string`&&t.command&&d.push({label:s(`toolApprovalCommand`),value:t.command});let p=n?.type===`subagent`?n.label||n.subagent||`Subagent`:``,m=[...c?[`MCP`]:[],...l?[`Plugin`]:[],...p?[p]:[]],h=typeof t.keepRecentTurns==`number`?t.keepRecentTurns:3,g=r===`info`?s(`autoCompactApprovalRisk`,{keepRecentTurns:h}):s(e===`run_command`?`toolApprovalRiskCommand`:e===`write_file`||e===`edit_file`?`toolApprovalRiskFileChange`:c||l?`toolApprovalRiskExternal`:`toolApprovalRiskGeneric`);return{tone:r,status:i?.status??s(r===`info`?`autoCompactApprovalStatus`:`toolApprovalNeedsConfirmation`),title:i?.title??(r===`info`?s(`autoCompactApprovalTitle`):u),risk:i?.risk??g,approveLabel:i?.approve??s(r===`info`?`autoCompactApprovalAccept`:`toolApprovalAccept`),rejectLabel:i?.reject??s(r===`info`?`autoCompactApprovalReject`:`toolApprovalReject`),toolDisplayName:u,badges:m,criticalParameters:d,keySummary:Wt(e,t),details:Gt(t),disabled:a,disabledReason:a?o||s(`toolApprovalDisabled`):``,integration:c?`mcp`:l?`plugin`:null}}function qt(e){return e.role===`user`||e.role===`user-with-attachments`||e.role===`assistant`}function Jt(e){return e.role===`user`||e.role===`user-with-attachments`}function Yt(e,t,n){if(n<=0||t.length===0)return null;let r=[];for(let e=0;e<t.length;e++)Jt(t[e])&&r.push(e);if(r.length===0)return null;let i=Math.min(n,r.length),a=r[r.length-i],o=e.querySelector(`message-list`);if(!o)return null;let s=Array.from(o.querySelectorAll(`user-message, assistant-message`)).filter(e=>e.closest(`message-list`)===o),c=0;for(let e=0;e<=a;e++)if(qt(t[e])){if(e===a)return s[c]??null;c+=1}return null}function Xt(e){return e===`info`?`<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M12 11v5"/><path d="M12 8h.01"/></svg>`:`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M10.3 3.9 1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0Z"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>`}function Zt(e,t,n){let r=n.criticalParameters.map(({label:n,value:r})=>e===`run_command`&&r===t.command?``:`<div class="quickforge-approval-impact-row"><span>${B(n)}</span><strong>${B(r)}</strong></div>`).join(``),i=``;if(e===`run_command`&&typeof t.command==`string`)i=`<pre class="quickforge-approval-code"><span class="quickforge-approval-prompt">$</span> ${B(t.command)}</pre>`;else if(e===`edit_file`)i=`<pre class="quickforge-approval-code">${Lt(String(t.oldText??``),String(t.newText??``))}</pre>`;else if(e===`write_file`&&typeof t.content==`string`){let e=t.content.length>800;i=`<pre class="quickforge-approval-code">${It(t.content.slice(0,800))}${e?`\n${B(f(`toolApprovalTruncated`))}`:``}</pre>`}else n.keySummary&&!n.criticalParameters.some(({value:e})=>e===n.keySummary)&&(i=`<pre class="quickforge-approval-code">${B(n.keySummary)}</pre>`);return r||i?`<div class="quickforge-approval-impact">${r}${i}</div>`:``}function Qt(e,t,n,r,i){let{panel:a,onApprove:o,onReject:s}=e,c=Kt({toolName:t,args:r,source:i,tone:e.tone,copy:e.copy,disabled:e.disabled,disabledReason:e.disabledReason}),l=Rt(c);if(a.querySelector(`.quickforge-approval-card[data-tool-call-id="${CSS.escape(n)}"]`)?.dataset.displaySignature===l)return;$t(a);let u=document.createElement(`section`);u.className=`quickforge-approval-card quickforge-approval-card--${c.tone}`,u.dataset.toolCallId=n,u.dataset.displaySignature=l;let d=document.createElement(`div`);d.className=`quickforge-approval-body`,d.innerHTML=`
25
+ <div class="quickforge-approval-status-row">
26
+ <div class="quickforge-approval-status">${Xt(c.tone)}<span>${B(c.status)}</span></div>
27
+ ${c.badges.length?`<div class="quickforge-approval-badges">${c.badges.map(e=>`<span class="quickforge-approval-badge">${B(e)}</span>`).join(``)}</div>`:``}
28
+ </div>
29
+ <h3 class="quickforge-approval-title">${B(c.title)}</h3>
30
+ <p class="quickforge-approval-risk">${B(c.risk)}</p>
31
+ ${Zt(t,r,c)}
32
+ `,u.append(d);let p=document.createElement(`div`);p.className=`quickforge-approval-details`;let m=document.createElement(`button`);m.type=`button`,m.className=`quickforge-approval-details-toggle`,m.setAttribute(`aria-expanded`,`false`),m.innerHTML=`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg>`;let h=document.createElement(`span`);h.textContent=f(`toolApprovalViewDetails`),m.append(h);let g=document.createElement(`div`);g.className=`quickforge-approval-details-content`,g.innerHTML=`<pre class="quickforge-approval-code">${B(c.details)}</pre>`,m.addEventListener(`click`,e=>{e.stopPropagation();let t=p.classList.toggle(`quickforge-approval-details--open`);m.setAttribute(`aria-expanded`,String(t)),h.textContent=f(t?`toolApprovalHideDetails`:`toolApprovalViewDetails`)}),p.append(m,g),d.append(p);let _=document.createElement(`div`);_.className=`quickforge-approval-message`,c.disabledReason?(_.textContent=c.disabledReason,_.classList.add(`quickforge-approval-message--disabled`)):_.hidden=!0,d.append(_);let v=document.createElement(`div`);v.className=`quickforge-approval-actions`;let y=document.createElement(`button`),b=document.createElement(`button`);y.type=`button`,y.className=`quickforge-approval-button quickforge-approval-button--primary`,y.textContent=c.approveLabel,b.type=`button`,b.className=`quickforge-approval-button quickforge-approval-button--reject`,b.textContent=c.rejectLabel;let x=(e,t)=>{y.disabled=e||c.disabled,b.disabled=e||c.disabled,y.classList.toggle(`quickforge-approval-button--loading`,e&&t===y),b.classList.toggle(`quickforge-approval-button--loading`,e&&t===b),e&&t&&(t.textContent=f(`toolApprovalSubmitting`))},S=async(e,t,n)=>{_.hidden=!0,_.textContent=``,_.classList.remove(`quickforge-approval-message--disabled`),x(!0,t);try{await e()}catch(e){_.textContent=e instanceof Error&&e.message?e.message:f(`toolApprovalFailed`),_.hidden=!1,t.textContent=f(`toolApprovalRetry`);let n=t===y?b:y;n.textContent=t===y?c.rejectLabel:c.approveLabel,x(!1),t.textContent=f(`toolApprovalRetry`);return}t.textContent=n};y.addEventListener(`click`,e=>{e.stopPropagation(),e.preventDefault(),S(o,y,c.approveLabel)}),b.addEventListener(`click`,e=>{e.stopPropagation(),e.preventDefault(),S(s,b,c.rejectLabel)}),x(!1),v.append(b,y),d.append(v);let C=e.keepRecentTurns?Yt(a,e.getMessages?.()??[],e.keepRecentTurns):null,w=a.querySelector(`message-list`);C?C.before(u):w?w.append(u):a.querySelector(`agent-interface`)?.append(u),C||u.scrollIntoView({behavior:`smooth`,block:`end`})}function $t(e){e.querySelectorAll(zt).forEach(e=>e.remove())}var en=`.quickforge-ask-card`;function tn(e){return e?Array.isArray(e.choices)&&e.choices.length>0?!0:typeof e.custom==`string`&&e.custom.trim().length>0:!1}function nn(e){return[Array.isArray(e?.choices)&&e.choices.length?e.choices.join(` · `):``,typeof e?.custom==`string`&&e.custom.trim()?e.custom.trim():``].filter(Boolean).join(` 补充:`)}function rn(e,t){return JSON.stringify({askId:e.askId,count:e.questions.length,disabled:t})}function an(e,t){let{panel:n}=e,r=e.disabled===!0,i=rn(t,r);if(n.querySelector(`${en}[data-ask-id="${CSS.escape(t.askId)}"]`)?.dataset.displaySignature===i)return;on(n);let a=t.questions,o=a.map(()=>({})),s=0,c=document.createElement(`section`);c.className=`quickforge-ask-card`,c.dataset.askId=t.askId,c.dataset.displaySignature=i;let l=document.createElement(`div`);l.className=`quickforge-ask-head`,l.innerHTML=`
33
+ <svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
34
+ <span class="quickforge-ask-who">${B(f(`askUserTitle`))}</span>
35
+ <span class="quickforge-ask-waiting"><span class="quickforge-ask-dot"></span><span class="quickforge-ask-progress"></span></span>
36
+ `;let u=document.createElement(`div`);u.className=`quickforge-ask-dots`,u.innerHTML=a.map(()=>`<span class="quickforge-ask-step"></span>`).join(``);let d=document.createElement(`div`);d.className=`quickforge-ask-body`;let p=document.createElement(`div`);p.className=`quickforge-ask-message`,p.hidden=!0;let m=document.createElement(`div`);m.className=`quickforge-ask-actions`;let h=document.createElement(`button`);h.type=`button`,h.className=`quickforge-ask-button quickforge-ask-button--ghost`,h.textContent=f(`askUserBack`);let g=document.createElement(`button`);g.type=`button`,g.className=`quickforge-ask-button quickforge-ask-button--ghost`,g.textContent=f(`askUserNext`);let _=document.createElement(`button`);_.type=`button`,_.className=`quickforge-ask-button quickforge-ask-button--primary`,_.textContent=f(`askUserSubmit`);let v=document.createElement(`button`);v.type=`button`,v.className=`quickforge-ask-button quickforge-ask-button--ghost`,v.textContent=f(`askUserSkip`);let y=document.createElement(`span`);y.className=`quickforge-ask-note`,m.append(h,g,_,v,y),c.append(l,u,d,p,m);let b=()=>{let e=s>=a.length,t=a[s];if(l.querySelector(`.quickforge-ask-progress`).textContent=e?f(`askUserReviewTitle`):f(`askUserProgress`,{current:String(s+1),total:String(a.length)}),Array.from(u.children).forEach((t,n)=>{t.className=`quickforge-ask-step`+(n<s||e&&n<=a.length-1?` quickforge-ask-step--done`:``)+(n===s?` quickforge-ask-step--current`:``)}),h.style.visibility=s>0&&!e||e?`visible`:`hidden`,g.style.display=!e&&(t.multiSelect===!0||t.allowCustom!==!1)?``:`none`,_.style.display=e?``:`none`,v.style.display=e?`none`:``,e){y.textContent=``,d.innerHTML=`
37
+ <div class="quickforge-ask-review">
38
+ ${a.map((e,t)=>`
39
+ <div class="quickforge-ask-review-row">
40
+ <div class="quickforge-ask-review-content">
41
+ <span class="quickforge-ask-review-question">${B(`${t+1}. ${e.question}`)}</span>
42
+ <span class="quickforge-ask-review-answer">${B(nn(o[t])||f(`askUserUnanswered`))}</span>
43
+ </div>
44
+ <button type="button" class="quickforge-ask-review-edit" data-review-index="${t}">${B(f(`askUserEdit`))}</button>
45
+ </div>
46
+ `).join(``)}
47
+ </div>
48
+ `,d.querySelectorAll(`.quickforge-ask-review-edit`).forEach(e=>{e.addEventListener(`click`,()=>{let t=Number(e.dataset.reviewIndex);t<0||t>=a.length||(p.hidden=!0,C(),s=t,b())})}),d.classList.remove(`quickforge-ask-body--enter`);return}let n=t.multiSelect===!0,i=t.allowCustom!==!1;y.textContent=f(n?`askUserMultiHint`:`askUserAutoAdvanceHint`),d.innerHTML=`
49
+ <div class="quickforge-ask-question">
50
+ ${B(`${s+1}. ${t.question}`)}
51
+ <span class="quickforge-ask-chip">${B(f(n?`askUserMultiChip`:`askUserSingleChip`))}</span>
52
+ </div>
53
+ <div class="quickforge-ask-options">
54
+ ${(t.options??[]).map((e,t)=>`
55
+ <button type="button" class="quickforge-ask-option${o[s].choices?.includes(e.label)?` quickforge-ask-option--picked`:``}" data-option-index="${t}">
56
+ <span class="quickforge-ask-check"></span>
57
+ <span class="quickforge-ask-option-body">
58
+ <span class="quickforge-ask-option-label">${B(e.label)}</span>
59
+ ${e.description?`<span class="quickforge-ask-option-desc">${B(e.description)}</span>`:``}
60
+ </span>
61
+ ${n?``:`<span class="quickforge-ask-option-arrow" aria-hidden="true">→</span>`}
62
+ </button>
63
+ `).join(``)}
64
+ </div>
65
+ ${i?`<button type="button" class="quickforge-ask-custom-toggle">${B(f(`askUserCustomToggle`))}</button>
66
+ <div class="quickforge-ask-custom" hidden>
67
+ <textarea class="quickforge-ask-custom-input" rows="3" placeholder="${B(f(`askUserCustomPlaceholder`))}"></textarea>
68
+ </div>`:``}
69
+ `,d.querySelectorAll(`.quickforge-ask-option`).forEach(e=>{e.disabled=r,e.addEventListener(`click`,()=>{let r=Number(e.dataset.optionIndex),i=t.options?.[r]?.label;if(typeof i!=`string`)return;let a=o[s];if(a.choices=a.choices??[],n){let e=a.choices.indexOf(i);e>=0?a.choices.splice(e,1):a.choices.push(i)}else{a.choices=[i],T();return}e.classList.toggle(`quickforge-ask-option--picked`,a.choices.includes(i))})});let c=d.querySelector(`.quickforge-ask-custom-toggle`),m=d.querySelector(`.quickforge-ask-custom`),x=d.querySelector(`.quickforge-ask-custom-input`);c?.addEventListener(`click`,()=>{if(!m||!x)return;let e=m.hidden;m.hidden=!e,e&&(x.value=x.value||o[s].custom||``,x.disabled=r,x.focus())}),x?.addEventListener(`input`,()=>{o[s].custom=x.value}),x?.addEventListener(`keydown`,e=>{if(e.key===`Enter`&&!e.shiftKey){if(e.preventDefault(),!tn(o[s])){E(f(`askUserNeedAnswer`));return}T()}})},x=!1,S,C=()=>{S!==void 0&&window.clearTimeout(S),S=void 0,x=!1,v.textContent=f(`askUserSkip`)},w=!1,T=()=>{w||(C(),w=!0,d.classList.add(`quickforge-ask-body--leaving`),window.setTimeout(()=>{w=!1,s=Math.min(s+1,a.length),d.classList.remove(`quickforge-ask-body--leaving`),b(),d.classList.add(`quickforge-ask-body--enter`),window.setTimeout(()=>d.classList.remove(`quickforge-ask-body--enter`),220)},150))},E=e=>{p.textContent=e,p.hidden=!1};g.addEventListener(`click`,()=>{if(!tn(o[s])){E(f(`askUserNeedAnswer`));return}T()}),h.addEventListener(`click`,()=>{p.hidden=!0,C(),s=Math.max(0,s-1),b()});let D=e=>{_.disabled=e||r,v.disabled=e||r,g.disabled=e||r,h.disabled=e,e?_.textContent=f(`askUserSubmitting`):_.textContent=f(`askUserSubmit`)};_.addEventListener(`click`,t=>{t.stopPropagation(),t.preventDefault(),p.hidden=!0,C(),D(!0),Promise.resolve(e.onSubmit(o.map(e=>({...e})))).catch(()=>{E(f(`askUserFailed`)),D(!1)})}),v.addEventListener(`click`,t=>{if(t.stopPropagation(),t.preventDefault(),p.hidden=!0,!x){x=!0,v.textContent=f(`askUserSkipConfirm`),S=window.setTimeout(C,5e3);return}C(),D(!0),Promise.resolve(e.onSkip()).catch(()=>{E(f(`askUserFailed`)),D(!1)})}),r&&(v.disabled=!0,e.disabledReason?E(e.disabledReason):e.disabledReason||E(f(`askUserUnavailable`))),D(!1),b();let O=n.querySelector(`message-list`);O?O.append(c):n.querySelector(`agent-interface`)?.append(c),c.scrollIntoView({behavior:`smooth`,block:`end`})}function on(e){e.querySelectorAll(en).forEach(e=>e.remove())}function sn(e,t,n){let r=f(`copied`),i=Number(e.dataset.quickforgeCopyFeedbackTimer);i&&window.clearTimeout(i),g(e,Le),e.title=r,e.setAttribute(`aria-label`,r),e.style.color=`rgb(5 150 105)`;let a=window.setTimeout(()=>{g(e,n),e.title=t,e.setAttribute(`aria-label`,t),e.style.color=``,delete e.dataset.quickforgeCopyFeedbackTimer},1200);e.dataset.quickforgeCopyFeedbackTimer=String(a)}function cn(e){return e.role===`user`||e.role===`user-with-attachments`||e.role===`assistant`}function ln(e){return e.role===`user`||e.role===`user-with-attachments`}function un(e,t){for(let n=Math.min(t,e.length-1);n>=0;n--)if(ln(e[n]))return n;return 0}function dn(e){let t=e.querySelector(`message-list`);return t?Array.from(t.querySelectorAll(`user-message, assistant-message`)).filter(e=>e.closest(`message-list`)===t):[]}function fn(e,t,n,r){let i=dn(e),a=0;for(let e=0;e<t.length;e++)if(cn(t[e])){if(e===n){let e=i[a];if(e){r.nextElementSibling!==e&&e.before(r);return}break}a+=1}let o=e.querySelector(`message-list`);o&&o.firstElementChild!==r&&o.prepend(r)}function pn(e){let t=e,n=t?.role===`assistant`?c(t):p(t);return(n.match(/<compact_summary>\s*([\s\S]*?)\s*<\/compact_summary>/i)?.[1]??n).trim()}function mn(e,t,n=!1){let r=e.querySelector(`.quickforge-context-compaction-details`),i=e.querySelector(`.quickforge-context-compaction-summary`),a=e.querySelector(`.quickforge-context-compaction-toggle-label`),o=e.querySelector(`[data-quickforge-action="copy-compact-summary"]`);r&&(r.open=n);let c=()=>{a&&r&&(a.textContent=r.open?f(`contextCompactedHideSummary`):f(`contextCompactedViewSummary`))};i&&!i.dataset.quickforgeCompactionBound&&(i.dataset.quickforgeCompactionBound=`true`,i.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),r&&(r.open=!r.open,c())})),r&&!r.dataset.quickforgeCompactionBound&&(r.dataset.quickforgeCompactionBound=`true`,r.addEventListener(`toggle`,c)),c(),o&&(o.onclick=async e=>{e.preventDefault(),e.stopPropagation(),await s(t),sn(o,f(`contextCompactedCopySummary`),P)})}function hn(e){let{panel:t,getMessages:n,getContextCompaction:r,messageIndexOffset:i=0}=e,a=r(),o=n(),s=t.querySelector(`.quickforge-context-compaction-notice`);if(!a||o.length===0){s?.remove();return}let c=Math.max(0,Number(a.compactedUpToIndex)||0),l=i+o.length;if(c<=0||c>=l){s?.remove();return}let u=un(o,Math.max(0,c-i)),d=a.summaryMessage?pn(a.summaryMessage):``,p=s?.querySelector(`.quickforge-context-compaction-details`)?.open??!1,m=s??document.createElement(`div`),h=m.dataset.summaryText??``,g=m.dataset.hasSummary===`true`,_=!s||h!==d||g!==!!d;m.className=`quickforge-context-compaction-notice`,m.dataset.tailStart=String(u),m.dataset.summaryText=d,m.dataset.hasSummary=String(!!d),m.title=f(`contextCompactedTooltip`),m.setAttribute(`aria-label`,f(`contextCompactedTooltip`)),_&&(m.innerHTML=d?`
70
+ <details class="quickforge-context-compaction-details">
71
+ <summary class="quickforge-context-compaction-summary">
72
+ <div class="quickforge-context-compaction-line"></div>
73
+ <div class="quickforge-context-compaction-pill">
74
+ <span class="quickforge-context-compaction-dot" aria-hidden="true"></span>
75
+ <span><strong>${B(f(`contextCompactedLabel`))}</strong> · ${B(f(`contextCompactedTimelineLabel`))} · <span class="quickforge-context-compaction-toggle-label"></span></span>
76
+ </div>
77
+ <div class="quickforge-context-compaction-line"></div>
78
+ </summary>
79
+ <div class="quickforge-context-compaction-card">
80
+ <div class="quickforge-context-compaction-card-header">
81
+ <span>${B(f(`contextCompactedSummaryTitle`))}</span>
82
+ <button type="button" class="quickforge-context-compaction-copy" data-quickforge-action="copy-compact-summary">${P}<span>${B(f(`contextCompactedCopySummary`))}</span></button>
83
+ </div>
84
+ <pre class="quickforge-context-compaction-text">${B(d)}</pre>
85
+ </div>
86
+ </details>
87
+ `:`
88
+ <div class="quickforge-context-compaction-summary" role="separator">
89
+ <div class="quickforge-context-compaction-line"></div>
90
+ <div class="quickforge-context-compaction-pill">
91
+ <span class="quickforge-context-compaction-dot" aria-hidden="true"></span>
92
+ <span><strong>${B(f(`contextCompactedLabel`))}</strong> · ${B(f(`contextCompactedTimelineLabel`))}</span>
93
+ </div>
94
+ <div class="quickforge-context-compaction-line"></div>
95
+ </div>
96
+ `),d&&mn(m,d,p),fn(t,o,u,m)}function gn(e){let{panel:t,isDegraded:n}=e,r=t.querySelector(`.quickforge-persist-degraded-notice`);if(!n()){r?.remove();return}let i=f(`persistDegradedWarning`);if(r){let e=r.querySelector(`.quickforge-persist-degraded-text`);e&&e.textContent!==i&&(e.textContent=i);return}let a=document.createElement(`div`);a.className=`quickforge-persist-degraded-notice`,a.setAttribute(`role`,`alert`),a.innerHTML=`<span class="quickforge-persist-degraded-dot" aria-hidden="true"></span><span class="quickforge-persist-degraded-text">${B(i)}</span>`;let o=t.querySelector(`message-list`);o&&o.firstElementChild!==a&&o.prepend(a)}function _n(e){return String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function vn(e){return Number.isFinite(e)?e>=1e6?`${(e/1e6).toFixed(e>=1e7?0:1)}M`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?0:1)}k`:String(Math.round(e)):``}function yn(e){let t=[f(`openCodeUsageTokensTitle`,{used:vn(e.used)||`0`,size:vn(e.size)||`0`})];return e.cost&&Number.isFinite(e.cost.amount)&&t.push(f(`openCodeUsageCostTitle`,{amount:e.cost.amount,currency:e.cost.currency})),t.join(`
97
+ `)}function bn(e){let t=`${vn(e.used)} / ${vn(e.size)} tokens`;return e.cost&&Number.isFinite(e.cost.amount)?`${t} · ${e.cost.amount} ${e.cost.currency}`:t}function xn({panel:e,getAcpSession:t}){return{update:()=>{let n=t()?.usage??null,r=e.querySelector(`.quickforge-opencode-usage-inline`),i=e.querySelector(`message-editor`)?.parentElement?.querySelector(`.ml-auto.items-center`);if(!n||!i){r?.remove();return}let a=yn(n),o=bn(n);if(r){if(r.dataset.quickforgeOpenCodeUsage===o)return;r.dataset.quickforgeOpenCodeUsage=o,r.innerHTML=`<span class="quickforge-opencode-usage-text">${_n(o)}</span>`,r.title=a,r.setAttribute(`aria-label`,a);return}let s=document.createElement(`span`);s.className=`quickforge-opencode-usage-inline`,s.dataset.quickforgeOpenCodeUsage=o,s.title=a,s.setAttribute(`aria-label`,a),s.innerHTML=`<span class="quickforge-opencode-usage-text">${_n(o)}</span>`,i.prepend(s)},cleanup:()=>{}}}var V=`.quickforge-process-group`,Sn=`.quickforge-process-body`,Cn=`.quickforge-process-tools`,wn=`.quickforge-process-tools-body`,Tn=`.quickforge-process-stage`,En=`.quickforge-process-stage-body`,Dn=`thinking-block, tool-message`,H=`thinking-block, tool-message, markdown-block`,On=`data-quickforge-process-final-summary`,kn=`data-quickforge-process-folded`,An=500,jn=new Set([`edit_file`,`write_file`]),Mn=new WeakMap,Nn=new WeakMap,U=new WeakMap,Pn=1;function Fn(e){let t=Mn.get(e);return t||(t=new Map,Mn.set(e,t)),t}function In(e,t,n){let r=Fn(e);if(r.set(t,n),r.size<=An)return;let i=r.keys().next().value;i&&r.delete(i)}function Ln(e){return e.findIndex(e=>e.connected)}function Rn(e){let t=Nn.get(e);return t===void 0&&(t=Pn++,Nn.set(e,t)),t}function zn(e,t,n){let r=Un(t[0]?.message?.timestamp);return`scope:${Rn(e)}:turn:${n}:started:${r??`unknown`}`}function Bn(e,t,n,r){return e===void 0?t?n:r:e}function Vn(e,t,n,r=!1){let i=t.dataset.quickforgeProcessKey;t.dataset.quickforgeProcessKey=n;let a=Fn(e).get(n),o=Bn(a,i===n,t.dataset.expanded===`true`,r);t.dataset.expanded=String(o),a===void 0&&r&&In(e,n,o)}function W(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function Hn(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function Un(e){if(typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`string`){let t=e.trim();if(!t)return;let n=Number(t);if(Number.isFinite(n))return n;let r=Date.parse(t);return Number.isNaN(r)?void 0:r}}function Wn(e){if(!W(e))return;let t=e.details;if(!W(t))return;let n=t.quickforgeTiming;if(W(n))return{startedAt:Hn(n.startedAt),finishedAt:Hn(n.finishedAt),durationMs:Hn(n.durationMs)}}function Gn(e){let t=Wn(e.result);if(t?.finishedAt!==void 0)return t.finishedAt;if(t?.startedAt!==void 0&&t.durationMs!==void 0)return t.startedAt+t.durationMs}function Kn(e){return Wn(e.result)?.startedAt}function qn(e){if(W(e.details))return Un(e.details.quickforgeProcessFinishedAt)}function Jn(e){let t=e.map(qn).filter(e=>e!==void 0);return t.length>0?Math.max(...t):void 0}function Yn(e){if(e===void 0||e<1e3)return``;let t=Math.max(1,Math.round(e/1e3)),n=Math.floor(t/60),r=t%60;return n>0?f(`processDurationMinutesSeconds`,{minutes:n,seconds:r}):f(`processDurationSeconds`,{seconds:r})}function G(e){return e.tool?.name||e.toolCall?.name||``}function Xn(e){return e!==`run_subagent`&&e!==`generate_image`}function Zn(e){return e.tagName.toLowerCase()===`tool-message`&&Xn(G(e))}function Qn(e){return e.aborted?!0:W(e.result)&&e.result.isError===!0}function $n(e){if(!jn.has(G(e)))return;let t=e.toolCall?.arguments?.path;if(typeof t==`string`&&t.trim())return t.trim();let n=W(e.result)?e.result.details:void 0,r=W(n)?n.path:void 0;return typeof r==`string`&&r.trim()?r.trim():void 0}function er(e){let t=Array.from(e),n=t.map($n),r=new Set(n.filter(e=>!!e)),i=t.length>0&&t.every(e=>jn.has(G(e))),a=n.every(e=>e!==void 0);return{count:t.length,errorCount:t.filter(Qn).length,commandsOnly:t.length>0&&t.every(e=>G(e)===`run_command`),...i&&a?{editedFileCount:r.size}:{}}}function tr(e){let t=Array.from(e),n=t.map($n),r=new Set(n.filter(e=>!!e));return{toolCallCount:t.length,commandCount:t.filter(e=>G(e)===`run_command`).length,editedFileCount:r.size}}function nr(e,t){let n=[];e.toolCallCount>0&&n.push(f(`processGroupToolsCalled`,{count:e.toolCallCount})),e.commandCount>0&&n.push(f(`processGroupCommandsRan`,{count:e.commandCount})),e.editedFileCount>0&&n.push(f(`processGroupFilesEdited`,{count:e.editedFileCount}));let r=f(t?`processExecuting`:`processExecuted`);return n.length>0?`${r} ${n.join(` · `)}`:r}function rr(e){let t=f(e.commandsOnly?`processCommandsRan`:e.editedFileCount===void 0?`processToolsCalled`:`processFilesEdited`,{count:e.editedFileCount??e.count});return e.errorCount>0?`${t} · ${f(`processToolsFailedCount`,{count:e.errorCount})}`:t}function ir(e,t){return[e,t].filter(Boolean).join(` · `)}function ar(e,t,n){let r=zr(t).map(({node:e})=>e).filter(e=>e.tagName.toLowerCase()===`tool-message`),i=[...e.map(e=>Un(e.message?.timestamp)),...r.map(Kn)].filter(e=>e!==void 0),a=[Jn(e.map(e=>e.message??{})),...r.map(Gn)].filter(e=>e!==void 0),o=i.length>0?Math.min(...i):void 0,s=a.length>0?Math.max(...a):void 0;if(n)s=Date.now();else{let e=Un(t.dataset.quickforgeFinishedAt);e!==void 0&&e>0?s=e:(s??=Date.now(),t.dataset.quickforgeFinishedAt=String(s))}let c=o!==void 0&&s!==void 0?Yn(Math.max(0,s-o)):``,l=[...e].reverse().find(e=>e.message?.stopReason)?.message?.stopReason;return ir(f(l===`error`?`processFailed`:l===`aborted`?`processAborted`:n?`processExecuting`:`processExecuted`),c)}function or(e){return e.closest(`message-list`)}function sr(e,t){return e.closest(`message-list`)===or(t)&&Er(e)}function cr(e){return Array.from(e.querySelectorAll(V)).filter(t=>t.closest(`assistant-message`)===e)}function lr(e){let t=e.querySelector(`${H}, ${V}`);return t?.closest(`.px-4.flex.flex-col`)??t?.parentElement??null}function ur(){let e=document.createElement(`div`);return e.className=`quickforge-process-step`,e}function dr(){return`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 18V5"/><path d="M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"/><path d="M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"/><path d="M17.997 5.125a4 4 0 0 1 2.526 5.77"/><path d="M18 18a4 4 0 0 0 2-7.464"/><path d="M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"/><path d="M6 18a4 4 0 0 1-2-7.464"/><path d="M6.003 5.125a4 4 0 0 0-2.526 5.77"/></svg>`}function fr(){return`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="14" x="3" y="5" rx="2"/><path d="m7 9 3 3-3 3"/><path d="M13 15h4"/></svg>`}function pr(e){let t=e.map((e,t)=>({child:e,index:t})).filter(({child:e})=>!e.quickforgeIcon),n=t.find(({child:e})=>e.markedChevron)??t.find(({child:e})=>e.hasSvg),r=t.find(({child:e,index:t})=>e.markedLabel&&t!==n?.index)??t.find(({index:e})=>e!==n?.index);return{chevronIndex:n?.index,labelIndex:r?.index,chevronExpanded:n?.child.rotated===!0}}function mr(e){e.querySelectorAll(`thinking-block`).forEach(t=>{if(t.closest(V)!==e)return;let n=t.querySelector(`:scope > .thinking-block > .thinking-header`);if(!n)return;let r=Array.from(n.children).filter(e=>e instanceof HTMLElement),{chevronIndex:i,labelIndex:a,chevronExpanded:o}=pr(r.map(e=>({quickforgeIcon:e.dataset.quickforgeThinkingRole===`icon`||e.classList.contains(`quickforge-process-thinking-icon`),markedChevron:e.dataset.quickforgeThinkingRole===`chevron`,markedLabel:e.dataset.quickforgeThinkingRole===`label`,hasSvg:!!e.querySelector(`svg`),rotated:e.classList.contains(`rotate-90`)||e.classList.contains(`quickforge-process-thinking-chevron-expanded`)}))),s=i===void 0?void 0:r[i],c=a===void 0?void 0:r[a];if(!s||!c)return;s.dataset.quickforgeThinkingRole=`chevron`,c.dataset.quickforgeThinkingRole=`label`,s.className=`quickforge-process-thinking-chevron`,s.classList.toggle(`quickforge-process-thinking-chevron-expanded`,o),c.className=`quickforge-process-thinking-label`,c.textContent=f(`processThinking`);let l=r.find(e=>e.dataset.quickforgeThinkingRole===`icon`||e.classList.contains(`quickforge-process-thinking-icon`));l||(l=document.createElement(`span`),l.setAttribute(`aria-hidden`,`true`),l.innerHTML=dr()),l.dataset.quickforgeThinkingRole=`icon`,l.classList.add(`quickforge-process-thinking-icon`),n.prepend(l),n.append(c,s),n.className=`thinking-header quickforge-process-thinking-header`})}function hr(){let e=document.createElement(`div`);e.className=`quickforge-process-tools`,e.dataset.expanded=`false`;let t=document.createElement(`button`);t.type=`button`,t.className=`quickforge-process-tools-summary`,t.innerHTML=`
98
+ <span class="quickforge-process-tools-icon" aria-hidden="true">
99
+ ${fr()}
100
+ </span>
101
+ <span class="quickforge-process-tools-label"></span>
102
+ <span class="quickforge-process-tools-chevron" aria-hidden="true">
103
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
104
+ </span>
105
+ `;let n=document.createElement(`div`);return n.className=`quickforge-process-tools-body`,e.append(t,n),e}function gr(){let e=document.createElement(`div`);e.className=`quickforge-process-stage`,e.dataset.expanded=`false`;let t=document.createElement(`button`);t.type=`button`,t.className=`quickforge-process-stage-summary`,t.innerHTML=`
106
+ <span class="quickforge-process-stage-label"></span>
107
+ <span class="quickforge-process-stage-chevron" aria-hidden="true">
108
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
109
+ </span>
110
+ `;let n=document.createElement(`div`);return n.className=`quickforge-process-stage-body`,e.append(t,n),e}function _r(){let e=document.createElement(`div`);e.className=`quickforge-process-group`,e.dataset.expanded=`false`;let t=document.createElement(`button`);t.type=`button`,t.className=`quickforge-process-summary`,t.innerHTML=`
111
+ <span class="quickforge-process-label"></span>
112
+ <span class="quickforge-process-chevron" aria-hidden="true">
113
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
114
+ </span>
115
+ `;let n=document.createElement(`div`);return n.className=`quickforge-process-body`,e.append(t,n),e}function vr(){return!1}function yr(e,t){return`${e}:stage:${t}`}function br(e,t,n,r){let i=Array.from(n.querySelectorAll(Tn)).filter(e=>e.closest(V)===n);i.forEach((n,a)=>{let o=n.querySelector(`:scope > ${En}`),s=n.querySelector(`:scope > .quickforge-process-stage-summary`),c=n.querySelector(`:scope > .quickforge-process-stage-summary > .quickforge-process-stage-label`);if(!o||!s||!c)return;let l=yr(t,a),u=`quickforge-${l.replace(/[^a-z0-9_-]+/gi,`-`)}`,d=n.dataset.quickforgeProcessKey;n.dataset.quickforgeProcessKey=l;let p=Bn(Fn(e).get(l),d===l,n.dataset.expanded===`true`,vr());n.dataset.expanded=String(p);let m=r&&a===i.length-1;c.textContent=nr(tr(o.querySelectorAll(`tool-message`)),m),o.id=u,s.setAttribute(`aria-controls`,u),s.setAttribute(`aria-expanded`,String(p)),s.setAttribute(`aria-label`,`${c.textContent} · ${f(p?`collapseProcess`:`expandProcess`)}`),s.onclick=t=>{t.preventDefault(),t.stopPropagation();let r=n.dataset.expanded!==`true`;n.dataset.expanded=String(r),In(e,l,r),s.setAttribute(`aria-expanded`,String(r)),s.setAttribute(`aria-label`,`${c.textContent} · ${f(r?`collapseProcess`:`expandProcess`)}`)}})}function xr(e,t,n){return t?`${e}:tools:${t}`:`${e}:tools:${n}`}function Sr(e,t,n){return xr(e,Array.from(t.querySelectorAll(`tool-message`))[0]?.toolCall?.id,n)}function Cr(e,t,n){n.querySelectorAll(Cn).forEach((r,i)=>{if(r.closest(V)!==n)return;let a=r.querySelector(`:scope > ${wn}`),s=r.querySelector(`.quickforge-process-tools-summary`),c=r.querySelector(`.quickforge-process-tools-label`);if(!a||!s||!c)return;let l=er(a.querySelectorAll(`:scope > tool-message`));if(r.hidden=l.count===0,l.count===0)return;let u=Sr(t,r,i),d=`quickforge-${u.replace(/[^a-z0-9_-]+/gi,`-`)}`;a.id=d,s.setAttribute(`aria-controls`,d);let p=o().toolDisplayMode===`detailed`,m=p?`detailed`:`compact`,h=r.dataset.quickforgeProcessKey,g=r.dataset.quickforgeToolDisplayMode;r.dataset.quickforgeProcessKey=u,r.dataset.quickforgeToolDisplayMode=m;let _=Bn(Fn(e).get(u),h===u&&g===m,r.dataset.expanded===`true`,p);r.dataset.expanded=String(_),c.textContent=rr(l),s.setAttribute(`aria-expanded`,String(_)),s.setAttribute(`aria-label`,f(_?`collapseProcessTools`:`expandProcessTools`)),s.onclick=t=>{t.preventDefault(),t.stopPropagation();let n=r.dataset.expanded===`false`;r.dataset.expanded=String(n),In(e,u,n),s.setAttribute(`aria-expanded`,String(n)),s.setAttribute(`aria-label`,f(n?`collapseProcessTools`:`expandProcessTools`))}})}function wr(e,t,n={}){return t===`pointerdown`?e&&(n.button??0)===0&&n.isPrimary!==!1:!e||(n.detail??0)===0}function Tr(e,t,n,r,i){Vn(e,r,t,i),r.dataset.streaming=String(i);let a=r.querySelector(`:scope > ${Sn}`),o=r.querySelector(`.quickforge-process-summary`),s=r.querySelector(`.quickforge-process-label`);if(!a||!o||!s)return;let c=ar(n,r,i);s.textContent!==c&&(s.textContent=c);let l=r.dataset.expanded===`true`,u=`quickforge-${t.replace(/[^a-z0-9_-]+/gi,`-`)}`;a.id=u,o.setAttribute(`aria-controls`,u),o.setAttribute(`aria-expanded`,String(l)),o.setAttribute(`aria-label`,`${c} · ${f(l?`collapseProcess`:`expandProcess`)}`);let d=()=>{let n=r.dataset.expanded!==`true`;r.dataset.expanded=String(n),In(e,t,n),o.setAttribute(`aria-expanded`,String(n)),o.setAttribute(`aria-label`,`${c} · ${f(n?`collapseProcess`:`expandProcess`)}`)};o.onpointerdown=e=>{wr(i,`pointerdown`,e)&&(e.stopPropagation(),d())},o.onclick=e=>{e.preventDefault(),e.stopPropagation(),wr(i,`click`,e)&&d()},br(e,t,r,i),Cr(e,t,r),mr(r)}function K(e,t,n){if(n){e.hasAttribute(t)||e.setAttribute(t,`true`);return}e.hasAttribute(t)&&e.removeAttribute(t)}function Er(e){let t=e.closest(`message-list`),n=e.parentElement?.closest(H);return!n||n.closest(`message-list`)!==t}function Dr(e){let t=or(e);return Array.from(e.querySelectorAll(`markdown-block`)).filter(e=>{if(e.closest(`message-list`)!==t)return!1;let n=e.parentElement?.closest(Dn);return!n||n.closest(`message-list`)!==t})}function Or(e){let t=e.filter(e=>(e.textContent??``).trim().length>0);return t[t.length-1]??e[e.length-1]??null}function kr(e,t){return Array.from(e.querySelectorAll(H)).filter(n=>n!==t&&sr(n,e)).some(e=>!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))}function Ar(e,t){let n=Dr(e);if(t){let t=Or(n);return t&&!kr(e,t)?t:null}return Or(n.filter(e=>e.hasAttribute(On)))||(Or(n.filter(e=>!e.closest(Sn)))??Or(n))}function jr(e,t){Dr(e).forEach(e=>{K(e,On,e===t),e===t&&K(e,kn,!1)})}function Mr(e){return e.length>1||e.some(e=>Array.from(e.querySelectorAll(Dn)).some(t=>t.closest(`message-list`)===or(e)))}function Nr(e){let t=new Map;return e.forEach(e=>{cr(e).forEach(e=>{U.get(e)?.forEach(e=>t.set(e.node,e))})}),e.flatMap(e=>Array.from(e.querySelectorAll(H)).filter(t=>sr(t,e)).map(n=>t.get(n)??{node:n,sourceAssistant:e,sourceParent:n.parentElement,sourceNextSibling:n.nextSibling}))}function Pr(e,t,n,r){return e.filter(e=>!t(e)&&(!n(e)||r))}function Fr(e,t,n){return Pr(Nr(e),e=>e.node===t,e=>e.node.tagName.toLowerCase()===`markdown-block`,n)}function Ir(e,t){let n=[],r=[],i=!1,a=()=>{r.length!==0&&(n.push({kind:i?`stage`:`detail`,items:r}),r=[])};for(let o of e)t(o)?(a(),n.push({kind:`detail`,items:[o]}),i=!0):r.push(o);return a(),n}function Lr(e,t){let n=[];for(let r of e){let e=t(r)?`tools`:`detail`,i=n[n.length-1];i?.kind===e?i.items.push(r):n.push({kind:e,items:[r]})}return n}function Rr(e){return!!e.querySelector(`${Sn} ${H}`)}function zr(e){return U.get(e)??Array.from(e.querySelectorAll(`${Sn} ${H}`)).filter(t=>t.closest(V)===e).map(t=>({node:t,sourceAssistant:e.closest(`assistant-message`)??e.parentElement,sourceParent:e.parentElement,sourceNextSibling:e}))}function Br(e,t){let{node:n,sourceParent:r,sourceNextSibling:i}=e;if(K(n,kn,!1),K(n,On,!1),r?.isConnected){i?.parentNode===r?r.insertBefore(n,i):r.append(n);return}let a=lr(e.sourceAssistant);a?a.insertBefore(n,a.querySelector(V)):t.parentElement?.insertBefore(n,t)}function Vr(e,t){return!e||t}function Hr(e){if(!e.sourceAssistant.isConnected)return!1;let t=e.node.tagName.toLowerCase(),n=t===`tool-message`?e.node.toolCall?.id:void 0;return Array.from(e.sourceAssistant.querySelectorAll(Dn)).filter(t=>t!==e.node&&!t.closest(V)).filter(t=>sr(t,e.sourceAssistant)).some(e=>e.tagName.toLowerCase()===t?t!==`tool-message`||!n?!0:e.toolCall?.id===n:!1)}function Ur(e){K(e.node,kn,!1),K(e.node,On,!1),e.node.remove()}function Wr(e,t=!1){let n=new Set(e);for(let r of e)r.classList.remove(`quickforge-process-source-empty`),cr(r).forEach(e=>{zr(e).slice().reverse().forEach(r=>{t&&Vr(n.has(r.sourceAssistant),Hr(r))?Ur(r):Br(r,e)}),U.delete(e),e.remove()})}function Gr(e){e.querySelectorAll(`${V}[data-streaming="true"]`).forEach(e=>{let t=zr(e),n=new Set(t.map(e=>e.sourceAssistant)),r=e.closest(`assistant-message`);r&&n.add(r),n.forEach(e=>e.classList.remove(`quickforge-process-source-empty`)),t.slice().reverse().forEach(t=>Br(t,e)),U.delete(e),e.remove()})}function Kr(e,t){return!!(e&&e.length===t.length&&e.every((e,n)=>e.node.isConnected&&e.node===t[n]?.node&&e.sourceAssistant===t[n]?.sourceAssistant))}function qr(e,t){let n=ur(),r=Lr(t,e=>Zn(e.node));for(let e of r){if(e.kind===`tools`){let t=hr(),r=t.querySelector(wn);if(!r)continue;e.items.forEach(({node:e})=>{K(e,kn,!0),r.append(e)}),n.append(t);continue}e.items.forEach(({node:e})=>{K(e,kn,!0),n.append(e)})}e.append(n)}function Jr(e,t){let n=e.querySelector(`:scope > ${Sn}`);if(!n)return!1;let r=Ir(t,e=>e.node.tagName.toLowerCase()===`markdown-block`);for(let e of r){if(e.kind===`detail`){qr(n,e.items);continue}let t=gr(),r=t.querySelector(En);r&&(qr(r,e.items),n.append(t))}return U.set(e,t),Rr(e)}function Yr(e,t){let n=Ln(e.map(e=>({connected:e.sourceParent?.isConnected===!0&&e.node.isConnected}))),r=n>=0?e[n]:void 0,i=[...t].reverse().find(e=>e.isStreaming!==!0),a=i?lr(i):null;if(!r?.sourceParent?.isConnected&&!a)return null;let o=_r();return r?.sourceParent?.isConnected?r.sourceParent.insertBefore(o,r.node):a&&a.append(o),Jr(o,e)?o:null}function Xr(e){let t=e?.stopReason;return(t===`error`||t===`aborted`)&&typeof e?.errorMessage==`string`&&e.errorMessage.trim().length>0}function Zr(e){for(let t of e){let e=Xr(t.message)||!!Array.from(t.querySelectorAll(`markdown-block, thinking-block, tool-message, .quickforge-process-group, .quickforge-approval-card`)).some(e=>e.closest(`message-list`)===or(t));t.classList.toggle(`quickforge-process-source-empty`,!e)}}function Qr(e){let t=new Map(e.map((e,t)=>[e,t])),n=Nr(e).map(({node:e,sourceAssistant:n})=>{let r=t.get(n)??0,i=e.tagName.toLowerCase();if(i!==`tool-message`)return`${r}:${i}`;let a=e;return`${r}:${i}:${a.toolCall?.id??G(a)}`});return`${e.length}|${n.join(`|`)}`}function $r(e,t,n,r,i=!0){return!n||!r||!i?`full`:e?`update`:t?`skip`:`full`}function ei(e,t,n){return!e&&t&&n}function ti(e,t,n,r,i){if(t.length===0)return;let a=zn(e,t,r),o=t[t.length-1],s=t.flatMap(cr),c=s.length===1?s[0]:void 0,l=Qr(t),u=Mr(t),d=Fr(t,u?Ar(o,n):null,u),f=!c||Kr(U.get(c),d),p=$r(n,i,!!c,c?.dataset.quickforgeProcessFp===l,f);if(p===`skip`)return;if(p===`update`&&c){Tr(e,a,t,c,!0);return}if(d.length===0&&ei(!1,s.length>0,e.dataset.quickforgeProcessHandoff!==void 0))return;Wr(t,!0);let m=Mr(t),h=m?Ar(o,n):null;m&&jr(o,h);let g=Fr(t,h,m);if(g.length===0)return;let _=Yr(g,t);_&&(_.dataset.quickforgeProcessFp=l,Tr(e,a,t,_,n),Zr(t))}function ni(e,t,n){let r=t[t.length-1]?.tagName.toLowerCase()===`assistant-message`,i=[],a=[];for(let e of t){if(e.tagName.toLowerCase()===`user-message`){a.length>0&&i.push(a),a=[];continue}a.push(e)}a.length>0&&i.push(a),i.forEach((t,a)=>{let o=n&&r&&a===i.length-1;ti(e,t,o,a,n&&!o)})}var ri=/<\s*(script|foreignObject|iframe|object|embed)\b|\son[a-z]+\s*=|(?:javascript|vbscript|data\s*:\s*text\/html)\s*:/i,ii=/\b(?:href|xlink:href|src)\s*=\s*(["'])\s*(?:https?:)?\/\//i,ai=/url\(\s*(["']?)\s*(?:https?:)?\/\//i,oi=/@import\s+(?:url\(\s*)?["']?\s*(?:https?:)?\/\//i,si=null,ci=0;function li(e){return String(e??``).trim().toLowerCase()===`mermaid`}function ui(e){let t=e.trim();return/^<svg[\s>]/i.test(t)&&/<\/svg>\s*$/i.test(t)&&!ri.test(t)&&!ii.test(t)&&!ai.test(t)&&!oi.test(t)}function di(e){if(!ui(e))throw Error(`Unsafe Mermaid SVG output`);return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}async function fi(){return si??=i(async()=>{let{default:e}=await import(`./mermaid.core-CwXTzYjs.js`);return{default:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23])).then(({default:e})=>(e.initialize({startOnLoad:!1,securityLevel:`strict`,theme:`neutral`,htmlLabels:!1}),e)),si}async function pi(e){let t=e.trim();if(!t)throw Error(`Mermaid source is empty`);if(t.length>1e5)throw Error(`Mermaid source is too large`);let n=await fi(),r=`quickforge-mermaid-${Date.now().toString(36)}-${++ci}`,{svg:i}=await n.render(r,t);if(!ui(i))throw Error(`Unsafe Mermaid SVG output`);return i}var mi=new Set([`bash`,`sh`,`shell`,`zsh`,`fish`,`cmd`,`bat`,`batch`,`powershell`,`ps1`,`terminal`,`console`]),hi=/\b(rm\s+-rf|sudo|chmod\b|chown\b|npm\s+publish|pnpm\s+publish|yarn\s+publish|git\s+push|curl\b[^\n|;]*\|\s*(sh|bash)|wget\b[^\n|;]*\|\s*(sh|bash))\b/i,gi=/<\s*(script|foreignObject)\b|\son[a-z]+\s*=|javascript\s*:/i;function _i(e,t,n){let r=f(`copied`),i=Number(e.dataset.quickforgeCopyFeedbackTimer);i&&window.clearTimeout(i),g(e,Le),e.title=r,e.setAttribute(`aria-label`,r),e.style.color=`rgb(5 150 105)`;let a=window.setTimeout(()=>{g(e,n),e.title=t,e.setAttribute(`aria-label`,t),e.style.color=``,delete e.dataset.quickforgeCopyFeedbackTimer},1200);e.dataset.quickforgeCopyFeedbackTimer=String(a)}function vi(e,t,n,r){let i=document.createElement(`button`);return i.type=`button`,i.dataset.quickforgeAction=e,i.title=t,i.setAttribute(`aria-label`,t),g(i,n),i.className=`pointer-events-auto inline-flex size-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-transparent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40`,i.onclick=e=>{e.stopPropagation(),r(i)},i}function q(e){if(typeof e.getDecodedCode==`function`)try{return e.getDecodedCode()}catch{}let t=typeof e.code==`string`?e.code:e.getAttribute(`code`)??``;if(!t)return``;try{return decodeURIComponent(escape(window.atob(t)))}catch{return t}}function yi(e){return e.replace(/\r\n/g,`
116
+ `).split(`
117
+ `).map(e=>e.replace(/^\s*\$\s+/,``).replace(/^\s*>\s+/,``).replace(/^\s*PS\s+[^>\n]+>\s+/i,``)).join(`
118
+ `).trim()}function bi(e){return e.split(`
119
+ `).map(e=>e.trim()).filter(Boolean).length}function xi(e){let t=String(e.language??e.getAttribute(`language`)??``).trim().toLowerCase();return mi.has(t)}function Si(e){return String(e.language??e.getAttribute(`language`)??``).trim().toLowerCase()===`svg`}function Ci(e){let t=e.trim();return/^<svg[\s>]/i.test(t)&&/<\/svg>\s*$/i.test(t)&&!gi.test(t)}function wi(e){return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}function Ti(){let e=document.querySelector(`.quickforge-svg-code-lightbox`);e?.quickforgeCleanup?.(),e?.remove()}function Ei(e,t=`SVG preview`){Ti();let n=document.createElement(`div`);n.className=`quickforge-svg-code-lightbox`,n.setAttribute(`role`,`dialog`),n.setAttribute(`aria-modal`,`true`),n.setAttribute(`aria-label`,t);let r=document.createElement(`img`);r.alt=t,r.src=e,r.addEventListener(`click`,e=>e.stopPropagation()),n.append(r);let i=()=>Ti(),a=e=>{e.key===`Escape`&&i()};n.quickforgeCleanup=()=>document.removeEventListener(`keydown`,a),n.addEventListener(`click`,i),document.addEventListener(`keydown`,a),document.body.append(n)}function Di(e,t,n){let r=new Blob([t],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e,document.body.appendChild(a),a.click(),a.remove(),URL.revokeObjectURL(i)}function Oi(e){let t=0;for(let n=0;n<e.length;n++)t=Math.imul(31,t)+e.charCodeAt(n)|0;return`${e.length}:${t}`}function ki(e){e.nextElementSibling instanceof HTMLElement&&e.nextElementSibling.dataset.quickforgeSvgPreview===`true`&&e.nextElementSibling.remove(),e.querySelector(`[data-quickforge-svg-preview="true"]`)?.remove(),e.classList.contains(`quickforge-mermaid-code-block`)||e.classList.remove(`quickforge-svg-code-block`),e.querySelector(`copy-button[data-quickforge-svg-original-copy="true"]`)?.removeAttribute(`hidden`),e.querySelector(`copy-button[data-quickforge-svg-original-copy="true"]`)?.removeAttribute(`data-quickforge-svg-original-copy`),e.querySelector(`[data-quickforge-svg-toolbar="true"]`)?.remove();let t=e.querySelector(`pre`)?.parentElement,n=e.querySelector(`[data-quickforge-mermaid-preview="true"]`)!==null;t instanceof HTMLElement&&!n&&(t.hidden=!1),delete e.dataset.quickforgeSvgPreviewSource,delete e.dataset.quickforgeSvgMode}function Ai(e,t){let n=e.querySelector(`[data-quickforge-svg-preview="true"]`),r=e.querySelector(`:scope > div > div:first-child`),i=e.querySelector(`pre`)?.parentElement;e.dataset.quickforgeSvgMode=t,n&&(n.hidden=t!==`preview`),r&&r.classList.toggle(`quickforge-svg-code-toolbar-floating`,t===`preview`),i instanceof HTMLElement&&(i.hidden=t===`preview`)}function J(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.dataset.quickforgeAction=e,r.className=`quickforge-svg-code-menu-item`,r.title=t,r.setAttribute(`aria-label`,t),r.setAttribute(`role`,`menuitem`),g(r,n),r}function ji(e=document,t){e.querySelectorAll(`.quickforge-svg-code-menu[open]`).forEach(e=>{e!==t&&(e.open=!1)})}var Mi=!1;function Ni(){Mi||(Mi=!0,document.addEventListener(`pointerdown`,e=>{e.target?.closest(`.quickforge-svg-code-menu`)||ji(document)},!0),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&ji(document)}))}function Pi(e,t){Ni();let n=e.querySelector(`:scope > div > div:first-child`),r=n?.querySelector(`copy-button`);if(!n||!r)return;let i=n.querySelector(`[data-quickforge-svg-toolbar="true"]`);if(!i){i=document.createElement(`div`),i.dataset.quickforgeSvgToolbar=`true`,i.className=`quickforge-svg-code-toolbar`;let e=document.createElement(`details`);e.className=`quickforge-svg-code-menu`;let t=document.createElement(`summary`);t.className=`quickforge-svg-code-menu-trigger`,t.title=f(`moreActions`),t.setAttribute(`aria-label`,f(`moreActions`)),t.textContent=`⋯`;let n=document.createElement(`div`);n.className=`quickforge-svg-code-menu-content`,n.setAttribute(`role`,`menu`);let a=J(`svg-preview-mode`,f(`svgPreviewMode`),`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"/><circle cx="12" cy="12" r="3"/></svg>`),o=J(`svg-source-mode`,f(`svgSourceMode`),`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m16 18 6-6-6-6"/><path d="m8 6-6 6 6 6"/></svg>`),s=J(`copy-svg-code`,f(`copySvgSource`),P),c=J(`download-svg-code`,f(`downloadSvg`),`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="M7 10l5 5 5-5"/><path d="M12 15V3"/></svg>`);n.append(a,o,s,c),r.before(i),r.dataset.quickforgeSvgOriginalCopy=`true`,r.setAttribute(`hidden`,``),e.append(t,n),i.append(e)}let a=i.querySelector(`.quickforge-svg-code-menu`),o=i.querySelector(`[data-quickforge-action="svg-preview-mode"]`),c=i.querySelector(`[data-quickforge-action="svg-source-mode"]`),l=i.querySelector(`[data-quickforge-action="copy-svg-code"]`),u=i.querySelector(`[data-quickforge-action="download-svg-code"]`),d=()=>{a&&(a.open=!1)};a&&!a.dataset.quickforgeSvgMenuBound&&(a.dataset.quickforgeSvgMenuBound=`true`,a.addEventListener(`toggle`,()=>{a.open&&ji(e.closest(`markdown-block`)??document,a)})),o&&(o.onclick=()=>{Ai(e,`preview`),d()}),c&&(c.onclick=()=>{Ai(e,`source`),d()}),l&&(l.onclick=async()=>{await s(t),_i(l,f(`copySvgSource`),P)}),u&&(u.onclick=()=>{Di(`quickforge-svg-${Date.now()}.svg`,t,`image/svg+xml;charset=utf-8`),d()})}function Fi(e,t){e.querySelectorAll(`assistant-message markdown-block code-block`).forEach(e=>{if(!Si(e)){ki(e);return}if(t)return;let n=q(e).trim();if(!n||!Ci(n)){ki(e);return}let r=Oi(n);if(e.querySelector(`[data-quickforge-svg-preview="true"]`)&&e.dataset.quickforgeSvgPreviewSource===r){Pi(e,n),Ai(e,e.dataset.quickforgeSvgMode===`source`?`source`:`preview`);return}let i=e.querySelector(`:scope > div > div:first-child`);if(!i)return;ki(e);let a=document.createElement(`div`);e.classList.add(`quickforge-svg-code-block`),a.dataset.quickforgeSvgPreview=`true`,a.className=`quickforge-svg-code-preview`,a.setAttribute(`aria-label`,`SVG preview`);let o=document.createElement(`img`);o.alt=`SVG preview`,o.src=wi(n),o.title=f(`svgEnlargePreview`),o.addEventListener(`click`,()=>Ei(o.src)),a.replaceChildren(o),i.after(a),Pi(e,n),e.dataset.quickforgeSvgPreviewSource=r,Ai(e,e.dataset.quickforgeSvgMode===`source`?`source`:`preview`)})}var Ii=0;function Li(e){return li(String(e.language??e.getAttribute(`language`)??``))}function Ri(e){let t=e.classList.contains(`quickforge-mermaid-code-block`);if(!(t||e.dataset.quickforgeMermaidRequestToken!==void 0||e.dataset.quickforgeMermaidPendingSource!==void 0||e.dataset.quickforgeMermaidPreviewSource!==void 0||e.dataset.quickforgeMermaidFailedSource!==void 0||e.querySelector(`[data-quickforge-mermaid-preview="true"], [data-quickforge-mermaid-error="true"], [data-quickforge-mermaid-toolbar="true"], copy-button[data-quickforge-mermaid-original-copy="true"]`)!==null))return;e.dataset.quickforgeMermaidRequestToken&&(e.dataset.quickforgeMermaidRequestToken=String(++Ii)),e.querySelector(`[data-quickforge-mermaid-preview="true"]`)?.remove(),e.querySelector(`[data-quickforge-mermaid-error="true"]`)?.remove(),e.querySelector(`[data-quickforge-mermaid-toolbar="true"]`)?.remove(),e.classList.remove(`quickforge-mermaid-code-block`),t&&!e.querySelector(`[data-quickforge-svg-preview="true"]`)&&e.classList.remove(`quickforge-svg-code-block`),e.querySelector(`copy-button[data-quickforge-mermaid-original-copy="true"]`)?.removeAttribute(`hidden`),e.querySelector(`copy-button[data-quickforge-mermaid-original-copy="true"]`)?.removeAttribute(`data-quickforge-mermaid-original-copy`);let n=e.querySelector(`pre`)?.parentElement,r=e.querySelector(`[data-quickforge-svg-preview="true"]`)!==null;n instanceof HTMLElement&&!r&&(n.hidden=!1),delete e.dataset.quickforgeMermaidMode,delete e.dataset.quickforgeMermaidPreviewSource,delete e.dataset.quickforgeMermaidPendingSource,delete e.dataset.quickforgeMermaidFailedSource,delete e.dataset.quickforgeMermaidRequestToken}function zi(e,t){let n=e.querySelector(`[data-quickforge-mermaid-preview="true"]`),r=e.querySelector(`:scope > div > div:first-child`),i=e.querySelector(`pre`)?.parentElement;e.dataset.quickforgeMermaidMode=t,n&&(n.hidden=t!==`preview`),r&&r.classList.toggle(`quickforge-svg-code-toolbar-floating`,t===`preview`),i instanceof HTMLElement&&(i.hidden=t===`preview`)}function Bi(e,t,n){Ni();let r=e.querySelector(`:scope > div > div:first-child`),i=r?.querySelector(`copy-button`);if(!r||!i)return;let a=r.querySelector(`[data-quickforge-mermaid-toolbar="true"]`);if(!a){a=document.createElement(`div`),a.dataset.quickforgeMermaidToolbar=`true`,a.className=`quickforge-svg-code-toolbar`;let e=document.createElement(`details`);e.className=`quickforge-svg-code-menu quickforge-mermaid-code-menu`;let t=document.createElement(`summary`);t.className=`quickforge-svg-code-menu-trigger`,t.title=f(`moreActions`),t.setAttribute(`aria-label`,f(`moreActions`)),t.textContent=`⋯`;let n=document.createElement(`div`);n.className=`quickforge-svg-code-menu-content`,n.setAttribute(`role`,`menu`);let r=J(`mermaid-preview-mode`,f(`svgPreviewMode`),`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"/><circle cx="12" cy="12" r="3"/></svg>`),o=J(`mermaid-source-mode`,f(`svgSourceMode`),`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m16 18 6-6-6-6"/><path d="m8 6-6 6 6 6"/></svg>`),s=J(`copy-mermaid-code`,f(`copyMermaidSource`),P),c=J(`download-mermaid-svg`,f(`downloadMermaidSvg`),`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="M7 10l5 5 5-5"/><path d="M12 15V3"/></svg>`);n.append(r,o,s,c),i.before(a),i.dataset.quickforgeMermaidOriginalCopy=`true`,i.setAttribute(`hidden`,``),e.append(t,n),a.append(e)}let o=a.querySelector(`.quickforge-mermaid-code-menu`),c=a.querySelector(`[data-quickforge-action="mermaid-preview-mode"]`),l=a.querySelector(`[data-quickforge-action="mermaid-source-mode"]`),u=a.querySelector(`[data-quickforge-action="copy-mermaid-code"]`),d=a.querySelector(`[data-quickforge-action="download-mermaid-svg"]`),p=()=>{o&&(o.open=!1)};o&&!o.dataset.quickforgeMermaidMenuBound&&(o.dataset.quickforgeMermaidMenuBound=`true`,o.addEventListener(`toggle`,()=>{o.open&&ji(e.closest(`markdown-block`)??document,o)})),c&&(c.onclick=()=>{zi(e,`preview`),p()}),l&&(l.onclick=()=>{zi(e,`source`),p()}),u&&(u.onclick=async()=>{await s(t),_i(u,f(`copyMermaidSource`),P)}),d&&(d.onclick=()=>{Di(`quickforge-mermaid-${Date.now()}.svg`,n,`image/svg+xml;charset=utf-8`),p()})}function Vi(e){let t=e.querySelector(`:scope > div > div:first-child`);if(!t||e.querySelector(`[data-quickforge-mermaid-error="true"]`))return;let n=document.createElement(`div`);n.dataset.quickforgeMermaidError=`true`,n.className=`quickforge-mermaid-code-error`,n.textContent=f(`mermaidRenderFailed`),t.after(n)}function Hi(e,t){e.querySelectorAll(`assistant-message markdown-block code-block`).forEach(n=>{try{if(!Li(n)){Ri(n);return}let r=q(n).trim();if(!r){Ri(n);return}let i=Oi(r);if(n.querySelector(`[data-quickforge-mermaid-preview="true"]`)&&n.dataset.quickforgeMermaidPreviewSource===i){zi(n,n.dataset.quickforgeMermaidMode===`source`?`source`:`preview`);return}if(t){(n.dataset.quickforgeMermaidPendingSource||n.dataset.quickforgeMermaidPreviewSource)&&Ri(n);return}if(n.dataset.quickforgeMermaidPendingSource===i||n.dataset.quickforgeMermaidFailedSource===i||!n.querySelector(`:scope > div > div:first-child`))return;Ri(n);let a=String(++Ii);n.dataset.quickforgeMermaidRequestToken=a,n.dataset.quickforgeMermaidPendingSource=i,(async()=>{try{let t=await pi(r);if(!t)throw Error(`Empty Mermaid SVG`);let o=di(t);if(!n.isConnected||n.dataset.quickforgeMermaidRequestToken!==a||e.dataset.quickforgeAgentStreaming===`true`||!Li(n)||Oi(q(n).trim())!==i){n.dataset.quickforgeMermaidRequestToken===a&&(delete n.dataset.quickforgeMermaidPendingSource,delete n.dataset.quickforgeMermaidRequestToken);return}let s=n.querySelector(`:scope > div > div:first-child`);if(!s){delete n.dataset.quickforgeMermaidPendingSource,delete n.dataset.quickforgeMermaidRequestToken;return}let c=document.createElement(`div`);c.dataset.quickforgeMermaidPreview=`true`,c.className=`quickforge-svg-code-preview quickforge-mermaid-code-preview`,c.setAttribute(`aria-label`,f(`mermaidPreviewLabel`));let l=document.createElement(`img`);l.alt=f(`mermaidPreviewLabel`),l.src=o,l.title=f(`mermaidEnlargePreview`),l.addEventListener(`click`,()=>Ei(l.src,f(`mermaidPreviewLabel`))),c.replaceChildren(l),n.classList.add(`quickforge-svg-code-block`,`quickforge-mermaid-code-block`),s.after(c),Bi(n,r,t),n.dataset.quickforgeMermaidPreviewSource=i,delete n.dataset.quickforgeMermaidPendingSource,delete n.dataset.quickforgeMermaidFailedSource,delete n.dataset.quickforgeMermaidRequestToken,zi(n,`preview`)}catch{if(!n.isConnected||n.dataset.quickforgeMermaidRequestToken!==a||!Li(n)||Oi(q(n).trim())!==i)return;delete n.dataset.quickforgeMermaidPendingSource,delete n.dataset.quickforgeMermaidRequestToken,n.dataset.quickforgeMermaidFailedSource=i,Vi(n)}})()}catch{Ri(n),Vi(n)}})}function Ui(e,t){e.querySelectorAll(`assistant-message markdown-block code-block`).forEach(e=>{let n=e.querySelector(`[data-quickforge-action="execute-markdown-command"]`);if(!xi(e)){n?.remove(),delete e.dataset.quickforgeCommand;return}let r;if(n&&e.dataset.quickforgeCommand!==void 0){if(n.disabled===t)return;r=e.dataset.quickforgeCommand}else r=yi(q(e));if(!r){n?.remove(),delete e.dataset.quickforgeCommand;return}e.dataset.quickforgeCommand=r;let i=f(`executeInTerminal`),a=n??vi(`execute-markdown-command`,i,`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"/></svg>`,()=>{let t=yi(q(e));t&&window.dispatchEvent(new CustomEvent(`quickforge:execute-markdown-command`,{detail:{command:t,confirm:bi(t)>1,dangerous:hi.test(t)}}))});if(a.title=i,a.setAttribute(`aria-label`,i),a.disabled=t,a.className=`pointer-events-auto inline-flex size-8 items-center justify-center rounded-md text-emerald-600 transition-colors hover:bg-emerald-500/10 hover:text-emerald-700 disabled:cursor-not-allowed disabled:opacity-40 dark:text-emerald-400 dark:hover:text-emerald-300`,!n){let t=e.querySelector(`:scope > div > div:first-child`),n=t?.querySelector(`copy-button`);if(t&&n){let e=document.createElement(`div`);e.className=`flex items-center gap-1`,n.before(e),e.appendChild(n),e.appendChild(a)}}})}var Wi=/[A-Za-z]:[\\/][^\s"'<>`]+|(?:\/Users|\/home|\/workspace|\/mnt|\/Volumes)\/[^\s"'<>`]+/g,Gi=new Set([`.`,`,`,`;`,`:`,`!`,`?`,`)`,`]`,`}`,`>`,`。`,`,`,`;`,`:`,`!`,`?`,`)`,`】`,`》`]),Ki=[`pre`,`code`,`a`,`button`,`textarea`,`input`,`select`,`thinking-block`,`tool-message`,`.quickforge-file-path-link`,`.quickforge-message-actions`,`.quickforge-process-group`,`.quickforge-approval-card`].join(`,`);function qi(e){let t=e.length;for(;t>0&&Gi.has(e[t-1]);)--t;return{path:e.slice(0,t),suffix:e.slice(t)}}function Ji(e,t){let n=document.createElement(`button`);return n.type=`button`,n.className=`quickforge-file-path-link`,n.dataset.quickforgeFilePath=e,n.textContent=e,n.title=`Open file`,n.setAttribute(`aria-label`,`Open file ${e}`),n.onclick=n=>{n.preventDefault(),n.stopPropagation(),t(e)},n}function Yi(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(e){let t=e.textContent??``;if(!Wi.test(t))return NodeFilter.FILTER_REJECT;Wi.lastIndex=0;let n=e.parentElement;return!n||n.closest(Ki)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r=n.nextNode();for(;r;)t.push(r),r=n.nextNode();return t}function Xi(e,t){let n=e.textContent??``;Wi.lastIndex=0;let r,i=0,a=document.createDocumentFragment(),o=!1;for(;r=Wi.exec(n);){let e=r[0],{path:s,suffix:c}=qi(e);if(!s)continue;let l=r.index,u=l+e.length;l>i&&a.append(document.createTextNode(n.slice(i,l))),a.append(Ji(s,t)),c&&a.append(document.createTextNode(c)),i=u,o=!0}o&&(i<n.length&&a.append(document.createTextNode(n.slice(i))),e.replaceWith(a))}function Zi(e,t,n){let r=Array.from(e.querySelectorAll(`markdown-block`)),i=r.reduce((e,t)=>e+(t.textContent?.length??0),0),a=c(t).length,o=`${String(t.timestamp??``)}:${a}:${r.length}:${i}`;e.dataset.quickforgeLocalPathSignature!==o&&(r.forEach(e=>{Yi(e).forEach(e=>Xi(e,n))}),e.dataset.quickforgeLocalPathSignature=o)}function Qi(e,t){let n=new Set,r;e.forEach((e,t)=>{if(e.role===`assistant`){r=t;return}r!==void 0&&n.add(r),r=void 0});let i=t&&e[e.length-1]?.role===`assistant`;return r!==void 0&&!i&&n.add(r),n}var $i={collapsed:()=>f(`expand`),expanded:()=>f(`collapse`)};function ea(e,t,n){let r=f(`copied`),i=Number(e.dataset.quickforgeCopyFeedbackTimer);i&&window.clearTimeout(i),g(e,Le),e.title=r,e.setAttribute(`aria-label`,r),e.style.color=`rgb(5 150 105)`;let a=window.setTimeout(()=>{g(e,n),e.title=t,e.setAttribute(`aria-label`,t),e.style.color=``,delete e.dataset.quickforgeCopyFeedbackTimer},1200);e.dataset.quickforgeCopyFeedbackTimer=String(a)}function ta(e,t,n,r){let i=document.createElement(`button`);return i.type=`button`,i.dataset.quickforgeAction=e,i.title=t,i.setAttribute(`aria-label`,t),g(i,n),i.className=`pointer-events-auto inline-flex size-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-transparent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40`,i.onclick=e=>{e.stopPropagation(),r(i)},i}function na(e){if(!e)return null;let t=document.createElement(`span`);return t.className=`quickforge-message-time`,t.textContent=l(e),t}function ra(e){e.querySelectorAll(`.quickforge-rollback-popover`).forEach(e=>{e.quickforgeCleanup?.(),(e.closest(`.quickforge-rollback-action`)?.querySelector(`button[data-quickforge-action="rollback"]`))?.setAttribute(`aria-expanded`,`false`),e.remove()})}function ia(e){let{panel:t,button:n,messageIndex:r,title:i,description:a,onConfirm:o}=e,s=n.closest(`.quickforge-rollback-action`);if(!s||n.disabled)return;if(s.querySelector(`.quickforge-rollback-popover`)){ra(t);return}ra(t);let c=document.createElement(`div`);c.className=`quickforge-rollback-popover`,c.setAttribute(`role`,`dialog`),c.setAttribute(`aria-label`,i),c.tabIndex=-1;let l=document.createElement(`div`);l.className=`quickforge-rollback-popover-arrow`;let u=document.createElement(`div`);u.className=`quickforge-rollback-popover-title`,u.textContent=i;let d=document.createElement(`div`);d.className=`quickforge-rollback-popover-description`,d.textContent=a;let p=document.createElement(`div`);p.className=`quickforge-rollback-popover-footer`;let m=document.createElement(`button`);m.type=`button`,m.className=`quickforge-rollback-popover-cancel`,m.textContent=f(`cancel`);let h=document.createElement(`button`);h.type=`button`,h.className=`quickforge-rollback-popover-confirm`,h.textContent=f(`confirmRollback`),p.append(m,h),c.append(l,u,d,p);let g=()=>ra(t),_=e=>{let t=e.target;!t||c.contains(t)||n.contains(t)||g()},v=e=>{e.key===`Escape`&&(e.preventDefault(),g())};c.quickforgeCleanup=()=>{document.removeEventListener(`pointerdown`,_,!0),document.removeEventListener(`keydown`,v)},c.addEventListener(`pointerdown`,e=>e.stopPropagation()),c.addEventListener(`click`,e=>e.stopPropagation()),m.addEventListener(`click`,g),h.addEventListener(`click`,async()=>{h.disabled=!0,m.disabled=!0,h.textContent=f(`rollingBack`);try{await o(r)}finally{g()}}),s.append(c),n.setAttribute(`aria-expanded`,`true`),document.addEventListener(`pointerdown`,_,!0),document.addEventListener(`keydown`,v),window.requestAnimationFrame(()=>h.focus())}function aa(e){let t=document.createElement(`span`);t.className=`quickforge-rollback-action`;let n=ta(`rollback`,f(`rollback`),Re,t=>{ia({panel:e.panel,button:t,messageIndex:e.messageIndex,title:e.title,description:e.description,onConfirm:e.onConfirm})});return n.disabled=e.isDisabled,n.setAttribute(`aria-haspopup`,`dialog`),n.setAttribute(`aria-expanded`,`false`),t.append(n),t}function oa(e){return e.querySelector(`message-list`)}function sa(e){return Array.from(e.querySelectorAll(`user-message, assistant-message`)).filter(t=>t.closest(`message-list`)===e)}function ca(e){let t=oa(e);return t?sa(t):[]}function la(e){return(oa(e)?.parentElement?.querySelector(`:scope > streaming-message-container:not(.hidden)`))?.querySelector(`:scope > div > assistant-message`)??null}function ua(e){e.querySelectorAll(`message-list[data-quickforge-subagent-process="true"]`).forEach(e=>{ni(e,sa(e),e.dataset.quickforgeSubagentStreaming===`true`)})}function da(e){let{panel:t,getMessages:n,messageIndexOffset:r=0,isStreaming:i,onCopyAnswer:a,onRollbackFromMessage:o,onRetryFromMessage:s,onForkFromMessage:u,onOpenLocalFilePath:d,disableFork:m,allowRollback:h=!0,allowRetry:g=!0,readOnly:_=!1,enableTerminalCommandActions:v=!0,rollbackConfirmTitle:y=f(`rollbackConfirmTitle`),rollbackConfirmDescription:b=f(`rollbackConfirm`)}=e,x=n().map((e,t)=>({message:e,index:t+r})).filter(({message:e})=>e.role===`user`||e.role===`user-with-attachments`||e.role===`assistant`),S=(()=>{for(let e=x.length-1;e>=0;e--)if(x[e].message.role!==`assistant`)return x[e]})(),C=ca(t),w=i(),E=Qi(x.map(({message:e})=>e),w),D=e=>{let t=f(`copy`);return ta(`copy`,t,P,async n=>{let r=e();if(r)try{await a(r),ea(n,t,P)}catch{}})};C.forEach((e,r)=>{let a=x[r];if(!a)return;e.classList.add(`group`,`relative`),e.classList.toggle(`quickforge-assistant-message`,a.message.role===`assistant`),e.classList.toggle(`quickforge-user-message`,a.message.role!==`assistant`),a.message.role===`user`&&Ee(e,$i);let v=T(a.message),C=e=>{let t=e.querySelector(`.quickforge-message-time`);if(v>0){if(t){t.textContent=l(v);return}let n=na(v);if(!n)return;a.message.role===`assistant`?e.append(n):e.prepend(n)}else t?.remove()};a.message.role===`assistant`&&d&&Zi(e,a.message,d);let w=`quickforge-message-actions pointer-events-none mt-1 flex gap-1 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100 ${a.message.role===`assistant`?`px-4 justify-start`:`mx-4 justify-end`}`,O=e.querySelector(`.quickforge-message-actions`);if(!(a.message.role!==`assistant`||E.has(r))){O?.remove();return}if(O?.dataset.quickforgeLayout===`message-bottom`){O.className=w,O.parentElement===e&&O!==e.lastElementChild&&e.append(O),_&&ra(t),O.querySelectorAll(`button[data-quickforge-action="rollback"], button[data-quickforge-action="retry"], button[data-quickforge-action="fork"]`).forEach(e=>{let t=e.dataset.quickforgeAction;if(_||t===`rollback`&&!h||t===`retry`&&!g||t===`fork`&&m){e.closest(`.quickforge-rollback-action`)?.remove(),e.remove();return}e.disabled=i()}),i()&&ra(t);let n=O.querySelector(`button[data-quickforge-action="retry"]`),r=!_&&g&&S&&a.index===S.index&&a.message.role!==`assistant`;if(n&&!r)n.remove();else if(!n&&r){let e=ta(`retry`,f(`retry`),Be,()=>{s(a.index)});e.disabled=i(),O.append(e)}C(O);return}O?.remove();let k=document.createElement(`div`);if(k.dataset.quickforgeLayout=`message-bottom`,k.className=w,a.message.role===`assistant`){let e=c(a.message);if(!e)return;let t=D(()=>{let t=n()[a.index];return t?c(t):e});if(k.append(t),!_&&!m){let e=ta(`fork`,f(`forkConversation`),ze,()=>{u(a.index)});e.disabled=i(),k.append(e)}}else{let e=p(a.message);if(e){let t=D(()=>{let t=n()[a.index];return t?p(t):e});k.append(t)}if(!_&&h){let e=aa({panel:t,messageIndex:a.index,isDisabled:i(),title:y,description:b,onConfirm:o});k.append(e)}if(!_&&g&&S&&a.index===S.index){let e=ta(`retry`,f(`retry`),Be,()=>{s(a.index)});e.disabled=i(),k.append(e)}}C(k),e.append(k)}),ji(t);let O=[...C];if(w){let e=la(t);e&&(e.classList.add(`quickforge-assistant-message`),O.push(e))}ni(t,O,w),ua(t),Fi(t,i()),Hi(t,i()),v?Ui(t,i()):t.querySelectorAll(`[data-quickforge-action="execute-markdown-command"]`).forEach(e=>e.remove())}function fa(e){return e.role===`user`||e.role===`user-with-attachments`||e.role===`assistant`}function pa(e){return e.role===`user`||e.role===`user-with-attachments`}function ma(e){return e.role===`assistant`?c(e).trim().length>0:!1}function ha(e){return e.querySelector(`message-list`)}function ga(e){let t=ha(e);return t?Array.from(t.querySelectorAll(`user-message, assistant-message`)).filter(e=>e.closest(`message-list`)===t):[]}var _a=`.quickforge-assistant-waiting`;function va(e){e.querySelectorAll(_a).forEach(e=>e.remove())}function ya(e){let t=e.querySelectorAll(`thinking-block, tool-message`);for(let e of t)if(!e.closest(`.quickforge-process-body`))return!0;let n=e.querySelectorAll(`markdown-block, code-block`);for(let e of n)if(!e.closest(`.quickforge-process-body`)&&(e.textContent??``).trim().length>0)return!0;let r=e.cloneNode(!0);return r.querySelectorAll(`.quickforge-message-actions`).forEach(e=>e.remove()),r.querySelectorAll(`.quickforge-process-body`).forEach(e=>e.remove()),(r.textContent??``).trim().length>0}function ba(e){let{panel:t,getMessages:n,isStreaming:r,isActive:i}=e,a=t.querySelector(_a);if(!r()||!i)return va(t),!1;let o=ha(t),s=n(),c=s.map((e,t)=>({message:e,index:t})).filter(({message:e})=>fa(e)),l=(()=>{for(let e=c.length-1;e>=0;e--)if(pa(c[e].message))return e;return-1})();if(!o||l<0)return a?.remove(),!1;let u=c[l],d=s.slice(u.index+1).some(ma),p=ga(t),m=p[l],h=p.slice(l+1).some(e=>e.matches(`assistant-message`)&&ya(e));if(!m||d||h)return a?.remove(),!1;let g=a??document.createElement(`div`);return g.className=`quickforge-assistant-waiting`,g.setAttribute(`role`,`status`),g.setAttribute(`aria-live`,`polite`),g.setAttribute(`aria-label`,f(`assistantWaitingAriaLabel`)),a||(g.innerHTML=`
120
+ <div class="quickforge-assistant-waiting-dots" aria-hidden="true">
121
+ <span></span>
122
+ <span></span>
123
+ <span></span>
124
+ </div>
125
+ `),g.previousElementSibling!==m&&m.after(g),!0}var xa=280,Sa=120,Ca=900,wa=`<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 17V3"/><path d="m6 11 6 6 6-6"/><path d="M19 21H5"/></svg>`;function Ta({panel:e,onJumpSettled:t}){let n=null,r=null,i=null,a=!1,o=0,s=()=>e.querySelector(`agent-interface .overflow-y-auto`),c=()=>i?i.scrollHeight-i.scrollTop-i.clientHeight:0,l=()=>{if(!n||!r)return;r.textContent=String(o),r.classList.toggle(`quickforge-scroll-bottom-badge-empty`,o===0);let e=o>0?f(`scrollToBottomUnreadLabel`,{count:o}):f(`scrollToBottomLabel`);n.setAttribute(`aria-label`,e),n.title=e},u=e=>{a!==e&&(a=e,n?.classList.toggle(`is-visible`,e),!e&&o>0&&(o=0,l()))},d=()=>{let e=c();u(a?e>Sa:e>xa)},p=()=>{let e=i;if(!e)return;o=0,l(),u(!1);let n=e.scrollHeight-e.clientHeight,r=typeof window.matchMedia==`function`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;if(Math.abs(e.scrollTop-n)<=1||r){e.scrollTop=n,t();return}let a=!1,s=!1,c=e=>{e.deltaY<0&&(s=!0)},d=()=>{a||(a=!0,e.removeEventListener(`scrollend`,d),e.removeEventListener(`wheel`,c),window.clearTimeout(f),s||t())};e.addEventListener(`wheel`,c,{passive:!0}),e.addEventListener(`scrollend`,d,{once:!0});let f=window.setTimeout(d,Ca);e.scrollTo({top:n,behavior:`smooth`})},m=()=>{let e=document.createElement(`button`);return e.type=`button`,e.className=`quickforge-scroll-bottom-button`,e.innerHTML=wa,r=document.createElement(`span`),r.className=`quickforge-scroll-bottom-badge quickforge-scroll-bottom-badge-empty`,r.setAttribute(`aria-hidden`,`true`),e.append(r),e.addEventListener(`click`,p),n=e,l(),e};return{setup:()=>{let t=s();t!==i&&(i?.removeEventListener(`scroll`,d),i=t,i?.addEventListener(`scroll`,d,{passive:!0}));let a=e.querySelector(`.quickforge-composer-shell`);if(!a){n?.remove(),n=null,r=null;return}n||=m(),n.parentElement!==a&&a.append(n),d()},cleanup:()=>{i?.removeEventListener(`scroll`,d),i=null,n?.remove(),n=null,r=null,a=!1,o=0},notifyNewAssistantMessage:()=>{a&&(o+=1,l())}}}function Ea(e){let{panel:t,isStreaming:n,isWaiting:r,abort:i,agentAccessMode:a,harness:o,getAcpSession:s,onOpenCodeConfigOptionChange:c,onOpenCodeModeChange:l,planMode:u,workspaceToolsEnabled:d,readOnly:p,allowModelControls:m,planModeEnabled:h,accessModeEnabled:g,commandSuggestionsEnabled:_,capabilitySuggestionsEnabled:v,attachmentsEnabled:y,onAccessModeChange:b,onTogglePlanMode:x,onInput:S,onFilesChange:C,removeCommandSuggestions:T,updateCommandSuggestions:E,setupCommandTextareaHandler:D,removeCapabilitySuggestions:O,updateCapabilitySuggestions:k,setupCapabilityTextareaHandler:ee,insertBuiltinPluginMention:te,availablePluginRows:ne,onBeforeSend:re}=e,A=t.querySelector(`message-editor`);A?.classList.add(`quickforge-composer`),A?.parentElement?.classList.add(`quickforge-composer-shell`),A?.parentElement?.parentElement?.classList.add(`quickforge-composer-dock`);let ie=A?.querySelector(`textarea`);if(ie&&(ie.placeholder=f(`composerPlaceholder`)),p){t.querySelector(`.quickforge-composer-dock`)?.remove();return}jt({editor:A,onInput:S,onFilesChange:C,removeCommandSuggestions:T,updateCommandSuggestions:_?E:()=>T(),removeCapabilitySuggestions:O,updateCapabilitySuggestions:v?k:()=>O(),attachmentsEnabled:y,onBeforeSend:re}),_?D(A):T(),v?ee(A):O(),h?Ot(A,u,x):Dt(A);let j=t.querySelector(`agent-interface`);if(j){let e=j.enableModelSelector!==m;j.enableModelSelector=m,j.enableThinkingSelector=!1,e&&j.requestUpdate?.()}let ae=A?.querySelectorAll(`.flex.gap-2.items-center`),M=ae?.[0],N=ae?.[ae.length-1];if(!N)return;if(Et(A,N),At({rightControls:N,isStreaming:n,isWaiting:r,abort:i,removeCommandSuggestions:T}),!M){t.querySelector(`.quickforge-plus-inline`)?.remove(),z(t),!y&&A&&bt(A),t.querySelector(`.quickforge-agent-access-inline`)?.remove(),I(t),t.querySelector(`.quickforge-opencode-config-inline`)?.remove(),L(t),t.querySelector(`.quickforge-opencode-mode-inline`)?.remove(),R(t),t.querySelector(`.quickforge-yolo-inline`)?.remove(),t.querySelector(`.quickforge-plan-inline`)?.remove();return}let oe=()=>{z(t),L(t),R(t),I(t),w()};if(A&&(A.querySelectorAll(`input[type="file"]`).forEach(e=>{e.disabled=!y}),y||bt(A,M)),A&&(y||v)?wt({panel:t,editor:A,leftControls:M,insertBuiltinPluginMention:te,availablePluginRows:ne,removeCommandSuggestions:T,removeCapabilitySuggestions:O,attachmentsEnabled:y,pluginsEnabled:v}):(t.querySelector(`.quickforge-plus-inline`)?.remove(),z(t),A&&bt(A,M)),h?kt({panel:t,leftControls:M,planMode:u,onTogglePlanMode:x}):t.querySelector(`.quickforge-plan-inline`)?.remove(),o===`opencode`&&s&&c&&l?(dt({panel:t,leftControls:M,getAcpSession:s,isStreaming:n,onConfigOptionChange:c,onModeChange:l,dismissComposerMenus:oe}),gt({panel:t,rightControls:N,getAcpSession:s,isStreaming:n,onModeChange:l,dismissComposerMenus:oe})):(t.querySelector(`.quickforge-opencode-config-inline`)?.remove(),L(t),t.querySelector(`.quickforge-opencode-mode-inline`)?.remove(),R(t)),!d||!g){t.querySelector(`.quickforge-agent-access-inline`)?.remove(),I(t),t.querySelector(`.quickforge-yolo-inline`)?.remove();return}nt({panel:t,leftControls:M,agentAccessMode:a,onAccessModeChange:b,dismissComposerMenus:oe})}var Da={collapsed:()=>f(`expand`),expanded:()=>f(`collapse`)};function Oa(e,t){let n=X(e?.details)?e.details:void 0;return e?.isError||n?.aborted===!0||n?.timedOut===!0?`error`:t?`running`:e?`done`:`called`}function Y(e){if(e==null)return``;if(typeof e==`string`)try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ka(e){return e?.content?.filter(e=>e.type===`text`).map(e=>e.text??``).join(`
126
+ `)??``}function X(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function Aa(e,t){let n=X(e?.__quickforgeAcp)?e.__quickforgeAcp:void 0,r=X(t)?t:void 0;return(X(r?.__quickforgeAcp)?r.__quickforgeAcp:void 0)??n}function ja(e){if(!e||!(`__quickforgeAcp`in e))return e;let{__quickforgeAcp:t,...n}=e;return n}function Ma(e){if(!X(e)||!(`__quickforgeAcp`in e))return e;let{__quickforgeAcp:t,...n}=e;return n}function Na(e,t){if(e.running===!0||t)return`Status: running`;let n=[e.timedOut?`timed out`:null,e.aborted?`aborted`:null].filter(Boolean),r=n.length?` (${n.join(`, `)})`:``;return`Exit code: ${e.code??`unknown`}${typeof e.signal==`string`&&e.signal?`, signal: ${e.signal}`:``}${r}`}function Pa(e,t,n){let r=X(t)?t:void 0,i=typeof r?.command==`string`?r.command:typeof e?.command==`string`?e.command:``;if(!i||!r)return``;let a=typeof r?.stdout_preview==`string`?r.stdout_preview:typeof r?.stdout==`string`?r.stdout:``,o=typeof r?.stderr_preview==`string`?r.stderr_preview:typeof r?.stderr==`string`?r.stderr:``,s=!!(a||o),c=r.running===!0||r.code!==void 0||r.signal!==void 0||r.timedOut===!0||r.aborted===!0;return!s&&!c&&!n?``:[`Command: ${i}`,Na(r,n),``,`STDOUT:`,a||`(empty)`,``,`STDERR:`,o||`(empty)`].join(`
127
+ `)}function Fa(e,t,n,r){let i=ka(n);return e===`manage_global_memory`?te(n,r,f)||i:i||(e===`run_command`?Pa(t,n?.details,r):``)}function Ia(e){if(!e||typeof e!=`object`)return;let t=e.diff;if(!t||typeof t!=`object`)return;let n=t;return typeof n.text==`string`?n:void 0}function La(e){if(!e||typeof e!=`object`)return e;let t=e,n=t.diff;if(!n||typeof n!=`object`)return e;let{text:r,...i}=n;return{...t,diff:i}}function Ra(e){if(!e||typeof e!=`object`)return{};let t=e;return{sessionId:typeof t.sessionId==`string`?t.sessionId:void 0,toolCallId:typeof t.toolCallId==`string`?t.toolCallId:void 0}}async function za(e,t,n){let r=n.getAttribute(`aria-label`)||f(`terminateCommand`);n.disabled=!0,n.setAttribute(`aria-label`,f(`commandTerminateRequested`)),n.setAttribute(`title`,f(`commandTerminateRequested`));try{let n=await fetch(`/api/agents/${encodeURIComponent(e)}/abort-tool`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({toolCallId:t})});if(!n.ok)throw Error(`HTTP ${n.status}`)}catch{n.disabled=!1,n.setAttribute(`aria-label`,r),n.setAttribute(`title`,f(`terminateCommandTitle`))}}function Ba(t,r,i=!1){if(t!==`write_file`&&t!==`edit_file`||!r)return n;let a=Number(r.addedLines??0),o=Number(r.removedLines??0);return e`
128
+ <quickforge-diff-counter
129
+ class="quickforge-tool-meta-hover shrink-0"
130
+ added=${a}
131
+ removed=${o}
132
+ ?running=${i}
133
+ title="+${a} -${o}"
134
+ ></quickforge-diff-counter>
135
+ `}function Va(t){return!t.segments||t.segments.length===0?t.text||` `:t.segments.map(t=>t.changed?e`<mark>${t.text}</mark>`:t.text)}function Ha(t){return t.kind===`gap`?e`
136
+ <div class="quickforge-diff-gap${t.first?` quickforge-diff-gap-first`:``}" aria-hidden="true">
137
+ <span class="quickforge-diff-gap-dots">⋯⋯</span>
138
+ <span>${f(`diffOmittedLines`,{count:t.count})}</span>
139
+ </div>
140
+ `:e`
141
+ <div class="quickforge-diff-row quickforge-diff-row-${t.kind}">
142
+ <span class="quickforge-diff-ln">${t.oldNo??``}</span>
143
+ <span class="quickforge-diff-ln">${t.newNo??``}</span>
144
+ <span class="quickforge-diff-code">${Va(t)}</span>
145
+ </div>
146
+ `}function Ua(t){let r=Number(t.addedLines??0),i=Number(t.removedLines??0),a=t.text??``,o=Me(a),s=je(a);return e`
147
+ <div>
148
+ <div class="mb-1 flex items-center gap-2 text-xs font-medium text-muted-foreground">
149
+ <span>Diff</span>
150
+ <span class="quickforge-diff-badge quickforge-diff-badge-add">+${r}</span>
151
+ <span class="quickforge-diff-badge quickforge-diff-badge-del">-${i}</span>
152
+ ${t.truncated?e`<span class="text-muted-foreground/80">truncated</span>`:n}
153
+ ${s?.isNewFile?e`<span class="quickforge-diff-newfile">${f(`diffNewFile`)}</span>`:n}
154
+ ${s?e`<span class="quickforge-diff-path" title=${s.path}>${s.path}</span>`:n}
155
+ </div>
156
+ <div class="quickforge-diff-block">${o.map(Ha)}</div>
157
+ </div>
158
+ `}function Wa(e){if(!Number.isFinite(e)||e<0)return``;if(e<1e3)return`${Math.max(0,Math.round(e))}ms`;let t=e/1e3;return t<10?`${t.toFixed(1)}s`:t<60?`${Math.round(t)}s`:`${Math.floor(t/60)}m ${Math.floor(t%60).toString().padStart(2,`0`)}s`}function Ga(e){if(e){if(typeof e.durationMs==`number`)return e.durationMs;if(typeof e.startedAt==`number`)return Date.now()-e.startedAt}}var Ka=class extends HTMLElement{timer;static get observedAttributes(){return[`duration-ms`,`running`,`started-at`]}connectedCallback(){this.render(),this.syncTimer()}disconnectedCallback(){this.stopTimer()}attributeChangedCallback(){this.render(),this.syncTimer()}readNumberAttribute(e){let t=this.getAttribute(e);if(t===null||t.trim()===``)return;let n=Number(t);return Number.isFinite(n)&&n>=0?n:void 0}syncTimer(){this.getAttribute(`running`)===`true`&&this.readNumberAttribute(`duration-ms`)===void 0?this.timer||=setInterval(()=>this.render(),500):this.stopTimer()}stopTimer(){this.timer&&=(clearInterval(this.timer),void 0)}render(){let e=this.readNumberAttribute(`duration-ms`),t=this.readNumberAttribute(`started-at`),n=e===void 0?t!==void 0&&t>0?Date.now()-t:0:e;this.textContent=Wa(n)}};customElements.get(`quickforge-elapsed-time`)||customElements.define(`quickforge-elapsed-time`,Ka);var qa={prefersReducedMotion:()=>!!(window.matchMedia&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches),animate:(e,t,n)=>e.animate(t,n),setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e)},Ja=class extends HTMLElement{controller;resizeObserver;ready=!1;static get observedAttributes(){return[`text`,`running`]}connectedCallback(){let e=this.marqueeViews();e[0].el.style.visibility=``,e[1].el.setAttribute(`aria-hidden`,`true`),this.controller=new oe({views:e,getClientWidth:()=>this.clientWidth},qa),this.ready=!0,typeof ResizeObserver==`function`&&(this.resizeObserver=new ResizeObserver(()=>this.scheduleRestart()),this.resizeObserver.observe(this)),this.sync()}disconnectedCallback(){this.ready=!1,this.resizeObserver&&=(this.resizeObserver.disconnect(),void 0),this.controller?.dispose(),this.controller=void 0}attributeChangedCallback(){this.ready&&this.sync()}marqueeViews(){let e=Array.from(this.children).filter(e=>e instanceof HTMLElement&&e.classList.contains(`quickforge-marquee-view`));if(e.length===2){let t=e.map(e=>{let t=e.querySelector(`.quickforge-marquee-static`),n=e.querySelector(`.quickforge-marquee-moving`);return t&&n?{el:e,staticSpan:t,movingSpan:n}:void 0});if(t[0]&&t[1])return[t[0],t[1]]}this.replaceChildren();let t=[0,1].map(()=>{let e=document.createElement(`span`);e.className=`quickforge-marquee-view`;let t=document.createElement(`span`);t.className=`quickforge-marquee-static`;let n=document.createElement(`span`);return n.className=`quickforge-marquee-moving`,n.setAttribute(`aria-hidden`,`true`),e.appendChild(t),e.appendChild(n),this.appendChild(e),{el:e,staticSpan:t,movingSpan:n}});return[t[0],t[1]]}sync(){this.controller?.sync(this.getAttribute(`text`)||``,this.getAttribute(`running`)===`true`)}scheduleRestart(){requestAnimationFrame(()=>{this.ready&&this.controller?.sync(this.getAttribute(`text`)||``,this.getAttribute(`running`)===`true`,!0)})}};customElements.get(`quickforge-tool-marquee`)||customElements.define(`quickforge-tool-marquee`,Ja);var Ya={prefersReducedMotion:()=>!!(window.matchMedia&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches),createElement:e=>document.createElement(e),setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e)},Xa=class extends HTMLElement{controller;ready=!1;static get observedAttributes(){return[`added`,`removed`,`running`]}connectedCallback(){this.controller||=new Oe(this,Ya),this.ready=!0,this.sync()}disconnectedCallback(){this.ready=!1,this.controller?.dispose()}attributeChangedCallback(){this.ready&&this.sync()}sync(){this.controller?.sync(Number(this.getAttribute(`added`)??0)||0,Number(this.getAttribute(`removed`)??0)||0,this.getAttribute(`running`)===`true`)}};customElements.get(`quickforge-diff-counter`)||customElements.define(`quickforge-diff-counter`,Xa);function Za(t,r){return Ga(t)===void 0?n:e`
159
+ <quickforge-elapsed-time
160
+ class="quickforge-tool-meta-hover text-xs text-muted-foreground/70"
161
+ started-at=${String(t?.startedAt??``)}
162
+ duration-ms=${typeof t?.durationMs==`number`?String(t.durationMs):``}
163
+ running=${String(r===`running`)}
164
+ ></quickforge-elapsed-time>
165
+ `}function Qa(){return`text-muted-foreground/60`}function Z(t){let n=`quickforge-tool-type-icon shrink-0 ${Qa()}`;return t===`manage_global_memory`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 18V5"/><path d="M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4"/><path d="M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5"/><path d="M17.997 5.125a4 4 0 0 1 2.526 5.77"/><path d="M18 18a4 4 0 0 0 2-7.464"/><path d="M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517"/><path d="M6 18a4 4 0 0 1-2-7.464"/><path d="M6.003 5.125a4 4 0 0 0-2.526 5.77"/></svg>`:t===`edit_file`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.4 2.6a2.1 2.1 0 0 1 3 3L12 15l-4 1 1-4Z"/></svg>`:t===`write_file`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z"/><path d="M14 2v6h6"/><path d="M12 18v-6"/><path d="M9 15h6"/></svg>`:t===`read_file`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z"/><path d="M14 2v6h6"/><path d="M16 13H8"/><path d="M16 17H8"/><path d="M10 9H8"/></svg>`:t===`grep_files`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>`:t===`present_files`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z"/><path d="M14 2v6h6"/><path d="M10 13.5 8 16l2 2.5"/><path d="m14 13.5 2 2.5-2 2.5"/></svg>`:t===`generate_image`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="18" height="18" x="3" y="3" rx="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.1-3.1a2 2 0 0 0-2.8 0L6 21"/><path d="m14 19.5-2-2a2 2 0 0 0-2.8 0L5.5 21"/></svg>`:t===`read_skill_resource`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 7v14"/><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3Z"/></svg>`:t===`run_command`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="4 17 10 11 4 5"/><line x1="12" x2="20" y1="19" y2="19"/></svg>`:t===`run_subagent`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>`:t===`ask_user`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" x2="12.01" y1="17" y2="17"/></svg>`:t===`activate_skill`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9.9 2.1 8.5 8.5 2.1 9.9l6.4 1.4 1.4 6.4 1.4-6.4 6.4-1.4-6.4-1.4Z"/><path d="M19 15v4"/><path d="M21 17h-4"/></svg>`:e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.8-3.8a6 6 0 0 1-7.9 7.9l-6.9 6.9a2.1 2.1 0 0 1-3-3l6.9-6.9a6 6 0 0 1 7.9-7.9Z"/></svg>`}function $a(e){return e===`error`?`text-destructive`:e===`running`?`text-primary animate-spin`:e===`done`?`text-emerald-600 dark:text-emerald-500`:`text-muted-foreground/70`}function eo(t){let n=`quickforge-tool-status-icon shrink-0 ${$a(t)}`,r=f(t);return t===`running`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" role="img" aria-label=${r}><path d="M21 12a9 9 0 1 1-6.2-8.6"/></svg>`:t===`done`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" role="img" aria-label=${r}><path d="M22 11.1V12a10 10 0 1 1-5.9-9.1"/><path d="m9 11 3 3L22 4"/></svg>`:t===`error`?e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" role="img" aria-label=${r}><circle cx="12" cy="12" r="10"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg>`:e`<svg class=${n} xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" role="img" aria-label=${r}><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="2" fill="currentColor" stroke="none"/></svg>`}function Q(t,n){return e`
166
+ <span class="${t===`done`?`quickforge-tool-meta-hover`:`quickforge-tool-meta-important`} shrink-0 inline-flex items-center gap-1.5" title=${f(t)}>
167
+ ${eo(t)}${Za(n,t)}
168
+ </span>
169
+ `}function to(t,r,i){if(t!==`run_command`||r!==`running`)return n;let{sessionId:a,toolCallId:o}=Ra(i);return!a||!o?n:e`
170
+ <button
171
+ type="button"
172
+ class="shrink-0 inline-flex size-5 items-center justify-center text-foreground transition-opacity hover:opacity-70 disabled:cursor-not-allowed disabled:opacity-40"
173
+ title=${f(`terminateCommandTitle`)}
174
+ aria-label=${f(`terminateCommandTitle`)}
175
+ @click=${e=>{e.preventDefault(),e.stopPropagation(),za(a,o,e.currentTarget)}}
176
+ ><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="7" y="7" width="10" height="10" rx="2.4"/></svg></button>
177
+ `}var no=`quickforge:preview-artifact`;function ro(e,t){let n=t===`html`||t===`image`||t===`markdown`||t===`code`||t===`unknown`?t:void 0;return y(e,n)?{path:e,kind:n}:void 0}function io(e,t){if(e===`write_file`||e===`edit_file`){let e=t&&`path`in t&&typeof t.path==`string`?t.path:``;return e?ro(e):void 0}if(e===`present_files`){let e=(t&&Array.isArray(t.files)?t.files:[]).map(e=>{if(typeof e==`string`)return{path:e,kind:void 0};if(!(!X(e)||typeof e.path!=`string`))return{path:e.path,kind:typeof e.kind==`string`?e.kind:void 0}}).filter(e=>!!e),n=t&&typeof t.defaultPreview==`string`?t.defaultPreview:``,r=e.find(e=>e.path===n);if(r){let e=ro(r.path,r.kind);if(e)return e}for(let t of e){let e=ro(t.path,t.kind);if(e)return e}}}function ao(t,r){let i=io(t,r);return i?e`
178
+ <button
179
+ type="button"
180
+ class="shrink-0 inline-flex size-5 items-center justify-center text-muted-foreground transition-colors hover:text-foreground"
181
+ title=${f(`previewArtifact`)}
182
+ aria-label=${f(`previewArtifact`)}
183
+ @click=${e=>{e.preventDefault(),e.stopPropagation(),window.dispatchEvent(new CustomEvent(no,{detail:i}))}}
184
+ ><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"/><circle cx="12" cy="12" r="3"/></svg></button>
185
+ `:n}var $=new Map,oo=200;function so(e,t){if(e){if(!$.has(e)&&$.size>=oo){let e=$.keys().next().value;e&&$.delete(e)}$.set(e,t)}}function co(e,t,n){let{toolCallId:r}=Ra(n);return r||`${e}:${Y(t)}`}var lo=new _;function uo(t){let r=a(t),i=r?f(`viewSubagentRunDetails`):t.statusLabel,o=b(t,lo);return e`
186
+ <div class="quickforge-subagent-tool">
187
+ <button
188
+ type="button"
189
+ class="quickforge-tool-summary flex w-full cursor-pointer list-none items-center gap-2 text-left text-sm text-muted-foreground select-none disabled:cursor-not-allowed disabled:opacity-70"
190
+ title=${i}
191
+ aria-label=${`${t.statusLabel} · ${i}`}
192
+ aria-disabled=${String(!r)}
193
+ ?disabled=${!r}
194
+ @click=${()=>{if(!r)return;let e=k(t,x.get(t.runId));window.dispatchEvent(new CustomEvent(h,{detail:{runId:e.runId,payload:e}}))}}
195
+ >
196
+ ${Z(`run_subagent`)}
197
+ <span class="quickforge-subagent-title min-w-0">
198
+ <span class="quickforge-subagent-label">${t.statusLabel}</span>
199
+ ${o.length>0?e`
200
+ <quickforge-tool-marquee
201
+ class="quickforge-subagent-marquee"
202
+ text=${o.join(` · `)}
203
+ running="true"
204
+ aria-label=${f(`subagentRunningTools`)}
205
+ ></quickforge-tool-marquee>
206
+ `:n}
207
+ ${Q(t.status,t.timing)}
208
+ </span>
209
+ </button>
210
+ </div>
211
+ `}function fo(t){let r=new Set(D(t)),i=v(t),a=new Set(t.pendingToolCalls);return e`
212
+ <div class="mt-3 space-y-3">
213
+ ${r.has(`task`)?e`<div class="quickforge-subagent-task quickforge-input-clamp" data-quickforge-input-clamp="true">
214
+ <div class="space-y-1">
215
+ ${t.task?e`<div><span class="font-medium">${f(`subagentTask`)}:</span> <span class="quickforge-subagent-task-value">${t.task}</span></div>`:n}
216
+ ${t.context?e`<div><span class="font-medium">${f(`subagentContext`)}:</span> <span class="quickforge-subagent-task-value">${t.context}</span></div>`:n}
217
+ ${t.expectedOutput?e`<div><span class="font-medium">${f(`subagentExpectedOutput`)}:</span> <span class="quickforge-subagent-task-value">${t.expectedOutput}</span></div>`:n}
218
+ </div>
219
+ </div>`:n}
220
+ ${r.has(`summary`)?e`<div class="quickforge-subagent-summary rounded-lg border border-border/75 bg-muted/20 px-3 py-2.5 text-sm">
221
+ <div class="flex flex-wrap items-center gap-x-3 gap-y-1 text-muted-foreground">
222
+ <span class="font-medium text-foreground/85">${t.label}</span>
223
+ ${t.toolCalls===void 0?n:e`<span>${f(`subagentToolCalls`)}: ${t.toolCalls}</span>`}
224
+ ${t.timing?e`<span>${Za(t.timing,t.status)}</span>`:n}
225
+ </div>
226
+ ${t.allowedTools.length>0?e`<div class="mt-2 flex flex-wrap gap-1.5">${t.allowedTools.map(t=>e`<span class="rounded-full bg-background/80 px-2 py-0.5 text-[11px] text-muted-foreground/80">${t}</span>`)}</div>`:n}
227
+ </div>`:n}
228
+ ${r.has(`trace`)?e`<div class="quickforge-subagent-trace p-2.5"><message-list data-quickforge-subagent-process="true" data-quickforge-subagent-streaming=${String(t.status===`running`)} .messages=${i} .tools=${t.tools} .pendingToolCalls=${a} .isStreaming=${!1}></message-list></div>`:n}
229
+ ${r.has(`error`)?e`<div class="quickforge-subagent-error rounded-md border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive" role="alert"><span class="font-medium">${f(`subagentErrorReason`)}:</span> ${t.errorMessage||f(`subagentErrorUnavailable`)}</div>`:n}
230
+ ${r.has(`output`)?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`subagentResult`)}</div><code-block .code=${t.output} language="text"></code-block></div>`:n}
231
+ ${r.has(`input`)?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`input`)}</div><code-block .code=${t.input} language="json"></code-block></div>`:n}
232
+ ${r.has(`details`)?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`details`)}</div><code-block .code=${t.details} language="json"></code-block></div>`:n}
233
+ </div>
234
+ `}var po=class extends t{static properties={payload:{attribute:!1}};__processDecorationScheduled=!1;__processDecorationPending=!1;__processDecorationDisposed=!1;createRenderRoot(){return this}connectedCallback(){super.connectedCallback?.(),this.__processDecorationDisposed=!1}disconnectedCallback(){this.__processDecorationDisposed=!0,super.disconnectedCallback?.()}render(){return this.payload?fo(this.payload):e`<div class="rounded-lg border border-border bg-background/60 px-3 py-6 text-center text-sm text-muted-foreground/70">${f(`subagentRunEmpty`)}</div>`}updated(){this.scheduleProcessDecoration()}scheduleProcessDecoration(){if(!this.__processDecorationDisposed){if(this.__processDecorationScheduled){this.__processDecorationPending=!0;return}this.__processDecorationScheduled=!0,(async()=>{try{if(await this.updateComplete,this.__processDecorationDisposed||!this.isConnected)return;we(this,Da);let e=this.querySelector(`message-list[data-quickforge-subagent-process="true"]`)?.updateComplete;if(e&&await e,this.__processDecorationDisposed||!this.isConnected)return;ua(this)}catch{}finally{this.__processDecorationScheduled=!1,this.__processDecorationPending&&!this.__processDecorationDisposed&&(this.__processDecorationPending=!1,this.scheduleProcessDecoration())}})()}}};customElements.get(`subagent-run-detail-body`)||customElements.define(`subagent-run-detail-body`,po);var mo=class{render(e,t,n){let r=m(e,t,n,o().toolDisplayMode,f,t?.toolCallId);return S(r,x.get(r.runId))&&x.publish(r),{isCustom:!1,content:uo(r)}}},ho=class{render(t,r,i){let a=Oa(r,i),o=O(r?.details),s=ie(r?.details),c=C(`generate_image`,t,r),l=ka(r),u=s?.model||(typeof t?.model==`string`?t.model:``);return{isCustom:!0,content:e`
235
+ <div class="quickforge-generated-image-tool space-y-3">
236
+ <div class="flex items-center gap-2 text-sm text-muted-foreground">
237
+ ${Z(`generate_image`)}
238
+ <span class="min-w-0 flex-1 truncate">${f(`generateImage`)}${c?e`<span class="text-muted-foreground/70"> · ${c}</span>`:n}</span>
239
+ ${Q(a,o)}
240
+ </div>
241
+ ${s?e`
242
+ <div class=${s.assets.length>1?`grid grid-cols-1 gap-3 sm:grid-cols-2`:`grid grid-cols-1 gap-3`}>
243
+ ${s.assets.map((t,n)=>{let r=j(s,t),i=f(`generatedImageAlt`,{index:n+1});return e`
244
+ <figure class="overflow-hidden rounded-lg border border-border bg-background/60">
245
+ <a href=${r} target="_blank" rel="noopener noreferrer" title=${f(`openGeneratedImage`)} aria-label=${f(`openGeneratedImage`)}>
246
+ <img class="block max-h-[32rem] w-full object-contain" src=${r} alt=${i} loading="lazy" referrerpolicy="no-referrer" />
247
+ </a>
248
+ <figcaption class="flex items-center gap-2 border-t border-border px-3 py-2 text-xs text-muted-foreground">
249
+ <span class="min-w-0 flex-1 truncate">${u||t.mimeType}</span>
250
+ <a class="text-muted-foreground transition-colors hover:text-foreground" href=${r} download=${t.assetId} title=${f(`downloadGeneratedImage`)} aria-label=${f(`downloadGeneratedImage`)}>${f(`downloadGeneratedImage`)}</a>
251
+ </figcaption>
252
+ </figure>
253
+ `})}
254
+ </div>
255
+ ${s.text?e`<div class="text-sm leading-relaxed text-muted-foreground">${s.text}</div>`:n}
256
+ `:a===`running`?e`
257
+ <div class="rounded-lg border border-border bg-background/60 px-3 py-6 text-center text-sm text-muted-foreground">${f(`generatingImage`)}</div>
258
+ `:l?e`<code-block .code=${l} language="text"></code-block>`:n}
259
+ </div>
260
+ `}}},go=class{toolName;labelKey;constructor(e,t){this.toolName=e,this.labelKey=t}render(t,n,r){let i=Oa(n,r),a=O(n?.details),s=ja(t),c=Ma(n?.details),l=Aa(t,n?.details),u=typeof l?.title==`string`&&l.title?l.title:typeof l?.kind==`string`?l.kind:``,d=typeof l?.kind==`string`&&l.kind!==u?l.kind:``,p=C(this.toolName,s,n),m=o().toolDisplayMode===`detailed`,h=m?Y(s):``,g=Fa(this.toolName,s,n,r),_=Ia(c),v=m?Y(_?La(c):c):``,y=co(this.toolName,s,n?.details),b=$.get(y)??m,x=n?.isError?`error`:`default`;return{isCustom:!0,content:e`
261
+ <div class="quickforge-local-tool-shell">
262
+ <details class="group/tool quickforge-local-tool" ?open=${b} @toggle=${e=>{e.isTrusted&&so(y,e.currentTarget.open)}}>
263
+ <summary class="quickforge-tool-summary flex cursor-pointer list-none items-center gap-2 text-sm text-muted-foreground select-none">
264
+ ${Z(this.toolName)}
265
+ <span class="quickforge-tool-title min-w-0">
266
+ <span class="quickforge-tool-label">${u?e`OpenCode<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${u}${d?`/${d}`:``}</span>`:f(this.labelKey)}${p?e`<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${p}</span>`:``}</span>
267
+ <svg class="quickforge-tool-chevron shrink-0 group-open/tool:rotate-90" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg>
268
+ ${Ba(this.toolName,_,i===`running`)}
269
+ ${Q(i,a)}
270
+ </span>
271
+ </summary>
272
+ <div class="mt-3 space-y-3">
273
+ ${h?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`input`)}</div><code-block .code=${h} language="json"></code-block></div>`:``}
274
+ ${g?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`output`)}</div>${this.toolName===`run_command`?e`<console-block .content=${g} .variant=${x}></console-block>`:e`<code-block .code=${g} language="text"></code-block>`}</div>`:``}
275
+ ${_?Ua(_):``}
276
+ ${v?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`details`)}</div><code-block .code=${v} language="json"></code-block></div>`:``}
277
+ </div>
278
+ </details>
279
+ <span class="quickforge-tool-actions inline-flex shrink-0 items-center gap-1">
280
+ ${ao(this.toolName,s)}
281
+ ${to(this.toolName,i,n?.details)}
282
+ </span>
283
+ </div>
284
+ `}}};function _o(e){let t=Array.isArray(e?.questions)?e.questions.filter(e=>X(e)&&typeof e.question==`string`&&!!e.question.trim()):[];return t.length?t.map(e=>String(e.question)):typeof e?.question==`string`&&e.question.trim()?[e.question]:[]}function vo(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=t.questions,r=t.answers;if(!Array.isArray(n)||n.length===0||!Array.isArray(r))return null;let i=[];for(let e of n){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e.question;if(typeof t!=`string`||!t)return null;i.push({question:t})}return{questions:i,answers:i.map((e,t)=>{let n=r[t];if(!n||typeof n!=`object`||Array.isArray(n))return;let i=n;return{choices:Array.isArray(i.choices)?i.choices.filter(e=>typeof e==`string`):void 0,custom:typeof i.custom==`string`?i.custom:void 0}}),skipped:t.skipped===!0,skipReason:typeof t.skipReason==`string`&&t.skipReason?t.skipReason:void 0}}var yo={timeout:`askUserSkipReasonTimeout`,aborted:`askUserSkipReasonAborted`,"no-questions":`askUserSkipReasonNoQuestions`};function bo(e){return f(e&&yo[e]?yo[e]:`askUserSkipReasonUser`)}var xo=class{render(t,r,i){let a=Oa(r,i),s=O(r?.details),c=ja(t),l=_o(c),u=o().toolDisplayMode===`detailed`,d=u?Y(c):``,p=vo(r?.details),m=p!==null&&!u,h=m?``:ka(r),g=p&&m?p.questions.map((e,t)=>({question:`${t+1}. ${e.question}`,answer:p.skipped?f(`askUserUnanswered`):nn(p.answers[t])||f(`askUserUnanswered`)})):[],_=p&&m&&p.skipped?bo(p.skipReason):``,v=co(`ask_user`,c,r?.details),y=$.get(v)??u,b=l.length?`${f(`askUserSummaryCount`,{count:String(l.length)})}${l[0]?` · ${l[0]}`:``}`:``;return{isCustom:!0,content:e`
285
+ <div class="quickforge-local-tool-shell">
286
+ <details class="group/tool quickforge-local-tool" ?open=${y} @toggle=${e=>{e.isTrusted&&so(v,e.currentTarget.open)}}>
287
+ <summary class="quickforge-tool-summary flex cursor-pointer list-none items-center gap-2 text-sm text-muted-foreground select-none">
288
+ ${Z(`ask_user`)}
289
+ <span class="quickforge-tool-title min-w-0">
290
+ <span class="quickforge-tool-label">${f(`askUserTitle`)}${b?e`<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${b}</span>`:``}</span>
291
+ <svg class="quickforge-tool-chevron shrink-0 group-open/tool:rotate-90" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg>
292
+ ${Q(a,s)}
293
+ </span>
294
+ </summary>
295
+ <div class="mt-3 space-y-3">
296
+ ${g.length?e`
297
+ <div class="quickforge-ask-review">
298
+ ${_?e`<div class="quickforge-ask-review-answer">${_}</div>`:n}
299
+ ${g.map(t=>e`
300
+ <div class="quickforge-ask-review-row">
301
+ <div class="quickforge-ask-review-content">
302
+ <span class="quickforge-ask-review-question">${t.question}</span>
303
+ <span class="quickforge-ask-review-answer">${t.answer}</span>
304
+ </div>
305
+ </div>
306
+ `)}
307
+ </div>
308
+ `:n}
309
+ ${l.length&&!u&&p===null?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`input`)}</div><div class="quickforge-ask-tool-questions">${l.map(t=>e`<div>${t}</div>`)}</div></div>`:n}
310
+ ${d?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`input`)}</div><code-block .code=${d} language="json"></code-block></div>`:n}
311
+ ${h?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`output`)}</div><code-block .code=${h} language="text"></code-block></div>`:n}
312
+ </div>
313
+ </details>
314
+ </div>
315
+ `}}},So=class{render(t,r,i){let a=Oa(r,i),s=O(r?.details),c=Aa(t,r?.details),l=typeof c?.title==`string`&&c.title?c.title:typeof c?.kind==`string`&&c.kind?c.kind:`tool`,u=typeof c?.kind==`string`&&c.kind&&c.kind!==l?c.kind:``,d=ja(t),p=Ma(r?.details),m=o().toolDisplayMode===`detailed`,h=m?Y(d):``,g=ka(r),_=Ia(p),v=m?Y(_?La(p):p):``,y=co(`opencode_tool`,d,r?.details);return{isCustom:!0,content:e`
316
+ <div class="quickforge-local-tool-shell quickforge-opencode-tool-shell">
317
+ <details class="group/tool quickforge-local-tool quickforge-opencode-tool" ?open=${$.get(y)??m} @toggle=${e=>{e.isTrusted&&so(y,e.currentTarget.open)}}>
318
+ <summary class="quickforge-tool-summary flex cursor-pointer list-none items-center gap-2 text-sm text-muted-foreground select-none">
319
+ ${Z(`opencode_tool`)}
320
+ <span class="quickforge-tool-title min-w-0">
321
+ <span class="quickforge-tool-label">OpenCode<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${l}${u?`/${u}`:``}</span></span>
322
+ <svg class="quickforge-tool-chevron shrink-0 group-open/tool:rotate-90" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg>
323
+ ${Q(a,s)}
324
+ </span>
325
+ </summary>
326
+ <div class="mt-3 space-y-3">
327
+ ${h?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`input`)}</div><code-block .code=${h} language="json"></code-block></div>`:n}
328
+ ${g?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`output`)}</div><code-block .code=${g} language=${To(g)}></code-block></div>`:n}
329
+ ${_?Ua(_):n}
330
+ ${v?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`details`)}</div><code-block .code=${v} language="json"></code-block></div>`:n}
331
+ </div>
332
+ </details>
333
+ </div>
334
+ `}}};function Co(e){if(!e.startsWith(`mcp__`))return null;let t=e.slice(5),n=t.indexOf(`__`);return n<=0||n>=t.length-2?null:{serverName:t.slice(0,n),toolName:t.slice(n+2)}}function wo(e,t){let n=Co(e),r=X(t)?t:void 0,i=typeof r?.server==`string`&&r.server?r.server:n?.serverName??``,a=typeof r?.tool==`string`&&r.tool?r.tool:n?.toolName??e;return n||r?.mcp===!0?{serverName:i,toolName:a}:null}function To(e){if(!e)return`text`;try{return JSON.parse(e),`json`}catch{return`text`}}var Eo=class{toolName;label;constructor(e,t){this.toolName=e,this.label=t}render(t,r,i){let a=Oa(r,i),s=O(r?.details),c=wo(this.toolName,r?.details)??Co(this.toolName),l=c?.serverName??``,u=c?.toolName??this.toolName,d=C(this.toolName,t,r),p=o().toolDisplayMode===`detailed`,m=p?Y(t):``,h=Fa(this.toolName,t,r,i),g=p?Y(r?.details):``,_=co(this.toolName,t,r?.details),v=$.get(_)??p,y=this.label&&this.label!==u?`${this.label} (${u})`:u;return{isCustom:!1,content:e`
335
+ <details class="group/tool quickforge-mcp-tool" ?open=${v} @toggle=${e=>{e.isTrusted&&so(_,e.currentTarget.open)}}>
336
+ <summary class="quickforge-tool-summary flex cursor-pointer list-none items-center gap-2 text-sm text-muted-foreground select-none">
337
+ ${Z(this.toolName)}
338
+ <span class="quickforge-tool-title min-w-0">
339
+ <span class="quickforge-tool-label">MCP${l?e`<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${l}</span>`:n}<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${y}</span>${d?e`<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${d}</span>`:n}</span>
340
+ <svg class="quickforge-tool-chevron shrink-0 group-open/tool:rotate-90" xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg>
341
+ ${Q(a,s)}
342
+ </span>
343
+ </summary>
344
+ <div class="mt-3 space-y-3">
345
+ ${m?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`input`)}</div><code-block .code=${m} language="json"></code-block></div>`:n}
346
+ ${h?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`output`)}</div><code-block .code=${h} language=${To(h)}></code-block></div>`:n}
347
+ ${g?e`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${f(`details`)}</div><code-block .code=${g} language="json"></code-block></div>`:n}
348
+ </div>
349
+ </details>
350
+ `}}},Do=new Set;function Oo(e){for(let t of e){if(!X(t)||typeof t.name!=`string`||!Co(t.name)||Do.has(t.name))continue;let e=typeof t.label==`string`?t.label:typeof t.description==`string`?t.description.replace(/^\[MCP:[^\]]+\]\s*/,``):void 0;r(t.name,new Eo(t.name,e)),Do.add(t.name)}}for(let[e,t]of[[`manage_global_memory`,`manageGlobalMemory`],[`read_file`,`readFile`],[`grep_files`,`searchFiles`],[`write_file`,`writeFile`],[`edit_file`,`editFile`],[`run_command`,`runCommand`],[`present_files`,`presentFiles`],[`activate_skill`,`activateSkill`],[`read_skill_resource`,`readSkillResource`]])r(e,new go(e,t));r(`run_subagent`,new mo),r(`generate_image`,new ho),r(`opencode_tool`,new So),r(`ask_user`,new xo);function ko(e=[]){return Oo(e),e}export{Nt as _,da as a,Ft as b,pi as c,gn as d,hn as f,$t as g,Qt as h,ba as i,Gr as l,on as m,Ea as n,di as o,an as p,Ta as r,li as s,ko as t,xn as u,Mt as v,Pt as y};