@swestash/agent-lens 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-lens.js +550 -41
- package/dist/agent-lens.js.map +1 -1
- package/package.json +1 -1
- package/web/assets/CopyButton-CDLZMZtV.js +1 -0
- package/web/assets/{Dashboard-BxZigTdE.js → Dashboard-BGVInKFn.js} +1 -1
- package/web/assets/SessionView-C9Nz-Buq.js +12 -0
- package/web/assets/{SkillView-Zs7vZQPU.js → SkillView-z46KtQoA.js} +1 -1
- package/web/assets/{SkillsView-5RaEi7vd.js → SkillsView-BZ4hNSbk.js} +1 -1
- package/web/assets/WorkflowView-eiRtGE5c.js +1 -0
- package/web/assets/{index-753CcEbN.js → index-5gOslh3o.js} +1 -1
- package/web/assets/index-CXU0GJds.css +1 -0
- package/web/assets/{index-CH9ukarY.js → index-Twf3zCly.js} +12 -12
- package/web/index.html +2 -2
- package/web/assets/SessionView-DW8drCh_.js +0 -4
- package/web/assets/WorkflowView-BZgguHyQ.js +0 -1
- package/web/assets/index-CtWea52P.css +0 -1
package/web/index.html
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
document.documentElement.dataset.theme = "dark";
|
|
17
17
|
}
|
|
18
18
|
</script>
|
|
19
|
-
<script type="module" crossorigin src="/assets/index-
|
|
20
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
19
|
+
<script type="module" crossorigin src="/assets/index-Twf3zCly.js"></script>
|
|
20
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CXU0GJds.css">
|
|
21
21
|
</head>
|
|
22
22
|
<body>
|
|
23
23
|
<div id="root"></div>
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{i as V,r as d,d as K,j as s,L as _,h as M,t as Y,f as O,e as C,k as $,l as G,s as E}from"./index-CH9ukarY.js";import{M as z,r as X}from"./index-753CcEbN.js";const F=d.createContext("markdown"),P=d.createContext(new Map),A=d.createContext(!1),B="agentlens.msgFormat";function Z(){try{return localStorage.getItem(B)==="raw"?"raw":"markdown"}catch{return"markdown"}}const L="agentlens.hideTools";function ss(){try{return localStorage.getItem(L)==="1"}catch{return!1}}function es({c:e}){var i;const[n,t]=d.useState(!1),r=d.useId(),a=(i=e.signals)==null?void 0:i.loc;return s.jsxs("div",{className:"classification",children:[s.jsx("span",{className:"tag cat cat-"+(e.category??"none"),children:e.category??"unclassified"}),e.complexity_band&&s.jsxs("span",{className:"tag complexity",children:[e.complexity_band," · ",e.complexity_score]}),a&&s.jsxs("span",{className:"muted small",children:["+",a.added,"/−",a.removed," LoC · ",a.files," files"]}),s.jsxs("button",{className:"ghost small","aria-expanded":n,"aria-controls":r,onClick:()=>t(c=>!c),children:["why ",n?"▾":"▸"]}),n&&(e.signals?s.jsx(as,{id:r,s:e.signals,category:e.category}):s.jsx("div",{id:r,className:"muted small pad",children:"No signals recorded for this session."}))]})}const ns={loc:"Lines changed",files:"Files touched",turns:"Turns",tokens:"Work tokens",duration:"Duration",subagents:"Subagents"},I=e=>`${Math.max(0,Math.min(1,e))*100}%`;function T({counts:e}){const n=Object.entries(e).sort((t,r)=>r[1]-t[1]);return n.length===0?s.jsx("span",{className:"muted",children:"—"}):s.jsx("span",{className:"sig-chips",children:n.map(([t,r])=>s.jsxs("span",{className:"sig-chip",children:[t," ",s.jsxs("span",{className:"muted",children:["×",r]})]},t))})}function as({id:e,s:n,category:t}){const[r,a]=d.useState(!1),i=d.useId(),c=n.complexity_weights??{},u=n.complexity_subscores??{},g=Object.keys(c).map(l=>({key:l,weight:c[l],subscore:u[l]??0,pts:c[l]*(u[l]??0)*100})).sort((l,j)=>j.pts-l.pts),m=Math.max(...g.map(l=>l.pts),1e-4),f=Object.entries(n.category_scores??{}).map(([l,j])=>({k:l,v:j})).sort((l,j)=>j.v-l.v),x=Math.max(...f.map(l=>l.v),1e-4),N=f.filter(l=>l.v>.02||l.k===t),v=n.skills&&Object.keys(n.skills).length>0;return s.jsxs("div",{id:e,className:"signals-panel",children:[g.length>0&&s.jsxs("section",{className:"sig-section",children:[s.jsxs("h4",{className:"sig-h",children:["Complexity breakdown ",s.jsx("span",{className:"muted",children:"— what built the score"})]}),s.jsx("ul",{className:"sig-bars",children:g.map(l=>s.jsxs("li",{className:"sig-bar-row",children:[s.jsx("span",{className:"sig-bar-label",children:ns[l.key]??l.key}),s.jsx("span",{className:"sig-bar","aria-hidden":"true",children:s.jsx("span",{className:"sig-bar-fill",style:{width:I(l.pts/m)}})}),s.jsxs("span",{className:"sig-bar-val",children:[l.pts.toFixed(1)," pts"]}),s.jsxs("span",{className:"sig-bar-sub muted",children:[Math.round(l.subscore*100),"% intensity · weight ",Math.round(l.weight*100),"%"]})]},l.key))})]}),N.length>0&&s.jsxs("section",{className:"sig-section",children:[s.jsxs("h4",{className:"sig-h",children:["Category scores ",s.jsxs("span",{className:"muted",children:["— why “",t,"” won"]})]}),s.jsx("ul",{className:"sig-bars",children:N.map(l=>s.jsxs("li",{className:"sig-bar-row"+(l.k===t?" is-win":""),children:[s.jsx("span",{className:"sig-bar-label",children:l.k}),s.jsx("span",{className:"sig-bar","aria-hidden":"true",children:s.jsx("span",{className:"sig-bar-fill",style:{width:I(l.v/x)}})}),s.jsx("span",{className:"sig-bar-val",children:l.v.toFixed(2)})]},l.k))})]}),s.jsxs("section",{className:"sig-section",children:[s.jsx("h4",{className:"sig-h",children:"Evidence"}),s.jsxs("dl",{className:"sig-grid",children:[n.tool_counts&&s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:"Tools"}),s.jsx("dd",{children:s.jsx(T,{counts:n.tool_counts})})]}),v&&s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:"Skills"}),s.jsx("dd",{children:s.jsx(T,{counts:n.skills})})]}),n.subagent_role&&s.jsxs(s.Fragment,{children:[s.jsx("dt",{children:"Subagent role"}),s.jsx("dd",{children:n.subagent_role})]}),n.files&&n.files.length>0&&s.jsxs(s.Fragment,{children:[s.jsxs("dt",{children:["Files (",n.files.length,")"]}),s.jsx("dd",{className:"sig-files",children:n.files.join(", ")})]})]})]}),s.jsx("button",{className:"ghost small","aria-expanded":r,"aria-controls":i,onClick:()=>a(l=>!l),children:r?"Hide raw JSON ▴":"View raw JSON ▾"}),r&&s.jsx("pre",{id:i,className:"code signals",children:JSON.stringify(n,null,2)})]})}function H({t:e}){const[n,t]=d.useState(!1),r=d.useId(),a=e.skill_name?`Skill · ${e.skill_name}`:e.tool_name==="Workflow"&&e.workflow_name?`Workflow · ${e.workflow_name}`:e.agent_type?`${e.tool_name} → ${e.agent_type}`:e.tool_name;return s.jsxs("div",{className:"tool "+(e.status==="error"?"tool-err":""),children:[s.jsxs("button",{className:"tool-head","aria-expanded":n,"aria-controls":r,onClick:()=>t(i=>!i),children:[s.jsxs("span",{className:"tool-name",children:["🔧 ",a]}),e.status&&s.jsx("span",{className:"tool-status",children:e.status}),e.total_duration_ms?s.jsx("span",{className:"muted",children:C(e.total_duration_ms)}):null,s.jsx("span",{className:"chev",children:n?"▾":"▸"})]}),e.spawned_session_id&&s.jsx(_,{className:"subagent-link small",to:`/session/${e.spawned_session_id}`,children:"view subagent transcript →"}),e.workflow_run_id&&s.jsxs(_,{className:"subagent-link small",to:`/workflow/${e.workflow_run_id}`,children:["🔀 launched ",e.workflow_agent_count??0," agent",e.workflow_agent_count===1?"":"s"," · ",s.jsx("code",{children:e.workflow_run_id})," →"]}),e.skill_name&&s.jsxs(_,{className:"subagent-link small",to:`/skill/${encodeURIComponent(e.skill_name)}${e.skill_id?`?v=${e.skill_id}`:""}`,children:["📖 view skill",e.skill_id?" version":""," →"]}),n&&s.jsxs("div",{className:"tool-body",id:r,children:[e.input_json&&e.input_json!=="{}"&&s.jsx("pre",{className:"code",children:S(e.input_json)}),e.result_summary&&s.jsx("div",{className:"result",children:e.result_summary})]})]})}function J(e){if(!e)return null;try{const n=JSON.parse(e).plan;return typeof n=="string"&&n.trim()?n:null}catch{return null}}function ts({plan:e}){return s.jsxs("div",{className:"plan-card",children:[s.jsx("div",{className:"plan-card-head",children:"📋 Approved plan"}),s.jsx(D,{text:e})]})}function ls(e){if(!e)return[];try{const n=JSON.parse(e).questions;return Array.isArray(n)?n:[]}catch{return[]}}function rs(e){if(!e)return{answers:{},annotations:{}};try{const n=JSON.parse(e);if(n&&typeof n=="object"&&n.answers)return{answers:n.answers,annotations:n.annotations??{}}}catch{}return{answers:{},annotations:{}}}function is({t:e}){const[n,t]=d.useState(!1),r=d.useId(),a=ls(e.input_json),{answers:i,annotations:c}=rs(e.result_summary);return a.length===0?s.jsx(H,{t:e}):s.jsxs("div",{className:"qa-card",children:[s.jsxs("div",{className:"qa-card-head",children:["🙋 Question",a.length===1?"":"s"," for the user"]}),a.map((u,g)=>{var j;const m=i[u.question],f=Array.isArray(m)?m:m!=null?[m]:[],x=new Set(f),N=new Set(u.options.map(h=>h.label)),v=f.filter(h=>!N.has(h)),l=(j=c[u.question])==null?void 0:j.notes;return s.jsxs("div",{className:"qa-q",children:[s.jsxs("div",{className:"qa-q-head",children:[u.header&&s.jsx("span",{className:"tag",children:u.header}),u.multiSelect&&s.jsx("span",{className:"muted small",children:"multi-select"})]}),s.jsx("div",{className:"qa-question",children:u.question}),s.jsxs("ul",{className:"qa-options",children:[u.options.map((h,k)=>{const b=x.has(h.label);return s.jsxs("li",{className:"qa-opt"+(b?" is-selected":""),children:[s.jsx("span",{className:"qa-mark","aria-hidden":"true",children:b?"☑":"☐"}),s.jsxs("span",{className:"qa-opt-body",children:[s.jsx("span",{className:"qa-opt-label",children:h.label}),h.description&&s.jsx("span",{className:"qa-opt-desc muted",children:h.description})]})]},k)}),v.map((h,k)=>s.jsxs("li",{className:"qa-opt is-selected",children:[s.jsx("span",{className:"qa-mark","aria-hidden":"true",children:"☑"}),s.jsxs("span",{className:"qa-opt-body",children:[s.jsx("span",{className:"qa-opt-label",children:h}),s.jsx("span",{className:"qa-opt-desc muted",children:"custom answer"})]})]},"c"+k))]}),l&&s.jsxs("div",{className:"qa-note",children:["📝 ",l]})]},g)}),s.jsx("button",{className:"ghost small","aria-expanded":n,"aria-controls":r,onClick:()=>t(u=>!u),children:n?"Hide raw JSON ▴":"View raw JSON ▾"}),n&&s.jsxs("pre",{id:r,className:"code",children:[S(e.input_json??"{}"),e.result_summary?`
|
|
2
|
-
|
|
3
|
-
`+S(e.result_summary):""]})]})}function os({t:e,hideTools:n}){if(e.tool_name==="ExitPlanMode"){const t=J(e.input_json);if(t)return s.jsx(ts,{plan:t})}return e.tool_name==="AskUserQuestion"?s.jsx(is,{t:e}):n?null:s.jsx(H,{t:e})}function cs(e,n){return e.tool_name==="AskUserQuestion"||e.tool_name==="ExitPlanMode"&&J(e.input_json)?!0:!n}function R(e){var r,a,i,c,u;const n=(a=(r=e.match(/<command-name>([^<]*)<\/command-name>/))==null?void 0:r[1])==null?void 0:a.trim();if(n){const g=((c=(i=e.match(/<command-args>([^<]*)<\/command-args>/))==null?void 0:i[1])==null?void 0:c.trim())??"";return{kind:"invocation",name:n.startsWith("/")?n:`/${n}`,args:g}}const t=(u=e.match(/<(?:local-command-stdout|command-output|local-command-stderr)>([\s\S]*?)<\/(?:local-command-stdout|command-output|local-command-stderr)>/))==null?void 0:u[1];return t!=null?{kind:"output",stdout:t.trim()}:/<local-command-caveat>/.test(e)?{kind:"caveat"}:null}function ds({cmd:e}){return e.kind==="invocation"?s.jsxs("div",{className:"cmd",children:[s.jsxs("span",{className:"cmd-chip",title:"Slash command",children:["⌘ ",e.name]}),e.args&&s.jsx("code",{className:"cmd-args",children:e.args})]}):e.kind==="output"?s.jsx("div",{className:"cmd-out",children:e.stdout&&e.stdout!=="(no content)"?e.stdout:s.jsx("span",{className:"muted",children:"no output"})}):s.jsx("div",{className:"cmd-note muted small",children:"⌘ local command context"})}function U(e){if(!/<task-notification>/.test(e))return null;const n=t=>{var r,a;return((a=(r=e.match(new RegExp(`<${t}>([\\s\\S]*?)</${t}>`)))==null?void 0:r[1])==null?void 0:a.trim())??null};return{taskId:n("task-id"),toolUseId:n("tool-use-id"),status:n("status"),summary:n("summary")}}function us({n:e}){const n=d.useContext(P),t=e.toolUseId?n.get(e.toolUseId):void 0,r=(e.status??"").toLowerCase();return s.jsxs("div",{className:"task-notif",children:[s.jsxs("div",{className:"task-notif-head",children:[s.jsx("span",{className:"task-notif-icon","aria-hidden":"true",children:"🔔"}),e.status&&s.jsx("span",{className:"tag task-status task-status-"+r,children:e.status}),e.taskId&&s.jsxs("code",{className:"task-notif-id",children:["task ",e.taskId]}),t&&s.jsx(_,{className:"subagent-link small",to:`/workflow/${t}`,children:"view workflow →"})]}),e.summary&&s.jsx("div",{className:"task-notif-summary",children:e.summary})]})}function q({text:e,id:n}){return d.useContext(F)==="raw"?s.jsx("div",{className:"text",id:n,children:e}):s.jsx("div",{className:"text md",id:n,children:s.jsx(z,{remarkPlugins:[X],components:ms,children:e})})}const ms={a:({node:e,...n})=>s.jsx("a",{...n,target:"_blank",rel:"noopener noreferrer"})};function D({text:e}){const n=e.length>1400||e.split(`
|
|
4
|
-
`).length>18,[t,r]=d.useState(!1),a=d.useId();return n?s.jsxs("div",{className:"text-wrap"+(t?"":" is-clamped"),children:[s.jsx(q,{text:e,id:a}),s.jsx("button",{className:"ghost small show-more","aria-expanded":t,"aria-controls":a,onClick:()=>r(i=>!i),children:t?"Show less ▴":"Show more ▾"})]}):s.jsx(q,{text:e})}function S(e){try{return JSON.stringify(JSON.parse(e),null,2).slice(0,4e3)}catch{return e.slice(0,4e3)}}function hs(e,n){const t=new Map(n.map(a=>[a.id,a])),r=[];for(const a of e){const i=a.turn_id??null,c=r[r.length-1];c&&c.turnId===i?c.events.push(a):r.push({turnId:i,turn:i?t.get(i)??null:null,events:[a]})}return r}function ps(e){const n=R(e);if((n==null?void 0:n.kind)==="invocation")return`⌘ ${n.name}${n.args?" "+n.args:""}`;if((n==null?void 0:n.kind)==="output")return"⌘ command output";if((n==null?void 0:n.kind)==="caveat")return"⌘ local command";const t=U(e);return t?`🔔 task ${t.status??"notification"}`:e}function xs({turn:e,events:n,open:t,onToggle:r}){const a=d.useId();return s.jsxs("section",{className:"turn"+(t?" is-open":""),children:[s.jsxs("button",{className:"turn-head","aria-expanded":t,"aria-controls":a,onClick:r,children:[s.jsx("span",{className:"chev turn-chev","aria-hidden":"true",children:t?"▾":"▸"}),s.jsxs("span",{className:"turn-no",children:["turn ",e.seq+1]}),e.prompt_preview?s.jsx("span",{className:"turn-preview",children:ps(e.prompt_preview)}):null,s.jsxs("span",{className:"turn-stats muted",children:[n.length," msg",n.length===1?"":"s",e.duration_ms?" · "+C(e.duration_ms):""]})]}),s.jsx("div",{id:a,className:"turn-body",role:"region","aria-label":`turn ${e.seq+1} messages`,children:t&&n.map(i=>s.jsx(W,{e:i},i.uuid))})]})}function W({e}){const[n,t]=d.useState(!1),r=d.useId(),a=d.useContext(A),i=e.role||e.type,c=i==="user"?"👤":i==="assistant"?"🤖":"⚙️",u=e.toolCalls.filter(x=>cs(x,a));if(!(e.text||e.thinking||u.length))return null;const m=e.text?R(e.text):null,f=e.text&&!m?U(e.text):null;return s.jsxs("div",{className:"event ev-"+i,children:[s.jsxs("div",{className:"ev-meta",children:[s.jsxs("span",{className:"ev-who",children:[c," ",i]}),e.model&&s.jsx("span",{className:"tag",children:E(e.model)}),e.is_sidechain?s.jsx("span",{className:"tag subagent",children:"subagent"}):null,s.jsx("span",{className:"muted ev-time",children:$(e.timestamp)})]}),e.thinking&&s.jsxs("div",{className:"thinking",children:[s.jsxs("button",{className:"thinking-toggle","aria-expanded":n,"aria-controls":r,onClick:()=>t(x=>!x),children:["🧠 thinking ",n?"▾":"▸"]}),n&&s.jsx("pre",{id:r,className:"thinking-body",children:e.thinking})]}),e.text&&(m?s.jsx(ds,{cmd:m}):f?s.jsx(us,{n:f}):s.jsx(D,{text:e.text})),u.map((x,N)=>s.jsx(os,{t:x,hideTools:a},N))]})}function y({c:e}){return s.jsxs("li",{children:[s.jsx(_,{to:`/session/${e.id}`,children:e.title||e.id.slice(0,12)}),s.jsxs("span",{className:"muted",children:[" ","· ",(e.models??"").split(",").filter(Boolean).map(E).join(", ")," ·"," ",M(e.tokens)," tok · ",O(e.cost)]})]})}function js({d:e}){const n=e.workflow_runs??[],t=e.children.filter(a=>!a.workflow_run_id),r=n.length>0;return s.jsxs("div",{className:"subagents",children:[s.jsxs("h2",{children:["Spawned subagents (",e.children.length,")"]}),n.map(a=>{const i=e.children.filter(c=>c.workflow_run_id===a.run_id);return s.jsxs("details",{className:"wf-run",children:[s.jsxs("summary",{children:[s.jsxs(_,{className:"wf-run-name",to:`/workflow/${a.run_id}`,onClick:c=>c.stopPropagation(),children:["🔀 ",a.name||"workflow"," →"]}),s.jsxs("span",{className:"muted small",children:[i.length," agent",i.length===1?"":"s",a.turn_seq!=null?` · turn ${a.turn_seq+1}`:""," · ",s.jsx("code",{children:a.run_id})]})]}),s.jsx("ul",{children:i.map(c=>s.jsx(y,{c},c.id))})]},a.run_id)}),t.length>0&&(r?s.jsxs("details",{className:"wf-run",open:!0,children:[s.jsxs("summary",{children:[s.jsx("span",{className:"wf-run-name",children:"Task / Agent"}),s.jsxs("span",{className:"muted small",children:[t.length," subagent",t.length===1?"":"s"]})]}),s.jsx("ul",{children:t.map(a=>s.jsx(y,{c:a},a.id))})]}):s.jsx("ul",{children:t.map(a=>s.jsx(y,{c:a},a.id))}))]})}function Ns(){const{id:e}=V(),[n,t]=d.useState(null),[r,a]=d.useState(null),[i,c]=d.useState(new Set),[u,g]=d.useState(Z),[m,f]=d.useState(ss),x=o=>{g(o);try{localStorage.setItem(B,o)}catch{}},N=()=>f(o=>{const w=!o;try{localStorage.setItem(L,w?"1":"0")}catch{}return w});d.useEffect(()=>{t(null),a(null),c(new Set),K("/sessions/"+e).then(t).catch(o=>a(String(o)))},[e]);const v=d.useMemo(()=>{const o=new Map;for(const w of(n==null?void 0:n.events)??[])for(const p of w.toolCalls)p.tool_name==="Workflow"&&p.id&&p.workflow_run_id&&o.set(p.id,p.workflow_run_id);return o},[n]);if(r)return s.jsx("div",{className:"error",role:"alert",children:r});if(!n)return s.jsx("div",{className:"muted pad",role:"status","aria-live":"polite",children:"Loading…"});const l=n.session,j=n.events.filter(o=>o.text||o.thinking||o.toolCalls.length),h=hs(j,n.turns),k=h.filter(o=>o.turn).map(o=>o.turnId),b=k.some(o=>!i.has(o)),Q=o=>c(w=>{const p=new Set(w);return p.has(o)?p.delete(o):p.add(o),p});return s.jsxs("div",{className:"detail",children:[s.jsxs("div",{className:"detail-head",children:[s.jsx(_,{to:"/",className:"back",children:"← all sessions"}),s.jsx("h1",{children:l.title||l.id.slice(0,12)}),s.jsxs("div",{className:"detail-meta",children:[s.jsx("span",{children:s.jsx("b",{children:l.source_id})}),s.jsx("span",{className:"path",children:l.project_path}),l.is_sidechain?s.jsx("span",{className:"tag subagent",children:"subagent"}):null,n.parent&&s.jsxs("span",{className:"spawned-by",children:["↖ spawned by"," ",s.jsx(_,{to:`/session/${n.parent.id}`,children:n.parent.title||n.parent.id.slice(0,12)}),n.parent.turn_seq!=null?` · turn ${n.parent.turn_seq+1}`:""]}),s.jsxs("span",{children:[n.turns.length," turns"]}),s.jsxs("span",{children:[l.event_count," events"]}),s.jsxs("span",{title:Y(l.token_split),children:[M(l.tokens)," tok"]}),s.jsx("span",{title:"Estimated at API list prices (cache-aware)",children:O(l.cost)}),s.jsx("span",{children:C(l.duration_ms)}),s.jsx("span",{className:"muted",children:$(l.started_at)}),s.jsx("a",{className:"export",href:G(l.id),children:"⬇ Export Markdown"})]}),n.classification&&s.jsx(es,{c:n.classification})]}),n.children&&n.children.length>0&&s.jsx(js,{d:n}),s.jsxs("div",{className:"transcript-tools",children:[k.length>1&&s.jsxs(s.Fragment,{children:[s.jsxs("span",{className:"muted small",children:[k.length," turns"]}),s.jsx("button",{className:"ghost small",onClick:()=>c(b?new Set(k):new Set),children:b?"Collapse all":"Expand all"})]}),s.jsxs("button",{className:"ghost small"+(m?" is-active":""),"aria-pressed":m,onClick:N,title:"Hide Bash/Edit/Skill and other tool calls — show only assistant answers, plans and questions",children:[m?"☑ ":"☐ ","Hide tool messages"]}),s.jsxs("div",{className:"format-toggle",role:"group","aria-label":"Message format",children:[s.jsx("button",{className:"ghost small"+(u==="markdown"?" is-active":""),"aria-pressed":u==="markdown",onClick:()=>x("markdown"),children:"Markdown"}),s.jsx("button",{className:"ghost small"+(u==="raw"?" is-active":""),"aria-pressed":u==="raw",onClick:()=>x("raw"),children:"Raw"})]})]}),s.jsx(P.Provider,{value:v,children:s.jsx(F.Provider,{value:u,children:s.jsx(A.Provider,{value:m,children:s.jsxs("div",{className:"transcript",children:[j.length===0&&s.jsx("div",{className:"muted pad",role:"status",children:"This session has no rendered messages."}),h.map((o,w)=>o.turn?s.jsx(xs,{turn:o.turn,events:o.events,open:!i.has(o.turnId),onToggle:()=>Q(o.turnId)},o.turnId):s.jsx("div",{className:"unturned",children:o.events.map(p=>s.jsx(W,{e:p},p.uuid))},"unturned-"+w))]})})})})]})}export{Ns as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as s,r as u,i as k,d as S,L as m,h as f,f as N,e as v,k as _,s as A}from"./index-CH9ukarY.js";import{M as y,r as g}from"./index-753CcEbN.js";const o=e=>e===null||typeof e!="object",p=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function h({v:e}){if(e==null)return s.jsx("span",{className:"json-null",children:"—"});const t=typeof e;return t==="boolean"?s.jsx("span",{className:e?"rv-true":"rv-false",children:e?"✓ true":"✗ false"}):t==="number"?s.jsx("span",{className:"json-number",children:String(e)}):s.jsx("span",{className:"rv-str",children:String(e)})}function x({v:e}){return o(e)?s.jsx(h,{v:e}):Array.isArray(e)?e.every(o)?s.jsx("span",{className:"rv-str",children:e.map(String).join(", ")||"—"}):s.jsxs("span",{className:"muted",children:["[",e.length,"]"]}):s.jsx("span",{className:"muted",children:`{${Object.keys(e).length}}`})}function b(e){const t=[],r=new Set;for(const n of e)for(const l of Object.keys(n??{}))r.has(l)||(r.add(l),t.push(l));return t}function O({rows:e}){const t=b(e);return s.jsx("div",{className:"rv-table-wrap",children:s.jsxs("table",{className:"rv-table",children:[s.jsx("thead",{children:s.jsx("tr",{children:t.map(r=>s.jsx("th",{children:r},r))})}),s.jsx("tbody",{children:e.map((r,n)=>s.jsx("tr",{children:t.map(l=>s.jsx("td",{children:s.jsx(x,{v:r[l]})},l))},n))})]})})}function $({obj:e}){const t=Object.entries(e),r=b(t.map(([,n])=>n));return s.jsx("div",{className:"rv-table-wrap",children:s.jsxs("table",{className:"rv-table",children:[s.jsx("thead",{children:s.jsxs("tr",{children:[s.jsx("th",{children:"key"}),r.map(n=>s.jsx("th",{children:n},n))]})}),s.jsx("tbody",{children:t.map(([n,l])=>s.jsxs("tr",{children:[s.jsx("td",{className:"rv-rowkey",children:n}),r.map(a=>s.jsx("td",{children:s.jsx(x,{v:l[a]})},a))]},n))})]})})}function E({name:e,value:t,depth:r}){const[n,l]=u.useState(r<1),a=Array.isArray(t)?`[${t.length}]`:`{${Object.keys(t).length}}`;return s.jsxs("div",{className:"rv-section",children:[s.jsxs("button",{className:"rv-sec-head","aria-expanded":n,onClick:()=>l(i=>!i),children:[s.jsx("span",{className:"json-chev","aria-hidden":"true",children:n?"▾":"▸"}),s.jsx("span",{className:"rv-sec-name",children:e}),s.jsx("span",{className:"muted small",children:a})]}),n&&s.jsx("div",{className:"rv-sec-body",children:s.jsx(w,{value:t,depth:r+1})})]})}function w({value:e,depth:t=0}){if(o(e))return s.jsx(h,{v:e});if(Array.isArray(e))return e.length===0?s.jsx("span",{className:"muted",children:"empty"}):e.every(p)?s.jsx(O,{rows:e}):s.jsx("ul",{className:"rv-list",children:e.map((a,i)=>s.jsx("li",{children:s.jsx(x,{v:a})},i))});const r=Object.entries(e);if(r.length===0)return s.jsx("span",{className:"muted",children:"empty"});if(r.every(([,a])=>p(a)))return s.jsx($,{obj:e});const n=r.filter(([,a])=>o(a)),l=r.filter(([,a])=>!o(a));return s.jsxs("div",{className:"rv-obj",children:[n.length>0&&s.jsx("div",{className:"rv-metrics",children:n.map(([a,i])=>s.jsxs("div",{className:"rv-metric",children:[s.jsx("span",{className:"rv-mkey",children:a}),s.jsx("span",{className:"rv-mval",children:s.jsx(h,{v:i})})]},a))}),l.map(([a,i])=>s.jsx(E,{name:a,value:i,depth:t},a))]})}function R({value:e}){return s.jsx("div",{className:"rv-root",children:s.jsx(w,{value:e,depth:0})})}function j(e){return e.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/?9;|'/g,"'").replace(/&/g,"&")}function C(e){const t=e.match(/\s*\(\s*truncated[^)]*\)\s*$/i);return!t||t.index==null?{body:e,note:null}:{body:e.slice(0,t.index).trimEnd(),note:t[0].trim()}}function P(e){try{return{value:JSON.parse(e),repaired:!1}}catch{}const t=[];let r=!1,n=!1,l=-1,a=[];for(let c=0;c<e.length;c++){const d=e[c];if(r){n?n=!1:d==="\\"?n=!0:d==='"'&&(r=!1);continue}d==='"'?r=!0:d==="{"||d==="["?t.push(d==="{"?"}":"]"):d==="}"||d==="]"?(t.pop(),l=c+1,a=[...t]):d===","&&(l=c,a=[...t])}if(l<0)return{value:void 0,repaired:!1};const i=e.slice(0,l)+a.reverse().join("");try{return{value:JSON.parse(i),repaired:!0}}catch{return{value:void 0,repaired:!1}}}function L({raw:e}){const{body:t,note:r}=C(j(e)),n=/^\s*[[{]/.test(t),{value:l,repaired:a}=n?P(t):{value:void 0,repaired:!1},i=l!==void 0;return s.jsxs(s.Fragment,{children:[i?s.jsx("div",{className:"wf-result-body",children:s.jsx(R,{value:l})}):s.jsx("div",{className:"text md wf-result-body",children:s.jsx(y,{remarkPlugins:[g],children:t})}),(r||a)&&s.jsxs("div",{className:"muted small wf-trunc",children:["⚠ ",r??"Result was truncated; showing the recoverable portion."]})]})}function M({a:e}){return s.jsxs("li",{children:[s.jsx(m,{to:`/session/${e.id}`,children:e.title||e.id.slice(0,12)}),s.jsxs("span",{className:"muted",children:[" ","· ",(e.models??"").split(",").filter(Boolean).map(A).join(", ")||"—"," ·"," ",f(e.tokens)," tok · ",N(e.cost),e.duration_ms!=null?` · ${v(e.duration_ms)}`:""]})]})}function D(){var i;const{run_id:e}=k(),[t,r]=u.useState(null),[n,l]=u.useState(null);if(u.useEffect(()=>{r(null),l(null),S("/workflows/"+e).then(r).catch(c=>l(String(c)))},[e]),n)return s.jsx("div",{className:"error",role:"alert",children:n});if(!t)return s.jsx("div",{className:"muted pad",role:"status","aria-live":"polite",children:"Loading…"});const a=(t.status??"").toLowerCase();return s.jsxs("div",{className:"detail",children:[s.jsxs("div",{className:"detail-head",children:[s.jsx(m,{to:"/",className:"back",children:"← all sessions"}),s.jsxs("h1",{children:["🔀 ",t.name||"workflow"]}),s.jsxs("div",{className:"detail-meta",children:[s.jsx("code",{children:t.run_id}),t.status&&s.jsx("span",{className:"tag task-status task-status-"+a,children:t.status}),((i=t.parent)==null?void 0:i.id)&&s.jsxs("span",{className:"spawned-by",children:["↖ launched from"," ",s.jsx(m,{to:`/session/${t.parent.id}`,children:t.parent.title||t.parent.id.slice(0,12)}),t.parent.turn_seq!=null?` · turn ${t.parent.turn_seq+1}`:""]}),s.jsxs("span",{children:[t.stats.agent_count," agent",t.stats.agent_count===1?"":"s"]}),s.jsxs("span",{children:[f(t.stats.total_tokens)," tok"]}),s.jsx("span",{title:"Estimated at API list prices (cache-aware)",children:N(t.stats.total_cost)}),s.jsx("span",{children:v(t.stats.duration_ms)}),s.jsx("span",{className:"muted",children:_(t.stats.started_at)})]})]}),t.completion?s.jsxs("div",{className:"wf-result",children:[s.jsxs("h2",{children:["Returned result",t.completion.status&&s.jsx("span",{className:"tag task-status task-status-"+t.completion.status.toLowerCase(),children:t.completion.status})]}),t.completion.summary&&s.jsx("p",{className:"wf-result-summary",children:j(t.completion.summary)}),t.completion.result?s.jsx(L,{raw:t.completion.result}):s.jsx("div",{className:"muted small",children:"Completed with no returned payload."}),t.completion.failures&&s.jsxs("details",{className:"wf-failures",children:[s.jsx("summary",{children:"failures"}),s.jsx("pre",{className:"code wf-result-body",children:j(t.completion.failures)})]})]}):t.result_summary?s.jsxs("div",{className:"wf-result",children:[s.jsx("h2",{children:"Workflow launch"}),s.jsx("div",{className:"text md",children:s.jsx(y,{remarkPlugins:[g],children:t.result_summary})})]}):null,s.jsxs("div",{className:"subagents",children:[s.jsxs("h2",{children:["Agents (",t.agents.length,")"]}),t.agents.length===0?s.jsx("div",{className:"muted pad",role:"status",children:"No agent transcripts ingested for this run yet."}):s.jsx("ul",{children:t.agents.map(c=>s.jsx(M,{a:c},c.id))})]})]})}export{D as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--bg: #0f1115;--panel: #171a21;--panel2: #1e222b;--border: #2a2f3a;--text: #e6e8ec;--muted: #8b93a3;--accent: #6ea8fe;--user: #7ee0a0;--assistant: #6ea8fe;--tag: #2a2f3a;--err: #ff6b6b;--ok: #7ee0a0;--gold: #e0b85a;--violet: #b98cff;--teal: #4fd1c5;--code-bg: var(--bg)}:root[data-theme=light]{--bg: #ffffff;--panel: #f6f7f9;--panel2: #eceef2;--border: #d5d9e0;--text: #1b1f27;--muted: #5b6472;--accent: #2563eb;--user: #0f9d58;--assistant: #2563eb;--tag: #e4e7ec;--err: #d32f2f;--ok: #15803d;--gold: #b7791f;--violet: #7c3aed;--teal: #0d9488;--code-bg: #eef1f5}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 12px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}button.ghost{background:transparent}select,input{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 10px}input:focus,select:focus{border-color:var(--accent)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:8px;top:-40px;z-index:10;background:var(--panel2);border:1px solid var(--accent);border-radius:6px;padding:6px 12px;transition:top .15s ease}.skip-link:focus{top:8px;text-decoration:none}.topbar{display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--border);background:var(--panel);position:sticky;top:0;z-index:5}.brand{font-weight:700;font-size:16px;color:var(--text);display:inline-flex;align-items:center;gap:8px}.brand-logo{height:22px;width:auto;display:block}.tagline{color:var(--muted);font-size:12px}.topbar-actions{margin-left:auto;display:inline-flex;align-items:center;gap:8px}.theme-toggle{font-size:15px;line-height:1;padding:5px 9px}.refresh-btn{font-size:13px;line-height:1;padding:5px 10px;display:inline-flex;align-items:center;gap:4px}.refresh-btn[disabled]{opacity:.65;cursor:default}.refresh-icon{display:inline-block}.refresh-icon.spinning{animation:agentlens-spin .8s linear infinite}@keyframes agentlens-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.refresh-icon.spinning{animation:none}}.content{max-width:1100px;margin:0 auto;padding:20px}.content.wide{max-width:min(1600px,94vw)}.filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}.search{display:flex;gap:6px;flex:1;min-width:280px}.search input{flex:1}.muted{color:var(--muted)}.pad{padding:24px 0}.error{color:var(--err);padding:12px;border:1px solid var(--err);border-radius:6px;margin-bottom:12px}table.sessions{width:100%;border-collapse:collapse}.sessions th{text-align:left;font-weight:600;font-size:12px;color:var(--muted);padding:8px;border-bottom:1px solid var(--border)}.sessions th.num,.sessions td.num{text-align:right;font-variant-numeric:tabular-nums}.sessions td{padding:10px 8px;border-bottom:1px solid var(--border);vertical-align:top}.sessions tr:hover td{background:var(--panel)}.title{font-weight:600}.sub{margin-top:4px;display:flex;gap:4px;flex-wrap:wrap}.path{color:var(--muted)}.tag{font-size:11px;background:var(--tag);color:var(--muted);border-radius:4px;padding:1px 6px}.tag.subagent{background:#3a2f10;color:#e0b85a}.pager{display:flex;align-items:center;gap:16px;justify-content:center;margin-top:18px}.page-jump{display:inline-flex;align-items:center}.page-jump select{padding:6px 8px;font-size:13px}.detail-head{margin-bottom:18px}.back{font-size:13px}.detail-head h1{font-size:20px;margin:8px 0}.detail-meta{display:flex;flex-wrap:wrap;gap:14px;align-items:center;color:var(--text);font-size:13px}.detail-meta .path,.spawned-by{color:var(--muted)}.export{margin-left:auto;border:1px solid var(--border);border-radius:6px;padding:6px 12px}.subagent-link{display:inline-block;font-size:12px;margin:0 0 4px 10px}.subagents{margin:0 0 18px;padding:12px 14px;border:1px solid var(--border);border-radius:8px}.subagents h2{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 8px}.subagents ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.subagents li{font-size:13px}.wf-run{border:1px solid var(--border);border-radius:6px;margin-top:8px;background:var(--panel2)}.wf-run>summary{cursor:pointer;padding:7px 10px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;list-style:none}.wf-run>summary::-webkit-details-marker{display:none}.wf-run>summary:before{content:"▸";color:var(--muted);font-size:11px}.wf-run[open]>summary:before{content:"▾"}.wf-run-name{font-weight:600;font-size:13px}.wf-run>ul{padding:0 10px 10px 24px}.wf-run code{font-size:11px;color:var(--muted)}.cmd{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:4px 0}.cmd-chip{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:600;color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:2px 9px;background:color-mix(in srgb,var(--accent) 10%,transparent)}.cmd-args{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--muted)}.cmd-out{margin:4px 0 0;padding:6px 10px;border-left:2px solid var(--border);color:var(--muted);font-size:12px;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.cmd-note{margin:2px 0}.task-notif{margin:4px 0;padding:7px 10px;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:6px;background:var(--panel2)}.task-notif-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.task-notif-id{font-size:11px;color:var(--muted)}.task-notif-summary{margin-top:4px;font-size:13px;color:var(--muted)}.task-status{text-transform:lowercase}.task-status-completed{color:var(--ok, #2e7d32);border-color:var(--ok, #2e7d32)}.task-status-failed,.task-status-error{color:var(--err, #c62828);border-color:var(--err, #c62828)}.wf-result{margin-top:14px}.wf-result h2{margin-bottom:6px;display:flex;align-items:baseline;gap:8px}.wf-result-summary{margin:0 0 8px;font-size:14px}.wf-result-body{max-height:520px;overflow:auto}.wf-failures{margin-top:8px}.wf-failures>summary{cursor:pointer;color:var(--muted);font-size:13px}.wf-trunc{margin-top:6px}.rv-root{font-size:13px;line-height:1.55}.json-chev{color:var(--muted);display:inline-block;width:1.1em}.json-number{color:#f0a868}.json-null{color:var(--muted)}.rv-str{overflow-wrap:anywhere}.rv-true{color:var(--user)}.rv-false{color:var(--err)}.rv-metrics{display:flex;flex-wrap:wrap;gap:4px 20px;margin:4px 0 10px}.rv-metric{display:flex;gap:7px;align-items:baseline}.rv-mkey{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.rv-mval{font-weight:600}.rv-list{margin:4px 0;padding-left:18px}.rv-section{margin:3px 0}.rv-sec-head{background:none;border:none;border-radius:0;padding:3px 0;margin:0;cursor:pointer;font:inherit;color:var(--text);text-align:left;width:100%;display:flex;gap:6px;align-items:baseline}.rv-sec-head:hover{text-decoration:none}.rv-sec-name{color:var(--accent);font-weight:600}.rv-sec-body{padding-left:12px;margin-left:4px;border-left:1px solid var(--border)}.rv-table-wrap{max-height:360px;overflow:auto;border:1px solid var(--border);border-radius:6px;margin:4px 0}.rv-table{border-collapse:collapse;width:100%;font-size:12.5px}.rv-table th{position:sticky;top:0;background:var(--panel2);text-align:left;padding:5px 9px;color:var(--muted);font-weight:600;border-bottom:1px solid var(--border);white-space:nowrap}.rv-table td{padding:4px 9px;border-bottom:1px solid var(--border);vertical-align:top}.rv-table tr:last-child td{border-bottom:none}.rv-rowkey{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--accent);white-space:nowrap}.transcript{display:flex;flex-direction:column;gap:10px}.transcript-tools{display:flex;align-items:center;gap:12px;margin-bottom:2px}.unturned,.turn{display:flex;flex-direction:column;gap:10px}.turn-head{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:none;border-top:1px dashed var(--border);border-radius:0;padding:8px 4px 4px;font-size:12px;color:var(--accent);position:sticky;top:0;z-index:1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.turn-head:hover:not(:disabled){border-color:var(--accent)}.turn-head .turn-chev{margin-left:0;color:var(--muted)}.turn-no{font-weight:600}.turn-preview{color:var(--muted);font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.turn-stats{margin-left:auto;flex:none}.turn-body{display:flex;flex-direction:column;gap:10px}.turn-body:empty{display:none}.event{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px}.event.ev-user{border-left:3px solid var(--user)}.event.ev-assistant{border-left:3px solid var(--assistant)}.ev-meta{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:12px}.ev-who{font-weight:600}.ev-time{margin-left:auto}.text{white-space:pre-wrap;word-break:break-word}.text-wrap{position:relative}.text-wrap.is-clamped .text{max-height:22em;overflow:hidden}.text-wrap.is-clamped:after{content:"";position:absolute;left:0;right:0;top:calc(22em - 48px);height:48px;background:linear-gradient(transparent,var(--panel));pointer-events:none}.show-more{margin-top:6px;position:relative}.transcript-tools .format-toggle{margin-left:auto;display:flex;gap:0}.format-toggle button{border-radius:0}.format-toggle button:first-child{border-radius:6px 0 0 6px}.format-toggle button:last-child{border-radius:0 6px 6px 0;margin-left:-1px}.format-toggle button.is-active{background:var(--panel2);color:var(--text);border-color:var(--accent);z-index:1}.text.md{white-space:normal}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin:0 0 .7em}.md h1,.md h2,.md h3,.md h4,.md h5,.md h6{margin:1em 0 .4em;line-height:1.25;font-weight:600}.md h1{font-size:1.3em}.md h2{font-size:1.18em}.md h3{font-size:1.08em}.md h4,.md h5,.md h6{font-size:1em}.md ul,.md ol{margin:0 0 .7em;padding-left:1.4em}.md li{margin:.15em 0}.md li>ul,.md li>ol{margin-bottom:0}.md a{color:var(--accent);text-decoration:underline}.md code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.88em;background:var(--code-bg);border:1px solid var(--border);border-radius:4px;padding:.1em .35em}.md pre{background:var(--code-bg);border:1px solid var(--border);border-radius:6px;padding:10px;overflow-x:auto;margin:0 0 .7em}.md pre code{background:none;border:none;padding:0;font-size:.85em}.md blockquote{margin:0 0 .7em;padding:.1em 0 .1em .9em;border-left:3px solid var(--border);color:var(--muted)}.md hr{border:none;border-top:1px solid var(--border);margin:1em 0}.md table{border-collapse:collapse;margin:0 0 .7em;display:block;overflow-x:auto}.md th,.md td{border:1px solid var(--border);padding:5px 9px;text-align:left}.md th{background:var(--panel2)}.md img{max-width:100%}.thinking{margin:4px 0}.thinking-toggle{font-size:12px;padding:2px 8px;color:var(--muted)}.thinking-body{white-space:pre-wrap;word-break:break-word;background:var(--panel2);border-radius:6px;padding:10px;margin:6px 0;color:var(--muted);font-size:13px}.tool{margin-top:6px;border:1px solid var(--border);border-radius:6px;background:var(--panel2)}.tool-err{border-color:var(--err)}.tool-head{display:flex;align-items:center;gap:10px;width:100%;background:transparent;border:none;text-align:left}.tool-name{font-weight:600;font-size:13px}.tool-status{font-size:11px;color:var(--muted)}.chev{margin-left:auto;color:var(--muted)}.tool-body{padding:0 10px 10px}.code,.result{white-space:pre-wrap;word-break:break-word;background:var(--code-bg);border-radius:6px;padding:10px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;overflow-x:auto}.result{color:var(--muted);margin-top:6px;font-family:inherit}.nav{display:flex;gap:4px}.nav-link{color:var(--muted);font-size:13px;padding:4px 10px;border-radius:6px}.nav-link:hover{text-decoration:none;color:var(--text);background:var(--panel2)}.nav-link.active{color:var(--text);background:var(--panel2)}.ctl{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:18px}.kpi{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px 14px}.kpi-label{font-size:12px;color:var(--muted)}.kpi-value{font-size:22px;font-weight:700;margin:4px 0;font-variant-numeric:tabular-nums}.kpi-sub{font-size:11px;color:var(--muted)}.kpi-bd{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:5px}.kpi-bd li{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px;font-size:13px}.kpi-bd-dot{width:9px;height:9px;border-radius:2px}.kpi-bd-name{color:var(--muted)}.kpi-bd-val{font-variant-numeric:tabular-nums;font-weight:600}.kpi-bd-pct{font-variant-numeric:tabular-nums;color:var(--muted);min-width:32px;text-align:right}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px;min-width:0}.card-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px;flex-wrap:wrap}.card-head h3{margin:0;font-size:14px}.card-hint{font-size:11px;color:var(--muted)}.empty{color:var(--muted);font-size:13px;padding:24px 8px}.empty code{background:var(--panel2);padding:1px 5px;border-radius:4px}.classification{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}.tag.complexity{background:#2c2440;color:#b98cff}.tag.cat{color:var(--text);background:#243}.tag.cat-feature{background:#173a2a;color:#7ee0a0}.tag.cat-bugfix{background:#3a1d1d;color:#ff9b9b}.tag.cat-refactor{background:#233247;color:#6ea8fe}.tag.cat-docs{background:#2f2a16;color:#e0b85a}.tag.cat-ops{background:#232a33;color:#79c0ff}.tag.cat-review{background:#2c2440;color:#b98cff}.tag.cat-chore{background:var(--tag);color:var(--muted)}.small{font-size:12px}button.small{padding:2px 8px;font-size:12px}.signals{margin-top:8px;max-height:320px;overflow:auto;width:100%}.signals-panel{width:100%;margin-top:8px;padding:12px 14px;background:var(--panel);border:1px solid var(--border);border-radius:8px;display:flex;flex-direction:column;gap:14px}.sig-section{display:flex;flex-direction:column;gap:7px}.sig-h{margin:0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text)}.sig-h .muted{font-weight:400;text-transform:none;letter-spacing:0}.sig-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.sig-bar-row{display:grid;grid-template-columns:110px 1fr auto;align-items:center;gap:10px;font-size:12px}.sig-bar-label{color:var(--text);text-transform:capitalize}.sig-bar{height:8px;background:var(--code-bg);border-radius:4px;overflow:hidden}.sig-bar-fill{display:block;height:100%;background:var(--accent);border-radius:4px;min-width:2px}.sig-bar-val{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.sig-bar-sub{grid-column:2 / -1;font-size:11px;margin-top:-2px}.sig-bar-row.is-win .sig-bar-fill{background:var(--user)}.sig-bar-row.is-win .sig-bar-label{color:var(--user);font-weight:600}.sig-grid{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;font-size:12px}.sig-grid dt{color:var(--muted)}.sig-grid dd{margin:0;color:var(--text)}.sig-chips{display:inline-flex;flex-wrap:wrap;gap:4px 6px}.sig-chip{background:var(--panel2);border:1px solid var(--border);border-radius:4px;padding:1px 6px}.sig-files{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;color:var(--muted);word-break:break-all;max-height:140px;overflow:auto}.skill-head{margin:8px 0 14px}.skill-head h1{margin:0 0 4px;font-size:1.5em}.skill-head-meta{font-size:13px}.skill-version-bar{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:14px}.skill-version-bar select{max-width:460px}.skill-cards{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:14px;align-items:start}@media(max-width:900px){.skill-cards{grid-template-columns:1fr}}.skill-body{max-height:70vh;overflow:auto}.skill-body-card,.skill-sessions-card{min-width:0}.skill-sessions-card table{width:100%}.sessions th .sort-th{display:inline-flex;align-items:center;gap:4px;background:none;border:none;padding:0;margin:0;font:inherit;font-weight:600;font-size:12px;color:var(--muted);cursor:pointer}.sessions th .sort-th:hover:not(:disabled){color:var(--text);border:none}.sessions th .sort-th.is-active{color:var(--text)}.sort-ind{font-size:9px;opacity:.6}.sessions th .sort-th.is-active .sort-ind{color:var(--accent);opacity:1}.filter-select{position:relative;display:inline-block}.filter-select-btn{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;min-width:180px;max-width:280px;text-align:left;padding:6px 10px}.filter-select-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-select .chev{color:var(--muted);font-size:10px}.filter-select-pop{position:absolute;z-index:20;top:calc(100% + 4px);left:0;min-width:240px;max-width:380px;background:var(--panel2);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000004d;padding:6px}.filter-select-search{width:100%;margin-bottom:6px}.filter-select-list{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto}.filter-select-opt{padding:6px 8px;border-radius:5px;cursor:pointer;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filter-select-opt.is-active{background:var(--panel)}.filter-select-opt.is-selected{color:var(--accent);font-weight:600}.filter-select-empty{padding:8px;font-size:13px}.plan-card{margin-top:6px;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:6px;background:var(--panel2);padding:8px 12px}.plan-card-head{font-weight:600;font-size:13px;margin-bottom:4px}.qa-card{margin-top:6px;border:1px solid var(--border);border-left:3px solid var(--user);border-radius:6px;background:var(--panel2);padding:8px 12px}.qa-card-head{font-weight:600;font-size:13px;margin-bottom:6px}.qa-q{margin:8px 0}.qa-q+.qa-q{border-top:1px solid var(--border);padding-top:8px}.qa-q-head{display:flex;gap:8px;align-items:baseline;margin-bottom:2px}.qa-question{font-weight:600;font-size:13px;margin-bottom:6px}.qa-options{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.qa-opt{display:flex;gap:8px;align-items:baseline;padding:5px 8px;border:1px solid var(--border);border-radius:5px}.qa-opt.is-selected{border-color:var(--ok);background:var(--panel)}.qa-mark{font-size:13px;line-height:1.3}.qa-opt.is-selected .qa-mark{color:var(--ok)}.qa-opt-body{display:flex;flex-direction:column;gap:2px;min-width:0}.qa-opt-label{font-weight:600;font-size:13px}.qa-opt-desc{font-size:12px}.qa-note{margin-top:6px;font-size:13px;color:var(--muted);border-left:2px solid var(--border);padding-left:8px}:root[data-theme=light] .brand-logo{filter:brightness(.5) saturate(1.8)}:root[data-theme=light] .tag.subagent{background:#f6e6c8;color:#8a6d1f}:root[data-theme=light] .tag.complexity{background:#ece4fb;color:#6d28d9}:root[data-theme=light] .tag.cat{background:#dff0e6;color:#10633a}:root[data-theme=light] .tag.cat-feature{background:#d8f3e3;color:#0f7a44}:root[data-theme=light] .tag.cat-bugfix{background:#fbe0e0;color:#b12626}:root[data-theme=light] .tag.cat-refactor{background:#dbe8fb;color:#1d4ed8}:root[data-theme=light] .tag.cat-docs{background:#f6ecd0;color:#8a6d1f}:root[data-theme=light] .tag.cat-ops{background:#dceaf8;color:#1a5fa8}:root[data-theme=light] .tag.cat-review{background:#ece4fb;color:#6d28d9}:root[data-theme=light] .json-number{color:#b45309}
|