@jingyi0605/codingns 0.5.1 → 0.6.0

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 (196) hide show
  1. package/dist/public/assets/{AdaptiveButlerPage-SffCV4Vb.js → AdaptiveButlerPage-uFwDdN-F.js} +3 -3
  2. package/dist/public/assets/App-BZvapsi8.js +30 -0
  3. package/dist/public/assets/App-CcDXqFl1.css +1 -0
  4. package/dist/public/assets/{BootstrapPage--zExdgfM.js → BootstrapPage-gHSoa4JN.js} +1 -1
  5. package/dist/public/assets/ConversationPage-z3sXtKZ7.js +4 -0
  6. package/dist/public/assets/{DesktopDetachPreviewPage-DvI9CIKi.js → DesktopDetachPreviewPage-4eMRxiBW.js} +1 -1
  7. package/dist/public/assets/DesktopWindowPage-CZcoGApB.js +2 -0
  8. package/dist/public/assets/FileContextPanel-C3qex8bb.js +1 -0
  9. package/dist/public/assets/GitSidebar-BK6H16XU.js +6 -0
  10. package/dist/public/assets/{MobileCreateSessionSheet-CXSKMnYn.js → MobileCreateSessionSheet-BYfbvK8o.js} +1 -1
  11. package/dist/public/assets/MobileSheet-Ckug8hTb.js +1 -0
  12. package/dist/public/assets/{MobileTopHeaderFrame-BWorAJ1C.js → MobileTopHeaderFrame-Bwv8Ovm_.js} +1 -1
  13. package/dist/public/assets/MobileWorkspaceSwitcherHeader-RqWrBdn2.js +1 -0
  14. package/dist/public/assets/RelayConnectEntryPage-D_4YL-YH.js +1 -0
  15. package/dist/public/assets/ServerSettingsModal-CMSm3BZU.js +1 -0
  16. package/dist/public/assets/SessionIndexPage-DuK10DL5.js +1 -0
  17. package/dist/public/assets/SettingsPage-fyD-xaHL.js +1 -0
  18. package/dist/public/assets/TerminalManagerPanel-CCLr1Ypk.js +1 -0
  19. package/dist/public/assets/{TerminalPage-CvnHXBhw.js → TerminalPage-DaooFaJ4.js} +19 -19
  20. package/dist/public/assets/{TerminalRuntimeFallbackModal-D7Aq186N.js → TerminalRuntimeFallbackModal-aUzjEBwP.js} +1 -1
  21. package/dist/public/assets/ToolFilesPage-CGxBvYG0.js +1 -0
  22. package/dist/public/assets/ToolGitPage-C264yjS9.js +1 -0
  23. package/dist/public/assets/ToolProcessesPage-BOP4A1cb.js +1 -0
  24. package/dist/public/assets/ToolsHomePage-CQxGiKQA.js +1 -0
  25. package/dist/public/assets/WorkbenchLandingPage-CvAY68ca.js +1 -0
  26. package/dist/public/assets/WorkbenchLayout-DGm8Tc5M.js +3 -0
  27. package/dist/public/assets/{WorkbenchModal-B09hC9b5.js → WorkbenchModal-0tPIIhca.js} +1 -1
  28. package/dist/public/assets/{WorkbenchShellRoute-DsW4mBTX.css → WorkbenchShellRoute-BF0nHWOk.css} +1 -1
  29. package/dist/public/assets/WorkbenchShellRoute-DBBOsJo9.js +1 -0
  30. package/dist/public/assets/WorkspaceDebugDetailPage-CDerFYd2.js +1 -0
  31. package/dist/public/assets/WorkspaceDetailPage-BlJc1CHE.js +1 -0
  32. package/dist/public/assets/WorkspaceHomePage-BUsKJ3lv.js +1 -0
  33. package/dist/public/assets/client-runtime-manager-BZpL17fc.js +1 -0
  34. package/dist/public/assets/{default-session-permission-mode-D0wZ9Jek.js → default-session-permission-mode-DT4SGiwp.js} +1 -1
  35. package/dist/public/assets/file-tree-icon-Db5LXC8h.js +31 -0
  36. package/dist/public/assets/index-BZLcEHW3.js +42 -0
  37. package/dist/public/assets/index-BbspQPC2.css +1 -0
  38. package/dist/public/assets/login-direct-candidate-resolver-1mxe_Oh8.js +1 -0
  39. package/dist/public/assets/{preferences-service-gOt2ZjKZ.js → preferences-service-DWnzl5a0.js} +1 -1
  40. package/dist/public/assets/relay-entry-C5_Iay0I.js +1 -0
  41. package/dist/public/assets/session-runtime-machine-DdLeDqQr.js +17 -0
  42. package/dist/public/assets/{styles-BWPBZvze.css → styles-CsEMfdaS.css} +1 -1
  43. package/dist/public/assets/{terminal-runtime-meta-BMT-rSEe.js → terminal-runtime-meta-cdtWVfCm.js} +1 -1
  44. package/dist/public/assets/{useRegisteredDebugTemplates-zMcEOGca.js → useRegisteredDebugTemplates-oFAQNIqh.js} +1 -1
  45. package/dist/public/assets/window-BVUB8gMK.js +1 -0
  46. package/dist/public/index.html +2 -2
  47. package/dist/server/config/env.d.ts +2 -0
  48. package/dist/server/config/env.js +39 -0
  49. package/dist/server/config/env.js.map +1 -1
  50. package/dist/server/modules/client/npm-global-package-service.d.ts +7 -1
  51. package/dist/server/modules/client/npm-global-package-service.js +149 -43
  52. package/dist/server/modules/client/npm-global-package-service.js.map +1 -1
  53. package/dist/server/modules/client/service-update-task-service.js +6 -2
  54. package/dist/server/modules/client/service-update-task-service.js.map +1 -1
  55. package/dist/server/modules/client/service-update-types.d.ts +2 -0
  56. package/dist/server/modules/git/git-controller.d.ts +3 -0
  57. package/dist/server/modules/git/git-controller.js +3 -0
  58. package/dist/server/modules/git/git-controller.js.map +1 -1
  59. package/dist/server/modules/git/git-read-service.js +47 -1
  60. package/dist/server/modules/git/git-read-service.js.map +1 -1
  61. package/dist/server/modules/git/git-write-service.d.ts +4 -0
  62. package/dist/server/modules/git/git-write-service.js +24 -0
  63. package/dist/server/modules/git/git-write-service.js.map +1 -1
  64. package/dist/server/modules/git/types.d.ts +1 -0
  65. package/dist/server/modules/git/workspace-repo-guard.d.ts +2 -0
  66. package/dist/server/modules/git/workspace-repo-guard.js +24 -10
  67. package/dist/server/modules/git/workspace-repo-guard.js.map +1 -1
  68. package/dist/server/modules/parallel-sessions/parallel-session-controller.d.ts +53 -0
  69. package/dist/server/modules/parallel-sessions/parallel-session-controller.js +70 -0
  70. package/dist/server/modules/parallel-sessions/parallel-session-controller.js.map +1 -0
  71. package/dist/server/modules/parallel-sessions/parallel-session-group-service.d.ts +83 -0
  72. package/dist/server/modules/parallel-sessions/parallel-session-group-service.js +591 -0
  73. package/dist/server/modules/parallel-sessions/parallel-session-group-service.js.map +1 -0
  74. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.d.ts +56 -0
  75. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js +483 -0
  76. package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js.map +1 -0
  77. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.d.ts +16 -1
  78. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-packets.js.map +1 -1
  79. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.d.ts +2 -1
  80. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js +18 -0
  81. package/dist/server/modules/relay-tunnel/crypto/relay-tunnel-protocol.js.map +1 -1
  82. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.d.ts +2 -0
  83. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js +129 -0
  84. package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js.map +1 -0
  85. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.d.ts +13 -0
  86. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.js +2 -0
  87. package/dist/server/modules/relay-tunnel/relay-tunnel-client-context.js.map +1 -0
  88. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.d.ts +6 -0
  89. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js +110 -10
  90. package/dist/server/modules/relay-tunnel/relay-tunnel-gateway-service.js.map +1 -1
  91. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.d.ts +16 -4
  92. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js +220 -102
  93. package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js.map +1 -1
  94. package/dist/server/modules/relay-tunnel/relay-tunnel-service.d.ts +4 -1
  95. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +257 -162
  96. package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
  97. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +3 -0
  98. package/dist/server/modules/sessions/codex-app-server-helper-client.js +56 -45
  99. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  100. package/dist/server/modules/sessions/codex-app-server-helper-process.js +21 -2
  101. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  102. package/dist/server/modules/sessions/session-activity-inspector.js +6 -8
  103. package/dist/server/modules/sessions/session-activity-inspector.js.map +1 -1
  104. package/dist/server/modules/sessions/session-history-service.d.ts +11 -1
  105. package/dist/server/modules/sessions/session-history-service.js +204 -21
  106. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  107. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +8 -0
  108. package/dist/server/modules/sessions/session-live-runtime-service.js +208 -25
  109. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  110. package/dist/server/modules/workbench/codex-archive-watcher.d.ts +16 -0
  111. package/dist/server/modules/workbench/codex-archive-watcher.js +50 -0
  112. package/dist/server/modules/workbench/codex-archive-watcher.js.map +1 -0
  113. package/dist/server/modules/workbench/workbench-service.d.ts +43 -4
  114. package/dist/server/modules/workbench/workbench-service.js +72 -9
  115. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  116. package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +1 -1
  117. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +26 -3
  118. package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
  119. package/dist/server/modules/workspace/workspace-service.d.ts +3 -1
  120. package/dist/server/modules/workspace/workspace-service.js +10 -2
  121. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  122. package/dist/server/modules/worktree/worktree-base-ref-resolver.d.ts +20 -0
  123. package/dist/server/modules/worktree/worktree-base-ref-resolver.js +111 -0
  124. package/dist/server/modules/worktree/worktree-base-ref-resolver.js.map +1 -0
  125. package/dist/server/modules/worktree/worktree-cleanup-service.js +9 -3
  126. package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -1
  127. package/dist/server/modules/worktree/worktree-manager.d.ts +0 -1
  128. package/dist/server/modules/worktree/worktree-manager.js +14 -20
  129. package/dist/server/modules/worktree/worktree-manager.js.map +1 -1
  130. package/dist/server/routes/git.js +1 -0
  131. package/dist/server/routes/git.js.map +1 -1
  132. package/dist/server/routes/parallel-groups.d.ts +3 -0
  133. package/dist/server/routes/parallel-groups.js +9 -0
  134. package/dist/server/routes/parallel-groups.js.map +1 -0
  135. package/dist/server/server/create-server.d.ts +8 -0
  136. package/dist/server/server/create-server.js +48 -9
  137. package/dist/server/server/create-server.js.map +1 -1
  138. package/dist/server/server/workbench-runtime-terminal-sync.d.ts +14 -0
  139. package/dist/server/server/workbench-runtime-terminal-sync.js +17 -0
  140. package/dist/server/server/workbench-runtime-terminal-sync.js.map +1 -0
  141. package/dist/server/storage/repositories/parallel-session-group-repository.d.ts +11 -0
  142. package/dist/server/storage/repositories/parallel-session-group-repository.js +131 -0
  143. package/dist/server/storage/repositories/parallel-session-group-repository.js.map +1 -0
  144. package/dist/server/storage/repositories/parallel-session-member-repository.d.ts +12 -0
  145. package/dist/server/storage/repositories/parallel-session-member-repository.js +150 -0
  146. package/dist/server/storage/repositories/parallel-session-member-repository.js.map +1 -0
  147. package/dist/server/storage/repositories/session-isolated-workspace-repository.d.ts +15 -0
  148. package/dist/server/storage/repositories/session-isolated-workspace-repository.js +230 -0
  149. package/dist/server/storage/repositories/session-isolated-workspace-repository.js.map +1 -0
  150. package/dist/server/storage/sqlite/schema.sql +73 -0
  151. package/dist/server/types/domain.d.ts +72 -0
  152. package/dist/server/ws/workbench-ws-hub.d.ts +3 -1
  153. package/dist/server/ws/workbench-ws-hub.js +189 -20
  154. package/dist/server/ws/workbench-ws-hub.js.map +1 -1
  155. package/dist/server/ws/ws-server.js +141 -8
  156. package/dist/server/ws/ws-server.js.map +1 -1
  157. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +1 -0
  158. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +67 -6
  159. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  160. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +3 -0
  161. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +46 -22
  162. package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
  163. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +558 -309
  164. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  165. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +29 -5
  166. package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
  167. package/package.json +1 -1
  168. package/dist/public/assets/App-DUAg5urj.css +0 -1
  169. package/dist/public/assets/App-WOLwMld_.js +0 -30
  170. package/dist/public/assets/ConversationPage-D9pzRmOg.js +0 -2
  171. package/dist/public/assets/DesktopWindowPage-D8FpOSLE.js +0 -2
  172. package/dist/public/assets/FileContextPanel-C8T7oqRN.js +0 -1
  173. package/dist/public/assets/GitSidebar-Bze7DNnc.js +0 -6
  174. package/dist/public/assets/MobileSheet-Gzc14EpR.js +0 -1
  175. package/dist/public/assets/MobileWorkspaceSwitcherHeader-DOr4pTUq.js +0 -1
  176. package/dist/public/assets/ServerSettingsModal-BYB0GvTl.js +0 -1
  177. package/dist/public/assets/SessionIndexPage-CR3IARXX.js +0 -1
  178. package/dist/public/assets/SettingsPage-B_BQtnwE.js +0 -1
  179. package/dist/public/assets/TerminalManagerPanel-PQ-EM64j.js +0 -1
  180. package/dist/public/assets/ToolFilesPage-Qzkc6K2I.js +0 -1
  181. package/dist/public/assets/ToolGitPage-BdNDN-cV.js +0 -1
  182. package/dist/public/assets/ToolProcessesPage-EXJ9DHWI.js +0 -1
  183. package/dist/public/assets/ToolsHomePage-CjF3CWzR.js +0 -1
  184. package/dist/public/assets/WorkbenchLandingPage-DZPk4SmX.js +0 -1
  185. package/dist/public/assets/WorkbenchLayout-rwQib5In.js +0 -3
  186. package/dist/public/assets/WorkbenchShellRoute-Cerk5uK7.js +0 -1
  187. package/dist/public/assets/WorkspaceDebugDetailPage-Bcq8s-Ma.js +0 -1
  188. package/dist/public/assets/WorkspaceDetailPage-DNAa8pKr.js +0 -1
  189. package/dist/public/assets/WorkspaceHomePage-BoiLuACV.js +0 -1
  190. package/dist/public/assets/client-runtime-manager-CRQ-F5d2.js +0 -1
  191. package/dist/public/assets/file-tree-icon-Dp_xhVfD.js +0 -31
  192. package/dist/public/assets/index-C2G8Gmf1.js +0 -42
  193. package/dist/public/assets/index-CpPTUeA3.css +0 -1
  194. package/dist/public/assets/session-runtime-machine-Dq3pW-UF.js +0 -17
  195. package/dist/public/assets/window-BWqRixxq.js +0 -1
  196. /package/dist/public/assets/{styles-CSUx5LGe.js → styles-DRVvx_kv.js} +0 -0
@@ -0,0 +1 @@
1
+ import{D as c}from"./index-BZLcEHW3.js";const l=350,u=2,s={loopback:0,lan:1,tailscale:2,custom:3};async function m(e){var t;const r=e.requestedBaseUrl??e.host.baseUrl;if(!d(e.host,r,e.platform))return r;const n=f(((t=e.host.relayTunnel)==null?void 0:t.candidateEndpoints)??[],r);for(const o of n)if(await y(o.url,e.fetchFn))return o.url;return r}function d(e,r,n){var o;if(n==="web")return!1;const t=e.relayTunnel;return!(t!=null&&t.enabled)||!((o=t.candidateEndpoints)!=null&&o.length)?!1:T(r,e)}function f(e,r){return e.filter(n=>n.kind!=="relay"&&n.url!==r).sort((n,t)=>{if(n.priority!==t.priority)return n.priority-t.priority;const o=s[n.kind],i=s[t.kind];return o!==i?o-i:n.url.localeCompare(t.url)}).slice(0,u)}async function y(e,r=fetch){const n=c("/api/public/bootstrap-status",e),t=typeof AbortController=="function"?new AbortController:null,o=globalThis.setTimeout(()=>{t==null||t.abort()},l);try{const i=await r(n,{method:"GET",signal:t==null?void 0:t.signal});if(!i.ok)return!1;const a=await p(i);return typeof(a==null?void 0:a.initialized)=="boolean"}catch{return!1}finally{globalThis.clearTimeout(o)}}function T(e,r){var o;const n=r.relayTunnel;if(!(n!=null&&n.tunnelDomain))return!1;const t=(o=n.candidateEndpoints)==null?void 0:o.find(i=>i.url===e);if(t)return t.kind==="relay";try{return new URL(e).hostname.toLowerCase()===n.tunnelDomain.trim().toLowerCase()}catch{return!1}}async function p(e){const r=await e.text();if(!r.trim())return null;try{return JSON.parse(r)}catch{return null}}export{m as resolveLoginBaseUrlWithDirectCandidates};
@@ -1 +1 @@
1
- import{B as e}from"./index-C2G8Gmf1.js";const r="/api/preferences/profile";async function f(){return e.request(r)}async function o(t){return e.request(r,{method:"PUT",body:JSON.stringify(t)})}export{f as fetchPreferencesProfile,o as updatePreferencesProfile};
1
+ import{C as e}from"./index-BZLcEHW3.js";const r="/api/preferences/profile";async function f(){return e.request(r)}async function o(t){return e.request(r,{method:"PUT",body:JSON.stringify(t)})}export{f as fetchPreferencesProfile,o as updatePreferencesProfile};
@@ -0,0 +1 @@
1
+ import{k as A,n as m}from"./index-BZLcEHW3.js";function S(r,t,n){var y;const a=p(t.tunnelDomain),l=m(t.controlBaseUrl),o=w(a,l),s=new Date().toISOString(),e=B(r.hosts,o,t.bindingId??null),c=z(n==null?void 0:n.displayName)??(e==null?void 0:e.name)??a,h={endpointId:`relay-entry:${o}`,kind:"relay",url:o,priority:0,expiresAt:null,source:"user_saved"},E=f(t.candidateEndpoints).filter(d=>d.url!==o),I=(((y=e==null?void 0:e.relayTunnel)==null?void 0:y.candidateEndpoints)??[]).filter(d=>d.url!==o),u={id:(e==null?void 0:e.id)??D(t.bindingId??null,a),name:c,baseUrl:o,kind:"remote",createdAt:(e==null?void 0:e.createdAt)??s,updatedAt:s,lastConnectedAt:(e==null?void 0:e.lastConnectedAt)??null,lastUserId:(e==null?void 0:e.lastUserId)??null,lastUsername:(e==null?void 0:e.lastUsername)??null,relayTunnel:{provider:"codingns_relay",enabled:!0,tunnelDomain:a,controlBaseUrl:l,bindingId:i(t.bindingId??null),hostFingerprint:i(t.hostFingerprint??null),candidateEndpoints:U([h,...E,...I])}},C=e?r.hosts.map(d=>d.id===e.id?u:d):[u,...r.hosts];return{activeHostId:(n==null?void 0:n.activate)===!1?r.activeHostId:u.id,activeDiscoveredHostId:(n==null?void 0:n.activate)===!1?r.activeDiscoveredHostId:null,hosts:C}}async function F(r,t=fetch){var l;const n=A(r);if(!n)return null;const a={tunnelDomain:n.tunnelDomain,controlBaseUrl:n.controlBaseUrl};try{const o=await t(new URL(`/api/v1/tunnels/${encodeURIComponent(n.tunnelDomain)}`,b(n.controlBaseUrl)).toString(),{method:"GET"});if(!o.ok)return a;const e=(await o.json()).binding;return{tunnelDomain:p((e==null?void 0:e.tunnelDomain)??n.tunnelDomain),controlBaseUrl:m((e==null?void 0:e.controlBaseUrl)??n.controlBaseUrl),bindingId:i((e==null?void 0:e.bindingId)??null),hostFingerprint:i((e==null?void 0:e.hostFingerprint)??null),candidateEndpoints:f((l=e==null?void 0:e.runtime)==null?void 0:l.candidateEndpoints)}}catch{return a}}function B(r,t,n){if(n){const a=r.find(l=>{var o;return((o=l.relayTunnel)==null?void 0:o.bindingId)===n})??null;if(a)return a}return r.find(a=>a.baseUrl===t)??null}function D(r,t){return r?`relay-entry:${r}`:`relay-entry:${t}`}function p(r){const t=r.trim().toLowerCase();if(!t||!/^[a-z0-9-]+(\.[a-z0-9-]+)+$/i.test(t))throw new Error("隧道域名无效");return t}function i(r){const t=r==null?void 0:r.trim();return t||null}function z(r){const t=r==null?void 0:r.trim();return t||null}function w(r,t){const n=new URL(t);return n.hostname=r,n.username="",n.password="",n.pathname="",n.search="",n.hash="",m(n.toString())}function b(r){return r.endsWith("/")?r:`${r}/`}function f(r){if(!Array.isArray(r))return[];const t=[];for(const n of r){if(typeof n!="object"||n===null||Array.isArray(n))continue;const a=i(n.endpointId),l=i(n.kind),o=i(n.url),s=n.priority,e=i(n.expiresAt),c=i(n.source);!a||!o||!Number.isFinite(s)||!R(l)||!k(c)||t.push({endpointId:a,kind:l,url:o,priority:Number(s),expiresAt:e,source:c})}return U(t)}function U(r){const t=new Map;for(const n of r)t.has(n.url)||t.set(n.url,n);return Array.from(t.values()).sort((n,a)=>n.priority!==a.priority?n.priority-a.priority:n.url.localeCompare(a.url))}function R(r){return r==="relay"||r==="lan"||r==="loopback"||r==="tailscale"||r==="custom"}function k(r){return r==="host_reported"||r==="desktop_scan"||r==="user_saved"}export{S as b,F as r};
@@ -0,0 +1,17 @@
1
+ var Pr=Object.defineProperty;var Ir=(e,t,n)=>t in e?Pr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var se=(e,t,n)=>Ir(e,typeof t!="symbol"?t+"":t,n);import{t as a,j as s,b as d,u as Er,G as Gt,a as Wn,m as Fn,H as _r,J as Br,E as Or}from"./index-BZLcEHW3.js";import{e as yt,f as kt,g as fn}from"./App-BZvapsi8.js";import{e as qr,T as Wr,U as Fr,V as Dr,n as Qt,a as vs,N as Ur,W as zr,X as $r,Y as Hr,Z as Kr,o as Vr,p as Gr,M as Qr,i as Zr,j as Dn,_ as Jr,$ as Yr,a0 as Xr}from"./MobileSheet-Ckug8hTb.js";import{W as Et,D as xs}from"./WorkbenchModal-0tPIIhca.js";import{u as bs,ay as ei,am as ti,V as ot,X as ni}from"./WorkbenchLayout-DGm8Tc5M.js";import{M as si,r as ri}from"./file-tree-icon-Db5LXC8h.js";function Zt(e,t){if(!e)return{allowed:!1,hidden:!1,reason:a("conversation.capabilityDenied")};switch(t){case"send_message":return e.canSendMessage===!1?{allowed:!1,hidden:!1,reason:a("conversation.capabilitySendDisabled")}:{allowed:!0,hidden:!1,reason:null};case"attachments":return e.supportsAttachments?{allowed:!0,hidden:!1,reason:null}:{allowed:!1,hidden:!1,reason:a("conversation.capabilityAttachmentDisabled")};case"interrupt":return e.supportsInterrupt?{allowed:!0,hidden:!1,reason:null}:{allowed:!1,hidden:!1,reason:a("conversation.capabilityInterruptDisabled")};default:return{allowed:!1,hidden:!1,reason:a("conversation.capabilityDenied")}}}const ii=new Set(["updateplan"]),ys=new Set(["todowrite"]),on=new Set(["todoread"]),ks=new Set(["taskcreate","taskupdate","taskget","tasklist","taskdelete","taskremove"]);function ai(e,t){const n=li(e,t);return n||ci(e,t)}function Cs(e){return e.reduce((t,n)=>(t[n.status]+=1,t),{pending:0,in_progress:0,completed:0,failed:0,cancelled:0})}function oi(e,t,n){if(!e)return null;if(ln(e.name)){const o=Je(e);if(!o||!Ut(o.value))return null;const u=js(o.value,n);return!u||u.items.length===0?null:{provider:t,source:"plan",explanation:u.explanation,items:u.items,updatedAt:n}}const r=Dt(e.name);if(!ys.has(r)&&!on.has(r)&&!ks.has(r))return null;const i=Je(e,(on.has(r),"prefer-output"));if(!i)return null;if(r==="taskdelete"||r==="taskremove"){const o=ws(i.value);return o.length>0?{provider:t,source:"todo",explanation:null,items:o.map((u,p)=>({id:u,title:`Task ${p+1}`,status:"cancelled",detail:u,updatedAt:n})),updatedAt:n}:null}const l=ct(i.value,n);return l.length===0?null:{provider:t,source:ln(e.name)?"plan":"todo",explanation:null,items:l,updatedAt:n}}function li(e,t){let n=null;for(const r of e){const i=r.toolCall;if(!i||Dt(i.name)===""||!ln(i.name))continue;const l=Je(i);if(!l||typeof l.value!="object"||l.value===null)continue;const o=js(l.value,r.timestamp);!o||o.items.length===0||(n={provider:t,source:"plan",explanation:o.explanation,items:o.items,updatedAt:r.timestamp})}return n}function ci(e,t){const n=new Map;let r=null;for(const l of e){const o=l.toolCall;if(!o)continue;const u=Dt(o.name);if(ys.has(u)){const m=Je(o),g=m?ct(m.value,l.timestamp):[];g.length>0&&(Jt(n,g),r=l.timestamp);continue}if(on.has(u)){const m=Je(o,"prefer-output"),g=m?ct(m.value,l.timestamp):[];g.length>0&&(Jt(n,g),r=l.timestamp);continue}if(!ks.has(u))continue;const p=Je(o,"prefer-output");if(!p)continue;if(u==="tasklist"||u==="taskget"){const m=ct(p.value,l.timestamp);m.length>0&&(Jt(n,m),r=l.timestamp);continue}if(u==="taskdelete"||u==="taskremove"){const m=ws(p.value);if(m.length>0){for(const g of m)n.delete(g);r=l.timestamp}continue}const y=ct(p.value,l.timestamp);if(y.length!==0){for(const m of y)di(n,m);r=l.timestamp}}const i=Array.from(n.values()).sort((l,o)=>l.updatedAt.localeCompare(o.updatedAt)).map(l=>({...l}));return i.length===0||!r?null:{provider:t,source:"todo",explanation:null,items:i,updatedAt:r}}function ln(e){return ii.has(Dt(e))}function js(e,t){const n=Array.isArray(e.plan)?e.plan:null;if(!n||n.length===0)return null;const r=n.map((i,l)=>Ns(i,{fallbackIdPrefix:"plan",fallbackTitle:`Step ${l+1}`,fallbackStatus:"pending",updatedAt:t})).filter(i=>i!==null);return r.length===0?null:{items:r,explanation:W(e.explanation)}}function Je(e,t="prefer-input"){const n=t==="prefer-output"?[{text:e.output,source:"output"},{text:e.input,source:"input"}]:[{text:e.input,source:"input"},{text:e.output,source:"output"}];for(const r of n){const i=ui(r.text);if(i!==null)return{value:i,source:r.source}}return null}function ui(e){const t=(e==null?void 0:e.trim())??"";if(!t)return null;const n=At(t);if(n!==null)return n;const r=t.match(/```(?:json)?\s*([\s\S]+?)```/i);if(r!=null&&r[1]){const p=At(r[1].trim());if(p!==null)return p}const i=t.indexOf("{"),l=t.lastIndexOf("}");if(i>=0&&l>i){const p=At(t.slice(i,l+1));if(p!==null)return p}const o=t.indexOf("["),u=t.lastIndexOf("]");return o>=0&&u>o?At(t.slice(o,u+1)):null}function At(e){try{return JSON.parse(e)}catch{return null}}function ct(e,t){return dt(e).map((r,i)=>Ns(r,{fallbackIdPrefix:"task",fallbackTitle:`Task ${i+1}`,fallbackStatus:"pending",updatedAt:t})).filter(r=>r!==null)}function dt(e){if(Array.isArray(e))return e.flatMap(n=>dt(n));if(!Ut(e))return[];if(hi(e))return[e];const t=["tasks","todos","items","entries","results","data"];for(const n of t){if(!(n in e))continue;const r=dt(e[n]);if(r.length>0)return r}return Object.values(e).flatMap(n=>dt(n))}function ws(e){const n=dt(e).map(i=>cn(i)).filter(i=>i!==null);if(n.length>0)return n;if(!Ut(e))return[];const r=cn(e);return r?[r]:[]}function Ns(e,t){if(!Ut(e))return null;const n=W(e.step)??W(e.title)??W(e.content)??W(e.task)??W(e.text)??W(e.name)??W(e.subject)??W(e.description)??t.fallbackTitle,r=cn(e)??fi(t.fallbackIdPrefix,n),i=pi(e,n);return{id:r,title:n,status:mi(e.status,t.fallbackStatus),detail:i,updatedAt:t.updatedAt}}function di(e,t){const n=e.get(t.id);if(!n){e.set(t.id,{...t});return}e.set(t.id,{id:n.id,title:t.title||n.title,status:t.status,detail:t.detail??n.detail,updatedAt:t.updatedAt})}function Jt(e,t){e.clear();for(const n of t)e.set(n.id,{...n})}function mi(e,t){var r;const n=(r=W(e))==null?void 0:r.toLowerCase().replace(/[\s-]+/g,"_");return n?["pending","todo","open","queued","not_started","created"].includes(n)?"pending":["in_progress","progress","active","doing","running","started"].includes(n)?"in_progress":["completed","complete","done","success","succeeded","finished","closed"].includes(n)?"completed":["failed","error","errored"].includes(n)?"failed":["cancelled","canceled","aborted","skipped"].includes(n)?"cancelled":t:t}function pi(e,t){const n=[W(e.detail),W(e.details),W(e.description),W(e.reason),W(e.summary),W(e.note),W(e.priority)].filter(r=>r!==null);for(const r of n)if(r!==t)return r;return null}function cn(e){return W(e.id)??W(e.taskId)??W(e.task_id)??W(e.uuid)??W(e.key)}function fi(e,t){return`${e}:${t.trim().toLowerCase()}`}function hi(e){return[e.step,e.title,e.content,e.task,e.text,e.subject,e.name,e.description].some(t=>W(t)!==null)}function Dt(e){return e.trim().toLowerCase().replace(/[\s_.-]+/g,"")}function Ut(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function W(e){if(typeof e!="string")return null;const t=e.trim();return t||null}function gi(){return s.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",className:"conversation-action-icon",children:[s.jsx("rect",{x:"7",y:"5",width:"9",height:"11",rx:"2.5"}),s.jsx("path",{d:"M5.5 12.5H5A2 2 0 0 1 3 10.5V5a2 2 0 0 1 2-2h5.5"})]})}function vi(){return s.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",className:"conversation-action-icon",children:[s.jsx("circle",{cx:"6",cy:"5",r:"2.25"}),s.jsx("circle",{cx:"14",cy:"6",r:"2.25"}),s.jsx("circle",{cx:"14",cy:"14",r:"2.25"}),s.jsx("path",{d:"M8.4 5.7h2.2a2.7 2.7 0 0 1 2.7 2.7v1.2"}),s.jsx("path",{d:"M8.1 5.9l4.1 6.2"})]})}function kl(){return s.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",className:"conversation-action-icon",children:[s.jsx("path",{d:"M10 2.8l1.6 3.4 3.8.5-2.8 2.6.7 3.9-3.3-1.8-3.3 1.8.7-3.9-2.8-2.6 3.8-.5L10 2.8z"}),s.jsx("path",{d:"M15.8 13.3l.7 1.5 1.7.2-1.2 1.1.3 1.8-1.5-.8-1.5.8.3-1.8-1.2-1.1 1.7-.2.7-1.5z"})]})}function Cl(){return s.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",className:"conversation-action-icon",children:[s.jsx("circle",{cx:"6",cy:"5",r:"2.2"}),s.jsx("circle",{cx:"14",cy:"5",r:"2.2"}),s.jsx("circle",{cx:"10",cy:"14",r:"2.2"}),s.jsx("path",{d:"M8.2 5h3.6"}),s.jsx("path",{d:"M10 7.2v4.6"}),s.jsx("path",{d:"M7.3 6.8l1.7 4"}),s.jsx("path",{d:"M12.7 6.8l-1.7 4"})]})}function jl(){return s.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 20 20",fill:"currentColor",className:"conversation-action-icon",children:[s.jsx("circle",{cx:"4.5",cy:"10",r:"1.5"}),s.jsx("circle",{cx:"10",cy:"10",r:"1.5"}),s.jsx("circle",{cx:"15.5",cy:"10",r:"1.5"})]})}function xi(){return s.jsxs("svg",{"aria-hidden":"true",viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round",className:"conversation-action-icon",children:[s.jsx("path",{d:"M4.5 5.5h1.2"}),s.jsx("path",{d:"M8 5.5h7.5"}),s.jsx("path",{d:"M4.5 10h1.2"}),s.jsx("path",{d:"M8 10h7.5"}),s.jsx("path",{d:"M4.5 14.5h1.2"}),s.jsx("path",{d:"M8 14.5h7.5"}),s.jsx("path",{d:"M5.1 5.5l.5.5 1-1"}),s.jsx("circle",{cx:"5.1",cy:"10",r:".8",fill:"currentColor",stroke:"none"}),s.jsx("path",{d:"M5.1 14.5l.5.5 1-1"})]})}const Un={in_progress:0,failed:1,pending:2,completed:3,cancelled:4};function bi({provider:e,messages:t,variant:n="header"}){const[r,i]=d.useState(!1),l=d.useMemo(()=>ai(t,e),[t,e]);if(!l||l.items.length===0)return null;const o=Cs(l.items),u=o.in_progress||o.pending,p=u>0?u:l.items.length,y=[...l.items].sort((g,h)=>{const C=Un[g.status]-Un[h.status];return C!==0?C:g.updatedAt.localeCompare(h.updatedAt)}),m=n==="composer"?"conversation-task-progress-button composer-task-progress-button":"conversation-header-ai-button conversation-task-progress-button";return s.jsxs(s.Fragment,{children:[s.jsxs("button",{type:"button",className:m,"data-variant":n,"aria-label":a("conversation.taskProgressButton",{count:l.items.length}),title:a("conversation.taskProgressButton",{count:l.items.length}),onClick:()=>{i(!0)},children:[s.jsx("span",{className:"conversation-header-ai-button-label","aria-hidden":"true",children:s.jsx(xi,{})}),s.jsx("span",{className:"conversation-task-progress-badge",children:p})]}),s.jsx(Et,{open:r,title:a("conversation.taskProgressModalTitle"),description:a("conversation.taskProgressModalDescription",{count:l.items.length}),className:"conversation-task-progress-modal",onClose:()=>{i(!1)},children:s.jsxs("div",{className:"conversation-task-progress-modal-body",children:[s.jsxs("div",{className:"conversation-task-progress-summary",children:[s.jsx(lt,{label:a("conversation.taskProgressSummaryTotal"),value:l.items.length}),s.jsx(lt,{label:a("conversation.taskProgressStatusInProgress"),value:o.in_progress}),s.jsx(lt,{label:a("conversation.taskProgressStatusPending"),value:o.pending}),s.jsx(lt,{label:a("conversation.taskProgressStatusCompleted"),value:o.completed}),o.failed>0?s.jsx(lt,{label:a("conversation.taskProgressStatusFailed"),value:o.failed}):null]}),l.explanation?s.jsxs("div",{className:"conversation-task-progress-explanation",children:[s.jsx("strong",{children:a("conversation.taskProgressExplanationTitle")}),s.jsx("p",{children:l.explanation})]}):null,s.jsx("ol",{className:"conversation-task-progress-list",children:y.map(g=>s.jsxs("li",{className:"conversation-task-progress-item","data-status":g.status,children:[s.jsx("span",{className:"conversation-task-progress-item-indicator","data-status":g.status,"aria-hidden":"true"}),s.jsxs("div",{className:"conversation-task-progress-item-body",children:[s.jsxs("div",{className:"conversation-task-progress-item-header",children:[s.jsx("strong",{children:g.title}),s.jsx("span",{className:"conversation-task-progress-item-status",children:yi(g.status)})]}),g.detail?s.jsx("p",{className:"conversation-task-progress-item-detail",children:g.detail}):null]})]},g.id))})]})})]})}function lt({label:e,value:t}){return s.jsxs("div",{className:"conversation-task-progress-summary-card",children:[s.jsx("span",{children:e}),s.jsx("strong",{children:t})]})}function yi(e){switch(e){case"in_progress":return a("conversation.taskProgressStatusInProgress");case"completed":return a("conversation.taskProgressStatusCompleted");case"failed":return a("conversation.taskProgressStatusFailed");case"cancelled":return a("conversation.taskProgressStatusCancelled");case"pending":default:return a("conversation.taskProgressStatusPending")}}const ki="codingns.conversation.composer-draft:",Ci=1,ji=[{id:"builtin-stage-and-summarize",text:"请将本次会话变更的所有代码提交到git暂存区,然后总结一条中文的提交信息"},{id:"builtin-review-module",text:"分析本项目 模块的代码实现,并分析存在的问题"},{id:"builtin-group-commits",text:"分析当前项目中的未提交文件,按照功能模块进行分类提交,提交信息格式请参考我最近的提交记录"}];function hn(){return typeof window<"u"&&typeof window.localStorage<"u"}function wi(e){if(!e||typeof e!="object")return null;const t="id"in e?e.id:null,n="fileName"in e?e.fileName:null,r="mimeType"in e?e.mimeType:null,i="fileSize"in e?e.fileSize:null,l="lastModified"in e?e.lastModified:null,o="contentBase64"in e?e.contentBase64:null;if(typeof t!="string"||typeof n!="string"||typeof r!="string"||typeof i!="number"||typeof l!="number"||typeof o!="string")return null;const u=t.trim(),p=n.trim(),y=r.trim(),m=o.trim();return!u||!p||!y||i<0||l<0||!m?null:{id:u,fileName:p,mimeType:y,fileSize:i,lastModified:l,contentBase64:m}}function Ni(e){if(!e||typeof e!="object")return null;const t="content"in e?e.content:null,n="attachments"in e?e.attachments:null;if(typeof t!="string"||!Array.isArray(n))return null;const r=n.map(i=>wi(i)).filter(i=>i!==null);return r.length!==n.length||t.length===0&&r.length===0?null:{content:t,attachments:r}}function mt(e){return`${ki}${e}`}function Si(e){var t,n;return{id:((n=(t=globalThis.crypto)==null?void 0:t.randomUUID)==null?void 0:n.call(t))??`phrase-${Date.now()}-${Math.random().toString(16).slice(2)}`,text:e.trim()}}function Ti(e){if(!hn())return null;const t=e.trim();if(!t)return null;const n=window.localStorage.getItem(mt(t));if(!n)return null;try{const r=JSON.parse(n),i=r&&typeof r=="object"&&"draft"in r&&r.draft&&typeof r.draft=="object"?r.draft:r,l=Ni(i);return l||(window.localStorage.removeItem(mt(t)),null)}catch{return window.localStorage.removeItem(mt(t)),null}}function Ri(e,t){if(!hn())return!1;const n=e.trim();if(!n)return!1;if(t.content.length===0&&t.attachments.length===0)return Ss(n),!0;try{return window.localStorage.setItem(mt(n),JSON.stringify({schemaVersion:Ci,draft:t})),!0}catch{return!1}}function Ss(e){if(!hn())return;const t=e.trim();t&&window.localStorage.removeItem(mt(t))}const zn="workbench:focus-composer",pt="provider-default",Ts=160,Mi=220,Ai=140,Li=84,$n=["codex","claude-code","opencode","gemini","kimi"],Pi=new Set(["codex","claude-code","opencode"]),Ii=new Set(["codex","claude-code","opencode"]),Hn={position:"absolute",width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",border:0};let Kn=null;function Ei(e,t){if(typeof document>"u")return t.length*8;Kn??(Kn=document.createElement("canvas"));const n=Kn.getContext("2d");if(!n)return t.length*8;const r=window.getComputedStyle(e),i=r.fontStyle||"normal",l=r.fontWeight||"600",o=r.fontSize||"13px",u=r.fontFamily||"system-ui";return n.font=`${i} ${l} ${o} ${u}`,n.measureText(t).width}function _i({labels:e,triggerWidth:t,maxWidth:n,preferredWidth:r,measureText:i}){const l=e.reduce((o,u)=>Math.max(o,Math.ceil(i(u)+Li)),0);return Math.min(n,Math.max(t,Ts,r,l))}function Bi(e){return[{id:pt,name:a("conversation.modelUseCliDefault"),provider:e,usesProviderDefault:!0}]}function Vn(e){return Bi(e)}function Gn(e){return e.usesProviderDefault===!0||e.id===pt}function Oi(){var e,t;return((t=(e=globalThis.crypto)==null?void 0:e.randomUUID)==null?void 0:t.call(e))??`${Date.now()}-${Math.random().toString(16).slice(2)}`}function Qn(e){if(e){e.value="";try{const t=e.showPicker;if(typeof t=="function"){t.call(e);return}}catch{}e.click()}}function qi(e,t,n,r){const i=globalThis.atob(n),l=Uint8Array.from(i,o=>o.charCodeAt(0));return new File([l],e,{type:t,lastModified:r})}function Wi(e){return e.trim().toLowerCase().startsWith("image/")}function ft(e){const t=e.type.trim().toLowerCase();return t.length>0?t:"application/octet-stream"}function Rs(e){return Wi(ft(e))?"image":"file"}function Ms(e,t=Oi()){const n=Rs(e);return{id:t,file:e,kind:n,previewUrl:n==="image"?URL.createObjectURL(e):null}}function Fi(e){const t=qi(e.fileName,e.mimeType,e.contentBase64,e.lastModified);return Ms(t,e.id)}function Di(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function Ui(e){const t=e.trim().replace(/\s+/g," ");return t.length===0?a("conversation.forkDraftEmpty"):t.length>140?`${t.slice(0,140)}…`:t}function zi(e,t){return t===e?Ii.has(t)?null:a("conversation.forkProviderNativeUnsupported"):Pi.has(t)?null:a("conversation.forkProviderReconstructedUnsupported")}function As(e){return(e==null?void 0:e.canStartSession)===!1}function $i(e){return As(e)?(e==null?void 0:e.limitations[0])??a("conversation.capabilityDenied"):null}function Hi(e,t){return{id:t,kind:Rs(e),fileName:e.name,mimeType:ft(e),fileSize:e.size}}function Zn(e){return new Promise((t,n)=>{const r=new FileReader;r.onerror=()=>{n(r.error??new Error("FILE_READ_FAILED"))},r.onload=()=>{const i=typeof r.result=="string"?r.result:"",l=i.includes(",")?i.split(",").at(-1)??"":i;t(l)},r.readAsDataURL(e)})}function Ki(e){e.forEach(t=>{t.previewUrl&&URL.revokeObjectURL(t.previewUrl)})}function Vi(e,t){const n=new Set(e.map(i=>`${i.file.name}:${i.file.size}:${i.file.lastModified}`)),r=[...e];return t.forEach(i=>{const l=`${i.name}:${i.size}:${i.lastModified}`;n.has(l)||(n.add(l),r.push(Ms(i)))}),r}function Gi(e,t,n){const r=e.nativeEvent;return r.isComposing||r.keyCode===229||t||n}function wl({capabilities:e,placeholder:t,draftStorageId:n,initialModel:r=null,forkDraft:i=null,onClearForkDraft:l,onForkDraftChange:o,panelRef:u,portalContainer:p=null,hasActiveRun:y=null,canInterrupt:m=null,contextUsage:g=null,taskProvider:h=null,taskMessages:C=[],hasPendingQueuedMessages:b=!1,isSubmitting:v,isRunning:R=!1,onInterrupt:w,onQueueSend:N,onSend:F}){const M=yt(),B=d.useId(),O=d.useId(),[q,E]=d.useState(""),[P,Y]=d.useState(""),[H,X]=d.useState("medium"),[D,ee]=d.useState([]),[Oe,ae]=d.useState(!1),[qe,pe]=d.useState(!1),[G,ce]=d.useState(ji),[oe,je]=d.useState(!1),[Ct,fe]=d.useState(!1),[We,jt]=d.useState(""),[we,he]=d.useState(!1),[ge,te]=d.useState(!1),[et,tt]=d.useState(!1),[nt,ve]=d.useState(!1),[st,Q]=d.useState(null),[Fe,Ne]=d.useState(!1),[Se,ue]=d.useState({}),[xe,De]=d.useState(null),Te=d.useRef(null),rt=d.useRef(null),wt=d.useRef(null),Ue=d.useRef(!1),ze=d.useRef(!1),f=d.useRef(!1),S=d.useRef(null),_=d.useRef(new Set),Z=d.useRef(new Map),K=d.useRef(0),$e=d.useRef(null),{showToast:Re}=kt(),Me=qr(),He=d.useCallback(()=>{S.current!==null&&(globalThis.clearTimeout(S.current),S.current=null),f.current=!1},[]);d.useEffect(()=>He,[He]);const V=Wr(e),de=Er(c=>Gt(V)?c.profile.providers[V]:null),be=(de==null?void 0:de.defaultModel)??null,it=(de==null?void 0:de.defaultReasoningLevel)??null,zt=d.useMemo(()=>Zt(e,"send_message"),[e]),Cn=d.useMemo(()=>Zt(e,"interrupt"),[e]),ne=d.useMemo(()=>Zt(e,"attachments"),[e]),ie=d.useMemo(()=>{var x;const c=(x=e==null?void 0:e.modelOptions)==null?void 0:x.map(k=>{var j;return{...k,provider:V,supportedReasoningEfforts:(j=k.supportedReasoningEfforts)==null?void 0:j.filter(A=>A==="low"||A==="medium"||A==="high"||A==="xhigh")}});return c!=null&&c.length?c:Vn(V)},[e==null?void 0:e.modelOptions,V]),me=d.useMemo(()=>ie.find(c=>c.id===P)??null,[ie,P]),Nt=Fr(e),rr=Dr(e),$t=d.useMemo(()=>[{value:"low",label:a("conversation.reasoningLow")},{value:"medium",label:a("conversation.reasoningMedium")},{value:"high",label:a("conversation.reasoningHigh")},{value:"xhigh",label:a("conversation.reasoningMaximum")}],[]),le=d.useMemo(()=>{if(!Nt)return[];const c=me==null?void 0:me.supportedReasoningEfforts;return!c||c.length===0?$t:$t.filter(x=>c.includes(x.value))},[Nt,$t,me==null?void 0:me.supportedReasoningEfforts]),ir=d.useMemo(()=>ie.map(c=>({value:c.id,label:Gn(c)?a("conversation.modelUseCliDefault"):c.name})),[ie]),ar=d.useMemo(()=>le.map(c=>({value:c.value,label:c.label})),[le]),or=d.useMemo(()=>[{command:"/plan",label:a("conversation.slashCommandPlan")},{command:"/review",label:a("conversation.slashCommandReview")},{command:"/explain",label:a("conversation.slashCommandExplain")}],[]),jn=(e==null?void 0:e.inRunInputMode)??"none",ye=!!i,lr=(i==null?void 0:i.targetProvider)??null,St=!!i&&(e==null?void 0:e.provider)===lr,ke=d.useMemo(()=>i?St?e:st??Qt(i.targetProvider):null,[e,st,i,St]),Ke=d.useMemo(()=>{var x;if(!i)return[];const c=(x=ke==null?void 0:ke.modelOptions)==null?void 0:x.map(k=>{var j;return{...k,provider:i.targetProvider,supportedReasoningEfforts:(j=k.supportedReasoningEfforts)==null?void 0:j.filter(A=>A==="low"||A==="medium"||A==="high"||A==="xhigh")}});return c!=null&&c.length?c:Vn(i.targetProvider)},[ke==null?void 0:ke.modelOptions,i]),cr=d.useMemo(()=>Ke.map(c=>({value:c.id,label:Gn(c)?a("conversation.modelUseCliDefault"):c.name})),[Ke]),ur=d.useMemo(()=>!i||!i.targetModel?pt:Ke.some(c=>c.id===i.targetModel)?i.targetModel:pt,[Ke,i]),Ae=d.useMemo(()=>i?$n.filter(c=>zi(i.sourceProvider,c)!==null?!1:!As(Se[c]??null)):[],[i,Se]),wn=d.useMemo(()=>i?Ae.length>0?Ae:[i.targetProvider]:[],[i,Ae]),dr=d.useMemo(()=>wn.map(c=>({value:c,label:vs(c,"full")})),[wn]),Tt=d.useMemo(()=>i?$i(Se[i.targetProvider]??ke??null):null,[ke,i,Se]),Rt=y??null,Le=R||Rt===!0,mr=Le&&jn==="streaming_guidance"&&Rt===!1&&!Ur(e),Nn=!ye&&Le&&jn==="streaming_guidance"&&!mr,Ht=!ye&&Le&&typeof N=="function"&&zr(e,Rt),J=!ye&&Le&&!Nn&&!Ht,Kt=ye&&!!Tt,Sn=q.trim().length>0||D.length>0,Tn=m===!1&&Rt===!0?Cn.allowed:m??Cn.allowed,Vt=Le&&Tn&&!!w&&!et,pr=!Sn&&(nt||v||Le||b),Rn=Vt?a("conversation.capabilityInterrupt"):a("conversation.runtimeRunning"),Mn=Le?Ht?a("conversation.queueGuidanceButton"):Nn?a("conversation.sendGuidanceButton"):a("conversation.sendButton"):a("conversation.sendButton"),fr=d.useCallback(c=>{Y(c),Gt(V)&&Wn({providers:{[V]:{defaultModel:c}}}).catch(()=>{})},[V]),hr=d.useCallback(c=>{X(c),Gt(V)&&Wn({providers:{[V]:{defaultReasoningLevel:c}}}).catch(()=>{})},[V]),Mt=d.useCallback(c=>{_.current.forEach(x=>{URL.revokeObjectURL(x)}),_.current.clear(),c.forEach(x=>{x.previewUrl&&_.current.add(x.previewUrl)}),ee(c)},[]),at=d.useCallback(c=>{c.length!==0&&ee(x=>{const k=Vi(x,c);return k.forEach(j=>{j.previewUrl&&_.current.add(j.previewUrl)}),k})},[]),gr=d.useCallback(c=>{Z.current.delete(c),ee(x=>{const k=x.find(j=>j.id===c);return k!=null&&k.previewUrl&&(_.current.delete(k.previewUrl),URL.revokeObjectURL(k.previewUrl)),x.filter(j=>j.id!==c)})},[]),An=d.useCallback(c=>{const x=Array.from(c.target.files??[]);x.length>0&&at(x),c.target.value=""},[at]),vr=d.useCallback(c=>{var k;M.isMobile||!ne.allowed||J||!((((k=c.dataTransfer.files)==null?void 0:k.length)??0)>0||Array.from(c.dataTransfer.items??[]).some(j=>j.kind==="file"))||(c.preventDefault(),c.dataTransfer.dropEffect="copy",qe||pe(!0),te(!1))},[ne.allowed,qe,J,M.isMobile]),xr=d.useCallback(c=>{const x=c.relatedTarget;x instanceof Node&&c.currentTarget.contains(x)||pe(!1)},[]),br=d.useCallback(c=>{if(M.isMobile||!ne.allowed||J)return;const x=Array.from(c.dataTransfer.files??[]);x.length!==0&&(c.preventDefault(),pe(!1),at(x))},[ne.allowed,J,at,M.isMobile]),Ln=d.useCallback(c=>{if(!ne.allowed||J)return;const x=c==="camera"?wt.current:rt.current;Qn(x),ae(!1)},[ne.allowed,J]),yr=d.useCallback(()=>{if(!(!ne.allowed||J)){if(te(!1),M.isNativeMobile){Me.trigger("selection"),ae(!0);return}Qn(rt.current)}},[ne.allowed,Me,J,M.isNativeMobile]),kr=d.useCallback(()=>{te(c=>!c)},[]),Cr=d.useCallback(c=>{var x;E(k=>k.trimStart().startsWith(c)?k:k.trim()?`${c} ${k.trim()}`:`${c} `),te(!1),(x=Te.current)==null||x.focus()},[]),Ve=d.useCallback(async c=>{const x=G;K.current+=1,ce(c),he(!0);try{const k=await $r(c.map(j=>({id:j.id,text:j.text})));return ce(k.items.map(j=>({id:j.id,text:j.text}))),!0}catch(k){return ce(x),Re({title:k instanceof Error?k.message:a("conversation.quickPhraseSaveFailed"),tone:"error"}),!1}finally{he(!1)}},[G,Re]),jr=d.useCallback(async()=>{const c=We.trim();!c||!await Ve([...G,Si(c)])||(jt(""),fe(!1))},[Ve,We,G]),wr=d.useCallback(c=>{Ve(G.filter(x=>x.id!==c))},[Ve,G]),Pn=d.useCallback((c,x)=>{const k=G.findIndex(z=>z.id===c);if(k<0)return;const j=k+x;if(j<0||j>=G.length)return;const A=[...G],[U]=A.splice(k,1);A.splice(j,0,U),Ve(A)},[Ve,G]),Nr=d.useCallback(c=>{var x;E(c),je(!1),(x=Te.current)==null||x.focus()},[]),In=d.useCallback(c=>{const x=c?Ti(c):null,k=(x==null?void 0:x.attachments.map(j=>Fi(j)))??[];Z.current=new Map(((x==null?void 0:x.attachments)??[]).map(j=>[j.id,j])),Mt(k),E((x==null?void 0:x.content)??""),te(!1)},[Mt]);d.useEffect(()=>{if(!ie.length)return;const c=(r==null?void 0:r.trim())||null,x=`${n??"default"}:${V}:${c??""}`;if(!!(c&&ie.some(A=>A.id===c))){if($e.current!==x){$e.current=x,P!==c&&Y(c);return}if(ie.some(A=>A.id===P))return;Y(c);return}if(!c&&$e.current!==x&&($e.current=x),be&&ie.some(A=>A.id===be)){P!==be&&Y(be);return}if(ie.some(A=>A.id===P))return;const j=ie[0].id;Y(j)},[ie,n,V,P,be,r]),d.useEffect(()=>{if(!Hr(V)||le.length===0)return;if(it&&le.some(k=>k.value===it)){H!==it&&X(it);return}const c=e==null?void 0:e.defaultReasoningLevel;if(c&&le.some(k=>k.value===c)){H!==c&&X(c);return}if(le.some(k=>k.value===H))return;const x=le[0].value;X(x)},[le,e==null?void 0:e.defaultReasoningLevel,V,H,it]),d.useEffect(()=>{let c=!1;const x=K.current;return Kr().then(k=>{c||K.current!==x||ce(k.items.map(j=>({id:j.id,text:j.text})))}).catch(()=>{}),()=>{c=!0}},[]),d.useEffect(()=>{In(n)},[n,In]),d.useEffect(()=>{if(!n)return;const c=n,x=new Set(D.map(A=>A.id));Z.current.forEach((A,U)=>{x.has(U)||Z.current.delete(U)});let k=!1;async function j(){if(q.length===0&&D.length===0){Ss(c);return}const A=await Promise.all(D.map(async U=>{const z=Z.current.get(U.id);return z&&z.fileName===U.file.name&&z.fileSize===U.file.size&&z.lastModified===U.file.lastModified&&z.mimeType===ft(U.file)?z:{id:U.id,fileName:U.file.name,mimeType:ft(U.file),fileSize:U.file.size,lastModified:U.file.lastModified,contentBase64:await Zn(U.file)}}));k||(Z.current=new Map(A.map(U=>[U.id,U])),Ri(c,{content:q,attachments:A}))}return j(),()=>{k=!0}},[D,q,n]),d.useEffect(()=>{const c=Te.current;c&&(c.style.height="0px",c.style.height=`${Math.min(c.scrollHeight,120)}px`)},[q]),d.useEffect(()=>{ne.allowed||(Z.current.clear(),ae(!1),Mt([]))},[ne.allowed,Mt]),d.useEffect(()=>{M.isMobile||ae(!1)},[M.isMobile]),d.useEffect(()=>()=>{_.current.forEach(c=>{URL.revokeObjectURL(c)}),_.current.clear()},[]),d.useEffect(()=>{function c(){var x;(x=Te.current)==null||x.focus()}return window.addEventListener(zn,c),()=>{window.removeEventListener(zn,c)}},[]),d.useEffect(()=>{if(!i){Q(null),Ne(!1),ue({}),De(null);return}if(St){Q(null),Ne(!1);return}let c=!1;return Q(Qt(i.targetProvider)),Ne(!0),Vr(i.targetProvider,i.workspaceId).then(x=>{c||Q(x)}).catch(()=>{c||Q(Qt(i.targetProvider))}).finally(()=>{c||Ne(!1)}),()=>{c=!0}},[i==null?void 0:i.targetProvider,i==null?void 0:i.workspaceId,St]),d.useEffect(()=>{if(!i){ue({});return}let c=!1;return Gr($n,i.workspaceId).then(x=>{c||ue(x)}),()=>{c=!0}},[i==null?void 0:i.workspaceId]),d.useEffect(()=>{!i||!o||Ae.length!==0&&(Ae.includes(i.targetProvider)||o({...i,targetProvider:Ae[0]??i.targetProvider,targetModel:null}))},[i,o,Ae]),d.useEffect(()=>{!i||!i.targetModel||!o||Ke.some(c=>c.id===i.targetModel)||o({...i,targetModel:null})},[Ke,i,o]);const Sr=d.useCallback(c=>{if(!(!i||!o||c===i.targetProvider)){if(c!==i.sourceProvider&&i.targetProvider===i.sourceProvider){De(c);return}o({...i,targetProvider:c,targetModel:null})}},[i,o]),Tr=d.useCallback(c=>{!i||!o||o({...i,targetModel:c===pt?null:c})},[i,o]),Rr=d.useCallback(()=>{!i||!xe||!o||(o({...i,targetProvider:xe,targetModel:null}),De(null))},[i,o,xe]),En=d.useCallback(()=>{De(null)},[]);async function Mr(c){if(Ue.current)return;const x=q.trim(),k=D;if(x.length===0&&k.length===0||!zt.allowed||J||Kt){Re({title:J?a("conversation.runtimeRunning"):Tt??zt.reason??a("conversation.capabilityDenied"),tone:"error"});return}Ue.current=!0,Me.trigger(c==="queue"?"selection":"action"),ve(!0),E(""),ee([]),ae(!1),pe(!1),je(!1),fe(!1),te(!1);try{const j=await Promise.all(k.map(async z=>({kind:z.kind,fileName:z.file.name,mimeType:ft(z.file),fileSize:z.file.size,contentBase64:await Zn(z.file)}))),A=k.map(z=>Hi(z.file,z.id));await(c==="queue"&&N?N:F)(x,{model:ye||me!=null&&me.usesProviderDefault?void 0:P||void 0,reasoningLevel:ye?void 0:Nt&&le.length>0?H:void 0,attachments:j,attachmentMeta:A}),Ki(k),k.forEach(z=>{z.previewUrl&&_.current.delete(z.previewUrl)})}catch(j){E(x),ee(k),Re({title:j instanceof Error&&j.message==="FILE_READ_FAILED"?a("conversation.attachmentReadFailed"):j instanceof Error?j.message:a("conversation.capabilityDenied"),tone:"error"})}finally{ve(!1),Ue.current=!1}}async function _n(c){c.preventDefault(),await Mr(Ht?"queue":"send")}async function Ar(){if(!(!Tn||!w||et))try{tt(!0),Me.trigger("action"),await w()}catch(c){Re({title:c instanceof Error?c.message:a("conversation.capabilityInterruptDisabled"),tone:"error"})}finally{tt(!1)}}const Bn=nt||v||J||Kt||!zt.allowed||!Sn,On=nt||v||J||!ne.allowed,Lr=q.length===0&&!J,qn=s.jsxs("section",{ref:u,className:"composer-panel",children:[s.jsxs("form",{className:"composer-form",onSubmit:_n,children:[s.jsx("input",{id:B,ref:rt,type:"file",multiple:!0,tabIndex:-1,"aria-hidden":"true",style:Hn,onChange:An}),s.jsx("input",{id:O,ref:wt,type:"file",accept:"image/*",capture:"environment",tabIndex:-1,"aria-hidden":"true",style:Hn,onChange:An}),s.jsxs("div",{className:"composer-input-container","data-drag-active":qe?"true":void 0,onDragOver:vr,onDragLeave:xr,onDrop:br,children:[i?s.jsxs("div",{className:"composer-fork-draft",children:[s.jsxs("div",{className:"composer-fork-draft-main",children:[s.jsxs("div",{className:"composer-fork-draft-copy",children:[s.jsx("span",{className:"composer-fork-draft-label",children:a("conversation.forkDraftLabel")}),s.jsx("span",{className:"composer-fork-draft-text",children:Ui(i.content)})]}),s.jsxs("div",{className:"composer-fork-config",children:[s.jsxs("div",{className:"composer-fork-config-grid",children:[s.jsxs("div",{className:"composer-fork-field",children:[s.jsx("span",{className:"composer-fork-model-label",children:a("conversation.forkTargetProviderLabel")}),s.jsx(Lt,{ariaLabel:a("conversation.forkTargetProviderLabel"),value:i.targetProvider,options:dr,onChange:c=>Sr(c),compact:!0})]}),s.jsxs("div",{className:"composer-fork-field",children:[s.jsx("span",{className:"composer-fork-model-label",children:a("conversation.forkTargetModelLabel")}),s.jsx(Lt,{ariaLabel:a("conversation.forkTargetModelLabel"),value:ur,options:cr,onChange:Tr,disabled:Fe||Kt,compact:!0})]})]}),Tt?s.jsx("p",{className:"composer-capability-hint",children:Tt}):null]})]}),l?s.jsx("button",{type:"button",className:"composer-fork-draft-clear","aria-label":a("conversation.forkDraftClear"),title:a("conversation.forkDraftClear"),onClick:l,children:s.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[s.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}):null]}):null,D.length>0?s.jsx("div",{className:"composer-attachments",children:D.map(c=>s.jsxs("div",{className:"composer-attachment-card",children:[c.previewUrl?s.jsx("img",{src:c.previewUrl,alt:a("conversation.attachmentPreviewAlt"),className:"composer-attachment-preview"}):s.jsx("div",{className:"composer-attachment-file","aria-hidden":"true",children:s.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[s.jsx("path",{d:"M14 2H7a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7z"}),s.jsx("path",{d:"M14 2v5h5"}),s.jsx("path",{d:"M9 13h6"}),s.jsx("path",{d:"M9 17h6"})]})}),s.jsxs("div",{className:"composer-attachment-meta",children:[s.jsx("span",{className:"attachment-name",title:c.file.name,children:c.file.name}),s.jsx("span",{className:"attachment-size",children:Di(c.file.size)})]}),s.jsx("button",{type:"button",className:"attachment-remove",onClick:()=>gr(c.id),"aria-label":a("conversation.removeAttachment"),children:s.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[s.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]},c.id))}):null,qe?s.jsx("div",{className:"composer-drop-hint",children:a("conversation.attachmentDropHint")}):null,s.jsxs("div",{className:"composer-input-wrapper",children:[s.jsx("textarea",{ref:Te,className:"composer-input",value:q,placeholder:t??a("conversation.composerPlaceholder"),readOnly:J,"aria-readonly":J,onChange:c=>E(c.target.value),rows:1,onFocus:()=>te(!1),onCompositionStart:()=>{He(),ze.current=!0},onCompositionEnd:()=>{ze.current=!1,f.current=!0,S.current=globalThis.setTimeout(()=>{f.current=!1,S.current=null},0)},onPaste:c=>{if(J||!ne.allowed)return;const x=Array.from(c.clipboardData.items).filter(k=>k.kind==="file").map(k=>k.getAsFile()).filter(k=>!!k);x.length!==0&&(c.preventDefault(),at(x))},onKeyDown:c=>{if(c.key==="Escape"&&te(!1),c.key==="Enter"&&!c.shiftKey){if(Gi(c,ze.current,f.current))return;c.preventDefault(),Bn||_n(c)}}}),s.jsx("div",{className:"composer-input-actions",children:pr?s.jsx("button",{className:"composer-send composer-send-busy",type:"button",disabled:!Vt,onClick:()=>{Vt&&Ar()},"aria-label":Rn,title:Rn,children:s.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:s.jsx("rect",{x:"6",y:"6",width:"12",height:"12"})})}):s.jsx("button",{className:"composer-send",type:"submit",disabled:Bn,"aria-label":Mn,title:Mn,children:s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[s.jsx("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),s.jsx("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]})})})]}),ge?s.jsx("div",{className:"composer-slash-menu",role:"menu","aria-label":a("conversation.slashMenuTitle"),children:or.map(c=>s.jsxs("button",{type:"button",className:"composer-slash-item",onClick:()=>Cr(c.command),children:[s.jsx("span",{className:"composer-slash-command",children:c.command}),s.jsx("span",{className:"composer-slash-label",children:c.label})]},c.command))}):null,s.jsxs("div",{className:"composer-controls",children:[s.jsxs("div",{className:"composer-controls-left",children:[ne.allowed?M.isNativeMobile?s.jsx("button",{type:"button",className:"composer-attach-btn","aria-label":a("conversation.attachFiles"),title:a("conversation.attachFiles"),disabled:On,onClick:yr,children:s.jsx(Yt,{})}):On?s.jsx("button",{type:"button",className:"composer-attach-btn","aria-label":a("conversation.attachFiles"),title:a("conversation.attachFiles"),disabled:!0,children:s.jsx(Yt,{})}):s.jsx("label",{htmlFor:B,className:"composer-attach-btn","aria-label":a("conversation.attachFiles"),title:a("conversation.attachFiles"),onClick:()=>{te(!1)},children:s.jsx(Yt,{})}):null,ye?null:s.jsx(Lt,{ariaLabel:a("conversation.modelSelectorLabel"),value:P,options:ir,onChange:fr}),!ye&&Nt&&le.length>0?s.jsx(Lt,{ariaLabel:a("conversation.reasoningSelectorLabel"),value:H,options:ar,onChange:c=>hr(c),compact:!0}):null,rr?s.jsxs("button",{type:"button",className:"composer-slash-btn",onClick:kr,title:a("conversation.slashMenu"),children:[s.jsx("span",{className:"slash-icon",children:"/"}),s.jsx("span",{children:a("conversation.slashMenu")})]}):null,s.jsx(ta,{contextUsage:g}),s.jsx(bi,{provider:h,messages:C,variant:"composer"})]}),Lr?s.jsx("div",{className:"composer-quick-phrase-group",children:s.jsx("button",{type:"button",className:"composer-quick-phrase-trigger","aria-label":a("conversation.quickPhraseTrigger"),title:a("conversation.quickPhraseTrigger"),onClick:()=>{je(!0),te(!1)},children:s.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[s.jsx("path",{d:"M7 8h10"}),s.jsx("path",{d:"M7 12h8"}),s.jsx("path",{d:"M7 16h5"}),s.jsx("path",{d:"M5 5h14v14H9l-4 4V5z"})]})})}):null]})]})]}),s.jsx(Et,{open:oe,title:a("conversation.quickPhraseModalTitle"),description:a("conversation.quickPhraseModalDescription"),className:"composer-quick-phrase-modal",onClose:()=>{je(!1),fe(!1)},children:s.jsxs("div",{className:"composer-quick-phrase-modal-body",children:[s.jsxs("div",{className:"composer-quick-phrase-toolbar",children:[s.jsx("div",{className:"composer-quick-phrase-toolbar-copy",children:s.jsx("span",{children:a("conversation.quickPhraseListLabel")})}),s.jsx("button",{type:"button",className:"primary-button",disabled:we,onClick:()=>fe(!0),children:a("conversation.quickPhraseOpenCreateAction")})]}),s.jsx("div",{className:"composer-quick-phrase-list",role:"list","aria-label":a("conversation.quickPhraseListLabel"),children:G.length===0?s.jsx("div",{className:"composer-quick-phrase-empty",children:a("conversation.quickPhraseEmpty")}):G.map((c,x)=>s.jsxs("div",{className:"composer-quick-phrase-item",role:"listitem",children:[s.jsxs("button",{type:"button",className:"composer-quick-phrase-select",onClick:()=>Nr(c.text),children:[s.jsx("span",{className:"composer-quick-phrase-order",children:a("conversation.quickPhraseOrderLabel",{index:x+1})}),s.jsx("span",{className:"composer-quick-phrase-text",children:c.text})]}),s.jsxs("div",{className:"composer-quick-phrase-actions",children:[s.jsx("button",{type:"button",className:"composer-quick-phrase-action",disabled:we||x===0,"aria-label":a("conversation.quickPhraseMoveUp"),title:a("conversation.quickPhraseMoveUp"),onClick:()=>Pn(c.id,-1),children:"↑"}),s.jsx("button",{type:"button",className:"composer-quick-phrase-action",disabled:we||x===G.length-1,"aria-label":a("conversation.quickPhraseMoveDown"),title:a("conversation.quickPhraseMoveDown"),onClick:()=>Pn(c.id,1),children:"↓"}),s.jsx("button",{type:"button",className:"composer-quick-phrase-action is-danger",disabled:we,"aria-label":a("conversation.quickPhraseDelete"),title:a("conversation.quickPhraseDelete"),onClick:()=>wr(c.id),children:"×"})]})]},c.id))})]})}),s.jsx(Et,{open:Ct,title:a("conversation.quickPhraseCreateModalTitle"),description:a("conversation.quickPhraseCreateModalDescription"),className:"composer-quick-phrase-create-modal",onClose:()=>fe(!1),children:s.jsxs("div",{className:"composer-quick-phrase-modal-body",children:[s.jsxs("label",{className:"workbench-modal-field",children:[s.jsx("span",{children:a("conversation.quickPhraseCreateLabel")}),s.jsx("textarea",{className:"composer-quick-phrase-textarea",value:We,placeholder:a("conversation.quickPhraseCreatePlaceholder"),rows:4,onChange:c=>jt(c.target.value)})]}),s.jsxs("div",{className:"workbench-modal-actions",children:[s.jsx("button",{type:"button",className:"secondary-button",onClick:()=>fe(!1),children:a("common.cancel")}),s.jsx("button",{type:"button",className:"primary-button",disabled:we||We.trim().length===0,onClick:()=>{jr()},children:a("conversation.quickPhraseCreateAction")})]})]})}),s.jsx(Et,{open:xe!==null,title:a("conversation.forkSwitchConfirmTitle"),description:a("conversation.forkSwitchConfirmDescription"),className:"composer-fork-confirm-modal",onClose:En,children:s.jsxs("div",{className:"composer-fork-confirm-body",children:[s.jsxs("div",{className:"composer-fork-confirm-list",children:[s.jsxs("div",{className:"composer-fork-confirm-item",children:[s.jsx("span",{className:"composer-fork-confirm-icon is-keep","aria-hidden":"true",children:s.jsx(Yi,{})}),s.jsxs("div",{className:"composer-fork-confirm-copy",children:[s.jsx("strong",{children:a("conversation.forkSwitchConfirmKeepTitle")}),s.jsx("p",{children:a("conversation.forkSwitchConfirmKeepBody")})]})]}),s.jsxs("div",{className:"composer-fork-confirm-item",children:[s.jsx("span",{className:"composer-fork-confirm-icon is-convert","aria-hidden":"true",children:s.jsx(Xi,{})}),s.jsxs("div",{className:"composer-fork-confirm-copy",children:[s.jsx("strong",{children:a("conversation.forkSwitchConfirmConvertTitle")}),s.jsx("p",{children:a("conversation.forkSwitchConfirmConvertBody")})]})]}),s.jsxs("div",{className:"composer-fork-confirm-item",children:[s.jsx("span",{className:"composer-fork-confirm-icon is-drop","aria-hidden":"true",children:s.jsx(ea,{})}),s.jsxs("div",{className:"composer-fork-confirm-copy",children:[s.jsx("strong",{children:a("conversation.forkSwitchConfirmDropTitle")}),s.jsx("p",{children:a("conversation.forkSwitchConfirmDropBody")})]})]})]}),s.jsxs("div",{className:"workbench-modal-actions",children:[s.jsx("button",{type:"button",className:"secondary-button",onClick:En,children:a("conversation.forkSwitchKeepNative")}),s.jsx("button",{type:"button",className:"primary-button",onClick:Rr,children:a("conversation.forkSwitchConfirmAction")})]})]})}),s.jsx(Qi,{open:Oe&&M.isNativeMobile,onClose:()=>ae(!1),onSelectCamera:()=>Ln("camera"),onSelectLibrary:()=>Ln("library")})]});return p?fn.createPortal(qn,p):qn}function Qi({open:e,onClose:t,onSelectCamera:n,onSelectLibrary:r}){return s.jsx(Qr,{open:e,title:a("conversation.attachmentSourceSheetTitle"),description:a("conversation.attachmentSourceSheetDescription"),kind:"action",height:"auto",className:"composer-attachment-sheet",cardClassName:"composer-attachment-sheet-card",bodyClassName:"composer-attachment-sheet-body",showHandle:!0,onClose:t,children:s.jsxs(Zr,{className:"composer-attachment-sheet-actions",children:[s.jsx(Dn,{as:"button",className:"mobile-workspace-home-row composer-attachment-sheet-option","aria-label":a("conversation.attachmentTakePhoto"),label:a("conversation.attachmentTakePhoto"),description:a("conversation.attachmentTakePhotoHint"),trailing:s.jsx(Zi,{}),onClick:n}),s.jsx(Dn,{as:"button",className:"mobile-workspace-home-row composer-attachment-sheet-option","aria-label":a("conversation.attachmentChooseFromLibrary"),label:a("conversation.attachmentChooseFromLibrary"),description:a("conversation.attachmentChooseFromLibraryHint"),trailing:s.jsx(Ji,{}),onClick:r})]})})}function Zi(){return s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[s.jsx("path",{d:"M4 8h3l1.5-2h7L17 8h3a1 1 0 0 1 1 1v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9a1 1 0 0 1 1-1Z"}),s.jsx("circle",{cx:"12",cy:"13",r:"4"})]})}function Yt(){return s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[s.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"4"}),s.jsx("path",{d:"M8 12h8M12 8v8"})]})}function Ji(){return s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[s.jsx("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2.5"}),s.jsx("path",{d:"m7.5 15 3-3 2.5 2.5 3-4L18 13.5"}),s.jsx("circle",{cx:"8.75",cy:"8.75",r:"1.25",fill:"currentColor",stroke:"none"})]})}function Yi(){return s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",children:[s.jsx("path",{d:"M12 3 4 7v5c0 5 3.5 8 8 9 4.5-1 8-4 8-9V7l-8-4Z"}),s.jsx("path",{d:"m9.5 12 1.8 1.8L15 10.2"})]})}function Xi(){return s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",children:[s.jsx("path",{d:"M4 7h9"}),s.jsx("path",{d:"m10 3 4 4-4 4"}),s.jsx("path",{d:"M20 17h-9"}),s.jsx("path",{d:"m14 13-4 4 4 4"})]})}function ea(){return s.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.9",children:[s.jsx("path",{d:"m7 7 10 10"}),s.jsx("path",{d:"M17 7 7 17"}),s.jsx("path",{d:"M12 3v2"}),s.jsx("path",{d:"M12 19v2"})]})}function Lt({ariaLabel:e,value:t,options:n,onChange:r,disabled:i=!1,compact:l=!1}){const[o,u]=d.useState(!1),p=d.useRef(null),y=d.useRef(null),m=d.useRef(null),[g,h]=d.useState(null),C=d.useId(),b=n.find(w=>w.value===t)??n[0]??null,v=d.useMemo(()=>n.map(w=>w.label),[n]),R=d.useCallback(()=>{const w=y.current;if(!w||typeof window>"u")return;const N=w.getBoundingClientRect(),F=window.innerWidth,M=window.innerHeight,B=12,O=10,q=Math.max(Ts,F-B*2),E=l?Ai:Mi,P=_i({labels:v,triggerWidth:N.width,maxWidth:q,preferredWidth:E,measureText:ee=>Ei(w,ee)}),Y=Math.min(Math.max(B,N.left),Math.max(B,F-P-B)),H=N.top-B,X=M-N.bottom-B,D=H>=180||H>=X;h({position:"fixed",left:Y,width:P,maxWidth:q,top:D?void 0:N.bottom+O,bottom:D?M-N.top+O:void 0})},[l,v]);return d.useEffect(()=>{if(!o)return;function w(F){var B,O;const M=F.target;!((B=p.current)!=null&&B.contains(M))&&!((O=m.current)!=null&&O.contains(M))&&u(!1)}function N(F){F.key==="Escape"&&u(!1)}return window.addEventListener("pointerdown",w),window.addEventListener("keydown",N),window.addEventListener("resize",R),window.addEventListener("scroll",R,!0),R(),()=>{window.removeEventListener("pointerdown",w),window.removeEventListener("keydown",N),window.removeEventListener("resize",R),window.removeEventListener("scroll",R,!0)}},[o,R]),b?s.jsxs("div",{ref:p,className:`composer-mac-select ${l?"is-compact":""}`,"data-open":o?"true":"false",children:[s.jsxs("button",{ref:y,type:"button",className:"composer-mac-select-trigger","aria-label":e,"aria-haspopup":"listbox","aria-expanded":o,"aria-controls":C,disabled:i,onClick:()=>u(w=>!w),children:[s.jsx("span",{className:"composer-mac-select-label",children:b.label}),s.jsx("svg",{className:"composer-mac-select-chevron",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:s.jsx("polyline",{points:"6 14 12 8 18 14"})})]}),o&&g&&typeof document<"u"?fn.createPortal(s.jsx("div",{ref:m,className:"composer-mac-select-popover",style:g,role:"presentation",children:s.jsx("div",{id:C,className:"composer-mac-select-list",role:"listbox","aria-label":e,children:n.map(w=>{const N=w.value===t;return s.jsxs("button",{type:"button",role:"option","aria-selected":N,className:`composer-mac-select-option ${N?"is-selected":""}`,onClick:()=>{r(w.value),u(!1)},children:[s.jsx("span",{className:"composer-mac-select-option-check","aria-hidden":"true",children:N?"✓":""}),s.jsx("span",{className:"composer-mac-select-option-label",children:w.label})]},w.value)})})}),document.body):null]}):null}function ta({contextUsage:e}){const[t,n]=d.useState(!1),r=d.useRef(null),i=d.useRef(null),[l,o]=d.useState(null),u=d.useId(),p=e?Math.round(e.usageRatio*100):null,y=e?Math.max(0,Math.min(e.usageRatio,1)):0,m=na(y),g=e?sa(e.contextWindowSource):null,h=e?`${a("conversation.contextUsageTitle")} ${p}%`:a("conversation.contextUsageUnavailable"),C=d.useCallback(()=>{const b=r.current;if(!b||typeof window>"u")return;const v=b.getBoundingClientRect(),R=window.innerWidth,w=window.innerHeight,N=12,F=10,M=Math.min(240,Math.max(188,R-N*2)),B=Math.min(Math.max(N,v.left+v.width/2-M/2),Math.max(N,R-M-N)),O=v.top-N,q=w-v.bottom-N,E=O>=140||O>=q;o({position:"fixed",left:B,width:M,maxWidth:R-N*2,top:E?void 0:v.bottom+F,bottom:E?w-v.top+F:void 0})},[]);return d.useEffect(()=>{if(!t)return;function b(R){var N,F;const w=R.target;!((N=r.current)!=null&&N.contains(w))&&!((F=i.current)!=null&&F.contains(w))&&n(!1)}function v(R){R.key==="Escape"&&n(!1)}return window.addEventListener("pointerdown",b),window.addEventListener("keydown",v),window.addEventListener("resize",C),window.addEventListener("scroll",C,!0),C(),()=>{window.removeEventListener("pointerdown",b),window.removeEventListener("keydown",v),window.removeEventListener("resize",C),window.removeEventListener("scroll",C,!0)}},[t,C]),s.jsxs(s.Fragment,{children:[s.jsx("button",{ref:r,type:"button",className:`composer-context-ring ${m}`,style:{"--context-usage-progress":`${y}`},"aria-label":h,"aria-expanded":t,"aria-describedby":t?u:void 0,onClick:()=>n(b=>!b),onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),onFocus:()=>n(!0),onBlur:()=>n(!1),children:s.jsx("span",{className:"composer-context-ring-value",children:p===null?"--":s.jsxs(s.Fragment,{children:[s.jsx("span",{children:p}),s.jsx("span",{className:"composer-context-ring-suffix",children:"%"})]})})}),t&&l&&typeof document<"u"?fn.createPortal(s.jsx("div",{ref:i,id:u,className:"composer-context-tooltip",style:l,role:"tooltip",children:e?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"composer-context-tooltip-title",children:a("conversation.contextUsageTitle")}),s.jsxs("div",{className:"composer-context-tooltip-line",children:[p,"% · ",Xt(e.promptTokens)," /"," ",Xt(e.contextWindow)," tokens"]}),e.cachedInputTokens>0?s.jsx("div",{className:"composer-context-tooltip-line",children:a("conversation.contextUsageCachedTokens").replace("{count}",Xt(e.cachedInputTokens))}):null,g?s.jsx("div",{className:"composer-context-tooltip-meta",children:g}):null,e.isEstimated?s.jsx("div",{className:"composer-context-tooltip-meta",children:a("conversation.contextUsageEstimated")}):null]}):s.jsx("div",{className:"composer-context-tooltip-line",children:a("conversation.contextUsageUnavailable")})}),document.body):null]})}function na(e){return e>=.95?"is-critical":e>=.8?"is-warning":"is-normal"}function sa(e){switch(e){case"provider-log":return a("conversation.contextUsageSourceProviderLog");case"provider-runtime":return a("conversation.contextUsageSourceProviderRuntime");case"provider-config":return a("conversation.contextUsageSourceProviderConfig");case"model-map":return a("conversation.contextUsageSourceModelMap");default:return""}}function Xt(e){return new Intl.NumberFormat().format(e)}const Bt="*** Begin Patch",Ot="*** End Patch";function Jn(e){const t=e.replace(/\r\n/g,`
2
+ `);if(!t.includes(Bt)||!t.includes(Ot))return null;const n=t.split(`
3
+ `),r=[];let i=null,l=null;for(const o of n){if(o===Bt||o===Ot)continue;if(o.startsWith("*** Update File: ")){i=en("update",o.slice(17)),r.push(i),l=null;continue}if(o.startsWith("*** Add File: ")){i=en("add",o.slice(14)),r.push(i),l={oldLineNumber:0,newLineNumber:1};continue}if(o.startsWith("*** Delete File: ")){i=en("delete",o.slice(17)),r.push(i),l=null;continue}if(!i)continue;if(o.startsWith("*** Move to: ")){i.nextPath=o.slice(13),i.lines.push({kind:"meta",text:o,oldLineNumber:null,newLineNumber:null});continue}if(o.startsWith("@@")){l=oa(o)??{oldLineNumber:0,newLineNumber:0},i.lines.push({kind:"hunk",text:o,oldLineNumber:null,newLineNumber:null});continue}if(o==="*** End of File"){i.lines.push({kind:"meta",text:o,oldLineNumber:null,newLineNumber:null});continue}if(i.action==="add"&&o.startsWith("+")){i.additions+=1,i.statsKnown=!0,i.lines.push({kind:"add",text:o,oldLineNumber:null,newLineNumber:(l==null?void 0:l.newLineNumber)??i.additions}),l&&(l.newLineNumber+=1);continue}if(!l){i.lines.push({kind:"meta",text:o,oldLineNumber:null,newLineNumber:null});continue}if(o.startsWith("+")){i.additions+=1,i.statsKnown=!0,i.lines.push({kind:"add",text:o,oldLineNumber:null,newLineNumber:l.newLineNumber}),l.newLineNumber+=1;continue}if(o.startsWith("-")){i.deletions+=1,i.statsKnown=!0,i.lines.push({kind:"remove",text:o,oldLineNumber:l.oldLineNumber,newLineNumber:null}),l.oldLineNumber+=1;continue}if(o.startsWith(" ")||o.length===0){i.lines.push({kind:"context",text:o,oldLineNumber:l.oldLineNumber,newLineNumber:l.newLineNumber}),l.oldLineNumber+=1,l.newLineNumber+=1;continue}i.lines.push({kind:"meta",text:o,oldLineNumber:null,newLineNumber:null})}return r.length===0?null:{files:r,totalAdditions:r.reduce((o,u)=>o+u.additions,0),totalDeletions:r.reduce((o,u)=>o+u.deletions,0)}}function ra(e,t=[]){const n=e.replace(/\r\n/g,`
4
+ `).trim();if(!n)return null;if(n.includes(Bt)&&n.includes(Ot))return n;const r=[...new Set(t.map(i=>i.trim()).filter(i=>i.length>0))];return r.length!==1||!la(n)?null:[Bt,`*** Update File: ${r[0]}`,n,Ot].join(`
5
+ `)}function ia(e){const t=ca(e);if(!t)return[];const n=t.replace(/\r\n/g,`
6
+ `).split(`
7
+ `),r=[];let i=!1;for(const l of n){const o=l.trim();if(!i){/^Success\.\s+Updated the following files:/i.test(o)&&(i=!0);continue}if(!o){if(r.length>0)break;continue}const u=o.match(/^[A-Z?]\s+(.+)$/),p=((u==null?void 0:u[1])??o).trim();if(!p)break;r.push(p)}return[...new Set(r)]}function aa(e){return e.replace(/\\/g,"/").split("/").at(-1)||e}function en(e,t){return{path:t,nextPath:null,action:e,additions:0,deletions:0,statsKnown:!1,lines:[]}}function oa(e){const t=e.match(/^@@\s+-(\d+)(?:,\d+)?\s+\+(\d+)(?:,\d+)?\s+@@/);return t?{oldLineNumber:Number(t[1]),newLineNumber:Number(t[2])}:null}function la(e){return e.startsWith("@@")||e.startsWith("*** Update File: ")||e.startsWith("*** Add File: ")||e.startsWith("*** Delete File: ")||e.includes(`
8
+ @@`)||e.startsWith("+")||e.startsWith("-")}function ca(e){const t=e.trim();if(!t)return"";if(!t.startsWith("{"))return t;try{const n=JSON.parse(t);if(!n||typeof n!="object"||Array.isArray(n))return t;const r=n;if(typeof r.output=="string"&&r.output.trim().length>0)return r.output;if(typeof r.result=="string"&&r.result.trim().length>0)return r.result;if(typeof r.message=="string"&&r.message.trim().length>0)return r.message}catch{return t}return t}const ua=/data:image\/([a-zA-Z0-9.+-]+);base64,([A-Za-z0-9+/=]+)/g,da=/!\[([^\]]*)\]\((data:image\/[a-zA-Z0-9.+-]+;base64,[A-Za-z0-9+/=]+)\)/g,ma=/<img\b[^>]*src=["'](data:image\/[a-zA-Z0-9.+-]+;base64,[A-Za-z0-9+/=]+)["'][^>]*>/gi,pa=/<image\b([^>]*)>([\s\S]*?)<\/image>/gi,fa=/\[\[CODINGNS_IMAGE_ATTACHMENTS\]\][\s\S]*?\[\[\/CODINGNS_IMAGE_ATTACHMENTS\]\]/g;function Ye(e){const t=ha(e),n=ga(t);return n||Ls(t)}function ha(e){return e.replace(fa,"")}function ga(e){const t=e.trim();if(!va(t))return null;try{const n=JSON.parse(t),r=xa(n);return r.text||r.inlineImages.length>0?r:null}catch{return null}}function va(e){return e.length<2?!1:e.startsWith("[")&&e.endsWith("]")||e.startsWith("{")&&e.endsWith("}")}function xa(e){const t=[],n=[];return _t(e,t,n),{text:Is(t.join(`
9
+
10
+ `)),inlineImages:Ps(n)}}function _t(e,t,n){if(typeof e=="string"){const o=Ls(e);o.text&&t.push(o.text),n.push(...o.inlineImages);return}if(e==null)return;if(Array.isArray(e)){e.forEach(o=>_t(o,t,n));return}if(typeof e!="object")return;const r=e,i=new Set,l=ba(r);l&&(n.push(l),["type","source","media_type","mime_type","mimeType","data","image_url","imageUrl","url","src","alt","name"].forEach(o=>{o in r&&i.add(o)}));for(const o of["image_url","url","src","source"]){const u=r[o];typeof u!="string"||!Es(u)||(n.push(Ee(u,re(r.alt))),i.add(o))}for(const o of["text","message","content","output","result","summary","caption"])o in r&&(i.add(o),_t(r[o],t,n));i.size>0||Object.values(r).forEach(o=>{_t(o,t,n)})}function Ls(e){const t=[];let n=e;return n=n.replace(pa,(r,i,l)=>{const o=wa(i,"name"),u=ja(l);return u!=null&&u.url&&t.push(Ee(u.url,u.altText||o)),""}),n=n.replace(da,(r,i,l)=>(t.push(Ee(l,i)),"")),n=n.replace(ma,(r,i)=>(t.push(Ee(i,null)),"")),n=n.replace(ua,(r,i,l)=>(t.push(Ee(r,null,`image/${i}`,qt(l))),"")),{text:Is(n),inlineImages:Ps(t)}}function Ee(e,t,n,r){const i=n??ya(e)??"image/png";return{url:e,mimeType:i,altText:ht(t),estimatedBytes:r??ka(e)}}function ba(e){const t=Ca(e.source);if(t){const i=re(t.type).trim().toLowerCase(),l=Xn(t.media_type??t.mime_type??t.mimeType),o=Yn(t.data);if(i==="base64"&&l&&o)return Ee(`data:${l};base64,${o}`,ht(re(t.alt)||re(t.name)||re(e.alt)||re(e.name)),l,qt(o))}const n=Xn(e.media_type??e.mime_type??e.mimeType),r=Yn(e.data);return n&&r?Ee(`data:${n};base64,${r}`,ht(re(e.alt)||re(e.name)),n,qt(r)):null}function Ps(e){const t=new Map;return e.forEach(n=>{t.has(n.url)||t.set(n.url,n)}),[...t.values()]}function Is(e){return e.replace(/\r\n/g,`
11
+ `).replace(/[ \t]{2,}/g," ").replace(/[ \t]+\n/g,`
12
+ `).replace(/\n{3,}/g,`
13
+
14
+ `).trim()}function Es(e){return/^data:image\/[a-zA-Z0-9.+-]+;base64,[A-Za-z0-9+/=]+$/.test(e.trim())}function ya(e){var n;const t=e.match(/^data:(image\/[a-zA-Z0-9.+-]+);base64,/i);return((n=t==null?void 0:t[1])==null?void 0:n.toLowerCase())??null}function ka(e){const t=e.match(/^data:image\/[a-zA-Z0-9.+-]+;base64,([A-Za-z0-9+/=]+)$/i);return t?qt(t[1]):null}function qt(e){const t=e.trim(),n=t.endsWith("==")?2:t.endsWith("=")?1:0;return Math.max(0,Math.floor(t.length*3/4)-n)}function ht(e){const t=re(e).trim();return t.length>0?t:null}function Yn(e){if(typeof e!="string")return null;const t=e.replace(/\s+/g,"").trim();return/^[A-Za-z0-9+/=]+$/.test(t)?t:null}function Xn(e){if(typeof e!="string")return null;const t=e.trim().toLowerCase();return t.startsWith("image/")?t:null}function re(e){return typeof e=="string"?e:""}function Ca(e){return!e||typeof e!="object"||Array.isArray(e)?null:e}function ja(e){const t=e.trim();if(t.length===0)return null;try{const n=JSON.parse(t),r=re(n.image_url??n.imageUrl).trim(),i=ht(re(n.name)||re(n.alt));return{url:Es(r)?r:null,altText:i}}catch{const n=t.match(/(data:image\/[a-zA-Z0-9.+-]+;base64,[A-Za-z0-9+/=]+)/i);return n?{url:n[1],altText:null}:null}}function wa(e,t){const n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=e.match(new RegExp(`${n}\\s*=\\s*(?:"([^"]*)"|'([^']*)'|\\[([^\\]]*)\\]|([^\\s>]+))`,"i"));return ht((r==null?void 0:r[1])??(r==null?void 0:r[2])??(r==null?void 0:r[3])??(r==null?void 0:r[4])??"")}const _s="codingns.user-app.conversation-scroll",Ge=1,Na=200,Sa=1e7;function Bs(){return typeof window<"u"&&typeof window.localStorage<"u"}function Os(e){return e.trim()}function qs(e){return!Number.isFinite(e)||e<=0?0:Math.min(Math.round(e),Sa)}function Ws(e){return!e||typeof e!="object"?null:{scrollTop:qs(e.scrollTop),stickToBottom:e.stickToBottom===!0,lastMessageSignature:typeof e.lastMessageSignature=="string"?e.lastMessageSignature:null,updatedAt:Number.isFinite(e.updatedAt)?e.updatedAt:0}}function Fs(){if(!Bs())return{schemaVersion:Ge,bySessionId:{}};const e=window.localStorage.getItem(_s);if(!e)return{schemaVersion:Ge,bySessionId:{}};try{const t=JSON.parse(e);if(!t||typeof t!="object"||t.schemaVersion!==Ge||!t.bySessionId||typeof t.bySessionId!="object"||Array.isArray(t.bySessionId))return{schemaVersion:Ge,bySessionId:{}};const n=Object.fromEntries(Object.entries(t.bySessionId).map(([r,i])=>{const l=Ws(i);return l?[r,l]:null}).filter(r=>!!r));return{schemaVersion:Ge,bySessionId:n}}catch{return{schemaVersion:Ge,bySessionId:{}}}}function Ta(e){if(Bs())try{window.localStorage.setItem(_s,JSON.stringify(e))}catch{}}function Pt(e){const t=Os(e);if(!t)return null;const n=Fs().bySessionId[t],r=Ws(n);return r?{scrollTop:r.scrollTop,stickToBottom:r.stickToBottom,lastMessageSignature:r.lastMessageSignature}:null}function es(e,t){const n=Os(e);if(!n)return;const r=Fs();r.bySessionId[n]={scrollTop:qs(t.scrollTop),stickToBottom:t.stickToBottom,lastMessageSignature:t.lastMessageSignature,updatedAt:Date.now()};const i=Object.entries(r.bySessionId).sort((l,o)=>o[1].updatedAt-l[1].updatedAt).slice(0,Na);r.bySessionId=Object.fromEntries(i),Ta(r)}function Ra(e){return e.replace(/(\.{3,}|…+)$/,"").trimEnd()}function Ds(e){var r;const t=e.match(/^\s*<turn_aborted>([\s\S]*?)<\/turn_aborted>\s*$/i);if(!t)return null;const n=((r=t[1])==null?void 0:r.trim())??"";return!n||/^previous turn aborted$/i.test(n)?{detail:null}:{detail:n}}function Ma(e){return e==="user"?a("conversation.turnAbortedUser"):e==="runtime"?a("conversation.turnAbortedUnexpected"):a("conversation.turnAbortedGeneric")}const Aa=480,ts=80,ns=240,La=120,Pa=18,Ia=50,Ea=3500,Us=d.createContext(!1);function un(e){return e.replace(/\\/g,"/")}function Wt(e){return/^[a-zA-Z]:\//.test(e)}function _a(e){return e.startsWith("/")||e.startsWith("//")||Wt(e)}function Ba(e){return/^[a-zA-Z][a-zA-Z\d+.-]*:/.test(e)&&!Wt(e)}function ss(e){return e.replace(/\/+$/,"")}function Oa(e){const t=e.indexOf("#"),n=t>=0?e.slice(0,t):e,r=n.indexOf("?");return(r>=0?n.slice(0,r):n).replace(/:(\d+)(?::(\d+))?$/,"")}function qa(e){const t=[];for(const n of un(e).split("/"))if(!(!n||n===".")){if(n===".."){if(t.length===0)return null;t.pop();continue}t.push(n)}return t.join("/")}function gn(e){try{return decodeURIComponent(e)}catch{return e}}function Wa(e,t){const n=gn(e).trim();if(!n||n.startsWith("#"))return null;let r=n;if(/^file:\/\//i.test(r))try{r=decodeURIComponent(new URL(r).pathname),/^\/[a-zA-Z]:\//.test(r)&&(r=r.slice(1))}catch{return null}else if(Ba(r))return null;if(r=un(Oa(r.trim())),!r)return null;const i=ss(un(t.trim()));if(!i)return null;if(_a(r)){const l=ss(r),o=Wt(i)?i.toLowerCase():i,u=Wt(l)?l.toLowerCase():l;if(u===o)return null;const p=`${o}/`;return u.startsWith(p)?l.slice(i.length+1):null}return qa(r)}function Ft(e){return e.kind==="tool_call"||e.kind==="tool_result"}function zs(e){return e.toolCall?e.toolCall:Ft(e)?{callId:e.rawRef||e.id,name:"tool",input:e.kind==="tool_call"?e.content:"",output:e.kind==="tool_result"&&e.content?e.content:null,error:null,status:e.kind==="tool_call"?"running":"completed"}:null}function Fa(e){return e==="shell_command"||e==="tool"?a("conversation.roleTool"):e}function vn(e){if(!e.trim())return null;try{const t=JSON.parse(e);return!t||typeof t!="object"||Array.isArray(t)?null:t}catch{return null}}function Pe(e,t){const n=e[t];return typeof n=="string"?n:""}function gt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function $(e,t){if(!e)return null;const n=e[t];return gt(n)?n:null}function tn(e,t){if(!e)return null;const n=e[t];return Array.isArray(n)?n:null}function L(e,t){if(!e)return null;const n=e[t];if(typeof n=="string"){const r=n.trim();return r||null}return typeof n=="number"||typeof n=="boolean"?String(n):null}function Da(e){const t=[e.output,e.input];for(const n of t){const r=$s(n,0);if(r)return r}return null}function $s(e,t){if(!(e!=null&&e.trim())||t>2)return null;try{return Hs(JSON.parse(e),t)}catch{return null}}function Hs(e,t){if(!gt(e))return null;if(Ua(e))return{ok:!0,capability:L(e,"capability")??"",auditId:L(e,"auditId")??"",timestamp:L(e,"timestamp")??"",targetRef:{kind:L($(e,"targetRef"),"kind")??"none",id:L($(e,"targetRef"),"id")},payload:$(e,"payload")??{}};const n=["output","result","data","payload"];for(const r of n){const i=e[r];if(typeof i=="string"){const l=$s(i,t+1);if(l)return l}if(gt(i)){const l=Hs(i,t+1);if(l)return l}}return null}function Ua(e){return e.ok===!0&&typeof e.capability=="string"&&typeof e.auditId=="string"&&typeof e.timestamp=="string"&&gt(e.targetRef)&&gt(e.payload)}function za(e){const t=new Map,n=new Map,r=new Map;return e.forEach(i=>{t.set(i.workspace.id,i.workspace.name),i.sessions.forEach(l=>{const o=typeof l.title=="string"&&l.title.trim()?l.title.trim():l.sessionId;n.set(l.sessionId,o),r.set(l.sessionId,i.workspace.id)})}),{workspaceNamesById:t,sessionNamesById:n,sessionWorkspaceIdsById:r}}function $a(e,t){const n=Da(e);return n?{...Vs(n.capability),rows:eo(n,t)}:null}function Ha(e,t){const n=Ka(e);if(!n)return null;const r=Va(n);return r?{...Za(r),rows:Xa(r,t)}:null}function Ka(e){const t=vn(e.input),n=t&&typeof t.command=="string"?t.command.trim():"";if(!n)return null;const r=n.indexOf("codingns assistant");return r<0?null:n.slice(r).trim()}function Va(e){const t=Ga(e),n=t.findIndex((m,g)=>m==="codingns"&&t[g+1]==="assistant");if(n<0)return null;const r=t.slice(n+2);if(r.length===0||r[0]==="--help"||r[0]==="-h")return{group:null,action:null,mode:"help",options:{},positionals:[]};if(r[0]==="help")return{group:r[1]??null,action:r[2]??null,mode:"help",options:{},positionals:[]};const i=r[0]??null,l=r[1],o=l&&!l.startsWith("-")?l:null,u=r.slice(o?2:1),{options:p,positionals:y}=Qa(u);return!o&&p["--help"]?{group:i,action:null,mode:"help",options:p,positionals:y}:{group:i,action:o,mode:"execute",options:p,positionals:y}}function Ga(e){const t=[],n=/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|`([^`\\]|\\.)*`|\S+/g;for(const r of e.matchAll(n)){const i=r[0]??"";if(!i)continue;const l=i[0];if((l==='"'||l==="'"||l==="`")&&i[i.length-1]===l){t.push(i.slice(1,-1));continue}t.push(i)}return t}function Qa(e){const t={},n=[];for(let r=0;r<e.length;r+=1){const i=e[r]??"";if(!i.startsWith("--")){n.push(i);continue}const l=e[r+1];if(!l||l.startsWith("--")){t[i]=!0;continue}t[i]=l,r+=1}return{options:t,positionals:n}}function Za(e){if(e.mode==="help")return Ja(e.group,e.action);const t=Ya(e.group,e.action);return t?Vs(t):{kind:xn(e.group),badge:Ks(e.group),title:a("conversation.assistantCapabilityQueryTitle"),summary:a("conversation.assistantCliSummaryCommand")}}function Ja(e,t){return e?e==="sessions"?{kind:"session",badge:a("conversation.assistantCapabilityBadgeSession"),title:t?a("conversation.assistantCliHelpSessionActionTitle",{action:t}):a("conversation.assistantCliHelpSessionsTitle"),summary:a("conversation.assistantCliSummaryHelp")}:e==="timers"?{kind:"automation",badge:a("conversation.assistantCapabilityBadgeAutomation"),title:a("conversation.assistantCliHelpTimersTitle"),summary:a("conversation.assistantCliSummaryHelp")}:e==="terminals"?{kind:"terminal",badge:a("conversation.assistantCapabilityBadgeTerminal"),title:a("conversation.assistantCliHelpTerminalsTitle"),summary:a("conversation.assistantCliSummaryHelp")}:e==="workspaces"||e==="worktrees"?{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCliHelpWorkspacesTitle"),summary:a("conversation.assistantCliSummaryHelp")}:{kind:xn(e),badge:Ks(e),title:a("conversation.assistantCliHelpGenericTitle",{group:e}),summary:a("conversation.assistantCliSummaryHelp")}:{kind:"query",badge:a("conversation.assistantCapabilityBadgeQuery"),title:a("conversation.assistantCliHelpRootTitle"),summary:a("conversation.assistantCliSummaryHelp")}}function Ya(e,t){const n=e==null?void 0:e.trim(),r=t==null?void 0:t.trim();return n?n==="capabilities"&&r==="list"?"capabilities.list":n==="projects"&&r==="list"?"projects.list":n==="projects"&&r==="get"?"projects.get":n==="sessions"&&r==="list"?"projects.sessions.list":n==="sessions"&&r==="get"?"sessions.get":n==="sessions"&&r==="messages"?"sessions.messages.list":n==="sessions"&&r==="runtime"?"sessions.runtime.get":n==="sessions"&&r==="start"?"projects.sessions.start":n==="sessions"&&r==="send"?"sessions.message.send":n==="sessions"&&r==="fork"?"sessions.fork":n==="timers"&&r==="create"?"timers.create":n==="timers"&&r==="cancel"?"timers.cancel":n==="timers"&&r==="list"?"timers.list":n==="terminals"&&r==="send"?"terminals.input.send":n==="terminals"&&r==="close"?"terminals.close":n==="terminals"&&r==="history"?"terminals.history.read":n==="terminals"&&r==="list"?"terminals.list":n==="workspaces"&&r==="list"?"workspaces.list":n==="workspaces"&&r==="clone"?"workspaces.clone":n==="workspaces"&&r==="import"?"workspaces.import":n==="workspaces"&&r==="management"?"workspaces.management.get":n==="worktrees"&&r==="tree"?"worktrees.tree":n==="worktrees"&&r==="create"?"worktrees.create":null:null}function xn(e){switch(e){case"sessions":case"projects":return"session";case"timers":return"automation";case"terminals":return"terminal";case"workspaces":case"worktrees":return"workspace";case"debug-targets":case"debug-runtimes":return"debug";default:return"query"}}function Ks(e){switch(xn(e)){case"session":return a("conversation.assistantCapabilityBadgeSession");case"automation":return a("conversation.assistantCapabilityBadgeAutomation");case"terminal":return a("conversation.assistantCapabilityBadgeTerminal");case"workspace":return a("conversation.assistantCapabilityBadgeWorkspace");case"debug":return a("conversation.assistantCapabilityBadgeDebug");case"query":default:return a("conversation.assistantCapabilityBadgeQuery")}}function Xa(e,t){const n=[],r=Qe(e,"--session-id")??e.positionals[0]??null,i=Qe(e,"--project")??Qe(e,"--project-id");return e.mode==="help"?(T(n,a("conversation.assistantCliLabelScope"),e.group??a("conversation.assistantCliScopeRoot")),T(n,a("conversation.assistantCliLabelAction"),e.action),n):(e.group==="sessions"&&T(n,a("conversation.assistantCapabilityLabelSession"),_e(r,null,t)),e.group==="timers"&&(T(n,a("conversation.assistantCapabilityLabelSession"),_e(r,null,t)),T(n,a("conversation.assistantCliLabelDelay"),Qe(e,"--after-seconds"))),e.group==="terminals"&&T(n,a("conversation.assistantCapabilityLabelTerminal"),e.positionals[0]??null),(e.group==="workspaces"||e.group==="worktrees")&&T(n,a("conversation.assistantCapabilityLabelWorkspace"),Ce(e.positionals[0]??null,null,t)),T(n,a("conversation.assistantCliLabelProject"),i),T(n,a("conversation.assistantCliLabelMessage"),Qe(e,"--message")),T(n,a("conversation.assistantCliLabelInput"),Qe(e,"--input")),n.slice(0,4))}function Qe(e,t){const n=e.options[t];return typeof n=="string"?n:null}function Vs(e){switch(e){case"projects.sessions.start":return{kind:"session",badge:a("conversation.assistantCapabilityBadgeSession"),title:a("conversation.assistantCapabilityProjectSessionStartTitle"),summary:a("conversation.assistantCapabilitySummarySessionStart")};case"sessions.message.send":return{kind:"session",badge:a("conversation.assistantCapabilityBadgeSession"),title:a("conversation.assistantCapabilitySessionSendTitle"),summary:a("conversation.assistantCapabilitySummarySessionSend")};case"sessions.fork":return{kind:"session",badge:a("conversation.assistantCapabilityBadgeSession"),title:a("conversation.assistantCapabilitySessionForkTitle"),summary:a("conversation.assistantCapabilitySummarySessionFork")};case"timers.create":return{kind:"automation",badge:a("conversation.assistantCapabilityBadgeAutomation"),title:a("conversation.assistantCapabilityTimerCreateTitle"),summary:a("conversation.assistantCapabilitySummaryTimerCreate")};case"timers.cancel":return{kind:"automation",badge:a("conversation.assistantCapabilityBadgeAutomation"),title:a("conversation.assistantCapabilityTimerCancelTitle"),summary:a("conversation.assistantCapabilitySummaryTimerCancel")};case"terminals.input.send":return{kind:"terminal",badge:a("conversation.assistantCapabilityBadgeTerminal"),title:a("conversation.assistantCapabilityTerminalInputTitle"),summary:a("conversation.assistantCapabilitySummaryTerminalInput")};case"terminals.close":return{kind:"terminal",badge:a("conversation.assistantCapabilityBadgeTerminal"),title:a("conversation.assistantCapabilityTerminalCloseTitle"),summary:a("conversation.assistantCapabilitySummaryTerminalClose")};case"workspaces.directory.create":return{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCapabilityWorkspaceDirectoryCreateTitle"),summary:a("conversation.assistantCapabilitySummaryWorkspace")};case"workspaces.import":return{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCapabilityWorkspaceImportTitle"),summary:a("conversation.assistantCapabilitySummaryWorkspace")};case"workspaces.clone":return{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCapabilityWorkspaceCloneTitle"),summary:a("conversation.assistantCapabilitySummaryWorkspace")};case"workspaces.navigation-state.update":return{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCapabilityWorkspaceNavigationUpdateTitle"),summary:a("conversation.assistantCapabilitySummaryWorkspace")};case"workspaces.remove":return{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCapabilityWorkspaceRemoveTitle"),summary:a("conversation.assistantCapabilitySummaryWorkspace")};case"worktrees.create":return{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCapabilityWorktreeCreateTitle"),summary:a("conversation.assistantCapabilitySummaryWorktree")};case"worktrees.merge-into-parent":return{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCapabilityWorktreeMergeTitle"),summary:a("conversation.assistantCapabilitySummaryWorktree")};case"worktrees.cleanup":return{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCapabilityWorktreeCleanupTitle"),summary:a("conversation.assistantCapabilitySummaryWorktree")};case"debug-targets.run":return{kind:"debug",badge:a("conversation.assistantCapabilityBadgeDebug"),title:a("conversation.assistantCapabilityDebugRunTitle"),summary:a("conversation.assistantCapabilitySummaryDebug")};default:return e.startsWith("sessions.")||e.startsWith("projects.")?{kind:"session",badge:a("conversation.assistantCapabilityBadgeSession"),title:a("conversation.assistantCapabilitySessionReadTitle"),summary:a("conversation.assistantCapabilitySummaryRead")}:e.startsWith("timers.")?{kind:"automation",badge:a("conversation.assistantCapabilityBadgeAutomation"),title:a("conversation.assistantCapabilityAutomationReadTitle"),summary:a("conversation.assistantCapabilitySummaryRead")}:e.startsWith("terminals.")?{kind:"terminal",badge:a("conversation.assistantCapabilityBadgeTerminal"),title:a("conversation.assistantCapabilityTerminalReadTitle"),summary:a("conversation.assistantCapabilitySummaryRead")}:e.startsWith("workspaces.")||e.startsWith("worktrees.")?{kind:"workspace",badge:a("conversation.assistantCapabilityBadgeWorkspace"),title:a("conversation.assistantCapabilityWorkspaceReadTitle"),summary:a("conversation.assistantCapabilitySummaryRead")}:e.startsWith("debug-targets.")||e.startsWith("debug-runtimes.")?{kind:"debug",badge:a("conversation.assistantCapabilityBadgeDebug"),title:a("conversation.assistantCapabilityDebugReadTitle"),summary:a("conversation.assistantCapabilitySummaryRead")}:{kind:"query",badge:a("conversation.assistantCapabilityBadgeQuery"),title:a("conversation.assistantCapabilityQueryTitle"),summary:a("conversation.assistantCapabilitySummaryRead")}}}function eo(e,t){const n=[],r=e.payload;switch(e.capability){case"projects.sessions.start":{const i=$(r,"session");T(n,a("conversation.assistantCapabilityLabelSession"),_e(L(i,"sessionId"),L(i,"title"),t)),T(n,a("conversation.assistantCapabilityLabelProvider"),L(i,"provider"));break}case"sessions.message.send":{const i=$(r,"result");T(n,a("conversation.assistantCapabilityLabelSession"),_e(e.targetRef.id,null,t)),T(n,a("conversation.assistantCapabilityLabelWorkspace"),Gs(e.targetRef.id,t)),T(n,a("conversation.assistantCapabilityLabelStatus"),a("conversation.assistantCapabilityStatusCompleted")),T(n,a("conversation.assistantCapabilityLabelDueAt"),rs(L(i,"acceptedAt")??e.timestamp));break}case"sessions.fork":{const i=$(r,"session");T(n,a("conversation.assistantCapabilityLabelSession"),_e(L(i,"sessionId"),L(i,"title"),t)),T(n,a("conversation.assistantCapabilityLabelProvider"),L(i,"provider"));break}case"timers.create":case"timers.cancel":{const i=$(r,"timer"),l=$(i,"controlSession"),o=$(l,"session");T(n,a("conversation.assistantCapabilityLabelTimer"),L(i,"title")),T(n,a("conversation.assistantCapabilityLabelWorkspace"),Ce(L(o,"workspaceId"),null,t)),T(n,a("conversation.assistantCapabilityLabelSession"),_e(L(i,"targetSessionId"),null,t)),T(n,a("conversation.assistantCapabilityLabelDueAt"),rs(L(i,"dueAt"))),T(n,a("conversation.assistantCapabilityLabelStatus"),so(L(i,"status")));break}case"terminals.input.send":case"terminals.close":T(n,a("conversation.assistantCapabilityLabelTerminal"),e.targetRef.id);break;case"workspaces.directory.create":{const i=$(r,"result");T(n,a("conversation.assistantCapabilityLabelPath"),L(i,"path"));break}case"workspaces.import":case"workspaces.clone":case"workspaces.remove":{const i=$(r,"workspace");T(n,a("conversation.assistantCapabilityLabelWorkspace"),Ce(L(i,"id")??e.targetRef.id,L(i,"name"),t)),T(n,a("conversation.assistantCapabilityLabelPath"),L(i,"path"));break}case"workspaces.navigation-state.update":{const i=$(r,"state");T(n,a("conversation.assistantCapabilityLabelWorkspace"),Ce(L(i,"workspaceId")??e.targetRef.id,null,t)),T(n,a("conversation.assistantCapabilityLabelStatus"),L(i,"collapsed")==="true"?a("conversation.assistantCapabilityNavigationCollapsed"):a("conversation.assistantCapabilityNavigationExpanded"));break}case"worktrees.create":{const i=$(r,"result"),l=$(i,"workspace");T(n,a("conversation.assistantCapabilityLabelWorkspace"),Ce(L(l,"id")??e.targetRef.id,L(l,"name"),t)),T(n,a("conversation.assistantCapabilityLabelBranch"),L(i,"branchName"));break}case"worktrees.merge-into-parent":case"worktrees.cleanup":{const i=$(r,"result");T(n,a("conversation.assistantCapabilityLabelWorkspace"),Ce(e.targetRef.id,null,t)),T(n,a("conversation.assistantCapabilityLabelStatus"),L(i,"status"));break}case"debug-targets.run":{const i=$(r,"result");T(n,a("conversation.assistantCapabilityLabelDebugTarget"),e.targetRef.id),T(n,a("conversation.assistantCapabilityLabelRuntime"),L(i,"runtimeId"));break}}return to(n,e,t),n.slice(0,4)}function to(e,t,n){t.targetRef.kind==="session"&&(T(e,a("conversation.assistantCapabilityLabelSession"),_e(t.targetRef.id,null,n)),T(e,a("conversation.assistantCapabilityLabelWorkspace"),Gs(t.targetRef.id,n))),(t.targetRef.kind==="workspace"||t.targetRef.kind==="worktree")&&T(e,a("conversation.assistantCapabilityLabelWorkspace"),Ce(t.targetRef.id,null,n)),t.targetRef.kind==="terminal"&&T(e,a("conversation.assistantCapabilityLabelTerminal"),t.targetRef.id),t.targetRef.kind==="timer"&&T(e,a("conversation.assistantCapabilityLabelTimer"),t.targetRef.id);const r=no(t.payload);r!==null&&T(e,a("conversation.assistantCapabilityLabelCount"),String(r))}function T(e,t,n){const r=n==null?void 0:n.trim();r&&(e.some(i=>i.label===t)||e.push({label:t,value:r}))}function _e(e,t,n){const r=t==null?void 0:t.trim();if(r)return r;const i=e==null?void 0:e.trim();return i?n.sessionNamesById.get(i)??i:null}function Ce(e,t,n){const r=t==null?void 0:t.trim();if(r)return r;const i=e==null?void 0:e.trim();return i?n.workspaceNamesById.get(i)??i:null}function Gs(e,t){const n=e==null?void 0:e.trim();return n?Ce(t.sessionWorkspaceIdsById.get(n)??null,null,t):null}function no(e){const t=tn(e,"items");if(t)return t.length;const n=$(e,"page"),r=tn(n,"items");if(r)return r.length;const i=$(e,"history"),l=tn(i,"items");return l?l.length:null}function rs(e){const t=e==null?void 0:e.trim();if(!t)return null;const n=Date.parse(t);return Number.isFinite(n)?new Intl.DateTimeFormat(void 0,{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(n)):t}function so(e){switch(e){case"active":return a("conversation.assistantCapabilityStatusActive");case"completed":return a("conversation.assistantCapabilityStatusCompleted");case"cancelled":return a("conversation.assistantCapabilityStatusCancelled");case"failed":return a("conversation.assistantCapabilityStatusFailed");default:return e}}function ro({kind:e}){switch(e){case"session":return s.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:s.jsx("path",{d:"M5 7.5A2.5 2.5 0 0 1 7.5 5h9A2.5 2.5 0 0 1 19 7.5v5A2.5 2.5 0 0 1 16.5 15H11l-4 4v-4H7.5A2.5 2.5 0 0 1 5 12.5z"})});case"automation":return s.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[s.jsx("circle",{cx:"12",cy:"12",r:"7.5"}),s.jsx("path",{d:"M12 8.5v4.2l2.8 1.8"})]});case"terminal":return s.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[s.jsx("path",{d:"m7 8 3.5 3.5L7 15"}),s.jsx("path",{d:"M13 15h4"}),s.jsx("rect",{x:"4.5",y:"5.5",width:"15",height:"13",rx:"2.5"})]});case"workspace":return s.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:s.jsx("path",{d:"M4.5 8.5A2.5 2.5 0 0 1 7 6h3l1.5 1.5H17A2.5 2.5 0 0 1 19.5 10v6A2.5 2.5 0 0 1 17 18.5H7A2.5 2.5 0 0 1 4.5 16z"})});case"debug":return s.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[s.jsx("path",{d:"M9 4.5h6"}),s.jsx("path",{d:"M10 8h4a4 4 0 0 1 4 4v1a6 6 0 0 1-12 0v-1a4 4 0 0 1 4-4Z"}),s.jsx("path",{d:"M4.5 11h3M16.5 11h3M5.5 7.5l2 1.5M18.5 7.5l-2 1.5"})]});case"query":default:return s.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8","aria-hidden":"true",children:[s.jsx("circle",{cx:"11",cy:"11",r:"5.5"}),s.jsx("path",{d:"m16 16 3.5 3.5"})]})}}function io(e){if(e.name==="apply_patch"){const l=Jn(e.input);if(l)return l;const o=ia(e.output||e.error||""),u=ra(e.input,o);return u?Jn(u):null}if(e.name!=="Write"&&e.name!=="Edit"&&e.name!=="MultiEdit")return null;const t=vn(e.input);if(!t)return null;const n=Pe(t,"file_path")||Pe(t,"path");if(!n)return null;if(e.name==="Write"){const l=Pe(t,"content"),o=l.length>0?l.split(/\r?\n/):[];return{files:[{path:n,nextPath:null,action:"add",additions:o.length,deletions:0,statsKnown:!0,lines:o.map((u,p)=>({kind:"add",text:`+${u}`,oldLineNumber:null,newLineNumber:p+1}))}],totalAdditions:o.length,totalDeletions:0}}if(e.name==="Edit"){const l=Pe(t,"old_string").split(/\r?\n/),o=Pe(t,"new_string").split(/\r?\n/);return is(n,[{oldLines:l,newLines:o}])}const i=(Array.isArray(t.edits)?t.edits:[]).map(l=>{if(!l||typeof l!="object"||Array.isArray(l))return null;const o=l;return{oldLines:Pe(o,"old_string").split(/\r?\n/),newLines:Pe(o,"new_string").split(/\r?\n/)}}).filter(l=>!!l);return i.length>0?is(n,i):null}function is(e,t){const n=[];let r=0,i=0;return t.forEach((l,o)=>{n.push({kind:"hunk",text:`@@ -1,${l.oldLines.length} +1,${l.newLines.length} @@`,oldLineNumber:null,newLineNumber:null}),l.oldLines.forEach((u,p)=>{u.length===0&&l.oldLines.length===1&&l.newLines.length>0||(i+=1,n.push({kind:"remove",text:`-${u}`,oldLineNumber:p+1,newLineNumber:null}))}),l.newLines.forEach((u,p)=>{u.length===0&&l.newLines.length===1&&l.oldLines.length>0||(r+=1,n.push({kind:"add",text:`+${u}`,oldLineNumber:null,newLineNumber:p+1}))}),o<t.length-1&&n.push({kind:"meta",text:"***",oldLineNumber:null,newLineNumber:null})}),{files:[{path:e,nextPath:null,action:"update",additions:r,deletions:i,statsKnown:!0,lines:n}],totalAdditions:r,totalDeletions:i}}function ao(e){const t=vn(e.input),n=t&&typeof t.command=="string"?t.command.trim():"";if(n)return`${a("conversation.toolPreviewCommand")}:${n}`;if(e.name==="read_thread_terminal")return a("conversation.toolPreviewTerminal");const r=e.input||e.error||e.output||a("conversation.toolResultEmpty");return r.length>60?`${r.slice(0,60)}...`:r}function oo(e){var l;const t=e.map(o=>({message:o,tool:zs(o)})).filter(o=>!!o.tool);if(t.length===0)return null;const n={...t[0].tool};let r=!1,i=!1;for(const{message:o,tool:u}of t)o.kind==="tool_call"&&(r=!0,!n.input&&u.input&&(n.input=u.input)),o.kind==="tool_result"&&(i=!0,n.output=u.output,n.error=u.error,n.status=u.status,!n.input&&u.input&&(n.input=u.input)),!n.name&&u.name&&(n.name=u.name);return{key:t.map(({message:o})=>o.id).join(":"),tool:n,hasRequest:r,hasResult:i,updatedAt:((l=t.at(-1))==null?void 0:l.message.timestamp)??t[0].message.timestamp}}function lo(e){const t=new Map;for(const n of e){const r=zs(n);if(!r)continue;const i=t.get(r.callId);if(i){i.messages.push(n);continue}t.set(r.callId,{messages:[n],firstSequence:n.sequence})}return Array.from(t.values()).sort((n,r)=>n.firstSequence-r.firstSequence).map(n=>oo(n.messages)).filter(n=>!!n)}function co(e){const t=[];for(let n=0;n<e.length;n+=1){const r=e[n];if(uo(e,n))continue;if(!Ft(r)){t.push({type:"message",key:r.id,message:r});continue}const i=[r];let l=n+1;for(;l<e.length;){const u=e[l];if(!Ft(u))break;i.push(u),l+=1}const o=lo(i);if(o.length===0){t.push({type:"message",key:r.id,message:r}),n=l-1;continue}o.forEach(u=>{t.push({type:"tool_group",key:u.key,group:u})}),n=l-1}return t}function uo(e,t){const n=e[t];if(!n||Ds(n.content)===null)return!1;for(let r=t-1;r>=0;r-=1){const i=e[r];if(!(!i||Ft(i)))return i.role==="user"}return!1}function mo(e,t){if(!Jr(null,e))return!1;const n=t.trim();return/AGENTS\.md instructions for/i.test(n)&&/<INSTRUCTIONS>/i.test(n)&&/<\/INSTRUCTIONS>/i.test(n)}function po(e,t){if(e!=="claude-code")return!1;const n=t.trim();return/Base directory for this skill:/i.test(n)&&/^#\s+.+/im.test(n)&&/\bARGUMENTS:/i.test(n)}function fo(e,t){if(e==="skill_context"){const r=t.split(/\r?\n/).map(i=>i.trim()).find(i=>/^#\s+/.test(i));if(r)return r.replace(/^#+\s*/,"")}const n=t.split(/\r?\n/).map(r=>r.trim()).find(Boolean);return n?n.replace(/^#+\s*/,""):a("conversation.rulesMessageTitle")}function ho(e,t){const n=new Set;if(t!=="kimi")return n;for(const r of e){if(r.role==="system"&&r.kind==="text"){n.add(r.id);continue}break}return n}function vt(e){var t;return typeof e=="string"||typeof e=="number"?String(e):Array.isArray(e)?e.map(n=>vt(n)).join(""):e&&typeof e=="object"&&"props"in e?vt(((t=e.props)==null?void 0:t.children)??""):""}function go(e){const t=Array.isArray(e)?e[0]:e;if(!d.isValidElement(t))return null;const n=t.props,r=typeof n.className=="string"?n.className:"",i=/language-([^\s]+)/.exec(r);return{content:vt(n.children).replace(/\n$/,""),codeClassName:r||void 0,language:(i==null?void 0:i[1])??null}}function vo(e){if(typeof document>"u"||typeof document.execCommand!="function")return!1;const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly","true"),t.style.position="fixed",t.style.top="-9999px",t.style.left="-9999px",t.style.opacity="0",document.body.appendChild(t),t.focus(),t.select();try{return document.execCommand("copy")}catch{return!1}finally{document.body.removeChild(t)}}async function bn(e,t){var n;if(!(t.isDesktop&&(await t.bridge.writeClipboardText(e)).ok)){if(typeof navigator<"u"&&((n=navigator.clipboard)!=null&&n.writeText))try{await navigator.clipboard.writeText(e);return}catch{}if(!vo(e))throw new Error(a("conversation.copyContentFailed"))}}function xo({className:e,children:t,onCopy:n}){const r=d.useContext(Us),i=vt(t).trim();if(r||!i)return s.jsx("code",{className:e||void 0,children:t});function l(o){o.key!=="Enter"&&o.key!==" "||(o.preventDefault(),n(i))}return s.jsx("code",{className:[e,"markdown-inline-copy"].filter(Boolean).join(" "),role:"button",tabIndex:0,"aria-label":a("conversation.copyAction"),onClick:()=>n(i),onKeyDown:l,children:t})}function bo({href:e,children:t,className:n,onInteract:r}){const i=vt(t).trim()||(e?gn(e).trim():"");return s.jsx(Us.Provider,{value:!0,children:s.jsx("a",{href:e,className:[n,"markdown-interactive-link"].filter(Boolean).join(" "),onClick:l=>{l.preventDefault(),r(e,i)},children:t})})}function Qs({language:e,codeClassName:t,content:n}){const{showToast:r}=kt(),i=yt(),l=(e==null?void 0:e.trim().toLowerCase())??null,o=l==="text",u=l||"code";async function p(){try{await bn(n,i),r({title:a("conversation.copyContentSuccess"),tone:"success"})}catch(y){r({title:y instanceof Error?y.message:a("conversation.copyContentFailed"),tone:"error"})}}return s.jsxs("div",{className:`code-block${o?" text-code-block":""}`,children:[s.jsxs("div",{className:"code-header",children:[s.jsx("span",{className:"code-header-label",children:u}),s.jsx("button",{className:"code-copy-button",type:"button",onClick:()=>void p(),children:a("conversation.copyAction")})]}),s.jsx("pre",{className:t,children:s.jsx("code",{children:n})})]})}function ut({content:e,className:t}){const{showToast:n}=kt(),r=yt(),{navigationGroups:i,currentWorkspaceId:l,revealWorkspaceFile:o}=bs(),u=d.useMemo(()=>{var m;return((m=i.find(g=>g.workspace.id===l))==null?void 0:m.workspace)??null},[l,i]);async function p(m){if(m.trim())try{await bn(m,r),n({title:a("conversation.copyContentSuccess"),tone:"success"})}catch(g){n({title:g instanceof Error?g.message:a("conversation.copyContentFailed"),tone:"error"})}}function y(m,g){const h=m&&(u!=null&&u.path)?Wa(m,u.path):null;h&&o({workspaceId:(u==null?void 0:u.id)??l,filePath:h,openViewer:!1})||p(g||(m?gn(m).trim():""))}return s.jsx("div",{className:t,children:s.jsx(si,{remarkPlugins:[ri],components:{p:({node:m,...g})=>s.jsx("p",{...g}),a(m){return s.jsx(bo,{href:typeof m.href=="string"?m.href:void 0,className:typeof m.className=="string"?m.className:void 0,onInteract:y,children:m.children})},pre(m){const g=go(m.children);return g?s.jsx(Qs,{language:g.language,codeClassName:g.codeClassName,content:g.content}):s.jsx("pre",{children:m.children})},code(m){const g=typeof m.className=="string"?m.className:"";return s.jsx(xo,{className:g||void 0,onCopy:h=>{p(h)},children:m.children})}},children:e})})}function as(e,t){return e.kind!=="image"||!(t!=null&&t.contentBase64)||t.mimeType!==e.mimeType?null:`data:${t.mimeType};base64,${t.contentBase64}`}function yo(e){return typeof e!="number"||!Number.isFinite(e)||e<0?null:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function It({sessionId:e,attachmentPayloads:t=[],attachments:n=[],inlineImages:r=[]}){return s.jsx(ko,{sessionId:e,attachments:n,attachmentPayloads:t,inlineImages:r})}function ko({sessionId:e,attachmentPayloads:t=[],attachments:n=[],inlineImages:r=[]}){const[i,l]=d.useState({}),[o,u]=d.useState(null),p=d.useMemo(()=>n.map((h,C)=>{const b=as(h,t==null?void 0:t[C]);if(b)return{id:h.id,kind:h.kind,fileName:h.fileName,fileSize:h.fileSize,url:b,status:"ready"};const v=i[h.id];return{id:h.id,kind:h.kind,fileName:h.fileName,fileSize:h.fileSize,url:(v==null?void 0:v.url)??null,status:(v==null?void 0:v.status)??(e?"loading":"error")}}),[t,n,i,e]),y=d.useMemo(()=>r.map((h,C)=>({id:`inline-image-${C}`,kind:"image",fileName:h.altText||`${a("conversation.imageAttachmentLabel")} ${C+1}`,fileSize:h.estimatedBytes,url:h.url,status:"ready"})),[r]),m=d.useMemo(()=>[...y,...p],[p,y]),g=m.find(h=>h.id===o)??null;return d.useEffect(()=>{if(!o)return;function h(C){C.key==="Escape"&&u(null)}return window.addEventListener("keydown",h),()=>window.removeEventListener("keydown",h)},[o]),d.useEffect(()=>{const h=n.filter((v,R)=>!as(v,t==null?void 0:t[R]));if(!e||h.length===0){l({});return}let C=!1;const b=[];return l(Object.fromEntries(h.map(v=>[v.id,{id:v.id,kind:v.kind,fileName:v.fileName,fileSize:v.fileSize,url:null,status:"loading"}]))),Promise.all(h.map(async v=>{try{const R=await Yr(e,v.id),w=URL.createObjectURL(R);return b.push(w),{id:v.id,kind:v.kind,fileName:v.fileName,fileSize:v.fileSize,url:w,status:"ready"}}catch{return{id:v.id,kind:v.kind,fileName:v.fileName,fileSize:v.fileSize,url:null,status:"error"}}})).then(v=>{if(C){b.forEach(R=>URL.revokeObjectURL(R));return}l(Object.fromEntries(v.map(R=>[R.id,R])))}),()=>{C=!0,b.forEach(v=>URL.revokeObjectURL(v))}},[t,n,e]),m.length===0?null:s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"message-attachments",children:m.map(h=>{const C=h.kind==="image",b=h.status==="loading"?a("conversation.attachmentPreviewLoading"):h.status==="error"?a("conversation.attachmentPreviewUnavailable"):C?a("conversation.attachmentPreviewOpen"):a("conversation.attachmentDownload"),v=yo(h.fileSize),R=s.jsx("div",{className:"message-attachment-card",children:C?h.url?s.jsx("img",{className:"message-attachment-thumbnail",src:h.url,alt:h.fileName||a("conversation.attachmentPreviewAlt"),loading:"lazy"}):s.jsx("div",{className:"message-attachment-placeholder","aria-hidden":"true",children:h.status==="loading"?a("conversation.attachmentPreviewLoading"):a("conversation.attachmentPreviewUnavailable")}):s.jsxs("div",{className:"message-attachment-file-card",children:[s.jsx("div",{className:"message-attachment-file-icon","aria-hidden":"true",children:s.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",children:[s.jsx("path",{d:"M14 2H7a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7z"}),s.jsx("path",{d:"M14 2v5h5"}),s.jsx("path",{d:"M9 13h6"}),s.jsx("path",{d:"M9 17h6"})]})}),s.jsxs("div",{className:"message-attachment-file-meta",children:[s.jsx("strong",{title:h.fileName,children:h.fileName}),s.jsx("span",{children:v??a("conversation.fileAttachmentLabel")})]})]})});return!C&&h.url?s.jsx("a",{className:"message-attachment-button",href:h.url,download:h.fileName,"aria-label":`${h.fileName} - ${b}`,title:b,children:R},h.id):s.jsx("button",{type:"button",className:"message-attachment-button",onClick:()=>C&&h.url&&u(h.id),disabled:!h.url,"aria-label":`${h.fileName} - ${b}`,title:b,children:R},h.id)})}),s.jsx(xs,{open:!!(g!=null&&g.url),title:a("conversation.imagePreviewTitle"),description:g==null?void 0:g.fileName,size:"xwide",layout:"viewer",className:"message-image-modal",bodyClassName:"message-image-modal-body",onClose:()=>u(null),children:g!=null&&g.url?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"message-image-modal-stage",children:s.jsx("img",{className:"message-image-modal-image",src:g.url,alt:g.fileName||a("conversation.attachmentPreviewAlt")})}),s.jsx("p",{className:"message-image-modal-hint",children:a("conversation.imagePreviewHint")})]}):null})]})}function Co(){return s.jsx("div",{className:"timeline-skeleton","aria-hidden":"true",children:Array.from({length:3},(e,t)=>s.jsxs("article",{className:`timeline-skeleton-item ${t%2===0?"assistant":"user"}`,children:[s.jsx("div",{className:"timeline-skeleton-avatar"}),s.jsxs("div",{className:"timeline-skeleton-bubble",children:[s.jsx("span",{className:"timeline-skeleton-line long"}),s.jsx("span",{className:"timeline-skeleton-line medium"}),s.jsx("span",{className:"timeline-skeleton-line short"})]})]},t))})}function jo({tool:e,preview:t}){const[n,r]=d.useState(null),i=n===null?null:t.files[n]??null;return d.useEffect(()=>{if(n===null)return;function l(o){o.key==="Escape"&&r(null)}return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[n]),s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"tool-call-item apply-patch-item",children:t.files.map((l,o)=>s.jsxs("button",{type:"button",className:"apply-patch-summary-row",onClick:()=>r(o),children:[s.jsx("span",{className:"apply-patch-summary-label",children:ls(l.action)}),s.jsx("span",{className:"apply-patch-summary-file",title:nn(l),children:aa(l.nextPath??l.path)}),us(l)]},cs(l,o)))}),s.jsx(xs,{open:i!==null,title:a("conversation.applyPatchDialogTitle"),description:a("conversation.applyPatchDialogDescription"),size:"full",layout:"viewer",className:"apply-patch-modal",bodyClassName:"apply-patch-modal-body",onClose:()=>r(null),children:i?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"apply-patch-modal-totals",children:Mo(i)}),s.jsxs("section",{className:"apply-patch-file-panel",children:[s.jsxs("div",{className:"apply-patch-file-panel-header",children:[s.jsxs("div",{className:"apply-patch-file-panel-title",children:[s.jsx("span",{className:"apply-patch-summary-label",children:ls(i.action)}),s.jsx("strong",{children:nn(i)})]}),us(i)]}),s.jsx("div",{className:"apply-patch-diff-view",children:s.jsx("div",{className:"apply-patch-diff-scroll",children:i.lines.map((l,o)=>s.jsxs("div",{className:`apply-patch-diff-line ${Ao(l.kind)}`,children:[s.jsx("span",{className:"apply-patch-line-number",children:ds(l.oldLineNumber)}),s.jsx("span",{className:"apply-patch-line-number",children:ds(l.newLineNumber)}),s.jsx("span",{className:"apply-patch-line-content",children:l.text||" "})]},`${nn(i)}:${o}`))})})]},cs(i,n??0)),e.error?s.jsxs("section",{className:"apply-patch-error-panel",children:[s.jsx("div",{className:"tool-call-section-label",children:a("conversation.toolResultLabel")}),s.jsx("pre",{className:"tool-call-error",children:e.error})]}):null]}):null})]})}function wo({group:e}){const[t,n]=d.useState(!1),{navigationGroups:r}=bs(),{tool:i,hasRequest:l,hasResult:o}=e,u=Fa(i.name),p=d.useMemo(()=>za(r),[r]),y=d.useMemo(()=>$a(i,p),[p,i]),m=d.useMemo(()=>Ha(i,p),[p,i]),g=d.useMemo(()=>oi(i,null,e.updatedAt),[e.updatedAt,i]),h=d.useMemo(()=>io(i),[i.input,i.name]);if(h)return s.jsx(jo,{tool:i,preview:h});if(y)return s.jsx(os,{tool:i,snapshot:y,expanded:t,hasRequest:l,hasResult:o,onToggleExpanded:()=>{n(v=>!v)}});if(m)return s.jsx(os,{tool:i,snapshot:m,expanded:t,hasRequest:l,hasResult:o,onToggleExpanded:()=>{n(v=>!v)}});if(g)return s.jsx(No,{tool:i,snapshot:g,expanded:t,hasRequest:l,hasResult:o,onToggleExpanded:()=>{n(v=>!v)}});const C=ao(i),b=!!(i.input||i.output||i.error);return s.jsxs("div",{className:`tool-call-item ${o?"tool-result":""}`,children:[s.jsxs("button",{type:"button",className:"tool-call-header",onClick:()=>b&&n(v=>!v),children:[s.jsxs("div",{className:"tool-call-info",children:[s.jsx("span",{className:"tool-call-name",children:u}),s.jsx("span",{className:"tool-call-input-preview",children:C})]}),s.jsx("div",{className:"tool-call-meta",children:b&&s.jsx("span",{className:`tool-call-toggle ${t?"expanded":""}`,children:s.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:s.jsx("polyline",{points:"6 9 12 15 18 9"})})})})]}),t&&b&&s.jsxs("div",{className:"tool-call-output",children:[l&&i.input&&s.jsxs("div",{className:"tool-call-section",children:[s.jsx("div",{className:"tool-call-section-label",children:a("conversation.toolInputLabel")}),s.jsx("pre",{children:i.input})]}),(o||i.error||i.output)&&s.jsxs("div",{className:"tool-call-section",children:[s.jsx("div",{className:"tool-call-section-label",children:a("conversation.toolResultLabel")}),s.jsx("pre",{className:i.error?"tool-call-error":void 0,children:i.error||i.output||a("conversation.toolResultEmpty")})]})]})]})}function os({tool:e,snapshot:t,expanded:n,hasRequest:r,hasResult:i,onToggleExpanded:l}){const o=n?a("conversation.assistantCapabilityRawCollapse"):a("conversation.assistantCapabilityRawExpand");return s.jsxs("div",{className:"tool-call-item assistant-capability-item","data-kind":t.kind,children:[s.jsxs("div",{className:"assistant-capability-header",children:[s.jsxs("div",{className:"assistant-capability-heading",children:[s.jsx("span",{className:"assistant-capability-icon",children:s.jsx(ro,{kind:t.kind})}),s.jsxs("div",{className:"assistant-capability-heading-main",children:[s.jsx("span",{className:"assistant-capability-badge",children:t.badge}),s.jsx("strong",{children:t.title}),s.jsx("span",{className:"assistant-capability-summary",children:t.summary})]})]}),s.jsx("button",{type:"button",className:"task-tool-raw-toggle",onClick:l,children:o})]}),t.rows.length>0?s.jsx("div",{className:"assistant-capability-list",children:t.rows.map(u=>s.jsxs("div",{className:"assistant-capability-row",children:[s.jsx("span",{className:"assistant-capability-row-label",children:u.label}),s.jsx("span",{className:"assistant-capability-row-value",children:u.value})]},u.label))}):null,n?s.jsxs("div",{className:"tool-call-output",children:[r&&e.input?s.jsxs("div",{className:"tool-call-section",children:[s.jsx("div",{className:"tool-call-section-label",children:a("conversation.toolInputLabel")}),s.jsx("pre",{children:e.input})]}):null,i||e.error||e.output?s.jsxs("div",{className:"tool-call-section",children:[s.jsx("div",{className:"tool-call-section-label",children:a("conversation.toolResultLabel")}),s.jsx("pre",{className:e.error?"tool-call-error":void 0,children:e.error||e.output||a("conversation.toolResultEmpty")})]}):null]}):null]})}function No({tool:e,snapshot:t,expanded:n,hasRequest:r,hasResult:i,onToggleExpanded:l}){const o=Cs(t.items),u=n?a("conversation.taskCardRawCollapse"):a("conversation.taskCardRawExpand");return s.jsxs("div",{className:"tool-call-item task-tool-item",children:[s.jsxs("div",{className:"task-tool-header",children:[s.jsxs("div",{className:"task-tool-heading",children:[s.jsx("span",{className:"task-tool-badge",children:t.source==="plan"?a("conversation.taskCardPlanTitle"):a("conversation.taskCardTodoTitle")}),s.jsxs("div",{className:"task-tool-heading-main",children:[s.jsx("strong",{children:So(t,e.name)}),s.jsx("span",{className:"task-tool-summary-text",children:To(t.items,o)})]})]}),s.jsx("button",{type:"button",className:"task-tool-raw-toggle",onClick:l,children:u})]}),s.jsx("ol",{className:"task-tool-list",children:t.items.map(p=>s.jsxs("li",{className:"task-tool-list-item","data-status":p.status,children:[s.jsx("span",{className:"task-tool-item-indicator","data-status":p.status,"aria-hidden":"true"}),s.jsx("strong",{className:"task-tool-item-title",children:p.title}),p.detail?s.jsx("span",{className:"task-tool-item-detail",children:p.detail}):null,s.jsx("span",{className:"task-tool-item-status",children:Ro(p.status)})]},p.id))}),n?s.jsxs("div",{className:"tool-call-output",children:[r&&e.input?s.jsxs("div",{className:"tool-call-section",children:[s.jsx("div",{className:"tool-call-section-label",children:a("conversation.toolInputLabel")}),s.jsx("pre",{children:e.input})]}):null,i||e.error||e.output?s.jsxs("div",{className:"tool-call-section",children:[s.jsx("div",{className:"tool-call-section-label",children:a("conversation.toolResultLabel")}),s.jsx("pre",{className:e.error?"tool-call-error":void 0,children:e.error||e.output||a("conversation.toolResultEmpty")})]}):null]}):null]})}function So(e,t){if(e.source==="plan")return a("conversation.taskCardPlanUpdated");const n=t.trim().toLowerCase();return n==="taskcreate"||n==="todowrite"||n==="todoread"?a("conversation.taskCardTodoUpdated"):n.startsWith("task")?a("conversation.taskCardTodoUpdated"):a("conversation.taskCardTodoUpdated")}function To(e,t){const n=[a("conversation.taskCardSummaryTotal",{count:e.length})];return t.in_progress>0&&n.push(a("conversation.taskCardSummaryInProgress",{count:t.in_progress})),t.pending>0&&n.push(a("conversation.taskCardSummaryPending",{count:t.pending})),t.completed>0&&n.push(a("conversation.taskCardSummaryCompleted",{count:t.completed})),t.failed>0&&n.push(a("conversation.taskCardSummaryFailed",{count:t.failed})),n.join(" / ")}function Ro(e){switch(e){case"in_progress":return a("conversation.taskProgressStatusInProgress");case"completed":return a("conversation.taskProgressStatusCompleted");case"failed":return a("conversation.taskProgressStatusFailed");case"cancelled":return a("conversation.taskProgressStatusCancelled");case"pending":default:return a("conversation.taskProgressStatusPending")}}function ls(e){return e==="add"?a("conversation.applyPatchAddedLabel"):e==="delete"?a("conversation.applyPatchDeletedLabel"):a("conversation.applyPatchEditedLabel")}function nn(e){return e.nextPath&&e.nextPath!==e.path?`${e.path} -> ${e.nextPath}`:e.nextPath??e.path}function cs(e,t){return`${e.path}:${e.nextPath??""}:${t}`}function us(e){return e.statsKnown?s.jsxs("span",{className:"apply-patch-summary-stats",children:[s.jsxs("span",{className:"apply-patch-summary-added",children:["+",e.additions]}),s.jsxs("span",{className:"apply-patch-summary-removed",children:["-",e.deletions]})]}):s.jsx("span",{className:"apply-patch-summary-stats",children:s.jsx("span",{className:"apply-patch-summary-edited",children:a("conversation.applyPatchEditedStat")})})}function Mo(e){return e.statsKnown?s.jsxs(s.Fragment,{children:[s.jsxs("span",{className:"apply-patch-stat-pill positive",children:[a("conversation.applyPatchAddedStat")," +",e.additions]}),s.jsxs("span",{className:"apply-patch-stat-pill negative",children:[a("conversation.applyPatchRemovedStat")," -",e.deletions]})]}):s.jsx("span",{className:"apply-patch-stat-pill neutral",children:a("conversation.applyPatchEditedStat")})}function Ao(e){return e==="add"?"is-added":e==="remove"?"is-removed":e==="hunk"?"is-hunk":e==="meta"?"is-meta":"is-context"}function ds(e){return e===null||e<=0?"":String(e)}function Lo(e){return new Date(e).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function Zs({timestamp:e,leading:t,children:n}){return s.jsxs("div",{className:"user-message-footer",children:[s.jsx("div",{className:"user-message-footer-leading",children:t}),s.jsxs("div",{className:"user-message-footer-trailing",children:[s.jsx("time",{className:"message-time",dateTime:e,children:Lo(e)}),n]})]})}function Ie({text:e,canCopy:t=!0,canFork:n=!1,compact:r=!1,onFork:i}){const{showToast:l}=kt(),o=yt(),[u,p]=d.useState(!1),[y,m]=d.useState(!1),g=e.trim().length>0,h=t&&g;async function C(){if(!(!h||u)){p(!0);try{await bn(e,o),l({title:a("conversation.copyContentSuccess"),tone:"success"})}catch(v){l({title:v instanceof Error?v.message:a("conversation.copyContentFailed"),tone:"error"})}finally{p(!1)}}}async function b(){if(!(!i||y)){m(!0);try{await i()}finally{m(!1)}}}return!h&&!n?null:s.jsxs("div",{className:r?"message-metadata-bar compact":"message-metadata-bar",children:[h?s.jsx("button",{type:"button",className:"message-metadata-action","aria-label":a("conversation.copyAction"),title:a("conversation.copyAction"),onClick:()=>{C()},disabled:u,children:s.jsx(gi,{})}):null,n?s.jsx("button",{type:"button",className:"message-metadata-action","aria-label":y?a("conversation.forkingAction"):a("conversation.forkFromHereAction"),title:y?a("conversation.forkingAction"):a("conversation.forkFromHereAction"),onClick:()=>{b()},disabled:y,children:s.jsx(vi,{})}):null]})}function Po({message:e,kind:t,tone:n,actionState:r,onRetry:i,onForkMessage:l}){const[o,u]=d.useState(!1),p=fo(t,e.content),y=n==="user-message",m=t==="system_prompt"?a("conversation.systemPromptTitle"):t==="skill_context"?a("conversation.skillContextTitle"):a("conversation.rulesMessageTitle"),g=t==="system_prompt"?a("conversation.systemPromptHint"):t==="skill_context"?a("conversation.skillContextHint"):a("conversation.rulesMessageHint"),h=o?t==="system_prompt"?a("conversation.systemPromptCollapse"):t==="skill_context"?a("conversation.skillContextCollapse"):a("conversation.rulesMessageCollapse"):t==="system_prompt"?a("conversation.systemPromptExpand"):t==="skill_context"?a("conversation.skillContextExpand"):a("conversation.rulesMessageExpand");return s.jsx("article",{className:`message-item ${n} rules-message-row`,"data-message-id":e.id,children:s.jsxs("div",{className:"message-content-wrapper",children:[s.jsxs("div",{className:"rules-message-card",children:[s.jsxs("button",{type:"button",className:"rules-message-toggle","aria-expanded":o,onClick:()=>u(C=>!C),children:[s.jsxs("div",{className:"rules-message-heading",children:[s.jsx("span",{className:"rules-message-badge",children:m}),s.jsx("span",{className:"rules-message-summary",children:p})]}),s.jsx("span",{className:"rules-message-action",children:h})]}),s.jsx("p",{className:"rules-message-hint",children:g}),o&&s.jsx("div",{className:"rules-message-body",children:s.jsx(ut,{content:e.content,className:"message-text message-content markdown-content"})}),y?s.jsx(Zs,{timestamp:e.timestamp,children:s.jsx(Ie,{text:e.content,canCopy:r.canCopy,canFork:r.canFork&&!!(l&&e.deliveryState==="sent"),compact:!0,onFork:l?()=>l(e):null})}):s.jsx(Ie,{text:e.content,canCopy:r.canCopy,canFork:r.canFork&&!!(l&&e.deliveryState==="sent"),onFork:l?()=>l(e):null})]}),e.deliveryState==="failed"&&e.clientRequestId&&s.jsx("button",{className:"retry-button",type:"button",onClick:()=>i(e.clientRequestId),children:a("conversation.resendButton")})]})})}function Io({message:e,provider:t,interruptedSource:n=null,foldedPromptKind:r=null,actionState:i,onRetry:l,onForkMessage:o,assistantAvatar:u}){const p=e.role==="user",y=e.kind==="thinking",m=e.role==="assistant"&&e.kind==="text",g=t==="codex"&&e.kind==="text"?Ds(e.content):null,h=r??(mo(t,e.content)?"rules":po(t,e.content)?"skill_context":null),C=d.useMemo(()=>Ye(e.content),[e.content]),b=C.text,v=C.inlineImages,[R,w]=d.useState(!1),[N,F]=d.useState(!1),[M,B]=d.useState(null),[O,q]=d.useState(null);if(h){const E=e.role==="user"?"user-message":e.role==="assistant"?"assistant-message":"system-message";return s.jsx(Po,{message:e,kind:h,tone:E,actionState:i,onRetry:l,onForkMessage:o})}if(g){const E=Ma(n),P=g.detail?`${E}
15
+
16
+ ${g.detail}`:E;return s.jsxs("article",{className:"message-item assistant-message","data-message-id":e.id,children:[s.jsx("div",{className:"message-avatar",children:u??s.jsx(sn,{})}),s.jsxs("div",{className:"message-content-wrapper",children:[s.jsx(ut,{content:P,className:"message-text message-content markdown-content"}),s.jsx(Ie,{text:P,canCopy:i.canCopy,canFork:!1,onFork:null})]})]})}if(p){const E=e.origin==="butler_proxy"||Eo(e.clientRequestId),P=e.origin==="butler_proxy"&&typeof e.originRef=="string"&&e.originRef.trim().length>0;async function Y(){if(!P)return;const X=!R;if(w(X),!(!X||O||N)){F(!0),B(null);try{const D=await ei(e.originRef);q(D.task)}catch(D){B(D instanceof Error?D.message:a("conversation.butlerOriginDetailLoadFailed"))}finally{F(!1)}}}const H=E?P?s.jsxs("div",{className:"message-origin-detail-anchor",children:[s.jsx("button",{type:"button",className:"message-origin-badge message-origin-badge-button","aria-expanded":R,onClick:()=>{Y()},children:a("conversation.butlerProxyMessageBadge")}),R?s.jsxs("div",{className:"message-origin-detail-popover",role:"dialog","aria-live":"polite",children:[s.jsx("strong",{children:a("conversation.butlerOriginDetailTitle")}),N?s.jsx("p",{children:a("conversation.butlerOriginDetailLoading")}):M?s.jsx("p",{children:M}):O?s.jsxs(s.Fragment,{children:[s.jsxs("p",{children:[a("conversation.butlerOriginDetailObjectiveLabel"),":",O.objective]}),s.jsxs("p",{children:[a("conversation.butlerOriginDetailStatusLabel"),":",_o(O.status)]}),s.jsxs("p",{children:[a("conversation.butlerOriginDetailSummaryLabel"),":",O.lastAutomationSummary||a("conversation.butlerAnalysisEmpty")]}),O.waitingReason?s.jsxs("p",{children:[a("conversation.butlerOriginDetailWaitingReasonLabel"),":",O.waitingReason]}):null]}):s.jsx("p",{children:a("conversation.butlerAnalysisEmpty")})]}):null]}):s.jsx("span",{className:"message-origin-badge",children:a("conversation.butlerProxyMessageBadge")}):null;return s.jsx("article",{className:"message-item user-message","data-message-id":e.id,children:s.jsxs("div",{className:"message-content-wrapper",children:[s.jsx(It,{sessionId:e.sessionId,attachments:e.attachments,attachmentPayloads:e.attachmentPayloads,inlineImages:v}),b?s.jsx(ut,{content:b,className:"message-text message-content markdown-content"}):null,e.deliveryState==="failed"&&e.clientRequestId&&s.jsx("button",{className:"retry-button",type:"button",onClick:()=>l(e.clientRequestId),children:a("conversation.resendButton")}),s.jsx(Zs,{timestamp:e.timestamp,leading:H,children:s.jsx(Ie,{text:b,canCopy:i.canCopy,canFork:i.canFork&&!!(o&&e.deliveryState==="sent"),compact:!0,onFork:o?()=>o(e):null})})]})})}return y?s.jsxs("article",{className:"message-item assistant-message thinking-message-row","data-message-id":e.id,children:[s.jsx("div",{className:"message-avatar",children:u??s.jsx(sn,{})}),s.jsxs("div",{className:"thinking-message-content",children:[s.jsx("div",{className:"thinking-message-label",children:a("conversation.thinkingLabel")}),s.jsx(It,{sessionId:e.sessionId,attachments:e.attachments,attachmentPayloads:e.attachmentPayloads,inlineImages:v}),b&&s.jsx(ut,{content:b,className:"message-text message-content markdown-content thinking-message-text"}),s.jsx(Ie,{text:b,canCopy:i.canCopy,canFork:i.canFork&&!!(o&&e.deliveryState==="sent"),onFork:o?()=>o(e):null})]})]}):m?s.jsxs("article",{className:"message-item assistant-message","data-message-id":e.id,children:[s.jsx("div",{className:"message-avatar",children:u??s.jsx(sn,{})}),s.jsxs("div",{className:"message-content-wrapper",children:[s.jsx(It,{sessionId:e.sessionId,attachments:e.attachments,attachmentPayloads:e.attachmentPayloads,inlineImages:v}),b&&s.jsx(ut,{content:b,className:"message-text message-content markdown-content"}),s.jsx(Ie,{text:b,canCopy:i.canCopy,canFork:i.canFork&&!!(o&&e.deliveryState==="sent"),onFork:o?()=>o(e):null})]})]}):s.jsx("article",{className:"message-item system-message","data-message-id":e.id,children:s.jsxs("div",{className:"message-content-wrapper",children:[s.jsx(It,{sessionId:e.sessionId,attachments:e.attachments,attachmentPayloads:e.attachmentPayloads,inlineImages:v}),b?s.jsx("div",{className:"message-text message-content",children:s.jsx(Qs,{language:"text",content:b})}):null,s.jsx(Ie,{text:b,canCopy:i.canCopy,canFork:i.canFork&&!!(o&&e.deliveryState==="sent"),onFork:o?()=>o(e):null})]})})}function sn(){return s.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[s.jsx("circle",{cx:"12",cy:"12",r:"10"}),s.jsx("path",{d:"M12 16v-4M12 8h.01"})]})}function Eo(e){return typeof e=="string"&&e.startsWith("butler-follow-up:")}function _o(e){switch(e){case"waiting_user":return a("shell.butlerAutomationStatusWaitingUser");case"completed":return a("shell.butlerAutomationStatusCompleted");case"failed":return a("shell.butlerAutomationStatusFailed");case"cancelled":return a("shell.butlerAutomationStatusCancelled");case"active":default:return a("shell.butlerAutomationStatusActive")}}function Nl({sessionId:e="session",messages:t,historyState:n,loadingOlderMessages:r=!1,hasOlderMessages:i=!1,onLoadOlderMessages:l=()=>{},onRetryMessage:o,onForkMessage:u,provider:p,interruptedSource:y=null,runtimeThinkingPlaceholder:m=null,assistantAvatar:g,followTailUpdates:h=!1}){var ze;const{showToast:C}=kt(),b=yt(),v=d.useRef(null),R=d.useRef(e),w=d.useRef(0),N=d.useRef(null),F=d.useRef(!0),M=d.useRef(null),B=d.useRef(null),O=d.useRef(!1),q=d.useRef(h?null:Pt(e)),E=d.useRef(h?null:((ze=Pt(e))==null?void 0:ze.lastMessageSignature)??null),P=d.useRef(h?null:Pt(e)),Y=d.useRef(null),H=d.useRef(null),X=d.useRef(null),D=d.useRef(0),ee=d.useRef(!1),Oe=d.useRef(null),ae=d.useRef(null),[qe,pe]=d.useState(!1),[G,ce]=d.useState(!1),oe=d.useRef(!1),je=co(t),Ct=b.isMobile?0:Ea,fe=d.useMemo(()=>ho(t,p),[t,p]),We=d.useMemo(()=>Bo(t),[t]),jt=n==="loading"&&t.length===0;function we(f){const _=f.scrollHeight-f.clientHeight-f.scrollTop<=ts;return{scrollTop:f.scrollTop,stickToBottom:_,lastMessageSignature:oe.current&&!_?E.current:Ze(t.at(-1)??null)}}function he(f){return P.current=we(f),P.current}function ge(f){const S=f.scrollHeight-f.clientHeight-f.scrollTop,_=S<=ts;F.current=_,_&&oe.current&&(Q(),oe.current=!1,E.current=Ze(t.at(-1)??null),ce(!1)),pe(t.length>0&&(S>ns||oe.current)),he(f)}function te(f=v.current){f&&he(f),P.current&&es(e,P.current)}function et(f){P.current&&es(f,P.current)}function tt(){Y.current!==null&&(window.clearTimeout(Y.current),Y.current=null)}function nt(){tt(),Y.current=window.setTimeout(()=>{Y.current=null,te()},La)}function ve(f){f.scrollTop=f.scrollHeight}function st(){H.current!==null&&(window.clearTimeout(H.current),H.current=null)}function Q(){st(),ee.current=!1,X.current=null,D.current=0,Oe.current=null}function Fe(f,S){const _=Math.max(0,f.scrollHeight-f.clientHeight),Z=Math.max(0,Math.min(S,_));Oe.current=Z,f.scrollTop=Z,F.current=!1,pe(t.length>0&&(_-Z>ns||oe.current))}function Ne(){st(),ee.current&&(H.current=window.setTimeout(()=>{H.current=null;const f=v.current,S=X.current;if(!f||S===null){Q();return}if(Fe(f,S),Date.now()<D.current){Ne();return}Q(),ge(f)},Ia))}function Se(f,S){if(Ct<=0){Fe(S,f),Q();return}ee.current=!0,X.current=f,D.current=Date.now()+Ct,Fe(S,f),Ne()}function ue(){ee.current&&Q()}function xe(f){return O.current||!i||r||n!=="ready"||f.scrollTop>Aa?!1:(O.current=!0,M.current=f.scrollHeight-f.scrollTop,B.current=Ze(t[0]??null),l(),!0)}d.useEffect(()=>{n==="error"&&C({title:a("conversation.historyLoadFailed"),tone:"error"})},[n,C]),d.useLayoutEffect(()=>{var f,S;R.current!==e&&(et(R.current),R.current=e,w.current=0,N.current=null,q.current=h?null:Pt(e),E.current=((f=q.current)==null?void 0:f.lastMessageSignature)??null,P.current=q.current,F.current=h?!0:((S=q.current)==null?void 0:S.stickToBottom)??!0,M.current=null,B.current=null,Q(),oe.current=!1,ce(!1),pe(!1))},[h,e]),d.useLayoutEffect(()=>()=>{tt(),Q(),et(R.current)},[e]),d.useLayoutEffect(()=>{const f=v.current,S=Ze(t.at(-1)??null);if(!f){w.current=t.length,N.current=S;return}const _=w.current,Z=N.current,K=q.current,$e=_===0||t.length!==_||S!==Z;if(K&&n==="ready"){const be=!K.stickToBottom&&K.lastMessageSignature!==null&&S!==null&&K.lastMessageSignature!==S;K.stickToBottom?(Q(),ve(f)):Se(K.scrollTop,f),oe.current=be,E.current=K.lastMessageSignature,ce(be),q.current=null,ge(f),w.current=t.length,N.current=S,he(f);return}if(K&&n==="error"){K.stickToBottom?(Q(),ve(f)):Se(K.scrollTop,f),q.current=null,ge(f),w.current=t.length,N.current=S,he(f);return}if(ee.current){Fe(f,X.current??f.scrollTop),w.current=t.length,N.current=S,he(f);return}const Re=Ze(t[0]??null),Me=M.current,He=B.current,V=Me!==null&&!r&&He!==null&&He!==Re&&t.length>=_,de=$e&&(h||F.current);V?(f.scrollTop=Math.max(0,f.scrollHeight-Me),M.current=null,B.current=null):(M.current!==null&&!r&&(M.current=null,B.current=null),de&&ve(f)),ge(f),w.current=t.length,N.current=S},[n,r,t,e]),d.useEffect(()=>{if(!i){O.current=!1;return}!r&&M.current===null&&(O.current=!1)},[i,r,t.length]);function De(){const f=v.current;if(f){if(ee.current){const S=Oe.current;S!==null&&Math.abs(f.scrollTop-S)<=1?Oe.current=null:ue()}ge(f),nt(),xe(f)}}function Te(f){if(f.deltaY!==0&&ue(),f.deltaY>=0)return;const S=v.current;S&&xe(S)}function rt(f){var S;ue(),ae.current=((S=f.touches[0])==null?void 0:S.clientY)??null}function wt(f){var K;const S=ae.current,_=((K=f.touches[0])==null?void 0:K.clientY)??null;if(S===null||_===null||_-S<Pa)return;ue();const Z=v.current;Z&&xe(Z)}function Ue(){ae.current=null}return s.jsxs("section",{className:"message-timeline",children:[n==="loading"&&s.jsx("div",{className:"timeline-status",children:s.jsx("span",{className:"status-text",children:a("conversation.historyLoading")})}),s.jsxs("div",{ref:v,className:"message-list",onScroll:De,onPointerDown:ue,onWheel:Te,onTouchStart:rt,onTouchMove:wt,onTouchEnd:Ue,onTouchCancel:Ue,children:[jt?s.jsx(Co,{}):null,r?s.jsx("div",{className:"timeline-status timeline-status-inline",children:s.jsx("span",{className:"status-text",children:a("conversation.historyLoadingOlder")})}):null,je.length===0&&n==="ready"&&s.jsx("div",{className:"timeline-empty",children:s.jsx("p",{className:"status-text",children:a("conversation.timelineEmpty")})}),je.map(f=>f.type==="tool_group"?s.jsx("article",{className:"message-item tool-message-row",children:s.jsx(wo,{group:f.group})},f.key):s.jsx(Io,{message:f.message,provider:p,foldedPromptKind:fe.has(f.message.id)?"system_prompt":null,actionState:We.get(f.message.id)??{canCopy:f.message.role==="user",canFork:!1},onRetry:o,onForkMessage:u,interruptedSource:y,assistantAvatar:g},f.key)),m?s.jsx("div",{className:"timeline-status timeline-status-inline thinking-status-inline",children:s.jsxs("span",{className:"status-text thinking-status-text","aria-label":m,children:[s.jsx("span",{children:Ra(m)||m}),s.jsx("span",{className:"thinking-status-dots","aria-hidden":"true",children:"..."})]})}):null]}),qe?s.jsxs("button",{type:"button",className:"conversation-scroll-to-bottom-button","data-has-new":G?"true":"false","aria-label":a("conversation.scrollToBottomAction"),title:a("conversation.scrollToBottomAction"),onClick:()=>{const f=v.current;f&&(Q(),ve(f),oe.current=!1,E.current=Ze(t.at(-1)??null),ce(!1),ge(f),te(f))},children:[G?s.jsx("span",{className:"conversation-scroll-to-bottom-button-badge",children:"NEW"}):null,s.jsx("svg",{className:"conversation-scroll-to-bottom-button-icon",viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",children:s.jsx("path",{d:"M10 4.25a.75.75 0 0 1 .75.75v7.19l2.72-2.72a.75.75 0 1 1 1.06 1.06l-4 4a.75.75 0 0 1-1.06 0l-4-4a.75.75 0 1 1 1.06-1.06l2.72 2.72V5a.75.75 0 0 1 .75-.75Zm-4 11a.75.75 0 0 1 0-1.5h8a.75.75 0 0 1 0 1.5H6Z",fill:"currentColor"})})]}):null]})}function Ze(e){return e?JSON.stringify({id:e.id,content:e.content,attachments:e.attachments,timestamp:e.timestamp,deliveryState:e.deliveryState,toolCall:e.toolCall?{status:e.toolCall.status,output:e.toolCall.output,error:e.toolCall.error}:null}):null}function Bo(e){const t=new Map;let n=0;function r(i){let l=null;for(let o=i-1;o>=n;o-=1){const u=e[o];if(!(!u||!Oo(u))){l=u.id;break}}for(let o=n;o<i;o+=1){const u=e[o];if(u){if(u.role==="user"){t.set(u.id,{canCopy:!0,canFork:!1});continue}t.set(u.id,{canCopy:u.id===l,canFork:u.id===l})}}}for(let i=0;i<e.length;i+=1){const l=e[i];l&&l.role==="user"&&i>n&&(r(i),n=i)}return r(e.length),t}function Oo(e){return e.role==="user"?!1:e.kind!=="tool_call"&&e.kind!=="tool_result"}function Sl({requests:e,replyingRequestId:t,onReply:n}){const[r,i]=d.useState({}),l=d.useMemo(()=>e.filter(o=>o.status==="pending"),[e]);return l.length===0?null:s.jsxs("section",{className:"permission-request-list",children:[s.jsxs("div",{className:"permission-request-list-header",children:[s.jsx("div",{children:s.jsx("strong",{children:a("conversation.permissionRequestSectionTitle")})}),s.jsx("span",{className:"permission-request-count",children:l.length})]}),s.jsx("div",{className:"permission-request-stack",children:l.map(o=>{var h,C;const u=r[o.id]??{},p=o.paths.filter(Boolean),y=o.kind==="command"&&!!((h=o.command)!=null&&h.trim()),m=o.questions.length===0&&p.length===0&&!y&&!!((C=o.summary)!=null&&C.trim()),g=o.kind==="user_input"&&o.questions.some(b=>{var v;return(((v=u[b.id])==null?void 0:v.filter(Boolean).length)??0)===0});return s.jsxs("article",{className:"permission-request-card",children:[s.jsxs("header",{className:"permission-request-card-header",children:[s.jsxs("div",{className:"permission-request-provider",children:[s.jsx("span",{className:"permission-request-provider-icon","aria-hidden":"true",children:s.jsx("img",{src:Xr(o.provider),alt:"",loading:"lazy"})}),s.jsxs("div",{className:"permission-request-provider-copy",children:[s.jsx("strong",{children:o.title}),s.jsx("span",{children:vs(o.provider,"full")})]})]}),s.jsx("span",{className:"permission-request-kind",children:qo(o.kind)})]}),s.jsxs("div",{className:"permission-request-card-body",children:[p.length>0?s.jsx("div",{className:"permission-request-block",children:s.jsx("ul",{className:"permission-request-target-list",children:p.map(b=>s.jsxs("li",{className:"permission-request-target-item",children:[s.jsx("strong",{children:Wo(b)}),s.jsx("span",{children:b})]},`${o.id}:${b}`))})}):null,y?s.jsxs("div",{className:"permission-request-block",children:[s.jsx("div",{className:"permission-request-block-label",children:a("conversation.permissionRequestCommandLabel")}),s.jsx("pre",{children:o.command})]}):null,m?s.jsx("p",{className:"permission-request-summary",children:o.summary}):null,o.questions.length>0?s.jsxs("div",{className:"permission-request-block",children:[s.jsx("div",{className:"permission-request-block-label",children:a("conversation.permissionRequestQuestionsLabel")}),s.jsx("div",{className:"permission-request-question-list",children:o.questions.map(b=>s.jsxs("div",{className:"permission-request-question",children:[s.jsx("div",{className:"permission-request-question-header",children:b.header}),s.jsx("p",{children:b.question}),s.jsx("div",{className:"permission-request-question-options",children:b.options.map(v=>{var w;const R=((w=u[b.id])==null?void 0:w.includes(v.label))??!1;return s.jsxs("label",{className:"permission-request-question-option",children:[s.jsx("input",{type:"radio",name:`${o.id}:${b.id}`,checked:R,onChange:()=>{i(N=>({...N,[o.id]:{...N[o.id]??{},[b.id]:[v.label]}}))}}),s.jsxs("span",{children:[s.jsx("strong",{children:v.label}),v.description?s.jsx("small",{children:v.description}):null]})]},`${b.id}:${v.label}`)})})]},b.id))})]}):null]}),s.jsx("footer",{className:"permission-request-card-footer",children:o.actions.map(b=>s.jsx("button",{type:"button",className:`permission-request-action permission-request-action-${b.tone}`,disabled:t===o.id||b.value==="submit"&&g,onClick:()=>void n(o.id,{action:b.value,answers:Object.keys(u).length>0?u:void 0}),children:t===o.id?a("conversation.permissionRequestSubmitting"):b.label},`${o.id}:${b.value}`))})]},o.id)})})]})}function qo(e){return e==="command"?a("conversation.permissionRequestKindCommand"):e==="file_change"?a("conversation.permissionRequestKindFileChange"):e==="permissions"?a("conversation.permissionRequestKindPermissions"):e==="user_input"?a("conversation.permissionRequestKindUserInput"):a("conversation.permissionRequestKindToolCall")}function Wo(e){return e.split(/[/\\]+/).filter(Boolean).at(-1)??e}class Tl{constructor(t){se(this,"socket",null);se(this,"disposed",!1);se(this,"authRecoveryInFlight",!1);se(this,"latestCursor");se(this,"subscribed",!1);se(this,"pendingOlderRequest",null);se(this,"inFlightOlderRequest",null);se(this,"subscribeStartedAtMs",null);se(this,"firstBackfillLogged",!1);se(this,"olderRequestStartedAtMs",null);se(this,"connectionManager");this.options=t,this.latestCursor=t.cursor,this.connectionManager=new ti({onReconnect:n=>{this.connect(n)},onStateChange:t.onConnectionChange})}start(){this.connectionManager.start()}updateCursor(t){this.latestCursor=t}reconnectNow(){this.connectionManager.reconnectNow()}requestOlderMessages(t,n){return Fo(this.socket)?this.subscribed?(this.sendOlderMessagesRequest(t,n),!0):(this.pendingOlderRequest={cursor:t,limit:n},!0):!1}close(){var t;this.disposed=!0,this.subscribed=!1,this.pendingOlderRequest=null,this.inFlightOlderRequest=null,this.connectionManager.close(),(t=this.socket)==null||t.close(),this.socket=null}connect(t){var p;if(this.disposed)return;t&&this.socket&&(this.socket.close(),this.socket=null);const n=(p=Fn.getState().session)==null?void 0:p.accessToken;if(!n){this.options.onUnauthorized();return}const r=_r(),i=Br(r),l=i.baseUrl,o=`${Or("/ws",l)}?access_token=${encodeURIComponent(n)}`,u=i.transport.createWebSocket({path:"/ws",baseUrl:l,url:o});this.subscribed=!1,this.firstBackfillLogged=!1,this.socket=u,u.addEventListener("open",()=>{this.subscribeStartedAtMs=performance.now(),u.send(JSON.stringify({type:"session.subscribe",sessionId:this.options.sessionId,cursor:this.latestCursor,limit:this.options.limit})),ot("session.subscribe.sent",{sessionId:this.options.sessionId,hasCursor:this.latestCursor!==null,limit:this.options.limit,baseUrl:l})}),u.addEventListener("message",y=>{if(!(y instanceof MessageEvent)||typeof y.data!="string")return;const m=JSON.parse(y.data);if(m.type==="system.connected"){this.connectionManager.markConnected();return}if(m.type==="session.subscribed"){this.subscribed=!0,ot("session.subscribe.ack",{sessionId:m.sessionId,durationMs:rn(this.subscribeStartedAtMs)}),this.options.onSubscribed(),this.flushPendingOlderRequest();return}if(m.type==="session.error"){if(this.clearOlderMessagesRequest(),m.error_code==="UNAUTHORIZED"){this.handleUnauthorized();return}this.options.onError(m);return}if(m.type==="session.runtime_status"){this.options.onRuntimeStatus(m);return}if(m.type==="session.activity"){this.options.onActivity(m);return}if(m.type==="session.history_older"){ot("session.history_older.received",{sessionId:m.sessionId,messageCount:m.messages.length,olderCursor:m.olderCursor,durationMs:rn(this.olderRequestStartedAtMs)}),this.olderRequestStartedAtMs=null,this.clearOlderMessagesRequest(),this.options.onOlderHistory(m);return}if(m.type==="session.runtime_message"){this.options.onRuntimeMessage(m);return}if(m.type==="session.runtime_error"){this.options.onRuntimeError(m);return}if(m.type==="session.interrupted"){this.options.onInterrupted(m);return}if(m.type==="session.permission_request"){this.options.onPermissionRequest(m);return}if(m.type==="session.permission_request_resolved"){this.options.onPermissionRequestResolved(m);return}this.latestCursor=m.cursor,this.firstBackfillLogged||(this.firstBackfillLogged=!0,ot("session.initial_messages.received",{sessionId:m.sessionId,eventType:m.type,messageCount:m.messages.length,olderCursor:m.olderCursor??null,durationMs:rn(this.subscribeStartedAtMs)})),this.options.onEnvelope(m)}),u.addEventListener("close",()=>{this.disposed||this.socket!==u||(this.subscribed=!1,this.requeueInFlightOlderRequest(),this.connectionManager.markDisconnected())}),u.addEventListener("error",()=>{this.disposed||this.socket!==u||this.connectionManager.markTransientFailure()})}handleUnauthorized(){if(this.authRecoveryInFlight||this.disposed)return;this.authRecoveryInFlight=!0,this.subscribed=!1,this.requeueInFlightOlderRequest();const t=this.socket;this.socket=null,t==null||t.close(),Fn.refresh().then(n=>{if(this.authRecoveryInFlight=!1,!this.disposed){if(n.status==="refreshed"){this.connectionManager.reconnectNow();return}if(n.status==="deferred"){this.connectionManager.markDisconnected();return}this.options.onUnauthorized()}})}sendOlderMessagesRequest(t,n){var r;this.inFlightOlderRequest={cursor:t,limit:n},this.olderRequestStartedAtMs=performance.now(),(r=this.socket)==null||r.send(JSON.stringify({type:"session.load_older",sessionId:this.options.sessionId,cursor:t,limit:n})),ot("session.load_older.sent",{sessionId:this.options.sessionId,hasCursor:t!==null,limit:n})}flushPendingOlderRequest(){if(!this.pendingOlderRequest)return;const t=this.pendingOlderRequest;this.pendingOlderRequest=null,this.sendOlderMessagesRequest(t.cursor,t.limit)}clearOlderMessagesRequest(){this.pendingOlderRequest=null,this.inFlightOlderRequest=null}requeueInFlightOlderRequest(){this.inFlightOlderRequest&&(this.pendingOlderRequest=this.inFlightOlderRequest,this.inFlightOlderRequest=null,this.olderRequestStartedAtMs=null)}}function rn(e){return e===null||typeof performance>"u"?null:Math.round(performance.now()-e)}function Fo(e){return e!==null&&e.readyState===1}const Do=3*1e3,dn=120*1e3,Uo=8;function Rl(e){return{session:(e==null?void 0:e.session)??null,capabilities:(e==null?void 0:e.capabilities)??null,runtimeHasActiveRun:(e==null?void 0:e.runtimeHasActiveRun)??null,runtimeCanInterrupt:(e==null?void 0:e.runtimeCanInterrupt)??null,contextUsage:(e==null?void 0:e.contextUsage)??null,messages:(e==null?void 0:e.messages)??[],permissionRequests:(e==null?void 0:e.permissionRequests)??[],queuedMessages:(e==null?void 0:e.queuedMessages)??[],historyState:"idle",loadingOlderMessages:!1,olderCursor:(e==null?void 0:e.olderCursor)??null,hasOlderMessages:(e==null?void 0:e.hasOlderMessages)??!1,connectionState:"closed",lastCursor:(e==null?void 0:e.lastCursor)??null,pagesLoaded:(e==null?void 0:e.pagesLoaded)??0,interruptSource:(e==null?void 0:e.interruptSource)??null,errorCode:null,errorDetail:null}}function Js(e,t,n="sent",r=null){const i=t.kind??(t.role==="tool"?"tool_result":"text"),l=t.toolCall??(i==="tool_call"||i==="tool_result"?{callId:t.rawRef||t.messageId,name:"tool",input:i==="tool_call"?t.content:"",output:i==="tool_result"&&t.content?t.content:null,error:null,status:i==="tool_call"?"running":"completed"}:null);return{id:t.messageId,sessionId:e,role:t.role,kind:i,content:t.content,toolCall:l,attachments:t.attachments??[],attachmentPayloads:null,origin:t.origin??null,originRef:t.originRef??null,timestamp:t.timestamp,sequence:t.sequence,rawRef:t.rawRef,deliveryState:n,clientRequestId:r}}function Ml(e,t,n,r=[],i=[],l=Number.MAX_SAFE_INTEGER){return{id:`pending-${n}`,sessionId:e,role:"user",kind:"text",content:t,toolCall:null,attachments:r,attachmentPayloads:i,origin:null,originRef:null,timestamp:new Date().toISOString(),sequence:l,rawRef:`pending://${n}`,deliveryState:"sending",clientRequestId:n}}function Al(e,t){return yn([...e,t])}function Ll(e,t,n){const r=new Map,i=new Set;for(const l of e)r.set(l.id,l),i.add(l.id);for(const l of n){const o=Js(t,l),u=ul(r,o);if(u&&u!==o.id)continue;const p=cl(r,o);p&&p!==o.id&&r.delete(p);const y=dl(r,i,o);if(y&&y!==o.id){const g=r.get(y)??null;if(g){const h=ms(g,o);ni("session.messages.codex_equivalent_replace",{sessionId:t,previous:an(g),incoming:an(o),merged:an(h)}),r.delete(y),r.set(l.messageId,h);continue}}const m=r.get(l.messageId)??null;r.set(l.messageId,m?ms(m,o):o)}return yn(Array.from(r.values()))}function Pl(e,t,n,r){const i=r===null?null:e.find(p=>p.clientRequestId===r)??null,l=e.filter(p=>p.clientRequestId!==r),o=Js(t,n,"sent",r),u=Qo(o,i);return yn([...l.filter(p=>p.id!==u.id),u])}function Il(e,t){return e.map(n=>n.clientRequestId===t?{...n,deliveryState:"failed"}:n)}function zo(e){const t=[];for(const n of e){const r=t.at(-1);if(!r||!Zo(r,n)){t.push(n);continue}t[t.length-1]=Xo(r,n)}return t}function $o(e){const t=[];let n=null,r=!1;for(const i of e)if(!Jo(n,i,r)){if(t.push(i),xt(i)){n=i,r=!1;continue}n&&mn(i)&&(r=!0)}return t}function Ho(e){const t=[];for(const n of e){const r=t.at(-1);if(!r||!Xs(r,n)){t.push(n);continue}t[t.length-1]=er(r,n)}return t}function Ko(e){const t=[];for(const n of e){if(t.push(n),t.length<4)continue;const r=t[t.length-4],i=t[t.length-3],l=t[t.length-2],o=t[t.length-1];Yo(r,i,l,o)&&t.splice(t.length-3,3,er(i,o))}return t}function Vo(e){const t=[];for(const n of e){const r=t.at(-1);if(!r||!el(r,n)){t.push(n);continue}t[t.length-1]=nl(r,n)}return t}function Go(e){const t=[];for(const n of e){const r=t.findIndex(i=>tl(i,n));if(r===-1){t.push(n);continue}t[r]=sl(t[r],n)}return t}function yn(e){const t=[...e].sort((n,r)=>n.sequence!==r.sequence?n.sequence-r.sequence:n.timestamp.localeCompare(r.timestamp));return Go(Vo($o(Ko(Ho(zo(t))))))}function Qo(e,t){if(!t)return e;const n=e.attachments??[];return{...e,attachments:n.length>0?n:t.attachments??[],attachmentPayloads:t.attachmentPayloads??null}}function ms(e,t){if(e.id!==t.id)return t;if(e.role!==t.role||e.kind!==t.kind||e.rawRef!==t.rawRef)return bt(e,t);const n=rl(e.toolCall,t.toolCall),r=al(e.content,t.content,e.timestamp,t.timestamp),i=ol(e.attachments,t.attachments);return{...bt(e,t),content:r,toolCall:n,attachments:i,attachmentPayloads:e.attachmentPayloads??t.attachmentPayloads??null,timestamp:e.timestamp.localeCompare(t.timestamp)>=0?e.timestamp:t.timestamp,sequence:Math.max(e.sequence,t.sequence)}}function Zo(e,t){return Ys(e,t,Do)}function Ys(e,t,n){if(e.deliveryState!=="sent"||t.deliveryState!=="sent"||!e.rawRef.startsWith("codex://")||!t.rawRef.startsWith("codex://")||e.role!==t.role||e.kind!==t.kind||e.toolCall!==null||t.toolCall!==null||e.kind!=="text"&&e.kind!=="thinking")return!1;const r=Ye(e.content),i=Ye(t.content);return Be(e.timestamp,t.timestamp,n)&&I(r.text)===I(i.text)&&ll(r.inlineImages,i.inlineImages)}function Jo(e,t,n){return!e||n||!xt(e)||!xt(t)?!1:Be(e.timestamp,t.timestamp,120*1e3)&&I(e.content)===I(t.content)}function xt(e){return e.deliveryState==="sent"&&e.rawRef.startsWith("opencode://")&&e.role==="user"&&e.kind==="text"}function mn(e){return e.deliveryState==="sent"&&e.rawRef.startsWith("opencode://")&&e.role==="assistant"&&e.kind==="text"}function Xs(e,t){return mn(e)&&mn(t)&&Be(e.timestamp,t.timestamp,120*1e3)&&I(e.content)===I(t.content)}function Yo(e,t,n,r){return!e||!t||!n||!r||!xt(e)||!xt(n)?!1:Xs(t,r)&&Be(e.timestamp,n.timestamp,120*1e3)&&I(e.content)===I(n.content)}function er(e,t){var o,u;const n=((o=e.attachments)==null?void 0:o.length)??0,r=((u=t.attachments)==null?void 0:u.length)??0;if(n!==r)return n>r?e:t;const i=I(e.content).length,l=I(t.content).length;return i!==l?i>l?e:t:bt(e,t)}function Xo(e,t){var p,y;const n=((p=e.attachments)==null?void 0:p.length)??0,r=((y=t.attachments)==null?void 0:y.length)??0;if(n!==r)return n>r?e:t;const i=Ye(e.content).inlineImages.length,l=Ye(t.content).inlineImages.length;if(i!==l)return i>l?e:t;const o=e.content!==I(e.content),u=t.content!==I(t.content);return o!==u?o?t:e:t}function el(e,t){return!ps(e)||!ps(t)?!1:e.role===t.role&&Be(e.timestamp,t.timestamp,120*1e3)&&I(e.content)===I(t.content)}function tl(e,t){return!fs(e)||!fs(t)?!1:e.role===t.role&&Be(e.timestamp,t.timestamp,120*1e3)&&I(e.content)===I(t.content)}function ps(e){return e.deliveryState==="sent"&&e.rawRef.startsWith("gemini://session/")&&e.kind==="text"&&e.toolCall===null&&(e.role==="user"||e.role==="assistant")}function fs(e){return e.deliveryState==="sent"&&e.rawRef.startsWith("kimi://session/")&&e.kind==="text"&&e.toolCall===null&&(e.role==="user"||e.role==="assistant")}function nl(e,t){var p,y;const n=((p=e.attachments)==null?void 0:p.length)??0,r=((y=t.attachments)==null?void 0:y.length)??0;if(n!==r)return n>r?e:t;const i=I(e.content).length,l=I(t.content).length;if(i!==l)return i>l?e:t;const o=e.rawRef.includes("#file="),u=t.rawRef.includes("#file=");return o!==u?o?e:t:bt(e,t)}function sl(e,t){var p,y;const n=((p=e.attachments)==null?void 0:p.length)??0,r=((y=t.attachments)==null?void 0:y.length)??0;if(n!==r)return n>r?e:t;const i=I(e.content).length,l=I(t.content).length;if(i!==l)return i>l?e:t;const o=e.rawRef.includes("/context#"),u=t.rawRef.includes("/context#");return o!==u?o?e:t:bt(e,t)}function rl(e,t){return e?t?{...il(e,t),input:tr(e.input,t.input),output:gs(e.output,t.output),error:gs(e.error,t.error)}:e:t}function il(e,t){const n=hs(e.status),r=hs(t.status);return r!==n?r>n?t:e:t}function hs(e){return e==="running"?0:1}function al(e,t,n,r){const i=I(e),l=I(t);return i===l?e.length>=t.length?e:t:i.length>l.length&&i.includes(l)?e:l.length>i.length&&l.includes(i)||r.localeCompare(n)>=0?t:e}function ol(e,t){const n=(e==null?void 0:e.length)??0,r=(t==null?void 0:t.length)??0;return r!==n?r>n?t:e:t??e}function tr(e,t){return t.length>e.length?t:e}function gs(e,t){return e===null?t:t===null?e:tr(e,t)}function bt(e,t){return t.timestamp!==e.timestamp?t.timestamp.localeCompare(e.timestamp)>=0?t:e:t.sequence!==e.sequence?t.sequence>=e.sequence?t:e:t}function I(e){return e.replace(/\r\n/g,`
17
+ `).trimEnd()}function ll(e,t){return e.length===0||t.length===0?!0:e.length!==t.length?!1:e.every((n,r)=>{var i;return n.url===((i=t[r])==null?void 0:i.url)})}function cl(e,t){return sr(t)?nr(e,t,"optimistic"):null}function ul(e,t){return kn(t)?nr(e,t,"authoritative"):null}function dl(e,t,n){if(!pn(n))return null;const r=Xe(n.timestamp);let i=null,l=Number.POSITIVE_INFINITY;for(const[o,u]of e.entries()){if(o===n.id||!t.has(o)||!ml(u,n))continue;const p=Xe(u.timestamp),y=Math.abs(p-r),g=Math.abs(u.sequence-n.sequence)*dn+y;g<l&&(i=o,l=g)}return i}function nr(e,t,n){const r=Xe(t.timestamp),i=I(t.content);let l=null,o=Number.POSITIVE_INFINITY;for(const[u,p]of e.entries()){if(!(n==="optimistic"?kn(p):sr(p))||I(p.content)!==i)continue;const m=Xe(p.timestamp),g=Math.abs(m-r);g>300*1e3||g<o&&(l=u,o=g)}return l}function pn(e){return e.deliveryState==="sent"&&e.rawRef.startsWith("codex://")&&(e.role==="assistant"||e.role==="tool")}function ml(e,t){return!pn(e)||!pn(t)||e.role!==t.role||e.kind!==t.kind||Math.abs(e.sequence-t.sequence)>Uo||!Be(e.timestamp,t.timestamp,dn)?!1:t.kind==="text"||t.kind==="thinking"?Ys(e,t,dn):t.kind==="tool_call"||t.kind==="tool_result"?pl(e,t):!1}function pl(e,t){return e.deliveryState!=="sent"||t.deliveryState!=="sent"||!e.rawRef.startsWith("codex://")||!t.rawRef.startsWith("codex://")||e.role!=="tool"||t.role!=="tool"||e.kind!==t.kind||e.toolCall===null||t.toolCall===null?!1:e.toolCall.callId===t.toolCall.callId}function kn(e){return e.role!=="user"||e.kind!=="text"||e.deliveryState==="failed"?!1:e.rawRef.startsWith("pending://")||e.rawRef.startsWith("synthetic://")||e.rawRef.includes("#synthetic")}function sr(e){return e.role==="user"&&e.kind==="text"&&!kn(e)}function Xe(e){const t=Date.parse(e);return Number.isFinite(t)?t:0}function an(e){var t;return{id:e.id,rawRef:e.rawRef,role:e.role,kind:e.kind,sequence:e.sequence,timestamp:e.timestamp,callId:((t=e.toolCall)==null?void 0:t.callId)??null,contentPreview:e.kind==="text"||e.kind==="thinking"?I(Ye(e.content).text).slice(0,160):I(e.content).slice(0,160)}}function El(e){return e.reduce((n,r)=>Number.isFinite(r.sequence)&&r.sequence>n?r.sequence:n,0)+1}function Be(e,t,n){return Math.abs(Xe(e)-Xe(t))<=n}export{kl as B,wl as C,jl as M,Sl as P,Tl as R,Ml as a,Il as b,Rl as c,Nl as d,Cl as e,El as g,Al as i,Ll as m,Ye as p,Pl as r,Js as t};