tarsk 0.6.88 → 0.6.89

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 (96) hide show
  1. package/README.md +63 -24
  2. package/dist/index.js +787 -738
  3. package/dist/node_modules/@libsql/darwin-x64/README.md +3 -0
  4. package/dist/node_modules/@libsql/{darwin-arm64 → darwin-x64}/index.node +0 -0
  5. package/dist/node_modules/@libsql/{darwin-arm64 → darwin-x64}/package.json +6 -6
  6. package/dist/public/assets/api-8Rp2LlXt.js +1 -0
  7. package/dist/public/assets/api-Cp9I7CxD.js +2 -0
  8. package/dist/public/assets/{async-error-boundary-FT8_xvjy.js → async-error-boundary-CFVUPiuG.js} +1 -1
  9. package/dist/public/assets/{browser-tab-DCjHytQ8.js → browser-tab-CPPorbL6.js} +2 -2
  10. package/dist/public/assets/{chat-dock-context-a2bV9cnz.js → chat-dock-context-DbiJNr3O.js} +1 -1
  11. package/dist/public/assets/chat-handlers-context-DYU2LQ5V.js +9 -0
  12. package/dist/public/assets/{commit-dialog-C1oUFznJ.js → commit-dialog-DPaci3dp.js} +1 -1
  13. package/dist/public/assets/{commit-error-dialog--NTHg7Aw.js → commit-error-dialog-Dnlkgb_H.js} +1 -1
  14. package/dist/public/assets/{conversation-history-view-CdfE7JTD.js → conversation-history-view-CqIugfyO.js} +1 -1
  15. package/dist/public/assets/{create-project-dialog-BdR6iQE9.js → create-project-dialog-DStWPoDE.js} +2 -2
  16. package/dist/public/assets/{create-project-workspace-DSTTGom_.js → create-project-workspace-CJ94yHAB.js} +2 -2
  17. package/dist/public/assets/{create-repo-dialog-gw-8Rpdm.js → create-repo-dialog-B_QiEz-v.js} +1 -1
  18. package/dist/public/assets/diff-view-4koPcOcE.js +4 -0
  19. package/dist/public/assets/{explorer-file-drop-CzyAqZgf.js → explorer-file-drop-DAP7ha-E.js} +1 -1
  20. package/dist/public/assets/explorer-tab-view-Bt9hRZUm.js +2 -0
  21. package/dist/public/assets/explorer-tree-CAs89lPz.js +1 -0
  22. package/dist/public/assets/{explorer-view-Daxl93oM.js → explorer-view-B1JuejkU.js} +2 -2
  23. package/dist/public/assets/index-CcAwxnT5.js +97 -0
  24. package/dist/public/assets/index-dNrgKdYv.css +1 -0
  25. package/dist/public/assets/{markdown-renderer-D2VcKU4g.js → markdown-renderer-DQONI6WG.js} +3 -3
  26. package/dist/public/assets/{mcp-manager-D1HmLT3t.js → mcp-manager-D2FG-h2e.js} +1 -1
  27. package/dist/public/assets/{model-list-controls-rXmaDp2r.js → model-list-controls-B6ofHWh3.js} +1 -1
  28. package/dist/public/assets/{onboarding-dialog-DSqBJyBa.js → onboarding-dialog-DAut3X4K.js} +1 -1
  29. package/dist/public/assets/{pill-tabs-DtdTmrg7.js → pill-tabs-BAhOHad7.js} +1 -1
  30. package/dist/public/assets/{project-coding-view-DP4qKePE.js → project-coding-view-B2FpHeiO.js} +1 -1
  31. package/dist/public/assets/{project-danger-zone-view-CGxIenpr.js → project-danger-zone-view-BqP1dcRT.js} +1 -1
  32. package/dist/public/assets/{project-env-vars-view-DKyQkh7h.js → project-env-vars-view-zhigkQFG.js} +1 -1
  33. package/dist/public/assets/{project-model-aliases-view-BewwJZAx.js → project-model-aliases-view-APAVFfym.js} +1 -1
  34. package/dist/public/assets/{project-settings-view-CE4nAz5B.js → project-settings-view-FnK-LRsv.js} +1 -1
  35. package/dist/public/assets/project-tools-view-Dmp5ViRC.js +1 -0
  36. package/dist/public/assets/providers-list-view-Clbp73Hh.js +1 -0
  37. package/dist/public/assets/{pull-request-dialog-nKYATjbm.js → pull-request-dialog-D40BQPMk.js} +1 -1
  38. package/dist/public/assets/{pull-with-changes-dialog-zzoFzCv4.js → pull-with-changes-dialog-pkXK-VP2.js} +1 -1
  39. package/dist/public/assets/query-keys-CcnonAAG.js +1 -0
  40. package/dist/public/assets/{remote-media-url-CyuN31H_.js → remote-media-url-C-GdJb-D.js} +1 -1
  41. package/dist/public/assets/{scroll-area-CGEZ1gAL.js → scroll-area-DGF9wUqQ.js} +1 -1
  42. package/dist/public/assets/{select-BR2pG61R.js → select-DMcNYwgt.js} +1 -1
  43. package/dist/public/assets/{settings-general-tabs-view-BWR0UX2P.js → settings-general-tabs-view-DBZQbihJ.js} +2 -2
  44. package/dist/public/assets/settings-general-view-0dhBET2R.js +1 -0
  45. package/dist/public/assets/{settings-list-Dgip9HpD.js → settings-list-Co3JPr9w.js} +1 -1
  46. package/dist/public/assets/{settings-logs-view-CS29x4VT.js → settings-logs-view-DvHXUDko.js} +2 -2
  47. package/dist/public/assets/settings-mcp-servers-view-414Dt5py.js +5 -0
  48. package/dist/public/assets/{settings-models-view-DS7nm54P.js → settings-models-view-ByeR7Enb.js} +1 -1
  49. package/dist/public/assets/{settings-plugins-view-avaUE36r.js → settings-plugins-view-8te2MPyh.js} +2 -2
  50. package/dist/public/assets/{settings-providers-view-B39k1iRQ.js → settings-providers-view-BAuv9gam.js} +2 -2
  51. package/dist/public/assets/{settings-remote-machines-view-BXondQG_.js → settings-remote-machines-view-CHyywazU.js} +1 -1
  52. package/dist/public/assets/{settings-setup-view-I5MGUi_D.js → settings-setup-view-Btp46Vh_.js} +2 -2
  53. package/dist/public/assets/{settings-skills-view-BKrUABbi.js → settings-skills-view-BNVx4bZl.js} +2 -2
  54. package/dist/public/assets/{settings-slack-view-B0p-96GC.js → settings-slack-view-Caly5yGt.js} +1 -1
  55. package/dist/public/assets/settings-slash-commands-view-m6mp1knu.js +1 -0
  56. package/dist/public/assets/{settings-statistics-view-B3g6BD7p.js → settings-statistics-view-BnOxr4sZ.js} +1 -1
  57. package/dist/public/assets/settings-storage-view-Dg8xfpTG.js +1 -0
  58. package/dist/public/assets/{settings-subagents-view-BziLwvNq.js → settings-subagents-view-CucwEk2A.js} +1 -1
  59. package/dist/public/assets/{settings-system-prompt-view-BqAk56cD.js → settings-system-prompt-view-CEDU2saT.js} +1 -1
  60. package/dist/public/assets/{settings-tab-bar-DYzU_lmi.js → settings-tab-bar-CdIbQ0WI.js} +1 -1
  61. package/dist/public/assets/settings-view-XcJhRclT.js +2 -0
  62. package/dist/public/assets/task-utils-Cnq9Eszt.js +1 -0
  63. package/dist/public/assets/tasks-view-B8_jkq_a.js +1 -0
  64. package/dist/public/assets/{terminal-panel-Bm_ZelN-.js → terminal-panel-xoLVfA-h.js} +1 -1
  65. package/dist/public/assets/{use-account-settings-query-C-zOdREq.js → use-account-settings-query-D_qL1I4w.js} +1 -1
  66. package/dist/public/assets/{use-active-dock-panel-instance-4Ss8lB9K.js → use-active-dock-panel-instance-kmJOnmL7.js} +1 -1
  67. package/dist/public/assets/use-git-check-BD9gdXpK.js +1 -0
  68. package/dist/public/assets/{use-installed-ai-files-DQey9Zm3.js → use-installed-ai-files-Nn-sN_V2.js} +1 -1
  69. package/dist/public/assets/{use-open-chat-dock-panel-DqfWJ8e8.js → use-open-chat-dock-panel-CXzpgxVs.js} +1 -1
  70. package/dist/public/assets/use-projects-B0xTjTaA.js +2 -0
  71. package/dist/public/assets/{web-CGP-jEpi.js → web-C1tBQoCB.js} +1 -1
  72. package/dist/public/assets/{web-CKC9gpFi.js → web-cJXG33sT.js} +1 -1
  73. package/dist/public/index.html +18 -18
  74. package/package.json +4 -4
  75. package/dist/node_modules/@libsql/darwin-arm64/README.md +0 -3
  76. package/dist/public/assets/account-view-DkuCOxkE.js +0 -1
  77. package/dist/public/assets/api-B_GSyYGh.js +0 -1
  78. package/dist/public/assets/api-C4ukGdyH.js +0 -2
  79. package/dist/public/assets/chat-handlers-context-2xSKzkKa.js +0 -9
  80. package/dist/public/assets/diff-view-B6JJNyn1.js +0 -4
  81. package/dist/public/assets/explorer-tab-view-CiUPh4uK.js +0 -2
  82. package/dist/public/assets/explorer-tree-BA12VLz_.js +0 -1
  83. package/dist/public/assets/index-CoY8DilQ.js +0 -97
  84. package/dist/public/assets/index-D14wLW4o.css +0 -1
  85. package/dist/public/assets/project-tools-view-CbDfst02.js +0 -1
  86. package/dist/public/assets/providers-list-view-BtwccvX2.js +0 -1
  87. package/dist/public/assets/query-keys-BwswkbMn.js +0 -1
  88. package/dist/public/assets/settings-general-view-BhtrDmJH.js +0 -1
  89. package/dist/public/assets/settings-mcp-servers-view-B5ithpfh.js +0 -5
  90. package/dist/public/assets/settings-slash-commands-view-DA1scWv1.js +0 -1
  91. package/dist/public/assets/settings-storage-view-BJvjhI4f.js +0 -1
  92. package/dist/public/assets/settings-view-zjMs7jNe.js +0 -2
  93. package/dist/public/assets/task-utils-BZPVmvY4.js +0 -1
  94. package/dist/public/assets/tasks-view-wFf77AQX.js +0 -1
  95. package/dist/public/assets/use-git-check-CumqGAvN.js +0 -1
  96. package/dist/public/assets/use-projects-CizIH2Fa.js +0 -2
@@ -0,0 +1,3 @@
1
+ # `@libsql/darwin-x64`
2
+
3
+ Prebuilt binary package for `libsql` on `darwin-x64`.
@@ -1,12 +1,12 @@
1
1
  {
2
- "name": "@libsql/darwin-arm64",
3
- "description": "Prebuilt binary package for `libsql` on `darwin-arm64`.",
2
+ "name": "@libsql/darwin-x64",
3
+ "description": "Prebuilt binary package for `libsql` on `darwin-x64`.",
4
4
  "version": "0.5.29",
5
5
  "os": [
6
6
  "darwin"
7
7
  ],
8
8
  "cpu": [
9
- "arm64"
9
+ "x64"
10
10
  ],
11
11
  "main": "index.node",
12
12
  "files": [
@@ -14,10 +14,10 @@
14
14
  ],
15
15
  "neon": {
16
16
  "type": "binary",
17
- "rust": "aarch64-apple-darwin",
18
- "node": "darwin-arm64",
17
+ "rust": "x86_64-apple-darwin",
18
+ "node": "darwin-x64",
19
19
  "platform": "darwin",
20
- "arch": "arm64",
20
+ "arch": "x64",
21
21
  "abi": null
22
22
  },
23
23
  "author": "Pekka Enberg <penberg@iki.fi>",
@@ -0,0 +1 @@
1
+ import{ai as e,ci as t,li as n,ni as r,oi as i,ri as a,si as o,ti as s}from"./api-Cp9I7CxD.js";async function c(e,t,n=!1){return a(`api/threads/${r(e)}/explorer?path=${encodeURIComponent(t)}&recursive=${n}`)}async function l(e,t){return a(`api/threads/${r(e)}/ai-file?path=${encodeURIComponent(t)}`)}async function u(e,t,i){return n(`api/threads/${r(e)}/ai-file`,{path:t,content:i})}async function d(e,t){return s(`api/threads/${r(e)}/explorer?path=${encodeURIComponent(t)}`)}async function f(e,t,n){return i(`api/threads/${r(e)}/explorer`,{path:t,newName:n})}async function p(e,t,n){return o(`api/threads/${r(e)}/explorer/file`,{dirPath:t,name:n})}async function m(e,n,i){let a=new URLSearchParams({dirPath:n,name:i.name});return t(`api/threads/${r(e)}/explorer/upload?${a.toString()}`,i)}async function h(t,n){return e(`api/threads/${r(t)}/explorer/media?path=${encodeURIComponent(n)}`)}async function g(e,t,n){return o(`api/threads/${r(e)}/explorer/folder`,{dirPath:t,name:n})}async function _(e,t){return o(`api/threads/${r(e)}/explorer/open`,{path:t})}async function v(e,t){return o(`api/threads/${r(e)}/explorer/gitignore`,{path:t})}async function y(e,t){return o(`api/threads/${r(e)}/explorer/print-markdown`,{path:t})}export{l as a,_ as c,u as d,m as f,h as i,y as l,g as n,v as o,d as r,c as s,p as t,f as u};
@@ -0,0 +1,2 @@
1
+ import{et as e,q as t,x as n}from"./dist-v_MvKS2-.js";var r=`order`,i=/^(localhost|127\.0\.0\.1)$/i;function a(e){return i.test(e)}function o(e){return!e||e.startsWith(`data:`)||/^https?:\/\//i.test(e)}function s(e,t){let n=e.trim();if(!n||n.startsWith(`data:`)||!/^https?:\/\//i.test(n))return e;let r;try{r=new URL(n)}catch{return e}if(!a(r.hostname))return e;let i;try{i=new URL(t)}catch{return e}return`${i.origin}${r.pathname}${r.search}${r.hash}`}function c(e,t){return o(e)?e:`${t.replace(/\/$/,``)}${e.startsWith(`/`)?e:`/${e}`}`}function l(e){try{let t=new URL(e,`http://localhost`),n=t.searchParams.get(`path`);if(n){let e=n.split(/[/\\]/).pop();if(e)return e}let r=t.pathname.split(`/`).pop();if(r?.includes(`.`))return r}catch{}}var u=`Uncommitted changes`;function d(e,t){let n=Math.max(t,0),r=Math.max(e-n,0);return n>0&&r>0?`uncommitted changes (${r} modified, ${n} untracked)`:n>0?`untracked files (${n})`:`uncommitted changes (${e} file${e===1?``:`s`})`}function f(e,t){let n=d(e,t);return`${n.charAt(0).toUpperCase()}${n.slice(1)}`}function p(e){return e===`changes`||e===`open-pr`||e===`update-pr`||e===`no-pr`||e===`merged-pr`?e:e===!0&&`changes`}function m(e){return typeof e==`number`&&Number.isInteger(e)&&e>0?e:void 0}function h(e){return e===`open-pr`||e===`update-pr`||e===`no-pr`}function ee(e){return e===`open-pr`||e===`update-pr`}function te(e){return e===`merged-pr`}function g(e){switch(e){case`changes`:return u;case`open-pr`:return`Open pull request`;case`update-pr`:return`Unpushed commits on open pull request`;case`no-pr`:return`Committed changes, no pull request yet`;case`merged-pr`:return`Pull request merged`;default:return}}var _=/^(\d{3})\s*:\s*([\s\S]+)$/,ne=new Set([`provider returned error`,`error`]);function v(e){let t=e.trim();if(!t)return t;let n=re(t);if(n)return n;let r=t.match(_);if(r){let e=r[1],t=y(b(r[2]?.trim()??``));if(t)return t;if(e===`429`)return`This model is temporarily rate-limited. Please retry shortly.`}return y(b(t))||t}function re(e){let t=e.lastIndexOf(`}`);if(t===-1||t>=e.length-1)return;let n=e.slice(t+1).trim();if(!n||n.startsWith(`{`)||n.startsWith(`[`))return;let r=e.slice(0,t+1).trim();if(!_.test(r))return;let i=r.match(_);if(i&&b(i[2]?.trim()??``)!==void 0)return n}function y(e){if(!e||typeof e!=`object`)return;let t=e,n=ie(t.metadata);if(n)return n;if(t.error&&typeof t.error==`object`){let e=y(t.error);if(e)return e}if(typeof t.message==`string`){let e=t.message.trim();if(e&&!ne.has(e.toLowerCase()))return e}if(t.code===429||t.code===`429`)return`This model is temporarily rate-limited. Please retry shortly.`}function ie(e){if(!e||typeof e!=`object`)return;let t=e;if(typeof t.raw==`string`&&t.raw.trim())return t.raw.trim();if(Array.isArray(t.previouserrors))for(let e of t.previouserrors){if(!e||typeof e!=`object`)continue;let t=e.raw;if(typeof t==`string`&&t.trim())return t.trim()}}function b(e){if(e)try{return JSON.parse(e)}catch{return}}var ae=`home.tarsk.io`,x=`tarsk.net`,oe=`Sign in with the account that owns this Tarsk.`,se=`abcdefghijkmnpqrstuvwxyz23456789`,ce=10,le=[`off`,`starting`,`ready`,`error`];function ue(e){return le.includes(e)}function S(e){return e.trim().toLowerCase().replace(/:\d+$/,``)}function de(e){return S(e)===ae}function C(e){if(e.length!==ce)return!1;for(let t of e)if(!se.includes(t))return!1;return!0}function w(e){let t=S(e),n=`.${x}`;if(!t.endsWith(n))return null;let r=t.slice(0,-n.length);return C(r)?r:null}function T(e){return w(e)!==null}function fe(e){return C(e)?`${e}.${x}`:null}function E(e){let t=fe(e);return t?`https://${t}`:null}var D=function(e){return e.PACKAGE_MANAGER=`tarsk.create-project.packageManager`,e.COMMIT_METHOD=`tarsk.create-project.commitMethod`,e.TEMPLATE_ID=`tarsk.create-project.templateId`,e.CREATE_BRANCH_AFTER_PR=`createBranchAfterPR`,e.CREATE_WORKSPACE_AFTER_PR=`createWorkspaceAfterPR`,e.PRIVATE_REPOSITORY_DEFAULT=`privateRepositoryDefault`,e.NEW_CHAT_ON_NEW_BRANCH=`newChatOnNewBranch`,e.FONT_SCALE=`tarsk.general.fontScale`,e.ACTIVITY_BAR_POSITION=`tarsk.general.activityBarPosition`,e.BRAND_COLOR=`tarsk.general.brandColor`,e.OPEN_WITH_PROGRAM=`tarsk.general.openWithProgram`,e.SERVER_URL=`tarsk.server.url`,e.SERVER_BIND_MODE=`tarsk.general.serverBindMode`,e.HISTORY_COLUMNS=`tarsk.settings.historyColumns`,e.TASK_LIST_VIEW_MODE=`tarsk.tasks.viewMode`,e.AUTOMATION_LIST_VIEW_MODE=`tarsk.automations.viewMode`,e.LAST_TASK_TAG=`tarsk.tasks.lastTag`,e}({}),O=function(e){return e.MESSAGE_HISTORY=`chat_message_history`,e.BASH_COMMAND_DURATIONS=`tarsk.bash-command-durations`,e.SKILL_CATALOG_PREFIX=`tarsk.skills.catalog.`,e.SKILL_SOURCE_SELECTION=`tarsk.skills.selectedSource`,e.PROJECT_SESSION_OPEN_PREFIX=`tarsk.project-session-open.`,e}({});function k(e){return typeof localStorage>`u`?null:localStorage.getItem(e)}function A(e,t){typeof localStorage<`u`&&localStorage.setItem(e,t)}function pe(e){return typeof sessionStorage>`u`?null:sessionStorage.getItem(e)}function me(e,t){typeof sessionStorage<`u`&&sessionStorage.setItem(e,t)}function he(e=`npm`){return k(D.PACKAGE_MANAGER)??e}function ge(e){A(D.PACKAGE_MANAGER,e)}function _e(e=`pull-request`){return k(D.COMMIT_METHOD)??e}function ve(e){A(D.COMMIT_METHOD,e)}function ye(e=``){return k(D.TEMPLATE_ID)??e}function be(e){A(D.TEMPLATE_ID,e)}function xe(e=!1){let t=k(D.CREATE_BRANCH_AFTER_PR);return t===null?e:t===`true`}function Se(e){A(D.CREATE_BRANCH_AFTER_PR,e.toString())}function Ce(e=!1){let t=k(D.CREATE_WORKSPACE_AFTER_PR);return t===null?e:t===`true`}function we(e){A(D.CREATE_WORKSPACE_AFTER_PR,e.toString())}function Te(e=!1){let t=k(D.PRIVATE_REPOSITORY_DEFAULT);return t===null?e:t===`true`}function Ee(e){A(D.PRIVATE_REPOSITORY_DEFAULT,e.toString())}function De(e=!1){let t=k(D.NEW_CHAT_ON_NEW_BRANCH);return t===null?e:t===`true`}function Oe(e){A(D.NEW_CHAT_ON_NEW_BRANCH,e.toString())}function ke(){let e=pe(O.MESSAGE_HISTORY);return e?JSON.parse(e):[]}function Ae(e){let t=ke();e.trim()&&t[t.length-1]!==e&&(t.push(e),me(O.MESSAGE_HISTORY,JSON.stringify(t)))}function je(e){return typeof sessionStorage>`u`?null:sessionStorage.getItem(e)}function Me(e,t){typeof sessionStorage<`u`&&sessionStorage.setItem(e,t)}function Ne(e=`default`){return je(O.SKILL_SOURCE_SELECTION)??e}function Pe(e){Me(O.SKILL_SOURCE_SELECTION,e)}function j(e){return`${O.SKILL_CATALOG_PREFIX}${e}`}function Fe(e){let t=je(j(e));if(!t)return null;try{return JSON.parse(t)}catch{return null}}function Ie(e,t){Me(j(e),JSON.stringify(t))}function Le(e){typeof sessionStorage<`u`&&sessionStorage.removeItem(j(e))}var Re=`tarsk.skills.customSources`;function ze(){if(typeof localStorage>`u`)return[];let e=localStorage.getItem(Re);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.id==`string`&&typeof e.title==`string`&&typeof e.url==`string`):[]}catch{return[]}}function Be(){typeof localStorage<`u`&&localStorage.removeItem(Re)}function Ve(){typeof localStorage<`u`&&(localStorage.removeItem(`tarsk.general.conversationLevel`),localStorage.removeItem(`tarsk.general.imageBackground`),localStorage.removeItem(`tarsk.general.wallpaperMode`),localStorage.removeItem(`tarsk.general.wallpaperColor`),localStorage.removeItem(`tarsk.general.frostedPanelOpacity`))}typeof localStorage<`u`&&Ve();var He=new Set([`top`,`left`,`right`,`bottom`]);function Ue(e){return He.has(e)}function We(e=`top`){let t=k(D.ACTIVITY_BAR_POSITION);return t!==null&&Ue(t)?t:e}function Ge(e){A(D.ACTIVITY_BAR_POSITION,e)}function Ke(e){return e===`left`||e===`right`}function qe(e){switch(e){case`top`:return`bottom`;case`bottom`:return`top`;case`left`:return`right`;case`right`:return`left`}}function Je(e=100){let t=k(D.FONT_SCALE);if(t!==null){let e=Number(t);if(Number.isFinite(e)&&e>=50&&e<=300)return e}return e}function Ye(e){A(D.FONT_SCALE,String(e))}var Xe=/^#[0-9a-fA-F]{6}$/,Ze=`#82c309`;function Qe(e=Ze){let t=k(D.BRAND_COLOR);return t!==null&&Xe.test(t)?t:e}function $e(e){Xe.test(e)&&A(D.BRAND_COLOR,e.toLowerCase())}var et=new Set([`summary`,`list`,`kanban`]);function tt(e){return e===`automations`?D.AUTOMATION_LIST_VIEW_MODE:D.TASK_LIST_VIEW_MODE}function nt(e){let t=k(tt(e));return t!==null&&et.has(t)?t:null}function rt(e=`tasks`,t=`summary`){let n=nt(e);if(n!==null)return e===`automations`&&n===`kanban`?`list`:n;if(e===`automations`){let e=nt(`tasks`)??t;return e===`kanban`?`list`:e}return t}function it(e,t){let n=e===`automations`&&t===`kanban`?`list`:t;A(tt(e),n)}function at(){return k(D.LAST_TASK_TAG)}function ot(e){A(D.LAST_TASK_TAG,e)}function st(e=`VS Code`){return k(D.OPEN_WITH_PROGRAM)??e}function ct(e){A(D.OPEN_WITH_PROGRAM,e)}function lt(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.fetchedAt==`number`&&(t.serverBindMode===`local`||t.serverBindMode===`network`)&&Array.isArray(t.networkAddresses)&&t.networkAddresses.every(e=>typeof e==`string`)}function ut(){let e=k(D.SERVER_BIND_MODE);if(!e)return null;try{let t=JSON.parse(e);return lt(t)?t:null}catch{return null}}function dt(e){A(D.SERVER_BIND_MODE,JSON.stringify({...e,fetchedAt:e.fetchedAt??Date.now()}))}var ft=`641`;function pt(){return typeof window>`u`?null:window.Capacitor?.getPlatform?.()??null}function mt(){return M()&&pt()===`ios`}function ht(){return k(D.SERVER_URL)}function gt(e){A(D.SERVER_URL,e)}function _t(e){try{return new URL(e).hostname}catch{return``}}function vt(e){let t=e.trim();if(!t)return``;let n=/^https?:\/\//i.test(t)?t:`https://${t}`;try{let e=new URL(n);if(de(e.hostname))return``;if(T(e.hostname)){let t=w(e.hostname);return t?E(t)??``:``}}catch{return``}if(/^https?:\/\//i.test(t))try{let e=new URL(t);return e.protocol!==`http:`&&e.protocol!==`https:`||!e.hostname?``:e.origin}catch{return``}let r=(t.split(`/`)[0]??``).replace(/:\d+$/,``);return r?`http://${r}:${ft}`:``}function M(){if(typeof window>`u`)return!1;if(window.Capacitor?.isNativePlatform?.())return!0;let e=window.location.protocol;return e===`capacitor:`||e===`ionic:`||e===`file:`}function yt(){let e=ht();if(e){let t=_t(e);if(t)return t}return M()?``:document.location.hostname}async function bt(e){try{return(await fetch(`${e.replace(/\/$/,``)}/health`,{method:`GET`})).ok}catch{return!1}}function xt(e){let t=vt(e);if(t){if(M()){gt(t),window.location.reload();return}window.location.assign(t)}}function N(){return typeof window<`u`&&`__electrobunWebviewId`in window}function St(){return typeof document<`u`&&document.location.port===`8100`}function P(){if(typeof document>`u`)return null;let{protocol:e,hostname:t,port:n,host:r,origin:i}=document.location;if(e!==`http:`&&e!==`https:`)return null;if(i&&t&&T(t)){let e=w(t);if(e)return E(e)??i}return i||`${e}//${r??(n?`${t}:${n}`:t)}`}function F(){if(typeof document>`u`)return`http://localhost:641`;let{hostname:e,port:t}=document.location;return t===`8100`?`http://${e}:462`:P()||`http://${e}:641`}function I(){if(N()){let e=P();if(e)return e}if(!M())return F();let e=ht();return e?e.replace(/\/$/,``):F()}function L(e){let t=e.startsWith(`/`)?e:`/${e}`;return`${I()}${t}`}function R(e){if(!e)return`Unknown error`;if(typeof e.message==`string`&&e.message.trim())return e.message.trim();if(typeof e.error==`string`)return e.error.trim()||`Unknown error`;if(e.error&&typeof e.error==`object`){let t=e.error.message;if(typeof t==`string`&&t.trim())return t.trim();let n=e.error.details;return typeof n==`string`&&n.trim()?n.trim():`Unknown error`}return`Unknown error`}async function z(e){try{return R(await e.json())}catch{}return e.statusText||`Unknown error`}function B(e,t,n){let r=Error(e);return n?.error&&typeof n.error==`object`&&(r.details=n.error.details,r.code=n.error.code),r}async function Ct(e){let t;try{t=await e.json()}catch{}throw B(R(t)||e.statusText||`Unknown error`,e,t)}async function V(e,t,n,r){let i=await fetch(L(t),{...r,method:e,headers:{"Content-Type":`application/json`,...r?.headers},body:n?JSON.stringify(n):void 0});if(!i.ok){let e=await z(i);throw Error(e)}return i}async function wt(e,t){let n=await fetch(L(e),{...t,method:`GET`});if(!n.ok){let e=await z(n);throw Error(e)}return n.blob()}async function H(e,t){let n=await fetch(L(e),{...t,method:`GET`});if(!n.ok){let e=await z(n);throw Error(e)}return n.json()}async function U(e,t,n){return(await V(`POST`,e,t,n)).json()}async function Tt(e,t,n){return(await V(`POST`,e,t,n)).blob()}async function Et(e,t,n){let r=await fetch(L(e),{...n,method:`POST`,headers:{"Content-Type":`application/octet-stream`,...n?.headers},body:t});if(!r.ok){let e=await z(r);throw Error(e)}return r.json()}async function W(e,t,n){return(await V(`PUT`,e,t,n)).json()}async function G(e,t,n){return(await V(`PATCH`,e,t,n)).json()}async function Dt(e,t,n){return(await V(`PUT`,e,t,n)).body}async function K(e,t){let n=await fetch(L(e),{...t,method:`DELETE`});if(!n.ok){let e=await z(n);throw Error(e)}if(n.status!==204)return n.json()}async function Ot(e,t){let n=await fetch(L(e),{...t,method:`DELETE`});if(!n.ok){let e=await z(n);throw Error(e)}return n.body}async function q(e,t,n){let r=await fetch(L(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0,signal:n?.signal});return r.ok||await Ct(r),r.body}async function kt(e,t){let n=await fetch(L(e),{...t,method:`GET`});return n.ok||await Ct(n),n.body}async function J(e,t,n){let r=await fetch(L(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e;try{e=await r.json()}catch{}throw B(R(e)||r.statusText||`Unknown error`,r,e)}return r.json()}async function At(e,t,n){let r=await fetch(L(e),{...n,method:`PUT`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e;try{e=await r.json()}catch{}throw B(R(e)||r.statusText||`Unknown error`,r,e)}return r.json()}function Y(...e){return e.map(e=>encodeURIComponent(String(e))).join(`/`)}var X=n(`gitops.ttl-cache`),Z=new class{cache=new Map;inFlightRequests=new Map;generations=new Map;async get(e,t,n){let r=e.startsWith(`unified-git-status-`),i=r?performance.now():0,a=this.inFlightRequests.get(e);if(a)return r&&X.debug(`in-flight-reuse`,{key:e}),a;let o=this.cache.get(e);if(o&&Date.now()<o.expires){if(r){let t=Math.round(performance.now()-i);X.debug(`cache hit`,{key:e,duration:t})}return o.data}r&&X.debug(`cache miss, fetching`,{key:e});let s=this.generations.get(e)??0,c=t().then(t=>{if((this.generations.get(e)??0)===s){if(this.cache.set(e,{data:t,expires:Date.now()+n}),r){let t=Math.round(performance.now()-i);X.debug(`stored in cache`,{key:e,duration:t})}}else r&&X.debug(`skipped stale cache write`,{key:e});return t}).finally(()=>{this.inFlightRequests.get(e)===c&&this.inFlightRequests.delete(e)});return this.inFlightRequests.set(e,c),c}getSync(e){let t=this.cache.get(e);if(t&&Date.now()<t.expires)return t.data}bumpGeneration(e){this.generations.set(e,(this.generations.get(e)??0)+1)}invalidate(e){this.cache.delete(e),this.inFlightRequests.delete(e),this.bumpGeneration(e)}invalidatePattern(e){let t=[];for(let n of this.cache.keys())e.test(n)&&t.push(n);for(let n of this.inFlightRequests.keys())e.test(n)&&!t.includes(n)&&t.push(n);for(let e of t)this.cache.delete(e),this.inFlightRequests.delete(e),this.bumpGeneration(e)}clear(){for(let e of new Set([...this.cache.keys(),...this.inFlightRequests.keys(),...this.generations.keys()]))this.bumpGeneration(e);this.cache.clear(),this.inFlightRequests.clear()}};function jt(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.rel=`noopener`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}function Mt(e,t=`image/png`){let n=atob(e),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new Blob([r],{type:t})}function Nt(e){let t=e.indexOf(`,`),n=e.slice(0,t);return Mt(e.slice(t+1),n.match(/^data:([^;]+)/)?.[1]??`image/png`)}async function Pt(e){if(e.imageData)return Mt(e.imageData);if(e.imageUrl){if(e.imageUrl.startsWith(`data:`))return Nt(e.imageUrl);let t=c(e.imageUrl,I()),n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch image: ${n.status}`);return n.blob()}throw Error(`imageUrl or imageData is required`)}function Ft(e){return!e.imageUrl||o(e.imageUrl)?e:{...e,imageUrl:c(e.imageUrl,I())}}async function It(e){let t=e.filename??`generated-image-${Date.now()}.png`;try{return jt(await Pt(e),t),{path:t}}catch{if(!e.imageUrl||e.imageUrl.startsWith(`data:`))throw Error(`imageUrl or imageData is required`);let n=document.createElement(`a`);return n.href=e.imageUrl,n.download=t,n.target=`_blank`,n.rel=`noopener noreferrer`,document.body.appendChild(n),n.click(),document.body.removeChild(n),{path:t}}}async function Lt(e){let t=await Pt(e);if(!navigator.clipboard?.write)throw Error(`Clipboard API not available`);let n=t.type||`image/png`,r=t.type?t:new Blob([t],{type:n});await navigator.clipboard.write([new ClipboardItem({[n]:r})])}async function Rt(e){return N()?U(`api/image/save`,Ft(e)):It(e)}async function zt(e){if(N()){await U(`api/image/clipboard`,Ft(e));return}await Lt(e)}function Bt(e){let t=e.trim().toLowerCase();return t===`load failed`||t===`stream ended without a completion frame`||t.includes(`failed to fetch`)||t.includes(`network error`)||t.includes(`network connection was lost`)||t.includes(`networkrequestfailed`)||t.includes(`networkrequest failed`)||t.includes(`socket is not connected`)}function Vt(e){if(e instanceof Error&&`code`in e&&typeof e.code==`string`)return e.code}function Ht(e){if(Vt(e)===`THREAD_BUSY`)return!0;if(!(e instanceof Error))return!1;let t=e.message.toLowerCase();return t.includes(`already processing a message`)||t.includes(`already being processed`)||t.includes(`multiple chat windows are processing`)}function Ut(e,t){return Ht(e)?t?.trim()?!0:e instanceof Error&&!e.message.toLowerCase().includes(`multiple chat windows`):!1}var Wt=50;function Gt(e,t,n,r,i){let a=e.getReader(),o=!1;function s(){o=!0,a.cancel().catch(()=>{})}let c=new TextDecoder,l=``,u=0;function d(e){let t=e.content?.trim();if(t)return v(t);let n=e.error?.message?.trim();if(n)return v(n);let r=e.message?.trim();return r?v(r):`Unknown error`}function f(e){if(!e)return!1;let t=e.trim();return t.length>200?!1:[/^Cannot read properties/i,/^Error:/i,/^TypeError:/i,/^ReferenceError:/i,/^SyntaxError:/i,/^failed to/i,/^error:/i,/^forbidden/i,/^unauthorized/i].some(e=>e.test(t))}async function p(){u+=1,!(u<Wt)&&(u=0,await new Promise(e=>{setTimeout(e,0)}))}async function m(e){return e.type===`ping`?`continue`:e.type===`error`?(r(d(e)),n(),`stop`):e.type===`message`?(i?.({role:e.role??`assistant`,content:e.content??``,isThinking:e.isThinking}),`continue`):e.type===`complete`?(n(),`stop`):e.type===`result`&&f(e.content)?(r(v(e.content??`Unknown error`)),n(),`stop`):(t(e),await p(),`continue`)}async function h(){if(!l.trim())return`continue`;try{return await m(JSON.parse(l))}catch{return l.trim()&&t({type:`result`,content:l}),`continue`}}async function ee(e){let t=e.trim();if(!t)return`continue`;try{return await m(JSON.parse(t))}catch{return`continue`}}async function te(){return o||await h()===`stop`?`stop`:(r(`Stream ended without a completion frame`),n(),`stop`)}async function g(e){l+=c.decode(e,{stream:!0});let t=l.split(`
2
+ `);l=t.pop()??``;for(let e of t)if(o||await ee(e)===`stop`)return`stop`;return`continue`}async function _(){try{for(;!o;){let{done:e,value:t}=await a.read();if(e||o){e&&await te();break}if(await g(t)===`stop`)return}}catch(e){o||(r(e instanceof Error?e.message:`Stream error`),n())}}return _(),s}var Kt=n(`gitops.api`);async function qt(e,t=!1,n=!1){let r=new URLSearchParams;t&&r.set(`fresh`,`true`),n&&r.set(`asyncRefresh`,`true`);let i=r.toString(),a=i?`api/git/unified-status/${Y(e)}?${i}`:`api/git/unified-status/${Y(e)}`,o=performance.now();Kt.debug(`getUnifiedGitStatus start`,{threadId:e,fresh:t});try{return await H(a)}finally{let n=Math.round(performance.now()-o);Kt.debug(`getUnifiedGitStatus end`,{threadId:e,fresh:t,duration:n})}}async function Jt(e,t,n){return(await U(`api/git/generate-commit-message/${Y(e)}`,{model:t,provider:n})).message}async function Yt(e,t){await U(`api/git/commit/${Y(e)}`,{message:t})}async function Xt(e){await U(`api/git/push/${Y(e)}`)}async function Zt(e){await U(`api/git/pull/${Y(e)}`)}async function Qt(e){return U(`api/git/sync-branch/${Y(e)}`,{})}async function $t(e,t,n,r){return U(`api/git/generate-pr-info/${Y(e)}`,{model:t,provider:n,baseBranch:r})}async function en(e,t,n,r){return U(`api/git/create-pr/${Y(e)}`,{title:t,description:n,baseBranch:r})}async function tn(e){await U(`api/git/fetch/${Y(e)}`)}async function nn(e,t,n){return U(`api/git/create-branch/${Y(e)}`,{baseBranch:t,branchName:n})}async function rn(e,t){return U(`api/git/revert-file/${Y(e)}`,{filePath:t})}async function an(e,t=50){return(await H(`api/git/log/${Y(e)}?limit=${t}`)).commits}async function on(e){return H(`api/git/pr-status/${Y(e)}`)}async function sn(e,t,n,r){return U(`api/git/create-repo/${Y(e)}`,{repoName:t,description:n,isPrivate:r})}async function cn(e,t){return U(`api/git/checkpoint/${Y(e)}`,{messageId:t})}async function ln(e,t){return U(`api/git/checkpoint-restore/${Y(e)}`,{checkpointRef:t})}async function un(e){return H(`api/git/diff/${Y(e)}`)}async function dn(e,t,n){return wt(`api/git/media/${Y(e)}?path=${encodeURIComponent(t)}&version=${n}`)}async function fn(e){return U(`api/git/cleanup-deleted-branches/${Y(e)}`)}async function pn(e){return Z.get(`workspace-changes-${e}`,async()=>H(`api/git/workspace-changes/${Y(e)}`),1e4)}async function mn(){return(await H(`api/skills/popular`)).skills??[]}async function hn(){return(await H(`api/skills/sources`)).sources??[]}async function gn(e){return(await H(`api/skills/catalog?${new URLSearchParams({sourceId:e}).toString()}`)).skills??[]}async function _n(e,t){return U(`api/skills/sources/verify`,{title:e,url:t})}async function vn(e,t,n){return W(`api/skills/sources/${Y(e)}`,{title:t,url:n})}async function yn(e){await K(`api/skills/sources/${Y(e)}`)}async function bn(e){return(await U(`api/skills/sources/import`,{sources:e})).sources??[]}async function xn(e,t){return H(`api/skills/catalog/files?${new URLSearchParams({sourceId:e,skillId:t}).toString()}`)}async function Sn(e,t,n){return H(`api/skills/catalog/file?${new URLSearchParams({sourceId:e,skillId:t,relativePath:n}).toString()}`)}async function Cn(){return(await H(`api/agents/popular`)).agents??[]}async function wn(){return(await H(`api/slash-commands/popular`)).commands??[]}async function Tn(e,t,n,r,i){return U(`api/threads/${Y(e)}/ai-files/github-folder`,{gitHubRepo:t,gitHubFolder:n,destPath:r,gitHubRef:i})}async function En(e,t,n,r){return U(`api/threads/${Y(e)}/ai-files/catalog-skill`,{sourceId:t,skillId:n,destPath:r})}var Dn=n(`gitops.api`);async function On(){return H(`api/scaffold/templates`)}async function kn(){return(await H(`api/scaffold/check-vp`)).installed}async function An(){return U(`api/scaffold/install-vp`,{})}async function jn(e,t,n,r){return q(`api/scaffold`,{projectName:e,templateId:t,packageManager:n},{signal:r})}async function Mn(){return Z.get(`providers`,async()=>H(`api/providers`),6e4)}function Nn(e){return`${I()}/api/providers/${Y(e)}/logo`}function Pn(e){return`https://models.tarsk.io/svg/${Y(e)}.svg`}async function Fn(e){return Z.get(`provider-credits-${e}`,async()=>H(`api/providers/${Y(e)}/credits`),3e4)}async function In(){return(await H(`api/providers/openrouter/oauth/start`)).url}async function Ln(e,t){await U(`api/providers/keys`,{providerName:e,apiKey:t}),Z.invalidate(`providers`)}async function Rn(e){await U(`api/providers/env`,{values:e}),Z.invalidate(`providers`)}function Q(e){return typeof window>`u`?!1:window.open(e,`_blank`,`noopener,noreferrer`)!==null}async function zn(e){if(typeof window<`u`&&!N()){Q(e);return}try{await U(`api/providers/open-external`,{url:e})}catch(t){if(Q(e))return;throw t instanceof Error?t:Error(`Failed to open URL`)}}async function Bn(){return U(`api/account/delete`,{})}async function Vn(){return U(`api/account/quit`,{})}async function Hn(){return H(`api/account/spend`)}async function Un(){return H(`api/account/statistics`)}async function Wn(){return K(`api/account/statistics`)}async function Gn(){return H(`api/account/settings`)}async function Kn(){return H(`api/slack/settings`)}async function qn(){await K(`api/logs`)}async function Jn(e){return kt(`api/logs/stream`,e)}async function Yn(e){try{await U(`api/logs`,e)}catch(e){Dn.debug(`Failed to post client log entry`,e)}}async function Xn(){return H(`api/slack/manifest`)}async function Zn(e){return W(`api/slack/tokens`,e)}async function Qn(){await K(`api/slack/tokens`)}async function $n(e){return U(`api/slack/bindings`,e)}async function er(e,t){await K(`api/slack/bindings/${Y(e)}/${Y(t)}`)}async function tr(e){return W(`api/account/settings`,e)}async function nr(){return H(`api/account/remote-machines`)}async function rr(e){return J(`api/account/remote-machines`,{address:e})}async function ir(e,t){return G(`api/account/remote-machines/${Y(e)}`,{machineName:t})}async function ar(e){return K(`api/account/remote-machines/${Y(e)}`)}async function or(){return H(`api/voice-model/status`)}async function sr(e,t){return(await U(`api/voice-model/process-transcript`,{text:e,threadId:t?.threadId,provider:t?.provider,model:t?.model})).text}async function cr(){return Z.get(`available-programs`,async()=>(await H(`api/programs`)).programs??[],3e5)}async function lr(){return(await H(`api/processes`)).processes}async function ur(e){await U(`api/processes/${Y(e)}/kill`)}async function dr(){return Z.get(`processing-threads`,async()=>{let e=await H(`api/threads/processing`);return{processingThreadIds:e.processingThreadIds??[],processingRuns:e.processingRuns??[],unavailableThreadIds:e.unavailableThreadIds??[]}},0)}async function fr(e){let t=new URLSearchParams({since:e.since});return e.ids&&t.set(`ids`,e.ids),Z.get(`processing-roster:${t.toString()}`,async()=>(await H(`api/conversations/processing-roster?${t.toString()}`)).conversations??[],0)}async function pr(){return H(`api/git/auth-status`)}async function mr(){return Z.get(`git-user`,async()=>{try{let e=await H(`api/git/user`);return{name:e.name??``,email:e.email??``}}catch{return{name:``,email:``}}},6e5)}async function hr(){return(await mr()).name}async function gr(){return Z.get(`projects`,async()=>{let t=await H(`api/projects`),n=Array.isArray(t)?t:t.projects??[],r=Array.isArray(t)?null:t.cloneRootPath??null;return{projects:(n||[]).map(t=>{let n=t;return{projectId:n.projectId??n.id,name:n.name,gitUrl:n.gitUrl,projectPath:n.projectPath??n.path,threads:n.threads??[],commands:n.commands??[],setupScript:n.setupScript,runCommand:n.runCommand,planPrompt:n.planPrompt,testPrompt:n.testPrompt,reviewPrompt:n.reviewPrompt,customSystemPrompt:n.customSystemPrompt,useCustomSystemPrompt:!!n.useCustomSystemPrompt,allowAllCommands:n.allowAllCommands!==!1,allowedCommandPatterns:n.allowedCommandPatterns??[],defaultChatMode:e(n.defaultChatMode)?n.defaultChatMode:void 0,disabledTools:n.disabledTools??void 0,useBuiltInBrowser:n.useBuiltInBrowser!==!1,projectIcon:n.projectIcon,tasksModifiedCount:Number(n.tasksModifiedCount)||0,type:n.type===`bot`?`bot`:`standard`,builtIn:n.builtIn===!0}}).map(e=>{let t=(e.threads||[]).map(e=>{let t=e,n=t.threadId??t.id;return{threadId:n,title:t.title??n,path:t.path??``,currentBranch:t.currentBranch??``,remoteMachineId:t.remoteMachineId,remoteMachineName:t.remoteMachineName,remotePublicUrl:t.remotePublicUrl,remoteUnavailable:t.remoteUnavailable===!0,currentConversationId:t.currentConversationId,chatTitles:t.chatTitles,conversationModels:t.conversationModels,hasUnreadAutomatedChat:t.hasUnreadAutomatedChat===!0,isSelected:!!t.isSelected,model:t.model??void 0,modelProvider:t.modelProvider??void 0,gitStatusDot:p(t.gitStatusDot),prNumber:m(t.prNumber)}});return{...e,threads:t}}),cloneRootPath:r}},3e4)}async function _r(){let e=await H(`api/projects/remote-snapshots`);return(Array.isArray(e.snapshots)?e.snapshots:[]).map(function(e){let t=e;return{threadId:t.threadId??``,remoteMachineName:t.remoteMachineName,remoteUnavailable:t.remoteUnavailable===!0,currentBranch:t.currentBranch??``,gitStatusDot:t.gitStatusDot===void 0?void 0:p(t.gitStatusDot),prNumber:t.prNumber===null?null:m(t.prNumber),currentConversationId:t.currentConversationId===null?null:t.currentConversationId,chatTitles:t.chatTitles===null?null:t.chatTitles,conversationModels:t.conversationModels===null?null:t.conversationModels,model:t.model===null?null:t.model??void 0,modelProvider:t.modelProvider===null?null:t.modelProvider??void 0,hasUnreadAutomatedChat:t.hasUnreadAutomatedChat===!0}})}async function vr(){return H(`api/projects/storage-free`)}async function yr(e){await U(`api/projects/${Y(e)}/tasks/clear-modifications`)}async function br(e,t,n){return q(`api/projects`,{gitUrl:e,commitMethod:t},{signal:n})}async function xr(e,t){await U(`api/projects/git-auth/${encodeURIComponent(e)}`,t)}async function Sr(e){return q(`api/projects/open-folder`,{},{signal:e})}async function Cr(e,t){return q(`api/projects/open-path`,{path:e},{signal:t})}async function wr(e,t){return q(`api/projects/new-folder`,{projectName:e},{signal:t})}async function Tr(e,t){return q(`api/projects/new-bot`,{projectName:e},{signal:t})}function Er(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let e=typeof r.result==`string`?r.result:``,n=e.indexOf(`,`);t(n>=0?e.slice(n+1):e)},r.onerror=()=>n(r.error),r.readAsDataURL(e)})}async function Dr(e,t,n,r){return q(`api/projects/from-zip`,{data:await Er(e),name:t,overrideProjectId:n},{signal:r})}async function Or(e){return Z.get(`project-${e}`,async()=>{let t=await H(`api/projects/${Y(e)}`);return{...t,projectPath:t.projectPath??t.path}},3e4)}async function kr(e){return H(`api/projects/${Y(e)}/env-vars`)}async function Ar(e){return(await H(`api/projects/${Y(e)}/window-state`)).state}async function jr(e,t){await At(`api/projects/${Y(e)}/window-state`,{state:t})}async function Mr(e,t,n){return U(`api/projects/${Y(e)}/replace-unique-text`,{oldText:t,newText:n})}async function Nr(e,t){await W(`api/projects/${Y(e)}/env-vars`,{vars:t})}async function Pr(e){await K(`api/projects/${Y(e)}`),Z.invalidate(`projects`)}function Fr(e){Z.invalidate(`projects`),e&&Z.invalidate(`project-${e}`)}async function Ir(e,t,n){return q(`api/threads`,{projectId:e,title:t,branchName:n?.branchName,sourceThreadId:n?.sourceThreadId,remoteMachineId:n?.remoteMachineId},{signal:n?.signal})}async function Lr(e,t){let n=await Ot(`api/threads/${Y(t)}?stream=true`);return Z.invalidate(`projects`),n}async function Rr(e,t){await G(`api/threads/${Y(e)}`,t),Z.invalidate(`thread-${e}`),(`model`in t||`modelProvider`in t||`chatTitles`in t||`diffComments`in t)&&Z.invalidate(`projects`)}async function zr(e,t,n){return(await U(`api/threads/${Y(e)}/generate-title`,{prompt:t,provider:n?.provider,model:n?.model})).title}async function Br(e,t){return U(`api/threads/${Y(e)}/fix-comments`,{comments:t})}async function Vr(e,t){await U(`api/threads/${Y(t)}/select`)}function Hr(e,t){let n=new URLSearchParams;t&&n.set(`conversationId`,t),n.set(`events`,`recent`);let r=n.toString(),i=`api/threads/${Y(e)}/messages`;return r.length>0?`${i}?${r}`:i}async function Ur(e,t){return{threadId:e,messages:await H(Hr(e,t))}}async function Wr(e,n,r=1,i=t){let a=new URLSearchParams({offset:String(r),limit:String(i)});return H(`api/threads/${Y(e)}/observations/${Y(n)}?${a}`)}async function Gr(e){return(await H(`api/threads/${Y(e)}/conversation-folder-path`)).path}async function Kr(e,t,n,r=[],i,a,o,s,c,l,u,d,f,p,m){return i?.throwIfAborted(),q(`api/chat`,{threadId:e,content:t,model:n,provider:a,planMode:o,ralphMode:s,orchestrateMode:u,autoRoute:d,checkpointRef:c,conversationId:l,goal:f,idempotencyKey:m,perfTraceId:p?.traceId,perfSubmitMs:p?.submitMs,attachments:r.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:typeof e.size==`number`?e.size:0,mimeType:e.mimeType||`application/octet-stream`}))},{signal:i})}async function qr(e,t,n,r=[],i,a,o,s,c){return U(`api/chat`,{threadId:e,content:t,model:n,provider:i,planMode:a,ralphMode:o,orchestrateMode:s,autoRoute:c,runInBackground:!0,attachments:r.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:typeof e.size==`number`?e.size:0,mimeType:e.mimeType||`application/octet-stream`}))})}async function Jr(e,t,n,r,i,a){await U(`api/chat/${Y(e)}/steer`,{messageId:t,content:n,conversationId:r,model:i,attachments:a.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:typeof e.size==`number`?e.size:0,mimeType:e.mimeType||`application/octet-stream`}))})}async function Yr(e,t,n){let r=new URLSearchParams({replay:`compact`}),i=n?.trim();return i&&r.set(`conversationId`,i),kt(`api/chat/subscribe/${Y(e)}?${r.toString()}`,{signal:t})}async function Xr(e){let t=await K(`api/chat/${Y(e)}`);return Z.invalidate(`thread-${e}`),t?.conversationId||``}async function Zr(e,t,n){return U(`api/chat/${Y(e)}/agent-note`,{content:t,...n})}async function Qr(e,t){return J(`api/chat/${Y(e)}/compact`,t)}async function $r(e,t){let n=await U(`api/chat/${Y(e)}/workspace-handoff`,t);return typeof n.brief==`string`?n.brief:``}async function ei(e,t){let n=new URLSearchParams,r=t?.conversationId?.trim();r&&n.set(`conversationId`,r),t?.runId&&n.set(`runId`,t.runId),t?.all&&n.set(`all`,`1`);let i=n.size>0?`?${n.toString()}`:``,a=await J(`api/chat/stop/${Y(e)}${i}`);if(a.success!==!0)throw Error(a.message||`Backend did not acknowledge stopping the run`)}async function $(e,t){return t.runNow&&t.setupScript?Dt(`api/projects/${Y(e)}`,t):(await At(`api/projects/${Y(e)}`,t),Fr(e),null)}async function ti(e,t){await J(`api/projects/${Y(e)}/open`,{program:t})}async function ni(e,t){await J(`api/threads/${Y(e)}/open`,{program:t})}async function ri(e,t){await $(e,{program:t})}async function ii(e,t,n){return $(e,{setupScript:t,runNow:n})}async function ai(e,t){await $(e,{name:t})}async function oi(e,t){let n=new URLSearchParams({provider:e});t!==void 0&&n.set(`supportedTools`,t?`true`:`false`),n.set(`useCase`,`coding`);let r=`available-models-${n.toString()}`;return Z.get(r,async()=>{let e=await H(`api/models?${n.toString()}`);return{models:e.models??[],enabledModelIds:e.enabledModelIds??[]}},12e4)}async function si(e){let t=new URLSearchParams({useCase:e}),n=`available-models-all-${e}`;return Z.get(n,async()=>(await H(`api/models/all?${t.toString()}`)).providers??{},12e4)}async function ci(e,t){await U(`api/models/${Y(e,t)}/enable`),Z.invalidate(`enabled-models`),Z.invalidatePattern(/^available-models-/),Z.invalidatePattern(/^available-image-models-/)}async function li(e,t){await U(`api/models/${Y(e,t)}/disable`),Z.invalidate(`enabled-models`),Z.invalidatePattern(/^available-models-/),Z.invalidatePattern(/^available-image-models-/)}async function ui(e,t,n){await U(`api/models/${Y(e,t)}/settings`,n),Z.invalidatePattern(/^available-models-/),Z.invalidate(`enabled-models`)}async function di(){return Z.get(`enabled-models`,async()=>(await H(`api/models/enabled?useCase=coding`)).enabledModels??{},12e4)}async function fi(e){let t=new URLSearchParams({provider:e,useCase:`image`}),n=`available-image-models-${e}`;return Z.get(n,async()=>{let e=await H(`api/models?${t.toString()}`);return{models:e.models??[],enabledModelIds:e.enabledModelIds??[]}},12e4)}async function pi(){return Z.get(`enabled-image-models`,async()=>(await H(`api/models/enabled?useCase=image`)).enabledModels??{},12e4)}async function mi(e,t){await U(`api/models/${Y(e,t)}/enable?useCase=image`),Z.invalidate(`enabled-image-models`),Z.invalidatePattern(/^available-models-/),Z.invalidatePattern(/^available-image-models-/)}async function hi(e,t){await U(`api/models/${Y(e,t)}/disable?useCase=image`),Z.invalidate(`enabled-image-models`),Z.invalidatePattern(/^available-models-/),Z.invalidatePattern(/^available-image-models-/)}async function gi(e,t,n,r,i,a,o=crypto.randomUUID()){function s(){r&&ei(r,{conversationId:i,runId:o}).catch(function(){})}a?.addEventListener(`abort`,s,{once:!0});try{a?.aborted&&(s(),a.throwIfAborted());let c=await U(`api/image/generate`,{prompt:e,model:t,provider:n,threadId:r,conversationId:i,runId:o},{signal:a});return a?.throwIfAborted(),c}finally{a?.removeEventListener(`abort`,s)}}async function _i(e){await zt(e)}async function vi(e){return Rt(e)}async function yi(e){return U(`api/projects/${Y(e)}/tool-definitions/export`,{})}async function bi(e,t){return Tt(`api/projects/${Y(e)}/plugin-export`,t)}async function xi(e,t){return U(`api/projects/${Y(e)}/plugin-import/preview`,{url:t})}async function Si(e,t){return U(`api/projects/${Y(e)}/plugin-import`,t)}async function Ci(e,t){return U(`api/projects/${Y(e)}/plugin-upload`,t)}async function wi(e){let t=await U(`api/models/${Y(e)}/refresh`);return Z.invalidatePattern(/^available-models-/),Z.invalidatePattern(/^available-image-models-/),Z.invalidate(`enabled-models`),Z.invalidate(`enabled-image-models`),t.modelCount??0}async function Ti(e,t){await U(`api/projects/${Y(e)}/commands`,t)}async function Ei(e,t){await K(`api/projects/${Y(e)}/commands/${Y(t)}`)}async function Di(e){return H(`api/projects/${Y(e)}/package-scripts`)}async function Oi(e){return H(`api/threads/${Y(e)}/files`)}async function ki(e){return(await H(`api/threads/${Y(e)}/project-scripts`)).scripts}async function Ai(e,t,n,r){let{relativeFolder:i,...a}=r??{},o={scriptName:t,command:n};return i&&(o.relativeFolder=i),q(`api/threads/${Y(e)}/project-scripts/run`,o,a)}async function ji(e,t){return U(`api/threads/${Y(e)}/project-scripts/stop`,{scriptName:t})}async function Mi(e){return Z.get(`thread-${e}`,async()=>H(`api/threads/${e}`),45e3)}async function Ni(e){return U(`api/projects/${Y(e)}/run-suggest`,{})}async function Pi(e){return U(`api/projects/${Y(e)}/setup-suggest`,{})}async function Fi(e,t,n){return Dn.info(`Start dev server requested`,{projectId:e,threadId:t}),Z.invalidate(`dev-server-running-${e}${t?`-${t}`:``}`),q(`api/projects/${Y(e)}/run`,{threadId:t},{signal:n})}async function Ii(e,t){return Z.invalidate(`dev-server-running-${e}${t?`-${t}`:``}`),U(`api/projects/${Y(e)}/stop`,t?{threadId:t}:{})}async function Li(e,t,n){return U(`api/projects/${Y(e)}/free-port`,{port:t,...n?{threadId:n}:{}})}async function Ri(e,t){return Z.get(`dev-server-running-${e}${t?`-${t}`:``}`,async()=>H(`api/projects/${Y(e)}/running${t?`?threadId=${encodeURIComponent(t)}`:``}`),3e3)}async function zi(e){return H(`api/projects/${Y(e)}/system-prompt`)}async function Bi(){return H(`api/onboarding/status`)}async function Vi(){return H(`api/onboarding/git-check`)}async function Hi(){return U(`api/onboarding/complete`,{})}async function Ui(){return U(`api/onboarding/reset`,{})}async function Wi(){return H(`api/onboarding/recommended-models`)}async function Gi(e){return(await H(`api/slash-commands?threadId=${Y(e)}`)).commands??[]}async function Ki(e){let t=await H(`api/slash-commands?threadId=${Y(e)}`);return{commands:t.commands??[],skills:t.skills??[],bundledSkills:t.bundledSkills??[]}}async function qi(e,t,n,r,i){return U(`api/slash-commands`,{name:e,content:t,metadata:n,scope:r,threadId:i})}async function Ji(e,t){let n=await fetch(`http://localhost:641/api/slash-commands`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e,threadId:t})});if(!n.ok)throw Error(`Failed to delete slash command: ${n.statusText}`);return n.json()}async function Yi(e){let t=new URLSearchParams;e?.threadId?t.set(`threadId`,e.threadId):e?.projectId&&t.set(`projectId`,e.projectId);let n=t.toString();await K(`api/conversations${n?`?${n}`:``}`)}async function Xi(e=7){let t=new URLSearchParams;return t.set(`archivedOnly`,`1`),t.set(`olderThanDays`,String(e)),K(`api/conversations?${t.toString()}`)}async function Zi(e=20,t=0,n,i){return H(`api/conversations/recent?limit=${Math.min(Math.max(e,1),100)}&offset=${Math.max(t,0)}${n?`&projectId=${encodeURIComponent(n)}`:``}${i?.unreadOnly?`&unreadOnly=1`:``}${i?.archivedOnly?`&archivedOnly=1`:``}&${r}=${i?.order??`updated`}`)}async function Qi(e,t){await J(`api/conversations/${Y(e)}/${Y(t)}/read`,{})}async function $i(e){return(await H(`api/conversations/${Y(e)}/completions`)).conversationIds??[]}async function ea(e){await K(`api/conversations/${Y(e)}/complete`)}async function ta(e,t){await K(`api/conversations/${Y(e)}/${Y(t)}/complete`)}async function na(e){await U(`api/git/scan-merged-prs/${Y(e)}`,{})}async function ra(e,t){await K(`api/conversations/${Y(e)}/${Y(t)}/read`)}async function ia(e,t){await J(`api/conversations/${Y(e)}/${Y(t)}/archive`,{})}async function aa(e,t){await K(`api/conversations/${Y(e)}/${Y(t)}/archive`)}async function oa(e,t){return(await H(`api/conversations/${Y(e)}/${Y(t)}/sibling`)).hasSibling}async function sa(e,t,n){await G(`api/conversations/${Y(e)}/${Y(t)}/title`,{title:n})}async function ca(e,t,n){await G(`api/conversations/${Y(e)}/${Y(t)}/model`,{model:n.model,modelProvider:n.modelProvider})}async function la(e,t){let n=new URLSearchParams({conversationId:e});return t&&n.set(`threadId`,t),H(`api/goals?${n}`)}async function ua(e,t){return U(`api/goals/${Y(e)}/pause`,t?{threadId:t}:{})}async function da(e,t){return U(`api/goals/${Y(e)}/resume`,t?{threadId:t}:{})}async function fa(e,t){return U(`api/goals/${Y(e)}/end`,t?{threadId:t}:{})}async function pa(e,t){return H(`api/conversations/${Y(e)}/${Y(t)}/usage`)}async function ma(e,t,n){let r=`context-breakdown-${e}-${t}`;return n?.forceRefresh&&Z.invalidate(r),Z.get(r,async()=>H(`api/conversations/${Y(e)}/${Y(t)}/context`),45e3)}async function ha(e,t){return H(`api/conversations/${Y(e)}/${Y(t)}/context/tool-definitions`)}async function ga(){try{return await H(`api/update/check`)}catch{return{updateAvailable:!1,supported:!1}}}async function _a(){return U(`api/update/apply`)}async function va(e){return(await H(`api/ask-user/pending${e?`?threadId=${encodeURIComponent(e)}`:``}`)).questions??[]}async function ya(e,t,n){await U(`api/ask-user/respond`,{...typeof t==`string`?{toolCallId:e,answer:t}:{toolCallId:e,answers:t},...n?{threadId:n}:{}})}async function ba(e){await U(`api/ask-user/credentials`,e)}async function xa(e,t,n){await U(`api/shell-permission/respond`,{toolCallId:e,decision:t,pattern:n?.pattern,projectId:n?.projectId,...n?.threadId?{threadId:n.threadId}:{}})}async function Sa(e,t,n){await U(`api/shell-permission/respond`,{toolCallId:e,escalationScope:t===`skip`?void 0:t,escalationDecision:t===`skip`?`skip`:void 0,...n?{threadId:n}:{}})}async function Ca(e,t,n){await U(`api/web-fetch-permission/respond`,{toolCallId:e,decision:t,...n?{threadId:n}:{}})}async function wa(e,t){await U(`api/browser/ready`,{toolCallId:e,webviewId:t})}async function Ta(e,t,n){await U(`api/browser/action-result`,{toolCallId:e,result:t,...n?{threadId:n}:{}})}async function Ea(e){return H(`api/mcp/config?projectPath=${encodeURIComponent(e)}`)}async function Da(e,t,n){return W(`api/mcp/config`,{projectPath:e,serverName:t,serverConfig:n})}async function Oa(e,t){return K(`api/mcp/config/${Y(t)}?projectPath=${encodeURIComponent(e)}`)}async function ka(e,t){return U(`api/mcp/discover`,{projectPath:e,serverName:t})}async function Aa(){return(await H(`api/mcp/popular`)).servers??[]}async function ja(e,t){return U(`api/mcp/oauth/authorize`,{projectPath:e,serverName:t})}async function Ma(e,t){return H(`api/mcp/oauth/status?projectPath=${encodeURIComponent(e)}&serverName=${encodeURIComponent(t)}`)}async function Na(e,t){return K(`api/mcp/oauth?projectPath=${encodeURIComponent(e)}&serverName=${encodeURIComponent(t)}`)}async function Pa(e){return(await H(`api/projects/${Y(e)}/ai-files`)).nodes??[]}async function Fa(e,t){return K(`api/projects/${Y(e)}/ai-file?path=${encodeURIComponent(t)}`)}async function Ia(e,t){return H(`api/projects/${Y(e)}/ai-file?path=${encodeURIComponent(t)}`)}async function La(e,t,n){return W(`api/projects/${Y(e)}/ai-file`,{path:t,content:n})}async function Ra(e,t,n){return W(`api/projects/${Y(e)}/ai-files/skill/model-invocation`,{name:t,disableModelInvocation:n})}async function za(e){return(await H(`api/threads/${Y(e)}/ai-files`)).nodes??[]}async function Ba(e,t,n){return W(`api/threads/${Y(e)}/ai-file`,{path:t,content:n})}async function Va(e,t,n){return U(`api/threads/${Y(e)}/ai-files/skill`,{name:t,description:n})}async function Ha(e,t,n){return W(`api/threads/${Y(e)}/ai-files/skill/model-invocation`,{name:t,disableModelInvocation:n})}async function Ua(e,t,n,r){return U(`api/threads/${Y(e)}/ai-files/agent`,{name:t,description:n,tools:r})}async function Wa(e,t){return K(`api/threads/${Y(e)}/ai-file?path=${encodeURIComponent(t)}`)}export{Li as $,Ye as $i,ba as $n,jt as $r,Si as $t,Ei as A,Ce as Ai,Da as An,cn as Ar,zi as At,li as B,Ne as Bi,qr as Bn,fn as Br,On as Bt,jn as C,a as Ca,Be as Ci,Ui as Cn,gn as Cr,fr as Ct,Ua as D,Qe as Di,Ai as Dn,Tn as Dr,Pa as Dt,Ir as E,qe as Ei,Na as En,En as Er,Ia as Et,er as F,ke as Fi,Ln as Fn,an as Fr,Nn as Ft,bi as G,ye as Gi,Fi as Gn,Zt as Gr,Hn as Gt,mi as H,pe as Hi,Ra as Hn,nn as Hr,Kn as Ht,Ji as I,De as Ii,Ba as In,dn as Ir,Mn as It,fi as J,Ge as Ji,ei as Jn,Qt as Jr,za as Jt,yi as K,Ue as Ki,In as Kn,Xt as Kr,vr as Kt,Lr as L,he as Li,na as Ln,on as Lr,Zi as Lt,Pr as M,at as Mi,La as Mn,Jt as Mr,gr as Mt,Fa as N,ze as Ni,jr as Nn,$t as Nr,Fn as Nt,Va as O,_e as Oi,Ti as On,vn as Or,kr as Ot,ar as P,k as Pi,Rn as Pn,un as Pr,Pn as Pt,Br as Q,we as Qi,ya as Qn,Ut as Qr,oa as Qt,Wa as R,st as Ri,Vr as Rn,pn as Rr,Wi as Rt,Dr as S,l as Sa,Ae as Si,Wn as Sn,wn as Sr,Aa as St,qi as T,We as Ti,da as Tn,bn as Tr,Or as Tt,ci as U,Fe as Ui,Zn as Un,en as Ur,Gi as Ut,ka as V,ut as Vi,ca as Vn,Yt as Vr,Xn as Vt,fa as W,rt as Wi,Ha as Wn,tn as Wr,Ki as Wt,$i as X,ve as Xi,ji as Xn,Bt as Xr,ha as Xt,oi as Y,$e as Yi,Ii as Yn,ln as Yr,Oi as Yt,va as Z,Se as Zi,Jn as Zn,Gt as Zr,or as Zt,Hi as _,g as _a,M as _i,wi as _n,yn as _r,Ea as _t,ga as a,Ee as aa,wt as ai,Qi as an,Pi as ar,di as at,wr as b,h as ba,D as bi,Ta as bn,Cn as br,Bi as bt,Xi as c,me as ca,Et as ci,Cr as cn,ra as cr,lr as ct,Yi as d,be as da,N as di,ua as dn,ai as dr,pa as dt,ot as ea,Z as ei,An as en,Sa as er,gi as et,qn as f,x as fa,vt as fi,Zr as fn,ri as fr,pr as ft,Qr as g,v as ga,mt as gi,Vn as gn,Ci as gr,Un as gt,ea as h,ue as ha,pt as hi,sr as hn,Rr as hr,la as ht,ja as i,ct as ia,I as ii,nr as in,Ni as ir,pi as it,Oa as j,Je as ji,ui as jn,sn as jr,Ar as jt,Bn as k,xe as ki,vi as kn,_n as kr,ki as kt,Xr as l,Ie as la,W as li,ti as ln,tr as lr,ma as lt,Qn as m,T as ma,yt as mi,xi as mn,ir as mr,hr as mt,_a as n,Oe as na,Y as ni,Ri as nn,Ca as nr,$r as nt,Vi as o,Pe as oa,G as oi,zn as on,Nr as or,cr as ot,yr as p,oe as pa,xt as pi,Yn as pn,ii as pr,mr as pt,si as q,Ke as qi,Jr as qn,rn as qr,Mi as qt,ia as r,ge as ra,H as ri,ur as rn,Yr as rr,Gn as rt,kn as s,dt as sa,U as si,Sr as sn,aa as sr,Ur as st,rr as t,A as ta,K as ti,Fr as tn,xa as tr,zr as tt,ta as u,it as ua,St as ui,ni as un,$ as ur,Gr as ut,_i as v,ee as va,bt as vi,sa as vn,Sn as vr,Ma as vt,$n as w,s as wa,Le as wi,xr as wn,hn as wr,dr as wt,br as x,f as xa,O as xi,wa as xn,mn as xr,Di as xt,Tr as y,te as ya,Ze as yi,Mr as yn,xn as yr,Wr as yt,hi as z,Te as zi,Kr as zn,qt as zr,_r as zt};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{o as t,t as n}from"./react-vendor-D61Uve5n.js";import{U as r,x as i}from"./dist-v_MvKS2-.js";import{mn as a}from"./api-C4ukGdyH.js";import{t as o}from"./button-DDaJhJP1.js";import{i as s,n as c,r as l,t as u}from"./card-DAc45J1v.js";var d=e(t(),1),f=n(),p=i(`app.async-error-boundary.ui`),m=class extends d.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){p.error(`AsyncErrorBoundary caught an error`,{error:e,info:t}),a({level:`ERROR`,context:`app.async-error-boundary.ui`,message:`AsyncErrorBoundary caught an error`,data:{message:e.message,stack:e.stack,componentStack:t.componentStack}})}handleRetry=()=>{this.setState({error:null}),this.props.onRetry?.()};render(){let{error:e}=this.state;return e?this.props.renderFallback?this.props.renderFallback(e,this.handleRetry):(0,f.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,f.jsxs)(u,{className:`max-w-md`,children:[(0,f.jsx)(l,{children:(0,f.jsx)(s,{className:`text-destructive`,children:this.props.fallbackTitle??`Something went wrong`})}),(0,f.jsxs)(c,{className:`space-y-4`,children:[(0,f.jsx)(`p`,{className:r.body,children:e.message}),(0,f.jsx)(o,{variant:`outline`,onClick:this.handleRetry,children:`Retry`})]})]})}):this.props.children}};export{m as t};
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{o as t,t as n}from"./react-vendor-D61Uve5n.js";import{U as r,x as i}from"./dist-v_MvKS2-.js";import{pn as a}from"./api-Cp9I7CxD.js";import{t as o}from"./button-DDaJhJP1.js";import{i as s,n as c,r as l,t as u}from"./card-DAc45J1v.js";var d=e(t(),1),f=n(),p=i(`app.async-error-boundary.ui`),m=class extends d.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){p.error(`AsyncErrorBoundary caught an error`,{error:e,info:t}),a({level:`ERROR`,context:`app.async-error-boundary.ui`,message:`AsyncErrorBoundary caught an error`,data:{message:e.message,stack:e.stack,componentStack:t.componentStack}})}handleRetry=()=>{this.setState({error:null}),this.props.onRetry?.()};render(){let{error:e}=this.state;return e?this.props.renderFallback?this.props.renderFallback(e,this.handleRetry):(0,f.jsx)(`div`,{className:`flex h-full items-center justify-center p-6`,children:(0,f.jsxs)(u,{className:`max-w-md`,children:[(0,f.jsx)(l,{children:(0,f.jsx)(s,{className:`text-destructive`,children:this.props.fallbackTitle??`Something went wrong`})}),(0,f.jsxs)(c,{className:`space-y-4`,children:[(0,f.jsx)(`p`,{className:r.body,children:e.message}),(0,f.jsx)(o,{variant:`outline`,onClick:this.handleRetry,children:`Retry`})]})]})}):this.props.children}};export{m as t};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,t as r}from"./react-vendor-D61Uve5n.js";import{U as i,x as a}from"./dist-v_MvKS2-.js";import{Z as o,n as s,r as c}from"./store-W78TGOIO.js";import{D as l,h as u,n as d}from"./chat-handlers-context-2xSKzkKa.js";import{bn as f,pi as p,sn as m}from"./api-C4ukGdyH.js";import{t as h}from"./utils-CqsIXqSC.js";import{t as g}from"./external-link-Dcikmdm_.js";import{t as _}from"./button-DDaJhJP1.js";import{i as v,n as y,r as b,t as x}from"./tooltip-CqwCZ7wt.js";import{i as S,r as C}from"./use-browser-overlay-block-CO1pUEAZ.js";import{t as w}from"./use-toast-CKgZ8YeP.js";import{n as T}from"./chat-dock-context-a2bV9cnz.js";import{o as E}from"./remote-media-url-CyuN31H_.js";import{$n as D,A as O,Bn as k,Dn as A,Dt as j,N as M,O as N,Or as P,Pn as F,Sn as I,Zn as L,_ as R,b as z,c as B,g as V,gn as H,h as U,kr as W,l as G,m as K,p as q,v as J,x as Y,y as ee}from"./index-CoY8DilQ.js";import{t as te}from"./use-active-dock-panel-instance-4Ss8lB9K.js";var X=e(n(),1),Z=t();async function ne(e){let{projectId:t,oldText:n,newText:r,selection:i,replaceUnique:a=f}=e;if(n===r)return{kind:`unchanged`};try{let e=await a(t,n,r);if(e.applied&&e.path)return{kind:`replaced`,path:e.path}}catch{}return{kind:`prompt`,prompt:V(i,n,r)}}var Q=r();function re(e){let t=(0,Z.c)(43),{onCommit:n,onCancelPreview:r}=e,i=s(),{selectedThreadId:a,selectedProjectId:u,projects:f}=N(),p;t[0]===a?p=t[1]:(p=e=>a?e.projectModelSelections[a]:void 0,t[0]=a,t[1]=p);let m=c(p),{selectedBrowserElement:h,setSelectedBrowserElement:g,setIsEditModeEnabled:v,setBrowserAgentProcessingThreadId:y}=E(),{handleSend:b}=d(),{paneId:x,conversationId:S}=l(),[C,T]=(0,X.useState)(!1),D;if(t[2]!==f||t[3]!==u){let e;t[5]===u?e=t[6]:(e=e=>e.projectId===u,t[5]=u,t[6]=e),D=f.find(e),t[2]=f,t[3]=u,t[4]=D}else D=t[4];let O=D,k;t[7]===h?k=t[8]:(k=J(h),t[7]=h,t[8]=k);let A=k,j;t[9]!==v||t[10]!==g?(j=()=>{T(!1),v(!1),g(null)},t[9]=v,t[10]=g,t[11]=j):j=t[11];let M=j,P;t[12]!==S||t[13]!==i||t[14]!==M||t[15]!==b||t[16]!==x||t[17]!==O?.lastSelectedModel||t[18]!==O?.lastSelectedModelProvider||t[19]!==u||t[20]!==a||t[21]!==y||t[22]!==m?.id||t[23]!==m?.provider?(P=async e=>{if(!u){w({title:`No project selected`,description:`Open a project to apply text edits.`,variant:`destructive`}),M();return}T(!0);let t=await ne({projectId:u,oldText:e.originalText,newText:e.currentText,selection:e.selection});if(t.kind===`unchanged`){w({title:`No text changes detected`}),M();return}if(t.kind===`replaced`){w({title:`Text updated`,description:`Replaced in ${t.path}`}),M();return}let n=m?.id??O?.lastSelectedModel,r=m?.provider??O?.lastSelectedModelProvider;if(!a||!n){w({title:`Could not apply text change`,description:`Select a chat thread and model to send this change as a prompt.`,variant:`destructive`}),T(!1);return}b(x,S,t.prompt,n,[],r),i({type:o.SetChatInputDraft,threadId:x===`primary`?a:`${a}:${x}`,draft:``}),y(a),M()},t[12]=S,t[13]=i,t[14]=M,t[15]=b,t[16]=x,t[17]=O?.lastSelectedModel,t[18]=O?.lastSelectedModelProvider,t[19]=u,t[20]=a,t[21]=y,t[22]=m?.id,t[23]=m?.provider,t[24]=P):P=t[24],O?.lastSelectedModel,O?.lastSelectedModelProvider,m?.id,m?.provider;let F=P,I,L;t[25]===A?(I=t[26],L=t[27]):(I=()=>{A||T(!1)},L=[A],t[25]=A,t[26]=I,t[27]=L),(0,X.useEffect)(I,L);let z,B;t[28]===F?(z=t[29],B=t[30]):(z=()=>{let e=function(e){let t=e.detail;R(t)&&F(t)},t=function(e){let t=ee(e.data);t&&F(t)};return window.addEventListener(q,e),window.addEventListener(`message`,t),function(){window.removeEventListener(q,e),window.removeEventListener(`message`,t)}},B=[F],t[28]=F,t[29]=z,t[30]=B),(0,X.useEffect)(z,B);let V;t[31]!==M||t[32]!==r?(V=function(){r(),M()},t[31]=M,t[32]=r,t[33]=V):V=t[33];let H=V;if(!A)return null;let U;t[34]!==C||t[35]!==n?(U=(0,Q.jsx)(_,{type:`button`,size:`sm`,onClick:n,disabled:C,children:`Apply Changes`}),t[34]=C,t[35]=n,t[36]=U):U=t[36];let W;t[37]!==H||t[38]!==C?(W=(0,Q.jsx)(_,{type:`button`,size:`sm`,variant:`outline`,onClick:H,disabled:C,children:`Cancel`}),t[37]=H,t[38]=C,t[39]=W):W=t[39];let G;return t[40]!==U||t[41]!==W?(G=(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-center gap-2 border-b border-border px-3 py-2`,children:[U,W]}),t[40]=U,t[41]=W,t[42]=G):G=t[42],G}function ie(e){let t=e.trim();return t?(!t.startsWith(`http://`)&&!t.startsWith(`https://`)&&(t=`http://${t}`),t):``}function ae(e){return typeof e==`string`?e:typeof e==`object`&&e&&`url`in e&&typeof e.url==`string`?e.url:``}function oe(e){return e?e.querySelector(`electrobun-webview`):null}function se(e){e.webviewId!=null&&(e.toggleHidden(!0),e.togglePassthrough(!0))}function ce(e){e.webviewId!=null&&(e.toggleHidden(!1),e.togglePassthrough(!1),e.syncDimensions(!0))}function le(e,t){if(t){ce(e);return}se(e)}function ue(e){return e!=null&&e.getClientRects().length>0}function de(e,t,n){let r=!1,i=0;function a(){if(!r){if(e.webviewId==null){i=requestAnimationFrame(a);return}t&&e.getAttribute(`src`)!==t&&e.loadURL(t),le(e,n())}}return i=requestAnimationFrame(a),function(){r=!0,cancelAnimationFrame(i)}}function fe(e){let t=(0,Z.c)(8),{useNativeWebview:n,shouldRenderNativeWebview:r,currentUrl:i,resolveWebview:a}=e,[o,s]=(0,X.useState)(r),c;t[0]!==a||t[1]!==r||t[2]!==n?(c=()=>{if(!n)return;if(r){s(!0);return}let e=a();e&&se(e);let t=requestAnimationFrame(()=>{s(!1)});return function(){cancelAnimationFrame(t)}},t[0]=a,t[1]=r,t[2]=n,t[3]=c):c=t[3];let l;return t[4]!==i||t[5]!==r||t[6]!==n?(l=[r,n,i],t[4]=i,t[5]=r,t[6]=n,t[7]=l):l=t[7],(0,X.useLayoutEffect)(c,l),o}var pe=a(`browser.preview-scripting`);function me(e,t=!1,n=`select`){return`(function () {
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,t as r}from"./react-vendor-D61Uve5n.js";import{U as i,x as a}from"./dist-v_MvKS2-.js";import{Z as o,n as s,r as c}from"./store-W78TGOIO.js";import{D as l,h as u,n as d}from"./chat-handlers-context-DYU2LQ5V.js";import{di as f,on as p,yn as m}from"./api-Cp9I7CxD.js";import{t as h}from"./utils-CqsIXqSC.js";import{t as g}from"./external-link-Dcikmdm_.js";import{t as _}from"./button-DDaJhJP1.js";import{i as v,n as y,r as b,t as x}from"./tooltip-CqwCZ7wt.js";import{i as S,r as C}from"./use-browser-overlay-block-CO1pUEAZ.js";import{t as w}from"./use-toast-CKgZ8YeP.js";import{n as T}from"./chat-dock-context-DbiJNr3O.js";import{o as E}from"./remote-media-url-C-GdJb-D.js";import{A as D,Dr as O,Dt as k,En as A,Er as j,N as M,Nn as N,O as P,Qn as F,Xn as I,_ as L,b as R,c as z,g as B,gn as V,h as H,l as U,m as W,p as G,v as K,x as q,xn as J,y as Y,zn as ee}from"./index-CcAwxnT5.js";import{t as te}from"./use-active-dock-panel-instance-kmJOnmL7.js";var X=e(n(),1),Z=t();async function ne(e){let{projectId:t,oldText:n,newText:r,selection:i,replaceUnique:a=m}=e;if(n===r)return{kind:`unchanged`};try{let e=await a(t,n,r);if(e.applied&&e.path)return{kind:`replaced`,path:e.path}}catch{}return{kind:`prompt`,prompt:B(i,n,r)}}var Q=r();function re(e){let t=(0,Z.c)(43),{onCommit:n,onCancelPreview:r}=e,i=s(),{selectedThreadId:a,selectedProjectId:u,projects:f}=P(),p;t[0]===a?p=t[1]:(p=e=>a?e.projectModelSelections[a]:void 0,t[0]=a,t[1]=p);let m=c(p),{selectedBrowserElement:h,setSelectedBrowserElement:g,setIsEditModeEnabled:v,setBrowserAgentProcessingThreadId:y}=E(),{handleSend:b}=d(),{paneId:x,conversationId:S}=l(),[C,T]=(0,X.useState)(!1),D;if(t[2]!==f||t[3]!==u){let e;t[5]===u?e=t[6]:(e=e=>e.projectId===u,t[5]=u,t[6]=e),D=f.find(e),t[2]=f,t[3]=u,t[4]=D}else D=t[4];let O=D,k;t[7]===h?k=t[8]:(k=K(h),t[7]=h,t[8]=k);let A=k,j;t[9]!==v||t[10]!==g?(j=()=>{T(!1),v(!1),g(null)},t[9]=v,t[10]=g,t[11]=j):j=t[11];let M=j,N;t[12]!==S||t[13]!==i||t[14]!==M||t[15]!==b||t[16]!==x||t[17]!==O?.lastSelectedModel||t[18]!==O?.lastSelectedModelProvider||t[19]!==u||t[20]!==a||t[21]!==y||t[22]!==m?.id||t[23]!==m?.provider?(N=async e=>{if(!u){w({title:`No project selected`,description:`Open a project to apply text edits.`,variant:`destructive`}),M();return}T(!0);let t=await ne({projectId:u,oldText:e.originalText,newText:e.currentText,selection:e.selection});if(t.kind===`unchanged`){w({title:`No text changes detected`}),M();return}if(t.kind===`replaced`){w({title:`Text updated`,description:`Replaced in ${t.path}`}),M();return}let n=m?.id??O?.lastSelectedModel,r=m?.provider??O?.lastSelectedModelProvider;if(!a||!n){w({title:`Could not apply text change`,description:`Select a chat thread and model to send this change as a prompt.`,variant:`destructive`}),T(!1);return}b(x,S,t.prompt,n,[],r),i({type:o.SetChatInputDraft,threadId:x===`primary`?a:`${a}:${x}`,draft:``}),y(a),M()},t[12]=S,t[13]=i,t[14]=M,t[15]=b,t[16]=x,t[17]=O?.lastSelectedModel,t[18]=O?.lastSelectedModelProvider,t[19]=u,t[20]=a,t[21]=y,t[22]=m?.id,t[23]=m?.provider,t[24]=N):N=t[24],O?.lastSelectedModel,O?.lastSelectedModelProvider,m?.id,m?.provider;let F=N,I,R;t[25]===A?(I=t[26],R=t[27]):(I=()=>{A||T(!1)},R=[A],t[25]=A,t[26]=I,t[27]=R),(0,X.useEffect)(I,R);let z,B;t[28]===F?(z=t[29],B=t[30]):(z=()=>{let e=function(e){let t=e.detail;L(t)&&F(t)},t=function(e){let t=Y(e.data);t&&F(t)};return window.addEventListener(G,e),window.addEventListener(`message`,t),function(){window.removeEventListener(G,e),window.removeEventListener(`message`,t)}},B=[F],t[28]=F,t[29]=z,t[30]=B),(0,X.useEffect)(z,B);let V;t[31]!==M||t[32]!==r?(V=function(){r(),M()},t[31]=M,t[32]=r,t[33]=V):V=t[33];let H=V;if(!A)return null;let U;t[34]!==C||t[35]!==n?(U=(0,Q.jsx)(_,{type:`button`,size:`sm`,onClick:n,disabled:C,children:`Apply Changes`}),t[34]=C,t[35]=n,t[36]=U):U=t[36];let W;t[37]!==H||t[38]!==C?(W=(0,Q.jsx)(_,{type:`button`,size:`sm`,variant:`outline`,onClick:H,disabled:C,children:`Cancel`}),t[37]=H,t[38]=C,t[39]=W):W=t[39];let q;return t[40]!==U||t[41]!==W?(q=(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center justify-center gap-2 border-b border-border px-3 py-2`,children:[U,W]}),t[40]=U,t[41]=W,t[42]=q):q=t[42],q}function ie(e){let t=e.trim();return t?(!t.startsWith(`http://`)&&!t.startsWith(`https://`)&&(t=`http://${t}`),t):``}function ae(e){return typeof e==`string`?e:typeof e==`object`&&e&&`url`in e&&typeof e.url==`string`?e.url:``}function oe(e){return e?e.querySelector(`electrobun-webview`):null}function se(e){e.webviewId!=null&&(e.toggleHidden(!0),e.togglePassthrough(!0))}function ce(e){e.webviewId!=null&&(e.toggleHidden(!1),e.togglePassthrough(!1),e.syncDimensions(!0))}function le(e,t){if(t){ce(e);return}se(e)}function ue(e){return e!=null&&e.getClientRects().length>0}function de(e,t,n){let r=!1,i=0;function a(){if(!r){if(e.webviewId==null){i=requestAnimationFrame(a);return}t&&e.getAttribute(`src`)!==t&&e.loadURL(t),le(e,n())}}return i=requestAnimationFrame(a),function(){r=!0,cancelAnimationFrame(i)}}function fe(e){let t=(0,Z.c)(8),{useNativeWebview:n,shouldRenderNativeWebview:r,currentUrl:i,resolveWebview:a}=e,[o,s]=(0,X.useState)(r),c;t[0]!==a||t[1]!==r||t[2]!==n?(c=()=>{if(!n)return;if(r){s(!0);return}let e=a();e&&se(e);let t=requestAnimationFrame(()=>{s(!1)});return function(){cancelAnimationFrame(t)}},t[0]=a,t[1]=r,t[2]=n,t[3]=c):c=t[3];let l;return t[4]!==i||t[5]!==r||t[6]!==n?(l=[r,n,i],t[4]=i,t[5]=r,t[6]=n,t[7]=l):l=t[7],(0,X.useLayoutEffect)(c,l),o}var pe=a(`browser.preview-scripting`);function me(e,t=!1,n=`select`){return`(function () {
2
2
  const api = window.__tarskBrowserPreview;
3
3
  if (!api || typeof api.setSelectMode !== "function") {
4
4
  log.error("[browser-preview] selection API is not available");
@@ -9,4 +9,4 @@ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,t as r}f
9
9
  const api = window.__tarskBrowserPreview;
10
10
  if (!api || typeof api.${t} !== "function") return;
11
11
  api.${t}();
12
- })();`}function ge(e,t,n=!1,r=`select`){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);try{e.executeJavascript(me(t,n,r))}catch(i){throw pe.error(`[browser-preview] Failed to toggle native preview selection mode`,{enabled:t,preserveSelection:n,interaction:r,src:e.src,webview_id:e.webviewId,error:i instanceof Error?i.message:String(i),stack:i instanceof Error?i.stack:void 0}),i}}function _e(e,t){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);e.executeJavascript(t)}function ve(e,t,n=!1,r=`select`){let i=e.contentWindow;if(!i)throw Error(`Browser preview frame is not ready`);let a=i.__tarskBrowserPreview;if(!a?.setSelectMode)throw Error(`Browser preview selection API is not available in iframe preview`);a.setSelectMode(t,n,r)}function ye(e,t){let n=e.contentWindow?.__tarskBrowserPreview;if(!n||typeof n[t===`commit`?`commitTextEdit`:`cancelTextEdit`]!=`function`){pe.warn(`[browser-preview] Preview text-edit API unavailable; action ignored`,{action:t,src:e.src});return}if(t===`commit`){n.commitTextEdit?.();return}n.cancelTextEdit?.()}var be=a(`app.browser-tab.ui`),xe=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`,`Home`,`End`]),Se=new Set([`INPUT`,`TEXTAREA`,`SELECT`]),Ce=new Set([`combobox`,`listbox`,`menu`,`menubar`,`menuitem`,`option`,`radiogroup`,`tablist`,`tab`,`grid`,`slider`,`spinbutton`]);function we(e){if(Se.has(e.tagName)||e.isContentEditable)return!0;let t=e.getAttribute(`role`);return t!==null&&Ce.has(t)}function Te(e){return e instanceof HTMLElement&&we(e)}function Ee(e,t,n){let[r,i]=(0,X.useState)(!0),a=(0,X.useSyncExternalStore)(G,B),o=(0,X.useSyncExternalStore)(S,C),s=t&&(r&&!o||a),c=(0,X.useRef)(s);c.current=s;let l=(0,X.useCallback)(function(){return c.current},[]),u=(0,X.useCallback)(function(){i(ue(e.current))},[]);return(0,X.useLayoutEffect)(u),(0,X.useEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(u);return n.observe(t),function(){n.disconnect()}},[u,n]),{shouldShowWebview:s,readWebviewVisibility:l}}function De({devServerUrl:e,devServerStopped:t,isBrowserActive:n,currentUrl:r,browserResetTrigger:i,webviewRef:a,iframeRef:o,setCurrentUrl:s,setPendingUrl:c,setInputUrl:l,setSelectionModeError:u,setIsSelectModeEnabled:d,setIsEditModeEnabled:f,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,setBrowserAgentProcessingThreadId:h}){let g=(0,X.useRef)(r),_=(0,X.useRef)(null);g.current=r,(0,X.useEffect)(()=>{s(``),c(``),l(``),u(null),d(!1),f(!1),p(null),m(!1),h(null);let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``)},[i,h,d,f,m,p]),(0,X.useEffect)(()=>{if(t&&!e){s(``),c(``),l(``),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null));let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``);return}if(!e)return;let r=ie(e);l(r),(!g.current||g.current===_.current)&&(s(r),c(r),_.current=r),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null))},[e,t,n,h,d,f,m,p])}function Oe(e,t,n,r){let i=(0,Z.c)(9),a;i[0]!==n||i[1]!==e||i[2]!==r||i[3]!==t?(a=()=>{if(!e||!t)return;let i=function(e){xe.has(e.key)&&(Te(e.target)||r.current?.contains(e.target)||(e.preventDefault(),n()))};return document.addEventListener(`keydown`,i,!0),function(){document.removeEventListener(`keydown`,i,!0)}},i[0]=n,i[1]=e,i[2]=r,i[3]=t,i[4]=a):a=i[4];let o;i[5]!==n||i[6]!==e||i[7]!==t?(o=[e,t,n],i[5]=n,i[6]=e,i[7]=t,i[8]=o):o=i[8],(0,X.useEffect)(a,o)}function ke(e){let t=(0,Z.c)(13),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,resolveWebview:a,setCurrentUrl:o,setPendingUrl:s,setInputUrl:c,setSelectionModeError:l}=e,u;t[0]!==i||t[1]!==r||t[2]!==a||t[3]!==o||t[4]!==c||t[5]!==s||t[6]!==l||t[7]!==n?(u=()=>{let e=a();if(!n||!e||!r)return;let t=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),s(``),c(t))},u=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),c(t))},d=function(e){let t=ae(e.detail);t&&m(t)},f=function(e){let t=Y(e.detail);if(t){U(t);return}let n=z(e.detail);n&&(l(null),K(n))};return e.on(`did-navigate`,t),e.on(`did-navigate-in-page`,u),e.on(`new-window-open`,d),e.on(`host-message`,f),function(){e.off(`did-navigate`,t),e.off(`did-navigate-in-page`,u),e.off(`new-window-open`,d),e.off(`host-message`,f)}},t[0]=i,t[1]=r,t[2]=a,t[3]=o,t[4]=c,t[5]=s,t[6]=l,t[7]=n,t[8]=u):u=t[8];let d;t[9]!==i||t[10]!==r||t[11]!==n?(d=[i,n,r],t[9]=i,t[10]=r,t[11]=n,t[12]=d):d=t[12],(0,X.useEffect)(u,d)}function Ae(e){let t=(0,Z.c)(23),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,deviceMode:a,shouldShowWebview:o,pendingUrl:s,readWebviewVisibility:c,resolveWebview:l}=e,u;t[0]!==r||t[1]!==l||t[2]!==o||t[3]!==n?(u=()=>{if(!n||!r)return;let e=l();e&&e.webviewId!=null&&le(e,o)},t[0]=r,t[1]=l,t[2]=o,t[3]=n,t[4]=u):u=t[4];let d;t[5]!==i||t[6]!==a||t[7]!==r||t[8]!==o||t[9]!==n?(d=[r,n,i,a,o],t[5]=i,t[6]=a,t[7]=r,t[8]=o,t[9]=n,t[10]=d):d=t[10],(0,X.useLayoutEffect)(u,d);let f;t[11]!==r||t[12]!==s||t[13]!==c||t[14]!==l||t[15]!==n?(f=()=>{let e=l();if(n&&e&&s&&r)return de(e,s,c)},t[11]=r,t[12]=s,t[13]=c,t[14]=l,t[15]=n,t[16]=f):f=t[16];let p;t[17]!==i||t[18]!==r||t[19]!==s||t[20]!==c||t[21]!==n?(p=[s,n,i,r,c],t[17]=i,t[18]=r,t[19]=s,t[20]=c,t[21]=n,t[22]=p):p=t[22],(0,X.useEffect)(f,p)}function je(e){let t=(0,Z.c)(23),{isBrowserActive:n,currentUrl:r,isSelectModeEnabled:i,isEditModeEnabled:a,isSelectionPromptOpen:o,nativeWebviewMounted:s,useNativeWebview:c,resolveWebview:l,iframeRef:u,setIsSelectModeEnabled:d,setIsEditModeEnabled:f,setSelectionModeError:p}=e,m;t[0]!==r||t[1]!==u||t[2]!==n||t[3]!==a||t[4]!==i||t[5]!==o||t[6]!==s||t[7]!==l||t[8]!==f||t[9]!==d||t[10]!==p||t[11]!==c?(m=()=>{if(!n)return;if(!r){i&&d(!1),a&&f(!1);return}let e=!1,t=i||a,m=a?`edit`:`select`,h=!t&&o;return(function(){try{if(c){let e=l();if(!e||e.webviewId==null||!s)return;ge(e,t,h,m);return}let e=u.current;if(!e)return;ve(e,t,h,m)}catch(n){let r=n;if(e||!t)return;let i=r instanceof Error?r.message:`Could not enable element selection.`;be.error(`Failed to toggle browser selection mode:`,r),p(i),d(!1),f(!1),w({title:`Selection mode unavailable`,description:i,variant:`destructive`})}})(),function(){e=!0}},t[0]=r,t[1]=u,t[2]=n,t[3]=a,t[4]=i,t[5]=o,t[6]=s,t[7]=l,t[8]=f,t[9]=d,t[10]=p,t[11]=c,t[12]=m):m=t[12];let h;t[13]!==r||t[14]!==n||t[15]!==a||t[16]!==i||t[17]!==o||t[18]!==s||t[19]!==f||t[20]!==d||t[21]!==c?(h=[r,n,a,i,o,s,f,d,c],t[13]=r,t[14]=n,t[15]=a,t[16]=i,t[17]=o,t[18]=s,t[19]=f,t[20]=d,t[21]=c,t[22]=h):h=t[22],(0,X.useEffect)(m,h)}function Me(e){let t=(0,Z.c)(23),n=te(e,`browser`),{devServerUrl:r,devServerStopped:i}=M(),{browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:l,setIsSelectModeEnabled:u,isEditModeEnabled:d,setIsEditModeEnabled:f,selectedBrowserElement:p,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,isSelectionPromptOpen:g,setBrowserAgentProcessingThreadId:_}=E(),v=c(Pe),y=c(Ne),b;if(t[0]!==y||t[1]!==v){let e;t[3]===v?e=t[4]:(e=e=>e.projectId===v,t[3]=v,t[4]=e),b=y.find(e),t[0]=y,t[1]=v,t[2]=b}else b=t[2];let x=b,S;return t[5]!==o||t[6]!==a||t[7]!==i||t[8]!==r||t[9]!==n||t[10]!==d||t[11]!==l||t[12]!==g||t[13]!==p||t[14]!==x||t[15]!==v||t[16]!==_||t[17]!==s||t[18]!==f||t[19]!==u||t[20]!==h||t[21]!==m?(S={isBrowserActive:n,devServerUrl:r,devServerStopped:i,browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:l,setIsSelectModeEnabled:u,isEditModeEnabled:d,setIsEditModeEnabled:f,selectedBrowserElement:p,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,isSelectionPromptOpen:g,setBrowserAgentProcessingThreadId:_,selectedProjectId:v,selectedProject:x},t[5]=o,t[6]=a,t[7]=i,t[8]=r,t[9]=n,t[10]=d,t[11]=l,t[12]=g,t[13]=p,t[14]=x,t[15]=v,t[16]=_,t[17]=s,t[18]=f,t[19]=u,t[20]=h,t[21]=m,t[22]=S):S=t[22],S}function Ne(e){return e.projects}function Pe(e){return e.selectedProjectId}function Fe(e){let t=(0,Z.c)(33),n=Me(e),r=ze(n),i=n.selectedProject?.runCommand,a;t[0]!==n.isEditModeEnabled||t[1]!==n.selectedBrowserElement?(a=n.isEditModeEnabled||J(n.selectedBrowserElement),t[0]=n.isEditModeEnabled,t[1]=n.selectedBrowserElement,t[2]=a):a=t[2];let o=n.isSelectModeEnabled||n.isEditModeEnabled,s;t[3]===r.currentUrl?s=t[4]:(s=()=>void m(r.currentUrl),t[3]=r.currentUrl,t[4]=s);let c;return t[5]!==r.currentUrl||t[6]!==r.deviceMode||t[7]!==r.handleWebviewRef||t[8]!==r.iframeRef||t[9]!==r.inputUrl||t[10]!==r.nativeWebviewMounted||t[11]!==r.previewActions.goBack||t[12]!==r.previewActions.goForward||t[13]!==r.previewActions.handleKeyDown||t[14]!==r.previewActions.refresh||t[15]!==r.previewActions.runPreviewTextEdit||t[16]!==r.previewActions.toggleEditMode||t[17]!==r.previewActions.toggleSelectMode||t[18]!==r.previewActions.updateDeviceMode||t[19]!==r.previewContainerRef||t[20]!==r.previewRpcPreload||t[21]!==r.selectionModeError||t[22]!==r.setInputUrl||t[23]!==r.useNativeWebview||t[24]!==n.devServerStopped||t[25]!==n.isBrowserActive||t[26]!==n.isSelectModeEnabled||t[27]!==n.selectedProjectId||t[28]!==i||t[29]!==a||t[30]!==o||t[31]!==s?(c={isBrowserActive:n.isBrowserActive,devServerStopped:n.devServerStopped,selectedProjectId:n.selectedProjectId,runCommand:i,currentUrl:r.currentUrl,inputUrl:r.inputUrl,setInputUrl:r.setInputUrl,handleKeyDown:r.previewActions.handleKeyDown,deviceMode:r.deviceMode,updateDeviceMode:r.previewActions.updateDeviceMode,selectionModeError:r.selectionModeError,isSelectModeEnabled:n.isSelectModeEnabled,isEditModeActive:a,isSurfaceSelectInteraction:o,toggleSelectMode:r.previewActions.toggleSelectMode,toggleEditMode:r.previewActions.toggleEditMode,refresh:r.previewActions.refresh,goBack:r.previewActions.goBack,goForward:r.previewActions.goForward,openExternal:s,runPreviewTextEdit:r.previewActions.runPreviewTextEdit,previewContainerRef:r.previewContainerRef,iframeRef:r.iframeRef,handleWebviewRef:r.handleWebviewRef,useNativeWebview:r.useNativeWebview,nativeWebviewMounted:r.nativeWebviewMounted,previewRpcPreload:r.previewRpcPreload},t[5]=r.currentUrl,t[6]=r.deviceMode,t[7]=r.handleWebviewRef,t[8]=r.iframeRef,t[9]=r.inputUrl,t[10]=r.nativeWebviewMounted,t[11]=r.previewActions.goBack,t[12]=r.previewActions.goForward,t[13]=r.previewActions.handleKeyDown,t[14]=r.previewActions.refresh,t[15]=r.previewActions.runPreviewTextEdit,t[16]=r.previewActions.toggleEditMode,t[17]=r.previewActions.toggleSelectMode,t[18]=r.previewActions.updateDeviceMode,t[19]=r.previewContainerRef,t[20]=r.previewRpcPreload,t[21]=r.selectionModeError,t[22]=r.setInputUrl,t[23]=r.useNativeWebview,t[24]=n.devServerStopped,t[25]=n.isBrowserActive,t[26]=n.isSelectModeEnabled,t[27]=n.selectedProjectId,t[28]=i,t[29]=a,t[30]=o,t[31]=s,t[32]=c):c=t[32],c}function Ie(e,t,n){return(0,X.useCallback)(function(){if(e){t()?.focus();return}n.current?.contentWindow?.focus()},[e])}function Le(e,t,n){return(0,X.useCallback)(function(r){e.current=r,r&&de(r,t.current,n)},[n])}function Re(e){let[t,n]=(0,X.useState)(``),[r,i]=(0,X.useState)(``),[a,o]=(0,X.useState)(``),[s,c]=(0,X.useState)(e),[l,u]=(0,X.useState)(null),d=(0,X.useRef)(null),f=(0,X.useRef)(a),p=(0,X.useRef)(null),m=(0,X.useRef)(null);return f.current=a,(0,X.useEffect)(()=>{c(e)},[e]),{inputUrl:t,setInputUrl:n,currentUrl:r,setCurrentUrl:i,pendingUrl:a,setPendingUrl:o,deviceMode:s,setDeviceMode:c,selectionModeError:l,setSelectionModeError:u,webviewRef:d,pendingUrlRef:f,iframeRef:p,previewContainerRef:m}}function ze(e){let t=(0,Z.c)(87),{browserUrlRequest:n,setBrowserUrlRequest:r}=E(),{isBrowserActive:i,devServerUrl:a,devServerStopped:o,browserResetTrigger:s,browserDeviceMode:c,setBrowserDeviceMode:l,isSelectModeEnabled:d,setIsSelectModeEnabled:f,isEditModeEnabled:m,setIsEditModeEnabled:h,selectedBrowserElement:g,setSelectedBrowserElement:_,setIsSelectionPromptOpen:v,isSelectionPromptOpen:y,setBrowserAgentProcessingThreadId:b}=e,{inputUrl:x,setInputUrl:S,currentUrl:C,setCurrentUrl:w,pendingUrl:T,setPendingUrl:D,deviceMode:O,setDeviceMode:k,selectionModeError:A,setSelectionModeError:j,webviewRef:M,pendingUrlRef:N,iframeRef:P,previewContainerRef:F}=Re(c),I;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(I=p(),t[0]=I):I=t[0];let L=I,R;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(R=u(),t[1]=R):R=t[1];let z=R,B=L&&!!C,V;t[2]!==F||t[3]!==M?(V=function(){return M.current??oe(F.current)},t[2]=F,t[3]=M,t[4]=V):V=t[4];let H=V,{shouldShowWebview:U,readWebviewVisibility:W}=Ee(F,i,C),G;t[5]!==C||t[6]!==H||t[7]!==B?(G={useNativeWebview:L,shouldRenderNativeWebview:B,currentUrl:C,resolveWebview:H},t[5]=C,t[6]=H,t[7]=B,t[8]=G):G=t[8];let K=fe(G),q;t[9]!==s||t[10]!==C||t[11]!==o||t[12]!==a||t[13]!==P||t[14]!==i||t[15]!==b||t[16]!==w||t[17]!==S||t[18]!==h||t[19]!==f||t[20]!==v||t[21]!==D||t[22]!==_||t[23]!==j||t[24]!==M?(q={devServerUrl:a,devServerStopped:o,isBrowserActive:i,currentUrl:C,browserResetTrigger:s,webviewRef:M,iframeRef:P,setCurrentUrl:w,setPendingUrl:D,setInputUrl:S,setSelectionModeError:j,setIsSelectModeEnabled:f,setIsEditModeEnabled:h,setSelectedBrowserElement:_,setIsSelectionPromptOpen:v,setBrowserAgentProcessingThreadId:b},t[9]=s,t[10]=C,t[11]=o,t[12]=a,t[13]=P,t[14]=i,t[15]=b,t[16]=w,t[17]=S,t[18]=h,t[19]=f,t[20]=v,t[21]=D,t[22]=_,t[23]=j,t[24]=M,t[25]=q):q=t[25],De(q);let J,Y;t[26]!==n||t[27]!==r||t[28]!==w||t[29]!==S||t[30]!==D?(J=()=>{n&&(w(n),D(n),S(n),r(null))},Y=[n,r,w,S,D],t[26]=n,t[27]=r,t[28]=w,t[29]=S,t[30]=D,t[31]=J,t[32]=Y):(J=t[31],Y=t[32]),(0,X.useEffect)(J,Y),Oe(i,L,Ie(L,H,P),F);let ee;t[33]!==C||t[34]!==K||t[35]!==H||t[36]!==w||t[37]!==S||t[38]!==D||t[39]!==j?(ee={useNativeWebview:L,nativeWebviewMounted:K,currentUrl:C,resolveWebview:H,setCurrentUrl:w,setPendingUrl:D,setInputUrl:S,setSelectionModeError:j},t[33]=C,t[34]=K,t[35]=H,t[36]=w,t[37]=S,t[38]=D,t[39]=j,t[40]=ee):ee=t[40],ke(ee);let te;t[41]!==C||t[42]!==O||t[43]!==K||t[44]!==T||t[45]!==W||t[46]!==H||t[47]!==U?(te={useNativeWebview:L,nativeWebviewMounted:K,currentUrl:C,deviceMode:O,shouldShowWebview:U,pendingUrl:T,readWebviewVisibility:W,resolveWebview:H},t[41]=C,t[42]=O,t[43]=K,t[44]=T,t[45]=W,t[46]=H,t[47]=U,t[48]=te):te=t[48],Ae(te);let ne;t[49]!==C||t[50]!==P||t[51]!==i||t[52]!==m||t[53]!==d||t[54]!==y||t[55]!==K||t[56]!==H||t[57]!==h||t[58]!==f||t[59]!==j?(ne={isBrowserActive:i,currentUrl:C,isSelectModeEnabled:d,isEditModeEnabled:m,isSelectionPromptOpen:y,nativeWebviewMounted:K,useNativeWebview:L,resolveWebview:H,iframeRef:P,setIsSelectModeEnabled:f,setIsEditModeEnabled:h,setSelectionModeError:j},t[49]=C,t[50]=P,t[51]=i,t[52]=m,t[53]=d,t[54]=y,t[55]=K,t[56]=H,t[57]=h,t[58]=f,t[59]=j,t[60]=ne):ne=t[60],je(ne);let Q=Le(M,N,W),re;t[61]!==P||t[62]!==x||t[63]!==H||t[64]!==g||t[65]!==l||t[66]!==w||t[67]!==k||t[68]!==S||t[69]!==h||t[70]!==f||t[71]!==v||t[72]!==D||t[73]!==_||t[74]!==j?(re={useNativeWebview:L,inputUrl:x,selectedBrowserElement:g,resolveWebview:H,iframeRef:P,setDeviceMode:k,setBrowserDeviceMode:l,setSelectionModeError:j,setIsSelectModeEnabled:f,setIsEditModeEnabled:h,setSelectedBrowserElement:_,setIsSelectionPromptOpen:v,setInputUrl:S,setCurrentUrl:w,setPendingUrl:D},t[61]=P,t[62]=x,t[63]=H,t[64]=g,t[65]=l,t[66]=w,t[67]=k,t[68]=S,t[69]=h,t[70]=f,t[71]=v,t[72]=D,t[73]=_,t[74]=j,t[75]=re):re=t[75];let ie=Be(re),ae;return t[76]!==C||t[77]!==O||t[78]!==Q||t[79]!==P||t[80]!==x||t[81]!==K||t[82]!==ie||t[83]!==F||t[84]!==A||t[85]!==S?(ae={currentUrl:C,inputUrl:x,setInputUrl:S,deviceMode:O,selectionModeError:A,previewContainerRef:F,iframeRef:P,handleWebviewRef:Q,useNativeWebview:L,nativeWebviewMounted:K,previewRpcPreload:z,previewActions:ie},t[76]=C,t[77]=O,t[78]=Q,t[79]=P,t[80]=x,t[81]=K,t[82]=ie,t[83]=F,t[84]=A,t[85]=S,t[86]=ae):ae=t[86],ae}function Be({useNativeWebview:e,inputUrl:t,selectedBrowserElement:n,resolveWebview:r,iframeRef:i,setDeviceMode:a,setBrowserDeviceMode:o,setSelectionModeError:s,setIsSelectModeEnabled:c,setIsEditModeEnabled:l,setSelectedBrowserElement:u,setIsSelectionPromptOpen:d,setInputUrl:f,setCurrentUrl:p,setPendingUrl:m}){function h(e){a(e),o(e)}function g(){s(null),c(!1),l(!1),u(null),d(!1)}function _(t){try{if(e){let e=r();if(!e)return;_e(e,he(t));return}let n=i.current;if(!n)return;ye(n,t)}catch(e){be.error(`Failed to run preview text edit action:`,e)}}function v(e){let t=ie(e);t&&(f(t),p(t),m(t),g())}function y(e){e.key===`Enter`&&v(t)}function b(){if(g(),e){let e=r();e&&e.reload();return}let t=i.current;if(!t)return;let n=t.src;t.src=``,requestAnimationFrame(()=>{t.src=n})}function x(){if(g(),e){let e=r();e&&e.executeJavascript(`history.back()`);return}C(-1)}function S(){if(g(),e){let e=r();e&&e.executeJavascript(`history.forward()`);return}C(1)}function C(e){let t=i.current;if(t&&t.contentWindow)try{e<0?t.contentWindow.history.back():t.contentWindow.history.forward()}catch{}}function w(){s(null),l(!1),J(n)&&(_(`cancel`),u(null)),c(e=>!e)}function T(){if(s(null),c(!1),d(!1),J(n)){_(`cancel`),u(null),l(!1);return}l(e=>!e)}return{handleKeyDown:y,updateDeviceMode:h,toggleSelectMode:w,toggleEditMode:T,refresh:b,goBack:x,goForward:S,runPreviewTextEdit:_}}var Ve={desktop:{width:`100%`,height:`100%`},tablet:{width:`768px`,height:`1024px`},mobile:{width:`375px`,height:`667px`}};function He(e){let t=(0,Z.c)(7),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,previewRpcPreload:a,handleWebviewRef:o,iframeRef:s}=e;if(n){if(!r)return null;let e;return t[0]!==i||t[1]!==o||t[2]!==a?(e=(0,X.createElement)(`electrobun-webview`,{ref:o,src:i,preload:a,renderer:`native`,className:`block h-full w-full bg-background`}),t[0]=i,t[1]=o,t[2]=a,t[3]=e):e=t[3],e}let c;return t[4]!==i||t[5]!==s?(c=(0,Q.jsx)(`iframe`,{ref:s,src:i,className:`h-full w-full border-none`,title:`Browser`,sandbox:`allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads`,allow:`publickey-credentials-get; publickey-credentials-create`}),t[4]=i,t[5]=s,t[6]=c):c=t[6],c}function Ue(e){let t=(0,Z.c)(18),{selectionModeError:n,isSelectModeEnabled:r,deviceMode:i,currentDeviceConfig:a,previewContainerRef:o,children:s}=e,c;t[0]===n?c=t[1]:(c=n&&(0,Q.jsxs)(`div`,{className:`border-b border-destructive/20 bg-destructive/5 px-3 py-2 text-sm text-destructive`,children:[`Element selection is unavailable: `,n]}),t[0]=n,t[1]=c);let l=r&&`cursor-crosshair`,u;t[2]===l?u=t[3]:(u=h(`flex min-h-0 flex-1 items-center justify-center bg-background`,l),t[2]=l,t[3]=u);let d=`overflow-hidden border border-border bg-background shadow-sm ${i===`desktop`?`h-full w-full rounded-none border-0 shadow-none`:`rounded-lg`}`,f;t[4]!==a.height||t[5]!==a.width?(f={width:a.width,height:a.height,maxWidth:`100%`,maxHeight:`100%`},t[4]=a.height,t[5]=a.width,t[6]=f):f=t[6];let p;t[7]!==s||t[8]!==d||t[9]!==f?(p=(0,Q.jsx)(`div`,{className:d,style:f,children:s}),t[7]=s,t[8]=d,t[9]=f,t[10]=p):p=t[10];let m;t[11]!==o||t[12]!==u||t[13]!==p?(m=(0,Q.jsx)(`div`,{ref:o,className:u,children:p}),t[11]=o,t[12]=u,t[13]=p,t[14]=m):m=t[14];let g;return t[15]!==c||t[16]!==m?(g=(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col bg-background`,children:[c,m]}),t[15]=c,t[16]=m,t[17]=g):g=t[17],g}function $(e){let t=(0,Z.c)(16),{onClick:n,label:r,children:i,isActive:a,disabled:o,activeStyle:s}=e,c=a!==void 0&&a,l=o!==void 0&&o,u=s===void 0?`elevated`:s,d=l&&`cursor-not-allowed text-muted-foreground/50`,f=!l&&!c&&`text-muted-foreground hover:bg-background/50 hover:text-foreground`,p=!l&&c&&u===`depressed`&&`bg-muted text-primary shadow-[inset_0_2px_4px_rgba(0,0,0,0.14)] ring-1 ring-inset ring-border/80 dark:shadow-[inset_0_2px_4px_rgba(0,0,0,0.35)]`,m=!l&&c&&u===`elevated`&&`bg-background text-foreground shadow-sm`,g;t[0]!==d||t[1]!==f||t[2]!==p||t[3]!==m?(g=h(`rounded p-1.5 transition-all`,d,f,p,m),t[0]=d,t[1]=f,t[2]=p,t[3]=m,t[4]=g):g=t[4];let _;t[5]!==i||t[6]!==l||t[7]!==c||t[8]!==n||t[9]!==g?(_=(0,Q.jsx)(v,{asChild:!0,children:(0,Q.jsx)(`button`,{type:`button`,onClick:n,disabled:l,"aria-pressed":c,className:g,children:i})}),t[5]=i,t[6]=l,t[7]=c,t[8]=n,t[9]=g,t[10]=_):_=t[10];let b;t[11]===r?b=t[12]:(b=(0,Q.jsx)(y,{children:r}),t[11]=r,t[12]=b);let S;return t[13]!==b||t[14]!==_?(S=(0,Q.jsxs)(x,{children:[_,b]}),t[13]=b,t[14]=_,t[15]=S):S=t[15],S}function We(e){let t=(0,Z.c)(43),{controller:n,urlInputRef:r}=e,{currentUrl:a,inputUrl:o,setInputUrl:s,handleKeyDown:c,goBack:l,goForward:u,refresh:d,toggleSelectMode:f,toggleEditMode:p,openExternal:m,updateDeviceMode:_,selectionModeError:v,isSelectModeEnabled:y,isEditModeActive:b,deviceMode:x}=n,S;t[0]!==a||t[1]!==l?(S=a&&(0,Q.jsx)($,{onClick:l,label:`Back`,children:(0,Q.jsx)(W,{size:15})}),t[0]=a,t[1]=l,t[2]=S):S=t[2];let C;t[3]!==a||t[4]!==u?(C=a&&(0,Q.jsx)($,{onClick:u,label:`Forward`,children:(0,Q.jsx)(P,{size:15})}),t[3]=a,t[4]=u,t[5]=C):C=t[5];let w;t[6]===s?w=t[7]:(w=e=>s(e.target.value),t[6]=s,t[7]=w);let T;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(T=h(`flex-1 rounded-full bg-muted font-mono`,i.captionForeground),t[8]=T):T=t[8];let E;t[9]!==c||t[10]!==o||t[11]!==w||t[12]!==r?(E=(0,Q.jsx)(H,{ref:r,type:`text`,value:o,onChange:w,onKeyDown:c,placeholder:`Enter URL...`,className:T,spellCheck:!1}),t[9]=c,t[10]=o,t[11]=w,t[12]=r,t[13]=E):E=t[13];let O;t[14]!==a||t[15]!==d?(O=a&&(0,Q.jsx)($,{onClick:d,label:`Refresh page`,children:(0,Q.jsx)(k,{size:15})}),t[14]=a,t[15]=d,t[16]=O):O=t[16];let j;t[17]!==a||t[18]!==y||t[19]!==v||t[20]!==f?(j=a&&(0,Q.jsx)($,{onClick:f,label:v?`Select element unavailable: ${v}`:y?`Exit element selection`:`Select element from preview`,isActive:y,activeStyle:`depressed`,children:(0,Q.jsx)(L,{size:15})}),t[17]=a,t[18]=y,t[19]=v,t[20]=f,t[21]=j):j=t[21];let M;t[22]!==a||t[23]!==b||t[24]!==v||t[25]!==p?(M=a&&(0,Q.jsx)($,{onClick:p,label:v?`Edit text unavailable: ${v}`:b?`Exit text editing`:`Edit text from preview`,isActive:b,activeStyle:`depressed`,children:(0,Q.jsx)(I,{size:15})}),t[22]=a,t[23]=b,t[24]=v,t[25]=p,t[26]=M):M=t[26];let N;t[27]!==a||t[28]!==x||t[29]!==_?(N=a&&(0,Q.jsxs)(`div`,{className:`flex items-center rounded-md bg-muted p-0.5`,children:[(0,Q.jsx)($,{onClick:()=>_(`desktop`),label:`Desktop`,isActive:x===`desktop`,children:(0,Q.jsx)(D,{size:15})}),(0,Q.jsx)($,{onClick:()=>_(`tablet`),label:`Tablet`,isActive:x===`tablet`,children:(0,Q.jsx)(A,{size:15})}),(0,Q.jsx)($,{onClick:()=>_(`mobile`),label:`Mobile`,isActive:x===`mobile`,children:(0,Q.jsx)(F,{size:15})})]}),t[27]=a,t[28]=x,t[29]=_,t[30]=N):N=t[30];let R;t[31]!==a||t[32]!==m?(R=a&&(0,Q.jsx)($,{onClick:m,label:`Open in external browser`,children:(0,Q.jsx)(g,{size:15})}),t[31]=a,t[32]=m,t[33]=R):R=t[33];let z;return t[34]!==S||t[35]!==R||t[36]!==C||t[37]!==E||t[38]!==O||t[39]!==j||t[40]!==M||t[41]!==N?(z=(0,Q.jsx)(`div`,{className:`relative shrink-0 border-b border-border`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[S,C,E,O,j,M,N,R]})}),t[34]=S,t[35]=R,t[36]=C,t[37]=E,t[38]=O,t[39]=j,t[40]=M,t[41]=N,t[42]=z):z=t[42],z}function Ge(e){let t=(0,Z.c)(6),{devServerStopped:n,selectedProjectId:r,runCommand:a}=e,o=j(),s=c(Ke),l;return t[0]!==n||t[1]!==a||t[2]!==r||t[3]!==s||t[4]!==o?(l=(0,Q.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-6 text-muted-foreground`,children:n?(0,Q.jsx)(`p`,{className:i.body,children:`Dev server stopped`}):r&&s&&a&&!o?(0,Q.jsx)(O,{projectId:r,runCommand:a,large:!0}):(0,Q.jsx)(`p`,{className:i.body,children:`Enter a URL to browse`})}),t[0]=n,t[1]=a,t[2]=r,t[3]=s,t[4]=o,t[5]=l):l=t[5],l}function Ke(e){return e.selectedThreadId}function qe(e){let t=(0,Z.c)(24),{instanceId:n}=e,r=Fe(n),i=Ve[r.deviceMode],{registerPanelFocus:a}=T(),o=(0,X.useRef)(null),s,c;t[0]!==n||t[1]!==a?(s=()=>a(n,()=>o.current?.focus()),c=[n,a],t[0]=n,t[1]=a,t[2]=s,t[3]=c):(s=t[2],c=t[3]),(0,X.useEffect)(s,c);let l;t[4]!==r.currentUrl||t[5]!==r.handleWebviewRef||t[6]!==r.iframeRef||t[7]!==r.nativeWebviewMounted||t[8]!==r.previewRpcPreload||t[9]!==r.useNativeWebview?(l=(0,Q.jsx)(He,{useNativeWebview:r.useNativeWebview,nativeWebviewMounted:r.nativeWebviewMounted,currentUrl:r.currentUrl,previewRpcPreload:r.previewRpcPreload,handleWebviewRef:r.handleWebviewRef,iframeRef:r.iframeRef}),t[4]=r.currentUrl,t[5]=r.handleWebviewRef,t[6]=r.iframeRef,t[7]=r.nativeWebviewMounted,t[8]=r.previewRpcPreload,t[9]=r.useNativeWebview,t[10]=l):l=t[10];let u=l,d=r.isBrowserActive?`flex h-full min-h-0 flex-col overflow-hidden`:`hidden`,f;t[11]===d?f=t[12]:(f=h(d),t[11]=d,t[12]=f);let p=!r.isBrowserActive,m;t[13]===r?m=t[14]:(m=r.isBrowserActive?(0,Q.jsx)(We,{controller:r,urlInputRef:o}):null,t[13]=r,t[14]=m);let g;t[15]!==r||t[16]!==i||t[17]!==u?(g=r.currentUrl?(0,Q.jsxs)(Q.Fragment,{children:[r.isBrowserActive?(0,Q.jsx)(re,{onCommit:()=>r.runPreviewTextEdit(`commit`),onCancelPreview:()=>r.runPreviewTextEdit(`cancel`)}):null,(0,Q.jsx)(Ue,{selectionModeError:r.selectionModeError,isSelectModeEnabled:r.isSurfaceSelectInteraction,deviceMode:r.deviceMode,currentDeviceConfig:i,previewContainerRef:r.previewContainerRef,children:u})]}):r.isBrowserActive?(0,Q.jsx)(Ge,{devServerStopped:r.devServerStopped,selectedProjectId:r.selectedProjectId,runCommand:r.runCommand}):null,t[15]=r,t[16]=i,t[17]=u,t[18]=g):g=t[18];let _;return t[19]!==f||t[20]!==p||t[21]!==m||t[22]!==g?(_=(0,Q.jsx)(b,{children:(0,Q.jsxs)(`div`,{className:f,"aria-hidden":p,children:[m,g]})}),t[19]=f,t[20]=p,t[21]=m,t[22]=g,t[23]=_):_=t[23],_}export{qe as BrowserTab};
12
+ })();`}function ge(e,t,n=!1,r=`select`){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);try{e.executeJavascript(me(t,n,r))}catch(i){throw pe.error(`[browser-preview] Failed to toggle native preview selection mode`,{enabled:t,preserveSelection:n,interaction:r,src:e.src,webview_id:e.webviewId,error:i instanceof Error?i.message:String(i),stack:i instanceof Error?i.stack:void 0}),i}}function _e(e,t){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);e.executeJavascript(t)}function ve(e,t,n=!1,r=`select`){let i=e.contentWindow;if(!i)throw Error(`Browser preview frame is not ready`);let a=i.__tarskBrowserPreview;if(!a?.setSelectMode)throw Error(`Browser preview selection API is not available in iframe preview`);a.setSelectMode(t,n,r)}function ye(e,t){let n=e.contentWindow?.__tarskBrowserPreview;if(!n||typeof n[t===`commit`?`commitTextEdit`:`cancelTextEdit`]!=`function`){pe.warn(`[browser-preview] Preview text-edit API unavailable; action ignored`,{action:t,src:e.src});return}if(t===`commit`){n.commitTextEdit?.();return}n.cancelTextEdit?.()}var be=a(`app.browser-tab.ui`),xe=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`,`Home`,`End`]),Se=new Set([`INPUT`,`TEXTAREA`,`SELECT`]),Ce=new Set([`combobox`,`listbox`,`menu`,`menubar`,`menuitem`,`option`,`radiogroup`,`tablist`,`tab`,`grid`,`slider`,`spinbutton`]);function we(e){if(Se.has(e.tagName)||e.isContentEditable)return!0;let t=e.getAttribute(`role`);return t!==null&&Ce.has(t)}function Te(e){return e instanceof HTMLElement&&we(e)}function Ee(e,t,n){let[r,i]=(0,X.useState)(!0),a=(0,X.useSyncExternalStore)(U,z),o=(0,X.useSyncExternalStore)(S,C),s=t&&(r&&!o||a),c=(0,X.useRef)(s);c.current=s;let l=(0,X.useCallback)(function(){return c.current},[]),u=(0,X.useCallback)(function(){i(ue(e.current))},[]);return(0,X.useLayoutEffect)(u),(0,X.useEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(u);return n.observe(t),function(){n.disconnect()}},[u,n]),{shouldShowWebview:s,readWebviewVisibility:l}}function De({devServerUrl:e,devServerStopped:t,isBrowserActive:n,currentUrl:r,browserResetTrigger:i,webviewRef:a,iframeRef:o,setCurrentUrl:s,setPendingUrl:c,setInputUrl:l,setSelectionModeError:u,setIsSelectModeEnabled:d,setIsEditModeEnabled:f,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,setBrowserAgentProcessingThreadId:h}){let g=(0,X.useRef)(r),_=(0,X.useRef)(null);g.current=r,(0,X.useEffect)(()=>{s(``),c(``),l(``),u(null),d(!1),f(!1),p(null),m(!1),h(null);let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``)},[i,h,d,f,m,p]),(0,X.useEffect)(()=>{if(t&&!e){s(``),c(``),l(``),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null));let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``);return}if(!e)return;let r=ie(e);l(r),(!g.current||g.current===_.current)&&(s(r),c(r),_.current=r),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null))},[e,t,n,h,d,f,m,p])}function Oe(e,t,n,r){let i=(0,Z.c)(9),a;i[0]!==n||i[1]!==e||i[2]!==r||i[3]!==t?(a=()=>{if(!e||!t)return;let i=function(e){xe.has(e.key)&&(Te(e.target)||r.current?.contains(e.target)||(e.preventDefault(),n()))};return document.addEventListener(`keydown`,i,!0),function(){document.removeEventListener(`keydown`,i,!0)}},i[0]=n,i[1]=e,i[2]=r,i[3]=t,i[4]=a):a=i[4];let o;i[5]!==n||i[6]!==e||i[7]!==t?(o=[e,t,n],i[5]=n,i[6]=e,i[7]=t,i[8]=o):o=i[8],(0,X.useEffect)(a,o)}function ke(e){let t=(0,Z.c)(13),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,resolveWebview:a,setCurrentUrl:o,setPendingUrl:s,setInputUrl:c,setSelectionModeError:l}=e,u;t[0]!==i||t[1]!==r||t[2]!==a||t[3]!==o||t[4]!==c||t[5]!==s||t[6]!==l||t[7]!==n?(u=()=>{let e=a();if(!n||!e||!r)return;let t=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),s(``),c(t))},u=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),c(t))},d=function(e){let t=ae(e.detail);t&&p(t)},f=function(e){let t=q(e.detail);if(t){H(t);return}let n=R(e.detail);n&&(l(null),W(n))};return e.on(`did-navigate`,t),e.on(`did-navigate-in-page`,u),e.on(`new-window-open`,d),e.on(`host-message`,f),function(){e.off(`did-navigate`,t),e.off(`did-navigate-in-page`,u),e.off(`new-window-open`,d),e.off(`host-message`,f)}},t[0]=i,t[1]=r,t[2]=a,t[3]=o,t[4]=c,t[5]=s,t[6]=l,t[7]=n,t[8]=u):u=t[8];let d;t[9]!==i||t[10]!==r||t[11]!==n?(d=[i,n,r],t[9]=i,t[10]=r,t[11]=n,t[12]=d):d=t[12],(0,X.useEffect)(u,d)}function Ae(e){let t=(0,Z.c)(23),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,deviceMode:a,shouldShowWebview:o,pendingUrl:s,readWebviewVisibility:c,resolveWebview:l}=e,u;t[0]!==r||t[1]!==l||t[2]!==o||t[3]!==n?(u=()=>{if(!n||!r)return;let e=l();e&&e.webviewId!=null&&le(e,o)},t[0]=r,t[1]=l,t[2]=o,t[3]=n,t[4]=u):u=t[4];let d;t[5]!==i||t[6]!==a||t[7]!==r||t[8]!==o||t[9]!==n?(d=[r,n,i,a,o],t[5]=i,t[6]=a,t[7]=r,t[8]=o,t[9]=n,t[10]=d):d=t[10],(0,X.useLayoutEffect)(u,d);let f;t[11]!==r||t[12]!==s||t[13]!==c||t[14]!==l||t[15]!==n?(f=()=>{let e=l();if(n&&e&&s&&r)return de(e,s,c)},t[11]=r,t[12]=s,t[13]=c,t[14]=l,t[15]=n,t[16]=f):f=t[16];let p;t[17]!==i||t[18]!==r||t[19]!==s||t[20]!==c||t[21]!==n?(p=[s,n,i,r,c],t[17]=i,t[18]=r,t[19]=s,t[20]=c,t[21]=n,t[22]=p):p=t[22],(0,X.useEffect)(f,p)}function je(e){let t=(0,Z.c)(23),{isBrowserActive:n,currentUrl:r,isSelectModeEnabled:i,isEditModeEnabled:a,isSelectionPromptOpen:o,nativeWebviewMounted:s,useNativeWebview:c,resolveWebview:l,iframeRef:u,setIsSelectModeEnabled:d,setIsEditModeEnabled:f,setSelectionModeError:p}=e,m;t[0]!==r||t[1]!==u||t[2]!==n||t[3]!==a||t[4]!==i||t[5]!==o||t[6]!==s||t[7]!==l||t[8]!==f||t[9]!==d||t[10]!==p||t[11]!==c?(m=()=>{if(!n)return;if(!r){i&&d(!1),a&&f(!1);return}let e=!1,t=i||a,m=a?`edit`:`select`,h=!t&&o;return(function(){try{if(c){let e=l();if(!e||e.webviewId==null||!s)return;ge(e,t,h,m);return}let e=u.current;if(!e)return;ve(e,t,h,m)}catch(n){let r=n;if(e||!t)return;let i=r instanceof Error?r.message:`Could not enable element selection.`;be.error(`Failed to toggle browser selection mode:`,r),p(i),d(!1),f(!1),w({title:`Selection mode unavailable`,description:i,variant:`destructive`})}})(),function(){e=!0}},t[0]=r,t[1]=u,t[2]=n,t[3]=a,t[4]=i,t[5]=o,t[6]=s,t[7]=l,t[8]=f,t[9]=d,t[10]=p,t[11]=c,t[12]=m):m=t[12];let h;t[13]!==r||t[14]!==n||t[15]!==a||t[16]!==i||t[17]!==o||t[18]!==s||t[19]!==f||t[20]!==d||t[21]!==c?(h=[r,n,a,i,o,s,f,d,c],t[13]=r,t[14]=n,t[15]=a,t[16]=i,t[17]=o,t[18]=s,t[19]=f,t[20]=d,t[21]=c,t[22]=h):h=t[22],(0,X.useEffect)(m,h)}function Me(e){let t=(0,Z.c)(23),n=te(e,`browser`),{devServerUrl:r,devServerStopped:i}=M(),{browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:l,setIsSelectModeEnabled:u,isEditModeEnabled:d,setIsEditModeEnabled:f,selectedBrowserElement:p,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,isSelectionPromptOpen:g,setBrowserAgentProcessingThreadId:_}=E(),v=c(Pe),y=c(Ne),b;if(t[0]!==y||t[1]!==v){let e;t[3]===v?e=t[4]:(e=e=>e.projectId===v,t[3]=v,t[4]=e),b=y.find(e),t[0]=y,t[1]=v,t[2]=b}else b=t[2];let x=b,S;return t[5]!==o||t[6]!==a||t[7]!==i||t[8]!==r||t[9]!==n||t[10]!==d||t[11]!==l||t[12]!==g||t[13]!==p||t[14]!==x||t[15]!==v||t[16]!==_||t[17]!==s||t[18]!==f||t[19]!==u||t[20]!==h||t[21]!==m?(S={isBrowserActive:n,devServerUrl:r,devServerStopped:i,browserResetTrigger:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:l,setIsSelectModeEnabled:u,isEditModeEnabled:d,setIsEditModeEnabled:f,selectedBrowserElement:p,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,isSelectionPromptOpen:g,setBrowserAgentProcessingThreadId:_,selectedProjectId:v,selectedProject:x},t[5]=o,t[6]=a,t[7]=i,t[8]=r,t[9]=n,t[10]=d,t[11]=l,t[12]=g,t[13]=p,t[14]=x,t[15]=v,t[16]=_,t[17]=s,t[18]=f,t[19]=u,t[20]=h,t[21]=m,t[22]=S):S=t[22],S}function Ne(e){return e.projects}function Pe(e){return e.selectedProjectId}function Fe(e){let t=(0,Z.c)(33),n=Me(e),r=ze(n),i=n.selectedProject?.runCommand,a;t[0]!==n.isEditModeEnabled||t[1]!==n.selectedBrowserElement?(a=n.isEditModeEnabled||K(n.selectedBrowserElement),t[0]=n.isEditModeEnabled,t[1]=n.selectedBrowserElement,t[2]=a):a=t[2];let o=n.isSelectModeEnabled||n.isEditModeEnabled,s;t[3]===r.currentUrl?s=t[4]:(s=()=>void p(r.currentUrl),t[3]=r.currentUrl,t[4]=s);let c;return t[5]!==r.currentUrl||t[6]!==r.deviceMode||t[7]!==r.handleWebviewRef||t[8]!==r.iframeRef||t[9]!==r.inputUrl||t[10]!==r.nativeWebviewMounted||t[11]!==r.previewActions.goBack||t[12]!==r.previewActions.goForward||t[13]!==r.previewActions.handleKeyDown||t[14]!==r.previewActions.refresh||t[15]!==r.previewActions.runPreviewTextEdit||t[16]!==r.previewActions.toggleEditMode||t[17]!==r.previewActions.toggleSelectMode||t[18]!==r.previewActions.updateDeviceMode||t[19]!==r.previewContainerRef||t[20]!==r.previewRpcPreload||t[21]!==r.selectionModeError||t[22]!==r.setInputUrl||t[23]!==r.useNativeWebview||t[24]!==n.devServerStopped||t[25]!==n.isBrowserActive||t[26]!==n.isSelectModeEnabled||t[27]!==n.selectedProjectId||t[28]!==i||t[29]!==a||t[30]!==o||t[31]!==s?(c={isBrowserActive:n.isBrowserActive,devServerStopped:n.devServerStopped,selectedProjectId:n.selectedProjectId,runCommand:i,currentUrl:r.currentUrl,inputUrl:r.inputUrl,setInputUrl:r.setInputUrl,handleKeyDown:r.previewActions.handleKeyDown,deviceMode:r.deviceMode,updateDeviceMode:r.previewActions.updateDeviceMode,selectionModeError:r.selectionModeError,isSelectModeEnabled:n.isSelectModeEnabled,isEditModeActive:a,isSurfaceSelectInteraction:o,toggleSelectMode:r.previewActions.toggleSelectMode,toggleEditMode:r.previewActions.toggleEditMode,refresh:r.previewActions.refresh,goBack:r.previewActions.goBack,goForward:r.previewActions.goForward,openExternal:s,runPreviewTextEdit:r.previewActions.runPreviewTextEdit,previewContainerRef:r.previewContainerRef,iframeRef:r.iframeRef,handleWebviewRef:r.handleWebviewRef,useNativeWebview:r.useNativeWebview,nativeWebviewMounted:r.nativeWebviewMounted,previewRpcPreload:r.previewRpcPreload},t[5]=r.currentUrl,t[6]=r.deviceMode,t[7]=r.handleWebviewRef,t[8]=r.iframeRef,t[9]=r.inputUrl,t[10]=r.nativeWebviewMounted,t[11]=r.previewActions.goBack,t[12]=r.previewActions.goForward,t[13]=r.previewActions.handleKeyDown,t[14]=r.previewActions.refresh,t[15]=r.previewActions.runPreviewTextEdit,t[16]=r.previewActions.toggleEditMode,t[17]=r.previewActions.toggleSelectMode,t[18]=r.previewActions.updateDeviceMode,t[19]=r.previewContainerRef,t[20]=r.previewRpcPreload,t[21]=r.selectionModeError,t[22]=r.setInputUrl,t[23]=r.useNativeWebview,t[24]=n.devServerStopped,t[25]=n.isBrowserActive,t[26]=n.isSelectModeEnabled,t[27]=n.selectedProjectId,t[28]=i,t[29]=a,t[30]=o,t[31]=s,t[32]=c):c=t[32],c}function Ie(e,t,n){return(0,X.useCallback)(function(){if(e){t()?.focus();return}n.current?.contentWindow?.focus()},[e])}function Le(e,t,n){return(0,X.useCallback)(function(r){e.current=r,r&&de(r,t.current,n)},[n])}function Re(e){let[t,n]=(0,X.useState)(``),[r,i]=(0,X.useState)(``),[a,o]=(0,X.useState)(``),[s,c]=(0,X.useState)(e),[l,u]=(0,X.useState)(null),d=(0,X.useRef)(null),f=(0,X.useRef)(a),p=(0,X.useRef)(null),m=(0,X.useRef)(null);return f.current=a,(0,X.useEffect)(()=>{c(e)},[e]),{inputUrl:t,setInputUrl:n,currentUrl:r,setCurrentUrl:i,pendingUrl:a,setPendingUrl:o,deviceMode:s,setDeviceMode:c,selectionModeError:l,setSelectionModeError:u,webviewRef:d,pendingUrlRef:f,iframeRef:p,previewContainerRef:m}}function ze(e){let t=(0,Z.c)(87),{browserUrlRequest:n,setBrowserUrlRequest:r}=E(),{isBrowserActive:i,devServerUrl:a,devServerStopped:o,browserResetTrigger:s,browserDeviceMode:c,setBrowserDeviceMode:l,isSelectModeEnabled:d,setIsSelectModeEnabled:p,isEditModeEnabled:m,setIsEditModeEnabled:h,selectedBrowserElement:g,setSelectedBrowserElement:_,setIsSelectionPromptOpen:v,isSelectionPromptOpen:y,setBrowserAgentProcessingThreadId:b}=e,{inputUrl:x,setInputUrl:S,currentUrl:C,setCurrentUrl:w,pendingUrl:T,setPendingUrl:D,deviceMode:O,setDeviceMode:k,selectionModeError:A,setSelectionModeError:j,webviewRef:M,pendingUrlRef:N,iframeRef:P,previewContainerRef:F}=Re(c),I;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(I=f(),t[0]=I):I=t[0];let L=I,R;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(R=u(),t[1]=R):R=t[1];let z=R,B=L&&!!C,V;t[2]!==F||t[3]!==M?(V=function(){return M.current??oe(F.current)},t[2]=F,t[3]=M,t[4]=V):V=t[4];let H=V,{shouldShowWebview:U,readWebviewVisibility:W}=Ee(F,i,C),G;t[5]!==C||t[6]!==H||t[7]!==B?(G={useNativeWebview:L,shouldRenderNativeWebview:B,currentUrl:C,resolveWebview:H},t[5]=C,t[6]=H,t[7]=B,t[8]=G):G=t[8];let K=fe(G),q;t[9]!==s||t[10]!==C||t[11]!==o||t[12]!==a||t[13]!==P||t[14]!==i||t[15]!==b||t[16]!==w||t[17]!==S||t[18]!==h||t[19]!==p||t[20]!==v||t[21]!==D||t[22]!==_||t[23]!==j||t[24]!==M?(q={devServerUrl:a,devServerStopped:o,isBrowserActive:i,currentUrl:C,browserResetTrigger:s,webviewRef:M,iframeRef:P,setCurrentUrl:w,setPendingUrl:D,setInputUrl:S,setSelectionModeError:j,setIsSelectModeEnabled:p,setIsEditModeEnabled:h,setSelectedBrowserElement:_,setIsSelectionPromptOpen:v,setBrowserAgentProcessingThreadId:b},t[9]=s,t[10]=C,t[11]=o,t[12]=a,t[13]=P,t[14]=i,t[15]=b,t[16]=w,t[17]=S,t[18]=h,t[19]=p,t[20]=v,t[21]=D,t[22]=_,t[23]=j,t[24]=M,t[25]=q):q=t[25],De(q);let J,Y;t[26]!==n||t[27]!==r||t[28]!==w||t[29]!==S||t[30]!==D?(J=()=>{n&&(w(n),D(n),S(n),r(null))},Y=[n,r,w,S,D],t[26]=n,t[27]=r,t[28]=w,t[29]=S,t[30]=D,t[31]=J,t[32]=Y):(J=t[31],Y=t[32]),(0,X.useEffect)(J,Y),Oe(i,L,Ie(L,H,P),F);let ee;t[33]!==C||t[34]!==K||t[35]!==H||t[36]!==w||t[37]!==S||t[38]!==D||t[39]!==j?(ee={useNativeWebview:L,nativeWebviewMounted:K,currentUrl:C,resolveWebview:H,setCurrentUrl:w,setPendingUrl:D,setInputUrl:S,setSelectionModeError:j},t[33]=C,t[34]=K,t[35]=H,t[36]=w,t[37]=S,t[38]=D,t[39]=j,t[40]=ee):ee=t[40],ke(ee);let te;t[41]!==C||t[42]!==O||t[43]!==K||t[44]!==T||t[45]!==W||t[46]!==H||t[47]!==U?(te={useNativeWebview:L,nativeWebviewMounted:K,currentUrl:C,deviceMode:O,shouldShowWebview:U,pendingUrl:T,readWebviewVisibility:W,resolveWebview:H},t[41]=C,t[42]=O,t[43]=K,t[44]=T,t[45]=W,t[46]=H,t[47]=U,t[48]=te):te=t[48],Ae(te);let ne;t[49]!==C||t[50]!==P||t[51]!==i||t[52]!==m||t[53]!==d||t[54]!==y||t[55]!==K||t[56]!==H||t[57]!==h||t[58]!==p||t[59]!==j?(ne={isBrowserActive:i,currentUrl:C,isSelectModeEnabled:d,isEditModeEnabled:m,isSelectionPromptOpen:y,nativeWebviewMounted:K,useNativeWebview:L,resolveWebview:H,iframeRef:P,setIsSelectModeEnabled:p,setIsEditModeEnabled:h,setSelectionModeError:j},t[49]=C,t[50]=P,t[51]=i,t[52]=m,t[53]=d,t[54]=y,t[55]=K,t[56]=H,t[57]=h,t[58]=p,t[59]=j,t[60]=ne):ne=t[60],je(ne);let Q=Le(M,N,W),re;t[61]!==P||t[62]!==x||t[63]!==H||t[64]!==g||t[65]!==l||t[66]!==w||t[67]!==k||t[68]!==S||t[69]!==h||t[70]!==p||t[71]!==v||t[72]!==D||t[73]!==_||t[74]!==j?(re={useNativeWebview:L,inputUrl:x,selectedBrowserElement:g,resolveWebview:H,iframeRef:P,setDeviceMode:k,setBrowserDeviceMode:l,setSelectionModeError:j,setIsSelectModeEnabled:p,setIsEditModeEnabled:h,setSelectedBrowserElement:_,setIsSelectionPromptOpen:v,setInputUrl:S,setCurrentUrl:w,setPendingUrl:D},t[61]=P,t[62]=x,t[63]=H,t[64]=g,t[65]=l,t[66]=w,t[67]=k,t[68]=S,t[69]=h,t[70]=p,t[71]=v,t[72]=D,t[73]=_,t[74]=j,t[75]=re):re=t[75];let ie=Be(re),ae;return t[76]!==C||t[77]!==O||t[78]!==Q||t[79]!==P||t[80]!==x||t[81]!==K||t[82]!==ie||t[83]!==F||t[84]!==A||t[85]!==S?(ae={currentUrl:C,inputUrl:x,setInputUrl:S,deviceMode:O,selectionModeError:A,previewContainerRef:F,iframeRef:P,handleWebviewRef:Q,useNativeWebview:L,nativeWebviewMounted:K,previewRpcPreload:z,previewActions:ie},t[76]=C,t[77]=O,t[78]=Q,t[79]=P,t[80]=x,t[81]=K,t[82]=ie,t[83]=F,t[84]=A,t[85]=S,t[86]=ae):ae=t[86],ae}function Be({useNativeWebview:e,inputUrl:t,selectedBrowserElement:n,resolveWebview:r,iframeRef:i,setDeviceMode:a,setBrowserDeviceMode:o,setSelectionModeError:s,setIsSelectModeEnabled:c,setIsEditModeEnabled:l,setSelectedBrowserElement:u,setIsSelectionPromptOpen:d,setInputUrl:f,setCurrentUrl:p,setPendingUrl:m}){function h(e){a(e),o(e)}function g(){s(null),c(!1),l(!1),u(null),d(!1)}function _(t){try{if(e){let e=r();if(!e)return;_e(e,he(t));return}let n=i.current;if(!n)return;ye(n,t)}catch(e){be.error(`Failed to run preview text edit action:`,e)}}function v(e){let t=ie(e);t&&(f(t),p(t),m(t),g())}function y(e){e.key===`Enter`&&v(t)}function b(){if(g(),e){let e=r();e&&e.reload();return}let t=i.current;if(!t)return;let n=t.src;t.src=``,requestAnimationFrame(()=>{t.src=n})}function x(){if(g(),e){let e=r();e&&e.executeJavascript(`history.back()`);return}C(-1)}function S(){if(g(),e){let e=r();e&&e.executeJavascript(`history.forward()`);return}C(1)}function C(e){let t=i.current;if(t&&t.contentWindow)try{e<0?t.contentWindow.history.back():t.contentWindow.history.forward()}catch{}}function w(){s(null),l(!1),K(n)&&(_(`cancel`),u(null)),c(e=>!e)}function T(){if(s(null),c(!1),d(!1),K(n)){_(`cancel`),u(null),l(!1);return}l(e=>!e)}return{handleKeyDown:y,updateDeviceMode:h,toggleSelectMode:w,toggleEditMode:T,refresh:b,goBack:x,goForward:S,runPreviewTextEdit:_}}var Ve={desktop:{width:`100%`,height:`100%`},tablet:{width:`768px`,height:`1024px`},mobile:{width:`375px`,height:`667px`}};function He(e){let t=(0,Z.c)(7),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,previewRpcPreload:a,handleWebviewRef:o,iframeRef:s}=e;if(n){if(!r)return null;let e;return t[0]!==i||t[1]!==o||t[2]!==a?(e=(0,X.createElement)(`electrobun-webview`,{ref:o,src:i,preload:a,renderer:`native`,className:`block h-full w-full bg-background`}),t[0]=i,t[1]=o,t[2]=a,t[3]=e):e=t[3],e}let c;return t[4]!==i||t[5]!==s?(c=(0,Q.jsx)(`iframe`,{ref:s,src:i,className:`h-full w-full border-none`,title:`Browser`,sandbox:`allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads`,allow:`publickey-credentials-get; publickey-credentials-create`}),t[4]=i,t[5]=s,t[6]=c):c=t[6],c}function Ue(e){let t=(0,Z.c)(18),{selectionModeError:n,isSelectModeEnabled:r,deviceMode:i,currentDeviceConfig:a,previewContainerRef:o,children:s}=e,c;t[0]===n?c=t[1]:(c=n&&(0,Q.jsxs)(`div`,{className:`border-b border-destructive/20 bg-destructive/5 px-3 py-2 text-sm text-destructive`,children:[`Element selection is unavailable: `,n]}),t[0]=n,t[1]=c);let l=r&&`cursor-crosshair`,u;t[2]===l?u=t[3]:(u=h(`flex min-h-0 flex-1 items-center justify-center bg-background`,l),t[2]=l,t[3]=u);let d=`overflow-hidden border border-border bg-background shadow-sm ${i===`desktop`?`h-full w-full rounded-none border-0 shadow-none`:`rounded-lg`}`,f;t[4]!==a.height||t[5]!==a.width?(f={width:a.width,height:a.height,maxWidth:`100%`,maxHeight:`100%`},t[4]=a.height,t[5]=a.width,t[6]=f):f=t[6];let p;t[7]!==s||t[8]!==d||t[9]!==f?(p=(0,Q.jsx)(`div`,{className:d,style:f,children:s}),t[7]=s,t[8]=d,t[9]=f,t[10]=p):p=t[10];let m;t[11]!==o||t[12]!==u||t[13]!==p?(m=(0,Q.jsx)(`div`,{ref:o,className:u,children:p}),t[11]=o,t[12]=u,t[13]=p,t[14]=m):m=t[14];let g;return t[15]!==c||t[16]!==m?(g=(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col bg-background`,children:[c,m]}),t[15]=c,t[16]=m,t[17]=g):g=t[17],g}function $(e){let t=(0,Z.c)(16),{onClick:n,label:r,children:i,isActive:a,disabled:o,activeStyle:s}=e,c=a!==void 0&&a,l=o!==void 0&&o,u=s===void 0?`elevated`:s,d=l&&`cursor-not-allowed text-muted-foreground/50`,f=!l&&!c&&`text-muted-foreground hover:bg-background/50 hover:text-foreground`,p=!l&&c&&u===`depressed`&&`bg-muted text-primary shadow-[inset_0_2px_4px_rgba(0,0,0,0.14)] ring-1 ring-inset ring-border/80 dark:shadow-[inset_0_2px_4px_rgba(0,0,0,0.35)]`,m=!l&&c&&u===`elevated`&&`bg-background text-foreground shadow-sm`,g;t[0]!==d||t[1]!==f||t[2]!==p||t[3]!==m?(g=h(`rounded p-1.5 transition-all`,d,f,p,m),t[0]=d,t[1]=f,t[2]=p,t[3]=m,t[4]=g):g=t[4];let _;t[5]!==i||t[6]!==l||t[7]!==c||t[8]!==n||t[9]!==g?(_=(0,Q.jsx)(v,{asChild:!0,children:(0,Q.jsx)(`button`,{type:`button`,onClick:n,disabled:l,"aria-pressed":c,className:g,children:i})}),t[5]=i,t[6]=l,t[7]=c,t[8]=n,t[9]=g,t[10]=_):_=t[10];let b;t[11]===r?b=t[12]:(b=(0,Q.jsx)(y,{children:r}),t[11]=r,t[12]=b);let S;return t[13]!==b||t[14]!==_?(S=(0,Q.jsxs)(x,{children:[_,b]}),t[13]=b,t[14]=_,t[15]=S):S=t[15],S}function We(e){let t=(0,Z.c)(43),{controller:n,urlInputRef:r}=e,{currentUrl:a,inputUrl:o,setInputUrl:s,handleKeyDown:c,goBack:l,goForward:u,refresh:d,toggleSelectMode:f,toggleEditMode:p,openExternal:m,updateDeviceMode:_,selectionModeError:v,isSelectModeEnabled:y,isEditModeActive:b,deviceMode:x}=n,S;t[0]!==a||t[1]!==l?(S=a&&(0,Q.jsx)($,{onClick:l,label:`Back`,children:(0,Q.jsx)(O,{size:15})}),t[0]=a,t[1]=l,t[2]=S):S=t[2];let C;t[3]!==a||t[4]!==u?(C=a&&(0,Q.jsx)($,{onClick:u,label:`Forward`,children:(0,Q.jsx)(j,{size:15})}),t[3]=a,t[4]=u,t[5]=C):C=t[5];let w;t[6]===s?w=t[7]:(w=e=>s(e.target.value),t[6]=s,t[7]=w);let T;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(T=h(`flex-1 rounded-full bg-muted font-mono`,i.captionForeground),t[8]=T):T=t[8];let E;t[9]!==c||t[10]!==o||t[11]!==w||t[12]!==r?(E=(0,Q.jsx)(V,{ref:r,type:`text`,value:o,onChange:w,onKeyDown:c,placeholder:`Enter URL...`,className:T,spellCheck:!1}),t[9]=c,t[10]=o,t[11]=w,t[12]=r,t[13]=E):E=t[13];let D;t[14]!==a||t[15]!==d?(D=a&&(0,Q.jsx)($,{onClick:d,label:`Refresh page`,children:(0,Q.jsx)(ee,{size:15})}),t[14]=a,t[15]=d,t[16]=D):D=t[16];let k;t[17]!==a||t[18]!==y||t[19]!==v||t[20]!==f?(k=a&&(0,Q.jsx)($,{onClick:f,label:v?`Select element unavailable: ${v}`:y?`Exit element selection`:`Select element from preview`,isActive:y,activeStyle:`depressed`,children:(0,Q.jsx)(I,{size:15})}),t[17]=a,t[18]=y,t[19]=v,t[20]=f,t[21]=k):k=t[21];let M;t[22]!==a||t[23]!==b||t[24]!==v||t[25]!==p?(M=a&&(0,Q.jsx)($,{onClick:p,label:v?`Edit text unavailable: ${v}`:b?`Exit text editing`:`Edit text from preview`,isActive:b,activeStyle:`depressed`,children:(0,Q.jsx)(J,{size:15})}),t[22]=a,t[23]=b,t[24]=v,t[25]=p,t[26]=M):M=t[26];let P;t[27]!==a||t[28]!==x||t[29]!==_?(P=a&&(0,Q.jsxs)(`div`,{className:`flex items-center rounded-md bg-muted p-0.5`,children:[(0,Q.jsx)($,{onClick:()=>_(`desktop`),label:`Desktop`,isActive:x===`desktop`,children:(0,Q.jsx)(F,{size:15})}),(0,Q.jsx)($,{onClick:()=>_(`tablet`),label:`Tablet`,isActive:x===`tablet`,children:(0,Q.jsx)(A,{size:15})}),(0,Q.jsx)($,{onClick:()=>_(`mobile`),label:`Mobile`,isActive:x===`mobile`,children:(0,Q.jsx)(N,{size:15})})]}),t[27]=a,t[28]=x,t[29]=_,t[30]=P):P=t[30];let L;t[31]!==a||t[32]!==m?(L=a&&(0,Q.jsx)($,{onClick:m,label:`Open in external browser`,children:(0,Q.jsx)(g,{size:15})}),t[31]=a,t[32]=m,t[33]=L):L=t[33];let R;return t[34]!==S||t[35]!==L||t[36]!==C||t[37]!==E||t[38]!==D||t[39]!==k||t[40]!==M||t[41]!==P?(R=(0,Q.jsx)(`div`,{className:`relative shrink-0 border-b border-border`,children:(0,Q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[S,C,E,D,k,M,P,L]})}),t[34]=S,t[35]=L,t[36]=C,t[37]=E,t[38]=D,t[39]=k,t[40]=M,t[41]=P,t[42]=R):R=t[42],R}function Ge(e){let t=(0,Z.c)(6),{devServerStopped:n,selectedProjectId:r,runCommand:a}=e,o=k(),s=c(Ke),l;return t[0]!==n||t[1]!==a||t[2]!==r||t[3]!==s||t[4]!==o?(l=(0,Q.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-6 text-muted-foreground`,children:n?(0,Q.jsx)(`p`,{className:i.body,children:`Dev server stopped`}):r&&s&&a&&!o?(0,Q.jsx)(D,{projectId:r,runCommand:a,large:!0}):(0,Q.jsx)(`p`,{className:i.body,children:`Enter a URL to browse`})}),t[0]=n,t[1]=a,t[2]=r,t[3]=s,t[4]=o,t[5]=l):l=t[5],l}function Ke(e){return e.selectedThreadId}function qe(e){let t=(0,Z.c)(24),{instanceId:n}=e,r=Fe(n),i=Ve[r.deviceMode],{registerPanelFocus:a}=T(),o=(0,X.useRef)(null),s,c;t[0]!==n||t[1]!==a?(s=()=>a(n,()=>o.current?.focus()),c=[n,a],t[0]=n,t[1]=a,t[2]=s,t[3]=c):(s=t[2],c=t[3]),(0,X.useEffect)(s,c);let l;t[4]!==r.currentUrl||t[5]!==r.handleWebviewRef||t[6]!==r.iframeRef||t[7]!==r.nativeWebviewMounted||t[8]!==r.previewRpcPreload||t[9]!==r.useNativeWebview?(l=(0,Q.jsx)(He,{useNativeWebview:r.useNativeWebview,nativeWebviewMounted:r.nativeWebviewMounted,currentUrl:r.currentUrl,previewRpcPreload:r.previewRpcPreload,handleWebviewRef:r.handleWebviewRef,iframeRef:r.iframeRef}),t[4]=r.currentUrl,t[5]=r.handleWebviewRef,t[6]=r.iframeRef,t[7]=r.nativeWebviewMounted,t[8]=r.previewRpcPreload,t[9]=r.useNativeWebview,t[10]=l):l=t[10];let u=l,d=r.isBrowserActive?`flex h-full min-h-0 flex-col overflow-hidden`:`hidden`,f;t[11]===d?f=t[12]:(f=h(d),t[11]=d,t[12]=f);let p=!r.isBrowserActive,m;t[13]===r?m=t[14]:(m=r.isBrowserActive?(0,Q.jsx)(We,{controller:r,urlInputRef:o}):null,t[13]=r,t[14]=m);let g;t[15]!==r||t[16]!==i||t[17]!==u?(g=r.currentUrl?(0,Q.jsxs)(Q.Fragment,{children:[r.isBrowserActive?(0,Q.jsx)(re,{onCommit:()=>r.runPreviewTextEdit(`commit`),onCancelPreview:()=>r.runPreviewTextEdit(`cancel`)}):null,(0,Q.jsx)(Ue,{selectionModeError:r.selectionModeError,isSelectModeEnabled:r.isSurfaceSelectInteraction,deviceMode:r.deviceMode,currentDeviceConfig:i,previewContainerRef:r.previewContainerRef,children:u})]}):r.isBrowserActive?(0,Q.jsx)(Ge,{devServerStopped:r.devServerStopped,selectedProjectId:r.selectedProjectId,runCommand:r.runCommand}):null,t[15]=r,t[16]=i,t[17]=u,t[18]=g):g=t[18];let _;return t[19]!==f||t[20]!==p||t[21]!==m||t[22]!==g?(_=(0,Q.jsx)(b,{children:(0,Q.jsxs)(`div`,{className:f,"aria-hidden":p,children:[m,g]})}),t[19]=f,t[20]=p,t[21]=m,t[22]=g,t[23]=_):_=t[23],_}export{qe as BrowserTab};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,t as r}from"./react-vendor-D61Uve5n.js";import{x as i}from"./dist-v_MvKS2-.js";import{$ as a,Z as o,i as s,n as c,r as l}from"./store-W78TGOIO.js";import{Mt as u,Pn as d}from"./api-C4ukGdyH.js";import{t as f}from"./random-uuid-Dc3UrwVo.js";var p=e(n(),1),m=t();function h({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,threadIds:r,threadMultiPaneStates:i}){let a={};for(let e of r){let t=i[e];t&&Object.keys(t.extraChatPanes).length!==0&&(a[e]={focusedPaneId:t.focusedPane,panes:Object.entries(t.extraChatPanes).map(([e,t])=>({paneId:e,conversationId:t.conversationId}))})}return{version:1,nonChatWindows:e,layout:t===null?`grid`:`expanded`,expandedWindowId:t,selectedWindowId:n,chatPanesByThread:a}}function g(e,t){let n=new Set(t?e.chatPanesByThread[t]?.panes.map(e=>e.paneId)??[]:[]),r=new Set(e.nonChatWindows.map(e=>e.id)),i=n.size>0||r.size>0;function o(e){return e===`primary`||e!==null&&(n.has(e)||r.has(e))}let s=o(e.selectedWindowId)?e.selectedWindowId:a,c=null;return e.layout===`expanded`&&i&&(c=o(e.expandedWindowId)?e.expandedWindowId:a),{nonChatWindows:e.nonChatWindows,expandedWindowId:c,selectedWindowId:s}}var _=i(`app.window-state`);function v(e,t,n){return JSON.stringify({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n})}function y({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,onReset:r,onHydrate:i}){let a=c(),s=l(e=>e.selectedProjectId),f=l(e=>e.projects),m=l(e=>e.threadMultiPaneStates),g=f.find(e=>e.projectId===s),y=(g?.threads.map(e=>e.threadId)??[]).join(`\0`),b=g!==void 0,[x,S]=(0,p.useState)(null),C=(0,p.useRef)(null),w=(0,p.useRef)(Promise.resolve()),T=(0,p.useRef)(null),E=(0,p.useRef)(0),D=(0,p.useRef)(v(e,t,n));D.current=v(e,t,n),(0,p.useEffect)(()=>{let e=T.current!==s;if(T.current=s,!s||!b){r(),S(null),C.current=null;return}e&&(r(),S(null),C.current=null);let t=s,n=y?y.split(`\0`):[],c=D.current,l=++E.current,d=!1;async function f(){try{let e=await u(t);if(d||l!==E.current)return;if(a({type:o.HydrateProjectChatPanes,threadIds:n,chatPanesByThread:e.chatPanesByThread}),D.current!==c){S(t);return}C.current=JSON.stringify(e),i(e),S(t)}catch(e){d||_.error(`Failed to restore project window state`,e)}}return f(),()=>{d=!0}},[a,b,i,r,y,s]),(0,p.useEffect)(()=>{if(!s||s!==x||!b)return;let r=h({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,threadIds:y?y.split(`\0`):[],threadMultiPaneStates:m}),i=JSON.stringify(r);if(i===C.current)return;let a=s;C.current=i,w.current=w.current.catch(()=>void 0).then(()=>d(a,r)).catch(e=>{_.error(`Failed to save project window state`,e),C.current===i&&(C.current=null)})},[t,b,x,e,s,n,y,m])}var b=r(),x=(0,p.createContext)(null);function S(e){let t=(0,m.c)(19),{windows:n,extraChatPanes:r,primaryChatOpen:i,expandedWindowId:o,selectedWindowId:s,setExpandedWindowId:c,setSelectedWindowId:l}=e,u,d;t[0]!==o||t[1]!==r||t[2]!==i||t[3]!==c||t[4]!==n?(u=()=>{if(o){if(o===`primary`){if(i)return;c(n.length>0?n[0].id:null);return}if(!n.some(e=>e.id===o)&&!r[o]){let e=i?a:n[0]?.id??null;c(e)}}},d=[o,r,i,n,c],t[0]=o,t[1]=r,t[2]=i,t[3]=c,t[4]=n,t[5]=u,t[6]=d):(u=t[5],d=t[6]),(0,p.useEffect)(u,d);let f,h;t[7]!==r||t[8]!==i||t[9]!==s||t[10]!==l||t[11]!==n?(f=()=>{if(s===`primary`){if(i||n.length===0)return;l(n[0].id);return}if(!n.some(e=>e.id===s)&&!r[s]){let e=i?a:n[0]?.id??`primary`;l(e)}},h=[r,i,s,n,l],t[7]=r,t[8]=i,t[9]=s,t[10]=l,t[11]=n,t[12]=f,t[13]=h):(f=t[12],h=t[13]),(0,p.useEffect)(f,h);let g,_;t[14]!==o||t[15]!==c||t[16]!==n.length?(g=()=>{n.length===0&&o!==null&&c(null)},_=[o,n.length,c],t[14]=o,t[15]=c,t[16]=n.length,t[17]=g,t[18]=_):(g=t[17],_=t[18]),(0,p.useEffect)(g,_)}function C(e,t,n,r){t.panelId===`chat`?n({type:o.RemoveChatPane,paneId:e}):r(t=>t.filter(t=>t.id!==e))}function w(e,t,n,r){if(n.length===1)return null;if(e!==t)return e;let i=n.filter(e=>e.id!==t);return r?a:i[0]?.id??null}function T(e,t,n,r){if(e!==t)return e;let i=n.filter(e=>e.id!==t);return r?a:i[0]?.id??`primary`}function E(e,t,n){return t.length===0?null:e===`primary`?n:e}function D(e,t){return e===`primary`&&t?t:e}function O(){let e=(0,m.c)(18),t=l(j),n=l(A),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[],e[0]=r):r=e[0];let[i,o]=(0,p.useState)(r),[s,c]=(0,p.useState)(!0),[u,d]=(0,p.useState)(null),[f,h]=(0,p.useState)(`half`),[g,_]=(0,p.useState)(`tasks`),[v,y]=(0,p.useState)(a),[b,x]=(0,p.useState)(null),S;e[1]===n?S=e[2]:(S=Object.keys(n).map(k),e[1]=n,e[2]=S);let C=S,w;e[3]!==C||e[4]!==i?(w=[...C,...i],e[3]=C,e[4]=i,e[5]=w):w=e[5];let T=w,E;return e[6]!==C||e[7]!==f||e[8]!==u||e[9]!==n||e[10]!==i||e[11]!==b||e[12]!==s||e[13]!==t||e[14]!==v||e[15]!==g||e[16]!==T?(E={selectedThreadId:t,extraChatPanes:n,nonChatWindows:i,setNonChatWindows:o,primaryChatOpen:s,setPrimaryChatOpen:c,expandedWindowId:u,setExpandedWindowId:d,columnWidth:f,setColumnWidth:h,tasksView:g,setTasksView:_,selectedWindowId:v,setSelectedWindowId:y,pendingScrollWindowId:b,setPendingScrollWindowId:x,chatWindows:C,windows:T},e[6]=C,e[7]=f,e[8]=u,e[9]=n,e[10]=i,e[11]=b,e[12]=s,e[13]=t,e[14]=v,e[15]=g,e[16]=T,e[17]=E):E=e[17],E}function k(e){return{id:e,panelId:`chat`}}function A(e){return e.extraChatPanes}function j(e){return e.selectedThreadId}function M(e,t,n){let r=(0,m.c)(11),i=c(),a;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=new Map,r[0]=a):a=r[0];let s=(0,p.useRef)(a),l=(0,p.useRef)(null),u;r[1]===Symbol.for(`react.memo_cache_sentinel`)?(u=(e,t)=>(s.current.set(e,t),()=>{s.current.delete(e)}),r[1]=u):u=r[1];let d=u,f;r[2]!==i||r[3]!==e?(f=t=>{if(t===`primary`){i({type:o.SetFocusedPane,paneId:`primary`}),i({type:o.FocusChatInput});return}if(e.find(e=>e.id===t)?.panelId===`chat`){i({type:o.SetFocusedPane,paneId:t}),i({type:o.FocusChatInput});return}s.current.get(t)?.()},r[2]=i,r[3]=e,r[4]=f):f=r[4];let h=f,g,_;r[5]!==t||r[6]!==h||r[7]!==n?(g=()=>{let e=t??n;if(e===null)return;let r=l.current;l.current=e,r!==null&&r!==e&&h(e)},_=[t,n,h],r[5]=t,r[6]=h,r[7]=n,r[8]=g,r[9]=_):(g=r[8],_=r[9]),(0,p.useEffect)(g,_);let v;return r[10]===Symbol.for(`react.memo_cache_sentinel`)?(v={registerPanelFocus:d,prevActiveWindowRef:l},r[10]=v):v=r[10],v}function N(e){let t=(0,m.c)(53),{dispatch:n,selectedThreadId:r,windows:i,chatWindows:s,nonChatWindows:c,primaryChatOpen:l,setPrimaryChatOpen:u,setExpandedWindowId:d,setSelectedWindowId:p,setPendingScrollWindowId:h,setNonChatWindows:g}=e,_;t[0]===p?_=t[1]:(_=e=>{p(e)},t[0]=p,t[1]=_);let v=_,y;t[2]!==d||t[3]!==u||t[4]!==p?(y=e=>{e===`primary`&&u(!0),p(e),d(e)},t[2]=d,t[3]=u,t[4]=p,t[5]=y):y=t[5];let b=y,x;t[6]===d?x=t[7]:(x=()=>{d(null)},t[6]=d,t[7]=x);let S=x,O;t[8]!==l||t[9]!==d||t[10]!==h||t[11]!==u||t[12]!==i.length?(O=e=>{e===`primary`&&u(!0),d(t=>t===null&&i.length>0||t===null&&l&&e!==`primary`?null:e),h(e)},t[8]=l,t[9]=d,t[10]=h,t[11]=u,t[12]=i.length,t[13]=O):O=t[13];let k=O,A;t[14]===h?A=t[15]:(A=()=>{h(null)},t[14]=h,t[15]=A);let j=A,M;t[16]!==n||t[17]!==k||t[18]!==r||t[19]!==g?(M=e=>{let t=f();return e===`chat`?r?(n({type:o.AddChatPane,paneId:t,conversationId:f()}),k(t),t):t:(g(n=>[...n,{id:t,panelId:e}]),k(t),t)},t[16]=n,t[17]=k,t[18]=r,t[19]=g,t[20]=M):M=t[20];let N=M,F;t[21]!==n||t[22]!==l||t[23]!==d||t[24]!==g||t[25]!==u||t[26]!==p||t[27]!==i?(F=e=>{if(e===`primary`){u(!1);let e=i[0]?.id??null;d(t=>E(t,i,e)),p(t=>D(t,e));return}let t=i.find(t=>t.id===e);t&&(t.panelId!==`chat`||l||i.some(t=>t.panelId===`chat`&&t.id!==e))&&(C(e,t,n,g),d(t=>w(t,e,i,l)),p(t=>T(t,e,i,l)))},t[21]=n,t[22]=l,t[23]=d,t[24]=g,t[25]=u,t[26]=p,t[27]=i,t[28]=F):F=t[28];let I=F,L;t[29]!==n||t[30]!==d||t[31]!==g||t[32]!==u||t[33]!==p||t[34]!==i?(L=()=>{d(null),p(a),u(!0);for(let e of i)e.panelId===`chat`&&n({type:o.RemoveChatPane,paneId:e.id});g([])},t[29]=n,t[30]=d,t[31]=g,t[32]=u,t[33]=p,t[34]=i,t[35]=L):L=t[35];let R=L,z;t[36]!==s||t[37]!==c?(z=e=>e===`chat`?s[0]:c.find(t=>t.panelId===e),t[36]=s,t[37]=c,t[38]=z):z=t[38];let B=z,V;t[39]!==l||t[40]!==i?(V=e=>e===`chat`?l||i.some(P):i.some(t=>t.panelId===e),t[39]=l,t[40]=i,t[41]=V):V=t[41];let H=V,U;return t[42]!==N||t[43]!==j||t[44]!==R||t[45]!==I||t[46]!==S||t[47]!==b||t[48]!==B||t[49]!==H||t[50]!==k||t[51]!==v?(U={selectWindow:v,expandWindow:b,collapseLayout:S,revealWindow:k,clearPendingScrollWindow:j,addWindow:N,closeWindow:I,closeAllWindows:R,findWindowByPanel:B,isPanelOpen:H},t[42]=N,t[43]=j,t[44]=R,t[45]=I,t[46]=S,t[47]=b,t[48]=B,t[49]=H,t[50]=k,t[51]=v,t[52]=U):U=t[52],U}function P(e){return e.panelId===`chat`}function F(e){let t=(0,m.c)(3),{children:n}=e,r=I(),i;return t[0]!==n||t[1]!==r?(i=(0,b.jsx)(x.Provider,{value:r,children:n}),t[0]=n,t[1]=r,t[2]=i):i=t[2],i}function I(){let e=c(),t=s(),{selectedThreadId:n,extraChatPanes:r,nonChatWindows:i,setNonChatWindows:o,primaryChatOpen:l,setPrimaryChatOpen:u,expandedWindowId:d,setExpandedWindowId:f,columnWidth:m,setColumnWidth:h,tasksView:_,setTasksView:v,selectedWindowId:b,setSelectedWindowId:x,pendingScrollWindowId:C,setPendingScrollWindowId:w,chatWindows:T,windows:E}=O(),{registerPanelFocus:D,prevActiveWindowRef:k}=M(E,d,b);y({nonChatWindows:i,expandedWindowId:d,selectedWindowId:b,onReset:(0,p.useCallback)(()=>{k.current=a,o([]),u(!0),f(null),x(a),w(null)},[]),onHydrate:(0,p.useCallback)(e=>{let n=t.getState().selectedThreadId,r=g(e,n);k.current=r.expandedWindowId??r.selectedWindowId,o(r.nonChatWindows),f(r.expandedWindowId),x(r.selectedWindowId),w(null)},[t])}),S({windows:E,extraChatPanes:r,primaryChatOpen:l,expandedWindowId:d,selectedWindowId:b,setExpandedWindowId:f,setSelectedWindowId:x});let{selectWindow:A,expandWindow:j,collapseLayout:P,revealWindow:F,clearPendingScrollWindow:I,addWindow:L,closeWindow:R,closeAllWindows:z,findWindowByPanel:B,isPanelOpen:V}=N({dispatch:e,selectedThreadId:n,windows:E,chatWindows:T,nonChatWindows:i,primaryChatOpen:l,setPrimaryChatOpen:u,setExpandedWindowId:f,setSelectedWindowId:x,setPendingScrollWindowId:w,setNonChatWindows:o}),H=E.length>0,U=d!==null;return(0,p.useMemo)(()=>({windows:E,addWindow:L,closeWindow:R,closeAllWindows:z,isPrimaryChatOpen:l,isPanelOpen:V,findWindowByPanel:B,hasOpenWindows:H,isLayoutExpanded:U,expandedWindowId:d,expandWindow:j,collapseLayout:P,columnWidth:m,setColumnWidth:h,selectedWindowId:b,selectWindow:A,revealWindow:F,pendingScrollWindowId:C,clearPendingScrollWindow:I,tasksView:_,setTasksView:v,registerPanelFocus:D}),[E,L,R,z,l,V,B,H,U,d,j,P,m,h,b,A,F,C,I,_,v,D])}function L(){let e=(0,p.useContext)(x);if(!e)throw Error(`useChatDock must be used within a ChatDockProvider`);return e}function R(){return(0,p.useContext)(x)}export{L as n,R as r,F as t};
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,t as r}from"./react-vendor-D61Uve5n.js";import{x as i}from"./dist-v_MvKS2-.js";import{$ as a,Z as o,i as s,n as c,r as l}from"./store-W78TGOIO.js";import{Nn as u,jt as d}from"./api-Cp9I7CxD.js";import{t as f}from"./random-uuid-Dc3UrwVo.js";var p=e(n(),1),m=t();function h({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,threadIds:r,threadMultiPaneStates:i}){let a={};for(let e of r){let t=i[e];t&&Object.keys(t.extraChatPanes).length!==0&&(a[e]={focusedPaneId:t.focusedPane,panes:Object.entries(t.extraChatPanes).map(([e,t])=>({paneId:e,conversationId:t.conversationId}))})}return{version:1,nonChatWindows:e,layout:t===null?`grid`:`expanded`,expandedWindowId:t,selectedWindowId:n,chatPanesByThread:a}}function g(e,t){let n=new Set(t?e.chatPanesByThread[t]?.panes.map(e=>e.paneId)??[]:[]),r=new Set(e.nonChatWindows.map(e=>e.id)),i=n.size>0||r.size>0;function o(e){return e===`primary`||e!==null&&(n.has(e)||r.has(e))}let s=o(e.selectedWindowId)?e.selectedWindowId:a,c=null;return e.layout===`expanded`&&i&&(c=o(e.expandedWindowId)?e.expandedWindowId:a),{nonChatWindows:e.nonChatWindows,expandedWindowId:c,selectedWindowId:s}}var _=i(`app.window-state`);function v(e,t,n){return JSON.stringify({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n})}function y({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,onReset:r,onHydrate:i}){let a=c(),s=l(e=>e.selectedProjectId),f=l(e=>e.projects),m=l(e=>e.threadMultiPaneStates),g=f.find(e=>e.projectId===s),y=(g?.threads.map(e=>e.threadId)??[]).join(`\0`),b=g!==void 0,[x,S]=(0,p.useState)(null),C=(0,p.useRef)(null),w=(0,p.useRef)(Promise.resolve()),T=(0,p.useRef)(null),E=(0,p.useRef)(0),D=(0,p.useRef)(v(e,t,n));D.current=v(e,t,n),(0,p.useEffect)(()=>{let e=T.current!==s;if(T.current=s,!s||!b){r(),S(null),C.current=null;return}e&&(r(),S(null),C.current=null);let t=s,n=y?y.split(`\0`):[],c=D.current,l=++E.current,u=!1;async function f(){try{let e=await d(t);if(u||l!==E.current)return;if(a({type:o.HydrateProjectChatPanes,threadIds:n,chatPanesByThread:e.chatPanesByThread}),D.current!==c){S(t);return}C.current=JSON.stringify(e),i(e),S(t)}catch(e){u||_.error(`Failed to restore project window state`,e)}}return f(),()=>{u=!0}},[a,b,i,r,y,s]),(0,p.useEffect)(()=>{if(!s||s!==x||!b)return;let r=h({nonChatWindows:e,expandedWindowId:t,selectedWindowId:n,threadIds:y?y.split(`\0`):[],threadMultiPaneStates:m}),i=JSON.stringify(r);if(i===C.current)return;let a=s;C.current=i,w.current=w.current.catch(()=>void 0).then(()=>u(a,r)).catch(e=>{_.error(`Failed to save project window state`,e),C.current===i&&(C.current=null)})},[t,b,x,e,s,n,y,m])}var b=r(),x=(0,p.createContext)(null);function S(e){let t=(0,m.c)(19),{windows:n,extraChatPanes:r,primaryChatOpen:i,expandedWindowId:o,selectedWindowId:s,setExpandedWindowId:c,setSelectedWindowId:l}=e,u,d;t[0]!==o||t[1]!==r||t[2]!==i||t[3]!==c||t[4]!==n?(u=()=>{if(o){if(o===`primary`){if(i)return;c(n.length>0?n[0].id:null);return}if(!n.some(e=>e.id===o)&&!r[o]){let e=i?a:n[0]?.id??null;c(e)}}},d=[o,r,i,n,c],t[0]=o,t[1]=r,t[2]=i,t[3]=c,t[4]=n,t[5]=u,t[6]=d):(u=t[5],d=t[6]),(0,p.useEffect)(u,d);let f,h;t[7]!==r||t[8]!==i||t[9]!==s||t[10]!==l||t[11]!==n?(f=()=>{if(s===`primary`){if(i||n.length===0)return;l(n[0].id);return}if(!n.some(e=>e.id===s)&&!r[s]){let e=i?a:n[0]?.id??`primary`;l(e)}},h=[r,i,s,n,l],t[7]=r,t[8]=i,t[9]=s,t[10]=l,t[11]=n,t[12]=f,t[13]=h):(f=t[12],h=t[13]),(0,p.useEffect)(f,h);let g,_;t[14]!==o||t[15]!==c||t[16]!==n.length?(g=()=>{n.length===0&&o!==null&&c(null)},_=[o,n.length,c],t[14]=o,t[15]=c,t[16]=n.length,t[17]=g,t[18]=_):(g=t[17],_=t[18]),(0,p.useEffect)(g,_)}function C(e,t,n,r){t.panelId===`chat`?n({type:o.RemoveChatPane,paneId:e}):r(t=>t.filter(t=>t.id!==e))}function w(e,t,n,r){if(n.length===1)return null;if(e!==t)return e;let i=n.filter(e=>e.id!==t);return r?a:i[0]?.id??null}function T(e,t,n,r){if(e!==t)return e;let i=n.filter(e=>e.id!==t);return r?a:i[0]?.id??`primary`}function E(e,t,n){return t.length===0?null:e===`primary`?n:e}function D(e,t){return e===`primary`&&t?t:e}function O(){let e=(0,m.c)(18),t=l(j),n=l(A),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[],e[0]=r):r=e[0];let[i,o]=(0,p.useState)(r),[s,c]=(0,p.useState)(!0),[u,d]=(0,p.useState)(null),[f,h]=(0,p.useState)(`half`),[g,_]=(0,p.useState)(`tasks`),[v,y]=(0,p.useState)(a),[b,x]=(0,p.useState)(null),S;e[1]===n?S=e[2]:(S=Object.keys(n).map(k),e[1]=n,e[2]=S);let C=S,w;e[3]!==C||e[4]!==i?(w=[...C,...i],e[3]=C,e[4]=i,e[5]=w):w=e[5];let T=w,E;return e[6]!==C||e[7]!==f||e[8]!==u||e[9]!==n||e[10]!==i||e[11]!==b||e[12]!==s||e[13]!==t||e[14]!==v||e[15]!==g||e[16]!==T?(E={selectedThreadId:t,extraChatPanes:n,nonChatWindows:i,setNonChatWindows:o,primaryChatOpen:s,setPrimaryChatOpen:c,expandedWindowId:u,setExpandedWindowId:d,columnWidth:f,setColumnWidth:h,tasksView:g,setTasksView:_,selectedWindowId:v,setSelectedWindowId:y,pendingScrollWindowId:b,setPendingScrollWindowId:x,chatWindows:C,windows:T},e[6]=C,e[7]=f,e[8]=u,e[9]=n,e[10]=i,e[11]=b,e[12]=s,e[13]=t,e[14]=v,e[15]=g,e[16]=T,e[17]=E):E=e[17],E}function k(e){return{id:e,panelId:`chat`}}function A(e){return e.extraChatPanes}function j(e){return e.selectedThreadId}function M(e,t,n){let r=(0,m.c)(11),i=c(),a;r[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=new Map,r[0]=a):a=r[0];let s=(0,p.useRef)(a),l=(0,p.useRef)(null),u;r[1]===Symbol.for(`react.memo_cache_sentinel`)?(u=(e,t)=>(s.current.set(e,t),()=>{s.current.delete(e)}),r[1]=u):u=r[1];let d=u,f;r[2]!==i||r[3]!==e?(f=t=>{if(t===`primary`){i({type:o.SetFocusedPane,paneId:`primary`}),i({type:o.FocusChatInput});return}if(e.find(e=>e.id===t)?.panelId===`chat`){i({type:o.SetFocusedPane,paneId:t}),i({type:o.FocusChatInput});return}s.current.get(t)?.()},r[2]=i,r[3]=e,r[4]=f):f=r[4];let h=f,g,_;r[5]!==t||r[6]!==h||r[7]!==n?(g=()=>{let e=t??n;if(e===null)return;let r=l.current;l.current=e,r!==null&&r!==e&&h(e)},_=[t,n,h],r[5]=t,r[6]=h,r[7]=n,r[8]=g,r[9]=_):(g=r[8],_=r[9]),(0,p.useEffect)(g,_);let v;return r[10]===Symbol.for(`react.memo_cache_sentinel`)?(v={registerPanelFocus:d,prevActiveWindowRef:l},r[10]=v):v=r[10],v}function N(e){let t=(0,m.c)(53),{dispatch:n,selectedThreadId:r,windows:i,chatWindows:s,nonChatWindows:c,primaryChatOpen:l,setPrimaryChatOpen:u,setExpandedWindowId:d,setSelectedWindowId:p,setPendingScrollWindowId:h,setNonChatWindows:g}=e,_;t[0]===p?_=t[1]:(_=e=>{p(e)},t[0]=p,t[1]=_);let v=_,y;t[2]!==d||t[3]!==u||t[4]!==p?(y=e=>{e===`primary`&&u(!0),p(e),d(e)},t[2]=d,t[3]=u,t[4]=p,t[5]=y):y=t[5];let b=y,x;t[6]===d?x=t[7]:(x=()=>{d(null)},t[6]=d,t[7]=x);let S=x,O;t[8]!==l||t[9]!==d||t[10]!==h||t[11]!==u||t[12]!==i.length?(O=e=>{e===`primary`&&u(!0),d(t=>t===null&&i.length>0||t===null&&l&&e!==`primary`?null:e),h(e)},t[8]=l,t[9]=d,t[10]=h,t[11]=u,t[12]=i.length,t[13]=O):O=t[13];let k=O,A;t[14]===h?A=t[15]:(A=()=>{h(null)},t[14]=h,t[15]=A);let j=A,M;t[16]!==n||t[17]!==k||t[18]!==r||t[19]!==g?(M=e=>{let t=f();return e===`chat`?r?(n({type:o.AddChatPane,paneId:t,conversationId:f()}),k(t),t):t:(g(n=>[...n,{id:t,panelId:e}]),k(t),t)},t[16]=n,t[17]=k,t[18]=r,t[19]=g,t[20]=M):M=t[20];let N=M,F;t[21]!==n||t[22]!==l||t[23]!==d||t[24]!==g||t[25]!==u||t[26]!==p||t[27]!==i?(F=e=>{if(e===`primary`){u(!1);let e=i[0]?.id??null;d(t=>E(t,i,e)),p(t=>D(t,e));return}let t=i.find(t=>t.id===e);t&&(t.panelId!==`chat`||l||i.some(t=>t.panelId===`chat`&&t.id!==e))&&(C(e,t,n,g),d(t=>w(t,e,i,l)),p(t=>T(t,e,i,l)))},t[21]=n,t[22]=l,t[23]=d,t[24]=g,t[25]=u,t[26]=p,t[27]=i,t[28]=F):F=t[28];let I=F,L;t[29]!==n||t[30]!==d||t[31]!==g||t[32]!==u||t[33]!==p||t[34]!==i?(L=()=>{d(null),p(a),u(!0);for(let e of i)e.panelId===`chat`&&n({type:o.RemoveChatPane,paneId:e.id});g([])},t[29]=n,t[30]=d,t[31]=g,t[32]=u,t[33]=p,t[34]=i,t[35]=L):L=t[35];let R=L,z;t[36]!==s||t[37]!==c?(z=e=>e===`chat`?s[0]:c.find(t=>t.panelId===e),t[36]=s,t[37]=c,t[38]=z):z=t[38];let B=z,V;t[39]!==l||t[40]!==i?(V=e=>e===`chat`?l||i.some(P):i.some(t=>t.panelId===e),t[39]=l,t[40]=i,t[41]=V):V=t[41];let H=V,U;return t[42]!==N||t[43]!==j||t[44]!==R||t[45]!==I||t[46]!==S||t[47]!==b||t[48]!==B||t[49]!==H||t[50]!==k||t[51]!==v?(U={selectWindow:v,expandWindow:b,collapseLayout:S,revealWindow:k,clearPendingScrollWindow:j,addWindow:N,closeWindow:I,closeAllWindows:R,findWindowByPanel:B,isPanelOpen:H},t[42]=N,t[43]=j,t[44]=R,t[45]=I,t[46]=S,t[47]=b,t[48]=B,t[49]=H,t[50]=k,t[51]=v,t[52]=U):U=t[52],U}function P(e){return e.panelId===`chat`}function F(e){let t=(0,m.c)(3),{children:n}=e,r=I(),i;return t[0]!==n||t[1]!==r?(i=(0,b.jsx)(x.Provider,{value:r,children:n}),t[0]=n,t[1]=r,t[2]=i):i=t[2],i}function I(){let e=c(),t=s(),{selectedThreadId:n,extraChatPanes:r,nonChatWindows:i,setNonChatWindows:o,primaryChatOpen:l,setPrimaryChatOpen:u,expandedWindowId:d,setExpandedWindowId:f,columnWidth:m,setColumnWidth:h,tasksView:_,setTasksView:v,selectedWindowId:b,setSelectedWindowId:x,pendingScrollWindowId:C,setPendingScrollWindowId:w,chatWindows:T,windows:E}=O(),{registerPanelFocus:D,prevActiveWindowRef:k}=M(E,d,b);y({nonChatWindows:i,expandedWindowId:d,selectedWindowId:b,onReset:(0,p.useCallback)(()=>{k.current=a,o([]),u(!0),f(null),x(a),w(null)},[]),onHydrate:(0,p.useCallback)(e=>{let n=t.getState().selectedThreadId,r=g(e,n);k.current=r.expandedWindowId??r.selectedWindowId,o(r.nonChatWindows),f(r.expandedWindowId),x(r.selectedWindowId),w(null)},[t])}),S({windows:E,extraChatPanes:r,primaryChatOpen:l,expandedWindowId:d,selectedWindowId:b,setExpandedWindowId:f,setSelectedWindowId:x});let{selectWindow:A,expandWindow:j,collapseLayout:P,revealWindow:F,clearPendingScrollWindow:I,addWindow:L,closeWindow:R,closeAllWindows:z,findWindowByPanel:B,isPanelOpen:V}=N({dispatch:e,selectedThreadId:n,windows:E,chatWindows:T,nonChatWindows:i,primaryChatOpen:l,setPrimaryChatOpen:u,setExpandedWindowId:f,setSelectedWindowId:x,setPendingScrollWindowId:w,setNonChatWindows:o}),H=E.length>0,U=d!==null;return(0,p.useMemo)(()=>({windows:E,addWindow:L,closeWindow:R,closeAllWindows:z,isPrimaryChatOpen:l,isPanelOpen:V,findWindowByPanel:B,hasOpenWindows:H,isLayoutExpanded:U,expandedWindowId:d,expandWindow:j,collapseLayout:P,columnWidth:m,setColumnWidth:h,selectedWindowId:b,selectWindow:A,revealWindow:F,pendingScrollWindowId:C,clearPendingScrollWindow:I,tasksView:_,setTasksView:v,registerPanelFocus:D}),[E,L,R,z,l,V,B,H,U,d,j,P,m,h,b,A,F,C,I,_,v,D])}function L(){let e=(0,p.useContext)(x);if(!e)throw Error(`useChatDock must be used within a ChatDockProvider`);return e}function R(){return(0,p.useContext)(x)}export{L as n,R as r,F as t};
@@ -0,0 +1,9 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/web-Dlo3GwCf.js","assets/dist-CgbWuuq4.js"])))=>i.map(i=>d[i]);
2
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,r,t as i}from"./react-vendor-D61Uve5n.js";import{n as a}from"./QueryClientProvider-CYXTUmYo.js";import{L as o,_ as s,tt as c,x as l}from"./dist-v_MvKS2-.js";import{A as u,B as d,C as f,D as p,E as m,H as h,J as g,N as _,O as v,Q as y,S as b,T as x,U as S,W as C,Z as w,b as T,i as E,j as ee,n as te,r as D,w as O,x as k,y as ne,z as A}from"./store-W78TGOIO.js";import{Ar as re,Hi as ie,Jn as ae,Qr as oe,Xr as se,Zr as ce,_i as le,bn as ue,ca as de,cr as fe,di as pe,et as me,g as he,ga as ge,hr as _e,ii as ve,nt as ye,qn as be,qt as xe,rr as j,sr as Se,st as Ce,tt as we,vn as Te,wt as M,xi as Ee,xn as De,zn as Oe}from"./api-Cp9I7CxD.js";import{s as ke,t as Ae}from"./create-project-workspace-CJ94yHAB.js";import{w as je,y as Me}from"./task-utils-Cnq9Eszt.js";import{t as Ne}from"./random-uuid-Dc3UrwVo.js";import{n as Pe}from"./use-toast-CKgZ8YeP.js";import{t as N}from"./query-keys-CcnonAAG.js";import{t as Fe}from"./remote-media-url-C-GdJb-D.js";import{n as Ie}from"./dist-CgbWuuq4.js";function Le(e){let t=(e??``).replace(/\s+/g,` `).trim().replace(/^["'“”‘’]+|["'“”‘’]+$/g,``).trim();return t?t.length>100?`${t.slice(0,100).trimEnd()}…`:t:``}var Re=1e3,ze=2e3,Be=3e4,Ve=`The model was stuck repeating itself, so the run was stopped.`,He=[`paused`,`blocked`,`awaiting-human`];function Ue(e){return He.some(t=>t===e)}function We(e){let t=Math.max(0,Math.floor(e/1e3)),n=t%60,r=Math.floor(t/60)%60,i=Math.floor(t/3600),a=e=>String(e).padStart(2,`0`);return i>0?`${i}:${a(r)}:${a(n)}`:`${r}:${a(n)}`}var Ge=`Tarsk quit while this was running, so it was interrupted.`,Ke=`*Tarsk quit while this was running, so it was interrupted.*`,qe=[500,1e3,2e3,4e3,8e3,8e3,8e3,8e3],Je=5e3,Ye=1e3,Xe=15e3,Ze=8e3;function Qe(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.type===`long_running_confirmation`||n.type===`shell_permission`||n.type===`web_fetch_permission`)return t}return-1}function $e(e){return e.type===`content`||e.type===`thinking`?e.chunks.some(e=>e.trim().length>0):!1}function et(e){let t=T(e),n=t.some(e=>ee(e)&&e.name===`ask_user`),r=t.some(e=>u(e)&&e.toolName===`ask_user`);if(n&&!r)return!0;let i=Qe(e);return i!==-1&&!e.slice(i+1).some($e)}function tt(e){let t=T(e).filter(e=>e.type!==`compact`);return t.length===0?`...`:t.length===1&&t[0]?.type===`text`&&`text`in t[0]?t[0].text:JSON.stringify(t)}var P=e(n(),1),F=t(),nt=i(),I=new Set,rt=new Map,it=5e3,at=`__thread__`;function L(e,t){let n=t?.trim();return n?`${e}\0${n}`:`${e}\0${at}`}function ot(e){let t=rt.get(e);t&&clearTimeout(t),rt.set(e,setTimeout(()=>{I.delete(e),rt.delete(e)},it))}function st(e,t){let n=L(e,t);I.add(n),ot(n)}function ct(e,t){return I.has(L(e,t))||ut(e)}function lt(e){let t=L(e);I.add(t),ot(t)}function ut(e){return I.has(L(e))}function dt(e){return e.filter(e=>!ut(e))}var ft=`__thread__`;function pt(e,t,n){if(!R(n))return null;let r=e.find(e=>e.threadId===t&&e.conversationId===n);return r?r.isAwaitingHuman?`awaiting-human`:`processing`:null}function mt(e,t){let n=e.filter(e=>e.threadId===t);return n.some(e=>e.isAwaitingHuman)?`awaiting-human`:n.length>0?`processing`:null}function ht(e,t,n){return R(n)?e.some(e=>e.threadId===t&&e.conversationId===n&&e.isAutomated===!0):!1}function gt(e,t){return e.some(e=>e.threadId===t&&e.isAutomated===!0)}function _t(e,t,n,r){let i=n?.trim(),a=r?.trim();if(i&&i!==a)return null;let o=e.filter(e=>e.threadId===t&&R(e.conversationId));return o.length===1?o[0].isAwaitingHuman?`awaiting-human`:`processing`:null}function vt(e){return`${e.threadId}\0${e.conversationId}`}function yt(e,t){let n=new Set(e.filter(e=>e.isAwaitingHuman).map(vt));return t.filter(e=>e.isAwaitingHuman&&!n.has(vt(e)))}function bt(e){let t=e.processingRuns.filter(e=>!ct(e.threadId,e.conversationId));return{threadIds:dt(e.processingThreadIds).filter(n=>t.some(e=>e.threadId===n)||!e.processingRuns.some(e=>e.threadId===n)),processingRuns:t}}function R(e){let t=e?.trim();return!!t&&t!==`__thread__`}function xt(e,t,n){return pt(e,t,n)!==null}function St(e,t){return t===e.selectedThreadId?e.extraChatPanes:e.threadMultiPaneStates[t]?.extraChatPanes??{}}function Ct(e,t,n){if(!R(n))return;let r=St(e,t);for(let[e,t]of Object.entries(r))if(t.conversationId===n)return e;let i=t===e.selectedThreadId;if(i&&e.primaryConversationId===n)return y;let a=Object.keys(r).length>0;if(!(i&&a&&e.primaryConversationId!==n))return y}function wt(e,t,n){let r=[],i=new Set;for(let a of t){if(!R(a.conversationId)||n.isRecentlyFinalized(a.threadId,a.conversationId)||n.isThreadBeingCreated(a.threadId))continue;let t=Ct(e,a.threadId,a.conversationId);if(!t||n.hasSession(a.threadId,t))continue;let o=`${a.threadId}:${t}:${a.conversationId}`;i.has(o)||(i.add(o),r.push({threadId:a.threadId,paneId:t,conversationId:a.conversationId}))}return r}function Tt(e){let t=e.indexOf(`:`);if(!(t<=0||t===e.length-1))return{threadId:e.slice(0,t),paneId:e.slice(t+1)}}function Et(e,t,n){return t.includes(e)?g(e,{hasSession:()=>!1,streamingStates:n}):!1}function Dt(e,t,n,r){return!r||!Et(e,t,n)}function Ot(e,t){let n=[];for(let r of Object.keys(e.threadStreamingStates)){if(!e.threadStreamingStates[r].isStreaming)continue;let i=Tt(r);i&&(t.threadId&&i.threadId!==t.threadId||e.processingThreadIds.includes(i.threadId)||e.pendingChatMessage?.threadId!==i.threadId&&(t.hasSession(i.threadId,i.paneId)||h(i.threadId,i.paneId)===r&&n.push(i)))}return n}function kt(e,t,n){let r=Ot(t,n);for(let t of r)e({type:w.ResetStream,threadId:t.threadId,paneId:t.paneId});return r}var At=(0,P.createContext)(void 0),z=new Map,jt=new Set;function Mt(e){return jt.add(e),()=>{jt.delete(e)}}function Nt(e){return(z.get(e)??0)>0}function Pt(e,t){let n=z.get(e)??0,r=t?n+1:Math.max(0,n-1);if(r!==n){r===0?z.delete(e):z.set(e,r);for(let e of jt)e()}}var B=new Map,Ft=new Set;function It(e){return Ft.add(e),()=>{Ft.delete(e)}}function Lt(e){return(B.get(e)??0)>0}function Rt(e,t){let n=B.get(e)??0,r=t?n+1:Math.max(0,n-1);if(r!==n){r===0?B.delete(e):B.set(e,r);for(let e of Ft)e()}}function zt(e){let t=(0,F.c)(24),{paneId:n,conversationId:r,fillPane:i,children:a}=e,o=i!==void 0&&i,s=te(),c=D(Ht),l;t[0]===n?l=t[1]:(l=()=>Nt(n),t[0]=n,t[1]=l);let u=(0,P.useSyncExternalStore)(Mt,l,Vt),d;t[2]===n?d=t[3]:(d=()=>Lt(n),t[2]=n,t[3]=d);let f=(0,P.useSyncExternalStore)(It,d,Bt),p;t[4]!==s||t[5]!==n?(p=()=>{s({type:w.SetFocusedPane,paneId:n})},t[4]=s,t[5]=n,t[6]=p):p=t[6];let m=p,h;t[7]===n?h=t[8]:(h=e=>{Pt(n,e)},t[7]=n,t[8]=h);let g=h,_;t[9]===n?_=t[10]:(_=e=>{Rt(n,e)},t[9]=n,t[10]=_);let v=_,y=c===n,b;t[11]!==u||t[12]!==r||t[13]!==o||t[14]!==f||t[15]!==n||t[16]!==g||t[17]!==m||t[18]!==v||t[19]!==y?(b={paneId:n,conversationId:r,isFocused:y,fillPane:o,setFocused:m,askUserActive:u,setAskUserActive:g,mergedActive:f,setMergedActive:v},t[11]=u,t[12]=r,t[13]=o,t[14]=f,t[15]=n,t[16]=g,t[17]=m,t[18]=v,t[19]=y,t[20]=b):b=t[20];let x=b,S;return t[21]!==a||t[22]!==x?(S=(0,nt.jsx)(At.Provider,{value:x,children:a}),t[21]=a,t[22]=x,t[23]=S):S=t[23],S}function Bt(){return!1}function Vt(){return!1}function Ht(e){return e.focusedPane}function Ut(e){let t=(0,F.c)(2),n;return t[0]===e?n=t[1]:(n=()=>Nt(e),t[0]=e,t[1]=n),(0,P.useSyncExternalStore)(Mt,n,Wt)}function Wt(){return!1}function Gt(){return(0,P.useSyncExternalStore)(Mt,qt,Kt)}function Kt(){return!1}function qt(){return z.size>0}function Jt(){let e=(0,F.c)(1),t=(0,P.useContext)(At);if(t===void 0){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={paneId:`primary`,conversationId:void 0,isFocused:!0,fillPane:!1,setFocused:Zt,askUserActive:!1,setAskUserActive:Xt,mergedActive:!1,setMergedActive:Yt},e[0]=t):t=e[0],t}return t}function Yt(){}function Xt(){}function Zt(){}function Qt(){let{paneId:e,conversationId:t}=Jt(),n=D($t);return t??(e===y?n:void 0)}function $t(e){return e.primaryConversationId}var en=Ie(`KeepAwake`,{web:()=>r(()=>import(`./web-Dlo3GwCf.js`).then(e=>new e.KeepAwakeWeb),__vite__mapDeps([0,1]))}),V=0;function tn(){return typeof window<`u`&&le()}async function nn(){if(tn()&&(V+=1,!(V>1)))try{await en.keepAwake()}catch{V=0}}async function H(){if(tn()&&V!==0&&(--V,!(V>0)))try{await en.allowSleep()}catch{V=0}}async function rn(){if(V=0,tn())try{await en.allowSleep()}catch{}}var U=l(`app.use-chat-handlers.hook`),W=l(`git.checkpoint`);async function an(e,t,n,r,i,a){if(n===y&&!r?.trim())throw Error(`Refusing to reload primary chat history without a conversation ID`);let o=await Ce(t,r);if(t===i.current&&!a?.isStale?.()){if(n!==y){e({type:w.SetPaneMessages,paneId:n,messages:o.messages});return}e({type:w.SetMessages,messages:o.messages,conversationId:r,historyEpoch:a?.historyEpoch})}}function G(e,t,n){return{...e,threadId:t,paneId:n}}var on=/^\/compact(?:\s+(.*))?$/i,sn=/^\/send-event(?:\s+([a-zA-Z0-9._:-]+))?(?:\s+([\s\S]+))?$/i;function cn(e,t,n){e(G({type:w.SetStreaming,isStreaming:!0},t,`primary`)),e(G({type:w.SetStreamModel,model:n},t,`primary`)),e(G({type:w.AppendStreamChunk,chunkType:`content`,content:``,segments:b([],{status:`running`})},t,`primary`))}var ln=8e3;async function un(e,t){try{let n=await Promise.race([re(e,t),new Promise(e=>{setTimeout(()=>e(null),ln)})]);if(n===null){W.warn(`Checkpoint creation timed out`,{threadId:e,messageId:t});return}if(n.success&&n.checkpointRef)return n.stashed||W.debug(`Checkpoint recorded with clean working tree`,{threadId:e,messageId:t}),n.checkpointRef;`error`in n&&n.error?W.warn(`Checkpoint creation failed`,{threadId:e,messageId:t,error:n.error}):n.success||W.debug(`Checkpoint skipped`,{threadId:e,messageId:t,reason:n.reason})}catch(n){W.warn(`Checkpoint creation errored`,{threadId:e,messageId:t,error:n instanceof Error?n.message:String(n)})}}function dn(e){return e.type!==`subagent_event`||!e.subagentEvent?null:hn(e.subagentEvent)}function fn(e){return e.content&&e.isThinking||e.content&&!e.isThinking&&e.role!==`tool`?e.content:e.role===`tool`&&e.content?bn(e.content):null}function pn(e){let t=e.shellPermission?.command?.trim();return t?`\n⏳ Waiting for shell approval: ${t}\n`:`
3
+ ⏳ Waiting for shell approval…
4
+ `}function mn(e){let t=e.webFetchPermission?.hostname?.trim();return t?`\n⏳ Waiting for approval to fetch ${t}\n`:`
5
+ ⏳ Waiting for web fetch approval…
6
+ `}function hn(e){switch(e.type){case`message`:return fn(e);case`shell_permission`:return pn(e);case`web_fetch_permission`:return mn(e);case`error`:return e.content?`\n${e.content}`:null;default:return null}}function gn(e){let t=e.content??``;return typeof t==`string`?t:JSON.stringify(t)}function _n(e,t){let n=gn(t);return n?t.isThinking?k(e,`thinking`,n):_(n)?O(e,n):n.trim().startsWith(`[`)?e:k(e,`content`,n):e}function vn(e,t){let n=gn(t);return n?_(n)?O(e,n):k(e,`content`,n):e}function yn(e,t){switch(t.type){case`message`:return _n(e,t);case`result`:return vn(e,t);case`shell_permission`:return t.shellPermission?p(e,t.shellPermission):e;case`web_fetch_permission`:return t.webFetchPermission?v(e,t.webFetchPermission):e;case`error`:{let n=t.content?.trim()||t.error?.message?.trim();return n?k(e,`content`,`\n\n${n}`):e}default:return e}}function bn(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return null;let n=[];for(let e of t)if(e.type===`tool_use`&&e.name)n.push(`\n→ ${e.name}\n`);else if(e.type===`tool-result`&&e.content){let t=typeof e.content==`string`?e.content.trim():JSON.stringify(e.content),r=t.slice(0,120);if(r){let e=t.length>120?`…`:``;n.push(`✓ ${r}${e}\n`)}}return n.length>0?n.join(``):null}catch{return null}}function xn(e,t){return o(e,t)}var Sn=new WeakMap;function Cn(e,t){if(t.length<e.count)return!1;for(let n=0;n<e.count;n++)if(e.events[n]!==t[n])return!1;return!0}function wn(e){let t=e[0];if(!t)return[];let n=Sn.get(t),r=n!==void 0&&Cn(n,e);if(r&&n.count===e.length)return n.blocks;let i=r?n.segments:[];for(let t=r?n.count:0;t<e.length;t++)i=yn(i,e[t]);let a=T(i);return Sn.set(t,{events:e,count:e.length,segments:i,blocks:a}),a}var Tn=`tarsk-browser-tool-request`,En=`tarsk-ask-user-prompt`;function K(e,t,n){try{fetch(`/api/logs`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({level:e,context:`browser-tool`,message:t,data:n})}).catch(()=>void 0)}catch{}}var q=new Set,Dn=new Set,J=new Map,Y=new Map,On=new Map,kn=new Map;function An(e,t){return`${e}:${t}`}var jn=`tarsk.ask-user-tool-ownership.v1`,Mn=864e5;function Nn(){if(typeof window<`u`)try{let e=window.localStorage.getItem(jn);if(!e)return;let t=JSON.parse(e),n=Date.now()-Mn;for(let[e,r]of Object.entries(t.askUser??{}))r.updatedAt>=n&&r.paneId&&(Y.set(e,r.paneId),r.threadId&&J.set(e,r.threadId));for(let[e,r]of Object.entries(t.subagents??{}))r.updatedAt>=n&&r.paneId&&kn.set(e,r.paneId)}catch{}}var Pn=!1;function Fn(){typeof window>`u`||Pn||(Pn=!0,window.setTimeout(()=>{Pn=!1;try{let e=Date.now(),t={};for(let[n,r]of Y)t[n]={paneId:r,threadId:J.get(n),updatedAt:e};let n={};for(let[t,r]of kn)n[t]={paneId:r,updatedAt:e};window.localStorage.setItem(jn,JSON.stringify({askUser:t,subagents:n}))}catch{}},0))}Nn();function In(e,t){kn.set(e,t),Fn()}function Ln(e){return kn.get(e)}function Rn(e){pe()&&window.dispatchEvent(new CustomEvent(Tn,{detail:e}))}var zn=`Browser RPC is unavailable for remote Threads. The local browser was not opened or controlled.`,Bn=new Set;function Vn(e,t,n){q.add(e),K(`WARN`,n,{toolCallId:e,threadId:t}),ue(e,{error:n},t).catch(()=>{K(`ERROR`,`Failed to report browser refusal`,{toolCallId:e,threadId:t})})}function Hn(e,t,n){if(q.has(e)||Bn.has(e))return;if(!n){Un(e,t,n);return}let r=Fe(n);if(r){r.remoteMachineId||r.remotePublicUrl?Vn(e,n,zn):Un(e,t,n);return}Bn.add(e),xe(n).then(r=>{r.remoteMachineId||r.remotePublicUrl?Vn(e,n,zn):Un(e,t,n)}).catch(()=>{Vn(e,n,`Browser RPC refused: Thread execution ownership could not be verified. No local browser action was executed.`)}).finally(()=>{Bn.delete(e)})}function Un(e,t,n){if(!pe()){K(`WARN`,`browser tool request ignored: not running inside Electrobun`,{toolCallId:e});return}if(q.has(e)){K(`INFO`,`browser tool request ignored: duplicate toolCallId`,{toolCallId:e});return}if(!t.action){K(`WARN`,`browser tool request ignored: missing action`,{toolCallId:e,inputKeys:Object.keys(t??{})});return}q.add(e),K(`INFO`,`browser tool request dispatched`,{toolCallId:e,action:t.action,threadId:n}),Rn({toolCallId:e,input:t,threadId:n})}function Wn(e,t,n){J.set(e,t),n&&(Y.set(e,n),On.set(An(t,n),e),Fn())}function Gn(e,t,n){Wn(e,t,n),!Dn.has(e)&&(Dn.add(e),window.dispatchEvent(new CustomEvent(En,{detail:{toolCallId:e,threadId:t,paneId:n}})))}function Kn(e){return J.get(e)}function qn(e){return Y.get(e)}function Jn(e,t){return e?On.get(An(e,t))??null:null}function Yn(){return pe()?`views://public/browser-preview-rpc.js`:`${ve()}/browser-preview-rpc.js`}async function Xn(e,t){await De(e,t)}async function Zn(e,t){await ue(e,t)}var Qn=new Map;function $n(e){return e.trim()}function er(){let e=ie(Ee.BASH_COMMAND_DURATIONS);if(!e)return{};try{let t=JSON.parse(e);if(typeof t!=`object`||!t||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`number`&&Number.isFinite(r)&&r>0&&(n[$n(e)]=r);return n}catch{return{}}}function tr(e){de(Ee.BASH_COMMAND_DURATIONS,JSON.stringify(e))}function nr(e){return er()[$n(e)]??null}function rr(e,t){let n=$n(e);if(!n||!Number.isFinite(t)||t<=0)return;let r=er();r[n]=Math.round(t),tr(r)}function ir(e,t){t?.trim()&&!Qn.has(e)&&Qn.set(e,{command:$n(t),startedAt:Date.now()})}function ar(e){let t=Qn.get(e);if(!t)return;let n=Date.now()-t.startedAt;rr(t.command,n),Qn.delete(e)}var or=`tarsk-chat-title-tool-request`,sr=new Set;function cr(e){if(sr.has(e.toolCallId))return;let t=Le(e.title);t&&(sr.add(e.toolCallId),window.dispatchEvent(new CustomEvent(or,{detail:{...e,title:t}})))}function lr(e,t){if(e.includes(`"browser"`))try{let n=JSON.parse(e.trim());if(!Array.isArray(n))return;for(let e of n)e?.type===`tool_use`&&e?.name===`browser`&&e?.id&&e?.input&&Hn(e.id,e.input,t)}catch{return}}function ur(e,t,n,r){if(e.includes(`"chat_title"`))try{let i=JSON.parse(e.trim());if(!Array.isArray(i))return;for(let e of i)e?.type===`tool_use`&&e?.name===`chat_title`&&e?.id&&e?.input&&cr({toolCallId:e.id,title:typeof e.input.title==`string`?e.input.title:``,threadId:t,paneId:n,...r?{conversationId:r}:{}})}catch{return}}function X(e,t,n){if(e.includes(`"ask_user"`))try{let r=JSON.parse(e.trim());if(!Array.isArray(r))return;for(let e of r)e?.type===`tool_use`&&e?.name===`ask_user`&&e?.id&&Gn(e.id,t,n)}catch{return}}function dr(e){if(e.includes(`"tool_use"`)&&e.includes(`"bash"`))try{let t=JSON.parse(e.trim());if(!Array.isArray(t))return;for(let e of t)e?.type===`tool_use`&&e?.id&&typeof e.name==`string`&&e.name.toLowerCase()===`bash`&&typeof e.input?.command==`string`&&ir(e.id,e.input.command)}catch{return}}function fr(e){if(e.includes(`"tool-result"`)&&e.includes(`"bash"`))try{let t=JSON.parse(e.trim());if(!Array.isArray(t))return;for(let e of t)e?.type===`tool-result`&&e?.toolCallId&&typeof e.toolName==`string`&&e.toolName.toLowerCase()===`bash`&&ar(e.toolCallId)}catch{return}}function pr(e,t){let n=t?.trim();if(n){st(e,n);return}lt(e)}function mr(e,t,n){let r=n?.trim();e({type:w.RemoveProcessingThread,threadId:t,...r?{conversationId:r}:{}})}function hr(e,t,n,r){return{messageId:`msg-${Date.now()}-${n}`,sender:`agent`,content:e,contentType:r,timestamp:new Date().toISOString(),model:t||`default`,isThinking:!1}}function gr(e){return new Promise(function(t){setTimeout(t,e)})}async function _r(e,t,n){let r=h(e,t.paneId),i=!1;for(let a=0;a<=qe.length;a++){try{let a=await M();if(n.streamSessionsRef.current.get(r)!==t)return null;if(a.unavailableThreadIds?.includes(e))throw Error(`Chat stream roster is unavailable`);return{state:a,sawOutage:i}}catch(e){i=!0,U.error(`Failed to recover chat stream after disconnect:`,e)}if(a===qe.length)break;if(await gr(qe[a]),n.streamSessionsRef.current.get(r)!==t)return null}return null}function vr(e,t,n){return n.conversationId?e.processingRuns.some(function(e){return e.threadId===t&&e.conversationId===n.conversationId}):e.processingThreadIds.includes(t)}async function yr(e,t,n){let r=h(e,t.paneId),i=null;for(let a=0;a<Je;a+=Ye){if(await gr(Ye),n.streamSessionsRef.current.get(r)!==t)return!1;try{let n=await M();if(i=n.unavailableThreadIds?.includes(e)?null:vr(n,e,t),i)return!0}catch(e){i=null,U.warn(`Failed to check for a resumed run:`,e)}}return i}function br(e,t,n,r,i){n.pendingTransientRecovery=!1;let a=h(e,n.paneId);(async()=>{let o=await _r(e,n,r);if(r.streamSessionsRef.current.get(a)!==n||o===null)return;let s=vr(o.state,e,n)?!0:o.sawOutage?await yr(e,n,r):!1;if(s!==null&&r.streamSessionsRef.current.get(a)===n){if(s){r.connectThreadStreamRef.current?.(e,t=>j(e,t,n.conversationId),t,n.paneId,n.conversationId);return}i(e,t,n)}})()}function xr(e){e.keepsDeviceAwake&&(e.keepsDeviceAwake=!1,H())}function Sr(e,t,n,r){r({type:w.AddMessage,message:hr(`Error: ${n.error}`,t,`error`,`text`),threadId:e,paneId:n.paneId}),r(G({type:w.ResetStream},e,n.paneId)),mr(r,e,n.conversationId),r({type:w.SetThreadError,threadId:e,error:n.error??`Unknown error occurred`})}function Cr(e,t,n,r){n.segments.length>0&&r({type:w.AddMessage,message:hr(tt(n.segments),t,`agent`,`markdown`),threadId:e,paneId:n.paneId}),r({type:w.AddMessage,message:hr(`I've stopped working on your request.`,t,`stopped`,`text`),threadId:e,paneId:n.paneId}),wr(e,n,r)}function wr(e,t,n){n(G({type:w.ResetStream},e,t.paneId)),n({type:w.SetActiveStreamPane,paneId:null}),n({type:w.MarkThreadCompleted,threadId:e,paneId:t.paneId}),mr(n,e,t.conversationId)}function Tr(e,t,n,r){if(r.streamSessionsRef.current.has(t))return!0;let i=r.getPaneConversationId?.(e.paneId)?.trim();return e.conversationId?.trim()&&i&&e.conversationId!==i?!0:n!==void 0&&r.getHistoryEpoch?.()!==n}async function Er(e,t,n,r,i){for(let a=0;a<6;a++){if(a>0&&await gr(150*2**(a-1)),r())return`stale`;try{return await an(n.dispatch,e,t.paneId,t.conversationId,n.selectedThreadIdRef,{isStale:r,historyEpoch:i}),r()?`stale`:`applied`}catch(e){U.error(`Failed to reload chat history after stream:`,e)}}return`failed`}function Dr(e,t,n,r){let i=tt(n.segments);i&&r({type:w.AddMessage,message:hr(i,t,`agent`,`markdown`),threadId:e,paneId:n.paneId})}async function Or(e,t,n,r,i){let a=i.getHistoryEpoch?.();function o(){return Tr(n,r,a,i)}let s=await Er(e,n,i,o,a);s===`stale`||o()||(s!==`applied`&&Dr(e,t,n,i.dispatch),wr(e,n,i.dispatch))}function kr(e){function t(n,r,i){let a=h(n,i.paneId);if(e.streamSessionsRef.current.get(a)===i){if(i.pendingTransientRecovery){br(n,r,i,e,t);return}if(e.streamSessionsRef.current.delete(a),e.dispatch({type:w.ClearToolCallProgress}),xr(i),pr(n,i.conversationId),i.error&&!i.stopHandled){Sr(n,r,i,e.dispatch);return}if(i.stopHandled){Cr(n,r,i,e.dispatch);return}Or(n,r,i,a,e)}}return t}async function Ar(e,t,n){let r=[...e.current.entries()].filter(function([e,n]){let r=e.split(`:`)[0];return n.connected===!0&&!!n.conversationId&&!n.pendingTransientRecovery&&!t.some(function(e){return e.threadId===r&&e.conversationId===n.conversationId})});if(r.length!==0)try{let t=await M();for(let[i,a]of r){let r=i.split(`:`)[0];e.current.get(i)!==a||a.pendingTransientRecovery||t.unavailableThreadIds?.includes(r)||t.processingRuns.some(function(e){return e.threadId===r&&e.conversationId===a.conversationId})||(n(r,`default`,a),a.controller.abort(),a.cancel?.())}}catch(e){U.warn(`Could not reconcile idle chat streams`,{error:e})}}function Z(e,t,n){let{dispatch:r,threadId:i,streamPaneId:a,session:o}=e;r(G({type:w.AppendStreamChunk,chunkType:t,content:n,segments:o.segments},i,a))}function jr(e){return e===`STREAM_REPETITION`?Ve:e===`TOOL_MARKUP_LEAK`?s:null}function Mr(e,t){let{threadId:n,streamPaneId:r,session:i,setPaneError:a}=e,o=jr(t.error?.code);if(o){let n=t.content?.trim()||o;i.assistantMessage+=n,i.segments=k(i.segments,`content`,`\n\n${n}`),Z(e,`content`,`\n\n${n}`);return}let s=ge(t.content?.trim()||t.error?.message?.trim()||t.message?.trim()||`Unknown error occurred`);i.error=s,a(n,r,s)}function Nr(e,t){let{session:n}=e,r=t.messagesBefore,i=t.content?.trim()||(typeof r==`number`?`Started a fresh context window; ${r} earlier exchanges remain searchable`:`Started a fresh context window`),a=t.autoCompactKind??`rollover`;if(a===`retry`||a===`resume`){n.segments=k(n.segments,`thinking`,`[Auto-compacted] ${i}\n`),Z(e,`thinking`,i);return}n.segments=b(n.segments,{status:a===`rollover-started`?`running`:`done`,detail:i}),Z(e,`content`,``)}function Pr(e,t){let{session:n}=e,r=t.prompt;r&&(n.segments=f(n.segments,r),Z(e,`content`,``))}function Fr(e,t){let{threadId:n,dispatch:r,session:i}=e,a=t.shellPermission;a&&(i.activeSubagentToolCallId&&r({type:w.AppendToolExecutionOutput,toolCallId:i.activeSubagentToolCallId,threadId:n,toolName:`agent`,delta:`\n⏳ Waiting for shell approval: ${a.command}\n`}),i.segments=p(i.segments,a),Z(e,`content`,``))}function Ir(e,t){let{session:n}=e;n.segments=x(n.segments,t),Z(e,`content`,``)}function Lr(e,t){let{threadId:n,dispatch:r,session:i}=e,a=t.webFetchPermission;a&&(i.activeSubagentToolCallId&&r({type:w.AppendToolExecutionOutput,toolCallId:i.activeSubagentToolCallId,threadId:n,toolName:`agent`,delta:`\n⏳ Waiting for approval to fetch ${a.hostname}\n`}),i.segments=v(i.segments,a),Z(e,`content`,``))}function Rr(e,t){let{threadId:n,dispatch:r}=e;if(t.partial?.content?.[0]?.id&&t.delta){let e=t.partial.content[0].id,i={toolCallId:e,threadId:n,toolName:t.partial.content[0].name,delta:t.delta,partial:t.partial};r({type:w.UpdateToolCallProgress,toolCallId:e,progress:i})}}function zr(e,t){let{threadId:n,dispatch:r}=e;t.toolCallId&&t.executionOutput!==void 0&&r({type:w.UpdateToolExecutionOutput,toolCallId:t.toolCallId,threadId:n,toolName:t.toolName,executionOutput:t.executionOutput})}function Br(e,t){let{threadId:n,dispatch:r,session:i}=e;if(t.toolCallId){i.activeSubagentToolCallId=t.toolCallId;let e=t.subagentName?.trim()||`subagent`;r({type:w.UpdateToolExecutionOutput,toolCallId:t.toolCallId,threadId:n,toolName:`agent`,executionOutput:`Running ${e}…\n`})}}function Vr(e,t){let{threadId:n,dispatch:r,session:i}=e;if(!t.toolCallId)return;if(In(t.toolCallId,i.paneId),t.subagentEvent){r({type:w.AppendSubagentEvent,toolCallId:t.toolCallId,event:t.subagentEvent});let e=typeof t.subagentEvent.content==`string`?t.subagentEvent.content:t.subagentEvent.content?JSON.stringify(t.subagentEvent.content):``;e&&X(e,n,i.paneId)}let a=dn(t);a&&r({type:w.AppendToolExecutionOutput,toolCallId:t.toolCallId,threadId:n,toolName:`agent`,delta:a})}function Hr(e,t){let{threadId:n,dispatch:r,session:i}=e;t.toolCallId&&(i.activeSubagentToolCallId=null,t.subagentResult&&r({type:w.UpdateToolExecutionOutput,toolCallId:t.toolCallId,threadId:n,toolName:`agent`,executionOutput:t.subagentResult}))}function Ur(e,t){let{threadId:n,streamPaneId:r,dispatch:i}=e;t.contextUsage&&i(G({type:w.SetContextUsage,contextUsage:t.contextUsage},n,r))}function Wr(e,t){let{threadId:n,session:r}=e,i=t.content??``;if(lr(i,n),X(i,n,r.paneId),ur(i,n,r.paneId,r.conversationId),_(i)){dr(i),fr(i),r.hasStructuredContent=!0,r.segments=O(r.segments,i),r.assistantMessage=ne(r.segments),Z(e,`content`,``);return}r.assistantThinking+=i,r.segments=k(r.segments,`thinking`,i),Z(e,`thinking`,i)}function Gr(e,t){let{threadId:n,streamPaneId:r,dispatch:i,session:a}=e;a.hasStructuredContent=!0;let o=t.content??``;a.assistantMessage=o,a.segments=m(a.segments,o),i(G({type:w.SetStreamContent,content:o},n,r)),typeof o==`string`&&(lr(o,n),X(o,n,a.paneId))}function Kr(e,t){let{session:n}=e;if(n.hasStructuredContent)return;let r=t.content??``;n.assistantMessage+=r,n.segments=k(n.segments,`content`,r),Z(e,`content`,r)}function qr(e,t){if(t.type===`auto_compact`)return Nr(e,t),!0;if(t.type===`long_running_confirmation`)return Pr(e,t),!0;if(t.type===`shell_permission`)return Fr(e,t),!0;let n=t;return n.type===`seatbelt_escalation`?(n.seatbeltEscalation&&Ir(e,n.seatbeltEscalation),!0):t.type===`web_fetch_permission`&&(Lr(e,t),!0)}function Jr(e,t){return t.type===`toolcall_delta`?(Rr(e,t),!0):t.type===`tool_execution_update`?(zr(e,t),!0):t.type===`subagent_start`?(Br(e,t),!0):t.type===`subagent_event`?(Vr(e,t),!0):t.type===`subagent_complete`&&(Hr(e,t),!0)}function Yr(e,t){if(t.type===`context_usage`){Ur(e,t);return}if(t.model){let{dispatch:n,threadId:r,streamPaneId:i}=e;n(G({type:w.SetStreamModel,model:t.model},r,i))}if(t.type===`thinking`||t.isThinking){Wr(e,t);return}if(t.type===`result`){Gr(e,t);return}Kr(e,t)}function Xr(e,t){let{dispatch:n,threadId:r,streamPaneId:i}=e;if(n(G({type:w.IncrementStreamEventCount},r,i)),t.type===`error`){Mr(e,t);return}t.type!==`message`&&(qr(e,t)||Jr(e,t)||Yr(e,t))}function Zr(e,t){let{threadId:n,streamPaneId:r,model:i,session:a,setPaneError:o,finalizeThreadStream:s}=e;if(t.includes(`AbortError`)||t.includes(`canceled`)||t.includes(`BodyStreamBuffer was aborted`)){s(n,i,a);return}if(se(t)){a.pendingTransientRecovery=!0;return}let c=ge(t.trim()||`Unknown error (no error details in response)`);a.error=c,o(n,r,c),s(n,i,a)}function Qr(e,t){let{threadId:n,session:r}=e;lr(t,n),X(t,n,r.paneId),r.assistantThinking+=t,r.segments=k(r.segments,`thinking`,t),Z(e,`thinking`,t)}function $r(e,t){if(typeof e==`object`&&Array.isArray(e)&&e.length>0)return!0;if(typeof t==`string`&&t.trim().startsWith(`[`))try{let e=JSON.parse(t);return Array.isArray(e)&&e.length>0}catch{}return!1}function ei(e,t){let{threadId:n,streamPaneId:r,dispatch:i,session:a}=e,o=t.content??``,s=typeof o==`string`?o:JSON.stringify(o);if(t.isThinking??!1){Qr(e,s);return}$r(o,s)?(a.hasStructuredContent=!0,a.assistantMessage=s,a.segments=m(a.segments,s),i(G({type:w.SetStreamContent,content:s},n,r)),lr(s,n),X(s,n,a.paneId),ur(s,n,a.paneId,a.conversationId)):(a.assistantMessage+=s,a.segments=k(a.segments,`content`,s),Z(e,`content`,s))}function ti(e,t){let{session:n}=e,r=t.content??``,i=typeof r==`string`?r:JSON.stringify(r);i&&(dr(i),fr(i),ur(i,e.threadId,e.session.paneId,e.session.conversationId),_(i)?(n.hasStructuredContent=!0,n.segments=O(n.segments,i),n.assistantMessage=ne(n.segments),Z(e,`content`,``)):i.trim().startsWith(`[`)||(n.assistantMessage+=i,n.segments=k(n.segments,`content`,i),Z(e,`content`,i)))}function ni(e,t){let{dispatch:n,threadId:r,streamPaneId:i}=e;n(G({type:w.IncrementStreamEventCount},r,i)),t.role===`assistant`?ei(e,t):t.role===`tool`&&ti(e,t)}function ri(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function ii(e,t,n){return!(`threadId`in e&&e.threadId!==t||`conversationId`in e&&e.conversationId!==n)}function ai(e,t,n){if(!ri(e))return;let r=e.details;if(!ri(r)||!ii(r,t,n))return;let i=r.runId;return typeof i==`string`&&i.trim()?i:void 0}function oi(e,t,n){return e.threadId===t&&(!n||e.conversationId===n)}function si(e,t,n){let r=e.filter(function(e){return oi(e,t,n)});return r.length===1?r[0].runId:void 0}async function ci(e,t,n){let r=ai(e,t,n);if(r)return r;let i=await M();if(i.unavailableThreadIds?.includes(t))throw Error(`Chat stream roster is unavailable`);return si(i.processingRuns,t,n)}function li(e){let{dispatch:t,streamSessionsRef:n,setPaneError:r,finalizeThreadStream:i,onStreamConnected:a}=e;function o(e,o,s,c,l){let u=h(e,c),d=n.current.get(u);d&&(xr(d),d.controller.abort(),d.cancel?.());let f=new AbortController,p={controller:f,cancel:null,segments:[],assistantMessage:``,assistantThinking:``,hasStructuredContent:!1,error:null,stopHandled:!1,pendingTransientRecovery:!1,activeSubagentToolCallId:null,paneId:c,conversationId:l,keepsDeviceAwake:!1};n.current.set(u,p),t(G({type:w.ResetStream},e,c)),t({type:w.AddProcessingThread,threadId:e,conversationId:l}),t(G({type:w.SetStreaming,isStreaming:!0},e,c)),t({type:w.SetActiveStreamPane,paneId:c}),nn().then(()=>{if(n.current.get(u)!==p){H();return}p.keepsDeviceAwake=!0});function m(a){if(n.current.get(u)!==p)return;if(xr(p),a instanceof Error&&a.name===`AbortError`){if(p.stopHandled||!n.current.has(u))return;n.current.delete(u),t(G({type:w.ResetStream},e,c)),mr(t,e,l);return}if(a instanceof Error&&a.message.includes(`not currently processing`)){n.current.delete(u),t(G({type:w.ResetStream},e,c)),mr(t,e,l);return}if(a instanceof Error&&se(a.message)){p.pendingTransientRecovery=!0,i(e,s,p);return}let o=ge((a instanceof Error?a.message:``).trim()||`Unknown error (no error details in response)`);p.error=o,r(e,c,o),U.error(`Failed to subscribe to chat stream:`,a),i(e,s,p)}async function g(){let t=null;try{t=await o(f.signal)}catch(r){if(n.current.get(u)!==p)return;if(!oe(r,p.conversationId)||f.signal.aborted){m(r);return}p.runId=void 0;try{let i=await ci(r,e,p.conversationId);if(n.current.get(u)!==p||f.signal.aborted)return;p.runId=i,t=await j(e,f.signal,p.conversationId)}catch(e){m(e);return}}return t}function _(t){if(n.current.get(u)===p){if(!t||f.signal.aborted){!f.signal.aborted&&!p.stopHandled&&!p.error&&(p.pendingTransientRecovery=!0),i(e,s,p);return}p.connected=!0,a?.(),v(t)}}function v(a){let o={dispatch:t,threadId:e,streamPaneId:c,session:p,model:s,finalizeThreadStream:i,setPaneError:r};p.cancel=ce(a,e=>{n.current.get(u)===p&&Xr(o,e)},()=>{n.current.get(u)===p&&i(e,s,p)},e=>{n.current.get(u)===p&&Zr(o,e)},e=>{n.current.get(u)===p&&ni(o,e)})}async function y(){let e=await g();e!==void 0&&_(e)}return y(),f}return o}async function ui(e,t,n,r){await Te(t,n,r),await Promise.all([e.invalidateQueries({queryKey:N.conversations.recent()}),e.invalidateQueries({queryKey:N.conversations.unreadAll()})])}var di=new Map;function fi(e,t){let n=(di.get(e)??Promise.resolve()).catch(()=>void 0).then(()=>_e(e,{chatTitles:t}));return di.set(e,n),n.catch(()=>void 0).finally(()=>{di.get(e)===n&&di.delete(e)}),n}var pi=l(`app.use-restore-chat-to-chats`);function mi(){let e=a();return(0,P.useCallback)(async function(t,n){try{await Promise.all([fe(t,n),Se(t,n)])}catch(e){pi.error(`Failed to restore chat to the Chats group`,{error:e,threadId:t,conversationId:n})}finally{e.invalidateQueries({queryKey:N.conversations.unreadAll()}),e.invalidateQueries({queryKey:N.conversations.archivedAll()})}},[e])}var hi=/^\/(goal|ralph)(?:\s+([\s\S]*))?$/i,gi=/(?:^|\s)--(check|rounds|spend)(?:=|\s+)(?:"([^"]*)"|'([^']*)'|(\S+))/gi;function _i(e){return hi.test(e.trim())}function vi(e){let t=[];for(let n of e.matchAll(gi)){let e=n.index;t.push({name:(n[1]??``).toLowerCase(),value:n[2]??n[3]??n[4]??``,start:e,end:e+n[0].length})}return t}function yi(e,t){let n=``,r=0;for(let i of t)n+=`${e.slice(r,i.start)} `,r=i.end;return n+=e.slice(r),n.replace(/\s+/g,` `).trim()}function bi(e){let t=e.trim();return t?t.length>500?{ok:!1,message:`--check must be at most 500 characters.`}:{ok:!0,value:t}:{ok:!1,message:`--check needs the command to run.`}}function xi(e){if(!/^\d+$/.test(e.trim()))return{ok:!1,message:`--rounds takes a whole number, not \`${e}\`.`};let t=Number(e);return t<1||t>100?{ok:!1,message:`--rounds must be between 1 and 100.`}:{ok:!0,value:t}}function Si(e){let t=Number(e.trim());return!Number.isFinite(t)||t<=0?{ok:!1,message:`--spend takes a positive amount in dollars, not \`${e}\`.`}:{ok:!0,value:t}}var Ci={check:{duplicateMessage:`Use --check once.`,parse:bi},rounds:{duplicateMessage:`Use --rounds once.`,parse:xi},spend:{duplicateMessage:`Use --spend once.`,parse:Si}};function wi(e,t,n){if(e[t]!==void 0)return{type:`invalid`,message:Ci[t].duplicateMessage};let r=Ci[t].parse(n);if(!r.ok)return{type:`invalid`,message:r.message};e[t]=r.value}function Ti(e){let t=e.trim().match(hi);if(!t)return{type:`not-goal`};let n=t[2]??``,r=vi(n),i={};for(let e of r){let t=wi(i,e.name,e.value);if(t)return t}let a=yi(n,r);return a?{type:`goal`,request:{objective:a,...i.check===void 0?{}:{checkCommand:i.check},...i.rounds===void 0?{}:{roundCap:i.rounds},...i.spend===void 0?{}:{spendCeilingUsd:i.spend}}}:{type:`invalid`,message:`Use /goal <objective> to start a Goal. Rounds default to 100.`}}function Ei(){let e=Ne(),t=performance.now();function n(){return Math.round(performance.now()-t)}return{traceId:e,elapsedMs:n}}function Di(e){return{traceId:e.traceId,submitMs:e.elapsedMs()}}var Q=/(?<!\S)(?:in\s+a\s+new\s+)?\/workspace(?=\s|$)/gi;function Oi(e){return Q.lastIndex=0,Q.test(e)?(Q.lastIndex=0,{leftoverPrompt:e.replace(Q,` `).replace(/[^\S\n]{2,}/g,` `).replace(/[ \t]*\n[ \t]*/g,`
7
+ `).replace(/\n{3,}/g,`
8
+
9
+ `).trim()}):null}function ki(e){return e.some(e=>e.sender===`user`)}function Ai(e,t){let n=e.trim(),r=ji(t).trim();return r?n?`${n}\n\nContext from the previous workspace:\n\n${r}`:r:n}function ji(e){return Q.lastIndex=0,e.replace(Q,` `).replace(/[^\S\n]{2,}/g,` `).trim()}function Mi(e,t,n,r){let i=e.beginPreparation?.(t,n,r),a=i?.controller??new AbortController,o=()=>!a.signal.aborted&&(!r||e.getPaneConversationId(n)===r);i||(e.dispatch(G({type:w.SetStreaming,isStreaming:!0},t,n)),e.dispatch({type:w.SetActiveStreamPane,paneId:n}));let s=!1;return{controller:a,runId:i?.runId,isLiveConversation:o,isCurrent:()=>o()&&!e.isPaneStopping?.(t,n)&&(i?.isCurrent()??!0),release:()=>{s||(s=!0,i?.release())}}}function Ni(e){return e.trim().replace(/\n/g,` `).slice(0,100)}function Pi(e,t,n){return e.isPaneStopping?.(t,n)??!1}function $(e,t,n){return n(e)?.trim()||t?.trim()||void 0}async function Fi(e,t,n,r,i,a){if(!i)return!1;let o={...a,[r]:i};e({type:w.UpdateChatTitle,projectId:t,threadId:n,paneId:r,title:i});try{return await fi(n,o),!0}catch(e){return U.error(`Failed to update chat title:`,e),!1}}var Ii=new Map;function Li(e,t){return`${e}:${t}`}function Ri(e,t){let n=Li(e,t),r=(Ii.get(n)??0)+1;return Ii.set(n,r),r}function zi(e,t,n){return Ii.get(Li(e,t))===n}async function Bi(e,t,n){let{selectedProjectId:r,dispatch:i,toast:a,getChatTitles:o,getPaneConversationId:s}=e,c=t.message.trim().match(/^\/chat-title(?:\s+([\s\S]+))?$/i);if(!c)return!1;let l=Le(c[1]);if(!l)return a({title:`Chat title required`,description:`Use /chat-title followed by the title you want to set.`,variant:`destructive`}),!0;if(!r)return a({title:`No project selected`,description:`Open a project thread before setting its chat title.`,variant:`destructive`}),!0;let u=await Fi(i,r,t.activeThreadId,t.paneId,l,o(t.activeThreadId)),d=$(t.paneId,t.conversationId,s),f=!0;if(d)try{await ui(n,t.activeThreadId,d,l)}catch(e){f=!1,U.error(`Failed to persist conversation title`,{error:e,threadId:t.activeThreadId,conversationId:d,paneId:t.paneId})}let p=u&&f;return a({title:p?`Chat title updated`:`Chat title failed`,description:l,variant:p?void 0:`destructive`}),!0}async function Vi(e){await e.invalidateQueries({queryKey:N.conversations.unreadAll()})}function Hi(e,t,n){n&&e.setQueriesData({queryKey:N.conversations.unreadAll()},e=>e&&{...e,conversations:e.conversations.map(e=>e.threadId===t&&e.conversationId===n?{...e,isComplete:!1}:e)})}async function Ui(e,t){let{dispatch:n,toast:r,processingThreadIdsRef:i,isPaneStreaming:a}=e,{activeThreadId:o,paneId:s,messages:c,model:l,provider:u,message:d}=t,f=d.trim().match(on);if(!f)return!1;if(s!==`primary`)return!0;if(c.filter(e=>e.sender===`agent`).length<2)return r({title:`Nothing to compact`,description:`Start a conversation with at least two exchanges first.`}),!0;if(i.current.includes(o)||a(o,s))return r({title:`Agent is busy`,description:`Wait for the agent to finish before compacting.`}),!0;let p=f[1]?.trim();cn(n,o,l);try{let e=await he(o,{model:l,provider:u,instructions:p});n({type:w.SetMessages,messages:e.messages}),n(G({type:w.ResetStream},o,s)),r({title:`Conversation compacted`,description:`${e.messagesBefore} messages → ${e.messagesAfter} summary`})}catch(e){n(G({type:w.ResetStream},o,s)),r({title:`Compaction failed`,description:e instanceof Error?e.message:`Failed to compact conversation`,variant:`destructive`})}return!0}async function Wi(e,t){let{toast:n,selectedProjectId:r}=e,{paneId:i,message:a}=t,o=a.trim().match(sn);if(!o)return!1;if(i!==`primary`)return!0;if(!r)return n({title:`No project selected`,description:`Open a project thread before sending an event.`,variant:`destructive`}),!0;let s=o[1]?.trim();if(!s)return n({title:`Event key required`,description:`Use /send-event door.opened or /send-event door.opened {"doorId":"front"}`,variant:`destructive`}),!0;let c,l=o[2]?.trim();if(l)try{c=JSON.parse(l)}catch{return n({title:`Invalid JSON payload`,description:`The optional payload after the event key must be valid JSON.`,variant:`destructive`}),!0}try{let e=await je(r,s,c);n({title:`Event sent`,description:`Matched ${e.matched}, launched ${e.launched}, skipped ${e.skipped}`})}catch(e){n({title:`Event failed`,description:e instanceof Error?e.message:`Failed to send event`,variant:`destructive`})}return!0}async function Gi(e,t){let{dispatch:n,toast:r,selectedProjectId:i,getPaneConversationId:a}=e,{activeThreadId:o,paneId:s,messages:c,model:l,provider:u,conversationId:d,message:f}=t,p=Oi(f);if(!p)return!1;if(s!==`primary`)return!0;if(!i)return r({title:`No project selected`,description:`Open a project thread before creating a workspace.`,variant:`destructive`}),!0;let m=p.leftoverPrompt,h=$(s,d,a),g=m.length>0&&ki(c)?ye(o,{prompt:m,model:l,provider:u,conversationId:h}).catch(e=>(U.error(`Workspace handoff failed`,{err:e}),``)):Promise.resolve(``),[_,v]=await Promise.all([g,Ae({projectId:i,project:t.selectedProject,dispatch:n,toast:r,refreshProjects:()=>Me(n)})]);return!v||m.length===0||n({type:w.SetPendingChatMessage,message:{threadId:v,message:Ai(m,_),model:l,provider:u}}),!0}async function Ki(e,t){let{dispatch:n,toast:r,connectThreadStream:i,processingRunsRef:a,isPaneStreaming:o}=e,{activeThreadId:s,paneId:l,conversationId:u,message:d,attachments:f,model:p,provider:m}=t,{autoRoute:h,queryClient:g}=t,_=Ti(d);if(_.type===`not-goal`)return`not-goal`;if(_.type===`invalid`)return r({title:`Goal not started`,description:_.message,variant:`destructive`}),`refused`;let v=_.request,y=$(l,u,e.getPaneConversationId);if(l!==`primary`)return r({title:`Start the Goal in the main chat`,description:`Goals run in the primary pane, so this message was not sent.`,variant:`destructive`}),`refused`;if(o(s,l)||xt(a.current,s,y))return r({title:`Agent is busy`,description:`Wait for the agent to finish before starting a Goal.`}),`refused`;if(e.isPaneStopping?.(s,l))return`refused`;let b=Mi(e,s,l,y);try{Hi(g,s,y);let r=await Zi(e,{activeThreadId:s,paneId:l,paneConversationId:y,message:d,attachments:f,model:p,provider:m,preparation:b,titleSource:v.objective,onConversationHistoryChanged:()=>{Vi(g)}});return b.isCurrent()?(i(s,e=>Oe(s,d,p,f,e,m,void 0,void 0,r,y,void 0,h,v,Di(t.chatSubmit),b.runId),p,l,y),b.release(),n(G({type:w.SetStreamAgentMode,mode:c({})},s,l)),n(G({type:w.SetStreamGoalRun},s,l)),`handled`):`handled`}finally{b.release()}}async function qi(e,t){let{dispatch:n,toast:r}=e,i=`steer-${Date.now()}`;try{return await be(t.activeThreadId,i,t.message,t.paneConversationId,t.model,t.attachments),n({type:w.AddMessage,threadId:t.activeThreadId,paneId:t.paneId,message:{messageId:`user-${i}`,sender:`user`,content:t.message,contentType:`text`,timestamp:new Date().toISOString(),model:t.model,attachments:t.attachments}}),!0}catch(e){return r({title:`Could not send`,description:e instanceof Error?e.message:`The active Goal could not be steered.`,variant:`destructive`}),!1}}function Ji(e,t){let{dispatch:n,connectThreadStream:r,onPlanModeConsumed:i,processingRunsRef:a,isPaneStreaming:o}=e,{activeThreadId:s,paneId:c,paneConversationId:l,model:u,planMode:d,imageMode:f}=t;return!f&&xt(a.current,s,l)&&!o(s,c)?(r(s,e=>j(s,e,l),u,c,l),n({type:w.EnqueueChatMessage,message:Yi(t)}),d&&i?.(),!0):!1}function Yi(e){return{id:`queued-${Date.now()}`,threadId:e.activeThreadId,paneId:e.paneId,message:e.message,model:e.model,attachments:e.attachments,provider:e.provider,planMode:e.planMode,imageMode:e.imageMode,ralphMode:e.ralphMode,orchestrateMode:e.orchestrateMode,autoRoute:e.autoRoute}}function Xi(e,t){return e.isThreadBeingCreated?.(t.activeThreadId)?(e.dispatch({type:w.EnqueueChatMessage,message:Yi(t)}),t.planMode&&e.onPlanModeConsumed?.(),!0):!1}async function Zi(e,t){let{dispatch:n,selectedProjectId:r,getChatTitles:i,getPaneConversationId:a}=e,o=Ri(t.activeThreadId,t.paneId),{activeThreadId:s,paneId:c,paneConversationId:l,message:u,attachments:d,model:f,provider:p,titleSource:m,onConversationHistoryChanged:h}=t,g=`msg-${Date.now()}`,_={messageId:g,sender:`user`,content:u,contentType:`text`,timestamp:new Date().toISOString(),model:f,attachments:d.map(e=>({fileName:e.fileName,content:e.content,mimeType:e.mimeType}))};n({type:w.AddMessage,message:_,threadId:s,paneId:c});let v=await un(s,g);if(t.preparation.isCurrent()){if(v&&n({type:w.UpdateMessageCheckpointRef,messageId:g,threadId:s,paneId:c,checkpointRef:v}),r){let e=m?.trim()||u,d=Ni(e),g=i(s);if(!t.preparation.isLiveConversation())return;Fi(n,r,s,c,d,g).then(e=>{e&&t.preparation.isLiveConversation()&&h?.()}),we(s,e,{provider:p,model:f}).then(async e=>{let u=a(c);if(!t.preparation.isLiveConversation()||!e||e===d||l&&u!==l)return;let f=i(s)?.[c];!zi(s,c,o)||f&&f!==d||await Fi(n,r,s,c,e,i(s))&&t.preparation.isLiveConversation()&&h?.()}).catch(e=>{t.preparation.isLiveConversation()&&U.error(`Failed to generate chat title:`,e)})}return v}}async function Qi(e,t){let{dispatch:n}=e,{activeThreadId:r,paneId:i,message:a,model:o,provider:s}=t,c=s??void 0;if(!c&&typeof o==`string`){let e=o.split(/[:/]/)[0]?.trim();e&&(c=e)}if(t.preparation.isCurrent()){if(!c){let e={messageId:`msg-${Date.now()}-error`,sender:`agent`,content:`Image generation is not available because no provider is configured for the selected model.`,contentType:`text`,timestamp:new Date().toISOString(),model:o,isThinking:!1};n({type:w.AddMessage,message:e,threadId:r,paneId:i}),n(G({type:w.ResetStream},r,i)),n({type:w.SetActiveStreamPane,paneId:null});return}n(G({type:w.SetStreaming,isStreaming:!0},r,i)),n({type:w.SetActiveStreamPane,paneId:i});try{let e=await me(a,o,c,r,t.paneConversationId,t.preparation.controller.signal,t.preparation.runId);if(!t.preparation.isCurrent())return;let s={messageId:`msg-${Date.now()}-agent`,sender:`agent`,content:a,contentType:`text`,timestamp:new Date().toISOString(),model:o,mode:`image`,isThinking:!1,generatedImageUrl:e.imageUrl,generatedImageData:e.imageData};n({type:w.AddMessage,message:s,threadId:r,paneId:i})}catch(e){if(!t.preparation.isCurrent())return;let a=e instanceof Error?e.message:`Image generation failed`,s={messageId:`msg-${Date.now()}-error`,sender:`agent`,content:`Error: ${a}`,contentType:`text`,timestamp:new Date().toISOString(),model:o,isThinking:!1};n({type:w.AddMessage,message:s,threadId:r,paneId:i})}finally{t.preparation.isCurrent()&&(n(G({type:w.ResetStream},r,i)),n({type:w.SetActiveStreamPane,paneId:null}))}}}async function $i(e,t,n){let r={handled:!1,result:!1};if(await Bi(e,{activeThreadId:t.activeThreadId,paneId:t.paneId,conversationId:t.conversationId,message:t.message},n)||await Ui(e,{activeThreadId:t.activeThreadId,paneId:t.paneId,messages:t.messages,model:t.model,provider:t.provider,message:t.message})||await Wi(e,{paneId:t.paneId,message:t.message})||await Gi(e,{activeThreadId:t.activeThreadId,paneId:t.paneId,messages:t.messages,model:t.model,provider:t.provider,conversationId:t.conversationId,message:t.message,selectedProject:t.selectedProject}))return{handled:!0,result:!0};let i=await Ki(e,{activeThreadId:t.activeThreadId,paneId:t.paneId,conversationId:t.conversationId,message:t.message,attachments:t.attachments,model:t.model,provider:t.provider,autoRoute:t.autoRoute,queryClient:n,chatSubmit:t.chatSubmit});return i===`not-goal`?r:{handled:!0,result:i===`handled`}}async function ea(e,t,n){let{isPaneStreaming:r}=e;return r(t.activeThreadId,t.paneId)&&t.paneConversationId?qi(e,{activeThreadId:t.activeThreadId,paneId:t.paneId,paneConversationId:t.paneConversationId,message:t.message,attachments:t.attachments,model:t.model}):Xi(e,t)?!0:(Hi(n,t.activeThreadId,t.paneConversationId),Ji(e,{activeThreadId:t.activeThreadId,paneId:t.paneId,paneConversationId:t.paneConversationId,message:t.message,attachments:t.attachments,model:t.model,provider:t.provider,planMode:t.planMode,imageMode:t.imageMode,ralphMode:t.ralphMode,orchestrateMode:t.orchestrateMode}))}async function ta(e,t,n){let{dispatch:r,connectThreadStream:i,onPlanModeConsumed:a}=e,o=Mi(e,t.activeThreadId,t.paneId,t.paneConversationId);try{let s=await Zi(e,{preparation:o,activeThreadId:t.activeThreadId,paneId:t.paneId,paneConversationId:t.paneConversationId,message:t.message,attachments:t.attachments,model:t.model,provider:t.provider,planMode:t.planMode,ralphMode:t.ralphMode,orchestrateMode:t.orchestrateMode,onConversationHistoryChanged:()=>{Vi(n)}});return o.isCurrent()?t.imageMode?(await Qi(e,{preparation:o,paneConversationId:t.paneConversationId,activeThreadId:t.activeThreadId,paneId:t.paneId,message:t.message,model:t.model,provider:t.provider}),!0):(i(t.activeThreadId,e=>Oe(t.activeThreadId,t.message,t.model,t.attachments,e,t.provider,t.planMode,t.ralphMode,s,t.paneConversationId,t.orchestrateMode,t.autoRoute,void 0,Di(t.chatSubmit),o.runId),t.model,t.paneId,t.paneConversationId),o.release(),r(G({type:w.SetStreamAgentMode,mode:c({planMode:t.planMode,ralphMode:t.ralphMode,orchestrateMode:t.orchestrateMode})},t.activeThreadId,t.paneId)),t.planMode&&a?.(),!0):!0}finally{o.release()}}function na(e){let t=a(),n=mi(),{selectedThreadId:r,selectedProjectId:i,dispatch:o,toast:s,connectThreadStream:c,onPlanModeConsumed:l,setPaneError:u,getPaneMessages:d,getPaneConversationId:f,isPaneStreaming:p,getChatTitles:m}=e,h=D(e=>e.projects);return(0,P.useCallback)(async(a,s,c,l,p,m,g,_,v,y,b)=>{if(!r)return!1;let x=r;if(Pi(e,x,a))return!1;let S=$(a,s,f),C=t.getQueriesData({queryKey:N.conversations.archivedAll()}).some(([,e])=>e?.conversations.some(e=>e.threadId===x&&e.conversationId===S)??!1);S&&C&&await n(x,S);let T=Ei();Ri(x,a);let E=d(a);u(x,a,null),o({type:w.ClearThreadError,threadId:x});let ee=await $i(e,{activeThreadId:x,paneId:a,conversationId:s,message:c,attachments:p,model:l,provider:m,autoRoute:b,messages:E,chatSubmit:T,selectedProject:h.find(e=>e.projectId===i)},t);return ee.handled?ee.result:Pi(e,x,a)?!1:await ea(e,{activeThreadId:x,paneId:a,paneConversationId:S,message:c,attachments:p,model:l,provider:m,planMode:g,imageMode:_,ralphMode:v,orchestrateMode:y,autoRoute:b},t)?!0:!Pi(e,x,a)&&ta(e,{activeThreadId:x,paneId:a,paneConversationId:S,message:c,attachments:p,model:l,provider:m,planMode:g,imageMode:_,ralphMode:v,orchestrateMode:y,autoRoute:b,chatSubmit:T},t)},[e,t,r,i,o,c,s,l,d,f,p,m,u,h])}function ra(e){return e+1}var ia=2;function aa(e,t){return ke(e.threadToolSessions[t.threadId])?!0:!t.imageMode&&xt(e.processingRuns,t.threadId,A(e,t.paneId))}function oa(e){let t=E(),n=D(function(e){return e.selectedThreadId}),r=D(function(e){return e.queuedChatMessages}),i=D(function(e){return S(e.threadStreamingStates,e.selectedThreadId)}),a=D(function(e){return e.processingRuns}),o=D(function(e){return e.threadToolSessions}),{toast:s}=Pe(),c=(0,P.useRef)(new Set),l=(0,P.useRef)(new Map),u=(0,P.useRef)(!1),[d,f]=(0,P.useReducer)(ra,0);(0,P.useEffect)(function(){return u.current=!0,function(){u.current=!1}},[]),(0,P.useEffect)(function(){if(!n)return;let i=new Set(r.filter(function(e){return e.threadId===n}).map(function(e){return e.paneId})),a=[];for(let r of i){let i=h(n,r),o=t.getState(),d=o.queuedChatMessages.find(function(e){return e.threadId===n&&e.paneId===r});!d||aa(o,d)||c.current.has(i)||C(o.threadStreamingStates,n,r).isStreaming||a.push(setTimeout(async function(){let a=t.getState();if(a.selectedThreadId!==n||c.current.has(i)||C(a.threadStreamingStates,n,r).isStreaming)return;let o=a.queuedChatMessages.find(function(e){return e.threadId===n&&e.paneId===r});if(!o||aa(a,o)||(l.current.get(o.id)??0)>=ia)return;c.current.add(i);let d=a.queuedChatMessages.findIndex(function(e){return e.id===o.id});try{t.dispatch({type:w.RemoveQueuedChatMessage,queuedMessageId:o.id}),await e(r,A(a,r),o.message,o.model,o.attachments,o.provider,o.planMode,o.imageMode,o.ralphMode,o.orchestrateMode,o.autoRoute)===!1?(l.current.set(o.id,(l.current.get(o.id)??0)+1),t.dispatch({type:w.RestoreQueuedChatMessage,message:o,index:d})):l.current.delete(o.id)}catch(e){s({title:`Could not send queued message`,description:e instanceof Error?e.message:`Chat preparation failed.`,variant:`destructive`})}finally{c.current.delete(i),u.current&&f()}},0))}return function(){for(let e of a)clearTimeout(e)}},[e,a,r,d,n,t,i,o,s])}function sa(e,t,n){let r=h(t,n);e.preparationsRef.current.get(r)?.controller.abort(),e.preparationsRef.current.delete(r)}function ca(e,t,n,r){sa(e,t,n);let i=h(t,n),a={controller:new AbortController,runId:crypto.randomUUID(),conversationId:r,isCurrent(){let o=e.storeRef.getState();return!a.controller.signal.aborted&&e.preparationsRef.current.get(i)===a&&o.selectedThreadId===t&&A(o,n)===r},release(){e.preparationsRef.current.get(i)===a&&e.preparationsRef.current.delete(i)}};return e.preparationsRef.current.set(i,a),e.dispatch(G({type:w.SetStreaming,isStreaming:!0},t,n)),a}function la(e,t){for(let n of e.current){let r=n.split(`:`)[0];(!r||!t.has(r))&&e.current.delete(n)}}function ua(e,t,n,r,i){for(let a of n){let n=`${a.threadId}:${a.paneId}:${a.conversationId}`;e.current.has(n)||(e.current.add(n),(async function(){try{await an(r.dispatch,a.threadId,a.paneId,a.conversationId,{current:r.getState().selectedThreadId},{isStale:function(){let t=r.getState();return t.selectedThreadId!==a.threadId||A(t,a.paneId)!==a.conversationId||!e.current.has(n)||i(a.threadId,a.paneId)}})}catch{}let o=r.getState();if(!e.current.has(n)||o.selectedThreadId!==a.threadId||A(o,a.paneId)!==a.conversationId||i(a.threadId,a.paneId)||!o.processingRuns.some(function(e){return e.threadId===a.threadId&&e.conversationId===a.conversationId})){e.current.delete(n);return}e.current.delete(n),t(a.threadId,e=>j(a.threadId,e,a.conversationId),`default`,a.paneId,a.conversationId)})())}}function da(e,t,n){n.isPaneStreaming(n.selectedThreadId??``,t)||n.getPaneMessagesForHandlers(t).length>0||!n.selectedThreadId||n.handleSend(t,n.getPaneConversationIdForHandlers(t),e.message,e.model,e.attachments,e.provider,e.planMode,e.imageMode,e.ralphMode,e.orchestrateMode,e.autoRoute)}function fa(e,t){for(let n of e.projects){let e=n.threads.find(e=>e.threadId===t);if(e)return e.chatTitles}}async function pa(e,t,n){let r=Date.now()+Ze+Xe;for(;Date.now()<r;){let r=await M(),i=t?r.processingRuns.some(function(r){return r.threadId===e&&r.conversationId===t&&(!n||!r.runId||r.runId===n)}):r.processingThreadIds.includes(e);if(!r.unavailableThreadIds?.includes(e)&&!i)return;await new Promise(function(e){setTimeout(e,Re)})}throw Error(`Backend is still stopping the run`)}async function ma(e,t,n){try{await ae(e,{conversationId:t,runId:n})}catch(n){let r=await M();if(r.unavailableThreadIds?.includes(e)||(t?r.processingRuns.some(function(n){return n.threadId===e&&n.conversationId===t}):r.processingThreadIds.includes(e)))throw n}}function ha(e,t,n,r,i,a,o){n.state.stoppingRef.current.delete(r);let s=n.state.storeRef.getState();if(s.selectedThreadId!==t||A(s,e)!==i){n.dispatch({type:w.SetStreamStopping,threadId:t,paneId:e,isStopping:!1});return}n.setPaneError(t,e,null),a&&n.streamSessionsRef.current.get(r)===a?(a.pendingTransientRecovery=!1,a.stopHandled=!0,n.finalizeThreadStream(t,o,a),a.controller.abort(),a.cancel?.(),n.dispatch({type:w.SetStreamStopping,threadId:t,paneId:e,isStopping:!1})):n.streamSessionsRef.current.has(r)?n.dispatch({type:w.SetStreamStopping,threadId:t,paneId:e,isStopping:!1}):n.dispatch(G({type:w.ResetStream},t,e))}async function ga(e,t){let{selectedThreadId:n}=t;return n?va(e,t,n):!1}async function _a(e,t,n,r,i){(!r||i)&&(await ma(e,t,n),await pa(e,t,n))}async function va(e,t,n){t.onStopRequested(n);let r=h(n,e),i=t.streamSessionsRef.current.get(r),a=t.getPaneStreamingModel(n,e),o=i?.conversationId??t.getPaneConversationIdForHandlers(e),s=t.state.preparationsRef.current.get(r),c=t.state.storeRef.getState().processingRuns.find(function(e){return e.threadId===n&&e.conversationId===o}),l=i?.runId??c?.runId;sa(t.state,n,e),i?.preparationController?.abort(),t.state.stoppingRef.current.set(r,o),t.dispatch({type:w.SetStreamStopping,threadId:n,paneId:e,isStopping:!0}),t.setPaneError(n,e,`Stopping…`);try{return await _a(n,o,l,s,i),ha(e,n,t,r,o,i,a),!0}catch(r){return t.dispatch({type:w.SetStreamStopping,threadId:n,paneId:e,isStopping:!1}),t.setPaneError(n,e,`Could not confirm Stop: ${r instanceof Error?r.message:`Backend unavailable`}. Retry Stop before sending another prompt.`),!1}}function ya(e,t){for(let[n,r]of t.current.entries()){r.controller.abort(),r.cancel?.(),r.keepsDeviceAwake&&(r.keepsDeviceAwake=!1,H());let[t,i]=n.split(`:`);e(G({type:w.ResetStream},t,i))}t.current.clear()}function ba(e,t){let{selectedThreadId:n}=t;if(!n)return;let r=h(n,e),i=t.streamSessionsRef.current.get(r);i&&(t.streamSessionsRef.current.delete(r),i.controller.abort(),i.cancel?.(),i.keepsDeviceAwake&&(i.keepsDeviceAwake=!1,H())),t.dispatch(G({type:w.ResetStream},n,e)),t.dispatch({type:w.SetActiveStreamPane,paneId:null})}function xa(e,t,n){if(!n){if(!(t in e))return e;let{[t]:n,...r}=e;return r}return e[t]===n?e:{...e,[t]:n}}function Sa(e){let t=new Set(e.processingThreadIds),n=e.storeRef.getState();la(e.autoSubscribePendingRef,t),kt(e.storeRef.dispatch,{threadStreamingStates:n.threadStreamingStates,processingThreadIds:e.processingThreadIds,pendingChatMessage:n.pendingChatMessage},{hasSession:(t,n)=>e.streamSessionsRef.current.has(h(t,n))||e.preparationsRef.current.has(h(t,n))||e.stoppingRef.current.has(h(t,n))});let r=wt({...n,selectedThreadId:e.selectedThreadId,extraChatPanes:e.extraChatPanes,primaryConversationId:e.primaryConversationId},e.processingRuns,{hasSession:(t,n)=>e.streamSessionsRef.current.has(h(t,n))||e.preparationsRef.current.has(h(t,n))||e.stoppingRef.current.has(h(t,n)),isRecentlyFinalized:ct,isThreadBeingCreated:e=>ke(n.threadToolSessions[e])});ua(e.autoSubscribePendingRef,e.connectThreadStream,r,e.storeRef,function(t,n){let r=h(t,n);return e.streamSessionsRef.current.has(r)||e.preparationsRef.current.has(r)||e.stoppingRef.current.has(r)})}function Ca(e){let t=e.pendingChatMessage;if(!t||t.threadId!==e.selectedThreadId||e.isPaneStreaming(e.selectedThreadId??``,`primary`))return;let n=setTimeout(()=>{e.dispatch({type:w.ClearPendingChatMessage}),e.handleSend(`primary`,void 0,t.message,t.model,[],t.provider)},100);return()=>clearTimeout(n)}function wa(e,t,n){let r=n.getQueuedMessagesForPane(e).find(e=>e.id===t);n.dispatch({type:w.RemoveQueuedChatMessage,queuedMessageId:t}),r&&da(r,e,{selectedThreadId:n.selectedThreadId,isPaneStreaming:n.isPaneStreaming,getPaneMessagesForHandlers:n.getPaneMessages,getPaneConversationIdForHandlers:n.getPaneConversationId,handleSend:n.handleSend})}async function Ta(e,t,n){let r=n.getQueuedMessagesForPane(e).find(e=>e.id===t),i=n.getPaneConversationId(e);if(r&&i){n.dispatch({type:w.RemoveQueuedChatMessage,queuedMessageId:t});try{await be(r.threadId,r.id,r.message,i,r.model,r.attachments),n.dispatch({type:w.AddMessage,threadId:r.threadId,paneId:e,message:{messageId:`user-${r.id}`,sender:`user`,content:r.message,contentType:`text`,timestamp:new Date().toISOString(),model:r.model,attachments:r.attachments}})}catch(e){n.dispatch({type:w.EnqueueChatMessage,message:r}),n.toast({title:`Could not send queued message`,description:e instanceof Error?e.message:`The active chat could not be steered.`,variant:`destructive`})}}}function Ea(){let e=te(),t=E(),n=D(e=>e.selectedThreadId),r=D(e=>e.selectedProjectId),i=D(e=>e.queuedChatMessages),a=D(e=>e.pendingChatMessage),o=D(e=>e.processingThreadIds),s=D(e=>e.processingRuns),c=(0,P.useRef)(o),l=(0,P.useRef)(s),u=D(e=>e.extraChatPanes),d=D(e=>e.primaryConversationId),f=(0,P.useRef)(null),p=(0,P.useRef)(new Map),m=(0,P.useRef)(new Map),h=(0,P.useRef)(new Map),g=(0,P.useRef)(null),_=(0,P.useRef)(new Set);return f.current=n,c.current=o,l.current=s,{dispatch:e,storeRef:t,selectedThreadId:n,selectedProjectId:r,queuedChatMessages:i,pendingChatMessage:a,processingThreadIds:o,processingRuns:s,processingThreadIdsRef:c,processingRunsRef:l,preparationsRef:m,stoppingRef:h,extraChatPanes:u,primaryConversationId:d,selectedThreadIdRef:f,streamSessionsRef:p,connectThreadStreamRef:g,autoSubscribePendingRef:_}}function Da(e){let t=(0,F.c)(20),{storeRef:n,selectedThreadId:r,queuedChatMessages:i}=e,a;t[0]===n?a=t[1]:(a=function(e){return d(n.getState(),e)},t[0]=n,t[1]=a);let o=a,s;t[2]===n?s=t[3]:(s=function(e){return A(n.getState(),e)},t[2]=n,t[3]=s);let c=s,l;t[4]===n?l=t[5]:(l=function(e,t){return C(n.getState().threadStreamingStates,e,t).isStreaming},t[4]=n,t[5]=l);let u=l,f;t[6]===n?f=t[7]:(f=function(e,t){return C(n.getState().threadStreamingStates,e,t).streamingModel||`default`},t[6]=n,t[7]=f);let p=f,m;t[8]===n?m=t[9]:(m=function(e){return fa(n.getState(),e)},t[8]=n,t[9]=m);let h=m,g;t[10]!==i||t[11]!==r?(g=e=>r?i.filter(t=>t.threadId===r&&t.paneId===e):[],t[10]=i,t[11]=r,t[12]=g):g=t[12];let _=g,v;return t[13]!==h||t[14]!==c||t[15]!==o||t[16]!==p||t[17]!==_||t[18]!==u?(v={getPaneMessages:o,getPaneConversationId:c,isPaneStreaming:u,getPaneStreamingModel:p,getChatTitles:h,getQueuedMessagesForPane:_},t[13]=h,t[14]=c,t[15]=o,t[16]=p,t[17]=_,t[18]=u,t[19]=v):v=t[19],v}function Oa(){let e=(0,F.c)(4),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={},e[0]=t):t=e[0];let[n,r]=(0,P.useState)(t),i;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(i=(e,t,n)=>{let i=h(e,t);r(e=>xa(e,i,n))},e[1]=i):i=e[1];let a=i,o;return e[2]===n?o=e[3]:(o={paneErrors:n,setPaneError:a},e[2]=n,e[3]=o),o}function ka(e){let{state:t,selectors:n,setPaneError:r,setStopRequestedForThreadId:i}=e,o=a(),{dispatch:s,storeRef:c,streamSessionsRef:l,connectThreadStreamRef:u,selectedThreadIdRef:d,autoSubscribePendingRef:f,processingThreadIds:p,selectedThreadId:m,extraChatPanes:g,primaryConversationId:_,processingRuns:v}=t,y=(0,P.useCallback)(function(e,n,r){t.stoppingRef.current.has(h(e,r.paneId))||kr({dispatch:s,streamSessionsRef:l,connectThreadStreamRef:u,selectedThreadIdRef:d,getHistoryEpoch:()=>c.getState().chatHistoryEpoch,getPaneConversationId:e=>A(c.getState(),e)})(e,n,r)},[s,c]),b=(0,P.useCallback)(e=>ga(e,{selectedThreadId:m,dispatch:s,finalizeThreadStream:y,streamSessionsRef:l,getPaneStreamingModel:n.getPaneStreamingModel,getPaneConversationIdForHandlers:n.getPaneConversationId,onStopRequested:i,state:t,setPaneError:r}),[m,s,y]);(0,P.useEffect)(()=>{let e=c.subscribe(function(){let e=c.getState();for(let[e,n]of t.preparationsRef.current)n.isCurrent()||(n.controller.abort(),t.preparationsRef.current.delete(e));for(let[t,n]of l.current){let[r,i]=t.split(`:`);r===e.selectedThreadId&&A(e,i)!==n.conversationId&&(l.current.delete(t),n.controller.abort(),n.cancel?.(),n.keepsDeviceAwake&&(n.keepsDeviceAwake=!1,H()))}});return()=>{e(),f.current.clear();for(let e of t.preparationsRef.current.values())e.controller.abort();t.preparationsRef.current.clear(),ya(s,l)}},[s]);let x=(0,P.useCallback)(li({dispatch:s,streamSessionsRef:l,setPaneError:r,finalizeThreadStream:y,onStreamConnected:()=>{o.invalidateQueries({queryKey:N.conversations.unreadAll()})}}),[s,y,o,r]),S=(0,P.useCallback)(function(e,n,r,i,a){let o=h(e,i),s=t.preparationsRef.current.get(o),u=l.current.get(o),d=x(e,n,r,i,a),f=l.current.get(o);return s&&d.signal.addEventListener(`abort`,function(){s.controller.abort()},{once:!0}),f&&(f.preparationController=s?.controller,f.runId=s?.runId??(u&&u.conversationId===a?u.runId:void 0)??c.getState().processingRuns.find(function(t){return t.threadId===e&&t.conversationId===a})?.runId),d},[x,c]);u.current=S,(0,P.useEffect)(()=>{Sa({autoSubscribePendingRef:f,processingThreadIds:p,selectedThreadId:m,extraChatPanes:g,primaryConversationId:_,processingRuns:v,connectThreadStream:S,streamSessionsRef:l,storeRef:c,preparationsRef:t.preparationsRef,stoppingRef:t.stoppingRef})},[S,g,_,v,p,m,c]);let C=v.map(function(e){return`${e.threadId}:${e.conversationId}`}).sort().join(`,`);return(0,P.useEffect)(function(){let e=!1,t=setInterval(async function(){if(!e){e=!0;try{await Ar(l,c.getState().processingRuns,y)}finally{e=!1}}},Xe);return function(){clearInterval(t)}},[C,y,l,c]),{finalizeThreadStream:y,connectThreadStream:S,handleStop:b}}function Aa(e){let t=Ea(),{dispatch:n,storeRef:r,selectedThreadId:i,selectedProjectId:a,processingThreadIdsRef:o,processingRunsRef:s,pendingChatMessage:c}=t,l=Da(t),{getPaneMessages:u,getPaneConversationId:d,isPaneStreaming:f,getChatTitles:p,getQueuedMessagesForPane:m}=l,{toast:g}=Pe(),{paneErrors:_,setPaneError:v}=Oa(),[y,b]=(0,P.useState)(null),{connectThreadStream:x,handleStop:S}=ka({state:t,selectors:l,setPaneError:v,setStopRequestedForThreadId:b}),C=na({selectedThreadId:i,selectedProjectId:a,processingThreadIdsRef:o,processingRunsRef:s,dispatch:n,toast:g,connectThreadStream:x,onPlanModeConsumed:e,setPaneError:v,setStopRequestedForThreadId:b,getPaneMessages:u,getPaneConversationId:d,isPaneStreaming:f,getChatTitles:p,isThreadBeingCreated:e=>ke(r.getState().threadToolSessions[e]),beginPreparation:(e,n,r)=>ca(t,e,n,r),isPaneStopping:(e,n)=>{let i=r.getState();return i.startingNewChatPaneIds.includes(n)||t.stoppingRef.current.has(h(e,n))&&t.stoppingRef.current.get(h(e,n))===A(i,n)}});(0,P.useEffect)(()=>Ca({pendingChatMessage:c,selectedThreadId:i,isPaneStreaming:f,dispatch:n,handleSend:C}),[c,i,n,C,r]),oa(C);let w=(0,P.useCallback)((e,t)=>wa(e,t,{getQueuedMessagesForPane:m,dispatch:n,selectedThreadId:i,isPaneStreaming:f,getPaneMessages:u,getPaneConversationId:d,handleSend:C}),[n,m,C,i,r]),T=(0,P.useCallback)((e,t)=>Ta(e,t,{getQueuedMessagesForPane:m,getPaneConversationId:d,dispatch:n,toast:g}),[n,d,m,g]),E=(0,P.useCallback)(e=>{i&&sa(t,i,e),ba(e,{selectedThreadId:i,dispatch:n,streamSessionsRef:t.streamSessionsRef})},[n,i,t.streamSessionsRef]);return(0,P.useMemo)(()=>({paneErrors:_,setPaneError:v,handleSend:C,handleStop:S,handleDiscardPaneStream:E,getQueuedMessagesForPane:m,handleRemoveQueuedMessage:w,handleSendQueuedMessageNow:T}),[_,v,C,S,E,m,w,T])}var ja=(0,P.createContext)(void 0);function Ma(e){let t=(0,F.c)(3),{children:n}=e,r=Aa(),i;return t[0]!==n||t[1]!==r?(i=(0,nt.jsx)(ja.Provider,{value:r,children:n}),t[0]=n,t[1]=r,t[2]=i):i=t[2],i}function Na(){let e=(0,P.useContext)(ja);if(e===void 0)throw Error(`useChatHandlersContext must be used within a ChatHandlersProvider`);return e}function Pa(){return(0,P.useContext)(ja)??null}export{ft as A,et as B,an as C,Jt as D,Gt as E,ht as F,Ue as G,Ke as H,gt as I,Be as J,Re as K,Dt as L,pt as M,mt as N,Ut as O,_t as P,bt as R,wn as S,zt as T,Ge as U,Xe as V,We as W,K as _,fi as a,Jn as b,ar as c,En as d,Tn as f,Ln as g,Yn as h,_i as i,yt as j,Qt as k,nr as l,Kn as m,Na as n,ui as o,qn as p,ze as q,Pa as r,or as s,Ma as t,ir as u,Zn as v,rn as w,xn as x,Xn as y,lt as z};
@@ -1 +1 @@
1
- import{n as e,t}from"./react-vendor-D61Uve5n.js";import{a as n,i as r,o as i,r as a,s as o,t as s}from"./dialog-D_12AsZd.js";import{t as c}from"./button-DDaJhJP1.js";import{i as l,n as u,r as d,t as f}from"./tooltip-CqwCZ7wt.js";import{t as p}from"./label-BCs5CZEs.js";import{t as m}from"./progress-indicator-hJ74ac5W.js";import{Nn as h,hn as g}from"./index-CoY8DilQ.js";var _=e(),v=t();function y(e){let t=(0,_.c)(41),{open:y,onOpenChange:b,commitMessage:x,onCommitMessageChange:S,isGeneratingMessage:C,isLoading:w,onGenerateMessage:T,onCommit:E,currentBranch:D}=e,O;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,v.jsx)(o,{children:`Commit Changes`}),t[0]=O):O=t[0];let k;t[1]===D?k=t[2]:(k=(0,v.jsxs)(i,{children:[O,(0,v.jsxs)(r,{children:[`Enter a commit message for your changes on branch `,D]})]}),t[1]=D,t[2]=k);let A;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,v.jsx)(p,{htmlFor:`commit-message`,children:`Commit Message`}),t[3]=A):A=t[3];let j;t[4]===S?j=t[5]:(j=e=>S(e.target.value),t[4]=S,t[5]=j);let M;t[6]!==x||t[7]!==C||t[8]!==j?(M=(0,v.jsx)(g,{id:`commit-message`,placeholder:`Enter commit message...`,value:x,onChange:j,disabled:C,className:`pr-10 h-full min-h-[14rem] resize-none`}),t[6]=x,t[7]=C,t[8]=j,t[9]=M):M=t[9];let N=C||w,P;t[10]===C?P=t[11]:(P=C?(0,v.jsx)(m,{}):(0,v.jsx)(h,{className:`h-3.5 w-3.5`}),t[10]=C,t[11]=P);let F;t[12]!==T||t[13]!==N||t[14]!==P?(F=(0,v.jsx)(l,{asChild:!0,children:(0,v.jsx)(c,{type:`button`,variant:`ghost`,size:`icon`,className:`absolute top-2 right-2 h-6 w-6`,onClick:T,disabled:N,children:P})}),t[12]=T,t[13]=N,t[14]=P,t[15]=F):F=t[15];let I=C?`Generating commit message...`:`Generate commit message with AI`,L;t[16]===I?L=t[17]:(L=(0,v.jsx)(u,{children:I}),t[16]=I,t[17]=L);let R;t[18]!==L||t[19]!==F?(R=(0,v.jsx)(d,{children:(0,v.jsxs)(f,{children:[F,L]})}),t[18]=L,t[19]=F,t[20]=R):R=t[20];let z;t[21]!==R||t[22]!==M?(z=(0,v.jsx)(`div`,{className:`grid gap-4 py-4 flex-1 min-h-0`,children:(0,v.jsxs)(`div`,{className:`grid gap-2 flex-1 min-h-0`,children:[A,(0,v.jsxs)(`div`,{className:`relative flex-1 min-h-0`,children:[M,R]})]})}),t[21]=R,t[22]=M,t[23]=z):z=t[23];let B;t[24]!==x||t[25]!==w?(B=w||!x.trim(),t[24]=x,t[25]=w,t[26]=B):B=t[26];let V;t[27]===w?V=t[28]:(V=w?(0,v.jsxs)(v.Fragment,{children:[`Commit`,(0,v.jsx)(m,{size:`sm`})]}):`Commit`,t[27]=w,t[28]=V);let H;t[29]!==E||t[30]!==B||t[31]!==V?(H=(0,v.jsx)(n,{className:`w-full items-center`,children:(0,v.jsx)(c,{className:`ml-auto`,onClick:E,disabled:B,children:V})}),t[29]=E,t[30]=B,t[31]=V,t[32]=H):H=t[32];let U;t[33]!==z||t[34]!==H||t[35]!==k?(U=(0,v.jsxs)(a,{className:`flex max-w-2xl flex-col max-md:top-[max(1rem,env(safe-area-inset-top,0px))] max-md:max-h-[calc(100dvh-2rem)] max-md:translate-y-0 max-md:overflow-y-auto max-md:data-[state=closed]:slide-out-to-top max-md:data-[state=open]:slide-in-from-top max-md:data-[state=closed]:slide-out-to-left-0 max-md:data-[state=open]:slide-in-from-left-0 max-md:data-[state=closed]:zoom-out-100 max-md:data-[state=open]:zoom-in-100 md:h-[min(36rem,85dvh)]`,children:[k,z,H]}),t[33]=z,t[34]=H,t[35]=k,t[36]=U):U=t[36];let W;return t[37]!==b||t[38]!==y||t[39]!==U?(W=(0,v.jsx)(s,{open:y,onOpenChange:b,children:U}),t[37]=b,t[38]=y,t[39]=U,t[40]=W):W=t[40],W}export{y as CommitDialog};
1
+ import{n as e,t}from"./react-vendor-D61Uve5n.js";import{a as n,i as r,o as i,r as a,s as o,t as s}from"./dialog-D_12AsZd.js";import{t as c}from"./button-DDaJhJP1.js";import{i as l,n as u,r as d,t as f}from"./tooltip-CqwCZ7wt.js";import{t as p}from"./label-BCs5CZEs.js";import{t as m}from"./progress-indicator-hJ74ac5W.js";import{Mn as h,hn as g}from"./index-CcAwxnT5.js";var _=e(),v=t();function y(e){let t=(0,_.c)(41),{open:y,onOpenChange:b,commitMessage:x,onCommitMessageChange:S,isGeneratingMessage:C,isLoading:w,onGenerateMessage:T,onCommit:E,currentBranch:D}=e,O;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,v.jsx)(o,{children:`Commit Changes`}),t[0]=O):O=t[0];let k;t[1]===D?k=t[2]:(k=(0,v.jsxs)(i,{children:[O,(0,v.jsxs)(r,{children:[`Enter a commit message for your changes on branch `,D]})]}),t[1]=D,t[2]=k);let A;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(A=(0,v.jsx)(p,{htmlFor:`commit-message`,children:`Commit Message`}),t[3]=A):A=t[3];let j;t[4]===S?j=t[5]:(j=e=>S(e.target.value),t[4]=S,t[5]=j);let M;t[6]!==x||t[7]!==C||t[8]!==j?(M=(0,v.jsx)(g,{id:`commit-message`,placeholder:`Enter commit message...`,value:x,onChange:j,disabled:C,className:`pr-10 h-full min-h-[14rem] resize-none`}),t[6]=x,t[7]=C,t[8]=j,t[9]=M):M=t[9];let N=C||w,P;t[10]===C?P=t[11]:(P=C?(0,v.jsx)(m,{}):(0,v.jsx)(h,{className:`h-3.5 w-3.5`}),t[10]=C,t[11]=P);let F;t[12]!==T||t[13]!==N||t[14]!==P?(F=(0,v.jsx)(l,{asChild:!0,children:(0,v.jsx)(c,{type:`button`,variant:`ghost`,size:`icon`,className:`absolute top-2 right-2 h-6 w-6`,onClick:T,disabled:N,children:P})}),t[12]=T,t[13]=N,t[14]=P,t[15]=F):F=t[15];let I=C?`Generating commit message...`:`Generate commit message with AI`,L;t[16]===I?L=t[17]:(L=(0,v.jsx)(u,{children:I}),t[16]=I,t[17]=L);let R;t[18]!==L||t[19]!==F?(R=(0,v.jsx)(d,{children:(0,v.jsxs)(f,{children:[F,L]})}),t[18]=L,t[19]=F,t[20]=R):R=t[20];let z;t[21]!==R||t[22]!==M?(z=(0,v.jsx)(`div`,{className:`grid gap-4 py-4 flex-1 min-h-0`,children:(0,v.jsxs)(`div`,{className:`grid gap-2 flex-1 min-h-0`,children:[A,(0,v.jsxs)(`div`,{className:`relative flex-1 min-h-0`,children:[M,R]})]})}),t[21]=R,t[22]=M,t[23]=z):z=t[23];let B;t[24]!==x||t[25]!==w?(B=w||!x.trim(),t[24]=x,t[25]=w,t[26]=B):B=t[26];let V;t[27]===w?V=t[28]:(V=w?(0,v.jsxs)(v.Fragment,{children:[`Commit`,(0,v.jsx)(m,{size:`sm`})]}):`Commit`,t[27]=w,t[28]=V);let H;t[29]!==E||t[30]!==B||t[31]!==V?(H=(0,v.jsx)(n,{className:`w-full items-center`,children:(0,v.jsx)(c,{className:`ml-auto`,onClick:E,disabled:B,children:V})}),t[29]=E,t[30]=B,t[31]=V,t[32]=H):H=t[32];let U;t[33]!==z||t[34]!==H||t[35]!==k?(U=(0,v.jsxs)(a,{className:`flex max-w-2xl flex-col max-md:top-[max(1rem,env(safe-area-inset-top,0px))] max-md:max-h-[calc(100dvh-2rem)] max-md:translate-y-0 max-md:overflow-y-auto max-md:data-[state=closed]:slide-out-to-top max-md:data-[state=open]:slide-in-from-top max-md:data-[state=closed]:slide-out-to-left-0 max-md:data-[state=open]:slide-in-from-left-0 max-md:data-[state=closed]:zoom-out-100 max-md:data-[state=open]:zoom-in-100 md:h-[min(36rem,85dvh)]`,children:[k,z,H]}),t[33]=z,t[34]=H,t[35]=k,t[36]=U):U=t[36];let W;return t[37]!==b||t[38]!==y||t[39]!==U?(W=(0,v.jsx)(s,{open:y,onOpenChange:b,children:U}),t[37]=b,t[38]=y,t[39]=U,t[40]=W):W=t[40],W}export{y as CommitDialog};
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,t as r}from"./react-vendor-D61Uve5n.js";import{U as i}from"./dist-v_MvKS2-.js";import{t as a}from"./utils-CqsIXqSC.js";import{t as o}from"./check-skFQ1X72.js";import{t as s}from"./copy-bi9iX3xn.js";import{a as c,i as l,o as u,r as d,s as f,t as p}from"./dialog-D_12AsZd.js";import{t as m}from"./button-DDaJhJP1.js";import{r as h}from"./scroll-area-CGEZ1gAL.js";import{tr as g}from"./index-CoY8DilQ.js";var _=t(),v=e(n(),1),y=r(),b=1500;function x(e){let t=(0,_.c)(41),{error:n,onDismiss:r,onFixInChat:x}=e,[S,C]=(0,v.useState)(!1),w=(0,v.useRef)(null),T,E;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>()=>{w.current!==null&&(clearTimeout(w.current),w.current=null)},E=[],t[0]=T,t[1]=E):(T=t[0],E=t[1]),(0,v.useEffect)(T,E);let D;t[2]===r?D=t[3]:(D=function(e){e||r()},t[2]=r,t[3]=D);let O=D,k;t[4]===n.message?k=t[5]:(k=async function(){try{await navigator.clipboard.writeText(n.message)}catch{}C(!0),w.current!==null&&clearTimeout(w.current),w.current=setTimeout(()=>{C(!1),w.current=null},b)},t[4]=n.message,t[5]=k);let A=k,j;t[6]!==n||t[7]!==x?(j=function(){x(n)},t[6]=n,t[7]=x,t[8]=j):j=t[8];let M=j,N;t[9]===n.title?N=t[10]:(N=(0,y.jsx)(f,{children:n.title}),t[9]=n.title,t[10]=N);let P;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,y.jsx)(l,{children:`Git returned an error, so the commit was not created. Fix the issue below, then try again.`}),t[11]=P):P=t[11];let F;t[12]===N?F=t[13]:(F=(0,y.jsxs)(u,{children:[N,P]}),t[12]=N,t[13]=F);let I;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(I=a(i.compact,`whitespace-pre-wrap break-words p-3 font-mono text-foreground`),t[14]=I):I=t[14];let L;t[15]===n.message?L=t[16]:(L=(0,y.jsx)(h,{className:`max-h-56 rounded-md border bg-muted/40`,children:(0,y.jsx)(`pre`,{className:I,children:n.message})}),t[15]=n.message,t[16]=L);let R;t[17]===r?R=t[18]:(R=(0,y.jsx)(m,{variant:`outline`,onClick:r,children:`Close`}),t[17]=r,t[18]=R);let z;t[19]===A?z=t[20]:(z=()=>void A(),t[19]=A,t[20]=z);let B;t[21]===S?B=t[22]:(B=S?(0,y.jsx)(o,{className:`h-4 w-4`}):(0,y.jsx)(s,{className:`h-4 w-4`}),t[21]=S,t[22]=B);let V=S?`Copied`:`Copy`,H;t[23]!==z||t[24]!==B||t[25]!==V?(H=(0,y.jsxs)(m,{variant:`outline`,onClick:z,children:[B,V]}),t[23]=z,t[24]=B,t[25]=V,t[26]=H):H=t[26];let U;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,y.jsx)(g,{className:`h-4 w-4`}),t[27]=U):U=t[27];let W;t[28]===M?W=t[29]:(W=(0,y.jsxs)(m,{onClick:M,children:[U,`Fix in Chat`]}),t[28]=M,t[29]=W);let G;t[30]!==R||t[31]!==H||t[32]!==W?(G=(0,y.jsxs)(c,{className:`gap-2`,children:[R,H,W]}),t[30]=R,t[31]=H,t[32]=W,t[33]=G):G=t[33];let K;t[34]!==G||t[35]!==F||t[36]!==L?(K=(0,y.jsxs)(d,{className:`max-w-xl`,children:[F,L,G]}),t[34]=G,t[35]=F,t[36]=L,t[37]=K):K=t[37];let q;return t[38]!==O||t[39]!==K?(q=(0,y.jsx)(p,{open:!0,onOpenChange:O,children:K}),t[38]=O,t[39]=K,t[40]=q):q=t[40],q}export{x as CommitErrorDialog};
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t,o as n,t as r}from"./react-vendor-D61Uve5n.js";import{U as i}from"./dist-v_MvKS2-.js";import{t as a}from"./utils-CqsIXqSC.js";import{t as o}from"./check-skFQ1X72.js";import{t as s}from"./copy-bi9iX3xn.js";import{a as c,i as l,o as u,r as d,s as f,t as p}from"./dialog-D_12AsZd.js";import{t as m}from"./button-DDaJhJP1.js";import{r as h}from"./scroll-area-DGF9wUqQ.js";import{er as g}from"./index-CcAwxnT5.js";var _=t(),v=e(n(),1),y=r(),b=1500;function x(e){let t=(0,_.c)(41),{error:n,onDismiss:r,onFixInChat:x}=e,[S,C]=(0,v.useState)(!1),w=(0,v.useRef)(null),T,E;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(T=()=>()=>{w.current!==null&&(clearTimeout(w.current),w.current=null)},E=[],t[0]=T,t[1]=E):(T=t[0],E=t[1]),(0,v.useEffect)(T,E);let D;t[2]===r?D=t[3]:(D=function(e){e||r()},t[2]=r,t[3]=D);let O=D,k;t[4]===n.message?k=t[5]:(k=async function(){try{await navigator.clipboard.writeText(n.message)}catch{}C(!0),w.current!==null&&clearTimeout(w.current),w.current=setTimeout(()=>{C(!1),w.current=null},b)},t[4]=n.message,t[5]=k);let A=k,j;t[6]!==n||t[7]!==x?(j=function(){x(n)},t[6]=n,t[7]=x,t[8]=j):j=t[8];let M=j,N;t[9]===n.title?N=t[10]:(N=(0,y.jsx)(f,{children:n.title}),t[9]=n.title,t[10]=N);let P;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,y.jsx)(l,{children:`Git returned an error, so the commit was not created. Fix the issue below, then try again.`}),t[11]=P):P=t[11];let F;t[12]===N?F=t[13]:(F=(0,y.jsxs)(u,{children:[N,P]}),t[12]=N,t[13]=F);let I;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(I=a(i.compact,`whitespace-pre-wrap break-words p-3 font-mono text-foreground`),t[14]=I):I=t[14];let L;t[15]===n.message?L=t[16]:(L=(0,y.jsx)(h,{className:`max-h-56 rounded-md border bg-muted/40`,children:(0,y.jsx)(`pre`,{className:I,children:n.message})}),t[15]=n.message,t[16]=L);let R;t[17]===r?R=t[18]:(R=(0,y.jsx)(m,{variant:`outline`,onClick:r,children:`Close`}),t[17]=r,t[18]=R);let z;t[19]===A?z=t[20]:(z=()=>void A(),t[19]=A,t[20]=z);let B;t[21]===S?B=t[22]:(B=S?(0,y.jsx)(o,{className:`h-4 w-4`}):(0,y.jsx)(s,{className:`h-4 w-4`}),t[21]=S,t[22]=B);let V=S?`Copied`:`Copy`,H;t[23]!==z||t[24]!==B||t[25]!==V?(H=(0,y.jsxs)(m,{variant:`outline`,onClick:z,children:[B,V]}),t[23]=z,t[24]=B,t[25]=V,t[26]=H):H=t[26];let U;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,y.jsx)(g,{className:`h-4 w-4`}),t[27]=U):U=t[27];let W;t[28]===M?W=t[29]:(W=(0,y.jsxs)(m,{onClick:M,children:[U,`Fix in Chat`]}),t[28]=M,t[29]=W);let G;t[30]!==R||t[31]!==H||t[32]!==W?(G=(0,y.jsxs)(c,{className:`gap-2`,children:[R,H,W]}),t[30]=R,t[31]=H,t[32]=W,t[33]=G):G=t[33];let K;t[34]!==G||t[35]!==F||t[36]!==L?(K=(0,y.jsxs)(d,{className:`max-w-xl`,children:[F,L,G]}),t[34]=G,t[35]=F,t[36]=L,t[37]=K):K=t[37];let q;return t[38]!==O||t[39]!==K?(q=(0,y.jsx)(p,{open:!0,onOpenChange:O,children:K}),t[38]=O,t[39]=K,t[40]=q):q=t[40],q}export{x as CommitErrorDialog};