dsh-mutipleagent 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/public/demo.js CHANGED
@@ -1,7 +1,7 @@
1
- import{a as dt,b as st,c as W,d as qe,e as ut,f as ht,g as Me,h as Ce,i as pt,j as ft,k as mt,l as gt,m as ot,n as yt,o as it,p as vt,q as bt,r as kt,s as wt,t as rt,u as n,v as J,w as xt,x as Se,y as he,z as Ge}from"./chunks/chunk-RQUUGNU7.js";var Et=[{x:5.5,y:5.35,yaw:180,pose:"sit"},{x:5.5,y:12,yaw:180,pose:"sit"},{x:11.2,y:9.4,yaw:180,pose:"sit"},{x:16.9,y:6.5,yaw:180,pose:"sit"}],Lt={blue:"#1769e8",white:"#f6f9fe",steel:"#d2dce8",navy:"#233d61"},M=(t,e,s,o,d,p={})=>({f:t,x:e,y:s,w:o,d,...p}),Z=(t,e,s,o,d,p,i=0)=>({special:"box",x:t,y:e,w:s,d:o,h:d,color:p,y0:i,abs:!0});function Mt(t=4,e="codex"){let s=Et.map(i=>({...i}));for(let i=s.length;i<t;i++){let u=i-Et.length;s.push({x:5.5+u%3*5.7,y:21.5+Math.floor(u/3)*5.5,yaw:180,pose:"sit"})}let o=Math.max(20,...s.map(i=>i.y+2.8)),d=[{special:"floor",x:-12,y:-12,w:48,d:o+26,color:"#dce4ee",color2:"#d2dce8",tile:8},{special:"floor",x:.1,y:.1,w:22,d:o-2.1,color:"#e9edf3",color2:"#dee5ee",tile:4.2,y0:.012},{special:"wall",axis:"x",x:-1,y:.05,len:25,h:4.3,color:"#e7eef7",holes:[[1.1,4.5,1.3,3.8],[7,4.5,1.3,3.8],[13,4.5,1.3,3.8],[19,3.5,1.3,3.8]],frame:"#c3cfdf"},{special:"wall",axis:"z",x:.05,y:0,len:o,h:3.4,color:"#e4ebf5",holes:[[2,3,1.1,2.9],[7,3,1.1,2.9],[13,3,1.1,2.9]],frame:"#c7d2e1"},Z(0,.15,22,.1,.12,"#bbcbdc"),Z(.15,0,.1,o-2,.12,"#bbcbdc"),{special:"floor",x:1.2,y:1.8,w:6.5,d:5.2,color:"#d6e3ef",color2:"#d6e3ef",y0:.02},{special:"glass",x:7.65,y:1.7,w:.05,d:4.9,h:2.5,abs:!0},Z(7.6,1.7,.12,4.9,.07,"#9cacbf",2.5),Z(7.6,1.7,.1,.1,2.5,"#becddd"),Z(7.6,6.5,.1,.1,2.5,"#becddd"),M("table",3,3.4,3.8,1.6,{h:.88,stretch:!0}),M("laptop",4.6,3.8,.7,.6,{y0:.9,abs:!0,rot:180}),M("computerScreen",5.2,4.3,.95,.32,{h:.6,y0:.9,abs:!0,rot:0}),M("computerKeyboard",5.15,4.72,.7,.22,{y0:.9,abs:!0}),M("computerMouse",5.95,4.72,.12,.18,{y0:.9,abs:!0}),M("chairDesk",5.125,4.95,.75,.8,{h:1,rot:180}),M("chairModernCushion",3.2,5.1,.65,.7,{rot:180}),M("chairModernCushion",3.2,2.6,.65,.7),M("chairModernCushion",5.6,2.6,.65,.7),M("bookcaseOpen",1.1,.35,2.5,.5,{h:1.8}),M("books",1.3,.5,1.4,.25,{h:.3,y0:1,abs:!0}),M("pottedPlant",7,.7,.6,.6,{h:1.6}),M("pottedPlant",.7,7,.55,.55,{h:1.4}),{special:"sign",x:4.5,y:.12,z:2.75,w:3,h:.64,text:n(e==="harness"?"scene.sign.harness":"scene.sign.codex"),bg:"#f0f5fc",fg:"#265a9d"}],p=[[3,3.4,3.8,1.6],[7.6,1.7,.12,4.8]];for(let i of s.slice(1)){let{x:u,y:r}=i;d.push({special:"floor",x:u-2.2,y:r-2.7,w:4.5,d:3.9,color:"#e1e9f3",color2:"#e1e9f3",y0:.024},Z(u-1.65,r-1.65,3.3,1,.92,"#f7faff"),Z(u-1.7,r-1.7,3.4,1.1,.08,"#176de8",.92),Z(u-1.7,r-1.7,.07,1.1,.96,"#397bd5"),Z(u+1.63,r-1.7,.07,1.1,.96,"#397bd5"),M("computerScreen",u-.6,r-1.5,1,.35,{h:.62,y0:1,abs:!0,rot:0}),M("computerScreen",u+.45,r-1.45,.75,.3,{h:.53,y0:1,abs:!0,rot:-12}),M("computerKeyboard",u-.45,r-.74,.75,.22,{y0:1.02,abs:!0}),M("computerMouse",u+.45,r-.72,.13,.18,{y0:1.02,abs:!0}),M("chairDesk",u-.375,r-.4,.75,.8,{h:1,rot:180}),M("plantSmall1",u-1.3,r-1.3,.3,.3,{h:.4,y0:1.02,abs:!0}),M("cardboardBoxClosed",u+1,r+.35,.55,.5,{h:.45})),p.push([u-1.7,r-1.7,3.4,1.1])}for(let[i,u]of[[10.1,1.4],[13,1.4],[16,1.4],[19,1.4],[20.3,7.3],[20.3,10.4]]){d.push(Z(i,u,1.8,1,2.6,"#e9eff6"));for(let r of[0,1.73])d.push(Z(i+r,u,.07,1,2.7,Lt.blue));for(let r of[.18,.72,1.26,1.8,2.34])d.push(Z(i+.12,u+.97,1.55,.05,.35,"#455b78",r)),d.push({special:"glow",x:i+.23,y:u+1.025,y0:r+.12,w:.12,d:.025,h:.035,color:"#52b9ff",intensity:1,abs:!0});p.push([i,u,1.8,1])}return d.push(M("loungeSofa",15.5,14.7,3.8,1.3,{h:1.05}),M("tableCoffee",16.4,16.2,2.1,.8,{h:.5}),M("books",16.9,16.4,.5,.3,{h:.18,y0:.52,abs:!0}),M("kitchenCabinet",1,17,4,.9,{h:1,stretch:!0}),M("kitchenCoffeeMachine",1.4,17.2,.65,.5,{h:.65,y0:1.01,abs:!0}),M("kitchenSink",3.4,17.1,1,.7,{h:.15,y0:1.01,abs:!0}),M("pottedPlant",20.7,15.7,.7,.7,{h:1.5}),M("pottedPlant",8.7,16.8,.6,.6,{h:1.5}),{special:"sign",x:17.5,y:.12,z:3,w:3.2,h:.65,text:n("scene.sign.agents"),bg:"#edf4fe",fg:"#3d6591"}),{W:23,D:o,viewH:4.3,background:"#e7edf7",sky:"#dcecff",spawn:{x:1,y:15},walk:[[0,0,23,o]],solid:p,stations:s,pois:[],props:d}}function Ne(t){t.traverse(e=>{if(e.geometry?.dispose(),e.material)for(let s of Array.isArray(e.material)?e.material:[e.material])s.dispose()})}var Re=class extends wt{constructor(e,{onSelect:s,reduced:o=!1,pins:d,count:p=4,live:i=!1,source:u="codex"}){super(e,{count:p,onSelect:s,reduced:o,live:i,scene:Mt(p,u)}),this.pins=d,this.selectCallback=s,this.routeGroup=null,this.routeId=null,this.eventRoutes=[],this.activityLog=new Map,this.screenDesk=null,this.screenMesh=null,this.screenRefs=null,this.screenReturnFocus=null,this.screenInert=[],this.playing=!1,this.raycaster=new kt,this.onFrame=()=>this.updatePins(),this.offLang=he(()=>this.paintScreens(!0)),this.canvas.addEventListener("pointerdown",r=>{this.downPoint={x:r.clientX,y:r.clientY}}),this.gl&&(this.gl.toneMappingExposure=1.15,this.gl.setClearColor("#e7edf7"),this.hemi.color.set("#f2f8ff"),this.hemi.groundColor.set("#a2b2ca"),this.sun.color.set("#ffffff"),this.sun.shadow.mapSize.set(2048,2048),this.sun.shadow.radius=4)}fitCamera3D(e){if(!this.camera||!this.controls||!this.sun)return;let s=this.cw<850,o=Math.max(0,this.plan.D-20),d=new W(s?10.2:12.65,.35,(s?8.8:8.15)+o*.45);(e||!this.fitted)&&(this.camera.position.copy(d).add(new W(22,21.5,22)),this.controls.target.copy(d),this.camera.zoom=1,this.fitted=!0);let p=(s?21:Math.max(19.5,28*this.ch/this.cw))+o*.85,i=p*this.cw/this.ch;Object.assign(this.camera,{left:-i/2,right:i/2,top:p/2,bottom:-p/2}),this.camera.lookAt(this.controls.target),this.camera.updateProjectionMatrix(),this.sun.position.set(5,19,7),this.sun.target.position.set(11,0,9+o*.5);let u=18+o;Object.assign(this.sun.shadow.camera,{left:-u,right:u,top:u,bottom:-u,near:1,far:55+o}),this.sun.shadow.camera.updateProjectionMatrix()}build(){super.build(),this.floorMark("COORDINATION",4.8,7.1,3.9,.55),this.floorMark("AGENT WORKSPACE",4.5,14,4.4,.5),this.floorMark("COLLABORATION LANE",11,12.6,5.2,.55),this.floorMark("VERIFICATION",16.5,9,3.9,.5);let e=new qe;for(let o=0;o<8;o++){let d=new Ce(new ot(.28,1.3),new vt({color:"#f6faff",roughness:.9}));d.rotation.x=-Math.PI/2,d.rotation.z=-.55,d.position.set(8+o*.45,.03,15.3),e.add(d)}this.room.add(e),this.screens=new Map,this.screenMeshes=[],this.screenList=[];let s=new Map;for(let o of this.sceneScreens||[]){if(o.kind!=="computerScreen")continue;let d=null,p=1/0;for(let i of this.plan.desks){let u=Math.hypot(o.x-i.seat.x,o.z-i.seat.y);u<p&&(p=u,d=i)}d&&p<2.2&&(o.mesh.userData.desk=d,this.screenMeshes.push(o.mesh),this.screenList.push({desk:d,mesh:o.mesh,record:o}),(!s.has(d)||p<s.get(d))&&(s.set(d,p),this.screens.set(d,o.mesh)))}this.routeId=null,this.makeRoute(this.selectedId||this.rootId),this.paintScreens(!0)}floorMark(e,s,o,d,p){let i=document.createElement("canvas");i.width=768,i.height=128;let u=i.getContext("2d");u.clearRect(0,0,768,128),u.fillStyle="#899eb9",u.font='600 38px "Segoe UI",sans-serif',u.textAlign="center",u.textBaseline="middle",u.fillText(e,384,64);let r=new ft(i);r.colorSpace=dt;let c=new Ce(new ot(d,p),new Me({map:r,transparent:!0,depthWrite:!1}));c.rotation.x=-Math.PI/2,c.position.set(s,.036,o),this.room.add(c)}actorFor(e){let s=super.actorFor(e);return s?(s.demoScale||(s.obj.scale.multiplyScalar(1.65),s.head&&s.head.scale.multiplyScalar(.78),s.obj.userData.agentId=e.s.id,s.demoScale=!0),s):null}setTeam(e,s){this.rootId!==s&&(this.clearEventRoutes(),this.routeId=null),super.setTeam(e,s);for(let o of this.people.values())o.desk.pose="sit";this.selectedId&&!this.people.has(this.selectedId)&&(this.selectedId=s),this.makeRoute(this.selectedId||s),this.paintScreens()}bubble(){}screenPoint(e){let s=e.desk.seat;return new W(s.x+.1,1.3,s.y-1.15)}pathBetween(e,s){if(!e?.desk||!s?.desk||e===s)return null;let o=this.screenPoint(e),d=this.screenPoint(s),p=o.distanceTo(d),i=new W((o.x+d.x)/2,Math.max(o.y,d.y)+.75+Math.min(1.3,p*.1),(o.z+d.z)/2+.35);return new mt([o,i,d],!1,"centripetal",.5)}addRouteLine(e,s){for(let[d,p,i]of[[.18,"#42c8ff",.16],[.065,"#0870ff",.94]])e.add(new Ce(new it(s,100,d,6,!1),new Me({color:p,transparent:!0,opacity:i,depthWrite:!1,depthTest:!1})));let o=new pt(new ut().setFromPoints(s.getPoints(70)),new bt({color:"#e9fbff",dashSize:.12,gapSize:.18,linewidth:2}));o.computeLineDistances(),e.add(o)}clearEventRoutes(){for(let e of this.eventRoutes||[])this.scene?.remove(e.group),Ne(e.group);this.eventRoutes=[]}makeRoute(e){let s=this.people?.get(e);if(!this.loaded||!this.room||!s)return;let o=this.people.get(s.s.parentId),d=[e,s.desk.seat.x,s.desk.seat.y,o?.s.id,o?.desk.seat.x,o?.desk.seat.y].join(":");if(this.routeId===e&&this.routeSignature===d)return;this.routeGroup&&(this.scene.remove(this.routeGroup),Ne(this.routeGroup)),this.routeId=e,this.routeSignature=d,this.routeGroup=new qe,this.scene.add(this.routeGroup);let p=s.desk.seat;this.routeCurve=this.pathBetween(o,s),this.packet=null,this.routeCurve&&(this.addRouteLine(this.routeGroup,this.routeCurve),this.packet=null);for(let i of[-1,1])for(let u of[-1,1]){let r=p.x+i*1.95,c=p.y-.4+u*1.4;for(let m of[[new W(r,.05,c),new W(r-i*.6,.05,c)],[new W(r,.05,c),new W(r,.05,c-u*.5)],[new W(r,.05,c),new W(r,.7,c)]]){let y=new gt(m[0],m[1]);this.routeGroup.add(new Ce(new it(y,1,.035,6,!1),new Me({color:"#08a0ff"})))}}}select(e,s=!1){if(this.selectedId=e,this.makeRoute(e),s&&this.cw<850){let o=this.people.get(e);if(o&&this.camera){let d=new W(o.x,.3,o.y);this.camera.position.add(d.clone().sub(this.controls.target)),this.controls.target.copy(d)}}}updatePins(){if(!(!this.pins||!this.camera||!this.loaded))for(let e of this.pins.children){let s=this.people.get(e.dataset.agent);if(!s)continue;let o=new W(s.x,2.2,s.y-.4).project(this.camera),d=(o.x+1)*.5*this.cw,p=(1-o.y)*.5*this.ch;e.style.left=d+"px",e.style.top=p+"px",e.hidden=o.z>1||d<-40||d>this.cw+40||p<70||p>this.ch-70}}animateEvent(e){if(this.remember(e),e.type==="report"&&super.animateEvent(e),this.flows=[],this.reduced||!this.loaded||!["assign","message","report"].includes(e.type))return;let s=this.people.get(e.sessionId),o=this.people.get(e.type==="report"?s?.s.parentId:e.targetId),d=this.pathBetween(s,o);if(!d)return;let p=new qe;this.addRouteLine(p,d);let i=performance.now(),u=[];for(let r=0;r<3;r++){let c=new Ce(new yt(.105,12,8),new Me({color:r?"#bfefff":"#ffffff",transparent:!0,opacity:.95,depthWrite:!1,depthTest:!1}));c.visible=!1,p.add(c),u.push(c)}this.scene.add(p);for(let r of[s,o])if(r?.desk)for(let c of this.screenList||[])c.desk===r.desk&&(c.mesh.userData.flashUntil=i+900);for(this.eventRoutes.push({group:p,curve:d,packets:u,start:i});this.eventRoutes.length>12;){let r=this.eventRoutes.shift();this.scene.remove(r.group),Ne(r.group)}}setReduced(e){super.setReduced(e),e&&this.clearEventRoutes()}step(e){this.playing&&super.step(e)}syncActors(e){this.hemi&&(this.hemi.intensity=1.6),this.sun&&(this.sun.intensity=2),super.syncActors(this.playing?e:0)}pointer(e,s){if(this.screenModal)return;if(!s){if(e.buttons||!this.camera||!this.loaded)return;let c=this.canvas.getBoundingClientRect();this.raycaster.setFromCamera(new st((e.clientX-c.left)/c.width*2-1,1-(e.clientY-c.top)/c.height*2),this.camera),this.canvas.style.cursor=this.raycaster.intersectObjects(this.screenMeshes||[],!1).length?"pointer":"";return}if(!this.camera||!this.loaded||this.downPoint&&Math.hypot(e.clientX-this.downPoint.x,e.clientY-this.downPoint.y)>6)return;let o=this.canvas.getBoundingClientRect();this.raycaster.setFromCamera(new st((e.clientX-o.left)/o.width*2-1,1-(e.clientY-o.top)/o.height*2),this.camera);let d=this.raycaster.intersectObjects([...this.actors.values()].map(c=>c.obj),!0),i=this.raycaster.intersectObjects(this.screenMeshes||[],!1)[0];if(i&&(!d[0]||i.distance<d[0].distance)){let c=i.object.userData.desk;if(c){this.openScreen(c,i.object);return}}for(let c of d){let m=c.object;for(;m&&!m.userData.agentId;)m=m.parent;if(m?.userData.agentId){this.selectCallback(m.userData.agentId);return}}let u=new ht(new W(0,1,0),0),r=new W;if(this.raycaster.ray.intersectPlane(u,r))for(let c of this.people.values()){let m=c.desk.seat;if(Math.abs(r.x-m.x)<2.1&&Math.abs(r.z-m.y+.5)<1.8){this.selectCallback(c.s.id);return}}}screenStatus(e){let s={working:"#5ee0a0",tool:"#5ee0a0",typing:"#5ee0a0",thinking:"#f0c35e",done:"#5ee0a0",waiting:"#f0c35e",waiting_agents:"#f0c35e",error:"#ff7a6b",interrupted:"#f0a35e",closed:"#8fa6c6",idle:"#8fa6c6",unknown:"#8fa6c6"},o="scene.screen."+e;return[rt(o)?n(o):String(e||n("scene.screen.unknown")),s[e]||"#8fa6c6"]}remember(e){let s=e.sessionId||e.targetId;if(!s)return;let o="scene.activity."+e.type,d=rt(o)?n(o):n("scene.activity.event"),p=this.activityLog.get(s)||[],i=Number(e.at),u=new Date(Number.isFinite(i)&&i>0?i:Date.now()).toLocaleTimeString(J(),{hour12:!1});p.unshift({time:u,label:d,text:e.preview||e.title||""}),this.activityLog.set(s,p.slice(0,6))}screenInfo(e){if(!e)return{empty:!0};let s=e.s,[o,d]=this.screenStatus(s.status);return{name:s.name,code:s.code,statusText:o,statusColor:d,task:s.task||s.title||n("scene.screen.waitingTask"),context:s.file&&s.file!==n("common.notRecorded")?s.file:"",log:this.activityLog.get(s.id)||[],updated:new Date().toLocaleTimeString(J(),{hour12:!1})}}paintScreens(e=!1){for(let s of this.screenList||[]){let o=[...this.people.values()].find(r=>r.desk===s.desk)||null,d=this.screenInfo(o),p=o?[o.s.id,o.s.status,o.s.task,o.s.file,d.log[0]?.time||""].join("|"):"empty";if(!e&&s.sig===p)continue;s.sig=p;let i=this.screenCanvas(s.record.seed,512,d);s.record.canvas=i;let u=s.mesh.userData.screenTexture;u&&(u.image=i,u.needsUpdate=!0)}this.screenModal&&this.updateScreenModal()}screenText(e,s){if(!s)return[n("scene.screen.unassigned"),"",n("scene.screen.waitingSeat")].join(`
2
- `);let[o]=this.screenStatus(s.s.status),d=[s.s.name+" \xB7 "+(s.s.role||n("common.agent")),n("scene.screen.statusLine",{status:o}),n("scene.screen.taskLine",{task:e.task||n("scene.screen.waitingTask")}),e.context?n("scene.screen.contextLine",{value:e.context}):n("scene.screen.contextNone"),"",n("scene.screen.recent")];if(e.log.length)for(let p of e.log)d.push(p.time+" "+p.label+" "+p.text);else d.push(n("scene.screen.noEvents"));return d.join(`
3
- `)}updateScreenModal(){let e=this.screenRefs;if(!e||!this.screenDesk)return;let s=[...this.people.values()].find(u=>u.desk===this.screenDesk)||null,o=this.screenInfo(s),[d,p]=this.screenStatus(s?.s.status);e.name.textContent=s?.s.name||n("scene.screen.idleSeat"),e.sub.textContent=s?[s.s.role||n("common.agent"),d].filter(Boolean).join(" \xB7 "):n("scene.screen.noAgentSeated"),e.dot.style.background=p,e.dot.style.boxShadow="0 0 10px "+p,e.card.dataset.status=s?.s.status||"empty";let i=Number(this.screenMesh?.userData?.screenSeed)||0;e.body.replaceChildren(this.screenCanvas(i,1280,o)),e.live.textContent=this.screenText(o,s),e.meta.textContent=s?[s.s.code||"AGENT",o.context?n("scene.screen.contextLine",{value:o.context}):n("scene.screen.contextNone")].join(" \xB7 "):n("scene.screen.unassigned"),e.task.textContent=s?o.task:n("scene.screen.waitingSeat"),e.task.title=e.task.textContent,e.hint.textContent=n("scene.screen.escHint"),e.close.setAttribute("aria-label",n("scene.screen.closeAria"))}openScreenFor(e){let s=this.people.get(e);if(!s?.desk)return!1;let o=(this.screenList||[]).find(d=>d.desk===s.desk);return o?(this.openScreen(s.desk,o.mesh),!0):!1}openScreen(e,s){this.screenModal&&this.closeScreen(),this.screenDesk=e,this.screenMesh=s||(this.screenList||[]).find(k=>k.desk===e)?.mesh||null,this.screenReturnFocus=document.activeElement;let o=document.createElement("div");o.className="screen-modal";let d=document.createElement("div");d.className="screen-modal-card",d.setAttribute("role","dialog"),d.setAttribute("aria-modal","true");let p="screen-modal-title-"+Math.random().toString(36).slice(2,8);d.setAttribute("aria-labelledby",p);let i=document.createElement("header"),u=document.createElement("span");u.className="screen-modal-dot";let r=document.createElement("div");r.className="screen-modal-title";let c=document.createElement("strong");c.id=p;let m=document.createElement("small");r.append(c,m);let y=document.createElement("button");y.type="button",y.className="screen-modal-close",y.setAttribute("aria-label",n("scene.screen.closeAria")),y.textContent="\xD7",i.append(u,r,y);let T=document.createElement("div");T.className="screen-modal-body";let E=document.createElement("pre");E.className="screen-modal-live";let D=document.createElement("footer"),L=document.createElement("span");L.className="screen-modal-meta";let P=document.createElement("span");P.className="screen-modal-task";let g=document.createElement("span");g.className="screen-modal-hint",g.textContent=n("scene.screen.escHint"),D.append(L,P,g),d.append(i,T,E,D),o.appendChild(d),this.screenRefs={overlay:o,card:d,name:c,sub:m,dot:u,body:T,live:E,meta:L,task:P,hint:g,close:y},o.addEventListener("click",k=>{k.target===o&&this.closeScreen()}),y.addEventListener("click",()=>this.closeScreen()),o.addEventListener("keydown",k=>{k.key==="Escape"?(k.preventDefault(),this.closeScreen()):k.key==="Tab"?(k.preventDefault(),y.focus()):k.key==="/"&&k.preventDefault()}),this.screenEsc=k=>{k.key==="Escape"&&this.screenModal&&this.closeScreen()},window.addEventListener("keydown",this.screenEsc),this.screenInert=[...document.body.children].filter(k=>k!==o&&!["SCRIPT","STYLE","LINK"].includes(k.tagName));for(let k of this.screenInert)k.dataset.screenInert=k.inert?"1":"0",k.inert=!0;document.body.appendChild(o),this.screenModal=o,this.updateScreenModal(),y.focus()}closeScreen(){this.screenEsc&&window.removeEventListener("keydown",this.screenEsc),this.screenEsc=null,this.screenModal&&(this.screenModal.remove(),this.screenModal=null);for(let s of this.screenInert||[])s.inert=s.dataset.screenInert==="1",delete s.dataset.screenInert;this.screenInert=[],this.screenRefs=null,this.screenDesk=null,this.screenMesh=null;let e=this.screenReturnFocus;if(this.screenReturnFocus=null,e&&e.isConnected)try{e.focus({preventScroll:!0})}catch{}}draw(){let e=performance.now();for(let o of this.eventRoutes||[]){let d=e-o.start;for(let p=0;p<o.packets.length;p++){let i=o.packets[p],u=(d-120-p*240)/1500;if(u<0||u>1){i.visible=!1;continue}i.visible=!0,i.position.copy(o.curve.getPoint(u)),i.scale.setScalar(1-.3*Math.max(0,u-.72)/.28)}d>=2200&&(this.scene.remove(o.group),Ne(o.group))}this.eventRoutes&&(this.eventRoutes=this.eventRoutes.filter(o=>e-o.start<2200));let s=super.draw();if(this.packet&&this.routeCurve){let o=this.reduced||!this.playing?.58:performance.now()%4500/4500;this.packet.position.copy(this.routeCurve.getPoint(o)),this.packet.position.y+=.09}return s}destroy(){this.offLang?.(),this.closeScreen(),this.clearEventRoutes(),this.routeGroup&&Ne(this.routeGroup),super.destroy()}};var le=48,Ct=["search","review"],Nt={search:"TASK-07843",review:"TASK-07844"},De=(t,e)=>[0,1,2,3].map(s=>n("demo.scenario."+t+"."+e+"."+s));function Dt(t){let e=Ct.includes(t)?t:"search",s={title:n("demo.scenario."+e+".title"),project:n("demo.scenario."+e+".project"),code:Nt[e],titles:De(e,"titles"),tasks:De(e,"tasks"),files:De(e,"files"),reports:De(e,"reports")};return e==="review"&&(s.roles=De(e,"roles")),s}var ct=(t,e,s)=>Math.max(e,Math.min(s,t)),ve=["main","api","frontend","test"],Ie=[0,3,5,7],at=[48,23,31,37],Ht=["diagram-3-fill","cpu-fill","file-earmark-code-fill","shield-check"];function Ot(t=16,e="search"){let s=ct(Number(t)||0,0,le),o=Dt(e),d=ve.map(m=>n("demo.name."+m)),p=ve.map(m=>n("demo.role."+m)),i=ve.map(m=>n("demo.zone."+m)),u=s<7?0:s<25?1:s<37?2:3,r=ve.map((m,y)=>{let T=Math.round(y===0?s/le*100:ct((s-Ie[y])/(at[y]-Ie[y]),0,1)*100),E=s>=at[y];return{id:m,key:m,parentId:y?"main":null,rootId:"main",agent:"codex",subagent:y>0,name:d[y],title:o.titles[y],role:(o.roles||p)[y],zone:i[y],icon:Ht[y],task:o.tasks[y],file:o.files[y],code:o.code.slice(0,-1)+(Number(o.code.slice(-1))+y),progress:T,status:E?"done":s<Ie[y]?"unknown":y===0&&s>=7&&s<37?"waiting_agents":"tool",startedAt:Ie[y]*1e3,report:E?o.reports[y]:null,reportPreview:E?n("demo.preview.ready"):y?T<25?n("demo.preview.analyzing"):T<75?n("demo.preview.running"):n("demo.preview.compiling"):n("demo.preview.coordinating")}}),c=[...ve.slice(1).map((m,y)=>({id:"assign-"+m,sessionId:"main",targetId:m,type:"assign",at:Ie[y+1],preview:o.tasks[y+1]})),...ve.slice(1).map((m,y)=>({id:"report-"+m,sessionId:m,targetId:"main",type:"report",at:at[y+1],preview:o.reports[y+1]})),{id:"final-main",sessionId:"main",type:"report",at:48,preview:o.reports[0]}].filter(m=>m.at<=s).sort((m,y)=>m.at-y.at);return{mode:"demo",rootId:"main",scenario:e,config:o,seconds:s,stage:u,agents:r,events:c,assigned:r.slice(1).filter(m=>s>=Ie[ve.indexOf(m.id)]).length,received:r.slice(1).filter(m=>m.status==="done").length,active:r.filter(m=>m.status!=="done"&&m.status!=="unknown").length,progress:Math.round(s/le*100),complete:s>=le}}var Ve=class extends EventTarget{constructor(){super(),this.seconds=16,this.playing=!1,this.scenario="search"}get snapshot(){return Ot(this.seconds,this.scenario)}changed(){this.dispatchEvent(new Event("change"))}play(){this.seconds>=le&&(this.seconds=0),this.playing=!this.playing,this.changed()}restart(){this.seconds=0,this.playing=!0,this.changed()}setScenario(e){Ct.includes(e)&&(this.scenario=e,this.seconds=16,this.playing=!1,this.changed())}advance(e){!this.playing||!Number.isFinite(e)||e<=0||(this.seconds=ct(this.seconds+e,0,le),this.seconds===le&&(this.playing=!1),this.changed())}};var jt=new Set(["thinking","tool","typing","waiting","waiting_agents"]),lt=new Set(["done","error","interrupted","closed"]);function He(t,e=68){let s=typeof t=="string"?t.replace(/\s+/g," ").trim():"";return s.length>e?s.slice(0,e)+"\u2026":s}function Ft(t){return typeof t=="string"?t.replace(/[\\/]+$/,"").split(/[\\/]/).pop():""}function St(t,e){return t?e+"-"+String(t).slice(-8):e}function zt(t,e,s){if(e)return n("live.reportReady");if(t.reportEventId)return s?n("live.reportHistorical"):n("live.reportPending");switch(t.status){case"done":return n("live.endedNoReport");case"error":return n("live.errored");case"interrupted":return n("live.interrupted");case"closed":return n("live.agentClosed");case"waiting":return He(t.activity)||n("live.waitingUser");case"waiting_agents":return n("live.awaitingSubagents");case"typing":return n("live.typingMessage");case"tool":return He(t.activity)||n("live.runningTool");case"thinking":return n("live.thinking");case"idle":return n("live.idle");default:return n("live.awaitingLog")}}function Kt(t,e){if(e)return"diagram-3-fill";let s=[t.role,t.task].filter(Boolean).join(" ");return/测试|检查|审查|review|test/i.test(s)?"shield-check":/前端|界面|frontend|\bUI\b/i.test(s)?"file-earmark-code-fill":"cpu-fill"}function Ut(t,e,s){if(!Number.isFinite(e?.turnStartedAt)||!lt.has(t.status))return!1;let o=[t.lastEventAt,t.endedAt].filter(Number.isFinite);return!o.length||Math.max(...o)>=e.turnStartedAt?!1:!s.concat(Array.isArray(t.events)?t.events:[]).some(p=>p.targetId===t.id&&(p.type==="assign"||p.type==="message")&&p.at>=e.turnStartedAt)}function Bt(t,e,s){if(!t.reportEventId)return!1;let o=s.concat(Array.isArray(t.events)?t.events:[]),d=o.find(r=>r.id===t.reportEventId&&r.type==="report"),p=o.filter(r=>t.id!==e?.id&&r.targetId===t.id&&(r.type==="assign"||r.type==="message")&&Number.isFinite(r.at)),i=[e?.turnStartedAt,t.turnStartedAt,...p.map(r=>r.at)].filter(Number.isFinite),u=Number.isFinite(d?.at)?d.at:Number.isFinite(t.endedAt)?t.endedAt:t.lastEventAt;return!Number.isFinite(u)||!i.length||u>=Math.max(...i)}var We=class{constructor(){this.rootId=null,this.slots=new Map,this.nextSlot=1}update(e={},s=Date.now()){let o=e.rootId||null;o!==this.rootId&&(this.rootId=o,this.slots.clear(),this.nextSlot=1),o&&this.slots.set(o,0);let d=Array.isArray(e.roots)?e.roots:[],p=Array.isArray(e.agents)?e.agents:[],i=Array.isArray(e.events)?e.events:[],u=p.find(g=>g.id===o),r=d.find(g=>g.id===o),c=p.map(g=>{let k=g.id===o;this.slots.has(g.id)||this.slots.set(g.id,this.nextSlot++);let H=this.slots.get(g.id),j=g.name||(k?n("live.leadName"):n("live.subName",{id:String(g.id).slice(-8)})),B=!k&&Ut(g,u,i),G=Bt(g,u,i);return{...g,agent:g.agent||(e.source==="harness"?"dsh":"codex"),source:g,slot:H,historical:B,name:j,title:He(g.task||k&&r?.title||g.role||j),role:g.role||(k?n("app.roleLead"):n("app.roleSubAgent")),zone:k?n("live.zoneLead"):n("live.zoneSlot",{slot:H}),icon:Kt(g,k),file:He(g.activity||g.model)||n("common.notRecorded"),code:St(g.id,"AGENT"),progress:g.status==="done"?100:null,report:null,hasReport:G,currentHasReport:G,reportPreview:zt(g,G,B)}}).sort((g,k)=>g.slot-k.slot),m=c.filter(g=>g.id!==o&&g.parentId&&!g.historical),y=m.filter(g=>g.hasReport).length,T=u?.status==="done",E=m.length?1:0;y&&(E=2),(T||c.find(g=>g.id===o)?.hasReport||u?.status==="typing"&&m.length>0&&m.every(g=>lt.has(g.status)))&&(E=3);let D=Number.isFinite(u?.turnStartedAt),L=s;lt.has(u?.status)&&(L=Number.isFinite(u.endedAt)?u.endedAt:Number.isFinite(u.lastEventAt)?u.lastEventAt:s);let P=D?Math.max(0,Math.floor((L-u.turnStartedAt)/1e3)):0;return{...e,mode:"live",rootId:o,scenario:o,config:{title:He(u?.task||r?.title||u?.name)||(e.source==="harness"?n("live.harnessSession"):n("live.codexSession")),project:Ft(u?.cwd||r?.cwd)||(e.source==="harness"?n("live.harnessName"):n("live.codexName")),code:St(o,"SESSION")},seconds:P,elapsedKnown:D,stage:E,agents:c,events:i,roots:d,warnings:Array.isArray(e.warnings)?e.warnings:[],assigned:m.length,received:y,active:c.filter(g=>jt.has(g.status)).length,progress:T?100:null,complete:T}}};function be(t=""){let e=new URL(".",globalThis.document?.baseURI||location.href);return new URL(t.replace(/^\/+/,""),e).href}function Oe(){return new URLSearchParams(location.search).get("source")==="harness"?"harness":"codex"}function je(t=!1,e=Oe()){let s=new URL(be("demo.html"));return t&&s.searchParams.set("mode","live"),e==="harness"&&s.searchParams.set("source","harness"),s.href}function Je(t,e=!1){if(t!=="harness")return;document.title=n(e?"meta.harnessLive":"meta.harnessDemo");let s=document.querySelector(".brand");s.href=je(e,t),s.querySelector(":scope > span:last-child").replaceChildren("DSH",Object.assign(document.createElement("span"),{className:"brand-light",textContent:"Office"})),document.querySelector(".profile-avatar img").src=be("assets/agents/dsh.svg"),document.getElementById("dialog-mode").textContent="DSH OFFICE / "+(e?"LIVE":"DEMO")}function ke(t){if(typeof t!="string"||!t.trim())return"";let e=t.trim().replace(/\\/g,"/").replace(/\/+$/,"")||"/";return/^[a-z]:\//i.test(e)||/^[a-z]:$/i.test(e)||e.startsWith("//")?e.toLowerCase():e}function _e(t=[]){let e=new Map;for(let s of t){let o=ke(s.cwd);e.has(o)||e.set(o,{key:o,path:s.cwd?.trim()||n("common.noDirectory"),count:0}),e.get(o).count++}return[...e.values()]}function Fe(t=[],e){return t.filter(s=>ke(s.cwd)===e)}function ze(t){let e=typeof t.title=="string"?t.title.replace(/\s+/g," ").trim():"",s=Number.isFinite(t.createdAt)?t.createdAt:t.at,o=Number.isFinite(s)?new Date(s):null,d=o&&!Number.isNaN(o.getTime())?o.toLocaleString(J(),{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}):n("common.timeNotRecorded");return[e?e.slice(0,46)+(e.length>46?"\u2026":""):n("common.unnamedSession"),d,String(t.id).slice(-8)].join(" \xB7 ")}var $e=class extends EventTarget{constructor(e){super(),this.adapter=new We,this.kind=Oe(),this.storageKey=this.kind==="harness"?"office.harness.live.root":"office.live.root",this.directoryKey=this.kind==="harness"?localStorage.getItem("office.harness.live.directory")??null:null,this.explicitRootId=e||null,this.raw={source:this.kind},this.rootId=e||localStorage.getItem(this.storageKey)||"",this.follow=!e,this.connection="connecting",this.error="",this.generation=0,this.baseline=!0,this.knownRoots=new Set,this.records=new Map}get snapshot(){return this.adapter.update(this.raw)}changed(e=!1){this.dispatchEvent(new CustomEvent("change",{detail:{baseline:e}}))}async connect(e=this.rootId){let s=++this.generation;this.rootId=e||"",this.source?.close(),this.abort?.abort(),this.abort=new AbortController,this.baseline=!0,this.connection="connecting",this.error="",this.changed(!0);try{let o=await fetch(be("api/sessions?"+new URLSearchParams(e?{rootId:e}:{})),{signal:this.abort.signal});o.status===404&&e&&!new URLSearchParams(location.search).get("rootId")&&(o=await fetch(be("api/sessions"),{signal:this.abort.signal}));let d=await o.json();if(!o.ok)throw new Error(d.error||n("source.sessionReadFail"));if(s!==this.generation||(this.accept(d),s!==this.generation))return;let p=new URLSearchParams(this.rootId?{rootId:this.rootId}:{}),i=this.source=new EventSource(be("events?"+p));i.onopen=()=>{s===this.generation&&(this.baseline=!0,this.connection="connected",this.error="",this.changed(!0))},i.onmessage=u=>{if(s===this.generation)try{this.accept(JSON.parse(u.data))}catch(r){this.error=n("source.eventReadFail",{message:r.message}),this.changed(!0)}},i.onerror=()=>{s===this.generation&&(this.baseline=!0,this.connection="reconnecting",this.error=n("source.disconnected"),this.changed(!0))}}catch(o){if(s!==this.generation||o.name==="AbortError")return;this.connection="error",this.error=o.message,this.changed(!0)}}accept(e){if(e.mode&&e.mode!=="live")throw new Error(n("source.demoData"));e.source==="harness"&&this.kind!=="harness"&&(this.kind="harness",this.storageKey="office.harness.live.root",this.directoryKey=localStorage.getItem("office.harness.live.directory")??null);let s=e.roots||[],o=s;if(this.kind==="harness"&&s.length){let u=s.find(c=>c.id===e.rootId),r=_e(s);if((this.explicitRootId===u?.id||!r.some(c=>c.key===this.directoryKey))&&(this.directoryKey=ke((u||s[0]).cwd)),this.explicitRootId=null,localStorage.setItem("office.harness.live.directory",this.directoryKey),o=Fe(s,this.directoryKey),!o.some(c=>c.id===e.rootId)){this.raw={...this.raw,roots:s},this.select(o[0].id,!0);return}}let d=o[0],p=this.knownRoots.size&&d&&!this.knownRoots.has(d.id);for(let u of e.roots||[])this.knownRoots.add(u.id);if(this.follow&&p&&d.id!==e.rootId){this.raw={...this.raw,roots:s},this.select(d.id,!0);return}let i=this.baseline||e.rootId!==this.raw.rootId||e.agents?.some(u=>u.loading);this.raw={...e,source:this.kind},this.rootId=e.rootId||"",this.rootId&&localStorage.setItem(this.storageKey,this.rootId),this.changed(i),this.baseline=!!e.agents?.some(u=>u.loading)}select(e,s=!1){if(this.kind==="harness"){let d=this.raw.roots?.find(p=>p.id===e);if(!d||this.directoryKey!==null&&ke(d.cwd)!==this.directoryKey)return Promise.resolve(!1);this.directoryKey=ke(d.cwd),localStorage.setItem("office.harness.live.directory",this.directoryKey)}this.explicitRootId=null,s||(this.follow=!1),this.raw={source:this.kind,rootId:e,roots:this.raw.roots||[],agents:[],events:[]},this.records.clear();let o=new URL(location.href);return o.searchParams.set("rootId",e),history.replaceState(null,"",o),this.connect(e)}async openSession(e){let s=this.raw.roots?.find(o=>o.id===e);if(!s)return!1;this.kind==="harness"&&(this.directoryKey=ke(s.cwd),localStorage.setItem("office.harness.live.directory",this.directoryKey)),this.explicitRootId=null,this.follow=!1;try{return await this.select(e)!==!1}catch{return!1}}selectDirectory(e){let s=Fe(this.raw.roots,e);if(!s.length)return Promise.resolve(!1);this.directoryKey=e,localStorage.setItem("office.harness.live.directory",e);let o=s.find(d=>d.id===this.rootId)||s[0];return this.select(o.id,!0)}async record(e,s){let o=e+":"+s;if(this.records.has(o))return this.records.get(o);let d=await fetch(be("api/report?"+new URLSearchParams({sessionId:e,eventId:s}))),p=await d.json();if(!d.ok)throw new Error(p.error||n("source.recordReadFail"));return this.records.set(o,p.text),p.text}destroy(){this.generation++,this.abort?.abort(),this.source?.close()}};var pe=null,qt=0,_=(t,e,s)=>{let o=document.createElement(t);return e&&(o.className=e),s!=null&&(o.textContent=s),o},Xe=(t,e)=>{let s=_("img",e);return s.src="./demo-icons/"+t+".svg",s.alt="",s},Rt=t=>t.trim().toLowerCase().replace(/\\/g,"/");function Ae(){pe?.close()}function fe(t,{filterable:e=!0}={}){t.id||(t.id="office-select-"+ ++qt);let s=_("div","office-select"),o=_("button","select-trigger");o.type="button",o.id=t.id+"-trigger";let d=[...t.labels];for(let b of d)b.htmlFor=o.id;let p=_("span","select-value");o.append(p,Xe("chevron-down","select-chevron")),s.append(o),t.after(s),t.hidden=!0;let i=_("div","select-popover");i.id=t.id+"-popover",i.setAttribute("popover","manual"),i.hidden=!0,(t.closest("dialog")||document.body).append(i);let u=_("form","select-filter"),r=_("input","select-filter-input");r.type="text",r.autocomplete="off",r.spellcheck=!1;let c=_("button","select-filter-clear");c.type="button",c.setAttribute("aria-label",n("controls.clearFilter")),c.append(Xe("x-lg")),u.append(Xe("search"),r,c);let m=_("div","select-options");m.id=t.id+"-options",m.role="listbox";let y=_("p","select-empty",n("controls.noMatch"));y.role="status",e?i.append(u,m,y):i.append(m,y),o.setAttribute("aria-haspopup","listbox"),o.setAttribute("aria-controls",m.id),e&&(r.setAttribute("role","combobox"),r.setAttribute("aria-autocomplete","list"),r.setAttribute("aria-controls",m.id));let T=new AbortController,E=T.signal,D=[],L=[],P=null,g=!1,k=!1,H="",j="";function B(){if(!g)return;let b=o.getBoundingClientRect(),C=window.visualViewport;if(!b.width||!b.height){z();return}let A=(C?.offsetLeft||0)+12,N=(C?.offsetTop||0)+12,S=A+(C?.width||innerWidth)-24,q=N+(C?.height||innerHeight)-24,V=Number(t.dataset.popoverMinWidth)||360,X=Math.min(Math.max(b.width,V),S-A),te=q-b.bottom-8,ne=b.top-N-8,se=te<260&&ne>te;i.style.width=X+"px",i.style.maxHeight=Math.max(0,Math.min(380,se?ne:te))+"px",i.style.left=Math.max(A,Math.min(b.left,S-X))+"px",i.style.top=(se?b.top-8-i.getBoundingClientRect().height:b.bottom+8)+"px"}function G(b,C=!1){P=b?.value??null;let A;for(let N of m.children){let S=P!==null&&N.dataset.value===P;N.dataset.active=String(S),S&&(A=N)}A?r.setAttribute("aria-activedescendant",A.id):r.removeAttribute("aria-activedescendant"),C&&A?.scrollIntoView({block:"nearest"})}function F(){let b=Rt(r.value),C=b!==H,A=C?0:m.scrollTop;H=b,L=D.filter(S=>Rt(S.search).includes(b));let N=JSON.stringify([b,J(),t.value,L.map(S=>[S.index,S.value,S.label,S.description,S.disabled])]);N!==j&&(j=N,m.replaceChildren(...L.map(S=>{let q=_("div","select-option");q.role="option",q.id=t.id+"-option-"+S.index,q.dataset.value=S.value,q.setAttribute("aria-selected",String(S.value===t.value)),q.setAttribute("aria-disabled",String(S.disabled));let V=_("span","select-option-copy");V.append(_("strong","",S.label)),S.description&&V.append(_("small","",S.description));let X=Xe("check-lg","select-check");return X.hidden=S.value!==t.value,q.append(V,X),q.addEventListener("pointermove",()=>{S.disabled||G(S)}),q.addEventListener("pointerdown",te=>te.preventDefault()),q.addEventListener("click",()=>Q(S)),q}))),y.hidden=L.length>0,c.setAttribute("aria-hidden",String(!r.value)),c.tabIndex=r.value?0:-1,G(L.find(S=>S.value===P&&!S.disabled)||L.find(S=>S.value===t.value&&!S.disabled)||L.find(S=>!S.disabled)),m.scrollTop=A,C&&G(L.find(S=>S.value===P),!0),B()}function z(b=!1){g&&(g=!1,i.showPopover&&i.matches(":popover-open")&&i.hidePopover(),i.hidden=!0,r.value="",k=!1,o.setAttribute("aria-expanded","false"),r.setAttribute("aria-expanded","false"),r.removeAttribute("aria-activedescendant"),pe===re&&(pe=null),b&&o.isConnected&&o.focus())}function de(){t.disabled||g||(Ae(),pe=re,g=!0,P=t.value,i.hidden=!1,i.showPopover&&i.showPopover(),o.setAttribute("aria-expanded","true"),e&&r.setAttribute("aria-expanded","true"),F(),e?r.focus():o.focus(),G(L.find(b=>b.value===P),!0))}function Q(b){if(!b||b.disabled||k)return;let C=t.value!==b.value;t.value=b.value,z(!0),$(),C&&t.dispatchEvent(new Event("change",{bubbles:!0}))}function $(){let b=t.getAttribute("aria-label")||n("controls.selectOption");e&&(r.setAttribute("aria-label",n("controls.filterPrefix",{label:b.replace(/^(选择|Select)\s*/,"")})),r.placeholder=n("controls.filterPlaceholder")),m.setAttribute("aria-label",n("controls.optionsAria",{label:b})),D=[...t.options].map((C,A)=>({value:C.value,label:C.dataset.label||C.textContent,description:C.dataset.description||"",search:C.dataset.search||C.textContent,disabled:C.disabled,index:A})),p.textContent=t.selectedOptions[0]?.dataset.label||t.selectedOptions[0]?.textContent||n("controls.choose"),o.setAttribute("aria-label",[b,p.textContent,t.selectedOptions[0]?.dataset.description].filter(Boolean).join(n("common.listSeparator"))),o.title=t.title||t.selectedOptions[0]?.textContent||"",o.disabled=t.disabled,t.disabled&&z(),g&&F()}let re={refresh:$,close:z,destroy(){z(),T.abort(),i.remove(),s.remove(),t.hidden=!1;for(let b of d)b.htmlFor=t.id}};o.setAttribute("aria-expanded","false"),r.setAttribute("aria-expanded","false"),o.addEventListener("click",()=>g?z(!0):de(),{signal:E}),o.addEventListener("keydown",b=>{if(!g){(b.key==="ArrowDown"||b.key==="ArrowUp")&&(b.preventDefault(),de());return}if(e)return;let C=L.filter(A=>!A.disabled);if(C.length)if(["ArrowDown","ArrowUp","Home","End"].includes(b.key)){b.preventDefault();let A=C.findIndex(S=>S.value===P),N=b.key==="Home"?0:b.key==="End"?C.length-1:(A+(b.key==="ArrowDown"?1:-1)+C.length)%C.length;G(C[N],!0)}else b.key==="Enter"?(b.preventDefault(),Q(C.find(A=>A.value===P))):b.key==="Escape"&&(b.preventDefault(),z(!0))},{signal:E}),r.addEventListener("compositionstart",()=>{k=!0},{signal:E}),r.addEventListener("compositionend",()=>{k=!1,F()},{signal:E}),r.addEventListener("input",F,{signal:E}),u.addEventListener("submit",b=>{b.preventDefault(),k||Q(L.find(C=>C.value===P))},{signal:E}),c.addEventListener("click",()=>{r.value="",F(),r.focus()},{signal:E}),i.addEventListener("keydown",b=>{if(!(b.isComposing||k||b.keyCode===229))if(b.key==="Escape")b.preventDefault(),b.stopPropagation(),z(!0);else if(b.key==="Tab")z(!0);else if(b.target===r&&["ArrowDown","ArrowUp","Home","End"].includes(b.key)){b.preventDefault();let C=L.filter(S=>!S.disabled),A=C.findIndex(S=>S.value===P);if(!C.length)return;let N=b.key==="Home"?0:b.key==="End"?C.length-1:(A+(b.key==="ArrowDown"?1:-1)+C.length)%C.length;G(C[N],!0)}else b.target===r&&b.key==="Enter"&&(b.preventDefault(),Q(L.find(C=>C.value===P)))},{signal:E}),document.addEventListener("pointerdown",b=>{g&&!s.contains(b.target)&&!i.contains(b.target)&&z()},{signal:E}),document.addEventListener("focusin",b=>{g&&!s.contains(b.target)&&!i.contains(b.target)&&z()},{signal:E}),t.addEventListener("change",$,{signal:E});let ee=t.closest("dialog");return ee?.addEventListener("close",()=>{ee.open||z()},{signal:E}),window.addEventListener("resize",B,{signal:E}),window.addEventListener("scroll",B,{capture:!0,signal:E}),window.visualViewport?.addEventListener("resize",B,{signal:E}),$(),re}function Qe({input:t,form:e,results:s,list:o,status:d,clear:p,onClear:i,onOpen:u}){let r=new AbortController,c=r.signal,m=null,y=!1,T=()=>[...o.querySelectorAll(".search-result")];t.setAttribute("role","combobox"),t.setAttribute("aria-autocomplete","list"),t.setAttribute("aria-controls",o.id),t.setAttribute("aria-expanded","false"),o.role="listbox",o.setAttribute("aria-label",n("controls.matchesAria"));function E(g,k=!1){m=g?.dataset.value??null;for(let H of T()){let j=H===g;H.dataset.active=String(j),H.setAttribute("aria-selected",String(j))}g?t.setAttribute("aria-activedescendant",g.id):t.removeAttribute("aria-activedescendant"),k&&g?.scrollIntoView({block:"nearest"})}function D(){s.hidden=!0,t.setAttribute("aria-expanded","false"),t.removeAttribute("aria-activedescendant"),pe===P&&(pe=null)}function L(){let g=!!t.value.trim(),k=T();p.setAttribute("aria-hidden",String(!t.value)),p.tabIndex=t.value?0:-1;for(let[H,j]of k.entries())j.id=o.id+"-option-"+H,j.role="option",j.tabIndex=-1;if(d.textContent=g?k.length?n("controls.found",{count:k.length}):n("controls.noMatches"):"",!g){m=null,D();return}pe!==P&&(Ae(),pe=P),s.hidden=!1,t.setAttribute("aria-expanded","true"),E(k.find(H=>H.dataset.value===m)||k[0])}let P={refresh:L,close:D,destroy(){D(),r.abort()}};return t.addEventListener("compositionstart",()=>{y=!0},{signal:c}),t.addEventListener("compositionend",()=>{y=!1},{signal:c}),t.addEventListener("keydown",g=>{if(!(g.isComposing||y||g.keyCode===229)){if(g.key==="Escape")g.preventDefault(),g.stopPropagation(),s.hidden?i():D();else if(g.key==="Enter")g.preventDefault(),s.hidden||T().find(k=>k.dataset.value===m)?.click();else if(g.key==="ArrowDown"||g.key==="ArrowUp"||!s.hidden&&(g.key==="Home"||g.key==="End")){if(g.preventDefault(),s.hidden){u();return}let k=T(),H=k.findIndex(B=>B.dataset.value===m);if(!k.length)return;let j=g.key==="Home"?0:g.key==="End"?k.length-1:(H+(g.key==="ArrowDown"?1:-1)+k.length)%k.length;E(k[j],!0)}}},{signal:c}),e.addEventListener("submit",g=>{g.preventDefault(),!(y||s.hidden)&&T().find(k=>k.dataset.value===m)?.click()},{signal:c}),o.addEventListener("pointermove",g=>{let k=g.target.closest(".search-result");k&&E(k)},{signal:c}),o.addEventListener("pointerdown",g=>g.preventDefault(),{signal:c}),document.addEventListener("pointerdown",g=>{e.parentElement.contains(g.target)||D()},{signal:c}),document.addEventListener("focusin",g=>{e.parentElement.contains(g.target)||D()},{signal:c}),P}var Gt=t=>String(t?.id??`${t?.at??""}:${t?.type??""}`),Ke=t=>t.length?Gt(t[t.length-1]):"",It=t=>"office.notify.seen.v1."+t;function Ye({mode:t,button:e,dot:s,panel:o,getEvents:d}){let p="";try{p=localStorage.getItem(It(t))||""}catch{}let i=!1,u=E=>{i=!!E,s.hidden=!i,e.classList.toggle("has-unread",i),e.setAttribute("aria-label",i?n("notify.ariaUnread"):n("notify.aria"))},r=()=>{let E=Ke(d());if(!E||E===p){u(!1);return}p=E;try{localStorage.setItem(It(t),E)}catch{}u(!1)},c=()=>{if(!o.hidden){r();return}u(!!Ke(d())&&Ke(d())!==p)},m=()=>{o.hidden=!1,e.setAttribute("aria-expanded","true"),r()},y=()=>{o.hidden=!0,e.setAttribute("aria-expanded","false")},T=()=>o.hidden?m():y();return u(!!Ke(d())&&Ke(d())!==p),he(()=>u(i)),{update:c,markRead:r,open:m,close:y,toggle:T}}function At(){let t=a=>document.getElementById(a),e=(a,h,f)=>{let w=document.createElement(a);return h&&(w.className=h),f!=null&&(w.textContent=f),w},s=a=>{let h=e("img");return h.src="./demo-icons/"+a+".svg",h.alt="",h},o=()=>[n("demo.stage.analysis"),n("demo.stage.parallel"),n("demo.stage.reports"),n("demo.stage.summary")],d=new Set(["assign","message","report","complete","approval","error","interrupted"]),p=()=>c.events.filter(a=>d.has(a.type)),i=new $e(new URLSearchParams(location.search).get("rootId")),u=()=>i.kind==="harness"?"DeepSeek Harness":"Codex",r=()=>({id:"",icon:"diagram-3-fill",name:n("livePage.noAgent"),title:n("livePage.logWaiting"),code:"\u2014",zone:n("common.notRecorded"),file:n("common.notRecorded"),role:n("common.notRecorded"),status:"unknown",progress:null}),c=i.snapshot,m=null,y=null,T=0,E="",D=!1,L=null,P=new Set,g=null,k="",H="",j="",B="",G,F=0,z=!1,de=fe(t("workspace-directory")),Q=fe(t("scenario")),$=fe(t("mode-select"),{filterable:!1}),re=t("mode-select");re.value="live",$.refresh();let ee=Ye({mode:"live",button:t("notifications-button"),dot:t("notification-dot"),panel:t("notifications"),getEvents:p}),b=null,C=Qe({input:t("task-search"),form:t("search-form"),results:t("search-results"),list:t("search-result-list"),status:t("search-status"),clear:t("clear-search"),onClear:()=>t("clear-search").click(),onOpen:oe}),A=[],N=()=>c.agents.filter(a=>D||!a.historical),S=()=>c.agents.find(a=>a.id===m)||N()[0]||r(),q=()=>i.kind==="harness"?Fe(c.roots,i.directoryKey):c.roots,V=a=>c.agents.find(h=>h.id===a)?.name||"Agent "+(a||"").slice(-8),X=a=>xt(a.status),te=a=>!E||[a.name,a.task,a.role,a.file,a.id,a.zone,a.title].join(" ").toLowerCase().includes(E.toLowerCase()),ne=a=>{let h=Math.max(0,Math.floor(a));return(h>=3600?String(Math.floor(h/3600)).padStart(2,"0")+":":"")+String(Math.floor(h/60)%60).padStart(2,"0")+":"+String(h%60).padStart(2,"0")};function se(a){clearTimeout(G),t("demo-toast").textContent=a,t("demo-toast").hidden=!1,G=setTimeout(()=>{t("demo-toast").hidden=!0},3e3)}function ce(a){t("agent-details").hidden=!a,t("open-details").hidden=a}function Y(a,h=!0){m=a,F++,ce(!0),ge(),y?.select(a,h)}function ae(a,h,f=S().icon){Ae(),b?.destroy(),b=null,t("dialog-title").textContent=a,t("dialog-content").textContent=h,t("dialog-icon").src="./demo-icons/"+f+".svg",t("copy-demo-report").textContent=n("demo.copy"),t("demo-dialog").open||t("demo-dialog").showModal()}async function me(a,h,f){let w=++F;ae(a,n("dialog.loading"));try{let O=await i.record(h,f);w===F&&t("demo-dialog").open&&ae(a,O)}catch(O){w===F&&t("demo-dialog").open&&ae(a,n("livePage.recordFailed",{message:O.message}))}}function Te(a=!1){let h=S();if(!a&&(h.hasReport||h.historical&&h.reportEventId))return me(h.name+" \xB7 "+n(h.historical?"livePage.pastReportTitle":"livePage.reportTitle"),h.id,h.reportEventId);if(h.taskEventId)return me(h.name+" \xB7 "+n("livePage.taskSourceTitle"),h.taskSessionId||h.id,h.taskEventId);ae(h.name+" \xB7 "+n("livePage.taskDetailsTitle"),h.task||n("livePage.taskNotLogged"))}function l(){F++,ae(n("livePage.chooseTeam"),"","people-fill");let a=t("dialog-content");a.append(e("strong","",n("livePage.currentTeam")));for(let h of c.agents){let f=e("button","session-choice",h.name+" \xB7 "+X(h)+(h.historical?" \xB7 "+n("livePage.pastMember"):"")+`
4
- `+h.title);f.onclick=()=>{h.historical&&(D=!0),t("demo-dialog").close(),Y(h.id)},a.append(f)}if(i.kind==="harness"){let h=e("label","session-picker-field"),f=e("select");f.id="team-workspace-directory",h.htmlFor=f.id,h.append(e("span","",n("livePage.directory")),f),f.setAttribute("aria-label",n("livePage.teamDirectoryAria")),Pe(f),f.onchange=w=>{i.selectDirectory(w.target.value),l()},a.append(h),b=fe(f)}a.append(e("strong","",n(i.kind==="harness"?"livePage.harnessSessions":"livePage.mainSession")));for(let h of q()){let f=e("button","session-choice",i.kind==="harness"?ze(h):h.title||h.id);f.setAttribute("aria-pressed",h.id===c.rootId),f.onclick=()=>{t("demo-dialog").close(),E="",t("task-search").value="",oe(),i.select(h.id)},a.append(f)}}function v(a,h){t(a).style.width=h==null?"0%":h+"%",t(a).parentElement.classList.toggle("unrecorded",h==null)}function I(){let a=S(),h=a.hasReport||a.historical&&a.reportEventId;t("detail-icon").src=t("detail-agent-icon").src="./demo-icons/"+a.icon+".svg",t("detail-code").textContent=a.code,t("detail-badge").textContent=X(a),t("detail-badge").classList.toggle("done",a.status==="done"),t("detail-task-title").textContent=a.title,t("detail-task-title").title=a.task||a.title,t("detail-project").textContent=c.config.project,t("detail-role").textContent=a.role,t("detail-type").textContent=a.historical?n("livePage.pastMember"):a.parentId?n("livePage.subtask"):n("livePage.mainTask"),t("detail-progress-label").textContent=a.reportPreview||n("livePage.awaitingLog"),v("detail-progress-fill",a.progress),v("current-progress-fill",a.progress),t("detail-percent").textContent=a.progress==null?n("livePage.progressUnknown"):a.progress+"%",t("detail-zone").textContent=a.zone,t("detail-file").textContent=a.file,t("detail-file").title=a.source?.activity||a.file,t("detail-parent").textContent=a.parentId?V(a.parentId)+" \u2192 "+a.name:n("livePage.leadMembers",{count:c.assigned}),t("detail-name").textContent=a.name,t("detail-stage").textContent=c.complete?n("demo.stageComplete"):o()[c.stage],t("view-report").replaceChildren(document.createTextNode(n(h?"demo.viewFullReport":"demo.viewReport")),s("arrow-right")),t("view-report").disabled=!a.id,t("view-task").hidden=!h,t("view-screen").hidden=!y?.openScreenFor||!a.id,t("current-task-code").textContent=a.code,t("current-task-agent").textContent=a.name+" \xB7 "+a.zone.split(" \xB7 ")[0],t("current-task-description").textContent=a.title,t("current-task-icon").src="./demo-icons/"+a.icon+".svg"}function R(){let a=N().filter(f=>f.id!==m&&te(f)),h=JSON.stringify([m,E,a.map(f=>[f.id,f.name,f.status,f.title])]);h!==H&&(H=h,t("queue-heading").textContent=n("demo.queueHeading",{label:n(E?"demo.matchingTasks":"demo.teamTasks"),count:a.length}),t("task-queue").replaceChildren(...a.map(f=>{let w=e("button","queue-item");return w.setAttribute("aria-label",n("demo.ariaViewTask",{name:f.name})),w.title=f.name+" \xB7 "+f.title,w.append(e("strong","",f.name),e("span","",f.zone.split(" \xB7 ")[0]),e("span","queue-status "+(f.status==="done"?"done":"running"),X(f))),w.onclick=()=>Y(f.id),w})),a.length||t("task-queue").append(e("div","queue-empty",n("demo.noMatchingTasks"))))}function U(){E="",t("task-search").value="",R()}let ue="";function oe(){let a=t("search-result-list"),h=E.toLowerCase(),f=E&&i.kind==="harness"?(c.roots||[]).filter(x=>[x.title,x.cwd,x.id].join(" ").toLowerCase().includes(h)):[],w=E?N().filter(te):[],O=E?(c.events||[]).filter(x=>[x.type,Se(x.type),x.preview].join(" ").toLowerCase().includes(h)):[],we=Math.min(f.length,8)+Math.min(w.length,8)+Math.min(O.length,5),xe=f.length+w.length+O.length,Be=JSON.stringify([E,J(),xe,we,f.slice(0,8).map(x=>[x.id,x.title,x.cwd,x.createdAt,x.at]),w.slice(0,8).map(x=>[x.id,x.name,x.title,x.file,x.role,x.icon]),O.slice(0,5).map(x=>[x.id,x.type,x.preview,x.at,x.sessionId])]);if(Be===ue){C.refresh();return}if(ue=Be,a.replaceChildren(),E){xe>we&&a.append(e("p","search-note",n("livePage.searchNote",{total:xe,shown:we})));for(let x of f.slice(0,8)){let K=e("button","search-result"),ie=e("span"),Ee=Number.isFinite(x.createdAt)?x.createdAt:x.at,Le=new Date(Ee);K.type="button",K.dataset.value="session:"+x.id,ie.append(e("strong","",x.title?.trim()||n("common.unnamedSession")),e("small","",n("livePage.sessionLine",{path:x.cwd||n("common.noDirectory"),time:Number.isNaN(Le.getTime())?n("common.timeNotRecorded"):Le.toLocaleString(J(),{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}),id:String(x.id).slice(-8)}))),K.append(s("diagram-3-fill"),ie),K.onclick=()=>{U(),C.close(),i.openSession(x.id).then(nt=>{nt===!1&&se(n("livePage.cannotOpenSession"))})},a.append(K)}for(let x of w.slice(0,8)){let K=e("button","search-result"),ie=e("span");K.type="button",K.dataset.value="agent:"+x.id,ie.append(e("strong","",x.name+" \xB7 "+x.title),e("small","",n("livePage.agentLine",{detail:x.file||x.role||n("common.notRecorded")}))),K.append(s(x.icon),ie),K.onclick=()=>{U(),Y(x.id),C.close()},a.append(K)}for(let x of O.slice(0,5)){let K=e("button","search-result"),ie=e("span");K.type="button",K.dataset.value="event:"+x.id,ie.append(e("strong","",Se(x.type)+(x.preview?" \xB7 "+x.preview:"")),e("small","",n("livePage.eventLine",{name:V(x.sessionId),time:new Date(x.at).toLocaleTimeString(J(),{hour12:!1})}))),K.append(s("bell"),ie),K.onclick=()=>{U(),C.close();let Ee=["assign","message"].includes(x.type)&&x.targetId||x.sessionId,Le=c.agents.find(nt=>nt.id===Ee);Le&&(Le.historical&&(D=!0),Y(Ee)),x.hasText&&me(V(x.sessionId)+" \xB7 "+Se(x.type),x.sessionId,x.id)},a.append(K)}}C.refresh()}function Ue(){let a=p().slice(-12).reverse(),h=JSON.stringify(a);h!==B&&(B=h,t("notification-list").replaceChildren(...a.map(f=>{let w=e("button","notification-item"),O=["assign","message","report"].includes(f.type)?f.type:"activity",we=e("span","notify-type");we.append(s(O==="assign"?"diagram-3-fill":O==="report"?"check-lg":O==="message"?"chat-left-text-fill":"cpu-fill"));let xe=e("span","notify-copy"),Be=O==="activity"?n("demo.updates"):Se(f.type),x=V(f.sessionId)+(f.targetId&&f.targetId!==f.sessionId?" \u2192 "+V(f.targetId):"");return xe.append(e("strong","notify-title",Be),e("small","notify-preview",x+(f.preview?" \xB7 "+f.preview:"")),e("em","notify-time",new Date(f.at).toLocaleTimeString(J(),{hour12:!1}))),w.append(we,xe),w.onclick=()=>{let K=["assign","message"].includes(f.type)&&f.targetId||f.sessionId,ie=c.agents.find(Ee=>Ee.id===K);ie&&(ie.historical&&(D=!0),Y(K)),ee.markRead(),ee.close(),f.hasText&&me(V(f.sessionId)+" \xB7 "+Se(f.type),f.sessionId,f.id)},w})),a.length||t("notification-list").append(e("div","empty",n("livePage.waitingEvents"))),ee.update())}function Ze(){let a=JSON.stringify([i.kind,i.directoryKey,c.rootId,c.roots]);if(a===j)return;j=a;let h=i.kind==="harness";t("directory-field").hidden=!h,t("directory-field").parentElement.classList.toggle("harness-picker",h),h&&(Pe(t("workspace-directory")),b&&(Pe(t("team-workspace-directory")),b.refresh()));let f=q();if(t("scenario").replaceChildren(...f.map(w=>{let O=e("option","",h?ze(w):w.title||w.id);return O.value=w.id,O.dataset.label=w.title?.replace(/\s+/g," ").trim()||n("common.unnamedSession"),O.dataset.description=ze(w).split(" \xB7 ").slice(-2).join(" \xB7 "),O.dataset.search=[w.title,ze(w),w.id].join(" "),O})),!f.length){let w=e("option","",n("livePage.noSessions",{host:u()}));w.value="",t("scenario").append(w)}t("scenario").value=c.rootId||"",t("scenario").disabled=!f.length,t("scenario").title=t("scenario").selectedOptions[0]?.textContent||"",Q.refresh()}function Pe(a){let h=_e(c.roots);if(a.replaceChildren(...h.map(f=>{let w=e("option","",f.path+" ("+f.count+")");return w.value=f.key,w.dataset.label=f.path,w.dataset.description=n("livePage.sessionCount",{count:f.count}),w})),!h.length){let f=e("option","",n("livePage.noDirectories"));f.value="",a.append(f)}a.disabled=!h.length,a.value=h.length?i.directoryKey??"":"",a.title=h.find(f=>f.key===i.directoryKey)?.path||"",a===t("workspace-directory")&&de.refresh()}function et(){let a=JSON.stringify(N().map(h=>[h.id,h.name,h.zone]));a!==k&&(k=a,t("scene-pins").replaceChildren(...N().map(h=>{let f=e("button","scene-pin"),w=e("span");return f.dataset.agent=h.id,f.setAttribute("aria-label",n("demo.ariaSelectAgent",{name:h.name})),w.append(e("strong","",h.name),e("small","",h.zone)),f.append(s(h.icon),w),f.onclick=()=>Y(h.id),f})));for(let h of t("scene-pins").children)h.classList.toggle("selected",h.dataset.agent===m),h.classList.toggle("done",c.agents.find(f=>f.id===h.dataset.agent)?.status==="done")}function Tt(){if(z)return;let a=Math.max(4,...N().map(h=>h.slot+1));if(!(y&&a<=T)){y?.destroy(),y=null,T=a;try{let h=y=new Re(t("demo-scene"),{count:a,live:!0,source:i.kind,onSelect:Y,reduced:t("demo-reduced").checked,pins:t("scene-pins")});h.setTeam(N(),c.rootId),h.select(m),h.ready.then(f=>{if(y===h){if(t("scene-loading").hidden=f,document.body.dataset.demoReady=f?"true":"fallback",f||(t("scene-loading").textContent=n("livePage.sceneUnavailable"),h.visible=!1),f)for(let w of A)h.animateEvent(w);A=[]}})}catch(h){z=!0,t("scene-loading").hidden=!1,t("scene-loading").textContent=n("livePage.sceneUnavailable"),document.body.dataset.demoReady="fallback",console.error("\u534F\u4F5C\u573A\u666F\u52A0\u8F7D\u5931\u8D25",h)}}}function tt(){document.title=i.kind==="harness"?n("meta.harnessLive"):n("meta.liveTitle"),t("task-search").setAttribute("aria-label",n("livePage.searchAria")),t("scenario").setAttribute("aria-label",n("livePage.scenarioAria")),t("metric-progress-title").textContent=n("livePage.progressTitle"),t("event-mode").textContent=n("livePage.eventMode"),t("detail-activity-label").textContent=n("livePage.activityLabel"),t("detail-disclaimer").textContent=n("livePage.disclaimer",{host:u()}),t("dialog-mode").textContent=n("livePage.dialogMode"),t("dialog-caption").textContent=n("livePage.dialogCaption"),t("mode-select").setAttribute("aria-label",n("livePage.modeAria")),t("restart-demo").title=n("livePage.reconnect"),t("restart-demo").setAttribute("aria-label",n("livePage.reconnect")),t("toggle-play").title=n("livePage.toggleCodex"),ye.textContent=n("livePage.viewScreen")}function ge({baseline:a=!1}={}){c=i.snapshot,L!==i.kind&&(L=i.kind,Je(i.kind,!0),tt(),t("toggle-play").title=n(i.kind==="harness"?"livePage.toggleHarness":"livePage.toggleCodex"),t("team-picker").textContent=n(i.kind==="harness"?"livePage.teamLabelHarness":"livePage.teamLabelCodex")),c.rootId!==g&&(m=c.rootId,a=!0,F++,t("demo-dialog").close()),N().some(w=>w.id===m)||(m=N()[0]?.id||null),a&&(P=new Set(c.events.map(w=>w.id)),A=[]),t("workspace-name").textContent=i.kind==="harness"?n("livePage.session"):c.config.project,t("workflow-subtitle").textContent=n("livePage.realSubtitle",{title:c.config.title}),t("workflow-subtitle").title=c.config.title,t("metric-active").textContent=c.active,t("metric-assigned").textContent=c.assigned,t("metric-reports").textContent=c.received,t("metric-progress").textContent=c.progress==null?"\u2014":c.progress+"%",t("active-hint").textContent=c.complete?n("demo.hintComplete"):c.active>1?n("demo.hintParallel"):n("demo.hintCoordinating"),t("assigned-hint").textContent=n("livePage.realSplit"),t("report-hint").textContent=c.received&&c.received===c.assigned?n("demo.reportsReady"):c.received?n("demo.reportsCollecting"):n("demo.reportsWaiting"),t("stage-caption").textContent=c.complete?n("demo.stageComplete"):n("livePage.noPercent"),t("demo-clock").textContent=c.elapsedKnown?ne(c.seconds):"\u2014",t("team-count-caption").textContent=n("livePage.memberCaption",{count:c.assigned}),t("assigned-caption").textContent=n("livePage.nestedCaption");let h=re.querySelector('option[value="live"]');h.textContent=i.connection==="connected"?n("demo.modeLive"):i.connection==="connecting"?n("livePage.connecting"):n("livePage.disconnected"),re.closest(".mode-field")?.classList.toggle("disconnected",i.connection!=="connected"),$.refresh(),t("profile-caption").textContent=i.error||n(i.kind==="harness"?"livePage.profileHarness":"livePage.profileCodex"),t("profile-caption").title=i.error||n("livePage.profileTitle",{host:u()}),t("source-status").hidden=!i.error&&!c.warnings.length,t("source-status").textContent=[i.error,...c.warnings].filter(Boolean).join(n("common.listSeparator")),t("play-label").textContent=i.follow?n(i.kind==="harness"?"livePage.followHarness":"livePage.followNew"):n("livePage.fixedSession"),t("toggle-play").setAttribute("aria-label",t("play-label").textContent),t("history-toggle").textContent=n(D?"livePage.historyHide":"livePage.historyShow",{count:c.agents.filter(w=>w.historical).length}),t("stage-track-fill").style.width=(c.complete?100:c.stage/3*100)+"%",t("stage-0-description").textContent=n("livePage.subtasks",{count:c.assigned}),t("stage-1-description").textContent=n("livePage.running",{count:N().filter(w=>w.id!==c.rootId&&["tool","thinking","typing"].includes(w.status)).length}),t("stage-2-description").textContent=n("livePage.reported",{done:c.received,total:c.assigned}),t("stage-3-description").textContent=c.complete?n("demo.stageSummaryReady"):c.stage===3?n("demo.stageConcluding"):n("livePage.awaitingLead");for(let w of document.querySelectorAll(".stage")){let O=Number(w.dataset.stage);w.classList.toggle("active",O===c.stage),w.classList.toggle("completed",O<c.stage||c.complete),w.setAttribute("aria-pressed",O===c.stage),w.title=n("demo.previewStage",{stage:o()[O]}),w.querySelector("em").textContent=O===c.stage?n(c.complete?"demo.markerDone":"demo.markerRunning"):""}let f=t("progress-ring").getContext("2d");if(f.clearRect(0,0,112,112),f.lineWidth=15,f.lineCap="round",f.strokeStyle=c.complete?"#126cfa":"#e5edfc",f.beginPath(),f.arc(56,56,39,0,Math.PI*2),f.stroke(),Ze(),et(),I(),R(),Ue(),E&&!t("search-results").hidden&&oe(),Tt(),y&&(y.setTeam(N(),c.rootId),y.select(m),y.playing=!0,!a))for(let w of c.events)P.has(w.id)||(y.loaded?y.animateEvent(w):A.push(w));P=new Set(c.events.map(w=>w.id)),g=c.rootId}document.body.dataset.mode="live",Ge(document);let ye=document.createElement("button");ye.id="view-screen",ye.type="button",ye.className="text-button",ye.hidden=!0,t("view-task").before(ye),tt(),t("mode-select").onchange=a=>{a.target.value==="demo"?location.href=je(!1,i.kind):(a.target.value="live",$.refresh())},t("play-icon").src="./demo-icons/crosshair.svg",t("history-toggle").hidden=t("team-picker").hidden=!1,t("close-details").onclick=()=>ce(!1),t("open-details").onclick=()=>ce(!0),t("view-report").onclick=()=>Te(),t("view-task").onclick=()=>Te(!0),ye.onclick=()=>{let a=S();a?.id&&y?.openScreenFor?.(a.id)},t("current-task-button").onclick=()=>{ce(!0),Te()},t("close-demo-dialog").onclick=()=>{F++,t("demo-dialog").close()},t("demo-dialog").addEventListener("close",()=>{t("demo-dialog").open||(b?.destroy(),b=null)}),t("copy-demo-report").onclick=async()=>{try{await navigator.clipboard.writeText(t("dialog-content").textContent),t("copy-demo-report").textContent=n("common.copied")}catch{se(n("common.copyFailedToast"))}},t("toggle-play").onclick=()=>{i.follow=!i.follow,ge(),se(n(i.follow?i.kind==="harness"?"livePage.toastFollowHarness":"livePage.toastFollowNew":"livePage.toastFixed"))},t("restart-demo").onclick=()=>{i.connect(),se(n("livePage.toastReconnect"))},t("reset-demo-camera").onclick=()=>y?.resetCamera(),t("history-toggle").onclick=()=>{D=!D,ge({baseline:!0})},t("scenario").onchange=a=>{E="",t("task-search").value="",oe(),i.select(a.target.value)},t("workspace-directory").onchange=a=>{E="",t("task-search").value="",oe(),i.selectDirectory(a.target.value)},t("task-search").oninput=a=>{E=a.target.value.trim(),R(),oe()},t("task-search").onfocus=oe,t("clear-search").onclick=()=>{E="",t("task-search").value="",R(),oe(),t("task-search").focus()},t("notifications-button").onclick=()=>ee.toggle(),t("mark-read").onclick=()=>{ee.markRead(),Ue()},t("show-team").onclick=t("team-picker").onclick=l,t("dock-toggle").onclick=()=>{let a=t("workflow-dock").classList.toggle("expanded");t("dock-toggle").setAttribute("aria-expanded",a)};for(let a of document.querySelectorAll(".stage"))a.onclick=()=>se(n("livePage.stageToast",{stage:o()[c.stage],host:u()}));t("demo-reduced").checked=localStorage.getItem("office.demo.reduced")==="true"||matchMedia("(prefers-reduced-motion: reduce)").matches,document.body.dataset.reducedMotion=String(t("demo-reduced").checked),t("demo-reduced").onchange=a=>{localStorage.setItem("office.demo.reduced",a.target.checked),document.body.dataset.reducedMotion=String(a.target.checked),y?.setReduced(a.target.checked)},document.addEventListener("keydown",a=>{a.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement.tagName)&&!t("demo-dialog").open&&(a.preventDefault(),t("task-search").focus())}),document.addEventListener("click",a=>{!a.target.closest("#notifications")&&!a.target.closest("#notifications-button")&&ee.close()}),document.addEventListener("visibilitychange",()=>{y&&(y.visible=!document.hidden&&!y.loadError)}),he(()=>{k=H=j=B="",L=null,T=0,y?.destroy(),y=null,tt(),ge({baseline:!0})}),ce(innerWidth>1050&&innerHeight>820),ge({baseline:!0}),i.addEventListener("change",a=>ge(a.detail)),i.connect();let Pt=setInterval(()=>{document.hidden||ge()},1e3);window.addEventListener("beforeunload",()=>{clearInterval(Pt),clearTimeout(G),de.destroy(),Q.destroy(),b?.destroy(),C.destroy(),i.destroy(),y?.destroy()})}new URLSearchParams(location.search).get("mode")==="live"?At():Vt();function Vt(){let t=Oe();Je(t),Ge(document);let e=l=>document.getElementById(l),s=(l,v,I)=>{let R=document.createElement(l);return v&&(R.className=v),I!=null&&(R.textContent=I),R},o=l=>{let v=s("img");return v.src="./demo-icons/"+l+".svg",v.alt="",v},d=()=>[n("demo.stage.analysis"),n("demo.stage.parallel"),n("demo.stage.reports"),n("demo.stage.summary")],p=()=>({main:n("demo.type.main"),api:n("demo.type.api"),frontend:n("demo.type.frontend"),test:n("demo.type.test")}),i=new Ve,u=()=>{let l=i.snapshot;return t==="harness"?{...l,config:{...l.config,project:l.config.project.replace("Codex","Harness")},agents:l.agents.map(v=>({...v,agent:"dsh"}))}:l},r=u(),c="frontend",m=null,y="",T=null,E=new Set(r.events.map(l=>l.id)),D=innerWidth>1050&&innerHeight>820,L=r.seconds,P=r.scenario,g=performance.now(),k="",H="",j=fe(e("scenario")),B=fe(e("mode-select"),{filterable:!1}),G=e("mode-select");G.value="demo",B.refresh();let F=Ye({mode:"demo",button:e("notifications-button"),dot:e("notification-dot"),panel:e("notifications"),getEvents:()=>r.events}),z=Qe({input:e("task-search"),form:e("search-form"),results:e("search-results"),list:e("search-result-list"),status:e("search-status"),clear:e("clear-search"),onClear:()=>e("clear-search").click(),onOpen:ne}),de=l=>r.agents.find(v=>v.id===l)?.name||n("common.agent"),Q=()=>r.agents.find(l=>l.id===c)||r.agents[0],$=l=>l.status==="done"?n("status.done"):l.status==="unknown"?n("status.pending"):l.status==="waiting_agents"?n("status.coordinating"):n("status.running"),re=l=>"00:"+String(Math.floor(l)).padStart(2,"0"),ee=()=>{for(let l of e("scenario").options)l.dataset.label=n(l.value==="review"?"demo.scenarioReview":"demo.scenarioSearch");j.refresh(),B.refresh()};function b(l){clearTimeout(T),e("demo-toast").textContent=l,e("demo-toast").hidden=!1,T=setTimeout(()=>{e("demo-toast").hidden=!0},2300)}function C(l){D=l,e("agent-details").hidden=!l,e("open-details").hidden=l}function A(l,v=!0){c=l,C(!0),m?.select(l,v),H="",ae()}function N(l){let v=e("progress-ring").getContext("2d");v.clearRect(0,0,112,112),v.lineWidth=15,v.lineCap="round",v.strokeStyle="#e5edfc",v.beginPath(),v.arc(56,56,39,0,Math.PI*2),v.stroke(),v.strokeStyle="#126cfa",v.beginPath(),v.arc(56,56,39,-Math.PI/2,-Math.PI/2+Math.PI*2*l/100),v.stroke()}function S(){e("scene-pins").replaceChildren(...r.agents.map(v=>{let I=s("button","scene-pin");I.dataset.agent=v.id,I.setAttribute("aria-label",n("demo.ariaSelectAgent",{name:v.name}));let R=s("span");return R.append(s("strong","",v.name),s("small","",v.zone)),I.append(o(v.icon),R),I.onclick=()=>A(v.id),I}))}function q(){let l=Q();e("detail-icon").src="./demo-icons/"+l.icon+".svg",e("detail-agent-icon").src="./demo-icons/"+l.icon+".svg",e("detail-code").textContent=n("demo.detailCode",{code:l.code}),e("detail-badge").textContent=$(l),e("detail-badge").classList.toggle("done",l.status==="done"),e("detail-task-title").textContent=l.title,e("detail-project").textContent=r.scenario==="search"?n("demo.projectTaskBoard"):n("demo.projectApi"),e("detail-role").textContent=l.role,e("detail-type").textContent=r.scenario==="review"&&l.parentId?n("demo.type.reviewOnly"):p()[l.id],e("detail-progress-label").textContent=l.report?n("demo.detailProgressDone"):l.reportPreview,e("detail-progress-fill").style.width=l.progress+"%",e("detail-percent").textContent=l.progress+"%",e("detail-zone").textContent=l.zone,e("detail-file").textContent=l.file,e("detail-parent").textContent=l.parentId?n("demo.parentMain"):n("demo.parentLead",{count:3}),e("detail-name").textContent=l.name,e("detail-stage").textContent=r.complete?n("demo.stageComplete"):d()[r.stage],e("view-report").replaceChildren(document.createTextNode(l.report?n("demo.viewFullReport"):n("demo.viewReport")),o("arrow-right")),e("current-task-code").textContent=l.code,e("current-task-agent").textContent=l.name+" \xB7 "+l.zone.split(" \xB7 ")[0],e("current-task-description").textContent=l.title,e("current-task-icon").src="./demo-icons/"+l.icon+".svg",e("current-progress-fill").style.width=l.progress+"%"}function V(l){return!y||[l.name,l.role,l.zone,l.task,l.file,l.code,l.title].join(" ").toLowerCase().includes(y.toLowerCase())}function X(){let l=r.agents.filter(R=>R.id!==c&&V(R)),v=JSON.stringify([r.scenario,c,y,l.map(R=>[R.id,R.status,R.progress])]);if(v===H)return;H=v,e("queue-heading").textContent=n("demo.queueHeading",{label:y?n("demo.matchingTasks"):n("demo.teamTasks"),count:l.length});let I=e("task-queue");I.replaceChildren();for(let R of l){let U=s("button","queue-item");U.setAttribute("aria-label",n("demo.ariaViewTask",{name:R.name})),U.append(s("strong","",R.code),s("span","",R.zone.split(" \xB7 ")[0]),s("span","queue-status "+(R.status==="done"?"done":R.status==="unknown"?"":"running"),$(R))),U.onclick=()=>A(R.id),I.append(U)}l.length||I.append(s("div","queue-empty",n("demo.noMatchingTasks")))}let te="";function ne(){let l=e("search-result-list"),v=y?r.agents.filter(V):[],I=JSON.stringify([y,J(),v.map(R=>[R.id,R.name,R.title,R.file,R.icon])]);if(I===te){z.refresh();return}te=I,l.replaceChildren();for(let R of v){let U=s("button","search-result");U.type="button",U.dataset.value=R.id;let ue=s("span");ue.append(s("strong","",R.name+" \xB7 "+R.title),s("small","",R.file)),U.append(o(R.icon),ue),U.onclick=()=>{A(R.id),e("task-search").focus(),z.close()},l.append(U)}z.refresh()}function se(){let l=e("notification-list");l.replaceChildren();let v=r.events.slice(-6).reverse();for(let I of v){let R=r.agents.find(et=>et.id===(I.targetId||I.sessionId)),U=s("button","notification-item");U.type="button";let ue=s("span","notify-type");ue.append(o(I.type==="assign"?"diagram-3-fill":I.type==="report"?"check-lg":"chat-left-text-fill"));let oe=s("span","notify-copy"),Ue=I.type==="assign"?n("demo.notifyAssign"):I.type==="report"?n("demo.notifyReport"):n("demo.notifyMessage"),Ze=I.type==="assign"?n("demo.notifyRouteLead"):de(I.sessionId)+" \xB7 ",Pe=I.type==="assign"?R?.title||de(I.targetId):I.type==="report"?n("demo.notifySummary"):I.preview||n("demo.notifyProgress");oe.append(s("strong","notify-title",Ue),s("small","notify-preview",Ze+Pe),s("em","notify-time",n("demo.notifyTime",{time:re(I.at)}))),U.append(ue,oe),U.onclick=()=>{R&&A(R.id),F.markRead(),F.close()},l.append(U)}v.length||l.append(s("div","empty",n("demo.notifyEmpty"))),F.update()}function ce(l,v,I=Q().icon){Ae(),e("dialog-title").textContent=l,e("dialog-content").textContent=v,e("dialog-icon").src="./demo-icons/"+I+".svg",e("copy-demo-report").textContent=n("demo.copy"),e("demo-dialog").open||e("demo-dialog").showModal()}function Y(){let l=Q();l.report?ce(n(l.id==="main"?"demo.dialogFinalTitle":"demo.dialogReportTitle",{name:l.name}),l.report):ce(n("demo.dialogTaskTitle",{name:l.name}),[n("demo.fieldTask",{value:l.title}),n("demo.fieldCode",{value:l.code}),n("demo.fieldZone",{value:l.zone}),n("demo.fieldFile",{value:l.file}),"",l.task,"",n("demo.fieldStatus",{value:$(l),percent:l.progress}),"",n("demo.doneHint"),"",n("demo.demoOnlyHint")].join(`
5
- `)),k=l.id+":"+!!l.report+":"+r.scenario}function ae(){r=u();let l=r.seconds<L||r.scenario!==P;if(l&&(E=new Set(r.events.map(v=>v.id)),e("demo-dialog").close(),k="",m))for(let v of m.people.values())v.path=[],v.mode="work",v.reportUntil=null,v.x=v.desk.seat.x,v.y=v.desk.seat.y;e("workspace-name").textContent=r.config.project,e("workflow-subtitle").textContent=n("demo.subtitleSim",{title:r.config.title}),e("metric-active").textContent=r.active,e("metric-assigned").textContent=r.assigned,e("metric-reports").textContent=r.received,e("metric-progress").textContent=r.progress+"%",e("active-hint").textContent=r.complete?n("demo.hintComplete"):r.active>1?n("demo.hintParallel"):n("demo.hintCoordinating"),e("assigned-hint").textContent=r.assigned===3?n("demo.assignedReady"):n("demo.assignedSplitting"),e("report-hint").textContent=r.received===3?n("demo.reportsReady"):r.received?n("demo.reportsCollecting"):n("demo.reportsWaiting"),e("stage-caption").textContent=r.complete?n("demo.demoComplete"):n("demo.runningStage",{stage:d()[r.stage]}),e("demo-clock").textContent=re(r.seconds),e("play-label").textContent=i.playing?n("demo.pause"):r.complete?n("demo.replay"):n("demo.play"),e("toggle-play").setAttribute("aria-label",i.playing?n("demo.pause"):n("demo.play")),e("toggle-play").title=e("play-label").textContent,e("play-icon").src="./demo-icons/"+(i.playing?"pause-fill":"play-fill")+".svg",e("stage-track-fill").style.width=Math.min(100,r.seconds/le*100)+"%",e("stage-0-description").textContent=n("demo.stageAssigned",{done:r.assigned,total:3}),e("stage-1-description").textContent=n("demo.stageRunning",{count:r.agents.slice(1).filter(v=>v.status==="tool").length}),e("stage-2-description").textContent=n("demo.stageReported",{done:r.received,total:3}),e("stage-3-description").textContent=r.complete?n("demo.stageSummaryReady"):r.stage===3?n("demo.stageConcluding"):n("demo.stageAwaitReports");for(let v of document.querySelectorAll(".stage")){let I=Number(v.dataset.stage);v.classList.toggle("active",I===r.stage),v.classList.toggle("completed",I<r.stage||r.complete),v.setAttribute("aria-pressed",I===r.stage),v.title=n("demo.previewStage",{stage:d()[I]}),v.querySelector("em").textContent=I===r.stage?r.complete?n("demo.markerDone"):i.playing?n("demo.markerRunning"):n("demo.markerPaused"):""}N(r.progress),q(),X(),se();for(let v of e("scene-pins").children)v.classList.toggle("selected",v.dataset.agent===c),v.classList.toggle("done",r.agents.find(I=>I.id===v.dataset.agent)?.status==="done");if(m&&(m.setTeam(r.agents,"main"),m.select(c),m.playing=i.playing,!l))for(let v of r.events)E.has(v.id)||m.animateEvent(v);if(E=new Set(r.events.map(v=>v.id)),L=r.seconds,P=r.scenario,e("demo-dialog").open&&k){let v=Q();v.id+":"+!!v.report+":"+r.scenario!==k&&Y()}}e("close-details").onclick=()=>C(!1),e("open-details").onclick=()=>C(!0),e("view-report").onclick=Y,e("current-task-button").onclick=()=>{C(!0),Y()},e("close-demo-dialog").onclick=()=>e("demo-dialog").close(),e("copy-demo-report").onclick=async()=>{try{await navigator.clipboard.writeText(e("dialog-content").textContent),e("copy-demo-report").textContent=n("common.copied")}catch{b(n("common.copyFailedToast"))}},e("toggle-play").onclick=()=>i.play(),e("mode-select").onchange=l=>{l.target.value==="live"?location.href=je(!0,t):(l.target.value="demo",B.refresh())},e("restart-demo").onclick=()=>{i.restart(),b(n("demo.toastRestart"))},e("reset-demo-camera").onclick=()=>m?.resetCamera(),e("scenario").onchange=l=>{y="",e("task-search").value="",ne(),i.setScenario(l.target.value)},e("task-search").oninput=l=>{y=l.target.value.trim(),H="",X(),ne()},e("task-search").onfocus=()=>ne(),e("clear-search").onclick=()=>{y="",e("task-search").value="",X(),ne(),e("task-search").focus()},e("notifications-button").onclick=()=>F.toggle(),e("mark-read").onclick=()=>{F.markRead(),se()},e("show-team").onclick=()=>{k="",ce(n("demo.dialogTeamTitle",{title:r.config.title}),r.agents.map(l=>n("demo.teamMemberLine",{name:l.name,zone:l.zone,task:l.task,status:$(l),percent:l.progress})).join(`
1
+ import{a as ft,b as it,c as _,d as We,e as mt,f as gt,g as Ne,h as Ce,i as yt,j as vt,k as bt,l as kt,m as rt,n as wt,o as at,p as xt,q as Et,r as St,s as Ct,t as ct,u as n,v as J,w as Rt,x as Re,y as pe,z as _e}from"./chunks/chunk-MU3LEDFF.js";var lt=[4.5,9.1,13.7,18.3],dt=[6.2,11.2,16.2],De=23,He=21,It={blue:"#1769e8",white:"#f6f9fe",steel:"#d2dce8",navy:"#233d61"},T=(t,e,o,s,r,u={})=>({f:t,x:e,y:o,w:s,d:r,...u}),W=(t,e,o,s,r,u,i=0)=>({special:"box",x:t,y:e,w:o,d:s,h:r,color:u,y0:i,abs:!0});function jt({props:t,solid:e,stations:o},s,r){t.push({special:"floor",x:s-2.05,y:r-2,w:4.1,d:4,color:"#e4ebf5",color2:"#dde6f1",y0:.02}),t.push(W(s-1.65,r-.8,3.3,1.6,.9,"#f7faff")),t.push(W(s-1.7,r-.85,3.4,1.7,.06,"#eaf1fb",.9)),t.push(W(s-1.7,r-.85,3.4,.14,.09,"#176de8",.9)),t.push(W(s-1.7,r+.71,3.4,.14,.09,"#176de8",.9)),t.push(W(s-1.7,r-.85,.07,1.7,.96,"#397bd5")),t.push(W(s+1.63,r-.85,.07,1.7,.96,"#397bd5")),t.push(T("computerScreen",s-.64,r-.34,1.02,.34,{h:.62,y0:.96,abs:!0,rot:180})),t.push(T("computerScreen",s-.64,r+.34,1.02,.34,{h:.62,y0:.96,abs:!0,rot:0})),t.push(T("computerScreen",s+.56,r-.5,.74,.3,{h:.5,y0:.96,abs:!0,rot:192})),t.push(T("computerScreen",s+.56,r+.5,.74,.3,{h:.5,y0:.96,abs:!0,rot:12})),t.push(T("computerKeyboard",s-.62,r-.8,.72,.22,{y0:.96,abs:!0})),t.push(T("computerKeyboard",s-.62,r+.58,.72,.22,{y0:.96,abs:!0,rot:180})),t.push(T("computerMouse",s+.12,r-.78,.13,.18,{y0:.96,abs:!0})),t.push(T("computerMouse",s+.12,r+.6,.13,.18,{y0:.96,abs:!0,rot:180})),t.push(T("plantSmall1",s+1.25,r-.16,.32,.32,{h:.42,y0:.96,abs:!0})),t.push(T("books",s-1.42,r+.16,.5,.3,{h:.16,y0:.96,abs:!0})),t.push(T("books",s+1.24,r+.4,.32,.22,{h:.14,y0:.96,abs:!0})),t.push(T("chairDesk",s-.375,r-1.75,.75,.8,{h:1,rot:0})),t.push(T("chairDesk",s-.375,r+.95,.75,.8,{h:1,rot:180}));for(let[u,i,h]of[[s-.375,r-1.75,0],[s-.375,r+1.35,180]])o.push({x:u+.375,y:i+.4,yaw:h,pose:"sit"});e.push([s-1.7,r-.85,3.4,1.7])}function Kt(t=4,e="codex"){let o=[{special:"floor",x:-200,y:-210,w:440,d:440,color:"#dde5ef",color2:"#d6dfeb",tile:8},{special:"floor",x:.1,y:.1,w:De-.4,d:He-.5,color:"#e9edf3",color2:"#dee5ee",tile:4.2,y0:.012},{special:"wall",axis:"x",x:-1,y:.05,len:De+2,h:4.3,color:"#e7eef7",holes:[[1.1,4.5,1.3,3.8],[7.4,4.5,1.3,3.8],[13.6,4.5,1.3,3.8],[19.2,3.5,1.3,3.8]],frame:"#c3cfdf"},{special:"wall",axis:"z",x:.05,y:0,len:He,h:3.4,color:"#e4ebf5",holes:[[2.4,3,1.1,2.9],[8,3,1.1,2.9],[14,3,1.1,2.9]],frame:"#c7d2e1"},W(0,.15,De-1,.1,.12,"#bbcbdc"),W(.15,0,.1,He-1,.12,"#bbcbdc")],s=[],r=[];for(let u of dt)for(let i of lt)jt({props:o,solid:s,stations:r},i,u);for(let u=r.length;u<t;u++){let i=u-r.length,h=lt[i%lt.length],a=dt[dt.length-1]+3.4;o.push(W(h-1.65,a-1.65,3.3,1,.92,"#f7faff")),o.push(W(h-1.7,a-1.7,3.4,1.1,.08,It.blue,.92)),o.push(T("computerScreen",h-.6,a-1.5,1,.35,{h:.62,y0:1,abs:!0})),o.push(T("chairDesk",h-.375,a-.4,.75,.8,{h:1,rot:180})),s.push([h-1.7,a-1.7,3.4,1.1]),r.push({x:h,y:a+.35,yaw:180,pose:"sit"})}o.push({special:"floor",x:1.2,y:1.1,w:5.6,d:3,color:"#dbe6f2",color2:"#dbe6f2",y0:.03},{special:"glass",x:6.85,y:1.1,w:.05,d:3,h:2.5,abs:!0},W(6.8,1.1,.12,3,.07,"#9cacbf",2.5),W(6.8,1.1,.1,.1,2.5,"#becddd"),W(6.8,4,.1,.1,2.5,"#becddd"),T("table",1.9,1.7,3.2,1.5,{h:.86,stretch:!0}),T("laptop",3.1,2.1,.7,.6,{y0:.88,abs:!0,rot:180}),T("computerScreen",4.2,4.42,.92,.3,{h:.56,y0:.88,abs:!0,rot:180}),T("computerKeyboard",4.15,4.15,.66,.2,{y0:.88,abs:!0}),T("computerMouse",4.85,4.15,.12,.17,{y0:.88,abs:!0}),T("chairModernCushion",2.6,3.5,.65,.7,{rot:180}),T("chairModernCushion",2.6,1,.65,.7),T("chairModernCushion",4,3.5,.65,.7,{rot:180}),T("chairModernCushion",4,1,.65,.7),T("pottedPlant",6.3,4.1,.6,.6,{h:1.5})),s.push([1.9,1.7,3.2,1.5],[6.8,1.1,.12,2.9]);for(let[u,i]of[[9.6,.9],[11.5,.9],[15.4,.9],[17.3,.9],[21.4,2]]){o.push(W(u,i,1.7,.95,2.6,"#e9eff6"));for(let h of[0,1.63])o.push(W(u+h,i,.07,.95,2.7,It.blue));for(let h of[.18,.72,1.26,1.8,2.34])o.push(W(u+.12,i+.92,1.46,.05,.35,"#455b78",h)),o.push({special:"glow",x:u+.22,y:i+.975,y0:h+.12,w:.12,d:.025,h:.035,color:"#52b9ff",intensity:1,abs:!0});s.push([u,i,1.7,.95])}return o.push(T("bookcaseOpen",.45,3.2,.5,2.6,{h:1.8}),T("books",.55,3.4,.35,2.2,{h:.3,y0:1,abs:!0}),T("kitchenCabinet",.45,8.2,1.5,3.6,{h:1,stretch:!0}),T("kitchenCoffeeMachine",.5,8.8,.6,.55,{h:.65,y0:1.01,abs:!0}),T("kitchenSink",.55,10.6,.9,.7,{h:.15,y0:1.01,abs:!0}),T("pottedPlant",.9,5.8,.55,.55,{h:1.4}),T("pottedPlant",.9,13.2,.6,.6,{h:1.5})),o.push(T("bookcaseOpen",21.3,6,.55,3,{h:1.9}),T("books",21.4,6.2,.4,2.6,{h:.32,y0:1.05,abs:!0}),T("bookcaseOpen",21.3,11.4,.55,3,{h:1.9}),T("books",21.4,11.6,.4,2.6,{h:.32,y0:1.05,abs:!0}),T("pottedPlant",21.2,16,.65,.65,{h:1.6}),T("pottedPlant",21.4,19.1,.6,.6,{h:1.4})),o.push(T("loungeSofa",8.2,19.2,3.8,1.3,{h:1.05}),T("tableCoffee",8.9,17.9,2,.8,{h:.5}),T("books",9.3,18.1,.5,.3,{h:.18,y0:.52,abs:!0}),T("pottedPlant",6.2,19.3,.7,.7,{h:1.5}),T("cardboardBoxClosed",12.6,19.6,.55,.5,{h:.45}),{special:"sign",x:4.2,y:.12,z:3.1,w:3,h:.64,text:n(e==="harness"?"scene.sign.harness":"scene.sign.codex"),bg:"#f0f5fc",fg:"#265a9d"},{special:"sign",x:17.4,y:.12,z:3.1,w:3.2,h:.65,text:n("scene.sign.agents"),bg:"#edf4fe",fg:"#3d6591"}),{W:De,D:He,viewH:4.3,background:"#dde5ef",sky:"#dcecff",spawn:{x:1,y:18.4},walk:[[0,0,De,He]],solid:s,stations:r,pois:[],props:o}}function Oe(t){t.traverse(e=>{if(e.geometry?.dispose(),e.material)for(let o of Array.isArray(e.material)?e.material:[e.material])o.dispose()})}var Ie=class extends Ct{constructor(e,{onSelect:o,reduced:s=!1,pins:r,pinFloor:u,count:i=4,live:h=!1,source:a="codex"}){super(e,{count:i,onSelect:o,reduced:s,live:h,scene:Kt(i,a)}),this.pins=r,this.pinFloor=typeof u=="function"?u:()=>70,this.selectCallback=o,this.routeGroup=null,this.routeId=null,this.eventRoutes=[],this.activityLog=new Map,this.screenDesk=null,this.screenMesh=null,this.screenRefs=null,this.screenReturnFocus=null,this.screenInert=[],this.playing=!1,this.raycaster=new St,this.onFrame=()=>this.updatePins(),this.offLang=pe(()=>this.paintScreens(!0)),this.canvas.addEventListener("pointerdown",y=>{this.downPoint={x:y.clientX,y:y.clientY}}),this.gl&&(this.gl.toneMappingExposure=1.15,this.gl.setClearColor("#dde5ef"),this.hemi.color.set("#f2f8ff"),this.hemi.groundColor.set("#a2b2ca"),this.sun.color.set("#ffffff"),this.sun.shadow.mapSize.set(2048,2048),this.sun.shadow.radius=4)}fitCamera3D(e){if(!this.camera||!this.controls||!this.sun)return;let o=this.cw<850,s=new _(o?10.6:11.5,.35,o?10.4:11.5);(e||!this.fitted)&&(this.camera.position.copy(s).add(new _(24,23.5,24)),this.controls.target.copy(s),this.camera.zoom=1,this.fitted=!0);let r=o?32:Math.max(31,36*this.ch/this.cw),u=r*this.cw/this.ch;Object.assign(this.camera,{left:-u/2,right:u/2,top:r/2,bottom:-r/2}),this.camera.lookAt(this.controls.target),this.camera.updateProjectionMatrix(),this.sun.position.set(3,22,5),this.sun.target.position.set(11.5,0,10.5);let i=22;Object.assign(this.sun.shadow.camera,{left:-i,right:i,top:i,bottom:-i,near:1,far:72}),this.sun.shadow.camera.updateProjectionMatrix()}build(){super.build(),this.floorMark("COORDINATION",11.5,3.35,5,.6),this.floorMark("AGENT WORKSPACE",4.5,8.7,4.4,.5),this.floorMark("COLLABORATION LANE",15.5,13.7,5.2,.55),this.floorMark("VERIFICATION",11.5,18.8,3.9,.5);let e=new We;for(let s=0;s<8;s++){let r=new Ce(new rt(.28,1.3),new xt({color:"#f6faff",roughness:.9}));r.rotation.x=-Math.PI/2,r.rotation.z=-.55,r.position.set(9.4+s*.45,.03,13.7),e.add(r)}this.room.add(e),this.screens=new Map,this.screenMeshes=[],this.screenList=[];let o=new Map;for(let s of this.sceneScreens||[]){if(s.kind!=="computerScreen")continue;let r=null,u=1/0;for(let i of this.plan.desks){let h=Math.hypot(s.x-i.seat.x,s.z-i.seat.y);h<u&&(u=h,r=i)}r&&u<2.2&&(s.mesh.userData.desk=r,this.screenMeshes.push(s.mesh),this.screenList.push({desk:r,mesh:s.mesh,record:s}),(!o.has(r)||u<o.get(r))&&(o.set(r,u),this.screens.set(r,s.mesh)))}this.routeId=null,this.makeRoute(this.selectedId||this.rootId),this.paintScreens(!0)}floorMark(e,o,s,r,u){let i=document.createElement("canvas");i.width=768,i.height=128;let h=i.getContext("2d");h.clearRect(0,0,768,128),h.fillStyle="#899eb9",h.font='600 38px "Segoe UI",sans-serif',h.textAlign="center",h.textBaseline="middle",h.fillText(e,384,64);let a=new vt(i);a.colorSpace=ft;let y=new Ce(new rt(r,u),new Ne({map:a,transparent:!0,depthWrite:!1}));y.rotation.x=-Math.PI/2,y.position.set(o,.036,s),this.room.add(y)}actorFor(e){let o=super.actorFor(e);return o?(o.demoScale||(o.obj.scale.multiplyScalar(1.65),o.head&&o.head.scale.multiplyScalar(.78),o.obj.userData.agentId=e.s.id,o.demoScale=!0),o):null}setTeam(e,o){this.rootId!==o&&(this.clearEventRoutes(),this.routeId=null),super.setTeam(e,o);for(let s of this.people.values())s.desk.pose="sit";this.selectedId&&!this.people.has(this.selectedId)&&(this.selectedId=o),this.makeRoute(this.selectedId||o),this.paintScreens()}bubble(){}screenPoint(e){let o=e.desk.seat;return new _(o.x+.1,1.3,o.y-1.15)}pathBetween(e,o){if(!e?.desk||!o?.desk||e===o)return null;let s=this.screenPoint(e),r=this.screenPoint(o),u=s.distanceTo(r),i=new _((s.x+r.x)/2,Math.max(s.y,r.y)+.75+Math.min(1.3,u*.1),(s.z+r.z)/2+.35);return new bt([s,i,r],!1,"centripetal",.5)}addRouteLine(e,o){for(let[r,u,i]of[[.18,"#42c8ff",.16],[.065,"#0870ff",.94]])e.add(new Ce(new at(o,100,r,6,!1),new Ne({color:u,transparent:!0,opacity:i,depthWrite:!1,depthTest:!1})));let s=new yt(new mt().setFromPoints(o.getPoints(70)),new Et({color:"#e9fbff",dashSize:.12,gapSize:.18,linewidth:2}));s.computeLineDistances(),e.add(s)}clearEventRoutes(){for(let e of this.eventRoutes||[])this.scene?.remove(e.group),Oe(e.group);this.eventRoutes=[]}makeRoute(e){let o=this.people?.get(e);if(!this.loaded||!this.room||!o)return;let s=this.people.get(o.s.parentId),r=[e,o.desk.seat.x,o.desk.seat.y,s?.s.id,s?.desk.seat.x,s?.desk.seat.y].join(":");if(this.routeId===e&&this.routeSignature===r)return;this.routeGroup&&(this.scene.remove(this.routeGroup),Oe(this.routeGroup)),this.routeId=e,this.routeSignature=r,this.routeGroup=new We,this.scene.add(this.routeGroup);let u=o.desk.seat;this.routeCurve=this.pathBetween(s,o),this.packet=null,this.routeCurve&&(this.addRouteLine(this.routeGroup,this.routeCurve),this.packet=null);for(let i of[-1,1])for(let h of[-1,1]){let a=u.x+i*1.95,y=u.y-.4+h*1.4;for(let c of[[new _(a,.05,y),new _(a-i*.6,.05,y)],[new _(a,.05,y),new _(a,.05,y-h*.5)],[new _(a,.05,y),new _(a,.7,y)]]){let v=new kt(c[0],c[1]);this.routeGroup.add(new Ce(new at(v,1,.035,6,!1),new Ne({color:"#08a0ff"})))}}}select(e,o=!1){if(this.selectedId=e,this.makeRoute(e),o&&this.cw<850){let s=this.people.get(e);if(s&&this.camera){let r=new _(s.x,.3,s.y);this.camera.position.add(r.clone().sub(this.controls.target)),this.controls.target.copy(r)}}}updatePins(){if(!this.pins||!this.camera||!this.loaded)return;let e=Math.max(70,this.pinFloor()||0),o=[];for(let r of this.pins.children){let u=this.people.get(r.dataset.agent);if(!u)continue;let i=new _(u.x,2.2,u.y-.4).project(this.camera),h=(i.x+1)*.5*this.cw,a=(1-i.y)*.5*this.ch,y=r.offsetWidth||110,c=r.offsetHeight||40,v=Math.max(a,e+c);o.push({pin:r,x:h,y:a,w:y,h:c,top:v-c,bottom:v,hidden:i.z>1||h<-40||h>this.cw+40||a<e-56||a>this.ch-70})}o.sort((r,u)=>r.top-u.top||r.x-u.x);let s=[];for(let r of o)if(!r.hidden){for(let u=0;u<6;u+=1){let i=s.find(a=>r.x+r.w/2>a.left-8&&r.x-r.w/2<a.right+8&&r.top<a.bottom+6&&r.bottom>a.top-6);if(!i)break;let h=i.bottom+8-r.top;r.top+=h,r.bottom+=h}s.push({left:r.x-r.w/2,right:r.x+r.w/2,top:r.top,bottom:r.bottom})}for(let r of o)r.pin.style.left=r.x+"px",r.pin.style.top=r.bottom+"px",r.pin.hidden=r.hidden}animateEvent(e){if(this.remember(e),e.type==="report"&&super.animateEvent(e),this.flows=[],this.reduced||!this.loaded||!["assign","message","report"].includes(e.type))return;let o=this.people.get(e.sessionId),s=this.people.get(e.type==="report"?o?.s.parentId:e.targetId),r=this.pathBetween(o,s);if(!r)return;let u=new We;this.addRouteLine(u,r);let i=performance.now(),h=[];for(let a=0;a<3;a++){let y=new Ce(new wt(.105,12,8),new Ne({color:a?"#bfefff":"#ffffff",transparent:!0,opacity:.95,depthWrite:!1,depthTest:!1}));y.visible=!1,u.add(y),h.push(y)}this.scene.add(u);for(let a of[o,s])if(a?.desk)for(let y of this.screenList||[])y.desk===a.desk&&(y.mesh.userData.flashUntil=i+900);for(this.eventRoutes.push({group:u,curve:r,packets:h,start:i});this.eventRoutes.length>12;){let a=this.eventRoutes.shift();this.scene.remove(a.group),Oe(a.group)}}setReduced(e){super.setReduced(e),e&&this.clearEventRoutes()}step(e){this.playing&&super.step(e)}syncActors(e){this.hemi&&(this.hemi.intensity=1.6),this.sun&&(this.sun.intensity=2),super.syncActors(this.playing?e:0)}pointer(e,o){if(this.screenModal)return;if(!o){if(e.buttons||!this.camera||!this.loaded)return;let y=this.canvas.getBoundingClientRect();this.raycaster.setFromCamera(new it((e.clientX-y.left)/y.width*2-1,1-(e.clientY-y.top)/y.height*2),this.camera),this.canvas.style.cursor=this.raycaster.intersectObjects(this.screenMeshes||[],!1).length?"pointer":"";return}if(!this.camera||!this.loaded||this.downPoint&&Math.hypot(e.clientX-this.downPoint.x,e.clientY-this.downPoint.y)>6)return;let s=this.canvas.getBoundingClientRect();this.raycaster.setFromCamera(new it((e.clientX-s.left)/s.width*2-1,1-(e.clientY-s.top)/s.height*2),this.camera);let r=this.raycaster.intersectObjects([...this.actors.values()].map(y=>y.obj),!0),i=this.raycaster.intersectObjects(this.screenMeshes||[],!1)[0];if(i&&(!r[0]||i.distance<r[0].distance)){let y=i.object.userData.desk;if(y){this.openScreen(y,i.object);return}}for(let y of r){let c=y.object;for(;c&&!c.userData.agentId;)c=c.parent;if(c?.userData.agentId){this.selectCallback(c.userData.agentId);return}}let h=new gt(new _(0,1,0),0),a=new _;if(this.raycaster.ray.intersectPlane(h,a))for(let y of this.people.values()){let c=y.desk.seat;if(Math.abs(a.x-c.x)<2.1&&Math.abs(a.z-c.y+.5)<1.8){this.selectCallback(y.s.id);return}}}screenStatus(e){let o={working:"#5ee0a0",tool:"#5ee0a0",typing:"#5ee0a0",thinking:"#f0c35e",done:"#5ee0a0",waiting:"#f0c35e",waiting_agents:"#f0c35e",error:"#ff7a6b",interrupted:"#f0a35e",closed:"#8fa6c6",idle:"#8fa6c6",unknown:"#8fa6c6"},s="scene.screen."+e;return[ct(s)?n(s):String(e||n("scene.screen.unknown")),o[e]||"#8fa6c6"]}remember(e){let o=e.sessionId||e.targetId;if(!o)return;let s="scene.activity."+e.type,r=ct(s)?n(s):n("scene.activity.event"),u=this.activityLog.get(o)||[],i=Number(e.at),h=new Date(Number.isFinite(i)&&i>0?i:Date.now()).toLocaleTimeString(J(),{hour12:!1});u.unshift({time:h,label:r,text:e.preview||e.title||""}),this.activityLog.set(o,u.slice(0,6))}screenInfo(e){if(!e)return{empty:!0};let o=e.s,[s,r]=this.screenStatus(o.status);return{name:o.name,code:o.code,statusText:s,statusColor:r,task:o.task||o.title||n("scene.screen.waitingTask"),context:o.file&&o.file!==n("common.notRecorded")?o.file:"",log:this.activityLog.get(o.id)||[],updated:new Date().toLocaleTimeString(J(),{hour12:!1})}}paintScreens(e=!1){for(let o of this.screenList||[]){let s=[...this.people.values()].find(a=>a.desk===o.desk)||null,r=this.screenInfo(s),u=s?[s.s.id,s.s.status,s.s.task,s.s.file,r.log[0]?.time||""].join("|"):"empty";if(!e&&o.sig===u)continue;o.sig=u;let i=this.screenCanvas(o.record.seed,512,r);o.record.canvas=i;let h=o.mesh.userData.screenTexture;h&&(h.image=i,h.needsUpdate=!0)}this.screenModal&&this.updateScreenModal()}screenText(e,o){if(!o)return[n("scene.screen.unassigned"),"",n("scene.screen.waitingSeat")].join(`
2
+ `);let[s]=this.screenStatus(o.s.status),r=[o.s.name+" \xB7 "+(o.s.role||n("common.agent")),n("scene.screen.statusLine",{status:s}),n("scene.screen.taskLine",{task:e.task||n("scene.screen.waitingTask")}),e.context?n("scene.screen.contextLine",{value:e.context}):n("scene.screen.contextNone"),"",n("scene.screen.recent")];if(e.log.length)for(let u of e.log)r.push(u.time+" "+u.label+" "+u.text);else r.push(n("scene.screen.noEvents"));return r.join(`
3
+ `)}updateScreenModal(){let e=this.screenRefs;if(!e||!this.screenDesk)return;let o=[...this.people.values()].find(h=>h.desk===this.screenDesk)||null,s=this.screenInfo(o),[r,u]=this.screenStatus(o?.s.status);e.name.textContent=o?.s.name||n("scene.screen.idleSeat"),e.sub.textContent=o?[o.s.role||n("common.agent"),r].filter(Boolean).join(" \xB7 "):n("scene.screen.noAgentSeated"),e.dot.style.background=u,e.dot.style.boxShadow="0 0 10px "+u,e.card.dataset.status=o?.s.status||"empty";let i=Number(this.screenMesh?.userData?.screenSeed)||0;e.body.replaceChildren(this.screenCanvas(i,1280,s)),e.live.textContent=this.screenText(s,o),e.meta.textContent=o?[o.s.code||"AGENT",s.context?n("scene.screen.contextLine",{value:s.context}):n("scene.screen.contextNone")].join(" \xB7 "):n("scene.screen.unassigned"),e.task.textContent=o?s.task:n("scene.screen.waitingSeat"),e.task.title=e.task.textContent,e.hint.textContent=n("scene.screen.escHint"),e.close.setAttribute("aria-label",n("scene.screen.closeAria"))}openScreenFor(e){let o=this.people.get(e);if(!o?.desk)return!1;let s=(this.screenList||[]).find(r=>r.desk===o.desk);return s?(this.openScreen(o.desk,s.mesh),!0):!1}openScreen(e,o){this.screenModal&&this.closeScreen(),this.screenDesk=e,this.screenMesh=o||(this.screenList||[]).find(k=>k.desk===e)?.mesh||null,this.screenReturnFocus=document.activeElement;let s=document.createElement("div");s.className="screen-modal";let r=document.createElement("div");r.className="screen-modal-card",r.setAttribute("role","dialog"),r.setAttribute("aria-modal","true");let u="screen-modal-title-"+Math.random().toString(36).slice(2,8);r.setAttribute("aria-labelledby",u);let i=document.createElement("header"),h=document.createElement("span");h.className="screen-modal-dot";let a=document.createElement("div");a.className="screen-modal-title";let y=document.createElement("strong");y.id=u;let c=document.createElement("small");a.append(y,c);let v=document.createElement("button");v.type="button",v.className="screen-modal-close",v.setAttribute("aria-label",n("scene.screen.closeAria")),v.textContent="\xD7",i.append(h,a,v);let C=document.createElement("div");C.className="screen-modal-body";let I=document.createElement("pre");I.className="screen-modal-live";let L=document.createElement("footer"),M=document.createElement("span");M.className="screen-modal-meta";let D=document.createElement("span");D.className="screen-modal-task";let f=document.createElement("span");f.className="screen-modal-hint",f.textContent=n("scene.screen.escHint"),L.append(M,D,f),r.append(i,C,I,L),s.appendChild(r),this.screenRefs={overlay:s,card:r,name:y,sub:c,dot:h,body:C,live:I,meta:M,task:D,hint:f,close:v},s.addEventListener("click",k=>{k.target===s&&this.closeScreen()}),v.addEventListener("click",()=>this.closeScreen()),s.addEventListener("keydown",k=>{k.key==="Escape"?(k.preventDefault(),this.closeScreen()):k.key==="Tab"?(k.preventDefault(),v.focus()):k.key==="/"&&k.preventDefault()}),this.screenEsc=k=>{k.key==="Escape"&&this.screenModal&&this.closeScreen()},window.addEventListener("keydown",this.screenEsc),this.screenInert=[...document.body.children].filter(k=>k!==s&&!["SCRIPT","STYLE","LINK"].includes(k.tagName));for(let k of this.screenInert)k.dataset.screenInert=k.inert?"1":"0",k.inert=!0;document.body.appendChild(s),this.screenModal=s,this.updateScreenModal(),v.focus()}closeScreen(){this.screenEsc&&window.removeEventListener("keydown",this.screenEsc),this.screenEsc=null,this.screenModal&&(this.screenModal.remove(),this.screenModal=null);for(let o of this.screenInert||[])o.inert=o.dataset.screenInert==="1",delete o.dataset.screenInert;this.screenInert=[],this.screenRefs=null,this.screenDesk=null,this.screenMesh=null;let e=this.screenReturnFocus;if(this.screenReturnFocus=null,e&&e.isConnected)try{e.focus({preventScroll:!0})}catch{}}draw(){let e=performance.now();for(let s of this.eventRoutes||[]){let r=e-s.start;for(let u=0;u<s.packets.length;u++){let i=s.packets[u],h=(r-120-u*240)/1500;if(h<0||h>1){i.visible=!1;continue}i.visible=!0,i.position.copy(s.curve.getPoint(h)),i.scale.setScalar(1-.3*Math.max(0,h-.72)/.28)}r>=2200&&(this.scene.remove(s.group),Oe(s.group))}this.eventRoutes&&(this.eventRoutes=this.eventRoutes.filter(s=>e-s.start<2200));let o=super.draw();if(this.packet&&this.routeCurve){let s=this.reduced||!this.playing?.58:performance.now()%4500/4500;this.packet.position.copy(this.routeCurve.getPoint(s)),this.packet.position.y+=.09}return o}destroy(){this.offLang?.(),this.closeScreen(),this.clearEventRoutes(),this.routeGroup&&Oe(this.routeGroup),super.destroy()}};var le=48,At=["search","review"],Bt={search:"TASK-07843",review:"TASK-07844"},Fe=(t,e)=>[0,1,2,3].map(o=>n("demo.scenario."+t+"."+e+"."+o));function Ut(t){let e=At.includes(t)?t:"search",o={title:n("demo.scenario."+e+".title"),project:n("demo.scenario."+e+".project"),code:Bt[e],titles:Fe(e,"titles"),tasks:Fe(e,"tasks"),files:Fe(e,"files"),reports:Fe(e,"reports")};return e==="review"&&(o.roles=Fe(e,"roles")),o}var ht=(t,e,o)=>Math.max(e,Math.min(o,t)),be=["main","api","frontend","test"],Ae=[0,3,5,7],ut=[48,23,31,37],qt=["diagram-3-fill","cpu-fill","file-earmark-code-fill","shield-check"];function Gt(t=16,e="search"){let o=ht(Number(t)||0,0,le),s=Ut(e),r=be.map(c=>n("demo.name."+c)),u=be.map(c=>n("demo.role."+c)),i=be.map(c=>n("demo.zone."+c)),h=o<7?0:o<25?1:o<37?2:3,a=be.map((c,v)=>{let C=Math.round(v===0?o/le*100:ht((o-Ae[v])/(ut[v]-Ae[v]),0,1)*100),I=o>=ut[v];return{id:c,key:c,parentId:v?"main":null,rootId:"main",agent:"codex",subagent:v>0,name:r[v],title:s.titles[v],role:(s.roles||u)[v],zone:i[v],icon:qt[v],task:s.tasks[v],file:s.files[v],code:s.code.slice(0,-1)+(Number(s.code.slice(-1))+v),progress:C,status:I?"done":o<Ae[v]?"unknown":v===0&&o>=7&&o<37?"waiting_agents":"tool",startedAt:Ae[v]*1e3,report:I?s.reports[v]:null,reportPreview:I?n("demo.preview.ready"):v?C<25?n("demo.preview.analyzing"):C<75?n("demo.preview.running"):n("demo.preview.compiling"):n("demo.preview.coordinating")}}),y=[...be.slice(1).map((c,v)=>({id:"assign-"+c,sessionId:"main",targetId:c,type:"assign",at:Ae[v+1],preview:s.tasks[v+1]})),...be.slice(1).map((c,v)=>({id:"report-"+c,sessionId:c,targetId:"main",type:"report",at:ut[v+1],preview:s.reports[v+1]})),{id:"final-main",sessionId:"main",type:"report",at:48,preview:s.reports[0]}].filter(c=>c.at<=o).sort((c,v)=>c.at-v.at);return{mode:"demo",rootId:"main",scenario:e,config:s,seconds:o,stage:h,agents:a,events:y,assigned:a.slice(1).filter(c=>o>=Ae[be.indexOf(c.id)]).length,received:a.slice(1).filter(c=>c.status==="done").length,active:a.filter(c=>c.status!=="done"&&c.status!=="unknown").length,progress:Math.round(o/le*100),complete:o>=le}}var Je=class extends EventTarget{constructor(){super(),this.seconds=16,this.playing=!1,this.scenario="search"}get snapshot(){return Gt(this.seconds,this.scenario)}changed(){this.dispatchEvent(new Event("change"))}play(){this.seconds>=le&&(this.seconds=0),this.playing=!this.playing,this.changed()}restart(){this.seconds=0,this.playing=!0,this.changed()}setScenario(e){At.includes(e)&&(this.scenario=e,this.seconds=16,this.playing=!1,this.changed())}advance(e){!this.playing||!Number.isFinite(e)||e<=0||(this.seconds=ht(this.seconds+e,0,le),this.seconds===le&&(this.playing=!1),this.changed())}};var zt=new Set(["thinking","tool","typing","waiting","waiting_agents"]),pt=new Set(["done","error","interrupted","closed"]);function je(t,e=68){let o=typeof t=="string"?t.replace(/\s+/g," ").trim():"";return o.length>e?o.slice(0,e)+"\u2026":o}function Vt(t){return typeof t=="string"?t.replace(/[\\/]+$/,"").split(/[\\/]/).pop():""}function Tt(t,e){return t?e+"-"+String(t).slice(-8):e}function Wt(t,e,o){if(e)return n("live.reportReady");if(t.reportEventId)return o?n("live.reportHistorical"):n("live.reportPending");switch(t.status){case"done":return n("live.endedNoReport");case"error":return n("live.errored");case"interrupted":return n("live.interrupted");case"closed":return n("live.agentClosed");case"waiting":return je(t.activity)||n("live.waitingUser");case"waiting_agents":return n("live.awaitingSubagents");case"typing":return n("live.typingMessage");case"tool":return je(t.activity)||n("live.runningTool");case"thinking":return n("live.thinking");case"idle":return n("live.idle");default:return n("live.awaitingLog")}}function _t(t,e){if(e)return"diagram-3-fill";let o=[t.role,t.task].filter(Boolean).join(" ");return/测试|检查|审查|review|test/i.test(o)?"shield-check":/前端|界面|frontend|\bUI\b/i.test(o)?"file-earmark-code-fill":"cpu-fill"}function Jt(t,e,o){if(!Number.isFinite(e?.turnStartedAt)||!pt.has(t.status))return!1;let s=[t.lastEventAt,t.endedAt].filter(Number.isFinite);return!s.length||Math.max(...s)>=e.turnStartedAt?!1:!o.concat(Array.isArray(t.events)?t.events:[]).some(u=>u.targetId===t.id&&(u.type==="assign"||u.type==="message")&&u.at>=e.turnStartedAt)}function Xt(t,e,o){if(!t.reportEventId)return!1;let s=o.concat(Array.isArray(t.events)?t.events:[]),r=s.find(a=>a.id===t.reportEventId&&a.type==="report"),u=s.filter(a=>t.id!==e?.id&&a.targetId===t.id&&(a.type==="assign"||a.type==="message")&&Number.isFinite(a.at)),i=[e?.turnStartedAt,t.turnStartedAt,...u.map(a=>a.at)].filter(Number.isFinite),h=Number.isFinite(r?.at)?r.at:Number.isFinite(t.endedAt)?t.endedAt:t.lastEventAt;return!Number.isFinite(h)||!i.length||h>=Math.max(...i)}var Xe=class{constructor(){this.rootId=null,this.slots=new Map,this.nextSlot=1}update(e={},o=Date.now()){let s=e.rootId||null;s!==this.rootId&&(this.rootId=s,this.slots.clear(),this.nextSlot=1),s&&this.slots.set(s,0);let r=Array.isArray(e.roots)?e.roots:[],u=Array.isArray(e.agents)?e.agents:[],i=Array.isArray(e.events)?e.events:[],h=u.find(f=>f.id===s),a=r.find(f=>f.id===s),y=u.map(f=>{let k=f.id===s;this.slots.has(f.id)||this.slots.set(f.id,this.nextSlot++);let H=this.slots.get(f.id),F=f.name||(k?n("live.leadName"):n("live.subName",{id:String(f.id).slice(-8)})),q=!k&&Jt(f,h,i),G=Xt(f,h,i);return{...f,agent:f.agent||(e.source==="harness"?"dsh":"codex"),source:f,slot:H,historical:q,name:F,title:je(f.task||k&&a?.title||f.role||F),role:f.role||(k?n("app.roleLead"):n("app.roleSubAgent")),zone:k?n("live.zoneLead"):n("live.zoneSlot",{slot:H}),icon:_t(f,k),file:je(f.activity||f.model)||n("common.notRecorded"),code:Tt(f.id,"AGENT"),progress:f.status==="done"?100:null,report:null,hasReport:G,currentHasReport:G,reportPreview:Wt(f,G,q)}}).sort((f,k)=>f.slot-k.slot),c=y.filter(f=>f.id!==s&&f.parentId&&!f.historical),v=c.filter(f=>f.hasReport).length,C=h?.status==="done",I=c.length?1:0;v&&(I=2),(C||y.find(f=>f.id===s)?.hasReport||h?.status==="typing"&&c.length>0&&c.every(f=>pt.has(f.status)))&&(I=3);let L=Number.isFinite(h?.turnStartedAt),M=o;pt.has(h?.status)&&(M=Number.isFinite(h.endedAt)?h.endedAt:Number.isFinite(h.lastEventAt)?h.lastEventAt:o);let D=L?Math.max(0,Math.floor((M-h.turnStartedAt)/1e3)):0;return{...e,mode:"live",rootId:s,scenario:s,config:{title:je(h?.task||a?.title||h?.name)||(e.source==="harness"?n("live.harnessSession"):n("live.codexSession")),project:Vt(h?.cwd||a?.cwd)||(e.source==="harness"?n("live.harnessName"):n("live.codexName")),code:Tt(s,"SESSION")},seconds:D,elapsedKnown:L,stage:I,agents:y,events:i,roots:r,warnings:Array.isArray(e.warnings)?e.warnings:[],assigned:c.length,received:v,active:y.filter(f=>zt.has(f.status)).length,progress:C?100:null,complete:C}}};function ke(t=""){let e=new URL(".",globalThis.document?.baseURI||location.href);return new URL(t.replace(/^\/+/,""),e).href}function Ke(){return new URLSearchParams(location.search).get("source")==="harness"?"harness":"codex"}function Be(t=!1,e=Ke()){let o=new URL(ke("demo.html"));return t&&o.searchParams.set("mode","live"),e==="harness"&&o.searchParams.set("source","harness"),o.href}function $e(t,e=!1){if(t!=="harness")return;document.title=n(e?"meta.harnessLive":"meta.harnessDemo");let o=document.querySelector(".brand");o.href=Be(e,t),o.querySelector(":scope > span:last-child").replaceChildren("DSH",Object.assign(document.createElement("span"),{className:"brand-light",textContent:"Office"})),document.querySelector(".profile-avatar img").src=ke("assets/agents/dsh.svg"),document.getElementById("dialog-mode").textContent="DSH OFFICE / "+(e?"LIVE":"DEMO")}function we(t){if(typeof t!="string"||!t.trim())return"";let e=t.trim().replace(/\\/g,"/").replace(/\/+$/,"")||"/";return/^[a-z]:\//i.test(e)||/^[a-z]:$/i.test(e)||e.startsWith("//")?e.toLowerCase():e}function Ye(t=[]){let e=new Map;for(let o of t){let s=we(o.cwd);e.has(s)||e.set(s,{key:s,path:o.cwd?.trim()||n("common.noDirectory"),count:0}),e.get(s).count++}return[...e.values()]}function Ue(t=[],e){return t.filter(o=>we(o.cwd)===e)}function qe(t){let e=typeof t.title=="string"?t.title.replace(/\s+/g," ").trim():"",o=Number.isFinite(t.createdAt)?t.createdAt:t.at,s=Number.isFinite(o)?new Date(o):null,r=s&&!Number.isNaN(s.getTime())?s.toLocaleString(J(),{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}):n("common.timeNotRecorded");return[e?e.slice(0,46)+(e.length>46?"\u2026":""):n("common.unnamedSession"),r,String(t.id).slice(-8)].join(" \xB7 ")}var Qe=class extends EventTarget{constructor(e){super(),this.adapter=new Xe,this.kind=Ke(),this.storageKey=this.kind==="harness"?"office.harness.live.root":"office.live.root",this.directoryKey=this.kind==="harness"?localStorage.getItem("office.harness.live.directory")??null:null,this.explicitRootId=e||null,this.embed=new URLSearchParams(location.search).get("embed")==="1",this.raw={source:this.kind},this.rootId=e||localStorage.getItem(this.storageKey)||"",this.follow=!e,this.connection="connecting",this.error="",this.generation=0,this.baseline=!0,this.knownRoots=new Set,this.records=new Map}get snapshot(){return this.adapter.update(this.raw)}changed(e=!1){this.dispatchEvent(new CustomEvent("change",{detail:{baseline:e}}))}async connect(e=this.rootId){let o=++this.generation;this.rootId=e||"",this.source?.close(),this.abort?.abort(),this.abort=new AbortController,this.baseline=!0,this.connection="connecting",this.error="",this.changed(!0);try{let s=await fetch(ke("api/sessions?"+new URLSearchParams(e?{rootId:e}:{})),{signal:this.abort.signal});s.status===404&&e&&(this.embed||!new URLSearchParams(location.search).get("rootId"))&&(this.explicitRootId=null,this.follow=!1,s=await fetch(ke("api/sessions"),{signal:this.abort.signal}));let r=await s.json();if(!s.ok)throw new Error(r.error||n("source.sessionReadFail"));if(o!==this.generation||(this.accept(r),o!==this.generation))return;let u=new URLSearchParams(this.rootId?{rootId:this.rootId}:{}),i=this.source=new EventSource(ke("events?"+u));i.onopen=()=>{o===this.generation&&(this.baseline=!0,this.connection="connected",this.error="",this.changed(!0))},i.onmessage=h=>{if(o===this.generation)try{this.accept(JSON.parse(h.data))}catch(a){this.error=n("source.eventReadFail",{message:a.message}),this.changed(!0)}},i.onerror=()=>{o===this.generation&&(this.baseline=!0,this.connection="reconnecting",this.error=n("source.disconnected"),this.changed(!0))}}catch(s){if(o!==this.generation||s.name==="AbortError")return;this.connection="error",this.error=s.message,this.changed(!0)}}accept(e){if(e.mode&&e.mode!=="live")throw new Error(n("source.demoData"));e.source==="harness"&&this.kind!=="harness"&&(this.kind="harness",this.storageKey="office.harness.live.root",this.directoryKey=localStorage.getItem("office.harness.live.directory")??null);let o=e.roots||[],s=o;if(this.kind==="harness"&&o.length){let h=o.find(y=>y.id===e.rootId),a=Ye(o);if((this.explicitRootId===h?.id||!a.some(y=>y.key===this.directoryKey))&&(this.directoryKey=we((h||o[0]).cwd)),this.explicitRootId=null,localStorage.setItem("office.harness.live.directory",this.directoryKey),s=Ue(o,this.directoryKey),!s.some(y=>y.id===e.rootId)){this.raw={...this.raw,roots:o},this.select(s[0].id,!0);return}}let r=s[0],u=this.knownRoots.size&&r&&!this.knownRoots.has(r.id);for(let h of e.roots||[])this.knownRoots.add(h.id);if(this.follow&&u&&r.id!==e.rootId){this.raw={...this.raw,roots:o},this.select(r.id,!0);return}let i=this.baseline||e.rootId!==this.raw.rootId||e.agents?.some(h=>h.loading);this.raw={...e,source:this.kind},this.rootId=e.rootId||"",this.rootId&&localStorage.setItem(this.storageKey,this.rootId),this.changed(i),this.baseline=!!e.agents?.some(h=>h.loading)}select(e,o=!1){if(this.kind==="harness"){let r=this.raw.roots?.find(u=>u.id===e);if(!r||this.directoryKey!==null&&we(r.cwd)!==this.directoryKey)return Promise.resolve(!1);this.directoryKey=we(r.cwd),localStorage.setItem("office.harness.live.directory",this.directoryKey)}this.explicitRootId=null,o||(this.follow=!1),this.raw={source:this.kind,rootId:e,roots:this.raw.roots||[],agents:[],events:[]},this.records.clear();let s=new URL(location.href);return s.searchParams.set("rootId",e),history.replaceState(null,"",s),this.connect(e)}async openSession(e){let o=this.raw.roots?.find(s=>s.id===e);if(!o)return!1;this.kind==="harness"&&(this.directoryKey=we(o.cwd),localStorage.setItem("office.harness.live.directory",this.directoryKey)),this.explicitRootId=null,this.follow=!1;try{return await this.select(e)!==!1}catch{return!1}}selectDirectory(e){let o=Ue(this.raw.roots,e);if(!o.length)return Promise.resolve(!1);this.directoryKey=e,localStorage.setItem("office.harness.live.directory",e);let s=o.find(r=>r.id===this.rootId)||o[0];return this.select(s.id,!0)}async record(e,o){let s=e+":"+o;if(this.records.has(s))return this.records.get(s);let r=await fetch(ke("api/report?"+new URLSearchParams({sessionId:e,eventId:o}))),u=await r.json();if(!r.ok)throw new Error(u.error||n("source.recordReadFail"));return this.records.set(s,u.text),u.text}destroy(){this.generation++,this.abort?.abort(),this.source?.close()}};var fe=null,$t=0,X=(t,e,o)=>{let s=document.createElement(t);return e&&(s.className=e),o!=null&&(s.textContent=o),s},Ze=(t,e)=>{let o=X("img",e);return o.src="./demo-icons/"+t+".svg",o.alt="",o},Pt=t=>t.trim().toLowerCase().replace(/\\/g,"/");function Te(){fe?.close()}function me(t,{filterable:e=!0}={}){t.id||(t.id="office-select-"+ ++$t);let o=X("div","office-select"),s=X("button","select-trigger");s.type="button",s.id=t.id+"-trigger";let r=[...t.labels];for(let b of r)b.htmlFor=s.id;let u=X("span","select-value");s.append(u,Ze("chevron-down","select-chevron")),o.append(s),t.after(o),t.hidden=!0;let i=X("div","select-popover");i.id=t.id+"-popover",i.setAttribute("popover","manual"),i.hidden=!0,(t.closest("dialog")||document.body).append(i);let h=X("form","select-filter"),a=X("input","select-filter-input");a.type="text",a.autocomplete="off",a.spellcheck=!1;let y=X("button","select-filter-clear");y.type="button",y.setAttribute("aria-label",n("controls.clearFilter")),y.append(Ze("x-lg")),h.append(Ze("search"),a,y);let c=X("div","select-options");c.id=t.id+"-options",c.role="listbox";let v=X("p","select-empty",n("controls.noMatch"));v.role="status",e?i.append(h,c,v):i.append(c,v),s.setAttribute("aria-haspopup","listbox"),s.setAttribute("aria-controls",c.id),e&&(a.setAttribute("role","combobox"),a.setAttribute("aria-autocomplete","list"),a.setAttribute("aria-controls",c.id));let C=new AbortController,I=C.signal,L=[],M=[],D=null,f=!1,k=!1,H="",F="";function q(){if(!f)return;let b=s.getBoundingClientRect(),S=window.visualViewport;if(!b.width||!b.height){O();return}let N=(S?.offsetLeft||0)+12,j=(S?.offsetTop||0)+12,E=N+(S?.width||innerWidth)-24,U=j+(S?.height||innerHeight)-24,ne=Number(t.dataset.popoverMinWidth)||360,V=Math.min(Math.max(b.width,ne),E-N),Q=U-b.bottom-8,Z=b.top-j-8,ge=Q<260&&Z>Q;i.style.width=V+"px",i.style.maxHeight=Math.max(0,Math.min(380,ge?Z:Q))+"px",i.style.left=Math.max(N,Math.min(b.left,E-V))+"px",i.style.top=(ge?b.top-8-i.getBoundingClientRect().height:b.bottom+8)+"px"}function G(b,S=!1){D=b?.value??null;let N;for(let j of c.children){let E=D!==null&&j.dataset.value===D;j.dataset.active=String(E),E&&(N=j)}N?a.setAttribute("aria-activedescendant",N.id):a.removeAttribute("aria-activedescendant"),S&&N?.scrollIntoView({block:"nearest"})}function z(){let b=Pt(a.value),S=b!==H,N=S?0:c.scrollTop;H=b,M=L.filter(E=>Pt(E.search).includes(b));let j=JSON.stringify([b,J(),t.value,M.map(E=>[E.index,E.value,E.label,E.description,E.disabled])]);j!==F&&(F=j,c.replaceChildren(...M.map(E=>{let U=X("div","select-option");U.role="option",U.id=t.id+"-option-"+E.index,U.dataset.value=E.value,U.setAttribute("aria-selected",String(E.value===t.value)),U.setAttribute("aria-disabled",String(E.disabled));let ne=X("span","select-option-copy");ne.append(X("strong","",E.label)),E.description&&ne.append(X("small","",E.description));let V=Ze("check-lg","select-check");return V.hidden=E.value!==t.value,U.append(ne,V),U.addEventListener("pointermove",()=>{E.disabled||G(E)}),U.addEventListener("pointerdown",Q=>Q.preventDefault()),U.addEventListener("click",()=>$(E)),U}))),v.hidden=M.length>0,y.setAttribute("aria-hidden",String(!a.value)),y.tabIndex=a.value?0:-1,G(M.find(E=>E.value===D&&!E.disabled)||M.find(E=>E.value===t.value&&!E.disabled)||M.find(E=>!E.disabled)),c.scrollTop=N,S&&G(M.find(E=>E.value===D),!0),q()}function O(b=!1){f&&(f=!1,i.showPopover&&i.matches(":popover-open")&&i.hidePopover(),i.hidden=!0,a.value="",k=!1,s.setAttribute("aria-expanded","false"),a.setAttribute("aria-expanded","false"),a.removeAttribute("aria-activedescendant"),fe===se&&(fe=null),b&&s.isConnected&&s.focus())}function de(){t.disabled||f||(Te(),fe=se,f=!0,D=t.value,i.hidden=!1,i.showPopover&&i.showPopover(),s.setAttribute("aria-expanded","true"),e&&a.setAttribute("aria-expanded","true"),z(),e?a.focus():s.focus(),G(M.find(b=>b.value===D),!0))}function $(b){if(!b||b.disabled||k)return;let S=t.value!==b.value;t.value=b.value,O(!0),Y(),S&&t.dispatchEvent(new Event("change",{bubbles:!0}))}function Y(){let b=t.getAttribute("aria-label")||n("controls.selectOption");e&&(a.setAttribute("aria-label",n("controls.filterPrefix",{label:b.replace(/^(选择|Select)\s*/,"")})),a.placeholder=n("controls.filterPlaceholder")),c.setAttribute("aria-label",n("controls.optionsAria",{label:b})),L=[...t.options].map((S,N)=>({value:S.value,label:S.dataset.label||S.textContent,description:S.dataset.description||"",search:S.dataset.search||S.textContent,disabled:S.disabled,index:N})),u.textContent=t.selectedOptions[0]?.dataset.label||t.selectedOptions[0]?.textContent||n("controls.choose"),s.setAttribute("aria-label",[b,u.textContent,t.selectedOptions[0]?.dataset.description].filter(Boolean).join(n("common.listSeparator"))),s.title=t.title||t.selectedOptions[0]?.textContent||"",s.disabled=t.disabled,t.disabled&&O(),f&&z()}let se={refresh:Y,close:O,destroy(){O(),C.abort(),i.remove(),o.remove(),t.hidden=!1;for(let b of r)b.htmlFor=t.id}};s.setAttribute("aria-expanded","false"),a.setAttribute("aria-expanded","false"),s.addEventListener("click",()=>f?O(!0):de(),{signal:I}),s.addEventListener("keydown",b=>{if(!f){(b.key==="ArrowDown"||b.key==="ArrowUp")&&(b.preventDefault(),de());return}if(e)return;let S=M.filter(N=>!N.disabled);if(S.length)if(["ArrowDown","ArrowUp","Home","End"].includes(b.key)){b.preventDefault();let N=S.findIndex(E=>E.value===D),j=b.key==="Home"?0:b.key==="End"?S.length-1:(N+(b.key==="ArrowDown"?1:-1)+S.length)%S.length;G(S[j],!0)}else b.key==="Enter"?(b.preventDefault(),$(S.find(N=>N.value===D))):b.key==="Escape"&&(b.preventDefault(),O(!0))},{signal:I}),a.addEventListener("compositionstart",()=>{k=!0},{signal:I}),a.addEventListener("compositionend",()=>{k=!1,z()},{signal:I}),a.addEventListener("input",z,{signal:I}),h.addEventListener("submit",b=>{b.preventDefault(),k||$(M.find(S=>S.value===D))},{signal:I}),y.addEventListener("click",()=>{a.value="",z(),a.focus()},{signal:I}),i.addEventListener("keydown",b=>{if(!(b.isComposing||k||b.keyCode===229))if(b.key==="Escape")b.preventDefault(),b.stopPropagation(),O(!0);else if(b.key==="Tab")O(!0);else if(b.target===a&&["ArrowDown","ArrowUp","Home","End"].includes(b.key)){b.preventDefault();let S=M.filter(E=>!E.disabled),N=S.findIndex(E=>E.value===D);if(!S.length)return;let j=b.key==="Home"?0:b.key==="End"?S.length-1:(N+(b.key==="ArrowDown"?1:-1)+S.length)%S.length;G(S[j],!0)}else b.target===a&&b.key==="Enter"&&(b.preventDefault(),$(M.find(S=>S.value===D)))},{signal:I}),document.addEventListener("pointerdown",b=>{f&&!o.contains(b.target)&&!i.contains(b.target)&&O()},{signal:I}),document.addEventListener("focusin",b=>{f&&!o.contains(b.target)&&!i.contains(b.target)&&O()},{signal:I}),t.addEventListener("change",Y,{signal:I});let ue=t.closest("dialog");return ue?.addEventListener("close",()=>{ue.open||O()},{signal:I}),window.addEventListener("resize",q,{signal:I}),window.addEventListener("scroll",q,{capture:!0,signal:I}),window.visualViewport?.addEventListener("resize",q,{signal:I}),Y(),se}function et({input:t,form:e,results:o,list:s,status:r,clear:u,onClear:i,onOpen:h}){let a=new AbortController,y=a.signal,c=null,v=!1,C=()=>[...s.querySelectorAll(".search-result")];t.setAttribute("role","combobox"),t.setAttribute("aria-autocomplete","list"),t.setAttribute("aria-controls",s.id),t.setAttribute("aria-expanded","false"),s.role="listbox",s.setAttribute("aria-label",n("controls.matchesAria"));function I(f,k=!1){c=f?.dataset.value??null;for(let H of C()){let F=H===f;H.dataset.active=String(F),H.setAttribute("aria-selected",String(F))}f?t.setAttribute("aria-activedescendant",f.id):t.removeAttribute("aria-activedescendant"),k&&f?.scrollIntoView({block:"nearest"})}function L(){o.hidden=!0,t.setAttribute("aria-expanded","false"),t.removeAttribute("aria-activedescendant"),fe===D&&(fe=null)}function M(){let f=!!t.value.trim(),k=C();u.setAttribute("aria-hidden",String(!t.value)),u.tabIndex=t.value?0:-1;for(let[H,F]of k.entries())F.id=s.id+"-option-"+H,F.role="option",F.tabIndex=-1;if(r.textContent=f?k.length?n("controls.found",{count:k.length}):n("controls.noMatches"):"",!f){c=null,L();return}fe!==D&&(Te(),fe=D),o.hidden=!1,t.setAttribute("aria-expanded","true"),I(k.find(H=>H.dataset.value===c)||k[0])}let D={refresh:M,close:L,destroy(){L(),a.abort()}};return t.addEventListener("compositionstart",()=>{v=!0},{signal:y}),t.addEventListener("compositionend",()=>{v=!1},{signal:y}),t.addEventListener("keydown",f=>{if(!(f.isComposing||v||f.keyCode===229)){if(f.key==="Escape")f.preventDefault(),f.stopPropagation(),o.hidden?i():L();else if(f.key==="Enter")f.preventDefault(),o.hidden||C().find(k=>k.dataset.value===c)?.click();else if(f.key==="ArrowDown"||f.key==="ArrowUp"||!o.hidden&&(f.key==="Home"||f.key==="End")){if(f.preventDefault(),o.hidden){h();return}let k=C(),H=k.findIndex(q=>q.dataset.value===c);if(!k.length)return;let F=f.key==="Home"?0:f.key==="End"?k.length-1:(H+(f.key==="ArrowDown"?1:-1)+k.length)%k.length;I(k[F],!0)}}},{signal:y}),e.addEventListener("submit",f=>{f.preventDefault(),!(v||o.hidden)&&C().find(k=>k.dataset.value===c)?.click()},{signal:y}),s.addEventListener("pointermove",f=>{let k=f.target.closest(".search-result");k&&I(k)},{signal:y}),s.addEventListener("pointerdown",f=>f.preventDefault(),{signal:y}),document.addEventListener("pointerdown",f=>{e.parentElement.contains(f.target)||L()},{signal:y}),document.addEventListener("focusin",f=>{e.parentElement.contains(f.target)||L()},{signal:y}),D}var Yt=t=>String(t?.id??`${t?.at??""}:${t?.type??""}`),Ge=t=>t.length?Yt(t[t.length-1]):"",Lt=t=>"office.notify.seen.v1."+t;function tt({mode:t,button:e,dot:o,panel:s,getEvents:r}){let u="";try{u=localStorage.getItem(Lt(t))||""}catch{}let i=!1,h=I=>{i=!!I,o.hidden=!i,e.classList.toggle("has-unread",i),e.setAttribute("aria-label",i?n("notify.ariaUnread"):n("notify.aria"))},a=()=>{let I=Ge(r());if(!I||I===u){h(!1);return}u=I;try{localStorage.setItem(Lt(t),I)}catch{}h(!1)},y=()=>{if(!s.hidden){a();return}h(!!Ge(r())&&Ge(r())!==u)},c=()=>{s.hidden=!1,e.setAttribute("aria-expanded","true"),a()},v=()=>{s.hidden=!0,e.setAttribute("aria-expanded","false")},C=()=>s.hidden?c():v();return h(!!Ge(r())&&Ge(r())!==u),pe(()=>h(i)),{update:y,markRead:a,open:c,close:v,toggle:C}}function Mt(){let t=l=>document.getElementById(l),e=(l,p,m)=>{let x=document.createElement(l);return p&&(x.className=p),m!=null&&(x.textContent=m),x},o=l=>{let p=e("img");return p.src="./demo-icons/"+l+".svg",p.alt="",p},s=()=>[n("demo.stage.analysis"),n("demo.stage.parallel"),n("demo.stage.reports"),n("demo.stage.summary")],r=new Set(["assign","message","report","complete","approval","error","interrupted"]),u=()=>c.events.filter(l=>r.has(l.type)),i=new Qe(new URLSearchParams(location.search).get("rootId")),h=new URLSearchParams(location.search).get("embed")==="1";h&&(document.body.dataset.embed="true");let a=()=>i.kind==="harness"?"DeepSeek Harness":"Codex",y=()=>({id:"",icon:"diagram-3-fill",name:n("livePage.noAgent"),title:n("livePage.logWaiting"),code:"\u2014",zone:n("common.notRecorded"),file:n("common.notRecorded"),role:n("common.notRecorded"),status:"unknown",progress:null}),c=i.snapshot,v=null,C=null,I=0,L="",M=!1,D=null,f=new Set,k=null,H="",F="",q="",G="",z,O=0,de=!1,$=me(t("workspace-directory")),Y=me(t("scenario")),se=me(t("mode-select"),{filterable:!1}),ue=t("mode-select");ue.value="live",se.refresh();let b=tt({mode:"live",button:t("notifications-button"),dot:t("notification-dot"),panel:t("notifications"),getEvents:u}),S=null,N=et({input:t("task-search"),form:t("search-form"),results:t("search-results"),list:t("search-result-list"),status:t("search-status"),clear:t("clear-search"),onClear:()=>t("clear-search").click(),onOpen:re}),j=[],E=()=>c.agents.filter(l=>M||!l.historical),U=()=>c.agents.find(l=>l.id===v)||E()[0]||y(),ne=()=>i.kind==="harness"?Ue(c.roots,i.directoryKey):c.roots,V=l=>c.agents.find(p=>p.id===l)?.name||"Agent "+(l||"").slice(-8),Q=l=>Rt(l.status),Z=l=>!L||[l.name,l.task,l.role,l.file,l.id,l.zone,l.title].join(" ").toLowerCase().includes(L.toLowerCase()),ge=l=>{let p=Math.max(0,Math.floor(l));return(p>=3600?String(Math.floor(p/3600)).padStart(2,"0")+":":"")+String(Math.floor(p/60)%60).padStart(2,"0")+":"+String(p%60).padStart(2,"0")};function ae(l){clearTimeout(z),t("demo-toast").textContent=l,t("demo-toast").hidden=!1,z=setTimeout(()=>{t("demo-toast").hidden=!0},3e3)}function ie(l){t("agent-details").hidden=!l,t("open-details").hidden=l}function ee(l,p=!0){v=l,O++,ie(!0),ye(),C?.select(l,p)}function he(l,p,m=U().icon){Te(),S?.destroy(),S=null,t("dialog-title").textContent=l,t("dialog-content").textContent=p,t("dialog-icon").src="./demo-icons/"+m+".svg",t("copy-demo-report").textContent=n("demo.copy"),t("demo-dialog").open||t("demo-dialog").showModal()}async function xe(l,p,m){let x=++O;he(l,n("dialog.loading"));try{let A=await i.record(p,m);x===O&&t("demo-dialog").open&&he(l,A)}catch(A){x===O&&t("demo-dialog").open&&he(l,n("livePage.recordFailed",{message:A.message}))}}function d(l=!1){let p=U();if(!l&&(p.hasReport||p.historical&&p.reportEventId))return xe(p.name+" \xB7 "+n(p.historical?"livePage.pastReportTitle":"livePage.reportTitle"),p.id,p.reportEventId);if(p.taskEventId)return xe(p.name+" \xB7 "+n("livePage.taskSourceTitle"),p.taskSessionId||p.id,p.taskEventId);he(p.name+" \xB7 "+n("livePage.taskDetailsTitle"),p.task||n("livePage.taskNotLogged"))}function g(){O++,he(n("livePage.chooseTeam"),"","people-fill");let l=t("dialog-content");l.append(e("strong","",n("livePage.currentTeam")));for(let p of c.agents){let m=e("button","session-choice",p.name+" \xB7 "+Q(p)+(p.historical?" \xB7 "+n("livePage.pastMember"):"")+`
4
+ `+p.title);m.onclick=()=>{p.historical&&(M=!0),t("demo-dialog").close(),ee(p.id)},l.append(m)}if(i.kind==="harness"){let p=e("label","session-picker-field"),m=e("select");m.id="team-workspace-directory",p.htmlFor=m.id,p.append(e("span","",n("livePage.directory")),m),m.setAttribute("aria-label",n("livePage.teamDirectoryAria")),Le(m),m.onchange=x=>{i.selectDirectory(x.target.value),g()},l.append(p),S=me(m)}l.append(e("strong","",n(i.kind==="harness"?"livePage.harnessSessions":"livePage.mainSession")));for(let p of ne()){let m=e("button","session-choice",i.kind==="harness"?qe(p):p.title||p.id);m.setAttribute("aria-pressed",p.id===c.rootId),m.onclick=()=>{t("demo-dialog").close(),L="",t("task-search").value="",re(),i.select(p.id)},l.append(m)}}function R(l,p){t(l).style.width=p==null?"0%":p+"%",t(l).parentElement.classList.toggle("unrecorded",p==null)}function P(){let l=U(),p=l.hasReport||l.historical&&l.reportEventId;t("detail-icon").src=t("detail-agent-icon").src="./demo-icons/"+l.icon+".svg",t("detail-code").textContent=l.code,t("detail-badge").textContent=Q(l),t("detail-badge").classList.toggle("done",l.status==="done"),t("detail-task-title").textContent=l.title,t("detail-task-title").title=l.task||l.title,t("detail-project").textContent=c.config.project,t("detail-role").textContent=l.role,t("detail-type").textContent=l.historical?n("livePage.pastMember"):l.parentId?n("livePage.subtask"):n("livePage.mainTask"),t("detail-progress-label").textContent=l.reportPreview||n("livePage.awaitingLog"),R("detail-progress-fill",l.progress),R("current-progress-fill",l.progress),t("detail-percent").textContent=l.progress==null?n("livePage.progressUnknown"):l.progress+"%",t("detail-zone").textContent=l.zone,t("detail-file").textContent=l.file,t("detail-file").title=l.source?.activity||l.file,t("detail-parent").textContent=l.parentId?V(l.parentId)+" \u2192 "+l.name:n("livePage.leadMembers",{count:c.assigned}),t("detail-name").textContent=l.name,t("detail-stage").textContent=c.complete?n("demo.stageComplete"):s()[c.stage],t("view-report").replaceChildren(document.createTextNode(n(p?"demo.viewFullReport":"demo.viewReport")),o("arrow-right")),t("view-report").disabled=!l.id,t("view-task").hidden=!p,t("view-screen").hidden=!C?.openScreenFor||!l.id,t("current-task-code").textContent=l.code,t("current-task-agent").textContent=l.name+" \xB7 "+l.zone.split(" \xB7 ")[0],t("current-task-description").textContent=l.title,t("current-task-icon").src="./demo-icons/"+l.icon+".svg"}function K(){let l=E().filter(m=>m.id!==v&&Z(m)),p=JSON.stringify([v,L,l.map(m=>[m.id,m.name,m.status,m.title])]);p!==F&&(F=p,t("queue-heading").textContent=n("demo.queueHeading",{label:n(L?"demo.matchingTasks":"demo.teamTasks"),count:l.length}),t("task-queue").replaceChildren(...l.map(m=>{let x=e("button","queue-item");return x.setAttribute("aria-label",n("demo.ariaViewTask",{name:m.name})),x.title=m.name+" \xB7 "+m.title,x.append(e("strong","",m.name),e("span","",m.zone.split(" \xB7 ")[0]),e("span","queue-status "+(m.status==="done"?"done":"running"),Q(m))),x.onclick=()=>ee(m.id),x})),l.length||t("task-queue").append(e("div","queue-empty",n("demo.noMatchingTasks"))))}function ce(){L="",t("task-search").value="",K()}let Pe="";function re(){let l=t("search-result-list"),p=L.toLowerCase(),m=L&&i.kind==="harness"?(c.roots||[]).filter(w=>[w.title,w.cwd,w.id].join(" ").toLowerCase().includes(p)):[],x=L?E().filter(Z):[],A=L?(c.events||[]).filter(w=>[w.type,Re(w.type),w.preview].join(" ").toLowerCase().includes(p)):[],te=Math.min(m.length,8)+Math.min(x.length,8)+Math.min(A.length,5),Ee=m.length+x.length+A.length,Ve=JSON.stringify([L,J(),Ee,te,m.slice(0,8).map(w=>[w.id,w.title,w.cwd,w.createdAt,w.at]),x.slice(0,8).map(w=>[w.id,w.name,w.title,w.file,w.role,w.icon]),A.slice(0,5).map(w=>[w.id,w.type,w.preview,w.at,w.sessionId])]);if(Ve===Pe){N.refresh();return}if(Pe=Ve,l.replaceChildren(),L){Ee>te&&l.append(e("p","search-note",n("livePage.searchNote",{total:Ee,shown:te})));for(let w of m.slice(0,8)){let B=e("button","search-result"),oe=e("span"),Se=Number.isFinite(w.createdAt)?w.createdAt:w.at,Me=new Date(Se);B.type="button",B.dataset.value="session:"+w.id,oe.append(e("strong","",w.title?.trim()||n("common.unnamedSession")),e("small","",n("livePage.sessionLine",{path:w.cwd||n("common.noDirectory"),time:Number.isNaN(Me.getTime())?n("common.timeNotRecorded"):Me.toLocaleString(J(),{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1}),id:String(w.id).slice(-8)}))),B.append(o("diagram-3-fill"),oe),B.onclick=()=>{ce(),N.close(),i.openSession(w.id).then(st=>{st===!1&&ae(n("livePage.cannotOpenSession"))})},l.append(B)}for(let w of x.slice(0,8)){let B=e("button","search-result"),oe=e("span");B.type="button",B.dataset.value="agent:"+w.id,oe.append(e("strong","",w.name+" \xB7 "+w.title),e("small","",n("livePage.agentLine",{detail:w.file||w.role||n("common.notRecorded")}))),B.append(o(w.icon),oe),B.onclick=()=>{ce(),ee(w.id),N.close()},l.append(B)}for(let w of A.slice(0,5)){let B=e("button","search-result"),oe=e("span");B.type="button",B.dataset.value="event:"+w.id,oe.append(e("strong","",Re(w.type)+(w.preview?" \xB7 "+w.preview:"")),e("small","",n("livePage.eventLine",{name:V(w.sessionId),time:new Date(w.at).toLocaleTimeString(J(),{hour12:!1})}))),B.append(o("bell"),oe),B.onclick=()=>{ce(),N.close();let Se=["assign","message"].includes(w.type)&&w.targetId||w.sessionId,Me=c.agents.find(st=>st.id===Se);Me&&(Me.historical&&(M=!0),ee(Se)),w.hasText&&xe(V(w.sessionId)+" \xB7 "+Re(w.type),w.sessionId,w.id)},l.append(B)}}N.refresh()}function ze(){let l=u().slice(-12).reverse(),p=JSON.stringify(l);p!==G&&(G=p,t("notification-list").replaceChildren(...l.map(m=>{let x=e("button","notification-item"),A=["assign","message","report"].includes(m.type)?m.type:"activity",te=e("span","notify-type");te.append(o(A==="assign"?"diagram-3-fill":A==="report"?"check-lg":A==="message"?"chat-left-text-fill":"cpu-fill"));let Ee=e("span","notify-copy"),Ve=A==="activity"?n("demo.updates"):Re(m.type),w=V(m.sessionId)+(m.targetId&&m.targetId!==m.sessionId?" \u2192 "+V(m.targetId):"");return Ee.append(e("strong","notify-title",Ve),e("small","notify-preview",w+(m.preview?" \xB7 "+m.preview:"")),e("em","notify-time",new Date(m.at).toLocaleTimeString(J(),{hour12:!1}))),x.append(te,Ee),x.onclick=()=>{let B=["assign","message"].includes(m.type)&&m.targetId||m.sessionId,oe=c.agents.find(Se=>Se.id===B);oe&&(oe.historical&&(M=!0),ee(B)),b.markRead(),b.close(),m.hasText&&xe(V(m.sessionId)+" \xB7 "+Re(m.type),m.sessionId,m.id)},x})),l.length||t("notification-list").append(e("div","empty",n("livePage.waitingEvents"))),b.update())}function nt(){let l=JSON.stringify([i.kind,i.directoryKey,c.rootId,c.roots]);if(l===q)return;q=l;let p=i.kind==="harness";t("directory-field").hidden=!p||h,t("directory-field").parentElement.classList.toggle("harness-picker",p),p&&(Le(t("workspace-directory")),S&&(Le(t("team-workspace-directory")),S.refresh()));let m=ne();if(t("scenario").replaceChildren(...m.map(x=>{let A=e("option","",p?qe(x):x.title||x.id);return A.value=x.id,A.dataset.label=x.title?.replace(/\s+/g," ").trim()||n("common.unnamedSession"),A.dataset.description=qe(x).split(" \xB7 ").slice(-2).join(" \xB7 "),A.dataset.search=[x.title,qe(x),x.id].join(" "),A})),!m.length){let x=e("option","",n("livePage.noSessions",{host:a()}));x.value="",t("scenario").append(x)}t("scenario").value=c.rootId||"",t("scenario").disabled=!m.length,t("scenario").title=t("scenario").selectedOptions[0]?.textContent||"",Y.refresh()}function Le(l){let p=Ye(c.roots);if(l.replaceChildren(...p.map(m=>{let x=e("option","",m.path+" ("+m.count+")");return x.value=m.key,x.dataset.label=m.path,x.dataset.description=n("livePage.sessionCount",{count:m.count}),x})),!p.length){let m=e("option","",n("livePage.noDirectories"));m.value="",l.append(m)}l.disabled=!p.length,l.value=p.length?i.directoryKey??"":"",l.title=p.find(m=>m.key===i.directoryKey)?.path||"",l===t("workspace-directory")&&$.refresh()}function Ht(){let l=JSON.stringify(E().map(p=>[p.id,p.name,p.zone]));l!==H&&(H=l,t("scene-pins").replaceChildren(...E().map(p=>{let m=e("button","scene-pin"),x=e("span");return m.dataset.agent=p.id,m.setAttribute("aria-label",n("demo.ariaSelectAgent",{name:p.name})),x.append(e("strong","",p.name),e("small","",p.zone)),m.append(o(p.icon),x),m.onclick=()=>ee(p.id),m})));for(let p of t("scene-pins").children)p.classList.toggle("selected",p.dataset.agent===v),p.classList.toggle("done",c.agents.find(m=>m.id===p.dataset.agent)?.status==="done")}function Ot(){if(de)return;let l=Math.max(4,...E().map(p=>p.slot+1));if(!(C&&l<=I)){C?.destroy(),C=null,I=l;try{let p=C=new Ie(t("demo-scene"),{count:l,live:!0,source:i.kind,onSelect:ee,reduced:t("demo-reduced").checked,pins:t("scene-pins"),pinFloor:()=>{let m=document.querySelector(".stats"),x=m&&m.getBoundingClientRect();return x&&x.height?Math.round(x.bottom)+10:70}});p.setTeam(E(),c.rootId),p.select(v),p.ready.then(m=>{if(C===p){if(t("scene-loading").hidden=m,document.body.dataset.demoReady=m?"true":"fallback",m||(t("scene-loading").textContent=n("livePage.sceneUnavailable"),p.visible=!1),m)for(let x of j)p.animateEvent(x);j=[]}})}catch(p){de=!0,t("scene-loading").hidden=!1,t("scene-loading").textContent=n("livePage.sceneUnavailable"),document.body.dataset.demoReady="fallback",console.error("\u534F\u4F5C\u573A\u666F\u52A0\u8F7D\u5931\u8D25",p)}}}function ot(){document.title=i.kind==="harness"?n("meta.harnessLive"):n("meta.liveTitle"),t("task-search").setAttribute("aria-label",n("livePage.searchAria")),t("scenario").setAttribute("aria-label",n("livePage.scenarioAria")),t("metric-progress-title").textContent=n("livePage.progressTitle"),t("event-mode").textContent=n("livePage.eventMode"),t("detail-activity-label").textContent=n("livePage.activityLabel"),t("dialog-mode").textContent=n("livePage.dialogMode"),t("dialog-caption").textContent=n("livePage.dialogCaption"),t("mode-select").setAttribute("aria-label",n("livePage.modeAria")),t("restart-demo").title=n("livePage.reconnect"),t("restart-demo").setAttribute("aria-label",n("livePage.reconnect")),t("toggle-play").title=n("livePage.toggleCodex"),ve.textContent=n("livePage.viewScreen")}function ye({baseline:l=!1}={}){c=i.snapshot,D!==i.kind&&(D=i.kind,$e(i.kind,!0),ot(),t("toggle-play").title=n(i.kind==="harness"?"livePage.toggleHarness":"livePage.toggleCodex"),t("team-picker").textContent=n(i.kind==="harness"?"livePage.teamLabelHarness":"livePage.teamLabelCodex")),c.rootId!==k&&(v=c.rootId,l=!0,O++,t("demo-dialog").close()),E().some(A=>A.id===v)||(v=E()[0]?.id||null),l&&(f=new Set(c.events.map(A=>A.id)),j=[]);let p=h?c.roots?.find(A=>A.id===c.rootId):null;t("workspace-name").textContent=p!=null?p.title?.replace(/\s+/g," ").trim()||n("common.unnamedSession"):i.kind==="harness"?n("livePage.session"):c.config.project,t("workflow-subtitle").textContent=n("livePage.realSubtitle",{title:c.config.title}),t("workflow-subtitle").title=c.config.title,t("metric-active").textContent=c.active,t("metric-assigned").textContent=c.assigned,t("metric-reports").textContent=c.received,t("metric-progress").textContent=c.progress==null?"\u2014":c.progress+"%",t("active-hint").textContent=c.complete?n("demo.hintComplete"):c.active>1?n("demo.hintParallel"):n("demo.hintCoordinating"),t("assigned-hint").textContent=n("livePage.realSplit"),t("report-hint").textContent=c.received&&c.received===c.assigned?n("demo.reportsReady"):c.received?n("demo.reportsCollecting"):n("demo.reportsWaiting"),t("stage-caption").textContent=c.complete?n("demo.stageComplete"):n("livePage.noPercent"),t("demo-clock").textContent=c.elapsedKnown?ge(c.seconds):"\u2014",t("team-count-caption").textContent=n("livePage.memberCaption",{count:c.assigned}),t("assigned-caption").textContent=n("livePage.nestedCaption");let m=ue.querySelector('option[value="live"]');m.textContent=i.connection==="connected"?n("demo.modeLive"):i.connection==="connecting"?n("livePage.connecting"):n("livePage.disconnected"),ue.closest(".mode-field")?.classList.toggle("disconnected",i.connection!=="connected"),se.refresh(),t("profile-caption").textContent=i.error||n(i.kind==="harness"?"livePage.profileHarness":"livePage.profileCodex"),t("profile-caption").title=i.error||n("livePage.profileTitle",{host:a()}),t("source-status").hidden=!i.error&&!c.warnings.length,t("source-status").textContent=[i.error,...c.warnings].filter(Boolean).join(n("common.listSeparator")),t("play-label").textContent=i.follow?n(i.kind==="harness"?"livePage.followHarness":"livePage.followNew"):n("livePage.fixedSession"),t("toggle-play").setAttribute("aria-label",t("play-label").textContent),t("history-toggle").textContent=n(M?"livePage.historyHide":"livePage.historyShow",{count:c.agents.filter(A=>A.historical).length}),t("stage-track-fill").style.width=(c.complete?100:c.stage/3*100)+"%",t("stage-0-description").textContent=n("livePage.subtasks",{count:c.assigned}),t("stage-1-description").textContent=n("livePage.running",{count:E().filter(A=>A.id!==c.rootId&&["tool","thinking","typing"].includes(A.status)).length}),t("stage-2-description").textContent=n("livePage.reported",{done:c.received,total:c.assigned}),t("stage-3-description").textContent=c.complete?n("demo.stageSummaryReady"):c.stage===3?n("demo.stageConcluding"):n("livePage.awaitingLead");for(let A of document.querySelectorAll(".stage")){let te=Number(A.dataset.stage);A.classList.toggle("active",te===c.stage),A.classList.toggle("completed",te<c.stage||c.complete),A.setAttribute("aria-pressed",te===c.stage),A.title=n("demo.previewStage",{stage:s()[te]}),A.querySelector("em").textContent=te===c.stage?n(c.complete?"demo.markerDone":"demo.markerRunning"):""}let x=t("progress-ring").getContext("2d");if(x.clearRect(0,0,112,112),x.lineWidth=15,x.lineCap="round",x.strokeStyle=c.complete?"#126cfa":"#e5edfc",x.beginPath(),x.arc(56,56,39,0,Math.PI*2),x.stroke(),nt(),Ht(),P(),K(),ze(),L&&!t("search-results").hidden&&re(),Ot(),C&&(C.setTeam(E(),c.rootId),C.select(v),C.playing=!0,!l))for(let A of c.events)f.has(A.id)||(C.loaded?C.animateEvent(A):j.push(A));f=new Set(c.events.map(A=>A.id)),k=c.rootId}document.body.dataset.mode="live",_e(document);let ve=document.createElement("button");ve.id="view-screen",ve.type="button",ve.className="text-button",ve.hidden=!0,t("view-task").before(ve),ot(),t("mode-select").onchange=l=>{l.target.value==="demo"?location.href=Be(!1,i.kind):(l.target.value="live",se.refresh())},t("play-icon").src="./demo-icons/crosshair.svg",t("history-toggle").hidden=t("team-picker").hidden=!1,t("close-details").onclick=()=>ie(!1),t("open-details").onclick=()=>ie(!0),t("view-report").onclick=()=>d(),t("view-task").onclick=()=>d(!0),ve.onclick=()=>{let l=U();l?.id&&C?.openScreenFor?.(l.id)},t("current-task-button").onclick=()=>{ie(!0),d()},t("close-demo-dialog").onclick=()=>{O++,t("demo-dialog").close()},t("demo-dialog").addEventListener("close",()=>{t("demo-dialog").open||(S?.destroy(),S=null)}),t("copy-demo-report").onclick=async()=>{try{await navigator.clipboard.writeText(t("dialog-content").textContent),t("copy-demo-report").textContent=n("common.copied")}catch{ae(n("common.copyFailedToast"))}},t("toggle-play").onclick=()=>{i.follow=!i.follow,ye(),ae(n(i.follow?i.kind==="harness"?"livePage.toastFollowHarness":"livePage.toastFollowNew":"livePage.toastFixed"))},t("restart-demo").onclick=()=>{i.connect(),ae(n("livePage.toastReconnect"))},t("reset-demo-camera").onclick=()=>C?.resetCamera(),t("history-toggle").onclick=()=>{M=!M,ye({baseline:!0})},t("scenario").onchange=l=>{L="",t("task-search").value="",re(),i.select(l.target.value)},t("workspace-directory").onchange=l=>{L="",t("task-search").value="",re(),i.selectDirectory(l.target.value)},t("task-search").oninput=l=>{L=l.target.value.trim(),K(),re()},t("task-search").onfocus=re,t("clear-search").onclick=()=>{L="",t("task-search").value="",K(),re(),t("task-search").focus()},t("notifications-button").onclick=()=>b.toggle(),t("mark-read").onclick=()=>{b.markRead(),ze()},t("show-team").onclick=t("team-picker").onclick=g,t("dock-toggle").onclick=()=>{let l=t("workflow-dock").classList.toggle("expanded");t("dock-toggle").setAttribute("aria-expanded",l)};for(let l of document.querySelectorAll(".stage"))l.onclick=()=>ae(n("livePage.stageToast",{stage:s()[c.stage],host:a()}));t("demo-reduced").checked=localStorage.getItem("office.demo.reduced")==="true"||matchMedia("(prefers-reduced-motion: reduce)").matches,document.body.dataset.reducedMotion=String(t("demo-reduced").checked),t("demo-reduced").onchange=l=>{localStorage.setItem("office.demo.reduced",l.target.checked),document.body.dataset.reducedMotion=String(l.target.checked),C?.setReduced(l.target.checked)},document.addEventListener("keydown",l=>{l.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement.tagName)&&!t("demo-dialog").open&&(l.preventDefault(),t("task-search").focus())}),document.addEventListener("click",l=>{!l.target.closest("#notifications")&&!l.target.closest("#notifications-button")&&b.close()}),document.addEventListener("visibilitychange",()=>{C&&(C.visible=!document.hidden&&!C.loadError)}),pe(()=>{H=F=q=G="",D=null,I=0,C?.destroy(),C=null,ot(),ye({baseline:!0})}),ie(innerWidth>1050&&innerHeight>820),ye({baseline:!0}),i.addEventListener("change",l=>ye(l.detail)),i.connect();let Ft=setInterval(()=>{document.hidden||ye()},1e3);window.addEventListener("beforeunload",()=>{clearInterval(Ft),clearTimeout(z),$.destroy(),Y.destroy(),S?.destroy(),N.destroy(),i.destroy(),C?.destroy()})}var Nt="office.shell";function Dt(){if(typeof document>"u")return()=>{};let t=document.body,e=document.getElementById("toggle-shell"),o=document.getElementById("shell-restore");if(!e&&!o)return()=>{};let s="";try{s=localStorage.getItem(Nt)||""}catch{s=""}let r=()=>t.dataset.shell==="scene",u=i=>{i?t.dataset.shell="scene":delete t.dataset.shell,o&&(o.hidden=!i),e?.setAttribute("aria-pressed",i?"true":"false");try{localStorage.setItem(Nt,i?"scene":"all")}catch{}};return e?.addEventListener("click",()=>u(!r())),o?.addEventListener("click",()=>{u(!1),e?.focus()}),window.addEventListener("keydown",i=>{if(i.defaultPrevented||i.metaKey||i.ctrlKey||i.altKey)return;let h=i.target?.tagName;h==="INPUT"||h==="SELECT"||h==="TEXTAREA"||(i.key==="h"||i.key==="H"?(i.preventDefault(),u(!r())):i.key==="Escape"&&r()&&u(!1))}),u(s==="scene"),()=>u(!1)}Dt();new URLSearchParams(location.search).get("mode")==="live"?Mt():Qt();function Qt(){let t=Ke();$e(t),_e(document);let e=d=>document.getElementById(d),o=(d,g,R)=>{let P=document.createElement(d);return g&&(P.className=g),R!=null&&(P.textContent=R),P},s=d=>{let g=o("img");return g.src="./demo-icons/"+d+".svg",g.alt="",g},r=()=>[n("demo.stage.analysis"),n("demo.stage.parallel"),n("demo.stage.reports"),n("demo.stage.summary")],u=()=>({main:n("demo.type.main"),api:n("demo.type.api"),frontend:n("demo.type.frontend"),test:n("demo.type.test")}),i=new Je,h=()=>{let d=i.snapshot;return t==="harness"?{...d,config:{...d.config,project:d.config.project.replace("Codex","Harness")},agents:d.agents.map(g=>({...g,agent:"dsh"}))}:d},a=h(),y="frontend",c=null,v="",C=null,I=new Set(a.events.map(d=>d.id)),L=innerWidth>1050&&innerHeight>820,M=a.seconds,D=a.scenario,f=performance.now(),k="",H="",F=me(e("scenario")),q=me(e("mode-select"),{filterable:!1}),G=e("mode-select");G.value="demo",q.refresh();let z=tt({mode:"demo",button:e("notifications-button"),dot:e("notification-dot"),panel:e("notifications"),getEvents:()=>a.events}),O=et({input:e("task-search"),form:e("search-form"),results:e("search-results"),list:e("search-result-list"),status:e("search-status"),clear:e("clear-search"),onClear:()=>e("clear-search").click(),onOpen:Z}),de=d=>a.agents.find(g=>g.id===d)?.name||n("common.agent"),$=()=>a.agents.find(d=>d.id===y)||a.agents[0],Y=d=>d.status==="done"?n("status.done"):d.status==="unknown"?n("status.pending"):d.status==="waiting_agents"?n("status.coordinating"):n("status.running"),se=d=>"00:"+String(Math.floor(d)).padStart(2,"0"),ue=()=>{for(let d of e("scenario").options)d.dataset.label=n(d.value==="review"?"demo.scenarioReview":"demo.scenarioSearch");F.refresh(),q.refresh()};function b(d){clearTimeout(C),e("demo-toast").textContent=d,e("demo-toast").hidden=!1,C=setTimeout(()=>{e("demo-toast").hidden=!0},2300)}function S(d){L=d,e("agent-details").hidden=!d,e("open-details").hidden=d}function N(d,g=!0){y=d,S(!0),c?.select(d,g),H="",ee()}function j(d){let g=e("progress-ring").getContext("2d");g.clearRect(0,0,112,112),g.lineWidth=15,g.lineCap="round",g.strokeStyle="#e5edfc",g.beginPath(),g.arc(56,56,39,0,Math.PI*2),g.stroke(),g.strokeStyle="#126cfa",g.beginPath(),g.arc(56,56,39,-Math.PI/2,-Math.PI/2+Math.PI*2*d/100),g.stroke()}function E(){e("scene-pins").replaceChildren(...a.agents.map(g=>{let R=o("button","scene-pin");R.dataset.agent=g.id,R.setAttribute("aria-label",n("demo.ariaSelectAgent",{name:g.name}));let P=o("span");return P.append(o("strong","",g.name),o("small","",g.zone)),R.append(s(g.icon),P),R.onclick=()=>N(g.id),R}))}function U(){let d=$();e("detail-icon").src="./demo-icons/"+d.icon+".svg",e("detail-agent-icon").src="./demo-icons/"+d.icon+".svg",e("detail-code").textContent=n("demo.detailCode",{code:d.code}),e("detail-badge").textContent=Y(d),e("detail-badge").classList.toggle("done",d.status==="done"),e("detail-task-title").textContent=d.title,e("detail-project").textContent=a.scenario==="search"?n("demo.projectTaskBoard"):n("demo.projectApi"),e("detail-role").textContent=d.role,e("detail-type").textContent=a.scenario==="review"&&d.parentId?n("demo.type.reviewOnly"):u()[d.id],e("detail-progress-label").textContent=d.report?n("demo.detailProgressDone"):d.reportPreview,e("detail-progress-fill").style.width=d.progress+"%",e("detail-percent").textContent=d.progress+"%",e("detail-zone").textContent=d.zone,e("detail-file").textContent=d.file,e("detail-parent").textContent=d.parentId?n("demo.parentMain"):n("demo.parentLead",{count:3}),e("detail-name").textContent=d.name,e("detail-stage").textContent=a.complete?n("demo.stageComplete"):r()[a.stage],e("view-report").replaceChildren(document.createTextNode(d.report?n("demo.viewFullReport"):n("demo.viewReport")),s("arrow-right")),e("current-task-code").textContent=d.code,e("current-task-agent").textContent=d.name+" \xB7 "+d.zone.split(" \xB7 ")[0],e("current-task-description").textContent=d.title,e("current-task-icon").src="./demo-icons/"+d.icon+".svg",e("current-progress-fill").style.width=d.progress+"%"}function ne(d){return!v||[d.name,d.role,d.zone,d.task,d.file,d.code,d.title].join(" ").toLowerCase().includes(v.toLowerCase())}function V(){let d=a.agents.filter(P=>P.id!==y&&ne(P)),g=JSON.stringify([a.scenario,y,v,d.map(P=>[P.id,P.status,P.progress])]);if(g===H)return;H=g,e("queue-heading").textContent=n("demo.queueHeading",{label:v?n("demo.matchingTasks"):n("demo.teamTasks"),count:d.length});let R=e("task-queue");R.replaceChildren();for(let P of d){let K=o("button","queue-item");K.setAttribute("aria-label",n("demo.ariaViewTask",{name:P.name})),K.append(o("strong","",P.code),o("span","",P.zone.split(" \xB7 ")[0]),o("span","queue-status "+(P.status==="done"?"done":P.status==="unknown"?"":"running"),Y(P))),K.onclick=()=>N(P.id),R.append(K)}d.length||R.append(o("div","queue-empty",n("demo.noMatchingTasks")))}let Q="";function Z(){let d=e("search-result-list"),g=v?a.agents.filter(ne):[],R=JSON.stringify([v,J(),g.map(P=>[P.id,P.name,P.title,P.file,P.icon])]);if(R===Q){O.refresh();return}Q=R,d.replaceChildren();for(let P of g){let K=o("button","search-result");K.type="button",K.dataset.value=P.id;let ce=o("span");ce.append(o("strong","",P.name+" \xB7 "+P.title),o("small","",P.file)),K.append(s(P.icon),ce),K.onclick=()=>{N(P.id),e("task-search").focus(),O.close()},d.append(K)}O.refresh()}function ge(){let d=e("notification-list");d.replaceChildren();let g=a.events.slice(-6).reverse();for(let R of g){let P=a.agents.find(Le=>Le.id===(R.targetId||R.sessionId)),K=o("button","notification-item");K.type="button";let ce=o("span","notify-type");ce.append(s(R.type==="assign"?"diagram-3-fill":R.type==="report"?"check-lg":"chat-left-text-fill"));let Pe=o("span","notify-copy"),re=R.type==="assign"?n("demo.notifyAssign"):R.type==="report"?n("demo.notifyReport"):n("demo.notifyMessage"),ze=R.type==="assign"?n("demo.notifyRouteLead"):de(R.sessionId)+" \xB7 ",nt=R.type==="assign"?P?.title||de(R.targetId):R.type==="report"?n("demo.notifySummary"):R.preview||n("demo.notifyProgress");Pe.append(o("strong","notify-title",re),o("small","notify-preview",ze+nt),o("em","notify-time",n("demo.notifyTime",{time:se(R.at)}))),K.append(ce,Pe),K.onclick=()=>{P&&N(P.id),z.markRead(),z.close()},d.append(K)}g.length||d.append(o("div","empty",n("demo.notifyEmpty"))),z.update()}function ae(d,g,R=$().icon){Te(),e("dialog-title").textContent=d,e("dialog-content").textContent=g,e("dialog-icon").src="./demo-icons/"+R+".svg",e("copy-demo-report").textContent=n("demo.copy"),e("demo-dialog").open||e("demo-dialog").showModal()}function ie(){let d=$();d.report?ae(n(d.id==="main"?"demo.dialogFinalTitle":"demo.dialogReportTitle",{name:d.name}),d.report):ae(n("demo.dialogTaskTitle",{name:d.name}),[n("demo.fieldTask",{value:d.title}),n("demo.fieldCode",{value:d.code}),n("demo.fieldZone",{value:d.zone}),n("demo.fieldFile",{value:d.file}),"",d.task,"",n("demo.fieldStatus",{value:Y(d),percent:d.progress}),"",n("demo.doneHint"),"",n("demo.demoOnlyHint")].join(`
5
+ `)),k=d.id+":"+!!d.report+":"+a.scenario}function ee(){a=h();let d=a.seconds<M||a.scenario!==D;if(d&&(I=new Set(a.events.map(g=>g.id)),e("demo-dialog").close(),k="",c))for(let g of c.people.values())g.path=[],g.mode="work",g.reportUntil=null,g.x=g.desk.seat.x,g.y=g.desk.seat.y;e("workspace-name").textContent=a.config.project,e("workflow-subtitle").textContent=n("demo.subtitleSim",{title:a.config.title}),e("metric-active").textContent=a.active,e("metric-assigned").textContent=a.assigned,e("metric-reports").textContent=a.received,e("metric-progress").textContent=a.progress+"%",e("active-hint").textContent=a.complete?n("demo.hintComplete"):a.active>1?n("demo.hintParallel"):n("demo.hintCoordinating"),e("assigned-hint").textContent=a.assigned===3?n("demo.assignedReady"):n("demo.assignedSplitting"),e("report-hint").textContent=a.received===3?n("demo.reportsReady"):a.received?n("demo.reportsCollecting"):n("demo.reportsWaiting"),e("stage-caption").textContent=a.complete?n("demo.demoComplete"):n("demo.runningStage",{stage:r()[a.stage]}),e("demo-clock").textContent=se(a.seconds),e("play-label").textContent=i.playing?n("demo.pause"):a.complete?n("demo.replay"):n("demo.play"),e("toggle-play").setAttribute("aria-label",i.playing?n("demo.pause"):n("demo.play")),e("toggle-play").title=e("play-label").textContent,e("play-icon").src="./demo-icons/"+(i.playing?"pause-fill":"play-fill")+".svg",e("stage-track-fill").style.width=Math.min(100,a.seconds/le*100)+"%",e("stage-0-description").textContent=n("demo.stageAssigned",{done:a.assigned,total:3}),e("stage-1-description").textContent=n("demo.stageRunning",{count:a.agents.slice(1).filter(g=>g.status==="tool").length}),e("stage-2-description").textContent=n("demo.stageReported",{done:a.received,total:3}),e("stage-3-description").textContent=a.complete?n("demo.stageSummaryReady"):a.stage===3?n("demo.stageConcluding"):n("demo.stageAwaitReports");for(let g of document.querySelectorAll(".stage")){let R=Number(g.dataset.stage);g.classList.toggle("active",R===a.stage),g.classList.toggle("completed",R<a.stage||a.complete),g.setAttribute("aria-pressed",R===a.stage),g.title=n("demo.previewStage",{stage:r()[R]}),g.querySelector("em").textContent=R===a.stage?a.complete?n("demo.markerDone"):i.playing?n("demo.markerRunning"):n("demo.markerPaused"):""}j(a.progress),U(),V(),ge();for(let g of e("scene-pins").children)g.classList.toggle("selected",g.dataset.agent===y),g.classList.toggle("done",a.agents.find(R=>R.id===g.dataset.agent)?.status==="done");if(c&&(c.setTeam(a.agents,"main"),c.select(y),c.playing=i.playing,!d))for(let g of a.events)I.has(g.id)||c.animateEvent(g);if(I=new Set(a.events.map(g=>g.id)),M=a.seconds,D=a.scenario,e("demo-dialog").open&&k){let g=$();g.id+":"+!!g.report+":"+a.scenario!==k&&ie()}}e("close-details").onclick=()=>S(!1),e("open-details").onclick=()=>S(!0),e("view-report").onclick=ie,e("current-task-button").onclick=()=>{S(!0),ie()},e("close-demo-dialog").onclick=()=>e("demo-dialog").close(),e("copy-demo-report").onclick=async()=>{try{await navigator.clipboard.writeText(e("dialog-content").textContent),e("copy-demo-report").textContent=n("common.copied")}catch{b(n("common.copyFailedToast"))}},e("toggle-play").onclick=()=>i.play(),e("mode-select").onchange=d=>{d.target.value==="live"?location.href=Be(!0,t):(d.target.value="demo",q.refresh())},e("restart-demo").onclick=()=>{i.restart(),b(n("demo.toastRestart"))},e("reset-demo-camera").onclick=()=>c?.resetCamera(),e("scenario").onchange=d=>{v="",e("task-search").value="",Z(),i.setScenario(d.target.value)},e("task-search").oninput=d=>{v=d.target.value.trim(),H="",V(),Z()},e("task-search").onfocus=()=>Z(),e("clear-search").onclick=()=>{v="",e("task-search").value="",V(),Z(),e("task-search").focus()},e("notifications-button").onclick=()=>z.toggle(),e("mark-read").onclick=()=>{z.markRead(),ge()},e("show-team").onclick=()=>{k="",ae(n("demo.dialogTeamTitle",{title:a.config.title}),a.agents.map(d=>n("demo.teamMemberLine",{name:d.name,zone:d.zone,task:d.task,status:Y(d),percent:d.progress})).join(`
6
6
 
7
- `),"people-fill")},e("dock-toggle").onclick=()=>{let l=e("workflow-dock").classList.toggle("expanded");e("dock-toggle").setAttribute("aria-expanded",l)};for(let l of document.querySelectorAll(".stage"))l.onclick=()=>{i.seconds=[2,16,32,42][Number(l.dataset.stage)],i.playing=!1,i.changed(),b(n("demo.toastPreview",{stage:d()[Number(l.dataset.stage)]}))};e("demo-reduced").checked=matchMedia("(prefers-reduced-motion: reduce)").matches,document.body.dataset.reducedMotion=String(e("demo-reduced").checked),e("demo-reduced").onchange=l=>{document.body.dataset.reducedMotion=String(l.target.checked),m?.setReduced(l.target.checked)},document.addEventListener("keydown",l=>{l.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement.tagName)&&!e("demo-dialog").open&&!document.querySelector(".screen-modal")&&(l.preventDefault(),e("task-search").focus())}),document.addEventListener("click",l=>{!l.target.closest("#notifications")&&!l.target.closest("#notifications-button")&&F.close()}),document.addEventListener("visibilitychange",()=>{g=performance.now(),m&&(m.visible=!document.hidden&&!m.loadError)}),he(()=>{ee(),H="",k="",ae(),S(),ne(),e("demo-dialog").open&&Y(),m?.destroy(),m=null,me()}),S(),C(D),ae(),me();function me(){try{let l=new Re(e("demo-scene"),{source:t,onSelect:v=>A(v),reduced:e("demo-reduced").checked,pins:e("scene-pins")});m=l,l.setTeam(r.agents,"main"),l.select(c),l.ready.then(v=>{e("scene-loading").hidden=v,document.body.dataset.demoReady=v?"true":"fallback",v||(e("scene-loading").textContent=n("demo.failed3d"),l.visible=!1)})}catch{e("scene-loading").textContent=n("demo.failed3d"),document.body.dataset.demoReady="fallback"}}i.addEventListener("change",ae);let Te=setInterval(()=>{let l=performance.now(),v=Math.min(.5,(l-g)/1e3);g=l,document.hidden||i.advance(v)},250);window.addEventListener("beforeunload",()=>{clearInterval(Te),clearTimeout(T),j.destroy(),z.destroy(),m?.destroy()})}
7
+ `),"people-fill")},e("dock-toggle").onclick=()=>{let d=e("workflow-dock").classList.toggle("expanded");e("dock-toggle").setAttribute("aria-expanded",d)};for(let d of document.querySelectorAll(".stage"))d.onclick=()=>{i.seconds=[2,16,32,42][Number(d.dataset.stage)],i.playing=!1,i.changed(),b(n("demo.toastPreview",{stage:r()[Number(d.dataset.stage)]}))};e("demo-reduced").checked=matchMedia("(prefers-reduced-motion: reduce)").matches,document.body.dataset.reducedMotion=String(e("demo-reduced").checked),e("demo-reduced").onchange=d=>{document.body.dataset.reducedMotion=String(d.target.checked),c?.setReduced(d.target.checked)},document.addEventListener("keydown",d=>{d.key==="/"&&!["INPUT","TEXTAREA","SELECT"].includes(document.activeElement.tagName)&&!e("demo-dialog").open&&!document.querySelector(".screen-modal")&&(d.preventDefault(),e("task-search").focus())}),document.addEventListener("click",d=>{!d.target.closest("#notifications")&&!d.target.closest("#notifications-button")&&z.close()}),document.addEventListener("visibilitychange",()=>{f=performance.now(),c&&(c.visible=!document.hidden&&!c.loadError)}),pe(()=>{ue(),H="",k="",ee(),E(),Z(),e("demo-dialog").open&&ie(),c?.destroy(),c=null,he()}),E(),S(L),ee(),he();function he(){try{let d=new Ie(e("demo-scene"),{source:t,onSelect:g=>N(g),reduced:e("demo-reduced").checked,pins:e("scene-pins"),pinFloor:()=>{let g=document.querySelector(".stats"),R=g&&g.getBoundingClientRect();return R&&R.height?Math.round(R.bottom)+10:70}});c=d,d.setTeam(a.agents,"main"),d.select(y),d.ready.then(g=>{e("scene-loading").hidden=g,document.body.dataset.demoReady=g?"true":"fallback",g||(e("scene-loading").textContent=n("demo.failed3d"),d.visible=!1)})}catch{e("scene-loading").textContent=n("demo.failed3d"),document.body.dataset.demoReady="fallback"}}i.addEventListener("change",ee);let xe=setInterval(()=>{let d=performance.now(),g=Math.min(.5,(d-f)/1e3);f=d,document.hidden||i.advance(g)},250);window.addEventListener("beforeunload",()=>{clearInterval(xe),clearTimeout(C),F.destroy(),O.destroy(),c?.destroy()})}