pisper 0.6.28 → 0.6.29

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 (125) hide show
  1. package/package.json +6 -6
  2. package/web/.vite/manifest.json +654 -641
  3. package/web/assets/{AppDialog-Cjnspn8J.js → AppDialog-CX0n4qav.js} +1 -1
  4. package/web/assets/{AppOverlays-ielr5J2J.js → AppOverlays-J_rOhlw3.js} +1 -1
  5. package/web/assets/{AssetsPage-BC1mYvQw.js → AssetsPage-BuAZJf2M.js} +1 -1
  6. package/web/assets/{BoardPage-BS3oBeRU.js → BoardPage-BT684h8Y.js} +3 -3
  7. package/web/assets/{ChannelsPage-DOysYIcY.js → ChannelsPage-CznKEDyh.js} +1 -1
  8. package/web/assets/{ChatAppearancePage-DqNJD2hC.js → ChatAppearancePage-BrZ30LfD.js} +1 -1
  9. package/web/assets/{ChatHistoryPage-DcTFMdWO.js → ChatHistoryPage-BEJbiMs3.js} +1 -1
  10. package/web/assets/{ChatPage-DaKslieG.js → ChatPage-CCL8A95i.js} +3 -3
  11. package/web/assets/{ConfigPage-Cg93xSDY.js → ConfigPage-_YQZcZlC.js} +2 -2
  12. package/web/assets/{DesktopWindowControls-Zz88RwFF.js → DesktopWindowControls-C-LzcrLu.js} +1 -1
  13. package/web/assets/{FeaturePage-bqByIxYg.js → FeaturePage-C4fMefC-.js} +1 -1
  14. package/web/assets/{FileAttachmentPreview-Dc92kq62.js → FileAttachmentPreview-DCdc0GFC.js} +1 -1
  15. package/web/assets/{FloatingWidgets-CwJuWUMz.js → FloatingWidgets-C5PMwmK1.js} +1 -1
  16. package/web/assets/{FocusRuntimeControls-huHLWDdy.js → FocusRuntimeControls-D6Rj2AHK.js} +1 -1
  17. package/web/assets/{GitDiffViewer-b4QqrnGx.js → GitDiffViewer-D2QUzasQ.js} +1 -1
  18. package/web/assets/{ManageProjectsDialog-DpwUwosB.js → ManageProjectsDialog-CCg0vZ07.js} +1 -1
  19. package/web/assets/{MarkdownMessage-BEmTlPSn.js → MarkdownMessage-DbPFHAG0.js} +1 -1
  20. package/web/assets/{McpPage-COTq4Jjj.js → McpPage-DAg9VlnU.js} +1 -1
  21. package/web/assets/{MemoryEvolution-CNi44VEB.js → MemoryEvolution-CVF6CYuV.js} +1 -1
  22. package/web/assets/{MemoryPage-fUDrPE_v.js → MemoryPage-C4C8Efhi.js} +2 -2
  23. package/web/assets/{MobileNavigation-BvCRGO5c.js → MobileNavigation-EsJOtmUl.js} +1 -1
  24. package/web/assets/{MorePage-BuKQ5rBF.js → MorePage-BslKLMFa.js} +1 -1
  25. package/web/assets/{NewFolderDialog-Btk5x-Ar.js → NewFolderDialog-Bb4T0UPO.js} +1 -1
  26. package/web/assets/{PageHeader-BjhZ50ed.js → PageHeader-DjJ0Ab6e.js} +1 -1
  27. package/web/assets/{PhoneDrawer-Cs-ka4ZZ.js → PhoneDrawer-Cu2FDUc1.js} +1 -1
  28. package/web/assets/{PhoneMenuButton-CTlyYTpl.js → PhoneMenuButton-C8pYulkt.js} +1 -1
  29. package/web/assets/{PhoneTopBar-Cx2DM1ne.js → PhoneTopBar-CvMWkksM.js} +1 -1
  30. package/web/assets/{PluginsPage-B9Xlbo-c.js → PluginsPage-DxjMMa05.js} +1 -1
  31. package/web/assets/{SafeModePrompt-BCrBZdI6.js → SafeModePrompt-DG64bady.js} +1 -1
  32. package/web/assets/{SchedulesPage-Eh7MyRAr.js → SchedulesPage-Bd0sjkiZ.js} +1 -1
  33. package/web/assets/{SessionBrowserPane-Zeec5cZP.js → SessionBrowserPane-CigWhKGU.js} +2 -2
  34. package/web/assets/{SessionContextPanel-CVKmX-do.js → SessionContextPanel-HfjETMcF.js} +2 -2
  35. package/web/assets/{SessionHome-CJR_Ufgl.js → SessionHome-DtzbkF19.js} +1 -1
  36. package/web/assets/{SessionInspector-D5tmy63H.js → SessionInspector-BZyFstFl.js} +1 -1
  37. package/web/assets/{SessionShell-w3sKK33I.js → SessionShell-BCIVsKr9.js} +1 -1
  38. package/web/assets/{SettingsSidebar-CseRAdbZ.js → SettingsSidebar-F20r1qhh.js} +1 -1
  39. package/web/assets/{ShortcutHelpDialog-R4Gx-9DQ.js → ShortcutHelpDialog-BSiv5k3S.js} +1 -1
  40. package/web/assets/{ShortcutKeys-DksC1OkE.js → ShortcutKeys-BWYkyL77.js} +1 -1
  41. package/web/assets/{SidebarUpdateStatus-BCd1eq_6.js → SidebarUpdateStatus-BA3cyY6N.js} +1 -1
  42. package/web/assets/{SkillsPage-Bn2y_EfT.js → SkillsPage-C6cF2A7j.js} +1 -1
  43. package/web/assets/{TaskProcessesPane-FwGhuWob.js → TaskProcessesPane-B6O5Mirv.js} +1 -1
  44. package/web/assets/{TaskTerminalView-Cd4PIsW7.js → TaskTerminalView-IR5bGXk7.js} +1 -1
  45. package/web/assets/{TerminalPanel-48zgvDnP.js → TerminalPanel-BAl1Ytmx.js} +1 -1
  46. package/web/assets/{WebDesktopPet-gSDBRZ3C.js → WebDesktopPet-CLjE98zM.js} +1 -1
  47. package/web/assets/{WorkflowsPage-Cs8PPuKK.js → WorkflowsPage-5kMzkdP5.js} +1 -1
  48. package/web/assets/{WorkspacePicker-93gmdtjf.js → WorkspacePicker-Dy3QRSbL.js} +1 -1
  49. package/web/assets/{api-AeFmYDtL.js → api-BhPOJ07B.js} +1 -1
  50. package/web/assets/app-update-DK-2lnli.js +34 -0
  51. package/web/assets/{approval-confirm-D-cfu-xY.js → approval-confirm-BiKVYJXn.js} +1 -1
  52. package/web/assets/{board-projects-CjfuDvHx.js → board-projects-BmfKMy9W.js} +1 -1
  53. package/web/assets/{bots-store-vErH7x9u.js → bots-store-sXgxSYjm.js} +1 -1
  54. package/web/assets/browser-notifications-CvHO-BlP.js +1 -0
  55. package/web/assets/{chat-api-CSAs7Y6E.js → chat-api-CdqM-TFw.js} +1 -1
  56. package/web/assets/{client-store-B5wZ2IWH.js → client-store-CkmBBzE5.js} +1 -1
  57. package/web/assets/{config-search-eh2zQyZD.js → config-search-DTHZrqfb.js} +1 -1
  58. package/web/assets/{desktop-hosts-BNXtrr7R.js → desktop-hosts-BzI81G6K.js} +1 -1
  59. package/web/assets/{dialog-BDNbY1pW.js → dialog-BVAtioHy.js} +1 -1
  60. package/web/assets/{event-stream-Dh7h5sXJ.js → event-stream-B9eeQcgA.js} +1 -1
  61. package/web/assets/{events-CuVwhRWu.js → events-CcKmvwE6.js} +1 -1
  62. package/web/assets/{focus-session-composer-bits-Dkc0qSzm.js → focus-session-composer-bits-BuYWKdXR.js} +1 -1
  63. package/web/assets/{folder-paths-BKS24lJ6.js → folder-paths-D8nYAh7q.js} +1 -1
  64. package/web/assets/{hosts-B_02vF1S.js → hosts-BRNTbndS.js} +1 -1
  65. package/web/assets/{http-Bp65Kb4t.js → http-CXQuFoDX.js} +1 -1
  66. package/web/assets/{http-response-PZN5QIRk.js → http-response-scdqC11Q.js} +1 -1
  67. package/web/assets/i18n-D5XUOwJ3.js +1 -0
  68. package/web/assets/{index-CiRnxTh1.js → index-at6jiRd2.js} +2 -2
  69. package/web/assets/{machine-messages-Y3INM-Uy.js → machine-messages-BhLpbeyp.js} +1 -1
  70. package/web/assets/{machines-api-08M8wQiu.js → machines-api-c4gyvYeB.js} +1 -1
  71. package/web/assets/{memory-api-DSpQSQ5N.js → memory-api-BZLLcIF1.js} +1 -1
  72. package/web/assets/mount-app-713eDAlJ.js +9 -0
  73. package/web/assets/notification-sound-synth-DIRfyEoK.js +1 -0
  74. package/web/assets/{permission-rules-api-D931wxo9.js → permission-rules-api-BoggV-So.js} +1 -1
  75. package/web/assets/{pick-system-directory-CaiscVfr.js → pick-system-directory-COxOQmRm.js} +1 -1
  76. package/web/assets/{placements-BERPVxJD.js → placements-CWg24KPB.js} +2 -2
  77. package/web/assets/{popover-BKgOyW2Z.js → popover-BKEwGK6p.js} +1 -1
  78. package/web/assets/{public-DrlrVRdl.js → public-CFmAK4C5.js} +1 -1
  79. package/web/assets/{public-D9GopZqN.js → public-Ds92tfxs.js} +2 -2
  80. package/web/assets/{public-CEKKZh7R.js → public-DyoA5qbn.js} +2 -2
  81. package/web/assets/{public-CwI1S0by.js → public-_SuCE3iR.js} +1 -1
  82. package/web/assets/{public-components-BX9oxLC6.js → public-components-CiFLJxlo.js} +1 -1
  83. package/web/assets/public-diff-ByaSqbeU.js +1 -0
  84. package/web/assets/public-events-BZoQRupR.js +1 -0
  85. package/web/assets/{public-flags-DaG3PoAy.js → public-flags-wwqdZl3u.js} +1 -1
  86. package/web/assets/{public-folder-dialog-_QoxpOd4.js → public-folder-dialog-MYvmKYka.js} +1 -1
  87. package/web/assets/{public-greeting-hvhJuZMw.js → public-greeting-DFC9u9sY.js} +1 -1
  88. package/web/assets/{public-session-DUzugr9Y.js → public-session-qSMh175y.js} +1 -1
  89. package/web/assets/{public-sidebar-QGIKY-SE.js → public-sidebar-WFoUZVnB.js} +1 -1
  90. package/web/assets/{runtime-capabilities-store-Bd3gWIM7.js → runtime-capabilities-store-D0EC-a9c.js} +1 -1
  91. package/web/assets/{safe-mode-instance-B7_JMLGQ.js → safe-mode-instance-Ct43-TDv.js} +1 -1
  92. package/web/assets/safe-mode-sentinel-BKPGGJEL.js +1 -0
  93. package/web/assets/{session-change-summary-api-BHpd8dcW.js → session-change-summary-api-CyghX14t.js} +1 -1
  94. package/web/assets/{session-home-BmAnhROp.js → session-home-DY7RkKbH.js} +1 -1
  95. package/web/assets/{session-inspector-store-DHEIlh_X.js → session-inspector-store-BocK0l86.js} +1 -1
  96. package/web/assets/{session-organization-api-D9hTSIh7.js → session-organization-api-CGRK7VMP.js} +1 -1
  97. package/web/assets/{session-scope-yI3Hi_8F.js → session-scope-DDZF_AQ6.js} +1 -1
  98. package/web/assets/{session-tree-actions-BhCOaiTd.js → session-tree-actions-g769G3qz.js} +1 -1
  99. package/web/assets/{session-tree-summary-BLv-bkYC.js → session-tree-summary-CqrRroey.js} +1 -1
  100. package/web/assets/{shortcuts-Dsd4mjfP.js → shortcuts-BsrTXPiU.js} +1 -1
  101. package/web/assets/{side-chat-context-scyCH7W7.js → side-chat-context-DNQ3tThq.js} +4 -4
  102. package/web/assets/{sidebar-BKgF_JcM.js → sidebar-R690QKPw.js} +1 -1
  103. package/web/assets/{sidebar-store-DHwAOBnN.js → sidebar-store-QvX0w7hQ.js} +1 -1
  104. package/web/assets/{speech-session-B7DFYRtL.js → speech-session-DnBIZldd.js} +1 -1
  105. package/web/assets/{startup-queries-BlA4Hayt.js → startup-queries-BpV9-ykp.js} +1 -1
  106. package/web/assets/{use-i18n-BVRhlQ1v.js → use-i18n-AM3jlRYR.js} +1 -1
  107. package/web/assets/{use-open-bot-DyXtOatN.js → use-open-bot-BDco631W.js} +1 -1
  108. package/web/assets/{use-studio-actions-DEeR_rS9.js → use-studio-actions-C7W6Soh6.js} +1 -1
  109. package/web/assets/{useCatalogProjects-BD5GyCxg.js → useCatalogProjects-DCT51aGo.js} +1 -1
  110. package/web/assets/{useMachines-CwX7YqNe.js → useMachines-BJtbuUVt.js} +1 -1
  111. package/web/assets/{useNewProjectPicker-COxPJj6n.js → useNewProjectPicker-B85EuCYh.js} +2 -2
  112. package/web/assets/{useNow-CfPk0uIz.js → useNow-BUhFR4QI.js} +1 -1
  113. package/web/assets/{usePhoneShell-BpuKJgci.js → usePhoneShell-CK9XBtgf.js} +1 -1
  114. package/web/assets/{useSessionListQuery-CURESPBn.js → useSessionListQuery-B4Xmcfwa.js} +1 -1
  115. package/web/assets/{useSessionRowActions-DoCwFh8w.js → useSessionRowActions-BMestf2F.js} +1 -1
  116. package/web/assets/{useSidebarModel-CY79-mYl.js → useSidebarModel-BDfzya9Z.js} +1 -1
  117. package/web/assets/{workspace-order-store-C-jYrC0l.js → workspace-order-store-C_t43Zgq.js} +1 -1
  118. package/web/index.html +1 -1
  119. package/web/assets/app-update-Cf9JJ7WK.js +0 -34
  120. package/web/assets/browser-notifications-DBS0oXqN.js +0 -1
  121. package/web/assets/i18n-D80GstlU.js +0 -1
  122. package/web/assets/mount-app-DRohHSG7.js +0 -9
  123. package/web/assets/public-diff-DpNMZ8NJ.js +0 -1
  124. package/web/assets/public-events-CLCgth5h.js +0 -1
  125. package/web/assets/safe-mode-sentinel-B_NPQ0qy.js +0 -1
@@ -1,2 +1,2 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{o as n}from"./vendor-state-GkUciC5H.js";import{u as r}from"./query-DFQayLF5.js";import{t as i}from"./useQuery-DfOU-27z.js";import{a,i as o,n as s,o as c,t as l}from"./startup-queries-BlA4Hayt.js";import{t as u}from"./component-changes-Q9Bf64Ob.js";import{i as d}from"./http-response-PZN5QIRk.js";import{t as f}from"./event-stream-Dh7h5sXJ.js";import{i as p,n as m}from"./http-Bp65Kb4t.js";import{t as h}from"./runtime-capabilities-store-Bd3gWIM7.js";import{a as g,c as _,r as v,s as y,t as ee}from"./session-board-status-D2lpFPiI.js";import{t as b}from"./chat-api-CSAs7Y6E.js";import{n as x}from"./session-organization-api-D9hTSIh7.js";import{c as te,l as ne}from"./session-workspaces-Brm-8lHh.js";import{i as re}from"./session-questions-Cf-1g85h.js";var S=400,ie=2e3,ae=160,oe=512,se=400,ce=240,le=240,ue=8,C=40,de=80,fe=3;function w(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function T(e){return typeof e==`string`?e:``}function E(e){return typeof e==`string`&&Number.isFinite(Date.parse(e))?e:null}function D(e,t){let n=Array.from(e);return n.length>t?`${n.slice(0,t-1).join(``)}…`:e}function pe(e,t){let n=w(t),r=e===`bash`?n.command:n.path??n.file_path??n.url??n.query??n.pattern;return D(((typeof r==`string`?r:Object.values(n).find(e=>typeof e==`string`))||``).replace(/\s+/g,` `).trim(),ae)}function me(e){let t=w(e);if(t.type===`model`)return{type:`model`,stage:T(t.stage)||`thinking`};if(t.type===`tool`&&T(t.name)){let e=T(t.name);return{type:`tool`,name:e,summary:pe(e,t.args),startedAt:E(t.startedAt)}}return null}function he(e){let t=w(e),n=T(t.id);if(!n)return null;let r=w(t.args),i=w(t.fileChange);return{id:n,toolName:T(t.toolName),toolCallId:T(t.toolCallId),args:r,command:T(r.command),path:T(i.path)||T(r.path)||T(r.file_path),reason:D(T(t.reason),S),risk:T(t.risk),severity:g(t),createdAt:E(t.createdAt)}}function ge(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e){let e=he(r);!e||t.has(e.id)||(t.add(e.id),n.push(e))}return n}function _e(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function O(e){let t=_e(e);return t===null?null:Math.max(0,Math.floor(t))}var ve=/[\u0000-\u001f\u007f-\u009f]/g;function k(e,t){return D(T(e).replace(ve,` `).trimEnd(),t)}function ye(e){let t=/^(?:path|file_path): (.+)$/m.exec(e);return t?t[1].trim():``}function be(e){let t=w(e),n=T(t.id);if(!n)return null;let r=T(t.toolName),i=T(t.argsPreview),a=D(i,oe),o=t.argsTruncated===!0||a!==i,s=r===`bash`;return{id:n,toolName:r,toolCallId:``,args:{},command:s?a:``,path:s?``:ye(a),reason:D(T(t.reason),S),risk:T(t.risk),severity:g({severity:t.severity,reason:t.reason,toolName:r}),createdAt:E(t.createdAt),argsText:s?``:a,truncated:o}}function xe(e){let t=w(e);return t.type===`model`?{type:`model`,stage:D(T(t.stage),C)}:t.type===`tool`&&T(t.name)?{type:`tool`,name:D(T(t.name),C),summary:D(T(t.argsSummary).replace(/\s+/g,` `).trim(),ae),startedAt:E(t.startedAt)}:null}function Se(e){let t=w(e),n=T(t.id),r=k(t.name,C);if(!n||!r)return null;let i=w(t.avatar);return{id:D(n,C),name:r,character:D(T(i.character),C),color:D(T(i.color),C)}}function Ce(e){return e?{bot:e}:{}}function we(e){let t=w(e),n=T(t.status);return n?{added:O(t.added),removed:O(t.removed),files:O(t.files),status:D(n,C)}:null}function Te(e){let t=w(e),n=w(t.error),r=k(n.message,se),i=w(t.agents),a=O(i.running),o=O(i.total),s=_e(t.contextPct),c=ee.includes(T(t.outcome))?t.outcome:null,l=[],u=new Set;for(let e of Array.isArray(t.approvals)?t.approvals:[]){let t=be(e);if(!(!t||u.has(t.id))&&(u.add(t.id),l.push(t),l.length>=ue))break}return{boardStatus:D(T(t.boardStatus),C),runId:D(T(t.runId),de),activity:xe(t.activity),startedAt:E(t.startedAt),lastActivityAt:E(t.lastActivityAt),finishedAt:E(t.finishedAt),outcome:c,error:r?{message:r,kind:D(T(n.kind),C)||`runtime`}:null,approvals:l,queuedInputCount:O(t.queuedInputCount)??0,contextPct:s===null?null:Math.min(100,Math.max(0,s)),changeStats:we(t.changeStats),preview:k(t.lastAssistantPreview,ce),tail:(Array.isArray(t.tail)?t.tail:[]).map(e=>k(e,le)).filter(e=>e.trim()).slice(-3),agents:a!==null&&o!==null&&o>0?{running:Math.min(a,o),total:o}:null,totalTokens:O(w(t.usage).totalTokens),...Ce(Se(t.bot))}}function Ee(e){let t=w(e),n=T(t.id);if(!n)return null;let r={...t,id:n};return delete r.card,r}function De(e){let t=Ee(e);return t?{session:t,card:Te(w(e).card)}:null}function Oe(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:null}function ke(e){let t=w(e),n=[],r=new Set;for(let e of Array.isArray(t.sessions)?t.sessions:[]){let t=De(e);!t||r.has(t.session.id)||(r.add(t.session.id),n.push(t))}let i=T(t.nextCursor);return{items:n,nextCursor:i&&i.length<=1024?i:null,revision:Oe(t.revision)}}function Ae(){return-new Date().getTimezoneOffset()}function je(e){let t=w(e);return{streaming:t.streaming===!0,approvals:ge(t.approvals),error:D(T(t.error),ie),activity:me(t.currentActivity),startedAt:E(t.startedAt),lastActivityAt:E(t.lastActivityAt),finishedAt:E(t.finishedAt)}}var A={listSessions:()=>b.listSessions(),getLiveDetail:async(e,t)=>je(await b.getLiveSession(e,{signal:t,timeout:15e3})),resolveApproval:async(e,t,n)=>{try{return w(await b.resolveApproval(e,t,n)).alreadyResolved===!0?`already-resolved`:`resolved`}catch(e){if(e instanceof d&&e.status===404)return`missing`;throw e}},retry:(e,t,n)=>b.retryLastTurn(e,t,{signal:n}),updateOrganization:(e,t)=>x(e,t),renameSession:async(e,t)=>{let n=w(await b.renameSession(e,t));return typeof n.name==`string`?n.name:t},listBoardView:async e=>{let t=[],n=new Set,r=``,i=null;for(let a=0;a<fe;a+=1){let o=new URLSearchParams({view:`board`,window:`7d`,limit:`200`,tzOffset:String(Ae())});r&&o.set(`cursor`,r);let s=await m(`/api/sessions?${o}`,{signal:e,timeout:15e3,parse:ke});a===0&&(i=s.revision);for(let e of s.items)n.has(e.session.id)||(n.add(e.session.id),t.push(e));if(r=s.nextCursor??``,!r||t.length>=500)break}return{items:t.slice(0,500),nextCursor:r||null,revision:i}},openBoardEvents:async(e,t,n)=>{await p(n);let r=e===null?``:`?after=${encodeURIComponent(String(e))}`,i;try{i=await fetch(`/api/board/events${r}`,{signal:n,headers:{Accept:`text/event-stream`}})}catch(e){throw n.aborted?e:new d(e instanceof Error?e.message:`network`,{kind:`network`})}await f(i,(e,n)=>t(e,n))}};function j(e=`legacy`){return{mode:e,ready:!1,revision:null,awaitingSnapshot:!1,entries:{},updatedAt:0}}function M(){return{upserts:[],removed:[],resync:!1,reconnect:!1,truncated:!1,catalog:!1,changed:!1}}function Me(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function Ne(e,t,n,r=Date.now()){let i=M(),a={},o=n??e.revision??0;for(let e of t)a[e.session.id]={...e,revision:o,receivedAt:r},i.upserts.push(e.session);for(let t of Object.keys(e.entries))t in a||i.removed.push(t);return i.changed=!0,{feed:{...e,ready:!0,revision:n??e.revision,awaitingSnapshot:!1,entries:a,updatedAt:r},effects:i}}function Pe(e,t,n,r=Date.now()){let i=Me(n),a=Oe(i.revision),o={feed:e,effects:M()};if(t===`snapshot`){if(a===null||!Array.isArray(i.items))return o;let t=[],n=new Set;for(let e of i.items){let r=De(e);!r||n.has(r.session.id)||(n.add(r.session.id),t.push(r))}let s=Ne(e,t,a,r);return s.effects.truncated=i.truncated===!0,s}if(t===`resync_required`){let t=M();return t.resync=!0,t.reconnect=i.reason===`flush_failed`,t.changed=!e.awaitingSnapshot,{feed:{...e,awaitingSnapshot:!0},effects:t}}if(e.awaitingSnapshot||a===null||e.revision!==null&&a<=e.revision)return o;if(t===`heartbeat`||t===`component_changed`||t===`catalog_changed`){let n=M();return n.changed=!0,n.catalog=t===`catalog_changed`,{feed:{...e,revision:a,updatedAt:r},effects:n}}if(t!==`session_card`)return o;let s=typeof i.id==`string`?i.id:``;if(!s)return o;let c=e.entries[s];if(c&&a<=c.revision)return o;let l=M();if(l.changed=!0,i.removed===!0){let t={...e.entries};return delete t[s],c&&l.removed.push(s),{feed:{...e,revision:a,entries:t,updatedAt:r},effects:l}}let u=Ee(i.session);return!u||u.id!==s?{feed:{...e,revision:a,updatedAt:r},effects:l}:(l.upserts.push(u),{feed:{...e,revision:a,entries:{...e.entries,[s]:{session:u,card:Te(i.card),revision:a,receivedAt:r}},updatedAt:r},effects:l})}var N=l,Fe=3e3,Ie=2e3,Le=3e4,Re=1e3,ze=3e4,Be=6e4,Ve=4e3,He=4e4,Ue=300,We=6e3,Ge=6e4,Ke=1e3,qe={feed:j(),live:{},localRuns:{},runningSince:{},patches:{},pending:{}},P=n()(()=>({...qe}));function Je(){return a.getQueryData(N)?.sessions??[]}function F(){return s(`sessions`,!0)}async function Ye(){o(`sessions`),await F()}async function Xe(e,t=()=>!0,{fresh:n=!1}={}){if(V.active&&V.mode===`events`&&V.events.controller){if(!n&&t(P.getState().feed.entries[e]))return;await Ze(e,t,Ve);return}if(V.active&&V.mode!==`legacy`&&I().view){await K();return}await Ye().catch(()=>void 0)}function Ze(e,t,n){return new Promise(r=>{let i=P.getState().feed.entries[e],a=null,o=()=>{},s=()=>{a&&clearTimeout(a),o(),r()};o=P.subscribe(n=>{let r=n.feed.entries[e];r!==i&&t(r)&&s()}),a=setTimeout(s,n)})}function I(){let{capabilities:e,loaded:t}=h.getState(),n=e.features;return{loaded:t,view:t&&n[`board.view`]===!0,events:t&&n[`board.events`]===!0}}function Qe(){return I().view}var $e=0;function et(e,t){let n=++$e;return P.setState(r=>({patches:{...r.patches,[e]:[...r.patches[e]??[],{token:n,patch:t}]}})),n}function tt(e,t){P.setState(n=>{let r=n.patches[e];if(!r?.some(e=>e.token===t))return n;let i=r.filter(e=>e.token!==t),a={...n.patches};return i.length?a[e]=i:delete a[e],{patches:a}})}function L(e,t){let n=t[e.id];return n?.length?n.reduce((e,t)=>({...e,...t.patch}),e):e}function R(e,t,n=``){return e===`approve`||e===`deny`?`approval:${t}:${n}`:`${e}:${t}`}function nt(e,t){return!P.getState().pending[e]&&(P.setState(n=>({pending:{...n.pending,[e]:t}})),!0)}function rt(e){P.setState(t=>{if(!(e in t.pending))return t;let n={...t.pending};return delete n[e],{pending:n}})}function z(e,t){P.setState(n=>{let r=t(n.live[e]);if(r===n.live[e])return n;let i={...n.live};return r?i[e]=r:delete i[e],{live:i}})}function it(e,t){P.setState(n=>{let r=n.feed.entries[e];if(!r)return n;let i=t(r.card.approvals);return i===r.card.approvals?n:{feed:{...n.feed,entries:{...n.feed.entries,[e]:{...r,card:{...r.card,approvals:i}}}}}})}function at(e,t){z(e,e=>e&&e.approvals.some(e=>e.id===t)?{...e,approvals:e.approvals.filter(e=>e.id!==t)}:e??null),it(e,e=>e.some(e=>e.id===t)?e.filter(e=>e.id!==t):e)}function ot(e,t){if(P.getState().feed.entries[e]){it(e,e=>e.some(e=>e.id===t.id)?e:[...e,t]);return}z(e,e=>{let n=e??B(`ready`);return n.approvals.some(e=>e.id===t.id)?n:{...n,approvals:[...n.approvals,t]}})}function st(e,t){let n=P.getState(),r=n.live[e]?.approvals.find(e=>e.id===t);if(r)return r;let i=n.feed.entries[e]?.card.approvals.find(e=>e.id===t);return i&&!i.truncated?i:void 0}function ct(e,t){P.setState(n=>{let r=n.feed.entries[e];return r?{feed:{...n.feed,entries:{...n.feed.entries,[e]:{...r,session:{...r.session,...t},receivedAt:Date.now()}}}}:n})}function lt(e){let t=P.getState(),n=t.feed.entries[e];return n&&V.mode!==`legacy`?n.card.approvals:t.live[e]?.approvals??[]}function B(e){return{status:e,approvals:[],error:``,activity:null,startedAt:null,fetchedAt:null,failures:0}}var V={retainers:0,active:!1,mode:`legacy`,pollTimer:null,releaseTimer:null,catalogTimer:null,liveTimers:new Map,liveControllers:new Map,liveNextAt:new Map,runControllers:new Map,events:{controller:null,retryTimer:null,attempt:0,blockedUntil:0,blockTimer:null,watchdog:null},view:{inFlight:null,controller:null,failures:0},feedSettled:!1,catalogFetchAt:0,cleanups:[]};function H(){return typeof document>`u`||document.visibilityState!==`hidden`}function ut(){let e=I();return e.events&&Date.now()>=V.events.blockedUntil?`events`:e.view?`view`:`legacy`}function U(e=P.getState().feed){return V.mode!==`legacy`&&e.ready}function W(){V.pollTimer&&clearTimeout(V.pollTimer),V.pollTimer=null}function G(e){W(),!(!V.active||V.mode===`events`||!H())&&(V.pollTimer=setTimeout(()=>{V.pollTimer=null,ft()},e))}function dt(){return V.view.failures?Math.min(Ie*2**V.view.failures,Le):Ie}async function ft(){let e=V.mode;if(e===`view`)await pt();else try{await F()}catch{}!V.active||V.mode!==e||(Z(),G(e===`view`?dt():Fe))}function pt(){if(V.view.inFlight)return V.view.inFlight;let e=new AbortController;V.view.controller=e;let t=(async()=>{try{let t=await A.listBoardView(e.signal);if(e.signal.aborted||!V.active)return;V.view.failures=0,V.feedSettled=!0,bt(Ne(P.getState().feed,t.items,V.mode===`events`?null:t.revision))}catch{if(e.signal.aborted)return;V.view.failures+=1,V.feedSettled=!0,Z()}finally{V.view.controller===e&&(V.view.controller=null,V.view.inFlight=null)}})();return V.view.inFlight=t,t}async function K(){let e=V.view.inFlight;e&&await e,await pt()}function mt(){V.view.controller?.abort(),V.view.controller=null,V.view.inFlight=null}function q(){let e=V.events;e.retryTimer&&clearTimeout(e.retryTimer),e.retryTimer=null,J();let t=e.controller;e.controller=null,t?.abort()}function J(){V.events.watchdog&&clearTimeout(V.events.watchdog),V.events.watchdog=null}function ht(e){J(),V.events.watchdog=setTimeout(()=>{V.events.watchdog=null;let t=V.events;t.controller!==e||e.signal.aborted||(t.controller=null,e.abort(),!(!V.active||V.mode!==`events`)&&(gt(0),Z()))},He)}function gt(e){let t=V.events;t.retryTimer&&clearTimeout(t.retryTimer),t.retryTimer=setTimeout(()=>{t.retryTimer=null,Y()},e)}function _t(e){return e instanceof d&&e.kind===`http`&&typeof e.status==`number`&&e.status>=400&&e.status<500}function vt(){let e=V.events;e.blockedUntil=Date.now()+Be,e.blockTimer&&clearTimeout(e.blockTimer),e.blockTimer=setTimeout(()=>{e.blockTimer=null,X()},60010),X()}function Y(){let e=V.events;if(!V.active||V.mode!==`events`||e.controller||e.retryTimer||!H())return;let t=new AbortController;e.controller=t,ht(t);let n=P.getState().feed,r=n.ready&&!n.awaitingSnapshot?n.revision:null,i=!1,a=!1;A.openBoardEvents(r,(n,r)=>{if(t.signal.aborted||e.controller!==t)return!1;if(ht(t),i=!0,e.attempt=0,V.feedSettled=!0,yt(n,r).reconnect)return a=!0,!1},t.signal).then(()=>null,e=>e).then(n=>{if(e.controller===t&&(e.controller=null,J(),!(t.signal.aborted||!V.active))){if(V.feedSettled=!0,n&&_t(n))vt();else{let t=a?0:i?Re:Math.min(Re*2**e.attempt,ze);!i&&!a&&(e.attempt+=1),gt(t)}Z()}})}function yt(e,t){let n=Pe(P.getState().feed,e,t);return bt(n,e===`heartbeat`||e===`component_changed`||e===`catalog_changed`),u(e,t,n.effects.changed),n.effects}function bt({feed:e,effects:t},n=!1){t.changed&&P.setState({feed:{...e,mode:V.mode}}),t.upserts.length&&xt(t.upserts),(t.removed.length||t.resync||t.catalog)&&St(),t.changed&&!n&&Z()}function xt(e){let t=a.getQueryData(N);if(!t||!e.length)return;let n=new Map(t.sessions.map((e,t)=>[e.id,t])),r=null,i=[];for(let a of e){let e=n.get(a.id);if(e===void 0){i.some(e=>e.id===a.id)||i.push(a);continue}let o=(r??t.sessions)[e];JSON.stringify(o)!==JSON.stringify(a)&&(r??=[...t.sessions],r[e]=a)}!r&&!i.length||a.setQueryData(N,{...t,sessions:[...i,...r??t.sessions]})}function St(){V.catalogTimer||!V.active||(V.catalogTimer=setTimeout(()=>{V.catalogTimer=null,V.active&&F().catch(()=>void 0)},Ue))}function X(){if(!V.active)return;let e=ut();e!==V.mode&&(V.mode=e,V.feedSettled=!1,V.view.failures=0,q(),mt(),W(),P.setState(t=>({feed:e===`legacy`?j(`legacy`):{...t.feed,mode:e}})),e===`events`?(V.events.attempt=0,Y()):G(0),Z())}function Ct(){V.retainers+=1,V.releaseTimer&&=(clearTimeout(V.releaseTimer),null),V.active||wt();let e=!1;return()=>{e||(e=!0,V.retainers=Math.max(0,V.retainers-1),!(V.retainers>0)&&(V.releaseTimer=setTimeout(()=>{V.releaseTimer=null,V.retainers===0&&Tt()},Ke)))}}function wt(){V.active=!0,V.mode=ut(),V.feedSettled=!1,V.view.failures=0,V.events.attempt=0,P.setState(e=>({feed:V.mode===`legacy`?j(`legacy`):{...e.feed,mode:V.mode}}));let e=r(N);if(V.catalogFetchAt=Math.max(V.catalogFetchAt,a.getQueryState(N)?.dataUpdatedAt??0),V.cleanups.push(a.getQueryCache().subscribe(t=>{if(t.type===`updated`&&t.query.queryHash===e){if(t.action.type===`fetch`){V.catalogFetchAt=Date.now();return}t.action.type===`success`&&Dt()}})),V.cleanups.push(h.subscribe(()=>X())),typeof document<`u`){let e=()=>{if(H()){V.mode===`events`?Y():G(0),Z();return}W(),q()};document.addEventListener(`visibilitychange`,e),V.cleanups.push(()=>document.removeEventListener(`visibilitychange`,e))}if(Dt(),V.mode===`events`)Y();else if(V.mode===`view`)G(0);else{let e=a.getQueryState(N)?.dataUpdatedAt??0;G(Math.max(0,e+Fe-Date.now()))}}function Tt(){V.active=!1,W(),V.releaseTimer&&clearTimeout(V.releaseTimer),V.catalogTimer&&clearTimeout(V.catalogTimer),V.events.blockTimer&&clearTimeout(V.events.blockTimer),V.releaseTimer=null,V.catalogTimer=null,V.events.blockTimer=null,q(),mt();for(let e of V.cleanups.splice(0))e();for(let e of V.liveTimers.values())clearTimeout(e);for(let e of V.liveControllers.values())e.abort();for(let e of V.runControllers.values())e.controller.abort();V.liveTimers.clear(),V.liveControllers.clear(),V.liveNextAt.clear(),V.runControllers.clear(),P.setState({live:{},localRuns:{},runningSince:{}})}async function Et(){let e=F();V.active&&V.mode===`view`&&await K(),await e}function Dt(){let e=Je(),t=Date.now(),{runningSince:n,localRuns:r,feed:i}=P.getState(),a=U(i)?[...Object.values(i.entries).map(e=>e.session),...e]:e,o={},s=!1;for(let e of a)e.streaming!==!0||e.id in o||(o[e.id]=n[e.id]??r[e.id]?.startedAt??t,e.id in n||(s=!0));s||=Object.keys(n).some(e=>!(e in o)),s&&P.setState({runningSince:o}),U(i)&&Ot(e),Z()}function Ot(e){let t=V.catalogFetchAt,n=new Map(e.map(e=>[e.id,e])),r=[],i={};for(let e of Object.values(P.getState().feed.entries)){if((e.receivedAt??1/0)>=t){r.push(e.session);continue}let a=n.get(e.session.id);a&&a!==e.session&&JSON.stringify(a)!==JSON.stringify(e.session)&&(i[a.id]=a)}Object.keys(i).length&&P.setState(e=>{let t={...e.feed.entries};for(let[e,n]of Object.entries(i))t[e]&&(t[e]={...t[e],session:n});return{feed:{...e.feed,entries:t}}}),xt(r)}function kt(){let{patches:e,feed:t}=P.getState(),n=new Set,r=Date.now();if(U(t)){for(let i of Object.values(t.entries)){let t=L(i.session,e);if(t.archived===!0)continue;let a=i.card.approvals;_({...t,card:{approvals:a}},{now:r}).status===`approval`&&(!a.length||a.some(e=>e.truncated))&&n.add(i.session.id)}return n}if(V.mode!==`legacy`&&!V.feedSettled)return n;for(let t of Je()){let i=L(t,e);i.archived!==!0&&_(i,{now:r}).status===`approval`&&n.add(t.id)}return n}function At(e){let t=V.liveTimers.get(e);t&&clearTimeout(t),V.liveTimers.delete(e),V.liveControllers.get(e)?.abort(),V.liveControllers.delete(e),V.liveNextAt.delete(e),z(e,()=>null)}function Z(){if(!V.active)return;let e=kt();for(let t of Object.keys(P.getState().live))e.has(t)||At(t);for(let t of[...V.liveControllers.keys()])e.has(t)||At(t);if(!H())return;let t=Date.now(),n=P.getState().live,r=[...e].filter(e=>!V.liveControllers.has(e)&&(V.liveNextAt.get(e)??0)<=t).sort((e,t)=>Number(!!n[e])-Number(!!n[t])||(V.liveNextAt.get(e)??0)-(V.liveNextAt.get(t)??0)),i=Math.max(0,Math.min(3-V.liveControllers.size,4-V.liveControllers.size-V.runControllers.size-!!V.events.controller));r.slice(0,i).forEach((e,t)=>jt(e,t*250))}function jt(e,t){let n=new AbortController;V.liveControllers.set(e,n);let r=async()=>{V.liveTimers.delete(e),z(e,e=>e??B(`loading`));try{let t=await A.getLiveDetail(e,n.signal);if(n.signal.aborted||V.liveControllers.get(e)!==n)return;V.liveNextAt.set(e,Date.now()+We);let{pending:r}=P.getState(),i=t.approvals.filter(t=>!r[R(`approve`,e,t.id)]);z(e,()=>({status:`ready`,approvals:i,error:t.error,activity:t.activity,startedAt:t.startedAt,fetchedAt:Date.now(),failures:0}))}catch{if(n.signal.aborted||V.liveControllers.get(e)!==n)return;let t=(P.getState().live[e]?.failures??0)+1;V.liveNextAt.set(e,Date.now()+Math.min(We*2**t,Ge)),z(e,e=>({...e??B(`error`),status:e?.approvals.length?e.status:`error`,failures:t}))}finally{V.liveControllers.get(e)===n&&V.liveControllers.delete(e)}};t<=0?r():V.liveTimers.set(e,setTimeout(()=>void r(),t))}var Mt=class extends Error{code=`board_run_active`},Nt=0;function Pt(e,t){return e===t?!0:!e||!t||e.type!==t.type?!1:e.type===`model`?e.stage===t.stage:e.name===t.name&&e.summary===t.summary}function Q(e,t,n){P.setState(r=>{let i=r.localRuns[e];return!i||i.token!==t||(n.activity===void 0||Pt(i.activity,n.activity))&&(n.runId===void 0||n.runId===i.runId)?r:{localRuns:{...r.localRuns,[e]:{...i,...n}}}})}function Ft(e,t,n,r){if(n===`run`)Q(e,t,{runId:typeof r.runId==`string`?r.runId:``});else if(n===`tool_start`){let n=typeof r.name==`string`?r.name:``;n&&Q(e,t,{activity:{type:`tool`,name:n,summary:pe(n,r.args),startedAt:typeof r.startedAt==`string`?r.startedAt:new Date().toISOString()}})}else if(n===`tool_end`||n===`thinking_patch`||n===`thinking_reset`)Q(e,t,{activity:{type:`model`,stage:`thinking`}});else if(n===`text_delta`||n===`text_patch`)Q(e,t,{activity:{type:`model`,stage:`responding`}});else if(n===`permission_request`){let t=he(r);t&&ot(e,t),o(`sessions`)}else n===`permission_resolved`&&(typeof r.id==`string`&&at(e,r.id),o(`sessions`))}function It(){let e=V.runControllers.size-2;for(let[t,n]of V.runControllers){if(e<=0)return;n.accepted&&(V.runControllers.delete(t),n.controller.abort(),--e)}}function Lt(e,t,n){if(V.runControllers.has(e))return Promise.reject(new Mt);let r=new AbortController,i=++Nt,a={controller:r,accepted:!1};V.runControllers.set(e,a),It();let o=Date.now();return P.setState(n=>({localRuns:{...n.localRuns,[e]:{token:i,kind:t,runId:``,startedAt:o,activity:{type:`model`,stage:`starting`}}}})),new Promise((t,o)=>{let s=()=>{a.accepted||(a.accepted=!0,It(),t())};n((t,n)=>{if(r.signal.aborted)return!1;t===`run`&&s(),Ft(e,i,t,n)},r.signal).then(s,e=>{a.accepted||o(e)}).finally(()=>{V.runControllers.get(e)===a&&V.runControllers.delete(e),P.setState(t=>{if(t.localRuns[e]?.token!==i)return t;let n={...t.localRuns};return delete n[e],{localRuns:n}}),V.active&&(V.mode===`legacy`?F().catch(()=>void 0):I().view&&(V.mode===`view`||!V.events.controller)&&K(),Z())})})}var Rt=e(t(),1);function zt(){(0,Rt.useEffect)(()=>Ct(),[])}function Bt(e){let t=e.queue;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t;return{startAfter:typeof n.startAfter==`string`?n.startAfter:``,position:typeof n.position==`number`&&Number.isSafeInteger(n.position)&&n.position>0?n.position:null}}var Vt=120;function Ht(e){if(!e)return null;let t=Date.parse(e);return Number.isFinite(t)?t:null}function $(e){let t=typeof e.name==`string`?e.name.trim():``;if(t)return D(t,Vt);let n=typeof e.firstMessage==`string`?e.firstMessage.trim():``,r=n.search(/[。!?!?\n]|\.\s/u);return D((r<0?n:n.slice(0,n[r]===`
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{o as n}from"./vendor-state-GkUciC5H.js";import{u as r}from"./query-DFQayLF5.js";import{t as i}from"./useQuery-DfOU-27z.js";import{a,i as o,n as s,o as c,t as l}from"./startup-queries-BpV9-ykp.js";import{t as u}from"./component-changes-Q9Bf64Ob.js";import{i as d}from"./http-response-scdqC11Q.js";import{t as f}from"./event-stream-B9eeQcgA.js";import{i as p,n as m}from"./http-CXQuFoDX.js";import{t as h}from"./runtime-capabilities-store-D0EC-a9c.js";import{a as g,c as _,r as v,s as y,t as ee}from"./session-board-status-D2lpFPiI.js";import{t as b}from"./chat-api-CdqM-TFw.js";import{n as x}from"./session-organization-api-CGRK7VMP.js";import{c as te,l as ne}from"./session-workspaces-Brm-8lHh.js";import{i as re}from"./session-questions-Cf-1g85h.js";var S=400,ie=2e3,ae=160,oe=512,se=400,ce=240,le=240,ue=8,C=40,de=80,fe=3;function w(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function T(e){return typeof e==`string`?e:``}function E(e){return typeof e==`string`&&Number.isFinite(Date.parse(e))?e:null}function D(e,t){let n=Array.from(e);return n.length>t?`${n.slice(0,t-1).join(``)}…`:e}function pe(e,t){let n=w(t),r=e===`bash`?n.command:n.path??n.file_path??n.url??n.query??n.pattern;return D(((typeof r==`string`?r:Object.values(n).find(e=>typeof e==`string`))||``).replace(/\s+/g,` `).trim(),ae)}function me(e){let t=w(e);if(t.type===`model`)return{type:`model`,stage:T(t.stage)||`thinking`};if(t.type===`tool`&&T(t.name)){let e=T(t.name);return{type:`tool`,name:e,summary:pe(e,t.args),startedAt:E(t.startedAt)}}return null}function he(e){let t=w(e),n=T(t.id);if(!n)return null;let r=w(t.args),i=w(t.fileChange);return{id:n,toolName:T(t.toolName),toolCallId:T(t.toolCallId),args:r,command:T(r.command),path:T(i.path)||T(r.path)||T(r.file_path),reason:D(T(t.reason),S),risk:T(t.risk),severity:g(t),createdAt:E(t.createdAt)}}function ge(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e){let e=he(r);!e||t.has(e.id)||(t.add(e.id),n.push(e))}return n}function _e(e){return typeof e==`number`&&Number.isFinite(e)?e:null}function O(e){let t=_e(e);return t===null?null:Math.max(0,Math.floor(t))}var ve=/[\u0000-\u001f\u007f-\u009f]/g;function k(e,t){return D(T(e).replace(ve,` `).trimEnd(),t)}function ye(e){let t=/^(?:path|file_path): (.+)$/m.exec(e);return t?t[1].trim():``}function be(e){let t=w(e),n=T(t.id);if(!n)return null;let r=T(t.toolName),i=T(t.argsPreview),a=D(i,oe),o=t.argsTruncated===!0||a!==i,s=r===`bash`;return{id:n,toolName:r,toolCallId:``,args:{},command:s?a:``,path:s?``:ye(a),reason:D(T(t.reason),S),risk:T(t.risk),severity:g({severity:t.severity,reason:t.reason,toolName:r}),createdAt:E(t.createdAt),argsText:s?``:a,truncated:o}}function xe(e){let t=w(e);return t.type===`model`?{type:`model`,stage:D(T(t.stage),C)}:t.type===`tool`&&T(t.name)?{type:`tool`,name:D(T(t.name),C),summary:D(T(t.argsSummary).replace(/\s+/g,` `).trim(),ae),startedAt:E(t.startedAt)}:null}function Se(e){let t=w(e),n=T(t.id),r=k(t.name,C);if(!n||!r)return null;let i=w(t.avatar);return{id:D(n,C),name:r,character:D(T(i.character),C),color:D(T(i.color),C)}}function Ce(e){return e?{bot:e}:{}}function we(e){let t=w(e),n=T(t.status);return n?{added:O(t.added),removed:O(t.removed),files:O(t.files),status:D(n,C)}:null}function Te(e){let t=w(e),n=w(t.error),r=k(n.message,se),i=w(t.agents),a=O(i.running),o=O(i.total),s=_e(t.contextPct),c=ee.includes(T(t.outcome))?t.outcome:null,l=[],u=new Set;for(let e of Array.isArray(t.approvals)?t.approvals:[]){let t=be(e);if(!(!t||u.has(t.id))&&(u.add(t.id),l.push(t),l.length>=ue))break}return{boardStatus:D(T(t.boardStatus),C),runId:D(T(t.runId),de),activity:xe(t.activity),startedAt:E(t.startedAt),lastActivityAt:E(t.lastActivityAt),finishedAt:E(t.finishedAt),outcome:c,error:r?{message:r,kind:D(T(n.kind),C)||`runtime`}:null,approvals:l,queuedInputCount:O(t.queuedInputCount)??0,contextPct:s===null?null:Math.min(100,Math.max(0,s)),changeStats:we(t.changeStats),preview:k(t.lastAssistantPreview,ce),tail:(Array.isArray(t.tail)?t.tail:[]).map(e=>k(e,le)).filter(e=>e.trim()).slice(-3),agents:a!==null&&o!==null&&o>0?{running:Math.min(a,o),total:o}:null,totalTokens:O(w(t.usage).totalTokens),...Ce(Se(t.bot))}}function Ee(e){let t=w(e),n=T(t.id);if(!n)return null;let r={...t,id:n};return delete r.card,r}function De(e){let t=Ee(e);return t?{session:t,card:Te(w(e).card)}:null}function Oe(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0?e:null}function ke(e){let t=w(e),n=[],r=new Set;for(let e of Array.isArray(t.sessions)?t.sessions:[]){let t=De(e);!t||r.has(t.session.id)||(r.add(t.session.id),n.push(t))}let i=T(t.nextCursor);return{items:n,nextCursor:i&&i.length<=1024?i:null,revision:Oe(t.revision)}}function Ae(){return-new Date().getTimezoneOffset()}function je(e){let t=w(e);return{streaming:t.streaming===!0,approvals:ge(t.approvals),error:D(T(t.error),ie),activity:me(t.currentActivity),startedAt:E(t.startedAt),lastActivityAt:E(t.lastActivityAt),finishedAt:E(t.finishedAt)}}var A={listSessions:()=>b.listSessions(),getLiveDetail:async(e,t)=>je(await b.getLiveSession(e,{signal:t,timeout:15e3})),resolveApproval:async(e,t,n)=>{try{return w(await b.resolveApproval(e,t,n)).alreadyResolved===!0?`already-resolved`:`resolved`}catch(e){if(e instanceof d&&e.status===404)return`missing`;throw e}},retry:(e,t,n)=>b.retryLastTurn(e,t,{signal:n}),updateOrganization:(e,t)=>x(e,t),renameSession:async(e,t)=>{let n=w(await b.renameSession(e,t));return typeof n.name==`string`?n.name:t},listBoardView:async e=>{let t=[],n=new Set,r=``,i=null;for(let a=0;a<fe;a+=1){let o=new URLSearchParams({view:`board`,window:`7d`,limit:`200`,tzOffset:String(Ae())});r&&o.set(`cursor`,r);let s=await m(`/api/sessions?${o}`,{signal:e,timeout:15e3,parse:ke});a===0&&(i=s.revision);for(let e of s.items)n.has(e.session.id)||(n.add(e.session.id),t.push(e));if(r=s.nextCursor??``,!r||t.length>=500)break}return{items:t.slice(0,500),nextCursor:r||null,revision:i}},openBoardEvents:async(e,t,n)=>{await p(n);let r=e===null?``:`?after=${encodeURIComponent(String(e))}`,i;try{i=await fetch(`/api/board/events${r}`,{signal:n,headers:{Accept:`text/event-stream`}})}catch(e){throw n.aborted?e:new d(e instanceof Error?e.message:`network`,{kind:`network`})}await f(i,(e,n)=>t(e,n))}};function j(e=`legacy`){return{mode:e,ready:!1,revision:null,awaitingSnapshot:!1,entries:{},updatedAt:0}}function M(){return{upserts:[],removed:[],resync:!1,reconnect:!1,truncated:!1,catalog:!1,changed:!1}}function Me(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function Ne(e,t,n,r=Date.now()){let i=M(),a={},o=n??e.revision??0;for(let e of t)a[e.session.id]={...e,revision:o,receivedAt:r},i.upserts.push(e.session);for(let t of Object.keys(e.entries))t in a||i.removed.push(t);return i.changed=!0,{feed:{...e,ready:!0,revision:n??e.revision,awaitingSnapshot:!1,entries:a,updatedAt:r},effects:i}}function Pe(e,t,n,r=Date.now()){let i=Me(n),a=Oe(i.revision),o={feed:e,effects:M()};if(t===`snapshot`){if(a===null||!Array.isArray(i.items))return o;let t=[],n=new Set;for(let e of i.items){let r=De(e);!r||n.has(r.session.id)||(n.add(r.session.id),t.push(r))}let s=Ne(e,t,a,r);return s.effects.truncated=i.truncated===!0,s}if(t===`resync_required`){let t=M();return t.resync=!0,t.reconnect=i.reason===`flush_failed`,t.changed=!e.awaitingSnapshot,{feed:{...e,awaitingSnapshot:!0},effects:t}}if(e.awaitingSnapshot||a===null||e.revision!==null&&a<=e.revision)return o;if(t===`heartbeat`||t===`component_changed`||t===`catalog_changed`){let n=M();return n.changed=!0,n.catalog=t===`catalog_changed`,{feed:{...e,revision:a,updatedAt:r},effects:n}}if(t!==`session_card`)return o;let s=typeof i.id==`string`?i.id:``;if(!s)return o;let c=e.entries[s];if(c&&a<=c.revision)return o;let l=M();if(l.changed=!0,i.removed===!0){let t={...e.entries};return delete t[s],c&&l.removed.push(s),{feed:{...e,revision:a,entries:t,updatedAt:r},effects:l}}let u=Ee(i.session);return!u||u.id!==s?{feed:{...e,revision:a,updatedAt:r},effects:l}:(l.upserts.push(u),{feed:{...e,revision:a,entries:{...e.entries,[s]:{session:u,card:Te(i.card),revision:a,receivedAt:r}},updatedAt:r},effects:l})}var N=l,Fe=3e3,Ie=2e3,Le=3e4,Re=1e3,ze=3e4,Be=6e4,Ve=4e3,He=4e4,Ue=300,We=6e3,Ge=6e4,Ke=1e3,qe={feed:j(),live:{},localRuns:{},runningSince:{},patches:{},pending:{}},P=n()(()=>({...qe}));function Je(){return a.getQueryData(N)?.sessions??[]}function F(){return s(`sessions`,!0)}async function Ye(){o(`sessions`),await F()}async function Xe(e,t=()=>!0,{fresh:n=!1}={}){if(V.active&&V.mode===`events`&&V.events.controller){if(!n&&t(P.getState().feed.entries[e]))return;await Ze(e,t,Ve);return}if(V.active&&V.mode!==`legacy`&&I().view){await K();return}await Ye().catch(()=>void 0)}function Ze(e,t,n){return new Promise(r=>{let i=P.getState().feed.entries[e],a=null,o=()=>{},s=()=>{a&&clearTimeout(a),o(),r()};o=P.subscribe(n=>{let r=n.feed.entries[e];r!==i&&t(r)&&s()}),a=setTimeout(s,n)})}function I(){let{capabilities:e,loaded:t}=h.getState(),n=e.features;return{loaded:t,view:t&&n[`board.view`]===!0,events:t&&n[`board.events`]===!0}}function Qe(){return I().view}var $e=0;function et(e,t){let n=++$e;return P.setState(r=>({patches:{...r.patches,[e]:[...r.patches[e]??[],{token:n,patch:t}]}})),n}function tt(e,t){P.setState(n=>{let r=n.patches[e];if(!r?.some(e=>e.token===t))return n;let i=r.filter(e=>e.token!==t),a={...n.patches};return i.length?a[e]=i:delete a[e],{patches:a}})}function L(e,t){let n=t[e.id];return n?.length?n.reduce((e,t)=>({...e,...t.patch}),e):e}function R(e,t,n=``){return e===`approve`||e===`deny`?`approval:${t}:${n}`:`${e}:${t}`}function nt(e,t){return!P.getState().pending[e]&&(P.setState(n=>({pending:{...n.pending,[e]:t}})),!0)}function rt(e){P.setState(t=>{if(!(e in t.pending))return t;let n={...t.pending};return delete n[e],{pending:n}})}function z(e,t){P.setState(n=>{let r=t(n.live[e]);if(r===n.live[e])return n;let i={...n.live};return r?i[e]=r:delete i[e],{live:i}})}function it(e,t){P.setState(n=>{let r=n.feed.entries[e];if(!r)return n;let i=t(r.card.approvals);return i===r.card.approvals?n:{feed:{...n.feed,entries:{...n.feed.entries,[e]:{...r,card:{...r.card,approvals:i}}}}}})}function at(e,t){z(e,e=>e&&e.approvals.some(e=>e.id===t)?{...e,approvals:e.approvals.filter(e=>e.id!==t)}:e??null),it(e,e=>e.some(e=>e.id===t)?e.filter(e=>e.id!==t):e)}function ot(e,t){if(P.getState().feed.entries[e]){it(e,e=>e.some(e=>e.id===t.id)?e:[...e,t]);return}z(e,e=>{let n=e??B(`ready`);return n.approvals.some(e=>e.id===t.id)?n:{...n,approvals:[...n.approvals,t]}})}function st(e,t){let n=P.getState(),r=n.live[e]?.approvals.find(e=>e.id===t);if(r)return r;let i=n.feed.entries[e]?.card.approvals.find(e=>e.id===t);return i&&!i.truncated?i:void 0}function ct(e,t){P.setState(n=>{let r=n.feed.entries[e];return r?{feed:{...n.feed,entries:{...n.feed.entries,[e]:{...r,session:{...r.session,...t},receivedAt:Date.now()}}}}:n})}function lt(e){let t=P.getState(),n=t.feed.entries[e];return n&&V.mode!==`legacy`?n.card.approvals:t.live[e]?.approvals??[]}function B(e){return{status:e,approvals:[],error:``,activity:null,startedAt:null,fetchedAt:null,failures:0}}var V={retainers:0,active:!1,mode:`legacy`,pollTimer:null,releaseTimer:null,catalogTimer:null,liveTimers:new Map,liveControllers:new Map,liveNextAt:new Map,runControllers:new Map,events:{controller:null,retryTimer:null,attempt:0,blockedUntil:0,blockTimer:null,watchdog:null},view:{inFlight:null,controller:null,failures:0},feedSettled:!1,catalogFetchAt:0,cleanups:[]};function H(){return typeof document>`u`||document.visibilityState!==`hidden`}function ut(){let e=I();return e.events&&Date.now()>=V.events.blockedUntil?`events`:e.view?`view`:`legacy`}function U(e=P.getState().feed){return V.mode!==`legacy`&&e.ready}function W(){V.pollTimer&&clearTimeout(V.pollTimer),V.pollTimer=null}function G(e){W(),!(!V.active||V.mode===`events`||!H())&&(V.pollTimer=setTimeout(()=>{V.pollTimer=null,ft()},e))}function dt(){return V.view.failures?Math.min(Ie*2**V.view.failures,Le):Ie}async function ft(){let e=V.mode;if(e===`view`)await pt();else try{await F()}catch{}!V.active||V.mode!==e||(Z(),G(e===`view`?dt():Fe))}function pt(){if(V.view.inFlight)return V.view.inFlight;let e=new AbortController;V.view.controller=e;let t=(async()=>{try{let t=await A.listBoardView(e.signal);if(e.signal.aborted||!V.active)return;V.view.failures=0,V.feedSettled=!0,bt(Ne(P.getState().feed,t.items,V.mode===`events`?null:t.revision))}catch{if(e.signal.aborted)return;V.view.failures+=1,V.feedSettled=!0,Z()}finally{V.view.controller===e&&(V.view.controller=null,V.view.inFlight=null)}})();return V.view.inFlight=t,t}async function K(){let e=V.view.inFlight;e&&await e,await pt()}function mt(){V.view.controller?.abort(),V.view.controller=null,V.view.inFlight=null}function q(){let e=V.events;e.retryTimer&&clearTimeout(e.retryTimer),e.retryTimer=null,J();let t=e.controller;e.controller=null,t?.abort()}function J(){V.events.watchdog&&clearTimeout(V.events.watchdog),V.events.watchdog=null}function ht(e){J(),V.events.watchdog=setTimeout(()=>{V.events.watchdog=null;let t=V.events;t.controller!==e||e.signal.aborted||(t.controller=null,e.abort(),!(!V.active||V.mode!==`events`)&&(gt(0),Z()))},He)}function gt(e){let t=V.events;t.retryTimer&&clearTimeout(t.retryTimer),t.retryTimer=setTimeout(()=>{t.retryTimer=null,Y()},e)}function _t(e){return e instanceof d&&e.kind===`http`&&typeof e.status==`number`&&e.status>=400&&e.status<500}function vt(){let e=V.events;e.blockedUntil=Date.now()+Be,e.blockTimer&&clearTimeout(e.blockTimer),e.blockTimer=setTimeout(()=>{e.blockTimer=null,X()},60010),X()}function Y(){let e=V.events;if(!V.active||V.mode!==`events`||e.controller||e.retryTimer||!H())return;let t=new AbortController;e.controller=t,ht(t);let n=P.getState().feed,r=n.ready&&!n.awaitingSnapshot?n.revision:null,i=!1,a=!1;A.openBoardEvents(r,(n,r)=>{if(t.signal.aborted||e.controller!==t)return!1;if(ht(t),i=!0,e.attempt=0,V.feedSettled=!0,yt(n,r).reconnect)return a=!0,!1},t.signal).then(()=>null,e=>e).then(n=>{if(e.controller===t&&(e.controller=null,J(),!(t.signal.aborted||!V.active))){if(V.feedSettled=!0,n&&_t(n))vt();else{let t=a?0:i?Re:Math.min(Re*2**e.attempt,ze);!i&&!a&&(e.attempt+=1),gt(t)}Z()}})}function yt(e,t){let n=Pe(P.getState().feed,e,t);return bt(n,e===`heartbeat`||e===`component_changed`||e===`catalog_changed`),u(e,t,n.effects.changed),n.effects}function bt({feed:e,effects:t},n=!1){t.changed&&P.setState({feed:{...e,mode:V.mode}}),t.upserts.length&&xt(t.upserts),(t.removed.length||t.resync||t.catalog)&&St(),t.changed&&!n&&Z()}function xt(e){let t=a.getQueryData(N);if(!t||!e.length)return;let n=new Map(t.sessions.map((e,t)=>[e.id,t])),r=null,i=[];for(let a of e){let e=n.get(a.id);if(e===void 0){i.some(e=>e.id===a.id)||i.push(a);continue}let o=(r??t.sessions)[e];JSON.stringify(o)!==JSON.stringify(a)&&(r??=[...t.sessions],r[e]=a)}!r&&!i.length||a.setQueryData(N,{...t,sessions:[...i,...r??t.sessions]})}function St(){V.catalogTimer||!V.active||(V.catalogTimer=setTimeout(()=>{V.catalogTimer=null,V.active&&F().catch(()=>void 0)},Ue))}function X(){if(!V.active)return;let e=ut();e!==V.mode&&(V.mode=e,V.feedSettled=!1,V.view.failures=0,q(),mt(),W(),P.setState(t=>({feed:e===`legacy`?j(`legacy`):{...t.feed,mode:e}})),e===`events`?(V.events.attempt=0,Y()):G(0),Z())}function Ct(){V.retainers+=1,V.releaseTimer&&=(clearTimeout(V.releaseTimer),null),V.active||wt();let e=!1;return()=>{e||(e=!0,V.retainers=Math.max(0,V.retainers-1),!(V.retainers>0)&&(V.releaseTimer=setTimeout(()=>{V.releaseTimer=null,V.retainers===0&&Tt()},Ke)))}}function wt(){V.active=!0,V.mode=ut(),V.feedSettled=!1,V.view.failures=0,V.events.attempt=0,P.setState(e=>({feed:V.mode===`legacy`?j(`legacy`):{...e.feed,mode:V.mode}}));let e=r(N);if(V.catalogFetchAt=Math.max(V.catalogFetchAt,a.getQueryState(N)?.dataUpdatedAt??0),V.cleanups.push(a.getQueryCache().subscribe(t=>{if(t.type===`updated`&&t.query.queryHash===e){if(t.action.type===`fetch`){V.catalogFetchAt=Date.now();return}t.action.type===`success`&&Dt()}})),V.cleanups.push(h.subscribe(()=>X())),typeof document<`u`){let e=()=>{if(H()){V.mode===`events`?Y():G(0),Z();return}W(),q()};document.addEventListener(`visibilitychange`,e),V.cleanups.push(()=>document.removeEventListener(`visibilitychange`,e))}if(Dt(),V.mode===`events`)Y();else if(V.mode===`view`)G(0);else{let e=a.getQueryState(N)?.dataUpdatedAt??0;G(Math.max(0,e+Fe-Date.now()))}}function Tt(){V.active=!1,W(),V.releaseTimer&&clearTimeout(V.releaseTimer),V.catalogTimer&&clearTimeout(V.catalogTimer),V.events.blockTimer&&clearTimeout(V.events.blockTimer),V.releaseTimer=null,V.catalogTimer=null,V.events.blockTimer=null,q(),mt();for(let e of V.cleanups.splice(0))e();for(let e of V.liveTimers.values())clearTimeout(e);for(let e of V.liveControllers.values())e.abort();for(let e of V.runControllers.values())e.controller.abort();V.liveTimers.clear(),V.liveControllers.clear(),V.liveNextAt.clear(),V.runControllers.clear(),P.setState({live:{},localRuns:{},runningSince:{}})}async function Et(){let e=F();V.active&&V.mode===`view`&&await K(),await e}function Dt(){let e=Je(),t=Date.now(),{runningSince:n,localRuns:r,feed:i}=P.getState(),a=U(i)?[...Object.values(i.entries).map(e=>e.session),...e]:e,o={},s=!1;for(let e of a)e.streaming!==!0||e.id in o||(o[e.id]=n[e.id]??r[e.id]?.startedAt??t,e.id in n||(s=!0));s||=Object.keys(n).some(e=>!(e in o)),s&&P.setState({runningSince:o}),U(i)&&Ot(e),Z()}function Ot(e){let t=V.catalogFetchAt,n=new Map(e.map(e=>[e.id,e])),r=[],i={};for(let e of Object.values(P.getState().feed.entries)){if((e.receivedAt??1/0)>=t){r.push(e.session);continue}let a=n.get(e.session.id);a&&a!==e.session&&JSON.stringify(a)!==JSON.stringify(e.session)&&(i[a.id]=a)}Object.keys(i).length&&P.setState(e=>{let t={...e.feed.entries};for(let[e,n]of Object.entries(i))t[e]&&(t[e]={...t[e],session:n});return{feed:{...e.feed,entries:t}}}),xt(r)}function kt(){let{patches:e,feed:t}=P.getState(),n=new Set,r=Date.now();if(U(t)){for(let i of Object.values(t.entries)){let t=L(i.session,e);if(t.archived===!0)continue;let a=i.card.approvals;_({...t,card:{approvals:a}},{now:r}).status===`approval`&&(!a.length||a.some(e=>e.truncated))&&n.add(i.session.id)}return n}if(V.mode!==`legacy`&&!V.feedSettled)return n;for(let t of Je()){let i=L(t,e);i.archived!==!0&&_(i,{now:r}).status===`approval`&&n.add(t.id)}return n}function At(e){let t=V.liveTimers.get(e);t&&clearTimeout(t),V.liveTimers.delete(e),V.liveControllers.get(e)?.abort(),V.liveControllers.delete(e),V.liveNextAt.delete(e),z(e,()=>null)}function Z(){if(!V.active)return;let e=kt();for(let t of Object.keys(P.getState().live))e.has(t)||At(t);for(let t of[...V.liveControllers.keys()])e.has(t)||At(t);if(!H())return;let t=Date.now(),n=P.getState().live,r=[...e].filter(e=>!V.liveControllers.has(e)&&(V.liveNextAt.get(e)??0)<=t).sort((e,t)=>Number(!!n[e])-Number(!!n[t])||(V.liveNextAt.get(e)??0)-(V.liveNextAt.get(t)??0)),i=Math.max(0,Math.min(3-V.liveControllers.size,4-V.liveControllers.size-V.runControllers.size-!!V.events.controller));r.slice(0,i).forEach((e,t)=>jt(e,t*250))}function jt(e,t){let n=new AbortController;V.liveControllers.set(e,n);let r=async()=>{V.liveTimers.delete(e),z(e,e=>e??B(`loading`));try{let t=await A.getLiveDetail(e,n.signal);if(n.signal.aborted||V.liveControllers.get(e)!==n)return;V.liveNextAt.set(e,Date.now()+We);let{pending:r}=P.getState(),i=t.approvals.filter(t=>!r[R(`approve`,e,t.id)]);z(e,()=>({status:`ready`,approvals:i,error:t.error,activity:t.activity,startedAt:t.startedAt,fetchedAt:Date.now(),failures:0}))}catch{if(n.signal.aborted||V.liveControllers.get(e)!==n)return;let t=(P.getState().live[e]?.failures??0)+1;V.liveNextAt.set(e,Date.now()+Math.min(We*2**t,Ge)),z(e,e=>({...e??B(`error`),status:e?.approvals.length?e.status:`error`,failures:t}))}finally{V.liveControllers.get(e)===n&&V.liveControllers.delete(e)}};t<=0?r():V.liveTimers.set(e,setTimeout(()=>void r(),t))}var Mt=class extends Error{code=`board_run_active`},Nt=0;function Pt(e,t){return e===t?!0:!e||!t||e.type!==t.type?!1:e.type===`model`?e.stage===t.stage:e.name===t.name&&e.summary===t.summary}function Q(e,t,n){P.setState(r=>{let i=r.localRuns[e];return!i||i.token!==t||(n.activity===void 0||Pt(i.activity,n.activity))&&(n.runId===void 0||n.runId===i.runId)?r:{localRuns:{...r.localRuns,[e]:{...i,...n}}}})}function Ft(e,t,n,r){if(n===`run`)Q(e,t,{runId:typeof r.runId==`string`?r.runId:``});else if(n===`tool_start`){let n=typeof r.name==`string`?r.name:``;n&&Q(e,t,{activity:{type:`tool`,name:n,summary:pe(n,r.args),startedAt:typeof r.startedAt==`string`?r.startedAt:new Date().toISOString()}})}else if(n===`tool_end`||n===`thinking_patch`||n===`thinking_reset`)Q(e,t,{activity:{type:`model`,stage:`thinking`}});else if(n===`text_delta`||n===`text_patch`)Q(e,t,{activity:{type:`model`,stage:`responding`}});else if(n===`permission_request`){let t=he(r);t&&ot(e,t),o(`sessions`)}else n===`permission_resolved`&&(typeof r.id==`string`&&at(e,r.id),o(`sessions`))}function It(){let e=V.runControllers.size-2;for(let[t,n]of V.runControllers){if(e<=0)return;n.accepted&&(V.runControllers.delete(t),n.controller.abort(),--e)}}function Lt(e,t,n){if(V.runControllers.has(e))return Promise.reject(new Mt);let r=new AbortController,i=++Nt,a={controller:r,accepted:!1};V.runControllers.set(e,a),It();let o=Date.now();return P.setState(n=>({localRuns:{...n.localRuns,[e]:{token:i,kind:t,runId:``,startedAt:o,activity:{type:`model`,stage:`starting`}}}})),new Promise((t,o)=>{let s=()=>{a.accepted||(a.accepted=!0,It(),t())};n((t,n)=>{if(r.signal.aborted)return!1;t===`run`&&s(),Ft(e,i,t,n)},r.signal).then(s,e=>{a.accepted||o(e)}).finally(()=>{V.runControllers.get(e)===a&&V.runControllers.delete(e),P.setState(t=>{if(t.localRuns[e]?.token!==i)return t;let n={...t.localRuns};return delete n[e],{localRuns:n}}),V.active&&(V.mode===`legacy`?F().catch(()=>void 0):I().view&&(V.mode===`view`||!V.events.controller)&&K(),Z())})})}var Rt=e(t(),1);function zt(){(0,Rt.useEffect)(()=>Ct(),[])}function Bt(e){let t=e.queue;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t;return{startAfter:typeof n.startAfter==`string`?n.startAfter:``,position:typeof n.position==`number`&&Number.isSafeInteger(n.position)&&n.position>0?n.position:null}}var Vt=120;function Ht(e){if(!e)return null;let t=Date.parse(e);return Number.isFinite(t)?t:null}function $(e){let t=typeof e.name==`string`?e.name.trim():``;if(t)return D(t,Vt);let n=typeof e.firstMessage==`string`?e.firstMessage.trim():``,r=n.search(/[。!?!?\n]|\.\s/u);return D((r<0?n:n.slice(0,n[r]===`
2
2
  `?r:r+1)).trim(),Vt)}function Ut(e){return e.length?e.some(e=>e.severity===`critical`)?`critical`:`standard`:null}function Wt(e,t){if(!t?.approvals.length||!e.approvals.some(e=>e.truncated))return e.approvals;let n=new Map(t.approvals.map(e=>[e.id,e]));return e.approvals.map(e=>e.truncated?n.get(e.id)??e:e)}function Gt(e,t){return!!e[t]?.some(e=>e.patch.streaming===!0)}function Kt(e,t){let n=t.feed;if(!n?.ready)return e.filter(e=>e&&typeof e.id==`string`&&e.id).map(e=>({session:e,card:null}));let r=Object.values(n.entries).map(e=>({session:e.session,card:e.card}));for(let i of e)!i||typeof i.id!=`string`||!i.id||n.entries[i.id]||(t.localRuns[i.id]||Gt(t.patches,i.id))&&r.push({session:i,card:null});return r}function qt(e,t,{now:n,capabilities:r,doneWindow:i=`today`,timeZoneOffsetMinutes:a}){let o=[],s=t.pending??{},c=Kt(e,t),l=new Map;for(let t of e)t?.id&&l.set(t.id,$(t));for(let{session:e}of c)l.set(e.id,$(e));for(let{session:e,card:u}of c){let c=L(e,t.patches),d=t.localRuns[c.id],f=t.live[c.id],p=d?.startedAt??Ht(u?.startedAt)??Ht(f?.startedAt),m=u?Wt(u,f).filter(e=>!s[R(`approve`,c.id,e.id)]):null,h=m?.length?m:f?.approvals,g=_({...c,startedAt:p??t.runningSince[c.id]??null,approvals:h,card:u?{outcome:u.outcome??void 0}:void 0},{now:n,capabilities:r,doneWindow:i,timeZoneOffsetMinutes:a});if(!g.lane)continue;let v=g.status===`approval`?h??[]:[],y=v[0],ee=g.status===`approval`?y&&!y.truncated?`ready`:f?.status===`error`?`error`:`loading`:`none`,b=g.lane===`running`,x=g.status===`failed`,S=g.status===`question`?re(c.question):null;o.push({id:c.id,session:c,title:$(c),cwd:typeof c.cwd==`string`?c.cwd:``,workspaceKey:ne(c),projectCwd:te(c),lane:g.lane,status:g.status,handled:g.handled,since:g.since,startedAt:b?p:null,pinned:c.pinned===!0,unread:c.unread===!0,approvals:v,approvalsState:ee,severity:Ut(v),activity:b?d?.activity??u?.activity??f?.activity??null:null,error:x&&(u?.error?.message||f?.error)||``,localRun:!!d,hasCard:!!u,tail:u&&(b||x)?u.tail:[],preview:u&&g.lane===`done`&&!x?u.preview:``,changeStats:u?.changeStats??null,contextPct:u?.contextPct??null,agents:u?.agents??null,question:S,questionCount:S?S.questions.length:null,totalTokens:u?.totalTokens??null,...u?.bot?{bot:u.bot}:{},...Jt(g.lane,c,l)})}return o.sort(y)}function Jt(e,t,n){let r=e===`queued`?Bt(t):null;return{queuePosition:r?.position??null,queue:r?{startAfter:r.startAfter,startAfterTitle:n.get(r.startAfter)??``}:null}}function Yt(e,{lanes:t,projects:n}){let r=t?.length?new Set(t):null,i=n?.length?new Set(n):null;return!r&&!i?[...e]:e.filter(e=>(!r||r.has(e.lane))&&(!i||i.has(e.workspaceKey)))}function Xt(e){let t=Object.fromEntries(v.map(e=>[e,[]]));for(let n of e)t[n.lane].push(n);return t}function Zt(e){let t=new Map;for(let n of e){let e=t.get(n.workspaceKey);e?e.count+=1:t.set(n.workspaceKey,{key:n.workspaceKey,cwd:n.projectCwd,count:1})}return[...t.values()]}function Qt(e,t){let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.key)??2**53-1)-(n.get(t.key)??2**53-1)||t.count-e.count)}function $t(){return zt(),i(c(`sessions`))}export{at as C,A as D,P as E,Et as S,ct as T,tt as _,Yt as a,rt as b,zt as c,et as d,nt as f,lt as g,Qe as h,qt as i,N as l,st as m,Zt as n,Xt as o,R as p,$ as r,Qt as s,$t as t,Mt as u,Xe as v,ot as w,Lt as x,Ye as y};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{f as r}from"./routes-DIeaqWVc.js";import{t as i}from"./use-i18n-BVRhlQ1v.js";import{t as a}from"./ellipsis-CfGKfbq6.js";import{c as o,i as s,p as c,r as l,t as u}from"./dropdown-menu-Ds0gD8S8.js";import{t as d}from"./utils-C8uzG5AZ.js";import{f}from"./useNow-CfPk0uIz.js";import{t as p}from"./session-home-BmAnhROp.js";import{t as m}from"./motion-DTR4ZVle.js";import"./BotAvatar-CNL-APwP.js";var h=`pisper:overview-focus`;function g(e){window.dispatchEvent(new CustomEvent(h,{detail:{sessionId:e}}))}var _=n();function v({row:e,actions:t,canMarkHandled:n,open:r,onOpenChange:f,side:p,align:m=`start`,tabIndex:h,className:g}){let{t:v}=i();return(0,_.jsxs)(u,{open:r,onOpenChange:f,children:[(0,_.jsx)(c,{asChild:!0,children:(0,_.jsx)(`button`,{type:`button`,tabIndex:h,"aria-label":v(`board:sidebar.rowMenu`,{title:e.title}),className:d(`grid size-[26px] flex-none place-items-center rounded-[var(--r-sm)] text-content-muted transition-colors duration-(--d-fast) hover:bg-surface-active hover:text-content focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus`,g),children:(0,_.jsx)(a,{className:`size-4`,"aria-hidden":`true`})})}),(0,_.jsxs)(l,{align:m,side:p,className:`min-w-44`,children:[(0,_.jsx)(s,{onSelect:()=>t.open(e),children:v(`board:menu.open`)}),(0,_.jsx)(s,{onSelect:()=>t.pin(e),children:e.pinned?v(`board:menu.unpin`):v(`board:menu.pin`)}),(0,_.jsx)(s,{onSelect:()=>t.rename(e),children:v(`board:menu.rename`)}),n&&(0,_.jsx)(s,{onSelect:()=>t.markHandled(e),children:v(`board:menu.markHandled`)}),(0,_.jsx)(s,{onSelect:()=>t.copyLink(e),children:v(`board:menu.copyLink`)}),(0,_.jsx)(o,{}),(0,_.jsx)(s,{onSelect:()=>t.archive(e),children:v(`board:menu.archive`)})]})]})}function y(e,t){return t.map((t,n)=>t.kind===`failed`?e(`board:sidebar.reason.failed`):t.kind===`approval`?t.critical?e(`board:sidebar.reason.criticalApproval`):e(`board:sidebar.reason.approval`):t.count===null?e(`board:sidebar.reason.question`):e(n===0?`board:sidebar.reason.questions`:`board:sidebar.reason.questionCount`,{count:t.count})).join(` · `)}function b(e){if(e===null||!Number.isFinite(e))return``;let t=Math.max(0,Math.floor(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function x(e){if(e===null||!Number.isFinite(e))return``;let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=String(t%60).padStart(2,`0`);return n>0?`${n}:${String(r).padStart(2,`0`)}:${i}`:`${r}:${i}`}function S(e){if(e===null||!Number.isFinite(e))return``;let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function C(e,t){if(e===null||!Number.isFinite(e))return``;let n=new Date(e),r=new Date(t);return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()?S(e):`${n.getMonth()+1}/${n.getDate()}`}function w(){return!m()&&document.visibilityState!==`hidden`}function T(e,{duration:t,scale:n}){return!e||!w()||typeof e.animate!=`function`?Promise.resolve():(e.style.transformOrigin=`top center`,e.animate([{transform:`scaleY(1)`,opacity:1},{transform:`scaleY(${n})`,opacity:0}],{duration:t,easing:`ease-in`,fill:`forwards`}).finished.then(()=>void 0,()=>void 0))}var E=e(t(),1);function D(e){let{origin:t,pathname:n,search:i,hash:a}=window.location;return a.startsWith(`#/`)?`${t}${n}${i}#${r(e)}`:`${t}${r(e)}`}function O({notify:e,requestText:t,onOpenSession:n,onArchived:r}){let{t:a}=i(),o=f(),s=(0,E.useRef)(o);s.current=o;let c=(0,E.useCallback)(t=>{t.ok||t.reason===`pending`||e(a(`board:action.failed`),`error`)},[e,a]),l=(0,E.useCallback)(async n=>{let r=(await t({title:a(`board:sidebar.renameTitle`),inputLabel:a(`board:sidebar.renameLabel`),value:n.title,confirmLabel:a(`board:sidebar.renameSave`),maxLength:200}))?.trim();if(!r||r===n.title)return;let i=await s.current.rename(n.id,r);i.ok?e(a(`board:sidebar.renamed`)):c(i)},[e,c,t,a]);return(0,E.useMemo)(()=>({open:e=>n(e.id),pin:e=>void s.current.pin(e.id,!e.pinned).then(c),rename:e=>void l(e),markHandled:e=>void s.current.markHandled(e.id).then(c),copyLink:t=>{let n=typeof navigator<`u`?navigator.clipboard:void 0;if(!n){e(a(`board:action.copyFailed`),`error`);return}n.writeText(D(t.id)).then(()=>e(a(`board:action.copied`)),()=>e(a(`board:action.copyFailed`),`error`))},archive:t=>void s.current.archive(t.id,!0).then(n=>{if(!n.ok){c(n);return}e(a(`board:action.archived`,{title:t.title})),p(t.id),r?.(t.id)}),report:c}),[e,r,n,l,c,a])}export{C as a,y as c,g as d,x as i,v as l,T as n,S as o,w as r,b as s,O as t,h as u};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t,r as n}from"./vendor-react-DwNgTV1j.js";import{f as r}from"./routes-DIeaqWVc.js";import{t as i}from"./use-i18n-AM3jlRYR.js";import{t as a}from"./ellipsis-CfGKfbq6.js";import{c as o,i as s,p as c,r as l,t as u}from"./dropdown-menu-Ds0gD8S8.js";import{t as d}from"./utils-C8uzG5AZ.js";import{f}from"./useNow-BUhFR4QI.js";import{t as p}from"./session-home-DY7RkKbH.js";import{t as m}from"./motion-DTR4ZVle.js";import"./BotAvatar-CNL-APwP.js";var h=`pisper:overview-focus`;function g(e){window.dispatchEvent(new CustomEvent(h,{detail:{sessionId:e}}))}var _=n();function v({row:e,actions:t,canMarkHandled:n,open:r,onOpenChange:f,side:p,align:m=`start`,tabIndex:h,className:g}){let{t:v}=i();return(0,_.jsxs)(u,{open:r,onOpenChange:f,children:[(0,_.jsx)(c,{asChild:!0,children:(0,_.jsx)(`button`,{type:`button`,tabIndex:h,"aria-label":v(`board:sidebar.rowMenu`,{title:e.title}),className:d(`grid size-[26px] flex-none place-items-center rounded-[var(--r-sm)] text-content-muted transition-colors duration-(--d-fast) hover:bg-surface-active hover:text-content focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focus`,g),children:(0,_.jsx)(a,{className:`size-4`,"aria-hidden":`true`})})}),(0,_.jsxs)(l,{align:m,side:p,className:`min-w-44`,children:[(0,_.jsx)(s,{onSelect:()=>t.open(e),children:v(`board:menu.open`)}),(0,_.jsx)(s,{onSelect:()=>t.pin(e),children:e.pinned?v(`board:menu.unpin`):v(`board:menu.pin`)}),(0,_.jsx)(s,{onSelect:()=>t.rename(e),children:v(`board:menu.rename`)}),n&&(0,_.jsx)(s,{onSelect:()=>t.markHandled(e),children:v(`board:menu.markHandled`)}),(0,_.jsx)(s,{onSelect:()=>t.copyLink(e),children:v(`board:menu.copyLink`)}),(0,_.jsx)(o,{}),(0,_.jsx)(s,{onSelect:()=>t.archive(e),children:v(`board:menu.archive`)})]})]})}function y(e,t){return t.map((t,n)=>t.kind===`failed`?e(`board:sidebar.reason.failed`):t.kind===`approval`?t.critical?e(`board:sidebar.reason.criticalApproval`):e(`board:sidebar.reason.approval`):t.count===null?e(`board:sidebar.reason.question`):e(n===0?`board:sidebar.reason.questions`:`board:sidebar.reason.questionCount`,{count:t.count})).join(` · `)}function b(e){if(e===null||!Number.isFinite(e))return``;let t=Math.max(0,Math.floor(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}function x(e){if(e===null||!Number.isFinite(e))return``;let t=Math.max(0,Math.floor(e/1e3)),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=String(t%60).padStart(2,`0`);return n>0?`${n}:${String(r).padStart(2,`0`)}:${i}`:`${r}:${i}`}function S(e){if(e===null||!Number.isFinite(e))return``;let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}`}function C(e,t){if(e===null||!Number.isFinite(e))return``;let n=new Date(e),r=new Date(t);return n.getFullYear()===r.getFullYear()&&n.getMonth()===r.getMonth()&&n.getDate()===r.getDate()?S(e):`${n.getMonth()+1}/${n.getDate()}`}function w(){return!m()&&document.visibilityState!==`hidden`}function T(e,{duration:t,scale:n}){return!e||!w()||typeof e.animate!=`function`?Promise.resolve():(e.style.transformOrigin=`top center`,e.animate([{transform:`scaleY(1)`,opacity:1},{transform:`scaleY(${n})`,opacity:0}],{duration:t,easing:`ease-in`,fill:`forwards`}).finished.then(()=>void 0,()=>void 0))}var E=e(t(),1);function D(e){let{origin:t,pathname:n,search:i,hash:a}=window.location;return a.startsWith(`#/`)?`${t}${n}${i}#${r(e)}`:`${t}${r(e)}`}function O({notify:e,requestText:t,onOpenSession:n,onArchived:r}){let{t:a}=i(),o=f(),s=(0,E.useRef)(o);s.current=o;let c=(0,E.useCallback)(t=>{t.ok||t.reason===`pending`||e(a(`board:action.failed`),`error`)},[e,a]),l=(0,E.useCallback)(async n=>{let r=(await t({title:a(`board:sidebar.renameTitle`),inputLabel:a(`board:sidebar.renameLabel`),value:n.title,confirmLabel:a(`board:sidebar.renameSave`),maxLength:200}))?.trim();if(!r||r===n.title)return;let i=await s.current.rename(n.id,r);i.ok?e(a(`board:sidebar.renamed`)):c(i)},[e,c,t,a]);return(0,E.useMemo)(()=>({open:e=>n(e.id),pin:e=>void s.current.pin(e.id,!e.pinned).then(c),rename:e=>void l(e),markHandled:e=>void s.current.markHandled(e.id).then(c),copyLink:t=>{let n=typeof navigator<`u`?navigator.clipboard:void 0;if(!n){e(a(`board:action.copyFailed`),`error`);return}n.writeText(D(t.id)).then(()=>e(a(`board:action.copied`)),()=>e(a(`board:action.copyFailed`),`error`))},archive:t=>void s.current.archive(t.id,!0).then(n=>{if(!n.ok){c(n);return}e(a(`board:action.archived`,{title:t.title})),p(t.id),r?.(t.id)}),report:c}),[e,r,n,l,c,a])}export{C as a,y as c,g as d,x as i,v as l,T as n,S as o,w as r,b as s,O as t,h as u};
@@ -1 +1 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{c as n,i as r,t as i}from"./useNow-CfPk0uIz.js";var a=e(t(),1);function o(){let{query:e,items:t,capabilities:o,isLoading:s}=n(`today`),c=i(),l=(0,a.useMemo)(()=>r(t,{now:c,capabilities:o}),[o,t,c]),u=e.refetch,d=e.data?.sessions;return(0,a.useMemo)(()=>({model:l,items:t,sessions:d,capabilities:o,isLoading:s,error:e.error??null,refetch:()=>void u()}),[o,s,t,l,e.error,u,d])}export{o as t};
1
+ import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{i as t}from"./vendor-react-DwNgTV1j.js";import{c as n,i as r,t as i}from"./useNow-BUhFR4QI.js";var a=e(t(),1);function o(){let{query:e,items:t,capabilities:o,isLoading:s}=n(`today`),c=i(),l=(0,a.useMemo)(()=>r(t,{now:c,capabilities:o}),[o,t,c]),u=e.refetch,d=e.data?.sessions;return(0,a.useMemo)(()=>({model:l,items:t,sessions:d,capabilities:o,isLoading:s,error:e.error??null,refetch:()=>void u()}),[o,s,t,l,e.error,u,d])}export{o as t};
@@ -1 +1 @@
1
- import{t as e}from"./index-CiRnxTh1.js";import{a as t,i as n,o as r}from"./vendor-state-GkUciC5H.js";import{t as i}from"./createLucideIcon-Cd-3GVxJ.js";import{a,d as o,i as s,o as c}from"./session-workspaces-Brm-8lHh.js";var l=i(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]);function u(e){if(typeof e!=`string`)return``;let t=e.trim();if(!t||t.length>2048||t.includes(`\0`))return``;let n=/^(?:[A-Za-z]:)?[\\/]+$/u.test(t)?t:t.replace(/[\\/]+$/u,``),r=o(n);return r&&r!==`\0`?n:``}function d(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e){let e=u(r),i=e&&o(e);if(!(!i||t.has(i))&&(t.add(i),n.push(e),n.length>=50))break}return n}function f(e,t){let n=u(t);if(!n)return d(e);let r=o(n);return d([n,...e.filter(e=>o(e)!==r)])}function p(e,t){let n=o(t);return d(e.filter(e=>o(e)!==n))}function m(e,t){let n=new Set(t),r=[];for(let t of d(e)){let e=o(t);n.has(e)||(n.add(e),r.push({key:e,cwd:t}))}return r}var h=`pisper-registered-projects`,g=n(()=>({getItem:t=>{try{return e.getItem(t)}catch{return null}},setItem:(t,n)=>{try{e.setItem(t,n)}catch{}},removeItem:t=>{try{e.removeItem(t)}catch{}}}));function _(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}var v=r()(t((e,t)=>({projects:[],registerProject:n=>{let r=u(n);if(!r)return``;let i=t().projects,a=f(i,r);return _(a,i)||e({projects:a}),r},unregisterProject:n=>{let r=t().projects;return r.some(e=>o(e)===o(n))?(e({projects:p(r,n)}),!0):!1}}),{name:h,storage:g,version:1,partialize:({projects:e})=>({projects:e}),merge:(e,t)=>({...t,projects:d(e&&typeof e==`object`&&`projects`in e?e.projects:void 0)})}));function y(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function b(e){let t=o(e);return t&&t!==`\0`&&!t.includes(`\0`)?t:null}function x(e){let t=Object.create(null);if(!e||typeof e!=`object`||Array.isArray(e))return t;for(let[n,r]of Object.entries(e)){let e=b(n);if(!e||typeof r!=`string`)continue;let i=r.trim();i&&Array.from(i).length<=120&&(t[e]=i)}return t}var S=n(()=>e),C=r()(t((e,t)=>({order:[],names:x(void 0),rememberWorkspaces:n=>{let r=t().order,i=c(r,n);y(i,r)||e({order:i})},moveWorkspace:(n,r,i)=>{let a=t().order,o=s(a,i,n,r);y(o,a)||e({order:o})},setWorkspaceName:(n,r)=>{let i=typeof n==`string`?b(n):null;if(!i||typeof r!=`string`)throw TypeError(`Invalid workspace name`);let a=r.trim();if(Array.from(a).length>120)throw RangeError(`Workspace name is too long`);let o=t().names;if((o[i]||``)===a)return;if(!S)throw Error(`Workspace preferences storage is unavailable`);let s=x(o);a?s[i]=a:delete s[i];try{e({names:s})}catch(t){try{e({names:o})}catch{}throw t}}}),{name:`pisper-workspace-order`,storage:S,version:1,partialize:({order:e,names:t})=>({order:e,names:t}),merge:(e,t)=>({...t,order:a(e&&typeof e==`object`&&`order`in e?e.order:void 0),names:x(e&&typeof e==`object`&&`names`in e?e.names:void 0)})}));export{l as i,v as n,m as r,C as t};
1
+ import{t as e}from"./index-at6jiRd2.js";import{a as t,i as n,o as r}from"./vendor-state-GkUciC5H.js";import{t as i}from"./createLucideIcon-Cd-3GVxJ.js";import{a,d as o,i as s,o as c}from"./session-workspaces-Brm-8lHh.js";var l=i(`folder-plus`,[[`path`,{d:`M12 10v6`,key:`1bos4e`}],[`path`,{d:`M9 13h6`,key:`1uhe8q`}],[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]);function u(e){if(typeof e!=`string`)return``;let t=e.trim();if(!t||t.length>2048||t.includes(`\0`))return``;let n=/^(?:[A-Za-z]:)?[\\/]+$/u.test(t)?t:t.replace(/[\\/]+$/u,``),r=o(n);return r&&r!==`\0`?n:``}function d(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e){let e=u(r),i=e&&o(e);if(!(!i||t.has(i))&&(t.add(i),n.push(e),n.length>=50))break}return n}function f(e,t){let n=u(t);if(!n)return d(e);let r=o(n);return d([n,...e.filter(e=>o(e)!==r)])}function p(e,t){let n=o(t);return d(e.filter(e=>o(e)!==n))}function m(e,t){let n=new Set(t),r=[];for(let t of d(e)){let e=o(t);n.has(e)||(n.add(e),r.push({key:e,cwd:t}))}return r}var h=`pisper-registered-projects`,g=n(()=>({getItem:t=>{try{return e.getItem(t)}catch{return null}},setItem:(t,n)=>{try{e.setItem(t,n)}catch{}},removeItem:t=>{try{e.removeItem(t)}catch{}}}));function _(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}var v=r()(t((e,t)=>({projects:[],registerProject:n=>{let r=u(n);if(!r)return``;let i=t().projects,a=f(i,r);return _(a,i)||e({projects:a}),r},unregisterProject:n=>{let r=t().projects;return r.some(e=>o(e)===o(n))?(e({projects:p(r,n)}),!0):!1}}),{name:h,storage:g,version:1,partialize:({projects:e})=>({projects:e}),merge:(e,t)=>({...t,projects:d(e&&typeof e==`object`&&`projects`in e?e.projects:void 0)})}));function y(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function b(e){let t=o(e);return t&&t!==`\0`&&!t.includes(`\0`)?t:null}function x(e){let t=Object.create(null);if(!e||typeof e!=`object`||Array.isArray(e))return t;for(let[n,r]of Object.entries(e)){let e=b(n);if(!e||typeof r!=`string`)continue;let i=r.trim();i&&Array.from(i).length<=120&&(t[e]=i)}return t}var S=n(()=>e),C=r()(t((e,t)=>({order:[],names:x(void 0),rememberWorkspaces:n=>{let r=t().order,i=c(r,n);y(i,r)||e({order:i})},moveWorkspace:(n,r,i)=>{let a=t().order,o=s(a,i,n,r);y(o,a)||e({order:o})},setWorkspaceName:(n,r)=>{let i=typeof n==`string`?b(n):null;if(!i||typeof r!=`string`)throw TypeError(`Invalid workspace name`);let a=r.trim();if(Array.from(a).length>120)throw RangeError(`Workspace name is too long`);let o=t().names;if((o[i]||``)===a)return;if(!S)throw Error(`Workspace preferences storage is unavailable`);let s=x(o);a?s[i]=a:delete s[i];try{e({names:s})}catch(t){try{e({names:o})}catch{}throw t}}}),{name:`pisper-workspace-order`,storage:S,version:1,partialize:({order:e,names:t})=>({order:e,names:t}),merge:(e,t)=>({...t,order:a(e&&typeof e==`object`&&`order`in e?e.order:void 0),names:x(e&&typeof e==`object`&&`names`in e?e.names:void 0)})}));export{l as i,v as n,m as r,C as t};
package/web/index.html CHANGED
@@ -55,7 +55,7 @@
55
55
  document.documentElement.lang = storedLanguage === 'en-US' ? 'en-US' : 'zh-CN'
56
56
  } catch {}
57
57
  </script>
58
- <script type="module" crossorigin src="/assets/index-CiRnxTh1.js"></script>
58
+ <script type="module" crossorigin src="/assets/index-at6jiRd2.js"></script>
59
59
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-B0Z9INg1.js">
60
60
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-DwNgTV1j.js">
61
61
  <link rel="modulepreload" crossorigin href="/assets/vendor-router-CSN_DGvx.js">
@@ -1,34 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-B0Z9INg1.js";import{t}from"./index-CiRnxTh1.js";import{i as n}from"./vendor-react-DwNgTV1j.js";import{a as r,i,o as a}from"./vendor-state-GkUciC5H.js";import{t as o}from"./storage-DtvZ_lEu.js";function s(e){let t=String(e||``).trim().replace(/^#/,``);return/^[0-9a-fA-F]{6}$/.test(t)?`#${t.toLowerCase()}`:null}function c(e){return{r:parseInt(e.slice(1,3),16),g:parseInt(e.slice(3,5),16),b:parseInt(e.slice(5,7),16)}}function l({r:e,g:t,b:n}){let r=e=>Math.round(Math.min(255,Math.max(0,e))).toString(16).padStart(2,`0`);return`#${r(e)}${r(t)}${r(n)}`}function u(e,t,n){return l({r:e.r+(t.r-e.r)*n,g:e.g+(t.g-e.g)*n,b:e.b+(t.b-e.b)*n})}var d={r:255,g:255,b:255},f={r:24,g:24,b:27};function p({r:e,g:t,b:n},r){return`rgba(${e}, ${t}, ${n}, ${r})`}function m(e){let t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4}function h({r:e,g:t,b:n}){return .2126*m(e)+.7152*m(t)+.0722*m(n)}function g(e,t){let n=h(e),r=h(t),i=Math.max(n,r),a=Math.min(n,r);return(i+.05)/(a+.05)}function _(e){return g(e,d)>=4.5?`#ffffff`:g(e,f)>=4.5?`#18181b`:`#000000`}function v(e,t,n){let r=c(t);return u(e,g(r,d)>g(r,f)?d:f,n)}function y(e){for(let t=.22;t<=1;t+=.04){let n=u(e,f,t);if(g(c(n),d)>=4.5)return n}return`#18181b`}function b(e){for(let t=.46;t<=1;t+=.04){let n=u(e,d,t);if(g(c(n),f)>=4.5)return n}return`#fff`}function x(e){let t=c(e),n=_(t),r=v(t,n,.12),i=y(t),a=u(t,d,.93),o=u(t,d,.72),s=u(t,d,.22),l=b(t),f=c(s),m=_(f),h=v(f,m,.14);return`:root[data-accent='custom'] {
2
- --star: ${e};
3
- --star-hover: ${r};
4
- --star-strong: ${i};
5
- --star-soft: ${a};
6
- --star-border: ${o};
7
- --on-accent: ${n};
8
- --accent-fg: ${i};
9
- --brand-blue: ${e};
10
- --brand-blue-hover: ${r};
11
- --brand-blue-strong: ${i};
12
- --brand-blue-soft: ${a};
13
- --brand-blue-border: ${o};
14
- --accent-ring: ${p(t,.16)};
15
- --focus: ${i};
16
- --focus-ring: ${p(t,.18)};
17
- }
18
- :root[data-theme='dark'][data-accent='custom'] {
19
- --star: ${s};
20
- --star-hover: ${h};
21
- --star-strong: ${l};
22
- --star-soft: ${p(f,.15)};
23
- --star-border: ${p(f,.38)};
24
- --on-accent: ${m};
25
- --accent-fg: ${l};
26
- --brand-blue: ${s};
27
- --brand-blue-hover: ${h};
28
- --brand-blue-strong: ${l};
29
- --brand-blue-soft: ${p(f,.15)};
30
- --brand-blue-border: ${p(f,.34)};
31
- --accent-ring: ${p(f,.22)};
32
- --focus: ${l};
33
- --focus-ring: ${p(f,.26)};
34
- }`}var S={default:14,min:11,max:16},C={default:12,min:8,max:24},w={small:13.5,default:14,large:14.5};function T(e,t){return typeof e==`number`&&Number.isFinite(e)?Math.min(t.max,Math.max(t.min,e)):t.default}function E(e){let t=e&&typeof e==`object`?e:{},n=`fontScale`in t?t.fontScale:void 0,r=typeof n==`string`&&Object.hasOwn(w,n)?w[n]:S.default;return{uiFontSize:T(`uiFontSize`in t?t.uiFontSize:r,S),codeFontSize:T(`codeFontSize`in t?t.codeFontSize:void 0,C)}}function D(e){return e<S.default?`small`:e>S.default?`large`:`default`}function O(e,t){if(!/^\d+$/.test(e.trim()))return null;let n=Number(e),r=t===`ui`?S:C;return Number.isInteger(n)&&n>=r.min&&n<=r.max?n:null}var k={theme:`system`,density:`comfortable`,accent:`neutral`,customAccent:`#3d4bef`,fontScale:`default`,uiFontSize:S.default,codeFontSize:C.default,radius:`default`,motion:`system`},A=`blue`,j=[`system`,`dark`,`light`],M=[`system`,`scheduled`,`light`,`dark`];function N(e){return j[(j.indexOf(e)+1)%j.length]}function P(e){if(!e||typeof e!=`object`||Array.isArray(e))return{};let{sidebarCollapsed:t,sidebarWidth:n,...r}=e;return r}var ee=a()(r(e=>({...k,setTheme:t=>e({theme:t}),cycleTheme:()=>e(e=>({theme:N(e.theme)})),setDensity:t=>e({density:t}),setAccent:t=>e({accent:t}),setCustomAccent:t=>e({accent:`custom`,customAccent:t}),setFontScale:t=>e({fontScale:t,uiFontSize:w[t]}),setUiFontSize:t=>{let{uiFontSize:n}=E({uiFontSize:t});e({uiFontSize:n,fontScale:D(n)})},setCodeFontSize:t=>e({codeFontSize:E({codeFontSize:t}).codeFontSize}),setRadius:t=>e({radius:t}),setMotion:t=>e({motion:t}),resetAppearance:()=>e(k)}),{name:`pisper-ui`,storage:i(()=>t),version:3,migrate:(e,t)=>{let n=P(e);return{...k,...n,...E(n),accent:t<3&&(n.accent===`neutral`||n.accent===void 0)?A:n.accent??k.accent,theme:t===0&&n.theme===`system`?`scheduled`:n.theme??`system`}},partialize:({theme:e,density:t,accent:n,customAccent:r,fontScale:i,uiFontSize:a,codeFontSize:o,radius:s,motion:c})=>({theme:e,density:t,accent:n,customAccent:r,fontScale:i,uiFontSize:a,codeFontSize:o,radius:s,motion:c}),merge:(e,t)=>{let n=e===void 0?void 0:P(e),r=localStorage.getItem(o.theme),i=localStorage.getItem(o.density);return{...t,...n,theme:n?.theme??(r===`system`?`scheduled`:M.includes(r)?r:t.theme),density:n?.density??(i===`compact`?`compact`:t.density),accent:n?.accent??t.accent,customAccent:n?.customAccent??t.customAccent,...E(n),fontScale:D(E(n).uiFontSize),radius:n?.radius??t.radius,motion:n?.motion??t.motion}}})),te=(0,e(n(),1).createContext)(null),F=`pisperNavigationId`;function I(e,t){return e.pathname!==t.pathname||e.search!==t.search}function L(e){let t=[...e];return{dirty:t.some(e=>e.dirty),saving:t.some(e=>e.saving)}}var R=[`chime`,`marimba`,`drop`,`bell`,`low`];function z(e){return R.some(t=>t===e)}var B={chime:[{at:0,duration:.5,frequency:987.77},{at:.16,duration:.7,frequency:1318.51}],marimba:[{at:0,duration:.22,frequency:783.99,type:`triangle`},{at:.1,duration:.22,frequency:987.77,type:`triangle`},{at:.2,duration:.45,frequency:1174.66,type:`triangle`}],drop:[{at:0,duration:.28,frequency:1600,slideTo:520,gain:.9}],bell:[{at:0,duration:1.2,frequency:880},{at:0,duration:.9,frequency:880*2.76,gain:.25},{at:0,duration:.6,frequency:4752,gain:.12}],low:[{at:0,duration:.3,frequency:392,type:`square`,gain:.35},{at:.2,duration:.5,frequency:293.66,type:`square`,gain:.35}]},V=null,H=!1;function U(){if(typeof window>`u`)return null;let e=window;return e.AudioContext||e.webkitAudioContext||null}function W(){if(V)return V;let e=U();if(!e)return null;try{V=new e}catch{return null}return V}function G(){if(H||typeof window>`u`)return()=>{};H=!0;let e=()=>{let t=W();t&&t.state===`suspended`&&t.resume().catch(()=>{}),window.removeEventListener(`pointerdown`,e,!0),window.removeEventListener(`keydown`,e,!0)};return window.addEventListener(`pointerdown`,e,!0),window.addEventListener(`keydown`,e,!0),()=>{H=!1,window.removeEventListener(`pointerdown`,e,!0),window.removeEventListener(`keydown`,e,!0)}}function K(e,t=70){let n=W();if(!n||(n.state===`suspended`&&n.resume().catch(()=>{}),n.state!==`running`&&n.state!==`suspended`))return!1;let r=Math.max(0,Math.min(100,t))/100;if(!r)return!1;let i=n.currentTime+.02,a=n.createGain();a.gain.value=.35*r,a.connect(n.destination);let o=i;for(let t of B[e]){let e=i+t.at,r=e+t.duration,s=n.createOscillator(),c=n.createGain();s.type=t.type||`sine`,s.frequency.setValueAtTime(t.frequency,e),t.slideTo&&s.frequency.exponentialRampToValueAtTime(t.slideTo,r),c.gain.setValueAtTime(1e-4,e),c.gain.exponentialRampToValueAtTime(t.gain??1,e+.005),c.gain.exponentialRampToValueAtTime(1e-4,r),s.connect(c),c.connect(a),s.start(e),s.stop(r+.02),o=Math.max(o,r)}return window.setTimeout(()=>a.disconnect(),Math.ceil((o-n.currentTime+.1)*1e3)),!0}var q=[`waiting`,`finished`,`failed`],J=Object.freeze({enabled:!0,volume:70,whileFocused:!0,sounds:Object.freeze({waiting:`chime`,finished:`marimba`,failed:`low`})});function Y(e,t){return e===`none`||z(e)?e:t}function X(e){let t=J,n=e;if(typeof e==`string`)try{n=JSON.parse(e)}catch{n=null}let r=n&&typeof n==`object`&&!Array.isArray(n)?n:{},i=r.sounds&&typeof r.sounds==`object`&&!Array.isArray(r.sounds)?r.sounds:{},a=Number(r.volume);return{enabled:typeof r.enabled==`boolean`?r.enabled:t.enabled,volume:Number.isFinite(a)?Math.round(Math.max(0,Math.min(100,a))):t.volume,whileFocused:typeof r.whileFocused==`boolean`?r.whileFocused:t.whileFocused,sounds:{waiting:Y(i.waiting,t.sounds.waiting),finished:Y(i.finished,t.sounds.finished),failed:Y(i.failed,t.sounds.failed)}}}function Z(){try{return X(t.getItem(o.notificationSounds))}catch{return X(null)}}var ne=a((e,n)=>{let r=n=>{e(n);try{t.setItem(o.notificationSounds,JSON.stringify(n))}catch{}},i=()=>{let{enabled:e,volume:t,whileFocused:r,sounds:i}=n();return{enabled:e,volume:t,whileFocused:r,sounds:i}};return{...Z(),update:e=>r(X({...i(),...e})),setSound:(e,t)=>r(X({...i(),sounds:{...i().sounds,[e]:t}}))}});function Q(){return window.__TAURI__?.core?.invoke??window.__TAURI_INTERNALS__?.invoke}function re(){return typeof window<`u`&&!!Q()}function $(e,t){let n=Q();return n?n(e,t):Promise.reject(Error(`Tauri IPC is unavailable.`))}async function ie(){return $(`plugin:notification|is_permission_granted`)}async function ae(){return $(`plugin:notification|request_permission`)}async function oe(e,t){return $(`plugin:notification|notify`,{options:{title:e,body:t}})}var se=`https://github.com/ling-kong-ran/pisper/releases`,ce=`release`;export{s as C,x as S,ee as _,oe as a,E as b,ne as c,K as d,F as f,k as g,L as h,ie as i,R as l,I as m,se as n,ae as o,te as p,re as r,q as s,ce as t,G as u,C as v,O as x,S as y};
@@ -1 +0,0 @@
1
- var e;function t(e={}){return{windowRef:e.windowRef||(typeof window<`u`?window:void 0),navigatorRef:e.navigatorRef||(typeof navigator<`u`?navigator:void 0)}}function n(e={}){let{windowRef:n}=t(e),r=n?.Notification;return r?r.permission:`unsupported`}async function r(e={}){let{windowRef:n}=t(e),r=n?.Notification;return r?r.permission==="default"?r.requestPermission():r.permission:`unsupported`}async function i(n={}){let{windowRef:r,navigatorRef:i}=t(n),a=i?.serviceWorker;return!r?.isSecureContext||!a?null:((!e||n.forceRegistration)&&(e=a.register(`/notification-sw.js`,{scope:`/`}).then(()=>a.ready).catch(t=>{throw e=void 0,t})),e)}async function a({title:e,body:n=``,tag:r=``,url:a=``},o={}){let{windowRef:s}=t(o),c=s?.Notification;if(!s||!c)throw Error(`当前浏览器不支持系统通知。`);if(c.permission!==`granted`)throw Error(`通知权限未授权,请在浏览器站点设置中允许通知。`);let l=await i(o),u={body:String(n||``),tag:String(r||``),data:{url:String(a||s.location?.href||`/`)}};if(l?.showNotification)return await l.showNotification(String(e||`Pisper`),u),{shown:!0,transport:`service-worker`};let d=new c(String(e||`Pisper`),u);return d.onclick=()=>{s.focus?.(),d.close()},{shown:!0,transport:`window`}}export{a as i,i as n,r,n as t};