@wrongstack/webui 1.0.0 → 1.0.3

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 (124) hide show
  1. package/dist/assets/AgentRosterView-BVjk_vTm.js +12 -0
  2. package/dist/assets/AnalyticsDashboard-cR9JJBI8.js +1 -0
  3. package/dist/assets/AudienceMemoryPanel-DyP-vZA-.js +3 -0
  4. package/dist/assets/ChangesView-DY2KWV9y.js +1 -0
  5. package/dist/assets/{ChimeraReviewsView-CpfSkgQ2.js → ChimeraReviewsView-nLzoGYHL.js} +1 -1
  6. package/dist/assets/ChronicleDashboard-D4O8L9vh.js +1 -0
  7. package/dist/assets/CodeEditor-BZCXLxnq.js +2 -0
  8. package/dist/assets/CodeMap-CBAbAWkc.js +1 -0
  9. package/dist/assets/CronJobsPanel-xM7j0r4p.js +1 -0
  10. package/dist/assets/{DeadCodeScanPanel-Cn5bSfLv.js → DeadCodeScanPanel-DWsSzjSp.js} +1 -1
  11. package/dist/assets/{DebugDashboard-Uh9QLbEk.js → DebugDashboard-D9DoHsUb.js} +1 -1
  12. package/dist/assets/DesignGalleryView-C2SBhANT.js +1 -0
  13. package/dist/assets/{GoalView-BgVxzzzS.js → GoalView-u24_HH2B.js} +1 -1
  14. package/dist/assets/KanbanView-BfrSarZw.js +3 -0
  15. package/dist/assets/MailboxDetailView-POq0LIQF.js +1 -0
  16. package/dist/assets/{MemoryDrawer-C5sEdVvj.js → MemoryDrawer-B4aW4mVs.js} +1 -1
  17. package/dist/assets/MemoryManager-BAe2zkyG.js +1 -0
  18. package/dist/assets/ProcessMonitor-9clcCd5a.js +1 -0
  19. package/dist/assets/{PromptJournalView-B65KxlYi.js → PromptJournalView-DiinN7LV.js} +1 -1
  20. package/dist/assets/QueuePanel-DxHkfNun.js +1 -0
  21. package/dist/assets/RefreshDebugView-DuRu5_AZ.js +1 -0
  22. package/dist/assets/{RequirementIntakeView-BnrQSVE_.js → RequirementIntakeView-BE1ZpNh1.js} +1 -1
  23. package/dist/assets/SageTabs-DdwqvEQL.js +2 -0
  24. package/dist/assets/{SddFlowGraph-CNOyn5N9.js → SddFlowGraph-DcUtqxxR.js} +1 -1
  25. package/dist/assets/SddHub-DYCzKYUr.js +2 -0
  26. package/dist/assets/SessionInspectView-d9NH-E5d.js +1 -0
  27. package/dist/assets/SessionList-DP_TUCns.js +1 -0
  28. package/dist/assets/SessionsDashboard-CvlpSVyY.js +1 -0
  29. package/dist/assets/SetupScreen-3_DYzzKv.js +1 -0
  30. package/dist/assets/SkillDetailView-BTuq1wJm.js +3 -0
  31. package/dist/assets/TechStackView-CQHW3en0.js +2 -0
  32. package/dist/assets/TerminalPanel-BWr1bOrP.js +1 -0
  33. package/dist/assets/{activity-Dt348P4m.js → activity-C-Y-_UKp.js} +1 -1
  34. package/dist/assets/{activity-CCW2-qSA.js → activity-CwnkusGI.js} +1 -1
  35. package/dist/assets/{activity-CXLMCm4J.js → activity-D4XDbREq.js} +1 -1
  36. package/dist/assets/{activity-CmzV075e.js → activity-DSr_k7lf.js} +1 -1
  37. package/dist/assets/{activity-D2D6_ljD.js → activity-IxF62i-n.js} +1 -1
  38. package/dist/assets/{activity-FxWZooaS.js → activity-NKeG9bGy.js} +1 -1
  39. package/dist/assets/{activity-87Kr1xrI.js → activity-sgjix1RN.js} +1 -1
  40. package/dist/assets/{button-rqi3MczV.js → button-BIFXNDDY.js} +1 -1
  41. package/dist/assets/{css.worker-DRH2OcAG.js → css.worker-NNelxtRr.js} +6 -6
  42. package/dist/assets/{dialog-xJxaQi60.js → dialog-DT8I6gze.js} +1 -1
  43. package/dist/assets/{empty-state-BxilAuC3.js → empty-state-DtseAzny.js} +1 -1
  44. package/dist/assets/{html.worker-DQLddT9h.js → html.worker-B4rXkk6r.js} +6 -6
  45. package/dist/assets/i18n-Dq2jJcme.js +2 -0
  46. package/dist/assets/index-CbwgQF8l.js +176 -0
  47. package/dist/assets/index-Cg_zbV9k.css +1 -0
  48. package/dist/assets/{input-ClZR-odw.js → input-DE1O73TJ.js} +1 -1
  49. package/dist/assets/{json.worker-D_Dqrls5.js → json.worker-izi4BK3w.js} +4 -4
  50. package/dist/assets/{markdown-BP6Z3HKc.js → markdown-BzXmcdZg.js} +15 -15
  51. package/dist/assets/{monaco-_kWjHrlo.js → monaco-LhToOuuW.js} +59 -59
  52. package/dist/assets/{monaco-theme-Dmx6JuoU.js → monaco-theme-BOzs6u2L.js} +1 -1
  53. package/dist/assets/{react-core-BNmTiJ-I.js → react-core-D0Ec-185.js} +1 -1
  54. package/dist/assets/{roster-ws-n_N7K9tX.js → roster-ws--cUKX8Eo.js} +1 -1
  55. package/dist/assets/{shared-D8dubdNH.js → shared-k2sZgl6A.js} +1 -1
  56. package/dist/assets/{ts.worker-DkYoA6bF.js → ts.worker-Dj4vg72D.js} +114 -114
  57. package/dist/assets/{ui-store-CLXDcLPI.js → ui-store-BPQ-dcnY.js} +1 -1
  58. package/dist/assets/{utils-BpBOwXlT.js → utils-CmY0Pw1m.js} +1 -1
  59. package/dist/assets/{vector-memory-panel-BwPPCCbh.js → vector-memory-panel-UsWhpyqi.js} +1 -1
  60. package/dist/assets/vendor-DcnGbJ82.js +125 -0
  61. package/dist/assets/ws-client-DitX7fid.js +22 -0
  62. package/dist/assets/xterm-DA3G7037.js +16 -0
  63. package/dist/assets/xyflow-BlkaZTzI.js +7 -0
  64. package/dist/components/CodeMapVisuals.d.ts +10 -0
  65. package/dist/components/CustomRosterPanel.d.ts +1 -0
  66. package/dist/components/QuotaChip.d.ts +21 -0
  67. package/dist/components/SettingsPanel/OAuthLoginSection.d.ts +4 -5
  68. package/dist/components/codemap-model.d.ts +21 -1
  69. package/dist/hooks/ws-handlers/session-execution-handlers.d.ts +8 -0
  70. package/dist/hooks/ws-handlers/session-handlers.d.ts +1 -1
  71. package/dist/index.html +13 -22
  72. package/dist/index.js +2127 -1665
  73. package/dist/lib/bug-hunt-message.d.ts +3 -0
  74. package/dist/lib/ws-client-domain-methods.d.ts +14 -3
  75. package/dist/stores/bug-hunt-run-store.d.ts +44 -0
  76. package/dist/stores/index.d.ts +3 -0
  77. package/dist/stores/provider-quota-store.d.ts +69 -0
  78. package/dist/stores/types.d.ts +1 -0
  79. package/dist/types/client-message.d.ts +4 -0
  80. package/dist/types/protocol-core.d.ts +13 -0
  81. package/dist/types/server-message.d.ts +4 -4
  82. package/dist/types/system.d.ts +18 -1
  83. package/package.json +9 -9
  84. package/dist/assets/AgentRosterView-B_J6SvVF.js +0 -12
  85. package/dist/assets/AnalyticsDashboard-BgZiiiDb.js +0 -1
  86. package/dist/assets/AudienceMemoryPanel-CPuksIMN.js +0 -3
  87. package/dist/assets/ChangesView-CmZeNwbw.js +0 -1
  88. package/dist/assets/ChronicleDashboard-B6lhZGjz.js +0 -1
  89. package/dist/assets/CodeEditor-Daz1yqjF.js +0 -2
  90. package/dist/assets/CodeMap-D-H9FNUJ.js +0 -1
  91. package/dist/assets/ConfirmModal-CjsZbvo3.js +0 -1
  92. package/dist/assets/CronJobsPanel-DGKW_zwc.js +0 -1
  93. package/dist/assets/DesignGalleryView-Da1QtI5b.js +0 -1
  94. package/dist/assets/KanbanView-_JvZKFyI.js +0 -3
  95. package/dist/assets/MailboxDetailView-26bVSSbU.js +0 -1
  96. package/dist/assets/MemoryManager-BqWzNt8w.js +0 -1
  97. package/dist/assets/ModelPicker-DqRzzv5J.js +0 -1
  98. package/dist/assets/ProcessMonitor-ygFLD5zk.js +0 -1
  99. package/dist/assets/QueuePanel-CJlIV0pX.js +0 -1
  100. package/dist/assets/RefreshDebugView-CNovrSAn.js +0 -1
  101. package/dist/assets/SageTabs-CJqOqiY7.js +0 -2
  102. package/dist/assets/SddHub-mFjsa_Zl.js +0 -2
  103. package/dist/assets/SessionInspectView-MEmxIEzB.js +0 -1
  104. package/dist/assets/SessionList-DmcQJmzw.js +0 -1
  105. package/dist/assets/SessionsDashboard-BCYViJlx.js +0 -1
  106. package/dist/assets/SetupScreen-BwnSJt7v.js +0 -1
  107. package/dist/assets/SkillDetailView-ebz2dRUQ.js +0 -3
  108. package/dist/assets/TechStackView-DESDpUDA.js +0 -2
  109. package/dist/assets/TerminalPanel-BiWnldbB.js +0 -1
  110. package/dist/assets/chat-store-BcfvHUUj.js +0 -1
  111. package/dist/assets/codemap-activity-store-CWi-Yd9Z.js +0 -1
  112. package/dist/assets/codemap-index-store-3M7F08K_.js +0 -1
  113. package/dist/assets/i18n-DBqM1FUM.js +0 -2
  114. package/dist/assets/index-CWYymMpa.css +0 -1
  115. package/dist/assets/index-TDhvFXb0.js +0 -144
  116. package/dist/assets/mailbox-store-yydAVjyj.js +0 -1
  117. package/dist/assets/stores-Cfei1ViB.js +0 -7
  118. package/dist/assets/useWebSocket-AYEcpb1U.js +0 -27
  119. package/dist/assets/vendor-BshlG0z-.js +0 -125
  120. package/dist/assets/view-navigation-CvWJeGMc.js +0 -1
  121. package/dist/assets/ws-client-C_IqS0t4.js +0 -22
  122. package/dist/assets/xterm-BWzBEEhg.js +0 -18
  123. package/dist/assets/xyflow-BNn76cbK.js +0 -7
  124. /package/dist/assets/{settings-D9AQ5wLT2.js → settings-D9AQ5wLT.js} +0 -0
@@ -1 +0,0 @@
1
- import{Ma as e}from"./vendor-BshlG0z-.js";var t=100,n=50,r=216e5,i=`@session:`;function a(e){if(e===`*`||e===`all`)return{scope:`project`};if(e.startsWith(i)){let t=e.slice(9);return t.length===0?{scope:`agent`}:{scope:`session`,recipientSessionId:t}}return{scope:`agent`}}var o=e()(e=>({messages:[],agents:[],lastCompaction:null,setMessages:n=>e({messages:n.map(e=>{if(e.scope!==void 0)return e;let t=a(e.to);return{...e,...t}}).sort((e,t)=>(Date.parse(t.timestamp)||0)-(Date.parse(e.timestamp)||0)).slice(0,t)}),setAgents:t=>e(()=>{let e=Date.now()-r,i=t.filter(t=>{if(t.online)return!0;let n=Date.parse(t.lastSeenAt);return!Number.isFinite(n)||n>=e});return i.length<=n?{agents:i}:{agents:[...i].sort((e,t)=>{let n=Date.parse(e.lastSeenAt)||0;return(Date.parse(t.lastSeenAt)||0)-n}).slice(0,n)}}),setLastCompaction:t=>e({lastCompaction:t}),removeAgent:t=>e(e=>({agents:e.agents.filter(e=>e.agentId!==t)}))}));function s(e){return e.messages.filter(e=>!e.completed&&(e.readByCount??0)===0).length}export{s as n,o as r,a as t};
@@ -1,7 +0,0 @@
1
- import{Ct as e,Ft as t,bt as n,kt as r,t as i}from"./ws-client-C_IqS0t4.js";import{Ma as a,Na as o,Pa as s,ja as c}from"./vendor-BshlG0z-.js";import"./i18n-DBqM1FUM.js";import"./ui-store-CLXDcLPI.js";import"./chat-store-BcfvHUUj.js";import"./codemap-activity-store-CWi-Yd9Z.js";import"./mailbox-store-yydAVjyj.js";var ee=8;function l(i,a={}){let c=Math.max(1,a.max??ee),l=new Map,u=e=>e&&e.length>0?e:n,d=e=>{let t=u(e),n=l.get(t);if(n)return n;for(;l.size>=c;){let e=[...l.keys()].find(e=>e!==t);if(e===void 0)break;l.delete(e)}let r=s(i);return l.set(t,r),r},f=(e=>{let n=o(t,e=>e.activeSessionId);return o(d(n),e)});return f.getState=()=>d(e()).getState(),f.setState=t=>d(e()).setState(t),f.subscribe=t=>d(e()).subscribe(t),f.for=d,f.dropSession=e=>{l.delete(u(e))},f.sessionIds=()=>[...l.keys()],r(e=>f.dropSession(e)),f}function u(e,t){return t>=100?`danger`:`warning`}function d(e,t){switch(e){case`budget.threshold_reached`:{let e=t,n=e.limit>0?Math.round(e.used/e.limit*100):0;return`${e.subagentId} [${e.kind}] ${n}% (${e.used}/${e.limit})`}case`budget.decision`:{let e=t;return`${e.subagentId} [${e.kind}] → ${e.decision}`}case`consensus.vote_initiated`:{let e=t;return`Vote: "${e.title}" — ${e.eligible.length} voters`}case`consensus.vote_cast`:{let e=t;return`${e.voterId} voted ${e.value}`}case`consensus.vote_resolved`:{let e=t;return`${e.result} — ✅${e.approveCount} ❌${e.rejectCount}`}case`task.pending`:return`Task queued: "${t.description.slice(0,60)}"`;case`task.started`:{let e=t;return`${e.subagentId} started ${e.taskId}`}case`task.completed`:{let e=t;return`Task ${e.taskId} ${e.status} (${e.durationMs}ms)`}case`task.failed`:{let e=t;return`Task ${e.taskId} failed: ${e.error.slice(0,60)}`}case`subagent.budget_extended`:{let e=t;return`${e.subagentId} [${e.kind}] extended → ${e.extendedTo}ms`}default:return e}}var f=200,p=50,m=300,h=200,g=100;function _(e,t,n){if(!(e.size<=t)){if(n)for(let[r,i]of e){if(e.size<=t)break;n(i)&&e.delete(r)}for(let n of e.keys()){if(e.size<=t)break;e.delete(n)}}}var v=l(e=>({coordinatorStatus:`idle`,subagents:new Map,events:[],consensusVotes:new Map,tasks:new Map,taskCounts:{pending:0,running:0,completed:0,failed:0},budgetAlerts:[],lastUpdated:Date.now(),setCoordinatorStatus:(t,n)=>e(e=>({coordinatorStatus:t,coordinatorMode:n,lastUpdated:Date.now()})),updateCoordinatorStats:t=>e(e=>{let n=new Map(e.subagents);for(let e of t.subagentStatuses??[]){let t=n.get(e.id);n.set(e.id,{id:e.id,name:e.name,role:t?.role??`agent`,status:e.status,currentTask:e.currentTask,budgetLimits:t?.budgetLimits,budgetUsage:t?.budgetUsage,lastSeen:t?.lastSeen??Date.now()})}return _(n,h,e=>e.status===`stopped`),{subagents:n,taskCounts:{pending:t.pending,running:t.inFlight,completed:t.completed,failed:0},lastUpdated:Date.now()}}),updateSubagentBudget:(t,n)=>e(e=>{let r=new Map(e.subagents),i=r.get(t);return r.set(t,{id:t,name:i?.name??t,role:i?.role??`agent`,status:i?.status??`idle`,...i,...n,lastSeen:Date.now()}),_(r,h,e=>e.status===`stopped`),{subagents:r,lastUpdated:Date.now()}}),pushEvent:(t,n,r,i,a)=>e(e=>{let o=n.kind??t,s=(t.includes(`budget`)||t.includes(`threshold`))&&typeof n.limit==`number`&&n.limit>0?Math.round(n.used/n.limit*100):void 0,c=s===void 0?t.includes(`consensus.vote_resolved`)?`info`:t.includes(`consensus.vote_initiated`)?`warning`:`info`:s>=100?`danger`:s>=85?`warning`:`info`;return{events:[{id:`${r}-${t}`,ts:r,type:t,subagentId:i,taskId:a,payload:n,kind:o,level:c,message:d(t,n)},...e.events].slice(0,f),lastUpdated:Date.now()}}),pushConsensusVote:(t,n,r)=>e(e=>{let i=new Map(e.consensusVotes);return i.set(t,{changeId:t,title:n,status:`pending`,eligible:r,votes:[],approveCount:0,rejectCount:0,abstainCount:0,expiresAt:Date.now()+3e5}),_(i,g,e=>e.status!==`pending`),{consensusVotes:i,lastUpdated:Date.now()}}),recordConsensusVote:(t,n,r,i)=>e(e=>{let a=new Map(e.consensusVotes),o=a.get(t);if(!o)return{};let s={...o,votes:[...o.votes.filter(e=>e.agentId!==n),{agentId:n,agentName:r,value:i,votedAt:Date.now()}],approveCount:i===`approve`?o.approveCount+1:o.approveCount,rejectCount:i===`reject`?o.rejectCount+1:o.rejectCount,abstainCount:i===`abstain`?o.abstainCount+1:o.abstainCount};return a.set(t,s),{consensusVotes:a,lastUpdated:Date.now()}}),resolveConsensusVote:(t,n,r,i)=>e(e=>{let a=new Map(e.consensusVotes),o=a.get(t);return o?(a.set(t,{...o,status:n,approveCount:r,rejectCount:i,resolvedAt:Date.now()}),{consensusVotes:a,lastUpdated:Date.now()}):{}}),pushTaskPending:(t,n,r)=>e(e=>{let i=new Map(e.tasks);return i.set(t,{id:t,description:n,status:`pending`,priority:r,queuedAt:Date.now()}),_(i,m,e=>e.status===`completed`||e.status===`failed`),{tasks:i,taskCounts:{...e.taskCounts,pending:e.taskCounts.pending+1},lastUpdated:Date.now()}}),startTask:(t,n)=>e(e=>{let r=new Map(e.tasks),i=r.get(t);return i?r.set(t,{...i,status:`running`,subagentId:n,startedAt:Date.now()}):r.set(t,{id:t,description:``,status:`running`,subagentId:n,startedAt:Date.now()}),{tasks:r,taskCounts:{...e.taskCounts,pending:Math.max(0,e.taskCounts.pending-1),running:e.taskCounts.running+1},lastUpdated:Date.now()}}),completeTask:(t,n,r)=>e(e=>{let i=new Map(e.tasks),a=i.get(t);return a&&i.set(t,{...a,status:n,completedAt:Date.now(),durationMs:r}),_(i,m,e=>e.status===`completed`||e.status===`failed`),{tasks:i,taskCounts:{...e.taskCounts,running:Math.max(0,e.taskCounts.running-1),completed:n===`completed`?e.taskCounts.completed+1:e.taskCounts.completed,failed:n===`failed`?e.taskCounts.failed+1:e.taskCounts.failed},lastUpdated:Date.now()}}),failTask:(t,n)=>e(e=>{let r=new Map(e.tasks),i=r.get(t);return i&&r.set(t,{...i,status:`failed`,error:n,completedAt:Date.now()}),_(r,m,e=>e.status===`completed`||e.status===`failed`),{tasks:r,taskCounts:{...e.taskCounts,running:Math.max(0,e.taskCounts.running-1),failed:e.taskCounts.failed+1},lastUpdated:Date.now()}}),recordBudgetDecision:(t,n,r,i)=>e(e=>{let a=new Map;for(let t of e.budgetAlerts){let e=`${t.subagentId}:${t.kind}`;a.has(e)||a.set(e,t)}let o=`${t}:${n}`,s=a.get(o);return s&&a.set(o,{...s,decision:r,newLimit:i,level:r===`extend`?`warning`:`danger`}),{budgetAlerts:Array.from(a.values()),lastUpdated:Date.now()}}),recordBudgetAlert:(t,n,r,i)=>e(e=>{let a=`${Date.now()}-${t}-${n}`,o=i>0?Math.round(r/i*100):0;return{budgetAlerts:[{id:a,ts:Date.now(),subagentId:t,kind:n,level:u(n,o),used:r,limit:i,pct:o},...e.budgetAlerts].slice(0,p),lastUpdated:Date.now()}}),recordBudgetExtended:(t,n,r)=>e(e=>{let i=new Map(e.subagents),a=i.get(t);if(a?.budgetLimits){let e={...a.budgetLimits};n===`timeout`&&r&&(e.timeoutMs=r),n===`iterations`&&(e.maxIterations=r),n===`tool_calls`&&(e.maxToolCalls=r),i.set(t,{...a,budgetLimits:e,lastSeen:Date.now()})}return{subagents:i,lastUpdated:Date.now()}}),clear:()=>e({coordinatorStatus:`idle`,coordinatorMode:void 0,subagents:new Map,events:[],consensusVotes:new Map,tasks:new Map,taskCounts:{pending:0,running:0,completed:0,failed:0},budgetAlerts:[],lastUpdated:Date.now()})}),{max:4});function y(e,t){return{seatId:C(e.seatId)??`seat`,persona:C(e.persona)??`voter`,status:C(e.status)??`valid`,optionId:C(e.optionId),stance:C(e.stance),rationale:C(e.rationale),providerId:C(e.providerId),model:C(e.model),veto:T(e.veto),weight:w(e.weight),durationMs:w(e.durationMs),error:C(e.error),round:w(e.round),changed:T(e.changed),at:w(e.at)??t}}function b(e){if(e.phase===`voting`){let t=e.seats.reduce((e,t)=>Math.max(e,t.round??1),1);return`voting${t>1?` r${t}`:``} · ${e.seats.length} seat${e.seats.length===1?``:`s`} in`}let t=e.configuredSeatCount??e.seats.length,n=[e.resolution??e.status??`resolved`,`${e.validVoteCount??e.seats.length}/${t} seats`,`${e.distinctTargetCount??0} distinct target${e.distinctTargetCount===1?``:`s`}`];if(e.rounds!==void 0&&e.rounds>1){let t=e.deliberationChanges??0;n.push(`${e.rounds} rounds${t>0?`, ${t} changed`:`, none changed`}`)}return e.judgeUsed&&n.push(`judge${e.judgeLabel?` ${e.judgeLabel}`:``}`+(e.judgeIsVoter?` (also a voter)`:``)),e.durationMs!==void 0&&n.push(`${Math.round(e.durationMs/100)/10}s`),e.totalTokens&&n.push(`${e.totalTokens} tok`),n.join(` · `)}function x(e,t,n,r){let i=e.findIndex(e=>e.requestId===t);if(i>=0){let t=e[i],n=[...e];return n[i]=r(t),n}return[r({requestId:t,phase:`voting`,startedAt:n,seats:[]}),...e].slice(0,50)}var S=l(e=>({panels:[],recordVote:t=>{let n=C(t.requestId);if(!n)return;let r=Date.now();e(e=>({panels:x(e.panels,n,r,e=>{let n=C(t.seatId)??`seat`,i=y(t,r);return e.seats.some(e=>e.seatId===n)?{...e,seats:e.seats.map(e=>e.seatId===n?i:e)}:e.phase===`resolved`?{requestId:e.requestId,phase:`voting`,startedAt:r,seats:[i],question:e.question}:{...e,seats:[...e.seats,i]}})}))},recordResolution:t=>{let n=C(t.requestId);if(!n)return;let r=Date.now(),i=t.usage;e(e=>({panels:x(e.panels,n,r,e=>({...e,phase:`resolved`,resolvedAt:w(t.at)??r,status:C(t.status),resolution:C(t.resolution),optionId:C(t.optionId),reason:C(t.reason),configuredSeatCount:w(t.configuredSeatCount),validVoteCount:w(t.validVoteCount),distinctTargetCount:w(t.distinctTargetCount),judgeUsed:T(t.judgeUsed),judgeLabel:C(t.judgeLabel),judgeIsVoter:T(t.judgeIsVoter),rounds:w(t.rounds),deliberationChanges:w(t.deliberationChanges),totalTokens:w(i?.totalTokens),durationMs:w(i?.durationMs),warnings:Array.isArray(t.warnings)?t.warnings.filter(e=>typeof e==`string`):void 0}))}))},noteQuestion:(t,n)=>{let r=n.trim();!t||!r||e(e=>{let n=e.panels.findIndex(e=>e.requestId===t);if(n<0)return e;let i=e.panels[n];if(i.question===r)return e;let a=[...e.panels];return a[n]={...i,question:r},{panels:a}})},clear:()=>e({panels:[]})}));function C(e){return typeof e==`string`&&e.trim()?e:void 0}function w(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function T(e){return typeof e==`boolean`?e:void 0}var E=a()(e=>({snapshot:null,lastFiredAt:{},revision:0,setSnapshot:t=>e(e=>({snapshot:t,revision:e.revision+1})),recordFired:(t,n)=>e(e=>({lastFiredAt:{...e.lastFiredAt,[t]:n},revision:e.revision+1})),clear:()=>e({snapshot:null,lastFiredAt:{},revision:0})}));function D(){return`ref_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function O(e){switch(e.split(`.`).pop()?.toLowerCase()??``){case`ts`:case`tsx`:return`typescript`;case`js`:case`jsx`:return`javascript`;case`json`:return`json`;case`md`:case`mdx`:return`markdown`;case`css`:return`css`;case`scss`:return`scss`;case`html`:case`htm`:return`html`;case`py`:return`python`;case`rs`:return`rust`;case`go`:return`go`;case`rb`:return`ruby`;case`java`:return`java`;case`c`:return`c`;case`cpp`:case`hpp`:return`cpp`;case`h`:return`c`;case`sh`:case`bash`:return`bash`;case`sql`:return`sql`;case`yaml`:case`yml`:return`yaml`;case`toml`:return`toml`;default:return``}}function k(e,t=20,n=2e3){let r=e.split(`
2
- `),i=!1,a=e;return r.length>t&&(a=r.slice(0,t).join(`
3
- `),i=!0),a.length>n&&(a=a.slice(0,n),i=!0),i&&(a=a.replace(/\s+$/,``)+`
4
- …`),{text:a,truncated:i}}function A(e){return e.length===0?``:[`[File reference contract]`,`Before answering or modifying anything related to these references, use the available file-reading tools to read each complete project file:`,...e.map(e=>`- ${JSON.stringify(e)}`),`If a read is paginated or chunked, continue on the same path until EOF. Do not treat an inline preview as the complete file.`].join(`
5
- `)}function te(e,t){if(e.length===0)return``;let n=[],r=new Set;for(let i of e){if(i.kind===`file`){let e=t?.[i.path];if(e){let t=O(i.path),a=t?`\`\`\`${t}`:"```",o=k(e),s=o.truncated?`preview; complete read required`:`entire file`;n.push(`${a}\n// ${i.path} (${s})\n${o.text}\n\`\`\``),o.truncated&&r.add(i.path)}else n.push(`@${i.path}`),r.add(i.path);continue}let e=O(i.path),a=e?`\`\`\`${e}`:"```",o=`// ${i.path}:${i.startLine}-${i.endLine}`,s=k(i.kind===`snippet`?i.content:i.preview);n.push(`${a}\n${o}\n${s.text}\n\`\`\``),s.truncated&&r.add(i.path)}let i=A([...r]);return[...n,i].filter(Boolean).join(`
6
-
7
- `)}var ne=a()((e,t)=>({refs:[],addRef:n=>{let r=t();if(n.kind===`file`&&r.refs.find(e=>e.kind===`file`&&e.path===n.path))return;let i={...n,id:D()};e({refs:[...r.refs,i]})},removeRef:t=>{e(e=>({refs:e.refs.filter(e=>e.id!==t)}))},clearRefs:()=>e({refs:[]})})),re=a()(e=>({info:null,setInfo:t=>e({info:t}),clear:()=>e({info:null})})),ie=a()((e,t)=>({result:null,loading:!1,currentSeq:0,setResult:t=>e(e=>t.reqSeq===e.currentSeq?{result:t,loading:!1}:{}),setLoading:()=>e({loading:!0,result:null}),clear:()=>e({result:null,loading:!1}),nextSeq:()=>{let n=t().currentSeq+1;return e({currentSeq:n}),n}})),j=a()(e=>({phases:[],activePhaseId:null,overallPercent:0,autonomous:!1,title:null,goal:null,status:`idle`,multiBoard:!1,lastEvent:null,lastError:null,graphs:[],progress:null,setState:t=>e(e=>({phases:t.phases??e.phases,activePhaseId:t.activePhaseId===void 0?e.activePhaseId:t.activePhaseId,overallPercent:t.overallPercent??e.overallPercent,autonomous:t.autonomous??e.autonomous,title:t.title===void 0?e.title:t.title,goal:t.goal===void 0?e.goal:t.goal,status:t.status??e.status,multiBoard:t.multiBoard??e.multiBoard,lastEvent:t.lastEvent===void 0?e.lastEvent:t.lastEvent,lastError:t.lastError===void 0?e.lastError:t.lastError,graphs:t.graphs??e.graphs,progress:t.progress===void 0?e.progress:t.progress})),clear:()=>e({phases:[],activePhaseId:null,overallPercent:0,autonomous:!1,title:null,goal:null,status:`idle`,multiBoard:!1,lastEvent:null,lastError:null,graphs:[],progress:null}),hydrateFromServer:e=>{e({type:`goal.list`}),e({type:`goal.state`})}}));function M(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return!(typeof t.iteration!=`number`||!Number.isFinite(t.iteration)||t.task!==void 0&&typeof t.task!=`string`||t.status!==void 0&&typeof t.status!=`string`||t.progress!==void 0&&(typeof t.progress!=`number`||!Number.isFinite(t.progress))||t.progressNote!==void 0&&typeof t.progressNote!=`string`||t.timestamp!==void 0&&typeof t.timestamp!=`string`)}function N(e){return!e||typeof e.goal!=`string`||!e.goal.trim()?null:{goal:e.goal,refinedGoal:typeof e.refinedGoal==`string`?e.refinedGoal:void 0,goalState:[`active`,`paused`,`completed`,`failed`,`abandoned`].includes(e.goalState)?e.goalState:`active`,iterations:typeof e.iterations==`number`?e.iterations:0,progress:typeof e.progress==`number`?e.progress:0,progressNote:typeof e.progressNote==`string`?e.progressNote:void 0,progressTrend:e.progressTrend===`accelerating`?`up`:e.progressTrend===`stalling`?`down`:e.progressTrend===`steady`?`stable`:void 0,deliverables:Array.isArray(e.deliverables)?e.deliverables.map((e,t)=>typeof e==`string`?{id:`d${t}`,text:e,status:/^\[[x✓]\]|✅|\(done\)/i.test(e)?`done`:`pending`}:e):void 0,journal:Array.isArray(e.journal)?e.journal.filter(M):void 0,lastTask:typeof e.lastTask==`string`?e.lastTask:void 0,lastStatus:typeof e.lastStatus==`string`?e.lastStatus:void 0}}var P=a()(e=>({goal:null,setGoal:t=>e({goal:N(t)}),clear:()=>e({goal:null}),appendJournalEntry:t=>e(e=>e.goal?{goal:{...e.goal,iterations:Math.max(e.goal.iterations,t.iteration),lastTask:t.task??e.goal.lastTask,lastStatus:t.status??e.goal.lastStatus,journal:[t,...e.goal.journal??[]].slice(0,200)}}:e),refresh:()=>{try{i()?.send?.({type:`goal-state.get`})}catch{}}}));function F(e,t){return e.presence?.some(e=>e.active)===!0||e.tags?.some(e=>e.startsWith(`session:`)&&t.includes(e.slice(8)))===!0}var I=3e5,L=a()((e,t)=>({boards:[],boardTotal:0,activeBoardTotal:0,orphanedBoardTotal:0,activeBoardId:null,activeBoard:null,loading:!1,lastOutboundAction:null,error:null,queueHealth:null,supervisorSnapshot:null,workbench:null,verificationActivity:{},boardHistory:[],fetchBoardHistory:e=>{t().sendKanban(`kanban.board.history`,{boardId:e})},setLoading:t=>e({loading:t}),sendKanban:(t,n)=>(e({loading:!0,lastOutboundAction:t}),t),transitionTask:(t,n,r,i)=>{let a=`kanban.task.transition`;return e({loading:!0,lastOutboundAction:a}),a},dispatchTask:(t,n,r)=>{let i=`kanban.task.dispatch`;return e({loading:!0,lastOutboundAction:i}),i},moveTask:(t,n,r)=>{let i=`kanban.task.move`;return e({loading:!0,lastOutboundAction:i}),i},removeTask:(t,n)=>{let r=`kanban.task.remove`;return e({loading:!0,lastOutboundAction:r}),r},setActiveBoardId:t=>e({activeBoardId:t,queueHealth:null,supervisorSnapshot:null,verificationActivity:{}}),setError:t=>e({error:t}),setQueueHealth:t=>e({queueHealth:t}),handleResult:(n,r)=>{if(!r.success){e({loading:!1,error:r.error??`Kanban request failed`});return}let i=r.data;if((n===`kanban.supervisor.status`||n===`kanban.supervisor.audit`)&&i){e({supervisorSnapshot:i,loading:!1,error:null});return}if(n===`kanban.health`&&r.data){e({queueHealth:r.data,loading:!1,error:null});return}if(n===`kanban.workbench`&&r.data){e({workbench:r.data,loading:!1,error:null});return}if(n===`kanban.list`){let t=H(i)?i:null,n=t?t.items:Array.isArray(i)?i:[];e({boards:n,boardTotal:t?.total??n.length,activeBoardTotal:t?.activeTotal??n.filter(e=>U(e)).length,orphanedBoardTotal:t?.orphanedTotal??n.filter(e=>!U(e)).length,loading:!1,error:null});return}if(n===`kanban.delete`){let n=t().activeBoardId,r=i,a=r?.removed===!0,o=r?.boardId??n;e(e=>{let t=a?e.boards.find(e=>e.id===o):void 0,n=t?U(t):void 0;return{boards:a?e.boards.filter(e=>e.id!==o):e.boards,boardTotal:a?Math.max(0,e.boardTotal-1):e.boardTotal,activeBoardTotal:n===!0?Math.max(0,e.activeBoardTotal-1):e.activeBoardTotal,orphanedBoardTotal:n===!1?Math.max(0,e.orphanedBoardTotal-1):e.orphanedBoardTotal,activeBoardId:a&&e.activeBoardId===o?null:e.activeBoardId,activeBoard:a&&e.activeBoard?.id===o?null:e.activeBoard,loading:!1,error:null}});return}if(n===`kanban.task.remove`){let t=i;e(e=>{let n=R(t?.board)?t.board:null;if(n&&e.activeBoardId===n.id)return{boards:K(e.boards,G(n)),activeBoard:n,loading:!1,error:null};let r=t?.boardId,i=t?.taskId,a=t?.removed===!0&&i&&e.activeBoard&&(!r||e.activeBoard.id===r)?{...e.activeBoard,tasks:e.activeBoard.tasks.filter(e=>e.id!==i)}:e.activeBoard;return{activeBoard:a,boards:a?K(e.boards,G(a)):e.boards,loading:!1,error:null}});return}if(n===`kanban.board.history`){Array.isArray(i)&&e({boardHistory:i});return}if(n===`kanban.task.verification_started`){let t=i;if(t?.boardId&&t.taskId){let n=`${t.boardId}:${t.taskId}`;e(e=>{let t=Date.now(),r=Object.fromEntries(Object.entries(e.verificationActivity).filter(([,e])=>t-e.startedAt<I));return r[n]={startedAt:t},{verificationActivity:r,loading:!1,error:null}})}return}if(n===`kanban.task.verification_completed`&&B(i)){let t=`${i.boardId}:${i.task.id}`;e(e=>{let n={...e.verificationActivity};if(delete n[t],e.activeBoard&&e.activeBoard.id===i.boardId){let t=q(e.activeBoard,i.task);return{verificationActivity:n,boards:K(e.boards,G(t)),activeBoard:t,loading:!1,error:null}}return{verificationActivity:n,loading:!1,error:null}});return}if(V(i)){let t=i.board;e(e=>({boards:K(e.boards,G(t)),activeBoard:e.activeBoardId===t.id?t:e.activeBoard,loading:!1,error:null}));return}if(B(i)){e(e=>{if(e.activeBoard&&e.activeBoard.id===i.boardId){let t=q(e.activeBoard,i.task);return{boards:K(e.boards,G(t)),activeBoard:t,loading:!1,error:null}}return{loading:!1,error:null}});return}if(R(i)){let t=G(i);if(n===`kanban.get`){e(e=>({boards:K(e.boards,t),activeBoard:e.activeBoardId===i.id?i:e.activeBoard,loading:!1,error:null}));return}e(e=>({boards:K(e.boards,t),activeBoardId:i.id,activeBoard:i,loading:!1,error:null}));return}if(z(i)){e(e=>({...e.activeBoard?(()=>{let t=q(e.activeBoard,i);return{activeBoard:t,boards:K(e.boards,G(t))}})():{activeBoard:e.activeBoard},loading:!1,error:null}));return}if(Array.isArray(i)&&i.every(W)){e(e=>({...e.activeBoard?(()=>{let t={...e.activeBoard,columns:i};return{activeBoard:t,boards:K(e.boards,G(t))}})():{activeBoard:e.activeBoard},loading:!1,error:null}));return}e({loading:!1,error:null})}}));function R(e){return!!e&&typeof e==`object`&&Array.isArray(e.columns)&&Array.isArray(e.tasks)}function z(e){return!!e&&typeof e==`object`&&typeof e.title==`string`}function B(e){return!!e&&typeof e==`object`&&typeof e.boardId==`string`&&z(e.task)}function V(e){return!!e&&typeof e==`object`&&R(e.board)}function H(e){return!!e&&typeof e==`object`&&Array.isArray(e.items)&&typeof e.total==`number`}function U(e){return F(e,[])}function W(e){return!!e&&typeof e==`object`&&typeof e.id==`string`}function G(e){return{id:e.id,title:e.title,description:e.description,tags:e.tags,presence:e.presence,createdAt:e.createdAt,updatedAt:e.updatedAt,columnCount:e.columns.length,taskCount:e.tasks.length,completedTaskCount:e.tasks.filter(e=>e.status===`completed`).length}}function K(e,t){return[t,...e.filter(e=>e.id!==t.id)].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))}function q(e,t){let n=e.tasks.some(e=>e.id===t.id)?e.tasks.map(e=>e.id===t.id?t:e):[...e.tasks,t];return{...e,tasks:n}}function J(e){switch(e){case`tui`:return`tui`;case`cli`:case`repl`:return`repl`;case`webui`:return`webui`;default:return`webui`}}function Y(e){let t={tui:0,webui:0,repl:0},n=0,r=0,i={toolCalls:0,costUsd:0,tokensIn:0,tokensOut:0};for(let a of e){t[J(a.clientType)]+=1;for(let e of a.agents)n+=1,(e.status===`running`||e.status===`streaming`)&&(r+=1),i.toolCalls+=e.toolCalls??0,i.costUsd+=e.costUsd??0,i.tokensIn+=e.tokensIn??0,i.tokensOut+=e.tokensOut??0}return{clientCounts:t,totalAgents:n,activeAgents:r,aggregate:i}}function ae(e){if(e!==void 0)return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function oe(e){return e.map(e=>({...e,agents:e.agents.map(e=>({...e,ctxPct:ae(e.ctxPct)}))}))}var se=0,X=a()(e=>({clientCounts:{tui:0,webui:0,repl:0},mailActivity:[],totalMessages:0,openMessages:0,unreadMessages:0,totalAgents:0,activeAgents:0,currentSession:{},liveSessions:[],aggregate:{toolCalls:0,costUsd:0,tokensIn:0,tokensOut:0},lastUpdated:Date.now(),setClientCounts:t=>e({clientCounts:t,lastUpdated:Date.now()}),setLiveSessions:t=>{let n=oe(t),r=X.getState().liveSessions;if(r.length===n.length){let e=!0;for(let t=0;t<n.length;t++){let i=n[t],a=r[t];if(i.sessionId!==a.sessionId||i.status!==a.status||i.agentCount!==a.agentCount||i.startedAt!==a.startedAt||i.lastHeartbeatAt!==a.lastHeartbeatAt){e=!1;break}let o=i.agents??[],s=a.agents??[];if(o.length!==s.length){e=!1;break}for(let t=0;t<o.length;t++)if(o[t].id!==s[t].id||o[t].name!==s[t].name||o[t].status!==s[t].status||o[t].currentTool!==s[t].currentTool||o[t].iterations!==s[t].iterations||o[t].toolCalls!==s[t].toolCalls||o[t].ctxPct!==s[t].ctxPct||o[t].tokensIn!==s[t].tokensIn||o[t].tokensOut!==s[t].tokensOut||o[t].costUsd!==s[t].costUsd||o[t].recentTools?.[0]?.id!==s[t].recentTools?.[0]?.id||o[t].recentMail?.[0]?.id!==s[t].recentMail?.[0]?.id||o[t].activity?.reads!==s[t].activity?.reads||o[t].activity?.writes!==s[t].activity?.writes||o[t].activity?.edits!==s[t].activity?.edits||o[t].activity?.terminalCalls!==s[t].activity?.terminalCalls||o[t].activity?.mailReceived!==s[t].activity?.mailReceived||o[t].activity?.mailSent!==s[t].activity?.mailSent||o[t].activity?.linesAdded!==s[t].activity?.linesAdded||o[t].activity?.linesRemoved!==s[t].activity?.linesRemoved){e=!1;break}if(!e)break}if(e)return}e({liveSessions:n,...Y(n),lastUpdated:Date.now()})},addMailActivity:t=>e(e=>({mailActivity:[{...t,seq:t.seq??++se},...e.mailActivity].slice(0,50),lastUpdated:Date.now()})),setMailStats:(t,n,r)=>e({totalMessages:t,openMessages:n,unreadMessages:r,lastUpdated:Date.now()}),setAgentStats:(t,n)=>e({totalAgents:t,activeAgents:n,lastUpdated:Date.now()}),setCurrentSession:t=>e({currentSession:{...X.getState().currentSession,...t},lastUpdated:Date.now()}),clear:()=>e({clientCounts:{tui:0,webui:0,repl:0},mailActivity:[],totalMessages:0,openMessages:0,unreadMessages:0,totalAgents:0,activeAgents:0,currentSession:{},liveSessions:[],aggregate:{toolCalls:0,costUsd:0,tokensIn:0,tokensOut:0},lastUpdated:Date.now()})})),ce=[3e4,6e4,12e4,3e5,6e5],Z=12e4,le=a()(c(e=>({viewMode:`office`,showHud:!0,showLegend:!0,showMinimap:!0,showControls:!0,animateEdges:!0,showFeed:!0,background:`dots`,waitThresholdMs:Z,setViewMode:t=>e({viewMode:t}),setShowHud:t=>e({showHud:t}),setShowLegend:t=>e({showLegend:t}),setShowMinimap:t=>e({showMinimap:t}),setShowControls:t=>e({showControls:t}),setAnimateEdges:t=>e({animateEdges:t}),setShowFeed:t=>e({showFeed:t}),setBackground:t=>e({background:t}),setWaitThresholdMs:t=>e({waitThresholdMs:Number.isFinite(t)&&t>0?Math.round(t):Z})}),{name:`wrongstack-officemap`})),Q=e=>`${e.providerId}\u0000${e.model}`,ue=a(e=>({entries:{},audit:[],summary:null,loading:!1,error:null,update:t=>e(e=>{let n={...e.entries},r=Q(t);if(t.state===`healthy`)delete n[r];else{let e=n[r],i=Object.fromEntries(Object.entries(t).filter(e=>e[1]!==void 0));n[r]={...e,...i}}return{entries:n}}),hydrate:t=>e({entries:Object.fromEntries(t.filter(e=>e.state!==`healthy`).map(e=>[Q(e),e]))}),applySnapshot:t=>{let n=t.statuses;if(!Array.isArray(n)){e({error:`Invalid snapshot from server`,loading:!1});return}let r={};for(let e of n){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.providerId==`string`?t.providerId:``,i=typeof t.model==`string`?t.model:``;if(!n||!i)continue;let a=t.state;(a===`healthy`||a===`degraded`||a===`blocked`)&&(r[`${n}\u0000${i}`]={providerId:n,model:i,state:a,reason:(typeof t.lastErrorKind==`string`?t.lastErrorKind:``)||a,updatedAt:typeof t.lastFailureAt==`number`?t.lastFailureAt:Date.now(),...typeof t.stateExpiresAt==`number`?{stateExpiresAt:t.stateExpiresAt}:{},...typeof t.consecutiveFailures==`number`?{consecutiveFailures:t.consecutiveFailures}:{},...typeof t.totalFailures==`number`?{totalFailures:t.totalFailures}:{},...typeof t.rateLimitHits==`number`?{rateLimitHits:t.rateLimitHits}:{},...typeof t.lastErrorMessage==`string`?{lastErrorMessage:t.lastErrorMessage}:{},...typeof t.lastErrorKind==`string`?{lastErrorKind:t.lastErrorKind}:{},...typeof t.lastErrorStatus==`number`?{lastErrorStatus:t.lastErrorStatus}:{},...Array.isArray(t.recentErrors)?{recentErrors:t.recentErrors.slice(0,20)}:{},...typeof t.lastSessionId==`string`?{lastSessionId:t.lastSessionId}:{},...typeof t.lastAgentId==`string`?{lastAgentId:t.lastAgentId}:{},...typeof t.lastFailureAt==`number`?{lastFailureAt:t.lastFailureAt}:{}})}let i=t;e({entries:r,summary:{totalPairs:typeof i.totalPairs==`number`?i.totalPairs:0,healthy:typeof i.healthy==`number`?i.healthy:0,degraded:typeof i.degraded==`number`?i.degraded:0,blocked:typeof i.blocked==`number`?i.blocked:0,totalFailures:typeof i.totalFailures==`number`?i.totalFailures:0,totalRateLimits:typeof i.totalRateLimits==`number`?i.totalRateLimits:0},error:null,loading:!1})},setAudit:t=>e({audit:t}),setLoading:t=>e({loading:t}),setError:t=>e({error:t,loading:!1}),removeEntry:(t,n)=>e(e=>{let r={...e.entries};return delete r[Q({providerId:t,model:n})],{entries:r}}),clear:()=>e({entries:{},audit:[],summary:null,error:null})})),de=a()(e=>({snapshot:null,boards:[],lifecycleResult:null,destroying:!1,setSnapshot:t=>e({snapshot:t}),setBoards:t=>e({boards:t}),setLifecycleResult:t=>e({lifecycleResult:t}),setDestroying:t=>e({destroying:t})})),fe=a()(e=>({snapshot:null,agentText:``,error:null,startedRunId:null,setSnapshot:t=>{if(t.discarded||t.phase===`idle`&&!t.sessionId){e({snapshot:null,agentText:``,error:null});return}e({snapshot:t,error:null,...t.lastAgentText?{agentText:t.lastAgentText}:{}})},setAgentText:t=>e({agentText:t}),setError:t=>e({error:t}),setStartedRunId:t=>e({startedRunId:t}),reset:()=>e({snapshot:null,agentText:``,error:null,startedRunId:null})})),pe=l(e=>({sideEffects:[],loading:!1,setSideEffects:t=>e({sideEffects:t,loading:!1}),setLoading:t=>e({loading:t}),clear:()=>e({sideEffects:[],loading:!1})})),me=a()(e=>({specs:[],detail:null,expandedSpecId:null,setSpecs:t=>e({specs:t}),setDetail:t=>e({detail:t}),setExpanded:t=>e({expandedSpecId:t,detail:null})})),he=new Set([`idle`,`queued`,`discovering`,`inventorying`,`enriching`,`researching`,`synthesizing`,`completed`,`failed`,`cancelled`]);function ge(e){return he.has(e)?e:void 0}var $={snapshot:null,stale:!1,loading:!1,error:null,activeJob:null,lastWorkspaceId:null,reportId:null},_e=a()(e=>({...$,setSnapshot:(t,n=!1)=>e(e=>({snapshot:t,stale:n,loading:!1,error:null,activeJob:e.activeJob?{...e.activeJob,status:`completed`,error:null}:null})),setLoading:t=>e({loading:t}),setError:t=>e({error:t,loading:!1}),jobStarted:(t,n)=>e({activeJob:{id:t,kind:n,status:`queued`,progress:null,error:null},error:null,loading:!0}),jobProgress:(t,n)=>e(e=>{if(e.activeJob?.id!==t)return e;let r=ge(n.phase);return r?{activeJob:{...e.activeJob,status:r,progress:n},loading:!0}:e}),jobFailed:(t,n)=>e(e=>e.activeJob?.id===t?{activeJob:{...e.activeJob,status:`failed`,error:n},error:n,loading:!1}:e),jobCancelled:t=>e(e=>({activeJob:e.activeJob?.id===t?{...e.activeJob,status:`cancelled`,error:null}:e.activeJob,loading:!1})),workspaceCompleted:t=>e({lastWorkspaceId:t}),reportReady:t=>e({reportId:t}),clear:()=>e($)})),ve=a()(e=>({worktrees:[],baseBranch:``,activity:[],orphans:[],canClean:!1,cleanResult:null,mergeResult:null,diffByDir:{},setSnapshot:(t,n)=>e({worktrees:t,baseBranch:n}),pushEvent:t=>e(e=>({activity:[...e.activity,t].slice(-40)})),setOrphans:(t,n,r)=>e({orphans:t,canClean:n,cleanBlockedReason:r}),setCleanResult:t=>e({cleanResult:t}),setMergeResult:t=>e({mergeResult:t}),setDiff:(t,n)=>e(e=>({diffByDir:{...e.diffByDir,[t]:n}}))}));export{l as C,v as S,te as _,fe as a,b,ce as c,L as d,F as f,re as g,ie as h,pe as i,le as l,j as m,_e as n,de as o,P as p,me as r,ue as s,ve as t,X as u,ne as v,S as x,E as y};
@@ -1,27 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,Bt as n,Ct as r,Dt as i,E as a,Et as o,H as s,Ht as c,It as l,Lt as u,M as d,Mt as f,O as p,Pt as ee,Q as m,Rt as h,S as g,St as _,Tt as te,U as v,Ut as y,Vt as b,Y as ne,Z as x,_ as S,_t as re,a as ie,b as C,c as ae,d as w,dt as oe,et as T,ft as se,g as ce,gt as le,i as ue,jt as de,kt as E,l as D,lt as fe,mt as pe,o as O,pt as me,q as k,r as A,s as j,t as M,u as N,ut as P,wt as he,zt as F}from"./ws-client-C_IqS0t4.js";import{i as ge}from"./react-core-BNmTiJ-I.js";import{Ra as _e}from"./vendor-BshlG0z-.js";import{n as ve,t as ye}from"./i18n-DBqM1FUM.js";import{a as be,n as I,t as xe}from"./ui-store-CLXDcLPI.js";import{i as L,n as R}from"./codemap-activity-store-CWi-Yd9Z.js";import{C as Se,S as Ce,a as we,d as Te,g as Ee,h as De,i as Oe,m as z,n as B,o as ke,p as Ae,r as je,s as Me,t as V,u as Ne,x as Pe,y as Fe}from"./stores-Cfei1ViB.js";import{r as Ie}from"./mailbox-store-yydAVjyj.js";import{n as Le,o as Re}from"./view-navigation-CvWJeGMc.js";import{t as ze}from"./codemap-index-store-3M7F08K_.js";var H=e(ge(),1);function Be(e,t){if(t)return!0;try{return new URLSearchParams(e).get(`shell`)===`desktop`}catch{return!1}}function Ve(){return typeof window>`u`?!1:Be(window.location.search,!!window.wrongstackDesktopHost)}var He=new Set([`mode_changed`,`compaction`,`checkpoint`,`skill_activated`,`skill_deactivated`,`agent_spawned`,`agent_session_linked`,`agent_stopped`,`agent_error`,`delegate_started`,`delegate_completed`,`loop_detected`,`model_switched`,`error`,`provider_retry`,`provider_error`,`message_truncated`]),Ue=new Set([`checkpoint`,`agent_spawned`,`agent_session_linked`,`agent_stopped`,`agent_error`,`delegate_started`,`delegate_completed`]);new Set([...He].filter(e=>!Ue.has(e)));function We(e){switch(e.type){case`compaction`:{let t=(e.before/1e3).toFixed(0),n=(e.after/1e3).toFixed(0),r=e.level?` (${e.level})`:``,i=e.reductions&&e.reductions.length>0?` [${e.reductions.map(e=>`${e.phase}: \u2212${e.saved}`).join(`, `)}]`:``;return{ts:e.ts,source:e.type,level:`info`,text:`\u27F2 context compacted${r}: ${t}K \u2192 ${n}K tokens${i}`}}case`error`:return{ts:e.ts,source:e.type,level:`error`,text:e.phase?`[${e.phase}] ${e.message}`:e.message};case`provider_retry`:{let t=(e.delayMs/1e3).toFixed(e.delayMs>=1e3?1:2);return{ts:e.ts,source:e.type,level:`warn`,text:e.status?`\u27F3 retry ${e.attempt} (HTTP ${e.status}) after ${t}s \u2014 ${e.description}`:`\u27F3 retry ${e.attempt} after ${t}s \u2014 ${e.description}`}}case`provider_error`:return{ts:e.ts,source:e.type,level:`error`,text:e.status?`provider error (HTTP ${e.status}, ${e.retryable?`retryable`:`fatal`}): ${e.description}`:`provider error (${e.retryable?`retryable`:`fatal`}): ${e.description}`};case`checkpoint`:return{ts:e.ts,source:e.type,level:`info`,text:`\u2713 checkpoint #${e.promptIndex}: "${e.promptPreview.slice(0,60)}"`};case`agent_spawned`:return{ts:e.ts,source:e.type,level:`info`,text:`spawned as ${e.role}`,agentId:e.agentId};case`agent_session_linked`:return{ts:e.ts,source:e.type,level:`info`,text:`transcript \u2192 ${e.transcriptPath??e.agentSessionId}`,agentId:e.agentId};case`agent_stopped`:return{ts:e.ts,source:e.type,level:`info`,text:`stopped`,agentId:e.agentId};case`delegate_started`:return{ts:e.ts,source:e.type,level:`info`,text:`\u{1F91D} delegating \u2192 ${e.target}: ${e.task.length>100?`${e.task.slice(0,99)}\u2026`:e.task}`,agentId:e.subagentId,detail:{kind:`delegate_started`,target:e.target,task:e.task}};case`delegate_completed`:{let t=e.costUsd&&e.costUsd>0?` \xB7 $${e.costUsd.toFixed(4)}`:``;return{ts:e.ts,source:e.type,level:e.ok?`info`:`error`,text:`${e.ok?`✅`:`❌`} ${e.summary}${t}`,agentId:e.subagentId,detail:{kind:`delegate_completed`,target:e.target,task:e.task,ok:e.ok,status:e.status,summary:e.summary,durationMs:e.durationMs,iterations:e.iterations,toolCalls:e.toolCalls,costUsd:e.costUsd}}}case`loop_detected`:{let t=e.kind===`message`?`the same reply`:e.tools?`\`${e.tools}\``:`the same step`;return{ts:e.ts,source:e.type,level:`warn`,text:e.action===`steer`?`\u{1F501} Loop detected \u2014 ${t} repeated ${e.repeatCount}\xD7 ; the run was steered.`:`\u{1F501} Loop detected \u2014 ${t} repeated ${e.repeatCount}\xD7 ; the run was stopped.`}}case`model_switched`:{let t=`${e.to.providerId}/${e.to.model}`,n=e.from?`${e.from.providerId}/${e.from.model} \u2192 `:``;return{ts:e.ts,source:e.type,level:e.reason===`fallback`?`warn`:`info`,text:e.reason===`fallback`?`\u26A0 fallback${e.status?` (HTTP ${e.status})`:``}: ${n}${t}`:`model: ${n}${t}`}}case`agent_error`:return{ts:e.ts,source:e.type,level:`error`,text:`error: ${e.error.slice(0,80)}`,agentId:e.agentId};case`mode_changed`:return{ts:e.ts,source:e.type,level:`info`,text:`mode: ${e.from} \u2192 ${e.to}`};case`skill_activated`:return{ts:e.ts,source:e.type,level:`info`,text:`skill activated: ${e.skillName}`};case`skill_deactivated`:return{ts:e.ts,source:e.type,level:`info`,text:`skill deactivated: ${e.skillName}`};case`message_truncated`:return{ts:e.ts,source:e.type,level:`warn`,text:e.after<e.before?`message truncated: ${e.before} \u2192 ${e.after} tokens`:`message truncated at ${e.after} tokens`};default:return null}}function Ge(e,t=He){let n=[];for(let r of e){if(!t.has(r.type))continue;let e=We(r);e&&n.push(e)}return n}var Ke=[`[MAILBOX]`,`[MAILBOX BTW]`,`[BY THE WAY —`,`[QUEUED MESSAGES —`,`[FLEET PULSE]`,`[loop-detector]`,`[tool_history_digest:`,`[session.resume] Request targeted session`];function qe(e){let t=e.trimStart();for(let e of Ke)if(t.startsWith(e))return!0;return!1}function Je(e){let t=[];for(let n of e)n.type===`tool_call_end`&&t.push({id:n.id,name:n.name,durationMs:n.durationMs,outputBytes:n.outputBytes??n.outputSize,outputTokens:n.outputTokens,outputLines:n.outputLines,ok:n.ok,agentId:n.agentId});return t}function Ye(e){let t=new Map;if(!e)return t;for(let n of e)t.set(n.id,n);return t}function Xe(e){let t=[];for(let n of e)n.type===`image`&&t.push({mediaType:n.source.media_type,data:n.source.data,url:n.source.url});return t.length>0?t:void 0}function Ze(e){return typeof e==`string`?e:JSON.stringify(e)}function Qe(e){let{messages:t,events:n,thinkingPlacement:r=`inline`,textBlocks:i=`split`,textSeparator:a=``,hideSystemInjections:o=!0}=e,s=e.markers??(n?Ge(n,e.markerSources??He):[]),c=Ye(e.toolMeta??(n?Je(n):void 0)),l=[],u=new Map,d=0,f=``,p=(e,t,n,r)=>{let i=t.trim();i&&(o&&qe(i)||(e===`assistant`?l.push({kind:`assistant`,ts:n,text:i,final:r}):e===`system`?l.push({kind:`system`,ts:n,text:i}):l.push({kind:`user`,ts:n,text:i})))},ee=(e,t)=>{e.trim()&&(d+=1,l.push({kind:`thinking`,ts:t,text:e,index:d}))};for(let e of t){let t=e.ts??f;if(e.ts&&(f=e.ts),typeof e.content==`string`){p(e.role,e.content,t,!0);continue}let n=e.content;if(r===`inline`)for(let e of n)e.type===`thinking`&&ee(e.thinking,t);let o=e.role===`user`?Xe(n):void 0,s=!n.some(e=>e.type===`tool_use`),d=[],m=()=>{if(i===`join`)return;let n=d.join(a).trim();n&&p(e.role,n,t,s),d.length=0};if(i===`join`){let r=n.filter(e=>e.type===`text`).map(e=>e.text).join(a).trim();r&&p(e.role,r,t,s)}for(let e of n){if(e.type===`text`){d.push(e.text);continue}if(e.type===`tool_use`){m();let n=c.get(e.id),r={kind:`tool`,ts:t,toolUseId:e.id,name:e.name,input:e.input,ok:n?.ok,durationMs:n?.durationMs,outputBytes:n?.outputBytes,outputTokens:n?.outputTokens,outputLines:n?.outputLines,agentId:n?.agentId};l.push(r),u.set(e.id,r);continue}if(e.type!==`tool_result`)continue;m();let n=u.get(e.tool_use_id);if(n){n.output=Ze(e.content),n.ok=!e.is_error,u.delete(e.tool_use_id);continue}let r=c.get(e.tool_use_id);l.push({kind:`tool`,ts:t,toolUseId:e.tool_use_id,name:e.name??r?.name??e.tool_use_id,output:Ze(e.content),ok:!e.is_error,durationMs:r?.durationMs,outputBytes:r?.outputBytes,outputTokens:r?.outputTokens,outputLines:r?.outputLines,agentId:r?.agentId})}if(m(),r===`merged-after`&&ee(n.filter(e=>e.type===`thinking`).map(e=>e.thinking).join(`
2
-
3
- `).trim(),t),o){let e=l[l.length-1];e?.kind===`user`&&e.ts===t?e.images=o:l.push({kind:`user`,ts:t,text:``,images:o})}}let m=[],h=0,g=0;for(;h<l.length&&g<s.length;){let e=s[g];e.ts<l[h].ts?(m.push($e(e)),g+=1):(m.push(l[h]),h+=1)}for(;h<l.length;)m.push(l[h++]);for(;g<s.length;)m.push($e(s[g++]));return m}function $e(e){return{kind:`marker`,ts:e.ts,source:e.source,level:e.level,text:e.text,agentId:e.agentId,detail:e.detail}}function et(e){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
4
- <rect width="64" height="64" fill="#121210" />
5
- <path fill="#FD9F02" d="M5 27h10v10H5zM27 27h10v10H27zM38 27h10v10H38zM49 27h10v10H49z" />
6
- <path fill="#FE2E5F" d="M16 32h10v10H16z" />
7
- ${e===`ready`?`<circle cx="50" cy="14" r="14" fill="#22c55e" stroke="#fff" stroke-width="3" />`:e===`error`?`<circle cx="50" cy="14" r="14" fill="#ef4444" stroke="#fff" stroke-width="3" />`:e===`running`?`<circle cx="50" cy="14" r="14" fill="#f59e0b" stroke="#fff" stroke-width="3" />`:e===`attention`?`<circle cx="50" cy="14" r="14" fill="#eab308" stroke="#fff" stroke-width="3"><animate attributeName="opacity" values="1;0.3;1" dur="1s" repeatCount="indefinite"/></circle>`:``}
8
- </svg>`}function tt(e){return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}function nt(){if(typeof document>`u`)return null;let e=document.querySelector(`link[rel="icon"]`);return e||(e=document.createElement(`link`),e.rel=`icon`,e.type=`image/svg+xml`,document.head.appendChild(e)),e}var rt=`idle`;function U(e){rt=e;let t=nt();t&&(t.href=tt(et(e)))}var it=!1;function at(){it||typeof document>`u`||(it=!0,document.addEventListener(`visibilitychange`,()=>{!document.hidden&&(rt===`ready`||rt===`error`||rt===`attention`)&&U(`idle`)}))}var ot=null;function st(){if(typeof window>`u`)return null;if(ot)return ot;let e=window.AudioContext||window.webkitAudioContext;if(!e)return null;try{ot=new e}catch{return null}return ot}function ct(e,t,n){let r=st();if(!r)return;let i=r.currentTime+t,a=r.createOscillator(),o=r.createGain();a.type=`sine`,a.frequency.value=e,o.gain.setValueAtTime(0,i),o.gain.linearRampToValueAtTime(.18,i+.01),o.gain.exponentialRampToValueAtTime(1e-4,i+n),a.connect(o).connect(r.destination),a.start(i),a.stop(i+n+.02)}function lt(){ct(659.25,0,.18),ct(880,.12,.24)}function ut(){ct(523.25,0,.15),ct(659.25,.1,.15),ct(783.99,.2,.25)}var W=`default`;W=typeof window<`u`&&`Notification`in window?Notification.permission:`unsupported`;async function dt(){if(W===`unsupported`||W===`granted`||W===`denied`)return W;try{let e=await Notification.requestPermission();return W=e,e}catch{return`denied`}}function ft(e,t,n){if(!(typeof document>`u`||!document.hidden)&&W===`granted`)try{let r=new Notification(e,{body:t,icon:`/wrongstack.svg`,tag:n??`wrongstack-run`,requireInteraction:n===`wrongstack-confirm`});r.onclick=()=>{window.focus(),r.close()}}catch{}}function pt(e){let t=e.payload;return typeof t?.agentName==`string`&&t.agentName.length>0?t.agentName:void 0}var mt={"iteration.started":St,"provider.text_delta":Ct,"provider.thinking_delta":wt,"tool.started":Tt,"tool.progress":Et,"tool.executed":Dt,"tool.confirm_needed":Ot,"run.result":At,"session.run_state":kt},ht=new Map,gt=new Map;function _t(e){let t=ht.get(e);return t||(t=new Map,ht.set(e,t)),t}function vt(e){return`__thinking__:${e}`}function G(e){return e.sessionId===r()}function yt(e){return I.getState().sessionNicknames[e]??`session ${e.slice(0,8)}`}function bt(e){return`wrongstack-run:${e}`}function xt(e){ht.delete(e),gt.delete(e),c.drop(vt(e))}E(xt);function St(e){let t=A(e);if(!t)return;j(e),e.payload.index===1&&(ht.delete(t.sessionId),gt.delete(t.sessionId));let n=e.payload,r=D(e);r?.setIteration({index:n.index,max:n.maxIterations??0}),t.setLoading(!0),typeof document<`u`&&document.hidden&&G(t)&&U(`running`),t.runStart===null&&t.setRunStart({at:Date.now(),cost:r?.data.cost??0}),t.setCurrentAssistantMessage(null)}function Ct(e){let t=A(e);if(!t)return;let n=F(e);if(n?.kind!==`text-delta`)return;c.flush(vt(t.sessionId)),t.clearThinking();let r=t.currentAssistantMessageId;r||(r=t.addMessage({role:`assistant`,content:``,streaming:!0}),t.setCurrentAssistantMessage(r)),c.push(r,n.text,(e,n)=>t.appendToMessage(e,n))}function wt(e){let t=A(e);if(!t)return;let n=F(e);n?.kind===`thinking-delta`&&c.push(vt(t.sessionId),n.text,(e,n)=>t.appendThinking(n))}function Tt(e){let t=A(e);if(!t)return;j(e);let n=b(e);if(n?.kind!==`started`)return;n.name===`nextsteps`&&n.id&&_t(t.sessionId).set(n.id,h(n.input));let r=t.getToolMessageId(n.id);if(r){t.setCurrentToolId(r);return}c.flushAll(),t.clearThinking();let i=t.currentAssistantMessageId;i&&t.finalizeMessage(i,{final:!1}),t.setCurrentAssistantMessage(null);let a=t.addMessage({role:`tool`,content:``,toolName:n.name,toolInput:n.input,toolUseId:n.id});t.setCurrentToolId(a),t.addExecution({id:n.id,name:n.name,input:n.input,ok:!0,startedAt:Date.now()}),C.getState().recordToolStarted(t.sessionId,{name:n.name,agentName:pt(e)})}function Et(e){let t=A(e);if(!t)return;let n=b(e);if(n?.kind!==`progress`)return;let r=n.text;if(!r)return;let i=t.getToolMessageId(n.id);if(!i)return;let a=n.eventType===`warning`?`⚠ `:``;c.push(i,`${a}${r}\n`,(e,r)=>t.appendToolProgressLinesByUseId(n.id,r.split(`
9
- `).filter(e=>e.length>0)))}function Dt(e){let t=A(e);if(!t)return;j(e);let n=b(e);if(n?.kind!==`executed`)return;if(n.name===`nextsteps`&&n.id){let e=_t(t.sessionId),r=e.get(n.id)??[];e.delete(n.id),n.ok&&r.length>0&&gt.set(t.sessionId,r)}let{currentToolId:r}=t,i=n.id?t.getToolMessageId(n.id):r;i&&(c.drop(i),n.id?t.setToolResultByUseId(n.id,n.output??``,n.ok):t.setToolResult(i,n.output??``,n.ok),t.updateMessage(i,{toolDurationMs:n.durationMs,...n.sage&&n.sage.length>0?{sageLines:n.sage}:{}})),n.id&&t.updateExecution(n.id,{completedAt:Date.now(),durationMs:n.durationMs,output:n.output,ok:n.ok}),C.getState().recordToolExecuted(t.sessionId,{name:n.name,ok:n.ok,durationMs:n.durationMs,agentName:pt(e)}),r&&i===r&&t.setCurrentToolId(null)}function Ot(e){let t=A(e);if(!t)return;let n=e.payload;if(ye(t.sessionId,`yolo`)===!0&&!n.boundaryReason){M(T.getState().wsUrl).sendConfirm(n.id,`yes`),I.getState().hideConfirm();return}if(!G(t)){t.setPendingConfirm(n),S.getState().setAttention(t.sessionId,!0),dt(),ft(`${x.getState().projectName||`Agent`} needs approval`,`Another tab is waiting on "${n.toolName}".`,`agent-confirm`);return}t.setPendingConfirm(n),I.getState().showConfirm({id:n.id,toolName:n.toolName,input:n.input,suggestedPattern:n.suggestedPattern,decisionSource:n.decisionSource,riskTier:n.riskTier,boundaryReason:n.boundaryReason});try{ut()}catch{}dt(),ft(`${x.getState().projectName||`Agent`} needs approval`,`Tool "${n.toolName}" is waiting for your decision.`,`agent-confirm`),typeof document<`u`&&document.hidden&&U(`attention`)}function kt(e){let t=A(e);if(!t)return;let n=ae(e,{isRunning:`boolean`},{});n&&t.isLoading!==n.isRunning&&(t.setLoading(n.isRunning),n.isRunning||(c.flushAll(),t.flushThinkingLog(1),D(e)?.setIteration(null),t.clearThinking(),t.setRunStart(null)))}function At(e){let t=A(e);if(!t)return;let n=ae(e,{status:`string`},{requestId:`string`,iterations:`number`,finalText:`string`,error:`object`});if(!n)return;let r=n.iterations??1;c.flushAll(),t.flushThinkingLog(Math.max(1,r));let i=D(e);i?.setIteration(null),t.setLoading(!1);let a=t.currentAssistantMessageId,o=n.status===`done`?n.finalText?.trim():void 0;if(a){let e=t.messages.find(e=>e.id===a);t.updateMessage(a,{content:e?.content?.trim()?e.content:o??e?.content??``}),t.finalizeMessage(a,{final:!0})}else if(o){let e=t.runStart,n=u(o).stripped.trim(),r=t.messages,i;for(let t=r.length-1;t>=0;t--){let n=r[t];if(n?.role===`assistant`&&(!e||n.timestamp>=e.at)){i=n;break}}let a=i?.content.trim();if(a===void 0||a!==o&&a!==n){let e=t.addMessage({role:`assistant`,content:o});t.finalizeMessage(e,{final:!0})}}let s=gt.get(t.sessionId)??[];n.status===`done`&&s.length>0&&(t.messages.some(e=>e.role===`assistant`&&(e.nextSteps?.steps.length??0)>0)||t.addMessage({role:`assistant`,content:``,nextSteps:{steps:s}}),gt.delete(t.sessionId)),t.setCurrentAssistantMessage(null),t.clearThinking();let l=t.runStart;if(l&&n.status===`done`){let e=t.messages,n=-1,a=0;for(let t=e.length-1;t>=0;t--){let r=y(e[t]);if(r.role===`assistant`&&n===-1&&r.content&&(n=t),r.role===`tool`&&r.timestamp>=l.at&&(a+=1),r.role===`user`&&r.timestamp<=l.at)break}if(n!==-1){let o=i?.data.cost??0;t.updateMessage(e[n]?.id,{runSummary:{iterations:r,tools:a,durationMs:Date.now()-l.at,costDelta:Math.max(0,o-l.cost)}})}}if(t.setRunStart(null),n.status!==`done`&&n.error){n.requestId&&t.updateMessage(n.requestId,{status:`failed`}),t.addMessage({role:`assistant`,content:`Error: ${n.error.message}`,isError:!0});let e=n.error.message===`User aborted`||n.error.message===`aborted`,r=G(t);e||(r?k.error(`Run ended: ${n.error.message}`):S.getState().setAttention(t.sessionId,!0)),ft(r?`${x.getState().projectName||`Agent`} run failed`:`${yt(t.sessionId)} run failed`,n.error.message,bt(t.sessionId)),typeof document<`u`&&document.hidden&&G(t)&&U(`error`)}else if(n.status===`done`){if(typeof document<`u`&&document.hidden){let e=G(t);e?k.success(`Run completed in ${r} iteration${r===1?``:`s`}`):S.getState().setAttention(t.sessionId,!0),ft(e?`${x.getState().projectName||`Agent`} run finished`:`${yt(t.sessionId)} run finished`,`Completed in ${r} iteration${r===1?``:`s`}.`,bt(t.sessionId)),e&&U(`ready`)}if(dt(),T.getState().soundOnComplete)try{lt()}catch{}typeof document<`u`&&G(t)&&document.dispatchEvent(new CustomEvent(`chat:next-step-countdown`))}let d=t,f=d.queue[0];if(!f)return;if(f.alreadyDispatched===!0){jt(t,f);let e=d.dequeueDrainable();return e?Mt(t,e):void 0}let p=d.dequeue();if(p)return Mt(t,p)}function jt(e,t){if(t.bubbleAdded===!0)return;let n=t.images??[];e.addMessage({role:`user`,content:t.text,...n.length>0?{attachments:n.map(e=>({id:e.id,kind:`image`,dataUrl:e.dataUrl,mediaType:e.mediaType,bytes:e.bytes,name:e.name}))}:{}}),t.bubbleAdded=!0}function Mt(e,t){let n=M(T.getState().wsUrl),r=t.images??[];if(e.addMessage({role:`user`,content:t.text,...r.length>0?{attachments:r.map(e=>({id:e.id,kind:`image`,dataUrl:e.dataUrl,mediaType:e.mediaType,bytes:e.bytes,name:e.name}))}:{}}),t.mode===`btw`){t.alreadyDispatched!==!0&&n.sendMailboxMessage({type:`btw`,to:`leader`,subject:`btw from WebUI`,body:t.text,priority:`normal`,audience:`all`},e.sessionId);return}e.setLoading(!0),n.sendMessage(t.text,r.length>0?be(r):void 0,!1,e.sessionId)}function K(e){return Ce.for(O(e)).getState()}function Nt(e){let t=O(e);return!t||t===r()}var Pt={"coordinator.status":e=>{let t=e.payload;K(e).setCoordinatorStatus(t.status,t.mode),t.taskQueue&&K(e).updateCoordinatorStats({total:t.subagentCount??0,running:0,idle:0,stopped:0,inFlight:t.taskQueue.running,pending:t.taskQueue.pending,completed:t.taskQueue.completed})},"coordinator.stats":e=>{let t=e.payload;K(e).updateCoordinatorStats(t)},"budget.threshold_reached":e=>{let t=e.payload;K(e).pushEvent(`budget.threshold_reached`,t,t.ts??Date.now(),t.subagentId,t.taskId),t.limit>0&&t.used/t.limit*100>=85&&K(e).recordBudgetAlert(t.subagentId,t.kind,t.used,t.limit),K(e).updateSubagentBudget(t.subagentId,{budgetUsage:{iterations:0,toolCalls:0,tokens:0,costUsd:0,elapsedMs:t.used??0}})},"budget.decision":e=>{let t=e.payload,n=t.extended?.timeoutMs??t.extended?.maxIterations??t.extended?.maxToolCalls;K(e).recordBudgetDecision(t.subagentId,t.kind,t.decision,n),K(e).pushEvent(`budget.decision`,{subagentId:t.subagentId,kind:t.kind,decision:t.decision,newLimit:n},Date.now(),t.subagentId)},"subagent.budget_extended":e=>{let t=e.payload;K(e).recordBudgetExtended(t.subagentId,t.kind,t.extendedTo),K(e).pushEvent(`subagent.budget_extended`,t,Date.now(),t.subagentId)},"consensus.vote_initiated":e=>{let t=e.payload;K(e).pushConsensusVote(t.changeId,t.title,t.eligible),K(e).pushEvent(`consensus.vote_initiated`,t,Date.now()),Nt(e)&&k.info(`Vote started: `+t.title)},"consensus.vote_cast":e=>{let t=e.payload,n=K(e).consensusVotes.get(t.changeId)?.eligible.find(e=>e.agentId===t.voterId);K(e).recordConsensusVote(t.changeId,t.voterId,n?.agentName??t.voterId,t.value),K(e).pushEvent(`consensus.vote_cast`,t,Date.now(),t.voterId)},"consensus.vote_resolved":e=>{let t=e.payload;K(e).resolveConsensusVote(t.changeId,t.result,t.approveCount,t.rejectCount),K(e).pushEvent(`consensus.vote_resolved`,t,Date.now()),Nt(e)&&k.info(`Vote resolved: `+t.result+` (y`+t.approveCount+` n`+t.rejectCount+`)`)},"task.pending":e=>{let t=e.payload;K(e).pushTaskPending(t.taskId,t.description,t.priority),K(e).pushEvent(`task.pending`,t,Date.now())},"task.started":e=>{let t=e.payload;K(e).startTask(t.taskId,t.subagentId),K(e).pushEvent(`task.started`,t,Date.now(),t.subagentId)},"task.completed":e=>{let t=e.payload;K(e).completeTask(t.taskId,t.status,t.durationMs),K(e).pushEvent(`task.completed`,t,Date.now(),t.subagentId)},"task.failed":e=>{let t=e.payload;K(e).failTask(t.taskId,t.error),K(e).pushEvent(`task.failed`,{taskId:t.taskId,subagentId:t.subagentId,error:String(t.error).slice(0,120)},Date.now(),t.subagentId),Nt(e)&&k.error(`Task failed: `+String(t.error).slice(0,80))}};function Ft(){let e=M();e?.send?.({type:`mailbox.messages`,payload:{limit:30,incompleteOnly:!0}}),e?.send?.({type:`mailbox.agents`,payload:{}})}var It=null;function q(){It!==null&&clearTimeout(It),It=setTimeout(()=>{It=null,Ft()},300)}function Lt(e,t){return t?{...e,sessionId:t}:e}function Rt(e,n){let r=t.getState();return n&&r.fileSessionId!==n?r.filesBySession[n]?.hydratingPaths.has(e)??!1:r.hydratingPaths.has(e)}function zt(e,n=P()??x.getState().session?.id??null){let r=t.getState(),i=n&&r.fileSessionId!==n?r.filesBySession[n]:r,a=i?.openFiles??[],o=i?.projectIdentity??``;if(a.length===0){r.setProjectIdentity(e,n);return}if(o&&o!==e){r.clearOpenTabs(n),r.setProjectIdentity(e,n);return}r.setProjectIdentity(e,n);let s=a.filter(e=>e.content===``&&!e.dirty).map(e=>e.path);if(s.length===0)return;t.getState().setHydratingPaths(s,n);let c=M();for(let e of s)c?.send?.({type:`files.read`,payload:Lt({filePath:e},n)})}function Bt(e){let n=e.payload,r=O(e);if(n.error){t.getState().setError(n.error,r);return}t.getState().setTree(n.root,n.tree,r)}function Vt(e){let n=e.payload,r=O(e),i=t.getState();if(n.error){if(Rt(n.filePath,r)){i.hydrateFileFailed(n.filePath,r);return}i.setError(n.error,r);return}if(n.binary||n.tooLarge){if(Rt(n.filePath,r)){i.hydrateFileFailed(n.filePath,r);return}i.setError(n.binary?`Binary file not displayed: ${n.filePath}`:`File exceeds the 2 MB display limit: ${n.filePath}`,r);return}if(Rt(n.filePath,r)){i.hydrateFileContent(n.filePath,n.content,r);return}i.openFile(n.filePath,n.content,r),I.getState().setCurrentView(`files`)}function Ht(e){let n=e.payload,r=O(e);n.success?t.getState().markSaved(n.filePath,r):n.error&&t.getState().setError(`Save failed: ${n.error}`,r)}function Ut(e){let n=e.payload;!n.success&&n.error&&t.getState().setError(`Create failed: ${n.error}`,O(e))}function Wt(e){let n=e.payload,r=O(e);n.success?t.getState().closeFile(n.filePath,r):n.error&&t.getState().setError(`Delete failed: ${n.error}`,r)}function Gt(e){let n=e.payload,r=O(e);n.success?t.getState().closeFile(n.oldPath,r):n.error&&t.getState().setError(`Rename failed: ${n.error}`,r)}function Kt(e){let n=e.payload,r=O(e);n.success?t.getState().closeFile(n.srcPath,r):n.error&&t.getState().setError(`Move failed: ${n.error}`,r)}var qt=null,Jt=500;function Yt(e){let n=O(e);qt&&clearTimeout(qt),qt=setTimeout(()=>{qt=null;let e=x.getState().cwd;t.getState().setTreeLoading(!0,n),M().send({type:`files.tree`,payload:Lt({path:e},n)})},Jt)}function Xt(e){let t=w(`mailbox.event`,e.payload);t&&(N.getState().pushEvent(t),N.getState().setActive(!0)),q()}function Zt(e){let t=e.payload;t?.messages&&Ie.getState().setMessages(t.messages)}function Qt(e){let t=e.payload;t?.agents&&Ie.getState().setAgents(t.agents)}function $t(e){let t=w(`mailbox.received`,e.payload);t&&(N.getState().pushEvent(t),N.getState().setActive(!0)),q()}function en(e){q()}function tn(e){let t=e.payload;t?.agentId&&Ie.getState().removeAgent(t.agentId)}function nn(e){Ie.getState().setMessages([]),Ft()}function rn(e){q()}function an(e){let t=e.payload;t&&typeof t.totalRemoved==`number`&&Ie.getState().setLastCompaction({readByAllRemoved:t.readByAllRemoved??0,expiredRemoved:t.expiredRemoved??0,stalePurged:t.stalePurged??0,totalRemoved:t.totalRemoved,remaining:t.remaining??0}),q()}function on(e){let t=e.payload;if(t?.success){q();return}k.error(`Mailbox action failed: ${t?.error??`unknown error`}`)}var sn={"files.tree":Bt,"files.tree.changed":Yt,"files.read":Vt,"files.written":Ht,"files.created":Ut,"files.deleted":Wt,"files.renamed":Gt,"files.moved":Kt,"mailbox.event":Xt,"mailbox.messages":Zt,"mailbox.agents":Qt,"mailbox.received":$t,"mailbox.agent_registered":en,"mailbox.agent_deregistered":tn,"mailbox.cleared":nn,"mailbox.purged":rn,"mailbox.compacted":an,"mailbox.action_result":on};function cn(e){let t=e.payload;V.getState().setSnapshot(t.worktrees??[],t.baseBranch??``)}function ln(e){let t=e.payload;V.getState().pushEvent(t)}function un(e){let t=e.payload;V.getState().setOrphans(t.orphans??[],t.canClean??!1,t.reason)}function dn(e){let t=e.payload;V.getState().setCleanResult({...t,at:Date.now()})}function fn(e){let t=e.payload;V.getState().setMergeResult({...t,at:Date.now()})}function pn(e){let t=e.payload;V.getState().setDiff(t.dir,t.summary)}function mn(e){d.getState().applyEvent(e.payload);let t=w(`subagent.event`,e.payload);t&&(N.getState().pushEvent(t),N.getState().setActive(!0))}function hn(e){let t=n(e);t?.kind===`concurrency`&&d.setState({fleetConcurrency:t.active,fleetConcurrencyMax:t.maximum,...t.maxSpawns===void 0?{}:{fleetMaxSpawns:t.maxSpawns},...t.usedSpawns===void 0?{}:{fleetUsedSpawns:t.usedSpawns},...t.remainingSpawns===void 0?{}:{fleetRemainingSpawns:t.remainingSpawns},...t.effectiveSource===void 0?{}:{fleetBudgetSource:t.effectiveSource},...t.checkpointMaxSpawns===void 0?{}:{fleetCheckpointMaxSpawns:t.checkpointMaxSpawns},...t.ceilingMismatch===void 0?{}:{fleetCeilingMismatch:t.ceilingMismatch}})}function gn(e){let t=n(e);if(t?.kind!==`client-status`)return;let r=t.status;Ne.getState().setCurrentSession({clientType:r.clientType,clientId:r.clientId,agentCount:r.agentCount,model:r.model,mode:r.mode,toolCalls:r.toolCalls,inputTokens:r.inputTokens,outputTokens:r.outputTokens,cacheTokens:r.cacheTokens,costUsd:r.costUsd,timestamp:r.timestamp})}function _n(e){let t=n(e);if(t?.kind!==`sessions`)return;Ne.getState().setLiveSessions(t.sessions);let r=Date.now();if(r-yn>=5e3&&(yn=r,Ft()),r-vn<1e3)return;vn=r;let i=w(`sessions.status_update`,e.payload);i&&(N.getState().pushEvent(i),N.getState().setActive(!0))}var vn=0,yn=0,bn={"worktree.state":cn,"worktree.event":ln,"worktree.orphans":un,"worktree.cleanup_result":dn,"worktree.merge_result":fn,"worktree.diff_result":pn,"subagent.event":mn,"fleet.concurrency_update":hn,"client.status_update":gn,"sessions.status_update":_n};function xn(e,t){let n=e=>e.trim().replace(/\s+/g,` `).toLowerCase();return n(e)===n(t)}var Sn=50,Cn=200;function wn(e){return e.length<=300?e:`${e.slice(0,299)}…`}function Tn(e){return{...e,text:wn(e.text)}}function En(e){let t=[];for(let n of Object.values(e))n.state===`exited`&&t.push(n);if(t.length<=Cn)return e;t.sort((e,t)=>(t.exitedAt??t.lastSeenAt).localeCompare(e.exitedAt??e.lastSeenAt));let n={...e};for(let e of t.slice(Cn))delete n[e.id];return n}var Dn=Se(e=>({traces:[],contextMemories:{},transitions:[],pushTrace:t=>e(e=>{let n={...e.contextMemories},r=[...e.transitions],i=t.injected.map(Tn),a=t.activated.map(Tn);for(let e of i){let i=n[e.id];n[e.id]={...e,state:i?.state===`active`?`active`:`injected`,trigger:t.trigger,enteredAt:i?.enteredAt??t.at,lastSeenAt:t.at};let a=`${t.at}_injected_${e.id}`;r.some(e=>e.id===a)||r.unshift({id:a,at:t.at,memoryId:e.id,action:`injected`,reason:`${t.trigger} · score ${e.score.toFixed(2)}`})}return{traces:[{...t,activated:a,injected:i},...e.traces.filter(e=>e.runId!==t.runId)].slice(0,Sn),contextMemories:En(n),transitions:r.slice(0,100)}}),applyContextSnapshot:t=>e(e=>{let n={...e.contextMemories},r=[...e.transitions],i=new Set(t.activeMemoryIds);for(let e of t.activeMemoryIds){let r=n[e];n[e]=r?{...r,state:`active`,lastSeenAt:t.at,exitedAt:void 0}:On(e,t.at,`active`)}for(let e of t.enteredMemoryIds){let n=`${t.at}_entered_${e}`;r.some(e=>e.id===n)||r.unshift({id:n,at:t.at,memoryId:e,action:`entered`,reason:`present in provider request`})}for(let e of t.exitedMemoryIds){let i=n[e];i&&(n[e]={...i,state:`exited`,exitedAt:t.at});let a=`${t.at}_exited_${e}`;r.some(e=>e.id===a)||r.unshift({id:a,at:t.at,memoryId:e,action:`exited`,reason:`absent from provider request`})}for(let[e,a]of Object.entries(n))if((a.state===`injected`||a.state===`active`)&&!i.has(e)&&(n[e]={...a,state:`exited`,exitedAt:t.at},!t.exitedMemoryIds.includes(e))){let n=`${t.at}_exited_before_provider_${e}`;r.some(e=>e.id===n)||r.unshift({id:n,at:t.at,memoryId:e,action:`exited`,reason:a.state===`injected`?`removed before provider request`:`absent from provider context snapshot`})}return{contextMemories:En(n),transitions:r.slice(0,100)}}),resetContext:()=>e({contextMemories:{},transitions:[]}),clear:()=>e({traces:[],contextMemories:{},transitions:[]})}));function On(e,t,n){return{id:e,kind:`unknown`,text:`Memory details were not present in this UI process.`,score:0,relationStrength:0,anchors:[],tags:[],activationReasons:[],importance:0,confidence:0,freshness:0,persistence:`unknown`,state:n,trigger:`context snapshot`,enteredAt:t,lastSeenAt:t,isPlaceholder:!0}}var kn=100,An=new Set([`exited`,`superseded`,`archived`,`staled`,`contradicted`]);function jn(e,t=new Date){let n=e.event,r=J(e.memoryId),i=J(e.at)??t.toISOString(),a={id:`${n}_${t.getTime()}_${Math.random().toString(36).slice(2,7)}`,at:i,event:n};if(n===`memory.accepted`&&r)return{...a,action:`entered`,memoryId:r,label:`${r} entered memory`,detail:Nn(e)};if(n===`memory.merged`&&r){let t=Array.isArray(e.mergedIds)?e.mergedIds.length:0;return{...a,action:`merged`,memoryId:r,label:`${r} merged`,detail:t>0?`${t} records folded in`:void 0}}if(n===`memory.recovered`&&r)return{...a,action:`recovered`,memoryId:r,label:`${r} recovered`,detail:J(e.reason)};if(n===`memory.deleted`&&r)return{...a,action:`exited`,memoryId:r,label:`${r} exited memory`,detail:Pn(e)};if(n===`memory.updated`&&r){let t=J(e.status)??`updated`;return{...a,action:t===`deleted`?`exited`:`updated`,memoryId:r,label:t===`deleted`?`${r} exited memory`:`${r} updated → ${t}`,detail:Nn(e)}}if(n===`memory.graph_edge_added`){let t=J(e.from),n=J(e.to);if(!t?.startsWith(`mem:`)||!n?.startsWith(`mem:`))return null;let r=J(e.relation)??`related_to`,i=Y(e.weight),o=Array.isArray(e.evidence)?e.evidence.filter(e=>typeof e==`string`):[];return{...a,action:`related`,memoryId:t.startsWith(`mem:`)?t.slice(4):void 0,label:`${Fn(t)} ↔ ${Fn(n)}`,detail:[r,i===void 0?void 0:`weight ${i.toFixed(2)}`,o.length>0?`why: ${o.join(`, `)}`:void 0].filter(Boolean).join(` · `)}}return n===`memory.relationships_rebuilt`?{...a,action:`related`,label:`Memory relationships rebuilt`,detail:`${Y(e.added)??0} added / ${Y(e.proposed)??0} proposed`}:n===`memory.superseded`&&r?{...a,action:`superseded`,memoryId:r,label:`${r} → superseded`,detail:J(e.reason)??Nn(e)}:n===`memory.archived`&&r?{...a,action:`archived`,memoryId:r,label:`${r} → archived`,detail:J(e.reason)}:n===`memory.staled`&&r?{...a,action:`staled`,memoryId:r,label:`${r} → staled`,detail:J(e.reason)??`anchor drift detected`}:n===`memory.contradicted`&&r?{...a,action:`contradicted`,memoryId:r,label:`${r} → contradicted`,detail:J(e.reason)??`conflicting evidence`}:null}var Mn=Se(e=>({items:[],pushEvent:t=>e(e=>{let n=jn(t);return n?{items:[n,...An.has(n.action)?e.items.filter(e=>!(An.has(e.action)&&e.memoryId===n.memoryId)):e.items].slice(0,kn)}:e}),clear:()=>e({items:[]})}));function J(e){return typeof e==`string`&&e.length>0?e:void 0}function Y(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function Nn(e){let t=[J(e.kind),J(e.persistence)],n=Y(e.confidence),r=Y(e.freshness);return n!==void 0&&t.push(`confidence ${n.toFixed(2)}`),r!==void 0&&t.push(`freshness ${r.toFixed(2)}`),t.filter(Boolean).join(` · `)||void 0}function Pn(e){let t=J(e.reason),n=Y(e.removedEdges);return[t,n===void 0?void 0:`${n} edges removed`].filter(Boolean).join(` · `)||void 0}function Fn(e){let t=e.replace(/^mem:/,``);return t.length>26?`${t.slice(0,23)}…`:t}function In(e){return Pe.for(O(e)).getState()}function Ln(e){if(!e||e.length===0)return;let t=e.map(e=>e.status);return t.some(e=>e===`failed`)?`failed`:t.every(e=>e===`completed`||e===`skipped`)?`completed`:t.some(e=>e===`paused`)?`paused`:`running`}function Rn(e){let t=e.payload,n=Array.isArray(t.phases)?t.phases:void 0,r=Ln(n);z.getState().setState({phases:n,activePhaseId:typeof t.activePhaseId==`string`?t.activePhaseId:void 0,overallPercent:typeof t.overallPercent==`number`?t.overallPercent:void 0,autonomous:typeof t.autonomous==`boolean`?t.autonomous:void 0,title:typeof t.title==`string`?t.title:void 0,goal:typeof t.goal==`string`?t.goal:void 0,status:r,multiBoard:t.multiBoard===!0,lastError:r===`failed`?z.getState().lastError:null})}function zn(e){let t=e.payload,n={totalPhases:typeof t.totalPhases==`number`?t.totalPhases:0,completed:typeof t.completed==`number`?t.completed:0,failed:typeof t.failed==`number`?t.failed:0,totalTasks:typeof t.totalTasks==`number`?t.totalTasks:0,completedTasks:typeof t.completedTasks==`number`?t.completedTasks:0,failedTasks:typeof t.failedTasks==`number`?t.failedTasks:0};z.getState().setState({progress:n,overallPercent:typeof t.percentComplete==`number`?Math.round(t.percentComplete):void 0,status:n.failed>0||n.failedTasks>0?`failed`:`running`,lastEvent:`progress`})}function X(e){let t=e.payload,n=typeof t.title==`string`&&t.title?t.title:`Goal`,r=typeof t.error==`string`&&t.error?t.error:void 0;if(e.type===`goal.paused`){z.getState().setState({status:`paused`,autonomous:!1,lastEvent:`paused`}),k.info(`Goal paused`);return}if(e.type===`goal.resumed`){z.getState().setState({status:`running`,autonomous:!0,lastEvent:`resumed`}),k.info(`Goal resumed`);return}if(e.type===`goal.stopped`){z.getState().setState({status:`stopped`,autonomous:!1,lastEvent:`stopped`}),k.warn(`Goal stopped`);return}if(e.type===`goal.cleared`){z.getState().clear();return}if(e.type===`goal.reverted`){let e=t.ok===!0,n=typeof t.reverted==`number`?t.reverted:0,r=typeof t.reason==`string`?t.reason:void 0;e?k.success(n>0?`Reverted ${n} commit${n===1?``:`s`}`:`Nothing to revert`):k.error(`Revert failed: ${r??`unknown error`}`),z.getState().setState({lastEvent:`reverted`});return}if(e.type===`goal.saved`){z.getState().setState({lastEvent:`saved`}),k.success(`Goal graph saved`);return}if(e.type===`goal.completed`){z.getState().setState({status:`completed`,autonomous:!1,overallPercent:100,lastEvent:`completed`,lastError:null}),k.success(`${n} completed`);return}if(e.type===`goal.failed`||e.type===`goal.error`){let e=r??(typeof t.message==`string`?t.message:`${n} failed`);z.getState().setState({status:`failed`,autonomous:!1,lastEvent:`failed`,lastError:e}),k.error(e)}}function Bn(e){let t=e.payload;z.getState().setState({lastEvent:`list`,graphs:Array.isArray(t.graphs)?t.graphs:[]})}function Vn(e){let t=e.payload;Ae.getState().setGoal(t)}function Hn(e){let t=e.payload,n=O(e);if(ve.getState().applyRemote(t,n??void 0),t.yolo!==!0||n&&n!==ve.getState().activeSessionId)return;let r=I.getState().confirmInfo;r&&(f(r.id),I.getState().hideConfirm())}function Un(e){let t=e.payload;!t||!Array.isArray(t.variants)||g.getState().setInfo(t,t.sessionId)}function Wn(e){let t=A(e)??_(),n=e.payload,r;if(n.decision.type===`answer`){let e=n.decision.rationale&&n.decision.rationale!==n.decision.text?`\n\n_${n.decision.rationale}_`:``;r=`🧠 ${n.decision.text??``}${e}`}else r=n.decision.type===`deny`?`🧠 Denied: ${n.decision.reason??``}`:`🧠 The Brain escalated this question back to you — it needs human judgement.`;let i={kind:n.decision.type===`answer`?`answered`:n.decision.type===`deny`?`denied`:`ask_human`,question:n.question,decisionType:n.decision.type,text:n.decision.text,rationale:n.decision.rationale,reason:n.decision.reason,optionId:n.decision.optionId,at:Date.now()};t.addMessage({role:`assistant`,content:r,brainDecision:i})}function Gn(e){let t=A(e)??_(),n=e.payload,r=n.requestId??n.request?.id;if(r&&n.request?.question&&In(e).noteQuestion(r,n.request.question),n.event===`brain.council_vote`){In(e).recordVote(n);let t=n.requestId??`unknown`;N.getState().pushEvent({id:`council_${t}_${n.seatId??`seat-${Date.now()}`}`,kind:`brain:council_vote`,timestamp:Date.now(),source:n.model??n.persona??`seat`,target:`brain`,label:`${n.persona??`voter`} → ${n.status===`valid`?n.optionId??`stance`:n.status??`failed`}`,data:n,color:`#38bdf8`,flowGroup:`brain`});return}if(n.event===`brain.council_resolved`){In(e).recordResolution(n);let r=n.requestId??`unknown`,i=In(e).panels.find(e=>e.requestId===r),a=i?.seats??[],o=a.map(e=>`- **${e.persona}**${e.veto?` (veto)`:``} → ${e.status===`valid`?e.optionId??`stance`:e.status}${e.model?` · \`${e.model}\``:``}`),s=[`⚖️ **Council ${n.resolution??`resolved`}**`,`${n.validVoteCount??a.length}/${n.configuredSeatCount??a.length} seats`,`${n.distinctTargetCount??0} distinct target${n.distinctTargetCount===1?``:`s`}`,n.judgeUsed?`judge used`:void 0,n.usage?.totalTokens?`${n.usage.totalTokens} tok`:void 0].filter(Boolean).join(` · `),c={requestId:r,status:n.status??i?.status??`decided`,resolution:n.resolution??i?.resolution??`decided`,optionId:n.optionId??i?.optionId,question:i?.question??n.request?.question,reason:n.reason??i?.reason,configuredSeatCount:n.configuredSeatCount??i?.configuredSeatCount??a.length,validVoteCount:n.validVoteCount??i?.validVoteCount??a.length,distinctTargetCount:n.distinctTargetCount??i?.distinctTargetCount??new Set(a.map(e=>e.model||e.persona)).size,judgeUsed:!!(n.judgeUsed??i?.judgeUsed),totalTokens:n.usage?.totalTokens??i?.totalTokens,durationMs:n.usage?.durationMs??i?.durationMs,warnings:n.warnings??i?.warnings,seats:a.length>0?a:i?.seats??[]};t.addMessage({role:`assistant`,content:[s,...o,...(n.warnings??[]).map(e=>`> ⚠ ${e}`)].filter(Boolean).join(`
10
- `),councilDecision:c});for(let e of n.warnings??[])k.warn(e);return}if(n.event===`brain.intervention`){let e=n.decision?.rationale??n.decision?.text??``,r=n.intervened?`🧠 **Brain intervention** — corrective guidance was sent to the agent.`:`🧠 **Brain check** — a distress signal was reviewed; no action needed.`,i={id:n.requestId??n.request?.id,kind:n.intervened?`intervention`:`check`,intervened:!!n.intervened,question:n.request?.question,source:n.request?.source,risk:n.request?.risk,decisionType:n.decision?.type??(n.intervened?`steer`:`observe`),optionId:n.decision?.optionId,text:n.decision?.text,rationale:e,reason:n.decision?.reason,at:Date.now()};t.addMessage({role:`assistant`,content:[r,n.request?.question??``,e?`_${e}_`:``].filter(Boolean).join(`
11
-
12
- `),brainDecision:i}),n.intervened&&k.info(`Brain intervened: agent steered`)}else if(n.event===`brain.decision_denied`){let e=n.decision?.reason??n.request?.question??`request`,r={id:n.requestId??n.request?.id,kind:`denied`,question:n.request?.question,source:n.request?.source,risk:n.request?.risk,tier:n.tier,decisionType:`deny`,reason:e,rationale:n.decision?.rationale,at:Date.now()};t.addMessage({role:`assistant`,content:`🧠 Denied: ${e}`,brainDecision:r}),k.warn(`Brain denied: ${e}`)}else if(n.event===`brain.decision_answered`){let e=n.decision?.text??n.decision?.optionId??``,r=n.decision?.rationale??``,i={id:n.requestId??n.request?.id,kind:`answered`,question:n.request?.question,source:n.request?.source,risk:n.request?.risk,tier:n.tier,decisionType:n.decision?.type??`answer`,optionId:n.decision?.optionId,text:e,rationale:r,reason:n.decision?.reason,at:Date.now()};t.addMessage({role:`assistant`,content:`🧠 ${e}${r?`\n\n_${r}_`:``}`,brainDecision:i})}else if(n.event===`brain.decision_ask_human`){let e={id:n.requestId??n.request?.id,kind:`ask_human`,question:n.request?.question,source:n.request?.source,risk:n.request?.risk,tier:n.tier,decisionType:`ask_human`,rationale:n.decision?.rationale,reason:n.decision?.reason,at:Date.now()};t.addMessage({role:`assistant`,content:n.pending?`🧠 The Brain is waiting on you — this decision needs human judgement.`:`🧠 The Brain escalated this question back to you; no prompt is open for it.`,brainDecision:e})}}function Kn(e){let t=Dn.for(O(e)),n=Mn.for(O(e)),r=e.payload;N.getState().pushEvent({id:`memory_${Date.now()}_${Math.random().toString(36).slice(2,7)}`,kind:`memory:event`,timestamp:Date.now(),source:`sage`,target:`leader`,label:r.event.replace(/^memory\./,``),data:r,color:`#a78bfa`,flowGroup:`memory`}),r.event===`memory.injector_run`&&t.getState().pushTrace(r),r.event===`memory.context_snapshot`&&t.getState().applyContextSnapshot(r),n.getState().pushEvent(r),r.event===`memory.staled`?k.warn(`Memory became stale: ${String(r.memoryId??``)}`):r.event===`memory.contradicted`?k.warn(`Memory contradicted: ${String(r.memoryId??``)}`):r.event===`memory.hygiene_completed`&&k.info(`SAGE hygiene completed`)}function qn(e){let t=e.payload,n=typeof t.kind==`string`?t.kind:typeof t.event==`string`?t.event:`collab.event`;N.getState().pushEvent({id:`collab_${Date.now()}_${Math.random().toString(36).slice(2,7)}`,kind:`collab:event`,timestamp:Date.now(),source:`collab`,target:typeof t.sessionId==`string`?t.sessionId:`session`,label:n,magnitude:1,data:t,raw:e.payload,color:`hsl(200, 70%, 55%)`,flowGroup:`collab`}),N.getState().setActive(!0)}function Jn(e){qn(e);let t=e.payload;t?.phase===`consumed`?k.success(`Tool injection applied${t.toolName?` to ${t.toolName}`:``}`):k.info(`Collab tool injection queued`)}function Yn(e){let t=e.payload?.entry;if(!t)return;let n=typeof t.iteration==`number`?t.iteration:0,r=typeof t.task==`string`?t.task:void 0,i=typeof t.status==`string`?t.status:void 0,a=typeof t.at==`string`?t.at:new Date().toISOString();Ae.getState().appendJournalEntry({iteration:n,task:r,status:i,timestamp:a}),N.getState().pushEvent({id:`eternal_${Date.now()}_${n}`,kind:`eternal:iteration`,timestamp:Date.now(),source:`eternal`,target:`goal`,label:r?`L${n}: ${r}`:`Eternal iteration ${n}`,magnitude:typeof t.costUsd==`number`?t.costUsd:1,data:t,raw:e.payload,color:i===`failure`?`hsl(0, 80%, 55%)`:`hsl(220, 80%, 60%)`,flowGroup:`eternal`}),N.getState().setActive(!0)}function Xn(e){let n=e.payload,r=O(e);x.getState().setEnv({cwd:n.cwd,projectRoot:n.projectRoot,projectName:n.projectRoot.split(/[/\\]/).pop()||n.projectRoot}),t.getState().setTreeLoading(!0,r),zt(n.projectRoot,r),M().send({type:`files.tree`,payload:r?{path:n.cwd,sessionId:r}:{path:n.cwd}})}function Zn(e){let t=e.payload,n=I.getState().refinePanel,r=O(e)??n?.sessionId??null,i=A(e)??(r?te(r):null),a=i?.pendingRefinement??null;if(n?.sessionId&&r&&n.sessionId!==r||n?.sessionId&&!i)return;if(!n&&a&&i){i.setRefining(!1);let e=a.text,n=a.images?.length?a.images.map((e,t)=>({id:`pr_${Date.now()}_${t}`,dataUrl:`data:${e.mime};base64,${e.data}`,mediaType:e.mime,bytes:Math.round(e.data.length*3/4)})):void 0,r=n&&n.length>0&&a.mode===`btw`?`queue`:a.mode??`queue`;if(t.error){i.setPendingRefinement(null),i.enqueue(e,r,n);return}let o=t.refined??``;if(!o||xn(o,e)){i.setPendingRefinement(null),i.enqueue(e,r,n);return}i.setPendingRefinement(null),I.getState().setRefinePanel({original:e,refined:o,english:t.english||o,status:`ready`,mode:n&&n.length>0&&a.mode===`btw`?`queue`:a.mode,images:n,...t.refinedWith?{provider:t.refinedWith.provider,model:t.refinedWith.model}:{},error:void 0,errorKind:void 0,sessionId:i.sessionId,resolve:()=>{}});return}if(!n)return;if(t.error){if(t.errorKind===`timeout`&&!n.retried&&t.retryTimeoutMs){I.getState().setRefinePanel({...n,status:`refining`,retried:!0}),M().refineModel(n.original,{timeoutMs:t.retryTimeoutMs});return}I.getState().setRefinePanel({...n,status:`failed`,error:t.error,errorKind:t.errorKind,fallbackRef:t.fallbackRef});return}let o=n.original;if(xn(t.refined,o)){I.getState().setRefinePanel(null);let e=i??_();e.addMessage({role:`user`,content:o}),e.setLoading(!0);let t=e.sessionId===`__unbound__`?void 0:e.sessionId;M().sendMessage(o,void 0,!1,t);return}I.getState().setRefinePanel({...n,status:`ready`,refined:t.refined,english:t.english,...t.refinedWith?{provider:t.refinedWith.provider,model:t.refinedWith.model}:{},error:void 0,errorKind:void 0})}function Qn(e){let t=e.payload;Ee.getState().setInfo({...t,fetchedAt:Date.now()})}function $n(e){let t=e.payload;m.getState().setFiles(t.files??[],t.error??null,t.repoPrefix??``,t.dirs??{})}function er(e){let t=e.payload;m.getState().selectedPath===t.path&&m.getState().setDiff({path:t.path,oldText:t.oldText??``,newText:t.newText??``,binary:t.binary,tooLarge:t.tooLarge,error:t.error})}function tr(e){let t=e.payload;if(!t.ok){k.error(t.error??`Git ${t.action} failed`);return}let n=M();n.getGitChanges(),n.getGitInfo()}function nr(e){let t=e.payload;Fe.getState().setSnapshot({count:t.count,maxConcurrent:t.maxConcurrent,jobs:t.jobs??[]})}function rr(e){let t=e.payload;Fe.getState().recordFired(t.name,t.ts)}function ir(e){let t=e.payload;k.info(t.message??`🦂 Chimera report ready. No follow-up started; open the mailbox to inspect it.`,8e3);let n=O(e);!t.reportId||!n||!v.getState().recordReport({reportId:t.reportId,sessionId:n,message:t.message??``,findingCount:t.findingCount??0,fileCount:t.fileCount??0,hasActionableFindings:t.hasActionableFindings===!0,receivedAt:Date.now(),actionedAt:null,source:`event`})||t.hasActionableFindings!==!0||A(e)?.addMessage({role:`system`,content:t.message??`🦂 Chimera report ${t.reportId} is ready — findings await review.`,chimeraReport:{reportId:t.reportId,actionable:!0,actionedAt:null}})}function ar(e){let t=O(e);if(!t)return;let n=e.payload.reports??[];v.getState().hydrateReports(t,n.filter(e=>e.reportId&&e.totalFindings>0&&e.lifecycleStatus!==`completed`&&e.lifecycleStatus!==`skipped`).map(e=>{let n=Date.parse(e.reviewedAt);return{reportId:e.reportId,sessionId:t,message:`🦂 Chimera report ready — ${e.totalFindings} finding(s) recorded for this session.`,findingCount:e.totalFindings,fileCount:0,hasActionableFindings:e.hasActionableFindings===!0,receivedAt:Number.isFinite(n)?n:Date.now(),actionedAt:null,source:`hydrate`}}))}var or={"goal-state.updated":Vn,"prefs.updated":Hn,"system_prompt.info":Un,"goal.state":Rn,"goal.progress":zn,"goal.paused":X,"goal.resumed":X,"goal.stopped":X,"goal.cleared":X,"goal.reverted":X,"goal.saved":X,"goal.completed":X,"goal.failed":X,"goal.error":X,"goal.list":Bn,"brain.answer":Wn,"brain.event":Gn,"memory.event":Kn,"collab.event":qn,"collab.injection.granted":Jn,"eternal.iteration":Yn,"working_dir.changed":Xn,"model.refine_result":Zn,"git.info":Qn,"git.changes":$n,"git.diff":er,"git.action_result":tr,"cron.snapshot":nr,"cron.job_fired":rr,"chimera.report_available":ir,"chimera.reports":ar},sr=new Map;function cr(e){let t=e??`__unbound__`,n=sr.get(t);if(n)return n;let r=new Set;return sr.set(t,r),r}function lr(e=_()){c.flush(`__thinking__:${e.sessionId}`);let t=me(e.sessionId).iteration;e.flushThinkingLog(Math.max(1,t?.index??1)),e.clearThinking()}function ur(e){let t=A(e);if(!t)return;let n=e.payload,r=e=>e.toLocaleString(),i=[...n.tools.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8),a=[...n.messages.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8);t.addMessage({role:`assistant`,content:[`📊 **Context breakdown** (heuristic — 4 chars/token)`,``,`**Total estimate:** ${r(n.total)} tokens`,`• System prompt: ${r(n.systemPrompt)}`,`• Tool schemas: ${r(n.tools.total)} (${n.tools.count} tools)`,`• Messages: ${r(n.messages.total)} (${n.messages.count} messages)`,``,`**Top tool schemas:**`,...i.map(e=>` · ${e.name}: ${r(e.tokens)}`),``,`**Top messages:**`,...a.map(e=>` · #${e.index} ${e.role}: ${r(e.tokens)} — ${e.preview||`(empty)`}`)].join(`
13
- `)})}function dr(e){let t=e.payload;if(!t||typeof t.message!=`string`||t.message.startsWith(`Resumed session`)||t.message.includes(`Session is already active`)||t.message.startsWith(`Swapped session`))return;let n=O(e);if(n&&n!==r()){t.success||S.getState().setAttention(n,!0);return}t.success?k.success(t.message):k.error(t.message),M(T.getState().wsUrl).listSavedProviders()}function fr(e){let t=e.payload;if(!t.success||!t.provider||!t.model)return;let n=A(e),i=D(e);if(!n||!i)return;let a=i.data.session;i.setSession({id:a?.id??n.sessionId,startedAt:a?.startedAt??Date.now(),provider:t.provider,model:t.model,...a?.title?{title:a.title}:{}}),n.sessionId===r()&&(T.getState().setProvider(t.provider),T.getState().setModel(t.model));let o=t.previousProvider&&t.previousModel?`${t.previousProvider} / ${t.previousModel}`:_e.t(`settings:toast.previousModel`),s=`${t.provider} / ${t.model}`;n.addMessage({role:`system`,content:_e.t(t.runActive?`settings:toast.modelSwitchedRunActive`:`settings:toast.modelSwitchedNextRequest`,{from:o,to:s})})}function pr(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=n.reductions.length?n.reductions.map(e=>`${e.phase}: ${e.saved}`).join(`, `):`no-op`;n.repaired&&(r+=`; repaired ${n.repaired.removedToolUses?.length??0} tool_use, ${n.repaired.removedToolResults?.length??0} tool_result, ${n.repaired.removedMessages} empty messages`),t.addMessage({role:`system`,content:`🗜️ Context compacted: ${n.before} → ${n.after} tokens (saved ~${n.saved}). ${r}`}),D(e)?.patch({lastInputTokens:n.after})}function mr(e){let t=A(e);if(!t)return;j(e);let n=e.payload,i,a;n.budget&&n.budget.availableInputTokens>0?(i=Math.min(100,Math.max(0,Math.round(n.budget.load*100))),a=`input budget`):(i=n.maxContext>0?Math.min(100,Math.max(0,Math.round(n.tokens/n.maxContext*100))):0,a=`context`),t.addMessage({role:`assistant`,content:`Compaction failed at ${n.level} (${i}% ${a}): ${n.message}`,isError:n.fatal}),t.sessionId===r()&&k.error(`Compaction failed: ${n.message}`)}function hr(e){if(!ie(e))return;let t=e.payload,n=`${t.tool}: ${t.pattern}`;t.decision===`always`?k.success(`Always allowed ${n}`):k.warn(`Denied ${n}`)}function gr(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=n.removedToolUses.length+n.removedToolResults.length+n.removedMessages,i=n.beforeMessages!==void 0&&n.afterMessages!==void 0?` Messages: ${n.beforeMessages} -> ${n.afterMessages}.`:``;t.addMessage({role:`assistant`,content:`Context repaired: removed ${r} orphan protocol item(s).${i} tool_use ${n.removedToolUses.length}, tool_result ${n.removedToolResults.length}.`})}function _r(e){let t=D(e);if(!t)return;j(e);let n=e.payload;t.setContextUsage(n.tokens,n.maxContext)}function vr(e){let t=D(e);if(!t)return;let n=e.payload;t.setEnvRates({maxContext:n.maxContext});let r=t.data;n.source===`provider`&&n.decreased===!0&&typeof n.previousMaxContext==`number`&&n.previousMaxContext>n.maxContext?t.setContextLimitWarning({previousMaxContext:n.previousMaxContext,maxContext:n.maxContext,providerId:n.providerId??r.session?.provider??`provider`,modelId:n.modelId??r.session?.model??`model`}):(n.decreased===!1||n.source===`configured`)&&t.setContextLimitWarning(null)}function yr(e){let t=D(e);if(!t)return;let n=e.payload;t.setContextUsage(n.used,n.limit);let i=n.limit>0?Math.round(n.used/n.limit*100):0;t.sessionId===r()&&k.warn(`Token threshold reached (${i}%)`)}function br(e){let t=O(e),n=e.payload.model||`<unknown>`,i=cr(t);i.has(n)||(i.add(n),(!t||t===r())&&k.warn(`Cost estimate unavailable for ${n}`))}function xr(e){let t=e.payload;re({contextModes:t.modes.map(e=>({id:e.id,name:e.name,description:e.description,thresholds:e.thresholds,preserveK:e.preserveK,eliseThreshold:e.eliseThreshold,custom:e.custom}))}),(D(e)??null)?.setEnvRates({contextMode:t.activeId})}function Sr(e){let t=D(e);if(!t)return;let n=e.payload;t.setEnvRates({contextMode:n.id})}function Cr(e){let t=e.payload;typeof t.sessionId==`string`&&t.sessionId.length!==0&&a.getState().update(t.sessionId,{stage:typeof t.stage==`string`?t.stage:`open_journal`,loadedBytes:typeof t.loadedBytes==`number`?t.loadedBytes:0,totalBytes:typeof t.totalBytes==`number`?t.totalBytes:0})}function wr(e){let t=e.payload;if(t.phase===`session.resume`||t.phase===`session.focus`){let n=typeof t.requestedSessionId==`string`?t.requestedSessionId:O(e);n&&a.getState().end(n)}if(t.phase===`todos.get`||typeof t.requestedSessionId==`string`)return;if(t.code===`session_not_ready`){let n=O(e),r=typeof t.content==`string`?t.content:``;if(n&&r){let i=Array.isArray(t.images)?t.images:void 0,a=M();if(a.armNotReadyResend(n,{content:r,freshContext:t.freshContext===!0,...i?{images:i}:{}})){a.resumeSession(n);let t=A(e);t?.addMessage({role:`assistant`,content:`ℹ️ Session is reopening — your message will be resent automatically.`}),t?.setLoading(!1);return}}}let n=A(e)??_();lr(n),n.addMessage({role:`assistant`,content:`[${t.phase}] ${t.message}`,isError:!0}),n.setLoading(!1)}function Tr(e,t=180){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1)}…`:n}var Er=640;function Dr(){let[e,t]=(0,H.useState)({isMobile:!1,isSmall:!1,width:0});return(0,H.useEffect)(()=>{if(typeof window>`u`)return;let e=window.matchMedia(`(max-width: 768px)`),n=window.matchMedia(`(max-width: ${Er}px)`),r=()=>{t({isMobile:e.matches,isSmall:n.matches,width:window.innerWidth})};return r(),e.addEventListener(`change`,r),n.addEventListener(`change`,r),()=>{e.removeEventListener(`change`,r),n.removeEventListener(`change`,r)}},[]),e}function Or(){return typeof window>`u`?!1:window.matchMedia(`(max-width: 768px)`).matches}var kr=`<!-- wrongstack-bug-hunt`,Ar=/^<!-- wrongstack-bug-hunt scope="([^"]*)" max-bugs="([123])" -->\n/;function jr(e,t){return`${kr} scope="${encodeURIComponent(t.scope)}" max-bugs="${t.maxBugs}" -->\n${e}`}function Mr(e){let t=Ar.exec(e);if(t)try{return{scope:decodeURIComponent(t[1]??``),maxBugs:Number(t[2])}}catch{return}}var Nr=[`ratchet`,`audit`,`triage`,`memory`,`io`,`cpu`,`guard`,`contract`],Pr=[`wall-ms`,`p99-latency-ms`,`peak-rss-bytes`,`throughput-ops`,`allocs-per-op`,`cold-start-ms`,`bundle-bytes`],Fr={ratchet:`Performance Ratchet`,audit:`Performance Audit`,triage:`Performance Triage`,memory:`Memory & Retention Hunt`,io:`I/O & Concurrency Analysis`,cpu:`CPU Hot Path Reduction`,guard:`Regression Guard Setup`,contract:`Performance Contract`},Ir={"wall-ms":`Wall time`,"p99-latency-ms":`p99 latency`,"peak-rss-bytes":`Peak RSS`,"throughput-ops":`Throughput`,"allocs-per-op":`Allocations/op`,"cold-start-ms":`Cold start`,"bundle-bytes":`Bundle size`},Lr={ratchet:`elite-performance-ratchet`,audit:`performance-baseline-audit`,triage:`performance-quick-triage`,memory:`performance-memory-hunt`,io:`performance-io-concurrency`,cpu:`performance-cpu-hot-path`,guard:`performance-regression-guard`,contract:`performance-contract`},Rr=new Set([`ratchet`,`cpu`,`guard`]),zr=`<!-- wrongstack-perf-run`,Br=/^<!-- wrongstack-perf-run scope="([^"]*)" mode="([a-z]+)" metric="([a-z0-9-]*)" -->\n/;function Vr(e){return Nr.includes(e)}function Hr(e){return Pr.includes(e)}function Ur(e,t){return`${zr} scope="${encodeURIComponent(t.scope)}" mode="${t.mode}" metric="${t.metric}" -->\n${e}`}function Wr(e){let t=Br.exec(e);if(!t)return;let n=t[2]??``,r=t[3]??``;if(Vr(n))try{return{scope:decodeURIComponent(t[1]??``),mode:n,metric:Hr(r)?r:``}}catch{return}}function Gr(e){if(typeof e!=`string`)return Date.now();let t=Date.parse(e);return Number.isFinite(t)?t:Date.now()}function Kr(e){return`replay_${Date.now()}_${e}`}function qr(){return typeof window>`u`?!1:window.location.pathname===`/debug`||window.location.pathname===`/analytics`||window.location.pathname===`/refresh-debug`}function Jr(e){return typeof e==`string`?e:Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).join(`
14
- `):``}function Yr(e){if(typeof e==`string`)return e.trim();if(!e||typeof e!=`object`||Array.isArray(e))return``;let t=e;for(let e of[`id`,`name`,`type`]){let n=t[e];if(typeof n==`string`&&n.trim())return n.trim()}return``}function Xr(e,t=[],n=[]){let r=Qe({messages:(Array.isArray(e)?e:[]).filter(e=>!!(e&&typeof e==`object`&&typeof e.role==`string`&&(e.role===`user`||e.role===`assistant`||e.role===`system`))),markers:t.filter(e=>!Qr(e.source)),toolMeta:n,thinkingPlacement:`merged-after`}),i=[];for(let e of r){let t=Gr(e.ts),n=Kr(i.length);switch(e.kind){case`user`:{let r=Mr(e.text),a=Wr(e.text);i.push({id:n,role:`user`,content:e.text,timestamp:t,...r?{bugHunt:r}:{},...a?{perfRun:a}:{},...e.images?{attachments:$r(e.images,n)}:{}});break}case`assistant`:i.push({id:n,role:`assistant`,content:e.text,timestamp:t});break;case`system`:i.push({id:n,role:`system`,content:e.text,timestamp:t});break;case`thinking`:i.push({id:n,role:`system`,content:``,timestamp:t,thinkingLog:{iteration:e.index,text:e.text,startedAt:t,durationMs:0,replayed:!0}});break;case`tool`:i.push({id:n,role:`tool`,content:``,toolName:e.name,toolInput:e.input,toolUseId:e.toolUseId,timestamp:t,...e.output===void 0?{}:{toolResult:e.output},...e.ok===void 0?{}:{isError:!e.ok},...e.durationMs===void 0?{}:{toolDurationMs:e.durationMs}});break;case`marker`:i.push({id:n,role:`system`,content:e.text,timestamp:t,isError:e.level===`error`||void 0})}}return i}var Zr=new Set([`agent_spawned`,`agent_session_linked`,`agent_stopped`,`agent_error`,`delegate_started`,`delegate_completed`]);function Qr(e){return Zr.has(e)}function $r(e,t){return e.map((e,n)=>{let r=e.mediaType??`image/png`,i=e.data?`data:${r};base64,${e.data}`:e.url;return{id:`${t}_img_${n}`,kind:`image`,mediaType:r,bytes:e.data?Math.floor(e.data.length*3/4):0,...i?{dataUrl:i}:{}}})}function ei(e){let n=w(`session.start`,e.payload);n&&(N.getState().pushEvent(n),N.getState().setActive(!0));let s=e?.payload&&typeof e.payload==`object`?e.payload:{},c=s.sessionId;if(!c)return;a.getState().end(c),`openSessionIds`in s&&ce(Array.isArray(s.openSessionIds)?s.openSessionIds.filter(e=>typeof e==`string`):[]),(s.appVersion||s.latestVersion)&&re({appVersion:String(s.appVersion??``),latestVersion:String(s.latestVersion??``),updateAvailable:!!s.updateAvailable}),Array.isArray(s.providerStatuses)&&Me.getState().hydrate(s.providerStatuses.map(e=>({providerId:e.providerId,model:e.model,state:e.state,reason:e.lastErrorKind??e.state,updatedAt:e.lastFailureAt??Date.now(),stateExpiresAt:e.stateExpiresAt??void 0}))),s.needsSetup&&Le(`setup`);let l={};s.projectRoot!==void 0&&(l.projectRoot=s.projectRoot),s.projectName!==void 0&&(l.projectName=s.projectName),s.cwd!==void 0&&(l.cwd=s.cwd),Object.keys(l).length>0&&re(l);let u=!i(c);he(c),oe(c),o(c),se(c);let f=te(c),p=pe(c),m=T.getState(),h=p.data.session,g=Yr(s.provider),_=Yr(s.model),v=g||h?.provider||m.provider||``,y=_||h?.model||m.model||``,b=typeof s.startedAt==`string`?Date.parse(s.startedAt):NaN,ie=Number.isFinite(b)?b:Date.now(),C=!!s.isRunning,ae=ti(c),ue=s.replayReason===`focus`,de=!u&&(ue||r()!==c),E=u||s.reset===!0&&!de;E?(p.startSession({id:c,startedAt:ie,model:y,provider:v}),Dn.for(c).getState().clear()):p.setSession({id:c,startedAt:h?.startedAt??ie,model:y,provider:v,...h?.title?{title:h.title}:{}}),p.setEnvRates({maxContext:s.maxContext,mode:s.mode,contextMode:s.contextMode,inputCost:s.inputCost,outputCost:s.outputCost,cacheReadCost:s.cacheReadCost,reasoningEffortLevels:s.reasoningEffortLevels,hasReasoningEffortKey:`reasoningEffortLevels`in s,effortSupported:s.effortSupported===!0||s.effortSupported===!1?s.effortSupported:void 0,hasEffortSupportedKey:`effortSupported`in s,projectReasoningEffort:typeof s.projectReasoningEffort==`string`?s.projectReasoningEffort:void 0,hasProjectEffortKey:`projectReasoningEffort`in s});let D=s.replayMessages,fe=Array.isArray(D)&&D.length>0,O=fe?Xr(D,s.replayMarkers??[],s.replayToolMeta??[]):[],me=f.messages.length>0,k=me&&(C||de&&!ae);if(s.replayReason===`redisplay`&&me&&O.length>0){let e=f.messages[0]?.timestamp??0,t=O.filter(t=>t.timestamp<e);t.length>0&&f.setMessages([...t,...f.messages])}else O.length>0&&!k?f.setMessages(O):E&&s.reset===!0&&O.length===0&&!C&&f.clearMessages();C||f.clearThinking(),f.setLoading(C);let A=s.replayUsage;if(D&&A){let e=p.data,t=A.input??0,n=A.output??0,r=A.cacheRead??0,i=A.cacheWrite??0;p.patch({totalTokens:{input:t,output:n,cacheRead:r,cacheWrite:i},cost:((t+i)*e.inputCost+n*e.outputCost+r*e.cacheReadCost)/1e6})}let j=s.lastInputTokens;typeof j==`number`&&j>0&&p.patch({lastInputTokens:j});let P=s.clearedSessionId;if(P){let e=new Map;for(let[t,n]of d.getState().agents)n.sessionId!==P&&e.set(t,n);d.setState({agents:e}),S.getState().swapTabSession(P,c)}Array.isArray(s.agentSessions)&&s.agentSessions.length>0&&d.getState().hydrateAgentSessions(s.agentSessions,c);let F=r(),ge=F===`__unbound__`||!i(F),_e=S.getState(),ve=E&&!fe&&!s.needsSetup&&!Ve()&&!qr()?{currentView:I.getState().currentView,activeActivity:I.getState().activeActivity,sidebarOpen:I.getState().sidebarOpen}:null;!ae&&!ge&&F!==c||(_e.openTabIds.includes(c)?(ee(c),le(c),ne(c),_e.markSeen(c)):_e.openTab(c,{}),v&&y?T.getState().setConfig({provider:v,model:y}):v&&T.getState().setConfig({provider:v}),U(C?`running`:`ready`),E&&(!s.needsSetup&&Ve()&&!qr()&&xe({sidebarOpen:!1}),I.getState().setSearchActiveMessageId(null),t.getState().setTreeLoading(!0,c),zt(x.getState().projectRoot,c),M().send({type:`files.tree`,payload:{path:x.getState().cwd,sessionId:c}})),ve&&I.setState(ve),fe&&!s.needsSetup&&!qr()&&(Ve()?xe({sidebarOpen:!1}):I.getState().currentView!==`chat`&&Re(`chat`)),fe&&Or()&&I.getState().setSidebarOpen(!1))}function ti(e){try{return M().consumeRequestedSwitch(e)}catch{return!1}}function Z(e,t){e.sessionId===r()&&t()}function ni(e){let t=A(e),n=D(e);if(!t||!n)return;j(e);let r=e.payload&&typeof e.payload==`object`?e.payload:{},i=Jr(r.content),a=r.usage,o=(a?.input??0)+(a?.cacheRead??0)+(a?.cacheWrite??0);if(o>0&&n.patch({lastInputTokens:o}),r.usage){n.updateUsage(r.usage,r.provider);let{inputCost:e,outputCost:t,cacheReadCost:i}=n.data,a=((r.usage.input??0)*e+(r.usage.cacheWrite??0)*e+(r.usage.output??0)*t+(r.usage.cacheRead??0)*i)/1e6;a>0&&n.addCost(a)}let s=l(r.stopReason);s&&t.setLoading(!1);let u=t.currentAssistantMessageId;if(u){c.flush(u);let e=t.messages.find(e=>e.id===u)?.content??``;i.trim()&&(e.trim()?i.startsWith(e)&&i.length>e.length&&t.updateMessage(u,{content:i}):t.updateMessage(u,{content:i})),t.finalizeMessage(u,{final:s}),r.usage&&(r.usage.output??0)>0&&t.updateMessage(u,{usage:r.usage})}else if(i.trim()){let e=t.addMessage({role:`assistant`,content:i,usage:r.usage&&(r.usage.output??0)>0?r.usage:void 0});t.finalizeMessage(e,{final:s})}t.setCurrentAssistantMessage(null),c.flush(`__thinking__:${t.sessionId}`),t.clearThinking()}function ri(e){let t=A(e);if(!t)return;j(e);let n=e.payload;c.flush(`__thinking__:${t.sessionId}`),t.flushThinkingLog(n.index),t.clearThinking();let r=D(e),i=r?.data.iteration;r&&i&&r.setIteration({index:n.index,max:i.max})}function ii(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:`Iteration limit reached: ${n.currentIterations}/${n.currentLimit}.`,isError:!0}),Z(t,()=>k.warn(`Iteration limit reached (${n.currentIterations}/${n.currentLimit})`))}function ai(e){let t=A(e);if(!t)return;let n=e.payload,r=Math.max(0,Math.round(n.delayMs/100)/10);Z(t,()=>k.warn(`${n.providerId} retry ${n.attempt} after ${r}s (${n.status})`))}function oi(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:[`Provider error from \`${n.providerId}\` (${n.status}).`,n.description,n.retryable?`_Retryable; WrongStack may recover automatically._`:``].filter(Boolean).join(`
15
-
16
- `),isError:!0}),Z(t,()=>k.error(`${n.providerId} provider error (${n.status})`))}function si(e,t,n){let i=D(t),a=i?.data.session;i&&a&&i.setSession({...a,provider:n.providerId,model:n.model}),e.sessionId===r()&&T.getState().setConfig({provider:n.providerId,model:n.model})}function ci(e){let t=A(e);if(!t)return;let n=e.payload,i=`${n.from.providerId}/${n.from.model}`,a=`${n.to.providerId}/${n.to.model}`;si(t,e,n.to),t.addMessage({role:`assistant`,content:`Provider fallback: \`${i}\` returned ${n.status}; switching to \`${a}\`${n.providerSwitched?` with provider change`:``}.`}),Z(t,()=>k.warn(`Fallback to ${a}`)),de(t.sessionId).pendingFallback&&t.setPendingFallback(null);let o=s.getState().pending;o&&t.sessionId===r()&&o.from.providerId===n.from.providerId&&o.from.model===n.from.model&&(typeof n.requestId==`string`&&n.requestId.length>0&&o.requestId!==n.requestId||s.getState().clear())}function li(e){let t=A(e);if(!t)return;let n=e.payload,r=`${n.to.providerId}/${n.to.model}`,i=n.from?`${n.from.providerId}/${n.from.model}`:``;si(t,e,n.to),t.addMessage({role:`assistant`,content:i?`Model switched: \`${i}\` → \`${r}\``:`Model switched to \`${r}\``}),Z(t,()=>k.info(`Model: ${r}`))}function ui(e){let t=A(e);if(!t)return;let n=e.payload,i={requestId:n.requestId,from:n.from,status:n.status,candidates:n.candidates,autoSwitchSeconds:n.autoSwitchSeconds,timestamp:Date.now()};if(t.setPendingFallback(i),t.sessionId===r()){s.getState().setPending(i);return}S.getState().setAttention(t.sessionId,!0)}function di(e){let t=e.payload;Me.getState().update({providerId:t.providerId,model:t.model,state:t.newState,reason:t.reason,updatedAt:t.timestamp,stateExpiresAt:t.stateExpiresAt,lastErrorKind:t.lastErrorKind,lastErrorStatus:t.lastErrorStatus??void 0,lastErrorMessage:t.lastErrorMessage??void 0,lastSessionId:t.lastSessionId??void 0,lastAgentId:t.lastAgentId??void 0});let n=`${t.providerId}/${t.model}`;t.newState===`blocked`&&t.oldState!==`blocked`?k.warn(`${n} entered the limit-reset waiting room`):t.newState===`healthy`&&t.oldState!==`healthy`&&k.success(`${n} recovered and rejoined model routing`)}function fi(e){let t=e.payload;if(t&&typeof t==`object`&&`error`in t){Me.getState().setError(`Provider status tracking not available`);return}Me.getState().applySnapshot(t)}function pi(e){let t=e.payload,n=Array.isArray(t?.lines)?t.lines:[],r=[];for(let e of n){if(!e||typeof e!=`object`)continue;let t=e,n=typeof t.providerId==`string`?t.providerId:``,i=typeof t.model==`string`?t.model:``,a=t.from,o=t.to;if(!n||!i||a!==`healthy`&&a!==`degraded`&&a!==`blocked`||o!==`healthy`&&o!==`degraded`&&o!==`blocked`)continue;let s=t.error??null;r.push({ts:typeof t.ts==`number`?t.ts:0,providerId:n,model:i,from:a,to:o,reason:typeof t.reason==`string`?t.reason:``,expiresAt:typeof t.expiresAt==`number`?t.expiresAt:null,error:s})}Me.getState().setAudit(r)}function mi(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:`Waiting room skipped \`${n.providerId}/${n.model}\`. ${n.lastError}`})}function hi(e){let t=A(e);if(!t)return;j(e);let n=e.payload;Z(t,()=>k.warn(`Provider stream event skipped: ${n.eventType}`)),t.addMessage({role:`assistant`,content:`Provider stream warning (${n.eventType}): ${n.message}`,isError:!0})}function gi(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=n.tools||n.kind||`assistant response`;if(n.action===`steer`){Z(t,()=>k.info(`Possible repetition noticed for ${r}; changing approach.`));return}t.addMessage({role:`assistant`,content:`Loop guard stopped the turn: ${r} made no progress ${n.repeatCount} time(s) (iteration ${n.iteration+1}).`,isError:!0}),Z(t,()=>k.warn(`Loop guard stopped the turn`))}function _i(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=Tr(n.task),i=n.subagentId??n.target,a=d.getState();a.applyEvent({kind:`spawned`,subagentId:i,name:n.target,description:r,sessionId:t.sessionId}),C.getState().recordDelegateStarted(t.sessionId,{target:n.target}),a.applyEvent({kind:`task_started`,subagentId:i,name:n.target,description:r,sessionId:t.sessionId}),a.pushAgentTimelineEntry({subagentId:i,agentName:n.target,content:r,kind:`status`,iteration:0,ts:new Date().toISOString(),status:`delegating`,sessionId:t.sessionId})}function vi(e){let t=A(e);if(!t)return;j(e);let n=e.payload,r=d.getState(),i=n.subagentId??n.target;r.applyEvent({kind:`task_completed`,subagentId:i,name:n.target,sessionId:t.sessionId,status:n.ok?`success`:n.status===`timeout`||n.status===`host_timeout`?`timeout`:`failed`,iterations:n.iterations,toolCalls:n.toolCalls,finalText:n.summary,...n.ok?{}:{failureReason:n.status??`failed`}}),C.getState().recordDelegateCompleted(t.sessionId,{target:n.target,ok:n.ok,toolCalls:n.toolCalls}),r.pushAgentTimelineEntry({subagentId:i,agentName:n.target,content:n.summary,kind:n.ok?`status`:`error`,iteration:n.iterations,ts:new Date().toISOString(),status:n.status??(n.ok?`completed`:`failed`),sessionId:t.sessionId}),n.ok||Z(t,()=>k.warn(`Delegate failed: ${n.target}`))}function yi(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:`Session ${n.sessionId} is damaged: ${n.detail}`,isError:!0}),Z(t,()=>k.error(`Session damage detected`))}function bi(e){let t=A(e);if(!t)return;let n=e.payload;t.addMessage({role:`assistant`,content:`Session rewound to prompt #${n.toPromptIndex}. Removed ${n.removedEvents} event(s); reverted ${n.revertedFiles.length} file(s).`}),Z(t,()=>k.info(`Session rewound`))}function xi(e){let t=A(e);if(!t)return;let n=e.payload;Z(t,()=>k.success(`Checkpoint #${n.promptIndex} written (${n.fileCount} file(s))`))}function Si(e){if(!ie(e))return;let t=e.payload;N.getState().pushEvent({id:`inflight_${Date.now()}`,kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:`In-flight: ${t.context}`,magnitude:1,data:t,raw:e.payload,flowGroup:`session`})}function Ci(e){ie(e)&&e.payload.reason===`recovered`&&k.info(`Recovered previous in-flight operation`)}function wi(){typeof document<`u`&&document.dispatchEvent(new CustomEvent(`chat:session-end`))}function Ti(e){let t=e.payload,n=P(),r=n&&n!==`__unbound__`?n:null,i=(t.sessions??[]).map(e=>({...e,isCurrent:r?e.id===r:e.isCurrent}));p.getState().setEntries(i,t.error??null)}var Ei={"context.debug":ur,"key.operation_result":dr,"model.switch_result":fr,"context.compacted":pr,"compaction.failed":mr,"provider.response":ni,"iteration.completed":ri,"iteration.limit_reached":ii,"provider.retry":ai,"provider.error":oi,"provider.fallback":ci,"provider.fallback_pending":ui,"provider.model_switched":li,"provider.status_changed":di,"provider.active_blocked":mi,"provider.stream_error":hi,"tool.loop_detected":gi,"delegate.started":_i,"delegate.completed":vi,"trust.persisted":hr,"context.repaired":gr,"ctx.pct":_r,"ctx.max_context":vr,"token.threshold":yr,"token.cost_estimate_unavailable":br,"session.end":wi,"session.resume_progress":Cr,"session.damaged":yi,"session.rewound":bi,"checkpoint.written":xi,"in_flight.started":Si,"in_flight.ended":Ci,"context.modes.list":xr,"context.mode.changed":Sr,"sessions.list":Ti,"provider.status.snapshot":fi,"provider.audit.history":pi,error:wr};function Di(e){let t=e.payload;!t.jobId||!t.kind||B.getState().jobStarted(t.jobId,t.kind)}function Oi(e){let t=e.payload;!t.jobId||!t.phase||!Number.isFinite(t.completed)||!Number.isFinite(t.total)||B.getState().jobProgress(t.jobId,{phase:t.phase,completed:t.completed??0,total:t.total??0})}function ki(e){let t=e.payload;t.workspaceId&&B.getState().workspaceCompleted(t.workspaceId)}function Ai(e){let t=e.payload;t.snapshot&&B.getState().setSnapshot(t.snapshot,t.stale??!1)}function ji(e){let t=e.payload;t.reportId&&B.getState().reportReady(t.reportId)}function Mi(e){let t=e.payload;t.jobId&&B.getState().jobFailed(t.jobId,t.error??`TechStack job failed`)}function Ni(e){let t=e.payload;t.jobId&&B.getState().jobCancelled(t.jobId)}var Pi={"techstack.job.started":Di,"techstack.job.progress":Oi,"techstack.workspace.completed":ki,"techstack.snapshot.updated":Ai,"techstack.report.ready":ji,"techstack.job.failed":Mi,"techstack.job.cancelled":Ni};function Q(e){return A(e)??_()}function Fi(e){return D(e)??fe()}function Ii(e){let t=e.payload;Q(e).addMessage({role:`assistant`,content:[`🛠️ **Registered tools** (${t.tools.length})`,``,...t.tools.map(e=>`• \`${e.name}\`${e.params.length?` (${e.params.join(`, `)})`:``} — ${e.description||`_no description_`}`)].join(`
17
- `)})}function Li(e){let t=e.payload,n=t.text?.trim();Q(e).addMessage({role:`assistant`,content:t.error?`Memory read failed: ${t.error}`:n?`🧠 **Memory** \n\n${n}`:`🧠 **Memory**
18
-
19
- _empty — nothing remembered yet_`})}function Ri(e){let t=e.payload,n=Q(e);if(!t.success){n.addMessage({role:`assistant`,content:`❌ **Config Doctor failed**\n\n${t.error??`Unknown config error.`}`,isError:!0});return}if(!t.changed){n.addMessage({role:`assistant`,content:`✅ **Config Doctor** — active profile config is healthy.\n\n\`${t.configPath}\``});return}let r=t.changes.slice(0,40),i=[t.applied?`✅ **Config Doctor** — repaired ${t.changes.length} field(s).`:`🩺 **Config Doctor** — found ${t.changes.length} repairable field(s).`,``,...r.map(e=>`- \`${e.path}\` — ${e.action===`added`?`missing default`:`invalid shape; default required`}`)];t.changes.length>r.length&&i.push(`- _…and ${t.changes.length-r.length} more_`),i.push(``,`Config: \`${t.configPath}\``),t.applied&&t.backupPath&&i.push(`Backup: \`${t.backupPath}\``),t.applied||i.push(``,"Run `/doctor fix` to apply these repairs."),n.addMessage({role:`assistant`,content:i.join(`
20
- `)})}function zi(e){let t=e.payload;if(t.error){Q(e).addMessage({role:`assistant`,content:`❌ ${t.error}`});return}let n=t.memories??[],r=t.stats,i=[`## 🧠 SAGE`];if(r){let e=r.byStatus.active??0,t=r.byStatus.stale??0,n=r.byStatus.archived??0;i.push(`**Total:** ${r.total} · Active: ${e} · Stale: ${t} · Archived: ${n} · Graph edges: ${r.edges}`);let a=Object.entries(r.byKind).filter(([,e])=>e>0).map(([e,t])=>`${e}=${t}`).join(`, `);a&&i.push(`**Kinds:** ${a}`),i.push(``)}if(n.length===0)i.push(`_No entries to display._`);else{for(let e of n.slice(0,20)){let t=e.text.length>80?`${e.text.slice(0,78)}…`:e.text,n=e.tags.length>0?e.tags.map(e=>`\`${e}\``).join(` `):``,r=e.createdAt.slice(0,10);i.push(`- \`${e.id.slice(0,12)}…\` [${e.kind}|${e.status}] ${r} — ${t}${n?` ${n}`:``}`)}n.length>20&&i.push(`_…and ${n.length-20} more_`)}i.push(``),i.push("*Use `/memory` in the TUI or build a Memory Manager panel for full editing.*"),Q(e).addMessage({role:`assistant`,content:i.join(`
21
- `)})}function Bi(e){let t=e.payload;if(t.error){Q(e).addMessage({role:`assistant`,content:`❌ ${t.error}`});return}if(!t.memory){Q(e).addMessage({role:`assistant`,content:`❌ Memory not found.`});return}let n=t.memory,r=n.tags.length>0?n.tags.map(e=>`\`${e}\``).join(` `):`—`,i=n.anchors.length>0?n.anchors.map(e=>e.path??e.type).join(`, `):`—`,a=[`## 🧠 Memory: \`${n.id}\``,``,`**Text:** ${n.text}`,`**Kind:** \`${n.kind}\` · **Status:** \`${n.status}\``,`**Created:** ${n.createdAt.slice(0,10)} · **Updated:** ${n.updatedAt.slice(0,10)}`,`**Importance:** ${n.importance} · **Confidence:** ${n.confidence}`,`**Tags:** ${r}`,`**Anchors:** ${i}`];Q(e).addMessage({role:`assistant`,content:a.join(`
22
- `)})}function Vi(e){let t=e.payload;if(t.error){Q(e).addMessage({role:`assistant`,content:`❌ Update failed: ${t.error}`});return}if(t.memory){let n=String(t.memory.id??``);Q(e).addMessage({role:`assistant`,content:`✅ Memory \`${n}\` updated.`})}}function Hi(e){let t=e.payload;if(t.error){Q(e).addMessage({role:`assistant`,content:`❌ Failed to create memory: ${t.error}`});return}if(t.memory){let n=String(t.memory.id??``);Q(e).addMessage({role:`assistant`,content:`✅ Memory \`${n}\` created.`})}}function Ui(e){let t=e.payload,n=Q(e);if(t.error){n.addMessage({role:`assistant`,content:`❌ Recover failed: ${t.error}`});return}if(!t.memory)return;let r=String(t.memory.id??``);if(t.noop){let e=t.activeId??r;n.addMessage({role:`assistant`,content:`ℹ️ Nothing to recover — \`${e}\` is already the active version.`});return}n.addMessage({role:`assistant`,content:`✅ Memory \`${r}\` recovered.`})}function Wi(e){let t=e.payload,n=Q(e);if(t.error){n.addMessage({role:`assistant`,content:`❌ Candidate resolve failed: ${t.error}`});return}if(!t.candidate)return;let r=t.resolvedAction===`reject`?`rejected`:`accepted`;n.addMessage({role:`assistant`,content:`✅ Candidate \`${t.candidate.id}\` ${r}.`})}function Gi(e){let t=e.payload,n=Q(e);if(t.error){n.addMessage({role:`assistant`,content:`❌ Backfill failed: ${t.error}`});return}let r=`examined ${t.examined??0} · recoverable ${t.recoverable??0} · recovered ${t.recovered??0}`;n.addMessage({role:`assistant`,content:t.dryRun?`ℹ️ Backfill preview (dry-run) — ${r}. Re-run with apply to write.`:`✅ Backfill applied — ${r}.`})}function Ki(e){let t=e.payload;if(!t.enabled){Q(e).addMessage({role:`assistant`,content:`🎯 **Skills**
23
-
24
- _disabled (config.features.skills = false)_`});return}let n=[`🎯 **Skills** (${t.skills.length})`,``,...t.skills.length===0?[`_none registered_`]:t.skills.map(e=>`• \`${e.name}\`${e.version?` v${e.version}`:``} _(${e.source})_ — ${e.description||e.trigger||`_no description_`}`)];t.error&&n.push(``,`⚠ ${t.error}`),Q(e).addMessage({role:`assistant`,content:n.join(`
25
- `)})}function qi(e){let t=e.payload;Fi(e).setDroppedTools((t.maxTools??0)>0?t.droppedTools??0:0),Q(e).addMessage({role:`assistant`,content:[`🩺 **Runtime diagnostics**`,``,`**Provider:** \`${t.provider}\` / \`${t.model}\``,`**Mode:** \`${t.mode}\``,`**Session:** \`${t.sessionId}\``,`**CWD:** \`${t.cwd}\``,``,`**Tools:** ${t.tools.count}`,`**Messages:** ${t.messages} · **Todos:** ${t.todos}`,`**Usage:** ${t.usage.input.toLocaleString()} in · ${t.usage.output.toLocaleString()} out${t.usage.cacheRead?` · ${t.usage.cacheRead.toLocaleString()} cache`:``}`,``,`**Features:** memory=${t.features.memory?`✓`:`✗`} · skills=${t.features.skills?`✓`:`✗`} · modelsRegistry=${t.features.modelsRegistry?`✓`:`✗`}`].join(`
26
- `)})}function Ji(e){let t=e.payload,n=Math.floor(t.elapsedMs/1e3),r=n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${n%60}s`:`${Math.floor(n/3600)}h ${Math.floor(n%3600/60)}m`,i=Fi(e).data.lastInputTokens,a=t.currentRequest?.cacheRead??0;Fi(e).setCacheStats(t.cache?{readTokens:t.cache.readTokens,writeTokens:t.cache.writeTokens,hitRatio:t.cache.hitRatio,providers:t.cache.providers??[],coverageTokens:Math.max(0,Math.min(i,a))}:null),Q(e).addMessage({role:`assistant`,content:[`📈 **Session stats**`,``,`**Session:** \`${t.sessionId}\``,`**Provider/Model:** \`${t.provider}\` / \`${t.model}\``,`**Elapsed:** ${r}`,``,`**Usage:** ${t.usage.input.toLocaleString()} in · ${t.usage.output.toLocaleString()} out`,...t.cache&&t.cache.readTokens>0?[`**Cache:** ${t.cache.readTokens.toLocaleString()} read · ${t.cache.writeTokens.toLocaleString()} write · hit ratio ${(t.cache.hitRatio*100).toFixed(1)}%`]:[],`**Cost:** ${t.cost.toFixed(4)}`,``,`**Messages:** ${t.messages} · **Files read:** ${t.readFiles} · **Tools available:** ${t.tools}`,...t.sideEffectCount?[`**Side effects:** ⚠ ${t.sideEffectCount}`]:[]].join(`
27
- `)})}function Yi(e){let t=e.payload,n=D(e);n&&n.setTodos(t.todos??[])}function Xi(e){let t=e.payload;x.getState().setModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description}))),Fi(e).setEnvRates({mode:t.activeId})}function $(e){Te.getState().handleResult(e.type,e.payload)}var Zi={...mt,...Ei,...bn,...sn,...or,...Pt,...Pi,"config.doctor.result":Ri,"session.start":e=>{ei(e),Ft()},"specs.list":e=>{let t=e.payload;je.getState().setSpecs(t.specs??[])},"specs.detail":e=>{je.getState().setDetail(e.payload)},"sdd.board.snapshot":e=>{ke.getState().setSnapshot(e.payload)},"sdd.board.list":e=>{let t=e.payload;ke.getState().setBoards(t.boards??[])},"sdd.board.lifecycle_result":e=>{let t=e.payload,n=ke.getState();n.setLifecycleResult({...t,at:Date.now()}),n.setDestroying(!1),t.op===`destroy`&&t.ok&&we.getState().reset()},"sdd.spec.snapshot":e=>{we.getState().setSnapshot(e.payload)},"sdd.spec.agent_text":e=>{we.getState().setAgentText(e.payload.text??``)},"sdd.spec.error":e=>{we.getState().setError(e.payload.message??`Error`)},"sdd.run.started":e=>{we.getState().setStartedRunId(e.payload.runId??null)},"goal.assess.result":e=>{let t=e.payload;De.getState().setResult({realistic:t.realistic,durationClaimed:t.durationClaimed,explanation:t.explanation,recommendedDuration:t.recommendedDuration,concerns:t.concerns,parseFailed:t.parseFailed,parseError:t.parseError,reqSeq:t.reqSeq??0})},"kanban.list":$,"kanban.get":$,"kanban.health":$,"kanban.workbench":$,"kanban.create":$,"kanban.duplicate":$,"kanban.update":$,"kanban.delete":$,"kanban.generate":$,"kanban.snapshot":$,"kanban.taskgraph.export":$,"kanban.taskgraph.sync":$,"kanban.task.ready":$,"kanban.task.add":$,"kanban.task.split":$,"kanban.task.merge":$,"kanban.task.update":$,"kanban.task.move":$,"kanban.task.copy":$,"kanban.task.transfer":$,"kanban.task.transition":$,"kanban.task.chain":$,"kanban.task.chain.get":$,"kanban.task.claim":$,"kanban.task.release":$,"kanban.task.metric.add":$,"kanban.task.metric.update":$,"kanban.task.check.add":$,"kanban.task.check.update":$,"kanban.task.note.add":$,"kanban.task.assign":$,"kanban.task.dispatch":$,"kanban.task.remove":$,"kanban.task.get":$,"kanban.board.history":$,"kanban.run.start":$,"kanban.supervisor.status":$,"kanban.supervisor.audit":$,"kanban.task.verify":$,"kanban.task.verification_started":$,"kanban.task.verification_completed":$,"kanban.decomposition.approve":$,"kanban.decomposition.reject":$,"kanban.decomposition.resolved":$,"kanban.decomposition.applied":$,"tools.list":Ii,"memory.list":Li,"memory.sage.list":zi,"memory.sage.get":Bi,"memory.sage.update":Vi,"memory.sage.remember":Hi,"memory.sage.recover":Ui,"memory.sage.candidateResolve":Wi,"memory.sage.backfillRecoverable":Gi,"skills.list":Ki,"diag.get":qi,"stats.get":Ji,side_effects:e=>{let t=e.payload;Oe.for(O(e)).getState().setSideEffects(t.sideEffects??[])},"todos.updated":Yi,"todos.cleared":e=>{let t=D(e);t&&t.setTodos([])},"agent.timeline.message":e=>{let t=e.payload;d.getState().pushAgentTimelineEntry({subagentId:t.subagentId,sessionId:O(e)??void 0,agentName:t.agentName,content:t.content,kind:t.kind,iteration:t.iteration,ts:t.ts,toolName:t.toolName,toolOk:t.toolOk,costUsd:t.costUsd})},"agent.status_changed":e=>{let t=e.payload;d.getState().pushAgentTimelineEntry({subagentId:t.subagentId,sessionId:O(e)??void 0,agentName:t.agentName,content:t.summary??t.status,kind:`status`,iteration:0,ts:t.ts,status:t.status})},"tasks.updated":e=>{},"plan.updated":e=>{},"modes.list":Xi,"session.checkpoints":e=>{},"process.list":e=>{},"projects.list":e=>{},"projects.added":e=>{},"projects.selected":e=>{},"tool.disabled":e=>{},"tool.enabled":e=>{},"provider.response":e=>{ni(e)},"tool.progress":e=>{Et(e);let t=R(e),n=L.getState();for(let e of t)n.recordFileEvent(e)},"tool.started":e=>{Tt(e);let t=R(e);t.length>0&&L.getState().startActivities(t)},"tool.executed":e=>{Dt(e);let t=e.payload;t.id&&L.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.tool_started":e=>{j(e);let t=R(e);t.length>0&&L.getState().startActivities(t)},"codemap.tool_executed":e=>{j(e);let t=e.payload;t.id&&L.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.file_event":e=>{let t=R(e),n=L.getState();for(let e of t)n.recordFileEvent(e)},"codemap.index_updated":e=>{let t=e.payload;ze.getState().notifyIndexUpdated(t?.at)},"file.saved":e=>{let t=R(e);if(t.length>0){let e=L.getState();for(let n of t)e.recordFileEvent(n)}},"memory.event":e=>{Kn(e);let t=R(e);if(t.length>0){let e=L.getState();for(let n of t)e.recordActivity(n)}}};function Qi(e){let t=[];for(let[n,r]of Object.entries(Zi))r&&t.push(e.on(n,t=>{e.consumeSuppressedChatEcho(n,t)||r(t)}));return()=>{for(let e of t)e()}}function $i(){let{autoConnect:e,wsUrl:t}=T(),n=T(e=>e.setWsStatus);(0,H.useEffect)(()=>{if(!e)return;at();let r=M(t),i=!1,a=r.onStatus(e=>{i||n(e)});r.connect().then(()=>{if(!i){try{let e=new URLSearchParams(window.location.search).get(`session`);e&&r.resumeSessionById(e)}catch{}r.getPrefs(ue()??void 0),r.getSystemPrompt()}}).catch(e=>{i||console.warn(JSON.stringify({level:`warn`,event:`webui.ws_connection_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))});let o=Qi(r);return()=>{i=!0,o(),a()}},[e,t,n])}function ea(){let{wsUrl:e}=T(),t=M(e),n=(0,H.useCallback)((e,n,r=!1)=>t.isConnected?r?t.sendMessage(e,n,!0):t.sendMessage(e,n):null,[t]),r=(0,H.useCallback)(()=>t.sendAbort(),[t]),i=(0,H.useCallback)(e=>t.adviseTopic(e),[t]),a=(0,H.useCallback)(e=>t.sendMailboxMessage(e),[t]),{hideConfirm:o}=I(),s=(0,H.useCallback)((e,n)=>{t.sendConfirm(e,n),f(e),o()},[t,o]),c=(0,H.useCallback)((e,n)=>t.switchModel(e,n),[t]),l=(0,H.useCallback)(()=>t.listProviders(),[t]),u=(0,H.useCallback)(e=>t.listProviderModels(e),[t]),d=(0,H.useCallback)(()=>t.listSavedProviders(),[t]),ee=(0,H.useCallback)((e,n,r)=>t.addKey(e,n,r),[t]),m=(0,H.useCallback)((e,n,r)=>t.updateKey(e,n,r),[t]),h=(0,H.useCallback)((e,n)=>t.deleteKey(e,n),[t]),g=(0,H.useCallback)((e,n)=>t.setActiveKey(e,n),[t]),_=(0,H.useCallback)((e,n,r,i,a,o)=>t.addProvider(e,n,r,i,a,o),[t]),te=(0,H.useCallback)(e=>t.removeProvider(e),[t]),v=(0,H.useCallback)(e=>{p.getState().setLoading(!0),t.listSessions(e)},[t]),y=(0,H.useCallback)(e=>t.deleteSession(e),[t]),b=(0,H.useCallback)((e,n)=>{p.getState().updateEntryName(e,n),t.renameSession(e,n)},[t]),ne=(0,H.useCallback)(e=>t.resumeSessionById(e),[t]),x=(0,H.useCallback)(()=>t.newSession(),[t]),S=(0,H.useCallback)(e=>t.inspectSession(e),[t]),re=(0,H.useCallback)(()=>t.saveSession(),[t]),ie=(0,H.useCallback)(e=>t.listTools(e),[t]),C=(0,H.useCallback)(e=>t.listMemory(e),[t]),ae=(0,H.useCallback)(e=>t.listSageMemories(e),[t]),w=(0,H.useCallback)((e,n)=>t.listSageMemoriesPage(e,n),[t]),oe=(0,H.useCallback)((e,n)=>t.searchSageBreakdown(e,n),[t]),se=(0,H.useCallback)((e,n)=>t.listMemoryCandidates(e,n),[t]),ce=(0,H.useCallback)((e,n)=>t.getSage(e,n),[t]),le=(0,H.useCallback)((e,n,r)=>t.getSageGraph(e,n,r),[t]),ue=(0,H.useCallback)((e,n,r)=>t.updateSage(e,n,r),[t]),de=(0,H.useCallback)((e,n)=>t.deleteSage(e,n),[t]),E=(0,H.useCallback)((e,n)=>t.rememberSage(e,n),[t]),D=(0,H.useCallback)((e,n)=>t.findMemoriesForFile(e,n),[t]),fe=(0,H.useCallback)((e,n)=>t.recoverSage(e,n),[t]),pe=(0,H.useCallback)((e,n)=>t.resolveMemoryCandidate(e,n),[t]),O=(0,H.useCallback)((e,n)=>t.backfillRecoverable(e,n),[t]),me=(0,H.useCallback)(e=>t.listSkills(e),[t]),k=(0,H.useCallback)(e=>t.getDiag(e),[t]),A=(0,H.useCallback)(e=>t.getStats(e),[t]),j=(0,H.useCallback)(()=>t.getPlan(),[t]),N=(0,H.useCallback)(()=>t.listModes(),[t]),P=(0,H.useCallback)(e=>t.switchMode(e),[t]),he=(0,H.useCallback)(()=>t.listContextModes(),[t]),F=(0,H.useCallback)(e=>t.switchContextMode(e),[t]),ge=(0,H.useCallback)(e=>t.createContextMode(e),[t]),_e=(0,H.useCallback)((e,n)=>t.updateContextMode(e,n),[t]),ve=(0,H.useCallback)(e=>t.deleteContextMode(e),[t]),ye=(0,H.useCallback)(()=>t.repairContext(),[t]),be=(0,H.useCallback)((e,n)=>t.refineModel(e,n),[t]),xe=(0,H.useCallback)(e=>t.switchAutonomy(e),[t]),L=(0,H.useCallback)(e=>t.updatePrefs(e),[t]);return{client:t,sendMessage:n,adviseTopic:i,sendAbort:r,sendMailboxMessage:a,sendConfirm:s,switchModel:c,listProviders:l,listProviderModels:u,listSavedProviders:d,addKey:ee,updateKey:m,deleteKey:h,setActiveKey:g,addProvider:_,removeProvider:te,listSessions:v,deleteSession:y,renameSession:b,resumeSession:ne,newSession:x,inspectSession:S,saveSession:re,listTools:ie,listMemory:C,listSageMemories:ae,listSageMemoriesPage:w,searchSageBreakdown:oe,listMemoryCandidates:se,getSage:ce,getSageGraph:le,updateSage:ue,deleteSage:de,rememberSage:E,findMemoriesForFile:D,recoverSage:fe,resolveMemoryCandidate:pe,backfillRecoverable:O,listSkills:me,getDiag:k,getStats:A,getPlan:j,listModes:N,switchMode:P,listContextModes:he,switchContextMode:F,createContextMode:ge,updateContextMode:_e,deleteContextMode:ve,repairContext:ye,toggleGoalAutonomous:(0,H.useCallback)(e=>{t.send({type:`goal.toggleAutonomous`,payload:{autonomous:e}})},[t]),startGoal:(0,H.useCallback)((e,n,r=!0)=>{t.send({type:`goal.start`,payload:{title:e,phases:n,autonomous:r}})},[t]),pauseGoal:(0,H.useCallback)(()=>{t.send({type:`goal.pause`,payload:{}})},[t]),resumeGoal:(0,H.useCallback)(()=>{t.send({type:`goal.resume`,payload:{}})},[t]),stopGoal:(0,H.useCallback)(()=>{t.send({type:`goal.stop`,payload:{}})},[t]),selectGoal:(0,H.useCallback)(e=>{t.send({type:`goal.selectPhase`,payload:{phaseId:e}})},[t]),switchAutonomy:xe,updatePrefs:L,refineModel:be,stageGit:(0,H.useCallback)(e=>t.stageGit(e),[t]),unstageGit:(0,H.useCallback)(e=>t.unstageGit(e),[t]),discardGit:(0,H.useCallback)(e=>t.discardGit(e),[t]),commitGit:(0,H.useCallback)(e=>t.commitGit(e),[t])}}export{Pr as a,Fr as c,Dr as d,Mn as f,Ve as h,Rr as i,Ur as l,lt as m,$i as n,Ir as o,Dn as p,Lr as r,Nr as s,ea as t,jr as u};