purplemux 0.3.1 → 0.3.2

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 (135) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +47 -47
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/routes-manifest.json +7 -7
  6. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06an6au._.js +1 -1
  7. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__02f5zis._.js → [root-of-the-server]__08dxtof._.js} +1 -1
  8. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08z3drz._.js +1 -1
  9. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__11uqzxt._.js → [root-of-the-server]__0kumyrr._.js} +2 -2
  10. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s7k1je._.js +3 -0
  11. package/.next/standalone/.next/server/chunks/ssr/{_13qovxu._.js → _0.stp0n._.js} +2 -2
  12. package/.next/standalone/.next/server/chunks/ssr/{_11h746h._.js → _00cx0p2._.js} +2 -2
  13. package/.next/standalone/.next/server/chunks/ssr/_02rms4q._.js +1 -1
  14. package/.next/standalone/.next/server/chunks/ssr/{_0uwytsj._.js → _078y4dk._.js} +2 -2
  15. package/.next/standalone/.next/server/chunks/ssr/{_0uph6rf._.js → _0kzht5v._.js} +2 -2
  16. package/.next/standalone/.next/server/chunks/ssr/_0pg-q18._.js +1 -1
  17. package/.next/standalone/.next/server/chunks/ssr/_0r90z3l._.js +8 -0
  18. package/.next/standalone/.next/server/chunks/ssr/_0w.1ts8._.js +1 -1
  19. package/.next/standalone/.next/server/chunks/ssr/_0w6jc9p._.js +1 -1
  20. package/.next/standalone/.next/server/chunks/ssr/{_0z6yp7a._.js → _0y_feze._.js} +1 -1
  21. package/.next/standalone/.next/server/chunks/ssr/{_0v2czf2._.js → _10dec5o._.js} +1 -1
  22. package/.next/standalone/.next/server/chunks/ssr/{messages_01~7za1._.js → messages_0f3u1ly._.js} +1 -1
  23. package/.next/standalone/.next/server/chunks/ssr/{messages_10_yt3k._.js → messages_0k204ao._.js} +1 -1
  24. package/.next/standalone/.next/server/chunks/ssr/node_modules_0t5csgq._.js +1 -1
  25. package/.next/standalone/.next/server/chunks/ssr/node_modules_use-intl_dist_esm_production_react_0bnxcps.js +1 -1
  26. package/.next/standalone/.next/server/chunks/ssr/{src_components_00nri37._.js → src_components_05-kki3._.js} +1 -1
  27. package/.next/standalone/.next/server/chunks/ssr/{src_components_0jrgsp7._.js → src_components_0fb83uz._.js} +1 -1
  28. package/.next/standalone/.next/server/chunks/ssr/{src_components_0mhu5-5._.js → src_components_0gkfyrc._.js} +1 -1
  29. package/.next/standalone/.next/server/chunks/ssr/{src_components_0~e6p9k._.js → src_components_0n3s0.7._.js} +1 -1
  30. package/.next/standalone/.next/server/functions-config-manifest.json +1 -1
  31. package/.next/standalone/.next/server/middleware-build-manifest.js +47 -47
  32. package/.next/standalone/.next/server/pages/_app/build-manifest.json +5 -5
  33. package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
  34. package/.next/standalone/.next/server/pages/_app.js +2 -2
  35. package/.next/standalone/.next/server/pages/_app.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/pages/_document.js +3 -3
  37. package/.next/standalone/.next/server/pages/_document.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/pages/_error/build-manifest.json +3 -3
  39. package/.next/standalone/.next/server/pages/_error/client-build-manifest.json +1 -1
  40. package/.next/standalone/.next/server/pages/_error.js +4 -4
  41. package/.next/standalone/.next/server/pages/_error.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/pages/de/404.html +1 -1
  43. package/.next/standalone/.next/server/pages/de/500.html +1 -1
  44. package/.next/standalone/.next/server/pages/en/404.html +1 -1
  45. package/.next/standalone/.next/server/pages/en/500.html +1 -1
  46. package/.next/standalone/.next/server/pages/es/404.html +1 -1
  47. package/.next/standalone/.next/server/pages/es/500.html +1 -1
  48. package/.next/standalone/.next/server/pages/fr/404.html +1 -1
  49. package/.next/standalone/.next/server/pages/fr/500.html +1 -1
  50. package/.next/standalone/.next/server/pages/index/build-manifest.json +6 -6
  51. package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
  52. package/.next/standalone/.next/server/pages/index.js +5 -5
  53. package/.next/standalone/.next/server/pages/index.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/pages/ja/404.html +1 -1
  55. package/.next/standalone/.next/server/pages/ja/500.html +1 -1
  56. package/.next/standalone/.next/server/pages/ko/404.html +1 -1
  57. package/.next/standalone/.next/server/pages/ko/500.html +1 -1
  58. package/.next/standalone/.next/server/pages/login/build-manifest.json +4 -4
  59. package/.next/standalone/.next/server/pages/login/client-build-manifest.json +1 -1
  60. package/.next/standalone/.next/server/pages/login.js +4 -4
  61. package/.next/standalone/.next/server/pages/login.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
  63. package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
  64. package/.next/standalone/.next/server/pages/reports/build-manifest.json +6 -6
  65. package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
  66. package/.next/standalone/.next/server/pages/reports.js +5 -5
  67. package/.next/standalone/.next/server/pages/reports.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/pages/reset/build-manifest.json +4 -4
  69. package/.next/standalone/.next/server/pages/reset/client-build-manifest.json +1 -1
  70. package/.next/standalone/.next/server/pages/reset.js +5 -5
  71. package/.next/standalone/.next/server/pages/reset.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/pages/ru/404.html +1 -1
  73. package/.next/standalone/.next/server/pages/ru/500.html +1 -1
  74. package/.next/standalone/.next/server/pages/stats/build-manifest.json +6 -6
  75. package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
  76. package/.next/standalone/.next/server/pages/stats.js +5 -5
  77. package/.next/standalone/.next/server/pages/stats.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +4 -4
  79. package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
  80. package/.next/standalone/.next/server/pages/tools-required.js +5 -5
  81. package/.next/standalone/.next/server/pages/tools-required.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/pages/tr/404.html +1 -1
  83. package/.next/standalone/.next/server/pages/tr/500.html +1 -1
  84. package/.next/standalone/.next/server/pages/webview/build-manifest.json +6 -6
  85. package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
  86. package/.next/standalone/.next/server/pages/webview.js +5 -5
  87. package/.next/standalone/.next/server/pages/webview.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
  89. package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
  90. package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
  91. package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
  92. package/.next/standalone/.next/static/chunks/{0~23in~aqup16.js → 0176ysv-agwwx.js} +1 -1
  93. package/.next/standalone/.next/static/chunks/{0icark0o3b_6j.js → 03s5e91.zrsi_.js} +4 -4
  94. package/.next/standalone/.next/static/chunks/{0rmatoyiks~hz.js → 05zk.ks4roh-4.js} +6 -6
  95. package/.next/standalone/.next/static/chunks/{14_wa..vd6~2y.js → 0984g4~der6-4.js} +2 -2
  96. package/.next/standalone/.next/static/chunks/{016ho28abx9rt.js → 0_psc1~qmka.m.js} +4 -4
  97. package/.next/standalone/.next/static/chunks/{0tiyhrw_x-gl6.js → 0ap~c~__qw2_0.js} +6 -6
  98. package/.next/standalone/.next/static/chunks/0cir.n19rqu--.js +8 -0
  99. package/.next/standalone/.next/static/chunks/0euxle0n3zjm3.js +1 -0
  100. package/.next/standalone/.next/static/chunks/0fax5v7rwhm7g.js +6 -0
  101. package/.next/standalone/.next/static/chunks/{0tas57q8obfk5.js → 0kep81gqgj5f5.js} +6 -6
  102. package/.next/standalone/.next/static/chunks/0kriln8d9.mdo.js +1 -0
  103. package/.next/standalone/.next/static/chunks/{0n151-2s40k0u.js → 0l.88yoxq6tq8.js} +6 -6
  104. package/.next/standalone/.next/static/chunks/{0ea-k_kbq5gi1.js → 0n7jmg60eqx1a.js} +1 -1
  105. package/.next/standalone/.next/static/chunks/0wu-q.gmu-64d.js +5 -0
  106. package/.next/standalone/.next/static/chunks/{00l132mp04ubq.js → 0xfp8sfehtui9.js} +1 -1
  107. package/.next/standalone/.next/static/chunks/{0d5f43qfndq3j.js → 12f3vk2rnkb8u.js} +5 -5
  108. package/.next/standalone/.next/static/chunks/14vposxx99rq4.js +1 -0
  109. package/.next/standalone/.next/static/chunks/{0nr5ul7mf1bo7.js → 179vwj~zm1gya.js} +1 -1
  110. package/.next/standalone/.next/static/chunks/{turbopack-0pmncak0.t.kh.js → turbopack-0.6hkxuraykc4.js} +1 -1
  111. package/.next/standalone/.next/static/chunks/{turbopack-05.ehb143ourd.js → turbopack-0g2bivvnd2gyd.js} +1 -1
  112. package/.next/standalone/.next/static/chunks/{turbopack-0ji23rzquaykn.js → turbopack-0heaqdupr4xj6.js} +1 -1
  113. package/.next/standalone/.next/static/chunks/{turbopack-0iut_-96gi_mf.js → turbopack-0jcfxeuy1ge85.js} +1 -1
  114. package/.next/standalone/.next/static/chunks/{turbopack-0j8i.~gybpblu.js → turbopack-0rntg0~hh7h.0.js} +1 -1
  115. package/.next/standalone/.next/static/chunks/{turbopack-11zge3dxjjxf~.js → turbopack-0sk1uk-fkcqdx.js} +1 -1
  116. package/.next/standalone/.next/static/chunks/{turbopack-11utvoktq4lmr.js → turbopack-0w89gj59tho~b.js} +1 -1
  117. package/.next/standalone/.next/static/chunks/{turbopack-04t3309-jsj3y.js → turbopack-0~gn911-6yqk2.js} +1 -1
  118. package/.next/standalone/.next/static/chunks/{turbopack-06t563i9s945k.js → turbopack-14fnzd5yh28gy.js} +1 -1
  119. package/.next/standalone/.next/static/{uKYyYLvzxwDsQU-gGPKuh → pZhcwQ83aP87HDTIzzyJ6}/_buildManifest.js +8 -8
  120. package/.next/standalone/.next/static/{uKYyYLvzxwDsQU-gGPKuh → pZhcwQ83aP87HDTIzzyJ6}/_clientMiddlewareManifest.js +1 -1
  121. package/.next/standalone/package.json +6 -5
  122. package/.next/standalone/server.js +1 -1
  123. package/.next/standalone/src/config/tmux.conf +11 -3
  124. package/dist/server.js +6 -5
  125. package/package.json +6 -5
  126. package/src/config/tmux.conf +11 -3
  127. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y7-o~r._.js +0 -3
  128. package/.next/standalone/.next/server/chunks/ssr/_08ytq3p._.js +0 -8
  129. package/.next/standalone/.next/static/chunks/00yfl7agnve...js +0 -5
  130. package/.next/standalone/.next/static/chunks/0ff6a07hvp4pu.js +0 -6
  131. package/.next/standalone/.next/static/chunks/0igpvbu84cx5u.js +0 -1
  132. package/.next/standalone/.next/static/chunks/0vd9lnyxn~kql.js +0 -1
  133. package/.next/standalone/.next/static/chunks/11.ybdv0u2ho6.js +0 -1
  134. package/.next/standalone/.next/static/chunks/14cccdp9z2qvf.js +0 -8
  135. /package/.next/standalone/.next/static/{uKYyYLvzxwDsQU-gGPKuh → pZhcwQ83aP87HDTIzzyJ6}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[760644,a=>{"use strict";var b=a.i(4873);let c={terminalConnected:!1,agentProcess:null,agentProcessCheckedAt:0,agentInstalled:!0,sessionView:"session-list",cliState:"inactive",isTimelineLoading:!0,workspaceId:""},d=(a,b,c)=>{let d=a[b];return d?{...a,[b]:{...d,...c}}:a},e=(a,b)=>null!=b&&"inactive"!==b&&"unknown"!==b&&"cancelled"!==b&&"check"===a?"timeline":a,f=(a,b)=>b.agentProviderId||"terminal"!==a.panelType||!0!==a.agentProcess?{}:{agentProviderId:a.agentProviderId,agentSessionId:a.agentSessionId},g=(0,b.create)(a=>({tabs:{},tabOrders:{},statusWsConnected:!1,initTab:(b,d)=>a(a=>{let e=a.tabs[b],f={...c,...e,...d};return e?.cliState==="ready-for-review"&&"ready-for-review"!==f.cliState&&(f.cliState="ready-for-review",f.readyForReviewAt=e.readyForReviewAt),{tabs:{...a.tabs,[b]:f}}}),removeTab:b=>a(a=>{let{[b]:c,...d}=a.tabs;return{tabs:d}}),setTerminalConnected:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.terminalConnected!==c?{tabs:d(a.tabs,b,{terminalConnected:c})}:a}),setAgentProcess:(b,c,e)=>a(a=>{let f=a.tabs[b];if(!f||f.agentProcessCheckedAt>e)return a;let g={agentProcess:c,agentProcessCheckedAt:e};return(!0===c&&("check"===f.sessionView||"session-list"===f.sessionView)&&(g.sessionView="timeline"),!1===c&&!0===f.agentProcess&&"timeline"===f.sessionView&&(g.sessionView="session-list"),f.agentProcess===c&&f.agentProcessCheckedAt===e&&void 0===g.sessionView)?a:{tabs:d(a.tabs,b,g)}}),setAgentInstalled:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.agentInstalled!==c?{tabs:d(a.tabs,b,{agentInstalled:c})}:a}),setSessionView:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.sessionView!==c?{tabs:d(a.tabs,b,{sessionView:c})}:a}),setTimelineLoading:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.isTimelineLoading!==c?{tabs:d(a.tabs,b,{isTimelineLoading:c})}:a}),setSessionMetaCache:(b,c)=>a(a=>{let e=a.tabs[b];if(!e)return a;let f=e.sessionMetaCache;return f&&f.sessionId===c.sessionId&&f.jsonlPath===c.jsonlPath&&f.meta===c.meta?a:{tabs:d(a.tabs,b,{sessionMetaCache:c})}}),cancelTab:b=>a(a=>{let c=a.tabs[b];return c&&"cancelled"!==c.cliState?{tabs:d(a.tabs,b,{cliState:"cancelled",localUpdatedAt:Date.now()})}:a}),dismissTab:b=>a(a=>{let c=a.tabs[b];return c&&"ready-for-review"===c.cliState?{tabs:d(a.tabs,b,{cliState:"idle",dismissedAt:Date.now()})}:a}),setWorkspaceId:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.workspaceId!==c?{tabs:d(a.tabs,b,{workspaceId:c})}:a}),setPanelType:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.panelType!==c?{tabs:d(a.tabs,b,{panelType:c})}:a}),setCurrentProcess:(b,c)=>a(a=>{let e=a.tabs[b];if(!e)return a;let f=c??void 0;return e.currentProcess===f?a:{tabs:d(a.tabs,b,{currentProcess:f,localUpdatedAt:Date.now()})}}),setDetectedAgent:(b,c)=>a(a=>{let e=a.tabs[b],f=c.checkedAt??Date.now();if(!e||e.agentProcessCheckedAt>f)return a;let g={agentProcess:c.running,agentProcessCheckedAt:f};return c.running?(c.providerId&&(g.agentProviderId=c.providerId),void 0!==c.sessionId&&(g.agentSessionId=c.sessionId),("check"===e.sessionView||"session-list"===e.sessionView)&&(g.sessionView="timeline")):"terminal"===e.panelType?(g.agentProviderId=void 0,g.agentSessionId=null,!0===e.agentProcess&&"timeline"===e.sessionView&&(g.sessionView="session-list")):"timeline"===e.sessionView&&(!0===e.agentProcess||e.agentSessionId&&!e.isTimelineLoading)&&(g.sessionView="session-list"),{tabs:d(a.tabs,b,g)}}),setTabOrder:(b,c)=>a(a=>{let d=a.tabOrders[b];return d&&d.length===c.length&&d.every((a,b)=>a===c[b])?a:{tabOrders:{...a.tabOrders,[b]:c}}}),setStatusWsConnected:b=>a({statusWsConnected:b}),syncAllFromServer:b=>a(a=>{let d=Date.now(),g={};for(let[h,i]of Object.entries(b)){let b=a.tabs[h];if(b?.cliState==="cancelled"){g[h]=b;continue}b?.localUpdatedAt&&d-b.localUpdatedAt<3e4?g[h]={...b,cliState:i.cliState,workspaceId:i.workspaceId,tabName:i.tabName,terminalStatus:i.terminalStatus,listeningPorts:i.listeningPorts,agentProviderId:i.agentProviderId,agentSessionId:i.agentSessionId,...f(b,i),agentSummary:i.agentSummary,lastUserMessage:i.lastUserMessage,lastAssistantMessage:i.lastAssistantMessage,currentAction:i.currentAction,readyForReviewAt:i.readyForReviewAt,busySince:i.busySince,dismissedAt:i.dismissedAt,compactingSince:i.compactingSince,permissionRequest:i.permissionRequest,lastEvent:i.lastEvent,eventSeq:i.eventSeq,sessionView:e(b.sessionView,i.cliState)}:b?g[h]={...b,cliState:i.cliState,workspaceId:i.workspaceId,tabName:i.tabName,panelType:i.panelType??b.panelType,terminalStatus:i.terminalStatus,listeningPorts:i.listeningPorts,currentProcess:i.currentProcess,agentProviderId:i.agentProviderId,agentSessionId:i.agentSessionId,...f(b,i),agentSummary:i.agentSummary,lastUserMessage:i.lastUserMessage,lastAssistantMessage:i.lastAssistantMessage,currentAction:i.currentAction,readyForReviewAt:i.readyForReviewAt,busySince:i.busySince,dismissedAt:i.dismissedAt,compactingSince:i.compactingSince,permissionRequest:i.permissionRequest,lastEvent:i.lastEvent,eventSeq:i.eventSeq,sessionView:e(b.sessionView,i.cliState)}:g[h]={...c,cliState:i.cliState,workspaceId:i.workspaceId,tabName:i.tabName,panelType:i.panelType,terminalStatus:i.terminalStatus,listeningPorts:i.listeningPorts,currentProcess:i.currentProcess,agentProviderId:i.agentProviderId,agentSessionId:i.agentSessionId,agentSummary:i.agentSummary,lastUserMessage:i.lastUserMessage,lastAssistantMessage:i.lastAssistantMessage,currentAction:i.currentAction,readyForReviewAt:i.readyForReviewAt,busySince:i.busySince,dismissedAt:i.dismissedAt,compactingSince:i.compactingSince,permissionRequest:i.permissionRequest,lastEvent:i.lastEvent,eventSeq:i.eventSeq,sessionView:e(c.sessionView,i.cliState)}}for(let[b,c]of Object.entries(a.tabs))g[b]||(g[b]=c);return{tabs:g}}),updateFromServer:(b,g)=>a(a=>{if(null===g.cliState){let{[b]:c,...d}=a.tabs;return{tabs:d}}let h=a.tabs[b];if(h){if("cancelled"===h.cliState)return a;let c=void 0!==g.eventSeq&&void 0!==h.eventSeq&&g.eventSeq<h.eventSeq,i=void 0!==g.eventSeq&&(void 0===h.eventSeq||g.eventSeq>=h.eventSeq)?{lastEvent:g.lastEvent,eventSeq:g.eventSeq}:{},j=c?{cliState:h.cliState,readyForReviewAt:h.readyForReviewAt,busySince:h.busySince,dismissedAt:h.dismissedAt}:{cliState:g.cliState,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt};return{tabs:d(a.tabs,b,{...j,workspaceId:g.workspaceId,tabName:g.tabName,panelType:g.panelType??h.panelType,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,currentProcess:g.currentProcess,agentProviderId:g.agentProviderId,agentSessionId:g.agentSessionId,...f(h,g),agentSummary:g.agentSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,currentAction:g.currentAction,compactingSince:g.compactingSince,permissionRequest:g.permissionRequest,sessionView:e(h.sessionView,g.cliState),...i})}}return{tabs:{...a.tabs,[b]:{...c,cliState:g.cliState,workspaceId:g.workspaceId,tabName:g.tabName,panelType:g.panelType,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,currentProcess:g.currentProcess,agentProviderId:g.agentProviderId,agentSessionId:g.agentSessionId,agentSummary:g.agentSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt,compactingSince:g.compactingSince,permissionRequest:g.permissionRequest,lastEvent:g.lastEvent,eventSeq:g.eventSeq,sessionView:e(c.sessionView,g.cliState)}}}}),applyHookEvent:(b,c)=>a(a=>{let e=a.tabs[b];if(!e||void 0!==e.eventSeq&&c.seq<=e.eventSeq)return a;let f=((a,b)=>{if(!a||"cancelled"===b)return b;switch(a.name){case"session-start":case"interrupt":return"idle";case"prompt-submit":return"busy";case"notification":return"needs-input";case"stop":return"ready-for-review"}})(c,e.cliState);return{tabs:d(a.tabs,b,{cliState:f,lastEvent:c,eventSeq:c.seq,readyForReviewAt:"ready-for-review"===f?Date.now():null,busySince:"busy"===f?Date.now():null,dismissedAt:"busy"===f?null:e.dismissedAt,permissionRequest:"needs-input"===e.cliState&&"needs-input"!==f?null:e.permissionRequest})}})}));a.s(["default",0,g,"getInitialTabStateFromLayoutTab",0,a=>{let b={panelType:a.panelType},c=a.agentState?.providerId??("codex-cli"===a.panelType?"codex":"claude-code"===a.panelType?"claude":void 0),d=a.agentState?.sessionId??a.claudeSessionId??null;return c&&(b.agentProviderId=c),d&&(b.agentSessionId=d,b.agentSummary=a.agentState?.summary??a.claudeSummary??null,b.sessionView="timeline"),b},"isCliIdle",0,a=>"idle"===a||"ready-for-review"===a,"selectGlobalStatus",0,a=>{let b=0,c=0;for(let d of Object.values(a))"busy"===d.cliState?b++:("ready-for-review"===d.cliState||"needs-input"===d.cliState)&&c++;return{busyCount:b,attentionCount:c}},"selectSessionView",0,(a,b)=>{let c=a[b];return c?c.sessionView:"session-list"},"selectTabDisplayStatus",0,(a,b)=>{let c=a[b];return c&&"inactive"!==c.cliState?"busy"===c.cliState?"busy":"ready-for-review"===c.cliState?"ready-for-review":"needs-input"===c.cliState?"needs-input":"unknown"===c.cliState?"unknown":"idle":"idle"},"selectWorkspacePortsLabel",0,(a,b)=>{let c=new Set;for(let d of Object.values(a))if(d.workspaceId===b&&d.listeningPorts)for(let a of d.listeningPorts)c.add(a);return 0===c.size?"":":"+[...c].sort((a,b)=>a-b).join(", :")}],760644)},484682,a=>{"use strict";var b=a.i(127669);let c=(a,b)=>{let c=a instanceof Map?a:new Map(a.entries()),d=b instanceof Map?b:new Map(b.entries());if(c.size!==d.size)return!1;for(let[a,b]of c)if(!d.has(a)||!Object.is(b,d.get(a)))return!1;return!0};a.s(["useShallow",0,function(a){let d=b.default.useRef(void 0);return b=>{let e=a(b);return!function(a,b){if(Object.is(a,b))return!0;if("object"!=typeof a||null===a||"object"!=typeof b||null===b||Object.getPrototypeOf(a)!==Object.getPrototypeOf(b))return!1;if(Symbol.iterator in a&&Symbol.iterator in b){if("entries"in a&&"entries"in b)return c(a,b);let d=a[Symbol.iterator](),e=b[Symbol.iterator](),f=d.next(),g=e.next();for(;!f.done&&!g.done;){if(!Object.is(f.value,g.value))return!1;f=d.next(),g=e.next()}return!!f.done&&!!g.done}return c({entries:()=>Object.entries(a)},{entries:()=>Object.entries(b)})}(d.current,e)?d.current=e:d.current}}],484682)},959709,a=>{"use strict";var b=a.i(127669),c=a.i(510414),d=a.i(892209),e=a.i(760644);let f=new Set(["/new","/clear"]),g=a=>`pt-input-draft:${a}`,h=a=>{try{localStorage.removeItem(g(a))}catch{}};a.s(["clearInputDraft",0,h,"default",0,(a,i,j,k)=>{let l=k?.tabId,[m,n]=(0,b.useState)(()=>l?(a=>{try{return localStorage.getItem(g(a))??""}catch{return""}})(l):""),o=(0,b.useRef)(null),p=(0,b.useMemo)(()=>(0,e.isCliIdle)(a)||"unknown"===a?"input":"busy"===a||"needs-input"===a?"interrupt":"disabled",[a]),q=k?.onRestartSession,r=k?.onMessageSent,s=k?.submitDelayMs??250,t=(0,b.useRef)(null);(0,b.useEffect)(()=>{if(l)return t.current&&clearTimeout(t.current),t.current=setTimeout(()=>((a,b)=>{try{b?localStorage.setItem(g(a),b):localStorage.removeItem(g(a))}catch{}})(l,m),300),()=>{t.current&&clearTimeout(t.current)}},[l,m]);let u=(0,b.useCallback)(()=>{if("disabled"===p)return void c.toast.error(k?.disabledMessage??(0,d.t)("terminal","inputDisabledPlaceholder"));if(!j)return void c.toast.error((0,d.t)("connection","terminalDisconnected"));if(""!==m.trim()){if(f.has(m.trim().toLowerCase())){q?.(),n(""),l&&h(l);return}m.includes("\n")?i(`\x1b[200~${m}\x1b[201~`):i(m),setTimeout(()=>i("\r"),s),m.trim().startsWith("/")||r?.(m.trim()),n(""),l&&h(l)}},[p,m,i,j,q,r,l,k?.disabledMessage,s]),v=(0,b.useCallback)(()=>{j?i("\x1b\x1b"):c.toast.error((0,d.t)("connection","terminalDisconnected"))},[i,j]),w=(0,b.useCallback)(()=>{let a=o.current;if(!a)return;a.focus();let b=a.value.length;a.setSelectionRange(b,b)},[]),x="disabled"!==p&&j;return{value:m,setValue:n,mode:p,canSend:x,send:u,interrupt:v,textareaRef:o,focusInput:w}}])},626605,a=>{"use strict";a.s(["default",()=>I,"navigateToTab",()=>G,"navigateToTabOrCreate",()=>H,"useLayoutStore",()=>F]);var b=a.i(127669),c=a.i(41910),d=a.i(4873),e=a.i(484682),f=a.i(510414),g=a.i(892209),h=a.i(959709),i=a.i(760644),j=a.i(912251),k=a.i(199462),l=a.i(797630),m=a.i(144784);let n="pt-active-pane-",o="pt-active-tab-",p="pt-terminal-ratio-",q="pt-terminal-collapsed-",r=a=>{try{return sessionStorage.getItem(`${o}${a}`)}catch{return null}},s=a=>{try{let b=sessionStorage.getItem(`${p}${a}`);if(null==b)return null;let c=Number(b);return Number.isFinite(c)?c:null}catch{return null}},t=a=>{try{let b=sessionStorage.getItem(`${q}${a}`);if(null==b)return null;return"1"===b}catch{return null}},u=null,v=null,w=null,x=!1,y=new Map,z=(a,b)=>{if(!b)return a;let c=a.includes("?")?"&":"?";return`${a}${c}workspace=${b}`},A=(a,b)=>{let c=a?(0,m.collectPanes)(a.root).length:0;return{paneCount:c,canSplit:c<10&&!b}},B=(a,b,c)=>{a({layout:c,...A(c,b().isSplitting)})},C=(a,b,c)=>{let d=b().layout;if(d){let a=(0,m.collectPanes)(c.root);for(let b of(d.activePaneId&&a.some(a=>a.id===d.activePaneId)&&(c.activePaneId=d.activePaneId),a)){let a=(0,m.findPane)(d.root,b.id);a?.activeTabId&&b.tabs.some(b=>b.id===a.activeTabId)&&(b.activeTabId=a.activeTabId)}}a({layout:c,...A(c,b().isSplitting)})},D=(a,b,c,d)=>{let{layout:e}=b();if(!e)return;let f=(0,m.updatePaneInTree)(e.root,c,d);f!==e.root&&B(a,b,{...e,root:f})},E=async(a,b)=>{try{let c=await fetch(a,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok)return null;return await c.json()}catch{return null}},F=(0,d.create)((a,b)=>({layout:null,isLoading:!0,error:null,isSplitting:!1,workspaceId:null,retryCount:0,paneCount:0,canSplit:!1,pendingFocusTabId:null,setWorkspaceId:b=>{x=!1,a({workspaceId:b})},setLayout:c=>{B(a,b,c)},fetchLayout:async(c,d)=>{if(x)return;let e=c??b().workspaceId;if(!e)return;u?.abort();let h=new AbortController;u=h,b().layout||a({isLoading:!0,error:null});try{let c=await fetch(z("/api/layout",e),{signal:h.signal});if(!c.ok)throw Error();let f=await c.json();if(h.signal.aborted)return;let g=b().layout;if(!1!==d){let a=(0,m.collectPanes)(f.root);if(g)for(let b of(g.activePaneId&&a.some(a=>a.id===g.activePaneId)&&(f.activePaneId=g.activePaneId),a)){let a=(0,m.findPane)(g.root,b.id);a?.activeTabId&&b.tabs.some(b=>b.id===a.activeTabId)&&(b.activeTabId=a.activeTabId)}else{let b=(a=>{try{return sessionStorage.getItem(`${n}${a}`)}catch{return null}})(e);for(let c of(b&&a.some(a=>a.id===b)&&(f.activePaneId=b),a)){let a=r(c.id);for(let b of(a&&c.tabs.some(b=>b.id===a)&&(c.activeTabId=a),c.tabs)){let a=s(b.id);null!==a&&(b.terminalRatio=a);let c=t(b.id);null!==c&&(b.terminalCollapsed=c)}}}}if(g){let c={root:g.root,activePaneId:g.activePaneId},d={root:f.root,activePaneId:f.activePaneId};if(JSON.stringify(c)===JSON.stringify(d)){let c=b().pendingFocusTabId;c&&(a({pendingFocusTabId:null}),b().focusTab(c));return}}let i=b().pendingFocusTabId,j=null;if(i){for(let b of(a({pendingFocusTabId:null}),(0,m.collectPanes)(f.root)))if(b.tabs.some(a=>a.id===i)){f.activePaneId=b.id,b.activeTabId=i,j=b.id;break}}a({layout:f,retryCount:0,...A(f,b().isSplitting)}),j&&(E(z("/api/layout",e),{activePaneId:j}),E(z(`/api/layout/pane/${j}`,e),{activeTabId:i}))}catch(d){if(d instanceof DOMException&&"AbortError"===d.name)return;let c=b().retryCount+1;if(a({retryCount:c}),c>=3)try{let c=await fetch(z("/api/layout/pane",e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(c.ok){let{paneId:d,tab:e}=await c.json(),h={root:{type:"pane",id:d,tabs:[e],activeTabId:e.id},activePaneId:d,updatedAt:new Date().toISOString()};a({layout:h,...A(h,b().isSplitting)}),f.toast.info((0,g.t)("terminal","fallbackLayout")),a({retryCount:0});return}}catch{}a({error:(0,g.t)("terminal","layoutFetchError")}),v?.()}finally{h.signal.aborted||a({isLoading:!1})}},splitPane:async(c,d)=>{let{layout:e,isSplitting:h,workspaceId:i}=b();if(e&&!h&&!((0,m.collectPanes)(e.root).length>=10)){a({isSplitting:!0,canSplit:!1});try{let f,g,h=(0,m.findPane)(e.root,c),j=h?.tabs.find(a=>a.id===h.activeTabId);if(j){g=j.panelType;try{let a=await fetch(z(`/api/layout/cwd?session=${j.sessionName}`,i));a.ok&&(f=(await a.json()).cwd)}catch{}}let k=await fetch(z("/api/layout/pane",i),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourcePaneId:c,orientation:d,cwd:f,panelType:g})});if(!k.ok)throw Error();let l=await k.json();B(a,b,l)}catch{f.toast.error((0,g.t)("terminal","splitFailed"))}finally{a(a=>({isSplitting:!1,canSplit:a.paneCount<10}))}}},closePane:async c=>{let{layout:d,workspaceId:e}=b();if(d&&!((0,m.collectPanes)(d.root).length<=1))try{let d=await fetch(z(`/api/layout/pane/${c}`,e),{method:"DELETE"});if(!d.ok)throw Error();let f=await d.json();B(a,b,f)}catch{f.toast.error("Pane을 닫을 수 없습니다")}},focusPane:c=>{let{layout:d,workspaceId:e}=b();d&&d.activePaneId!==c&&(a({layout:{...d,activePaneId:c}}),E(z("/api/layout",e),{activePaneId:c}).then(c=>{c&&C(a,b,c)}))},updateRatio:(c,d)=>{let{layout:e,workspaceId:f}=b();e&&(a({layout:{...e,root:(0,m.updateRatioAtPath)(e.root,c,d)}}),w&&clearTimeout(w),w=setTimeout(()=>{w=null,E(z("/api/layout",f),{ratioUpdate:{path:c,ratio:d}}).then(c=>{c&&C(a,b,c)})},300))},moveTab:(c,d,e,f)=>{if(d===e)return;let{layout:g,workspaceId:h}=b();if(!g)return;let i=JSON.parse(JSON.stringify(g)),j=(0,m.findPane)(i.root,d),k=(0,m.findPane)(i.root,e);if(j&&k){let g=j.tabs.findIndex(a=>a.id===c);if(-1!==g){let[h]=j.tabs.splice(g,1);j.activeTabId===c&&(j.activeTabId=j.tabs[0]?.id??null),j.tabs.forEach((a,b)=>{a.order=b}),k.tabs.splice(f,0,h),k.tabs.forEach((a,b)=>{a.order=b}),k.activeTabId=c,0===j.tabs.length&&(0,m.collectPanes)(i.root).length>1&&(0,m.removePaneWithFocus)(i,d),i.activePaneId=e,B(a,b,i)}}fetch(z(`/api/layout/pane/${d}/tabs/${c}/move`,h),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({toPaneId:e,toIndex:f})}).then(async c=>{c.ok?C(a,b,await c.json()):await b().fetchLayout(void 0,!1)}).catch(()=>b().fetchLayout(void 0,!1))},createTabInPane:async(c,d,e,h)=>{let{layout:j,workspaceId:l}=b();try{let f,g=d,n=j?(0,m.findPane)(j.root,c):void 0,o=n?.tabs.find(a=>a.id===n.activeTabId);!g&&o&&(g=o.panelType),"web-browser"!==g&&o&&(f=k.default.getState().metadata[o.id]?.cwd);let p=await fetch(z(`/api/layout/pane/${c}/tabs`,l),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:f,panelType:g,command:e,resumeSessionId:h})});if(!p.ok)throw Error();let q=await p.json();return(e||h)&&i.default.getState().initTab(q.id,{panelType:g,sessionView:"check"}),D(a,b,c,a=>({...a,tabs:[...a.tabs,q],activeTabId:q.id})),b().fetchLayout(),q}catch{return f.toast.error((0,g.t)("terminal","tabCreateFailed")),null}},deleteTabInPane:async(c,d)=>{(0,h.clearInputDraft)(d),i.default.getState().cancelTab(d),D(a,b,c,a=>{let b=[...a.tabs].sort((a,b)=>a.order-b.order),c=b.findIndex(a=>a.id===d),e=b.filter(a=>a.id!==d);e.forEach((a,b)=>{a.order=b});let f=a.activeTabId;if(a.activeTabId===d){let a=b[c+1]||b[c-1];f=a?.id??null}return{...a,tabs:e,activeTabId:f}});let{workspaceId:e}=b();try{let a=await fetch(z(`/api/layout/pane/${c}/tabs/${d}`,e),{method:"DELETE"});a.ok||404===a.status||(f.toast.error((0,g.t)("terminal","tabDeleteError")),await b().fetchLayout())}catch{f.toast.error((0,g.t)("terminal","tabDeleteError")),await b().fetchLayout()}},restartTabInPane:async(a,c,d)=>{let{workspaceId:e}=b();try{return(await fetch(z(`/api/layout/pane/${a}/tabs/${c}`,e),{method:"POST",headers:d?{"Content-Type":"application/json"}:void 0,body:d?JSON.stringify({command:d}):void 0})).ok}catch{return f.toast.error((0,g.t)("terminal","sessionRestartFailed")),!1}},switchTabInPane:(c,d)=>{D(a,b,c,a=>({...a,activeTabId:d}));let{workspaceId:e}=b();E(z(`/api/layout/pane/${c}`,e),{activeTabId:d}).then(c=>{c&&C(a,b,c)})},renameTabInPane:async(c,d,e)=>{D(a,b,c,a=>({...a,tabs:a.tabs.map(a=>a.id===d?{...a,name:e}:a)}));let{workspaceId:h}=b(),i=await E(z(`/api/layout/pane/${c}/tabs/${d}`,h),{name:e});i?C(a,b,i):f.toast.error((0,g.t)("terminal","tabRenameFailed"))},reorderTabsInPane:(c,d)=>{D(a,b,c,a=>{let b=new Map(a.tabs.map(a=>[a.id,a])),c=d.map((a,c)=>{let d=b.get(a);return d?{...d,order:c}:null}).filter(a=>null!==a);return{...a,tabs:c}});let{workspaceId:e}=b();E(z(`/api/layout/pane/${c}/tabs/order`,e),{tabIds:d}).then(c=>{c&&C(a,b,c)})},removeTabLocally:(a,c)=>{(0,h.clearInputDraft)(c);let{workspaceId:d}=b();fetch(z(`/api/layout/pane/${a}/tabs/${c}`,d),{method:"DELETE"}).then(()=>b().fetchLayout()).catch(()=>{console.log("[layout] removeTabLocally failed")})},equalizeRatios:()=>{let{workspaceId:c}=b();E(z("/api/layout",c),{equalize:!0}).then(c=>{c&&C(a,b,c)})},updateDiffSettings:c=>{let{layout:d,workspaceId:e}=b();d&&(B(a,b,{...d,diffSettings:{...d.diffSettings??{},...c}}),E(z("/api/layout",e),{diffSettings:c}).then(c=>{c&&C(a,b,c)}))},updateTabPanelType:(c,d,e)=>{let f;D(a,b,c,a=>({...a,tabs:a.tabs.map(a=>{if(a.id!==d)return a;let b=(0,l.resolveTabNameForPanelTypeChange)(a.name,a.panelType,e),c={...a,panelType:e,name:b};return b!==a.name&&(f=b),"codex-cli"===e&&"claude-code"===a.panelType&&(c.claudeSessionId=null,c.agentState=void 0),c})})),i.default.getState().setPanelType(d,e);let{workspaceId:g}=b();E(z(`/api/layout/pane/${c}/tabs/${d}`,g),{panelType:e,...void 0!==f?{name:f}:{}}).then(c=>{c&&C(a,b,c)})},updateTabTerminalLayout:(c,d,e)=>{D(a,b,c,a=>({...a,tabs:a.tabs.map(a=>a.id===d?{...a,...e}:a)}));try{void 0!==e.terminalRatio&&sessionStorage.setItem(`${p}${d}`,String(e.terminalRatio)),void 0!==e.terminalCollapsed&&sessionStorage.setItem(`${q}${d}`,e.terminalCollapsed?"1":"0")}catch{}let{workspaceId:f}=b(),g=y.get(d);g&&clearTimeout(g),y.set(d,setTimeout(()=>{y.delete(d),E(z(`/api/layout/pane/${c}/tabs/${d}`,f),e)},300))},clearLayout:()=>{x=!0,u?.abort(),a({layout:null,paneCount:0,canSplit:!1})},focusTab:a=>{let{layout:c}=b();if(!c)return!1;for(let d of(0,m.collectPanes)(c.root))if(d.tabs.some(b=>b.id===a))return b().focusPane(d.id),b().switchTabInPane(d.id,a),!0;return!1},focusPrevTab:()=>{let{layout:a}=b();if(!a)return;let c=(0,m.collectPanes)(a.root),d=c.find(b=>b.id===a.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=e.findIndex(a=>a.id===d.activeTabId);if(f>0)b().switchTabInPane(d.id,e[f-1].id);else{let a=c.indexOf(d);if(a>0){let d=c[a-1],e=[...d.tabs].sort((a,b)=>a.order-b.order);b().focusPane(d.id),b().switchTabInPane(d.id,e[e.length-1].id)}}},focusNextTab:()=>{let{layout:a}=b();if(!a)return;let c=(0,m.collectPanes)(a.root),d=c.find(b=>b.id===a.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=e.findIndex(a=>a.id===d.activeTabId);if(f<e.length-1)b().switchTabInPane(d.id,e[f+1].id);else{let a=c.indexOf(d);if(a<c.length-1){let d=c[a+1],e=[...d.tabs].sort((a,b)=>a.order-b.order);b().focusPane(d.id),b().switchTabInPane(d.id,e[0].id)}}},focusTabByIndex:a=>{let{layout:c}=b();if(!c?.activePaneId)return;let d=(0,m.collectPanes)(c.root).find(a=>a.id===c.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=a>=e.length?e[e.length-1]:e[a];f&&f.id!==d.activeTabId&&b().switchTabInPane(d.id,f.id)}}));F.subscribe((a,b)=>{if(a.layout&&a.workspaceId&&a.layout!==b.layout){var c=a.workspaceId,d=a.layout;try{for(let a of(d.activePaneId&&sessionStorage.setItem(`${n}${c}`,d.activePaneId),(0,m.collectPanes)(d.root)))for(let b of(a.activeTabId&&sessionStorage.setItem(`${o}${a.id}`,a.activeTabId),a.tabs))void 0!==b.terminalRatio&&sessionStorage.setItem(`${p}${b.id}`,String(b.terminalRatio)),void 0!==b.terminalCollapsed&&sessionStorage.setItem(`${q}${b.id}`,b.terminalCollapsed?"1":"0")}catch{}}});let G=(a,b)=>{let d=F.getState();if("/"!==c.default.pathname){F.setState({pendingFocusTabId:b}),j.default.getState().switchWorkspace(a),c.default.push("/");return}a===d.workspaceId?d.focusTab(b):(d.clearLayout(),F.setState({pendingFocusTabId:b}),j.default.getState().switchWorkspace(a))},H=async(a,b,c,d,e,f="claude")=>{let g=j.default.getState(),h="codex"===f?"codex-cli":"claude-code",k=a,l=g.workspaces.find(b=>b.id===a);if(!l){if(!e)return;let a=await g.createWorkspace(e,d,c??void 0,h);if(!a)return;k=a.id;let b=await fetch(z("/api/layout",k));if(!b.ok)return;let f=await b.json(),j=(0,m.collectAllTabs)(f.root)[0];if(!j)return;c&&i.default.getState().initTab(j.id,{panelType:h,sessionView:"check"}),G(k,j.id);return}let n=await fetch(z("/api/layout",k));if(!n.ok)return;let o=await n.json();if(c){let a=(0,m.collectAllTabs)(o.root).find(a=>"codex"===f?a.agentState?.providerId==="codex"&&a.agentState.sessionId===c:a.agentState?.providerId==="claude"?a.agentState.sessionId===c:a.claudeSessionId===c);if(a){i.default.getState().setSessionView(a.id,"timeline"),G(k,a.id);return}}else if((0,m.collectAllTabs)(o.root).find(a=>a.id===b))return void G(k,b);let p=o.activePaneId??(0,m.getFirstPaneId)(o.root),q={panelType:h,cwd:l.directories[0]};c&&(q.resumeSessionId=c);let r=await fetch(z(`/api/layout/pane/${p}/tabs`,k),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(q)});if(!r.ok)return;let s=await r.json();c&&i.default.getState().initTab(s.id,{panelType:h,sessionView:"check"}),k===F.getState().workspaceId?(F.setState({pendingFocusTabId:s.id}),F.getState().fetchLayout()):G(k,s.id)},I=({workspaceId:a,onFetchError:c})=>((0,b.useEffect)(()=>{v=c??null},[c]),(0,b.useEffect)(()=>{if(a){let b=F.getState();b.setWorkspaceId(a),b.fetchLayout(a)}},[a]),(0,b.useEffect)(()=>F.subscribe(a=>{let b=a.workspaceId;if(!b||!a.layout?.root)return;let c=(0,m.collectPanes)(a.layout.root).flatMap(a=>a.tabs.map(a=>a.id));i.default.getState().setTabOrder(b,c)}),[]),F((0,e.useShallow)(a=>({layout:a.layout,isLoading:a.isLoading,error:a.error,isSplitting:a.isSplitting,paneCount:a.paneCount,canSplit:a.canSplit,splitPane:a.splitPane,closePane:a.closePane,focusPane:a.focusPane,updateRatio:a.updateRatio,moveTab:a.moveTab,createTabInPane:a.createTabInPane,deleteTabInPane:a.deleteTabInPane,restartTabInPane:a.restartTabInPane,switchTabInPane:a.switchTabInPane,renameTabInPane:a.renameTabInPane,reorderTabsInPane:a.reorderTabsInPane,removeTabLocally:a.removeTabLocally,equalizeRatios:a.equalizeRatios,updateDiffSettings:a.updateDiffSettings,updateTabPanelType:a.updateTabPanelType,clearLayout:a.clearLayout,fetchLayout:a.fetchLayout,focusTab:a.focusTab,focusPrevTab:a.focusPrevTab,focusNextTab:a.focusNextTab,focusTabByIndex:a.focusTabByIndex}))))},199462,a=>{"use strict";a.s(["default",()=>j]);var b=a.i(4873),c=a.i(626605),d=a.i(144784);let e=null,f=new Map,g=new Map,h=()=>{e&&clearTimeout(e),e=setTimeout(()=>{e=null;let{metadata:a}=i.getState(),b=c.useLayoutStore.getState().layout,f=c.useLayoutStore.getState().workspaceId;if(!b||!f)return;let g=`?workspace=${f}`;for(let c of(0,d.collectPanes)(b.root))for(let b of c.tabs){let d=a[b.id];if(!d)continue;let e={};void 0!==d.title&&d.title!==b.title&&(e.title=d.title),void 0!==d.cwd&&d.cwd!==b.cwd&&(e.cwd=d.cwd),void 0!==d.lastCommand&&(d.lastCommand??null)!==(b.lastCommand??null)&&(e.lastCommand=d.lastCommand??null),Object.keys(e).length>0&&fetch(`/api/layout/pane/${c.id}/tabs/${b.id}${g}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(a=>{console.log(`[tab-metadata] sync failed: ${a instanceof Error?a.message:a}`)})}},100)},i=(0,b.create)(a=>({metadata:{},setTitle:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.title===c?a:(f.set(b,Date.now()),{metadata:{...a.metadata,[b]:{...d,title:c}}})}),h()},setCwd:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.cwd===c?a:(g.set(b,Date.now()),{metadata:{...a.metadata,[b]:{...d,cwd:c}}})}),h()},setLastCommand:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.lastCommand===c?a:{metadata:{...a.metadata,[b]:{...d,lastCommand:c}}}}),h()},removeTab:b=>{a(a=>{let{[b]:c,...d}=a.metadata;return{metadata:d}}),h()},hydrate:b=>{a(a=>{let c={},d=Date.now();for(let[e,h]of Object.entries(b)){let b=a.metadata[e],i=d-(f.get(e)??0)<1e3,j=d-(g.get(e)??0)<1e3;c[e]={...h,...i&&b?.title!==void 0?{title:b.title}:{},...j&&b?.cwd!==void 0?{cwd:b.cwd}:{}}}return{metadata:c}})},retainOnly:b=>{a(a=>{let c={};for(let d of b)a.metadata[d]&&(c[d]=a.metadata[d]);return{metadata:c}})},reset:()=>{e&&clearTimeout(e),e=null,f.clear(),g.clear(),a({metadata:{}})}})),j=i},168711,175679,a=>{"use strict";var b=a.i(4873);let c=(0,b.create)(a=>({data:null,setData:b=>a({data:b})}));a.s(["default",0,c],168711);let d=(0,b.create)(a=>({entries:[],syncFromServer:b=>a({entries:b}),upsertEntry:b=>a(a=>{let c=a.entries.findIndex(a=>a.id===b.id);if(c>=0){let d=[...a.entries];return d[c]=b,{entries:d}}return{entries:[b,...a.entries]}})}));a.s(["default",0,d],175679)},357785,a=>{"use strict";var b=a.i(4873);let c={phase:"idle",status:null,branch:null,error:null,lastFetchedAt:null},d=a=>a?a.staged+a.modified+a.untracked:0,e=(0,b.create)((a,b)=>({cwdKey:null,tmuxSession:null,...c,requestSeq:0,resetForTarget:({cwdKey:b,tmuxSession:d})=>{a(a=>a.cwdKey===b?a.tmuxSession===d?a:{tmuxSession:d}:{...c,cwdKey:b,tmuxSession:d,requestSeq:a.requestSeq+1})},fetchForTarget:async({cwdKey:c,tmuxSession:d},e)=>{if(!c||!d)return void b().resetForTarget({cwdKey:null,tmuxSession:null});let f=b(),g=f.cwdKey!==c,h=null!==f.lastFetchedAt&&Date.now()-f.lastFetchedAt<15e3;if(!g&&!e?.force&&h&&"error"!==f.phase){f.tmuxSession!==d&&a({tmuxSession:d});return}let i=f.requestSeq+1;a({cwdKey:c,tmuxSession:d,phase:"loading",status:g?null:f.status,branch:g?null:f.branch,error:null,lastFetchedAt:null,requestSeq:i});try{let c=new URLSearchParams({tmuxSession:d});e?.force&&c.set("force","true");let f=await fetch(`/api/git/status?${c.toString()}`,{cache:"no-store"});if(!f.ok)throw Error(`status-${f.status}`);let g=await f.json();if(b().requestSeq!==i)return;if(!g.status)return void a({phase:"not-git",status:null,branch:null,error:null,lastFetchedAt:Date.now()});let h=null;try{let a=new URLSearchParams({tmuxSession:d});e?.force&&a.set("force","true");let b=await fetch(`/api/git/branch?${a.toString()}`,{cache:"no-store"});b.ok&&(h=(await b.json()).branch)}catch{h=null}if(b().requestSeq!==i)return;a({phase:"ready",status:g.status,branch:h,error:null,lastFetchedAt:Date.now()})}catch(c){if(b().requestSeq!==i)return;a({phase:"error",status:null,branch:null,error:c instanceof Error?c.message:String(c),lastFetchedAt:Date.now()})}}}));a.s(["default",0,e,"formatGitStatusSummary",0,(a,b,c,e)=>{if("idle"===a)return e;if("loading"===a)return"Checking Git status...";if("not-git"===a)return"Not a Git repository";if("error"===a)return"Git status unavailable";if(!c)return e;let f=d(c),g=[b??"Git",f>0?`${f} changed`:"clean"];return(c.insertions>0||c.deletions>0)&&g.push(`+${c.insertions} -${c.deletions}`),c.ahead>0&&g.push(`ahead ${c.ahead}`),c.behind>0&&g.push(`behind ${c.behind}`),c.stash>0&&g.push(`${c.stash} stash`),g.join(" · ")},"getGitStatusIndicators",0,a=>{if(!a)return[];let b=d(a),c=[];return b>0&&c.push({key:"changed",label:b>99?"99+":String(b),tone:"dirty"}),a.ahead>0&&c.push({key:"ahead",label:`↑${a.ahead}`,tone:"sync"}),a.behind>0&&c.push({key:"behind",label:`↓${a.behind}`,tone:"sync"}),a.stash>0&&c.push({key:"stash",label:`S${a.stash}`,tone:"stash"}),c}])},552591,a=>{"use strict";var b=a.i(127669),c=a.i(760644),d=a.i(199462),e=a.i(168711),f=a.i(175679),g=a.i(357785),h=a.i(626605),i=a.i(206456),j=a.i(144784);let k=null;a.s(["ackNotificationInput",0,(a,b)=>{k?.readyState===WebSocket.OPEN&&k.send(JSON.stringify({type:"status:ack-notification",tabId:a,seq:b}))},"default",0,()=>{let a=(0,b.useRef)(0),l=(0,b.useRef)(null),m=(0,b.useRef)(!0);(0,b.useEffect)(()=>{m.current=!0;let b=()=>{if(!m.current)return;let n="https:"===location.protocol?"wss:":"ws:",o=new WebSocket(`${n}//${location.host}/api/status`);k=o,o.onopen=()=>{m.current&&(a.current=0,c.default.getState().setStatusWsConnected(!0))},o.onmessage=a=>{if(m.current)try{let b=JSON.parse(a.data);switch(b.type){case"status:sync":for(let[a,e]of(c.default.getState().syncAllFromServer(b.tabs),Object.entries(b.tabs)))"agent-sessions"!==e.panelType&&e.paneTitle&&!d.default.getState().metadata[a]?.title&&d.default.getState().setTitle(a,(0,i.formatTabTitle)(e.paneTitle,e.panelType));break;case"status:update":c.default.getState().updateFromServer(b.tabId,{cliState:b.cliState,workspaceId:b.workspaceId,tabName:b.tabName,panelType:b.panelType,terminalStatus:b.terminalStatus,listeningPorts:b.listeningPorts,currentProcess:b.currentProcess,agentProviderId:b.agentProviderId,agentSessionId:b.agentSessionId,agentSummary:b.agentSummary,lastUserMessage:b.lastUserMessage,lastAssistantMessage:b.lastAssistantMessage,currentAction:b.currentAction,readyForReviewAt:b.readyForReviewAt,busySince:b.busySince,dismissedAt:b.dismissedAt,compactingSince:b.compactingSince,permissionRequest:b.permissionRequest,lastEvent:b.lastEvent,eventSeq:b.eventSeq}),b.paneTitle&&"agent-sessions"!==b.panelType&&d.default.getState().setTitle(b.tabId,(0,i.formatTabTitle)(b.paneTitle,b.panelType));break;case"status:hook-event":c.default.getState().applyHookEvent(b.tabId,b.event),((a,b)=>{if("stop"!==b.name)return;let c=g.default.getState();if(!c.cwdKey||!c.tmuxSession)return;let d=h.useLayoutStore.getState().layout;if(!d)return;let e=(0,j.collectAllTabs)(d.root).find(b=>b.id===a);e&&e.sessionName===c.tmuxSession&&c.fetchForTarget({cwdKey:c.cwdKey,tmuxSession:c.tmuxSession},{force:!0})})(b.tabId,b.event);break;case"rate-limits:update":e.default.getState().setData(b.data);break;case"session-history:sync":f.default.getState().syncFromServer(b.entries);break;case"session-history:update":f.default.getState().upsertEntry(b.entry)}}catch{}},o.onclose=()=>{if(!m.current)return;c.default.getState().setStatusWsConnected(!1),k=null;let d=Math.min(1e3*Math.pow(2,a.current),3e4);a.current++,l.current=setTimeout(b,d)},o.onerror=()=>{}};b();let n=()=>{if("visible"!==document.visibilityState)return;let c=k?.readyState;c!==WebSocket.OPEN&&c!==WebSocket.CONNECTING&&(l.current&&(clearTimeout(l.current),l.current=null),a.current=0,b())};return document.addEventListener("visibilitychange",n),()=>{m.current=!1,l.current&&(clearTimeout(l.current),l.current=null),k&&(k.close(),k=null),document.removeEventListener("visibilitychange",n)}},[])},"dismissTab",0,a=>{c.default.getState().dismissTab(a),k?.readyState===WebSocket.OPEN&&k.send(JSON.stringify({type:"status:tab-dismissed",tabId:a}))},"requestSync",0,()=>{k?.readyState===WebSocket.OPEN&&k.send(JSON.stringify({type:"status:request-sync"}))}])},409679,a=>{"use strict";var b=a.i(127669);a.i(986013),a.i(678240),a.i(626605);var c=a.i(721043);let d=async()=>{try{let a=await navigator.serviceWorker.ready,b=await a.pushManager.getSubscription();return b?.endpoint??null}catch{return null}},e=async a=>{fetch("/api/push/register-session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:await d(),sessionId:a}),keepalive:!0}).catch(()=>{})};a.s(["default",0,()=>{(0,b.useRef)(!1),(0,b.useEffect)(()=>{c.default},[]),(0,b.useEffect)(()=>{},[])},"registerPushTarget",0,e])},96968,a=>{"use strict";var b=a.i(127669);let c=768;a.s(["default",0,(a=c)=>{let d=`(max-width: ${a-1}px)`,e=(0,b.useCallback)(a=>{let b=window.matchMedia(d);return b.addEventListener("change",a),()=>b.removeEventListener("change",a)},[d]),f=(0,b.useCallback)(()=>window.matchMedia(d).matches,[d]),g=(0,b.useCallback)(()=>!1,[]);return(0,b.useSyncExternalStore)(e,f,g)}])}];
1
+ module.exports=[760644,a=>{"use strict";var b=a.i(4873);let c={terminalConnected:!1,agentProcess:null,agentProcessCheckedAt:0,agentInstalled:!0,sessionView:"session-list",cliState:"inactive",isTimelineLoading:!0,workspaceId:""},d=(a,b,c)=>{let d=a[b];return d?{...a,[b]:{...d,...c}}:a},e=(a,b)=>null!=b&&"inactive"!==b&&"unknown"!==b&&"cancelled"!==b&&"check"===a?"timeline":a,f=(a,b)=>b.agentProviderId||"terminal"!==a.panelType||!0!==a.agentProcess?{}:{agentProviderId:a.agentProviderId,agentSessionId:a.agentSessionId},g=(0,b.create)(a=>({tabs:{},tabOrders:{},statusWsConnected:!1,initTab:(b,d)=>a(a=>{let e=a.tabs[b],f={...c,...e,...d};return e?.cliState==="ready-for-review"&&"ready-for-review"!==f.cliState&&(f.cliState="ready-for-review",f.readyForReviewAt=e.readyForReviewAt),{tabs:{...a.tabs,[b]:f}}}),removeTab:b=>a(a=>{let{[b]:c,...d}=a.tabs;return{tabs:d}}),setTerminalConnected:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.terminalConnected!==c?{tabs:d(a.tabs,b,{terminalConnected:c})}:a}),setAgentProcess:(b,c,e)=>a(a=>{let f=a.tabs[b];if(!f||f.agentProcessCheckedAt>e)return a;let g={agentProcess:c,agentProcessCheckedAt:e};return(!0===c&&("check"===f.sessionView||"session-list"===f.sessionView)&&(g.sessionView="timeline"),!1===c&&!0===f.agentProcess&&"timeline"===f.sessionView&&(g.sessionView="session-list"),f.agentProcess===c&&f.agentProcessCheckedAt===e&&void 0===g.sessionView)?a:{tabs:d(a.tabs,b,g)}}),setAgentInstalled:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.agentInstalled!==c?{tabs:d(a.tabs,b,{agentInstalled:c})}:a}),setSessionView:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.sessionView!==c?{tabs:d(a.tabs,b,{sessionView:c})}:a}),setTimelineLoading:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.isTimelineLoading!==c?{tabs:d(a.tabs,b,{isTimelineLoading:c})}:a}),setSessionMetaCache:(b,c)=>a(a=>{let e=a.tabs[b];if(!e)return a;let f=e.sessionMetaCache;return f&&f.sessionId===c.sessionId&&f.jsonlPath===c.jsonlPath&&f.meta===c.meta?a:{tabs:d(a.tabs,b,{sessionMetaCache:c})}}),cancelTab:b=>a(a=>{let c=a.tabs[b];return c&&"cancelled"!==c.cliState?{tabs:d(a.tabs,b,{cliState:"cancelled",localUpdatedAt:Date.now()})}:a}),dismissTab:b=>a(a=>{let c=a.tabs[b];return c&&"ready-for-review"===c.cliState?{tabs:d(a.tabs,b,{cliState:"idle",dismissedAt:Date.now()})}:a}),setWorkspaceId:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.workspaceId!==c?{tabs:d(a.tabs,b,{workspaceId:c})}:a}),setPanelType:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.panelType!==c?{tabs:d(a.tabs,b,{panelType:c})}:a}),setCurrentProcess:(b,c)=>a(a=>{let e=a.tabs[b];if(!e)return a;let f=c??void 0;return e.currentProcess===f?a:{tabs:d(a.tabs,b,{currentProcess:f,localUpdatedAt:Date.now()})}}),setDetectedAgent:(b,c)=>a(a=>{let e=a.tabs[b],f=c.checkedAt??Date.now();if(!e||e.agentProcessCheckedAt>f)return a;let g={agentProcess:c.running,agentProcessCheckedAt:f};return c.running?(c.providerId&&(g.agentProviderId=c.providerId),void 0!==c.sessionId&&(g.agentSessionId=c.sessionId),("check"===e.sessionView||"session-list"===e.sessionView)&&(g.sessionView="timeline")):"terminal"===e.panelType?(g.agentProviderId=void 0,g.agentSessionId=null,!0===e.agentProcess&&"timeline"===e.sessionView&&(g.sessionView="session-list")):"timeline"===e.sessionView&&(!0===e.agentProcess||e.agentSessionId&&!e.isTimelineLoading)&&(g.sessionView="session-list"),{tabs:d(a.tabs,b,g)}}),setTabOrder:(b,c)=>a(a=>{let d=a.tabOrders[b];return d&&d.length===c.length&&d.every((a,b)=>a===c[b])?a:{tabOrders:{...a.tabOrders,[b]:c}}}),setStatusWsConnected:b=>a({statusWsConnected:b}),syncAllFromServer:b=>a(a=>{let d=Date.now(),g={};for(let[h,i]of Object.entries(b)){let b=a.tabs[h];if(b?.cliState==="cancelled"){g[h]=b;continue}b?.localUpdatedAt&&d-b.localUpdatedAt<3e4?g[h]={...b,cliState:i.cliState,workspaceId:i.workspaceId,tabName:i.tabName,terminalStatus:i.terminalStatus,listeningPorts:i.listeningPorts,agentProviderId:i.agentProviderId,agentSessionId:i.agentSessionId,...f(b,i),agentSummary:i.agentSummary,lastUserMessage:i.lastUserMessage,lastAssistantMessage:i.lastAssistantMessage,currentAction:i.currentAction,readyForReviewAt:i.readyForReviewAt,busySince:i.busySince,dismissedAt:i.dismissedAt,compactingSince:i.compactingSince,permissionRequest:i.permissionRequest,lastEvent:i.lastEvent,eventSeq:i.eventSeq,sessionView:e(b.sessionView,i.cliState)}:b?g[h]={...b,cliState:i.cliState,workspaceId:i.workspaceId,tabName:i.tabName,panelType:i.panelType??b.panelType,terminalStatus:i.terminalStatus,listeningPorts:i.listeningPorts,currentProcess:i.currentProcess,agentProviderId:i.agentProviderId,agentSessionId:i.agentSessionId,...f(b,i),agentSummary:i.agentSummary,lastUserMessage:i.lastUserMessage,lastAssistantMessage:i.lastAssistantMessage,currentAction:i.currentAction,readyForReviewAt:i.readyForReviewAt,busySince:i.busySince,dismissedAt:i.dismissedAt,compactingSince:i.compactingSince,permissionRequest:i.permissionRequest,lastEvent:i.lastEvent,eventSeq:i.eventSeq,sessionView:e(b.sessionView,i.cliState)}:g[h]={...c,cliState:i.cliState,workspaceId:i.workspaceId,tabName:i.tabName,panelType:i.panelType,terminalStatus:i.terminalStatus,listeningPorts:i.listeningPorts,currentProcess:i.currentProcess,agentProviderId:i.agentProviderId,agentSessionId:i.agentSessionId,agentSummary:i.agentSummary,lastUserMessage:i.lastUserMessage,lastAssistantMessage:i.lastAssistantMessage,currentAction:i.currentAction,readyForReviewAt:i.readyForReviewAt,busySince:i.busySince,dismissedAt:i.dismissedAt,compactingSince:i.compactingSince,permissionRequest:i.permissionRequest,lastEvent:i.lastEvent,eventSeq:i.eventSeq,sessionView:e(c.sessionView,i.cliState)}}for(let[b,c]of Object.entries(a.tabs))g[b]||(g[b]=c);return{tabs:g}}),updateFromServer:(b,g)=>a(a=>{if(null===g.cliState){let{[b]:c,...d}=a.tabs;return{tabs:d}}let h=a.tabs[b];if(h){if("cancelled"===h.cliState)return a;let c=void 0!==g.eventSeq&&void 0!==h.eventSeq&&g.eventSeq<h.eventSeq,i=void 0!==g.eventSeq&&(void 0===h.eventSeq||g.eventSeq>=h.eventSeq)?{lastEvent:g.lastEvent,eventSeq:g.eventSeq}:{},j=c?{cliState:h.cliState,readyForReviewAt:h.readyForReviewAt,busySince:h.busySince,dismissedAt:h.dismissedAt}:{cliState:g.cliState,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt};return{tabs:d(a.tabs,b,{...j,workspaceId:g.workspaceId,tabName:g.tabName,panelType:g.panelType??h.panelType,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,currentProcess:g.currentProcess,agentProviderId:g.agentProviderId,agentSessionId:g.agentSessionId,...f(h,g),agentSummary:g.agentSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,currentAction:g.currentAction,compactingSince:g.compactingSince,permissionRequest:g.permissionRequest,sessionView:e(h.sessionView,g.cliState),...i})}}return{tabs:{...a.tabs,[b]:{...c,cliState:g.cliState,workspaceId:g.workspaceId,tabName:g.tabName,panelType:g.panelType,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,currentProcess:g.currentProcess,agentProviderId:g.agentProviderId,agentSessionId:g.agentSessionId,agentSummary:g.agentSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt,compactingSince:g.compactingSince,permissionRequest:g.permissionRequest,lastEvent:g.lastEvent,eventSeq:g.eventSeq,sessionView:e(c.sessionView,g.cliState)}}}}),applyHookEvent:(b,c)=>a(a=>{let e=a.tabs[b];if(!e||void 0!==e.eventSeq&&c.seq<=e.eventSeq)return a;let f=((a,b)=>{if(!a||"cancelled"===b)return b;switch(a.name){case"session-start":case"interrupt":return"idle";case"prompt-submit":return"busy";case"notification":return"needs-input";case"stop":return"ready-for-review"}})(c,e.cliState);return{tabs:d(a.tabs,b,{cliState:f,lastEvent:c,eventSeq:c.seq,readyForReviewAt:"ready-for-review"===f?Date.now():null,busySince:"busy"===f?Date.now():null,dismissedAt:"busy"===f?null:e.dismissedAt,permissionRequest:"needs-input"===e.cliState&&"needs-input"!==f?null:e.permissionRequest})}})}));a.s(["default",0,g,"getInitialTabStateFromLayoutTab",0,a=>{let b={panelType:a.panelType},c=a.agentState?.providerId??("codex-cli"===a.panelType?"codex":"claude-code"===a.panelType?"claude":void 0),d=a.agentState?.sessionId??a.claudeSessionId??null;return c&&(b.agentProviderId=c),d&&(b.agentSessionId=d,b.agentSummary=a.agentState?.summary??a.claudeSummary??null,b.sessionView="timeline"),b},"isCliIdle",0,a=>"idle"===a||"ready-for-review"===a,"selectGlobalStatus",0,a=>{let b=0,c=0;for(let d of Object.values(a))"busy"===d.cliState?b++:("ready-for-review"===d.cliState||"needs-input"===d.cliState)&&c++;return{busyCount:b,attentionCount:c}},"selectSessionView",0,(a,b)=>{let c=a[b];return c?c.sessionView:"session-list"},"selectTabDisplayStatus",0,(a,b)=>{let c=a[b];return c&&"inactive"!==c.cliState?"busy"===c.cliState?"busy":"ready-for-review"===c.cliState?"ready-for-review":"needs-input"===c.cliState?"needs-input":"unknown"===c.cliState?"unknown":"idle":"idle"},"selectWorkspacePortsLabel",0,(a,b)=>{let c=new Set;for(let d of Object.values(a))if(d.workspaceId===b&&d.listeningPorts)for(let a of d.listeningPorts)c.add(a);return 0===c.size?"":":"+[...c].sort((a,b)=>a-b).join(", :")}],760644)},484682,a=>{"use strict";var b=a.i(127669);let c=(a,b)=>{let c=a instanceof Map?a:new Map(a.entries()),d=b instanceof Map?b:new Map(b.entries());if(c.size!==d.size)return!1;for(let[a,b]of c)if(!d.has(a)||!Object.is(b,d.get(a)))return!1;return!0};a.s(["useShallow",0,function(a){let d=b.default.useRef(void 0);return b=>{let e=a(b);return!function(a,b){if(Object.is(a,b))return!0;if("object"!=typeof a||null===a||"object"!=typeof b||null===b||Object.getPrototypeOf(a)!==Object.getPrototypeOf(b))return!1;if(Symbol.iterator in a&&Symbol.iterator in b){if("entries"in a&&"entries"in b)return c(a,b);let d=a[Symbol.iterator](),e=b[Symbol.iterator](),f=d.next(),g=e.next();for(;!f.done&&!g.done;){if(!Object.is(f.value,g.value))return!1;f=d.next(),g=e.next()}return!!f.done&&!!g.done}return c({entries:()=>Object.entries(a)},{entries:()=>Object.entries(b)})}(d.current,e)?d.current=e:d.current}}],484682)},959709,a=>{"use strict";var b=a.i(127669),c=a.i(510414),d=a.i(892209),e=a.i(760644);let f=new Set(["/new","/clear"]),g=a=>`pt-input-draft:${a}`,h=a=>{try{localStorage.removeItem(g(a))}catch{}};a.s(["clearInputDraft",0,h,"default",0,(a,i,j,k)=>{let l=k?.tabId,[m,n]=(0,b.useState)(()=>l?(a=>{try{return localStorage.getItem(g(a))??""}catch{return""}})(l):""),o=(0,b.useRef)(null),p=(0,b.useMemo)(()=>(0,e.isCliIdle)(a)||"unknown"===a?"input":"busy"===a||"needs-input"===a?"interrupt":"disabled",[a]),q=k?.onRestartSession,r=k?.onMessageSent,s=k?.submitDelayMs??250,t=(0,b.useRef)(null);(0,b.useEffect)(()=>{if(l)return t.current&&clearTimeout(t.current),t.current=setTimeout(()=>((a,b)=>{try{b?localStorage.setItem(g(a),b):localStorage.removeItem(g(a))}catch{}})(l,m),300),()=>{t.current&&clearTimeout(t.current)}},[l,m]);let u=(0,b.useCallback)(()=>{if("disabled"===p)return void c.toast.error(k?.disabledMessage??(0,d.t)("terminal","inputDisabledPlaceholder"));if(!j)return void c.toast.error((0,d.t)("connection","terminalDisconnected"));if(""!==m.trim()){if(f.has(m.trim().toLowerCase())){q?.(),n(""),l&&h(l);return}m.includes("\n")?i(`\x1b[200~${m}\x1b[201~`):i(m),setTimeout(()=>i("\r"),s),m.trim().startsWith("/")||r?.(m.trim()),n(""),l&&h(l)}},[p,m,i,j,q,r,l,k?.disabledMessage,s]),v=(0,b.useCallback)(()=>{j?i("\x1b\x1b"):c.toast.error((0,d.t)("connection","terminalDisconnected"))},[i,j]),w=(0,b.useCallback)(()=>{let a=o.current;if(!a)return;a.focus();let b=a.value.length;a.setSelectionRange(b,b)},[]),x="disabled"!==p&&j;return{value:m,setValue:n,mode:p,canSend:x,send:u,interrupt:v,textareaRef:o,focusInput:w}}])},626605,a=>{"use strict";a.s(["default",()=>I,"navigateToTab",()=>G,"navigateToTabOrCreate",()=>H,"useLayoutStore",()=>F]);var b=a.i(127669),c=a.i(41910),d=a.i(4873),e=a.i(484682),f=a.i(510414),g=a.i(892209),h=a.i(959709),i=a.i(760644),j=a.i(912251),k=a.i(199462),l=a.i(797630),m=a.i(144784);let n="pt-active-pane-",o="pt-active-tab-",p="pt-terminal-ratio-",q="pt-terminal-collapsed-",r=a=>{try{return sessionStorage.getItem(`${o}${a}`)}catch{return null}},s=a=>{try{let b=sessionStorage.getItem(`${p}${a}`);if(null==b)return null;let c=Number(b);return Number.isFinite(c)?c:null}catch{return null}},t=a=>{try{let b=sessionStorage.getItem(`${q}${a}`);if(null==b)return null;return"1"===b}catch{return null}},u=null,v=null,w=null,x=!1,y=new Map,z=(a,b)=>{if(!b)return a;let c=a.includes("?")?"&":"?";return`${a}${c}workspace=${b}`},A=(a,b)=>{let c=a?(0,m.collectPanes)(a.root).length:0;return{paneCount:c,canSplit:c<10&&!b}},B=(a,b,c)=>{a({layout:c,...A(c,b().isSplitting)})},C=(a,b,c)=>{let d=b().layout;if(d){let a=(0,m.collectPanes)(c.root);for(let b of(d.activePaneId&&a.some(a=>a.id===d.activePaneId)&&(c.activePaneId=d.activePaneId),a)){let a=(0,m.findPane)(d.root,b.id);a?.activeTabId&&b.tabs.some(b=>b.id===a.activeTabId)&&(b.activeTabId=a.activeTabId)}}a({layout:c,...A(c,b().isSplitting)})},D=(a,b,c,d)=>{let{layout:e}=b();if(!e)return;let f=(0,m.updatePaneInTree)(e.root,c,d);f!==e.root&&B(a,b,{...e,root:f})},E=async(a,b)=>{try{let c=await fetch(a,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok)return null;return await c.json()}catch{return null}},F=(0,d.create)((a,b)=>({layout:null,isLoading:!0,error:null,isSplitting:!1,workspaceId:null,retryCount:0,paneCount:0,canSplit:!1,pendingFocusTabId:null,setWorkspaceId:b=>{x=!1,a({workspaceId:b})},setLayout:c=>{B(a,b,c)},fetchLayout:async(c,d)=>{if(x)return;let e=c??b().workspaceId;if(!e)return;u?.abort();let h=new AbortController;u=h,b().layout||a({isLoading:!0,error:null});try{let c=await fetch(z("/api/layout",e),{signal:h.signal});if(!c.ok)throw Error();let f=await c.json();if(h.signal.aborted)return;let g=b().layout;if(!1!==d){let a=(0,m.collectPanes)(f.root);if(g)for(let b of(g.activePaneId&&a.some(a=>a.id===g.activePaneId)&&(f.activePaneId=g.activePaneId),a)){let a=(0,m.findPane)(g.root,b.id);a?.activeTabId&&b.tabs.some(b=>b.id===a.activeTabId)&&(b.activeTabId=a.activeTabId)}else{let b=(a=>{try{return sessionStorage.getItem(`${n}${a}`)}catch{return null}})(e);for(let c of(b&&a.some(a=>a.id===b)&&(f.activePaneId=b),a)){let a=r(c.id);for(let b of(a&&c.tabs.some(b=>b.id===a)&&(c.activeTabId=a),c.tabs)){let a=s(b.id);null!==a&&(b.terminalRatio=a);let c=t(b.id);null!==c&&(b.terminalCollapsed=c)}}}}if(g){let c={root:g.root,activePaneId:g.activePaneId},d={root:f.root,activePaneId:f.activePaneId};if(JSON.stringify(c)===JSON.stringify(d)){let c=b().pendingFocusTabId;c&&(a({pendingFocusTabId:null}),b().focusTab(c));return}}let i=b().pendingFocusTabId,j=null;if(i){for(let b of(a({pendingFocusTabId:null}),(0,m.collectPanes)(f.root)))if(b.tabs.some(a=>a.id===i)){f.activePaneId=b.id,b.activeTabId=i,j=b.id;break}}a({layout:f,retryCount:0,...A(f,b().isSplitting)}),j&&(E(z("/api/layout",e),{activePaneId:j}),E(z(`/api/layout/pane/${j}`,e),{activeTabId:i}))}catch(d){if(d instanceof DOMException&&"AbortError"===d.name)return;let c=b().retryCount+1;if(a({retryCount:c}),c>=3)try{let c=await fetch(z("/api/layout/pane",e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(c.ok){let{paneId:d,tab:e}=await c.json(),h={root:{type:"pane",id:d,tabs:[e],activeTabId:e.id},activePaneId:d,updatedAt:new Date().toISOString()};a({layout:h,...A(h,b().isSplitting)}),f.toast.info((0,g.t)("terminal","fallbackLayout")),a({retryCount:0});return}}catch{}a({error:(0,g.t)("terminal","layoutFetchError")}),v?.()}finally{h.signal.aborted||a({isLoading:!1})}},splitPane:async(c,d)=>{let{layout:e,isSplitting:h,workspaceId:i}=b();if(e&&!h&&!((0,m.collectPanes)(e.root).length>=10)){a({isSplitting:!0,canSplit:!1});try{let f,g,h=(0,m.findPane)(e.root,c),j=h?.tabs.find(a=>a.id===h.activeTabId);if(j){g=j.panelType;try{let a=await fetch(z(`/api/layout/cwd?session=${j.sessionName}`,i));a.ok&&(f=(await a.json()).cwd)}catch{}}let k=await fetch(z("/api/layout/pane",i),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourcePaneId:c,orientation:d,cwd:f,panelType:g})});if(!k.ok)throw Error();let l=await k.json();B(a,b,l)}catch{f.toast.error((0,g.t)("terminal","splitFailed"))}finally{a(a=>({isSplitting:!1,canSplit:a.paneCount<10}))}}},closePane:async c=>{let{layout:d,workspaceId:e}=b();if(d&&!((0,m.collectPanes)(d.root).length<=1))try{let d=await fetch(z(`/api/layout/pane/${c}`,e),{method:"DELETE"});if(!d.ok)throw Error();let f=await d.json();B(a,b,f)}catch{f.toast.error("Pane을 닫을 수 없습니다")}},focusPane:c=>{let{layout:d,workspaceId:e}=b();d&&d.activePaneId!==c&&(a({layout:{...d,activePaneId:c}}),E(z("/api/layout",e),{activePaneId:c}).then(c=>{c&&C(a,b,c)}))},updateRatio:(c,d)=>{let{layout:e,workspaceId:f}=b();e&&(a({layout:{...e,root:(0,m.updateRatioAtPath)(e.root,c,d)}}),w&&clearTimeout(w),w=setTimeout(()=>{w=null,E(z("/api/layout",f),{ratioUpdate:{path:c,ratio:d}}).then(c=>{c&&C(a,b,c)})},300))},moveTab:(c,d,e,f)=>{if(d===e)return;let{layout:g,workspaceId:h}=b();if(!g)return;let i=JSON.parse(JSON.stringify(g)),j=(0,m.findPane)(i.root,d),k=(0,m.findPane)(i.root,e);if(j&&k){let g=j.tabs.findIndex(a=>a.id===c);if(-1!==g){let[h]=j.tabs.splice(g,1);j.activeTabId===c&&(j.activeTabId=j.tabs[0]?.id??null),j.tabs.forEach((a,b)=>{a.order=b}),k.tabs.splice(f,0,h),k.tabs.forEach((a,b)=>{a.order=b}),k.activeTabId=c,0===j.tabs.length&&(0,m.collectPanes)(i.root).length>1&&(0,m.removePaneWithFocus)(i,d),i.activePaneId=e,B(a,b,i)}}fetch(z(`/api/layout/pane/${d}/tabs/${c}/move`,h),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({toPaneId:e,toIndex:f})}).then(async c=>{c.ok?C(a,b,await c.json()):await b().fetchLayout(void 0,!1)}).catch(()=>b().fetchLayout(void 0,!1))},createTabInPane:async(c,d,e,h)=>{let{layout:j,workspaceId:l}=b();try{let f,g=d,n=j?(0,m.findPane)(j.root,c):void 0,o=n?.tabs.find(a=>a.id===n.activeTabId);!g&&o&&(g=o.panelType),"web-browser"!==g&&o&&(f=k.default.getState().metadata[o.id]?.cwd);let p=await fetch(z(`/api/layout/pane/${c}/tabs`,l),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:f,panelType:g,command:e,resumeSessionId:h})});if(!p.ok)throw Error();let q=await p.json();return(e||h)&&i.default.getState().initTab(q.id,{panelType:g,sessionView:"check"}),D(a,b,c,a=>({...a,tabs:[...a.tabs,q],activeTabId:q.id})),b().fetchLayout(),q}catch{return f.toast.error((0,g.t)("terminal","tabCreateFailed")),null}},deleteTabInPane:async(c,d)=>{(0,h.clearInputDraft)(d),i.default.getState().cancelTab(d),D(a,b,c,a=>{let b=[...a.tabs].sort((a,b)=>a.order-b.order),c=b.findIndex(a=>a.id===d),e=b.filter(a=>a.id!==d);e.forEach((a,b)=>{a.order=b});let f=a.activeTabId;if(a.activeTabId===d){let a=b[c+1]||b[c-1];f=a?.id??null}return{...a,tabs:e,activeTabId:f}});let{workspaceId:e}=b();try{let a=await fetch(z(`/api/layout/pane/${c}/tabs/${d}`,e),{method:"DELETE"});a.ok||404===a.status||(f.toast.error((0,g.t)("terminal","tabDeleteError")),await b().fetchLayout())}catch{f.toast.error((0,g.t)("terminal","tabDeleteError")),await b().fetchLayout()}},restartTabInPane:async(a,c,d)=>{let{workspaceId:e}=b();try{return(await fetch(z(`/api/layout/pane/${a}/tabs/${c}`,e),{method:"POST",headers:d?{"Content-Type":"application/json"}:void 0,body:d?JSON.stringify({command:d}):void 0})).ok}catch{return f.toast.error((0,g.t)("terminal","sessionRestartFailed")),!1}},switchTabInPane:(c,d)=>{D(a,b,c,a=>({...a,activeTabId:d}));let{workspaceId:e}=b();E(z(`/api/layout/pane/${c}`,e),{activeTabId:d}).then(c=>{c&&C(a,b,c)})},renameTabInPane:async(c,d,e)=>{D(a,b,c,a=>({...a,tabs:a.tabs.map(a=>a.id===d?{...a,name:e}:a)}));let{workspaceId:h}=b(),i=await E(z(`/api/layout/pane/${c}/tabs/${d}`,h),{name:e});i?C(a,b,i):f.toast.error((0,g.t)("terminal","tabRenameFailed"))},reorderTabsInPane:(c,d)=>{D(a,b,c,a=>{let b=new Map(a.tabs.map(a=>[a.id,a])),c=d.map((a,c)=>{let d=b.get(a);return d?{...d,order:c}:null}).filter(a=>null!==a);return{...a,tabs:c}});let{workspaceId:e}=b();E(z(`/api/layout/pane/${c}/tabs/order`,e),{tabIds:d}).then(c=>{c&&C(a,b,c)})},removeTabLocally:(a,c)=>{(0,h.clearInputDraft)(c);let{workspaceId:d}=b();fetch(z(`/api/layout/pane/${a}/tabs/${c}`,d),{method:"DELETE"}).then(()=>b().fetchLayout()).catch(()=>{console.log("[layout] removeTabLocally failed")})},equalizeRatios:()=>{let{workspaceId:c}=b();E(z("/api/layout",c),{equalize:!0}).then(c=>{c&&C(a,b,c)})},updateDiffSettings:c=>{let{layout:d,workspaceId:e}=b();d&&(B(a,b,{...d,diffSettings:{...d.diffSettings??{},...c}}),E(z("/api/layout",e),{diffSettings:c}).then(c=>{c&&C(a,b,c)}))},updateTabPanelType:(c,d,e)=>{let f;D(a,b,c,a=>({...a,tabs:a.tabs.map(a=>{if(a.id!==d)return a;let b=(0,l.resolveTabNameForPanelTypeChange)(a.name,a.panelType,e),c={...a,panelType:e,name:b};return b!==a.name&&(f=b),"codex-cli"===e&&"claude-code"===a.panelType&&(c.claudeSessionId=null,c.agentState=void 0),c})})),i.default.getState().setPanelType(d,e);let{workspaceId:g}=b();E(z(`/api/layout/pane/${c}/tabs/${d}`,g),{panelType:e,...void 0!==f?{name:f}:{}}).then(c=>{c&&C(a,b,c)})},updateTabTerminalLayout:(c,d,e)=>{D(a,b,c,a=>({...a,tabs:a.tabs.map(a=>a.id===d?{...a,...e}:a)}));try{void 0!==e.terminalRatio&&sessionStorage.setItem(`${p}${d}`,String(e.terminalRatio)),void 0!==e.terminalCollapsed&&sessionStorage.setItem(`${q}${d}`,e.terminalCollapsed?"1":"0")}catch{}let{workspaceId:f}=b(),g=y.get(d);g&&clearTimeout(g),y.set(d,setTimeout(()=>{y.delete(d),E(z(`/api/layout/pane/${c}/tabs/${d}`,f),e)},300))},clearLayout:()=>{x=!0,u?.abort(),a({layout:null,paneCount:0,canSplit:!1})},focusTab:a=>{let{layout:c}=b();if(!c)return!1;for(let d of(0,m.collectPanes)(c.root))if(d.tabs.some(b=>b.id===a))return b().focusPane(d.id),b().switchTabInPane(d.id,a),!0;return!1},focusPrevTab:()=>{let{layout:a}=b();if(!a)return;let c=(0,m.collectPanes)(a.root),d=c.findIndex(b=>b.id===a.activePaneId);if(-1===d)return;let e=c[d],f=[...e.tabs].sort((a,b)=>a.order-b.order),g=f.findIndex(a=>a.id===e.activeTabId);if(g>0)return void b().switchTabInPane(e.id,f[g-1].id);let h=c[(d-1+c.length)%c.length],i=[...h.tabs].sort((a,b)=>a.order-b.order);0!==i.length&&(h.id!==e.id&&b().focusPane(h.id),b().switchTabInPane(h.id,i[i.length-1].id))},focusNextTab:()=>{let{layout:a}=b();if(!a)return;let c=(0,m.collectPanes)(a.root),d=c.findIndex(b=>b.id===a.activePaneId);if(-1===d)return;let e=c[d],f=[...e.tabs].sort((a,b)=>a.order-b.order),g=f.findIndex(a=>a.id===e.activeTabId);if(-1!==g&&g<f.length-1)return void b().switchTabInPane(e.id,f[g+1].id);let h=c[(d+1)%c.length],i=[...h.tabs].sort((a,b)=>a.order-b.order);0!==i.length&&(h.id!==e.id&&b().focusPane(h.id),b().switchTabInPane(h.id,i[0].id))},focusTabByIndex:a=>{let{layout:c}=b();if(!c?.activePaneId)return;let d=(0,m.collectPanes)(c.root).find(a=>a.id===c.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=a>=e.length?e[e.length-1]:e[a];f&&f.id!==d.activeTabId&&b().switchTabInPane(d.id,f.id)}}));F.subscribe((a,b)=>{if(a.layout&&a.workspaceId&&a.layout!==b.layout){var c=a.workspaceId,d=a.layout;try{for(let a of(d.activePaneId&&sessionStorage.setItem(`${n}${c}`,d.activePaneId),(0,m.collectPanes)(d.root)))for(let b of(a.activeTabId&&sessionStorage.setItem(`${o}${a.id}`,a.activeTabId),a.tabs))void 0!==b.terminalRatio&&sessionStorage.setItem(`${p}${b.id}`,String(b.terminalRatio)),void 0!==b.terminalCollapsed&&sessionStorage.setItem(`${q}${b.id}`,b.terminalCollapsed?"1":"0")}catch{}}});let G=(a,b)=>{let d=F.getState();if("/"!==c.default.pathname){F.setState({pendingFocusTabId:b}),j.default.getState().switchWorkspace(a),c.default.push("/");return}a===d.workspaceId?d.focusTab(b):(d.clearLayout(),F.setState({pendingFocusTabId:b}),j.default.getState().switchWorkspace(a))},H=async(a,b,c,d,e,f="claude")=>{let g=j.default.getState(),h="codex"===f?"codex-cli":"claude-code",k=a,l=g.workspaces.find(b=>b.id===a);if(!l){if(!e)return;let a=await g.createWorkspace(e,d,c??void 0,h);if(!a)return;k=a.id;let b=await fetch(z("/api/layout",k));if(!b.ok)return;let f=await b.json(),j=(0,m.collectAllTabs)(f.root)[0];if(!j)return;c&&i.default.getState().initTab(j.id,{panelType:h,sessionView:"check"}),G(k,j.id);return}let n=await fetch(z("/api/layout",k));if(!n.ok)return;let o=await n.json();if(c){let a=(0,m.collectAllTabs)(o.root).find(a=>"codex"===f?a.agentState?.providerId==="codex"&&a.agentState.sessionId===c:a.agentState?.providerId==="claude"?a.agentState.sessionId===c:a.claudeSessionId===c);if(a){i.default.getState().setSessionView(a.id,"timeline"),G(k,a.id);return}}else if((0,m.collectAllTabs)(o.root).find(a=>a.id===b))return void G(k,b);let p=o.activePaneId??(0,m.getFirstPaneId)(o.root),q={panelType:h,cwd:l.directories[0]};c&&(q.resumeSessionId=c);let r=await fetch(z(`/api/layout/pane/${p}/tabs`,k),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(q)});if(!r.ok)return;let s=await r.json();c&&i.default.getState().initTab(s.id,{panelType:h,sessionView:"check"}),k===F.getState().workspaceId?(F.setState({pendingFocusTabId:s.id}),F.getState().fetchLayout()):G(k,s.id)},I=({workspaceId:a,onFetchError:c})=>((0,b.useEffect)(()=>{v=c??null},[c]),(0,b.useEffect)(()=>{if(a){let b=F.getState();b.setWorkspaceId(a),b.fetchLayout(a)}},[a]),(0,b.useEffect)(()=>F.subscribe(a=>{let b=a.workspaceId;if(!b||!a.layout?.root)return;let c=(0,m.collectPanes)(a.layout.root).flatMap(a=>a.tabs.map(a=>a.id));i.default.getState().setTabOrder(b,c)}),[]),F((0,e.useShallow)(a=>({layout:a.layout,isLoading:a.isLoading,error:a.error,isSplitting:a.isSplitting,paneCount:a.paneCount,canSplit:a.canSplit,splitPane:a.splitPane,closePane:a.closePane,focusPane:a.focusPane,updateRatio:a.updateRatio,moveTab:a.moveTab,createTabInPane:a.createTabInPane,deleteTabInPane:a.deleteTabInPane,restartTabInPane:a.restartTabInPane,switchTabInPane:a.switchTabInPane,renameTabInPane:a.renameTabInPane,reorderTabsInPane:a.reorderTabsInPane,removeTabLocally:a.removeTabLocally,equalizeRatios:a.equalizeRatios,updateDiffSettings:a.updateDiffSettings,updateTabPanelType:a.updateTabPanelType,clearLayout:a.clearLayout,fetchLayout:a.fetchLayout,focusTab:a.focusTab,focusPrevTab:a.focusPrevTab,focusNextTab:a.focusNextTab,focusTabByIndex:a.focusTabByIndex}))))},199462,a=>{"use strict";a.s(["default",()=>j]);var b=a.i(4873),c=a.i(626605),d=a.i(144784);let e=null,f=new Map,g=new Map,h=()=>{e&&clearTimeout(e),e=setTimeout(()=>{e=null;let{metadata:a}=i.getState(),b=c.useLayoutStore.getState().layout,f=c.useLayoutStore.getState().workspaceId;if(!b||!f)return;let g=`?workspace=${f}`;for(let c of(0,d.collectPanes)(b.root))for(let b of c.tabs){let d=a[b.id];if(!d)continue;let e={};void 0!==d.title&&d.title!==b.title&&(e.title=d.title),void 0!==d.cwd&&d.cwd!==b.cwd&&(e.cwd=d.cwd),void 0!==d.lastCommand&&(d.lastCommand??null)!==(b.lastCommand??null)&&(e.lastCommand=d.lastCommand??null),Object.keys(e).length>0&&fetch(`/api/layout/pane/${c.id}/tabs/${b.id}${g}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(a=>{console.log(`[tab-metadata] sync failed: ${a instanceof Error?a.message:a}`)})}},100)},i=(0,b.create)(a=>({metadata:{},setTitle:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.title===c?a:(f.set(b,Date.now()),{metadata:{...a.metadata,[b]:{...d,title:c}}})}),h()},setCwd:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.cwd===c?a:(g.set(b,Date.now()),{metadata:{...a.metadata,[b]:{...d,cwd:c}}})}),h()},setLastCommand:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.lastCommand===c?a:{metadata:{...a.metadata,[b]:{...d,lastCommand:c}}}}),h()},removeTab:b=>{a(a=>{let{[b]:c,...d}=a.metadata;return{metadata:d}}),h()},hydrate:b=>{a(a=>{let c={},d=Date.now();for(let[e,h]of Object.entries(b)){let b=a.metadata[e],i=d-(f.get(e)??0)<1e3,j=d-(g.get(e)??0)<1e3;c[e]={...h,...i&&b?.title!==void 0?{title:b.title}:{},...j&&b?.cwd!==void 0?{cwd:b.cwd}:{}}}return{metadata:c}})},retainOnly:b=>{a(a=>{let c={};for(let d of b)a.metadata[d]&&(c[d]=a.metadata[d]);return{metadata:c}})},reset:()=>{e&&clearTimeout(e),e=null,f.clear(),g.clear(),a({metadata:{}})}})),j=i},168711,175679,a=>{"use strict";var b=a.i(4873);let c=(0,b.create)(a=>({data:null,setData:b=>a({data:b})}));a.s(["default",0,c],168711);let d=(0,b.create)(a=>({entries:[],syncFromServer:b=>a({entries:b}),upsertEntry:b=>a(a=>{let c=a.entries.findIndex(a=>a.id===b.id);if(c>=0){let d=[...a.entries];return d[c]=b,{entries:d}}return{entries:[b,...a.entries]}})}));a.s(["default",0,d],175679)},357785,a=>{"use strict";var b=a.i(4873);let c={phase:"idle",status:null,branch:null,error:null,lastFetchedAt:null},d=a=>a?a.staged+a.modified+a.untracked:0,e=(0,b.create)((a,b)=>({cwdKey:null,tmuxSession:null,...c,requestSeq:0,resetForTarget:({cwdKey:b,tmuxSession:d})=>{a(a=>a.cwdKey===b?a.tmuxSession===d?a:{tmuxSession:d}:{...c,cwdKey:b,tmuxSession:d,requestSeq:a.requestSeq+1})},fetchForTarget:async({cwdKey:c,tmuxSession:d},e)=>{if(!c||!d)return void b().resetForTarget({cwdKey:null,tmuxSession:null});let f=b(),g=f.cwdKey!==c,h=null!==f.lastFetchedAt&&Date.now()-f.lastFetchedAt<15e3;if(!g&&!e?.force&&h&&"error"!==f.phase){f.tmuxSession!==d&&a({tmuxSession:d});return}let i=f.requestSeq+1;a({cwdKey:c,tmuxSession:d,phase:"loading",status:g?null:f.status,branch:g?null:f.branch,error:null,lastFetchedAt:null,requestSeq:i});try{let c=new URLSearchParams({tmuxSession:d});e?.force&&c.set("force","true");let f=await fetch(`/api/git/status?${c.toString()}`,{cache:"no-store"});if(!f.ok)throw Error(`status-${f.status}`);let g=await f.json();if(b().requestSeq!==i)return;if(!g.status)return void a({phase:"not-git",status:null,branch:null,error:null,lastFetchedAt:Date.now()});let h=null;try{let a=new URLSearchParams({tmuxSession:d});e?.force&&a.set("force","true");let b=await fetch(`/api/git/branch?${a.toString()}`,{cache:"no-store"});b.ok&&(h=(await b.json()).branch)}catch{h=null}if(b().requestSeq!==i)return;a({phase:"ready",status:g.status,branch:h,error:null,lastFetchedAt:Date.now()})}catch(c){if(b().requestSeq!==i)return;a({phase:"error",status:null,branch:null,error:c instanceof Error?c.message:String(c),lastFetchedAt:Date.now()})}}}));a.s(["default",0,e,"formatGitStatusSummary",0,(a,b,c,e)=>{if("idle"===a)return e;if("loading"===a)return"Checking Git status...";if("not-git"===a)return"Not a Git repository";if("error"===a)return"Git status unavailable";if(!c)return e;let f=d(c),g=[b??"Git",f>0?`${f} changed`:"clean"];return(c.insertions>0||c.deletions>0)&&g.push(`+${c.insertions} -${c.deletions}`),c.ahead>0&&g.push(`ahead ${c.ahead}`),c.behind>0&&g.push(`behind ${c.behind}`),c.stash>0&&g.push(`${c.stash} stash`),g.join(" · ")},"getGitStatusIndicators",0,a=>{if(!a)return[];let b=d(a),c=[];return b>0&&c.push({key:"changed",label:b>99?"99+":String(b),tone:"dirty"}),a.ahead>0&&c.push({key:"ahead",label:`↑${a.ahead}`,tone:"sync"}),a.behind>0&&c.push({key:"behind",label:`↓${a.behind}`,tone:"sync"}),a.stash>0&&c.push({key:"stash",label:`S${a.stash}`,tone:"stash"}),c}])},552591,a=>{"use strict";var b=a.i(127669),c=a.i(760644),d=a.i(199462),e=a.i(168711),f=a.i(175679),g=a.i(357785),h=a.i(626605),i=a.i(206456),j=a.i(144784);let k=null;a.s(["ackNotificationInput",0,(a,b)=>{k?.readyState===WebSocket.OPEN&&k.send(JSON.stringify({type:"status:ack-notification",tabId:a,seq:b}))},"default",0,()=>{let a=(0,b.useRef)(0),l=(0,b.useRef)(null),m=(0,b.useRef)(!0);(0,b.useEffect)(()=>{m.current=!0;let b=()=>{if(!m.current)return;let n="https:"===location.protocol?"wss:":"ws:",o=new WebSocket(`${n}//${location.host}/api/status`);k=o,o.onopen=()=>{m.current&&(a.current=0,c.default.getState().setStatusWsConnected(!0))},o.onmessage=a=>{if(m.current)try{let b=JSON.parse(a.data);switch(b.type){case"status:sync":for(let[a,e]of(c.default.getState().syncAllFromServer(b.tabs),Object.entries(b.tabs)))"agent-sessions"!==e.panelType&&e.paneTitle&&!d.default.getState().metadata[a]?.title&&d.default.getState().setTitle(a,(0,i.formatTabTitle)(e.paneTitle,e.panelType));break;case"status:update":c.default.getState().updateFromServer(b.tabId,{cliState:b.cliState,workspaceId:b.workspaceId,tabName:b.tabName,panelType:b.panelType,terminalStatus:b.terminalStatus,listeningPorts:b.listeningPorts,currentProcess:b.currentProcess,agentProviderId:b.agentProviderId,agentSessionId:b.agentSessionId,agentSummary:b.agentSummary,lastUserMessage:b.lastUserMessage,lastAssistantMessage:b.lastAssistantMessage,currentAction:b.currentAction,readyForReviewAt:b.readyForReviewAt,busySince:b.busySince,dismissedAt:b.dismissedAt,compactingSince:b.compactingSince,permissionRequest:b.permissionRequest,lastEvent:b.lastEvent,eventSeq:b.eventSeq}),b.paneTitle&&"agent-sessions"!==b.panelType&&d.default.getState().setTitle(b.tabId,(0,i.formatTabTitle)(b.paneTitle,b.panelType));break;case"status:hook-event":c.default.getState().applyHookEvent(b.tabId,b.event),((a,b)=>{if("stop"!==b.name)return;let c=g.default.getState();if(!c.cwdKey||!c.tmuxSession)return;let d=h.useLayoutStore.getState().layout;if(!d)return;let e=(0,j.collectAllTabs)(d.root).find(b=>b.id===a);e&&e.sessionName===c.tmuxSession&&c.fetchForTarget({cwdKey:c.cwdKey,tmuxSession:c.tmuxSession},{force:!0})})(b.tabId,b.event);break;case"rate-limits:update":e.default.getState().setData(b.data);break;case"session-history:sync":f.default.getState().syncFromServer(b.entries);break;case"session-history:update":f.default.getState().upsertEntry(b.entry)}}catch{}},o.onclose=()=>{if(!m.current)return;c.default.getState().setStatusWsConnected(!1),k=null;let d=Math.min(1e3*Math.pow(2,a.current),3e4);a.current++,l.current=setTimeout(b,d)},o.onerror=()=>{}};b();let n=()=>{if("visible"!==document.visibilityState)return;let c=k?.readyState;c!==WebSocket.OPEN&&c!==WebSocket.CONNECTING&&(l.current&&(clearTimeout(l.current),l.current=null),a.current=0,b())};return document.addEventListener("visibilitychange",n),()=>{m.current=!1,l.current&&(clearTimeout(l.current),l.current=null),k&&(k.close(),k=null),document.removeEventListener("visibilitychange",n)}},[])},"dismissTab",0,a=>{c.default.getState().dismissTab(a),k?.readyState===WebSocket.OPEN&&k.send(JSON.stringify({type:"status:tab-dismissed",tabId:a}))},"requestSync",0,()=>{k?.readyState===WebSocket.OPEN&&k.send(JSON.stringify({type:"status:request-sync"}))}])},409679,a=>{"use strict";var b=a.i(127669);a.i(986013),a.i(678240),a.i(626605);var c=a.i(721043);let d=async()=>{try{let a=await navigator.serviceWorker.ready,b=await a.pushManager.getSubscription();return b?.endpoint??null}catch{return null}},e=async a=>{fetch("/api/push/register-session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:await d(),sessionId:a}),keepalive:!0}).catch(()=>{})};a.s(["default",0,()=>{(0,b.useRef)(!1),(0,b.useEffect)(()=>{c.default},[]),(0,b.useEffect)(()=>{},[])},"registerPushTarget",0,e])},96968,a=>{"use strict";var b=a.i(127669);let c=768;a.s(["default",0,(a=c)=>{let d=`(max-width: ${a-1}px)`,e=(0,b.useCallback)(a=>{let b=window.matchMedia(d);return b.addEventListener("change",a),()=>b.removeEventListener("change",a)},[d]),f=(0,b.useCallback)(()=>window.matchMedia(d).matches,[d]),g=(0,b.useCallback)(()=>!1,[]);return(0,b.useSyncExternalStore)(e,f,g)}])}];
2
2
 
3
3
  //# sourceMappingURL=_02rms4q._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[811705,396552,a=>{"use strict";var b=a.i(508171),c=a.i(799856);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-4 group-data-[size=sm]/card:px-3",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}],811705);var d=a.i(398544);let e=a=>a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}K`:a.toLocaleString();a.s(["WEEKDAY_LABELS",0,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"formatAxisTick",0,a=>e(a),"formatCostWithComma",0,a=>{if(a<1)return`$${a.toFixed(2)}`;let[b,c]=a.toFixed(1).split(".");return`$${Number(b).toLocaleString()}.${c}`},"formatDate",0,a=>(0,d.default)(a).format("MM/DD"),"formatDuration",0,a=>{let b=Math.floor(a/6e4);if(b<60)return`${b}m`;let c=Math.floor(b/60);if(c<24)return`${c}h ${b%60}m`;let d=Math.floor(c/24);return`${d}d ${c%24}h`},"formatNumber",0,e,"formatNumberWithComma",0,a=>a.toLocaleString(),"getChangeRate",0,(a,b)=>{if(0===b)return null;let c=(a-b)/b*100;return`${c>=0?"+":""}${Math.round(c).toLocaleString()}%`}],396552)},436028,a=>{"use strict";let b=(0,a.i(564375).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",0,b],436028)},776979,a=>{"use strict";var b=a.i(508171),c=a.i(127669),d=a.i(113952),e=a.i(436028),f=a.i(506766),g=a.i(396465);let h=({onRetry:a})=>{let c=(0,d.useTranslations)("stats"),h=(0,d.useTranslations)("common");return(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center gap-3 rounded-xl bg-card py-12 ring-1 ring-foreground/10",children:[(0,b.jsx)(e.AlertCircle,{className:"h-5 w-5 text-muted-foreground"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:c("errorLoadFailed")}),(0,b.jsxs)(g.Button,{variant:"outline",size:"sm",onClick:a,children:[(0,b.jsx)(f.RefreshCw,{className:"mr-1.5 h-3 w-3"}),h("retry")]})]})};class i extends c.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(a,b){console.error(`[${this.props.sectionName}] Error:`,a,b)}handleRetry=()=>{this.setState({hasError:!1})};render(){return this.state.hasError?(0,b.jsx)(h,{onRetry:this.handleRetry}):this.props.children}}a.s(["default",0,i])},321327,a=>{"use strict";var b=a.i(579168),c=a.i(627068),d=a.i(332759),e=a.i(817359),f=a.i(468695),g=a.i(508171),h=a.i(127669),i=a.i(119059),j=a.i(113952),k=a.i(199987),l=a.i(125487),m=a.i(274399),n=a.i(396465),o=a.i(356233),p=a.i(266929),q=a.i(776979),r=a.i(398544),s=a.i(92654),t=a.i(93538),u=a.i(643228),v=a.i(506766),w=a.i(581228),x=a.i(510414),y=a.i(811705),z=a.i(678240),A=a.i(396552);let B="prose prose-sm prose-invert max-w-none text-foreground/80 [&_h2]:mt-4 [&_h2]:mb-1 [&_h2]:text-base [&_h2]:font-semibold [&_h2]:text-foreground [&_h3]:mt-2 [&_h3]:mb-0.5 [&_h3]:text-sm [&_h3]:font-medium [&_h3]:text-foreground/80 [&_ul]:my-0.5 [&_ul]:pl-4 [&_li]:my-0 [&_li]:text-sm [&_p]:text-sm [&_p]:my-1 [&_p]:leading-relaxed",C=(0,h.memo)(({days:a,cache:b,onCacheUpdate:c,batchActions:d,onBatchRunningChange:e})=>{let f=(0,j.useTranslations)("stats"),i=(0,z.default)(a=>a.locale),k=(0,z.default)(a=>a.noteSummaryProvider),[m,o]=(0,h.useState)(null),[p,q]=(0,h.useState)(new Set),[C,D]=(0,h.useState)(!1),E=(0,h.useRef)(!1),F=(0,h.useCallback)(async(a,b=!1)=>{let c=await fetch("/api/stats/daily-report/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({date:a,force:b,locale:i,provider:k})});if(!c.ok)throw Error((await c.json().catch(()=>({message:"unknown error"}))).message??`HTTP ${c.status}`);return await c.json()},[i,k]),G=(0,h.useCallback)(async(a,b=!1)=>{o(a);try{let d=await F(a,b);c(a,d),x.toast.success(f("summaryGenerated"))}catch(a){x.toast.error(a instanceof Error?a.message:f("summaryFailed"))}finally{o(null)}},[F,c,f]),H=(0,h.useCallback)(async()=>{E.current=!1,D(!0);let d=0;try{for(let e of a){if(E.current)break;let a=b?.days[e.date];if(!a||a.locale!==i||(a.provider??"claude")!==k){o(e.date);try{let a=await F(e.date);c(e.date,a),d++}catch{x.toast.error(f("summaryDateFailed",{date:e.date}));break}}}}finally{o(null),D(!1),d>0&&x.toast.success(f("summaryBatchComplete",{count:d}))}},[a,b,F,c,f,i,k]),I=(0,h.useCallback)(()=>{E.current=!0},[]),J=(0,h.useCallback)(a=>{q(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]),K=(0,r.default)().format("YYYY-MM-DD");return(0,h.useEffect)(()=>{d&&(d.start=H,d.stop=I)},[d,H,I]),(0,h.useEffect)(()=>{e?.(C)},[C,e]),(0,g.jsxs)("div",{className:"space-y-4",children:[a.map(a=>{let c=(0,r.default)(a.date),d=A.WEEKDAY_LABELS[c.day()],e=a.date===K,h=b?.days[a.date]??null,i=m===a.date,j=p.has(a.date);return(0,g.jsxs)("div",{className:"space-y-2",children:[(0,g.jsxs)("div",{className:"flex items-center justify-between px-1",children:[(0,g.jsxs)("div",{className:"flex items-center gap-2",children:[(0,g.jsxs)("span",{className:"text-base font-medium text-muted-foreground",children:[a.date," (",d,")"]}),e&&(0,g.jsx)("span",{className:"rounded bg-ui-teal/15 px-1.5 py-0.5 text-[10px] font-medium text-ui-teal",children:f("today")})]}),(0,g.jsxs)("div",{className:"flex items-center gap-1.5",children:[h&&(0,g.jsxs)(g.Fragment,{children:[i&&(0,g.jsx)("span",{className:"text-xs text-muted-foreground",children:f("generating")}),(0,g.jsx)(n.Button,{variant:"ghost",size:"icon-xs",onClick:()=>G(a.date,!0),disabled:null!==m,className:"text-muted-foreground",children:(0,g.jsx)(v.RefreshCw,{className:`h-3 w-3${i?" animate-spin":""}`})})]}),(0,g.jsxs)("span",{className:"text-xs tabular-nums text-muted-foreground",children:[f("sessionCount",{count:a.sessionCount})," · ",(0,A.formatCostWithComma)(a.cost)]})]})]}),(0,g.jsx)(y.Card,{size:"sm",children:(0,g.jsxs)(y.CardContent,{className:"space-y-2",children:[!h&&!i&&(0,g.jsxs)(n.Button,{variant:"outline",size:"xs",onClick:()=>G(a.date),disabled:null!==m,children:[(0,g.jsx)(l.Sparkles,{className:"h-3 w-3"}),f("summarize")]}),!h&&i&&(0,g.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,g.jsx)(w.default,{className:"h-2.5 w-2.5"}),(0,g.jsx)("span",{children:f("generatingSummary")})]}),h&&(0,g.jsx)(g.Fragment,{children:(0,g.jsxs)("div",{className:i?"opacity-40":void 0,children:[(0,g.jsx)("div",{className:B,children:(0,g.jsx)(s.default,{children:h.brief})}),h.detail&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(n.Button,{variant:"ghost",size:"xs",onClick:()=>J(a.date),className:"text-muted-foreground",disabled:i,children:j?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(t.ChevronDown,{className:"h-3 w-3"}),f("collapse")]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(u.ChevronRight,{className:"h-3 w-3"}),f("showMore")]})}),j&&(0,g.jsx)("div",{className:"border-t pt-2",children:(0,g.jsx)("div",{className:B,children:(0,g.jsx)(s.default,{children:h.detail})})})]})]})})]})})]},a.date)}),0===a.length&&(0,g.jsx)("p",{className:"py-4 text-center text-xs text-muted-foreground",children:f("noActivity")})]})}),D=()=>{let a=(0,j.useTranslations)("reports");(0,o.default)(a("title"));let[b,c]=(0,h.useState)([]),[d,e]=(0,h.useState)(0),[f,p]=(0,h.useState)(!0),[r,s]=(0,h.useState)(!1),t=(0,h.useCallback)(async(a,b)=>(await fetch(`/api/stats/daily-report/list?offset=${a}&limit=10`,{signal:b})).json(),[]);(0,h.useEffect)(()=>{let a=new AbortController;return t(0,a.signal).then(a=>{c(a.days),e(a.total)}).catch(()=>{}).finally(()=>p(!1)),()=>a.abort()},[t]);let u=(0,h.useCallback)(async()=>{s(!0);try{let a=await t(b.length);c(b=>[...b,...a.days]),e(a.total)}catch{}finally{s(!1)}},[b.length,t]),v=(0,h.useCallback)((a,b)=>{c(c=>c.map(c=>c.date===a?{...c,report:b}:c))},[]),w=b.map(a=>({date:a.date,sessionCount:a.sessionCount,cost:a.cost})),x={days:Object.fromEntries(b.filter(a=>a.report).map(a=>[a.date,a.report]))},y=b.length<d,z=b.filter(a=>!a.report).length,A=(0,h.useRef)({start:()=>{},stop:()=>{}}),[B,D]=(0,h.useState)(!1),E=(0,g.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,g.jsxs)("div",{className:"mx-auto max-w-content px-4 py-6",children:[(0,g.jsxs)("div",{className:"mb-6 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,g.jsxs)("div",{className:"flex items-center gap-2",children:[(0,g.jsx)(k.FileText,{className:"h-5 w-5 text-claude-active"}),(0,g.jsx)("h1",{className:"text-base font-semibold",children:a("title")})]}),(0,g.jsx)("div",{className:"flex items-center gap-2",children:!f&&z>0&&(B?(0,g.jsxs)(n.Button,{variant:"outline",size:"xs",onClick:()=>A.current.stop(),children:[(0,g.jsx)(m.Square,{className:"h-3 w-3"}),a("stop")]}):(0,g.jsxs)(n.Button,{variant:"outline",size:"xs",onClick:()=>A.current.start(),children:[(0,g.jsx)(l.Sparkles,{className:"h-3 w-3"}),a("summarize",{count:z})]}))})]}),(0,g.jsx)(q.default,{sectionName:a("title"),children:f?(0,g.jsx)("div",{className:"space-y-2",children:Array.from({length:5}).map((a,b)=>(0,g.jsxs)("div",{className:"flex items-center gap-3 rounded-xl bg-card px-4 py-4 ring-1 ring-foreground/10",children:[(0,g.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,g.jsx)("div",{className:"h-3.5 w-32 animate-pulse rounded bg-muted"}),(0,g.jsx)("div",{className:"h-3 w-20 animate-pulse rounded bg-muted"})]}),(0,g.jsx)("div",{className:"h-3 w-24 animate-pulse rounded bg-muted"})]},b))}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(C,{days:w,cache:x,onCacheUpdate:v,batchActions:A.current,onBatchRunningChange:D}),y&&(0,g.jsx)("div",{className:"mt-3 flex justify-center",children:(0,g.jsx)(n.Button,{variant:"outline",size:"sm",onClick:u,disabled:r,children:r?a("loadingMore"):a("loadMore",{count:d-b.length})})})]})})]})});return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(i.default,{children:(0,g.jsx)("title",{children:a("pageTitle")})}),E]})};D.getLayout=p.getPageShellWithTitlebarLayout;let E=async b=>{let{requireAuth:c}=await a.A(120441),{loadMessagesServer:d}=await a.A(168414);return c(b,async()=>({props:{messages:await d()}}))};a.s(["default",0,D,"getServerSideProps",0,E],254728);var F=a.i(254728),G=a.i(509193);let H=(0,d.hoist)(F,"default"),I=(0,d.hoist)(F,"getStaticProps"),J=(0,d.hoist)(F,"getStaticPaths"),K=(0,d.hoist)(F,"getServerSideProps"),L=(0,d.hoist)(F,"config"),M=(0,d.hoist)(F,"reportWebVitals"),N=(0,d.hoist)(F,"unstable_getStaticProps"),O=(0,d.hoist)(F,"unstable_getStaticPaths"),P=(0,d.hoist)(F,"unstable_getStaticParams"),Q=(0,d.hoist)(F,"unstable_getServerProps"),R=(0,d.hoist)(F,"unstable_getServerSideProps"),S=new b.PagesRouteModule({definition:{kind:c.RouteKind.PAGES,page:"/reports",pathname:"/reports",bundlePath:"",filename:""},distDir:".next",relativeProjectDir:"",components:{App:f.default,Document:e.default},userland:F}),T=(0,G.getHandler)({srcPage:"/reports",config:L,userland:F,routeModule:S,getStaticPaths:J,getStaticProps:I,getServerSideProps:K});a.s(["config",0,L,"default",0,H,"getServerSideProps",0,K,"getStaticPaths",0,J,"getStaticProps",0,I,"handler",0,T,"reportWebVitals",0,M,"routeModule",0,S,"unstable_getServerProps",0,Q,"unstable_getServerSideProps",0,R,"unstable_getStaticParams",0,P,"unstable_getStaticPaths",0,O,"unstable_getStaticProps",0,N],321327)},876457,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_features_workspace_settings-dialog_tsx_05v~y7d._.js"].map(b=>a.l(b))).then(()=>b(563410)))},200022,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_features_shortcuts_cheat-sheet-dialog_tsx_0i2pbva._.js"].map(b=>a.l(b))).then(()=>b(469403)))},419326,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_0~e6p9k._.js"].map(b=>a.l(b))).then(()=>b(9252)))},120441,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_require-auth_ts_0lybmh2._.js"].map(b=>a.l(b))).then(()=>b(56975)))},168414,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_load-messages_ts_11e7h4~._.js"].map(b=>a.l(b))).then(()=>b(387607)))}];
1
+ module.exports=[811705,396552,a=>{"use strict";var b=a.i(508171),c=a.i(799856);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-4 group-data-[size=sm]/card:px-3",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}],811705);var d=a.i(398544);let e=a=>a>=1e6?`${(a/1e6).toFixed(1)}M`:a>=1e3?`${(a/1e3).toFixed(1)}K`:a.toLocaleString();a.s(["WEEKDAY_LABELS",0,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"formatAxisTick",0,a=>e(a),"formatCostWithComma",0,a=>{if(a<1)return`$${a.toFixed(2)}`;let[b,c]=a.toFixed(1).split(".");return`$${Number(b).toLocaleString()}.${c}`},"formatDate",0,a=>(0,d.default)(a).format("MM/DD"),"formatDuration",0,a=>{let b=Math.floor(a/6e4);if(b<60)return`${b}m`;let c=Math.floor(b/60);if(c<24)return`${c}h ${b%60}m`;let d=Math.floor(c/24);return`${d}d ${c%24}h`},"formatNumber",0,e,"formatNumberWithComma",0,a=>a.toLocaleString(),"getChangeRate",0,(a,b)=>{if(0===b)return null;let c=(a-b)/b*100;return`${c>=0?"+":""}${Math.round(c).toLocaleString()}%`}],396552)},436028,a=>{"use strict";let b=(0,a.i(564375).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);a.s(["AlertCircle",0,b],436028)},776979,a=>{"use strict";var b=a.i(508171),c=a.i(127669),d=a.i(113952),e=a.i(436028),f=a.i(506766),g=a.i(396465);let h=({onRetry:a})=>{let c=(0,d.useTranslations)("stats"),h=(0,d.useTranslations)("common");return(0,b.jsxs)("div",{className:"flex flex-col items-center justify-center gap-3 rounded-xl bg-card py-12 ring-1 ring-foreground/10",children:[(0,b.jsx)(e.AlertCircle,{className:"h-5 w-5 text-muted-foreground"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:c("errorLoadFailed")}),(0,b.jsxs)(g.Button,{variant:"outline",size:"sm",onClick:a,children:[(0,b.jsx)(f.RefreshCw,{className:"mr-1.5 h-3 w-3"}),h("retry")]})]})};class i extends c.Component{state={hasError:!1};static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(a,b){console.error(`[${this.props.sectionName}] Error:`,a,b)}handleRetry=()=>{this.setState({hasError:!1})};render(){return this.state.hasError?(0,b.jsx)(h,{onRetry:this.handleRetry}):this.props.children}}a.s(["default",0,i])},321327,a=>{"use strict";var b=a.i(579168),c=a.i(627068),d=a.i(332759),e=a.i(817359),f=a.i(468695),g=a.i(508171),h=a.i(127669),i=a.i(119059),j=a.i(113952),k=a.i(199987),l=a.i(125487),m=a.i(274399),n=a.i(396465),o=a.i(356233),p=a.i(266929),q=a.i(776979),r=a.i(398544),s=a.i(92654),t=a.i(93538),u=a.i(643228),v=a.i(506766),w=a.i(581228),x=a.i(510414),y=a.i(811705),z=a.i(678240),A=a.i(396552);let B="prose prose-sm prose-invert max-w-none text-foreground/80 [&_h2]:mt-4 [&_h2]:mb-1 [&_h2]:text-base [&_h2]:font-semibold [&_h2]:text-foreground [&_h3]:mt-2 [&_h3]:mb-0.5 [&_h3]:text-sm [&_h3]:font-medium [&_h3]:text-foreground/80 [&_ul]:my-0.5 [&_ul]:pl-4 [&_li]:my-0 [&_li]:text-sm [&_p]:text-sm [&_p]:my-1 [&_p]:leading-relaxed",C=(0,h.memo)(({days:a,cache:b,onCacheUpdate:c,batchActions:d,onBatchRunningChange:e})=>{let f=(0,j.useTranslations)("stats"),i=(0,z.default)(a=>a.locale),k=(0,z.default)(a=>a.noteSummaryProvider),[m,o]=(0,h.useState)(null),[p,q]=(0,h.useState)(new Set),[C,D]=(0,h.useState)(!1),E=(0,h.useRef)(!1),F=(0,h.useCallback)(async(a,b=!1)=>{let c=await fetch("/api/stats/daily-report/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({date:a,force:b,locale:i,provider:k})});if(!c.ok)throw Error((await c.json().catch(()=>({message:"unknown error"}))).message??`HTTP ${c.status}`);return await c.json()},[i,k]),G=(0,h.useCallback)(async(a,b=!1)=>{o(a);try{let d=await F(a,b);c(a,d),x.toast.success(f("summaryGenerated"))}catch(a){x.toast.error(a instanceof Error?a.message:f("summaryFailed"))}finally{o(null)}},[F,c,f]),H=(0,h.useCallback)(async()=>{E.current=!1,D(!0);let d=0;try{for(let e of a){if(E.current)break;let a=b?.days[e.date];if(!a||a.locale!==i||(a.provider??"claude")!==k){o(e.date);try{let a=await F(e.date);c(e.date,a),d++}catch{x.toast.error(f("summaryDateFailed",{date:e.date}));break}}}}finally{o(null),D(!1),d>0&&x.toast.success(f("summaryBatchComplete",{count:d}))}},[a,b,F,c,f,i,k]),I=(0,h.useCallback)(()=>{E.current=!0},[]),J=(0,h.useCallback)(a=>{q(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},[]),K=(0,r.default)().format("YYYY-MM-DD");return(0,h.useEffect)(()=>{d&&(d.start=H,d.stop=I)},[d,H,I]),(0,h.useEffect)(()=>{e?.(C)},[C,e]),(0,g.jsxs)("div",{className:"space-y-4",children:[a.map(a=>{let c=(0,r.default)(a.date),d=A.WEEKDAY_LABELS[c.day()],e=a.date===K,h=b?.days[a.date]??null,i=m===a.date,j=p.has(a.date);return(0,g.jsxs)("div",{className:"space-y-2",children:[(0,g.jsxs)("div",{className:"flex items-center justify-between px-1",children:[(0,g.jsxs)("div",{className:"flex items-center gap-2",children:[(0,g.jsxs)("span",{className:"text-base font-medium text-muted-foreground",children:[a.date," (",d,")"]}),e&&(0,g.jsx)("span",{className:"rounded bg-ui-teal/15 px-1.5 py-0.5 text-[10px] font-medium text-ui-teal",children:f("today")})]}),(0,g.jsxs)("div",{className:"flex items-center gap-1.5",children:[h&&(0,g.jsxs)(g.Fragment,{children:[i&&(0,g.jsx)("span",{className:"text-xs text-muted-foreground",children:f("generating")}),(0,g.jsx)(n.Button,{variant:"ghost",size:"icon-xs",onClick:()=>G(a.date,!0),disabled:null!==m,className:"text-muted-foreground",children:(0,g.jsx)(v.RefreshCw,{className:`h-3 w-3${i?" animate-spin":""}`})})]}),(0,g.jsxs)("span",{className:"text-xs tabular-nums text-muted-foreground",children:[f("sessionCount",{count:a.sessionCount})," · ",(0,A.formatCostWithComma)(a.cost)]})]})]}),(0,g.jsx)(y.Card,{size:"sm",children:(0,g.jsxs)(y.CardContent,{className:"space-y-2",children:[!h&&!i&&(0,g.jsxs)(n.Button,{variant:"outline",size:"xs",onClick:()=>G(a.date),disabled:null!==m,children:[(0,g.jsx)(l.Sparkles,{className:"h-3 w-3"}),f("summarize")]}),!h&&i&&(0,g.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,g.jsx)(w.default,{className:"h-2.5 w-2.5"}),(0,g.jsx)("span",{children:f("generatingSummary")})]}),h&&(0,g.jsx)(g.Fragment,{children:(0,g.jsxs)("div",{className:i?"opacity-40":void 0,children:[(0,g.jsx)("div",{className:B,children:(0,g.jsx)(s.default,{children:h.brief})}),h.detail&&(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(n.Button,{variant:"ghost",size:"xs",onClick:()=>J(a.date),className:"text-muted-foreground",disabled:i,children:j?(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(t.ChevronDown,{className:"h-3 w-3"}),f("collapse")]}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(u.ChevronRight,{className:"h-3 w-3"}),f("showMore")]})}),j&&(0,g.jsx)("div",{className:"border-t pt-2",children:(0,g.jsx)("div",{className:B,children:(0,g.jsx)(s.default,{children:h.detail})})})]})]})})]})})]},a.date)}),0===a.length&&(0,g.jsx)("p",{className:"py-4 text-center text-xs text-muted-foreground",children:f("noActivity")})]})}),D=()=>{let a=(0,j.useTranslations)("reports");(0,o.default)(a("title"));let[b,c]=(0,h.useState)([]),[d,e]=(0,h.useState)(0),[f,p]=(0,h.useState)(!0),[r,s]=(0,h.useState)(!1),t=(0,h.useCallback)(async(a,b)=>(await fetch(`/api/stats/daily-report/list?offset=${a}&limit=10`,{signal:b})).json(),[]);(0,h.useEffect)(()=>{let a=new AbortController;return t(0,a.signal).then(a=>{c(a.days),e(a.total)}).catch(()=>{}).finally(()=>p(!1)),()=>a.abort()},[t]);let u=(0,h.useCallback)(async()=>{s(!0);try{let a=await t(b.length);c(b=>[...b,...a.days]),e(a.total)}catch{}finally{s(!1)}},[b.length,t]),v=(0,h.useCallback)((a,b)=>{c(c=>c.map(c=>c.date===a?{...c,report:b}:c))},[]),w=b.map(a=>({date:a.date,sessionCount:a.sessionCount,cost:a.cost})),x={days:Object.fromEntries(b.filter(a=>a.report).map(a=>[a.date,a.report]))},y=b.length<d,z=b.filter(a=>!a.report).length,A=(0,h.useRef)({start:()=>{},stop:()=>{}}),[B,D]=(0,h.useState)(!1),E=(0,g.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:(0,g.jsxs)("div",{className:"mx-auto max-w-content px-4 py-6",children:[(0,g.jsxs)("div",{className:"mb-6 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,g.jsxs)("div",{className:"flex items-center gap-2",children:[(0,g.jsx)(k.FileText,{className:"h-5 w-5 text-claude-active"}),(0,g.jsx)("h1",{className:"text-base font-semibold",children:a("title")})]}),(0,g.jsx)("div",{className:"flex items-center gap-2",children:!f&&z>0&&(B?(0,g.jsxs)(n.Button,{variant:"outline",size:"xs",onClick:()=>A.current.stop(),children:[(0,g.jsx)(m.Square,{className:"h-3 w-3"}),a("stop")]}):(0,g.jsxs)(n.Button,{variant:"outline",size:"xs",onClick:()=>A.current.start(),children:[(0,g.jsx)(l.Sparkles,{className:"h-3 w-3"}),a("summarize",{count:z})]}))})]}),(0,g.jsx)(q.default,{sectionName:a("title"),children:f?(0,g.jsx)("div",{className:"space-y-2",children:Array.from({length:5}).map((a,b)=>(0,g.jsxs)("div",{className:"flex items-center gap-3 rounded-xl bg-card px-4 py-4 ring-1 ring-foreground/10",children:[(0,g.jsxs)("div",{className:"flex-1 space-y-2",children:[(0,g.jsx)("div",{className:"h-3.5 w-32 animate-pulse rounded bg-muted"}),(0,g.jsx)("div",{className:"h-3 w-20 animate-pulse rounded bg-muted"})]}),(0,g.jsx)("div",{className:"h-3 w-24 animate-pulse rounded bg-muted"})]},b))}):(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(C,{days:w,cache:x,onCacheUpdate:v,batchActions:A.current,onBatchRunningChange:D}),y&&(0,g.jsx)("div",{className:"mt-3 flex justify-center",children:(0,g.jsx)(n.Button,{variant:"outline",size:"sm",onClick:u,disabled:r,children:r?a("loadingMore"):a("loadMore",{count:d-b.length})})})]})})]})});return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(i.default,{children:(0,g.jsx)("title",{children:a("pageTitle")})}),E]})};D.getLayout=p.getPageShellWithTitlebarLayout;let E=async b=>{let{requireAuth:c}=await a.A(120441),{loadMessagesServer:d}=await a.A(168414);return c(b,async()=>({props:{messages:await d()}}))};a.s(["default",0,D,"getServerSideProps",0,E],254728);var F=a.i(254728),G=a.i(509193);let H=(0,d.hoist)(F,"default"),I=(0,d.hoist)(F,"getStaticProps"),J=(0,d.hoist)(F,"getStaticPaths"),K=(0,d.hoist)(F,"getServerSideProps"),L=(0,d.hoist)(F,"config"),M=(0,d.hoist)(F,"reportWebVitals"),N=(0,d.hoist)(F,"unstable_getStaticProps"),O=(0,d.hoist)(F,"unstable_getStaticPaths"),P=(0,d.hoist)(F,"unstable_getStaticParams"),Q=(0,d.hoist)(F,"unstable_getServerProps"),R=(0,d.hoist)(F,"unstable_getServerSideProps"),S=new b.PagesRouteModule({definition:{kind:c.RouteKind.PAGES,page:"/reports",pathname:"/reports",bundlePath:"",filename:""},distDir:".next",relativeProjectDir:"",components:{App:f.default,Document:e.default},userland:F}),T=(0,G.getHandler)({srcPage:"/reports",config:L,userland:F,routeModule:S,getStaticPaths:J,getStaticProps:I,getServerSideProps:K});a.s(["config",0,L,"default",0,H,"getServerSideProps",0,K,"getStaticPaths",0,J,"getStaticProps",0,I,"handler",0,T,"reportWebVitals",0,M,"routeModule",0,S,"unstable_getServerProps",0,Q,"unstable_getServerSideProps",0,R,"unstable_getStaticParams",0,P,"unstable_getStaticPaths",0,O,"unstable_getStaticProps",0,N],321327)},876457,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_features_workspace_settings-dialog_tsx_05v~y7d._.js"].map(b=>a.l(b))).then(()=>b(563410)))},200022,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_features_shortcuts_cheat-sheet-dialog_tsx_0i2pbva._.js"].map(b=>a.l(b))).then(()=>b(469403)))},419326,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_05-kki3._.js"].map(b=>a.l(b))).then(()=>b(9252)))},120441,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_require-auth_ts_0lybmh2._.js"].map(b=>a.l(b))).then(()=>b(56975)))},168414,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_load-messages_ts_11e7h4~._.js"].map(b=>a.l(b))).then(()=>b(387607)))}];
2
2
 
3
- //# sourceMappingURL=_0uwytsj._.js.map
3
+ //# sourceMappingURL=_078y4dk._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[354224,a=>{"use strict";var b=a.i(579168),c=a.i(627068),d=a.i(332759),e=a.i(817359),f=a.i(468695),g=a.i(508171),h=a.i(127669),i=a.i(119059),j=a.i(41910),k=a.i(356233),l=a.i(266929),m=a.i(604076);let n=()=>{let a=(0,j.useRouter)(),b="string"==typeof a.query.url?a.query.url:"",c=(0,h.useMemo)(()=>{if(!b)return"Webview";try{return new URL(b).hostname}catch{return"Webview"}},[b]);return(0,k.default)(c),(0,h.useEffect)(()=>{b&&m.default.getState().open(`deeplink:${b}`,b,c)},[b,c]),(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(i.default,{children:(0,g.jsxs)("title",{children:[c," - purplemux"]})}),(0,g.jsx)("div",{className:"flex min-h-0 flex-1"})]})};n.getLayout=l.getPageShellWithTitlebarLayout;let o=async b=>{let{requireAuth:c}=await a.A(120441),{loadMessagesServer:d}=await a.A(168414);return c(b,async()=>({props:{messages:await d()}}))};a.s(["default",0,n,"getServerSideProps",0,o],869912);var p=a.i(869912),q=a.i(509193);let r=(0,d.hoist)(p,"default"),s=(0,d.hoist)(p,"getStaticProps"),t=(0,d.hoist)(p,"getStaticPaths"),u=(0,d.hoist)(p,"getServerSideProps"),v=(0,d.hoist)(p,"config"),w=(0,d.hoist)(p,"reportWebVitals"),x=(0,d.hoist)(p,"unstable_getStaticProps"),y=(0,d.hoist)(p,"unstable_getStaticPaths"),z=(0,d.hoist)(p,"unstable_getStaticParams"),A=(0,d.hoist)(p,"unstable_getServerProps"),B=(0,d.hoist)(p,"unstable_getServerSideProps"),C=new b.PagesRouteModule({definition:{kind:c.RouteKind.PAGES,page:"/webview",pathname:"/webview",bundlePath:"",filename:""},distDir:".next",relativeProjectDir:"",components:{App:f.default,Document:e.default},userland:p}),D=(0,q.getHandler)({srcPage:"/webview",config:v,userland:p,routeModule:C,getStaticPaths:t,getStaticProps:s,getServerSideProps:u});a.s(["config",0,v,"default",0,r,"getServerSideProps",0,u,"getStaticPaths",0,t,"getStaticProps",0,s,"handler",0,D,"reportWebVitals",0,w,"routeModule",0,C,"unstable_getServerProps",0,A,"unstable_getServerSideProps",0,B,"unstable_getStaticParams",0,z,"unstable_getStaticPaths",0,y,"unstable_getStaticProps",0,x],354224)},876457,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_features_workspace_settings-dialog_tsx_05v~y7d._.js"].map(b=>a.l(b))).then(()=>b(563410)))},200022,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_features_shortcuts_cheat-sheet-dialog_tsx_0i2pbva._.js"].map(b=>a.l(b))).then(()=>b(469403)))},419326,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_0mhu5-5._.js"].map(b=>a.l(b))).then(()=>b(9252)))},120441,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_require-auth_ts_0lybmh2._.js"].map(b=>a.l(b))).then(()=>b(56975)))},168414,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_load-messages_ts_11e7h4~._.js"].map(b=>a.l(b))).then(()=>b(387607)))}];
1
+ module.exports=[354224,a=>{"use strict";var b=a.i(579168),c=a.i(627068),d=a.i(332759),e=a.i(817359),f=a.i(468695),g=a.i(508171),h=a.i(127669),i=a.i(119059),j=a.i(41910),k=a.i(356233),l=a.i(266929),m=a.i(604076);let n=()=>{let a=(0,j.useRouter)(),b="string"==typeof a.query.url?a.query.url:"",c=(0,h.useMemo)(()=>{if(!b)return"Webview";try{return new URL(b).hostname}catch{return"Webview"}},[b]);return(0,k.default)(c),(0,h.useEffect)(()=>{b&&m.default.getState().open(`deeplink:${b}`,b,c)},[b,c]),(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(i.default,{children:(0,g.jsxs)("title",{children:[c," - purplemux"]})}),(0,g.jsx)("div",{className:"flex min-h-0 flex-1"})]})};n.getLayout=l.getPageShellWithTitlebarLayout;let o=async b=>{let{requireAuth:c}=await a.A(120441),{loadMessagesServer:d}=await a.A(168414);return c(b,async()=>({props:{messages:await d()}}))};a.s(["default",0,n,"getServerSideProps",0,o],869912);var p=a.i(869912),q=a.i(509193);let r=(0,d.hoist)(p,"default"),s=(0,d.hoist)(p,"getStaticProps"),t=(0,d.hoist)(p,"getStaticPaths"),u=(0,d.hoist)(p,"getServerSideProps"),v=(0,d.hoist)(p,"config"),w=(0,d.hoist)(p,"reportWebVitals"),x=(0,d.hoist)(p,"unstable_getStaticProps"),y=(0,d.hoist)(p,"unstable_getStaticPaths"),z=(0,d.hoist)(p,"unstable_getStaticParams"),A=(0,d.hoist)(p,"unstable_getServerProps"),B=(0,d.hoist)(p,"unstable_getServerSideProps"),C=new b.PagesRouteModule({definition:{kind:c.RouteKind.PAGES,page:"/webview",pathname:"/webview",bundlePath:"",filename:""},distDir:".next",relativeProjectDir:"",components:{App:f.default,Document:e.default},userland:p}),D=(0,q.getHandler)({srcPage:"/webview",config:v,userland:p,routeModule:C,getStaticPaths:t,getStaticProps:s,getServerSideProps:u});a.s(["config",0,v,"default",0,r,"getServerSideProps",0,u,"getStaticPaths",0,t,"getStaticProps",0,s,"handler",0,D,"reportWebVitals",0,w,"routeModule",0,C,"unstable_getServerProps",0,A,"unstable_getServerSideProps",0,B,"unstable_getStaticParams",0,z,"unstable_getStaticPaths",0,y,"unstable_getStaticProps",0,x],354224)},876457,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_features_workspace_settings-dialog_tsx_05v~y7d._.js"].map(b=>a.l(b))).then(()=>b(563410)))},200022,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_features_shortcuts_cheat-sheet-dialog_tsx_0i2pbva._.js"].map(b=>a.l(b))).then(()=>b(469403)))},419326,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_components_0gkfyrc._.js"].map(b=>a.l(b))).then(()=>b(9252)))},120441,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_require-auth_ts_0lybmh2._.js"].map(b=>a.l(b))).then(()=>b(56975)))},168414,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_load-messages_ts_11e7h4~._.js"].map(b=>a.l(b))).then(()=>b(387607)))}];
2
2
 
3
- //# sourceMappingURL=_0uph6rf._.js.map
3
+ //# sourceMappingURL=_0kzht5v._.js.map