cozyclay 3.1.1 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/bin/agent/agent-routes.mjs +4 -4
- package/bin/agent/main-agent.mjs +21 -7
- package/bin/agent/main-prompt.mjs +7 -6
- package/bin/agent/script-tool.mjs +2 -1
- package/bin/agent/studio-prompt.mjs +1 -1
- package/bin/agent/studio-rebase.mjs +5 -4
- package/bin/agent/studio-task-routes.mjs +1 -1
- package/bin/agent/studio-tasks.mjs +116 -25
- package/bin/agent/studio-tools.mjs +3 -2
- package/bin/cozyclay.mjs +4 -2
- package/bin/live-endpoint.mjs +2 -0
- package/dist/app/index.html +6 -6
- package/dist/assets/TaskBoard-GR8xZm5c.js +1 -0
- package/dist/assets/{app-BlwOpest.css → app-Bhe0TpGz.css} +1 -1
- package/dist/assets/app-C4QTcDcb.js +5144 -0
- package/dist/assets/compile-worker-oy_P9HHh.js +6 -0
- package/dist/assets/motion3-compile-dgGhrvPK.js +1 -0
- package/dist/assets/scene-asset-sync-BEjjhNEo.css +1 -0
- package/dist/assets/scene-asset-sync-qoxcdrhj.js +13 -0
- package/dist/assets/task-board-BqReHzOi.js +15 -0
- package/dist/assets/workflow-C87p6E1E.js +179 -0
- package/dist/cozyclay-package.json +1 -1
- package/dist/index.html +1 -1
- package/dist/sitemap.xml +1 -1
- package/dist/workflow/index.html +4 -4
- package/mcp/README.md +1 -1
- package/mcp/live-hub.mjs +5 -3
- package/mcp/tool-handlers.mjs +5 -5
- package/package.json +1 -1
- package/src/App.jsx +42 -64
- package/src/bus-task-scopes.js +59 -11
- package/src/bus-task-targets.js +35 -9
- package/src/bus-tasks.js +23 -10
- package/src/command-bus.js +7 -4
- package/src/commands/ai.js +1 -1
- package/src/commands/export.js +1 -1
- package/src/commands/motion3.js +27 -7
- package/src/export-workspace.js +244 -0
- package/src/keyframe-pack.js +5 -1
- package/src/live-control.js +14 -7
- package/src/motion3/compile-job.js +15 -3
- package/src/motion3/compiler/channels.js +74 -24
- package/src/motion3/compiler/compile.js +2 -1
- package/src/motion3/compiler/idle.js +2 -0
- package/src/motion3/compiler/overlap.js +180 -0
- package/src/motion3/compiler/pose.js +6 -4
- package/src/motion3/compiler/validate-common.js +1 -0
- package/src/motion3/compiler/validate-parts.js +5 -1
- package/src/motion3/compiler/validate.js +30 -10
- package/src/motion3/correct.js +236 -0
- package/src/motion3/docs.js +8 -6
- package/src/motion3/face-lean.js +31 -0
- package/src/motion3/fix/index.js +5 -1
- package/src/motion3/fix/reach-body.js +172 -0
- package/src/motion3/hint-check.js +44 -0
- package/src/motion3/json-patch.js +120 -12
- package/src/motion3/lenient.js +46 -4
- package/src/motion3/object-keys.js +17 -5
- package/src/motion3/pipeline.js +46 -9
- package/src/motion3/qa/arm-checks.js +96 -0
- package/src/motion3/qa/asked.js +113 -0
- package/src/motion3/qa/goals.js +37 -8
- package/src/motion3/qa/hints-goal.js +6 -5
- package/src/motion3/qa/index.js +5 -2
- package/src/motion3/qa/key-checks.js +4 -3
- package/src/motion3/qa/motion-life.js +243 -0
- package/src/motion3/qa/spec-checks.js +15 -9
- package/src/motion3/qa/verdict.js +50 -0
- package/src/motion3/refs.js +38 -14
- package/src/motion3/repair-watch.js +132 -0
- package/src/motion3/repair.js +52 -19
- package/src/motion3/report.js +50 -9
- package/src/motion3/schema/topics.js +6 -4
- package/src/motion3/schema/types.js +1 -1
- package/src/motion3/skills/basic.js +15 -8
- package/src/motion3/skills/index.js +52 -18
- package/src/motion3/skills/info.js +1 -1
- package/src/motion3/skills/stance.js +6 -0
- package/src/motion3/skills/walk-fit.js +170 -0
- package/src/panels/PoseImagePanel.jsx +3 -2
- package/src/panels/SculptPanel.jsx +2 -2
- package/src/result-modal.jsx +3 -3
- package/src/shell/ExportFolderPreference.jsx +103 -0
- package/src/shell/PreferencesDialog.jsx +3 -166
- package/src/shell/StatusBar.jsx +1 -1
- package/src/shell/preference-controls.jsx +114 -0
- package/src/shell/preference-pages.jsx +72 -0
- package/src/shell/preferences.css +46 -0
- package/src/shot-prompt.js +29 -9
- package/src/studio-actions.js +2 -2
- package/src/studio-agent-motion.js +19 -9
- package/src/studio-agent-protocol.js +1 -1
- package/src/studio-app-binding.js +3 -2
- package/src/workflow/AgentPanel.jsx +2 -2
- package/src/workflow/CozySceneNode.jsx +1 -1
- package/src/workflow/WorkflowBuilder.jsx +2 -2
- package/src/workflow/keyframe-pack-request.js +3 -10
- package/src/workflow/task-board.css +1 -1
- package/src/workflow/task-board.js +7 -5
- package/tools/loc-baseline.json +1 -2
- package/tools/run-tests.mjs +5 -5
- package/dist/assets/TaskBoard-ngdqiu7u.js +0 -1
- package/dist/assets/app-DmR7jBkz.js +0 -5144
- package/dist/assets/compile-worker-D0pKioa0.js +0 -5
- package/dist/assets/motion3-compile-BB3_1-EB.js +0 -1
- package/dist/assets/scene-asset-sync-CBx7XRti.css +0 -1
- package/dist/assets/scene-asset-sync-Cgdtr1Yw.js +0 -13
- package/dist/assets/task-board-ErQvfoaz.js +0 -14
- package/dist/assets/workflow-zQM-EKW1.js +0 -179
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$t as t,En as n,Ki as r,Ln as i,On as a,Qt as o,Tn as s,Xt as c,mi as l,on as u,zn as d}from"./task-board-ErQvfoaz.js";var f=e(r(),1),p=(0,f.createContext)(null);function m(){let e=(0,f.useContext)(p);return(0,f.useMemo)(()=>({run:(...t)=>e.bus.run(...t),subscribe:(...t)=>e.bus.subscribe(...t)}),[e])}var h=e=>({current:e});function g({characters:e=h(null),scenes:t=h(null),motion:n=h(null),state:r=h(null),getBus:i,notify:a}={}){let o=new Map,s=new WeakMap,c=new WeakSet,u=new Map,d=[],f=[],p=null,m=0,g={},_=e=>o.get(e),v=()=>[...o.values()],y={storeDomain:_,storeDomains:v},b={storeDomain:_,storeDomains:v},x=(e,t)=>{throw new l(e,t)},S=e=>_(e.name)===e.handle&&e.store.isRetained(e.id),C=e=>e.members.every(S),w=e=>e?f[0]:d.at(-1),T=(e,t)=>!p&&e===w(t)&&C(e)&&e.members.every(e=>t?e.store.canRedo()&&e.store.history().future[0]?.historyEntryId===e.id:e.store.canUndo(e.id));function E(){for(let[e,t]of u)t.members.some(e=>{if(_(e.name)!==e.handle)return!1;let t=e.store.history();return e.store.isRetained(e.id)||(t.past[0]??t.present).historyEntryId===e.id})||u.delete(e);d=d.filter(e=>u.has(e.id)),f=f.filter(e=>u.has(e.id))}function D(e,t){if(!e||!T(e,t))return!1;let n=y.revision?.current;for(let n of t?e.members:[...e.members].reverse())(t?n.store.redo:n.store.undo)();return t?(f.shift(),d.push(e)):(d.pop(),f.unshift(e)),m++,n!==void 0&&(y.revision.current=n+1),!0}function O(e){if(!e.length)return{historyEntryId:null};let t=e.length===1?e[0].id:crypto.randomUUID();if(u.has(t))return{historyEntryId:t};for(let e of f)u.delete(e.id);f=[];let n={id:t,members:e};return n.handle=e.length===1?e[0].handle:{documentStore:{isRetained:e=>e===t&&u.has(t)&&C(n)},canUndo:e=>(e===void 0||e===t)&&T(n,!1),stepHistory:e=>D(n,e)},u.set(t,n),d.push(n),m++,E(),{historyEntryId:t}}function k(e,t=null,n=!1){if(p){!p.running&&!n&&x(`TARGET_BUSY`,`A composed document transaction is already open.`);let r=p;return r.touch(e,t),{run:r.run,commit:()=>({historyEntryId:null}),cancel:r.cancel}}let r=new Map,i=!1,a=()=>{i&&x(`STALE_TARGET`,`The composed document transaction is closed.`)},o={running:0,touches:e=>r.has(e),touch(e,t){a();let n=_(e);n||x(`CAPABILITY_MISSING`,`No document owner is registered for ${e}.`),r.has(n)||r.set(n,{name:e,handle:n,store:n.documentStore,session:s.get(n)(t)})},run(e){a(),o.running++;try{return[...r.values()].reduceRight((e,t)=>()=>t.session.run(e),e)()}finally{o.running--}},commit(){a();let e=[...r.values()].flatMap(e=>{let t=e.session.commit();return t.historyEntryId?[{name:e.name,handle:e.handle,store:e.store,id:t.historyEntryId}]:[]});return i=!0,p=null,O(e)},savepoint(){return a(),new Map([...r].map(([e,t])=>[e,t.session.mark()]))},rollback(e=new Map){a();for(let[t,n]of[...r].reverse())n.session.rollback(e.get(t))},cancel(e){if(i)return!1;i=!0,p=null;for(let t of[...r.values()].reverse())t.session.cancel(e);return!0}};p=o;try{o.touch(e,t)}catch(e){throw o.cancel(),e}return o}function A(e,t,n=null,r=!1){let i=k(e,n,r),a=e=>({result:e,...i.commit()}),o=e=>{throw i.cancel(),e};try{let e=i.run(t);return e?.then?e.then(a,o):a(e)}catch(e){return o(e)}}return{beginAction:k,recordAction:A,notify:a,storeDomain:_,storeDomainForReceipt(e){let t=u.get(e?.undo?.historyEntryId);return t&&C(t)?t.handle:void 0},storeDomains:v,registerStoreDomain(e,t){let n=t.documentStore;if(n&&!c.has(n)){c.add(n);let r=r=>(r.historyEntryId&&!p&&O([{name:e,handle:t,store:n,id:r.historyEntryId}]),r),i=n.beginAction,a=n.recordAction;n.beginAction=(...e)=>{let t=i(...e);return{...t,commit:()=>r(t.commit())}},n.recordAction=(...e)=>{let t=a(...e);return t?.then?t.then(r):r(t)}}if(t.beginAction&&!s.has(t)&&(s.set(t,t.beginAction.bind(t)),t.beginAction=t=>k(e,t),t.stepHistory=e=>{let n=w(e);return n?.handle===t&&D(n,e)},t.load)){let e=t.load.bind(t);t.load=(...n)=>{p?.touches(t)&&p.cancel();let r=e(...n);return E(),r}}return o.set(e,t),()=>{p?.touches(t)&&p.cancel(),_(e)===t&&o.delete(e),E()}},nextStoreHistory(e){E();let t=w(e);return t&&T(t,e)?t.handle:void 0},historyEntry(e=!1){let t=w(e);return t&&T(t,e)?t.id:null},loadStoreDomains(e){let t=new Set;for(let[n,r]of o)r.load&&(r.load(r.sceneSlice?r.sceneSlice(e):e[n]),t.add(n));return t},forRender(e){return Object.create(this,{shared:{value:e}})},get undoClock(){return m},live:Object.freeze({get state(){return r.current},get characters(){return e.current},get scenes(){return t.current},get motion(){return n.current}}),publishLive(e){r.current=e},patchLive(e){Object.assign(r.current,e)},patchTimeline(e){Object.assign(r.current.timeline,e)},publishCharacters(t){e.current=t},publishScenes(e){t.current=e},publishMotion(e){n.current=e},get bus(){return i()},ports:y,actionPorts:b,updatePorts(e){g=e;for(let t of Object.keys(e))t===`revision`?y[t]=e[t]:y[t]||(y[t]=(...e)=>g[t](...e))},updateActionPorts(e){Object.assign(b,e)}}}var _=.5,v=[-1,1,-2,2],y=.1,b=5,x=e=>typeof e==`number`&&Number.isFinite(e),S=e=>s(e)<=_*Math.max(Math.abs(e.limit),.01);function C(e,t){let n=/\buse\[(\d+)\] (\w+)/.exec(e),r=Number(n?.[1]),i=n&&t.use?.[r],a=n&&i?.skill===n[2]?u[i.skill]:null;if(!a?.tune)return[];let o=[];for(let e of[1,2])for(let[t,n]of Object.entries(a.tune)){let s=a.args[t]??{},c=i.args?.[t]??s.default;if(x(c))for(let a of v.filter(t=>Math.abs(t)===e)){let e=c+a*n,l=s.type===`integer`?Math.round(e):Math.round(e*1e4)/1e4;!(l>0)||l===c||o.push(i.args?[{op:i.args[t]===void 0?`add`:`replace`,path:`/use/${r}/args/${t}`,value:l}]:[{op:`add`,path:`/use/${r}/args`,value:{[t]:l}}])}}return o}function w(e,t,n){if(![`SPEED`,`ACC`,`POP`].includes(e.kind))return[];let r=/between keys\[(\d+)\] f(\d+) and keys\[(\d+)\] f(\d+)/.exec(t);if(!r)return[];let[i,a,o,s]=r.slice(1).map(Number),c=n.keys??[];if(c[i]?.f!==a||c[o]?.f!==s)return[];let l=Number.isInteger(n.frames)?n.frames-1:1/0,u=[];for(let e of[1,2])a-e>=0&&u.push([{op:`replace`,path:`/keys/${i}/f`,value:a-e}]),s+e<=l&&u.push([{op:`replace`,path:`/keys/${o}/f`,value:s+e}]);return u}var T=e=>Math.round(e*1e4)/1e4;function E(e,t,n){let r=e.keys??[],i=[],a=(e.use??[]).map((e,t)=>({u:e,i:t})).filter(({u:e})=>(e?.skill===`standIdle`||e?.skill===`walkTo`)&&e.f0<=t).sort((e,t)=>e.u.f0-t.u.f0).at(-1),o=r.map((e,t)=>({k:e,j:t})).filter(({k:e})=>Array.isArray(e?.set?.root)&&e.set.root.length===3&&x(e.f)&&e.f>(a?.u.f0??-1));if(o.some(({k:e})=>e.f<=t))for(let e of[0,2])for(let t of[-n,n])i.push(o.map(({k:n,j:r})=>({op:`replace`,path:`/keys/${r}/set/root`,value:n.set.root.map((n,r)=>r===e?T(n+t*.03):n)})));else if(a){let{u:e,i:t}=a,r=u[e.skill].place??{},o=e.args?.steps??8;for(let[a,s]of Object.entries(r)){if(a===`step`&&o<=2)continue;let r=e.args?.[a]??u[e.skill].args[a]?.default,c=n=>[e.args?{op:e.args[a]===void 0?`add`:`replace`,path:`/use/${t}/args/${a}`,value:n}:{op:`add`,path:`/use/${t}/args`,value:{[a]:n}}];if(Array.isArray(r))for(let e of[0,r.length-1])for(let t of[-n,n])i.push(c(r.map((n,r)=>r===e?T(n+t*s):n)));else if(x(r))for(let e of[-n,n])r+e*s>.05&&i.push(c(T(r+e*s)))}}let s=r.map((e,t)=>({f:e?.f,j:t})).filter(({j:e})=>x(r[e]?.set?.spine_pitch)&&x(r[e].f)).sort((e,t)=>e.f-t.f),c=[s.filter(e=>e.f<=t).at(-1),s.find(e=>e.f>t)].filter(Boolean).map(e=>e.j);for(let e of c.length?[n,-n]:[])i.push(c.map(t=>({op:`replace`,path:`/keys/${t}/set/spine_pitch`,value:r[t].set.spine_pitch+e*b})));return i}var D=[10,20,30,-10],O=12;function k(e,t){let n=e.keys??[],r=Math.round(t),i=Number.isInteger(e.frames)?e.frames-1:1/0,a=n.filter(e=>x(e?.f)&&x(e?.set?.spine_pitch)).sort((e,t)=>e.f-t.f),o=a.filter(e=>e.f<r).at(-1),s=a.find(e=>e.f>r),c=o?.set.spine_pitch??0,l=n.findIndex(e=>e?.f===r&&e.set&&typeof e.set==`object`);return D.map(e=>{let t=c+e,a=[l>=0?{op:n[l].set.spine_pitch===void 0?`add`:`replace`,path:`/keys/${l}/set/spine_pitch`,value:t}:{op:`add`,path:`/keys/-`,value:{f:r,set:{spine_pitch:t}}}];return(!o||r-o.f>O)&&r-O>=0&&a.push({op:`add`,path:`/keys/-`,value:{f:r-O,set:{spine_pitch:c}}}),(!s||s.f-r>O)&&r+O<=i&&a.push({op:`add`,path:`/keys/-`,value:{f:r+O,set:{spine_pitch:s?.set.spine_pitch??c}}}),a})}function A(e,t){if(typeof e.cause!=`string`||e.kind===`WRIST`&&e.cause.startsWith(`fix.self`))return[];if(e.kind===`WRIST`&&x(e.worstFrame))return[...k(t,e.worstFrame),...[1,2].flatMap(n=>E(t,e.worstFrame,n)).filter(e=>e.every(e=>e.path.endsWith(`/spine_pitch`)))];let n=!e.patch&&S(e)?[...C(e.cause,t),...w(e,e.cause,t)]:[];return e.kind!==`GOAL`||!x(e.worstFrame)||s(e)>y?n:[...n,...E(t,e.worstFrame,1),...E(t,e.worstFrame,2)]}var j=3,M=2,N=2e4,P=e=>e?.qa?.groups??[],F=e=>P(e).reduce((e,t)=>e+(t.severity??0),0),I=e=>(e?.qa?.goals??[]).filter(e=>!e.ok).length,L=(e,t)=>P(e).find(e=>n(e)===t),R=e=>(e?.qa?.goals??[]).filter(e=>e.ok).map(e=>e.name),z=(e,t)=>F(e)<F(t)-1e-9&&I(e)<=I(t)&&R(t).every(t=>R(e).includes(t));function B(e,t,r){let i=Math.min(8,Math.max(1,Math.round(Number(t?.rounds??4))||4)),o=performance.now(),s=()=>performance.now()-o>=N,c=e,l=r(e),u=1,d=0,f=0,p=[],m=e=>{try{let t=a(c,e);return u+=1,{next:t,r:r(t)}}catch{return d+=1,null}},h=(e,t,n,{next:r,r:i})=>{p.push({kind:e.kind,subject:e.subject,patch:n,severity:[e.severity,L(i,t)?.severity??0]}),c=r,l=i},g=e=>{let t=null;for(let n of A(e,c)){if(s())break;let e=m(n);if(e&&(z(e.r,t?.r??l)?(t&&(d+=1),t={...e,patch:n}):d+=1,t&&F(t.r)===0&&!I(t.r)))break}return t&&h(e,n(e),t.patch,t),!!t};for(;f<i&&!s();){let e=P(l).filter(e=>e.patch).slice(0,j).map(n),t=P(l).filter(e=>A(e,c).length).slice(0,M).map(n);if(!e.length&&!t.length)break;f+=1;let r=0;for(let t of e){let e=L(l,t);if(!e?.patch||s())continue;let n=m(e.patch);n&&z(n.r,l)?(h(e,t,e.patch,n),r+=1):n&&(d+=1)}for(let e of r?[]:t){let t=L(l,e);if(t&&!s()&&g(t)){r+=1;break}}if(!r)break}return{spec:c,result:l,repair:{rounds:f,compiles:u,applied:p,rejected:d}}}var V=24,H=(e,t)=>{throw Object.assign(Error(t),{code:e})};function U(e){try{return e()}catch(e){throw/^MOTION_SPEC_INVALID/.test(e.message)&&H(`INVALID_ARGUMENT`,e.message.replace(/^MOTION_SPEC_INVALID:\s*/,``)),e}}function W({model:e,scene:n,spec:r,probes:a,checks:s,lenient:l,repair:u,bake:f}){let p=d(e),m={...s?{checks:s}:{},...l?{lenient:!0}:{}},h=e=>{let{spec:r,probes:i}=t(e,a);r?.fps!==void 0&&r.fps!==V&&H(`INVALID_ARGUMENT`,`spec.fps must be ${V}, the timeline rate.`);let s={fps:V,...r},c=U(()=>o(s,{sk:p,scene:n},{...m,probes:i}));return{...c,stored:c.spec===s?r:c.spec}},g=performance.now(),_=u?B(r,u,h):{spec:r,result:h(r)},v=_.result,y=_.spec?.label??null,b=_.repair?{...v.ms,repair:Math.round(performance.now()-g)}:v.ms,x=f?c(p,v.out,{position:f.position,yaw:f.yaw},{spec:v.stored,prompt:(`prompt`in f?f.prompt:y)??``}):void 0,S=x&&i(n,[v.expanded,v.stored]);return S&&(x.people=S),{stored:v.stored,qa:v.qa,observations:v.observations,used:v.used,fixed:v.fixed,search:v.search,timeline:v.timeline,...v.probes?{probes:v.probes}:{},...v.notes?{notes:v.notes}:{},ms:b,frameCount:v.out.frameCount,label:y,..._.repair?{repair:_.repair}:{},...x?{take:x}:{}}}var G=2;function K(e){throw e?.code&&!(e instanceof l)?new l(e.code,e.message):e instanceof Error?e:Object.assign(Error(e?.message??String(e)),{name:e?.name??`Error`})}var q=e=>{try{return W(e)}catch(e){return K(e)}};function J(){return typeof Worker==`function`?new Worker(new URL(`/assets/compile-worker-D0pKioa0.js`,``+import.meta.url),{type:`module`,name:`motion-compile`}):null}var Y=new Set,X={running:[],waiting:[]},Z=e=>{X=e;for(let e of Y)e(X)},Q=()=>X;function $(e){return Y.add(e),()=>Y.delete(e)}function ee({spawn:e=J,size:t=G}={}){let n=!1,r=null,i=0,a=[],o=[],s=()=>Z({running:a.filter(e=>e.job).map(e=>e.job.meta),waiting:o.map(e=>e.meta)}),c=e=>{n=!0,r??=`The motion compile worker stopped (${e}); compiling on the main thread, which is slower and blocks the editor while it runs.`;let t=[...a.flatMap(e=>e.job?[e.job]:[]),...o.splice(0)];for(let e of a.splice(0))e.worker?.terminate?.();for(let{job:e,resolve:n,reject:r}of t)try{n(q(e))}catch(e){r(e)}s()},l=()=>{let t;try{t=e()}catch(e){return c(e?.message??String(e)),null}if(!t)return n=!0,null;let r={worker:t,job:null};return t.onmessage=({data:{id:e,value:t,error:n}})=>{let i=r.job;if(!(!i||i.id!==e)){if(r.job=null,n)try{K(n)}catch(e){i.reject(e)}else i.resolve(t);u()}},t.onerror=e=>{e?.preventDefault?.(),c(e?.message||`worker error`)},t.onmessageerror=()=>c(`an answer could not be read`),a.push(r),r},u=()=>{for(;!n&&o.length;){let e=a.find(e=>!e.job)??(a.length<t?l():null);if(!e)break;e.job=o.shift();try{e.worker.postMessage({id:e.job.id,job:e.job.job})}catch(e){c(e?.message??String(e));return}}if(n)for(let e of o.splice(0))try{e.resolve(q(e.job))}catch(t){e.reject(t)}s()};return{run(e,t={}){return n||!a.length&&!l()?q(e):new Promise((n,r)=>{o.push({id:++i,job:e,meta:t,resolve:n,reject:r}),u()})},takeWarning(){let e=r;return e&&(r=``),e||null}}}export{g as a,p as i,ee as n,m as o,$ as r,Q as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.task-rows{border-left:2px solid var(--hairline,var(--agent-border,#7f7f7f40));min-width:0;margin:2px 0 2px 2px;padding-left:6px;display:grid}.task-row{min-width:0;height:24px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:0 6px;font-size:12px;display:flex}.task-row:hover,.task-row:focus-visible{background:var(--chip-fill,#7f7f7f1a);outline:none}.task-row-title{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;font-weight:550;overflow:hidden}.task-row-line{white-space:nowrap;text-overflow:ellipsis;min-width:64px;color:var(--text-2,var(--agent-text-muted));flex:1 1 0;overflow:hidden}.task-row[data-status=failed] .task-row-line{color:var(--danger,var(--agent-alert))}.task-row[data-status=cancelled],.task-row[data-status=done] .task-row-title{opacity:.8}.task-dot{background:var(--text-3,var(--agent-text-dim));border-radius:50%;flex:none;width:7px;height:7px}[data-status=running]>.task-dot,[data-status=starting]>.task-dot{background:var(--select,var(--agent-accent));animation:1.2s ease-in-out infinite task-dot-pulse}[data-status=waiting]>.task-dot,[data-status=queued]>.task-dot{box-shadow:inset 0 0 0 1.5px var(--text-3,var(--agent-text-dim));background:0 0}[data-status=done]>.task-dot{background:var(--ok,var(--agent-ok))}[data-status=failed]>.task-dot,[data-status=paused]>.task-dot{background:var(--danger,var(--agent-alert))}@keyframes task-dot-pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){[data-status]>.task-dot{animation:none}}.task-strip{border-bottom:1px solid var(--hairline,var(--agent-border,#7f7f7f33));flex:none;padding:0 8px}.task-strip-head{width:100%;height:26px;color:var(--text-2,var(--agent-text-muted));font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:0 6px;font-size:11.5px;display:flex}.task-strip-count{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.task-strip-caret{margin-left:auto;transition:transform .15s}.task-strip[data-expanded=true] .task-strip-caret{transform:rotate(180deg)}.task-strip-list{max-height:168px;margin:0 0 6px;overflow-y:auto}.task-detail{z-index:6;background:var(--surface-raised,var(--agent-bg));border-radius:inherit;flex-direction:column;display:flex;position:absolute;inset:0}.task-detail-head{border-bottom:1px solid var(--hairline,var(--agent-border));align-items:center;gap:6px;height:44px;padding:0 10px;display:flex}.task-detail-back{flex:none;align-items:center;gap:2px;display:inline-flex}.task-detail-title{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:600;overflow:hidden}.task-detail-body{flex:1;align-content:start;gap:6px;min-height:0;padding:10px 14px;font-size:12px;display:grid;overflow-y:auto}.task-detail-meta{color:var(--text-2,var(--agent-text-muted));align-items:center;gap:6px;display:flex}.task-detail-meta .agent-ghost-button{margin-left:auto}.task-detail-scope,.task-detail-reason,.task-detail-note,.task-detail-summary,.task-detail-notice{overflow-wrap:anywhere;margin:0}.task-detail-scope,.task-detail-reason,.task-detail-note,.task-detail-notice{color:var(--text-2,var(--agent-text-muted))}.task-detail-steer{border-top:1px solid var(--hairline,var(--agent-border));padding:8px 10px 10px}.task-detail-steer input{box-sizing:border-box;border:1px solid var(--hairline,var(--agent-border));width:100%;color:inherit;font:inherit;background:0 0;border-radius:10px;padding:7px 10px}.task-frames{gap:2px;margin:4px 0 0;padding-left:18px;display:grid}.task-frames li[data-kind=error]{color:var(--danger,var(--agent-alert))}.task-frames li[data-kind=reply],.task-frames li[data-kind=said]{margin-left:-18px;list-style:none}.task-frames-empty{color:var(--text-3,var(--agent-text-dim));margin:0}[data-task-scope]:after{content:"●";color:var(--select,var(--agent-accent));margin-left:6px;font-size:9px}@layer legacy{.workflow-app,.app{--agent-width-default:360px;--agent-width-min:300px;--agent-width-max:560px;--agent-rail-width:36px;--agent-drawer-top:58px;--agent-bg:#14161d;--agent-bg-raised:#1a1d26;--agent-bg-sunken:#11141b;--agent-bubble:#262c44;--agent-border:#292d38;--agent-border-strong:#353a4a;--agent-border-focus:#707dce;--agent-text:#edf0fb;--agent-text-muted:#9aa2b8;--agent-text-dim:#737b92;--agent-accent:#8994ff;--agent-accent-deep:#303b71;--agent-accent-edge:#4c5aab;--agent-accent-text:#e6e9ff;--agent-ok:#4dcda4;--agent-warn:#efb064;--agent-alert:#ef759d;--agent-radius-sm:5px;--agent-radius-md:6px;--agent-radius-lg:9px;--agent-radius-pill:999px;--agent-space-1:4px;--agent-space-2:6px;--agent-space-3:8px;--agent-space-4:11px;--agent-space-5:14px;--agent-space-6:18px;--agent-font-xs:9px;--agent-font-sm:10px;--agent-font-md:11px;--agent-font-lg:12px;--agent-font-xl:14px;--agent-dot:6px;--agent-thumb:56px;--agent-shadow:0 12px 34px #0006;--agent-motion:.14s ease;--agent-track:#242836;--agent-warn-edge:#6a5a34;--agent-warn-bg:#241f16;--agent-warn-text:#f0dcb4;--agent-alert-edge:#6d3a52;--agent-alert-bg:#2a1c26;--agent-alert-text:#f3c7d8;--agent-ok-deep:#16302a}.app{--agent-drawer-top:48px}.app .agent-panel.collapsed{display:none}.agent-panel,.agent-panel *,.agent-panel :before,.agent-panel :after{box-sizing:border-box}.agent-panel.embedded{border-left:0;flex:1;width:100%;min-height:0}.agent-panel[hidden]{display:none}.agent-panel{min-height:0;width:var(--agent-width-default);border-left:1px solid var(--agent-border);background:var(--agent-bg);color:var(--agent-text);font-size:var(--agent-font-lg);flex-direction:column;flex:none;display:flex;position:relative}.agent-panel.collapsed{width:var(--agent-rail-width);padding:var(--agent-space-4) 0;align-items:center;gap:var(--agent-space-4);background:var(--agent-bg-raised)}.agent-resize{cursor:col-resize;z-index:3;background:0 0;border:0;width:7px;height:100%;padding:0;position:absolute;top:0;left:-3px}.agent-resize:after{content:"";width:1px;height:100%;transition:background var(--agent-motion);background:0 0;position:absolute;top:0;left:3px}.agent-resize:hover:after,.agent-resize:focus-visible:after,.agent-panel.resizing .agent-resize:after{background:var(--agent-accent)}.agent-rail-toggle{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);color:#c8ccdb;cursor:pointer;width:26px;height:26px;font:inherit;background:#20232d;place-items:center;display:grid}.agent-rail-toggle:hover{background:#2b3040;border-color:#606b9a}.agent-rail-label{writing-mode:vertical-rl;color:var(--agent-text-dim);font-size:var(--agent-font-sm);letter-spacing:.14em;text-transform:uppercase}.agent-status-dot{width:var(--agent-dot);height:var(--agent-dot);border-radius:var(--agent-radius-pill);background:var(--agent-text-dim);flex:none}.agent-status-dot.ok{background:var(--agent-ok);box-shadow:0 0 8px var(--agent-ok)}.agent-status-dot.busy{background:var(--agent-accent);box-shadow:0 0 8px var(--agent-accent)}.agent-status-dot.warn{background:var(--agent-warn);box-shadow:0 0 8px var(--agent-warn)}.agent-status-dot.alert{background:var(--agent-alert);box-shadow:0 0 8px var(--agent-alert)}.agent-header{align-items:center;gap:var(--agent-space-2);height:58px;padding:0 var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-chrome,#171921);flex:none;display:flex}.agent-title{font-size:var(--agent-font-xl);color:var(--agent-text-strong,#f5f7ff);margin:0;font-weight:700}.agent-header-spacer{flex:1}.agent-icon-button,.agent-ghost-button{align-items:center;gap:var(--agent-space-1);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-panel,#20232d);color:var(--agent-text-soft,#c8ccdb);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);cursor:pointer;display:flex}.agent-icon-button{padding:var(--agent-space-2)}.agent-icon-button:hover,.agent-ghost-button:hover{border-color:var(--agent-border-strong,#606b9a);background:var(--agent-hover,#2b3040);color:var(--agent-text-strong,#f5f7ff)}.agent-ghost-button[disabled],.agent-icon-button[disabled]{opacity:.45;cursor:not-allowed}.agent-overflow{position:relative}.agent-menu{top:calc(100% + var(--agent-space-2));z-index:6;min-width:148px;padding:var(--agent-space-1);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-raised);box-shadow:var(--agent-shadow);flex-direction:column;display:flex;position:absolute;right:0}.agent-menu button{border-radius:var(--agent-radius-sm);color:var(--agent-text-soft,#c8ccdb);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);text-align:left;cursor:pointer;background:0 0;border:0}.agent-menu button[disabled]{opacity:.45;cursor:not-allowed}.agent-menu button:not([disabled]):hover{background:var(--agent-hover,#2b3040);color:var(--agent-text-strong,#f5f7ff)}.agent-account{align-items:center;gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-size:var(--agent-font-md);flex:none;display:flex}.agent-account-email{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.agent-plan-badge{padding:2px var(--agent-space-2);border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-pill);color:var(--agent-text-strong,#cfd5ff);font-size:var(--agent-font-xs);letter-spacing:.06em;text-transform:uppercase;flex:none}.agent-account-reset{color:var(--agent-text-dim);font-size:var(--agent-font-sm);flex:none;margin-left:auto}.agent-keys{gap:var(--agent-space-3);max-height:70%;padding:var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-bg-sunken);flex-direction:column;flex:none;display:flex;overflow-y:auto}.agent-keys-head{align-items:center;gap:var(--agent-space-2);display:flex}.agent-keys-title{color:var(--agent-text);font-size:var(--agent-font-lg);flex:1;margin:0;font-weight:600}.agent-keys-hint,.agent-keys-note{color:var(--agent-text-dim);font-size:var(--agent-font-sm);margin:0}.agent-keys-note.alert{color:var(--agent-alert)}.agent-key-row{gap:var(--agent-space-2);padding:var(--agent-space-3);border:1px solid var(--agent-border);border-radius:var(--agent-radius-md);background:var(--agent-bg-raised);flex-direction:column;display:flex}.agent-key-head{align-items:center;gap:var(--agent-space-2);display:flex}.agent-key-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--agent-text);font-size:var(--agent-font-md);flex:1;overflow:hidden}.agent-key-source{color:var(--agent-text-dim);font-size:var(--agent-font-xs);letter-spacing:.04em;flex:none}.agent-key-controls{align-items:center;gap:var(--agent-space-2);flex-wrap:wrap;display:flex}.agent-key-input{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-bg-sunken);min-width:0;color:var(--agent-text);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);outline:0;flex:120px}.agent-key-input:focus{border-color:var(--agent-border-focus)}.agent-key-input[disabled]{opacity:.55}.agent-key-save{border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-md);background:var(--agent-accent-deep);color:var(--agent-accent-text);padding:var(--agent-space-2) var(--agent-space-4);font:inherit;font-size:var(--agent-font-md);cursor:pointer;flex:none}.agent-key-save[disabled],.agent-key-remove[disabled]{opacity:.45;cursor:default}.agent-key-error{color:var(--agent-alert);font-size:var(--agent-font-sm);margin:0}.agent-key-note{color:var(--agent-text-dim);font-size:var(--agent-font-sm);margin:0}.agent-login-group,.agent-login-flow,.agent-login-form,.agent-login-choices{gap:var(--agent-space-2);flex-direction:column;display:flex}.agent-login-ask{color:var(--agent-text);font-size:var(--agent-font-sm)}.agent-login-log{gap:var(--agent-space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.agent-login-log li{align-items:flex-start;gap:var(--agent-space-1);flex-direction:column;display:flex}.agent-login-code{margin-top:var(--agent-space-1);font-size:var(--agent-font-xl);letter-spacing:.12em;display:block}.agent-login-open{text-decoration:none;display:inline-block}.agent-key-endpoint-label{color:var(--agent-text-dim);font-size:var(--agent-font-xs);letter-spacing:.04em}.agent-transcript{gap:var(--agent-space-4);min-height:0;padding:var(--agent-space-5) var(--agent-space-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.agent-row{gap:var(--agent-space-2);flex-direction:column;display:flex}.agent-row.user{align-items:flex-end}.agent-bubble{max-width:86%;padding:var(--agent-space-3) var(--agent-space-4);border:1px solid var(--agent-border-strong,#343b58);border-radius:var(--agent-radius-lg);background:var(--agent-bubble);color:var(--agent-text);font-size:var(--agent-font-lg);white-space:pre-wrap;word-break:break-word;line-height:1.5}.agent-assistant-text{color:var(--agent-text-soft,#dfe3f2);font-size:var(--agent-font-lg);white-space:pre-wrap;word-break:break-word;line-height:1.6}.agent-assistant-text>*{margin:0}.agent-assistant-text>*+*{margin-top:6px}.agent-assistant-text ul,.agent-assistant-text ol{white-space:normal;padding-left:18px}.agent-assistant-text li+li{margin-top:2px}.agent-assistant-text .agent-reply-heading{font-weight:600}.agent-assistant-text code{background:color-mix(in srgb, currentColor 10%, transparent);border-radius:3px;padding:0 3px;font:.92em ui-monospace,monospace}.agent-assistant-text pre{border-radius:var(--agent-radius-sm);background:color-mix(in srgb, currentColor 8%, transparent);white-space:pre;padding:6px 8px;overflow-x:auto}.agent-assistant-text pre code{background:0 0;padding:0}.agent-reply-table{white-space:normal;overflow-x:auto}.agent-reply-table table{border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:.92em}.agent-reply-table th,.agent-reply-table td{border-bottom:1px solid color-mix(in srgb, currentColor 16%, transparent);text-align:left;vertical-align:top;padding:2px 10px 2px 0}.agent-reply-table th{font-weight:600}.agent-caret{width:6px;color:var(--agent-accent);margin-left:2px;animation:1s steps(2,start) infinite agent-blink;display:inline-block}@keyframes agent-blink{50%{opacity:0}}.agent-card{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-lg);background:var(--agent-panel,#20232d);overflow:hidden}.agent-tool-card summary{align-items:center;gap:var(--agent-space-3);padding:var(--agent-space-3) var(--agent-space-4);color:var(--agent-text-soft,#ccd1e2);font-size:var(--agent-font-md);cursor:pointer;list-style:none;display:flex}.agent-tool-card summary::-webkit-details-marker{display:none}.agent-tool-label{flex:1}.agent-tool-badge{color:#aeb7ff;border:1px solid #6975d8;border-radius:999px;padding:1px 5px;font-size:10px;line-height:1.2}.agent-tool-elapsed{color:var(--agent-text-dim);font:var(--agent-font-sm) ui-monospace, monospace}.agent-tool-detail{padding:var(--agent-space-3) var(--agent-space-4);border-top:1px solid var(--agent-border,#2c3140);background:var(--agent-bg-sunken);color:var(--agent-text-muted,#98a0b8);font:var(--agent-font-sm) ui-monospace, monospace;white-space:pre-wrap;word-break:break-all;margin:0}.agent-card.failed{border-color:#6d3a52}.agent-error{gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);color:#f3c7d8;font-size:var(--agent-font-md);background:#2a1c26;border-top:1px solid #6d3a52;flex-direction:column;display:flex}.agent-error-actions{gap:var(--agent-space-2);display:flex}.agent-image-card figure{margin:0}.agent-image-card img{background:var(--agent-bg-sunken);cursor:zoom-in;width:100%;height:auto;display:block}.agent-image-actions{gap:var(--agent-space-2);padding:var(--agent-space-3);border-top:1px solid var(--agent-border,#2c3140);flex-wrap:wrap;display:flex}.agent-image-actions button,.agent-image-actions a{align-items:center;gap:var(--agent-space-1);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-hover,#292d39);color:var(--agent-text-soft,#ccd1e2);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;text-decoration:none;display:inline-flex}.agent-image-actions button.primary{border-color:var(--agent-accent-edge);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff)}.agent-image-actions button:hover,.agent-image-actions a:hover{border-color:var(--agent-border-strong,#606b9a)}.agent-placed{align-items:center;gap:var(--agent-space-2);padding:var(--agent-space-3);border-top:1px solid var(--agent-border,#2c3140);color:var(--agent-ok);font-size:var(--agent-font-md);display:flex}.agent-placed button{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-hover,#292d39);color:var(--agent-text-soft,#ccd1e2);padding:var(--agent-space-1) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;margin-left:auto}.agent-lightbox{z-index:40;cursor:zoom-out;background:#06070bd9;border:0;place-items:center;padding:5vh 5vw;display:grid;position:fixed;inset:0}.agent-lightbox img{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-lg);max-width:100%;max-height:90vh;box-shadow:var(--agent-shadow)}.agent-job-card,.agent-receipt-card,.agent-failure-card{gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);font-size:var(--agent-font-md);flex-direction:column;display:flex}.agent-job-head,.agent-receipt-head,.agent-failure-head{align-items:center;gap:var(--agent-space-2);color:var(--agent-text-soft,#ccd1e2);display:flex}.agent-job-label{font-weight:600}.agent-job-badge{padding:1px var(--agent-space-2);border:1px solid var(--agent-warn-edge);border-radius:var(--agent-radius-pill);background:var(--agent-warn-bg);color:var(--agent-warn);font-size:var(--agent-font-xs);letter-spacing:.06em;text-transform:uppercase;flex:none}.agent-job-progress{color:var(--agent-text-dim);font:var(--agent-font-sm) ui-monospace, monospace;flex:none;margin-left:auto}.agent-job-phase,.agent-job-outcome,.agent-failure-message,.agent-failure-recovery{color:var(--agent-text-muted);word-break:break-word;margin:0;line-height:1.5}.agent-job-bar{height:var(--agent-space-1);border-radius:var(--agent-radius-pill);background:var(--agent-track);overflow:hidden}.agent-job-bar-fill{border-radius:inherit;background:var(--agent-accent);transform-origin:0;width:100%;height:100%;transition:transform var(--agent-motion);display:block}.agent-job-limits,.agent-receipt-notes{padding-left:var(--agent-space-5);color:var(--agent-text-dim);font-size:var(--agent-font-sm);margin:0;line-height:1.5}.agent-job-actions{align-items:center;gap:var(--agent-space-2);flex-wrap:wrap;display:flex}.agent-job-actions:empty{display:none}.agent-job-accept{border-color:var(--agent-warn-edge);background:var(--agent-warn-bg);color:var(--agent-warn-text)}.agent-job-accept:hover{border-color:var(--agent-warn);color:var(--agent-warn-text);background:#33291a}.agent-job-note{align-items:center;gap:var(--agent-space-1);color:var(--agent-text-dim);font-size:var(--agent-font-sm);display:inline-flex}.agent-job-note.alert{color:var(--agent-alert)}.agent-job-card[data-job-state=installed]{background:var(--agent-ok-deep);border-color:#2f5a4b}.agent-job-card[data-job-state=review_required]{border-color:var(--agent-warn-edge);background:var(--agent-warn-bg)}.agent-job-card[data-job-state=failed],.agent-job-card[data-job-state=stale_target],.agent-job-card[data-job-state=stale_environment]{border-color:#6d3a52}.agent-receipt-summary{word-break:break-word;line-height:1.5}.agent-supervisor-card{gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-size:var(--agent-font-md);border-style:dashed;flex-direction:column;display:flex}.agent-supervisor-head{align-items:center;gap:var(--agent-space-2);display:flex}.agent-supervisor-toggle{margin-left:auto}.agent-supervisor-summary{word-break:break-word;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;line-height:1.5;display:-webkit-box;overflow:hidden}.agent-supervisor-card[data-open=true] .agent-supervisor-summary{display:block}.agent-supervisor-badge.blocker{border-color:var(--agent-alert-edge);background:var(--agent-alert-bg);color:var(--agent-alert)}.agent-supervisor-fix{margin-top:var(--agent-space-1);font:var(--agent-font-sm) ui-monospace, monospace;white-space:pre-wrap;word-break:break-all;color:var(--agent-text-dim);display:block}.agent-supervisor-badge.note{border-color:var(--agent-border-strong);color:var(--agent-text-dim);background:0 0}.agent-failure-card{background:#2a1c26;border-color:#6d3a52}.agent-failure-code{color:var(--agent-alert);font:var(--agent-font-sm) ui-monospace, monospace;letter-spacing:.04em}.agent-image-error{padding:var(--agent-space-3);color:#f3c7d8;font-size:var(--agent-font-md);background:#2a1c26;border-top:1px solid #6d3a52;margin:0;line-height:1.45}.agent-state-card{gap:var(--agent-space-3);margin:var(--agent-space-6) var(--agent-space-4);padding:var(--agent-space-6) var(--agent-space-5);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-lg);background:var(--agent-bg-raised);text-align:center;flex-direction:column;display:flex}.agent-state-card h3{font-size:var(--agent-font-xl);color:var(--agent-text-strong,#f5f7ff);margin:0;font-weight:700}.agent-state-card p{color:var(--agent-text-dim);font-size:var(--agent-font-md);margin:0;line-height:1.55}.agent-state-card .agent-use-key{align-self:center}.agent-offline-icon{color:var(--agent-text-muted);align-self:center}.agent-offline-card code{padding:0 var(--agent-space-1);border-radius:var(--agent-radius-sm);background:var(--agent-bg-sunken);color:var(--agent-text);font-size:var(--agent-font-sm)}.agent-offline-retry{align-self:center;align-items:center;gap:var(--agent-space-2);display:inline-flex}.agent-signin-error{align-self:center;max-width:32ch}.agent-primary-button{border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-md);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff);padding:var(--agent-space-3) var(--agent-space-5);font:inherit;font-size:var(--agent-font-lg);cursor:pointer;align-self:center}.agent-primary-button:hover{background:#37437f;border-color:#6b7ad4}.agent-primary-button[disabled]{opacity:.6;cursor:progress}.agent-spinner{border:2px solid #383e55;border-top-color:var(--agent-accent);border-radius:var(--agent-radius-pill);align-self:center;width:18px;height:18px;animation:.7s linear infinite agent-spin}@keyframes agent-spin{to{transform:rotate(360deg)}}.agent-paused{gap:var(--agent-space-3);padding:var(--agent-space-4);border-radius:var(--agent-radius-lg);color:#f0dcb4;font-size:var(--agent-font-md);background:#241f16;border:1px solid #6a5a34;flex-direction:column;display:flex}.agent-paused-head{align-items:center;gap:var(--agent-space-2);font-weight:600;display:flex}.agent-paused-countdown{font:var(--agent-font-md) ui-monospace, monospace;color:var(--agent-warn);margin-left:auto}.agent-paused-actions{gap:var(--agent-space-2);display:flex}.agent-paused-actions button{border-radius:var(--agent-radius-sm);color:#f3e3c1;padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;background:#33291a;border:1px solid #6a5a34}.agent-paused-actions button:hover{border-color:var(--agent-warn)}.agent-suggestions{gap:var(--agent-space-2);margin-top:var(--agent-space-3);flex-direction:column;display:flex}.agent-chip{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill);background:var(--agent-panel,#20232d);color:#bcc2d4;padding:var(--agent-space-2) var(--agent-space-4);font:inherit;font-size:var(--agent-font-md);text-align:left;cursor:pointer}.agent-chip:hover{border-color:var(--agent-border-strong,#606b9a);background:var(--agent-hover,#2b3040);color:var(--agent-text-strong,#f5f7ff)}.agent-activity{align-items:center;gap:var(--agent-space-2);min-height:28px;padding:var(--agent-space-2) var(--agent-space-4);border-top:1px solid var(--agent-border);background:var(--agent-bg-raised);color:var(--agent-text-muted);font-size:var(--agent-font-md);flex:none;display:flex}.agent-activity+.agent-composer{border-top:0}.agent-activity-text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.agent-activity-indicator{width:var(--agent-dot);height:var(--agent-dot);border-radius:var(--agent-radius-pill);background:var(--agent-text-dim);flex:none}.agent-activity-indicator.busy{background:var(--agent-accent);box-shadow:0 0 8px var(--agent-accent);animation:1.1s ease-in-out infinite agent-pulse}.agent-activity-indicator.ok{background:var(--agent-ok)}.agent-activity-indicator.warn{background:var(--agent-warn)}.agent-activity-indicator.alert{background:var(--agent-alert)}.agent-activity[data-agent-activity-kind=idle]{color:var(--agent-text-dim)}.agent-activity[data-agent-activity=done]{color:var(--agent-ok)}.agent-activity[data-agent-activity=failed],.agent-activity[data-agent-activity=no-model]{color:var(--agent-alert)}@keyframes agent-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.65)}}.agent-composer{gap:var(--agent-space-3);padding:var(--agent-space-4);border-top:1px solid var(--agent-border);background:var(--agent-bg-raised);flex-direction:column;flex:none;display:flex}.agent-composer textarea{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-sunken);width:100%;height:68px;color:var(--agent-text);padding:var(--agent-space-3) var(--agent-space-4);font:inherit;font-size:var(--agent-font-lg);resize:none;outline:0;line-height:1.5}.agent-composer textarea:focus{border-color:var(--agent-border-focus)}.agent-composer textarea[disabled]{opacity:.55}.agent-attachments{gap:var(--agent-space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.agent-attachment{width:var(--agent-thumb);height:var(--agent-thumb);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-sunken);position:relative;overflow:hidden}.agent-attachment img{object-fit:cover;width:100%;height:100%;display:block}.agent-attachment-remove{top:var(--agent-space-1);right:var(--agent-space-1);width:var(--agent-space-5);height:var(--agent-space-5);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill);background:var(--agent-bg);color:var(--agent-text-muted);cursor:pointer;transition:color var(--agent-motion), border-color var(--agent-motion);justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.agent-attachment-remove:hover{border-color:var(--agent-alert);color:var(--agent-alert)}.agent-attachment-notice{color:var(--agent-warn);font-size:var(--agent-font-sm);margin:0}.agent-composer[data-agent-dropping=true]{box-shadow:inset 0 0 0 1px var(--agent-accent-edge);background:var(--agent-accent-deep)}.agent-bubble-attachments{justify-content:flex-end;gap:var(--agent-space-2);flex-wrap:wrap;max-width:86%;display:flex}.agent-bubble-attachments img{width:var(--agent-thumb);height:var(--agent-thumb);object-fit:cover;border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-sunken);cursor:zoom-in}.agent-composer-controls{align-items:center;gap:var(--agent-space-2);display:flex}.agent-attach-chip{align-items:center;gap:var(--agent-space-2);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill);background:var(--agent-panel,#20232d);color:#b6bcd0;padding:var(--agent-space-1) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;display:flex}.agent-attach-chip[aria-pressed=true]{border-color:var(--agent-accent-edge);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff)}.agent-attach-thumb{background:linear-gradient(135deg,#2a2f52,#5b3550);border:1px solid #454d70;border-radius:3px;width:22px;height:14px}.agent-model-select{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-bg-sunken);color:#e5e8f5;min-width:0;padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);outline:0;flex:1}.agent-model-select:focus{border-color:var(--agent-border-focus)}.agent-model-select optgroup{background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-style:normal;font-weight:600}.agent-model-select option:disabled{color:var(--agent-text-dim)}.agent-model-roles{margin:var(--agent-space-1) 0 0;white-space:nowrap;text-overflow:ellipsis;color:var(--agent-text-dim);font-size:var(--agent-font-sm);overflow:hidden}.agent-composer-picks{margin-bottom:var(--agent-space-2)}.agent-effort-select{flex:none;width:auto;max-width:42%}.agent-composer-spacer{flex:1}.agent-send{border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-md);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff);padding:var(--agent-space-2) var(--agent-space-5);font:inherit;font-size:var(--agent-font-md);cursor:pointer;flex:none}.agent-send.stop{color:#f8d5e3;background:#4a2536;border-color:#7a3f58}.agent-send[disabled]{opacity:.45;cursor:not-allowed}.agent-toast{padding:var(--agent-space-3) var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-size:var(--agent-font-md);flex:none;line-height:1.4}.agent-toast.alert{border-bottom-color:var(--agent-alert-edge);background:var(--agent-alert-bg);color:var(--agent-alert-text)}.agent-footer-hint{padding:0 var(--agent-space-4) var(--agent-space-4);background:var(--agent-bg-raised);color:var(--agent-text-dim);font-size:var(--agent-font-xs);border-top:0;flex:none;margin:0;line-height:1.4}@media (width<=1100px){.agent-panel:not(.collapsed):not(.embedded){top:var(--agent-drawer-top);z-index:20;box-shadow:var(--agent-shadow);position:fixed;bottom:0;right:0}.agent-panel.collapsed:not(.embedded){top:var(--agent-drawer-top);z-index:20;position:fixed;bottom:0;right:0}.agent-resize{display:none}}}.agent-supervisor-toggle{font:inherit;border:1px solid var(--agent-border,#444);color:var(--agent-text-dim,#999);cursor:pointer;background:0 0;border-radius:6px;flex:none;padding:4px 8px;font-size:12px}.agent-supervisor-toggle.is-on{color:var(--agent-text,#ddd);border-color:var(--agent-border-focus,#6a9)}.agent-supervisor-toggle:focus-visible{outline:2px solid var(--agent-border-focus,#6a9);outline-offset:1px}.agent-progress-card{gap:var(--agent-space-3,6px);padding:var(--agent-space-3,6px) var(--agent-space-4,8px);border-color:var(--agent-accent-edge);flex-direction:column;display:flex}.agent-progress-head{align-items:center;gap:var(--agent-space-3,6px);display:flex}.agent-progress-title{color:var(--agent-text);font-size:var(--agent-font-lg);font-variant-numeric:tabular-nums;flex:1;font-weight:600}.agent-progress-chip{border-radius:var(--agent-radius-pill);font-size:var(--agent-font-sm);white-space:nowrap;border:1px solid;padding:1px 7px;line-height:1.4}.agent-progress-chip.installed{color:var(--agent-ok)}.agent-progress-chip.draft{color:var(--agent-warn)}.agent-progress-label{color:var(--agent-text-muted);font-size:var(--agent-font-md);overflow-wrap:anywhere;margin:0}.agent-progress-section{flex-direction:column;gap:4px;min-width:0;display:flex}.agent-progress-section h4{color:var(--agent-text-dim);font-size:var(--agent-font-sm);letter-spacing:.04em;text-transform:uppercase;margin:0;font-weight:600}.agent-progress-trend{align-items:center;gap:var(--agent-space-3,6px);display:flex}.agent-progress-trend svg{flex:1;min-width:0;height:40px}.agent-progress-trend .base{stroke:var(--agent-border-strong);stroke-width:1px}.agent-progress-trend .line{fill:none;stroke:var(--agent-accent);stroke-width:1.6px;vector-effect:non-scaling-stroke}.agent-progress-trend .dot{fill:var(--agent-accent)}.agent-progress-trend .end.ok{fill:var(--agent-ok)}.agent-progress-trend .end.issue{fill:var(--agent-warn)}.agent-progress-trend-text{color:var(--agent-text);font-size:var(--agent-font-md);font-variant-numeric:tabular-nums;white-space:nowrap}.agent-progress-goals,.agent-progress-issues{font-size:var(--agent-font-md);flex-direction:column;gap:3px;margin:0;padding:0;list-style:none;display:flex}.agent-progress-goals li{grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:6px;display:grid}.agent-progress-mark{display:inline-flex}.agent-progress-mark.ok{color:var(--agent-ok)}.agent-progress-mark.miss{color:var(--agent-alert)}.agent-progress-goal-name{color:var(--agent-text);overflow-wrap:anywhere}.agent-progress-goal-value{color:var(--agent-text);font-variant-numeric:tabular-nums;white-space:nowrap}.agent-progress-goal-value .need{color:var(--agent-text-dim)}.agent-progress-issues li{color:var(--agent-text-muted);overflow-wrap:anywhere}.agent-progress-issues .kind{color:var(--agent-warn);font-weight:600}.agent-progress-issues .meta{color:var(--agent-text-dim);font-variant-numeric:tabular-nums}.agent-progress-sheets{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:4px;display:grid}.agent-progress-sheet{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-bg-sunken);cursor:zoom-in;padding:0;overflow:hidden}.agent-progress-sheet:hover{border-color:var(--agent-accent-edge)}.agent-progress-sheet:focus-visible{outline:2px solid var(--agent-border-focus);outline-offset:1px}.agent-progress-sheet img{object-fit:cover;width:100%;height:56px;display:block}.agent-progress-viewer{z-index:1000;cursor:zoom-out;background:#0c0e14db;border:0;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:32px;display:flex;position:fixed;inset:0}.agent-progress-viewer img{object-fit:contain;background:#f4f5f7;border-radius:6px;max-width:100%;max-height:calc(100% - 40px);box-shadow:0 12px 40px #00000073}.agent-progress-viewer-caption{color:#e6e9f2;font:12px/1.4 system-ui,sans-serif}.agent-progress-viewer:focus-visible{outline-offset:-4px;outline:2px solid #8994ff}.agent-progress-fold{align-items:baseline;gap:var(--agent-space-3,6px);min-width:0;color:var(--agent-text-muted);font:inherit;font-size:var(--agent-font-md);text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:flex}.agent-progress-fold h4{flex:none}.agent-progress-fold span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.agent-progress-fold[aria-expanded=true] span{display:none}.agent-steps{--agent-step-icon:11px;flex-direction:column;display:flex}.agent-steps-head{align-items:center;gap:var(--agent-space-3);width:100%;padding:var(--agent-space-2) var(--agent-space-4);color:var(--agent-text-soft,var(--agent-text));font:inherit;font-size:var(--agent-font-md);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.agent-steps-title{font-variant-numeric:tabular-nums;flex:1}.agent-steps-chevron{color:var(--agent-text-dim);transition:transform var(--agent-motion)}.agent-steps[data-open=true] .agent-steps-chevron{transform:rotate(90deg)}.agent-steps-list{padding:0 0 var(--agent-space-2);border-top:1px solid var(--agent-border);flex-direction:column;margin:0;list-style:none;display:flex}.agent-step{padding:0 var(--agent-space-4)}.agent-step.narration{gap:var(--agent-space-3);padding-top:var(--agent-space-1);color:var(--agent-text-muted);font-size:var(--agent-font-md);display:flex}.agent-step-row{align-items:center;gap:var(--agent-space-3);width:100%;min-width:0;padding:var(--agent-space-1) 0 0;color:var(--agent-text);font:inherit;font-size:var(--agent-font-md);text-align:left;background:0 0;border:0;display:flex}button.agent-step-row{cursor:pointer}.agent-step-label{white-space:nowrap;flex:none}.agent-step.thinking .agent-step-label{color:var(--agent-text-muted)}.agent-step-subject{min-width:0;color:var(--agent-text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.agent-step-label+.agent-step-time{margin-left:auto}.agent-step-time{color:var(--agent-text-dim);font:var(--agent-font-sm) ui-monospace, monospace;font-variant-numeric:tabular-nums;flex:none}.agent-step-result,.agent-step-thought{padding-left:calc(var(--agent-step-icon) + var(--agent-space-3));color:var(--agent-text-muted);font-size:var(--agent-font-sm);overflow-wrap:anywhere;margin:0;line-height:1.45}.agent-step-thought{white-space:pre-wrap;max-height:160px;overflow-y:auto}.agent-step.failed .agent-step-result{color:var(--agent-alert)}.agent-step-icon{width:var(--agent-step-icon);flex:none}.agent-step-icon.ok{color:var(--agent-ok)}.agent-step-icon.alert{color:var(--agent-alert)}.agent-step-icon.warn{color:var(--agent-warn)}.agent-step-dot{width:var(--agent-step-icon);height:var(--agent-step-icon);background:radial-gradient(circle, var(--agent-text-dim) 0 2px, transparent 2.5px);flex:none}.agent-step-spin{width:var(--agent-step-icon);height:var(--agent-step-icon);border:1.5px solid var(--agent-border-strong);border-top-color:var(--agent-accent);border-radius:var(--agent-radius-pill);flex:none;animation:.7s linear infinite agent-spin}.agent-steps-note{padding:var(--agent-space-2) var(--agent-space-4);border-top:1px solid var(--agent-border);color:var(--agent-warn);font-size:var(--agent-font-sm);margin:0;line-height:1.45}.agent-activity-detail{min-width:0;color:var(--agent-text-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.agent-plan-row[data-plan-live=true]{top:calc(-1 * var(--agent-space-5));z-index:1;padding-top:var(--agent-space-2);margin-top:calc(-1 * var(--agent-space-2));background:var(--agent-bg);position:sticky}.agent-plan{--agent-plan-mark:11px;flex-direction:column;display:flex}.agent-plan-row[data-plan-live=true] .agent-plan{box-shadow:0 6px 14px -8px #000c}.agent-plan-head{align-items:center;gap:var(--agent-space-3);padding:var(--agent-space-2) var(--agent-space-4);color:var(--agent-text-soft,var(--agent-text));font-size:var(--agent-font-md);display:flex}.agent-plan-title{flex:none;font-weight:600}.agent-plan-bar{border-radius:var(--agent-radius-pill);background:var(--agent-track);flex:1;height:3px;overflow:hidden}.agent-plan-fill{background:var(--agent-ok);height:100%;transform:scaleX(var(--agent-plan-done,0));transform-origin:0;transition:transform var(--agent-motion);display:block}.agent-plan-count{color:var(--agent-text-dim);font:var(--agent-font-sm) ui-monospace, monospace;font-variant-numeric:tabular-nums;flex:none}.agent-plan-steps{padding:var(--agent-space-1) 0 var(--agent-space-2);border-top:1px solid var(--agent-border);flex-direction:column;gap:2px;margin:0;list-style:none;display:flex}.agent-plan-step{align-items:center;gap:var(--agent-space-3);min-width:0;padding:2px var(--agent-space-4);color:var(--agent-text-muted);font-size:var(--agent-font-md);line-height:1.4;display:flex}.agent-plan-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.agent-plan-step.done{color:var(--agent-text-dim)}.agent-plan-step.active{background:color-mix(in srgb, var(--agent-accent) 12%, transparent);color:var(--agent-text)}.agent-plan-step.unfinished{color:var(--agent-text-dim)}.agent-plan-step.unfinished .agent-plan-text{font-style:italic}.agent-plan-mark{width:var(--agent-plan-mark);height:var(--agent-plan-mark);flex:none}.agent-plan-mark.done{color:var(--agent-ok)}.agent-plan-mark.unfinished{color:var(--agent-warn)}.agent-plan-mark.pending{border:1.5px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill)}.agent-plan-mark.active{border:1.5px solid var(--agent-accent);border-radius:var(--agent-radius-pill);position:relative}.agent-plan-mark.active:after{content:"";border-radius:var(--agent-radius-pill);background:var(--agent-accent);position:absolute;inset:2px}.agent-plan[data-plan-state=live] .agent-plan-mark.active:after{animation:1.4s ease-in-out infinite agent-pulse}.agent-plan:not([data-plan-state=live]) .agent-plan-fill{background:var(--agent-text-dim)}.agent-plan[data-plan-state=done] .agent-plan-fill{background:var(--agent-ok)}@media (prefers-reduced-motion:reduce){.agent-plan[data-plan-state=live] .agent-plan-mark.active:after{animation:none}.agent-plan-fill{transition:none}}
|