@wrongstack/webui 0.309.0 → 0.309.1
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.
- package/dist/assets/{AgentRosterView-CbgKjnxJ.js → AgentRosterView-CBiLW8dV.js} +1 -1
- package/dist/assets/{AnalyticsDashboard-BXnPG2xB.js → AnalyticsDashboard-Grpp3QKX.js} +1 -1
- package/dist/assets/{AudienceMemoryPanel-Ch-jf06O.js → AudienceMemoryPanel-DU3hUuUl.js} +1 -1
- package/dist/assets/{ChangesView-5lcal8q4.js → ChangesView-DOrw4udd.js} +1 -1
- package/dist/assets/ChronicleDashboard-DlCuQRB8.js +1 -0
- package/dist/assets/CodeEditor-CU6zP0r8.js +2 -0
- package/dist/assets/CodeMap-BkJqVDg2.js +1 -0
- package/dist/assets/{ConfirmModal-KzK0LoJw.js → ConfirmModal-BJOVE-JI.js} +1 -1
- package/dist/assets/{CronJobsPanel-aLru0Rd_.js → CronJobsPanel-B3UJP0mn.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-BXpB_M2Z.js → DeadCodeScanPanel-_iUu5-90.js} +1 -1
- package/dist/assets/{DebugDashboard-hnhGaWr-.js → DebugDashboard-NTiN0je2.js} +1 -1
- package/dist/assets/{DesignGalleryView-CXHgaI2Q.js → DesignGalleryView-BG2Nr8wy.js} +1 -1
- package/dist/assets/{GoalView-BB5t68cb.js → GoalView-Dakf9ZR8.js} +1 -1
- package/dist/assets/KanbanView-BR07PhbR.js +3 -0
- package/dist/assets/{MailboxDetailView-jPxF6ia3.js → MailboxDetailView-D31IhaK_.js} +1 -1
- package/dist/assets/{MemoryDrawer-e8UxQq-s.js → MemoryDrawer-6n0Etoz4.js} +1 -1
- package/dist/assets/MemoryManager-7DSVhxZf.js +1 -0
- package/dist/assets/{ModelPicker-nyXP3xsj.js → ModelPicker-C72kprRH.js} +1 -1
- package/dist/assets/OfficeMapPanel-Ce7myLNH.css +1 -0
- package/dist/assets/OfficeMapPanel-Dc8-4CiU.js +4 -0
- package/dist/assets/{ProcessMonitor-Epj6RrOA.js → ProcessMonitor-BGLc3yNM.js} +1 -1
- package/dist/assets/{PromptJournalView-CMlGmjig.js → PromptJournalView-CxDiqUkN.js} +1 -1
- package/dist/assets/{QueuePanel-D67eiPuQ.js → QueuePanel-B2f1HbN0.js} +1 -1
- package/dist/assets/{RefreshDebugView-CWAwHE9i.js → RefreshDebugView-D8F95QxF.js} +1 -1
- package/dist/assets/{RequirementIntakeView-DPj065HL.js → RequirementIntakeView-BRolSCpk.js} +1 -1
- package/dist/assets/{SageTabs-BtRa8OZC.js → SageTabs-DblSyqzB.js} +2 -2
- package/dist/assets/{SddFlowGraph-DMSN4LTZ.js → SddFlowGraph-YOPsSaFc.js} +1 -1
- package/dist/assets/SddHub-IusMUP2D.js +2 -0
- package/dist/assets/{SessionInspectView-BdlOiPzO.js → SessionInspectView-B633Bi0X.js} +1 -1
- package/dist/assets/SessionList-BCE6NSCu.js +1 -0
- package/dist/assets/{SessionsDashboard-BiR0zh-a.js → SessionsDashboard-N__p7_i5.js} +1 -1
- package/dist/assets/SetupScreen-B06asuJC.js +1 -0
- package/dist/assets/SkillDetailView-BxpQcgfh.js +3 -0
- package/dist/assets/{SpecsView-2PqHEXH9.js → SpecsView-Ddbow1sn.js} +1 -1
- package/dist/assets/TechStackView-HTZUTbuu.js +2 -0
- package/dist/assets/{TerminalPanel-CLUB8F2H.js → TerminalPanel-Bi3CmRvI.js} +1 -1
- package/dist/assets/{Toaster-BlD1m8P2.js → Toaster-COVFFUKo.js} +1 -1
- package/dist/assets/{activity-DYwBIByU.js → activity-7Sj9fdO-.js} +2 -2
- package/dist/assets/{activity-CA5G03Kw.js → activity-B-LcgiXm.js} +2 -2
- package/dist/assets/{activity-CezOSNBd.js → activity-B7hiQ_IX.js} +2 -2
- package/dist/assets/{activity-C6pIBHte.js → activity-Cq0Lqtgz.js} +2 -2
- package/dist/assets/{activity-CxnlCaZu.js → activity-DVuAYnoi.js} +2 -2
- package/dist/assets/{activity-l8lDAw8a.js → activity-Dt0RpmkN.js} +2 -2
- package/dist/assets/{activity-CkGBp_I-.js → activity-JmCi-KcX.js} +2 -2
- package/dist/assets/{button-DvpRpKkt.js → button-DAT5OnLL.js} +1 -1
- package/dist/assets/{chat-store-c0pGYczr.js → chat-store-CtIMb3sU.js} +1 -1
- package/dist/assets/{codemap-activity-store-BH7Mh4k9.js → codemap-activity-store-CA_14DHd.js} +1 -1
- package/dist/assets/codemap-index-store-BlPxA13l.js +1 -0
- package/dist/assets/{dialog-BJjDUqb3.js → dialog-BMrjwjA6.js} +1 -1
- package/dist/assets/{empty-state-Cefmzojx.js → empty-state-Bf05Z1d2.js} +1 -1
- package/dist/assets/{i18n-DbJfY4tY.js → i18n-CYYBUSJB.js} +2 -2
- package/dist/assets/{index-DQn-Lz9q.js → index-cUeJ0FkT.js} +55 -54
- package/dist/assets/{input-BtoHcCl9.js → input-Ccsxvwz6.js} +1 -1
- package/dist/assets/{mailbox-store-bF96Ih2G.js → mailbox-store-BWD7JeF9.js} +1 -1
- package/dist/assets/{markdown-CIRD7kOg.js → markdown-Kp5uSgOw.js} +23 -23
- package/dist/assets/{roster-ws-DycHs92J.js → roster-ws-lMIf13ag.js} +1 -1
- package/dist/assets/{session-store-CKdsROPD.js → session-store-D4PNeAGe.js} +1 -1
- package/dist/assets/{shared-B3czc2Dj.js → shared-Y6T3EEnd.js} +1 -1
- package/dist/assets/stores-BUtRik4k.js +7 -0
- package/dist/assets/{ui-store-xx1NssJI.js → ui-store-DxMnhARg.js} +1 -1
- package/dist/assets/useWebSocket-Ew1Bbjci.js +29 -0
- package/dist/assets/{utils-tsZEnrBH.js → utils-B5X3DKef.js} +1 -1
- package/dist/assets/{vector-memory-panel-C6iWDhkJ.js → vector-memory-panel-CnBqV6GK.js} +1 -1
- package/dist/assets/{vendor-C_zEzV4N.js → vendor-DLS502Zs.js} +3 -3
- package/dist/assets/{view-navigation-CZKugncK.js → view-navigation-Hd631M1W.js} +1 -1
- package/dist/assets/{ws-client-CBfMQmW9.js → ws-client-DYrfK01f.js} +1 -1
- package/dist/components/AgentOfficeView/model.d.ts +20 -0
- package/dist/components/AgentOfficeView.d.ts +10 -0
- package/dist/index.css +114 -7
- package/dist/index.html +22 -22
- package/dist/index.js +317 -70
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/office-map-store.d.ts +6 -0
- package/package.json +15 -15
- package/dist/assets/ChronicleDashboard-BH9k5NjB.js +0 -1
- package/dist/assets/CodeEditor-BrQMwzOp.js +0 -2
- package/dist/assets/CodeMap-B5e0v0jn.js +0 -1
- package/dist/assets/KanbanView-bZtgy3zZ.js +0 -3
- package/dist/assets/MemoryManager-BXYIA9wG.js +0 -1
- package/dist/assets/OfficeMapPanel-CBfE7Kli.js +0 -4
- package/dist/assets/OfficeMapPanel-D6yTfGIT.css +0 -1
- package/dist/assets/SddHub-CuqWpqSd.js +0 -2
- package/dist/assets/SessionList-CvvH8SI2.js +0 -1
- package/dist/assets/SetupScreen-B8s5fvr8.js +0 -1
- package/dist/assets/SkillDetailView-DbXp7-E5.js +0 -3
- package/dist/assets/TechStackView-Dnws9pc9.js +0 -2
- package/dist/assets/codemap-index-store-BFm1TzVW.js +0 -1
- package/dist/assets/stores-C0xX0jn4.js +0 -7
- package/dist/assets/useWebSocket-D9Dy4-9x.js +0 -29
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{za as e}from"./vendor-C_zEzV4N.js";var t=e(e=>({generation:0,lastUpdatedAt:null,notifyIndexUpdated(t=Date.now()){e(e=>({generation:e.generation+1,lastUpdatedAt:t}))}}));export{t};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./chat-store-c0pGYczr.js";import{Ra as t,za as n}from"./vendor-C_zEzV4N.js";import"./i18n-DbJfY4tY.js";import{r,t as i}from"./ws-client-CBfMQmW9.js";import"./session-store-CKdsROPD.js";import"./codemap-activity-store-BH7Mh4k9.js";import"./mailbox-store-bF96Ih2G.js";import"./ui-store-xx1NssJI.js";var a=`signal`,o=`wrongstack-palette`,s=[{id:`signal`,labelKey:`settings:general.paletteSignal`,swatch:`hsl(345.9 99% 58.8%)`,swatchSecondary:`hsl(37.5 98.4% 50%)`},{id:`emerald-gold`,labelKey:`settings:general.paletteEmeraldGold`,swatch:`hsl(152 66% 48%)`,swatchSecondary:`hsl(42 96% 54%)`},{id:`blue-navy`,labelKey:`settings:general.paletteBlueNavy`,swatch:`hsl(213 90% 60%)`,swatchSecondary:`hsl(36 96% 54%)`},{id:`purple-pink`,labelKey:`settings:general.palettePurplePink`,swatch:`hsl(263 82% 66%)`,swatchSecondary:`hsl(332 94% 62%)`},{id:`cyan-teal`,labelKey:`settings:general.paletteCyanTeal`,swatch:`hsl(180 76% 46%)`,swatchSecondary:`hsl(36 96% 54%)`},{id:`rose-copper`,labelKey:`settings:general.paletteRoseCopper`,swatch:`hsl(14 82% 56%)`,swatchSecondary:`hsl(34 96% 54%)`},{id:`indigo-amber`,labelKey:`settings:general.paletteIndigoAmber`,swatch:`hsl(233 74% 58%)`,swatchSecondary:`hsl(38 96% 54%)`},{id:`sage-sand`,labelKey:`settings:general.paletteSageSand`,swatch:`hsl(130 28% 55%)`,swatchSecondary:`hsl(36 55% 72%)`},{id:`slate-violet`,labelKey:`settings:general.paletteSlateViolet`,swatch:`hsl(248 50% 55%)`,swatchSecondary:`hsl(285 52% 62%)`},{id:`coral-mint`,labelKey:`settings:general.paletteCoralMint`,swatch:`hsl(12 85% 62%)`,swatchSecondary:`hsl(162 55% 55%)`},{id:`arctic-ember`,labelKey:`settings:general.paletteArcticEmber`,swatch:`hsl(195 85% 58%)`,swatchSecondary:`hsl(14 85% 55%)`},{id:`moss-rust`,labelKey:`settings:general.paletteMossRust`,swatch:`hsl(100 45% 38%)`,swatchSecondary:`hsl(18 70% 48%)`}];function c(e){return typeof e==`string`&&s.some(t=>t.id===e)}function l(e){return s.find(t=>t.id===e)??s[0]}function u(e,t){if(typeof window>`u`)return t;try{let n=window.localStorage.getItem(e);return c(n)?n:t}catch{return t}}function d(e,t){t===`signal`?e.removeAttribute(`data-palette`):e.setAttribute(`data-palette`,t)}var f=n()(t(e=>({provider:``,model:``,wsUrl:r(),wsConnected:!1,wsStatus:{state:`connecting`},theme:`system`,palette:`signal`,autoConnect:!0,soundOnComplete:!1,setProvider:t=>e({provider:t}),setModel:t=>e({model:t}),setConfig:t=>e(t),setTheme:t=>e({theme:t}),setPalette:t=>e({palette:t}),setWsConnected:t=>e({wsConnected:t}),setWsStatus:t=>e({wsStatus:t,wsConnected:t.state===`open`}),setSoundOnComplete:t=>e({soundOnComplete:t})}),{name:`wrongstack-config`,partialize:e=>({provider:e.provider,model:e.model,baseUrl:e.baseUrl,theme:e.theme,palette:e.palette,autoConnect:e.autoConnect,soundOnComplete:e.soundOnComplete}),merge:(e,t)=>{let{apiKey:n,...i}=e??{};return{...t,...i,wsUrl:r(),wsConnected:!1,wsStatus:{state:`connecting`},palette:c(i.palette)?i.palette:u(o,t.palette)}}}));function p(e,t){return t>=100?`danger`:`warning`}function ee(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 te=200,ne=50,m=300,h=200,re=100;function g(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 ie=n()(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 g(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()}),g(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:ee(t,n)},...e.events].slice(0,te),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}),g(i,re,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()}),g(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}),g(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()}),g(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:p(n,o),used:r,limit:i,pct:o},...e.budgetAlerts].slice(0,ne),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()})})),ae=n()(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 oe(){return`ref_${Date.now()}_${Math.random().toString(36).slice(2,8)}`}function _(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 v(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 y(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 b(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=_(i.path),a=t?`\`\`\`${t}`:"```",o=v(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=_(i.path),a=e?`\`\`\`${e}`:"```",o=`// ${i.path}:${i.startLine}-${i.endLine}`,s=v(i.kind===`snippet`?i.content:i.preview);n.push(`${a}\n${o}\n${s.text}\n\`\`\``),s.truncated&&r.add(i.path)}let i=y([...r]);return[...n,i].filter(Boolean).join(`
|
|
6
|
-
|
|
7
|
-
`)}var x=n()((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:oe()};e({refs:[...r.refs,i]})},removeRef:t=>{e(e=>({refs:e.refs.filter(e=>e.id!==t)}))},clearRefs:()=>e({refs:[]})}));function se(e,t){let n=e??{},r=Array.isArray(n.openFilePaths)?n.openFilePaths.filter(e=>typeof e==`string`&&e.length>0):[],i=r.map(e=>({path:e,content:``,dirty:!1,savedContent:``})),a=typeof n.activeFilePath==`string`&&r.includes(n.activeFilePath)?n.activeFilePath:r[0]??null;return{...t,projectIdentity:typeof n.projectIdentity==`string`?n.projectIdentity:t.projectIdentity,openFiles:i,activeFilePath:a}}var ce=n()(t((e,t)=>({projectRoot:``,tree:[],openFiles:[],activeFilePath:null,treeLoading:!1,error:null,targetLine:null,projectIdentity:``,hydratingPaths:new Set,setTree:(t,n)=>e({projectRoot:t,tree:n,treeLoading:!1,error:null}),jumpToLine:(t,n)=>e({targetLine:{line:t,col:n}}),clearTargetLine:()=>e({targetLine:null}),openFile:(n,r)=>{let i=t();if(i.openFiles.find(e=>e.path===n)){e({openFiles:i.openFiles.map(e=>e.path===n?{...e,content:r,dirty:!1,savedContent:r}:e),activeFilePath:n});return}e({openFiles:[...i.openFiles,{path:n,content:r,dirty:!1,savedContent:r}],activeFilePath:n})},closeFile:n=>{let r=t(),i=r.openFiles.findIndex(e=>e.path===n);if(i===-1)return;let a=[...r.openFiles];a.splice(i,1);let o=r.activeFilePath;r.activeFilePath===n&&(o=a.length===0?null:i<a.length?a[i].path:a[a.length-1].path),e({openFiles:a,activeFilePath:o})},setActiveFile:t=>e({activeFilePath:t}),updateContent:(t,n)=>{e(e=>({openFiles:e.openFiles.map(e=>e.path===t?{...e,content:n,dirty:n!==e.savedContent}:e)}))},markSaved:t=>{e(e=>({openFiles:e.openFiles.map(e=>e.path===t?{...e,dirty:!1,savedContent:e.content}:e)}))},setTreeLoading:t=>e({treeLoading:t}),setError:t=>e({error:t}),clearOpenTabs:()=>e({openFiles:[],activeFilePath:null}),setProjectIdentity:t=>e({projectIdentity:t}),hydrateFileContent:(n,r)=>{let i=t();if(!i.hydratingPaths.has(n))return!1;let a=new Set(i.hydratingPaths);a.delete(n);let o=i.openFiles.find(e=>e.path===n);return!o||o.dirty||o.content!==``||o.savedContent!==``?(e({hydratingPaths:a}),!1):(e({hydratingPaths:a,openFiles:i.openFiles.map(e=>e.path===n?{...e,content:r,savedContent:r,dirty:!1}:e)}),!0)},hydrateFileFailed:n=>{let r=t();if(!r.hydratingPaths.has(n))return;let i=new Set(r.hydratingPaths);i.delete(n);let a=r.openFiles.find(e=>e.path===n),o=!a||a.content===``&&!a.dirty&&a.savedContent===``;e({hydratingPaths:i}),o&&a&&t().closeFile(n)}}),{name:`wrongstack-file-store`,version:2,partialize:e=>({openFilePaths:e.openFiles.map(e=>e.path),activeFilePath:e.activeFilePath,projectIdentity:e.projectIdentity}),migrate:()=>({openFilePaths:[],activeFilePath:null,projectIdentity:``}),merge:(e,t)=>se(e,t)}));function S(e){return e===`running`}function C(e,t){let n=+!S(e.status),r=+!S(t.status);return n===r?e.startedAt-t.startedAt:n-r}function le(e){let t=0,n=0,r=0;for(let i of e)i.status===`running`?t++:i.status===`completed`?n++:(i.status===`failed`||i.status===`timeout`)&&r++;return{running:t,completed:n,failed:r,total:e.length}}var ue=85,de=70;function fe(e){let t=Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0;return{clamped:t,severity:t>=ue?`high`:t>=de?`medium`:`low`}}function w(e){return e==null||!Number.isFinite(e)||e<0?`0`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(Math.round(e))}function pe(e){if(e==null||!Number.isFinite(e)||e<=0)return`$0`;if(e<.01){let t=e.toFixed(5);return t===`0.00000`?`$0`:`$`+t.replace(/(\d)0+$/,`$1`).replace(/\.$/,``)}return`$`+e.toFixed(3)}function T(e){if(e==null||!Number.isFinite(e)||e<0)return`—`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function me(e,t=Date.now()){let{clamped:n,severity:r}=fe(e.ctxPct);return{ctxClamped:n,ctxSeverity:r,elapsed:!Number.isFinite(e.startedAt)||e.startedAt<=0?`—`:T(e.status===`running`?t-e.startedAt:(e.completedAt??t)-e.startedAt),cost:pe(e.costUsd),iterationCount:e.iteration,toolCount:e.toolCalls,tokensIn:w(e.tokensIn),tokensOut:w(e.tokensOut)}}var E=12,he=20,ge=500,D=200,O=[];function k(e,t,n){return{id:e,name:t?.trim()||e,sessionId:n,status:`running`,iteration:0,toolCalls:0,costUsd:0,ctxPct:0,ctxTokens:0,maxContext:0,extensions:0,startedAt:Date.now(),toolLog:[],sparklineBins:Array(E).fill(0)}}var A=0;function j(){return`tl_${Date.now()}_${++A}`}function M(e,t){return[t,...e].slice(0,he)}function N(e){switch(e){case`text`:case`thinking`:case`tool_use`:case`tool_result`:case`error`:case`status`:case`system`:return e;default:return`status`}}function P(e,t){return e.subagentId!==t.subagentId||e.kind!==t.kind||e.iteration!==t.iteration||e.toolName!==t.toolName||e.toolOk!==t.toolOk?!1:e.kind===`text`||e.kind===`thinking`}function F(e,t){let n=e[e.length-1];return n&&P(n,t)?[...e.slice(0,-1),{...n,content:`${n.content}${t.content}`,ts:t.ts}].slice(-1e3):[...e,t].slice(-1e3)}function I(e){return[e[0]+1,...e.slice(0,11)]}function L(e){return Number.isFinite(e)?Math.max(0,Math.min(100,e)):0}var _e=n()((t,n)=>({agents:new Map,leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0,fleetConcurrency:0,fleetConcurrencyMax:4,fleetMaxSpawns:void 0,fleetUsedSpawns:void 0,fleetRemainingSpawns:void 0,fleetBudgetSource:void 0,fleetCheckpointMaxSpawns:void 0,fleetCeilingMismatch:!1,eventTimeline:[],agentTimeline:[],agentTranscripts:new Map,pushAgentTimelineEntry:e=>t(t=>{let n={id:`agent_tl_${Date.now()}_${Math.random().toString(36).slice(2,6)}`,...e,kind:N(e.kind)},r=new Map(t.agentTranscripts);return r.set(n.subagentId,F(r.get(n.subagentId)??[],n)),{agentTimeline:[n,...t.agentTimeline].slice(0,ge),agentTranscripts:r}}),clear:()=>t({agents:new Map,leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0,fleetConcurrency:0,fleetConcurrencyMax:4,fleetMaxSpawns:void 0,fleetUsedSpawns:void 0,fleetRemainingSpawns:void 0,fleetBudgetSource:void 0,fleetCheckpointMaxSpawns:void 0,fleetCeilingMismatch:!1,eventTimeline:[],agentTimeline:[],agentTranscripts:new Map}),getAgentsBySession:e=>{let t=[];for(let r of n().agents.values())r.sessionId===e&&t.push(r);return t},getAgentTranscript:e=>n().agentTranscripts.get(e)??O,clearFinishedAgents:()=>t(e=>{let t=new Map(e.agents),n=new Set,r=0,i=0;for(let[e,a]of t)a.status!==`running`&&(t.delete(e),n.add(e),r+=a.tokensIn??0,i+=a.tokensOut??0);let a=new Map(e.agentTranscripts);for(let e of n)a.delete(e);return{agents:t,agentTranscripts:a,agentTimeline:e.agentTimeline.filter(e=>!n.has(e.subagentId)),eventTimeline:e.eventTimeline.filter(e=>!n.has(e.agentId)),leaderId:e.leaderId&&n.has(e.leaderId)?void 0:e.leaderId,fleetTokensIn:Math.max(0,e.fleetTokensIn-r),fleetTokensOut:Math.max(0,e.fleetTokensOut-i)}}),applyEvent:n=>t(t=>{let r=new Map(t.agents),i=new Map(t.agentTranscripts),a=t.eventTimeline,o=t.leaderId,s=t.fleetTokensIn,c=t.fleetTokensOut;if(n.kind===`session_stopped`&&n.sessionId){let e=new Set;for(let[t,a]of r)a.sessionId===n.sessionId&&(r.delete(t),i.delete(t),e.add(t));return{agents:r,agentTranscripts:i,agentTimeline:t.agentTimeline.filter(t=>!e.has(t.subagentId)),leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0}}if(n.kind===`removed`&&n.subagentId){let e=r.get(n.subagentId);return r.delete(n.subagentId),i.delete(n.subagentId),{agents:r,agentTranscripts:i,agentTimeline:t.agentTimeline.filter(e=>e.subagentId!==n.subagentId),eventTimeline:t.eventTimeline.filter(e=>e.agentId!==n.subagentId),leaderId:t.leaderId===n.subagentId?void 0:t.leaderId,fleetTokensIn:Math.max(0,t.fleetTokensIn-(e?.tokensIn??0)),fleetTokensOut:Math.max(0,t.fleetTokensOut-(e?.tokensOut??0))}}if(n.kind===`leader_updated`&&n.subagentId){let e=t.leaderId;if(e&&e!==n.subagentId){let t=r.get(e);t&&r.set(e,{...t,isLeader:!1})}o=n.subagentId;let i=r.get(n.subagentId)??k(n.subagentId,n.name,n.sessionId);return r.set(n.subagentId,{...i,isLeader:!0,name:n.name?.trim()||i.name}),a=M(a,{id:j(),kind:`leader_updated`,agentId:n.subagentId,agentName:n.name??o,timestamp:Date.now(),message:`${n.name??n.subagentId} became leader`}),{agents:r,leaderId:o,eventTimeline:a}}if(!n.subagentId)return t;let l=r.get(n.subagentId)??k(n.subagentId,n.name,n.sessionId),u={...l},d=Date.now();switch(n.kind){case`spawned`:u.name=n.name?.trim()||u.name,u.provider=n.provider??u.provider,u.model=n.model??u.model,u.description=n.description??u.description,u.taskId=n.taskId??u.taskId,u.sessionId=n.sessionId??u.sessionId,u.status=`running`,u.sparklineBins=Array(E).fill(0),a=M(a,{id:j(),kind:`spawned`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} spawned`});break;case`task_started`:u.description=n.description??u.description,u.taskId=n.taskId??u.taskId,u.status=`running`,a=M(a,{id:j(),kind:`task_started`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} started: ${n.description??`new task`}`});break;case`tool_executed`:{let e=typeof n.ok!=`boolean`||n.ok,t=typeof n.durationMs==`number`?n.durationMs:0;u.lastTool=n.toolName??u.lastTool,u.toolCalls+=1,u.toolLog=[{name:n.toolName??`unknown`,ok:e,durationMs:t,at:d},...u.toolLog].slice(0,50),u.sparklineBins=I(u.sparklineBins),a=M(a,{id:j(),kind:`tool_executed`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} ${e?`✓`:`✗`} ${n.toolName??`tool`}`,value:t});break}case`iteration_summary`:u.iteration=n.iteration??u.iteration,typeof n.toolCalls==`number`&&(u.toolCalls=n.toolCalls),typeof n.costUsd==`number`&&(u.costUsd=n.costUsd),u.currentTool=n.currentTool??u.currentTool,typeof n.partialText==`string`&&n.partialText&&(u.partialText=n.partialText),u.sparklineBins=I(u.sparklineBins),a=M(a,{id:j(),kind:`iteration_summary`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} iter ${n.iteration??u.iteration} · ${n.currentTool?`${n.currentTool}`:``}`,value:n.costUsd});break;case`budget_warning`:{let e=n.budgetKind??`budget`,t=typeof n.used==`number`?n.used:0,r=typeof n.limit==`number`?n.limit:0;u.budgetWarning={kind:e,used:t,limit:r},a=M(a,{id:j(),kind:`budget_warning`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} hit ${e} budget ${t}/${r}`,value:t});break}case`budget_extended`:u.extensions=n.totalExtensions??u.extensions+1,u.budgetWarning=void 0,a=M(a,{id:j(),kind:`budget_extended`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} extended budget ⚡×${u.extensions}`});break;case`ctx_pct`:u.ctxPct=L(Math.round(Math.max(0,n.load??0)*100)),u.ctxTokens=n.tokens??u.ctxTokens,u.maxContext=n.maxContext??u.maxContext,u.ctxPct>=80&&!u.budgetWarning&&(u.budgetWarning=u.ctxPct>=100?{kind:`hard`,used:u.ctxPct,limit:100}:{kind:`soft`,used:u.ctxPct,limit:100}),typeof n.costUsd==`number`&&(u.costUsd=n.costUsd),typeof n.tokensIn==`number`&&(u.tokensIn=n.tokensIn,s=s-(l.tokensIn??0)+n.tokensIn),typeof n.tokensOut==`number`&&(u.tokensOut=n.tokensOut,c=c-(l.tokensOut??0)+n.tokensOut),a=M(a,{id:j(),kind:`ctx_pct`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} ctx ${u.ctxPct}%`,value:u.ctxPct});break;case`task_completed`:{u.status=n.status===`success`?`completed`:n.status??`completed`,typeof n.iterations==`number`&&(u.iteration=n.iterations),typeof n.toolCalls==`number`&&(u.toolCalls=n.toolCalls),u.error=n.error,u.currentTool=void 0,u.completedAt=d,u.failureReason=n.failureReason??u.failureReason,typeof n.finalText==`string`&&n.finalText&&(u.finalText=e(n.finalText));let t=n.status===`success`?`✓ completed`:n.status===`failed`?`✗ failed${n.failureReason?` (${n.failureReason})`:``}`:n.status===`timeout`?`⏱ timeout${n.failureReason?` (${n.failureReason})`:``}`:`stopped`;a=M(a,{id:j(),kind:`task_completed`,agentId:n.subagentId,agentName:u.name,timestamp:d,message:`${u.name} ${t}`,value:u.costUsd});break}}r.set(n.subagentId,u);let f=!1;if(r.size>D)for(let[e,t]of r){if(r.size<=D)break;t.status!==`running`&&e!==n.subagentId&&(r.delete(e),i.delete(e),f=!0,s=Math.max(0,s-(t.tokensIn??0)),c=Math.max(0,c-(t.tokensOut??0)),o===e&&(o=void 0))}return{agents:r,...f?{agentTranscripts:i}:{},leaderId:o,fleetTokensIn:s,fleetTokensOut:c,eventTimeline:a}})})),ve=e=>{let t=0,n=0,r=0,i=0;for(let a of e.agents.values())a.status===`running`?t++:a.status===`completed`?n++:(a.status===`failed`||a.status===`timeout`)&&r++,Number.isFinite(a.costUsd)&&a.costUsd>0&&(i+=a.costUsd);return{running:t,completed:n,failed:r,total:e.agents.size,totalCost:i,tokensIn:e.fleetTokensIn,tokensOut:e.fleetTokensOut,concurrency:e.fleetConcurrency,concurrencyMax:e.fleetConcurrencyMax,maxSpawns:e.fleetMaxSpawns,usedSpawns:e.fleetUsedSpawns,remainingSpawns:e.fleetRemainingSpawns,budgetSource:e.fleetBudgetSource,ceilingMismatch:e.fleetCeilingMismatch||void 0,checkpointMaxSpawns:e.fleetCheckpointMaxSpawns}},ye=e=>{let t=Array.from(e.agents.values()),n=e.leaderId;return t.sort((e,t)=>e===t||e.id===t.id?0:e.id===n?-1:t.id===n?1:C(e,t)),t},be=e=>e.leaderId?e.agents.get(e.leaderId)?.name:void 0,xe=n()(e=>({files:[],error:null,loadingList:!1,selectedPath:null,diff:null,loadingDiff:!1,setFiles:(t,n)=>e({files:t,error:n,loadingList:!1}),setListLoading:t=>e({loadingList:t}),select:t=>e({selectedPath:t,diff:null,loadingDiff:!!t}),setDiff:t=>e({diff:t,loadingDiff:!1}),setDiffLoading:t=>e({loadingDiff:t}),clear:()=>e({files:[],error:null,selectedPath:null,diff:null,loadingDiff:!1})})),Se=n()(e=>({info:null,setInfo:t=>e({info:t}),clear:()=>e({info:null})})),Ce=n()((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}})),we=n()(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 Te(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 Ee(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(Te):void 0,lastTask:typeof e.lastTask==`string`?e.lastTask:void 0,lastStatus:typeof e.lastStatus==`string`?e.lastStatus:void 0}}var De=n()(e=>({goal:null,setGoal:t=>e({goal:Ee(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{}}})),Oe=n()(e=>({entries:[],loading:!1,error:null,setEntries:(t,n=null)=>e({entries:t,error:n,loading:!1}),setLoading:t=>e({loading:t}),removeEntry:t=>e(e=>({entries:e.entries.filter(e=>e.id!==t)})),updateEntryName:(t,n)=>e(e=>({entries:e.entries.map(e=>{if(e.id!==t)return e;let r=n.trim();if(!r){let{name:t,...n}=e;return n}return{...e,name:r}})})),clearHistory:()=>e({entries:[]})}));function R(e,t){return e.presence?.some(e=>e.active)===!0||e.tags?.some(e=>e.startsWith(`session:`)&&t.includes(e.slice(8)))===!0}var ke=3e5,Ae=n()((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=Me(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=>H(e)).length,orphanedBoardTotal:t?.orphanedTotal??n.filter(e=>!H(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?H(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=z(t?.board)?t.board:null;if(n&&e.activeBoardId===n.id)return{boards:W(e.boards,U(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?W(e.boards,U(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<ke));return r[n]={startedAt:t},{verificationActivity:r,loading:!1,error:null}})}return}if(n===`kanban.task.verification_completed`&&V(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=G(e.activeBoard,i.task);return{verificationActivity:n,boards:W(e.boards,U(t)),activeBoard:t,loading:!1,error:null}}return{verificationActivity:n,loading:!1,error:null}});return}if(je(i)){let t=i.board;e(e=>({boards:W(e.boards,U(t)),activeBoard:e.activeBoardId===t.id?t:e.activeBoard,loading:!1,error:null}));return}if(V(i)){e(e=>{if(e.activeBoard&&e.activeBoard.id===i.boardId){let t=G(e.activeBoard,i.task);return{boards:W(e.boards,U(t)),activeBoard:t,loading:!1,error:null}}return{loading:!1,error:null}});return}if(z(i)){let t=U(i);if(n===`kanban.get`){e(e=>({boards:W(e.boards,t),activeBoard:e.activeBoardId===i.id?i:e.activeBoard,loading:!1,error:null}));return}e(e=>({boards:W(e.boards,t),activeBoardId:i.id,activeBoard:i,loading:!1,error:null}));return}if(B(i)){e(e=>({...e.activeBoard?(()=>{let t=G(e.activeBoard,i);return{activeBoard:t,boards:W(e.boards,U(t))}})():{activeBoard:e.activeBoard},loading:!1,error:null}));return}if(Array.isArray(i)&&i.every(Ne)){e(e=>({...e.activeBoard?(()=>{let t={...e.activeBoard,columns:i};return{activeBoard:t,boards:W(e.boards,U(t))}})():{activeBoard:e.activeBoard},loading:!1,error:null}));return}e({loading:!1,error:null})}}));function z(e){return!!e&&typeof e==`object`&&Array.isArray(e.columns)&&Array.isArray(e.tasks)}function B(e){return!!e&&typeof e==`object`&&typeof e.title==`string`}function V(e){return!!e&&typeof e==`object`&&typeof e.boardId==`string`&&B(e.task)}function je(e){return!!e&&typeof e==`object`&&z(e.board)}function Me(e){return!!e&&typeof e==`object`&&Array.isArray(e.items)&&typeof e.total==`number`}function H(e){return R(e,[])}function Ne(e){return!!e&&typeof e==`object`&&typeof e.id==`string`}function U(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 W(e,t){return[t,...e.filter(e=>e.id!==t.id)].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))}function G(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 Pe(e){switch(e){case`tui`:return`tui`;case`cli`:case`repl`:return`repl`;case`webui`:return`webui`;default:return`webui`}}function Fe(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[Pe(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 Ie(e){if(e!==void 0)return Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0}function Le(e){return e.map(e=>({...e,agents:e.agents.map(e=>({...e,ctxPct:Ie(e.ctxPct)}))}))}var Re=0,K=n()(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=Le(t),r=K.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].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,...Fe(n),lastUpdated:Date.now()})},addMailActivity:t=>e(e=>({mailActivity:[{...t,seq:t.seq??++Re},...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:{...K.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()})})),ze=n()(t(e=>({viewMode:`office`,showHud:!0,showLegend:!0,showMinimap:!0,showControls:!0,animateEdges:!0,showFeed:!0,background:`dots`,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})}),{name:`wrongstack-officemap`})),q=e=>`${e.providerId}\u0000${e.model}`,Be=n(e=>({entries:{},summary:null,loading:!1,error:null,update:t=>e(e=>{let n={...e.entries},r=q(t);return t.state===`healthy`?delete n[r]:n[r]={...n[r],...t},{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})},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:{},summary:null,error:null})})),Ve=n(e=>({pending:null,selected:0,setPending:t=>e({pending:t,selected:0}),clear:()=>e({pending:null,selected:0}),move:t=>e(e=>{if(!e.pending||e.pending.candidates.length===0)return e;let n=e.pending.candidates.length;return{selected:(e.selected+t+n)%n}}),setSelected:t=>e({selected:Math.max(0,t)})})),He=n()(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})})),Ue=n()(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})})),We=n(e=>({sideEffects:[],loading:!1,setSideEffects:t=>e({sideEffects:t,loading:!1}),setLoading:t=>e({loading:t}),clear:()=>e({sideEffects:[],loading:!1})})),Ge=n()(e=>({specs:[],detail:null,expandedSpecId:null,setSpecs:t=>e({specs:t}),setDetail:t=>e({detail:t}),setExpanded:t=>e({expandedSpecId:t,detail:null})})),Ke=new Set([`idle`,`queued`,`discovering`,`inventorying`,`enriching`,`researching`,`synthesizing`,`completed`,`failed`,`cancelled`]);function J(e){return Ke.has(e)?e:void 0}var Y={snapshot:null,stale:!1,loading:!1,error:null,activeJob:null,lastWorkspaceId:null,reportId:null},qe=n()(e=>({...Y,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=J(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(Y)}));function Je(e,t){return{seatId:Z(e.seatId)??`seat`,persona:Z(e.persona)??`voter`,status:Z(e.status)??`valid`,optionId:Z(e.optionId),stance:Z(e.stance),rationale:Z(e.rationale),providerId:Z(e.providerId),model:Z(e.model),veto:$(e.veto),weight:Q(e.weight),durationMs:Q(e.durationMs),error:Z(e.error),at:Q(e.at)??t}}function Ye(e){if(e.phase===`voting`)return`voting · ${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`}`];return e.judgeUsed&&n.push(`judge used`),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 Xe=n(e=>({panels:[],recordVote:t=>{let n=Z(t.requestId);if(!n)return;let r=Date.now();e(e=>({panels:X(e.panels,n,r,e=>{let n=Z(t.seatId)??`seat`,i=Je(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=Z(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:Q(t.at)??r,status:Z(t.status),resolution:Z(t.resolution),optionId:Z(t.optionId),reason:Z(t.reason),configuredSeatCount:Q(t.configuredSeatCount),validVoteCount:Q(t.validVoteCount),distinctTargetCount:Q(t.distinctTargetCount),judgeUsed:$(t.judgeUsed),totalTokens:Q(i?.totalTokens),durationMs:Q(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 Z(e){return typeof e==`string`&&e.trim()?e:void 0}function Q(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function $(e){return typeof e==`boolean`?e:void 0}var Ze=n()(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{le as A,d as B,be as C,me as D,C as E,ie as F,c as H,f as I,a as L,b as M,x as N,T as O,ae as P,s as R,ve as S,_e as T,u as U,l as V,we as _,Ge as a,xe as b,He as c,ze as d,K as f,De as g,Oe as h,qe as i,ce as j,w as k,Ve as l,R as m,Ye as n,We as o,Ae as p,Xe as r,Ue as s,Ze as t,Be as u,Ce as v,ye as w,O as x,Se as y,o as z};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,n,o as r,r as i,t as a}from"./chat-store-c0pGYczr.js";import{Ga as o,Ua as s,za as c}from"./vendor-C_zEzV4N.js";import{t as l}from"./i18n-DbJfY4tY.js";import{a as u,c as d,i as f,l as p,o as m,s as h,t as g}from"./ws-client-CBfMQmW9.js";import{t as _}from"./session-store-CKdsROPD.js";import{i as v,n as y}from"./codemap-activity-store-BH7Mh4k9.js";import{F as b,I as x,P as ee,T as S,_ as C,a as te,b as ne,c as re,f as ie,g as ae,h as oe,i as w,j as T,l as se,o as ce,p as le,r as E,s as D,t as O,u as k,v as ue,y as de}from"./stores-C0xX0jn4.js";import{r as A}from"./mailbox-store-bF96Ih2G.js";import{n as j,t as fe}from"./ui-store-xx1NssJI.js";import{n as pe,o as me}from"./view-navigation-CZKugncK.js";import{t as he}from"./codemap-index-store-BFm1TzVW.js";import{n as M}from"./Toaster-BlD1m8P2.js";var N=e(o(),1);function ge(e,t){if(t)return!0;try{return new URLSearchParams(e).get(`shell`)===`desktop`}catch{return!1}}function P(){return typeof window>`u`?!1:ge(window.location.search,!!window.wrongstackDesktopHost)}function F(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function I(e,t=``){return typeof e==`string`?e:t}function L(e,t=0){return typeof e==`number`&&Number.isFinite(e)?e:t}function _e(e){let t=F(e.payload);if(!t)return null;switch(e.type){case`provider.thinking_delta`:{let e=I(t.text);return e?{kind:`thinking-delta`,text:e}:null}case`provider.text_delta`:{let e=I(t.text);return e?{kind:`text-delta`,text:e,messageId:I(t.messageId)}:null}case`provider.response`:return{kind:`response`,content:t.content,stopReason:I(t.stopReason)};case`run.result`:return{kind:`run-result`,status:I(t.status),iterations:L(t.iterations,1),...typeof t.finalText==`string`?{finalText:t.finalText}:{}};case`error`:return{kind:`error`,message:I(t.message,`Run failed`)};default:return null}}function R(e){let t=F(e.payload);if(!t)return null;if(e.type===`tool.started`){let e=I(t.name,`tool`);return{kind:`started`,id:I(t.id,e),name:e,input:t.input,messageId:I(t.messageId)}}if(e.type===`tool.progress`){let e=F(t.event);return{kind:`progress`,id:I(t.id),name:I(t.name,`tool`),eventType:I(e?.type),text:I(e?.text).trim()}}return e.type===`tool.executed`?{kind:`executed`,id:I(t.id),name:I(t.name),ok:t.ok!==!1,durationMs:L(t.durationMs),...typeof t.output==`string`?{output:t.output}:{},...Array.isArray(t.sage)?{sage:t.sage.filter(e=>typeof e==`string`)}:{}}:null}function z(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return e}function B(e){return typeof e==`string`&&e.length>0?e:void 0}function ve(e){let t=F(e.payload);if(!t)return null;switch(e.type){case`fleet.concurrency_update`:return{kind:`concurrency`,active:L(t.fleetConcurrency),maximum:L(t.fleetConcurrencyMax),maxSpawns:z(t.maxSpawns),usedSpawns:z(t.usedSpawns),remainingSpawns:z(t.remainingSpawns),maxSpawnsSource:B(t.maxSpawnsSource),maxConcurrentSource:B(t.maxConcurrentSource),effectiveSource:B(t.effectiveSource),checkpointMaxSpawns:z(t.checkpointMaxSpawns),ceilingMismatch:t.ceilingMismatch===!0||void 0};case`client.status_update`:return{kind:`client-status`,status:t};case`sessions.status_update`:return{kind:`sessions`,sessions:Array.isArray(t.sessions)?t.sessions:[]};case`coordinator.stats`:return{kind:`coordinator`,agents:Array.isArray(t.subagentStatuses)?t.subagentStatuses.filter(e=>F(e)!==null):[]};default:return null}}new Set([...new Set([`mode_changed`,`compaction`,`checkpoint`,`skill_activated`,`skill_deactivated`,`agent_spawned`,`agent_stopped`,`agent_error`,`error`,`provider_retry`,`provider_error`,`message_truncated`])].filter(e=>e!==`checkpoint`));var ye=[`[MAILBOX]`,`[MAILBOX BTW]`,`[BY THE WAY —`,`[QUEUED MESSAGES —`,`[FLEET PULSE]`,`[loop-detector]`,`[SESSION RESUME FILE VALIDATION]`,`[SESSION RESUME INTERRUPTED WORK]`];function be(e){let t=e.trimStart();for(let e of ye)if(t.startsWith(e))return!0;return!1}function xe(e){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
|
2
|
-
<rect width="64" height="64" fill="#121210" />
|
|
3
|
-
<path fill="#FD9F02" d="M5 27h10v10H5zM27 27h10v10H27zM38 27h10v10H38zM49 27h10v10H49z" />
|
|
4
|
-
<path fill="#FE2E5F" d="M16 32h10v10H16z" />
|
|
5
|
-
${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>`:``}
|
|
6
|
-
</svg>`}function Se(e){return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}function Ce(){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 V=`idle`;function H(e){V=e;let t=Ce();t&&(t.href=Se(xe(e)))}var we=!1;function Te(){we||typeof document>`u`||(we=!0,document.addEventListener(`visibilitychange`,()=>{!document.hidden&&(V===`ready`||V===`error`||V===`attention`)&&H(`idle`)}))}var Ee=2048,De=2097152,Oe=new Set([`image/png`,`image/jpeg`,`image/webp`,`image/gif`]),U=class extends Error{reason;constructor(e,t){super(e),this.reason=t,this.name=`ImageAttachmentError`}};function ke(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=()=>n(r.error),r.readAsDataURL(e)})}function Ae(e){let t=e.indexOf(`,`),n=t>=0?e.length-t-1:e.length;return Math.floor(n*3/4)}function je(e){return/^data:([^;,]+)/.exec(e)?.[1]??`image/png`}async function Me(e){try{return await createImageBitmap(e)}catch{let t=URL.createObjectURL(e);try{return await new Promise((e,n)=>{let r=new Image;r.onload=()=>e(r),r.onerror=()=>n(Error(`image decode failed`)),r.src=t})}finally{URL.revokeObjectURL(t)}}}function Ne(e,t,n,r,i){let a=document.createElement(`canvas`);a.width=t,a.height=n;let o=a.getContext(`2d`);if(!o)throw new U(`canvas 2d context unavailable`,`decode_failed`);o.drawImage(e,0,0,t,n);let s=a.toDataURL(`image/webp`,i);return s.startsWith(`data:image/webp`)?s:r?a.toDataURL(`image/png`):a.toDataURL(`image/jpeg`,i)}var Pe=0;function Fe(){return Pe+=1,`img_${Date.now()}_${Pe}`}async function Ie(e){let t=Oe.has(e.type),n;try{n=await Me(e)}catch{throw new U(`Could not decode image "${e.name}"`,`decode_failed`)}let r=n.width,i=n.height,a=Math.max(r,i);if(!(!t||a>Ee||e.size>De)){let t=await ke(e);return{id:Fe(),dataUrl:t,mediaType:e.type,bytes:Ae(t),name:e.name||void 0,width:r,height:i}}let o=e.type!==`image/jpeg`,s=Math.min(1,Ee/a),c=.85,l=Ne(n,Math.max(1,Math.round(r*s)),Math.max(1,Math.round(i*s)),o,c);Ae(l)>4194304&&(s=Math.min(s,1280/a),c=.7,l=Ne(n,Math.max(1,Math.round(r*s)),Math.max(1,Math.round(i*s)),o,c)),`close`in n&&n.close();let u=Ae(l);if(u>4194304)throw new U(`Image "${e.name}" is too large after compression`,`too_large`);return{id:Fe(),dataUrl:l,mediaType:je(l),bytes:u,name:e.name||void 0,width:Math.max(1,Math.round(r*s)),height:Math.max(1,Math.round(i*s))}}function Le(e){return e.map(e=>{let t=e.dataUrl.indexOf(`,`);return{data:t>=0?e.dataUrl.slice(t+1):e.dataUrl,mediaType:e.mediaType,...e.name?{name:e.name}:{}}})}var W=null;function Re(){if(typeof window>`u`)return null;if(W)return W;let e=window.AudioContext||window.webkitAudioContext;if(!e)return null;try{W=new e}catch{return null}return W}function G(e,t,n){let r=Re();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 ze(){G(659.25,0,.18),G(880,.12,.24)}function Be(){G(523.25,0,.15),G(659.25,.1,.15),G(783.99,.2,.25)}var K=`default`;K=typeof window<`u`&&`Notification`in window?Notification.permission:`unsupported`;async function Ve(){if(K===`unsupported`||K===`granted`||K===`denied`)return K;try{let e=await Notification.requestPermission();return K=e,e}catch{return`denied`}}function He(e,t,n){if(!(typeof document>`u`||!document.hidden)&&K===`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{}}var Ue={"iteration.started":We,"provider.text_delta":Ge,"provider.thinking_delta":Ke,"tool.started":qe,"tool.progress":Je,"tool.executed":Ye,"tool.confirm_needed":Xe,"run.result":Ze},q=new Map,J=[];function We(e){if(!f(e))return;u(e),e.payload.index===1&&(q.clear(),J=[]);let t=e.payload;_.getState().setIteration({index:t.index,max:t.maxIterations??0}),a.getState().setLoading(!0),typeof document<`u`&&document.hidden&&H(`running`),a.getState().runStart===null&&a.getState().setRunStart({at:Date.now(),cost:_.getState().cost}),a.getState().setCurrentAssistantMessage(null)}function Ge(e){if(!f(e))return;let t=_e(e);if(t?.kind!==`text-delta`)return;p.flush(`__thinking__`),a.getState().clearThinking();let n=a.getState().currentAssistantMessageId;n||(n=a.getState().addMessage({role:`assistant`,content:``,streaming:!0}),a.getState().setCurrentAssistantMessage(n)),p.push(n,t.text,(e,t)=>a.getState().appendToMessage(e,t))}function Ke(e){if(!f(e))return;let t=_e(e);t?.kind===`thinking-delta`&&p.push(`__thinking__`,t.text,(e,t)=>a.getState().appendThinking(t))}function qe(e){if(!f(e))return;u(e);let n=R(e);if(n?.kind!==`started`)return;n.name===`nextsteps`&&n.id&&q.set(n.id,t(n.input));let r=a.getState().getToolMessageId(n.id);if(r){a.getState().setCurrentToolId(r);return}p.flushAll(),a.getState().clearThinking();let i=a.getState().currentAssistantMessageId;i&&a.getState().finalizeMessage(i,{final:!1}),a.getState().setCurrentAssistantMessage(null);let o=a.getState().addMessage({role:`tool`,content:``,toolName:n.name,toolInput:n.input,toolUseId:n.id});a.getState().setCurrentToolId(o),a.getState().addExecution({id:n.id,name:n.name,input:n.input,ok:!0,startedAt:Date.now()})}function Je(e){if(!f(e))return;let t=R(e);if(t?.kind!==`progress`)return;let n=t.text;if(!n)return;let r=a.getState().getToolMessageId(t.id);if(!r)return;let i=t.eventType===`warning`?`⚠ `:``;p.push(r,`${i}${n}\n`,(e,n)=>a.getState().appendToolProgressLinesByUseId(t.id,n.split(`
|
|
7
|
-
`).filter(e=>e.length>0)))}function Ye(e){if(!f(e))return;u(e);let t=R(e);if(t?.kind!==`executed`)return;if(t.name===`nextsteps`&&t.id){let e=q.get(t.id)??[];q.delete(t.id),t.ok&&e.length>0&&(J=e)}let{currentToolId:n}=a.getState(),r=t.id?a.getState().getToolMessageId(t.id):n;r&&(p.drop(r),t.id?a.getState().setToolResultByUseId(t.id,t.output??``,t.ok):a.getState().setToolResult(r,t.output??``,t.ok),a.getState().updateMessage(r,{toolDurationMs:t.durationMs,...t.sage&&t.sage.length>0?{sageLines:t.sage}:{}})),t.id&&a.getState().updateExecution(t.id,{completedAt:Date.now(),durationMs:t.durationMs,output:t.output,ok:t.ok}),n&&r===n&&a.getState().setCurrentToolId(null)}function Xe(e){if(!f(e))return;let t=e.payload;if(l.getState().yolo===!0&&!t.boundaryReason){g(x.getState().wsUrl).sendConfirm(t.id,`yes`),j.getState().hideConfirm();return}j.getState().showConfirm({id:t.id,toolName:t.toolName,input:t.input,suggestedPattern:t.suggestedPattern,decisionSource:t.decisionSource,riskTier:t.riskTier,boundaryReason:t.boundaryReason});try{Be()}catch{}Ve(),He(`${_.getState().projectName||`Agent`} needs approval`,`Tool "${t.toolName}" is waiting for your decision.`,`agent-confirm`),typeof document<`u`&&document.hidden&&H(`attention`)}function Ze(e){if(!f(e))return;let t=m(e,{status:`string`},{requestId:`string`,iterations:`number`,finalText:`string`,error:`object`});if(!t)return;let n=t.iterations??1;p.flushAll(),a.getState().flushThinkingLog(Math.max(1,n)),_.getState().setIteration(null),a.getState().setLoading(!1);let o=a.getState().currentAssistantMessageId,s=t.status===`done`?t.finalText?.trim():void 0;if(o){let e=a.getState().messages.find(e=>e.id===o);a.getState().updateMessage(o,{content:e?.content?.trim()?e.content:s??e?.content??``}),a.getState().finalizeMessage(o,{final:!0})}else if(s){let e=a.getState().runStart,t=i(s).stripped.trim(),n=a.getState().messages,r;for(let t=n.length-1;t>=0;t--){let i=n[t];if(i?.role===`assistant`&&(!e||i.timestamp>=e.at)){r=i;break}}let o=r?.content.trim();if(o===void 0||o!==s&&o!==t){let e=a.getState().addMessage({role:`assistant`,content:s});a.getState().finalizeMessage(e,{final:!0})}}t.status===`done`&&J.length>0&&(a.getState().messages.some(e=>e.role===`assistant`&&(e.nextSteps?.steps.length??0)>0)||a.getState().addMessage({role:`assistant`,content:``,nextSteps:{steps:J}}),J=[]),a.getState().setCurrentAssistantMessage(null),a.getState().clearThinking();let c=a.getState().runStart;if(c&&t.status===`done`){let e=a.getState().messages,t=-1,i=0;for(let n=e.length-1;n>=0;n--){let a=r(e[n]);if(a.role===`assistant`&&t===-1&&a.content&&(t=n),a.role===`tool`&&a.timestamp>=c.at&&(i+=1),a.role===`user`&&a.timestamp<=c.at)break}if(t!==-1){let r=_.getState().cost;a.getState().updateMessage(e[t]?.id,{runSummary:{iterations:n,tools:i,durationMs:Date.now()-c.at,costDelta:Math.max(0,r-c.cost)}})}}if(a.getState().setRunStart(null),t.status!==`done`&&t.error)t.requestId&&a.getState().updateMessage(t.requestId,{status:`failed`}),a.getState().addMessage({role:`assistant`,content:`Error: ${t.error.message}`,isError:!0}),M.error(`Run ended: ${t.error.message}`),He(`${_.getState().projectName||`Agent`} run failed`,t.error.message),typeof document<`u`&&document.hidden&&H(`error`);else if(t.status===`done`){if(typeof document<`u`&&document.hidden&&(M.success(`Run completed in ${n} iteration${n===1?``:`s`}`),He(`${_.getState().projectName||`Agent`} run finished`,`Completed in ${n} iteration${n===1?``:`s`}.`),H(`ready`)),Ve(),x.getState().soundOnComplete)try{ze()}catch{}typeof document<`u`&&document.dispatchEvent(new CustomEvent(`chat:next-step-countdown`))}let l=a.getState(),u=l.queue[0];if(!u)return;if(u.alreadyDispatched===!0){Qe(u);let e=l.dequeueDrainable();return e?$e(e):void 0}let d=l.dequeue();if(d)return $e(d)}function Qe(e){if(e.bubbleAdded===!0)return;let t=e.images??[];a.getState().addMessage({role:`user`,content:e.text,...t.length>0?{attachments:t.map(e=>({id:e.id,kind:`image`,dataUrl:e.dataUrl,mediaType:e.mediaType,bytes:e.bytes,name:e.name}))}:{}}),e.bubbleAdded=!0}function $e(e){let t=g(x.getState().wsUrl),n=e.images??[];if(a.getState().addMessage({role:`user`,content:e.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}))}:{}}),e.mode===`btw`){e.alreadyDispatched!==!0&&t.sendMailboxMessage({type:`btw`,to:`leader`,subject:`btw from WebUI`,body:e.text,priority:`normal`,audience:`all`});return}a.getState().setLoading(!0),t.sendMessage(e.text,n.length>0?Le(n):void 0)}var et={"coordinator.status":e=>{let t=e.payload;b.getState().setCoordinatorStatus(t.status,t.mode),t.taskQueue&&b.getState().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;b.getState().updateCoordinatorStats(t)},"budget.threshold_reached":e=>{let t=e.payload;b.getState().pushEvent(`budget.threshold_reached`,t,t.ts??Date.now(),t.subagentId,t.taskId),t.limit>0&&t.used/t.limit*100>=85&&b.getState().recordBudgetAlert(t.subagentId,t.kind,t.used,t.limit),b.getState().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;b.getState().recordBudgetDecision(t.subagentId,t.kind,t.decision,n),b.getState().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;b.getState().recordBudgetExtended(t.subagentId,t.kind,t.extendedTo),b.getState().pushEvent(`subagent.budget_extended`,t,Date.now(),t.subagentId)},"consensus.vote_initiated":e=>{let t=e.payload;b.getState().pushConsensusVote(t.changeId,t.title,t.eligible),b.getState().pushEvent(`consensus.vote_initiated`,t,Date.now()),M.info(`Vote started: `+t.title)},"consensus.vote_cast":e=>{let t=e.payload,n=b.getState().consensusVotes.get(t.changeId)?.eligible.find(e=>e.agentId===t.voterId);b.getState().recordConsensusVote(t.changeId,t.voterId,n?.agentName??t.voterId,t.value),b.getState().pushEvent(`consensus.vote_cast`,t,Date.now(),t.voterId)},"consensus.vote_resolved":e=>{let t=e.payload;b.getState().resolveConsensusVote(t.changeId,t.result,t.approveCount,t.rejectCount),b.getState().pushEvent(`consensus.vote_resolved`,t,Date.now()),M.info(`Vote resolved: `+t.result+` (y`+t.approveCount+` n`+t.rejectCount+`)`)},"task.pending":e=>{let t=e.payload;b.getState().pushTaskPending(t.taskId,t.description,t.priority),b.getState().pushEvent(`task.pending`,t,Date.now())},"task.started":e=>{let t=e.payload;b.getState().startTask(t.taskId,t.subagentId),b.getState().pushEvent(`task.started`,t,Date.now(),t.subagentId)},"task.completed":e=>{let t=e.payload;b.getState().completeTask(t.taskId,t.status,t.durationMs),b.getState().pushEvent(`task.completed`,t,Date.now(),t.subagentId)},"task.failed":e=>{let t=e.payload;b.getState().failTask(t.taskId,t.error),b.getState().pushEvent(`task.failed`,{taskId:t.taskId,subagentId:t.subagentId,error:String(t.error).slice(0,120)},Date.now(),t.subagentId),M.error(`Task failed: `+String(t.error).slice(0,80))}};function tt(){let e=g();e?.send?.({type:`mailbox.messages`,payload:{limit:30,incompleteOnly:!0}}),e?.send?.({type:`mailbox.agents`,payload:{}})}var nt=null;function Y(){nt!==null&&clearTimeout(nt),nt=setTimeout(()=>{nt=null,tt()},300)}function rt(e){let t=T.getState();if(t.openFiles.length===0){t.setProjectIdentity(e);return}if(t.projectIdentity&&t.projectIdentity!==e){t.clearOpenTabs(),t.setProjectIdentity(e);return}t.setProjectIdentity(e);let n=t.openFiles.filter(e=>e.content===``&&!e.dirty).map(e=>e.path);if(n.length===0)return;T.setState({hydratingPaths:new Set(n)});let r=g();for(let e of n)r?.send?.({type:`files.read`,payload:{filePath:e}})}function it(e){let t=e.payload;if(t.error){T.getState().setError(t.error);return}T.getState().setTree(t.root,t.tree)}function at(e){let t=e.payload,n=T.getState();if(t.error){if(n.hydratingPaths.has(t.filePath)){n.hydrateFileFailed(t.filePath);return}n.setError(t.error);return}if(n.hydratingPaths.has(t.filePath)){n.hydrateFileContent(t.filePath,t.content);return}n.openFile(t.filePath,t.content)}function ot(e){let t=e.payload;t.success?T.getState().markSaved(t.filePath):t.error&&T.getState().setError(`Save failed: ${t.error}`)}function st(e){let t=e.payload;!t.success&&t.error&&T.getState().setError(`Create failed: ${t.error}`)}function ct(e){let t=e.payload;t.success?T.getState().closeFile(t.filePath):t.error&&T.getState().setError(`Delete failed: ${t.error}`)}function lt(e){let t=e.payload;t.success?T.getState().closeFile(t.oldPath):t.error&&T.getState().setError(`Rename failed: ${t.error}`)}function ut(e){let t=e.payload;t.success?T.getState().closeFile(t.srcPath):t.error&&T.getState().setError(`Move failed: ${t.error}`)}var dt=null,ft=500;function pt(e){dt&&clearTimeout(dt),dt=setTimeout(()=>{dt=null;let e=_.getState().cwd;T.getState().setTreeLoading(!0),g().send({type:`files.tree`,payload:{path:e}})},ft)}function mt(e){let t=d(`mailbox.event`,e.payload);t&&(h.getState().pushEvent(t),h.getState().setActive(!0)),Y()}function ht(e){let t=e.payload;t?.messages&&A.getState().setMessages(t.messages)}function gt(e){let t=e.payload;t?.agents&&A.getState().setAgents(t.agents)}function _t(e){let t=d(`mailbox.received`,e.payload);t&&(h.getState().pushEvent(t),h.getState().setActive(!0)),Y()}function vt(e){Y()}function yt(e){let t=e.payload;t?.agentId&&A.getState().removeAgent(t.agentId)}function bt(e){A.getState().setMessages([]),tt()}function xt(e){Y()}function St(e){let t=e.payload;t&&typeof t.totalRemoved==`number`&&A.getState().setLastCompaction({readByAllRemoved:t.readByAllRemoved??0,expiredRemoved:t.expiredRemoved??0,stalePurged:t.stalePurged??0,totalRemoved:t.totalRemoved,remaining:t.remaining??0}),Y()}function Ct(e){let t=e.payload;if(t?.success){Y();return}M.error(`Mailbox action failed: ${t?.error??`unknown error`}`)}var wt={"files.tree":it,"files.tree.changed":pt,"files.read":at,"files.written":ot,"files.created":st,"files.deleted":ct,"files.renamed":lt,"files.moved":ut,"mailbox.event":mt,"mailbox.messages":ht,"mailbox.agents":gt,"mailbox.received":_t,"mailbox.agent_registered":vt,"mailbox.agent_deregistered":yt,"mailbox.cleared":bt,"mailbox.purged":xt,"mailbox.compacted":St,"mailbox.action_result":Ct};function Tt(e){let t=e.payload;O.getState().setSnapshot(t.worktrees??[],t.baseBranch??``)}function Et(e){let t=e.payload;O.getState().pushEvent(t)}function Dt(e){let t=e.payload;O.getState().setOrphans(t.orphans??[],t.canClean??!1,t.reason)}function Ot(e){let t=e.payload;O.getState().setCleanResult({...t,at:Date.now()})}function kt(e){let t=e.payload;O.getState().setMergeResult({...t,at:Date.now()})}function At(e){let t=e.payload;O.getState().setDiff(t.dir,t.summary)}function jt(e){S.getState().applyEvent(e.payload);let t=d(`subagent.event`,e.payload);t&&(h.getState().pushEvent(t),h.getState().setActive(!0))}function Mt(e){let t=ve(e);t?.kind===`concurrency`&&S.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 Nt(e){let t=ve(e);if(t?.kind!==`client-status`)return;let n=t.status;ie.getState().setCurrentSession({clientType:n.clientType,clientId:n.clientId,agentCount:n.agentCount,model:n.model,mode:n.mode,toolCalls:n.toolCalls,inputTokens:n.inputTokens,outputTokens:n.outputTokens,cacheTokens:n.cacheTokens,costUsd:n.costUsd,timestamp:n.timestamp})}function Pt(e){let t=ve(e);if(t?.kind!==`sessions`)return;ie.getState().setLiveSessions(t.sessions);let n=Date.now();if(n-It>=5e3&&(It=n,tt()),n-Ft<1e3)return;Ft=n;let r=d(`sessions.status_update`,e.payload);r&&(h.getState().pushEvent(r),h.getState().setActive(!0))}var Ft=0,It=0,Lt={"worktree.state":Tt,"worktree.event":Et,"worktree.orphans":Dt,"worktree.cleanup_result":Ot,"worktree.merge_result":kt,"worktree.diff_result":At,"subagent.event":jt,"fleet.concurrency_update":Mt,"client.status_update":Nt,"sessions.status_update":Pt};function Rt(e,t){let n=e=>e.trim().replace(/\s+/g,` `).toLowerCase();return n(e)===n(t)}var zt=50,Bt=200;function Vt(e){return e.length<=300?e:`${e.slice(0,299)}…`}function Ht(e){return{...e,text:Vt(e.text)}}function Ut(e){let t=[];for(let n of Object.values(e))n.state===`exited`&&t.push(n);if(t.length<=Bt)return e;t.sort((e,t)=>(t.exitedAt??t.lastSeenAt).localeCompare(e.exitedAt??e.lastSeenAt));let n={...e};for(let e of t.slice(Bt))delete n[e.id];return n}var Wt=c()(e=>({traces:[],contextMemories:{},transitions:[],pushTrace:t=>e(e=>{let n={...e.contextMemories},r=[...e.transitions],i=t.injected.map(Ht),a=t.activated.map(Ht);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,zt),contextMemories:Ut(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}:Gt(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:Ut(n),transitions:r.slice(0,100)}}),resetContext:()=>e({contextMemories:{},transitions:[]}),clear:()=>e({traces:[],contextMemories:{},transitions:[]})}));function Gt(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 Kt=100,qt=new Set([`exited`,`superseded`,`archived`,`staled`,`contradicted`]);function Jt(e,t=new Date){let n=e.event,r=X(e.memoryId),i=X(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:Xt(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:X(e.reason)};if(n===`memory.deleted`&&r)return{...a,action:`exited`,memoryId:r,label:`${r} exited memory`,detail:Zt(e)};if(n===`memory.updated`&&r){let t=X(e.status)??`updated`;return{...a,action:t===`deleted`?`exited`:`updated`,memoryId:r,label:t===`deleted`?`${r} exited memory`:`${r} updated → ${t}`,detail:Xt(e)}}if(n===`memory.graph_edge_added`){let t=X(e.from),n=X(e.to);if(!t?.startsWith(`mem:`)||!n?.startsWith(`mem:`))return null;let r=X(e.relation)??`related_to`,i=Z(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:`${Qt(t)} ↔ ${Qt(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:`${Z(e.added)??0} added / ${Z(e.proposed)??0} proposed`}:n===`memory.superseded`&&r?{...a,action:`superseded`,memoryId:r,label:`${r} → superseded`,detail:X(e.reason)??Xt(e)}:n===`memory.archived`&&r?{...a,action:`archived`,memoryId:r,label:`${r} → archived`,detail:X(e.reason)}:n===`memory.staled`&&r?{...a,action:`staled`,memoryId:r,label:`${r} → staled`,detail:X(e.reason)??`anchor drift detected`}:n===`memory.contradicted`&&r?{...a,action:`contradicted`,memoryId:r,label:`${r} → contradicted`,detail:X(e.reason)??`conflicting evidence`}:null}var Yt=c()(e=>({items:[],pushEvent:t=>e(e=>{let n=Jt(t);return n?{items:[n,...qt.has(n.action)?e.items.filter(e=>!(qt.has(e.action)&&e.memoryId===n.memoryId)):e.items].slice(0,Kt)}:e}),clear:()=>e({items:[]})}));function X(e){return typeof e==`string`&&e.length>0?e:void 0}function Z(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function Xt(e){let t=[X(e.kind),X(e.persistence)],n=Z(e.confidence),r=Z(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 Zt(e){let t=X(e.reason),n=Z(e.removedEdges);return[t,n===void 0?void 0:`${n} edges removed`].filter(Boolean).join(` · `)||void 0}function Qt(e){let t=e.replace(/^mem:/,``);return t.length>26?`${t.slice(0,23)}…`:t}function $t(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 en(e){let t=e.payload,n=Array.isArray(t.phases)?t.phases:void 0,r=$t(n);C.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`?C.getState().lastError:null})}function tn(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};C.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 Q(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`){C.getState().setState({status:`paused`,autonomous:!1,lastEvent:`paused`}),M.info(`Goal paused`);return}if(e.type===`goal.resumed`){C.getState().setState({status:`running`,autonomous:!0,lastEvent:`resumed`}),M.info(`Goal resumed`);return}if(e.type===`goal.stopped`){C.getState().setState({status:`stopped`,autonomous:!1,lastEvent:`stopped`}),M.warn(`Goal stopped`);return}if(e.type===`goal.cleared`){C.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?M.success(n>0?`Reverted ${n} commit${n===1?``:`s`}`:`Nothing to revert`):M.error(`Revert failed: ${r??`unknown error`}`),C.getState().setState({lastEvent:`reverted`});return}if(e.type===`goal.saved`){C.getState().setState({lastEvent:`saved`}),M.success(`Goal graph saved`);return}if(e.type===`goal.completed`){C.getState().setState({status:`completed`,autonomous:!1,overallPercent:100,lastEvent:`completed`,lastError:null}),M.success(`${n} completed`);return}if(e.type===`goal.failed`||e.type===`goal.error`){let e=r??(typeof t.message==`string`?t.message:`${n} failed`);C.getState().setState({status:`failed`,autonomous:!1,lastEvent:`failed`,lastError:e}),M.error(e)}}function nn(e){let t=e.payload;C.getState().setState({lastEvent:`list`,graphs:Array.isArray(t.graphs)?t.graphs:[]})}function rn(e){let t=e.payload;ae.getState().setGoal(t)}function an(e){let t=e.payload;l.getState().set(t),t.yolo===!0&&j.getState().confirmInfo&&j.getState().hideConfirm()}function on(e){if(!f(e))return;let t=e.payload,n;if(t.decision.type===`answer`){let e=t.decision.rationale&&t.decision.rationale!==t.decision.text?`\n\n_${t.decision.rationale}_`:``;n=`🧠 ${t.decision.text??``}${e}`}else n=t.decision.type===`deny`?`🧠 Denied: ${t.decision.reason??``}`:`🧠 The Brain escalated this question back to you — it needs human judgement.`;a.getState().addMessage({role:`assistant`,content:n})}function sn(e){if(!f(e))return;let t=e.payload,n=t.requestId??t.request?.id;if(n&&t.request?.question&&E.getState().noteQuestion(n,t.request.question),t.event===`brain.council_vote`){E.getState().recordVote(t);let e=t.requestId??`unknown`;h.getState().pushEvent({id:`council_${e}_${t.seatId??`seat-${Date.now()}`}`,kind:`brain:council_vote`,timestamp:Date.now(),source:t.model??t.persona??`seat`,target:`brain`,label:`${t.persona??`voter`} → ${t.status===`valid`?t.optionId??`stance`:t.status??`failed`}`,data:t,color:`#38bdf8`,flowGroup:`brain`});return}if(t.event===`brain.council_resolved`){E.getState().recordResolution(t);let e=t.requestId??`unknown`,n=E.getState().panels.find(t=>t.requestId===e)?.seats??[],r=n.map(e=>`- **${e.persona}**${e.veto?` (veto)`:``} → ${e.status===`valid`?e.optionId??`stance`:e.status}${e.model?` · \`${e.model}\``:``}`),i=[`⚖️ **Council ${t.resolution??`resolved`}**`,`${t.validVoteCount??n.length}/${t.configuredSeatCount??n.length} seats`,`${t.distinctTargetCount??0} distinct target${t.distinctTargetCount===1?``:`s`}`,t.judgeUsed?`judge used`:void 0,t.usage?.totalTokens?`${t.usage.totalTokens} tok`:void 0].filter(Boolean).join(` · `);a.getState().addMessage({role:`assistant`,content:[i,...r,...(t.warnings??[]).map(e=>`> ⚠ ${e}`)].filter(Boolean).join(`
|
|
8
|
-
`)});for(let e of t.warnings??[])M.warn(e);return}if(t.event===`brain.intervention`){let e=t.decision?.rationale??t.decision?.text??``,n=t.intervened?`🧠 **Brain intervention** — corrective guidance was sent to the agent.`:`🧠 **Brain check** — a distress signal was reviewed; no action needed.`;a.getState().addMessage({role:`assistant`,content:[n,t.request?.question??``,e?`_${e}_`:``].filter(Boolean).join(`
|
|
9
|
-
|
|
10
|
-
`)}),t.intervened&&M.info(`Brain intervened: agent steered`)}else t.event===`brain.decision_denied`&&M.warn(`Brain denied: ${t.decision?.reason??t.request?.question??`request`}`)}function cn(e){if(!f(e))return;let t=e.payload;h.getState().pushEvent({id:`memory_${Date.now()}_${Math.random().toString(36).slice(2,7)}`,kind:`memory:event`,timestamp:Date.now(),source:`sage`,target:`leader`,label:t.event.replace(/^memory\./,``),data:t,color:`#a78bfa`,flowGroup:`memory`}),t.event===`memory.injector_run`&&Wt.getState().pushTrace(t),t.event===`memory.context_snapshot`&&Wt.getState().applyContextSnapshot(t),Yt.getState().pushEvent(t),t.event===`memory.staled`?M.warn(`Memory became stale: ${String(t.memoryId??``)}`):t.event===`memory.contradicted`?M.warn(`Memory contradicted: ${String(t.memoryId??``)}`):t.event===`memory.hygiene_completed`&&M.info(`SAGE hygiene completed`)}function ln(e){let t=e.payload,n=typeof t.kind==`string`?t.kind:typeof t.event==`string`?t.event:`collab.event`;h.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`}),h.getState().setActive(!0)}function un(e){ln(e);let t=e.payload;t?.phase===`consumed`?M.success(`Tool injection applied${t.toolName?` to ${t.toolName}`:``}`):M.info(`Collab tool injection queued`)}function dn(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}),h.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`}),h.getState().setActive(!0)}function fn(e){let t=e.payload;_.getState().setEnv({cwd:t.cwd,projectRoot:t.projectRoot,projectName:t.projectRoot.split(/[/\\]/).pop()||t.projectRoot}),T.getState().setTreeLoading(!0),rt(t.projectRoot),g().send({type:`files.tree`,payload:{path:t.cwd}})}function pn(e){let t=e.payload,n=j.getState().refinePanel,r=a.getState().pendingRefinement;if(!n&&r){a.getState().setRefining(!1);let e=r.text,n=r.images?.length?r.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,i=n&&n.length>0&&r.mode===`btw`?`queue`:r.mode??`queue`;if(t.error){a.getState().setPendingRefinement(null),a.getState().enqueue(e,i,n);return}let o=t.refined??``;if(!o||Rt(o,e)){a.getState().setPendingRefinement(null),a.getState().enqueue(e,i,n);return}a.getState().setPendingRefinement(null),j.getState().setRefinePanel({original:e,refined:o,english:t.english||o,status:`ready`,mode:n&&n.length>0&&r.mode===`btw`?`queue`:r.mode,images:n,...t.refinedWith?{provider:t.refinedWith.provider,model:t.refinedWith.model}:{},error:void 0,errorKind:void 0,resolve:()=>{}});return}if(!n)return;if(t.error){if(t.errorKind===`timeout`&&!n.retried&&t.retryTimeoutMs){j.getState().setRefinePanel({...n,status:`refining`,retried:!0}),g().refineModel(n.original,{timeoutMs:t.retryTimeoutMs});return}j.getState().setRefinePanel({...n,status:`failed`,error:t.error,errorKind:t.errorKind,fallbackRef:t.fallbackRef});return}let i=n.original;if(Rt(t.refined,i)){j.getState().setRefinePanel(null),a.getState().addMessage({role:`user`,content:i}),a.getState().setLoading(!0),g().sendMessage(i);return}j.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 mn(e){let t=e.payload;de.getState().setInfo({...t,fetchedAt:Date.now()})}function hn(e){let t=e.payload;ne.getState().setFiles(t.files??[],t.error??null)}function gn(e){let t=e.payload;ne.getState().selectedPath===t.path&&ne.getState().setDiff({path:t.path,oldText:t.oldText??``,newText:t.newText??``,binary:t.binary,tooLarge:t.tooLarge,error:t.error})}function _n(e){let t=e.payload;ee.getState().setSnapshot({count:t.count,maxConcurrent:t.maxConcurrent,jobs:t.jobs??[]})}function vn(e){let t=e.payload;ee.getState().recordFired(t.name,t.ts)}function yn(e){let t=e.payload;M.info(t.message??`🦂 Chimera report ready. No follow-up started; open the mailbox to inspect it.`,8e3)}var bn={"goal-state.updated":rn,"prefs.updated":an,"goal.state":en,"goal.progress":tn,"goal.paused":Q,"goal.resumed":Q,"goal.stopped":Q,"goal.cleared":Q,"goal.reverted":Q,"goal.saved":Q,"goal.completed":Q,"goal.failed":Q,"goal.error":Q,"goal.list":nn,"brain.answer":on,"brain.event":sn,"memory.event":cn,"collab.event":ln,"collab.injection.granted":un,"eternal.iteration":dn,"working_dir.changed":fn,"model.refine_result":pn,"git.info":mn,"git.changes":hn,"git.diff":gn,"cron.snapshot":_n,"cron.job_fired":vn,"chimera.report_available":yn};function xn(e){let t=e.payload;!t.jobId||!t.kind||w.getState().jobStarted(t.jobId,t.kind)}function Sn(e){let t=e.payload;!t.jobId||!t.phase||!Number.isFinite(t.completed)||!Number.isFinite(t.total)||w.getState().jobProgress(t.jobId,{phase:t.phase,completed:t.completed??0,total:t.total??0})}function Cn(e){let t=e.payload;t.workspaceId&&w.getState().workspaceCompleted(t.workspaceId)}function wn(e){let t=e.payload;t.snapshot&&w.getState().setSnapshot(t.snapshot,t.stale??!1)}function Tn(e){let t=e.payload;t.reportId&&w.getState().reportReady(t.reportId)}function En(e){let t=e.payload;t.jobId&&w.getState().jobFailed(t.jobId,t.error??`TechStack job failed`)}function Dn(e){let t=e.payload;t.jobId&&w.getState().jobCancelled(t.jobId)}var On={"techstack.job.started":xn,"techstack.job.progress":Sn,"techstack.workspace.completed":Cn,"techstack.snapshot.updated":wn,"techstack.report.ready":Tn,"techstack.job.failed":En,"techstack.job.cancelled":Dn},kn=new Set;function An(){p.flush(`__thinking__`);let e=_.getState().iteration;a.getState().flushThinkingLog(Math.max(1,e?.index??1)),a.getState().clearThinking()}function jn(e){if(!f(e))return;let t=e.payload,n=e=>e.toLocaleString(),r=[...t.tools.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8),i=[...t.messages.breakdown].sort((e,t)=>t.tokens-e.tokens).slice(0,8);a.getState().addMessage({role:`assistant`,content:[`📊 **Context breakdown** (heuristic — 4 chars/token)`,``,`**Total estimate:** ${n(t.total)} tokens`,`• System prompt: ${n(t.systemPrompt)}`,`• Tool schemas: ${n(t.tools.total)} (${t.tools.count} tools)`,`• Messages: ${n(t.messages.total)} (${t.messages.count} messages)`,``,`**Top tool schemas:**`,...r.map(e=>` · ${e.name}: ${n(e.tokens)}`),``,`**Top messages:**`,...i.map(e=>` · #${e.index} ${e.role}: ${n(e.tokens)} — ${e.preview||`(empty)`}`)].join(`
|
|
11
|
-
`)})}function Mn(e){let t=e.payload;t.success?M.success(t.message):M.error(t.message),g(x.getState().wsUrl).listSavedProviders()}function Nn(e){let t=e.payload;if(!t.success||!t.provider||!t.model)return;x.getState().setProvider(t.provider),x.getState().setModel(t.model);let n=t.previousProvider&&t.previousModel?`${t.previousProvider} / ${t.previousModel}`:s.t(`settings:toast.previousModel`),r=`${t.provider} / ${t.model}`;a.getState().addMessage({role:`system`,content:s.t(t.runActive?`settings:toast.modelSwitchedRunActive`:`settings:toast.modelSwitchedNextRequest`,{from:n,to:r})})}function Pn(e){if(!f(e))return;u(e);let t=e.payload,n=t.reductions.length?t.reductions.map(e=>`${e.phase}: ${e.saved}`).join(`, `):`no-op`;t.repaired&&(n+=`; repaired ${t.repaired.removedToolUses?.length??0} tool_use, ${t.repaired.removedToolResults?.length??0} tool_result, ${t.repaired.removedMessages} empty messages`),a.getState().addMessage({role:`system`,content:`🗜️ Context compacted: ${t.before} → ${t.after} tokens (saved ~${t.saved}). ${n}`}),_.setState({lastInputTokens:t.after})}function Fn(e){if(!f(e))return;u(e);let t=e.payload,n,r;t.budget&&t.budget.availableInputTokens>0?(n=Math.min(100,Math.max(0,Math.round(t.budget.load*100))),r=`input budget`):(n=t.maxContext>0?Math.min(100,Math.max(0,Math.round(t.tokens/t.maxContext*100))):0,r=`context`),a.getState().addMessage({role:`assistant`,content:`Compaction failed at ${t.level} (${n}% ${r}): ${t.message}`,isError:t.fatal}),M.error(`Compaction failed: ${t.message}`)}function In(e){if(!f(e))return;let t=e.payload,n=`${t.tool}: ${t.pattern}`;t.decision===`always`?M.success(`Always allowed ${n}`):M.warn(`Denied ${n}`)}function Ln(e){if(!f(e))return;u(e);let t=e.payload,n=t.removedToolUses.length+t.removedToolResults.length+t.removedMessages,r=t.beforeMessages!==void 0&&t.afterMessages!==void 0?` Messages: ${t.beforeMessages} -> ${t.afterMessages}.`:``;a.getState().addMessage({role:`assistant`,content:`Context repaired: removed ${n} orphan protocol item(s).${r} tool_use ${t.removedToolUses.length}, tool_result ${t.removedToolResults.length}.`})}function Rn(e){if(!f(e))return;u(e);let t=e.payload;_.getState().setContextUsage(t.tokens,t.maxContext)}function zn(e){if(!f(e))return;let t=e.payload,n=_.getState();n.setEnv({maxContext:t.maxContext}),t.source===`provider`&&t.decreased===!0&&typeof t.previousMaxContext==`number`&&t.previousMaxContext>t.maxContext?n.setContextLimitWarning({previousMaxContext:t.previousMaxContext,maxContext:t.maxContext,providerId:t.providerId??n.session?.provider??`provider`,modelId:t.modelId??n.session?.model??`model`}):(t.decreased===!1||t.source===`configured`)&&n.setContextLimitWarning(null)}function Bn(e){if(!f(e))return;let t=e.payload;_.getState().setContextUsage(t.used,t.limit);let n=t.limit>0?Math.round(t.used/t.limit*100):0;M.warn(`Token threshold reached (${n}%)`)}function Vn(e){if(!f(e))return;let t=e.payload.model||`<unknown>`;kn.has(t)||(kn.add(t),M.warn(`Cost estimate unavailable for ${t}`))}function Hn(e){if(!f(e))return;let t=e.payload;_.getState().setContextModes(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}))),_.getState().setEnv({contextMode:t.activeId})}function Un(e){if(!f(e))return;let t=e.payload;_.getState().setEnv({contextMode:t.id})}function Wn(e){if(!f(e))return;let t=e.payload;t.phase!==`todos.get`&&(An(),a.getState().addMessage({role:`assistant`,content:`[${t.phase}] ${t.message}`,isError:!0}),a.getState().setLoading(!1))}function Gn(){let[e,t]=(0,N.useState)({isMobile:!1,isSmall:!1,width:0});return(0,N.useEffect)(()=>{if(typeof window>`u`)return;let e=window.matchMedia(`(max-width: 768px)`),n=window.matchMedia(`(max-width: 640px)`),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 Kn(){return typeof window>`u`?!1:window.matchMedia(`(max-width: 768px)`).matches}function qn(e){if(typeof e!=`string`)return Date.now();let t=Date.parse(e);return Number.isFinite(t)?t:Date.now()}function Jn(e){return`replay_${Date.now()}_${e}`}function Yn(){return typeof window>`u`?!1:window.location.pathname===`/debug`||window.location.pathname===`/analytics`||window.location.pathname===`/refresh-debug`}function Xn(e){return typeof e==`string`?e:JSON.stringify(e)}function Zn(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(`
|
|
12
|
-
`):``}function Qn(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 $n(e,t=[]){let n=[],r=new Map,i=0,a=0,o=(e,t,r)=>{t&&(be(t)||n.push({id:Jn(n.length),role:e,content:t,timestamp:r}))},s=e=>{n.push({id:Jn(n.length),role:`system`,content:e.text,timestamp:qn(e.ts),isError:e.level===`error`||void 0})},c=e=>{if(typeof e==`string`)for(;a<t.length&&t[a].ts<e;)s(t[a]),a+=1},l=(e,t)=>{let r=e.trim();r&&(i+=1,n.push({id:Jn(n.length),role:`system`,content:``,timestamp:t,thinkingLog:{iteration:i,text:r,startedAt:t,durationMs:0,replayed:!0}}))};for(let t of e){if(c(t.ts),t.role!==`user`&&t.role!==`assistant`&&t.role!==`system`)continue;let e=t.role,i=qn(t.ts);if(typeof t.content==`string`){o(e,t.content,i);continue}if(!Array.isArray(t.content))continue;let a=``,s=[];for(let c of t.content){if(c.type===`thinking`&&typeof c.thinking==`string`){s.push(c.thinking);continue}if(c.type===`text`&&typeof c.text==`string`){a+=(a?`
|
|
13
|
-
`:``)+c.text;continue}if(c.type===`tool_use`){o(e,a,i),a=``;let t=String(c.id??``),s={id:Jn(n.length),role:`tool`,content:``,toolName:String(c.name??`tool`),toolInput:c.input,toolUseId:t,timestamp:i};n.push(s),t&&r.set(t,s);continue}if(c.type===`tool_result`){let e=String(c.tool_use_id??``),t=r.get(e);t&&(t.toolResult=Xn(c.content),t.isError=!!c.is_error)}}o(e,a,i),e===`assistant`&&s.length>0&&l(s.join(`
|
|
14
|
-
|
|
15
|
-
`),i)}for(;a<t.length;)s(t[a]),a+=1;return n}function er(e){let t=d(`session.start`,e.payload);t&&(h.getState().pushEvent(t),h.getState().setActive(!0));let n=e.payload,r=Qn(n.provider),i=Qn(n.model),o=_.getState().session?.id,s=!o||o!==n.sessionId||n.reset;if((n.appVersion||n.latestVersion)&&_.getState().setUpdateInfo({appVersion:String(n.appVersion??``),latestVersion:String(n.latestVersion??``),updateAvailable:!!n.updateAvailable}),Array.isArray(n.providerStatuses)&&k.getState().hydrate(n.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}))),n.needsSetup&&pe(`setup`),s?(Wt.getState().clear(),_.getState().startSession({id:n.sessionId,startedAt:Date.now(),model:i,provider:r})):_.getState().setSession({id:n.sessionId,startedAt:_.getState().session?.startedAt??Date.now(),model:i,provider:r}),_.getState().setEnv({maxContext:n.maxContext,projectRoot:n.projectRoot??``,projectName:n.projectName,cwd:n.cwd,mode:n.mode,contextMode:n.contextMode,inputCost:n.inputCost,outputCost:n.outputCost,cacheReadCost:n.cacheReadCost,reasoningEffortLevels:n.reasoningEffortLevels}),x.getState().setConfig({provider:r,model:i}),s){!n.needsSetup&&P()&&!Yn()&&fe({sidebarOpen:!1}),p.dropAll(),a.getState().clearMessages(),a.getState().setBoundSessionId(n.sessionId),j.getState().setSearchActiveMessageId(null),a.getState().setLoading(!1),_.setState({todos:[]}),H(`ready`);let e=S.getState();if(n.clearedSessionId){let t=new Map;for(let[r,i]of e.agents)i.sessionId!==n.clearedSessionId&&t.set(r,i);S.setState({agents:t})}else e.clear();T.getState().setTreeLoading(!0),rt(_.getState().projectRoot),g().send({type:`files.tree`,payload:{path:_.getState().cwd}})}let c=n.replayMessages,l=n.replayMarkers??[];if(c&&c.length>0){let e=a.getState();(s||e.messages.length===0||e.boundSessionId!==n.sessionId||e.isLoading)&&(e.setMessages($n(c,l)),e.setBoundSessionId(n.sessionId))}if(c){let e=n.replayUsage;if(e){let t=_.getState(),n=e.input??0,r=e.output??0,i=e.cacheRead??0,a=e.cacheWrite??0;_.setState({totalTokens:{input:n,output:r,cacheRead:i,cacheWrite:a},cost:(n*t.inputCost+r*t.outputCost+i*t.cacheReadCost)/1e6})}let t=n.lastInputTokens;typeof t==`number`&&t>0?_.setState({lastInputTokens:t}):e&&typeof e.input==`number`&&e.input>0&&_.setState({lastInputTokens:e.input}),s&&!n.needsSetup&&(Yn()||(P()?fe({sidebarOpen:!1}):j.getState().currentView!==`chat`&&me(`chat`))),Kn()&&j.getState().setSidebarOpen(!1)}}function tr(e,t=140){return e.length>t?`${e.slice(0,t-1)}…`:e}function nr(e){if(!f(e))return;u(e);let t=e.payload,r=Zn(t.content),i=t.usage,o=(i.input??0)+(i.cacheWrite??0)-(i.cacheRead??0);o>0&&_.setState({lastInputTokens:o}),_.getState().updateUsage(t.usage);let{inputCost:s,outputCost:c,cacheReadCost:l}=_.getState(),d=(t.usage.input*s+t.usage.output*c+(t.usage.cacheRead??0)*l)/1e6;d>0&&_.getState().addCost(d);let m=n(t.stopReason);m&&a.getState().setLoading(!1);let h=a.getState().currentAssistantMessageId;if(h){p.flush(h);let e=a.getState().messages.find(e=>e.id===h)?.content??``;r.trim()&&(e.trim()?r.startsWith(e)&&r.length>e.length&&a.getState().updateMessage(h,{content:r}):a.getState().updateMessage(h,{content:r})),a.getState().finalizeMessage(h,{final:m}),t.usage.output>0&&a.getState().updateMessage(h,{usage:t.usage})}else if(r.trim()){let e=a.getState().addMessage({role:`assistant`,content:r,usage:t.usage.output>0?t.usage:void 0});a.getState().finalizeMessage(e,{final:m})}a.getState().setCurrentAssistantMessage(null),p.flush(`__thinking__`),a.getState().clearThinking()}function rr(e){if(!f(e))return;u(e);let t=e.payload;p.flush(`__thinking__`),a.getState().flushThinkingLog(t.index),a.getState().clearThinking();let n=_.getState().iteration;n&&_.getState().setIteration({index:t.index,max:n.max})}function ir(e){if(!f(e))return;let t=e.payload;a.getState().addMessage({role:`assistant`,content:`Iteration limit reached: ${t.currentIterations}/${t.currentLimit}.`,isError:!0}),M.warn(`Iteration limit reached (${t.currentIterations}/${t.currentLimit})`)}function ar(e){if(!f(e))return;let t=e.payload,n=Math.max(0,Math.round(t.delayMs/100)/10);M.warn(`${t.providerId} retry ${t.attempt} after ${n}s (${t.status})`)}function or(e){if(!f(e))return;let t=e.payload;a.getState().addMessage({role:`assistant`,content:[`Provider error from \`${t.providerId}\` (${t.status}).`,t.description,t.retryable?`_Retryable; WrongStack may recover automatically._`:``].filter(Boolean).join(`
|
|
16
|
-
|
|
17
|
-
`),isError:!0}),M.error(`${t.providerId} provider error (${t.status})`)}function sr(e){if(!f(e))return;let t=e.payload,n=`${t.from.providerId}/${t.from.model}`,r=`${t.to.providerId}/${t.to.model}`;a.getState().addMessage({role:`assistant`,content:`Provider fallback: \`${n}\` returned ${t.status}; switching to \`${r}\`${t.providerSwitched?` with provider change`:``}.`}),M.warn(`Fallback to ${r}`);let i=se.getState().pending;i&&i.from.providerId===t.from.providerId&&i.from.model===t.from.model&&(typeof t.requestId==`string`&&t.requestId.length>0&&i.requestId!==t.requestId||se.getState().clear())}function cr(e){if(!f(e))return;let t=e.payload;se.getState().setPending({requestId:t.requestId,from:t.from,status:t.status,candidates:t.candidates,autoSwitchSeconds:t.autoSwitchSeconds,timestamp:Date.now()})}function lr(e){let t=e.payload;k.getState().update({providerId:t.providerId,model:t.model,state:t.newState,reason:t.reason,updatedAt:t.timestamp,stateExpiresAt:t.stateExpiresAt});let n=`${t.providerId}/${t.model}`;t.newState===`blocked`&&t.oldState!==`blocked`?M.warn(`${n} entered the limit-reset waiting room`):t.newState===`healthy`&&t.oldState!==`healthy`&&M.success(`${n} recovered and rejoined model routing`)}function ur(e){let t=e.payload;if(t&&typeof t==`object`&&`error`in t){k.getState().setError(`Provider status tracking not available`);return}k.getState().applySnapshot(t)}function dr(e){if(!f(e))return;let t=e.payload;a.getState().addMessage({role:`assistant`,content:`Waiting room skipped \`${t.providerId}/${t.model}\`. ${t.lastError}`})}function fr(e){if(!f(e))return;u(e);let t=e.payload;M.warn(`Provider stream event skipped: ${t.eventType}`),a.getState().addMessage({role:`assistant`,content:`Provider stream warning (${t.eventType}): ${t.message}`,isError:!0})}function pr(e){if(!f(e))return;u(e);let t=e.payload,n=t.tools||t.kind||`assistant response`;if(t.action===`steer`){M.info(`Possible repetition noticed for ${n}; changing approach.`);return}a.getState().addMessage({role:`assistant`,content:`Loop guard stopped the turn: ${n} made no progress ${t.repeatCount} time(s) (iteration ${t.iteration+1}).`,isError:!0}),M.warn(`Loop guard stopped the turn`)}function mr(e){if(!f(e))return;u(e);let t=e.payload,n=tr(t.task,180),r=t.subagentId??t.target;a.getState().addMessage({role:`assistant`,content:`Delegating to \`${t.target}\`: ${n}`});let i=S.getState();i.applyEvent({kind:`spawned`,subagentId:r,name:t.target,description:n}),i.applyEvent({kind:`task_started`,subagentId:r,name:t.target,description:n}),i.pushAgentTimelineEntry({subagentId:r,agentName:t.target,content:n,kind:`status`,iteration:0,ts:new Date().toISOString(),status:`delegating`})}function hr(e){if(!f(e))return;u(e);let t=e.payload,n=Math.max(0,Math.round(t.durationMs/100)/10),r=typeof t.costUsd==`number`&&t.costUsd>0?` · $${t.costUsd.toFixed(4)}`:``,i=`${t.iterations} iteration(s), ${t.toolCalls} tool call(s), ${n}s${r}`;a.getState().addMessage({role:`assistant`,content:[`Delegate ${t.ok?`completed`:`failed`} for \`${t.target}\`${t.status?` (${t.status})`:``}.`,t.summary,i].join(`
|
|
18
|
-
`),isError:!t.ok});let o=S.getState(),s=t.subagentId??t.target;o.applyEvent({kind:`task_completed`,subagentId:s,name:t.target,status:t.ok?`success`:t.status===`timeout`||t.status===`host_timeout`?`timeout`:`failed`,iterations:t.iterations,toolCalls:t.toolCalls,finalText:t.summary,...t.ok?{}:{failureReason:t.status??`failed`}}),o.pushAgentTimelineEntry({subagentId:s,agentName:t.target,content:t.summary,kind:t.ok?`status`:`error`,iteration:t.iterations,ts:new Date().toISOString(),status:t.status??(t.ok?`completed`:`failed`)}),t.ok||M.warn(`Delegate failed: ${t.target}`)}function gr(e){if(!f(e))return;let t=e.payload;a.getState().addMessage({role:`assistant`,content:`Session ${t.sessionId} is damaged: ${t.detail}`,isError:!0}),M.error(`Session damage detected`)}function _r(e){if(!f(e))return;let t=e.payload;a.getState().addMessage({role:`assistant`,content:`Session rewound to prompt #${t.toPromptIndex}. Removed ${t.removedEvents} event(s); reverted ${t.revertedFiles.length} file(s).`}),M.info(`Session rewound`)}function vr(e){if(!f(e))return;let t=e.payload;M.success(`Checkpoint #${t.promptIndex} written (${t.fileCount} file(s))`)}function yr(e){if(!f(e))return;let t=e.payload;h.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 br(e){f(e)&&e.payload.reason===`recovered`&&M.info(`Recovered previous in-flight operation`)}function xr(){typeof document<`u`&&document.dispatchEvent(new CustomEvent(`chat:session-end`))}function Sr(e){let t=e.payload;oe.getState().setEntries(t.sessions??[],t.error??null)}var Cr={"context.debug":jn,"key.operation_result":Mn,"model.switch_result":Nn,"context.compacted":Pn,"compaction.failed":Fn,"provider.response":nr,"iteration.completed":rr,"iteration.limit_reached":ir,"provider.retry":ar,"provider.error":or,"provider.fallback":sr,"provider.fallback_pending":cr,"provider.status_changed":lr,"provider.active_blocked":dr,"provider.stream_error":fr,"tool.loop_detected":pr,"delegate.started":mr,"delegate.completed":hr,"trust.persisted":In,"context.repaired":Ln,"ctx.pct":Rn,"ctx.max_context":zn,"token.threshold":Bn,"token.cost_estimate_unavailable":Vn,"session.end":xr,"session.damaged":gr,"session.rewound":_r,"checkpoint.written":vr,"in_flight.started":yr,"in_flight.ended":br,"context.modes.list":Hn,"context.mode.changed":Un,"sessions.list":Sr,"provider.status.snapshot":ur,error:Wn};function wr(e){let t=e.payload;a.getState().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(`
|
|
19
|
-
`)})}function Tr(e){let t=e.payload,n=t.text?.trim();a.getState().addMessage({role:`assistant`,content:t.error?`Memory read failed: ${t.error}`:n?`🧠 **Memory** \n\n${n}`:`🧠 **Memory**
|
|
20
|
-
|
|
21
|
-
_empty — nothing remembered yet_`})}function Er(e){let t=e.payload,n=a.getState();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(`
|
|
22
|
-
`)})}function Dr(e){let t=e.payload;if(t.error){a.getState().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.*"),a.getState().addMessage({role:`assistant`,content:i.join(`
|
|
23
|
-
`)})}function Or(e){let t=e.payload;if(t.error){a.getState().addMessage({role:`assistant`,content:`❌ ${t.error}`});return}if(!t.memory){a.getState().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(`, `):`—`,o=[`## 🧠 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}`];a.getState().addMessage({role:`assistant`,content:o.join(`
|
|
24
|
-
`)})}function kr(e){let t=e.payload;if(t.error){a.getState().addMessage({role:`assistant`,content:`❌ Update failed: ${t.error}`});return}if(t.memory){let e=String(t.memory.id??``);a.getState().addMessage({role:`assistant`,content:`✅ Memory \`${e}\` updated.`})}}function Ar(e){let t=e.payload;if(t.error){a.getState().addMessage({role:`assistant`,content:`❌ Failed to create memory: ${t.error}`});return}if(t.memory){let e=String(t.memory.id??``);a.getState().addMessage({role:`assistant`,content:`✅ Memory \`${e}\` created.`})}}function jr(e){let t=e.payload,n=a.getState();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 Mr(e){let t=e.payload,n=a.getState();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 Nr(e){let t=e.payload,n=a.getState();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 Pr(e){let t=e.payload;if(!t.enabled){a.getState().addMessage({role:`assistant`,content:`🎯 **Skills**
|
|
25
|
-
|
|
26
|
-
_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}`),a.getState().addMessage({role:`assistant`,content:n.join(`
|
|
27
|
-
`)})}function Fr(e){if(!f(e))return;let t=e.payload;_.getState().setDroppedTools((t.maxTools??0)>0?t.droppedTools??0:0),a.getState().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(`
|
|
28
|
-
`)})}function Ir(e){if(!f(e))return;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=_.getState().lastInputTokens,o=t.currentRequest?.cacheRead??0;_.getState().setCacheStats(t.cache?{readTokens:t.cache.readTokens,writeTokens:t.cache.writeTokens,hitRatio:t.cache.hitRatio,coverageTokens:Math.max(0,Math.min(i,o))}:null),a.getState().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(`
|
|
29
|
-
`)})}function Lr(e){if(!f(e))return;let t=e.payload;_.getState().setTodos(t.todos??[])}function Rr(e){let t=e.payload;_.getState().setModes(t.modes.map(e=>({id:e.id,name:e.name,description:e.description}))),_.getState().setEnv({mode:t.activeId})}function $(e){le.getState().handleResult(e.type,e.payload)}var zr={...Ue,...Cr,...Lt,...wt,...bn,...et,...On,"config.doctor.result":Er,"session.start":e=>{er(e),tt()},"specs.list":e=>{let t=e.payload;te.getState().setSpecs(t.specs??[])},"specs.detail":e=>{te.getState().setDetail(e.payload)},"sdd.board.snapshot":e=>{re.getState().setSnapshot(e.payload)},"sdd.board.list":e=>{let t=e.payload;re.getState().setBoards(t.boards??[])},"sdd.board.lifecycle_result":e=>{let t=e.payload,n=re.getState();n.setLifecycleResult({...t,at:Date.now()}),n.setDestroying(!1),t.op===`destroy`&&t.ok&&D.getState().reset()},"sdd.spec.snapshot":e=>{D.getState().setSnapshot(e.payload)},"sdd.spec.agent_text":e=>{D.getState().setAgentText(e.payload.text??``)},"sdd.spec.error":e=>{D.getState().setError(e.payload.message??`Error`)},"sdd.run.started":e=>{D.getState().setStartedRunId(e.payload.runId??null)},"goal.assess.result":e=>{let t=e.payload;ue.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":wr,"memory.list":Tr,"memory.sage.list":Dr,"memory.sage.get":Or,"memory.sage.update":kr,"memory.sage.remember":Ar,"memory.sage.recover":jr,"memory.sage.candidateResolve":Mr,"memory.sage.backfillRecoverable":Nr,"skills.list":Pr,"diag.get":Fr,"stats.get":Ir,side_effects:e=>{if(!f(e))return;let t=e.payload;ce.getState().setSideEffects(t.sideEffects??[])},"todos.updated":Lr,"todos.cleared":e=>{f(e)&&_.getState().setTodos([])},"agent.timeline.message":e=>{if(!f(e))return;let t=e.payload;S.getState().pushAgentTimelineEntry({subagentId:t.subagentId,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=>{if(!f(e))return;let t=e.payload;S.getState().pushAgentTimelineEntry({subagentId:t.subagentId,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":Rr,"session.checkpoints":e=>{},"process.list":e=>{},"projects.list":e=>{},"projects.added":e=>{},"projects.selected":e=>{},"tool.disabled":e=>{},"tool.enabled":e=>{},"provider.response":e=>{nr(e)},"tool.progress":e=>{Je(e);let t=y(e),n=v.getState();for(let e of t)n.recordFileEvent(e)},"tool.started":e=>{qe(e);let t=y(e);t.length>0&&v.getState().startActivities(t)},"tool.executed":e=>{Ye(e);let t=e.payload;t.id&&v.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.tool_started":e=>{u(e);let t=y(e);t.length>0&&v.getState().startActivities(t)},"codemap.tool_executed":e=>{u(e);let t=e.payload;t.id&&v.getState().finishTool(t.id,{durationMs:t.durationMs,ok:t.ok!==!1})},"codemap.file_event":e=>{let t=y(e),n=v.getState();for(let e of t)n.recordFileEvent(e)},"codemap.index_updated":e=>{let t=e.payload;he.getState().notifyIndexUpdated(t?.at)},"file.saved":e=>{let t=y(e);if(t.length>0){let e=v.getState();for(let n of t)e.recordFileEvent(n)}},"memory.event":e=>{cn(e);let t=y(e);if(t.length>0){let e=v.getState();for(let n of t)e.recordActivity(n)}}};function Br(e){let t=[];for(let[n,r]of Object.entries(zr))r&&t.push(e.on(n,t=>{e.consumeSuppressedChatEcho(n)||r(t)}));return()=>{for(let e of t)e()}}function Vr(){let{autoConnect:e,wsUrl:t}=x(),n=x(e=>e.setWsStatus);(0,N.useEffect)(()=>{if(!e)return;Te();let r=g(t),i=!1,a=r.onStatus(e=>{i||n(e)});r.connect().then(()=>{i||r.getPrefs()}).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=Br(r);return()=>{i=!0,o(),a()}},[e,t,n])}function Hr(){let{wsUrl:e}=x(),t=g(e),n=(0,N.useCallback)((e,n,r=!1)=>t.isConnected?r?t.sendMessage(e,n,!0):t.sendMessage(e,n):null,[t]),r=(0,N.useCallback)(()=>t.sendAbort(),[t]),i=(0,N.useCallback)(e=>t.adviseTopic(e),[t]),a=(0,N.useCallback)(e=>t.sendMailboxMessage(e),[t]),{hideConfirm:o}=j(),s=(0,N.useCallback)((e,n)=>{t.sendConfirm(e,n),o()},[t,o]),c=(0,N.useCallback)((e,n)=>t.switchModel(e,n),[t]),l=(0,N.useCallback)(()=>t.listProviders(),[t]),u=(0,N.useCallback)(e=>t.listProviderModels(e),[t]),d=(0,N.useCallback)(()=>t.listSavedProviders(),[t]),f=(0,N.useCallback)((e,n,r)=>t.addKey(e,n,r),[t]),p=(0,N.useCallback)((e,n,r)=>t.updateKey(e,n,r),[t]),m=(0,N.useCallback)((e,n)=>t.deleteKey(e,n),[t]),h=(0,N.useCallback)((e,n)=>t.setActiveKey(e,n),[t]),_=(0,N.useCallback)((e,n,r,i,a,o)=>t.addProvider(e,n,r,i,a,o),[t]),v=(0,N.useCallback)(e=>t.removeProvider(e),[t]),y=(0,N.useCallback)(e=>{oe.getState().setLoading(!0),t.listSessions(e)},[t]),b=(0,N.useCallback)(e=>t.deleteSession(e),[t]),ee=(0,N.useCallback)((e,n)=>{oe.getState().updateEntryName(e,n),t.renameSession(e,n)},[t]),S=(0,N.useCallback)(e=>t.resumeSessionById(e),[t]),C=(0,N.useCallback)(e=>t.inspectSession(e),[t]),te=(0,N.useCallback)(()=>t.saveSession(),[t]),ne=(0,N.useCallback)(e=>t.listTools(e),[t]),re=(0,N.useCallback)(e=>t.listMemory(e),[t]),ie=(0,N.useCallback)(e=>t.listSageMemories(e),[t]),ae=(0,N.useCallback)((e,n)=>t.listSageMemoriesPage(e,n),[t]),w=(0,N.useCallback)((e,n)=>t.searchSageBreakdown(e,n),[t]),T=(0,N.useCallback)((e,n)=>t.listMemoryCandidates(e,n),[t]),se=(0,N.useCallback)((e,n)=>t.getSage(e,n),[t]),ce=(0,N.useCallback)((e,n,r)=>t.getSageGraph(e,n,r),[t]),le=(0,N.useCallback)((e,n,r)=>t.updateSage(e,n,r),[t]),E=(0,N.useCallback)((e,n)=>t.deleteSage(e,n),[t]),D=(0,N.useCallback)((e,n)=>t.rememberSage(e,n),[t]),O=(0,N.useCallback)((e,n)=>t.findMemoriesForFile(e,n),[t]),k=(0,N.useCallback)((e,n)=>t.recoverSage(e,n),[t]),ue=(0,N.useCallback)((e,n)=>t.resolveMemoryCandidate(e,n),[t]),de=(0,N.useCallback)((e,n)=>t.backfillRecoverable(e,n),[t]),A=(0,N.useCallback)(e=>t.listSkills(e),[t]),fe=(0,N.useCallback)(e=>t.getDiag(e),[t]),pe=(0,N.useCallback)(e=>t.getStats(e),[t]),me=(0,N.useCallback)(()=>t.getPlan(),[t]),he=(0,N.useCallback)(()=>t.listModes(),[t]),M=(0,N.useCallback)(e=>t.switchMode(e),[t]),ge=(0,N.useCallback)(()=>t.listContextModes(),[t]),P=(0,N.useCallback)(e=>t.switchContextMode(e),[t]),F=(0,N.useCallback)(e=>t.createContextMode(e),[t]),I=(0,N.useCallback)((e,n)=>t.updateContextMode(e,n),[t]),L=(0,N.useCallback)(e=>t.deleteContextMode(e),[t]),_e=(0,N.useCallback)(()=>t.repairContext(),[t]),R=(0,N.useCallback)((e,n)=>t.refineModel(e,n),[t]),z=(0,N.useCallback)(e=>t.switchAutonomy(e),[t]),B=(0,N.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:f,updateKey:p,deleteKey:m,setActiveKey:h,addProvider:_,removeProvider:v,listSessions:y,deleteSession:b,renameSession:ee,resumeSession:S,inspectSession:C,saveSession:te,listTools:ne,listMemory:re,listSageMemories:ie,listSageMemoriesPage:ae,searchSageBreakdown:w,listMemoryCandidates:T,getSage:se,getSageGraph:ce,updateSage:le,deleteSage:E,rememberSage:D,findMemoriesForFile:O,recoverSage:k,resolveMemoryCandidate:ue,backfillRecoverable:de,listSkills:A,getDiag:fe,getStats:pe,getPlan:me,listModes:he,switchMode:M,listContextModes:ge,switchContextMode:P,createContextMode:F,updateContextMode:I,deleteContextMode:L,repairContext:_e,toggleGoalAutonomous:(0,N.useCallback)(e=>{t.send({type:`goal.toggleAutonomous`,payload:{autonomous:e}})},[t]),startGoal:(0,N.useCallback)((e,n,r=!0)=>{t.send({type:`goal.start`,payload:{title:e,phases:n,autonomous:r}})},[t]),pauseGoal:(0,N.useCallback)(()=>{t.send({type:`goal.pause`,payload:{}})},[t]),resumeGoal:(0,N.useCallback)(()=>{t.send({type:`goal.resume`,payload:{}})},[t]),stopGoal:(0,N.useCallback)(()=>{t.send({type:`goal.stop`,payload:{}})},[t]),selectGoal:(0,N.useCallback)(e=>{t.send({type:`goal.selectPhase`,payload:{phaseId:e}})},[t]),switchAutonomy:z,updatePrefs:B,refineModel:R}}export{Wt as a,Ie as c,Yt as i,Le as l,Vr as n,ze as o,Gn as r,U as s,Hr as t,P as u};
|