agent-log-viewer 0.1.0 → 0.2.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/README.md +172 -53
- package/bin/cli.mjs +89 -22
- package/bin/tailscale.mjs +133 -18
- package/dist/standalone/.next/BUILD_ID +1 -1
- package/dist/standalone/.next/app-path-routes-manifest.json +9 -2
- package/dist/standalone/.next/build-manifest.json +2 -2
- package/dist/standalone/.next/prerender-manifest.json +3 -3
- package/dist/standalone/.next/routes-manifest.json +46 -1
- package/dist/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/standalone/.next/server/app/_global-error.html +1 -1
- package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/standalone/.next/server/app/_not-found.rsc +4 -4
- package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
- package/dist/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/api/access/route.js +1 -1
- package/dist/standalone/.next/server/app/api/answer/route.js +1 -0
- package/dist/standalone/.next/server/app/api/answer/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/answer/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/files/route.js +1 -1
- package/dist/standalone/.next/server/app/api/files/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/flows/[id]/route.js +1 -0
- package/dist/standalone/.next/server/app/api/flows/[id]/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/flows/[id]/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/flows/route.js +1 -0
- package/dist/standalone/.next/server/app/api/flows/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/flows/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/inbox/route.js +1 -0
- package/dist/standalone/.next/server/app/api/inbox/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/limits/route.js +1 -0
- package/dist/standalone/.next/server/app/api/limits/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/limits/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/log/route.js +1 -1
- package/dist/standalone/.next/server/app/api/log/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/proc/route.js +1 -1
- package/dist/standalone/.next/server/app/api/proc/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/push/route.js +1 -0
- package/dist/standalone/.next/server/app/api/push/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/push/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/api/spawn/route.js +1 -1
- package/dist/standalone/.next/server/app/api/spawn/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/timeline/route.js +1 -1
- package/dist/standalone/.next/server/app/api/timeline/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/tmux/route.js +2 -2
- package/dist/standalone/.next/server/app/api/tmux/route.js.nft.json +1 -1
- package/dist/standalone/.next/server/app/api/transcribe/route.js +1 -1
- package/dist/standalone/.next/server/app/api/transcribe/token/route.js +1 -0
- package/dist/standalone/.next/server/app/api/transcribe/token/route.js.nft.json +1 -0
- package/dist/standalone/.next/server/app/api/transcribe/token/route_client-reference-manifest.js +1 -0
- package/dist/standalone/.next/server/app/favicon.ico/route.js +1 -1
- package/dist/standalone/.next/server/app/index.html +1 -1
- package/dist/standalone/.next/server/app/index.rsc +5 -5
- package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +5 -5
- package/dist/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/standalone/.next/server/app/page.js +3 -3
- package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/standalone/.next/server/app-paths-manifest.json +9 -2
- package/dist/standalone/.next/server/chunks/289.js +2 -0
- package/dist/standalone/.next/server/chunks/871.js +3 -0
- package/dist/standalone/.next/server/functions-config-manifest.json +8 -1
- package/dist/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/standalone/.next/server/middleware.js +3 -3
- package/dist/standalone/.next/server/pages/404.html +1 -1
- package/dist/standalone/.next/server/pages/500.html +1 -1
- package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/standalone/.next/static/chunks/159-d2dbe811eeab290f.js +1 -0
- package/dist/standalone/.next/static/chunks/app/_global-error/page-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/access/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/answer/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/files/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/flows/[id]/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/flows/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/inbox/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/limits/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/log/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/proc/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/push/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/spawn/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/timeline/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/tmux/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/api/transcribe/token/route-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/app/page-39971eba742f6b2e.js +2 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-81fecd9eba007478.js +1 -0
- package/dist/standalone/.next/static/css/331d03725ce2ef2f.css +1 -0
- package/dist/standalone/.next/static/eVZqd0xcmD_g_vTrSrlTL/_buildManifest.js +1 -0
- package/dist/standalone/package.json +4 -2
- package/package.json +4 -2
- package/dist/standalone/.next/server/chunks/344.js +0 -1
- package/dist/standalone/.next/server/chunks/459.js +0 -1
- package/dist/standalone/.next/static/OlOoOx99h_Y7pD3fJA_ji/_buildManifest.js +0 -1
- package/dist/standalone/.next/static/chunks/206-33d2c732d1a7b380.js +0 -1
- package/dist/standalone/.next/static/chunks/app/_global-error/page-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/access/route-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/files/route-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/log/route-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/proc/route-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/spawn/route-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/timeline/route-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/tmux/route-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/app/api/transcribe/route-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/app/page-6fed5a912688e46f.js +0 -2
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-a6af3b0a9feab800.js +0 -1
- package/dist/standalone/.next/static/css/6295a760ad8588f2.css +0 -1
- /package/dist/standalone/.next/static/{OlOoOx99h_Y7pD3fJA_ji → eVZqd0xcmD_g_vTrSrlTL}/_ssgManifest.js +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{5039:(e,t,n)=>{Promise.resolve().then(n.bind(n,7137))},7137:(e,t,n)=>{"use strict";n.d(t,{Viewer:()=>tH});var r=n(5155),l=n(2115);let s=[[1920,4],[1440,3],[1024,2]],i="__overview__",a=e=>Math.floor(e/300);function o(e){return"live"===e.activity?0:"recent"===e.activity?1:"stalled"===e.activity?2:3}function c(e){return"claude-projects"===e.root?"сесія"===e.kind&&!e.parent:"codex-sessions"===e.root&&!e.parent}function d(e){return"claude-projects"===e.root&&"субагент"===e.kind}function u(e){return!!d(e)||"codex-sessions"===e.root&&!!e.parent}function p(e){return"shell"===e.engine||"codex-jobs"===e.root}function x(e){return e.project||"інше"}function m(e){let t=new Map;for(let n of e){let e=x(n),r=t.get(e);r||(r={project:e,liveCount:0,conversations:0,smt:0},t.set(e,r)),"live"===n.activity&&(r.liveCount+=1),c(n)&&(r.conversations+=1),r.smt=Math.max(r.smt,n.mtime)}return[...t.values()].sort((e,t)=>{let n=e.liveCount>0;return n!==t.liveCount>0?n?-1:1:a(t.smt)-a(e.smt)||e.project.localeCompare(t.project)})}function f(e){let t=new Map;for(let n of e){if(!n.parent)continue;let e=t.get(n.parent);e?e.push(n):t.set(n.parent,[n])}return t}function h(e,t){let n=[],r=[...t.get(e.path)??[]],l=new Set([e.path]);for(;r.length;){let e=r.pop();l.has(e.path)||(l.add(e.path),n.push(e),r.push(...t.get(e.path)??[]))}return n}function b(e){return!p(e)&&("live"===e.activity||"recent"===e.activity&&u(e))}function g(e,t){let n=new Map(e.map(e=>[e.path,e])),r=f(e),l=new Map,s=new Map;for(let r of e)if(x(r)===t){if("live"===r.activity||"recent"===r.activity&&u(r)){let e=function(e,t){let n=new Set,r=e;for(;r.parent&&!n.has(r.path);){n.add(r.path);let e=t.get(r.parent);if(!e)break;r=e}return r}(r,n);p(e)?s.set(e.path,e):l.set(e.path,e);continue}"recent"===r.activity&&c(r)&&l.set(r.path,r)}let i=[...l.values()].map(e=>(function(e,t,n){let r=h(e,t),l=r.filter(b).sort((e,t)=>("live"!==e.activity)-("live"!==t.activity)||a(t.mtime)-a(e.mtime)||e.path.localeCompare(t.path)),s=r.filter(e=>p(e)&&"live"===e.activity).sort((e,t)=>a(t.mtime)-a(e.mtime)||e.path.localeCompare(t.path)),i=[e,...l].map(e=>({file:e,tasks:[]})),o=new Map(i.map(e=>[e.file.path,e]));for(let e of s)(e.parent&&o.get(e.parent)||i[0]).tasks.push(e);let c=new Set([...o.keys(),...s.map(e=>e.path)]),d=r.filter(e=>!c.has(e.path)).sort((e,t)=>t.mtime-e.mtime),x=d.filter(e=>u(e)&&function(e,t){let n=new Set([e.path]),r=e;for(;r.parent&&!n.has(r.parent);){let e=t.get(r.parent);if(!e)break;if(n.add(e.path),"сесія"===e.kind)return"live"===e.activity||"recent"===e.activity;r=e}return!1}(e,n)),m=new Set(x.map(e=>e.path)),f=d.filter(e=>!m.has(e.path)),g=Math.max(...i.map(e=>e.file.mtime),...s.map(e=>e.mtime));return{key:e.path,columns:i,returnable:x,finished:f,smt:g,orphanTask:!1}})(e,r,n));for(let e of s.values())i.push({key:e.path,columns:[{file:e,tasks:[]}],returnable:[],finished:[],smt:e.mtime,orphanTask:!0});return i.sort((e,t)=>e.orphanTask!==t.orphanTask?e.orphanTask?1:-1:a(t.smt)-a(e.smt)||e.key.localeCompare(t.key))}function v(e,t=160){let n=e.replace(/\[([^\]]+)\]\(([^)]+)\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/[*_~#>]+/g,"").replace(/\s+/g," ").trim().replace(/(?:\/[^\s)]+){3,}/g,e=>{if(e.length<=40)return e;let t=e.split("/").filter(Boolean);return t.length>=2?".../"+t.slice(-2).join("/"):e}).replace(/\s+/g," ").trim();return n.length>t?n.slice(0,t-1).trimEnd()+"…":n}function j(e){let t=Date.now()/1e3-e;return t<90?Math.round(t)+" с тому":t<5400?Math.round(t/60)+" хв тому":t<129600?Math.round(t/3600)+" год тому":Math.round(t/86400)+" д тому"}function w(e){if("string"!=typeof e&&"number"!=typeof e)return"";let t=new Date(e);return Number.isNaN(t.getTime())?"":t.toLocaleTimeString("uk",{hour12:!1})}function y(e,t,n,r){let l=e%10,s=e%100;return 1===l&&11!==s?t:l>=2&&l<=4&&(s<12||s>14)?n:r}function N(e){return"live"===e?"animate-pulse bg-ok":"recent"===e?"bg-[#d29a2f]":"stalled"===e?"bg-err":"bg-[#c9c9d1]"}let k={codex:{color:"#2f6fd0",soft:"#e8f0fb"},claude:{color:"#d97757",soft:"#faeee9"}},S={color:"#9a9aa4",soft:"#ececf1"},C=[[/fable|mythos/,{color:"#c2410c",soft:"#fbeade"}],[/opus/,{color:"#8a5ad6",soft:"#f1ebfb"}],[/sonnet/,{color:"#e0913f",soft:"#fbf1e4"}],[/haiku/,{color:"#d9a58c",soft:"#f9f1ec"}]],$=[[/spark/,{color:"#5ea3e4",soft:"#ecf4fd"}],[/mini|nano/,{color:"#7fb1e8",soft:"#eff6fd"}],[/codex/,{color:"#1d55ab",soft:"#e4edfa"}]];function A(e){let t=k[e.engine];if(!t)return S;let n=(e.model??"").toLowerCase();for(let[t,r]of"codex"===e.engine?$:C)if(t.test(n))return r;return t}function E(e){return A(e).color}function R(e){let t={codex:"Codex",claude:"Claude",shell:"Bash"}[e.engine]??e.engine,n=k[e.engine]??S;return{label:t,style:{backgroundColor:n.soft,color:n.color}}}function M({files:e,onSelectProject:t,onSelectFile:n}){let i=function(){let[e,t]=(0,l.useState)(3);return(0,l.useEffect)(()=>{let e=()=>t(function(){for(let[e,t]of s)if(window.innerWidth>=e)return t;return 1}());return window.addEventListener("resize",e),e(),()=>window.removeEventListener("resize",e)},[]),e}(),a=(0,l.useMemo)(()=>m(e),[e]),o=(0,l.useMemo)(()=>a.reduce((e,t)=>e+t.liveCount,0),[a]),c=a.filter(e=>e.liveCount>0).length,d=(0,l.useMemo)(()=>a.map(t=>{let n=g(e,t.project).flatMap(e=>e.columns.flatMap(e=>[e.file,...e.tasks])).filter(e=>"live"===e.activity),r=n.slice(0,4),l=e.filter(e=>x(e)===t.project).sort((e,t)=>t.mtime-e.mtime)[0];return{summary:t,liveBranches:r,moreLive:n.length-r.length,latest:l}}),[e,a]);return(0,r.jsxs)("div",{className:"flex min-h-0 min-w-0 flex-1 flex-col",children:[(0,r.jsxs)("div",{className:"flex h-10 shrink-0 items-center gap-2.5 border-b border-line bg-panel px-4",children:[(0,r.jsx)("h1",{className:"text-[13.5px] font-bold",children:"Огляд"}),(0,r.jsx)("span",{className:"text-[11.5px] text-dim",children:o?`${o} ${y(o,"гілка працює","гілки працюють","гілок працюють")} у ${c} ${y(c,"проєкті","проєктах","проєктах")}`:"зараз нічого не працює"})]}),(0,r.jsxs)("div",{className:"grid flex-1 auto-rows-min gap-2.5 overflow-y-auto p-3",style:{gridTemplateColumns:`repeat(${i}, minmax(0, 1fr))`},children:[d.map(({summary:e,liveBranches:l,moreLive:s,latest:i})=>(0,r.jsxs)("button",{className:"flex flex-col gap-1.5 rounded-[10px] border border-line bg-panel p-3 text-left shadow-card hover:border-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",onClick:()=>t(e.project),children:[(0,r.jsxs)("span",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${e.liveCount?"animate-pulse bg-ok":"bg-[#d6d6dd]"}`}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-[13px] font-bold",children:e.project}),e.liveCount?(0,r.jsx)("span",{className:"shrink-0 rounded-full bg-[#e5f6ea] px-1.5 py-0.5 text-[10.5px] font-bold text-ok",children:e.liveCount}):null,(0,r.jsx)("span",{className:"shrink-0 text-[11px] font-semibold text-dim",children:e.conversations})]}),l.length?(0,r.jsxs)("span",{className:"flex flex-col gap-1",children:[l.map(e=>{let t=R(e);return(0,r.jsxs)("span",{className:"flex cursor-pointer items-center gap-1.5 rounded-[8px] px-1 py-0.5 text-[11.5px] hover:bg-bg",role:"link",tabIndex:0,title:v(e.title),onClick:t=>{t.stopPropagation(),n(e)},onKeyDown:t=>{"Enter"===t.key&&(t.stopPropagation(),n(e))},children:[(0,r.jsx)("span",{className:`h-1.5 w-1.5 shrink-0 rounded-full ${N(e.activity)}`}),(0,r.jsx)("span",{className:"shrink-0 rounded-full px-1.5 text-[9px] font-bold",style:t.style,children:t.label}),(0,r.jsx)("span",{className:"truncate font-semibold",children:v(e.title,70)})]},e.path)}),s>0?(0,r.jsxs)("span",{className:"px-1 text-[10.5px] font-semibold text-dim",children:["ще ",s," live"]}):null]}):(0,r.jsxs)("span",{className:"text-[11px] text-dim",children:["тихо \xb7 остання активність ",i?j(i.mtime):"—"]})]},e.project)),a.length?null:(0,r.jsx)("div",{className:"col-span-full mt-[20vh] text-center text-dim",children:"Логів поки нема"})]})]})}var P=n(6408),_=n(2298),T=n(9805),I=n(467),L=n(99),O=n(7381),D=n(5045),F=n(4577),z=n(6721),U=n(4088),H=n(4962),J=n(5222),W=n(6210),B=n(5796),q=n(4551),G=n(5688),K=n(6619),Q=n(6851),Y=n(852),V=n(4179),X=n(9005),Z=n(7990),ee=n(6449),et=n(8910),en=n(7979),er=n(5561),el=n(966),es=n(2750),ei=n(2571);let ea={shell:z.A,tool:Z.A,"cmd-group":ee.A,codex:J.A,claude:Q.A,image:W.A,blob:et.A,note:en.A,citation:er.A,message:B.A,shutdown:el.A,plan:es.A};function eo({name:e,className:t}){let n=ea[e];return(0,r.jsx)(n,{className:t??"h-3.5 w-3.5","aria-hidden":!0})}function ec({className:e,style:t,enter:n="scale",children:s}){let i=(0,l.useRef)(null);return!function(e,t="scale"){let n=(0,l.useRef)(new Map),r=(0,l.useRef)(new WeakMap),s=(0,l.useRef)(!0);(0,l.useLayoutEffect)(()=>{let l=e.current;if(!l)return;let i="u">typeof matchMedia&&matchMedia("(prefers-reduced-motion: reduce)").matches,a=l.getBoundingClientRect(),o=[...l.children].filter(e=>e instanceof HTMLElement&&void 0!==e.dataset.flipKey),c=new Map;for(let e of o){let o=e.dataset.flipKey,d=e.getBoundingClientRect(),u=r.current.get(e);u&&(u.cancel(),r.current.delete(e));let p=e.getBoundingClientRect(),x={x:p.left-a.left+l.scrollLeft,y:p.top-a.top+l.scrollTop},m=n.current.get(o);if(c.set(o,x),i||s.current||void 0!==e.dataset.flipSkip)continue;if(!m){if("none"===t)continue;let n="fade"===t?[{opacity:0},{opacity:1}]:[{opacity:0,transform:"scale(0.96)"},{opacity:1,transform:"scale(1)"}],l=e.animate(n,{duration:"fade"===t?120:240,easing:"ease-out"});r.current.set(e,l),l.addEventListener("finish",()=>r.current.delete(e));continue}let f=m.x-x.x+(d.left-p.left),h=m.y-x.y+(d.top-p.top);if(2>Math.abs(f)&&2>Math.abs(h))continue;let b=e.animate([{transform:`translate(${f}px, ${h}px)`},{transform:"translate(0px, 0px)"}],{duration:280,easing:"cubic-bezier(0.22, 0.72, 0.3, 1)"});r.current.set(e,b),b.addEventListener("finish",()=>r.current.delete(e))}n.current=c,s.current=!1})}(i,n),(0,r.jsx)("div",{ref:i,className:e,style:t,children:s})}var ed=n(8617),eu=n(9314);function ep({file:e}){return"running"===e.proc?(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-[#e5f6ea] px-2 py-0.5 text-[11px] font-bold text-ok",children:[(0,r.jsx)(K.A,{className:"h-3 w-3","aria-hidden":!0})," PID ",e.pid]}):"killed"===e.proc||"stalled"===e.activity?(0,r.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-[#f7e8e8] px-2 py-0.5 text-[11px] font-bold text-err",children:"перервано"}):"done"===e.proc?(0,r.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-chip px-2 py-0.5 text-[11px] font-bold text-dim",children:"завершено"}):null}function ex({file:e,compact:t=!1}){let[n,s]=(0,l.useState)(!1),[i,a]=(0,l.useState)(!1),[o,c]=(0,l.useState)(""),[d,u]=(0,l.useState)(!1);(0,l.useEffect)(()=>{if(!n)return;let e=window.setTimeout(()=>s(!1),5e3);return()=>window.clearTimeout(e)},[n]);let p=(0,r.jsx)(ep,{file:e}),x=async()=>{a(!0),c("");try{let t=await fetch("/api/proc",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({path:e.path,force:d})}),n=await t.json();if(!t.ok||!n.ok){c(n.error??"помилка зупинки"),u(!0);return}c(`надіслано ${d?"SIGKILL":"SIGTERM"} PID ${n.pid}`),s(!1)}catch{c("сервер недоступний"),u(!0)}finally{a(!1)}};return(0,r.jsxs)("span",{className:`inline-flex min-w-0 flex-wrap items-center gap-1.5 ${t?"text-[10.5px]":"text-xs"}`,children:[p,"running"===e.proc?n?(0,r.jsxs)("span",{className:"inline-flex max-w-full items-center gap-1 rounded-[10px] border border-err/30 bg-[#fff5f5] px-1.5 py-0.5",children:[t?null:(0,r.jsxs)("span",{className:"truncate px-1 text-[11px] font-semibold text-err",children:["Точно вбити PID ",e.pid,"?"]}),(0,r.jsx)("button",{className:"rounded-lg bg-err px-2 py-0.5 text-[11px] font-bold text-white disabled:opacity-60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-err/50",disabled:i,onClick:x,children:d?"SIGKILL":t?`Вбити ${e.pid}`:"Так, вбити"}),(0,r.jsx)("button",{className:"rounded-lg border border-line bg-panel px-2 py-0.5 text-[11px] font-semibold text-dim focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",onClick:()=>s(!1),children:t?"Ні":"Скасувати"})]}):(0,r.jsx)("button",{className:"rounded-full border border-line bg-panel px-2 py-0.5 text-[11px] font-semibold text-dim hover:border-err/40 hover:text-err focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40","aria-label":`Зупинити процес PID ${e.pid}`,onClick:()=>s(!0),children:"Вбити"}):null,o?(0,r.jsx)("span",{className:"max-w-[220px] truncate text-[11px] font-semibold text-dim",children:o}):null]})}function em({file:e,files:t,onSelect:n}){if("codex-jobs"===e.root){let l=t.find(t=>"codex-sessions"===t.root&&t.parent===e.path);return(0,r.jsxs)("div",{className:"mb-4 mt-1 rounded-[14px] border border-line bg-panel px-4 py-3 shadow-card",children:[(0,r.jsx)("div",{className:"mb-2 flex flex-wrap items-center gap-2",children:(0,r.jsx)(ep,{file:e})}),l?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"mb-2 whitespace-pre-line text-[13.5px] font-semibold",children:"Це короткий джоб-лог (лише службові події). Реальна робота Codex — у повній сесії:"}),(0,r.jsxs)("button",{className:"inline-flex items-center gap-1.5 rounded-[10px] border border-line bg-bg px-3 py-1.5 text-[13px] font-semibold text-codex hover:bg-codex-soft",onClick:()=>n(l),children:[(0,r.jsx)(J.A,{className:"h-3.5 w-3.5","aria-hidden":!0})," Відкрити сесію Codex (",(l.size/1024).toFixed(0)," kB","live"===l.activity?", працює":"stalled"===l.activity?", перервано":"recent"===l.activity?", закінчив":"",")"]})]}):(0,r.jsx)("div",{className:"text-[13.5px] text-dim",children:"Це короткий джоб-лог. Повна rollout-сесія Codex ще не з'явилась у списку"})]})}return"claude-tasks"!==e.root?null:(0,r.jsxs)("div",{className:"mb-4 mt-1 rounded-[14px] border border-line bg-panel px-4 py-3 shadow-card",children:[(0,r.jsx)("div",{className:"mb-2 flex flex-wrap items-center gap-2",children:(0,r.jsx)(ep,{file:e})}),e.cmd?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"mb-1 text-[13.5px] font-semibold",children:e.cmdDesc||"Фонова команда"}),(0,r.jsxs)("code",{className:"block whitespace-pre-wrap break-words rounded-lg border border-line bg-[#fafafc] px-2.5 py-2 font-mono text-[12.5px]",children:["$ ",e.cmd]})]}):(0,r.jsx)("div",{className:"text-[13.5px] text-dim",children:"Команду, що запустила цю фонову задачу, не знайдено у транскриптах сесії"})]})}let ef=[{key:"claude",label:"Claude"},{key:"codex",label:"Codex"}];function eh({file:e,paneRef:t}){let n=(0,l.useRef)(null),s=(0,l.useRef)({target:88,current:88,raf:0}),i=(0,l.useRef)(!1),a=(0,l.useRef)(null),o=(0,l.useRef)(null),[c,d]=(0,l.useState)(!1),[u,p]=(0,l.useState)({top:-18,maxH:480}),[x,m]=(0,l.useState)(!1),[f,h]=(0,l.useState)("codex"===e.engine?"codex":"claude"),[b,g]=(0,l.useState)(""),[j,w]=(0,l.useState)([]),[y,N]=(0,l.useState)(()=>`Прочитай розмову агента у файлі ${e.path} і продовж роботу звідти: `),[C,$]=(0,l.useState)(!1),[E,M]=(0,l.useState)(null),[P,_]=(0,l.useState)(!1),T=(0,l.useId)();(0,l.useEffect)(()=>{let e=window.matchMedia("(hover: hover) and (pointer: fine)");m(e.matches);let t=e=>m(e.matches);return e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]),(0,l.useEffect)(()=>{let e=t.current,r=n.current;if(!e||!r||!x)return;let l=s.current,a=()=>{r.style.transform=`translate3d(0, ${l.current}px, 0)`},o=()=>{let e=l.target-l.current;if(.4>Math.abs(e)){l.current=l.target,a(),l.raf=0;return}l.current+=.18*e,a(),l.raf=requestAnimationFrame(o)},c=t=>{if(i.current)return;let n=e.getBoundingClientRect();l.target=Math.min(Math.max(56,(r.previousElementSibling?.getBoundingClientRect().top??n.bottom)-n.top-24),Math.max(56,t.clientY-n.top)),l.raf||(l.raf=requestAnimationFrame(o))};return a(),e.addEventListener("pointermove",c,{passive:!0}),()=>{e.removeEventListener("pointermove",c),l.raf&&cancelAnimationFrame(l.raf),l.raf=0,l.target=88,l.current=88,r.style.transform="translate3d(0, 88px, 0)"}},[t,x]),(0,l.useEffect)(()=>()=>{a.current&&window.clearTimeout(a.current),o.current&&window.clearTimeout(o.current)},[]);let I=e=>{i.current=e,d(e)},L=()=>{if(i.current)return;let e=t.current;if(e){let t=e.getBoundingClientRect().height,n=s.current.current;if(n>.55*t){let e=Math.min(n+18,t-8);p({bottom:n-e,maxH:e-8})}else{let e=Math.max(8,n-18);p({top:e-n,maxH:t-e-8})}}I(!0)};(0,l.useEffect)(()=>{if(!c)return;let e=e=>{"Escape"===e.key&&I(!1)},t=e=>{n.current&&!n.current.contains(e.target)&&I(!1)};return window.addEventListener("keydown",e),window.addEventListener("pointerdown",t),()=>{window.removeEventListener("keydown",e),window.removeEventListener("pointerdown",t)}},[c]),(0,l.useEffect)(()=>{if(!c)return;let t=!1;return fetch("/api/spawn?project="+encodeURIComponent(e.project)+"&src="+encodeURIComponent(e.path)).then(e=>e.json()).then(e=>{if(t)return;Array.isArray(e.dirs)&&w(e.dirs);let n="string"==typeof e.cwd?e.cwd:"";g(t=>t||n||e.dirs?.[0]||"")}).catch(()=>{}),()=>{t=!0}},[c,e.project,e.path]);let O=async()=>{if(!C&&b.trim()){$(!0),M(null);try{let e=await fetch("/api/spawn",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({engine:f,cwd:b.trim(),prompt:y})}),t=await e.json();if(!e.ok||!t.ok)return void M({kind:"err",text:t.error??"не вдалося запустити"});M({kind:"ok",text:`запущено в tmux ${t.target??""} — скоро з'явиться в списку`})}catch{M({kind:"err",text:"сервер недоступний"})}finally{$(!1)}}},D=R(e);return(0,r.jsxs)("div",{ref:n,className:"pointer-events-none absolute left-1.5 top-0 z-40 h-0 w-0",style:{transform:"translate3d(0, 88px, 0)",willChange:"transform"},children:[(0,r.jsx)("button",{type:"button","aria-expanded":c,"aria-label":"Перекинути розмову іншому агенту",title:"перекинути розмову іншому агенту",onPointerEnter:()=>{x&&!i.current&&(a.current&&window.clearTimeout(a.current),a.current=window.setTimeout(L,130))},onPointerLeave:()=>{a.current&&window.clearTimeout(a.current),a.current=null},onClick:()=>{a.current&&window.clearTimeout(a.current),i.current?I(!1):L()},className:`pointer-events-auto absolute left-0 top-0 flex h-9 w-6 -translate-y-1/2 items-center justify-center rounded-full border bg-panel shadow-card transition-[opacity,border-color,color] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40 ${c?"border-accent/50 text-accent opacity-100":"border-line text-dim opacity-60 hover:border-accent/45 hover:text-accent hover:opacity-100"}`,children:(0,r.jsx)(ed.A,{className:"h-3.5 w-3.5","aria-hidden":!0})}),c?(0,r.jsxs)("div",{className:"pointer-events-auto absolute left-8 z-50 flex w-[340px] cursor-default flex-col gap-2.5 overflow-y-auto rounded-[12px] border border-line bg-panel p-3 shadow-[0_8px_28px_rgba(20,20,30,0.14)] [&>*]:shrink-0",style:{top:u.top,bottom:u.bottom,maxHeight:u.maxH},children:[(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(ed.A,{className:"h-3.5 w-3.5 shrink-0 text-accent","aria-hidden":!0}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-[12px] font-bold",children:"перекинути розмову іншому агенту"}),(0,r.jsx)("button",{type:"button","aria-label":"Закрити картку передачі",onClick:()=>I(!1),className:"inline-flex shrink-0 items-center rounded-[8px] border border-line bg-bg px-1.5 py-0.5 text-dim hover:text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",children:(0,r.jsx)(X.A,{className:"h-3 w-3","aria-hidden":!0})})]}),(0,r.jsx)("div",{className:"truncate text-[10.5px] font-semibold text-dim",title:v(e.title),children:v(e.title,70)}),(0,r.jsxs)("div",{className:"flex flex-col gap-1.5 rounded-[8px] border border-line bg-bg px-2 py-2",children:[(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,r.jsx)("span",{className:"w-[64px] shrink-0 text-[10px] font-semibold text-dim",children:"агент"}),(0,r.jsx)("span",{className:"shrink-0 rounded-full px-1.5 py-0.5 text-[9.5px] font-bold",style:D.style,children:D.label}),e.model?(0,r.jsx)("span",{className:"min-w-0 truncate rounded-full px-1.5 py-0.5 font-mono text-[9px] font-semibold",style:{backgroundColor:A(e).soft,color:A(e).color},children:e.model}):null,(0,r.jsx)(ep,{file:e})]}),(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,r.jsx)("span",{className:"w-[64px] shrink-0 text-[10px] font-semibold text-dim",children:"транскрипт"}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate font-mono text-[10px] text-ink",title:e.path,children:e.path}),(0,r.jsx)("button",{type:"button","aria-label":"Скопіювати шлях транскрипта",onClick:()=>{navigator.clipboard?.writeText(e.path).then(()=>{_(!0),o.current&&window.clearTimeout(o.current),o.current=window.setTimeout(()=>_(!1),1500)}).catch(()=>{})},className:`inline-flex shrink-0 items-center rounded-[8px] border border-line bg-panel px-1.5 py-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40 ${P?"text-ok":"text-dim hover:text-accent"}`,children:P?(0,r.jsx)(F.A,{className:"h-3 w-3","aria-hidden":!0}):(0,r.jsx)(eu.A,{className:"h-3 w-3","aria-hidden":!0})})]}),e.kind?(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,r.jsx)("span",{className:"w-[64px] shrink-0 text-[10px] font-semibold text-dim",children:"тип"}),(0,r.jsx)("span",{className:"min-w-0 truncate text-[10.5px] font-semibold text-ink",children:e.kind})]}):null]}),(0,r.jsx)("div",{className:"flex items-center gap-1.5",role:"radiogroup","aria-label":"Кому передати розмову",children:ef.map(({key:e,label:t})=>{let n;return(0,r.jsx)("button",{type:"button",role:"radio","aria-checked":f===e,onClick:()=>h(e),style:f===e?{backgroundColor:(n=k[e]??S).soft,color:n.color,borderColor:n.color}:void 0,className:`flex-1 rounded-[8px] border px-2 py-1.5 text-[12px] font-bold focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40 ${f===e?"":"border-line bg-bg text-dim hover:text-ink"}`,children:t},e)})}),(0,r.jsxs)("label",{className:"flex flex-col gap-1 text-[10.5px] font-semibold text-dim",children:["директорія (успадкована)",(0,r.jsx)("input",{value:b,onChange:e=>g(e.target.value),list:T,placeholder:"/home/…/Projects/…","aria-label":"Робоча директорія нового агента",className:"rounded-[8px] border border-line bg-bg px-2 py-1.5 font-mono text-[11.5px] font-normal text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40"}),(0,r.jsx)("datalist",{id:T,children:j.map(e=>(0,r.jsx)("option",{value:e},e))})]}),(0,r.jsxs)("label",{className:"flex flex-col gap-1 text-[10.5px] font-semibold text-dim",children:["промпт для нового агента",(0,r.jsx)("textarea",{value:y,onChange:e=>N(e.target.value),rows:4,placeholder:"що зробити далі…","aria-label":"Промпт для нового агента",className:"resize-y rounded-[8px] border border-line bg-bg px-2 py-1.5 text-[12px] font-normal text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40"})]}),(0,r.jsx)("div",{className:"flex items-center",children:(0,r.jsx)("button",{type:"button",disabled:C||!b.trim(),onClick:()=>void O(),className:"ml-auto rounded-[8px] border border-accent bg-accent px-3 py-1.5 text-[12px] font-bold text-white hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 disabled:opacity-40",children:C?"перекидаю…":"▶ Перекинути"})}),C?(0,r.jsx)("span",{className:"text-[10.5px] text-dim",children:"чекаю, поки CLI підніметься (до хвилини)…"}):null,E?(0,r.jsx)("span",{className:`text-[11px] font-semibold ${"ok"===E.kind?"text-ok":"text-err"}`,children:E.text}):null]}):null]})}var eb=n(4760);let eg=e=>new TextEncoder().encode(e).length;function ev(e,t){return Math.floor(t.smt/300)-Math.floor(e.smt/300)||e.file.path.localeCompare(t.file.path)}function ej(e){return d(e)&&"running"!==e.proc}function ew(e,t=Date.now()/1e3){return"stalled"===e.activity?!ej(e)&&t-e.mtime<=7200:"recent"===e.activity&&("claude"===e.engine||"codex"===e.engine)&&c(e)&&!d(e)}function ey(e,t,n,r,s=eN){return(0,l.useMemo)(()=>{let l=function(e){let t=f(e),n=new Map;for(let r of e){let e=[...t.get(r.path)??[]],l=new Set,s=0;for(;e.length;){let n=e.pop();l.has(n.path)||(l.add(n.path),s+=1,e.push(...t.get(n.path)??[]))}n.set(r.path,s)}return n}(e),i=new Map;for(let e of t){let t=i.get(e.file);(!t||e.ts>t.ts)&&i.set(e.file,e)}let a=n.trim().toLowerCase(),o=e.filter(e=>!s.has(e.path)&&(c(e)||"live"===e.activity||"stalled"===e.activity||"recent"===e.activity&&!p(e))).map(e=>{let t,n=x(e),s=v(e.title),a=r-e.mtime,o="live"===e.activity?"working":ew(e,r)?"waiting":a<=86400?"recent":"older";return{file:e,project:n,title:s,descendants:l.get(e.path)??0,smt:e.mtime,kind:o,statusLine:(t=i.get(e.path))?`${t.label} \xb7 ${j(t.ts)}`:"live"===e.activity?"працює…":ej(e)?"повернувся з результатом":"stalled"===e.activity?"перервано або чекає дозволу":ew(e)?"закінчив хід — чекає відповіді":""}}).filter(e=>!a||`${e.title} ${e.project}`.toLowerCase().includes(a)),d=(e,t)=>t.smt-e.smt||e.file.path.localeCompare(t.file.path),u=o.filter(e=>"waiting"===e.kind).sort(d),m=o.filter(e=>"working"===e.kind).sort(d);return{waiting:u,working:m,recent:o.filter(e=>"recent"===e.kind).sort(ev),older:o.filter(e=>"older"===e.kind).sort(ev),livePreview:m.slice(0,3)}},[e,t,n,r,s])}let eN=new Set;var ek=n(6565),eS=n(2125);function eC({src:e,alt:t,caption:n,onClose:s}){let[i,a]=(0,l.useState)(1),[o,c]=(0,l.useState)(0),[d,u]=(0,l.useState)(0),[p,x]=(0,l.useState)(!1),m=(0,l.useRef)(null);(0,l.useEffect)(()=>{let e=e=>{"Escape"===e.key&&s()};window.addEventListener("keydown",e);let t=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{window.removeEventListener("keydown",e),document.body.style.overflow=t}},[s]);let f=(e,t=0,n=0)=>{let r=Math.min(8,Math.max(.25,i*e)),l=r/i;a(r),c(t-(t-o)*l),u(n-(n-d)*l)},h=()=>{a(1),c(0),u(0)};return(0,r.jsxs)("div",{className:"fixed inset-0 z-50 flex flex-col bg-black/85 backdrop-blur-sm",role:"dialog","aria-modal":"true","aria-label":t,onClick:s,children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2.5",onClick:e=>e.stopPropagation(),children:[(0,r.jsx)("span",{className:"min-w-0 truncate text-[12.5px] font-semibold text-white/85",children:n??t}),(0,r.jsxs)("span",{className:"ml-auto flex items-center gap-1.5",children:[(0,r.jsx)("button",{className:"inline-flex items-center rounded-lg border border-white/25 bg-white/10 px-2.5 py-1 text-white hover:bg-white/20 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60","aria-label":"Зменшити",onClick:()=>f(1/1.4),children:(0,r.jsx)(ek.A,{className:"h-4 w-4","aria-hidden":!0})}),(0,r.jsxs)("button",{className:"rounded-lg border border-white/25 bg-white/10 px-2 py-1 text-[11.5px] font-semibold text-white hover:bg-white/20 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60","aria-label":"Скинути масштаб",onClick:h,children:[Math.round(100*i),"%"]}),(0,r.jsx)("button",{className:"inline-flex items-center rounded-lg border border-white/25 bg-white/10 px-2.5 py-1 text-white hover:bg-white/20 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60","aria-label":"Збільшити",onClick:()=>f(1.4),children:(0,r.jsx)(eS.A,{className:"h-4 w-4","aria-hidden":!0})}),(0,r.jsx)("button",{className:"ml-1 inline-flex items-center rounded-lg border border-white/25 bg-white/10 px-2.5 py-1 text-white hover:bg-white/20 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60","aria-label":"Закрити",onClick:s,children:(0,r.jsx)(X.A,{className:"h-4 w-4","aria-hidden":!0})})]})]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 touch-none overflow-hidden",onClick:e=>e.stopPropagation(),onWheel:e=>{let t=e.currentTarget.getBoundingClientRect(),n=e.clientX-t.left-t.width/2,r=e.clientY-t.top-t.height/2;f(e.deltaY<0?1.18:1/1.18,n,r)},onPointerDown:e=>{e.currentTarget.setPointerCapture(e.pointerId),m.current={x:e.clientX,y:e.clientY,tx:o,ty:d},x(!0)},onPointerMove:e=>{m.current&&(c(m.current.tx+(e.clientX-m.current.x)),u(m.current.ty+(e.clientY-m.current.y)))},onPointerUp:()=>{m.current=null,x(!1)},onPointerCancel:()=>{m.current=null,x(!1)},onDoubleClick:()=>1===i?f(2):h(),children:(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsx)("img",{src:e,alt:t,draggable:!1,className:`max-h-full max-w-full select-none ${p?"":"transition-transform duration-75"} ${i>1?"cursor-grab active:cursor-grabbing":"cursor-zoom-in"}`,style:{transform:`translate(${o}px, ${d}px) scale(${i})`}})})})]})}let e$=/<oai-mem-citation>\s*<citation_entries>([\s\S]*?)<\/citation_entries>\s*<rollout_ids>([\s\S]*?)<\/rollout_ids>\s*<\/oai-mem-citation>/g,eA=/^\s*(REQUEST_CHANGES|APPROVE|COMMENT)\b/m,eE=/(?:\/\.codex\/sessions\/|\/\.claude\/projects\/|\/\.claude\/plugins\/data\/codex-openai-codex\/state\/|^\/tmp\/claude-\d+\/)/,eR=/^\s*(\d+)[.)]\s+(.*)$/,eM=/(?:\[(P[0-3])\]|\b(Critical|High|Medium|Low|Info|P[0-3])\b)/i,eP=/((?:\.{1,2}\/|\/|~\/)?[\w@.+-][\w@.+\-/]*\.(?:tsx?|jsx?|mjs|cjs|mts|cts|py|go|rs|md|json|ya?ml|toml|css|scss|html|sql|sh|env|ftl|txt))(?::(\d+))?/i,e_=/\[([^\]]+)\]\(([^)\s]+)\)/,eT=/([\w.-]*(?:api[_-]?key|access[_-]?token|refresh[_-]?token|authorization|bearer|secret|password|passwd|pwd|token))\b(\s*[:=]\s*)(["']?)[^\s"',}]+/gi;function eI(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}let eL=/<(teammate-message|agent-message)\b([^>]*)>([\s\S]*?)<\/\1>/g,eO=/^\s*(?:<[a-zA-Z][\w:-]*|Caveat: The messages below|\[Request interrupted|This came from another Claude session)/;function eD(e){let t=e.match(/^\s*<([a-zA-Z][\w:-]*)/)?.[1];return t||(/^\s*Caveat:/.test(e)?"caveat":"системне")}function eF(e,t){return e.match(RegExp(`${t}="([^"]*)"`))?.[1]??""}function ez(e){return"string"==typeof e?e:""}function eU(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function eH(e){return Array.isArray(e)?e.filter(e=>e&&"object"==typeof e&&!Array.isArray(e)):[]}let eJ=/(`[^`]+`|\*\*[^*]+\*\*|\[[^\]]+\]\([^)\s]+\)|https?:\/\/[^\s<>"')\]]+)/g;function eW({href:e,label:t}){return(0,r.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",title:e,className:"break-all text-accent underline decoration-accent/40 underline-offset-2 hover:decoration-accent",children:t})}function eB(e){return e.split(eJ).map((e,t)=>{if(!e)return null;if(e.startsWith("`")&&e.endsWith("`"))return(0,r.jsx)("span",{className:"rounded-md bg-chip px-1.5 py-0.5 font-mono",children:e.slice(1,-1)},t);if(e.startsWith("**")&&e.endsWith("**"))return(0,r.jsx)("b",{children:e.slice(2,-2)},t);let n=e.match(/^\[([^\]]+)\]\(([^)\s]+)\)$/);if(n){let e=n[2].replace(/\\([()])/g,"$1");return/^https?:\/\//.test(e)?(0,r.jsx)(eW,{href:e,label:n[1]},t):(0,r.jsx)("span",{className:"rounded-md bg-chip px-1.5 py-0.5 font-mono",children:n[1]},t)}if(/^https?:\/\//.test(e)){let n=e.replace(/[.,;:!?…»)]+$/,""),l=e.slice(n.length),s=n.length>72?n.slice(0,69)+"…":n;return(0,r.jsxs)("span",{children:[(0,r.jsx)(eW,{href:n,label:s}),l]},t)}return e})}let eq=/^\s*\|.*\|\s*$/,eG=/^:?-{1,}:?$/;function eK({rows:e}){let t=e.map(e=>e.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(e=>e.trim())),n=t.length>1&&t[1].every(e=>eG.test(e)),l=n?t[0]:null,s=n?t.slice(2):t;return(0,r.jsx)("div",{className:"my-1.5 max-w-full overflow-x-auto",children:(0,r.jsxs)("table",{className:"border-collapse text-[12.5px]",children:[l?(0,r.jsx)("thead",{children:(0,r.jsx)("tr",{children:l.map((e,t)=>(0,r.jsx)("th",{className:"border border-line bg-chip px-2.5 py-1 text-left font-semibold",children:eB(e)},t))})}):null,(0,r.jsx)("tbody",{children:s.map((e,t)=>(0,r.jsx)("tr",{children:e.map((e,t)=>(0,r.jsx)("td",{className:"border border-line px-2.5 py-1 align-top",children:eB(e)},t))},t))})]})})}function eQ(e){let t=e.split("\n"),n=[],s=0;for(;s<t.length;){if(/^\s*```/.test(t[s])){let e=s;for(s++;s<t.length&&!/^\s*```\s*$/.test(t[s]);)s++;let l=t.slice(e+1,s).join("\n");s<t.length&&s++,"\n"===n[n.length-1]&&n.pop(),n.push((0,r.jsx)("pre",{className:"my-1.5 max-w-full overflow-x-auto rounded-[10px] border border-line bg-bg px-3 py-2 font-mono text-[11.5px]",children:l},`c${e}`));continue}if(eq.test(t[s])){let e=s;for(;s<t.length&&eq.test(t[s]);)s++;"\n"===n[n.length-1]&&n.pop(),n.push((0,r.jsx)(eK,{rows:t.slice(e,s)},`t${e}`));continue}let e=t[s],i=e.match(/^#{1,6}\s+(.*)$/),a=e.match(/^>\s?(.*)$/);i?n.push((0,r.jsx)("span",{className:"text-[14px] font-bold",children:eB(i[1])},s)):a?n.push((0,r.jsx)("span",{className:"border-l-2 border-line pl-2 text-dim",children:eB(a[1])},s)):n.push((0,r.jsx)(l.Fragment,{children:eB(e)},s)),++s<t.length&&n.push("\n")}return n}function eY(e){return e.replace(eT,(e,t,n,r)=>`${t}${n}${r}[redacted]`)}function eV(e){let t=eY(e);return{raw:t.slice(0,24e3),truncated:t.length>24e3}}function eX(e){let t=e.match(/^(.*?):(\d+(?:-\d+)?)$/);return t?{target:t[1]??e,line:t[2]}:{target:e}}function eZ(e,t){let n=e.match(eA)?.[1];if(!n)return null;let r=[],l=[],s=null,i=()=>{let e,t,n,l=s?.trim();l&&r.push((e=function(e){let t=e.toUpperCase();if("P0"===t||"P1"===t||"P2"===t||"P3"===t)return t;let n=e.toLowerCase();return"critical"===n?"Critical":"high"===n?"High":"medium"===n?"Medium":"low"===n?"Low":"Info"}(l.match(eM)?.[1]??l.match(eM)?.[2]??"Info"),t=function(e){let t=e.match(e_);if(t){let e=eX((t[2]??"").replace(/^file:\/\//,"")),n=e.line?Number(e.line.split("-",1)[0]):void 0;return{file:e.target||t[1],line:Number.isFinite(n)?n:void 0}}let n=e.match(eP);if(!n)return{};let r=n[2]?Number(n[2]):void 0;return{file:n[1],line:Number.isFinite(r)?r:void 0}}(l),n=function(e){let t=e,n=t.match(eM);if(n&&void 0!==n.index){let e=t.slice(n.index+n[0].length).replace(/^[\s.:–—-]+/,"");e&&(t=e)}return t.replace(e_,"$1").replace(/`([^`]*)`/g,"$1").replace(/\s+/g," ").trim().slice(0,200)}(l)||l.slice(0,200)||"Finding",{severity:e,file:t.file,line:t.line,title:n,body:eV(l).raw})),s=null};for(let t of e.split("\n")){let e=t.trimEnd(),n=e.match(eR);if(n){i(),s=n[2]??"";continue}let a=e.trim();if(null!==s){a?s=`${s}
|
|
2
|
-
${a}`:i();continue}!(!a||eA.test(e)||/^(findings?|summary|open questions?|tests?|residual risk)\s*:?\s*$/i.test(a))&&0===r.length&&l.length<3&&a.length<=240&&l.push(a)}i();let a=r.filter(e=>eM.test(e.body)).length;return n||/^findings?\s*:?$/im.test(e)||a>=2||a>=1&&/\b(review|request_changes|approve|comment)\b/i.test(e)?{kind:"review",ts:t,verdict:n,findings:r,summary:l,raw:eV(e).raw}:null}function e0(e,t,n){let r=t.split("\n").map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.match(/\|note=\[(.*)\]$/)?.[1],n=eX(e.replace(/\|note=\[.*\]$/,""));return{target:n.target,line:n.line,note:t,raw:e}}),l=n.split(/\s+/).map(e=>e.trim()).filter(e=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)),s=eV(e);return{kind:"mem-citation",entries:r,rolloutIds:l,raw:s.raw,truncated:s.truncated}}function e1(e,t,n){if(!e)return null;let r=t.match(/exited with code (\d+)/)?.[1],l=t.replace(/^Chunk ID:[^\n]*\n/,"").replace(/Wall time:[^\n]*\n/,"").replace(/Original token count:[^\n]*\n?/,"").trim(),s=!0===n||void 0!==r&&"0"!==r;return e.status=s?"err":"ok",e.label=s?r&&"0"!==r?"exit "+r:"помилка":"ok",e.open||=s,l&&(e.output=(e.output+"\n"+eY(l)).trim().slice(-(s?6e4:12e3))),e}function e5({media:e,data:t,w:n,h:s,bytes:i}){let[a,o]=(0,l.useState)("thumb"),c=Math.round((i??3*t.length/4)/1024),d=n&&s?`${n}\xd7${s}`:"зображення";if("chip"===a)return(0,r.jsxs)("button",{type:"button",onClick:()=>o("thumb"),className:"my-2 ml-9 flex items-center gap-2 rounded-[14px] border border-line bg-panel px-3.5 py-2 text-[13px] shadow-card",children:[(0,r.jsx)("span",{className:"flex h-6.5 w-6.5 items-center justify-center rounded-lg bg-chip",children:(0,r.jsx)(eo,{name:"image",className:"h-4 w-4"})}),(0,r.jsx)("span",{className:"font-semibold",children:d}),(0,r.jsxs)("span",{className:"text-dim",children:["\xb7 ",c," КБ"]}),(0,r.jsx)("span",{className:"ml-1 text-[12px] font-semibold text-accent",children:"показати"})]});let u=`data:${e};base64,${t}`;return(0,r.jsxs)("div",{className:"my-2 ml-9",children:[(0,r.jsx)("img",{src:u,alt:`зображення ${d}`,onClick:()=>o("full"),className:"max-h-[240px] cursor-zoom-in rounded-[14px] border border-line"}),(0,r.jsx)("button",{type:"button",onClick:()=>o("chip"),className:"mt-1 block text-[12px] text-dim",children:"згорнути"}),"full"===a?(0,r.jsx)(eC,{src:u,alt:`зображення ${d}`,caption:`${d} \xb7 ${c} КБ`,onClose:()=>o("thumb")}):null]})}function e2({label:e,text:t}){let n=t.length>=2048?`${(t.length/1024).toFixed(1)} кБ`:`${t.length} симв.`;return(0,r.jsxs)("details",{className:"group my-1.5 ml-9",children:[(0,r.jsxs)("summary",{className:"flex cursor-pointer list-none items-center gap-1.5 text-[11px] font-semibold text-dim hover:text-ink [&::-webkit-details-marker]:hidden",children:[(0,r.jsx)("span",{className:"flex h-4.5 w-4.5 items-center justify-center rounded-md bg-chip",children:(0,r.jsx)(eo,{name:"cmd-group",className:"h-3 w-3"})}),(0,r.jsx)("span",{className:"rounded-full bg-chip px-1.5 py-0.5 font-mono text-[9.5px]",children:e}),(0,r.jsxs)("span",{children:["системне \xb7 ",n]}),(0,r.jsx)("span",{className:"text-accent group-open:hidden",children:"показати"}),(0,r.jsx)("span",{className:"hidden text-dim group-open:inline",children:"згорнути"})]}),(0,r.jsx)("pre",{className:"mt-1 max-h-[320px] overflow-auto whitespace-pre-wrap break-words rounded-[10px] border border-line bg-bg px-3 py-2 font-mono text-[11px] text-[#555]",children:t})]})}function e3({bytes:e,text:t}){let[n,s]=(0,l.useState)(!1),i=Math.round(e/1024);return n?(0,r.jsxs)("div",{className:"my-2 ml-9 overflow-hidden rounded-[14px] border border-line bg-panel shadow-card",children:[(0,r.jsx)("pre",{className:"max-h-[340px] overflow-auto whitespace-pre-wrap break-all bg-[#fafafc] px-3.5 py-2.5 font-mono text-[11.5px]",children:t}),(0,r.jsx)("button",{type:"button",onClick:()=>s(!1),className:"block w-full border-t border-line px-3.5 py-1.5 text-[12px] text-dim",children:"згорнути"})]}):(0,r.jsxs)("button",{type:"button",onClick:()=>s(!0),className:"my-2 ml-9 flex items-center gap-2 rounded-[14px] border border-line bg-panel px-3.5 py-2 text-[13px] shadow-card",children:[(0,r.jsx)("span",{className:"flex h-6.5 w-6.5 items-center justify-center rounded-lg bg-chip",children:(0,r.jsx)(eo,{name:"blob",className:"h-4 w-4"})}),(0,r.jsxs)("span",{className:"font-semibold",children:["даних ",i," КБ"]}),(0,r.jsx)("span",{className:"ml-1 text-[12px] font-semibold text-accent",children:"показати"})]})}function e4({verdict:e}){let t="REQUEST_CHANGES"===e?O.A:"APPROVE"===e?H.A:q.A;return(0,r.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,r.jsx)(t,{className:"h-3.5 w-3.5","aria-hidden":!0}),"REQUEST_CHANGES"===e?"REQUEST_CHANGES":"APPROVE"===e?"APPROVE":"COMMENT"]})}function e6({status:e,className:t}){let n=t??"h-3.5 w-3.5";return"ok"===e?(0,r.jsx)(F.A,{className:n,"aria-hidden":!0}):"err"===e?(0,r.jsx)(X.A,{className:n,"aria-hidden":!0}):(0,r.jsx)(ei.A,{className:`${n} animate-spin`,"aria-hidden":!0})}function e8({file:e,line:t}){let n=t?`${e}:${t}`:e,l="inline-block min-w-0 max-w-full truncate rounded-md bg-chip px-1.5 py-0.5 align-bottom font-mono text-[11.5px]";return eE.test(e)?(0,r.jsx)("a",{href:`#f=${encodeURIComponent(e)}`,className:`${l} text-accent underline decoration-dotted`,title:n,children:n}):(0,r.jsx)("code",{className:l,title:n,children:n})}function e9({item:e}){let t=Object.entries(e.byTool).map(([e,t])=>`${e} \xd7${t}`).join(" \xb7 "),n=w(e.t0),l=w(e.t1),s=n&&l&&n!==l?`${n}–${l}`:n||l;return(0,r.jsxs)("details",{className:`my-2.5 ml-9 overflow-hidden rounded-[14px] border shadow-card ${e.hasErr?"border-err/35 bg-[#fff4f4]":"border-line bg-panel"}`,open:e.hasErr,children:[(0,r.jsxs)("summary",{className:"flex cursor-pointer list-none items-center gap-2.5 px-3.5 py-2",children:[(0,r.jsx)("span",{className:"flex h-6.5 w-6.5 shrink-0 items-center justify-center rounded-lg bg-chip",children:(0,r.jsx)(eo,{name:"cmd-group",className:"h-4 w-4"})}),(0,r.jsxs)("span",{className:"flex min-w-0 flex-1 items-center gap-1 truncate text-[12.5px]",children:[e.calls.length," ",y(e.calls.length,"команда","команди","команд"),t?" \xb7 "+t:""," \xb7",(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 text-ok",children:[(0,r.jsx)(F.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),e.okCount]}),e.errCount?(0,r.jsxs)("span",{className:"inline-flex items-center gap-0.5 text-err",children:[(0,r.jsx)(X.A,{className:"h-3.5 w-3.5","aria-hidden":!0}),e.errCount]}):null]}),s?(0,r.jsx)("span",{className:"ml-auto shrink-0 text-[11px] text-dim",children:s}):null]}),(0,r.jsx)("div",{className:"space-y-1 border-t border-line bg-[#fafafc] px-2 py-1.5",children:e.calls.map((t,n)=>{let l="ok"===t.status?"text-ok":"err"===t.status?"text-err":"text-dim";return(0,r.jsxs)("details",{className:"overflow-hidden rounded-[10px] border border-line bg-panel",open:t.open,children:[(0,r.jsxs)("summary",{className:"flex h-6 cursor-pointer list-none items-center gap-2 px-2.5 text-[11.5px]",children:[(0,r.jsx)("span",{className:"flex h-4.5 w-4.5 shrink-0 items-center justify-center rounded-md bg-chip",children:(0,r.jsx)(eo,{name:t.icon,className:"h-3 w-3"})}),(0,r.jsx)("code",{className:"min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap rounded-md bg-chip px-1.5 py-0.5 font-mono text-[11px]",children:t.display}),(0,r.jsxs)("span",{className:`ml-auto inline-flex shrink-0 items-center gap-1 text-[10.5px] font-semibold ${l}`,children:[(0,r.jsx)(e6,{status:t.status,className:"h-3 w-3"}),t.label]})]}),(0,r.jsx)("pre",{className:"max-h-[280px] overflow-auto whitespace-pre-wrap border-t border-line bg-[#fafafc] px-3 py-2 font-mono text-[11.5px]",children:"$ "+t.cmd+(t.output?"\n"+t.output:"")})]},e.ids[n])})})]})}function e7({item:e}){var t;let n=e.findings.length,l=e.findings.slice(0,12);return(0,r.jsxs)("div",{className:"my-3.5 ml-9 overflow-hidden rounded-[14px] border border-codex/20 bg-panel shadow-card",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 border-b border-line px-3.5 py-2.5",children:[(0,r.jsx)("span",{className:"flex h-6.5 w-6.5 shrink-0 items-center justify-center rounded-lg bg-codex-soft text-codex",children:(0,r.jsx)(J.A,{className:"h-4 w-4","aria-hidden":!0})}),(0,r.jsx)("span",{className:"text-[13.5px] font-bold",children:"Codex review"}),e.verdict?(0,r.jsx)("span",{className:`rounded-full border px-2.5 py-0.5 text-[11.5px] font-extrabold ${"REQUEST_CHANGES"===(t=e.verdict)?"bg-[#fff0f0] text-err border-err/25":"APPROVE"===t?"bg-[#eefaf1] text-ok border-ok/25":"bg-chip text-[#555] border-line"}`,children:(0,r.jsx)(e4,{verdict:e.verdict})}):null,(0,r.jsx)("span",{className:"text-[11px] text-dim",children:n?`${n} finding${1===n?"":"s"}`:"без findings"}),w(e.ts)?(0,r.jsx)("span",{className:"ml-auto text-[11px] text-dim",children:w(e.ts)}):null]}),(0,r.jsxs)("div",{className:"px-3.5 py-2.5",children:[e.summary.length?(0,r.jsx)("div",{className:"mb-2 whitespace-pre-wrap break-words text-[13px] text-[#444]",children:eQ(e.summary.join("\n"))}):null,l.length?(0,r.jsx)("div",{className:"space-y-2",children:l.map((e,t)=>{var n;return(0,r.jsxs)("div",{className:"rounded-[10px] border border-line bg-[#fbfbfd] px-3 py-2",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10.5px] font-extrabold ${"Critical"===(n=e.severity)||"High"===n||"P0"===n||"P1"===n?"border-err/30 bg-[#fff4f4] text-err":"Medium"===n||"P2"===n?"border-[#d89b21]/35 bg-[#fff9ea] text-[#9a6500]":"Low"===n||"P3"===n?"border-line bg-chip text-[#555]":"border-line bg-panel text-dim"}`,children:e.severity}),e.file?(0,r.jsx)(e8,{file:e.file,line:e.line}):null]}),(0,r.jsx)("div",{className:"mt-1.5 whitespace-pre-wrap break-words text-[13px]",children:eB(e.title)}),e.body&&e.body!==e.title?(0,r.jsxs)("details",{className:"mt-1 text-[12px] text-dim",children:[(0,r.jsx)("summary",{className:"cursor-pointer list-none font-semibold text-accent",children:"details"}),(0,r.jsx)("div",{className:"mt-1 whitespace-pre-wrap break-words",children:eQ(e.body)})]}):null]},t)})}):null,e.findings.length>l.length?(0,r.jsxs)("div",{className:"mt-2 text-[12px] text-dim",children:["ще ",e.findings.length-l.length," findings у raw"]}):null,(0,r.jsxs)("details",{className:"mt-2 rounded-[10px] border border-line bg-[#fafafc] text-[12px]",children:[(0,r.jsx)("summary",{className:"cursor-pointer list-none px-3 py-1.5 font-semibold text-dim",children:"raw review text"}),(0,r.jsx)("pre",{className:"max-h-[320px] overflow-auto whitespace-pre-wrap border-t border-line px-3 py-2 font-mono text-[11.5px] text-[#555]",children:e.raw})]})]})]})}function te({item:e}){let t=e.entries.slice(0,8),n=e.rolloutIds.slice(0,6);return(0,r.jsxs)("details",{className:"group my-2 ml-9 overflow-hidden rounded-[14px] border border-line bg-panel text-[12px] shadow-card",children:[(0,r.jsxs)("summary",{className:"flex cursor-pointer list-none items-center gap-2 px-3.5 py-2",children:[(0,r.jsx)("span",{className:"flex h-6.5 w-6.5 shrink-0 items-center justify-center rounded-lg bg-chip",children:(0,r.jsx)(eo,{name:"citation",className:"h-4 w-4"})}),(0,r.jsxs)("span",{className:"text-[13px] font-semibold",children:["цитати пам'яті (",e.entries.length,")"]}),(0,r.jsx)("span",{className:"ml-auto text-[11px] font-semibold text-accent group-open:hidden",children:"показати"}),(0,r.jsx)("span",{className:"ml-auto hidden text-[11px] font-semibold text-accent group-open:inline",children:"згорнути"})]}),(0,r.jsxs)("div",{className:"border-t border-line px-3.5 py-2.5",children:[t.length?(0,r.jsx)("div",{className:"space-y-1.5",children:t.map((e,t)=>(0,r.jsxs)("div",{className:"min-w-0 rounded-[9px] bg-[#fbfbfd] px-2.5 py-1.5",children:[(0,r.jsx)(e8,{file:e.target,line:e.line?Number(e.line.split("-",1)[0]):void 0}),e.note?(0,r.jsx)("div",{className:"mt-1 whitespace-pre-wrap break-words text-[12px] text-[#555]",children:e.note}):null]},t))}):(0,r.jsx)("div",{className:"text-[12px] text-dim",children:"без citation entries"}),e.entries.length>t.length?(0,r.jsxs)("div",{className:"mt-1.5 text-[12px] text-dim",children:["ще ",e.entries.length-t.length," entries у raw"]}):null,n.length?(0,r.jsxs)("div",{className:"mt-2 flex flex-wrap items-center gap-1.5",children:[(0,r.jsx)("span",{className:"text-[11px] text-dim",children:"rollout:"}),n.map(e=>(0,r.jsx)("code",{className:"rounded-full bg-chip px-2 py-0.5 font-mono text-[10.5px] text-dim",title:e,children:e.slice(0,8)},e)),e.rolloutIds.length>n.length?(0,r.jsxs)("span",{className:"text-[11px] text-dim",children:["+",e.rolloutIds.length-n.length]}):null]}):null,(0,r.jsxs)("details",{className:"mt-2 rounded-[10px] border border-line bg-[#fafafc] text-[12px]",children:[(0,r.jsxs)("summary",{className:"cursor-pointer list-none px-3 py-1.5 font-semibold text-dim",children:["raw citation block",e.truncated?" \xb7 обрізано":""]}),(0,r.jsx)("pre",{className:"max-h-[260px] overflow-auto whitespace-pre-wrap border-t border-line px-3 py-2 font-mono text-[11.5px] text-[#555]",children:e.raw})]})]})]})}let tt={shutdown_request:{icon:"shutdown",label:"запит на завершення",tone:"amber"},shutdown_response:{icon:"shutdown",label:"відповідь на завершення",tone:"amber"},plan_approval_request:{icon:"plan",label:"запит на затвердження плану",tone:"accent"},plan_approval_response:{icon:"plan",label:"вердикт по плану",tone:"accent"}};function tn(e){return"string"==typeof e&&e.length?e:void 0}function tr({approve:e}){return(0,r.jsx)("span",{className:`rounded-full border px-2 py-0.5 text-[10.5px] font-extrabold ${e?"border-ok/25 bg-[#eefaf1] text-ok":"border-err/25 bg-[#fff0f0] text-err"}`,children:e?"схвалено":"відхилено"})}function tl({payload:e}){let t=tn(e.from),n=tn(e.requestId),l=w(e.timestamp);return t||n||l?(0,r.jsxs)("div",{className:"mt-1.5 flex flex-wrap items-center gap-x-2.5 gap-y-1 text-[11px] text-dim",children:[t?(0,r.jsxs)("span",{children:["від ",t]}):null,n?(0,r.jsx)("span",{className:"truncate font-mono",title:n,children:n.length>40?n.slice(0,40)+"…":n}):null,l?(0,r.jsx)("span",{children:l}):null]}):null}function ts({payload:e}){let t=tn(e.type),n=t?tt[t]:void 0;if(!n)return(0,r.jsxs)("div",{className:"text-[13px]",children:[(0,r.jsx)("div",{className:"text-dim",children:"структуроване повідомлення"}),(0,r.jsxs)("details",{className:"mt-1 text-[12px]",children:[(0,r.jsx)("summary",{className:"cursor-pointer list-none font-semibold text-accent",children:"показати JSON"}),(0,r.jsx)("pre",{className:"mt-1 max-h-[280px] overflow-auto whitespace-pre-wrap rounded-md bg-chip px-2.5 py-2 font-mono text-[11.5px]",children:JSON.stringify(e,null,2)})]})]});let l="boolean"==typeof e.approve?e.approve:void 0,s=tn(e.reason)??tn(e.feedback);return(0,r.jsxs)("div",{className:"text-[13px]",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsxs)("span",{className:`inline-flex items-center gap-1 rounded-full border px-2.5 py-0.5 text-[11.5px] font-bold ${"amber"===n.tone?"border-[#d89b21]/35 bg-[#fff9ea] text-[#9a6500]":"border-accent/25 bg-accent/10 text-accent"}`,children:[(0,r.jsx)(eo,{name:n.icon,className:"h-3.5 w-3.5"}),n.label]}),void 0!==l?(0,r.jsx)(tr,{approve:l}):null]}),s?(0,r.jsx)("div",{className:"mt-1.5 whitespace-pre-wrap break-words",children:eQ(s)}):null,(0,r.jsx)(tl,{payload:e})]})}function ti({item:e}){if("image"===e.kind)return(0,r.jsx)(e5,{media:e.media,data:e.data,w:e.w,h:e.h,bytes:e.bytes});if("blob"===e.kind)return(0,r.jsx)(e3,{bytes:e.bytes,text:e.text});if("sysmsg"===e.kind)return(0,r.jsx)(e2,{label:e.label,text:e.text});if("review"===e.kind)return(0,r.jsx)(e7,{item:e});if("mem-citation"===e.kind)return(0,r.jsx)(te,{item:e});if("prose"===e.kind){let t="codex"===e.engine?"bg-codex":"bg-claude",n="codex"===e.engine?J.A:Q.A;return(0,r.jsxs)("div",{className:"my-3.5 flex gap-2.5",children:[(0,r.jsx)("div",{className:`mt-1 flex h-6.5 w-6.5 shrink-0 items-center justify-center rounded-full text-white ${t}`,children:(0,r.jsx)(n,{className:"h-3.5 w-3.5","aria-hidden":!0})}),(0,r.jsxs)("div",{className:"min-w-0 flex-1 whitespace-pre-wrap break-words",children:[w(e.ts)?(0,r.jsx)("div",{className:"mb-0.5 text-[11px] text-dim",children:w(e.ts)}):null,eQ(e.text)]})]})}if("user"===e.kind){let t=e.text.length>500;return(0,r.jsx)("div",{className:"my-3.5 flex justify-end",children:(0,r.jsx)("div",{className:"max-w-[75%] whitespace-pre-wrap break-words rounded-2xl bg-user px-4 py-2.5",children:t?(0,r.jsxs)("details",{className:"group/usr",children:[(0,r.jsxs)("summary",{className:"cursor-pointer list-none [&::-webkit-details-marker]:hidden",children:[(0,r.jsxs)("span",{className:"group-open/usr:hidden",children:[e.text.slice(0,180),"… ",(0,r.jsxs)("span",{className:"font-semibold text-accent",children:["(",e.text.length," симв.)"]})]}),(0,r.jsxs)("span",{className:"hidden items-center gap-1 text-[11px] font-semibold text-dim group-open/usr:inline-flex",children:["згорнути ",(0,r.jsx)(U.A,{className:"h-3 w-3","aria-hidden":!0})]})]}),eQ(e.text)]}):eQ(e.text)})})}if("cmd"===e.kind){let t="ok"===e.call.status?"text-ok":"err"===e.call.status?"text-err":"text-dim";return(0,r.jsxs)("details",{className:"my-2.5 ml-9 overflow-hidden rounded-[14px] border border-line bg-panel shadow-card",open:e.call.open,children:[(0,r.jsxs)("summary",{className:"flex cursor-pointer list-none items-center gap-2.5 px-3.5 py-2",children:[(0,r.jsx)("span",{className:"flex h-6.5 w-6.5 shrink-0 items-center justify-center rounded-lg bg-chip",children:(0,r.jsx)(eo,{name:e.call.icon,className:"h-4 w-4"})}),(0,r.jsx)("code",{className:"max-w-[70%] overflow-hidden text-ellipsis whitespace-nowrap rounded-md bg-chip px-2 py-0.5 font-mono text-[12.5px]",children:e.call.display}),(0,r.jsxs)("span",{className:`ml-auto inline-flex shrink-0 items-center gap-1 text-xs font-semibold ${t}`,children:[(0,r.jsx)(e6,{status:e.call.status}),e.call.label]})]}),(0,r.jsx)("pre",{className:"max-h-[340px] overflow-auto whitespace-pre-wrap border-t border-line bg-[#fafafc] px-3.5 py-2.5 font-mono text-[12.5px]",children:"$ "+e.call.cmd+(e.call.output?"\n"+e.call.output:"\n(вивід у цьому лог-файлі відсутній — повний є в rollout-сесії Codex)")})]})}if("cmd-group"===e.kind)return(0,r.jsx)(e9,{item:e});if("edit"===e.kind)return(0,r.jsxs)("div",{className:"my-2.5 ml-9 flex items-center gap-3 rounded-[14px] border border-line bg-panel px-3.5 py-2.5 shadow-card",children:[(0,r.jsx)("span",{className:"flex h-7.5 w-7.5 items-center justify-center rounded-lg bg-chip",children:(0,r.jsx)(eo,{name:"note",className:"h-4 w-4"})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-[13.5px] font-semibold",children:e.files}),(0,r.jsx)("div",{className:"text-xs text-dim",children:"файли змінені"})]})]});if("tmsg"===e.kind){let t=function(e){let t=e.trim();if((t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))&&(t=t.slice(1,-1).trim()),!t.startsWith("{"))return null;try{let e=JSON.parse(t);if(null!==e&&"object"==typeof e&&!Array.isArray(e))return e}catch{}return null}(e.text),n=e.text.length>420||e.text.split("\n").length>6;return(0,r.jsxs)("div",{className:"my-2.5 ml-9 overflow-hidden rounded-[14px] border border-accent/25 bg-[#f8f8fd] shadow-card",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-3.5 pt-2",children:[(0,r.jsx)("span",{className:"flex h-6.5 w-6.5 shrink-0 items-center justify-center rounded-lg bg-[#ecebfb] text-accent",children:(0,r.jsx)(B.A,{className:"h-3.5 w-3.5","aria-hidden":!0})}),(0,r.jsx)("span",{className:"text-[11px] font-semibold text-dim",children:"out"===e.dir?"до":"від"}),(0,r.jsx)("span",{className:"rounded-full bg-accent/10 px-2 py-0.5 text-[11px] font-bold text-accent",children:e.peer}),e.delivery?(0,r.jsxs)("span",{className:`inline-flex shrink-0 items-center gap-1 text-[10.5px] font-semibold ${"ok"===e.delivery?"text-ok":"text-err"}`,title:e.msgId?`msg_id: ${e.msgId}`:void 0,children:["ok"===e.delivery?(0,r.jsx)(F.A,{className:"h-3 w-3","aria-hidden":!0}):(0,r.jsx)(X.A,{className:"h-3 w-3","aria-hidden":!0}),"ok"===e.delivery?"доставлено":"не доставлено"]}):null,w(e.ts)?(0,r.jsx)("span",{className:"ml-auto shrink-0 text-[11px] text-dim",children:w(e.ts)}):null]}),(0,r.jsx)("div",{className:"px-3.5 pb-2.5 pt-1",children:t?(0,r.jsx)(ts,{payload:t}):(0,r.jsxs)(r.Fragment,{children:[e.summary?(0,r.jsx)("div",{className:"text-[13px] font-bold",children:eB(e.summary)}):null,n?(0,r.jsxs)("details",{className:"group/tmsg mt-0.5 whitespace-pre-wrap break-words text-[13px]",children:[(0,r.jsxs)("summary",{className:"cursor-pointer list-none text-[12.5px] text-[#555] [&::-webkit-details-marker]:hidden",children:[(0,r.jsxs)("span",{className:"group-open/tmsg:hidden",children:[e.text.slice(0,260).trimEnd(),"… ",(0,r.jsx)("span",{className:"font-semibold text-accent",children:"показати все"})]}),(0,r.jsxs)("span",{className:"hidden items-center gap-1 text-[11px] font-semibold text-dim group-open/tmsg:inline-flex",children:["згорнути ",(0,r.jsx)(U.A,{className:"h-3 w-3","aria-hidden":!0})]})]}),eQ(e.text)]}):(0,r.jsx)("div",{className:"mt-0.5 whitespace-pre-wrap break-words text-[13px]",children:eQ(e.text)})]})})]})}if("tnote"===e.kind)return(0,r.jsxs)("div",{className:"my-1 ml-9 flex items-center gap-1.5 text-[11.5px] text-dim",children:[(0,r.jsx)(B.A,{className:"h-3 w-3 shrink-0","aria-hidden":!0}),e.text]});if("think"===e.kind){let t=e.text.length>150;return(0,r.jsxs)("details",{className:"my-1 ml-9 text-[11.5px] italic text-dim",children:[(0,r.jsxs)("summary",{className:`flex list-none items-center gap-1.5 truncate ${t?"cursor-pointer":""}`,title:"міркування агента",children:[(0,r.jsx)(D.A,{className:"h-3.5 w-3.5 shrink-0","aria-hidden":!0}),(0,r.jsxs)("span",{className:"truncate",children:[e.text.slice(0,150),t?"…":""]})]}),t?(0,r.jsx)("div",{className:"whitespace-pre-wrap break-words pt-1 not-italic",children:eQ(e.text)}):null]})}return"svc"===e.kind?(0,r.jsx)("div",{className:"my-1 break-words text-[11.5px] text-dim",children:e.text}):"note"===e.kind?(0,r.jsx)("div",{className:"my-2 break-words text-[12.5px] text-dim",children:eB(e.text)}):(0,r.jsx)("div",{className:`my-0.5 break-words text-[12.5px] ${e.err?"text-err":"text-[#555]"}`,children:e.text})}function ta({icon:e,label:t}){return(0,r.jsxs)("div",{className:"mt-2 flex items-center gap-2 text-[12px] font-semibold text-ok",children:[(0,r.jsxs)("span",{className:"flex items-center gap-0.5","aria-hidden":!0,children:[(0,r.jsx)("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-ok"}),(0,r.jsx)("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-ok [animation-delay:150ms]"}),(0,r.jsx)("span",{className:"h-1.5 w-1.5 animate-bounce rounded-full bg-ok [animation-delay:300ms]"})]}),(0,r.jsx)(e,{className:"h-3.5 w-3.5","aria-hidden":!0}),t]})}function to({file:e,files:t,onSelect:n,showSvc:s,lineFilter:i,onStatus:a,paused:o,follow:c,setFollow:u,compact:p=!1}){let[x,m]=(0,l.useState)(c),f=function(e,t=!1,n=2500){let r=(0,l.useRef)(n),[s,i]=(0,l.useState)([]),[a,o]=(0,l.useState)(0),[c,d]=(0,l.useState)(!1),[u,p]=(0,l.useState)(null),[x,m]=(0,l.useState)(null),[f,h]=(0,l.useState)(!1),[b,g]=(0,l.useState)(!1),[v,j]=(0,l.useState)(!1),[w,y]=(0,l.useState)(0),N=(0,l.useRef)(0),k=(0,l.useRef)(0),S=(0,l.useRef)(""),C=(0,l.useRef)(!0),$=(0,l.useRef)(0),A=(0,l.useRef)(!1),E=(0,l.useRef)(!1);(0,l.useEffect)(()=>{r.current=n},[n]),(0,l.useEffect)(()=>{A.current=f||t},[f,t]);let R=()=>{N.current=0,k.current=0,S.current="",C.current=!0,g(!1)},M=(0,l.useCallback)(()=>{i([]),R()},[]);return(0,l.useEffect)(()=>{$.current+=1,R(),i([]),o(e?.size??0),p(null),d(!!e)},[e?.path]),(0,l.useEffect)(()=>{if(!e)return;let t=!0,n=$.current,l=async()=>{if(t&&!A.current)try{let l=await fetch(`/api/log?path=${encodeURIComponent(e.path)}&offset=${N.current}`),s=await l.json();if(!t||n!==$.current)return;if("error"in s&&s.error){p(s.error),d(!1);return}if(N.current>s.size&&(R(),i([])),s.data){let e=S.current+s.data;if(S.current="",C.current){if(k.current=s.start,s.start>0){let t=e.indexOf("\n");k.current=s.start+(t>=0?eg(e.slice(0,t+1)):eg(e)),e=t>=0?e.slice(t+1):""}g(k.current>0)}let t=e.split("\n");S.current=t.pop()??"";let n=t.map(e=>e.trim()).filter(Boolean);0===N.current?i(n):n.length&&i(e=>r.current>0?e.concat(n).slice(-r.current):e.concat(n)),C.current=!1}N.current=s.offset,o(s.size),p(null),m(new Date),d(!1)}catch{t&&n===$.current&&(p("сервер недоступний"),d(!1))}};l();let s=setInterval(l,1200);return()=>{t=!1,clearInterval(s)}},[e?.path]),{lines:s,size:a,loading:c,error:u,tickTime:x,paused:f,setPaused:h,clear:M,hasMore:b,loadingOlder:v,loadOlder:(0,l.useCallback)(async()=>{if(!e||E.current||k.current<=0)return 0;E.current=!0,j(!0);let t=$.current;try{let n="",r=k.current;for(let l=0;l<4;l+=1){let l=await fetch(`/api/log?path=${encodeURIComponent(e.path)}&before=${r}`),s=await l.json();if(t!==$.current||"error"in s&&s.error)return 0;if(n=s.data+n,r=s.start,0===r||n.slice(0,-1).includes("\n"))break}let l=r;if(r>0){let e=n.indexOf("\n");if(e<0||e===n.length-1)return 0;l=r+eg(n.slice(0,e+1)),n=n.slice(e+1)}let s=n.split("\n");""===s.at(-1)&&s.pop();let a=s.map(e=>e.trim()).filter(Boolean);return k.current=l,g(l>0),a.length&&(i(e=>a.concat(e)),y(e=>e+1)),a.length}catch{return 0}finally{E.current=!1,j(!1)}},[e?.path]),prependGen:w}}(e,o,x&&p?2500:0),h=(0,l.useRef)(null),b=(0,l.useRef)(null),[g,v]=(0,l.useState)(1500),[j,y]=(0,l.useState)(0),[N,k]=(0,l.useState)(!1),S=(0,l.useRef)(x),C=(0,l.useRef)(0),$=(0,l.useRef)(0),A=(0,l.useRef)(null),E=(e,t=!1)=>{S.current=e,m(e),u(e),e&&y(0),t&&(k(!0),A.current&&window.clearTimeout(A.current),A.current=window.setTimeout(()=>k(!1),450))};(0,l.useEffect)(()=>v(1500),[e?.path]),(0,l.useEffect)(()=>{c!==S.current&&(S.current=c,m(c),c&&y(0))},[c]),(0,l.useEffect)(()=>()=>{A.current&&window.clearTimeout(A.current)},[]);let R=(0,l.useMemo)(()=>e?function(e,t,n,r){let l=new Map,s=new Map,i=[],a=0,o="",c=e=>!!(!(e.length<=2e4)&&(e.match(/\s/g)?.length??0)/e.length<.02)&&(i.push({kind:"blob",bytes:e.length,text:eY(e).slice(0,2e5)}),!0),d=(e,t)=>{let n=eU(e.source),r=ez(n.data)||ez(t.base64);if(!r)return;let l=ez(n.media_type)||ez(t.type),s=l.startsWith("image/")?l:"image/png",a=eU(t.dimensions);i.push({kind:"image",media:s,data:r,w:eI(a.originalWidth),h:eI(a.originalHeight),bytes:eI(t.originalSize)})},u=(e,t,n)=>{e$.lastIndex=0;let r=e$.test(t);if(e$.lastIndex=0,!r){let n=eZ(t.trim(),e);return!!n&&(i.push(n),!0)}let l=!1,s=0,a=t=>{let r=t.trim();if(!r)return;let s=eZ(r,e);s?(i.push(s),l=!0):n(r)};for(let e of t.matchAll(e$)){let n=e[0],r=e.index??0;a(t.slice(s,r)),i.push(e0(n,e[1]??"",e[2]??"")),l=!0,s=r+n.length}return a(t.slice(s)),l},p=e=>{let t=[];return e$.lastIndex=0,{cleaned:e.replace(e$,(e,n,r)=>(t.push(e0(e,n,r)),"")).trim(),cites:t}},x=(t,n)=>{if(!n.trim()||n===o||(o=n,c(n)))return;let r="codex"===e.engine?"codex":"claude";u(t,n,e=>i.push({kind:"prose",ts:t,text:e,engine:r}))||i.push({kind:"prose",ts:t,text:n,engine:r})},m=(e,t,n,r)=>{let s=n||"plain-"+i.length+"-"+String(e??""),a=function(e,t="shell"){let n=eY(e);return{cmd:n,display:function(e){let t,n=e.match(/^([A-Za-z][\w.]*): /),r=n?n[0]:"",l=r?e.slice(r.length):e;do t=l,l=(l=(l=(l=l.replace(/^export PATH=[^;]+;\s*/,"")).replace(/^cd\s+\S+\s*&&\s*/,"")).replace(/^\/usr\/bin\/zsh -lc\s+/,"")).replace(/^(["'])([\s\S]*)\1$/,(e,t,n)=>RegExp(`(?<!\\\\)${t}`).test(n)?e:n);while(l!==t);let s=l.match(/^([\w./-]+(?:\s+-)?)\s*<<\s*['"]?(\w+)['"]?/);return s&&(l=`${s[1].trim()} \xabheredoc\xbb`),(r+(l=l.replace(/\s+/g," ").trim())).slice(0,160)}(n),icon:t,output:"",status:"run",label:"виконується…",open:!1}}(t,r);return l.set(s,a),i.push({kind:"cmd",id:s,call:a,ts:e}),a},f=(e,t,r)=>{if(!e)return;let a=s.get(e);if(a){a.delivery=r||/"success"\s*:\s*false/.test(t)?"err":"ok",a.msgId=t.match(/"msg_id"\s*:\s*"([^"]+)"/)?.[1];return}!e1(l.get(e),t,r)&&t&&n&&i.push({kind:"svc",text:"output: "+eY(t).slice(0,200)})},h=e=>{n?i.push({kind:"svc",text:e.slice(0,300)}):a+=1},b=e=>{i.push({kind:"note",text:e})},g=(e,t)=>{let n=t.replace(eL,(t,n,r,l)=>{let s=eF(r,"teammate_id")||eF(r,"from")||"тімейт",a=eF(r,"summary"),o=l.trim();if(o.startsWith("{"))try{let e=JSON.parse(o);if("idle_notification"===e.type){let t=w(e.timestamp);return i.push({kind:"tnote",text:`${s}: звільнився${t?" \xb7 "+t:""}`}),""}}catch{}let{cleaned:c,cites:d}=p(o),u=/^(REQUEST_CHANGES|APPROVE|COMMENT)\b/.test(c)?eZ(c,e):null;for(let t of(i.push({kind:"tmsg",ts:e,dir:"in",peer:s,summary:a,text:u?"":c}),u&&i.push(u),d))i.push(t);return""}).replace(/Another Claude session sent a message:\s*/g,"").trim();!n||c(n)||(eO.test(n)?i.push({kind:"sysmsg",label:eD(n),text:n}):u(e,n,t=>i.push({kind:"user",ts:e,text:t}))||i.push({kind:"user",ts:e,text:n}))},v=e=>{let t=eU(e.payload),n=e.timestamp;if("session_meta"===e.type)return b(`Сесія Codex створена \xb7 ${ez(t.model)} \xb7 ${ez(t.cwd)}`);if("event_msg"===e.type){if("agent_message"===t.type&&t.message)return x(n,ez(t.message));if("user_message"===t.type&&t.message){let e=ez(t.message);return eO.test(e)?i.push({kind:"sysmsg",label:eD(e),text:e}):i.push({kind:"user",ts:n,text:e})}return"task_started"===t.type?b("Задача стартувала"+(n?" \xb7 "+w(n):"")):"task_complete"===t.type?b("Задачу завершено"+(n?" \xb7 "+w(n):"")):h(ez(t.type)||"event")}if("response_item"===e.type){if("message"===t.type){let e=eH(t.content).map(e=>ez(e.text)||ez(e.input_text)).join(" ").trim();return e?"user"!==t.role?x(n,e):eO.test(e)?i.push({kind:"sysmsg",label:eD(e),text:e}):i.push({kind:"user",ts:n,text:e}):h("message "+ez(t.role))}if("function_call"===t.type){let e={};try{e=JSON.parse(ez(t.arguments)||"{}")}catch{e={}}let r=ez(t.name);if("exec_command"===r||"shell"===r)return m(n,String(e.cmd??e.command??"").replace(/^\/usr\/bin\/zsh -lc /,""),ez(t.call_id));if("apply_patch"===r){let t=String(e.input??"").match(/(Add|Update|Delete) File: [^\n]+/g);i.push({kind:"edit",files:t?t.join(", ").replace(/(Add|Update|Delete) File: /g,""):"патч"});return}return"write_stdin"===r?h("stdin → сесія "+String(e.session_id??"")):m(n,r+" "+JSON.stringify(e).slice(0,120),ez(t.call_id),"tool")}if("function_call_output"===t.type)return f(ez(t.call_id),"string"==typeof t.output?t.output:JSON.stringify(t.output??""));if("custom_tool_call"===t.type&&"apply_patch"===ez(t.name)){let e=ez(t.input).match(/(Add|Update|Delete) File: [^\n]+/g);i.push({kind:"edit",files:e?e.join(", ").replace(/(Add|Update|Delete) File: /g,""):"патч"});return}return"custom_tool_call_output"===t.type?f(ez(t.call_id),"string"==typeof t.output?t.output:JSON.stringify(t.output??"")):"reasoning"===t.type?h("reasoning"):h(ez(t.type)||"item")}h(ez(e.type)||"запис")},j=e=>{let t=e.timestamp;if("user"===e.type&&e.message){let n=eU(e.message).content,r=eU(eU(e.toolUseResult).file);if("string"==typeof n)g(t,n);else for(let e of eH(n))if("text"===e.type)g(t,ez(e.text));else if("image"===e.type)d(e,r);else if("tool_result"===e.type){let t=eH(e.content);for(let e of t)"image"===e.type&&d(e,r);let n="string"==typeof e.content?e.content:t.filter(e=>"image"!==e.type).map(e=>ez(e.text)).join(" ");f(ez(e.tool_use_id),n,!0===e.is_error)}return}if("assistant"===e.type&&e.message){for(let n of eH(eU(e.message).content))if("text"===n.type&&ez(n.text).trim())x(t,ez(n.text));else if("thinking"===n.type&&ez(n.thinking).trim())i.push({kind:"think",text:ez(n.thinking).replace(/\s+/g," ").trim()});else if("tool_use"===n.type&&"SendMessage"===ez(n.name)){let e=eU(n.input),r=e.message;if("string"==typeof r){let{cleaned:l,cites:a}=p(r),o=/^(REQUEST_CHANGES|APPROVE|COMMENT)\b/.test(l)?eZ(l,t):null,c={kind:"tmsg",ts:t,dir:"out",peer:String(e.to??""),summary:String(e.summary??""),text:o?"":l};for(let e of(i.push(c),o&&i.push(o),a))i.push(e);ez(n.id)&&s.set(ez(n.id),c)}else h(`SendMessage → ${String(e.to??"")} \xb7 ${ez(eU(r).type)||"протокол"}`)}else if("tool_use"===n.type){let e=eU(n.input),r=String(e.command??e.file_path??e.prompt??JSON.stringify(e));m(t,ez(n.name)+": "+r.slice(0,160),ez(n.id),"tool")}return}h(ez(e.type)||"запис")},y=null,N=()=>{if(!y)return;let e=y.join("\n").trim();if(y=null,!e)return;let t=e=>{for(let t of e.split("\n"))t.trim()&&i.push({kind:"raw",text:eY(t),err:/error|failed|traceback|exception/i.test(t)})};u(null,e,t)||t(e)},k=e=>{let t=e.replace(/\x1b\][^\x07]*(\x07|\x1b\\)/g,"").replace(/\x1b\[[0-9;?]*[A-Za-z]/g,"");if(y)if(!/^\[codex\]/.test(t))return void y.push(t);else N();if(/Assistant message$/.test(t))return;let n=t.match(/^\[([^\]]+)\]\s*(.*)$/),r=n?.[1]??null,s=n?.[2]??t;if(!(!s||/^Assistant message captured/.test(s))){if(!n&&(eA.test(t)||t.startsWith("<oai-mem-citation>"))){y=[t];return}if(/^Running command: /.test(s))return m(r,s.replace(/^Running command: /,"").replace(/^\/usr\/bin\/zsh -lc /,""));if(/^Command (completed|failed)/.test(s)){let e=[...l.values()].at(-1);e&&e1(e,/^Command failed/.test(s)?s+"\n(це джоб-лог: він не містить stdout команд; повний вивід — у rollout-сесії Codex у списку зліва)":s,/^Command failed/.test(s));return}return/^Applying \d+ file/.test(s)?i.push({kind:"edit",files:s}):n&&!/^(Running|Command|Applying)/.test(s)?x(r,s):void(!c(t)&&i.push({kind:"raw",text:eY(t),err:/error|failed|traceback|exception/i.test(t)}))}};for(let n of t)if(!r||n.toLowerCase().includes(r))if("claude"===e.fmt||"codex"===e.fmt)try{let t=JSON.parse(n);t&&"object"==typeof t&&!Array.isArray(t)&&("claude"===e.fmt?j(t):v(t))}catch{k(n)}else k(n);return N(),{items:function(e,t){let n=[],r=0;for(;r<e.length;){if("cmd"!==e[r].kind){n.push(e[r]),r+=1;continue}let s=r,i=[];for(;s<e.length;){let t=e[s];if("cmd"===t.kind)i.push(t);else if("think"!==t.kind)break;s+=1}let a=s===e.length;if(i.length>=4&&!(t&&a)){let e={},t=0,a=0;for(let n of i){var l;let r=(l=n.call.cmd,l.match(/^([A-Za-z][\w.]*): /)?.[1]??"cmd");e[r]=(e[r]??0)+1,"ok"===n.call.status?t+=1:"err"===n.call.status&&(a+=1)}n.push({kind:"cmd-group",ids:i.map(e=>e.id),calls:i.map(e=>e.call),t0:i[0]?.ts,t1:i.at(-1)?.ts,byTool:e,okCount:t,errCount:a,hasErr:a>0}),r=s}else n.push(e[r]),r+=1}return n}(i,"live"===e.activity),hiddenServiceCount:a}}(e,f.lines,s,i.toLowerCase()):{items:[],hiddenServiceCount:0},[e,f.lines,s,i]),M=Math.max(0,R.items.length-g),_=M?R.items.slice(-g):R.items;(0,l.useEffect)(()=>{let t=f.tickTime?.toLocaleTimeString("uk",{hour12:!1})??"";f.error?a(f.error):e?a(`${(f.size/1024).toFixed(0)} kB${t?" \xb7 "+t:""}`):a("")},[f.error,f.size,f.tickTime,e,a]),(0,l.useEffect)(()=>{let e=R.items.length,t=f.prependGen!==$.current;$.current=f.prependGen;let n=e-C.current;C.current=e,x?h.current&&(h.current.scrollTop=h.current.scrollHeight):!t&&n>0&&y(e=>e+n)},[R.items.length,x,f.prependGen]),(0,l.useLayoutEffect)(()=>{let e=h.current,t=b.current;e&&t&&(b.current=null,e.scrollTop=t.top+(e.scrollHeight-t.height))},[f.prependGen,g]);let I=()=>{let e=h.current;e&&(b.current={top:e.scrollTop,height:e.scrollHeight}),M?v(e=>e+1500):f.hasMore&&f.loadOlder().then(()=>v(e=>e+1500))},L=M>0||f.hasMore,O=R.items.at(-1),D=O?.kind==="cmd"&&"run"===O.call.status?{icon:Z.A,label:`виконує ${O.call.cmd.split(/[\s:]/,1)[0]||"інструмент"}…`}:O?.kind==="think"?{icon:Q.A,label:"думає…"}:{icon:Q.A,label:"працює…"};return(0,r.jsxs)("div",{className:"relative flex min-h-0 flex-1 flex-col",children:[e&&R.items.length?x?"live"===e.activity?(0,r.jsxs)("div",{className:`pointer-events-none absolute bottom-2 right-3 z-10 inline-flex items-center gap-1 rounded-full bg-ok px-2 py-0.5 text-[10px] font-bold text-white shadow-card transition-transform duration-200 ${N?"scale-125":"scale-100"}`,children:[(0,r.jsx)(eb.A,{className:"h-3 w-3","aria-hidden":!0})," живий хвіст"]}):null:(0,r.jsxs)("button",{className:"absolute bottom-2 right-3 z-10 inline-flex items-center gap-1 rounded-full border border-line bg-panel px-2.5 py-1 text-[11px] font-semibold text-ink shadow-card hover:border-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40","aria-label":"Повернутись до живого хвоста",onClick:()=>{let e=h.current;e&&(e.scrollTop=e.scrollHeight),E(!0,!0)},children:[(0,r.jsx)(T.A,{className:"h-3.5 w-3.5","aria-hidden":!0})," ",j?`${j} нових`:"вниз"]}):null,(0,r.jsx)("div",{ref:h,className:p?"min-h-0 flex-1 overflow-y-auto py-3":"min-h-0 flex-1 overflow-y-auto py-6",onScroll:e=>{let t=e.currentTarget,n=t.scrollTop+t.clientHeight>=t.scrollHeight-50;n&&!S.current?E(!0,!0):!n&&S.current&&E(!1),t.scrollTop<120&&L&&!f.loadingOlder&&!f.loading&&I()},children:(0,r.jsx)("div",{className:p?"px-3 pb-4 text-[13px]":"mx-auto w-full max-w-[1060px] px-6 pb-16",children:e?(0,r.jsxs)(r.Fragment,{children:[p&&L?(0,r.jsx)("button",{className:"mb-2 flex w-full items-center justify-center gap-1.5 rounded-[8px] border border-dashed border-line bg-bg px-2 py-1 text-[11px] font-semibold text-dim hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",disabled:f.loadingOlder,onClick:I,children:f.loadingOlder?"завантаження…":(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(U.A,{className:"h-3.5 w-3.5","aria-hidden":!0})," показати раніше"]})}):null,!p&&L&&R.items.length?(0,r.jsx)("button",{className:"mb-3 flex w-full items-center justify-center gap-1.5 rounded-[10px] border border-dashed border-line bg-panel px-3 py-1.5 text-[12px] font-semibold text-dim hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",disabled:f.loadingOlder,onClick:I,children:f.loadingOlder?"завантаження…":M?`показати раніше (сховано ${M})`:"завантажити раніше з файлу"}):null,p||L||!R.items.length?null:(0,r.jsx)("div",{className:"mb-3 text-center text-[11px] text-dim",children:"початок розмови"}),p?null:(0,r.jsx)(em,{file:e,files:t,onSelect:n}),R.items.length?(0,r.jsxs)(r.Fragment,{children:[_.map((e,t)=>(0,r.jsx)(ti,{item:e},t+R.items.length-_.length)),"live"===e.activity?(0,r.jsx)(ta,{icon:D.icon,label:D.label}):null,"recent"===e.activity&&ew(e)?(0,r.jsx)("div",{className:"mt-2 text-[11.5px] font-semibold text-[#b8860b]",children:"закінчив хід — чекає відповіді"}):"recent"===e.activity&&d(e)&&"running"!==e.proc?(0,r.jsxs)("div",{className:"mt-2 flex items-center gap-1 text-[11.5px] font-semibold text-dim",children:[(0,r.jsx)(P.A,{className:"h-3.5 w-3.5","aria-hidden":!0})," повернувся з результатом"]}):null]}):(0,r.jsxs)("div",{className:"mt-[14vh] text-center text-dim",children:[f.loading?"Завантаження…":0===f.size?"Ще без виводу — файл поки порожній":R.hiddenServiceCount?`Видимих повідомлень нема — лише службові записи (${R.hiddenServiceCount}). Натисни \xabСлужбові\xbb`:"Порожньо (немає рядків для показу)",!f.loading&&(e.cmdDesc||e.cmd)?(0,r.jsxs)("div",{className:"mx-auto mt-3 max-w-[560px]",children:[e.cmdDesc?(0,r.jsx)("div",{className:"text-[12.5px] font-semibold text-ink",children:e.cmdDesc}):null,e.cmd?(0,r.jsx)("pre",{className:"mt-1.5 overflow-x-auto whitespace-pre-wrap break-words rounded-[10px] border border-line bg-bg px-3 py-2 text-left font-mono text-[11.5px] text-ink",children:e.cmd}):null]}):null]})]}):(0,r.jsx)("div",{className:"mt-[20vh] text-center text-dim",children:"Вибери лог зліва — стрічка оновлюється сама"})})})]})}function tc({onError:e,onUnclaimedText:t}){let[n,r]=(0,l.useState)("idle"),[s,i]=(0,l.useState)(0),a=(0,l.useRef)(null),o=(0,l.useRef)([]),c=(0,l.useRef)(!1),d=(0,l.useRef)(null),u=(0,l.useRef)(null),p=(0,l.useRef)(null),x=(0,l.useRef)(null),m=(0,l.useRef)(!1),f=()=>{null!==d.current&&(clearInterval(d.current),d.current=null)},h=()=>{let e=p.current;p.current=null,e&&(cancelAnimationFrame(e.raf),e.ctx.close().catch(()=>void 0))};(0,l.useEffect)(()=>()=>{f(),h(),c.current=!0;let e=a.current;e&&"inactive"!==e.state&&e.stop(),e?.stream.getTracks().forEach(e=>e.stop())},[]);let b=async()=>{f(),h();let n=a.current;a.current=null,n?.stream.getTracks().forEach(e=>e.stop());let l=new Blob(o.current,{type:"audio/webm"});o.current=[];let s=x.current;if(x.current=null,c.current||l.size<2e3){r("idle"),s?.(null);return}r("busy");try{let n=new FormData;n.append("file",l,"dictation.webm");let r=await fetch("/api/transcribe",{method:"POST",body:n}),i=await r.json();if(!r.ok||"string"!=typeof i.text){e(i.error??"не вдалося розпізнати"),s?.(null);return}let a=i.text.trim();a?s?s(a):t(a):(e("тиша — нічого не розпізналось"),s?.(null))}catch{e("сервер недоступний"),s?.(null)}finally{r("idle")}},g=async()=>{let t;if(m.current||a.current)return;m.current=!0;try{t=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1}})}catch{e("немає доступу до мікрофона");return}finally{m.current=!1}let n=MediaRecorder.isTypeSupported("audio/webm;codecs=opus")?"audio/webm;codecs=opus":"audio/webm",l=new MediaRecorder(t,{mimeType:n});o.current=[],c.current=!1,l.ondataavailable=e=>{e.data.size&&o.current.push(e.data)},l.onstop=()=>{b()},l.start(250),a.current=l,(e=>{let t;try{t=new AudioContext}catch{return}let n=t.createAnalyser();n.fftSize=128,n.smoothingTimeConstant=.7,t.createMediaStreamSource(e).connect(n);let r=new Uint8Array(n.frequencyBinCount),l=()=>{if(!p.current)return;p.current.raf=requestAnimationFrame(l),n.getByteFrequencyData(r);let e=u.current;e&&function(e,t){let n=window.devicePixelRatio||1;(e.width!==56*n||e.height!==16*n)&&(e.width=56*n,e.height=16*n);let r=e.getContext("2d");if(!r)return;r.setTransform(n,0,0,n,0,0),r.clearRect(0,0,56,16);let l=Math.max(13,Math.floor(.65*t.length))/13;for(let e=0;e<13;e+=1){let n=Math.floor(e*l),s=Math.max(n+1,Math.floor((e+1)*l)),i=0;for(let e=n;e<s;e+=1)i+=t[e]??0;let a=i/(s-n)/255,o=Math.max(1.5,16*a);r.fillStyle=`rgba(198, 40, 40, ${(.35+.65*a).toFixed(3)})`,r.fillRect(4.3076923076923075*e+1,(16-o)/2,2.3076923076923075,o)}}(e,r)};p.current={ctx:t,raf:requestAnimationFrame(l)}})(t),i(0),r("rec"),d.current=window.setInterval(()=>{i(e=>{let t=e+1;return t>=120&&a.current?.state==="recording"&&a.current.stop(),t})},1e3)};return{phase:n,elapsed:s,canvasRef:u,start:g,stop:()=>new Promise(e=>{let t=a.current;t&&"recording"===t.state?(x.current=e,t.stop()):e(null)}),discard:()=>{c.current=!0,a.current?.state==="recording"&&a.current.stop()}}}let td={"image/png":"png","image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/webp":"webp"};function tu(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let l=String(r.result),s=l.indexOf(",");s<0?n(Error("не вдалося прочитати картинку")):t({base64:l.slice(s+1),mime:e.type||"image/png",preview:l})},r.onerror=()=>n(r.error??Error("не вдалося прочитати картинку")),r.onabort=()=>n(Error("читання картинки перервано")),r.readAsDataURL(e)})}function tp(e){let[t,n]=(0,l.useState)([]),r=t=>{if(!t.length)return;let r=[];for(let n of t){if(null===(td[n.type]??null)){e.onError(`непідтримуваний формат картинки: ${n.name||n.type||"невідомий файл"}`);continue}if(n.size>0xa00000){e.onError(`${n.name||"картинка"}: завелика (ліміт 10 МБ)`);continue}r.push(n)}if(!r.length)return;let l=r.length<t.length;Promise.all(r.map(tu)).then(t=>{n(e=>[...e,...t]),l||e.onAdded?.()}).catch(t=>{e.onError(t instanceof Error?t.message:"помилка картинки")})};return{images:t,addFiles:r,handlePaste:e=>{let t=Array.from(e.clipboardData.items).filter(e=>e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(e=>null!==e);t.length&&(e.preventDefault(),r(t))},removeAt:e=>n(t=>t.filter((t,n)=>n!==e)),clear:()=>n([])}}function tx({images:e,onRemove:t}){return e.length?(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[e.map((e,n)=>(0,r.jsxs)("div",{className:"group/img relative",children:[(0,r.jsx)("img",{src:e.preview,alt:`прев'ю картинки ${n+1}`,className:"h-10 w-10 rounded border border-line object-cover"}),(0,r.jsx)("button",{type:"button",onClick:()=>t(n),"aria-label":`Прибрати картинку ${n+1}`,className:"absolute -right-1 -top-1 hidden h-4 w-4 items-center justify-center rounded-full border border-line bg-panel text-dim shadow-card hover:text-err group-hover/img:flex focus-visible:flex focus-visible:outline-none",children:(0,r.jsx)(X.A,{className:"h-2.5 w-2.5","aria-hidden":!0})})]},n)),(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 text-[10.5px] font-semibold text-dim",children:[e.length," ",1===e.length?"картинка":"картинки"," ",(0,r.jsx)(I.A,{className:"h-3 w-3","aria-hidden":!0})," шляхами до файлів"]})]}):null}function tm({onFiles:e,ariaLabel:t,className:n}){let s=(0,l.useRef)(null);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("input",{ref:s,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:t=>{e(Array.from(t.target.files??[])),t.target.value=""}}),(0,r.jsx)("button",{type:"button","aria-label":t,onClick:()=>s.current?.click(),className:n,children:(0,r.jsx)(W.A,{className:"h-4 w-4","aria-hidden":!0})})]})}function tf({phase:e,elapsed:t,canvasRef:n,start:l,stop:s,discard:i,onText:a,busy:o=!1}){let c=()=>{o||("idle"===e?l():"rec"===e&&s().then(e=>{e&&a(e)}))};if("rec"===e)return(0,r.jsxs)("span",{className:"flex shrink-0 items-center gap-1",children:[(0,r.jsxs)("button",{type:"button","aria-label":"Зупинити запис і розпізнати",onClick:c,className:"flex items-center gap-1.5 rounded-[8px] border border-err/50 bg-[#fff2f2] px-2 py-2 text-[11px] font-bold text-err focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-err/40",children:[(0,r.jsx)("canvas",{ref:n,width:56,height:16,className:"h-4 w-14","aria-hidden":!0}),`${Math.floor(t/60)}:${String(t%60).padStart(2,"0")}`]}),(0,r.jsx)("button",{type:"button","aria-label":"Скасувати запис",onClick:i,className:"inline-flex items-center justify-center rounded-[8px] border border-line bg-panel p-2 text-dim hover:text-err focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",children:(0,r.jsx)(X.A,{className:"h-3.5 w-3.5","aria-hidden":!0})})]});return(0,r.jsx)("button",{type:"button","aria-label":"busy"===e?"Розпізнаю…":"Надиктувати",title:"busy"===e?"розпізнаю…":"надиктувати (до 2 хв)",disabled:"busy"===e||o,onClick:c,className:"inline-flex shrink-0 items-center justify-center rounded-[8px] border border-line bg-panel p-2 text-dim hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40 disabled:opacity-60",children:"busy"===e?(0,r.jsx)(ei.A,{className:"h-4 w-4 animate-spin","aria-hidden":!0}):(0,r.jsx)(G.A,{className:"h-4 w-4","aria-hidden":!0})})}function th({onText:e,onError:t}){let n=tc({onError:t,onUnclaimedText:e});return(0,r.jsx)(tf,{...n,onText:e})}function tb(e){return"claude-projects"===e.root?"сесія"===e.kind||"субагент"===e.kind:"codex-sessions"===e.root}function tg({file:e}){let t=function(e,t){let[n,r]=(0,l.useState)(null);return(0,l.useEffect)(()=>{if(null===e&&!t)return;let n=!0,l=async()=>{try{let l=new URLSearchParams;null!==e&&l.set("pid",String(e)),t&&l.set("path",t);let s=await fetch(`/api/tmux?${l.toString()}`);if(!s.ok)return;let i=await s.json();n&&r(i.target??null)}catch{}};l();let s=setInterval(l,5e3);return()=>{n=!1,clearInterval(s)}},[e,t]),null!==e||t?n:null}(e.pid,tb(e)?e.path:void 0),[n,s]=(0,l.useState)(()=>sessionStorage.getItem("llvDraft:"+e.path)??""),i=(0,l.useRef)(n),a=t=>{let n="function"==typeof t?t(i.current):t;(i.current=n,s(n),n)?sessionStorage.setItem("llvDraft:"+e.path,n):sessionStorage.removeItem("llvDraft:"+e.path)},[o,c]=(0,l.useState)(!1),[d,u]=(0,l.useState)(!1),[p,x]=(0,l.useState)(!1),[m,f]=(0,l.useState)(null),[h,b]=(0,l.useState)([]),g=(0,l.useRef)(null),v=tp({onError:e=>f({kind:"err",text:e}),onAdded:()=>f(null)}),j=e=>{a(t=>t?t.trimEnd()+" "+e:e),f(null),g.current?.focus()},w=tc({onError:e=>f({kind:"err",text:e}),onUnclaimedText:j});(0,l.useLayoutEffect)(()=>{let e=g.current;e&&(e.style.height="0px",e.style.height=Math.min(e.scrollHeight+2,160)+"px")},[n]),(0,l.useEffect)(()=>b(function(e){try{let t=JSON.parse(sessionStorage.getItem("llvSent:"+e)??"[]");return Array.isArray(t)?t:[]}catch{return[]}}(e.path)),[e.path]),(0,l.useEffect)(()=>{let t=()=>b(t=>{let n=t.filter(t=>"pane"===t.via?1e3*e.mtime<t.at+2e3&&Date.now()-t.at<6e5:Date.now()-t.at<9e4);return n.length!==t.length&&sessionStorage.setItem("llvSent:"+e.path,JSON.stringify(n)),n.length!==t.length?n:t});t();let n=setInterval(t,5e3);return()=>clearInterval(n)},[e.mtime,e.path]);let y=tb(e);if(null===t&&!y)return null;let N=null===t,k=N&&"claude-projects"===e.root&&"субагент"===e.kind,S=t=>{b(t),sessionStorage.setItem("llvSent:"+e.path,JSON.stringify(t))},C=async t=>{let r=t??n;if(!o&&!d&&(r.trim()||v.images.length)){c(!0),f(null);try{let t=await fetch("/api/tmux",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({pid:e.pid??void 0,path:e.path,text:r,images:v.images.map(e=>({base64:e.base64,mime:e.mime}))})}),n=await t.json();if(!t.ok||!n.ok)return void f({kind:"err",text:n.error??"не вдалося надіслати"});let l=v.images.length,s={id:Date.now(),text:r.trim()||(l?`${l} ${1===l?"картинка":"картинки"}`:""),at:Date.now(),via:n.spawned?"spawn":"pane"};S([...h,s].slice(-8)),a(""),v.clear(),f({kind:"ok",text:n.spawned?`запущено агента в tmux ${n.target??""}`:n.imagePaths?.length?`надіслано ${n.imagePaths.length} шлях(и)`:"надіслано"}),g.current?.focus()}catch{f({kind:"err",text:"сервер недоступний"})}finally{c(!1)}}},$=async()=>{if(!o&&!d){u(!0);try{let e=await w.stop();if(null===e)return;let t=i.current?i.current.trimEnd()+" "+e:e;a(t),await C(t)}finally{u(!1)}}},A=async()=>{if(!p){x(!0),f(null);try{let t=await fetch("/api/tmux",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({action:"interrupt",path:e.path})}),n=await t.json();if(!t.ok||!n.ok)return void f({kind:"err",text:n.error??"не вдалося перервати"});f({kind:"ok",text:"надіслано Escape — агент перервано"})}catch{f({kind:"err",text:"сервер недоступний"})}finally{x(!1)}}},E="rec"===w.phase,R="busy"===w.phase,M=!o&&!d&&!R&&(E||!!n.trim()||v.images.length>0),P=o||d;return(0,r.jsxs)("form",{onSubmit:e=>{e.preventDefault(),C()},className:"flex shrink-0 flex-col gap-1.5 border-t border-line bg-[#fbfbfd] px-2.5 py-2","aria-label":N?"Запустити агента з промптом у tmux":`Надіслати повідомлення агенту в tmux ${t}`,children:[h.length?(0,r.jsx)("div",{className:"flex flex-col gap-0.5","aria-label":"Черга надісланих повідомлень",children:h.map(e=>(0,r.jsxs)("div",{className:"flex items-center justify-end gap-1.5",children:[(0,r.jsx)("span",{className:"min-w-0 max-w-[85%] truncate rounded-[10px] rounded-br-[3px] bg-[#ecebfb] px-2 py-0.5 text-[11px] text-[#333]",title:e.text,children:e.text}),(0,r.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-0.5 text-[9.5px] text-dim",children:["spawn"===e.via?(0,r.jsx)(K.A,{className:"h-2.5 w-2.5","aria-hidden":!0}):(0,r.jsx)(I.A,{className:"h-2.5 w-2.5","aria-hidden":!0}),new Date(e.at).toLocaleTimeString("uk",{hour12:!1,hour:"2-digit",minute:"2-digit"})]}),(0,r.jsx)("button",{type:"button","aria-label":"Прибрати з черги",className:"inline-flex shrink-0 items-center rounded px-0.5 text-dim hover:text-err focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",onClick:()=>S(h.filter(t=>t.id!==e.id)),children:(0,r.jsx)(X.A,{className:"h-3 w-3","aria-hidden":!0})})]},e.id))}):null,(0,r.jsx)("textarea",{ref:g,value:n,rows:1,onChange:e=>a(e.target.value),onPaste:v.handlePaste,onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),"rec"===w.phase?$():C())},placeholder:k?"написати — передам через кореневу сесію…":N?"промпт — агент запуститься в tmux…":"написати агенту…","aria-label":"Текст для агента",disabled:P,className:"w-full resize-none overflow-y-auto rounded-[10px] border border-line bg-panel px-2.5 py-1.5 text-[12.5px] leading-[18px] text-[#222] placeholder:text-dim focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40 disabled:opacity-60"}),(0,r.jsxs)("div",{className:"flex items-center justify-between gap-1.5",children:[(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,r.jsx)("span",{className:"inline-flex min-w-0 items-center gap-1 rounded-full bg-chip px-1.5 py-1 font-mono text-[9.5px] font-semibold text-[#555]",title:k?"передасться через кореневу сесію гілки":N?"нове tmux-вікно з відновленим агентом":`tmux ${t}`,children:k?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(L.A,{className:"h-3 w-3 shrink-0","aria-hidden":!0})," корінь"]}):N?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(K.A,{className:"h-3 w-3 shrink-0","aria-hidden":!0})," resume"]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(V.A,{className:"h-3 w-3 shrink-0","aria-hidden":!0})," ",(0,r.jsx)("span",{className:"truncate",children:t})]})}),N?null:(0,r.jsx)("button",{type:"button","aria-label":"Перервати агента (Escape)",title:"надіслати Escape у пейн агента",disabled:p,onClick:()=>void A(),className:"inline-flex shrink-0 items-center justify-center rounded-[8px] border border-line bg-panel p-2 text-dim hover:border-err/40 hover:text-err focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40 disabled:opacity-50",children:p?(0,r.jsx)(ei.A,{className:"h-4 w-4 animate-spin","aria-hidden":!0}):(0,r.jsx)(Y.A,{className:"h-4 w-4",fill:"currentColor","aria-hidden":!0})})]}),(0,r.jsxs)("div",{className:"flex shrink-0 items-center gap-1.5",children:[(0,r.jsx)(tf,{...w,busy:d,onText:j}),(0,r.jsx)(tm,{ariaLabel:"Додати картинки",className:"inline-flex shrink-0 items-center justify-center rounded-[8px] border border-line bg-panel p-2 text-dim hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",onFiles:v.addFiles}),(0,r.jsx)("button",{type:E?"button":"submit",onClick:E?()=>void $():void 0,disabled:!M,"aria-label":E?"Зупинити запис і надіслати":N?"Запустити агента":"Надіслати агенту",title:E?"зупинити запис і надіслати":void 0,className:`inline-flex shrink-0 items-center justify-center rounded-[8px] border p-2 text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 disabled:opacity-40 ${E?"border-err bg-err hover:opacity-90":"border-accent bg-accent hover:opacity-90"}`,children:o||d?(0,r.jsx)(ei.A,{className:"h-4 w-4 animate-spin","aria-hidden":!0}):(0,r.jsx)(K.A,{className:"h-4 w-4","aria-hidden":!0})})]})]}),(0,r.jsx)(tx,{images:v.images,onRemove:v.removeAt}),m?(0,r.jsx)("span",{className:`truncate text-[10.5px] font-semibold ${"ok"===m.kind?"text-ok":"text-err"}`,children:m.text}):null]})}let tv=()=>void 0;function tj({file:e,files:t,tasks:n,onSelect:s,isRoot:i,onClose:a,dragHandle:o}){let c=(0,l.useRef)(null),d=R(e),u="live"===e.activity;return(0,r.jsxs)("section",{ref:c,"data-pan-ignore":!0,className:`relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden rounded-[10px] border bg-panel shadow-card ${i?"border-t-4":"border-t-2"} ${u?"border-ok/60 shadow-[0_0_0_3px_rgba(47,158,68,0.16)]":"border-line"}`,style:{borderTopColor:A(e).color},children:[(0,r.jsxs)("header",{className:`flex h-10 shrink-0 items-center gap-1.5 border-b border-line px-2.5 ${u?"bg-[#eef8f0]":""} ${o?"cursor-grab active:cursor-grabbing":""}`,...o,children:[(0,r.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${N(e.activity)}`,title:"live"===e.activity?"працює":"recent"===e.activity?"закінчив":"stalled"===e.activity?"перервано":"тихо"}),(0,r.jsx)("span",{className:"inline-flex shrink-0 items-center rounded-full px-2 py-0.5 text-[10px] font-bold",style:d.style,children:d.label}),e.model?(0,r.jsx)("span",{className:"shrink-0 rounded-full px-1.5 py-0.5 font-mono text-[9.5px] font-semibold",style:{backgroundColor:A(e).soft,color:A(e).color},children:e.model}):null,i?null:(0,r.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-0.5 text-[10px] text-dim",title:"гілка цієї розмови",children:[(0,r.jsx)(P.A,{className:"h-3 w-3","aria-hidden":!0})," ",e.kind]}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-[12px] font-semibold",title:v(e.title),children:v(e.title,90)}),(0,r.jsx)(ex,{file:e,compact:!0}),a?(0,r.jsx)("button",{className:"inline-flex shrink-0 items-center rounded-[8px] border border-line bg-bg px-1.5 py-0.5 text-dim hover:border-err/40 hover:text-err focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40","aria-label":`Прибрати колонку ${v(e.title,60)}`,onClick:a,children:(0,r.jsx)(X.A,{className:"h-3 w-3","aria-hidden":!0})}):null]}),n.length?(0,r.jsx)(ec,{className:"shrink-0 border-b border-line bg-[#fbfbfd]",enter:"fade",children:n.map(e=>(0,r.jsx)("div",{"data-flip-key":e.path,children:(0,r.jsx)(tw,{file:e,files:t,onSelect:s})},e.path))}):null,(0,r.jsx)(to,{file:e,files:t,onSelect:s,showSvc:!1,lineFilter:"",onStatus:tv,paused:!1,follow:!0,setFollow:tv,compact:!0}),(0,r.jsx)(tg,{file:e}),("claude-projects"===e.root||"codex-sessions"===e.root)&&e.path.endsWith(".jsonl")?(0,r.jsx)(eh,{file:e,paneRef:c}):null]})}function tw({file:e,files:t,onSelect:n}){let[s,i]=(0,l.useState)(!1),a=v(e.cmdDesc||e.title,80);return(0,r.jsxs)("div",{className:"border-t border-line first:border-t-0",children:[(0,r.jsxs)("div",{className:"flex h-7 items-center gap-1.5 pl-2 pr-2.5",children:[(0,r.jsxs)("button",{className:"flex h-full min-w-0 flex-1 items-center gap-1.5 rounded-[6px] text-left hover:bg-bg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40","aria-expanded":s,"aria-label":`${s?"Згорнути":"Розгорнути"} фонову задачу ${a}`,onClick:()=>i(e=>!e),children:[(0,r.jsx)(z.A,{className:`h-3.5 w-3.5 shrink-0 text-dim transition-transform ${s?"rotate-90":""}`,"aria-hidden":!0}),(0,r.jsx)("span",{className:`h-1.5 w-1.5 shrink-0 rounded-full ${N(e.activity)}`}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-[11.5px] font-semibold",title:v(e.title),children:a})]}),(0,r.jsx)(ex,{file:e,compact:!0})]}),s?(0,r.jsx)("div",{className:"flex h-[220px] flex-col border-t border-dashed border-line bg-bg/60",children:(0,r.jsx)(to,{file:e,files:t,onSelect:n,showSvc:!1,lineFilter:"",onStatus:tv,paused:!1,follow:!0,setFollow:tv,compact:!0})}):null]})}let ty="llvArchived";function tN(e){try{window.localStorage.setItem(ty,JSON.stringify([...e]))}catch{}}function tk({data:e,onOpen:t}){let n=e.waiting.length,s=(0,l.useRef)(n),[i,a]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{if(n>s.current){a(!0);let e=window.setTimeout(()=>a(!1),900);return s.current=n,()=>window.clearTimeout(e)}s.current=n},[n]),(0,r.jsxs)("div",{className:"group absolute bottom-3 right-3 z-20",children:[e.livePreview.length?(0,r.jsx)("div",{className:"pointer-events-none mb-1.5 hidden w-[300px] rounded-[8px] border border-line bg-panel/95 px-3 py-2 shadow-card backdrop-blur group-focus-within:block group-hover:block",children:e.livePreview.map(e=>(0,r.jsxs)("div",{className:"flex min-w-0 gap-1.5 py-0.5 text-[10.5px]",children:[(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate font-semibold",children:e.title}),(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate text-dim",children:e.statusLine||"працює…"})]},e.file.path))}):null,(0,r.jsxs)("button",{className:`ml-auto flex items-center gap-1.5 rounded-full border border-line bg-panel/95 px-2.5 py-1 text-[11.5px] font-bold shadow-card backdrop-blur transition-transform hover:border-accent/45 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 ${i?"scale-110 border-[#e0ae45]/70":""} motion-reduce:transition-none`,"aria-label":"Відкрити пульт агентів",onClick:t,children:[(0,r.jsx)("span",{className:`h-2 w-2 rounded-full ${e.working.length?"animate-pulse bg-ok":"bg-dim"}`}),(0,r.jsx)("span",{children:e.working.length}),(0,r.jsxs)("span",{className:n?"text-[#b8860b]":"text-dim",children:["\xb7 ",n," чекають"]})]})]})}function tS({file:e,title:t,project:n,currentProject:l,descendants:s,statusLine:i,size:a,tone:o,onOpen:c,onArchive:d}){let u=R(e),p="large"===a;return(0,r.jsxs)("article",{className:`group relative flex ${p?"h-[150px] w-[300px]":"h-[108px] w-[220px]"} shrink-0 flex-col rounded-[8px] border p-3 shadow-card transition-colors hover:border-accent/45 ${"working"===o?"border-ok/40 bg-[#f3fbf5] shadow-[0_0_0_3px_rgba(26,138,62,0.12)]":"stalled"===o?"border-err/35 bg-[#fff5f5]":"waiting"===o?"border-[#e0ae45]/45 bg-[#fff9ed]":"border-line bg-panel"}`,role:"button",tabIndex:0,"aria-label":`Відкрити колонкою ${v(t,80)}`,onClick:()=>c(e),onKeyDown:t=>{"Enter"===t.key&&c(e)},children:["live"===e.activity?null:(0,r.jsx)("button",{type:"button",className:"absolute right-1.5 top-1.5 z-10 hidden h-5 w-5 items-center justify-center rounded-full border border-line bg-bg text-dim hover:border-err/50 hover:text-err focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40 group-hover:flex group-focus-within:flex","aria-label":"Прибрати з пульта",onClick:t=>{t.stopPropagation(),d(e)},onKeyDown:e=>e.stopPropagation(),children:(0,r.jsx)(X.A,{className:"h-3 w-3","aria-hidden":!0})}),(0,r.jsxs)("div",{className:"relative flex min-w-0 items-center gap-1.5",children:[(0,r.jsx)("span",{className:`h-2 w-2 shrink-0 rounded-full ${N(e.activity)}`}),(0,r.jsx)("span",{className:"shrink-0 rounded-full px-1.5 py-0.5 text-[9.5px] font-bold",style:u.style,children:u.label}),e.model?(0,r.jsx)("span",{className:"min-w-0 truncate rounded-full px-1.5 py-0.5 font-mono text-[9px] font-semibold",style:{backgroundColor:A(e).soft,color:A(e).color},children:e.model}):null,(0,r.jsx)("span",{className:`ml-auto min-w-0 truncate rounded-full border border-line bg-bg px-1.5 py-0.5 text-[9.5px] font-semibold ${n===l?"text-dim":"text-ink"}`,title:n,children:n})]}),(0,r.jsx)("div",{className:`relative mt-2 min-w-0 ${p?"text-[14px]":"text-[12.5px]"} font-bold leading-snug`,title:t,children:(0,r.jsx)("span",{className:"line-clamp-2",children:t})}),(0,r.jsxs)("div",{className:"relative mt-auto flex min-w-0 items-center gap-2 text-[10.5px] font-semibold text-dim",children:[(0,r.jsx)("span",{className:"shrink-0",children:j(e.mtime)}),s?(0,r.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-0.5",children:[(0,r.jsx)(P.A,{className:"h-3 w-3","aria-hidden":!0})," ",s]}):null]}),i?(0,r.jsx)("div",{className:`relative mt-1 min-w-0 truncate ${p?"text-[11.5px]":"text-[10.5px]"} font-semibold text-ink/75`,children:i}):null,e.pid&&"running"===e.proc?(0,r.jsx)("div",{className:"relative mt-2",onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:(0,r.jsx)(ex,{file:e,compact:!0})}):null]})}function tC({title:e,items:t,size:n,currentProject:l,onOpenFile:s,onArchive:i}){return t.length?(0,r.jsxs)("section",{className:"shrink-0",children:[(0,r.jsxs)("div",{className:"mb-2 flex items-baseline gap-2",children:[(0,r.jsx)("h2",{className:"text-[13px] font-bold",children:e}),(0,r.jsx)("span",{className:"text-[11px] font-semibold text-dim",children:t.length})]}),(0,r.jsx)(ec,{className:"flex flex-wrap gap-2.5",enter:"fade",children:t.map(e=>(0,r.jsx)("div",{"data-flip-key":e.file.path,children:(0,r.jsx)(tS,{file:e.file,title:e.title,project:e.project,currentProject:l,descendants:e.descendants,statusLine:e.statusLine,size:n,tone:"working"===e.kind?"working":"waiting"===e.kind&&"stalled"===e.file.activity?"stalled":"waiting"===e.kind?"waiting":"quiet",onOpen:s,onArchive:i})},e.file.path))})]}):null}function t$({files:e,project:t,onOpenFile:n}){let[s,i]=(0,l.useState)(!1),[a,o]=(0,l.useState)(""),[c,d]=(0,l.useState)(!1),[u,p]=(0,l.useState)(!1),[m,f]=(0,l.useState)(0),h=(0,l.useRef)(null),b=function(e,t){let[n,r]=(0,l.useState)([]),[s,i]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{if(!t||!e)return;let n=!0;i(!0);let l=async()=>{try{let t=await fetch(`/api/timeline?project=${encodeURIComponent(e)}`),l=await t.json();n&&Array.isArray(l.events)&&r(l.events)}catch{}finally{n&&i(!1)}};l();let s=setInterval(l,7e3);return()=>{n=!1,clearInterval(s)}},[e,t]),{events:n,loading:s}}(t,s),{archivedPaths:g,archive:j,unarchive:w}=function(e){let[t,n]=(0,l.useState)(()=>new Set),r=(0,l.useRef)(t);return(0,l.useEffect)(()=>{let e=function(){try{let e=window.localStorage.getItem(ty),t=e?JSON.parse(e):[];return new Set(Array.isArray(t)?t.filter(e=>"string"==typeof e):[])}catch{return new Set}}();r.current=e,n(e)},[]),(0,l.useEffect)(()=>{let t=r.current;if(!t.size)return;let l=new Set(t);for(let t of e)"live"===t.activity&&l.delete(t.path);l.size!==t.size&&(r.current=l,n(l),tN(l))},[e]),{archivedPaths:t,archive:(0,l.useCallback)(e=>{n(t=>{if(t.has(e))return t;let n=new Set(t);return n.add(e),r.current=n,tN(n),n})},[]),unarchive:(0,l.useCallback)(e=>{n(t=>{if(!t.has(e))return t;let n=new Set(t);return n.delete(e),r.current=n,tN(n),n})},[])}}(e),y=ey(e,b.events,a,m,g),N=ey(e,[],"",m,g),k=(0,l.useMemo)(()=>e.filter(e=>g.has(e.path)).map(e=>({file:e,title:v(e.title),project:x(e)})).sort((e,t)=>t.file.mtime-e.file.mtime),[e,g]);(0,l.useEffect)(()=>{let e=()=>f(Date.now()/1e3);e();let t=window.setInterval(e,3e4);return()=>window.clearInterval(t)},[]),(0,l.useEffect)(()=>{if(!s)return;let e=e=>{"Escape"===e.key&&i(!1)};return window.addEventListener("keydown",e),window.setTimeout(()=>h.current?.focus(),0),()=>window.removeEventListener("keydown",e)},[s]);let S=e=>{n(e),i(!1)},C=e=>j(e.path);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(tk,{data:N,onOpen:()=>i(!0)}),s?(0,r.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-ink/28 p-[2.5vh]",onMouseDown:()=>i(!1),children:(0,r.jsxs)("div",{className:"flex h-[95vh] w-[95vw] flex-col overflow-hidden rounded-[8px] border border-line bg-bg shadow-[0_18px_70px_rgb(20_20_30/0.28)]",role:"dialog","aria-modal":"true","aria-label":"Пульт агентів",onMouseDown:e=>e.stopPropagation(),children:[(0,r.jsxs)("header",{className:"flex h-14 shrink-0 items-center gap-3 border-b border-line bg-panel px-4",children:[(0,r.jsx)("div",{className:"text-[15px] font-bold",children:"Пульт"}),(0,r.jsx)("input",{ref:h,value:a,onChange:e=>o(e.target.value),placeholder:"Пошук за назвою або проєктом",className:"h-9 min-w-0 flex-1 rounded-[8px] border border-line bg-bg px-3 text-[13px] outline-none focus-visible:ring-2 focus-visible:ring-accent/40"}),b.loading?(0,r.jsx)("span",{className:"text-[11px] font-semibold text-dim",children:"оновлення…"}):null,(0,r.jsx)("button",{className:"inline-flex h-8 w-8 items-center justify-center rounded-[8px] border border-line bg-bg text-dim hover:text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40","aria-label":"Закрити пульт",onClick:()=>i(!1),children:(0,r.jsx)(X.A,{className:"h-4 w-4","aria-hidden":!0})})]}),(0,r.jsxs)("div",{className:"min-h-0 flex-1 space-y-5 overflow-y-auto px-4 py-4",children:[(0,r.jsx)(tC,{title:"Чекає тебе",items:y.waiting,size:"large",currentProject:t,onOpenFile:S,onArchive:C}),(0,r.jsx)(tC,{title:"Працюють",items:y.working,size:"large",currentProject:t,onOpenFile:S,onArchive:C}),(0,r.jsx)(tC,{title:"Нещодавні",items:y.recent,size:"small",currentProject:t,onOpenFile:S,onArchive:C}),(0,r.jsxs)("section",{className:"shrink-0",children:[(0,r.jsxs)("button",{className:"flex h-10 w-full items-center justify-between rounded-[8px] border border-line bg-panel px-3 text-left text-[12.5px] font-bold hover:border-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40","aria-expanded":c,onClick:()=>d(e=>!e),children:[(0,r.jsx)("span",{children:"Старіше"}),(0,r.jsx)("span",{className:"text-dim",children:y.older.length})]}),c?(0,r.jsx)("div",{className:"mt-2",children:(0,r.jsx)(tC,{title:"",items:y.older,size:"small",currentProject:t,onOpenFile:S,onArchive:C})}):null]}),y.waiting.length||y.working.length||y.recent.length||y.older.length?null:(0,r.jsx)("div",{className:"pt-[18vh] text-center text-[13px] font-semibold text-dim",children:"Нічого не знайдено"}),k.length?(0,r.jsxs)("section",{className:"shrink-0",children:[(0,r.jsxs)("button",{className:"flex h-9 w-full items-center justify-between rounded-[8px] border border-line bg-panel px-3 text-left text-[12px] font-bold text-dim hover:border-accent/40 hover:text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40","aria-expanded":u,onClick:()=>p(e=>!e),children:[(0,r.jsxs)("span",{children:["Приховані (",k.length,")"]}),(0,r.jsx)("span",{children:u?"сховати":"показати"})]}),u?(0,r.jsx)("div",{className:"mt-2 space-y-1",children:k.map(e=>(0,r.jsxs)("div",{className:"flex min-w-0 items-center gap-2 rounded-[8px] border border-line bg-panel/60 px-3 py-1.5 text-[11.5px] text-dim",children:[(0,r.jsx)("span",{className:"min-w-0 flex-1 truncate",children:e.title}),(0,r.jsx)("span",{className:"shrink-0 truncate text-[10.5px]",children:e.project}),(0,r.jsx)("button",{className:"shrink-0 rounded-full border border-line bg-bg px-2 py-0.5 text-[10.5px] font-semibold text-ink hover:border-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",onClick:()=>w(e.file.path),children:"повернути"})]},e.file.path))}):null]}):null]})]})}):null]})}function tA({items:e,onSelect:t}){let[n,s]=(0,l.useState)(!1);return(0,r.jsxs)("div",{className:"shrink-0 border-t border-line bg-panel",children:[(0,r.jsxs)("button",{className:"flex h-8 items-center gap-2 px-4 text-[10px] font-bold uppercase tracking-[.6px] text-dim hover:text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40","aria-expanded":n,onClick:()=>s(e=>!e),children:[(0,r.jsx)(z.A,{className:`h-3.5 w-3.5 transition-transform ${n?"rotate-90":""}`,"aria-hidden":!0}),"Тихі розмови й задачі",(0,r.jsx)("span",{className:"font-semibold normal-case tracking-normal",children:e.length})]}),n?(0,r.jsx)(ec,{className:"flex max-h-44 flex-wrap items-start gap-1.5 overflow-y-auto px-3 pb-2.5",children:e.map(e=>{let n=R(e),l=v(e.cmdDesc||e.title,70);return(0,r.jsxs)("button",{"data-flip-key":e.path,className:"inline-flex h-7 max-w-[360px] items-center gap-1.5 rounded-full border border-line bg-bg px-2 text-[11px] font-semibold text-ink hover:border-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",title:v(e.title),onClick:()=>t(e),children:[(0,r.jsx)("span",{className:`h-1.5 w-1.5 shrink-0 rounded-full ${N(e.activity)}`}),(0,r.jsx)("span",{className:"shrink-0 rounded-full px-1.5 text-[9px]",style:n.style,children:n.label}),(0,r.jsx)("span",{className:"truncate",children:l}),(0,r.jsx)("span",{className:"shrink-0 font-normal text-dim",children:j(e.mtime)})]},e.path)})}):null]})}let tE=[{key:"claude",label:"Claude"},{key:"codex",label:"Codex"}];function tR({project:e}){let[t,n]=(0,l.useState)(!1),[s,i]=(0,l.useState)("claude"),[a,o]=(0,l.useState)(""),[c,d]=(0,l.useState)([]),[u,p]=(0,l.useState)(""),[x,m]=(0,l.useState)(!1),[f,h]=(0,l.useState)(null),b=(0,l.useRef)(null),g=(0,l.useRef)(null),v=tp({onError:e=>h({kind:"err",text:e}),onAdded:()=>h(null)});(0,l.useEffect)(()=>{if(!t)return;let n=!1;return fetch("/api/spawn?project="+encodeURIComponent(e)).then(e=>e.json()).then(e=>{let t=e.dirs;!n&&Array.isArray(t)&&(d(t),o(e=>e||t[0]||""))}).catch(()=>{}),()=>{n=!0}},[t,e]),(0,l.useEffect)(()=>{if(!t)return;let e=e=>{"Escape"===e.key&&n(!1)},r=e=>{b.current&&!b.current.contains(e.target)&&n(!1)};return window.addEventListener("keydown",e),window.addEventListener("mousedown",r),()=>{window.removeEventListener("keydown",e),window.removeEventListener("mousedown",r)}},[t]);let j=async()=>{if(!x&&a.trim()){m(!0),h(null);try{let e=await fetch("/api/spawn",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({engine:s,cwd:a.trim(),prompt:u,images:v.images.map(e=>({base64:e.base64,mime:e.mime}))})}),t=await e.json();if(!e.ok||!t.ok)return void h({kind:"err",text:t.error??"не вдалося запустити"});h({kind:"ok",text:`запущено в tmux ${t.target??""} — скоро з'явиться в списку`}),p(""),v.clear()}catch{h({kind:"err",text:"сервер недоступний"})}finally{m(!1)}}};return(0,r.jsxs)("div",{ref:b,className:"relative ml-auto shrink-0",children:[(0,r.jsxs)("button",{type:"button","aria-expanded":t,"aria-label":"Запустити нового агента",onClick:()=>n(e=>!e),className:"flex items-center gap-1 rounded-[8px] border border-line bg-panel px-2.5 py-1 text-[11.5px] font-bold text-ink shadow-card hover:border-accent/45 hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",children:[(0,r.jsx)("span",{className:"text-[13px] leading-none text-accent",children:"+"})," Агент"]}),t?(0,r.jsxs)("div",{className:"absolute right-0 top-full z-50 mt-1.5 flex w-[360px] flex-col gap-2.5 rounded-[12px] border border-line bg-panel p-3 shadow-[0_8px_28px_rgba(20,20,30,0.14)]",children:[(0,r.jsx)("div",{className:"flex items-center gap-1.5",role:"radiogroup","aria-label":"Двигун агента",children:tE.map(({key:e,label:t})=>{let n;return(0,r.jsx)("button",{type:"button",role:"radio","aria-checked":s===e,onClick:()=>i(e),style:s===e?{backgroundColor:(n=k[e]??S).soft,color:n.color,borderColor:n.color}:void 0,className:`flex-1 rounded-[8px] border px-2 py-1.5 text-[12px] font-bold focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40 ${s===e?"":"border-line bg-bg text-dim hover:text-ink"}`,children:t},e)})}),(0,r.jsxs)("label",{className:"flex flex-col gap-1 text-[10.5px] font-semibold text-dim",children:["директорія",(0,r.jsx)("input",{value:a,onChange:e=>o(e.target.value),list:"spawn-dirs",placeholder:"/home/…/Projects/…","aria-label":"Робоча директорія агента",className:"rounded-[8px] border border-line bg-bg px-2 py-1.5 font-mono text-[11.5px] font-normal text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40"}),(0,r.jsx)("datalist",{id:"spawn-dirs",children:c.map(e=>(0,r.jsx)("option",{value:e},e))})]}),(0,r.jsxs)("label",{className:"flex flex-col gap-1 text-[10.5px] font-semibold text-dim",children:["перший промпт (опційно)",(0,r.jsx)("textarea",{ref:g,value:u,onChange:e=>p(e.target.value),onPaste:v.handlePaste,rows:3,placeholder:"що зробити…","aria-label":"Перший промпт для агента",className:"resize-y rounded-[8px] border border-line bg-bg px-2 py-1.5 text-[12px] font-normal text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40"})]}),(0,r.jsx)(tx,{images:v.images,onRemove:v.removeAt}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)(th,{onText:e=>{p(t=>t?t.trimEnd()+" "+e:e),h(null),g.current?.focus()},onError:e=>h({kind:"err",text:e})}),(0,r.jsx)(tm,{ariaLabel:"Додати картинки до промпта",className:"inline-flex shrink-0 items-center rounded-[8px] border border-line bg-panel px-2 py-1.5 text-dim hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",onFiles:v.addFiles}),(0,r.jsx)("button",{type:"button",disabled:x||!a.trim(),onClick:()=>void j(),className:"ml-auto rounded-[8px] border border-accent bg-accent px-3 py-1.5 text-[12px] font-bold text-white hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/50 disabled:opacity-40",children:x?"запускаю…":"▶ Запустити"})]}),x?(0,r.jsx)("span",{className:"text-[10.5px] text-dim",children:"чекаю, поки CLI підніметься (до хвилини)…"}):null,f?(0,r.jsx)("span",{className:`text-[11px] font-semibold ${"ok"===f.kind?"text-ok":"text-err"}`,children:f.text}):null]}):null]})}function tM({group:e,quietCount:t,onSelect:n,onResetOrder:l}){let s=e.columns[0].file,i=R(s),a=e.columns.length,o=520*a+(a-1)*12;return(0,r.jsxs)("div",{className:"shrink-0",style:{width:o},children:[(0,r.jsxs)("div",{className:"flex justify-center",style:{height:28,width:520},children:[(0,r.jsxs)("button",{className:"inline-flex h-[24px] max-w-full items-center gap-1.5 self-start rounded-full border border-line bg-panel px-2.5 shadow-card hover:border-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",title:v(s.title),"aria-label":`Відкрити розмову ${v(s.title,60)}`,onClick:()=>n(s),children:[(0,r.jsx)("span",{className:`h-1.5 w-1.5 shrink-0 rounded-full ${N(s.activity)}`}),(0,r.jsx)("span",{className:"shrink-0 rounded-full px-1.5 text-[9px] font-bold",style:i.style,children:i.label}),(0,r.jsx)("span",{className:"min-w-0 truncate text-[11px] font-bold",children:v(s.title,60)}),a-1+t>0?(0,r.jsxs)("span",{className:"inline-flex shrink-0 items-center gap-0.5 text-[10px] font-semibold text-dim",children:[(0,r.jsx)(P.A,{className:"h-3 w-3","aria-hidden":!0})," ",a-1+t," ",y(a-1+t,"гілка","гілки","гілок")]}):null]}),l?(0,r.jsx)("button",{className:"ml-1.5 inline-flex h-[22px] w-[22px] items-center justify-center self-start rounded-full border border-line bg-panel text-dim hover:text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",title:"Скинути ручний порядок колонок","aria-label":"Скинути ручний порядок колонок",onClick:l,children:(0,r.jsx)(_.A,{className:"h-3.5 w-3.5","aria-hidden":!0})}):null]}),(0,r.jsxs)("svg",{width:o,height:36,className:"block","aria-hidden":!0,children:[e.columns.slice(1).map((e,t)=>{let n=(t+1)*532+260,l=E(e.file),s=260+(n-260)*.45;return(0,r.jsxs)("g",{children:[(0,r.jsx)("path",{d:`M 260 8 C ${s} 8, ${n} 8, ${n} 36`,fill:"none",stroke:l,strokeWidth:2,strokeLinecap:"round",opacity:"live"===e.file.activity?.9:.45}),(0,r.jsx)("circle",{cx:n,cy:33,r:2.5,fill:l})]},e.file.path)}),(0,r.jsx)("line",{x1:260,y1:4,x2:260,y2:36,stroke:E(s),strokeWidth:3,strokeLinecap:"round"}),(0,r.jsx)("circle",{cx:260,cy:5,r:4.5,fill:E(s)})]})]})}let tP=e=>`llvCols:${e}`;function t_(e){try{let t=JSON.parse(localStorage.getItem(tP(e))??"{}");return{manual:t.manual??[],hidden:t.hidden??[],order:t.order??{}}}catch{return{manual:[],hidden:[],order:{}}}}function tT(e,t){let n=t_(e);n.manual.includes(t)||n.manual.push(t),n.hidden=n.hidden.filter(e=>e!==t),localStorage.setItem(tP(e),JSON.stringify(n))}function tI({files:e,project:t,openNonce:n}){let s=(0,l.useRef)(null),i=(0,l.useRef)(null),a=(0,l.useRef)(new Map),d=(0,l.useRef)(new Map),u=(0,l.useRef)(null),p=(0,l.useRef)(null),m=(0,l.useRef)(null),[b,v]=(0,l.useState)({manual:[],hidden:[],order:{}}),[j,w]=(0,l.useState)(null),N=(0,l.useRef)(null),k=(0,l.useRef)(b);(0,l.useEffect)(()=>{let e=t_(t);k.current=e,v(e)},[t,n]),(0,l.useEffect)(()=>()=>{p.current&&window.clearTimeout(p.current)},[]);let S=e=>{k.current=e,v(e),localStorage.setItem(tP(t),JSON.stringify(e))},C=(0,l.useMemo)(()=>g(e,t),[e,t]),$=(0,l.useMemo)(()=>new Set(C.map(e=>e.key)),[C]),A=(0,l.useMemo)(()=>(function(e,t,n){let r=f(e),l=[];for(let s of e){if(x(s)!==t||!c(s)||n.has(s.path))continue;let e=h(s,r);if(!e.length)continue;let i=s.mtime,a=o(s);for(let t of e)i=Math.max(i,t.mtime),a=Math.min(a,o(t));l.push({root:s,branchCount:e.length,smt:i,band:a})}return l.sort((e,t)=>e.band-t.band||t.smt-e.smt)})(e,t,$),[e,t,$]),E=(0,l.useMemo)(()=>{let n;return n=f(e),e.filter(e=>!(x(e)!==t||e.parent||$.has(e.path)||n.get(e.path)?.length)&&"live"!==e.activity).sort((e,t)=>o(e)-o(t)||t.mtime-e.mtime)},[e,t,$]),R=(0,l.useMemo)(()=>new Set(C.flatMap(e=>e.columns.map(e=>e.file.path))),[C]),M=(0,l.useMemo)(()=>new Set(b.hidden),[b.hidden]),P=(0,l.useMemo)(()=>{let n=new Map(e.map(e=>[e.path,e]));return b.manual.map(e=>n.get(e)).filter(e=>void 0!==e&&x(e)===t&&!R.has(e.path)&&!M.has(e.path))},[b.manual,e,t,R,M]),_=(0,l.useMemo)(()=>C.reduce((e,t)=>e+t.columns.reduce((e,t)=>e+ +("live"===t.file.activity)+t.tasks.filter(e=>"live"===e.activity).length,0),0),[C]),T=C.filter(e=>!e.orphanTask).length,I=e=>{a.current.get(e)?.scrollIntoView({behavior:"smooth",inline:"center",block:"nearest"}),w(e),p.current&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>w(null),1800)};(0,l.useEffect)(()=>{let e=m.current;e&&a.current.has(e)&&(m.current=null,I(e))});let L=e=>{let t=b.manual.filter(t=>t!==e),n=R.has(e)?[...new Set([...b.hidden,e])]:b.hidden;S({...b,manual:t,hidden:n})};(0,l.useEffect)(()=>{let e=k.current,n=[...R].filter(t=>!e.manual.includes(t)&&!e.hidden.includes(t));if(!n.length)return;let r={...e,manual:[...e.manual,...n].slice(-40)};k.current=r,v(r),localStorage.setItem(tP(t),JSON.stringify(r))},[R,t]);let O=e=>{let n=x(e);if(n!==t){tT(n,e.path),location.hash="#p="+encodeURIComponent(n);return}if(R.has(e.path)&&!M.has(e.path)||P.some(t=>t.path===e.path))return void I(e.path);let r=b.hidden.filter(t=>t!==e.path),l=R.has(e.path)?b.manual:[...new Set([...b.manual,e.path])];S({...b,manual:l,hidden:r}),m.current=e.path};(0,l.useEffect)(()=>{let e=s.current;if(!e)return;let t=t=>{if(t.deltaY&&!t.deltaX&&!t.shiftKey&&!t.ctrlKey){for(let n=t.target;n&&n!==e;n=n.parentElement)if(n.scrollHeight>n.clientHeight+1){let e=getComputedStyle(n).overflowY;if("auto"===e||"scroll"===e)return}e.scrollHeight>e.clientHeight+1||(t.preventDefault(),e.scrollLeft+=t.deltaY)}};return e.addEventListener("wheel",t,{passive:!1}),()=>e.removeEventListener("wheel",t)},[s]),(0,l.useEffect)(()=>{let e=s.current;if(!e)return;let n=sessionStorage.getItem("llvScroll:"+t);return n&&(e.scrollLeft=Number(n)),()=>{sessionStorage.setItem("llvScroll:"+t,String(e.scrollLeft))}},[t]);let D=e=>{let t=s.current;i.current?.active&&t&&(t.releasePointerCapture(e.pointerId),t.style.userSelect="",t.style.cursor=""),i.current=null},F=[];_?F.push(`${_} ${y(_,"гілка працює","гілки працюють","гілок працюють")} \xb7 ${T} ${y(T,"дерево","дерева","дерев")}`):T&&F.push(`${T} ${y(T,"нещодавня розмова","нещодавні розмови","нещодавніх розмов")}`),A.length&&F.push(`${A.length} ${y(A.length,"тихе дерево","тихі дерева","тихих дерев")}`);let z=e=>t=>{t?a.current.set(e,t):a.current.delete(e)},U=C.map(e=>{let t=e.columns.filter(e=>!M.has(e.file.path)),n=b.order[e.key];if(!n||t.length<3)return{...e,columns:t};let[r,...l]=t;return l.sort((e,t)=>(n[e.file.path]??1e9)-(n[t.file.path]??1e9)),{...e,columns:r?[r,...l]:l}}).filter(e=>e.columns.length),H=U.filter(e=>e.orphanTask).map(e=>e.columns[0].file),J=U.filter(e=>!e.orphanTask),W=J.length>0||P.length>0;return(0,r.jsxs)("div",{className:"relative flex min-h-0 min-w-0 flex-1 flex-col",children:[(0,r.jsxs)("div",{className:"flex h-10 shrink-0 items-center gap-2.5 border-b border-line bg-panel px-4",children:[(0,r.jsx)("h1",{className:"truncate text-[13.5px] font-bold",children:t}),(0,r.jsx)("span",{className:"truncate text-[11.5px] text-dim",children:F.length?F.join(" \xb7 "):"зараз нічого не працює"}),(0,r.jsx)(tR,{project:t})]}),H.length?(0,r.jsx)("div",{className:"shrink-0 border-b border-line bg-[#fbfbfd]",children:H.map(t=>(0,r.jsx)("div",{className:`border-l-4 ${"live"===t.activity?"border-l-ok bg-[#f2faf4]":"border-l-[#9a9aa4]"}`,children:(0,r.jsx)(tw,{file:t,files:e,onSelect:O})},t.path))}):null,W?(0,r.jsx)("div",{ref:s,className:"min-h-0 flex-1 overflow-x-auto overflow-y-hidden",onPointerDown:e=>{if(0!==e.button||e.target.closest('button, a, input, textarea, select, [draggable="true"], [data-pan-ignore]'))return;let t=s.current;t&&(i.current={x:e.clientX,y:e.clientY,left:t.scrollLeft,active:!1})},onPointerMove:e=>{let t=i.current,n=s.current;if(!t||!n)return;let r=e.clientX-t.x,l=e.clientY-t.y;if(!t.active){let s=window.getSelection();if(s&&!s.isCollapsed){i.current=null;return}if(8>Math.abs(r)||Math.abs(r)<1.2*Math.abs(l))return;t.active=!0,n.setPointerCapture(e.pointerId),n.style.userSelect="none",n.style.cursor="grabbing"}n.scrollLeft=t.left-r},onPointerUp:D,onPointerCancel:D,children:(0,r.jsxs)(ec,{className:"flex h-full items-stretch gap-10 px-3 py-2.5",children:[J.map(t=>{let n,l;return(0,r.jsxs)("div",{"data-flip-key":t.key,ref:(n=t.key,e=>{e?d.current.set(n,e):d.current.delete(n)}),className:"flex h-full shrink-0 flex-col",...(l=t.key,{onPointerEnter:e=>{u.current=l,e.currentTarget.setAttribute("data-flip-skip","1")},onPointerLeave:e=>{u.current===l&&(u.current=null),e.currentTarget.removeAttribute("data-flip-skip")}}),children:[(0,r.jsx)(tM,{group:t,quietCount:t.returnable.length+t.finished.length,onSelect:O,onResetOrder:b.order[t.key]?()=>{var e;let n;return e=t.key,n={...b.order},void(delete n[e],S({...b,order:n}))}:void 0}),(0,r.jsx)(ec,{className:"flex min-h-0 flex-1",style:{gap:12},children:t.columns.map(n=>{let l,s,i=n.file.path===t.key;return(0,r.jsx)("div",{"data-flip-key":n.file.path,ref:z(n.file.path),className:`flex min-h-0 rounded-[10px] transition-shadow ${j===n.file.path?"ring-2 ring-accent/60":""}`,style:{width:520},onDragOver:e=>{i||N.current?.group!==t.key||e.preventDefault()},onDrop:()=>{i||((e,t)=>{let n=N.current;if(N.current=null,!n||n.group!==e||n.path===t)return;let r=J.find(t=>t.key===e);if(!r)return;let l=r.columns.slice(1).map(e=>e.file.path),s=l.indexOf(n.path),i=l.indexOf(t);if(s<0||i<0)return;l.splice(s,1),l.splice(i,0,n.path);let a=Object.fromEntries(l.map((e,t)=>[e,t]));S({...b,order:{...b.order,[e]:a}})})(t.key,n.file.path)},children:(0,r.jsx)(tj,{file:n.file,tasks:n.tasks,files:e,onSelect:O,isRoot:i,onClose:()=>L(n.file.path),dragHandle:i?void 0:(l=t.key,s=n.file.path,{draggable:!0,onDragStart:e=>{N.current={group:l,path:s},e.dataTransfer.effectAllowed="move"},onDragEnd:()=>{N.current=null}})})},n.file.path)})})]},t.key)}),P.map(t=>(0,r.jsxs)("div",{"data-flip-key":t.path,className:"flex h-full shrink-0 flex-col",style:{width:520},children:[(0,r.jsx)("div",{style:{height:64},className:"shrink-0"}),(0,r.jsx)("div",{ref:z(t.path),className:`flex min-h-0 flex-1 rounded-[10px] transition-shadow ${j===t.path?"ring-2 ring-accent/60":""}`,children:(0,r.jsx)(tj,{file:t,tasks:[],files:e,onSelect:O,isRoot:!t.parent,onClose:()=>L(t.path)})})]},t.path))]})}):(0,r.jsx)("div",{className:"flex flex-1 items-center justify-center px-4 py-5 text-center",children:(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-[13.5px] font-semibold text-dim",children:"Жодної відкритої колонки"}),(0,r.jsx)("div",{className:"mt-0.5 text-[12px] text-dim",children:"Відкрий пульт у правому нижньому куті і клікни розмову — вона додасться сюди"})]})}),(0,r.jsx)(t$,{files:e,project:t,onOpenFile:O}),E.length?(0,r.jsx)(tA,{items:E,onSelect:O}):null]})}var tL=n(908);function tO(){let[e,t]=(0,l.useState)(!1),[s,i]=(0,l.useState)({status:"idle"}),[a,o]=(0,l.useState)(null),[c,d]=(0,l.useState)(!1),u=(0,l.useRef)(null);(0,l.useEffect)(()=>{if(!e||"idle"!==s.status)return;let t=!1;return fetch("/api/access").then(e=>e.json()).then(e=>{t||i(e.tailnetUrl?{status:"ready",url:e.tailnetUrl}:{status:"unavailable"})}).catch(()=>{t||i({status:"error"})}),()=>{t=!0}},[e,s.status]),(0,l.useEffect)(()=>{if("ready"!==s.status)return;let e=!1,t=s.url;return n.e(768).then(n.t.bind(n,768,19)).then(({toDataURL:e})=>e(t,{margin:1,width:220})).then(n=>{e||o({url:t,dataUrl:n})}).catch(()=>{}),()=>{e=!0}},[s]);let p="ready"===s.status&&a&&a.url===s.url?a.dataUrl:null;(0,l.useEffect)(()=>{if(!e)return;let n=e=>{"Escape"===e.key&&t(!1)},r=e=>{u.current&&!u.current.contains(e.target)&&t(!1)};return window.addEventListener("keydown",n),window.addEventListener("pointerdown",r),()=>{window.removeEventListener("keydown",n),window.removeEventListener("pointerdown",r)}},[e]);let x=(0,l.useCallback)(()=>{"ready"===s.status&&navigator.clipboard.writeText(s.url).then(()=>{d(!0),window.setTimeout(()=>d(!1),2e3)}).catch(()=>{})},[s]);return(0,r.jsxs)("div",{ref:u,className:"relative ml-auto shrink-0",children:[(0,r.jsx)("button",{type:"button","aria-expanded":e,"aria-label":"Показати QR для входу з телефона",onClick:()=>{e||i({status:"idle"}),t(!e)},className:"flex items-center justify-center rounded-[8px] border border-line bg-panel p-1.5 text-dim hover:border-accent/45 hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",children:(0,r.jsx)(tL.A,{className:"h-4 w-4","aria-hidden":!0})}),e?(0,r.jsx)("div",{className:"fixed left-1/2 top-12 z-50 flex w-[260px] -translate-x-1/2 flex-col gap-2.5 rounded-[12px] border border-line bg-panel p-3 shadow-[0_8px_28px_rgba(20,20,30,0.14)] sm:absolute sm:left-auto sm:right-0 sm:top-full sm:mt-1.5 sm:translate-x-0",children:"idle"===s.status?(0,r.jsx)("span",{className:"text-[11.5px] text-dim",children:"завантаження…"}):"error"===s.status?(0,r.jsx)("span",{className:"text-[11.5px] font-semibold text-err",children:"не вдалося отримати посилання"}):"unavailable"===s.status?(0,r.jsxs)("span",{className:"text-[11.5px] text-dim",children:["Запустіть viewer з доступом через Tailscale:"," ",(0,r.jsx)("code",{className:"rounded bg-bg px-1 py-0.5 font-mono text-[11px]",children:"bunx agent-log-viewer --tailscale"})]}):(0,r.jsxs)(r.Fragment,{children:[p?(0,r.jsx)("img",{src:p,alt:"QR код для входу з телефона",className:"mx-auto h-[220px] w-[220px]"}):(0,r.jsx)("span",{className:"text-[11.5px] text-dim",children:"генерую QR…"}),(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsx)("input",{readOnly:!0,value:s.url,"aria-label":"Посилання для входу з телефона",onFocus:e=>e.currentTarget.select(),className:"min-w-0 flex-1 truncate rounded-[8px] border border-line bg-bg px-2 py-1.5 font-mono text-[10.5px] text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40"}),(0,r.jsx)("button",{type:"button","aria-label":"Копіювати посилання",onClick:x,className:"flex shrink-0 items-center gap-1 rounded-[8px] border border-line bg-panel px-2 py-1.5 text-[11px] font-semibold text-dim hover:border-accent/45 hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",children:c?(0,r.jsx)(F.A,{className:"h-3.5 w-3.5","aria-hidden":!0}):(0,r.jsx)(eu.A,{className:"h-3.5 w-3.5","aria-hidden":!0})})]}),(0,r.jsx)("span",{className:"text-[10.5px] text-dim",children:"скануй з телефона в тому ж tailnet"})]})}):null]})}function tD({files:e,selected:t,onSelect:n}){let[s,a]=(0,l.useState)(""),o=(0,l.useMemo)(()=>m(e),[e]),c=(0,l.useMemo)(()=>{let e=s.trim().toLowerCase();return e?o.filter(t=>t.project.toLowerCase().includes(e)):o},[o,s]),d=(0,l.useMemo)(()=>o.reduce((e,t)=>e+t.liveCount,0),[o]);return(0,r.jsxs)("aside",{className:"flex w-[248px] shrink-0 flex-col border-r border-line bg-panel",children:[(0,r.jsxs)("header",{className:"flex h-10 shrink-0 items-center gap-2 border-b border-line px-4 text-[13.5px] font-bold",children:["Логи агентів",d?(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-[#e5f6ea] px-2 py-0.5 text-[10.5px] font-bold text-ok",children:[(0,r.jsx)("span",{className:"h-1.5 w-1.5 animate-pulse rounded-full bg-ok"}),d]}):null,(0,r.jsx)(tO,{})]}),(0,r.jsx)("div",{className:"px-2.5 pb-1 pt-2.5",children:(0,r.jsx)("input",{className:"w-full rounded-[9px] border border-line bg-bg px-2.5 py-1.5 text-[12px] outline-none focus-visible:ring-2 focus-visible:ring-accent/40",placeholder:"Фільтр проєктів…",value:s,onChange:e=>a(e.target.value)})}),(0,r.jsxs)("nav",{className:"flex-1 overflow-y-auto px-2 pb-3 pt-1","aria-label":"Проєкти",children:[(0,r.jsx)(tF,{label:"Огляд",live:0,total:null,age:"",active:t===i,hasLive:!1,onClick:()=>n(i)}),(0,r.jsx)("div",{className:"mx-2.5 my-1.5 border-t border-line"}),(0,r.jsx)(ec,{children:c.map(e=>(0,r.jsx)("div",{"data-flip-key":e.project,children:(0,r.jsx)(tF,{label:e.project,live:e.liveCount,total:e.conversations,age:j(e.smt),active:t===e.project,hasLive:e.liveCount>0,onClick:()=>n(e.project)})},e.project))}),c.length?null:(0,r.jsx)("div",{className:"px-3 py-4 text-center text-[12px] text-dim",children:"Нічого не знайдено"})]})]})}function tF({label:e,live:t,total:n,age:l,active:s,hasLive:i,onClick:a}){return(0,r.jsxs)("button",{className:["mb-0.5 flex w-full items-center gap-2 rounded-[10px] border px-2.5 py-2 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40",s?"border-line bg-bg shadow-card":"border-transparent hover:bg-bg"].join(" "),"aria-current":s?"page":void 0,onClick:a,children:[(0,r.jsx)("span",{className:["h-2 w-2 shrink-0 rounded-full",i?"animate-pulse bg-ok":"bg-[#d6d6dd]"].join(" ")}),(0,r.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,r.jsx)("span",{className:`block truncate text-[13px] ${s?"font-bold":"font-semibold"}`,children:e}),l?(0,r.jsx)("span",{className:"block text-[10.5px] text-dim",children:l}):null]}),t>0?(0,r.jsx)("span",{className:"shrink-0 rounded-full bg-[#e5f6ea] px-1.5 py-0.5 text-[10.5px] font-bold text-ok",children:t}):null,null!==n?(0,r.jsx)("span",{className:"shrink-0 text-[11px] font-semibold text-dim",children:n}):null]})}let tz="llvProject";function tU(){let e=location.hash.match(/^#f=(.+)$/);if(e)try{return{filePath:decodeURIComponent(e[1]),project:null}}catch{return{filePath:e[1],project:null}}let t=location.hash.match(/^#p=(.+)$/);if(t)try{return{filePath:null,project:decodeURIComponent(t[1])}}catch{return{filePath:null,project:t[1]}}return{filePath:null,project:null}}function tH(){let e=function(){let[e,t]=(0,l.useState)([]);return(0,l.useEffect)(()=>{let e=!0,n="",r=async()=>{try{let r=await fetch("/api/files"),l=await r.text();if(!e||l===n)return;n=l,t(JSON.parse(l))}catch{}};r();let l=setInterval(r,1e4);return()=>{e=!1,clearInterval(l)}},[]),e}(),[t,n]=(0,l.useState)(i),[s,a]=(0,l.useState)(null),[o,c]=(0,l.useState)(0);(0,l.useEffect)(()=>{let e=tU();e.filePath&&a(e.filePath);let t=e.project??localStorage.getItem(tz);t&&n(t)},[]),(0,l.useEffect)(()=>{let e=()=>{let e=tU();e.filePath?a(e.filePath):e.project&&n(e.project)};return window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[]);let d=(0,l.useCallback)(e=>{n(e),localStorage.setItem(tz,e),e!==i?history.replaceState(null,"","#p="+encodeURIComponent(e)):history.replaceState(null,"",location.pathname)},[]),u=(0,l.useCallback)(e=>{let t=x(e);tT(t,e.path),d(t),c(e=>e+1)},[d]);return(0,l.useEffect)(()=>{if(!s||0===e.length)return;let t=e.find(e=>e.path===s);t&&u(t),a(null)},[s,e,u]),(0,r.jsxs)("div",{className:"flex h-full",children:[(0,r.jsx)(tD,{files:e,selected:t,onSelect:d}),(0,r.jsx)("main",{className:"flex min-w-0 flex-1 flex-col",children:t===i?(0,r.jsx)(M,{files:e,onSelectProject:d,onSelectFile:u}):(0,r.jsx)(tI,{files:e,project:t,openNonce:o})})]})}}},e=>{e.O(0,[206,441,794,358],()=>e(e.s=5039)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[80,167,391,403,560,590,635,819,831,851,868,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[80,167,391,403,560,590,635,819,831,851,868,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[80,167,391,403,560,590,635,819,831,851,868,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[80,167,391,403,560,590,635,819,831,851,868,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:host,:root{--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif;--font-mono:ui-monospace,"JetBrains Mono",Menlo,monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--font-weight-normal:400;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-normal:0em;--leading-snug:1.375;--radius-md:.375rem;--radius-lg:.5rem;--radius-2xl:1rem;--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1) infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#f6f6f8;--color-panel:#fff;--color-line:#e6e6ea;--color-ink:#1c1c22;--color-dim:#8b8b95;--color-accent:#5a51e0;--color-ok:#1a8a3e;--color-err:#c62828;--color-chip:#efeff3;--color-user:#e9e9ef;--color-codex:#2f6fd0;--color-codex-soft:#e8f0fb;--color-claude:#d97757}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:0}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-12{top:calc(var(--spacing) * 12)}.top-full{top:100%}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:0}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-3{right:calc(var(--spacing) * 3)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-3{bottom:calc(var(--spacing) * 3)}.left-0{left:0}.left-1\.5{left:calc(var(--spacing) * 1.5)}.left-1\/2{left:50%}.left-8{left:calc(var(--spacing) * 8)}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-2\.5{margin-inline:calc(var(--spacing) * 2.5)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:var(--spacing)}.my-1\.5{margin-block:calc(var(--spacing) * 1.5)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-2\.5{margin-block:calc(var(--spacing) * 2.5)}.my-3\.5{margin-block:calc(var(--spacing) * 3.5)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-\[14vh\]{margin-top:14vh}.mt-\[20vh\]{margin-top:20vh}.mt-auto{margin-top:auto}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-\[3px\]{margin-bottom:3px}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-9{margin-left:calc(var(--spacing) * 9)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-0{height:0}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-6\.5{height:calc(var(--spacing) * 6.5)}.h-7{height:calc(var(--spacing) * 7)}.h-7\.5{height:calc(var(--spacing) * 7.5)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-\[22px\]{height:22px}.h-\[24px\]{height:24px}.h-\[95vh\]{height:95vh}.h-\[108px\]{height:108px}.h-\[150px\]{height:150px}.h-\[220px\]{height:220px}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-\[240px\]{max-height:240px}.max-h-\[260px\]{max-height:260px}.max-h-\[280px\]{max-height:280px}.max-h-\[320px\]{max-height:320px}.max-h-\[340px\]{max-height:340px}.max-h-full{max-height:100%}.min-h-0{min-height:0}.w-0{width:0}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\.5{width:calc(var(--spacing) * 4.5)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-6\.5{width:calc(var(--spacing) * 6.5)}.w-7\.5{width:calc(var(--spacing) * 7.5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-14{width:calc(var(--spacing) * 14)}.w-\[22px\]{width:22px}.w-\[64px\]{width:64px}.w-\[95vw\]{width:95vw}.w-\[220px\]{width:220px}.w-\[248px\]{width:248px}.w-\[260px\]{width:260px}.w-\[300px\]{width:300px}.w-\[340px\]{width:340px}.w-\[360px\]{width:360px}.w-full{width:100%}.max-w-\[70\%\]{max-width:70%}.max-w-\[75\%\]{max-width:75%}.max-w-\[85\%\]{max-width:85%}.max-w-\[220px\]{max-width:220px}.max-w-\[360px\]{max-width:360px}.max-w-\[560px\]{max-width:560px}.max-w-\[880px\]{max-width:880px}.max-w-\[1060px\]{max-width:1060px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1)}.-translate-x-1\/2,.-translate-y-1\/2{translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%}.scale-100,.scale-110{scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%}.scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.cursor-zoom-in{cursor:zoom-in}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-10{gap:calc(var(--spacing) * 10)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.gap-y-1{row-gap:var(--spacing)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-\[9px\]{border-radius:9px}.rounded-\[10px\]{border-radius:10px}.rounded-\[12px\]{border-radius:12px}.rounded-\[14px\]{border-radius:14px}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-br-\[3px\]{border-bottom-right-radius:3px}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[\#d89b21\]\/35{border-color:oklab(73.0072% .0285184 .140736/.35)}.border-\[\#e0ae45\]\/45{border-color:oklab(77.7894% .0167114 .131933/.45)}.border-\[\#e0ae45\]\/70{border-color:oklab(77.7894% .0167114 .131933/.7)}.border-accent{border-color:var(--color-accent)}.border-accent\/25{border-color:#5a51e040}@supports (color:color-mix(in lab,red,red)){.border-accent\/25{border-color:color-mix(in oklab,var(--color-accent) 25%,transparent)}}.border-accent\/50{border-color:#5a51e080}@supports (color:color-mix(in lab,red,red)){.border-accent\/50{border-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.border-codex\/20{border-color:#2f6fd033}@supports (color:color-mix(in lab,red,red)){.border-codex\/20{border-color:color-mix(in oklab,var(--color-codex) 20%,transparent)}}.border-err{border-color:var(--color-err)}.border-err\/25{border-color:#c6282840}@supports (color:color-mix(in lab,red,red)){.border-err\/25{border-color:color-mix(in oklab,var(--color-err) 25%,transparent)}}.border-err\/30{border-color:#c628284d}@supports (color:color-mix(in lab,red,red)){.border-err\/30{border-color:color-mix(in oklab,var(--color-err) 30%,transparent)}}.border-err\/35{border-color:#c6282859}@supports (color:color-mix(in lab,red,red)){.border-err\/35{border-color:color-mix(in oklab,var(--color-err) 35%,transparent)}}.border-err\/50{border-color:#c6282880}@supports (color:color-mix(in lab,red,red)){.border-err\/50{border-color:color-mix(in oklab,var(--color-err) 50%,transparent)}}.border-line{border-color:var(--color-line)}.border-ok\/25{border-color:#1a8a3e40}@supports (color:color-mix(in lab,red,red)){.border-ok\/25{border-color:color-mix(in oklab,var(--color-ok) 25%,transparent)}}.border-ok\/40{border-color:#1a8a3e66}@supports (color:color-mix(in lab,red,red)){.border-ok\/40{border-color:color-mix(in oklab,var(--color-ok) 40%,transparent)}}.border-ok\/60{border-color:#1a8a3e99}@supports (color:color-mix(in lab,red,red)){.border-ok\/60{border-color:color-mix(in oklab,var(--color-ok) 60%,transparent)}}.border-transparent{border-color:#0000}.border-white\/25{border-color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.border-white\/25{border-color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.border-l-\[\#9a9aa4\]{border-left-color:#9a9aa4}.border-l-ok{border-left-color:var(--color-ok)}.bg-\[\#c9c9d1\]{background-color:#c9c9d1}.bg-\[\#d6d6dd\]{background-color:#d6d6dd}.bg-\[\#d29a2f\]{background-color:#d29a2f}.bg-\[\#e5f6ea\]{background-color:#e5f6ea}.bg-\[\#ecebfb\]{background-color:#ecebfb}.bg-\[\#eef8f0\]{background-color:#eef8f0}.bg-\[\#eefaf1\]{background-color:#eefaf1}.bg-\[\#f2faf4\]{background-color:#f2faf4}.bg-\[\#f3fbf5\]{background-color:#f3fbf5}.bg-\[\#f7e8e8\]{background-color:#f7e8e8}.bg-\[\#f8f8fd\]{background-color:#f8f8fd}.bg-\[\#fafafc\]{background-color:#fafafc}.bg-\[\#fbfbfd\]{background-color:#fbfbfd}.bg-\[\#fff0f0\]{background-color:#fff0f0}.bg-\[\#fff2f2\]{background-color:#fff2f2}.bg-\[\#fff4f4\]{background-color:#fff4f4}.bg-\[\#fff5f5\]{background-color:#fff5f5}.bg-\[\#fff9ea\]{background-color:#fff9ea}.bg-\[\#fff9ed\]{background-color:#fff9ed}.bg-accent{background-color:var(--color-accent)}.bg-accent\/10{background-color:#5a51e01a}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-bg{background-color:var(--color-bg)}.bg-bg\/60{background-color:#f6f6f899}@supports (color:color-mix(in lab,red,red)){.bg-bg\/60{background-color:color-mix(in oklab,var(--color-bg) 60%,transparent)}}.bg-black\/85{background-color:#000000d9}@supports (color:color-mix(in lab,red,red)){.bg-black\/85{background-color:color-mix(in oklab,var(--color-black) 85%,transparent)}}.bg-chip{background-color:var(--color-chip)}.bg-claude{background-color:var(--color-claude)}.bg-codex{background-color:var(--color-codex)}.bg-codex-soft{background-color:var(--color-codex-soft)}.bg-dim{background-color:var(--color-dim)}.bg-err{background-color:var(--color-err)}.bg-ink\/28{background-color:#1c1c2247}@supports (color:color-mix(in lab,red,red)){.bg-ink\/28{background-color:color-mix(in oklab,var(--color-ink) 28%,transparent)}}.bg-ok{background-color:var(--color-ok)}.bg-panel{background-color:var(--color-panel)}.bg-panel\/60{background-color:#fff9}@supports (color:color-mix(in lab,red,red)){.bg-panel\/60{background-color:color-mix(in oklab,var(--color-panel) 60%,transparent)}}.bg-panel\/95{background-color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.bg-panel\/95{background-color:color-mix(in oklab,var(--color-panel) 95%,transparent)}}.bg-user{background-color:var(--color-user)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.object-cover{object-fit:cover}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-\[2\.5vh\]{padding:2.5vh}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-\[18vh\]{padding-top:18vh}.pr-2\.5{padding-right:calc(var(--spacing) * 2.5)}.pb-1{padding-bottom:var(--spacing)}.pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.align-bottom{vertical-align:bottom}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9\.5px\]{font-size:9.5px}.text-\[9px\]{font-size:9px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-none{--tw-leading:1;line-height:1}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[\.6px\]{--tw-tracking:.6px;letter-spacing:.6px}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#9a6500\]{color:#9a6500}.text-\[\#222\]{color:#222}.text-\[\#333\]{color:#333}.text-\[\#444\]{color:#444}.text-\[\#555\]{color:#555}.text-\[\#b8860b\]{color:#b8860b}.text-accent{color:var(--color-accent)}.text-codex{color:var(--color-codex)}.text-dim{color:var(--color-dim)}.text-err{color:var(--color-err)}.text-ink{color:var(--color-ink)}.text-ink\/75{color:#1c1c22bf}@supports (color:color-mix(in lab,red,red)){.text-ink\/75{color:color-mix(in oklab,var(--color-ink) 75%,transparent)}}.text-ok{color:var(--color-ok)}.text-white{color:var(--color-white)}.text-white\/85{color:#ffffffd9}@supports (color:color-mix(in lab,red,red)){.text-white\/85{color:color-mix(in oklab,var(--color-white) 85%,transparent)}}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.underline{text-decoration-line:underline}.decoration-accent\/40{text-decoration-color:#5a51e066}@supports (color:color-mix(in lab,red,red)){.decoration-accent\/40{-webkit-text-decoration-color:color-mix(in oklab,var(--color-accent) 40%,transparent);text-decoration-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow-\[0_0_0_3px_rgba\(26\,138\,62\,0\.12\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#1a8a3e1f)}.shadow-\[0_0_0_3px_rgba\(26\,138\,62\,0\.12\)\],.shadow-\[0_0_0_3px_rgba\(47\,158\,68\,0\.16\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(47\,158\,68\,0\.16\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#2f9e4429)}.shadow-\[0_8px_28px_rgba\(20\,20\,30\,0\.14\)\]{--tw-shadow:0 8px 28px var(--tw-shadow-color,#14141e24)}.shadow-\[0_18px_70px_rgb\(20_20_30\/0\.28\)\],.shadow-\[0_8px_28px_rgba\(20\,20\,30\,0\.14\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_18px_70px_rgb\(20_20_30\/0\.28\)\]{--tw-shadow:0 18px 70px var(--tw-shadow-color,#14141e47)}.shadow-card{--tw-shadow:0 1px 2px var(--tw-shadow-color,#14141e0d)}.ring-2,.shadow-card{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)}.ring-accent\/60{--tw-ring-color:#5a51e099}@supports (color:color-mix(in lab,red,red)){.ring-accent\/60{--tw-ring-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-blur-sm{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm))}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,border-color\,color\]{transition-property:opacity,border-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}.group-open\:hidden:is(:where(.group):is([open],:popover-open,:open) *){display:none}.group-open\:inline:is(:where(.group):is([open],:popover-open,:open) *){display:inline}.group-open\/tmsg\:hidden:is(:where(.group\/tmsg):is([open],:popover-open,:open) *){display:none}.group-open\/tmsg\:inline-flex:is(:where(.group\/tmsg):is([open],:popover-open,:open) *){display:inline-flex}.group-open\/usr\:hidden:is(:where(.group\/usr):is([open],:popover-open,:open) *){display:none}.group-open\/usr\:inline-flex:is(:where(.group\/usr):is([open],:popover-open,:open) *){display:inline-flex}.group-focus-within\:block:is(:where(.group):focus-within *){display:block}.group-focus-within\:flex:is(:where(.group):focus-within *){display:flex}@media (hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\/img\:flex:is(:where(.group\/img):hover *),.group-hover\:flex:is(:where(.group):hover *){display:flex}}.placeholder\:text-dim::placeholder{color:var(--color-dim)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}@media (hover:hover){.hover\:border-accent\/40:hover{border-color:#5a51e066}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.hover\:border-accent\/45:hover{border-color:#5a51e073}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/45:hover{border-color:color-mix(in oklab,var(--color-accent) 45%,transparent)}}.hover\:border-accent\/50:hover{border-color:#5a51e080}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/50:hover{border-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.hover\:border-err\/40:hover{border-color:#c6282866}@supports (color:color-mix(in lab,red,red)){.hover\:border-err\/40:hover{border-color:color-mix(in oklab,var(--color-err) 40%,transparent)}}.hover\:border-err\/50:hover{border-color:#c6282880}@supports (color:color-mix(in lab,red,red)){.hover\:border-err\/50:hover{border-color:color-mix(in oklab,var(--color-err) 50%,transparent)}}.hover\:bg-bg:hover{background-color:var(--color-bg)}.hover\:bg-codex-soft:hover{background-color:var(--color-codex-soft)}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-err:hover{color:var(--color-err)}.hover\:text-ink:hover{color:var(--color-ink)}.hover\:decoration-accent:hover{-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}}.focus-visible\:flex:focus-visible{display:flex}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-accent\/40:focus-visible{--tw-ring-color:#5a51e066}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-accent\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.focus-visible\:ring-accent\/50:focus-visible{--tw-ring-color:#5a51e080}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-accent\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.focus-visible\:ring-err\/40:focus-visible{--tw-ring-color:#c6282866}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-err\/40:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-err) 40%,transparent)}}.focus-visible\:ring-err\/50:focus-visible{--tw-ring-color:#c6282880}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-err\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-err) 50%,transparent)}}.focus-visible\:ring-white\/60:focus-visible{--tw-ring-color:#fff9}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-white\/60:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (prefers-reduced-motion:reduce){.motion-reduce\:transition-none{transition-property:none}}@media (min-width:40rem){.sm\:absolute{position:absolute}.sm\:top-full{top:100%}.sm\:right-0{right:0}.sm\:left-auto{left:auto}.sm\:mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.sm\:translate-x-0{--tw-translate-x:0;translate:var(--tw-translate-x) var(--tw-translate-y)}}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\>\*\]\:shrink-0>*{flex-shrink:0}}body{background:var(--color-bg);color:var(--color-ink)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}
|
|
File without changes
|