@shawnstack/quickforge 1.7.7 → 1.7.9

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 (85) hide show
  1. package/bin/quickforge.mjs +10 -1
  2. package/dist/assets/AgentProfilesPage-BSM5w3bn.js +1 -0
  3. package/dist/assets/ChatPanelHost-cd80S4EX.js +48 -0
  4. package/dist/assets/CloudAccountSettingsPage-BJMrfgy9.js +1 -0
  5. package/dist/assets/{PluginsPage-CPE5tbbf.js → PluginsPage-mJkTmVVV.js} +1 -1
  6. package/dist/assets/ScheduledTasksPage-DJj_NLm9.js +2 -0
  7. package/dist/assets/{SettingsWorkspacePage-BE2T4d3P.js → SettingsWorkspacePage-7lQ0Wl63.js} +389 -389
  8. package/dist/assets/ShareLinksSettingsPage-DjFq_Lnb.js +1 -0
  9. package/dist/assets/SharedConversationPage-BbuNpcpP.js +1 -0
  10. package/dist/assets/TerminalDock-CczcCJJE.js +2 -0
  11. package/dist/assets/WorkspaceInspector-0i6x-diB.js +36 -0
  12. package/dist/assets/{icons-2D18YbSI.js → icons-DM_qJ7VJ.js} +1 -1
  13. package/dist/assets/{index-BiCTgUlY.css → index-D-J_8Smf.css} +1 -1
  14. package/dist/assets/index-DFASc15l.js +66 -0
  15. package/dist/assets/local-tools-Dn1Y9aPe.js +270 -0
  16. package/dist/assets/{model-display-label-C6-0eDxF.js → logger-8REuLPGK.js} +1 -1
  17. package/dist/assets/{mcp-servers-dialog-GY7sdfIr.js → mcp-servers-dialog-BG4b67ea.js} +2 -2
  18. package/dist/assets/{model-reference-o41fJ6jQ.js → model-display-label-CURwH0xM.js} +1 -1
  19. package/dist/assets/{monaco-DvXErxp2.js → monaco-bDr860xx.js} +1 -1
  20. package/dist/assets/{react-vendor-3UaA-C9W.js → react-vendor-BpWW_Nvp.js} +1 -1
  21. package/dist/assets/{skills-dialog-C1fJ1Jl7.js → skills-dialog-DIzZvQqW.js} +3 -3
  22. package/dist/index.html +8 -8
  23. package/package.json +1 -1
  24. package/server/acp/server.mjs +17 -1
  25. package/server/agent-manager.mjs +251 -31
  26. package/server/ai-http-logger.mjs +162 -19
  27. package/server/ai-provider-options.mjs +4 -1
  28. package/server/auto-archive.mjs +42 -29
  29. package/server/cloud/auto-approval.mjs +155 -0
  30. package/server/cloud/client.mjs +5 -0
  31. package/server/cloud/qf-agent-process.mjs +163 -3
  32. package/server/cloud/service-config.mjs +1 -1
  33. package/server/index.mjs +69 -13
  34. package/server/lan-access-backup.mjs +256 -0
  35. package/server/lan-access-cutover.mjs +306 -0
  36. package/server/lan-access-json-file.mjs +75 -0
  37. package/server/lan-access-service.mjs +155 -0
  38. package/server/lan-access-store.mjs +110 -9
  39. package/server/maintenance/downgrade-lan-access-v1.mjs +101 -0
  40. package/server/maintenance/downgrade-session-state-v1.mjs +130 -0
  41. package/server/maintenance/downgrade-share-v1.mjs +101 -0
  42. package/server/maintenance/export-lan-access-v1.mjs +80 -0
  43. package/server/maintenance/export-scheduled-runs-v1.mjs +45 -0
  44. package/server/maintenance/export-session-state-v1.mjs +67 -0
  45. package/server/maintenance/export-share-v1.mjs +77 -0
  46. package/server/public-api.mjs +21 -2
  47. package/server/routes/agent.mjs +37 -4
  48. package/server/routes/backup.mjs +221 -39
  49. package/server/routes/cloud.mjs +28 -1
  50. package/server/routes/scheduled-tasks.mjs +347 -134
  51. package/server/routes/shares.mjs +4 -2
  52. package/server/routes/storage.mjs +138 -8
  53. package/server/routes/workspace.mjs +265 -4
  54. package/server/scheduled-runs-backup.mjs +235 -0
  55. package/server/scheduled-runs-cutover.mjs +497 -0
  56. package/server/scheduled-task-runs-service.mjs +279 -0
  57. package/server/session-index-service.mjs +495 -0
  58. package/server/session-state-backup.mjs +277 -0
  59. package/server/session-state-cutover.mjs +370 -0
  60. package/server/session-state-service.mjs +709 -0
  61. package/server/share-backup.mjs +255 -0
  62. package/server/share-cutover.mjs +296 -0
  63. package/server/share-json-file.mjs +60 -0
  64. package/server/share-service.mjs +163 -0
  65. package/server/share-store.mjs +196 -19
  66. package/server/skills.mjs +0 -1
  67. package/server/sqlite/database.mjs +233 -0
  68. package/server/sqlite/lan-access-repository.mjs +652 -0
  69. package/server/sqlite/migrations.mjs +577 -0
  70. package/server/sqlite/scheduled-task-runs-repository.mjs +464 -0
  71. package/server/sqlite/session-index-repository.mjs +297 -0
  72. package/server/sqlite/session-state-repository.mjs +786 -0
  73. package/server/sqlite/share-repository.mjs +854 -0
  74. package/server/storage.mjs +317 -1
  75. package/dist/assets/AgentProfilesPage-BfA_sQ3A.js +0 -1
  76. package/dist/assets/ChatPanelHost-Dul1ahKj.js +0 -307
  77. package/dist/assets/CloudAccountSettingsPage-qZh0lTUN.js +0 -1
  78. package/dist/assets/ScheduledTasksPage-PTxL_PPg.js +0 -2
  79. package/dist/assets/ShareLinksSettingsPage-Bl8fP62X.js +0 -1
  80. package/dist/assets/SharedConversationPage-BK9XJnEe.js +0 -1
  81. package/dist/assets/TerminalDock-CL7HU9DI.js +0 -2
  82. package/dist/assets/WorkspaceInspector-MNBLIKMn.js +0 -36
  83. package/dist/assets/index-BTPzyq7d.js +0 -65
  84. package/dist/assets/mermaid-renderer-jEbqFaTe.js +0 -2
  85. /package/dist/assets/{plugin-api-Uu2xAB4d.js → plugin-api-BrdQeM4B.js} +0 -0
@@ -0,0 +1,270 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mermaid.core-DWpShXCs.js","assets/pi-ai-Cr2ee4a0.js","assets/rolldown-runtime-DWdDZTNf.js","assets/chunk-HOUHSVGY-tdc-Z9eW.js","assets/src-PYsDme0X.js","assets/chunk-Y2CYZVJY-D6N-CrJv.js","assets/chunk-WYO6CB5R-NF-MsJJR.js","assets/chunk-ICXQ74PX-Cd7igVGt.js","assets/dist-CLg13NtV.js","assets/chunk-52WLFC77-CDbaHw80.js","assets/line-B4DxX7tC.js","assets/path-6uRLdFF7.js","assets/array-B9UHiPd-.js","assets/chunk-7BUUIJ7U-CCcsI9XE.js","assets/chunk-C7G6YPKG-ZMLUvfLy.js","assets/chunk-OGEWGWER-TgvkXkFX.js","assets/chunk-Q4XR5HBZ-fo5-HsqY.js","assets/pi-web-ui-DV5jKjSg.js","assets/lit-vendor-DvaQX_UQ.js","assets/chunk-ZGVPDNZ5-CRrAYi4g.js","assets/rough.esm-Bud4g4fh.js","assets/chunk-FWX5IMBZ-DrnrdrSu.js","assets/chunk-VAUOI2AC-CWYjg8zE.js","assets/chunk-ZIRB5QZD-Dc1s5bLM.js"])))=>i.map(i=>d[i]);
2
+ import{d as e,p as t,t as n,u as r}from"./lit-vendor-DvaQX_UQ.js";import{y as i}from"./pi-web-ui-DV5jKjSg.js";import{J as a}from"./pi-ai-Cr2ee4a0.js";import{$t as o,At as s,Dt as c,Et as l,Gt as u,Jt as d,Kt as f,Ot as p,Pn as m,Qt as h,Xt as g,Yt as _,Zt as v,d as y,en as b,in as x,nn as S,ot as C,qt as w,r as T,rn as ee,tn as E}from"./index-DFASc15l.js";function D(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function O(e,t,n){if(!e||e.isError||t||!D(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 te=/^[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,ne=new Set([`image/png`,`image/jpeg`,`image/webp`,`image/gif`]);function re(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function k(e){if(!re(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=>!re(e)||typeof e.assetId!=`string`||!te.test(e.assetId)||typeof e.mimeType!=`string`||!ne.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 ie(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 A=`<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>`,j=`<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>`,M=`<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>`,N=`<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>`,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"><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>`,ae=`<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>`,oe=`<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>`,se=`<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>`,ce=`<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>`,le=`<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>`,ue=`<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>`,de=`<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>`,fe=`<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>`,pe=`<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>`,me=`<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>`,he=`<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>`,ge=`<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 m(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 ve(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=`
3
+ <span class="quickforge-agent-access-check-slot">${r?me:``}</span>
4
+ <span class="quickforge-agent-access-option-icon-wrap">${e===`full-access`?pe:fe}</span>
5
+ <span class="quickforge-agent-access-item-label"></span>
6
+ `,i.querySelector(`.quickforge-agent-access-item-label`).textContent=_e(e),i.onpointerdown=t=>{t.preventDefault(),t.stopPropagation(),n(e)},i}function ye(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`,m(`agentAccessMenuLabel`));let s=e=>{I(t),e!==r&&i(e)};o.append(ve(`default`,r,s),ve(`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 be(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=m(r===`full-access`?`agentAccessFullTitle`:`agentAccessDefaultTitle`),c=`${r===`full-access`?pe:fe}<span class="quickforge-agent-access-label"></span>${he}`,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`:``}`,u=n.querySelector(`.quickforge-agent-access-inline`),f=e=>{d(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(),ye({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(),ye({panel:t,trigger:e,agentAccessMode:r,onAccessModeChange:i,dismissComposerMenus:a}))}};if(u)f(u);else{let e=document.createElement(`button`);e.type=`button`,f(e),n.append(e)}let p=n.querySelector(`.quickforge-agent-access-inline`),h=n.querySelector(`.quickforge-plan-inline`);p&&h&&p.nextSibling!==h&&n.insertBefore(h,p.nextSibling)}function xe(e){return typeof e.group==`string`&&Array.isArray(e.options)}function Se(e){let t=e?.configOptions;return Array.isArray(t)&&t.length>0}function Ce(e){return e.description?`${e.name} — ${e.description}`:e.name}function we(e){if(!Array.isArray(e))return{groups:[],flat:[]};let t=[],n=[];for(let r of e)r&&xe(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 Te(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=`
7
+ <span class="quickforge-opencode-config-check-slot">${r?me:``}</span>
8
+ <span class="quickforge-opencode-config-item-label"></span>
9
+ `,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 Ee(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=`
10
+ <span class="quickforge-opencode-config-check-slot">${i?me:``}</span>
11
+ <span class="quickforge-opencode-config-item-label"></span>
12
+ `,a.querySelector(`.quickforge-opencode-config-item-label`).textContent=Ce(e),a.onpointerdown=t=>{t.preventDefault(),t.stopPropagation(),!n&&!i&&r(e.value)},a}function De(e){let t=document.createElement(`div`);return t.className=`quickforge-opencode-config-section-title`,t.textContent=e,t}function Oe(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(!Se(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`,m(`openCodeConfigMenuLabel`));let c=Array.isArray(r?.configOptions)?r.configOptions:[];if(c.length>0){s.append(De(m(`openCodeConfigOptionsTitle`)));for(let e of c){if(e.type===`boolean`){s.append(Te(e,i,t=>a(e.id,t)));continue}if(e.type===`select`){let{groups:t,flat:n}=we(e.options),r=typeof e.currentValue==`string`?e.currentValue:``,o=De(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(Ee(t,r,i,t=>a(e.id,t)))}else for(let t of n)s.append(Ee(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 ke(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`),!Se(r())){n.querySelector(`.quickforge-opencode-config-inline`)?.remove(),L(t);return}let c=e=>{Oe({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=m(t?`openCodeConfigDisabledWhileStreaming`:`openCodeConfigMenuLabel`);d(e,`${ge}<span class="quickforge-opencode-config-label"></span>${he}`),e.querySelector(`.quickforge-opencode-config-label`).textContent=m(`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))}},u=n.querySelector(`.quickforge-opencode-config-inline`);if(u)l(u);else{let e=document.createElement(`button`);e.type=`button`,l(e),n.append(e)}}function Ae(e){let t=e?.modes;return!!(t&&Array.isArray(t.availableModes)&&t.availableModes.length>0)}function je(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 Me(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 Ne(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(!Ae(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`,m(`openCodeModeMenuLabel`));let c=r?.modes?.currentModeId??``,l=document.createElement(`div`);l.className=`quickforge-model-menu-header`,l.textContent=m(`openCodeConfigModesTitle`),s.append(l);let u=e=>{R(t),e!==c&&a(e)};for(let e of r?.modes?.availableModes??[])s.append(Me(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`},f=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=f,s.addEventListener(`pointerdown`,e=>e.stopPropagation()),document.addEventListener(`pointerdown`,f,!0),document.addEventListener(`keydown`,f,!0),window.addEventListener(`resize`,f,!0),window.addEventListener(`scroll`,f,!0),document.body.append(s),d(),n.setAttribute(`aria-expanded`,`true`)}function Pe(e){let{panel:t,rightControls:n,getAcpSession:r,isStreaming:i,onModeChange:a,dismissComposerMenus:o}=e;if(!Ae(r())){t.querySelector(`.quickforge-opencode-mode-inline`)?.remove(),R(t);return}let s=e=>{Ne({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(),u=m(l?`openCodeModeDisabledWhileStreaming`:`openCodeModeMenuLabel`);d(c,`<span class="quickforge-opencode-mode-label"></span>`),c.querySelector(`.quickforge-opencode-mode-label`).textContent=je(r()),c.title=u,c.setAttribute(`aria-label`,u),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 f=n.querySelector(`button:last-child`);if(!f)n.append(c);else if(f!==c)n.insertBefore(c,f);else{let e=Array.from(n.querySelectorAll(`button`)).filter(e=>e!==c).pop();e?n.insertBefore(c,e.nextSibling):n.prepend(c)}}var Fe={plugin:F,document:le,spreadsheet:ue,presentation:de,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 Ie(e,t){e.querySelectorAll(`.quickforge-native-attachment-hidden`).forEach(e=>{t.contains(e)||e.classList.remove(`quickforge-native-attachment-hidden`)})}function Le(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 Re(e,t){e.querySelectorAll(`input[type="file"]`).forEach(e=>{e.disabled=!0}),t&&(Ie(e,t),Le(t)?.classList.add(`quickforge-native-attachment-hidden`))}function ze(e,t){let n=e.querySelector(`input[type="file"]`);if(n){n.click();return}Le(t)?.click()}function Be({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=`
13
+ <span class="quickforge-plus-popover-item-icon">${t}</span>
14
+ <span class="quickforge-plus-popover-item-main">
15
+ <span class="quickforge-plus-popover-item-label"></span>
16
+ ${r?`<span class="quickforge-plus-popover-item-description"></span>`:``}
17
+ </span>
18
+ `,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 Ve(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=m(t===`plugins`?`composerAddPlugins`:`composerAddMenu`),c.append(l),t===`main`)e.attachmentsEnabled&&c.append(Be({icon:ce,label:m(`composerAddAttachment`),onSelect:()=>{z(n),ze(r,i)}})),e.pluginsEnabled&&e.availablePluginRows().length>0&&c.append(Be({icon:F,label:m(`composerAddPlugins`),onSelect:()=>Ve(e,`plugins`)}));else{let t=Be({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:m(`composerAddBack`),onSelect:()=>Ve(e,`main`)});c.append(t);for(let t of e.availablePluginRows())c.append(Be({icon:Fe[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 He(e){let{panel:t,editor:n,leftControls:r}=e;Ie(n,r),Le(r)?.classList.add(`quickforge-native-attachment-hidden`);let i=r.querySelector(`.quickforge-plus-inline`),a=n=>{n.type=`button`,d(n,se),n.title=m(`composerAddMenu`),n.setAttribute(`aria-label`,m(`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):Ve(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 Ue(e){switch(e){case`low`:return m(`thinkingLow`);case`medium`:return m(`thinkingMedium`);case`high`:return m(`thinkingHigh`);case`xhigh`:return m(`thinkingXHigh`);default:return m(`thinkingOff`)}}function We(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=`· ${Ue(n?.thinkingLevel)}`:delete i.dataset.quickforgeThinkingLevel)}function Ge(e){let t=e?.querySelector(`textarea`);t?.__quickforgePlanModeHandler&&(t.removeEventListener(`keydown`,t.__quickforgePlanModeHandler,!0),t.__quickforgePlanModeHandler=void 0),e&&delete e.dataset.quickforgePlanMode}function Ke(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 qe(e){let{panel:t,leftControls:n,planMode:r,onTogglePlanMode:i}=e,a=m(`planModeEnabledTitle`),o=`${ae}${oe}<span>${m(`planModeLabel`)}</span>`,s=e=>{e.preventDefault(),e.stopPropagation(),i()},c=e=>{e.key!==`Enter`&&e.key!==` `||s(e)},l=t.querySelector(`.quickforge-plan-inline`),u=e=>{d(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)u(l);else{let e=document.createElement(`button`);e.type=`button`,u(e);let t=n.querySelector(`.quickforge-agent-access-inline`);t?n.insertBefore(e,t.nextSibling):n.append(e)}}function Je(e){let{rightControls:t,isStreaming:n,abort:r,removeCommandSuggestions:i}=e,a=t.querySelector(`button:last-child`);if(!a)return;let o=()=>{a.__quickforgeStopHandler&&=(a.removeEventListener(`pointerdown`,a.__quickforgeStopHandler,!0),a.removeEventListener(`click`,a.__quickforgeStopHandler,!0),void 0)};if(n())a.disabled=!1,a.classList.remove(`quickforge-send-button`),a.classList.add(`quickforge-stop-button`),a.title=`Stop`,a.setAttribute(`aria-label`,`Stop`),delete a.dataset.quickforgeSendIcon,_(a,`<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>`),a.__quickforgeStopHandler||(a.__quickforgeStopHandler=e=>{e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),i(),r()},a.addEventListener(`pointerdown`,a.__quickforgeStopHandler,!0),a.addEventListener(`click`,a.__quickforgeStopHandler,!0));else if(o(),a.classList.remove(`quickforge-stop-button`),a.classList.add(`quickforge-send-button`),a.dataset.quickforgeSendIcon!==`arrow-up`){a.dataset.quickforgeSendIcon=`arrow-up`,_(a,`<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=a.querySelector(`svg`)?.parentElement;e&&e!==a&&e.style.transform&&(e.style.transform=``)}}function Ye(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??``);T({attachments:c},n,t)&&(l?.(n),i(),o(),d(n,c?t:[]))};t.__quickforgePlanWrappedOnSend=e,t.onSend=e}a(),s()}function Xe(e){let t=e.querySelector(`message-editor`),n=t?.querySelector(`textarea`);return{text:t?.value??n?.value??``,attachments:t?.attachments?[...t.attachments]:[]}}function Ze(e,t,n){let r=Xe(e);f(r)?t.set(n,r):t.delete(n)}function Qe(e,t,n,r){if(!f(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 $e(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(!Qe(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 et(e){return e.split(`
19
+ `).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(`
20
+ `)}function tt(e,t){let n=e.split(`
21
+ `),r=t.split(`
22
+ `),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(`
23
+ `)}function nt(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 rt=`.quickforge-approval-card`,it={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 at(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 ot(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 st(e,t=m){let n=it[e];if(n)return t(n);let r=at(e);if(r)return`MCP · ${r.serverName} · ${r.toolName}`;let i=ot(e);return i?`Plugin · ${i.pluginName} · ${i.toolName}`:e}function ct(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 lt(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ut({toolName:e,args:t,source:n,tone:r=`warning`,copy:i,disabled:a=!1,disabledReason:o=``,translate:s=m}){let c=at(e),l=ot(e),u=st(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 f=n?.type===`subagent`?n.label||n.subagent||`Subagent`:``,p=[...c?[`MCP`]:[],...l?[`Plugin`]:[],...f?[f]:[]],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:p,criticalParameters:d,keySummary:ct(e,t),details:lt(t),disabled:a,disabledReason:a?o||s(`toolApprovalDisabled`):``,integration:c?`mcp`:l?`plugin`:null}}function dt(e){return e.role===`user`||e.role===`user-with-attachments`||e.role===`assistant`}function ft(e){return e.role===`user`||e.role===`user-with-attachments`}function pt(e,t,n){if(n<=0||t.length===0)return null;let r=[];for(let e=0;e<t.length;e++)ft(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(dt(t[e])){if(e===a)return s[c]??null;c+=1}return null}function mt(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 ht(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">${tt(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">${et(t.content.slice(0,800))}${e?`\n${B(m(`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 gt(e,t,n,r,i){let{panel:a,onApprove:o,onReject:s}=e,c=ut({toolName:t,args:r,source:i,tone:e.tone,copy:e.copy,disabled:e.disabled,disabledReason:e.disabledReason}),l=nt(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=`
24
+ <div class="quickforge-approval-status-row">
25
+ <div class="quickforge-approval-status">${mt(c.tone)}<span>${B(c.status)}</span></div>
26
+ ${c.badges.length?`<div class="quickforge-approval-badges">${c.badges.map(e=>`<span class="quickforge-approval-badge">${B(e)}</span>`).join(``)}</div>`:``}
27
+ </div>
28
+ <h3 class="quickforge-approval-title">${B(c.title)}</h3>
29
+ <p class="quickforge-approval-risk">${B(c.risk)}</p>
30
+ ${ht(t,r,c)}
31
+ `,u.append(d);let f=document.createElement(`div`);f.className=`quickforge-approval-details`;let p=document.createElement(`button`);p.type=`button`,p.className=`quickforge-approval-details-toggle`,p.setAttribute(`aria-expanded`,`false`),p.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=m(`toolApprovalViewDetails`),p.append(h);let g=document.createElement(`div`);g.className=`quickforge-approval-details-content`,g.innerHTML=`<pre class="quickforge-approval-code">${B(c.details)}</pre>`,p.addEventListener(`click`,e=>{e.stopPropagation();let t=f.classList.toggle(`quickforge-approval-details--open`);p.setAttribute(`aria-expanded`,String(t)),h.textContent=m(t?`toolApprovalHideDetails`:`toolApprovalViewDetails`)}),f.append(p,g),d.append(f);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=m(`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:m(`toolApprovalFailed`),_.hidden=!1,t.textContent=m(`toolApprovalRetry`);let n=t===y?b:y;n.textContent=t===y?c.rejectLabel:c.approveLabel,x(!1),t.textContent=m(`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?pt(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(rt).forEach(e=>e.remove())}function vt(e,t,n){let r=m(`copied`),i=Number(e.dataset.quickforgeCopyFeedbackTimer);i&&window.clearTimeout(i),_(e,j),e.title=r,e.setAttribute(`aria-label`,r),e.style.color=`rgb(5 150 105)`;let a=window.setTimeout(()=>{_(e,n),e.title=t,e.setAttribute(`aria-label`,t),e.style.color=``,delete e.dataset.quickforgeCopyFeedbackTimer},1200);e.dataset.quickforgeCopyFeedbackTimer=String(a)}function yt(e){return e.role===`user`||e.role===`user-with-attachments`||e.role===`assistant`}function bt(e){return e.role===`user`||e.role===`user-with-attachments`}function xt(e,t){for(let n=Math.min(t,e.length-1);n>=0;n--)if(bt(e[n]))return n;return 0}function St(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 Ct(e,t,n,r){let i=St(e),a=0;for(let e=0;e<t.length;e++)if(yt(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 wt(e){let t=e,n=t?.role===`assistant`?l(t):p(t);return(n.match(/<compact_summary>\s*([\s\S]*?)\s*<\/compact_summary>/i)?.[1]??n).trim()}function Tt(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 s=()=>{a&&r&&(a.textContent=r.open?m(`contextCompactedHideSummary`):m(`contextCompactedViewSummary`))};i&&!i.dataset.quickforgeCompactionBound&&(i.dataset.quickforgeCompactionBound=`true`,i.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),r&&(r.open=!r.open,s())})),r&&!r.dataset.quickforgeCompactionBound&&(r.dataset.quickforgeCompactionBound=`true`,r.addEventListener(`toggle`,s)),s(),o&&(o.onclick=async e=>{e.preventDefault(),e.stopPropagation(),await c(t),vt(o,m(`contextCompactedCopySummary`),A)})}function Et(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=xt(o,Math.max(0,c-i)),d=a.summaryMessage?wt(a.summaryMessage):``,f=s?.querySelector(`.quickforge-context-compaction-details`)?.open??!1,p=s??document.createElement(`div`),h=p.dataset.summaryText??``,g=p.dataset.hasSummary===`true`,_=!s||h!==d||g!==!!d;p.className=`quickforge-context-compaction-notice`,p.dataset.tailStart=String(u),p.dataset.summaryText=d,p.dataset.hasSummary=String(!!d),p.title=m(`contextCompactedTooltip`),p.setAttribute(`aria-label`,m(`contextCompactedTooltip`)),_&&(p.innerHTML=d?`
32
+ <details class="quickforge-context-compaction-details">
33
+ <summary class="quickforge-context-compaction-summary">
34
+ <div class="quickforge-context-compaction-line"></div>
35
+ <div class="quickforge-context-compaction-pill">
36
+ <span class="quickforge-context-compaction-dot" aria-hidden="true"></span>
37
+ <span><strong>${B(m(`contextCompactedLabel`))}</strong> · ${B(m(`contextCompactedTimelineLabel`))} · <span class="quickforge-context-compaction-toggle-label"></span></span>
38
+ </div>
39
+ <div class="quickforge-context-compaction-line"></div>
40
+ </summary>
41
+ <div class="quickforge-context-compaction-card">
42
+ <div class="quickforge-context-compaction-card-header">
43
+ <span>${B(m(`contextCompactedSummaryTitle`))}</span>
44
+ <button type="button" class="quickforge-context-compaction-copy" data-quickforge-action="copy-compact-summary">${A}<span>${B(m(`contextCompactedCopySummary`))}</span></button>
45
+ </div>
46
+ <pre class="quickforge-context-compaction-text">${B(d)}</pre>
47
+ </div>
48
+ </details>
49
+ `:`
50
+ <div class="quickforge-context-compaction-summary" role="separator">
51
+ <div class="quickforge-context-compaction-line"></div>
52
+ <div class="quickforge-context-compaction-pill">
53
+ <span class="quickforge-context-compaction-dot" aria-hidden="true"></span>
54
+ <span><strong>${B(m(`contextCompactedLabel`))}</strong> · ${B(m(`contextCompactedTimelineLabel`))}</span>
55
+ </div>
56
+ <div class="quickforge-context-compaction-line"></div>
57
+ </div>
58
+ `),d&&Tt(p,d,f),Ct(t,o,u,p)}function Dt(e){return String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`)}function Ot(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 kt(e){let t=[m(`openCodeUsageTokensTitle`,{used:Ot(e.used)||`0`,size:Ot(e.size)||`0`})];return e.cost&&Number.isFinite(e.cost.amount)&&t.push(m(`openCodeUsageCostTitle`,{amount:e.cost.amount,currency:e.cost.currency})),t.join(`
59
+ `)}function At(e){let t=`${Ot(e.used)} / ${Ot(e.size)} tokens`;return e.cost&&Number.isFinite(e.cost.amount)?`${t} · ${e.cost.amount} ${e.cost.currency}`:t}function jt({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=kt(n),o=At(n);if(r){if(r.dataset.quickforgeOpenCodeUsage===o)return;r.dataset.quickforgeOpenCodeUsage=o,r.innerHTML=`<span class="quickforge-opencode-usage-text">${Dt(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">${Dt(o)}</span>`,i.prepend(s)},cleanup:()=>{}}}var V=`.quickforge-process-group`,H=`.quickforge-process-body`,Mt=`.quickforge-process-tools`,Nt=`.quickforge-process-tools-body`,Pt=`.quickforge-process-stage`,Ft=`.quickforge-process-stage-body`,It=`thinking-block, tool-message`,U=`thinking-block, tool-message, markdown-block`,Lt=`data-quickforge-process-final-summary`,W=`data-quickforge-process-folded`,Rt=500,zt=new Set([`edit_file`,`write_file`]),Bt=new WeakMap,Vt=new WeakMap,G=new WeakMap,Ht=1;function Ut(e){let t=Bt.get(e);return t||(t=new Map,Bt.set(e,t)),t}function Wt(e,t,n){let r=Ut(e);if(r.set(t,n),r.size<=Rt)return;let i=r.keys().next().value;i&&r.delete(i)}function Gt(e){return e.findIndex(e=>e.connected)}function Kt(e){let t=Vt.get(e);return t===void 0&&(t=Ht++,Vt.set(e,t)),t}function qt(e,t,n){let r=Zt(t[0]?.message?.timestamp);return`scope:${Kt(e)}:turn:${n}:started:${r??`unknown`}`}function Jt(e,t,n,r){return e===void 0?t?n:r:e}function Yt(e,t,n,r=!1){let i=t.dataset.quickforgeProcessKey;t.dataset.quickforgeProcessKey=n;let a=Ut(e).get(n),o=Jt(a,i===n,t.dataset.expanded===`true`,r);t.dataset.expanded=String(o),a===void 0&&r&&Wt(e,n,o)}function K(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function Xt(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function Zt(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 Qt(e){if(!K(e))return;let t=e.details;if(!K(t))return;let n=t.quickforgeTiming;if(K(n))return{startedAt:Xt(n.startedAt),finishedAt:Xt(n.finishedAt),durationMs:Xt(n.durationMs)}}function $t(e){let t=Qt(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 en(e){return Qt(e.result)?.startedAt}function tn(e){if(K(e.details))return Zt(e.details.quickforgeProcessFinishedAt)}function nn(e){let t=e.map(tn).filter(e=>e!==void 0);return t.length>0?Math.max(...t):void 0}function rn(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?m(`processDurationMinutesSeconds`,{minutes:n,seconds:r}):m(`processDurationSeconds`,{seconds:r})}function q(e){return e.tool?.name||e.toolCall?.name||``}function an(e){return e!==`run_subagent`&&e!==`generate_image`}function on(e){return e.tagName.toLowerCase()===`tool-message`&&an(q(e))}function sn(e){return e.aborted?!0:K(e.result)&&e.result.isError===!0}function cn(e){if(!zt.has(q(e)))return;let t=e.toolCall?.arguments?.path;if(typeof t==`string`&&t.trim())return t.trim();let n=K(e.result)?e.result.details:void 0,r=K(n)?n.path:void 0;return typeof r==`string`&&r.trim()?r.trim():void 0}function ln(e){let t=Array.from(e),n=t.map(cn),r=new Set(n.filter(e=>!!e)),i=t.length>0&&t.every(e=>zt.has(q(e))),a=n.every(e=>e!==void 0);return{count:t.length,errorCount:t.filter(sn).length,commandsOnly:t.length>0&&t.every(e=>q(e)===`run_command`),...i&&a?{editedFileCount:r.size}:{}}}function un(e){let t=Array.from(e),n=t.map(cn),r=new Set(n.filter(e=>!!e));return{toolCallCount:t.length,commandCount:t.filter(e=>q(e)===`run_command`).length,editedFileCount:r.size}}function dn(e,t){let n=[];e.toolCallCount>0&&n.push(m(`processGroupToolsCalled`,{count:e.toolCallCount})),e.commandCount>0&&n.push(m(`processGroupCommandsRan`,{count:e.commandCount})),e.editedFileCount>0&&n.push(m(`processGroupFilesEdited`,{count:e.editedFileCount}));let r=m(t?`processExecuting`:`processExecuted`);return n.length>0?`${r} ${n.join(` · `)}`:r}function fn(e){let t=m(e.commandsOnly?`processCommandsRan`:e.editedFileCount===void 0?`processToolsCalled`:`processFilesEdited`,{count:e.editedFileCount??e.count});return e.errorCount>0?`${t} · ${m(`processToolsFailedCount`,{count:e.errorCount})}`:t}function pn(e,t){return[e,t].filter(Boolean).join(` · `)}function mn(e,t,n){let r=Jn(t).map(({node:e})=>e).filter(e=>e.tagName.toLowerCase()===`tool-message`),i=[...e.map(e=>Zt(e.message?.timestamp)),...r.map(en)].filter(e=>e!==void 0),a=[nn(e.map(e=>e.message??{})),...r.map($t)].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=Zt(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?rn(Math.max(0,s-o)):``,l=[...e].reverse().find(e=>e.message?.stopReason)?.message?.stopReason;return pn(m(l===`error`?`processFailed`:l===`aborted`?`processAborted`:n?`processExecuting`:`processExecuted`),c)}function hn(e){return e.closest(`message-list`)}function gn(e,t){return e.closest(`message-list`)===hn(t)&&Fn(e)}function _n(e){return Array.from(e.querySelectorAll(V)).filter(t=>t.closest(`assistant-message`)===e)}function vn(e){let t=e.querySelector(`${U}, ${V}`);return t?.closest(`.px-4.flex.flex-col`)??t?.parentElement??null}function yn(){let e=document.createElement(`div`);return e.className=`quickforge-process-step`,e}function bn(){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 xn(){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 Sn(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 Cn(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}=Sn(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=m(`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=bn()),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 wn(){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=`
60
+ <span class="quickforge-process-tools-icon" aria-hidden="true">
61
+ ${xn()}
62
+ </span>
63
+ <span class="quickforge-process-tools-label"></span>
64
+ <span class="quickforge-process-tools-chevron" aria-hidden="true">
65
+ <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>
66
+ </span>
67
+ `;let n=document.createElement(`div`);return n.className=`quickforge-process-tools-body`,e.append(t,n),e}function Tn(){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=`
68
+ <span class="quickforge-process-stage-label"></span>
69
+ <span class="quickforge-process-stage-chevron" aria-hidden="true">
70
+ <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>
71
+ </span>
72
+ `;let n=document.createElement(`div`);return n.className=`quickforge-process-stage-body`,e.append(t,n),e}function En(){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=`
73
+ <span class="quickforge-process-label"></span>
74
+ <span class="quickforge-process-chevron" aria-hidden="true">
75
+ <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>
76
+ </span>
77
+ `;let n=document.createElement(`div`);return n.className=`quickforge-process-body`,e.append(t,n),e}function Dn(){return!1}function On(e,t){return`${e}:stage:${t}`}function kn(e,t,n,r){let i=Array.from(n.querySelectorAll(Pt)).filter(e=>e.closest(V)===n);i.forEach((n,a)=>{let o=n.querySelector(`:scope > ${Ft}`),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=On(t,a),u=`quickforge-${l.replace(/[^a-z0-9_-]+/gi,`-`)}`,d=n.dataset.quickforgeProcessKey;n.dataset.quickforgeProcessKey=l;let f=Jt(Ut(e).get(l),d===l,n.dataset.expanded===`true`,Dn());n.dataset.expanded=String(f);let p=r&&a===i.length-1;c.textContent=dn(un(o.querySelectorAll(`tool-message`)),p),o.id=u,s.setAttribute(`aria-controls`,u),s.setAttribute(`aria-expanded`,String(f)),s.setAttribute(`aria-label`,`${c.textContent} · ${m(f?`collapseProcess`:`expandProcess`)}`),s.onclick=t=>{t.preventDefault(),t.stopPropagation();let r=n.dataset.expanded!==`true`;n.dataset.expanded=String(r),Wt(e,l,r),s.setAttribute(`aria-expanded`,String(r)),s.setAttribute(`aria-label`,`${c.textContent} · ${m(r?`collapseProcess`:`expandProcess`)}`)}})}function An(e,t,n){return t?`${e}:tools:${t}`:`${e}:tools:${n}`}function jn(e,t,n){return An(e,Array.from(t.querySelectorAll(`tool-message`))[0]?.toolCall?.id,n)}function Mn(e,t,n){n.querySelectorAll(Mt).forEach((r,i)=>{if(r.closest(V)!==n)return;let a=r.querySelector(`:scope > ${Nt}`),o=r.querySelector(`.quickforge-process-tools-summary`),c=r.querySelector(`.quickforge-process-tools-label`);if(!a||!o||!c)return;let l=ln(a.querySelectorAll(`:scope > tool-message`));if(r.hidden=l.count===0,l.count===0)return;let u=jn(t,r,i),d=`quickforge-${u.replace(/[^a-z0-9_-]+/gi,`-`)}`;a.id=d,o.setAttribute(`aria-controls`,d);let f=s().toolDisplayMode===`detailed`,p=f?`detailed`:`compact`,h=r.dataset.quickforgeProcessKey,g=r.dataset.quickforgeToolDisplayMode;r.dataset.quickforgeProcessKey=u,r.dataset.quickforgeToolDisplayMode=p;let _=Jt(Ut(e).get(u),h===u&&g===p,r.dataset.expanded===`true`,f);r.dataset.expanded=String(_),c.textContent=fn(l),o.setAttribute(`aria-expanded`,String(_)),o.setAttribute(`aria-label`,m(_?`collapseProcessTools`:`expandProcessTools`)),o.onclick=t=>{t.preventDefault(),t.stopPropagation();let n=r.dataset.expanded===`false`;r.dataset.expanded=String(n),Wt(e,u,n),o.setAttribute(`aria-expanded`,String(n)),o.setAttribute(`aria-label`,m(n?`collapseProcessTools`:`expandProcessTools`))}})}function Nn(e,t,n={}){return t===`pointerdown`?e&&(n.button??0)===0&&n.isPrimary!==!1:!e||(n.detail??0)===0}function Pn(e,t,n,r,i){Yt(e,r,t,i),r.dataset.streaming=String(i);let a=r.querySelector(`:scope > ${H}`),o=r.querySelector(`.quickforge-process-summary`),s=r.querySelector(`.quickforge-process-label`);if(!a||!o||!s)return;let c=mn(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} · ${m(l?`collapseProcess`:`expandProcess`)}`);let d=()=>{let n=r.dataset.expanded!==`true`;r.dataset.expanded=String(n),Wt(e,t,n),o.setAttribute(`aria-expanded`,String(n)),o.setAttribute(`aria-label`,`${c} · ${m(n?`collapseProcess`:`expandProcess`)}`)};o.onpointerdown=e=>{Nn(i,`pointerdown`,e)&&(e.stopPropagation(),d())},o.onclick=e=>{e.preventDefault(),e.stopPropagation(),Nn(i,`click`,e)&&d()},kn(e,t,r,i),Mn(e,t,r),Cn(r)}function J(e,t,n){if(n){e.hasAttribute(t)||e.setAttribute(t,`true`);return}e.hasAttribute(t)&&e.removeAttribute(t)}function Fn(e){let t=e.closest(`message-list`),n=e.parentElement?.closest(U);return!n||n.closest(`message-list`)!==t}function In(e){let t=hn(e);return Array.from(e.querySelectorAll(`markdown-block`)).filter(e=>{if(e.closest(`message-list`)!==t)return!1;let n=e.parentElement?.closest(It);return!n||n.closest(`message-list`)!==t})}function Ln(e){let t=e.filter(e=>(e.textContent??``).trim().length>0);return t[t.length-1]??e[e.length-1]??null}function Rn(e,t){return Array.from(e.querySelectorAll(U)).filter(n=>n!==t&&gn(n,e)).some(e=>!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING))}function zn(e,t){let n=In(e);if(t){let t=Ln(n);return t&&!Rn(e,t)?t:null}return Ln(n.filter(e=>e.hasAttribute(Lt)))||(Ln(n.filter(e=>!e.closest(H)))??Ln(n))}function Bn(e,t){In(e).forEach(e=>{J(e,Lt,e===t),e===t&&J(e,W,!1)})}function Vn(e){return e.length>1||e.some(e=>Array.from(e.querySelectorAll(It)).some(t=>t.closest(`message-list`)===hn(e)))}function Hn(e){let t=new Map;return e.forEach(e=>{_n(e).forEach(e=>{G.get(e)?.forEach(e=>t.set(e.node,e))})}),e.flatMap(e=>Array.from(e.querySelectorAll(U)).filter(t=>gn(t,e)).map(n=>t.get(n)??{node:n,sourceAssistant:e,sourceParent:n.parentElement,sourceNextSibling:n.nextSibling}))}function Un(e,t,n,r){return e.filter(e=>!t(e)&&(!n(e)||r))}function Wn(e,t,n){return Un(Hn(e),e=>e.node===t,e=>e.node.tagName.toLowerCase()===`markdown-block`,n)}function Gn(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 Kn(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 qn(e){return!!e.querySelector(`${H} ${U}`)}function Jn(e){return G.get(e)??Array.from(e.querySelectorAll(`${H} ${U}`)).filter(t=>t.closest(V)===e).map(t=>({node:t,sourceAssistant:e.closest(`assistant-message`)??e.parentElement,sourceParent:e.parentElement,sourceNextSibling:e}))}function Yn(e,t){let{node:n,sourceParent:r,sourceNextSibling:i}=e;if(J(n,W,!1),J(n,Lt,!1),r?.isConnected){i?.parentNode===r?r.insertBefore(n,i):r.append(n);return}let a=vn(e.sourceAssistant);a?a.insertBefore(n,a.querySelector(V)):t.parentElement?.insertBefore(n,t)}function Xn(e,t){return!e||t}function Zn(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(It)).filter(t=>t!==e.node&&!t.closest(V)).filter(t=>gn(t,e.sourceAssistant)).some(e=>e.tagName.toLowerCase()===t?t!==`tool-message`||!n?!0:e.toolCall?.id===n:!1)}function Qn(e){J(e.node,W,!1),J(e.node,Lt,!1),e.node.remove()}function $n(e,t=!1){let n=new Set(e);for(let r of e)r.classList.remove(`quickforge-process-source-empty`),_n(r).forEach(e=>{Jn(e).slice().reverse().forEach(r=>{t&&Xn(n.has(r.sourceAssistant),Zn(r))?Qn(r):Yn(r,e)}),G.delete(e),e.remove()})}function er(e){e.querySelectorAll(`${V}[data-streaming="true"]`).forEach(e=>{let t=Jn(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=>Yn(t,e)),G.delete(e),e.remove()})}function tr(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 nr(e,t){let n=yn(),r=Kn(t,e=>on(e.node));for(let e of r){if(e.kind===`tools`){let t=wn(),r=t.querySelector(Nt);if(!r)continue;e.items.forEach(({node:e})=>{J(e,W,!0),r.append(e)}),n.append(t);continue}e.items.forEach(({node:e})=>{J(e,W,!0),n.append(e)})}e.append(n)}function rr(e,t){let n=e.querySelector(`:scope > ${H}`);if(!n)return!1;let r=Gn(t,e=>e.node.tagName.toLowerCase()===`markdown-block`);for(let e of r){if(e.kind===`detail`){nr(n,e.items);continue}let t=Tn(),r=t.querySelector(Ft);r&&(nr(r,e.items),n.append(t))}return G.set(e,t),qn(e)}function ir(e,t){let n=Gt(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?vn(i):null;if(!r?.sourceParent?.isConnected&&!a)return null;let o=En();return r?.sourceParent?.isConnected?r.sourceParent.insertBefore(o,r.node):a&&a.append(o),rr(o,e)?o:null}function ar(e){let t=e?.stopReason;return(t===`error`||t===`aborted`)&&typeof e?.errorMessage==`string`&&e.errorMessage.trim().length>0}function or(e){for(let t of e){let e=ar(t.message)||!!Array.from(t.querySelectorAll(`markdown-block, thinking-block, tool-message, .quickforge-process-group, .quickforge-approval-card`)).some(e=>e.closest(`message-list`)===hn(t));t.classList.toggle(`quickforge-process-source-empty`,!e)}}function sr(e){let t=new Map(e.map((e,t)=>[e,t])),n=Hn(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??q(a)}`});return`${e.length}|${n.join(`|`)}`}function cr(e,t,n,r,i=!0){return!n||!r||!i?`full`:e?`update`:t?`skip`:`full`}function lr(e,t,n){return!e&&t&&n}function ur(e,t,n,r,i){if(t.length===0)return;let a=qt(e,t,r),o=t[t.length-1],s=t.flatMap(_n),c=s.length===1?s[0]:void 0,l=sr(t),u=Vn(t),d=Wn(t,u?zn(o,n):null,u),f=!c||tr(G.get(c),d),p=cr(n,i,!!c,c?.dataset.quickforgeProcessFp===l,f);if(p===`skip`)return;if(p===`update`&&c){Pn(e,a,t,c,!0);return}if(d.length===0&&lr(!1,s.length>0,e.dataset.quickforgeProcessHandoff!==void 0))return;$n(t,!0);let m=Vn(t),h=m?zn(o,n):null;m&&Bn(o,h);let g=Wn(t,h,m);if(g.length===0)return;let _=ir(g,t);_&&(_.dataset.quickforgeProcessFp=l,Pn(e,a,t,_,n),or(t))}function dr(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;ur(e,t,o,a,n&&!o)})}var fr=/<\s*(script|foreignObject|iframe|object|embed)\b|\son[a-z]+\s*=|(?:javascript|vbscript|data\s*:\s*text\/html)\s*:/i,pr=/\b(?:href|xlink:href|src)\s*=\s*(["'])\s*(?:https?:)?\/\//i,mr=/url\(\s*(["']?)\s*(?:https?:)?\/\//i,hr=/@import\s+(?:url\(\s*)?["']?\s*(?:https?:)?\/\//i,gr=null,_r=0;function vr(e){return String(e??``).trim().toLowerCase()===`mermaid`}function yr(e){let t=e.trim();return/^<svg[\s>]/i.test(t)&&/<\/svg>\s*$/i.test(t)&&!fr.test(t)&&!pr.test(t)&&!mr.test(t)&&!hr.test(t)}function br(e){if(!yr(e))throw Error(`Unsafe Mermaid SVG output`);return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}async function xr(){return gr??=a(async()=>{let{default:e}=await import(`./mermaid.core-DWpShXCs.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)),gr}async function Sr(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 xr(),r=`quickforge-mermaid-${Date.now().toString(36)}-${++_r}`,{svg:i}=await n.render(r,t);if(!yr(i))throw Error(`Unsafe Mermaid SVG output`);return i}var Cr=new Set([`bash`,`sh`,`shell`,`zsh`,`fish`,`cmd`,`bat`,`batch`,`powershell`,`ps1`,`terminal`,`console`]),wr=/\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,Tr=/<\s*(script|foreignObject)\b|\son[a-z]+\s*=|javascript\s*:/i;function Er(e,t,n){let r=m(`copied`),i=Number(e.dataset.quickforgeCopyFeedbackTimer);i&&window.clearTimeout(i),_(e,j),e.title=r,e.setAttribute(`aria-label`,r),e.style.color=`rgb(5 150 105)`;let a=window.setTimeout(()=>{_(e,n),e.title=t,e.setAttribute(`aria-label`,t),e.style.color=``,delete e.dataset.quickforgeCopyFeedbackTimer},1200);e.dataset.quickforgeCopyFeedbackTimer=String(a)}function Dr(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),_(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 Y(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 Or(e){return e.replace(/\r\n/g,`
78
+ `).split(`
79
+ `).map(e=>e.replace(/^\s*\$\s+/,``).replace(/^\s*>\s+/,``).replace(/^\s*PS\s+[^>\n]+>\s+/i,``)).join(`
80
+ `).trim()}function kr(e){return e.split(`
81
+ `).map(e=>e.trim()).filter(Boolean).length}function Ar(e){let t=String(e.language??e.getAttribute(`language`)??``).trim().toLowerCase();return Cr.has(t)}function jr(e){return String(e.language??e.getAttribute(`language`)??``).trim().toLowerCase()===`svg`}function Mr(e){let t=e.trim();return/^<svg[\s>]/i.test(t)&&/<\/svg>\s*$/i.test(t)&&!Tr.test(t)}function Nr(e){return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}function Pr(){let e=document.querySelector(`.quickforge-svg-code-lightbox`);e?.quickforgeCleanup?.(),e?.remove()}function Fr(e,t=`SVG preview`){Pr();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=()=>Pr(),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 Ir(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 Lr(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 Rr(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 zr(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 X(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`),_(r,n),r}function Br(e=document,t){e.querySelectorAll(`.quickforge-svg-code-menu[open]`).forEach(e=>{e!==t&&(e.open=!1)})}var Vr=!1;function Hr(){Vr||(Vr=!0,document.addEventListener(`pointerdown`,e=>{e.target?.closest(`.quickforge-svg-code-menu`)||Br(document)},!0),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&Br(document)}))}function Ur(e,t){Hr();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=m(`moreActions`),t.setAttribute(`aria-label`,m(`moreActions`)),t.textContent=`⋯`;let n=document.createElement(`div`);n.className=`quickforge-svg-code-menu-content`,n.setAttribute(`role`,`menu`);let a=X(`svg-preview-mode`,m(`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=X(`svg-source-mode`,m(`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=X(`copy-svg-code`,m(`copySvgSource`),A),c=X(`download-svg-code`,m(`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"]`),s=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&&Br(e.closest(`markdown-block`)??document,a)})),o&&(o.onclick=()=>{zr(e,`preview`),d()}),s&&(s.onclick=()=>{zr(e,`source`),d()}),l&&(l.onclick=async()=>{await c(t),Er(l,m(`copySvgSource`),A)}),u&&(u.onclick=()=>{Ir(`quickforge-svg-${Date.now()}.svg`,t,`image/svg+xml;charset=utf-8`),d()})}function Wr(e,t){e.querySelectorAll(`assistant-message markdown-block code-block`).forEach(e=>{if(!jr(e)){Rr(e);return}if(t)return;let n=Y(e).trim();if(!n||!Mr(n)){Rr(e);return}let r=Lr(n);if(e.querySelector(`[data-quickforge-svg-preview="true"]`)&&e.dataset.quickforgeSvgPreviewSource===r){Ur(e,n),zr(e,e.dataset.quickforgeSvgMode===`source`?`source`:`preview`);return}let i=e.querySelector(`:scope > div > div:first-child`);if(!i)return;Rr(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=Nr(n),o.title=m(`svgEnlargePreview`),o.addEventListener(`click`,()=>Fr(o.src)),a.replaceChildren(o),i.after(a),Ur(e,n),e.dataset.quickforgeSvgPreviewSource=r,zr(e,e.dataset.quickforgeSvgMode===`source`?`source`:`preview`)})}var Gr=0;function Kr(e){return vr(String(e.language??e.getAttribute(`language`)??``))}function qr(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(++Gr)),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 Jr(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 Yr(e,t,n){Hr();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=m(`moreActions`),t.setAttribute(`aria-label`,m(`moreActions`)),t.textContent=`⋯`;let n=document.createElement(`div`);n.className=`quickforge-svg-code-menu-content`,n.setAttribute(`role`,`menu`);let r=X(`mermaid-preview-mode`,m(`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=X(`mermaid-source-mode`,m(`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=X(`copy-mermaid-code`,m(`copyMermaidSource`),A),c=X(`download-mermaid-svg`,m(`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`),s=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"]`),f=()=>{o&&(o.open=!1)};o&&!o.dataset.quickforgeMermaidMenuBound&&(o.dataset.quickforgeMermaidMenuBound=`true`,o.addEventListener(`toggle`,()=>{o.open&&Br(e.closest(`markdown-block`)??document,o)})),s&&(s.onclick=()=>{Jr(e,`preview`),f()}),l&&(l.onclick=()=>{Jr(e,`source`),f()}),u&&(u.onclick=async()=>{await c(t),Er(u,m(`copyMermaidSource`),A)}),d&&(d.onclick=()=>{Ir(`quickforge-mermaid-${Date.now()}.svg`,n,`image/svg+xml;charset=utf-8`),f()})}function Xr(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=m(`mermaidRenderFailed`),t.after(n)}function Zr(e,t){e.querySelectorAll(`assistant-message markdown-block code-block`).forEach(n=>{try{if(!Kr(n)){qr(n);return}let r=Y(n).trim();if(!r){qr(n);return}let i=Lr(r);if(n.querySelector(`[data-quickforge-mermaid-preview="true"]`)&&n.dataset.quickforgeMermaidPreviewSource===i){Jr(n,n.dataset.quickforgeMermaidMode===`source`?`source`:`preview`);return}if(t){(n.dataset.quickforgeMermaidPendingSource||n.dataset.quickforgeMermaidPreviewSource)&&qr(n);return}if(n.dataset.quickforgeMermaidPendingSource===i||n.dataset.quickforgeMermaidFailedSource===i||!n.querySelector(`:scope > div > div:first-child`))return;qr(n);let a=String(++Gr);n.dataset.quickforgeMermaidRequestToken=a,n.dataset.quickforgeMermaidPendingSource=i,(async()=>{try{let t=await Sr(r);if(!t)throw Error(`Empty Mermaid SVG`);let o=br(t);if(!n.isConnected||n.dataset.quickforgeMermaidRequestToken!==a||e.dataset.quickforgeAgentStreaming===`true`||!Kr(n)||Lr(Y(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`,m(`mermaidPreviewLabel`));let l=document.createElement(`img`);l.alt=m(`mermaidPreviewLabel`),l.src=o,l.title=m(`mermaidEnlargePreview`),l.addEventListener(`click`,()=>Fr(l.src,m(`mermaidPreviewLabel`))),c.replaceChildren(l),n.classList.add(`quickforge-svg-code-block`,`quickforge-mermaid-code-block`),s.after(c),Yr(n,r,t),n.dataset.quickforgeMermaidPreviewSource=i,delete n.dataset.quickforgeMermaidPendingSource,delete n.dataset.quickforgeMermaidFailedSource,delete n.dataset.quickforgeMermaidRequestToken,Jr(n,`preview`)}catch{if(!n.isConnected||n.dataset.quickforgeMermaidRequestToken!==a||!Kr(n)||Lr(Y(n).trim())!==i)return;delete n.dataset.quickforgeMermaidPendingSource,delete n.dataset.quickforgeMermaidRequestToken,n.dataset.quickforgeMermaidFailedSource=i,Xr(n)}})()}catch{qr(n),Xr(n)}})}function Qr(e,t){e.querySelectorAll(`assistant-message markdown-block code-block`).forEach(e=>{let n=e.querySelector(`[data-quickforge-action="execute-markdown-command"]`);if(!Ar(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=Or(Y(e));if(!r){n?.remove(),delete e.dataset.quickforgeCommand;return}e.dataset.quickforgeCommand=r;let i=m(`executeInTerminal`),a=n??Dr(`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=Or(Y(e));t&&window.dispatchEvent(new CustomEvent(`quickforge:execute-markdown-command`,{detail:{command:t,confirm:kr(t)>1,dangerous:wr.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 $r=/[A-Za-z]:[\\/][^\s"'<>`]+|(?:\/Users|\/home|\/workspace|\/mnt|\/Volumes)\/[^\s"'<>`]+/g,ei=new Set([`.`,`,`,`;`,`:`,`!`,`?`,`)`,`]`,`}`,`>`,`。`,`,`,`;`,`:`,`!`,`?`,`)`,`】`,`》`]),ti=[`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 ni(e){let t=e.length;for(;t>0&&ei.has(e[t-1]);)--t;return{path:e.slice(0,t),suffix:e.slice(t)}}function ri(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 ii(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(e){let t=e.textContent??``;if(!$r.test(t))return NodeFilter.FILTER_REJECT;$r.lastIndex=0;let n=e.parentElement;return!n||n.closest(ti)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r=n.nextNode();for(;r;)t.push(r),r=n.nextNode();return t}function ai(e,t){let n=e.textContent??``;$r.lastIndex=0;let r,i=0,a=document.createDocumentFragment(),o=!1;for(;r=$r.exec(n);){let e=r[0],{path:s,suffix:c}=ni(e);if(!s)continue;let l=r.index,u=l+e.length;l>i&&a.append(document.createTextNode(n.slice(i,l))),a.append(ri(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 oi(e,t,n){let r=Array.from(e.querySelectorAll(`markdown-block`)),i=r.reduce((e,t)=>e+(t.textContent?.length??0),0),a=l(t).length,o=`${String(t.timestamp??``)}:${a}:${r.length}:${i}`;e.dataset.quickforgeLocalPathSignature!==o&&(r.forEach(e=>{ii(e).forEach(e=>ai(e,n))}),e.dataset.quickforgeLocalPathSignature=o)}function si(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}function ci(e,t,n){let r=m(`copied`),i=Number(e.dataset.quickforgeCopyFeedbackTimer);i&&window.clearTimeout(i),_(e,j),e.title=r,e.setAttribute(`aria-label`,r),e.style.color=`rgb(5 150 105)`;let a=window.setTimeout(()=>{_(e,n),e.title=t,e.setAttribute(`aria-label`,t),e.style.color=``,delete e.dataset.quickforgeCopyFeedbackTimer},1200);e.dataset.quickforgeCopyFeedbackTimer=String(a)}function li(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),_(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 ui(e){if(!e)return null;let t=document.createElement(`span`);return t.className=`quickforge-message-time`,t.textContent=u(e),t}function di(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 fi(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`)){di(t);return}di(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 f=document.createElement(`div`);f.className=`quickforge-rollback-popover-footer`;let p=document.createElement(`button`);p.type=`button`,p.className=`quickforge-rollback-popover-cancel`,p.textContent=m(`cancel`);let h=document.createElement(`button`);h.type=`button`,h.className=`quickforge-rollback-popover-confirm`,h.textContent=m(`confirmRollback`),f.append(p,h),c.append(l,u,d,f);let g=()=>di(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()),p.addEventListener(`click`,g),h.addEventListener(`click`,async()=>{h.disabled=!0,p.disabled=!0,h.textContent=m(`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 pi(e){let t=document.createElement(`span`);t.className=`quickforge-rollback-action`;let n=li(`rollback`,m(`rollback`),M,t=>{fi({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 mi(e){return e.querySelector(`message-list`)}function hi(e){return Array.from(e.querySelectorAll(`user-message, assistant-message`)).filter(t=>t.closest(`message-list`)===e)}function gi(e){let t=mi(e);return t?hi(t):[]}function _i(e){return(mi(e)?.parentElement?.querySelector(`:scope > streaming-message-container:not(.hidden)`))?.querySelector(`:scope > div > assistant-message`)??null}function vi(e){e.querySelectorAll(`message-list[data-quickforge-subagent-process="true"]`).forEach(e=>{dr(e,hi(e),e.dataset.quickforgeSubagentStreaming===`true`)})}function yi(e){let{panel:t,getMessages:n,messageIndexOffset:r=0,isStreaming:i,onCopyAnswer:a,onRollbackFromMessage:o,onRetryFromMessage:s,onForkFromMessage:c,onOpenLocalFilePath:d,disableFork:f,allowRollback:h=!0,allowRetry:g=!0,readOnly:_=!1,enableTerminalCommandActions:v=!0,rollbackConfirmTitle:y=m(`rollbackConfirmTitle`),rollbackConfirmDescription:b=m(`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=gi(t),T=i(),ee=si(x.map(({message:e})=>e),T),E=e=>{let t=m(`copy`);return li(`copy`,t,A,async n=>{let r=e();if(r)try{await a(r),ci(n,t,A)}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`);let v=w(a.message),C=e=>{let t=e.querySelector(`.quickforge-message-time`);if(v>0){if(t){t.textContent=u(v);return}let n=ui(v);if(!n)return;a.message.role===`assistant`?e.append(n):e.prepend(n)}else t?.remove()};a.message.role===`assistant`&&d&&oi(e,a.message,d);let T=`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`}`,D=e.querySelector(`.quickforge-message-actions`);if(!(a.message.role!==`assistant`||ee.has(r))){D?.remove();return}if(D?.dataset.quickforgeLayout===`message-bottom`){D.className=T,D.parentElement===e&&D!==e.lastElementChild&&e.append(D),_&&di(t),D.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`&&f){e.closest(`.quickforge-rollback-action`)?.remove(),e.remove();return}e.disabled=i()}),i()&&di(t);let n=D.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=li(`retry`,m(`retry`),P,()=>{s(a.index)});e.disabled=i(),D.append(e)}C(D);return}D?.remove();let O=document.createElement(`div`);if(O.dataset.quickforgeLayout=`message-bottom`,O.className=T,a.message.role===`assistant`){let e=l(a.message);if(!e)return;let t=E(()=>{let t=n()[a.index];return t?l(t):e});if(O.append(t),!_&&!f){let e=li(`fork`,m(`forkConversation`),N,()=>{c(a.index)});e.disabled=i(),O.append(e)}}else{let e=p(a.message);if(e){let t=E(()=>{let t=n()[a.index];return t?p(t):e});O.append(t)}if(!_&&h){let e=pi({panel:t,messageIndex:a.index,isDisabled:i(),title:y,description:b,onConfirm:o});O.append(e)}if(!_&&g&&S&&a.index===S.index){let e=li(`retry`,m(`retry`),P,()=>{s(a.index)});e.disabled=i(),O.append(e)}}C(O),e.append(O)}),Br(t);let D=[...C];if(T){let e=_i(t);e&&(e.classList.add(`quickforge-assistant-message`),D.push(e))}dr(t,D,T),vi(t),Wr(t,i()),Zr(t,i()),v?Qr(t,i()):t.querySelectorAll(`[data-quickforge-action="execute-markdown-command"]`).forEach(e=>e.remove())}function bi(e){return e.role===`user`||e.role===`user-with-attachments`||e.role===`assistant`}function xi(e){return e.role===`user`||e.role===`user-with-attachments`}function Si(e){return e.role===`assistant`?l(e).trim().length>0:!1}function Ci(e){return e.querySelector(`message-list`)}function wi(e){let t=Ci(e);return t?Array.from(t.querySelectorAll(`user-message, assistant-message`)).filter(e=>e.closest(`message-list`)===t):[]}var Ti=`.quickforge-assistant-waiting`;function Ei(e){e.querySelectorAll(Ti).forEach(e=>e.remove())}function Di(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 Oi(e){let{panel:t,getMessages:n,isStreaming:r,isActive:i}=e,a=t.querySelector(Ti);if(!r()||!i)return Ei(t),!1;let o=Ci(t),s=n(),c=s.map((e,t)=>({message:e,index:t})).filter(({message:e})=>bi(e)),l=(()=>{for(let e=c.length-1;e>=0;e--)if(xi(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(Si),f=wi(t),p=f[l],h=f.slice(l+1).some(e=>e.matches(`assistant-message`)&&Di(e));if(!p||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`,m(`assistantWaitingAriaLabel`)),a||(g.innerHTML=`
82
+ <div class="quickforge-assistant-waiting-dots" aria-hidden="true">
83
+ <span></span>
84
+ <span></span>
85
+ <span></span>
86
+ </div>
87
+ `),g.previousElementSibling!==p&&p.after(g),!0}function ki(e){let{panel:t,isStreaming:n,abort:r,agentAccessMode:i,harness:a,getAcpSession:o,onOpenCodeConfigOptionChange:s,onOpenCodeModeChange:c,planMode:l,workspaceToolsEnabled:u,readOnly:d,allowModelControls:f,planModeEnabled:p,accessModeEnabled:h,commandSuggestionsEnabled:g,capabilitySuggestionsEnabled:_,attachmentsEnabled:v,onAccessModeChange:y,onTogglePlanMode:b,onInput:x,onFilesChange:S,removeCommandSuggestions:w,updateCommandSuggestions:T,setupCommandTextareaHandler:ee,removeCapabilitySuggestions:E,updateCapabilitySuggestions:D,setupCapabilityTextareaHandler:O,insertBuiltinPluginMention:te,availablePluginRows:ne,onBeforeSend:re}=e,k=t.querySelector(`message-editor`);k?.classList.add(`quickforge-composer`),k?.parentElement?.classList.add(`quickforge-composer-shell`),k?.parentElement?.parentElement?.classList.add(`quickforge-composer-dock`);let ie=k?.querySelector(`textarea`);if(ie&&(ie.placeholder=m(`composerPlaceholder`)),d){t.querySelector(`.quickforge-composer-dock`)?.remove();return}Ye({editor:k,onInput:x,onFilesChange:S,removeCommandSuggestions:w,updateCommandSuggestions:g?T:()=>w(),removeCapabilitySuggestions:E,updateCapabilitySuggestions:_?D:()=>E(),attachmentsEnabled:v,onBeforeSend:re}),g?ee(k):w(),_?O(k):E(),p?Ke(k,l,b):Ge(k);let A=t.querySelector(`agent-interface`);if(A){let e=A.enableModelSelector!==f;A.enableModelSelector=f,A.enableThinkingSelector=!1,e&&A.requestUpdate?.()}let j=k?.querySelectorAll(`.flex.gap-2.items-center`),M=j?.[0],N=j?.[j.length-1];if(!N)return;if(We(k,N),Je({rightControls:N,isStreaming:n,abort:r,removeCommandSuggestions:w}),!M){t.querySelector(`.quickforge-plus-inline`)?.remove(),z(t),!v&&k&&Re(k),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 P=()=>{z(t),L(t),R(t),I(t),C()};if(k&&(k.querySelectorAll(`input[type="file"]`).forEach(e=>{e.disabled=!v}),v||Re(k,M)),k&&(v||_)?He({panel:t,editor:k,leftControls:M,insertBuiltinPluginMention:te,availablePluginRows:ne,removeCommandSuggestions:w,removeCapabilitySuggestions:E,attachmentsEnabled:v,pluginsEnabled:_}):(t.querySelector(`.quickforge-plus-inline`)?.remove(),z(t),k&&Re(k,M)),p?qe({panel:t,leftControls:M,planMode:l,onTogglePlanMode:b}):t.querySelector(`.quickforge-plan-inline`)?.remove(),a===`opencode`&&o&&s&&c?(ke({panel:t,leftControls:M,getAcpSession:o,isStreaming:n,onConfigOptionChange:s,onModeChange:c,dismissComposerMenus:P}),Pe({panel:t,rightControls:N,getAcpSession:o,isStreaming:n,onModeChange:c,dismissComposerMenus:P})):(t.querySelector(`.quickforge-opencode-config-inline`)?.remove(),L(t),t.querySelector(`.quickforge-opencode-mode-inline`)?.remove(),R(t)),!u||!h){t.querySelector(`.quickforge-agent-access-inline`)?.remove(),I(t),t.querySelector(`.quickforge-yolo-inline`)?.remove();return}be({panel:t,leftControls:M,agentAccessMode:i,onAccessModeChange:y,dismissComposerMenus:P})}var Ai={maxHeight:`28rem`,overflow:`auto`,border:`1px solid color-mix(in oklab, var(--border) 75%, transparent)`,borderRadius:`0.75rem`,background:`color-mix(in oklab, var(--muted) 28%, transparent)`,fontFamily:`var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace)`,fontSize:`0.78rem`,lineHeight:`1.45`},ji={minHeight:`1.35em`,padding:`0 0.75rem`,whiteSpace:`pre`},Mi={display:`inline-flex`,alignItems:`center`,borderRadius:`999px`,padding:`0.05rem 0.45rem`,fontFamily:`var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace)`,fontSize:`0.72rem`,fontWeight:`650`};function Ni(e,t){let n=Q(e?.details)?e.details:void 0;return e?.isError||n?.aborted===!0||n?.timedOut===!0?`error`:t?`running`:e?`done`:`called`}function Z(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 Pi(e){return e?.content?.filter(e=>e.type===`text`).map(e=>e.text??``).join(`
88
+ `)??``}function Q(e){return!!(e&&typeof e==`object`&&!Array.isArray(e))}function Fi(e,t){let n=Q(e?.__quickforgeAcp)?e.__quickforgeAcp:void 0,r=Q(t)?t:void 0;return(Q(r?.__quickforgeAcp)?r.__quickforgeAcp:void 0)??n}function Ii(e){if(!e||!(`__quickforgeAcp`in e))return e;let{__quickforgeAcp:t,...n}=e;return n}function Li(e){if(!Q(e)||!(`__quickforgeAcp`in e))return e;let{__quickforgeAcp:t,...n}=e;return n}function Ri(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 zi(e,t,n){let r=Q(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}`,Ri(r,n),``,`STDOUT:`,a||`(empty)`,``,`STDERR:`,o||`(empty)`].join(`
89
+ `)}function Bi(e,t,n,r){let i=Pi(n);return e===`manage_global_memory`?O(n,r,m)||i:i||(e===`run_command`?zi(t,n?.details,r):``)}function Vi(e,t){return Q(e)&&typeof e[t]==`string`?e[t]:``}function Hi(e,t,n){if(!t&&!n?.details)return``;if(e===`run_command`&&typeof t?.command==`string`)return t.command;if(e===`generate_image`){let e=typeof t?.prompt==`string`?t.prompt.trim():``;return e.length>100?`${e.slice(0,100)}…`:e}if(e===`present_files`){let e=(Array.isArray(t?.files)?t.files:Array.isArray(n?.details&&n.details.files)?(n?.details).files:[]).map(e=>typeof e==`string`?e:Q(e)&&typeof e.path==`string`?e.path:``).filter(Boolean);return e.length?e.slice(0,3).join(`, `)+(e.length>3?` +${e.length-3}`:``):``}if(e===`grep_files`){let e=typeof t?.query==`string`&&t.query?t.query:Vi(n?.details,`query`),r=typeof t?.path==`string`&&t.path?t.path:Vi(n?.details,`path`)||`.`,i=t?.regex||Q(n?.details)&&Q(n.details.searchOptions)&&n.details.searchOptions.regex?`regex`:`text`,a=r&&r!==`.`?` in ${r}`:` in current workspace`;return e?`${i}: ${e}${a}`:`searching${a}`}return e===`activate_skill`&&typeof t?.name==`string`?t.name:e===`read_skill_resource`&&typeof t?.path==`string`||t&&`path`in t&&typeof t.path==`string`?t.path:t&&`query`in t&&typeof t.query==`string`?t.query:t&&`search_query`in t&&typeof t.search_query==`string`?t.search_query:``}function Ui(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 Wi(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 Gi(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 Ki(e,t,n){let r=n.getAttribute(`aria-label`)||m(`terminateCommand`);n.disabled=!0,n.setAttribute(`aria-label`,m(`commandTerminateRequested`)),n.setAttribute(`title`,m(`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`,m(`terminateCommandTitle`))}}function qi(e){return e.startsWith(`+++`)||e.startsWith(`---`)?`quickforge-diff-file`:e.startsWith(`@@`)?`quickforge-diff-hunk`:e.startsWith(`+`)?`quickforge-diff-add`:e.startsWith(`-`)?`quickforge-diff-del`:`quickforge-diff-context`}function Ji(e){return e.startsWith(`+++`)||e.startsWith(`---`)?{...ji,background:`color-mix(in oklab, var(--muted) 48%, transparent)`,color:`color-mix(in oklab, var(--muted-foreground) 88%, transparent)`}:e.startsWith(`@@`)?{...ji,background:`color-mix(in oklab, rgb(37 99 235) 10%, transparent)`,color:`rgb(37 99 235)`}:e.startsWith(`+`)?{...ji,background:`color-mix(in oklab, rgb(34 197 94) 16%, transparent)`,color:`rgb(22 101 52)`}:e.startsWith(`-`)?{...ji,background:`color-mix(in oklab, rgb(239 68 68) 14%, transparent)`,color:`rgb(153 27 27)`}:{...ji,color:`var(--foreground)`}}function Yi(r,i){if(r!==`write_file`&&r!==`edit_file`||!i)return e;let a=Number(i.addedLines??0),o=Number(i.removedLines??0);return t`
90
+ <span class="quickforge-tool-meta-hover shrink-0 inline-flex items-center gap-1" title="+${a} -${o}">
91
+ <span
92
+ class="quickforge-diff-badge quickforge-diff-badge-add"
93
+ style=${n({...Mi,background:`color-mix(in oklab, rgb(34 197 94) 16%, transparent)`,color:`rgb(22 101 52)`})}
94
+ >+${a}</span>
95
+ <span
96
+ class="quickforge-diff-badge quickforge-diff-badge-del"
97
+ style=${n({...Mi,background:`color-mix(in oklab, rgb(239 68 68) 14%, transparent)`,color:`rgb(153 27 27)`})}
98
+ >-${o}</span>
99
+ </span>
100
+ `}function Xi(r){let i=r.text?.split(`
101
+ `)??[],a=Number(r.addedLines??0),o=Number(r.removedLines??0);return t`
102
+ <div>
103
+ <div class="mb-1 flex items-center gap-2 text-xs font-medium text-muted-foreground">
104
+ <span>Diff</span>
105
+ <span
106
+ class="quickforge-diff-badge quickforge-diff-badge-add"
107
+ style=${n({...Mi,background:`color-mix(in oklab, rgb(34 197 94) 16%, transparent)`,color:`rgb(22 101 52)`})}
108
+ >+${a}</span>
109
+ <span
110
+ class="quickforge-diff-badge quickforge-diff-badge-del"
111
+ style=${n({...Mi,background:`color-mix(in oklab, rgb(239 68 68) 14%, transparent)`,color:`rgb(153 27 27)`})}
112
+ >-${o}</span>
113
+ ${r.truncated?t`<span class="text-muted-foreground/80">truncated</span>`:e}
114
+ </div>
115
+ <div class="quickforge-diff-block" style=${n(Ai)}>${i.map(e=>t`
116
+ <div class=${qi(e)} style=${n(Ji(e))}>${e||` `}</div>
117
+ `)}</div>
118
+ </div>
119
+ `}function Zi(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 Qi(e){if(e){if(typeof e.durationMs==`number`)return e.durationMs;if(typeof e.startedAt==`number`)return Date.now()-e.startedAt}}var $i=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=Zi(n)}};customElements.get(`quickforge-elapsed-time`)||customElements.define(`quickforge-elapsed-time`,$i);function ea(n,r){return Qi(n)===void 0?e:t`
120
+ <quickforge-elapsed-time
121
+ class="quickforge-tool-meta-hover text-xs text-muted-foreground/70"
122
+ started-at=${String(n?.startedAt??``)}
123
+ duration-ms=${typeof n?.durationMs==`number`?String(n.durationMs):``}
124
+ running=${String(r===`running`)}
125
+ ></quickforge-elapsed-time>
126
+ `}function ta(){return`text-muted-foreground/60`}function na(e){let n=`quickforge-tool-type-icon shrink-0 ${ta()}`;return e===`manage_global_memory`?t`<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>`:e===`edit_file`?t`<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>`:e===`write_file`?t`<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>`:e===`read_file`?t`<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>`:e===`grep_files`?t`<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>`:e===`present_files`?t`<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>`:e===`generate_image`?t`<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>`:e===`read_skill_resource`?t`<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>`:e===`run_command`?t`<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>`:e===`run_subagent`?t`<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>`:e===`activate_skill`?t`<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>`:t`<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 ra(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 ia(e){let n=`quickforge-tool-status-icon shrink-0 ${ra(e)}`,r=m(e);return e===`running`?t`<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>`:e===`done`?t`<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>`:e===`error`?t`<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>`:t`<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 aa(e,n){return t`
127
+ <span class="${e===`done`?`quickforge-tool-meta-hover`:`quickforge-tool-meta-important`} shrink-0 inline-flex items-center gap-1.5" title=${m(e)}>
128
+ ${ia(e)}${ea(n,e)}
129
+ </span>
130
+ `}function oa(n,r,i){if(n!==`run_command`||r!==`running`)return e;let{sessionId:a,toolCallId:o}=Gi(i);return!a||!o?e:t`
131
+ <button
132
+ type="button"
133
+ 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"
134
+ title=${m(`terminateCommandTitle`)}
135
+ aria-label=${m(`terminateCommandTitle`)}
136
+ @click=${e=>{e.preventDefault(),e.stopPropagation(),Ki(a,o,e.currentTarget)}}
137
+ ><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>
138
+ `}var sa=`quickforge:preview-artifact`;function ca(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 la(e,t){if(e===`write_file`||e===`edit_file`){let e=t&&`path`in t&&typeof t.path==`string`?t.path:``;return e?ca(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(!(!Q(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=ca(r.path,r.kind);if(e)return e}for(let t of e){let e=ca(t.path,t.kind);if(e)return e}}}function ua(n,r){let i=la(n,r);return i?t`
139
+ <button
140
+ type="button"
141
+ class="shrink-0 inline-flex size-5 items-center justify-center text-muted-foreground transition-colors hover:text-foreground"
142
+ title=${m(`previewArtifact`)}
143
+ aria-label=${m(`previewArtifact`)}
144
+ @click=${e=>{e.preventDefault(),e.stopPropagation(),window.dispatchEvent(new CustomEvent(sa,{detail:i}))}}
145
+ ><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>
146
+ `:e}var $=new Map,da=200;function fa(e,t){if(e){if(!$.has(e)&&$.size>=da){let e=$.keys().next().value;e&&$.delete(e)}$.set(e,t)}}function pa(e,t,n){let{toolCallId:r}=Gi(n);return r||`${e}:${Z(t)}`}function ma(e){let n=h(e),r=n?m(`viewSubagentRunDetails`):e.statusLabel;return t`
147
+ <div class="quickforge-subagent-tool">
148
+ <button
149
+ type="button"
150
+ 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"
151
+ title=${r}
152
+ aria-label=${`${e.statusLabel} · ${r}`}
153
+ aria-disabled=${String(!n)}
154
+ ?disabled=${!n}
155
+ @click=${()=>{if(!n)return;let t=o(e,S.get(e.runId));window.dispatchEvent(new CustomEvent(g,{detail:{runId:t.runId,payload:t}}))}}
156
+ >
157
+ ${na(`run_subagent`)}
158
+ <span class="quickforge-subagent-title min-w-0">
159
+ <span class="quickforge-subagent-label">${e.statusLabel}</span>
160
+ ${aa(e.status,e.timing)}
161
+ </span>
162
+ </button>
163
+ </div>
164
+ `}function ha(n){let r=new Set(E(n)),i=ee(n),a=new Set(n.pendingToolCalls);return t`
165
+ <div class="mt-3 space-y-3">
166
+ ${r.has(`task`)?t`<div class="quickforge-subagent-task space-y-1 rounded-lg border border-border bg-background/60 px-3 py-2 text-xs leading-relaxed text-muted-foreground/70">
167
+ ${n.task?t`<div><span class="font-medium text-foreground/75">${m(`subagentTask`)}:</span> ${n.task}</div>`:e}
168
+ ${n.context?t`<div><span class="font-medium text-foreground/75">${m(`subagentContext`)}:</span> ${n.context}</div>`:e}
169
+ ${n.expectedOutput?t`<div><span class="font-medium text-foreground/75">${m(`subagentExpectedOutput`)}:</span> ${n.expectedOutput}</div>`:e}
170
+ </div>`:e}
171
+ ${r.has(`summary`)?t`<div class="quickforge-subagent-summary rounded-lg border border-border/75 bg-muted/20 px-3 py-2.5 text-sm">
172
+ <div class="flex flex-wrap items-center gap-x-3 gap-y-1 text-muted-foreground">
173
+ <span class="font-medium text-foreground/85">${n.label}</span>
174
+ ${n.toolCalls===void 0?e:t`<span>${m(`subagentToolCalls`)}: ${n.toolCalls}</span>`}
175
+ ${n.timing?t`<span>${ea(n.timing,n.status)}</span>`:e}
176
+ </div>
177
+ ${n.allowedTools.length>0?t`<div class="mt-2 flex flex-wrap gap-1.5">${n.allowedTools.map(e=>t`<span class="rounded-full bg-background/80 px-2 py-0.5 text-[11px] text-muted-foreground/80">${e}</span>`)}</div>`:e}
178
+ </div>`:e}
179
+ ${r.has(`trace`)?t`<div class="quickforge-subagent-trace rounded-lg border border-border bg-background/60 p-2.5"><message-list data-quickforge-subagent-process="true" data-quickforge-subagent-streaming=${String(n.status===`running`)} .messages=${i} .tools=${n.tools} .pendingToolCalls=${a} .isStreaming=${!1}></message-list></div>`:e}
180
+ ${r.has(`error`)?t`<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">${m(`subagentErrorReason`)}:</span> ${n.errorMessage||m(`subagentErrorUnavailable`)}</div>`:e}
181
+ ${r.has(`output`)?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`subagentResult`)}</div><code-block .code=${n.output} language="text"></code-block></div>`:e}
182
+ ${r.has(`input`)?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`input`)}</div><code-block .code=${n.input} language="json"></code-block></div>`:e}
183
+ ${r.has(`details`)?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`details`)}</div><code-block .code=${n.details} language="json"></code-block></div>`:e}
184
+ </div>
185
+ `}var ga=class extends r{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?ha(this.payload):t`<div class="rounded-lg border border-border bg-background/60 px-3 py-6 text-center text-sm text-muted-foreground/70">${m(`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;let e=this.querySelector(`message-list[data-quickforge-subagent-process="true"]`)?.updateComplete;if(e&&await e,this.__processDecorationDisposed||!this.isConnected)return;vi(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`,ga);var _a=class{render(e,t,n){let r=v(e,t,n,s().toolDisplayMode,m,t?.toolCallId);return b(r,S.get(r.runId))&&S.publish(r),{isCustom:!1,content:ma(r)}}},va=class{render(n,r,i){let a=Ni(r,i),o=x(r?.details),s=k(r?.details),c=Hi(`generate_image`,n,r),l=Pi(r),u=s?.model||(typeof n?.model==`string`?n.model:``);return{isCustom:!0,content:t`
186
+ <div class="quickforge-generated-image-tool space-y-3">
187
+ <div class="flex items-center gap-2 text-sm text-muted-foreground">
188
+ ${na(`generate_image`)}
189
+ <span class="min-w-0 flex-1 truncate">${m(`generateImage`)}${c?t`<span class="text-muted-foreground/70"> · ${c}</span>`:e}</span>
190
+ ${aa(a,o)}
191
+ </div>
192
+ ${s?t`
193
+ <div class=${s.assets.length>1?`grid grid-cols-1 gap-3 sm:grid-cols-2`:`grid grid-cols-1 gap-3`}>
194
+ ${s.assets.map((e,n)=>{let r=ie(s,e),i=m(`generatedImageAlt`,{index:n+1});return t`
195
+ <figure class="overflow-hidden rounded-lg border border-border bg-background/60">
196
+ <a href=${r} target="_blank" rel="noopener noreferrer" title=${m(`openGeneratedImage`)} aria-label=${m(`openGeneratedImage`)}>
197
+ <img class="block max-h-[32rem] w-full object-contain" src=${r} alt=${i} loading="lazy" referrerpolicy="no-referrer" />
198
+ </a>
199
+ <figcaption class="flex items-center gap-2 border-t border-border px-3 py-2 text-xs text-muted-foreground">
200
+ <span class="min-w-0 flex-1 truncate">${u||e.mimeType}</span>
201
+ <a class="text-muted-foreground transition-colors hover:text-foreground" href=${r} download=${e.assetId} title=${m(`downloadGeneratedImage`)} aria-label=${m(`downloadGeneratedImage`)}>${m(`downloadGeneratedImage`)}</a>
202
+ </figcaption>
203
+ </figure>
204
+ `})}
205
+ </div>
206
+ ${s.text?t`<div class="text-sm leading-relaxed text-muted-foreground">${s.text}</div>`:e}
207
+ `:a===`running`?t`
208
+ <div class="rounded-lg border border-border bg-background/60 px-3 py-6 text-center text-sm text-muted-foreground">${m(`generatingImage`)}</div>
209
+ `:l?t`<code-block .code=${l} language="text"></code-block>`:e}
210
+ </div>
211
+ `}}},ya=class{toolName;labelKey;constructor(e,t){this.toolName=e,this.labelKey=t}render(e,n,r){let i=Ni(n,r),a=x(n?.details),o=Ii(e),c=Li(n?.details),l=Fi(e,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:``,f=Hi(this.toolName,o,n),p=s().toolDisplayMode===`detailed`,h=p?Z(o):``,g=Bi(this.toolName,o,n,r),_=Ui(c),v=p?Z(_?Wi(c):c):``,y=pa(this.toolName,o,n?.details),b=$.get(y)??p,S=n?.isError?`error`:`default`;return{isCustom:!0,content:t`
212
+ <div class="quickforge-local-tool-shell">
213
+ <details class="group/tool quickforge-local-tool" ?open=${b} @toggle=${e=>{e.isTrusted&&fa(y,e.currentTarget.open)}}>
214
+ <summary class="quickforge-tool-summary flex cursor-pointer list-none items-center gap-2 text-sm text-muted-foreground select-none">
215
+ ${na(this.toolName)}
216
+ <span class="quickforge-tool-title min-w-0">
217
+ <span class="quickforge-tool-label">${u?t`OpenCode<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${u}${d?`/${d}`:``}</span>`:m(this.labelKey)}${f?t`<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${f}</span>`:``}</span>
218
+ <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>
219
+ ${Yi(this.toolName,_)}
220
+ ${aa(i,a)}
221
+ </span>
222
+ </summary>
223
+ <div class="mt-3 space-y-3">
224
+ ${h?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`input`)}</div><code-block .code=${h} language="json"></code-block></div>`:``}
225
+ ${g?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`output`)}</div>${this.toolName===`run_command`?t`<console-block .content=${g} .variant=${S}></console-block>`:t`<code-block .code=${g} language="text"></code-block>`}</div>`:``}
226
+ ${_?Xi(_):``}
227
+ ${v?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`details`)}</div><code-block .code=${v} language="json"></code-block></div>`:``}
228
+ </div>
229
+ </details>
230
+ <span class="quickforge-tool-actions inline-flex shrink-0 items-center gap-1">
231
+ ${ua(this.toolName,o)}
232
+ ${oa(this.toolName,i,n?.details)}
233
+ </span>
234
+ </div>
235
+ `}}},ba=class{render(n,r,i){let a=Ni(r,i),o=x(r?.details),c=Fi(n,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=Ii(n),f=Li(r?.details),p=s().toolDisplayMode===`detailed`,h=p?Z(d):``,g=Pi(r),_=Ui(f),v=p?Z(_?Wi(f):f):``,y=pa(`opencode_tool`,d,r?.details);return{isCustom:!0,content:t`
236
+ <div class="quickforge-local-tool-shell quickforge-opencode-tool-shell">
237
+ <details class="group/tool quickforge-local-tool quickforge-opencode-tool" ?open=${$.get(y)??p} @toggle=${e=>{e.isTrusted&&fa(y,e.currentTarget.open)}}>
238
+ <summary class="quickforge-tool-summary flex cursor-pointer list-none items-center gap-2 text-sm text-muted-foreground select-none">
239
+ ${na(`opencode_tool`)}
240
+ <span class="quickforge-tool-title min-w-0">
241
+ <span class="quickforge-tool-label">OpenCode<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${l}${u?`/${u}`:``}</span></span>
242
+ <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>
243
+ ${aa(a,o)}
244
+ </span>
245
+ </summary>
246
+ <div class="mt-3 space-y-3">
247
+ ${h?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`input`)}</div><code-block .code=${h} language="json"></code-block></div>`:e}
248
+ ${g?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`output`)}</div><code-block .code=${g} language=${Ca(g)}></code-block></div>`:e}
249
+ ${_?Xi(_):e}
250
+ ${v?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`details`)}</div><code-block .code=${v} language="json"></code-block></div>`:e}
251
+ </div>
252
+ </details>
253
+ </div>
254
+ `}}};function xa(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 Sa(e,t){let n=xa(e),r=Q(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 Ca(e){if(!e)return`text`;try{return JSON.parse(e),`json`}catch{return`text`}}var wa=class{toolName;label;constructor(e,t){this.toolName=e,this.label=t}render(n,r,i){let a=Ni(r,i),o=x(r?.details),c=Sa(this.toolName,r?.details)??xa(this.toolName),l=c?.serverName??``,u=c?.toolName??this.toolName,d=Hi(this.toolName,n,r),f=s().toolDisplayMode===`detailed`,p=f?Z(n):``,h=Bi(this.toolName,n,r,i),g=f?Z(r?.details):``,_=pa(this.toolName,n,r?.details),v=$.get(_)??f,y=this.label&&this.label!==u?`${this.label} (${u})`:u;return{isCustom:!1,content:t`
255
+ <details class="group/tool quickforge-mcp-tool" ?open=${v} @toggle=${e=>{e.isTrusted&&fa(_,e.currentTarget.open)}}>
256
+ <summary class="quickforge-tool-summary flex cursor-pointer list-none items-center gap-2 text-sm text-muted-foreground select-none">
257
+ ${na(this.toolName)}
258
+ <span class="quickforge-tool-title min-w-0">
259
+ <span class="quickforge-tool-label">MCP${l?t`<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${l}</span>`:e}<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${y}</span>${d?t`<span class="quickforge-tool-summary-detail text-muted-foreground/70"> · ${d}</span>`:e}</span>
260
+ <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>
261
+ ${aa(a,o)}
262
+ </span>
263
+ </summary>
264
+ <div class="mt-3 space-y-3">
265
+ ${p?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`input`)}</div><code-block .code=${p} language="json"></code-block></div>`:e}
266
+ ${h?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`output`)}</div><code-block .code=${h} language=${Ca(h)}></code-block></div>`:e}
267
+ ${g?t`<div><div class="mb-1 text-xs font-medium text-muted-foreground">${m(`details`)}</div><code-block .code=${g} language="json"></code-block></div>`:e}
268
+ </div>
269
+ </details>
270
+ `}}},Ta=new Set;function Ea(e){for(let t of e){if(!Q(t)||typeof t.name!=`string`||!xa(t.name)||Ta.has(t.name))continue;let e=typeof t.label==`string`?t.label:typeof t.description==`string`?t.description.replace(/^\[MCP:[^\]]+\]\s*/,``):void 0;i(t.name,new wa(t.name,e)),Ta.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`]])i(e,new ya(e,t));i(`run_subagent`,new _a),i(`generate_image`,new va),i(`opencode_tool`,new ba);function Da(e=[]){return Ea(e),e}export{br as a,er as c,gt as d,_t as f,$e as g,Qe as h,yi as i,jt as l,Xe as m,ki as n,vr as o,Ze as p,Oi as r,Sr as s,Da as t,Et as u};
@@ -1 +1 @@
1
- var e=`[QuickForge]`;function t(){try{return localStorage.getItem(`quickforge_debug`)===`1`}catch{return!1}}function n(e){return e===`debug`?t():!0}function r(e){if(typeof e==`string`)return e;if(e instanceof Error)return e.stack||e.message;try{return JSON.stringify(e)}catch{return String(e)}}function i(t,i,...a){if(!n(t))return;let o=new Date().toISOString(),s=a.length>0?` `+a.map(r).join(` `):``,c=`${o} [${t.toUpperCase()}] ${e} ${i}${s}`;switch(t){case`error`:console.error(c);break;case`warn`:console.warn(c);break;case`info`:console.info(c);break;case`debug`:console.debug(c);break}}var a={error:(e,...t)=>i(`error`,e,...t),warn:(e,...t)=>i(`warn`,e,...t),info:(e,...t)=>i(`info`,e,...t),debug:(e,...t)=>i(`debug`,e,...t)};function o(e){return`${e.provider} / ${e.id}`}export{a as n,o as t};
1
+ var e=`[QuickForge]`;function t(){try{return localStorage.getItem(`quickforge_debug`)===`1`}catch{return!1}}function n(e){return e===`debug`?t():!0}function r(e){if(typeof e==`string`)return e;if(e instanceof Error)return e.stack||e.message;try{return JSON.stringify(e)}catch{return String(e)}}function i(t,i,...a){if(!n(t))return;let o=new Date().toISOString(),s=a.length>0?` `+a.map(r).join(` `):``,c=`${o} [${t.toUpperCase()}] ${e} ${i}${s}`;switch(t){case`error`:console.error(c);break;case`warn`:console.warn(c);break;case`info`:console.info(c);break;case`debug`:console.debug(c);break}}var a={error:(e,...t)=>i(`error`,e,...t),warn:(e,...t)=>i(`warn`,e,...t),info:(e,...t)=>i(`info`,e,...t),debug:(e,...t)=>i(`debug`,e,...t)};export{a as t};