@pcircle/footprint 1.6.0 → 1.7.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.
@@ -80,7 +80,7 @@
80
80
  ${t.note?`<div class="meta-note">${a(t.note)}</div>`:""}
81
81
  </div>
82
82
  `).join("")}function zs(e){return F(e.map(t=>`<strong>${a(Cs(t.role))}:</strong><br>${K(t.content)}`),s("context.noConversation"))}function Zs(e){return F(e.map(t=>{const n=Ns(t.eventType,t.summary),l=n?`<br><span class="muted">${a(n)}</span>`:"";return`<strong>${a(Es(t.eventType))}</strong>${l}`}),s("context.noTimeline"))}function Ks(e){return F(e.map(t=>`<strong>${a(Ls(t.kind))}</strong><br>${K(t.content)}`),s("context.noNarratives"))}function _s(e){return F(e.map(t=>`<strong>${a(Ve(t.status))}</strong> ${a(t.title)}<br>${K(t.summary)}`),s("context.noDecisions"))}function Vs(e){return F(e.map(t=>{const n=[a(As(t.artifactType)),t.category?a(P(t.category)):null,t.status?a(M(t.status)):null].filter(Boolean),l=t.path?`<br><span class="muted path-text" title="${a(t.path)}">${a(De(t.path,4))}</span>`:"",r=[t.failureSignatureLabel?`${s("session.artifact.failure")}: ${t.failureSignatureLabel}`:null,t.errorCode?`${s("session.artifact.errorCode")}: ${t.errorCode}`:null,t.lintRuleId?`${s("session.artifact.lintRule")}: ${t.lintRuleId}`:null,t.testSuite?`${s("session.artifact.test")}: ${t.testSuite}${t.testCase?` > ${t.testCase}`:""}`:null,t.dependencyNames&&t.dependencyNames.length>0?`${s("session.artifact.dependencies")}: ${t.dependencyAction??s("session.artifact.dependencyChange")} ${t.dependencyNames.join(", ")}`:null,t.changeScope?`${s("session.artifact.scope")}: ${t.changeScope}${t.manifestKind?` (${t.manifestKind})`:""}`:null].filter(Boolean).map(u=>`<br><span class="muted">${a(u??"")}</span>`).join("");return`<strong>${n.join(" · ")}</strong><br>${K(t.summary)}${l}${r}`}),s("context.noArtifacts"))}function Gs(e,t=document,n=window){const l=n.atob(e.base64Data),r=new Uint8Array(l.length);for(let m=0;m<l.length;m+=1)r[m]=l.charCodeAt(m);const u=new Blob([r],{type:e.mimeType}),p=n.URL.createObjectURL(u),b=t.createElement("a");b.href=p,b.download=e.filename,b.style.display="none",t.body.append(b),b.click(),b.remove(),n.URL.revokeObjectURL(p)}const te=50;function Oe(e){return!!(e&&typeof e=="object"&&typeof e.session?.id=="string")}function Ys(e){return!!(e&&typeof e=="object"&&typeof e.summary?.headline=="string"&&Array.isArray(e.recentSessions))}function O(e){return!!(e&&typeof e=="object"&&typeof e.total=="number"&&typeof e.offset=="number"&&typeof e.limit=="number"&&typeof e.returned=="number"&&typeof e.hasMore=="boolean"&&("nextOffset"in e&&(e.nextOffset===null||typeof e.nextOffset=="number")))}function Qs(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.messages)&&O(e.page))}function Js(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.trends)&&typeof e.summary?.totalTrends=="number"&&O(e.page))}function Xs(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.timeline)&&O(e.page))}function He(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.artifacts)&&O(e.page))}function je(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.narratives)&&O(e.page))}function qe(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.decisions)&&O(e.page))}function ye(e){return!!(e&&typeof e=="object"&&typeof e.id=="string"&&typeof e.label=="string"&&typeof e.workspaceKey=="string"&&typeof e.latestSessionId=="string"&&typeof e.latestSessionLabel=="string"&&typeof e.latestStartedAt=="string"&&Array.isArray(e.hosts)&&Array.isArray(e.statuses)&&Array.isArray(e.signals))}function et(e){return!!(e&&typeof e=="object"&&ye(e.context)&&typeof e.currentTruth?.summary=="string"&&Array.isArray(e.currentTruth?.activeBlockers)&&Array.isArray(e.currentTruth?.openQuestions)&&Array.isArray(e.activeDecisions)&&Array.isArray(e.supersededDecisions)&&Array.isArray(e.sessions))}function st(e){return!!(e&&typeof e=="object"&&(e.kind==="existing-context"||e.kind==="new-context")&&typeof e.label=="string"&&typeof e.workspaceKey=="string"&&Array.isArray(e.reasons)&&Array.isArray(e.sessionIds))}function tt(e){return!!(e&&typeof e=="object"&&(e.mode==="linked"||e.mode==="preferred"||e.mode==="suggested"||e.mode==="none")&&Array.isArray(e.candidates)&&e.candidates.every(st)&&(e.currentContext===null||ye(e.currentContext))&&(e.briefing===null||et(e.briefing)))}function ot(e){return!!(e&&typeof e=="object"&&Array.isArray(e.contexts)&&e.contexts.every(ye)&&typeof e.total=="number")}function nt(e){return!!(e&&typeof e=="object"&&typeof e.action=="string"&&Array.isArray(e.affectedSessionIds))}function U(e){if(!e)return s("common.notAvailable");try{return new Date(e).toLocaleString(ps())}catch{return e}}function z(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}function Ue(e,t=3){const n=e.replace(/\\/g,"/"),l=n.split("/").filter(Boolean);return l.length<=t?e:`${n.startsWith("/")?"/":""}.../${l.slice(-t).join("/")}`}function it(e,t=document,n=window,l=r=>Gs(r,t,n)){let r=null,u=null,p=0,b=0,m=0,f=0,g=0,D=0,S=0,y=0,C=0,v=null,T=null,B=null,_=null,Q=null,ke=[],we=[],Se=[],Te=[],Ce=[],Ae=[],ie=null,ae=null,re=null,le=null,de=null,ce=null,A=null,N=null,L=[];const H=new Map;function Qe(o){H.set(o,(H.get(o)??0)+1)}function Je(o){const i=(H.get(o)??0)-1;if(i<=0){H.delete(o);return}H.set(o,i)}function Xe(o){return(H.get(o)??0)>0}function j(o){const i=t.getElementById("error");i&&(i.innerHTML=ws(o))}function J(o){const i=t.getElementById("error");i&&(i.innerHTML=Ss(o))}function E(o,i){const d=t.getElementById(o);d&&(d.innerHTML=i)}function me(o,i,d){if(O(o))return o;const c=Math.max(d,te),h=d<i;return{total:i,offset:0,limit:c,returned:d,hasMore:h,nextOffset:h?d:null}}function k(o,i,d){const c=t.getElementById(o);if(!c)return;const h=!!i?.hasMore;c.hidden=!h&&!d.loading,c.disabled=!h||d.loading,c.textContent=d.loading?d.loadingLabel:d.idleLabel}function Le(o,i){ke=o,ie=i,E("messages",zs(o)),k("load-more-messages",i,{loading:!1,idleLabel:s("sessionDetail.loadMoreConversation"),loadingLabel:s("session.detail.loading.conversation")})}function Ee(o,i){Se=o,re=i,E("timeline",Zs(o)),k("load-more-timeline",i,{loading:!1,idleLabel:s("sessionDetail.loadMoreSteps"),loadingLabel:s("session.detail.loading.steps")})}function Ie(o,i){we=o,ae=i,E("trend-context",Hs(o,U)),k("load-more-session-trends",i,{loading:!1,idleLabel:s("sessionDetail.loadMoreRelatedWork"),loadingLabel:s("session.detail.loading.relatedWork")})}function ue(o,i){Te=o,le=i,E("artifacts",Vs(o)),k("load-more-artifacts",i,{loading:!1,idleLabel:s("sessionDetail.loadMoreSupporting"),loadingLabel:s("session.detail.loading.supporting")})}function pe(o,i){Ce=o,de=i,E("narratives",Ks(o)),k("load-more-narratives",i,{loading:!1,idleLabel:s("sessionDetail.loadMoreNarratives"),loadingLabel:s("session.detail.loading.summaries")})}function he(o,i){Ae=o,ce=i,E("decisions",_s(o)),k("load-more-decisions",i,{loading:!1,idleLabel:s("sessionDetail.loadMoreDecisions"),loadingLabel:s("session.detail.loading.decisions")})}function X(o){const i=t.getElementById("context-target-select"),d=t.getElementById("move-context-button"),c=t.getElementById("set-active-context-button");if(!i)return;const h=o??N?.context.id??L[0]?.id??"";i.innerHTML=L.length===0?`<option value="">${a(s("session.detail.context.none"))}</option>`:L.map(x=>{const ge=x.id===h?" selected":"";return`<option value="${a(x.id)}"${ge}>${a(x.label)} · ${a(Ue(x.workspaceKey))}</option>`}).join(""),i.disabled=L.length===0,d&&(d.disabled=!r||L.length===0||!i.value),c&&(c.disabled=!r||L.length===0||!i.value)}function ee(){const o=t.getElementById("context-summary"),i=t.getElementById("context-candidates-summary"),d=t.getElementById("context-current"),c=t.getElementById("context-candidates");if(!o||!i||!d||!c)return;if(!r){o.textContent=s("session.detail.context.openRecord"),d.innerHTML=`<li class="muted">${a(s("sessionDetail.noConfirmedTopic"))}</li>`,i.textContent=s("session.detail.context.confirmationRequired"),c.innerHTML=`<li class="muted">${a(s("session.detail.context.noOtherTopics"))}</li>`,X(null);return}if(!A){o.textContent=s("session.detail.context.checking"),d.innerHTML=`<li class="muted">${a(s("session.detail.context.loadingConfirmed"))}</li>`,i.textContent=s("session.detail.context.loadingCandidatesSummary"),c.innerHTML=`<li class="muted">${a(s("session.detail.context.loadingCandidates"))}</li>`,X(null);return}N?(o.textContent=s("session.detail.context.alreadyLinked",{label:N.context.label}),d.innerHTML=js(N,U)):(o.textContent=A.mode==="suggested"?s("session.detail.context.reviewSuggestions"):s("session.detail.context.notLinked"),d.innerHTML=`<li class="muted">${a(s("sessionDetail.noConfirmedTopic"))}</li>`);const h=A.candidates.length;i.textContent=h===0?s("session.detail.context.noSuggestions"):s("session.detail.context.suggestionCount",{count:h}),c.innerHTML=qs(A.candidates),X()}function es(){C+=1,A=null,N=null,L=[],ee()}async function be(o,i){C+=1;const d=C;A=null,N=null,L=[],ee();try{const[c,h]=await Promise.all([e.callServerTool({name:"resolve-context",arguments:{sessionId:o}}),e.callServerTool({name:"list-contexts",arguments:{}})]);if(d!==C||o!==r)return;if(!tt(c.structuredContent))throw new Error(s("session.detail.error.invalidContextResolution"));if(!ot(h.structuredContent))throw new Error(s("session.detail.error.invalidContextList"));A=c.structuredContent,N=A.mode==="linked"||A.mode==="preferred"?A.briefing:null,L=h.structuredContent.contexts,ee(),i?.selectedContextId&&X(i.selectedContextId)}catch(c){throw d===C&&o===r&&(A={mode:"none",sessionId:o,cwd:_,confirmationRequired:!0,recommendedAction:"none",linkedContextId:null,currentContext:null,briefing:null,candidates:[]},N=null,L=[],ee()),c}}function V(o){const i=t.getElementById("scope-export-button");if(!i)return;const d=B??o;i.disabled=!o||B!==null,i.textContent=s(d&&B?d.groupBy==="family"?"session.detail.scope.exportingBroader":"session.detail.scope.exportingPickup":o?o.groupBy==="family"?"session.detail.scope.exportBroader":"session.detail.scope.exportPickup":"sessionDetail.pickupExport"),i.title=o?"":s("session.detail.scope.loadFirst")}function Re(o){v=null,T=null;const i=t.getElementById("scope-handoff-summary");i&&(i.textContent=s("sessionDetail.pickupNote.summary")),E("scope-handoff-results",`<li class="muted">${a(s("session.detail.scope.none"))}</li>`),V(null)}function Fe(o){y+=1,Re()}function Pe(o){v=o.scope,T=o;const i=t.getElementById("scope-handoff-summary");i&&(i.textContent=o.summaryText),E("scope-handoff-results",o.listHtml),V(o.scope)}function ss(o,i){Pe({scope:i,summaryText:s("session.detail.scope.summaryText",{group:i.groupBy==="family"?s("session.dashboard.trends.group.family"):s("session.dashboard.trends.group.issue"),label:i.label,headline:o.summary.headline}),listHtml:Os({blockers:o.blockers,followUps:o.followUps,recentSessions:o.recentSessions},U)})}async function ts(o){y+=1;const i=y,d=T,c=t.getElementById("scope-handoff-summary");c&&(c.textContent=s("session.detail.scope.loadingFor",{label:o.label})),E("scope-handoff-results",`<li class="muted">${a(s("session.detail.scope.loading"))}</li>`),V(null);try{const h=await e.callServerTool({name:"get-history-handoff",arguments:{issueKey:o.issueKey,groupBy:o.groupBy}});if(i!==y)return;if(!Ys(h.structuredContent))throw new Error(s("session.detail.error.invalidScope"));ss(h.structuredContent,o)}catch(h){throw i===y&&(d?Pe(d):Re()),h}}async function os(){const o=v;if(!o)throw new Error(s("session.detail.scope.loadFirst"));B=o,V(v);try{const d=(await e.callServerTool({name:"export-sessions",arguments:{issueKey:o.issueKey,groupBy:o.groupBy,outputMode:"base64"}})).structuredContent;if(!d?.base64Data||!d.filename)throw new Error(s("session.export.noArchive"));l({filename:d.filename,base64Data:d.base64Data,mimeType:"application/zip"}),J(s("session.detail.scope.exportSuccess",{kind:o.groupBy==="family"?s("session.dashboard.trends.group.family"):s("session.dashboard.trends.group.issue"),filename:d.filename}))}finally{B=null,V(v)}}function Be(o){r=o.session.id,u=o.session.status,_=o.session.cwd,Q=o.session.label,b+=1,m+=1,f+=1,g+=1,D+=1,S+=1;const i=t.getElementById("error");i&&(i.innerHTML="");const d=t.getElementById("subtitle");d&&(d.textContent=s("session.detail.subtitle",{label:W(o.session.label,o.session.host),status:M(o.session.status),host:R(o.session.host),startedAt:U(o.session.startedAt)}));const c=t.getElementById("meta");if(c){const x=o.trendContext.summary.activeBlockers??0,ge=o.trendContext.summary.regressedTrends??0;c.innerHTML=Us([{label:s("session.detail.meta.aiHelper"),value:R(o.session.host)},{label:s("session.detail.meta.currentState"),value:M(o.session.status)},{label:s("session.detail.meta.started"),value:U(o.session.startedAt)},{label:s("session.detail.meta.finished"),value:U(o.session.endedAt)},{label:s("session.detail.meta.conversation"),value:z(o.messageSummary.total,s("common.message"),s("common.messages"))},{label:s("session.detail.meta.timeline"),value:z(o.timelineSummary.total,s("common.step"),s("common.steps"))},{label:s("session.detail.meta.supporting"),value:z(o.artifactSummary.total,s("common.item"),s("common.items"))},{label:s("session.detail.meta.related"),value:o.trendContext.summary.totalTrends===0?s("session.detail.meta.relatedNone"):s("session.detail.meta.relatedSummary",{patterns:z(o.trendContext.summary.totalTrends,s("common.relatedPattern"),s("common.relatedPatterns")),blockers:z(x,s("common.activeBlocker"),s("common.activeBlockers")),regressed:z(ge,s("common.returnedProblem"),s("common.returnedProblems"))})},{label:s("session.detail.meta.overview"),value:o.hasNarratives?s("session.detail.meta.ready"):s("session.detail.meta.needsRefresh")},{label:s("session.detail.meta.workedIn"),value:Ue(o.session.cwd),note:s("session.detail.meta.pathNote"),valueClassName:"path-text",title:o.session.cwd}])}Le(o.messages,me(o.messagePage,o.messageSummary.total,o.messages.length)),Ee(o.timeline,me(o.timelinePage,o.timelineSummary.total,o.timeline.length)),Ie(o.trendContext.trends,me(o.trendContext.page,o.trendContext.summary.totalTrends,o.trendContext.trends.length)),Fe(),es(),ue([],null),pe([],null),he([],null);const h=t.getElementById("reingest-button");if(h){const x=We(o.session.status);h.disabled=!x,h.textContent=s(x?"sessionDetail.refreshOverview":"session.reingest.inProgress"),h.title=x?"":s("session.reingest.whenStopped")}be(o.session.id).catch(x=>{j(x instanceof Error?x.message:s("session.detail.context.refreshError"))})}async function Ne(o){p+=1;const i=p;Qe(o);try{const d=await e.callServerTool({name:"get-session",arguments:{id:o}});if(i!==p)return;if(!Oe(d.structuredContent))throw new Error(s("session.detail.error.invalidDetail"));Be(d.structuredContent)}finally{Je(o)}}async function ns(){const o=r,i=ie;if(!o||!i?.hasMore||i.nextOffset===null)return;b+=1;const d=b;k("load-more-messages",i,{loading:!0,idleLabel:s("sessionDetail.loadMoreConversation"),loadingLabel:s("session.detail.loading.conversation")});try{const c=await e.callServerTool({name:"get-session-messages",arguments:{id:o,limit:i.limit,offset:i.nextOffset}});if(d!==b||o!==r)return;if(!Qs(c.structuredContent))throw new Error(s("session.detail.error.invalidMessages"));Le([...ke,...c.structuredContent.messages],c.structuredContent.page)}finally{d===b&&o===r&&k("load-more-messages",ie,{loading:!1,idleLabel:s("sessionDetail.loadMoreConversation"),loadingLabel:s("session.detail.loading.conversation")})}}async function is(){const o=r,i=re;if(!o||!i?.hasMore||i.nextOffset===null)return;f+=1;const d=f;k("load-more-timeline",i,{loading:!0,idleLabel:s("sessionDetail.loadMoreSteps"),loadingLabel:s("session.detail.loading.steps")});try{const c=await e.callServerTool({name:"get-session-timeline",arguments:{id:o,limit:i.limit,offset:i.nextOffset}});if(d!==f||o!==r)return;if(!Xs(c.structuredContent))throw new Error(s("session.detail.error.invalidTimeline"));Ee([...Se,...c.structuredContent.timeline],c.structuredContent.page)}finally{d===f&&o===r&&k("load-more-timeline",re,{loading:!1,idleLabel:s("sessionDetail.loadMoreSteps"),loadingLabel:s("session.detail.loading.steps")})}}async function as(){const o=r,i=ae;if(!o||!i?.hasMore||i.nextOffset===null)return;m+=1;const d=m;k("load-more-session-trends",i,{loading:!0,idleLabel:s("sessionDetail.loadMoreRelatedWork"),loadingLabel:s("session.detail.loading.relatedWork")});try{const c=await e.callServerTool({name:"get-session-trends",arguments:{id:o,limit:i.limit,offset:i.nextOffset}});if(d!==m||o!==r)return;if(!Js(c.structuredContent))throw new Error(s("session.detail.error.invalidTrends"));Ie([...we,...c.structuredContent.trends],c.structuredContent.page)}finally{d===m&&o===r&&k("load-more-session-trends",ae,{loading:!1,idleLabel:s("sessionDetail.loadMoreRelatedWork"),loadingLabel:s("session.detail.loading.relatedWork")})}}async function rs(){const o=r,i=le;if(!o||!i?.hasMore||i.nextOffset===null)return;g+=1;const d=g;k("load-more-artifacts",i,{loading:!0,idleLabel:s("sessionDetail.loadMoreSupporting"),loadingLabel:s("session.detail.loading.supporting")});try{const c=await e.callServerTool({name:"get-session-artifacts",arguments:{id:o,limit:i.limit,offset:i.nextOffset}});if(d!==g||o!==r)return;if(!He(c.structuredContent))throw new Error(s("session.detail.error.invalidArtifacts"));ue([...Te,...c.structuredContent.artifacts],c.structuredContent.page)}finally{d===g&&o===r&&k("load-more-artifacts",le,{loading:!1,idleLabel:s("sessionDetail.loadMoreSupporting"),loadingLabel:s("session.detail.loading.supporting")})}}async function ls(){const o=r,i=de;if(!o||!i?.hasMore||i.nextOffset===null)return;D+=1;const d=D;k("load-more-narratives",i,{loading:!0,idleLabel:s("sessionDetail.loadMoreNarratives"),loadingLabel:s("session.detail.loading.summaries")});try{const c=await e.callServerTool({name:"get-session-narrative",arguments:{id:o,limit:i.limit,offset:i.nextOffset}});if(d!==D||o!==r)return;if(!je(c.structuredContent))throw new Error(s("session.detail.error.invalidNarratives"));pe([...Ce,...c.structuredContent.narratives],c.structuredContent.page)}finally{d===D&&o===r&&k("load-more-narratives",de,{loading:!1,idleLabel:s("sessionDetail.loadMoreNarratives"),loadingLabel:s("session.detail.loading.summaries")})}}async function ds(){const o=r,i=ce;if(!o||!i?.hasMore||i.nextOffset===null)return;S+=1;const d=S;k("load-more-decisions",i,{loading:!0,idleLabel:s("sessionDetail.loadMoreDecisions"),loadingLabel:s("session.detail.loading.decisions")});try{const c=await e.callServerTool({name:"get-session-decisions",arguments:{id:o,limit:i.limit,offset:i.nextOffset}});if(d!==S||o!==r)return;if(!qe(c.structuredContent))throw new Error(s("session.detail.error.invalidDecisions"));he([...Ae,...c.structuredContent.decisions],c.structuredContent.page)}finally{d===S&&o===r&&k("load-more-decisions",ce,{loading:!1,idleLabel:s("sessionDetail.loadMoreDecisions"),loadingLabel:s("session.detail.loading.decisions")})}}function se(){const i=t.getElementById("context-target-select")?.value?.trim();return i||null}async function q(o,i,d){const c=r;if(!c)throw new Error(s("session.detail.error.noSession"));const h=await e.callServerTool(o);if(!nt(h.structuredContent))throw new Error(s("session.detail.error.invalidContextMutation"));c===r&&(await be(c,d),J(i(h.structuredContent)))}Fe();const $e=async o=>{const i=o.target?.closest("[data-action]");if(!i)return;const d=i.getAttribute("data-action");try{if(d==="detail"){const c=i.getAttribute("data-session-id");if(!c)return;await Ne(c);return}if(d==="load-scope-handoff"){const c=i.getAttribute("data-issue-key"),h=i.getAttribute("data-group-by"),x=i.getAttribute("data-scope-label");if(!c||h!=="issue"&&h!=="family"||!x)return;await ts({issueKey:c,groupBy:h,label:x});return}if(d==="export-scope"){await os();return}if(d==="load-more-messages"){await ns();return}if(d==="load-more-session-trends"){await as();return}if(d==="load-more-timeline"){await is();return}if(d==="load-more-artifacts"){await rs();return}if(d==="load-more-narratives"){await ls();return}if(d==="load-more-decisions"){await ds();return}if(d==="refresh-context"){if(!r)return;await be(r,{selectedContextId:se()}),J(s("session.detail.context.refreshed"));return}if(d==="confirm-context-candidate"){const c=i.getAttribute("data-context-id");if(!c||!r)return;await q({name:"confirm-context-link",arguments:{sessionIds:[r],contextId:c}},h=>s("session.detail.context.linked",{label:h.context?.label??h.contextId??c??""}),{selectedContextId:c});return}if(d==="confirm-context-new"){if(!r)return;const c=i.getAttribute("data-context-label")?.trim(),h=[...new Set((i.getAttribute("data-session-ids")??"").split(",").map(x=>x.trim()).filter(Boolean).concat(r))];await q({name:"confirm-context-link",arguments:{sessionIds:h,label:c||Q||void 0}},x=>s("session.detail.context.createdFromRelated",{label:x.context?.label??c??s("session.detail.context.newContext")}),{selectedContextId:null});return}if(d==="reject-context-candidate"){const c=i.getAttribute("data-context-id");if(!c||!r)return;await q({name:"reject-context-link",arguments:{sessionId:r,contextId:c}},()=>s("session.detail.context.rejected",{label:c}),{selectedContextId:se()});return}if(d==="move-to-selected-context"){const c=se();if(!c||!r)return;await q({name:"move-session-context",arguments:{sessionId:r,contextId:c}},h=>s("session.detail.context.moved",{label:h.context?.label??h.contextId??c??""}),{selectedContextId:c});return}if(d==="create-context-from-session"){if(!r)return;const c=t.getElementById("context-create-label"),h=c?.value.trim()||void 0;await q({name:"move-session-context",arguments:{sessionId:r,label:h}},x=>s("session.detail.context.moved",{label:x.context?.label??h??s("session.detail.context.newContext")})),c&&(c.value="");return}if(d==="set-selected-context-active"){const c=se();if(!c)return;await q({name:"set-active-context",arguments:{contextId:c,cwd:_??void 0}},h=>s("session.detail.context.preferred",{label:h.context?.label??h.contextId??c??""}),{selectedContextId:c});return}}catch(c){j(c instanceof Error?c.message:s("session.detail.error.action"))}};async function G(o){if(!r){j(s("session.detail.error.noSession"));return}try{await o(r)}catch(i){j(i instanceof Error?i.message:s("session.detail.error.sessionAction"))}}return n.reingestSession=async()=>{if(!We(u??"")){j(s("session.reingest.notReady"));return}await G(async o=>{await e.callServerTool({name:"reingest-session",arguments:{id:o}}),await Ne(o)})},n.exportSessionBundle=async()=>{await G(async o=>{const d=(await e.callServerTool({name:"export-sessions",arguments:{sessionIds:[o],outputMode:"base64"}})).structuredContent;if(!d?.base64Data||!d.filename)throw new Error(s("session.export.noArchive"));l({filename:d.filename,base64Data:d.base64Data,mimeType:"application/zip"}),J(s("session.detail.export.success",{filename:d.filename}))})},n.loadArtifacts=async()=>{await G(async o=>{g+=1;const i=g,d=await e.callServerTool({name:"get-session-artifacts",arguments:{id:o,limit:te}});if(!(i!==g||o!==r)){if(!He(d.structuredContent))throw new Error(s("session.detail.error.invalidArtifacts"));ue(d.structuredContent.artifacts,d.structuredContent.page)}})},n.loadNarratives=async()=>{await G(async o=>{D+=1;const i=D,d=await e.callServerTool({name:"get-session-narrative",arguments:{id:o,limit:te}});if(!(i!==D||o!==r)){if(!je(d.structuredContent))throw new Error(s("session.detail.error.invalidNarratives"));pe(d.structuredContent.narratives,d.structuredContent.page)}})},n.loadDecisions=async()=>{await G(async o=>{S+=1;const i=S,d=await e.callServerTool({name:"get-session-decisions",arguments:{id:o,limit:te}});if(!(i!==S||o!==r)){if(!qe(d.structuredContent))throw new Error(s("session.detail.error.invalidDecisions"));he(d.structuredContent.decisions,d.structuredContent.page)}})},e.ontoolresult=o=>{Oe(o.structuredContent)&&(Xe(o.structuredContent.session.id)||(p+=1,Be(o.structuredContent)))},e.connect().catch(o=>{j(o instanceof Error?o.message:s("session.detail.error.connect"))}),t.addEventListener("click",$e),()=>{t.removeEventListener("click",$e),delete n.reingestSession,delete n.exportSessionBundle,delete n.loadArtifacts,delete n.loadNarratives,delete n.loadDecisions}}function ze(e,t){const n=new URL("./session-detail-live.html",t.location.href);return n.searchParams.set("id",e),n.toString()}async function Ye(e){const t=await e.text();let n=null;if(t.trim())try{n=JSON.parse(t)}catch(l){throw(e.headers.get("content-type")??"").includes("text/html")||t.trimStart().startsWith("<!DOCTYPE")?new Error(s("liveDemo.error.hostRequired")):new Error(l instanceof Error?s("liveDemo.error.invalidJson",{message:l.message}):s("liveDemo.error.invalidJson",{message:s("common.unknownError")}))}if(!e.ok){const l=n&&typeof n=="object"&&typeof n.error=="string"?n.error:e.status===404||e.status===405?s("liveDemo.error.hostRequired"):`${e.status} ${e.statusText}`;throw new Error(l)}return n}async function Ze(e){const t=await fetch("/api/tool",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(e)});return Ye(t)}async function at(){const e=await fetch("/api/bootstrap");return Ye(e)}function Ke(e){const t=e.structuredContent;return t&&typeof t=="object"&&typeof t.session?.id=="string"?t.session.id:null}function rt(e){const t=e.getElementById("subtitle");t&&(t.textContent=s("liveDemo.empty.subtitle"));const n=e.getElementById("error");n&&(n.innerHTML=`<div class="error">${s("liveDemo.empty.body")}</div>`)}function lt(e=document,t=window){const n={ontoolresult:null,async connect(){let l=new URL(t.location.href).searchParams.get("id");if(l||(l=(await at()).defaultSessionId),!l){rt(e);return}const r=await Ze({name:"get-session",arguments:{id:l}}),u=Ke(r)??l;t.history.replaceState(null,"",ze(u,t)),n.ontoolresult?.(r)},async callServerTool(l){const r=await Ze(l);if(l.name==="get-session"&&typeof l.arguments.id=="string"){const u=Ke(r)??l.arguments.id;t.history.replaceState(null,"",ze(u,t))}return n.ontoolresult?.(r),r}};return n}bs();it(lt());</script>
83
- <style rel="stylesheet" crossorigin>@import"https://cdn.jsdelivr.net/npm/geist@1/dist/fonts/geist-sans/style.css";@import"https://cdn.jsdelivr.net/npm/geist@1/dist/fonts/geist-mono/style.css";:root{color-scheme:light;--ds-gray-100: #FAFAFA;--ds-gray-200: #EAEAEA;--ds-gray-300: #C9C9C9;--ds-gray-400: #999999;--ds-gray-500: #888888;--ds-gray-600: #666666;--ds-gray-700: #444444;--ds-gray-800: #333333;--ds-gray-900: #1A1A1A;--ds-gray-1000: #000000;--ds-background-100: #FFFFFF;--ds-background-200: #FAFAFA;--ds-blue-100: #EBF5FF;--ds-blue-700: #0070F3;--ds-blue-800: #0060D1;--ds-red-100: #FFF0F0;--ds-red-700: #EE0000;--ds-red-800: #CC0000;--ds-green-100: #EFFBF4;--ds-green-700: #0A7B3E;--ds-amber-100: #FFF7E0;--ds-amber-700: #AB6400;--ds-shadow-sm: 0 1px 2px rgba(0,0,0,.04);--ds-shadow-md: 0 2px 8px rgba(0,0,0,.06);--ds-shadow-lg: 0 8px 30px rgba(0,0,0,.08);--ds-radius-sm: 6px;--ds-radius-md: 8px;--ds-radius-lg: 12px;--ds-radius-xl: 12px;--ds-radius-round: 999px;--sp-xs: .25rem;--sp-sm: .5rem;--sp-md: 1rem;--sp-lg: 1.25rem;--sp-xl: 2rem;--sp-2xl: 3rem;--sp-3xl: 4rem;--bg: var(--ds-background-200);--bg-soft: var(--ds-gray-100);--surface: var(--ds-background-100);--surface-strong: var(--ds-background-100);--surface-muted: rgba(255,255,255,.75);--ink: var(--ds-gray-1000);--ink-soft: var(--ds-gray-700);--muted: var(--ds-gray-600);--muted-soft: var(--ds-gray-500);--line: var(--ds-gray-200);--line-strong: var(--ds-gray-300);--brand: var(--ds-blue-700);--brand-strong: var(--ds-blue-800);--brand-soft: var(--ds-blue-100);--brand-glow: rgba(0,112,243,.18);--accent: var(--ds-amber-700);--accent-soft: var(--ds-amber-100);--danger: var(--ds-red-700);--danger-soft: var(--ds-red-100);--success: var(--ds-green-700);--success-soft: var(--ds-green-100);--info: var(--ds-blue-700);--info-soft: var(--ds-blue-100);--shadow: var(--ds-shadow-md);--shadow-soft: var(--ds-shadow-sm);--shadow-lg: var(--ds-shadow-lg);--radius-xl: var(--ds-radius-xl);--radius-lg: var(--ds-radius-lg);--radius-md: var(--ds-radius-md);--radius-sm: var(--ds-radius-sm)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;padding:var(--sp-2xl);font-family:Geist Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans,sans-serif;font-size:.875rem;line-height:1.6;color:var(--ds-gray-900);background:var(--ds-background-200);overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{border:0}.shell,.container{width:min(100%,1200px);margin:0 auto}.shell,.container{display:grid;gap:var(--sp-xl)}h1,h2,h3{margin:0;font-family:Geist Sans,-apple-system,sans-serif;letter-spacing:-.02em;color:var(--ds-gray-1000)}h2{font-size:1.25rem;font-weight:600}h3{font-size:1.0625rem;font-weight:600}.page-hero,.page-summary,.card,.stat-card,.recent-activity,.timeline-section,.tag-controls,.content-section,.metadata-card,.export-section,.file-info,.git-info,.modal-content{background:var(--ds-background-100);border:1px solid var(--ds-gray-200);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-sm)}.card:hover,.recent-activity:hover,.timeline-section:hover,.content-section:hover,.export-section:hover{border-color:var(--ds-gray-300)}.page-hero{padding:var(--sp-2xl)}.page-hero-toolbar{display:flex;align-items:center;gap:var(--sp-md);flex-wrap:wrap;margin-bottom:var(--sp-lg)}.page-kicker,.demo-banner{display:inline-flex;align-items:center;gap:.375rem;width:fit-content;padding:.375rem .75rem;border-radius:var(--ds-radius-round);background:var(--ds-gray-100);color:var(--ds-gray-600);border:1px solid var(--ds-gray-200);font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.demo-banner{background:var(--ds-blue-100);color:var(--ds-blue-700);border-color:transparent}.page-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.locale-switch{display:inline-flex;align-items:center;gap:var(--sp-sm);padding:0;border-radius:0;background:transparent;border:none;margin-left:auto}.locale-switch label{margin:0;font-size:.6875rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--ds-gray-500);white-space:nowrap}.locale-switch select{height:2rem;min-width:120px;padding:0 1.75rem 0 .625rem;font-size:.75rem;border-radius:var(--ds-radius-md)}.page-title{margin:0 0 var(--sp-sm);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-family:Geist Sans,-apple-system,sans-serif;font-size:clamp(1.75rem,3.5vw,2.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em;color:var(--ds-gray-1000)}.page-title .icon{color:var(--ds-gray-500)}.page-subtitle,.summary{margin:0;font-size:.9375rem;color:var(--ds-gray-600);line-height:1.6}.page-note{margin:var(--sp-lg) 0 0;padding:var(--sp-lg);border-radius:var(--ds-radius-md);background:var(--ds-gray-100);color:var(--ds-gray-600);line-height:1.65;font-size:.875rem}.page-note strong,.summary strong{color:var(--ds-gray-1000)}.muted,.card-subtitle,.meta-note,.export-info,.search-results-info,.file-stats,.last-updated,.metadata-help{color:var(--ds-gray-600);line-height:1.6}.card-subtitle{margin:.25rem 0 0;font-size:.875rem}.card,.content-section,.export-section,.recent-activity,.timeline-section,.tag-controls{overflow:hidden;min-width:0}.card{padding:0}.meta .card{padding:var(--sp-lg)}.card-header,.content-header,.section-header,.timeline-header,.activity-header,.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg);padding:var(--sp-xl) var(--sp-xl) 0}.card-header+table,.card-header+.card-body,.content-header+.content-body,.section-header+.section-body,.activity-header+.activity-list,.timeline-header+.timeline-container{margin-top:var(--sp-md)}.card-body,.content-body,.section-body,.modal-body{padding:var(--sp-xl)}.card-body-flush{padding:var(--sp-md) 0 0}.card-section{padding:var(--sp-xl);border-top:1px solid var(--ds-gray-200)}.card-footer,.panel-actions{padding:0 var(--sp-xl) var(--sp-xl)}.dashboard-grid,.split,.stats,.meta,.metadata-grid,.filters,.options-grid{display:grid;gap:var(--sp-xl)}.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.wide-card{grid-column:span 3}.split{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.meta,.metadata-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.filters{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:end}.filters>.actions{grid-column:1 / -1}.stat-card,.metadata-card{padding:var(--sp-xl);position:relative;overflow:hidden;transition:border-color .15s ease}.stat-card:hover{border-color:var(--ds-gray-300)}.stat-value{font-family:Geist Sans,-apple-system,sans-serif;font-size:clamp(1.5rem,2.5vw,2rem);font-weight:700;line-height:1.2;color:var(--ds-gray-1000);overflow-wrap:anywhere;letter-spacing:-.02em}.meta-value,.metadata-value{font-family:Geist Sans,-apple-system,sans-serif;font-size:.9375rem;font-weight:500;line-height:1.5;color:var(--ds-gray-1000);overflow-wrap:anywhere}.stat-label,.metadata-label,.meta strong,.field label,.option-label,.tag-filter-label{display:block;margin-bottom:var(--sp-sm);font-size:.6875rem;font-weight:600;color:var(--ds-gray-500);text-transform:uppercase;letter-spacing:.08em}.meta .card strong{display:block}.field{display:grid;gap:var(--sp-sm);min-width:0}.field input,.search-input,input[type=text],select{width:100%;height:2.5rem;padding:0 .75rem;border:1px solid var(--ds-gray-300);border-radius:var(--ds-radius-md);background:var(--ds-background-100);color:var(--ds-gray-1000);font-size:.875rem;transition:border-color .15s ease,box-shadow .15s ease}select{appearance:none;font-size:.75rem;padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;background-size:1rem;cursor:pointer}.field input::placeholder,.field select::placeholder,.search-input::placeholder,input[type=text]::placeholder{color:var(--ds-gray-400)}.field input:focus,.field select:focus,.search-input:focus,input[type=text]:focus,select:focus{outline:none;border-color:var(--ds-gray-1000);box-shadow:0 0 0 1px var(--ds-gray-1000)}.option-group{display:grid;gap:var(--sp-md)}.checkbox-group{display:flex;align-items:center;gap:var(--sp-sm)}.actions,.timeline-controls,.header-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-sm)}.actions{row-gap:var(--sp-sm)}button,.btn,.batch-btn,.timeline-btn,.manage-tags-btn,.clear-filters-btn,.filter-mode-btn,.back-btn,.modal-close{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;height:2.25rem;padding:0 .875rem;border-radius:var(--ds-radius-md);border:1px solid var(--ds-gray-200);background:var(--ds-background-100);color:var(--ds-gray-900);cursor:pointer;font-size:.8125rem;font-weight:500;line-height:1;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease}button:hover,.btn:hover,.batch-btn:hover,.timeline-btn:hover,.manage-tags-btn:hover,.clear-filters-btn:hover,.filter-mode-btn:hover,.back-btn:hover,.modal-close:hover{background:var(--ds-gray-100);border-color:var(--ds-gray-1000)}.btn-primary,.batch-btn.export,button[type=submit]{background:var(--ds-gray-1000);color:#fff;border-color:var(--ds-gray-1000)}.btn-primary:hover,.batch-btn.export:hover,button[type=submit]:hover{background:var(--ds-gray-800);border-color:var(--ds-gray-800)}button.secondary,.btn-secondary,.timeline-btn,.manage-tags-btn,.clear-filters-btn,.filter-mode-btn,.back-btn{border-color:var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-900)}button.secondary:hover,.btn-secondary:hover,.timeline-btn:hover,.manage-tags-btn:hover,.clear-filters-btn:hover,.filter-mode-btn:hover,.back-btn:hover{background:var(--ds-gray-100);border-color:var(--ds-gray-1000)}.timeline-btn.active,.filter-mode-btn.active{background:var(--ds-gray-1000);color:#fff;border-color:var(--ds-gray-1000)}.batch-btn.delete{background:var(--ds-red-700);border-color:var(--ds-red-700);color:#fff}.batch-btn.delete:hover{background:var(--ds-red-800);border-color:var(--ds-red-800)}button:disabled,.btn:disabled,.batch-btn:disabled,.timeline-btn:disabled,.manage-tags-btn:disabled,.clear-filters-btn:disabled,.filter-mode-btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{height:2rem;padding:0 .75rem;border-radius:var(--ds-radius-round);border:1px solid var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-700);cursor:pointer;font-size:.75rem;font-weight:500}.btn-sm.danger{border-color:transparent;background:var(--ds-red-100);color:var(--ds-red-700)}.hero-actions{display:flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap;margin-top:var(--sp-sm)}.pill,.tag,.activity-badge,.selection-counter{display:inline-flex;align-items:center;gap:.25rem;width:fit-content;padding:.125rem .5rem;border-radius:var(--ds-radius-round);background:var(--ds-gray-100);color:var(--ds-gray-800);border:1px solid var(--ds-gray-200);font-size:.6875rem;font-weight:500;line-height:1.6}.pill.completed{background:var(--ds-green-100);color:var(--ds-green-700);border-color:transparent}.pill.failed,.pill.interrupted{background:var(--ds-red-100);color:var(--ds-red-700);border-color:transparent}.pill.running,.activity-badge{background:var(--ds-blue-100);color:var(--ds-blue-700);border-color:transparent}.activity-badge.pulse{animation:pulseBadge 1.4s ease-in-out 2}@keyframes pulseBadge{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.status-dot{display:inline-block;width:.5rem;height:.5rem;border-radius:var(--ds-radius-round);background:var(--ds-blue-700);box-shadow:0 0 0 3px var(--ds-blue-100)}.status-dot.offline{background:var(--ds-red-700);box-shadow:0 0 0 3px var(--ds-red-100)}table{width:100%;border-collapse:collapse;min-width:0}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{min-width:680px}th,td{padding:.875rem 1rem;border-bottom:1px solid var(--ds-gray-200);text-align:left;vertical-align:top;overflow-wrap:anywhere}th{color:var(--ds-gray-500);font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em}td{font-size:.875rem;color:var(--ds-gray-900)}thead tr{background:var(--ds-gray-100)}tbody tr{transition:background .15s ease}tbody tr:hover{background:var(--ds-gray-100)}.checkbox-cell{width:3rem;text-align:center}.list,.activity-list,.plain-list,.tag-list{list-style:none;margin:0;padding:0}.list,.activity-list{display:grid;gap:var(--sp-lg)}.list{max-height:none;overflow:visible}.list li,.activity-item,.preview-item,.tag-item{padding:var(--sp-xl);border:1px solid var(--ds-gray-200);border-left:3px solid transparent;border-radius:var(--ds-radius-md);background:var(--ds-background-100);line-height:1.7;overflow-wrap:anywhere;transition:border-color .15s ease,background .15s ease}.list li:hover,.activity-item:hover,.preview-item:hover{border-left-color:var(--ds-gray-1000);background:var(--ds-gray-100)}.list li strong{display:block;margin-bottom:.5rem;font-size:.9375rem}.list li .pill,.list li .activity-badge{margin-bottom:.375rem}.list li .actions,.list li>div:last-child{margin-top:var(--sp-lg);padding-top:var(--sp-md);border-top:1px solid var(--ds-gray-200)}.activity-item{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg)}.activity-content{min-width:0}.activity-item.new-item{border-color:var(--ds-blue-100);border-left-color:var(--ds-blue-700)}.activity-title{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.activity-title-text,.section-title,.timeline-title,.modal-title{font-weight:600;color:var(--ds-gray-1000)}.activity-meta,.activity-time,.preview-meta,.export-info,.file-stats{color:var(--ds-gray-500);font-size:.8125rem;margin-top:.125rem}.search-bar{margin:0}.search-input-wrapper{position:relative;width:min(100%,520px)}.search-icon{position:absolute;left:.875rem;top:50%;transform:translateY(-50%);color:var(--ds-gray-400);pointer-events:none}.search-input{padding-left:2.5rem;padding-right:2.5rem}.search-clear{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);width:2rem;height:2rem;min-height:auto;padding:0;border-radius:var(--ds-radius-round);background:transparent;color:var(--ds-gray-500);border:none;box-shadow:none}.search-clear:hover{background:var(--ds-gray-100);border-color:transparent}.timeline-container{padding:var(--sp-xl);overflow-x:auto}.timeline{position:relative;min-width:760px;height:210px}.timeline-axis{position:absolute;left:0;right:0;bottom:2.375rem;height:2px;background:var(--ds-gray-200)}.timeline-point{position:absolute;bottom:1.875rem;width:.75rem;height:.75rem;border-radius:var(--ds-radius-round);background:var(--ds-blue-700);border:2px solid var(--ds-background-100);box-shadow:0 0 0 2px var(--ds-blue-100);transform:translate(-50%);cursor:pointer;transition:box-shadow .18s ease,transform .18s ease}.timeline-point:hover{transform:translate(-50%) scale(1.3);box-shadow:0 0 0 4px #0070f333}.timeline-point.multiple{background:var(--ds-amber-700);box-shadow:0 0 0 2px var(--ds-amber-100)}.timeline-label{position:absolute;bottom:0;transform:translate(-50%);color:var(--ds-gray-500);font-size:.75rem;white-space:nowrap}.timeline-tooltip{position:absolute;bottom:3.875rem;transform:translate(-50%);padding:var(--sp-md) var(--sp-lg);border-radius:var(--ds-radius-md);background:var(--ds-gray-1000);color:#fff;font-size:.75rem;line-height:1.5;display:none;box-shadow:var(--ds-shadow-lg);z-index:12}.timeline-tooltip:after{content:"";position:absolute;top:100%;left:50%;margin-left:-6px;border:6px solid transparent;border-top-color:var(--ds-gray-1000)}.batch-controls,.tag-controls-header,.tag-filters,.actions-between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.batch-controls,.tag-controls{padding:var(--sp-xl)}.tag-filters{justify-content:flex-start}#tag-filter-chips,.tag-list{display:flex;flex-wrap:wrap;gap:var(--sp-sm)}.tag-list{flex-direction:column}.tag-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;border-radius:var(--ds-radius-round);border:1px solid var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-800);font-size:.75rem;font-weight:500;transition:background .15s ease,border-color .15s ease}.tag-chip.clickable{cursor:pointer}.tag-chip.clickable:hover{border-color:var(--ds-gray-1000);background:var(--ds-gray-100)}.tag-chip.active{background:var(--ds-gray-1000);border-color:var(--ds-gray-1000);color:#fff}.tag-close{display:inline-grid;place-items:center;width:1rem;height:1rem;border-radius:var(--ds-radius-round);background:#fff3}.filter-mode{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.tag-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.tag-item-info,.tag-item-actions{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.tag-count{color:var(--ds-gray-500);font-size:.8125rem;font-weight:600}.modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:var(--sp-xl);background:#00000080;backdrop-filter:blur(4px);z-index:30}.modal.show{display:flex}.modal-content{width:min(100%,760px);max-height:min(82vh,860px);overflow:auto}.modal-close{width:2.25rem;height:2.25rem;min-height:auto;padding:0}.preview-area{border:2px dashed var(--ds-gray-300);border-radius:var(--ds-radius-lg);background:var(--ds-background-200);padding:var(--sp-xl)}.preview-content{display:none}.preview-content.active{display:block}.file-info{padding:var(--sp-lg) var(--sp-xl);background:var(--ds-background-100)}.file-name,.content-text,.value,.path-text,.preview-item code,code{font-family:Geist Mono,SF Mono,IBM Plex Mono,Consolas,Menlo,monospace}.content-body{max-height:620px;overflow-y:auto}.content-text{white-space:pre-wrap;font-size:.8125rem;line-height:1.7;color:var(--ds-gray-700)}.error,.success,.empty,.loading,.no-tags,.empty-activity{padding:var(--sp-lg);border-radius:var(--ds-radius-md);font-size:.8125rem}.error{background:var(--ds-red-100);color:var(--ds-red-700)}.success{background:var(--ds-green-100);color:var(--ds-green-700)}.empty,.loading,.no-tags,.empty-activity{background:var(--ds-blue-100);color:var(--ds-blue-700)}.highlight{background:#f59e0b26;border-radius:3px;padding:0 2px}.evidence-checkbox,.select-all-checkbox,input[type=checkbox],input[type=radio]{accent-color:var(--ds-gray-1000);width:1rem;height:1rem;cursor:pointer}.icon{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.icon-lg{width:1.2em;height:1.2em}.icon-xl{width:1.45em;height:1.45em}.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}.loading{position:relative;overflow:hidden}.loading:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.5) 50%,transparent 100%);animation:shimmer 1.8s ease-in-out infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.content-body a,.card-body a:not(.btn),.section-body a:not(.btn){color:var(--ds-blue-700);text-decoration:underline;text-underline-offset:2px;transition:color .15s ease}.content-body a:hover,.card-body a:not(.btn):hover,.section-body a:not(.btn):hover{color:var(--ds-blue-800)}@media(max-width:1100px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wide-card{grid-column:span 2}}@media(max-width:900px){body{padding:var(--sp-lg)}.page-title{font-size:clamp(1.5rem,7vw,2rem)}.timeline{min-width:580px}th,td{padding:.75rem}}@media(max-width:760px){body{padding:var(--sp-md)}.page-hero{padding:var(--sp-xl)}.page-hero-toolbar{flex-direction:column;align-items:flex-start}.locale-switch{width:100%;margin-left:0;justify-content:space-between}.locale-switch select{min-width:0;flex:1}.split,.stats,.meta,.metadata-grid,.filters,.options-grid,.dashboard-grid{grid-template-columns:1fr}.wide-card{grid-column:auto}.card{padding:var(--sp-lg)}.card-header,.content-header,.section-header,.timeline-header,.activity-header,.modal-header{padding:var(--sp-lg) var(--sp-lg) 0}.card-body,.content-body,.section-body,.modal-body{padding:var(--sp-lg)}.card-footer,.panel-actions{padding:0 var(--sp-lg) var(--sp-lg)}.actions,.timeline-controls,.header-actions,.hero-actions{flex-direction:column;align-items:stretch}.actions>button,.actions>.btn,.actions>.field,.timeline-controls>button,.hero-actions>button{width:100%}.table-scroll table{min-width:520px}.stat-card,.metadata-card,.batch-controls,.tag-controls{padding:var(--sp-lg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}</style>
83
+ <style rel="stylesheet" crossorigin>@import"https://cdn.jsdelivr.net/npm/geist@1/dist/fonts/geist-sans/style.css";@import"https://cdn.jsdelivr.net/npm/geist@1/dist/fonts/geist-mono/style.css";:root{color-scheme:dark;--ds-gray-100: #1a1a1a;--ds-gray-200: rgba(255,255,255,.08);--ds-gray-300: rgba(255,255,255,.14);--ds-gray-400: #555555;--ds-gray-500: #888888;--ds-gray-600: #999999;--ds-gray-700: #b0b0b0;--ds-gray-800: #cccccc;--ds-gray-900: #e0e0e0;--ds-gray-1000: #ededed;--ds-background-100: #161616;--ds-background-200: #0a0a0a;--ds-green-100: rgba(62,207,142,.12);--ds-green-700: #3ecf8e;--ds-green-800: #2bb573;--ds-blue-100: rgba(56,189,248,.1);--ds-blue-700: #38bdf8;--ds-blue-800: #0ea5e9;--ds-red-100: rgba(248,113,113,.1);--ds-red-700: #f87171;--ds-red-800: #ef4444;--ds-amber-100: rgba(251,191,36,.1);--ds-amber-700: #fbbf24;--ds-shadow-sm: 0 1px 3px rgba(0,0,0,.3);--ds-shadow-md: 0 4px 12px rgba(0,0,0,.4);--ds-shadow-lg: 0 8px 30px rgba(0,0,0,.5);--ds-radius-sm: 6px;--ds-radius-md: 8px;--ds-radius-lg: 12px;--ds-radius-xl: 12px;--ds-radius-round: 999px;--sp-xs: .25rem;--sp-sm: .5rem;--sp-md: 1rem;--sp-lg: 1.25rem;--sp-xl: 2rem;--sp-2xl: 3rem;--sp-3xl: 4rem;--bg: var(--ds-background-200);--bg-soft: var(--ds-gray-100);--surface: var(--ds-background-100);--surface-strong: #1c1c1c;--surface-muted: rgba(255,255,255,.04);--ink: var(--ds-gray-1000);--ink-soft: var(--ds-gray-800);--muted: var(--ds-gray-600);--muted-soft: var(--ds-gray-500);--line: var(--ds-gray-200);--line-strong: var(--ds-gray-300);--brand: var(--ds-green-700);--brand-strong: var(--ds-green-800);--brand-soft: var(--ds-green-100);--brand-glow: rgba(62,207,142,.18);--accent: var(--ds-amber-700);--accent-soft: var(--ds-amber-100);--danger: var(--ds-red-700);--danger-soft: var(--ds-red-100);--success: var(--ds-green-700);--success-soft: var(--ds-green-100);--info: var(--ds-blue-700);--info-soft: var(--ds-blue-100);--shadow: var(--ds-shadow-md);--shadow-soft: var(--ds-shadow-sm);--shadow-lg: var(--ds-shadow-lg);--radius-xl: var(--ds-radius-xl);--radius-lg: var(--ds-radius-lg);--radius-md: var(--ds-radius-md);--radius-sm: var(--ds-radius-sm)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;padding:var(--sp-2xl);font-family:Geist Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans,sans-serif;font-size:.875rem;line-height:1.6;color:var(--ds-gray-900);background:var(--ds-background-200);overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{border:0}.shell,.container{width:min(100%,1200px);margin:0 auto}.shell,.container{display:grid;gap:var(--sp-xl)}h1,h2,h3{margin:0;font-family:Geist Sans,-apple-system,sans-serif;letter-spacing:-.02em;color:var(--ds-gray-1000)}h2{font-size:1.25rem;font-weight:600}h3{font-size:1.0625rem;font-weight:600}.page-hero,.page-summary,.card,.stat-card,.recent-activity,.timeline-section,.tag-controls,.content-section,.metadata-card,.export-section,.file-info,.git-info,.modal-content{background:var(--ds-background-100);border:1px solid var(--ds-gray-200);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-sm)}.card:hover,.recent-activity:hover,.timeline-section:hover,.content-section:hover,.export-section:hover{border-color:var(--ds-gray-300)}.page-hero{padding:var(--sp-2xl)}.page-hero-toolbar{display:flex;align-items:center;gap:var(--sp-md);flex-wrap:wrap;margin-bottom:var(--sp-lg)}.page-kicker,.demo-banner{display:inline-flex;align-items:center;gap:.375rem;width:fit-content;padding:.375rem .75rem;border-radius:var(--ds-radius-round);background:var(--ds-gray-100);color:var(--ds-gray-600);border:1px solid var(--ds-gray-200);font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.demo-banner{background:var(--ds-green-100);color:var(--ds-green-700);border-color:transparent}.page-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.locale-switch{display:inline-flex;align-items:center;gap:var(--sp-sm);padding:0;border-radius:0;background:transparent;border:none;margin-left:auto}.locale-switch label{margin:0;font-size:.6875rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--ds-gray-500);white-space:nowrap}.locale-switch select{height:2rem;min-width:120px;padding:0 1.75rem 0 .625rem;font-size:.75rem;border-radius:var(--ds-radius-md)}.page-title{margin:0 0 var(--sp-sm);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-family:Geist Sans,-apple-system,sans-serif;font-size:clamp(1.75rem,3.5vw,2.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em;color:var(--ds-gray-1000)}.page-title .icon{color:var(--ds-gray-500)}.page-subtitle,.summary{margin:0;font-size:.9375rem;color:var(--ds-gray-600);line-height:1.6}.page-note{margin:var(--sp-lg) 0 0;padding:var(--sp-lg);border-radius:var(--ds-radius-md);background:var(--ds-gray-100);color:var(--ds-gray-600);line-height:1.65;font-size:.875rem}.page-note strong,.summary strong{color:var(--ds-gray-1000)}.muted,.card-subtitle,.meta-note,.export-info,.search-results-info,.file-stats,.last-updated,.metadata-help{color:var(--ds-gray-600);line-height:1.6}.card-subtitle{margin:.25rem 0 0;font-size:.875rem}.card,.content-section,.export-section,.recent-activity,.timeline-section,.tag-controls{overflow:hidden;min-width:0}.card{padding:0}.meta .card{padding:var(--sp-lg)}.card-header,.content-header,.section-header,.timeline-header,.activity-header,.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg);padding:var(--sp-xl) var(--sp-xl) 0}.card-header+table,.card-header+.card-body,.content-header+.content-body,.section-header+.section-body,.activity-header+.activity-list,.timeline-header+.timeline-container{margin-top:var(--sp-md)}.card-body,.content-body,.section-body,.modal-body{padding:var(--sp-xl)}.card-body-flush{padding:var(--sp-md) 0 0}.card-section{padding:var(--sp-xl);border-top:1px solid var(--ds-gray-200)}.card-footer,.panel-actions{padding:0 var(--sp-xl) var(--sp-xl)}.dashboard-grid,.split,.stats,.meta,.metadata-grid,.filters,.options-grid{display:grid;gap:var(--sp-xl)}.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.wide-card{grid-column:span 3}.split{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.meta,.metadata-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.filters{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:end}.filters>.actions{grid-column:1 / -1}.stat-card,.metadata-card{padding:var(--sp-xl);position:relative;overflow:hidden;transition:border-color .15s ease}.stat-card:hover{border-color:var(--ds-gray-300)}.stat-value{font-family:Geist Sans,-apple-system,sans-serif;font-size:clamp(1.5rem,2.5vw,2rem);font-weight:700;line-height:1.2;color:var(--ds-gray-1000);overflow-wrap:anywhere;letter-spacing:-.02em}.meta-value,.metadata-value{font-family:Geist Sans,-apple-system,sans-serif;font-size:.9375rem;font-weight:500;line-height:1.5;color:var(--ds-gray-1000);overflow-wrap:anywhere}.stat-label,.metadata-label,.meta strong,.field label,.option-label,.tag-filter-label{display:block;margin-bottom:var(--sp-sm);font-size:.6875rem;font-weight:600;color:var(--ds-gray-500);text-transform:uppercase;letter-spacing:.08em}.meta .card strong{display:block}.field{display:grid;gap:var(--sp-sm);min-width:0}.field input,.search-input,input[type=text],select{width:100%;height:2.5rem;padding:0 .75rem;border:1px solid var(--ds-gray-300);border-radius:var(--ds-radius-md);background:var(--ds-background-200);color:var(--ds-gray-1000);font-size:.875rem;transition:border-color .15s ease,box-shadow .15s ease}select{appearance:none;font-size:.75rem;padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;background-size:1rem;cursor:pointer}.field input::placeholder,.field select::placeholder,.search-input::placeholder,input[type=text]::placeholder{color:var(--ds-gray-400)}.field input:focus,.field select:focus,.search-input:focus,input[type=text]:focus,select:focus{outline:none;border-color:var(--ds-green-700);box-shadow:0 0 0 1px var(--ds-green-700)}.option-group{display:grid;gap:var(--sp-md)}.checkbox-group{display:flex;align-items:center;gap:var(--sp-sm)}.actions,.timeline-controls,.header-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-sm)}.actions{row-gap:var(--sp-sm)}button,.btn,.batch-btn,.timeline-btn,.manage-tags-btn,.clear-filters-btn,.filter-mode-btn,.back-btn,.modal-close{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;height:2.25rem;padding:0 .875rem;border-radius:var(--ds-radius-md);border:1px solid var(--ds-gray-200);background:var(--ds-background-100);color:var(--ds-gray-900);cursor:pointer;font-size:.8125rem;font-weight:500;line-height:1;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease}button:hover,.btn:hover,.batch-btn:hover,.timeline-btn:hover,.manage-tags-btn:hover,.clear-filters-btn:hover,.filter-mode-btn:hover,.back-btn:hover,.modal-close:hover{background:var(--ds-gray-100);border-color:var(--ds-gray-300)}.btn-primary,.batch-btn.export,button[type=submit]{background:var(--ds-green-700);color:#0a0a0a;border-color:var(--ds-green-700);font-weight:600}.btn-primary:hover,.batch-btn.export:hover,button[type=submit]:hover{background:var(--ds-green-800);border-color:var(--ds-green-800)}button.secondary,.btn-secondary,.timeline-btn,.manage-tags-btn,.clear-filters-btn,.filter-mode-btn,.back-btn{border-color:var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-900)}button.secondary:hover,.btn-secondary:hover,.timeline-btn:hover,.manage-tags-btn:hover,.clear-filters-btn:hover,.filter-mode-btn:hover,.back-btn:hover{background:var(--ds-gray-100);border-color:var(--ds-gray-300)}.timeline-btn.active,.filter-mode-btn.active{background:var(--ds-green-700);color:#0a0a0a;border-color:var(--ds-green-700)}.batch-btn.delete{background:var(--ds-red-700);border-color:var(--ds-red-700);color:#0a0a0a}.batch-btn.delete:hover{background:var(--ds-red-800);border-color:var(--ds-red-800)}button:disabled,.btn:disabled,.batch-btn:disabled,.timeline-btn:disabled,.manage-tags-btn:disabled,.clear-filters-btn:disabled,.filter-mode-btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{height:2rem;padding:0 .75rem;border-radius:var(--ds-radius-round);border:1px solid var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-700);cursor:pointer;font-size:.75rem;font-weight:500}.btn-sm.danger{border-color:transparent;background:var(--ds-red-100);color:var(--ds-red-700)}.hero-actions{display:flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap;margin-top:var(--sp-sm)}.pill,.tag,.activity-badge,.selection-counter{display:inline-flex;align-items:center;gap:.25rem;width:fit-content;padding:.125rem .5rem;border-radius:var(--ds-radius-round);background:var(--ds-gray-100);color:var(--ds-gray-800);border:1px solid var(--ds-gray-200);font-size:.6875rem;font-weight:500;line-height:1.6}.pill.completed{background:var(--ds-green-100);color:var(--ds-green-700);border-color:transparent}.pill.failed,.pill.interrupted{background:var(--ds-red-100);color:var(--ds-red-700);border-color:transparent}.pill.running{background:var(--ds-blue-100);color:var(--ds-blue-700);border-color:transparent}.activity-badge{background:var(--ds-green-100);color:var(--ds-green-700);border-color:transparent}.activity-badge.pulse{animation:pulseBadge 1.4s ease-in-out 2}@keyframes pulseBadge{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.status-dot{display:inline-block;width:.5rem;height:.5rem;border-radius:var(--ds-radius-round);background:var(--ds-green-700);box-shadow:0 0 0 3px var(--ds-green-100)}.status-dot.offline{background:var(--ds-red-700);box-shadow:0 0 0 3px var(--ds-red-100)}table{width:100%;border-collapse:collapse;min-width:0}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{min-width:680px}th,td{padding:.875rem 1rem;border-bottom:1px solid var(--ds-gray-200);text-align:left;vertical-align:top;overflow-wrap:anywhere}th{color:var(--ds-gray-500);font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em}td{font-size:.875rem;color:var(--ds-gray-900)}thead tr{background:var(--ds-gray-100)}tbody tr{transition:background .15s ease}tbody tr:hover{background:#ffffff08}.checkbox-cell{width:3rem;text-align:center}.list,.activity-list,.plain-list,.tag-list{list-style:none;margin:0;padding:0}.list,.activity-list{display:grid;gap:var(--sp-lg)}.list{max-height:none;overflow:visible}.list li,.activity-item,.preview-item,.tag-item{padding:var(--sp-xl);border:1px solid var(--ds-gray-200);border-left:3px solid transparent;border-radius:var(--ds-radius-md);background:var(--ds-background-100);line-height:1.7;overflow-wrap:anywhere;transition:border-color .15s ease,background .15s ease}.list li:hover,.activity-item:hover,.preview-item:hover{border-left-color:var(--ds-green-700);background:#ffffff05}.list li strong{display:block;margin-bottom:.5rem;font-size:.9375rem}.list li .pill,.list li .activity-badge{margin-bottom:.375rem}.list li .actions,.list li>div:last-child{margin-top:var(--sp-lg);padding-top:var(--sp-md);border-top:1px solid var(--ds-gray-200)}.activity-item{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg)}.activity-content{min-width:0}.activity-item.new-item{border-color:var(--ds-green-100);border-left-color:var(--ds-green-700)}.activity-title{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.activity-title-text,.section-title,.timeline-title,.modal-title{font-weight:600;color:var(--ds-gray-1000)}.activity-meta,.activity-time,.preview-meta,.export-info,.file-stats{color:var(--ds-gray-500);font-size:.8125rem;margin-top:.125rem}.search-bar{margin:0}.search-input-wrapper{position:relative;width:min(100%,520px)}.search-icon{position:absolute;left:.875rem;top:50%;transform:translateY(-50%);color:var(--ds-gray-400);pointer-events:none}.search-input{padding-left:2.5rem;padding-right:2.5rem}.search-clear{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);width:2rem;height:2rem;min-height:auto;padding:0;border-radius:var(--ds-radius-round);background:transparent;color:var(--ds-gray-500);border:none;box-shadow:none}.search-clear:hover{background:var(--ds-gray-100);border-color:transparent}.timeline-container{padding:var(--sp-xl);overflow-x:auto}.timeline{position:relative;min-width:760px;height:210px}.timeline-axis{position:absolute;left:0;right:0;bottom:2.375rem;height:2px;background:var(--ds-gray-200)}.timeline-point{position:absolute;bottom:1.875rem;width:.75rem;height:.75rem;border-radius:var(--ds-radius-round);background:var(--ds-green-700);border:2px solid var(--ds-background-100);box-shadow:0 0 0 2px var(--ds-green-100);transform:translate(-50%);cursor:pointer;transition:box-shadow .18s ease,transform .18s ease}.timeline-point:hover{transform:translate(-50%) scale(1.3);box-shadow:0 0 0 4px #3ecf8e40}.timeline-point.multiple{background:var(--ds-amber-700);box-shadow:0 0 0 2px var(--ds-amber-100)}.timeline-label{position:absolute;bottom:0;transform:translate(-50%);color:var(--ds-gray-500);font-size:.75rem;white-space:nowrap}.timeline-tooltip{position:absolute;bottom:3.875rem;transform:translate(-50%);padding:var(--sp-md) var(--sp-lg);border-radius:var(--ds-radius-md);background:var(--ds-gray-1000);color:#0a0a0a;font-size:.75rem;line-height:1.5;display:none;box-shadow:var(--ds-shadow-lg);z-index:12}.timeline-tooltip:after{content:"";position:absolute;top:100%;left:50%;margin-left:-6px;border:6px solid transparent;border-top-color:var(--ds-gray-1000)}.batch-controls,.tag-controls-header,.tag-filters,.actions-between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.batch-controls,.tag-controls{padding:var(--sp-xl)}.tag-filters{justify-content:flex-start}#tag-filter-chips,.tag-list{display:flex;flex-wrap:wrap;gap:var(--sp-sm)}.tag-list{flex-direction:column}.tag-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;border-radius:var(--ds-radius-round);border:1px solid var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-800);font-size:.75rem;font-weight:500;transition:background .15s ease,border-color .15s ease}.tag-chip.clickable{cursor:pointer}.tag-chip.clickable:hover{border-color:var(--ds-green-700);background:#3ecf8e14}.tag-chip.active{background:var(--ds-green-700);border-color:var(--ds-green-700);color:#0a0a0a}.tag-close{display:inline-grid;place-items:center;width:1rem;height:1rem;border-radius:var(--ds-radius-round);background:#0003}.filter-mode{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.tag-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.tag-item-info,.tag-item-actions{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.tag-count{color:var(--ds-gray-500);font-size:.8125rem;font-weight:600}.modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:var(--sp-xl);background:#000000b3;backdrop-filter:blur(8px);z-index:30}.modal.show{display:flex}.modal-content{width:min(100%,760px);max-height:min(82vh,860px);overflow:auto}.modal-close{width:2.25rem;height:2.25rem;min-height:auto;padding:0}.preview-area{border:2px dashed var(--ds-gray-300);border-radius:var(--ds-radius-lg);background:var(--ds-background-200);padding:var(--sp-xl)}.preview-content{display:none}.preview-content.active{display:block}.file-info{padding:var(--sp-lg) var(--sp-xl);background:var(--ds-background-100)}.file-name,.content-text,.value,.path-text,.preview-item code,code{font-family:Geist Mono,SF Mono,IBM Plex Mono,Consolas,Menlo,monospace}.content-body{max-height:620px;overflow-y:auto}.content-text{white-space:pre-wrap;font-size:.8125rem;line-height:1.7;color:var(--ds-gray-700)}.error,.success,.empty,.loading,.no-tags,.empty-activity{padding:var(--sp-lg);border-radius:var(--ds-radius-md);font-size:.8125rem}.error{background:var(--ds-red-100);color:var(--ds-red-700)}.success{background:var(--ds-green-100);color:var(--ds-green-700)}.empty,.loading,.no-tags,.empty-activity{background:var(--ds-blue-100);color:var(--ds-blue-700)}.highlight{background:#fbbf2426;border-radius:3px;padding:0 2px}.evidence-checkbox,.select-all-checkbox,input[type=checkbox],input[type=radio]{accent-color:var(--ds-green-700);width:1rem;height:1rem;cursor:pointer}.icon{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.icon-lg{width:1.2em;height:1.2em}.icon-xl{width:1.45em;height:1.45em}.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}.loading{position:relative;overflow:hidden}.loading:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.06) 50%,transparent 100%);animation:shimmer 1.8s ease-in-out infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.content-body a,.card-body a:not(.btn),.section-body a:not(.btn){color:var(--ds-green-700);text-decoration:underline;text-underline-offset:2px;transition:color .15s ease}.content-body a:hover,.card-body a:not(.btn):hover,.section-body a:not(.btn):hover{color:var(--ds-green-800)}@media(max-width:1100px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wide-card{grid-column:span 2}}@media(max-width:900px){body{padding:var(--sp-lg)}.page-title{font-size:clamp(1.5rem,7vw,2rem)}.timeline{min-width:580px}th,td{padding:.75rem}}@media(max-width:760px){body{padding:var(--sp-md)}.page-hero{padding:var(--sp-xl)}.page-hero-toolbar{flex-direction:column;align-items:flex-start}.locale-switch{width:100%;margin-left:0;justify-content:space-between}.locale-switch select{min-width:0;flex:1}.split,.stats,.meta,.metadata-grid,.filters,.options-grid,.dashboard-grid{grid-template-columns:1fr}.wide-card{grid-column:auto}.card{padding:var(--sp-lg)}.card-header,.content-header,.section-header,.timeline-header,.activity-header,.modal-header{padding:var(--sp-lg) var(--sp-lg) 0}.card-body,.content-body,.section-body,.modal-body{padding:var(--sp-lg)}.card-footer,.panel-actions{padding:0 var(--sp-lg) var(--sp-lg)}.actions,.timeline-controls,.header-actions,.hero-actions{flex-direction:column;align-items:stretch}.actions>button,.actions>.btn,.actions>.field,.timeline-controls>button,.hero-actions>button{width:100%}.table-scroll table{min-width:520px}.stat-card,.metadata-card,.batch-controls,.tag-controls{padding:var(--sp-lg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}</style>
84
84
  </head>
85
85
  <body>
86
86
  <div class="shell">
@@ -178,7 +178,7 @@ container holding the app. Specify either width or maxWidth, and either height o
178
178
  ${t.note?`<div class="meta-note">${_(t.note)}</div>`:""}
179
179
  </div>
180
180
  `).join("")}function zI(e){return Je(e.map(t=>`<strong>${_(cI(t.role))}:</strong><br>${Ft(t.content)}`),m("context.noConversation"))}function TI(e){return Je(e.map(t=>{const i=yI(t.eventType,t.summary),r=i?`<br><span class="muted">${_(i)}</span>`:"";return`<strong>${_(pI(t.eventType))}</strong>${r}`}),m("context.noTimeline"))}function OI(e){return Je(e.map(t=>`<strong>${_(mI(t.kind))}</strong><br>${Ft(t.content)}`),m("context.noNarratives"))}function NI(e){return Je(e.map(t=>`<strong>${_(ih(t.status))}</strong> ${_(t.title)}<br>${Ft(t.summary)}`),m("context.noDecisions"))}function PI(e){return Je(e.map(t=>{const i=[_(dI(t.artifactType)),t.category?_(We(t.category)):null,t.status?_(Ke(t.status)):null].filter(Boolean),r=t.path?`<br><span class="muted path-text" title="${_(t.path)}">${_(la(t.path,4))}</span>`:"",n=[t.failureSignatureLabel?`${m("session.artifact.failure")}: ${t.failureSignatureLabel}`:null,t.errorCode?`${m("session.artifact.errorCode")}: ${t.errorCode}`:null,t.lintRuleId?`${m("session.artifact.lintRule")}: ${t.lintRuleId}`:null,t.testSuite?`${m("session.artifact.test")}: ${t.testSuite}${t.testCase?` > ${t.testCase}`:""}`:null,t.dependencyNames&&t.dependencyNames.length>0?`${m("session.artifact.dependencies")}: ${t.dependencyAction??m("session.artifact.dependencyChange")} ${t.dependencyNames.join(", ")}`:null,t.changeScope?`${m("session.artifact.scope")}: ${t.changeScope}${t.manifestKind?` (${t.manifestKind})`:""}`:null].filter(Boolean).map(o=>`<br><span class="muted">${_(o??"")}</span>`).join("");return`<strong>${i.join(" · ")}</strong><br>${Ft(t.summary)}${r}${n}`}),m("context.noArtifacts"))}function EI(e,t=document,i=window){const r=i.atob(e.base64Data),n=new Uint8Array(r.length);for(let l=0;l<r.length;l+=1)n[l]=r.charCodeAt(l);const o=new Blob([n],{type:e.mimeType}),s=i.URL.createObjectURL(o),a=t.createElement("a");a.href=s,a.download=e.filename,a.style.display="none",t.body.append(a),a.click(),a.remove(),i.URL.revokeObjectURL(s)}const Hn=50;function cl(e){return!!(e&&typeof e=="object"&&typeof e.session?.id=="string")}function ZI(e){return!!(e&&typeof e=="object"&&typeof e.summary?.headline=="string"&&Array.isArray(e.recentSessions))}function vt(e){return!!(e&&typeof e=="object"&&typeof e.total=="number"&&typeof e.offset=="number"&&typeof e.limit=="number"&&typeof e.returned=="number"&&typeof e.hasMore=="boolean"&&("nextOffset"in e&&(e.nextOffset===null||typeof e.nextOffset=="number")))}function UI(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.messages)&&vt(e.page))}function CI(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.trends)&&typeof e.summary?.totalTrends=="number"&&vt(e.page))}function AI(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.timeline)&&vt(e.page))}function dl(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.artifacts)&&vt(e.page))}function ml(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.narratives)&&vt(e.page))}function pl(e){return!!(e&&typeof e=="object"&&typeof e.sessionId=="string"&&Array.isArray(e.decisions)&&vt(e.page))}function ua(e){return!!(e&&typeof e=="object"&&typeof e.id=="string"&&typeof e.label=="string"&&typeof e.workspaceKey=="string"&&typeof e.latestSessionId=="string"&&typeof e.latestSessionLabel=="string"&&typeof e.latestStartedAt=="string"&&Array.isArray(e.hosts)&&Array.isArray(e.statuses)&&Array.isArray(e.signals))}function jI(e){return!!(e&&typeof e=="object"&&ua(e.context)&&typeof e.currentTruth?.summary=="string"&&Array.isArray(e.currentTruth?.activeBlockers)&&Array.isArray(e.currentTruth?.openQuestions)&&Array.isArray(e.activeDecisions)&&Array.isArray(e.supersededDecisions)&&Array.isArray(e.sessions))}function RI(e){return!!(e&&typeof e=="object"&&(e.kind==="existing-context"||e.kind==="new-context")&&typeof e.label=="string"&&typeof e.workspaceKey=="string"&&Array.isArray(e.reasons)&&Array.isArray(e.sessionIds))}function LI(e){return!!(e&&typeof e=="object"&&(e.mode==="linked"||e.mode==="preferred"||e.mode==="suggested"||e.mode==="none")&&Array.isArray(e.candidates)&&e.candidates.every(RI)&&(e.currentContext===null||ua(e.currentContext))&&(e.briefing===null||jI(e.briefing)))}function FI(e){return!!(e&&typeof e=="object"&&Array.isArray(e.contexts)&&e.contexts.every(ua)&&typeof e.total=="number")}function MI(e){return!!(e&&typeof e=="object"&&typeof e.action=="string"&&Array.isArray(e.affectedSessionIds))}function _t(e){if(!e)return m("common.notAvailable");try{return new Date(e).toLocaleString(XS())}catch{return e}}function kt(e,t,i=`${t}s`){return`${e} ${e===1?t:i}`}function fl(e,t=3){const i=e.replace(/\\/g,"/"),r=i.split("/").filter(Boolean);return r.length<=t?e:`${i.startsWith("/")?"/":""}.../${r.slice(-t).join("/")}`}function BI(e,t=document,i=window,r=n=>EI(n,t,i)){let n=null,o=null,s=0,a=0,l=0,u=0,c=0,p=0,f=0,g=0,z=0,N=null,G=null,ge=null,L=null,C=null,F=[],fe=[],ur=[],Zn=[],ca=[],da=[],cr=null,dr=null,mr=null,pr=null,fr=null,hr=null,Ze=null,He=null,Ce=[];const gt=new Map;function oh(h){gt.set(h,(gt.get(h)??0)+1)}function sh(h){const b=(gt.get(h)??0)-1;if(b<=0){gt.delete(h);return}gt.set(h,b)}function ah(h){return(gt.get(h)??0)>0}function bt(h){const b=t.getElementById("error");b&&(b.innerHTML=aI(h))}function Un(h){const b=t.getElementById("error");b&&(b.innerHTML=lI(h))}function je(h,b){const k=t.getElementById(h);k&&(k.innerHTML=b)}function vr(h,b,k){if(vt(h))return h;const S=Math.max(k,Hn),Z=k<b;return{total:b,offset:0,limit:S,returned:k,hasMore:Z,nextOffset:Z?k:null}}function le(h,b,k){const S=t.getElementById(h);if(!S)return;const Z=!!b?.hasMore;S.hidden=!Z&&!k.loading,S.disabled=!Z||k.loading,S.textContent=k.loading?k.loadingLabel:k.idleLabel}function ma(h,b){F=h,cr=b,je("messages",zI(h)),le("load-more-messages",b,{loading:!1,idleLabel:m("sessionDetail.loadMoreConversation"),loadingLabel:m("session.detail.loading.conversation")})}function pa(h,b){ur=h,mr=b,je("timeline",TI(h)),le("load-more-timeline",b,{loading:!1,idleLabel:m("sessionDetail.loadMoreSteps"),loadingLabel:m("session.detail.loading.steps")})}function fa(h,b){fe=h,dr=b,je("trend-context",wI(h,_t)),le("load-more-session-trends",b,{loading:!1,idleLabel:m("sessionDetail.loadMoreRelatedWork"),loadingLabel:m("session.detail.loading.relatedWork")})}function gr(h,b){Zn=h,pr=b,je("artifacts",PI(h)),le("load-more-artifacts",b,{loading:!1,idleLabel:m("sessionDetail.loadMoreSupporting"),loadingLabel:m("session.detail.loading.supporting")})}function br(h,b){ca=h,fr=b,je("narratives",OI(h)),le("load-more-narratives",b,{loading:!1,idleLabel:m("sessionDetail.loadMoreNarratives"),loadingLabel:m("session.detail.loading.summaries")})}function yr(h,b){da=h,hr=b,je("decisions",NI(h)),le("load-more-decisions",b,{loading:!1,idleLabel:m("sessionDetail.loadMoreDecisions"),loadingLabel:m("session.detail.loading.decisions")})}function Cn(h){const b=t.getElementById("context-target-select"),k=t.getElementById("move-context-button"),S=t.getElementById("set-active-context-button");if(!b)return;const Z=h??He?.context.id??Ce[0]?.id??"";b.innerHTML=Ce.length===0?`<option value="">${_(m("session.detail.context.none"))}</option>`:Ce.map(oe=>{const _r=oe.id===Z?" selected":"";return`<option value="${_(oe.id)}"${_r}>${_(oe.label)} · ${_(fl(oe.workspaceKey))}</option>`}).join(""),b.disabled=Ce.length===0,k&&(k.disabled=!n||Ce.length===0||!b.value),S&&(S.disabled=!n||Ce.length===0||!b.value)}function An(){const h=t.getElementById("context-summary"),b=t.getElementById("context-candidates-summary"),k=t.getElementById("context-current"),S=t.getElementById("context-candidates");if(!h||!b||!k||!S)return;if(!n){h.textContent=m("session.detail.context.openRecord"),k.innerHTML=`<li class="muted">${_(m("sessionDetail.noConfirmedTopic"))}</li>`,b.textContent=m("session.detail.context.confirmationRequired"),S.innerHTML=`<li class="muted">${_(m("session.detail.context.noOtherTopics"))}</li>`,Cn(null);return}if(!Ze){h.textContent=m("session.detail.context.checking"),k.innerHTML=`<li class="muted">${_(m("session.detail.context.loadingConfirmed"))}</li>`,b.textContent=m("session.detail.context.loadingCandidatesSummary"),S.innerHTML=`<li class="muted">${_(m("session.detail.context.loadingCandidates"))}</li>`,Cn(null);return}He?(h.textContent=m("session.detail.context.alreadyLinked",{label:He.context.label}),k.innerHTML=SI(He,_t)):(h.textContent=Ze.mode==="suggested"?m("session.detail.context.reviewSuggestions"):m("session.detail.context.notLinked"),k.innerHTML=`<li class="muted">${_(m("sessionDetail.noConfirmedTopic"))}</li>`);const Z=Ze.candidates.length;b.textContent=Z===0?m("session.detail.context.noSuggestions"):m("session.detail.context.suggestionCount",{count:Z}),S.innerHTML=II(Ze.candidates),Cn()}function lh(){z+=1,Ze=null,He=null,Ce=[],An()}async function $r(h,b){z+=1;const k=z;Ze=null,He=null,Ce=[],An();try{const[S,Z]=await Promise.all([e.callServerTool({name:"resolve-context",arguments:{sessionId:h}}),e.callServerTool({name:"list-contexts",arguments:{}})]);if(k!==z||h!==n)return;if(!LI(S.structuredContent))throw new Error(m("session.detail.error.invalidContextResolution"));if(!FI(Z.structuredContent))throw new Error(m("session.detail.error.invalidContextList"));Ze=S.structuredContent,He=Ze.mode==="linked"||Ze.mode==="preferred"?Ze.briefing:null,Ce=Z.structuredContent.contexts,An(),b?.selectedContextId&&Cn(b.selectedContextId)}catch(S){throw k===z&&h===n&&(Ze={mode:"none",sessionId:h,cwd:L,confirmationRequired:!0,recommendedAction:"none",linkedContextId:null,currentContext:null,briefing:null,candidates:[]},He=null,Ce=[],An()),S}}function Mt(h){const b=t.getElementById("scope-export-button");if(!b)return;const k=ge??h;b.disabled=!h||ge!==null,b.textContent=m(k&&ge?k.groupBy==="family"?"session.detail.scope.exportingBroader":"session.detail.scope.exportingPickup":h?h.groupBy==="family"?"session.detail.scope.exportBroader":"session.detail.scope.exportPickup":"sessionDetail.pickupExport"),b.title=h?"":m("session.detail.scope.loadFirst")}function ha(h){N=null,G=null;const b=t.getElementById("scope-handoff-summary");b&&(b.textContent=m("sessionDetail.pickupNote.summary")),je("scope-handoff-results",`<li class="muted">${_(m("session.detail.scope.none"))}</li>`),Mt(null)}function va(h){g+=1,ha()}function ga(h){N=h.scope,G=h;const b=t.getElementById("scope-handoff-summary");b&&(b.textContent=h.summaryText),je("scope-handoff-results",h.listHtml),Mt(h.scope)}function uh(h,b){ga({scope:b,summaryText:m("session.detail.scope.summaryText",{group:b.groupBy==="family"?m("session.dashboard.trends.group.family"):m("session.dashboard.trends.group.issue"),label:b.label,headline:h.summary.headline}),listHtml:xI({blockers:h.blockers,followUps:h.followUps,recentSessions:h.recentSessions},_t)})}async function ch(h){g+=1;const b=g,k=G,S=t.getElementById("scope-handoff-summary");S&&(S.textContent=m("session.detail.scope.loadingFor",{label:h.label})),je("scope-handoff-results",`<li class="muted">${_(m("session.detail.scope.loading"))}</li>`),Mt(null);try{const Z=await e.callServerTool({name:"get-history-handoff",arguments:{issueKey:h.issueKey,groupBy:h.groupBy}});if(b!==g)return;if(!ZI(Z.structuredContent))throw new Error(m("session.detail.error.invalidScope"));uh(Z.structuredContent,h)}catch(Z){throw b===g&&(k?ga(k):ha()),Z}}async function dh(){const h=N;if(!h)throw new Error(m("session.detail.scope.loadFirst"));ge=h,Mt(N);try{const k=(await e.callServerTool({name:"export-sessions",arguments:{issueKey:h.issueKey,groupBy:h.groupBy,outputMode:"base64"}})).structuredContent;if(!k?.base64Data||!k.filename)throw new Error(m("session.export.noArchive"));r({filename:k.filename,base64Data:k.base64Data,mimeType:"application/zip"}),Un(m("session.detail.scope.exportSuccess",{kind:h.groupBy==="family"?m("session.dashboard.trends.group.family"):m("session.dashboard.trends.group.issue"),filename:k.filename}))}finally{ge=null,Mt(N)}}function ba(h){n=h.session.id,o=h.session.status,L=h.session.cwd,C=h.session.label,a+=1,l+=1,u+=1,c+=1,p+=1,f+=1;const b=t.getElementById("error");b&&(b.innerHTML="");const k=t.getElementById("subtitle");k&&(k.textContent=m("session.detail.subtitle",{label:tt(h.session.label,h.session.host),status:Ke(h.session.status),host:Fe(h.session.host),startedAt:_t(h.session.startedAt)}));const S=t.getElementById("meta");if(S){const oe=h.trendContext.summary.activeBlockers??0,_r=h.trendContext.summary.regressedTrends??0;S.innerHTML=DI([{label:m("session.detail.meta.aiHelper"),value:Fe(h.session.host)},{label:m("session.detail.meta.currentState"),value:Ke(h.session.status)},{label:m("session.detail.meta.started"),value:_t(h.session.startedAt)},{label:m("session.detail.meta.finished"),value:_t(h.session.endedAt)},{label:m("session.detail.meta.conversation"),value:kt(h.messageSummary.total,m("common.message"),m("common.messages"))},{label:m("session.detail.meta.timeline"),value:kt(h.timelineSummary.total,m("common.step"),m("common.steps"))},{label:m("session.detail.meta.supporting"),value:kt(h.artifactSummary.total,m("common.item"),m("common.items"))},{label:m("session.detail.meta.related"),value:h.trendContext.summary.totalTrends===0?m("session.detail.meta.relatedNone"):m("session.detail.meta.relatedSummary",{patterns:kt(h.trendContext.summary.totalTrends,m("common.relatedPattern"),m("common.relatedPatterns")),blockers:kt(oe,m("common.activeBlocker"),m("common.activeBlockers")),regressed:kt(_r,m("common.returnedProblem"),m("common.returnedProblems"))})},{label:m("session.detail.meta.overview"),value:h.hasNarratives?m("session.detail.meta.ready"):m("session.detail.meta.needsRefresh")},{label:m("session.detail.meta.workedIn"),value:fl(h.session.cwd),note:m("session.detail.meta.pathNote"),valueClassName:"path-text",title:h.session.cwd}])}ma(h.messages,vr(h.messagePage,h.messageSummary.total,h.messages.length)),pa(h.timeline,vr(h.timelinePage,h.timelineSummary.total,h.timeline.length)),fa(h.trendContext.trends,vr(h.trendContext.page,h.trendContext.summary.totalTrends,h.trendContext.trends.length)),va(),lh(),gr([],null),br([],null),yr([],null);const Z=t.getElementById("reingest-button");if(Z){const oe=ul(h.session.status);Z.disabled=!oe,Z.textContent=m(oe?"sessionDetail.refreshOverview":"session.reingest.inProgress"),Z.title=oe?"":m("session.reingest.whenStopped")}$r(h.session.id).catch(oe=>{bt(oe instanceof Error?oe.message:m("session.detail.context.refreshError"))})}async function ya(h){s+=1;const b=s;oh(h);try{const k=await e.callServerTool({name:"get-session",arguments:{id:h}});if(b!==s)return;if(!cl(k.structuredContent))throw new Error(m("session.detail.error.invalidDetail"));ba(k.structuredContent)}finally{sh(h)}}async function mh(){const h=n,b=cr;if(!h||!b?.hasMore||b.nextOffset===null)return;a+=1;const k=a;le("load-more-messages",b,{loading:!0,idleLabel:m("sessionDetail.loadMoreConversation"),loadingLabel:m("session.detail.loading.conversation")});try{const S=await e.callServerTool({name:"get-session-messages",arguments:{id:h,limit:b.limit,offset:b.nextOffset}});if(k!==a||h!==n)return;if(!UI(S.structuredContent))throw new Error(m("session.detail.error.invalidMessages"));ma([...F,...S.structuredContent.messages],S.structuredContent.page)}finally{k===a&&h===n&&le("load-more-messages",cr,{loading:!1,idleLabel:m("sessionDetail.loadMoreConversation"),loadingLabel:m("session.detail.loading.conversation")})}}async function ph(){const h=n,b=mr;if(!h||!b?.hasMore||b.nextOffset===null)return;u+=1;const k=u;le("load-more-timeline",b,{loading:!0,idleLabel:m("sessionDetail.loadMoreSteps"),loadingLabel:m("session.detail.loading.steps")});try{const S=await e.callServerTool({name:"get-session-timeline",arguments:{id:h,limit:b.limit,offset:b.nextOffset}});if(k!==u||h!==n)return;if(!AI(S.structuredContent))throw new Error(m("session.detail.error.invalidTimeline"));pa([...ur,...S.structuredContent.timeline],S.structuredContent.page)}finally{k===u&&h===n&&le("load-more-timeline",mr,{loading:!1,idleLabel:m("sessionDetail.loadMoreSteps"),loadingLabel:m("session.detail.loading.steps")})}}async function fh(){const h=n,b=dr;if(!h||!b?.hasMore||b.nextOffset===null)return;l+=1;const k=l;le("load-more-session-trends",b,{loading:!0,idleLabel:m("sessionDetail.loadMoreRelatedWork"),loadingLabel:m("session.detail.loading.relatedWork")});try{const S=await e.callServerTool({name:"get-session-trends",arguments:{id:h,limit:b.limit,offset:b.nextOffset}});if(k!==l||h!==n)return;if(!CI(S.structuredContent))throw new Error(m("session.detail.error.invalidTrends"));fa([...fe,...S.structuredContent.trends],S.structuredContent.page)}finally{k===l&&h===n&&le("load-more-session-trends",dr,{loading:!1,idleLabel:m("sessionDetail.loadMoreRelatedWork"),loadingLabel:m("session.detail.loading.relatedWork")})}}async function hh(){const h=n,b=pr;if(!h||!b?.hasMore||b.nextOffset===null)return;c+=1;const k=c;le("load-more-artifacts",b,{loading:!0,idleLabel:m("sessionDetail.loadMoreSupporting"),loadingLabel:m("session.detail.loading.supporting")});try{const S=await e.callServerTool({name:"get-session-artifacts",arguments:{id:h,limit:b.limit,offset:b.nextOffset}});if(k!==c||h!==n)return;if(!dl(S.structuredContent))throw new Error(m("session.detail.error.invalidArtifacts"));gr([...Zn,...S.structuredContent.artifacts],S.structuredContent.page)}finally{k===c&&h===n&&le("load-more-artifacts",pr,{loading:!1,idleLabel:m("sessionDetail.loadMoreSupporting"),loadingLabel:m("session.detail.loading.supporting")})}}async function vh(){const h=n,b=fr;if(!h||!b?.hasMore||b.nextOffset===null)return;p+=1;const k=p;le("load-more-narratives",b,{loading:!0,idleLabel:m("sessionDetail.loadMoreNarratives"),loadingLabel:m("session.detail.loading.summaries")});try{const S=await e.callServerTool({name:"get-session-narrative",arguments:{id:h,limit:b.limit,offset:b.nextOffset}});if(k!==p||h!==n)return;if(!ml(S.structuredContent))throw new Error(m("session.detail.error.invalidNarratives"));br([...ca,...S.structuredContent.narratives],S.structuredContent.page)}finally{k===p&&h===n&&le("load-more-narratives",fr,{loading:!1,idleLabel:m("sessionDetail.loadMoreNarratives"),loadingLabel:m("session.detail.loading.summaries")})}}async function gh(){const h=n,b=hr;if(!h||!b?.hasMore||b.nextOffset===null)return;f+=1;const k=f;le("load-more-decisions",b,{loading:!0,idleLabel:m("sessionDetail.loadMoreDecisions"),loadingLabel:m("session.detail.loading.decisions")});try{const S=await e.callServerTool({name:"get-session-decisions",arguments:{id:h,limit:b.limit,offset:b.nextOffset}});if(k!==f||h!==n)return;if(!pl(S.structuredContent))throw new Error(m("session.detail.error.invalidDecisions"));yr([...da,...S.structuredContent.decisions],S.structuredContent.page)}finally{k===f&&h===n&&le("load-more-decisions",hr,{loading:!1,idleLabel:m("sessionDetail.loadMoreDecisions"),loadingLabel:m("session.detail.loading.decisions")})}}function jn(){const b=t.getElementById("context-target-select")?.value?.trim();return b||null}async function yt(h,b,k){const S=n;if(!S)throw new Error(m("session.detail.error.noSession"));const Z=await e.callServerTool(h);if(!MI(Z.structuredContent))throw new Error(m("session.detail.error.invalidContextMutation"));S===n&&(await $r(S,k),Un(b(Z.structuredContent)))}va();const $a=async h=>{const b=h.target?.closest("[data-action]");if(!b)return;const k=b.getAttribute("data-action");try{if(k==="detail"){const S=b.getAttribute("data-session-id");if(!S)return;await ya(S);return}if(k==="load-scope-handoff"){const S=b.getAttribute("data-issue-key"),Z=b.getAttribute("data-group-by"),oe=b.getAttribute("data-scope-label");if(!S||Z!=="issue"&&Z!=="family"||!oe)return;await ch({issueKey:S,groupBy:Z,label:oe});return}if(k==="export-scope"){await dh();return}if(k==="load-more-messages"){await mh();return}if(k==="load-more-session-trends"){await fh();return}if(k==="load-more-timeline"){await ph();return}if(k==="load-more-artifacts"){await hh();return}if(k==="load-more-narratives"){await vh();return}if(k==="load-more-decisions"){await gh();return}if(k==="refresh-context"){if(!n)return;await $r(n,{selectedContextId:jn()}),Un(m("session.detail.context.refreshed"));return}if(k==="confirm-context-candidate"){const S=b.getAttribute("data-context-id");if(!S||!n)return;await yt({name:"confirm-context-link",arguments:{sessionIds:[n],contextId:S}},Z=>m("session.detail.context.linked",{label:Z.context?.label??Z.contextId??S??""}),{selectedContextId:S});return}if(k==="confirm-context-new"){if(!n)return;const S=b.getAttribute("data-context-label")?.trim(),Z=[...new Set((b.getAttribute("data-session-ids")??"").split(",").map(oe=>oe.trim()).filter(Boolean).concat(n))];await yt({name:"confirm-context-link",arguments:{sessionIds:Z,label:S||C||void 0}},oe=>m("session.detail.context.createdFromRelated",{label:oe.context?.label??S??m("session.detail.context.newContext")}),{selectedContextId:null});return}if(k==="reject-context-candidate"){const S=b.getAttribute("data-context-id");if(!S||!n)return;await yt({name:"reject-context-link",arguments:{sessionId:n,contextId:S}},()=>m("session.detail.context.rejected",{label:S}),{selectedContextId:jn()});return}if(k==="move-to-selected-context"){const S=jn();if(!S||!n)return;await yt({name:"move-session-context",arguments:{sessionId:n,contextId:S}},Z=>m("session.detail.context.moved",{label:Z.context?.label??Z.contextId??S??""}),{selectedContextId:S});return}if(k==="create-context-from-session"){if(!n)return;const S=t.getElementById("context-create-label"),Z=S?.value.trim()||void 0;await yt({name:"move-session-context",arguments:{sessionId:n,label:Z}},oe=>m("session.detail.context.moved",{label:oe.context?.label??Z??m("session.detail.context.newContext")})),S&&(S.value="");return}if(k==="set-selected-context-active"){const S=jn();if(!S)return;await yt({name:"set-active-context",arguments:{contextId:S,cwd:L??void 0}},Z=>m("session.detail.context.preferred",{label:Z.context?.label??Z.contextId??S??""}),{selectedContextId:S});return}}catch(S){bt(S instanceof Error?S.message:m("session.detail.error.action"))}};async function Bt(h){if(!n){bt(m("session.detail.error.noSession"));return}try{await h(n)}catch(b){bt(b instanceof Error?b.message:m("session.detail.error.sessionAction"))}}return i.reingestSession=async()=>{if(!ul(o??"")){bt(m("session.reingest.notReady"));return}await Bt(async h=>{await e.callServerTool({name:"reingest-session",arguments:{id:h}}),await ya(h)})},i.exportSessionBundle=async()=>{await Bt(async h=>{const k=(await e.callServerTool({name:"export-sessions",arguments:{sessionIds:[h],outputMode:"base64"}})).structuredContent;if(!k?.base64Data||!k.filename)throw new Error(m("session.export.noArchive"));r({filename:k.filename,base64Data:k.base64Data,mimeType:"application/zip"}),Un(m("session.detail.export.success",{filename:k.filename}))})},i.loadArtifacts=async()=>{await Bt(async h=>{c+=1;const b=c,k=await e.callServerTool({name:"get-session-artifacts",arguments:{id:h,limit:Hn}});if(!(b!==c||h!==n)){if(!dl(k.structuredContent))throw new Error(m("session.detail.error.invalidArtifacts"));gr(k.structuredContent.artifacts,k.structuredContent.page)}})},i.loadNarratives=async()=>{await Bt(async h=>{p+=1;const b=p,k=await e.callServerTool({name:"get-session-narrative",arguments:{id:h,limit:Hn}});if(!(b!==p||h!==n)){if(!ml(k.structuredContent))throw new Error(m("session.detail.error.invalidNarratives"));br(k.structuredContent.narratives,k.structuredContent.page)}})},i.loadDecisions=async()=>{await Bt(async h=>{f+=1;const b=f,k=await e.callServerTool({name:"get-session-decisions",arguments:{id:h,limit:Hn}});if(!(b!==f||h!==n)){if(!pl(k.structuredContent))throw new Error(m("session.detail.error.invalidDecisions"));yr(k.structuredContent.decisions,k.structuredContent.page)}})},e.ontoolresult=h=>{cl(h.structuredContent)&&(ah(h.structuredContent.session.id)||(s+=1,ba(h.structuredContent)))},e.connect().catch(h=>{bt(h instanceof Error?h.message:m("session.detail.error.connect"))}),t.addEventListener("click",$a),()=>{t.removeEventListener("click",$a),delete i.reingestSession,delete i.exportSessionBundle,delete i.loadArtifacts,delete i.loadNarratives,delete i.loadDecisions}}const qI=new HS({name:"Footprint Session Detail",version:"1.0.0"});QS();BI(qI);</script>
181
- <style rel="stylesheet" crossorigin>@import"https://cdn.jsdelivr.net/npm/geist@1/dist/fonts/geist-sans/style.css";@import"https://cdn.jsdelivr.net/npm/geist@1/dist/fonts/geist-mono/style.css";:root{color-scheme:light;--ds-gray-100: #FAFAFA;--ds-gray-200: #EAEAEA;--ds-gray-300: #C9C9C9;--ds-gray-400: #999999;--ds-gray-500: #888888;--ds-gray-600: #666666;--ds-gray-700: #444444;--ds-gray-800: #333333;--ds-gray-900: #1A1A1A;--ds-gray-1000: #000000;--ds-background-100: #FFFFFF;--ds-background-200: #FAFAFA;--ds-blue-100: #EBF5FF;--ds-blue-700: #0070F3;--ds-blue-800: #0060D1;--ds-red-100: #FFF0F0;--ds-red-700: #EE0000;--ds-red-800: #CC0000;--ds-green-100: #EFFBF4;--ds-green-700: #0A7B3E;--ds-amber-100: #FFF7E0;--ds-amber-700: #AB6400;--ds-shadow-sm: 0 1px 2px rgba(0,0,0,.04);--ds-shadow-md: 0 2px 8px rgba(0,0,0,.06);--ds-shadow-lg: 0 8px 30px rgba(0,0,0,.08);--ds-radius-sm: 6px;--ds-radius-md: 8px;--ds-radius-lg: 12px;--ds-radius-xl: 12px;--ds-radius-round: 999px;--sp-xs: .25rem;--sp-sm: .5rem;--sp-md: 1rem;--sp-lg: 1.25rem;--sp-xl: 2rem;--sp-2xl: 3rem;--sp-3xl: 4rem;--bg: var(--ds-background-200);--bg-soft: var(--ds-gray-100);--surface: var(--ds-background-100);--surface-strong: var(--ds-background-100);--surface-muted: rgba(255,255,255,.75);--ink: var(--ds-gray-1000);--ink-soft: var(--ds-gray-700);--muted: var(--ds-gray-600);--muted-soft: var(--ds-gray-500);--line: var(--ds-gray-200);--line-strong: var(--ds-gray-300);--brand: var(--ds-blue-700);--brand-strong: var(--ds-blue-800);--brand-soft: var(--ds-blue-100);--brand-glow: rgba(0,112,243,.18);--accent: var(--ds-amber-700);--accent-soft: var(--ds-amber-100);--danger: var(--ds-red-700);--danger-soft: var(--ds-red-100);--success: var(--ds-green-700);--success-soft: var(--ds-green-100);--info: var(--ds-blue-700);--info-soft: var(--ds-blue-100);--shadow: var(--ds-shadow-md);--shadow-soft: var(--ds-shadow-sm);--shadow-lg: var(--ds-shadow-lg);--radius-xl: var(--ds-radius-xl);--radius-lg: var(--ds-radius-lg);--radius-md: var(--ds-radius-md);--radius-sm: var(--ds-radius-sm)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;padding:var(--sp-2xl);font-family:Geist Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans,sans-serif;font-size:.875rem;line-height:1.6;color:var(--ds-gray-900);background:var(--ds-background-200);overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{border:0}.shell,.container{width:min(100%,1200px);margin:0 auto}.shell,.container{display:grid;gap:var(--sp-xl)}h1,h2,h3{margin:0;font-family:Geist Sans,-apple-system,sans-serif;letter-spacing:-.02em;color:var(--ds-gray-1000)}h2{font-size:1.25rem;font-weight:600}h3{font-size:1.0625rem;font-weight:600}.page-hero,.page-summary,.card,.stat-card,.recent-activity,.timeline-section,.tag-controls,.content-section,.metadata-card,.export-section,.file-info,.git-info,.modal-content{background:var(--ds-background-100);border:1px solid var(--ds-gray-200);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-sm)}.card:hover,.recent-activity:hover,.timeline-section:hover,.content-section:hover,.export-section:hover{border-color:var(--ds-gray-300)}.page-hero{padding:var(--sp-2xl)}.page-hero-toolbar{display:flex;align-items:center;gap:var(--sp-md);flex-wrap:wrap;margin-bottom:var(--sp-lg)}.page-kicker,.demo-banner{display:inline-flex;align-items:center;gap:.375rem;width:fit-content;padding:.375rem .75rem;border-radius:var(--ds-radius-round);background:var(--ds-gray-100);color:var(--ds-gray-600);border:1px solid var(--ds-gray-200);font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.demo-banner{background:var(--ds-blue-100);color:var(--ds-blue-700);border-color:transparent}.page-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.locale-switch{display:inline-flex;align-items:center;gap:var(--sp-sm);padding:0;border-radius:0;background:transparent;border:none;margin-left:auto}.locale-switch label{margin:0;font-size:.6875rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--ds-gray-500);white-space:nowrap}.locale-switch select{height:2rem;min-width:120px;padding:0 1.75rem 0 .625rem;font-size:.75rem;border-radius:var(--ds-radius-md)}.page-title{margin:0 0 var(--sp-sm);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-family:Geist Sans,-apple-system,sans-serif;font-size:clamp(1.75rem,3.5vw,2.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em;color:var(--ds-gray-1000)}.page-title .icon{color:var(--ds-gray-500)}.page-subtitle,.summary{margin:0;font-size:.9375rem;color:var(--ds-gray-600);line-height:1.6}.page-note{margin:var(--sp-lg) 0 0;padding:var(--sp-lg);border-radius:var(--ds-radius-md);background:var(--ds-gray-100);color:var(--ds-gray-600);line-height:1.65;font-size:.875rem}.page-note strong,.summary strong{color:var(--ds-gray-1000)}.muted,.card-subtitle,.meta-note,.export-info,.search-results-info,.file-stats,.last-updated,.metadata-help{color:var(--ds-gray-600);line-height:1.6}.card-subtitle{margin:.25rem 0 0;font-size:.875rem}.card,.content-section,.export-section,.recent-activity,.timeline-section,.tag-controls{overflow:hidden;min-width:0}.card{padding:0}.meta .card{padding:var(--sp-lg)}.card-header,.content-header,.section-header,.timeline-header,.activity-header,.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg);padding:var(--sp-xl) var(--sp-xl) 0}.card-header+table,.card-header+.card-body,.content-header+.content-body,.section-header+.section-body,.activity-header+.activity-list,.timeline-header+.timeline-container{margin-top:var(--sp-md)}.card-body,.content-body,.section-body,.modal-body{padding:var(--sp-xl)}.card-body-flush{padding:var(--sp-md) 0 0}.card-section{padding:var(--sp-xl);border-top:1px solid var(--ds-gray-200)}.card-footer,.panel-actions{padding:0 var(--sp-xl) var(--sp-xl)}.dashboard-grid,.split,.stats,.meta,.metadata-grid,.filters,.options-grid{display:grid;gap:var(--sp-xl)}.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.wide-card{grid-column:span 3}.split{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.meta,.metadata-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.filters{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:end}.filters>.actions{grid-column:1 / -1}.stat-card,.metadata-card{padding:var(--sp-xl);position:relative;overflow:hidden;transition:border-color .15s ease}.stat-card:hover{border-color:var(--ds-gray-300)}.stat-value{font-family:Geist Sans,-apple-system,sans-serif;font-size:clamp(1.5rem,2.5vw,2rem);font-weight:700;line-height:1.2;color:var(--ds-gray-1000);overflow-wrap:anywhere;letter-spacing:-.02em}.meta-value,.metadata-value{font-family:Geist Sans,-apple-system,sans-serif;font-size:.9375rem;font-weight:500;line-height:1.5;color:var(--ds-gray-1000);overflow-wrap:anywhere}.stat-label,.metadata-label,.meta strong,.field label,.option-label,.tag-filter-label{display:block;margin-bottom:var(--sp-sm);font-size:.6875rem;font-weight:600;color:var(--ds-gray-500);text-transform:uppercase;letter-spacing:.08em}.meta .card strong{display:block}.field{display:grid;gap:var(--sp-sm);min-width:0}.field input,.search-input,input[type=text],select{width:100%;height:2.5rem;padding:0 .75rem;border:1px solid var(--ds-gray-300);border-radius:var(--ds-radius-md);background:var(--ds-background-100);color:var(--ds-gray-1000);font-size:.875rem;transition:border-color .15s ease,box-shadow .15s ease}select{appearance:none;font-size:.75rem;padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23666666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;background-size:1rem;cursor:pointer}.field input::placeholder,.field select::placeholder,.search-input::placeholder,input[type=text]::placeholder{color:var(--ds-gray-400)}.field input:focus,.field select:focus,.search-input:focus,input[type=text]:focus,select:focus{outline:none;border-color:var(--ds-gray-1000);box-shadow:0 0 0 1px var(--ds-gray-1000)}.option-group{display:grid;gap:var(--sp-md)}.checkbox-group{display:flex;align-items:center;gap:var(--sp-sm)}.actions,.timeline-controls,.header-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-sm)}.actions{row-gap:var(--sp-sm)}button,.btn,.batch-btn,.timeline-btn,.manage-tags-btn,.clear-filters-btn,.filter-mode-btn,.back-btn,.modal-close{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;height:2.25rem;padding:0 .875rem;border-radius:var(--ds-radius-md);border:1px solid var(--ds-gray-200);background:var(--ds-background-100);color:var(--ds-gray-900);cursor:pointer;font-size:.8125rem;font-weight:500;line-height:1;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease}button:hover,.btn:hover,.batch-btn:hover,.timeline-btn:hover,.manage-tags-btn:hover,.clear-filters-btn:hover,.filter-mode-btn:hover,.back-btn:hover,.modal-close:hover{background:var(--ds-gray-100);border-color:var(--ds-gray-1000)}.btn-primary,.batch-btn.export,button[type=submit]{background:var(--ds-gray-1000);color:#fff;border-color:var(--ds-gray-1000)}.btn-primary:hover,.batch-btn.export:hover,button[type=submit]:hover{background:var(--ds-gray-800);border-color:var(--ds-gray-800)}button.secondary,.btn-secondary,.timeline-btn,.manage-tags-btn,.clear-filters-btn,.filter-mode-btn,.back-btn{border-color:var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-900)}button.secondary:hover,.btn-secondary:hover,.timeline-btn:hover,.manage-tags-btn:hover,.clear-filters-btn:hover,.filter-mode-btn:hover,.back-btn:hover{background:var(--ds-gray-100);border-color:var(--ds-gray-1000)}.timeline-btn.active,.filter-mode-btn.active{background:var(--ds-gray-1000);color:#fff;border-color:var(--ds-gray-1000)}.batch-btn.delete{background:var(--ds-red-700);border-color:var(--ds-red-700);color:#fff}.batch-btn.delete:hover{background:var(--ds-red-800);border-color:var(--ds-red-800)}button:disabled,.btn:disabled,.batch-btn:disabled,.timeline-btn:disabled,.manage-tags-btn:disabled,.clear-filters-btn:disabled,.filter-mode-btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{height:2rem;padding:0 .75rem;border-radius:var(--ds-radius-round);border:1px solid var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-700);cursor:pointer;font-size:.75rem;font-weight:500}.btn-sm.danger{border-color:transparent;background:var(--ds-red-100);color:var(--ds-red-700)}.hero-actions{display:flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap;margin-top:var(--sp-sm)}.pill,.tag,.activity-badge,.selection-counter{display:inline-flex;align-items:center;gap:.25rem;width:fit-content;padding:.125rem .5rem;border-radius:var(--ds-radius-round);background:var(--ds-gray-100);color:var(--ds-gray-800);border:1px solid var(--ds-gray-200);font-size:.6875rem;font-weight:500;line-height:1.6}.pill.completed{background:var(--ds-green-100);color:var(--ds-green-700);border-color:transparent}.pill.failed,.pill.interrupted{background:var(--ds-red-100);color:var(--ds-red-700);border-color:transparent}.pill.running,.activity-badge{background:var(--ds-blue-100);color:var(--ds-blue-700);border-color:transparent}.activity-badge.pulse{animation:pulseBadge 1.4s ease-in-out 2}@keyframes pulseBadge{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.status-dot{display:inline-block;width:.5rem;height:.5rem;border-radius:var(--ds-radius-round);background:var(--ds-blue-700);box-shadow:0 0 0 3px var(--ds-blue-100)}.status-dot.offline{background:var(--ds-red-700);box-shadow:0 0 0 3px var(--ds-red-100)}table{width:100%;border-collapse:collapse;min-width:0}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{min-width:680px}th,td{padding:.875rem 1rem;border-bottom:1px solid var(--ds-gray-200);text-align:left;vertical-align:top;overflow-wrap:anywhere}th{color:var(--ds-gray-500);font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em}td{font-size:.875rem;color:var(--ds-gray-900)}thead tr{background:var(--ds-gray-100)}tbody tr{transition:background .15s ease}tbody tr:hover{background:var(--ds-gray-100)}.checkbox-cell{width:3rem;text-align:center}.list,.activity-list,.plain-list,.tag-list{list-style:none;margin:0;padding:0}.list,.activity-list{display:grid;gap:var(--sp-lg)}.list{max-height:none;overflow:visible}.list li,.activity-item,.preview-item,.tag-item{padding:var(--sp-xl);border:1px solid var(--ds-gray-200);border-left:3px solid transparent;border-radius:var(--ds-radius-md);background:var(--ds-background-100);line-height:1.7;overflow-wrap:anywhere;transition:border-color .15s ease,background .15s ease}.list li:hover,.activity-item:hover,.preview-item:hover{border-left-color:var(--ds-gray-1000);background:var(--ds-gray-100)}.list li strong{display:block;margin-bottom:.5rem;font-size:.9375rem}.list li .pill,.list li .activity-badge{margin-bottom:.375rem}.list li .actions,.list li>div:last-child{margin-top:var(--sp-lg);padding-top:var(--sp-md);border-top:1px solid var(--ds-gray-200)}.activity-item{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg)}.activity-content{min-width:0}.activity-item.new-item{border-color:var(--ds-blue-100);border-left-color:var(--ds-blue-700)}.activity-title{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.activity-title-text,.section-title,.timeline-title,.modal-title{font-weight:600;color:var(--ds-gray-1000)}.activity-meta,.activity-time,.preview-meta,.export-info,.file-stats{color:var(--ds-gray-500);font-size:.8125rem;margin-top:.125rem}.search-bar{margin:0}.search-input-wrapper{position:relative;width:min(100%,520px)}.search-icon{position:absolute;left:.875rem;top:50%;transform:translateY(-50%);color:var(--ds-gray-400);pointer-events:none}.search-input{padding-left:2.5rem;padding-right:2.5rem}.search-clear{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);width:2rem;height:2rem;min-height:auto;padding:0;border-radius:var(--ds-radius-round);background:transparent;color:var(--ds-gray-500);border:none;box-shadow:none}.search-clear:hover{background:var(--ds-gray-100);border-color:transparent}.timeline-container{padding:var(--sp-xl);overflow-x:auto}.timeline{position:relative;min-width:760px;height:210px}.timeline-axis{position:absolute;left:0;right:0;bottom:2.375rem;height:2px;background:var(--ds-gray-200)}.timeline-point{position:absolute;bottom:1.875rem;width:.75rem;height:.75rem;border-radius:var(--ds-radius-round);background:var(--ds-blue-700);border:2px solid var(--ds-background-100);box-shadow:0 0 0 2px var(--ds-blue-100);transform:translate(-50%);cursor:pointer;transition:box-shadow .18s ease,transform .18s ease}.timeline-point:hover{transform:translate(-50%) scale(1.3);box-shadow:0 0 0 4px #0070f333}.timeline-point.multiple{background:var(--ds-amber-700);box-shadow:0 0 0 2px var(--ds-amber-100)}.timeline-label{position:absolute;bottom:0;transform:translate(-50%);color:var(--ds-gray-500);font-size:.75rem;white-space:nowrap}.timeline-tooltip{position:absolute;bottom:3.875rem;transform:translate(-50%);padding:var(--sp-md) var(--sp-lg);border-radius:var(--ds-radius-md);background:var(--ds-gray-1000);color:#fff;font-size:.75rem;line-height:1.5;display:none;box-shadow:var(--ds-shadow-lg);z-index:12}.timeline-tooltip:after{content:"";position:absolute;top:100%;left:50%;margin-left:-6px;border:6px solid transparent;border-top-color:var(--ds-gray-1000)}.batch-controls,.tag-controls-header,.tag-filters,.actions-between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.batch-controls,.tag-controls{padding:var(--sp-xl)}.tag-filters{justify-content:flex-start}#tag-filter-chips,.tag-list{display:flex;flex-wrap:wrap;gap:var(--sp-sm)}.tag-list{flex-direction:column}.tag-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;border-radius:var(--ds-radius-round);border:1px solid var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-800);font-size:.75rem;font-weight:500;transition:background .15s ease,border-color .15s ease}.tag-chip.clickable{cursor:pointer}.tag-chip.clickable:hover{border-color:var(--ds-gray-1000);background:var(--ds-gray-100)}.tag-chip.active{background:var(--ds-gray-1000);border-color:var(--ds-gray-1000);color:#fff}.tag-close{display:inline-grid;place-items:center;width:1rem;height:1rem;border-radius:var(--ds-radius-round);background:#fff3}.filter-mode{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.tag-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.tag-item-info,.tag-item-actions{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.tag-count{color:var(--ds-gray-500);font-size:.8125rem;font-weight:600}.modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:var(--sp-xl);background:#00000080;backdrop-filter:blur(4px);z-index:30}.modal.show{display:flex}.modal-content{width:min(100%,760px);max-height:min(82vh,860px);overflow:auto}.modal-close{width:2.25rem;height:2.25rem;min-height:auto;padding:0}.preview-area{border:2px dashed var(--ds-gray-300);border-radius:var(--ds-radius-lg);background:var(--ds-background-200);padding:var(--sp-xl)}.preview-content{display:none}.preview-content.active{display:block}.file-info{padding:var(--sp-lg) var(--sp-xl);background:var(--ds-background-100)}.file-name,.content-text,.value,.path-text,.preview-item code,code{font-family:Geist Mono,SF Mono,IBM Plex Mono,Consolas,Menlo,monospace}.content-body{max-height:620px;overflow-y:auto}.content-text{white-space:pre-wrap;font-size:.8125rem;line-height:1.7;color:var(--ds-gray-700)}.error,.success,.empty,.loading,.no-tags,.empty-activity{padding:var(--sp-lg);border-radius:var(--ds-radius-md);font-size:.8125rem}.error{background:var(--ds-red-100);color:var(--ds-red-700)}.success{background:var(--ds-green-100);color:var(--ds-green-700)}.empty,.loading,.no-tags,.empty-activity{background:var(--ds-blue-100);color:var(--ds-blue-700)}.highlight{background:#f59e0b26;border-radius:3px;padding:0 2px}.evidence-checkbox,.select-all-checkbox,input[type=checkbox],input[type=radio]{accent-color:var(--ds-gray-1000);width:1rem;height:1rem;cursor:pointer}.icon{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.icon-lg{width:1.2em;height:1.2em}.icon-xl{width:1.45em;height:1.45em}.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}.loading{position:relative;overflow:hidden}.loading:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.5) 50%,transparent 100%);animation:shimmer 1.8s ease-in-out infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.content-body a,.card-body a:not(.btn),.section-body a:not(.btn){color:var(--ds-blue-700);text-decoration:underline;text-underline-offset:2px;transition:color .15s ease}.content-body a:hover,.card-body a:not(.btn):hover,.section-body a:not(.btn):hover{color:var(--ds-blue-800)}@media(max-width:1100px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wide-card{grid-column:span 2}}@media(max-width:900px){body{padding:var(--sp-lg)}.page-title{font-size:clamp(1.5rem,7vw,2rem)}.timeline{min-width:580px}th,td{padding:.75rem}}@media(max-width:760px){body{padding:var(--sp-md)}.page-hero{padding:var(--sp-xl)}.page-hero-toolbar{flex-direction:column;align-items:flex-start}.locale-switch{width:100%;margin-left:0;justify-content:space-between}.locale-switch select{min-width:0;flex:1}.split,.stats,.meta,.metadata-grid,.filters,.options-grid,.dashboard-grid{grid-template-columns:1fr}.wide-card{grid-column:auto}.card{padding:var(--sp-lg)}.card-header,.content-header,.section-header,.timeline-header,.activity-header,.modal-header{padding:var(--sp-lg) var(--sp-lg) 0}.card-body,.content-body,.section-body,.modal-body{padding:var(--sp-lg)}.card-footer,.panel-actions{padding:0 var(--sp-lg) var(--sp-lg)}.actions,.timeline-controls,.header-actions,.hero-actions{flex-direction:column;align-items:stretch}.actions>button,.actions>.btn,.actions>.field,.timeline-controls>button,.hero-actions>button{width:100%}.table-scroll table{min-width:520px}.stat-card,.metadata-card,.batch-controls,.tag-controls{padding:var(--sp-lg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}</style>
181
+ <style rel="stylesheet" crossorigin>@import"https://cdn.jsdelivr.net/npm/geist@1/dist/fonts/geist-sans/style.css";@import"https://cdn.jsdelivr.net/npm/geist@1/dist/fonts/geist-mono/style.css";:root{color-scheme:dark;--ds-gray-100: #1a1a1a;--ds-gray-200: rgba(255,255,255,.08);--ds-gray-300: rgba(255,255,255,.14);--ds-gray-400: #555555;--ds-gray-500: #888888;--ds-gray-600: #999999;--ds-gray-700: #b0b0b0;--ds-gray-800: #cccccc;--ds-gray-900: #e0e0e0;--ds-gray-1000: #ededed;--ds-background-100: #161616;--ds-background-200: #0a0a0a;--ds-green-100: rgba(62,207,142,.12);--ds-green-700: #3ecf8e;--ds-green-800: #2bb573;--ds-blue-100: rgba(56,189,248,.1);--ds-blue-700: #38bdf8;--ds-blue-800: #0ea5e9;--ds-red-100: rgba(248,113,113,.1);--ds-red-700: #f87171;--ds-red-800: #ef4444;--ds-amber-100: rgba(251,191,36,.1);--ds-amber-700: #fbbf24;--ds-shadow-sm: 0 1px 3px rgba(0,0,0,.3);--ds-shadow-md: 0 4px 12px rgba(0,0,0,.4);--ds-shadow-lg: 0 8px 30px rgba(0,0,0,.5);--ds-radius-sm: 6px;--ds-radius-md: 8px;--ds-radius-lg: 12px;--ds-radius-xl: 12px;--ds-radius-round: 999px;--sp-xs: .25rem;--sp-sm: .5rem;--sp-md: 1rem;--sp-lg: 1.25rem;--sp-xl: 2rem;--sp-2xl: 3rem;--sp-3xl: 4rem;--bg: var(--ds-background-200);--bg-soft: var(--ds-gray-100);--surface: var(--ds-background-100);--surface-strong: #1c1c1c;--surface-muted: rgba(255,255,255,.04);--ink: var(--ds-gray-1000);--ink-soft: var(--ds-gray-800);--muted: var(--ds-gray-600);--muted-soft: var(--ds-gray-500);--line: var(--ds-gray-200);--line-strong: var(--ds-gray-300);--brand: var(--ds-green-700);--brand-strong: var(--ds-green-800);--brand-soft: var(--ds-green-100);--brand-glow: rgba(62,207,142,.18);--accent: var(--ds-amber-700);--accent-soft: var(--ds-amber-100);--danger: var(--ds-red-700);--danger-soft: var(--ds-red-100);--success: var(--ds-green-700);--success-soft: var(--ds-green-100);--info: var(--ds-blue-700);--info-soft: var(--ds-blue-100);--shadow: var(--ds-shadow-md);--shadow-soft: var(--ds-shadow-sm);--shadow-lg: var(--ds-shadow-lg);--radius-xl: var(--ds-radius-xl);--radius-lg: var(--ds-radius-lg);--radius-md: var(--ds-radius-md);--radius-sm: var(--ds-radius-sm)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;padding:var(--sp-2xl);font-family:Geist Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans,sans-serif;font-size:.875rem;line-height:1.6;color:var(--ds-gray-900);background:var(--ds-background-200);overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{border:0}.shell,.container{width:min(100%,1200px);margin:0 auto}.shell,.container{display:grid;gap:var(--sp-xl)}h1,h2,h3{margin:0;font-family:Geist Sans,-apple-system,sans-serif;letter-spacing:-.02em;color:var(--ds-gray-1000)}h2{font-size:1.25rem;font-weight:600}h3{font-size:1.0625rem;font-weight:600}.page-hero,.page-summary,.card,.stat-card,.recent-activity,.timeline-section,.tag-controls,.content-section,.metadata-card,.export-section,.file-info,.git-info,.modal-content{background:var(--ds-background-100);border:1px solid var(--ds-gray-200);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-sm)}.card:hover,.recent-activity:hover,.timeline-section:hover,.content-section:hover,.export-section:hover{border-color:var(--ds-gray-300)}.page-hero{padding:var(--sp-2xl)}.page-hero-toolbar{display:flex;align-items:center;gap:var(--sp-md);flex-wrap:wrap;margin-bottom:var(--sp-lg)}.page-kicker,.demo-banner{display:inline-flex;align-items:center;gap:.375rem;width:fit-content;padding:.375rem .75rem;border-radius:var(--ds-radius-round);background:var(--ds-gray-100);color:var(--ds-gray-600);border:1px solid var(--ds-gray-200);font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.demo-banner{background:var(--ds-green-100);color:var(--ds-green-700);border-color:transparent}.page-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.locale-switch{display:inline-flex;align-items:center;gap:var(--sp-sm);padding:0;border-radius:0;background:transparent;border:none;margin-left:auto}.locale-switch label{margin:0;font-size:.6875rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--ds-gray-500);white-space:nowrap}.locale-switch select{height:2rem;min-width:120px;padding:0 1.75rem 0 .625rem;font-size:.75rem;border-radius:var(--ds-radius-md)}.page-title{margin:0 0 var(--sp-sm);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-family:Geist Sans,-apple-system,sans-serif;font-size:clamp(1.75rem,3.5vw,2.5rem);font-weight:700;line-height:1.15;letter-spacing:-.03em;color:var(--ds-gray-1000)}.page-title .icon{color:var(--ds-gray-500)}.page-subtitle,.summary{margin:0;font-size:.9375rem;color:var(--ds-gray-600);line-height:1.6}.page-note{margin:var(--sp-lg) 0 0;padding:var(--sp-lg);border-radius:var(--ds-radius-md);background:var(--ds-gray-100);color:var(--ds-gray-600);line-height:1.65;font-size:.875rem}.page-note strong,.summary strong{color:var(--ds-gray-1000)}.muted,.card-subtitle,.meta-note,.export-info,.search-results-info,.file-stats,.last-updated,.metadata-help{color:var(--ds-gray-600);line-height:1.6}.card-subtitle{margin:.25rem 0 0;font-size:.875rem}.card,.content-section,.export-section,.recent-activity,.timeline-section,.tag-controls{overflow:hidden;min-width:0}.card{padding:0}.meta .card{padding:var(--sp-lg)}.card-header,.content-header,.section-header,.timeline-header,.activity-header,.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg);padding:var(--sp-xl) var(--sp-xl) 0}.card-header+table,.card-header+.card-body,.content-header+.content-body,.section-header+.section-body,.activity-header+.activity-list,.timeline-header+.timeline-container{margin-top:var(--sp-md)}.card-body,.content-body,.section-body,.modal-body{padding:var(--sp-xl)}.card-body-flush{padding:var(--sp-md) 0 0}.card-section{padding:var(--sp-xl);border-top:1px solid var(--ds-gray-200)}.card-footer,.panel-actions{padding:0 var(--sp-xl) var(--sp-xl)}.dashboard-grid,.split,.stats,.meta,.metadata-grid,.filters,.options-grid{display:grid;gap:var(--sp-xl)}.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.wide-card{grid-column:span 3}.split{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.stats{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.meta,.metadata-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.filters{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:end}.filters>.actions{grid-column:1 / -1}.stat-card,.metadata-card{padding:var(--sp-xl);position:relative;overflow:hidden;transition:border-color .15s ease}.stat-card:hover{border-color:var(--ds-gray-300)}.stat-value{font-family:Geist Sans,-apple-system,sans-serif;font-size:clamp(1.5rem,2.5vw,2rem);font-weight:700;line-height:1.2;color:var(--ds-gray-1000);overflow-wrap:anywhere;letter-spacing:-.02em}.meta-value,.metadata-value{font-family:Geist Sans,-apple-system,sans-serif;font-size:.9375rem;font-weight:500;line-height:1.5;color:var(--ds-gray-1000);overflow-wrap:anywhere}.stat-label,.metadata-label,.meta strong,.field label,.option-label,.tag-filter-label{display:block;margin-bottom:var(--sp-sm);font-size:.6875rem;font-weight:600;color:var(--ds-gray-500);text-transform:uppercase;letter-spacing:.08em}.meta .card strong{display:block}.field{display:grid;gap:var(--sp-sm);min-width:0}.field input,.search-input,input[type=text],select{width:100%;height:2.5rem;padding:0 .75rem;border:1px solid var(--ds-gray-300);border-radius:var(--ds-radius-md);background:var(--ds-background-200);color:var(--ds-gray-1000);font-size:.875rem;transition:border-color .15s ease,box-shadow .15s ease}select{appearance:none;font-size:.75rem;padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;background-size:1rem;cursor:pointer}.field input::placeholder,.field select::placeholder,.search-input::placeholder,input[type=text]::placeholder{color:var(--ds-gray-400)}.field input:focus,.field select:focus,.search-input:focus,input[type=text]:focus,select:focus{outline:none;border-color:var(--ds-green-700);box-shadow:0 0 0 1px var(--ds-green-700)}.option-group{display:grid;gap:var(--sp-md)}.checkbox-group{display:flex;align-items:center;gap:var(--sp-sm)}.actions,.timeline-controls,.header-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-sm)}.actions{row-gap:var(--sp-sm)}button,.btn,.batch-btn,.timeline-btn,.manage-tags-btn,.clear-filters-btn,.filter-mode-btn,.back-btn,.modal-close{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;height:2.25rem;padding:0 .875rem;border-radius:var(--ds-radius-md);border:1px solid var(--ds-gray-200);background:var(--ds-background-100);color:var(--ds-gray-900);cursor:pointer;font-size:.8125rem;font-weight:500;line-height:1;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease}button:hover,.btn:hover,.batch-btn:hover,.timeline-btn:hover,.manage-tags-btn:hover,.clear-filters-btn:hover,.filter-mode-btn:hover,.back-btn:hover,.modal-close:hover{background:var(--ds-gray-100);border-color:var(--ds-gray-300)}.btn-primary,.batch-btn.export,button[type=submit]{background:var(--ds-green-700);color:#0a0a0a;border-color:var(--ds-green-700);font-weight:600}.btn-primary:hover,.batch-btn.export:hover,button[type=submit]:hover{background:var(--ds-green-800);border-color:var(--ds-green-800)}button.secondary,.btn-secondary,.timeline-btn,.manage-tags-btn,.clear-filters-btn,.filter-mode-btn,.back-btn{border-color:var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-900)}button.secondary:hover,.btn-secondary:hover,.timeline-btn:hover,.manage-tags-btn:hover,.clear-filters-btn:hover,.filter-mode-btn:hover,.back-btn:hover{background:var(--ds-gray-100);border-color:var(--ds-gray-300)}.timeline-btn.active,.filter-mode-btn.active{background:var(--ds-green-700);color:#0a0a0a;border-color:var(--ds-green-700)}.batch-btn.delete{background:var(--ds-red-700);border-color:var(--ds-red-700);color:#0a0a0a}.batch-btn.delete:hover{background:var(--ds-red-800);border-color:var(--ds-red-800)}button:disabled,.btn:disabled,.batch-btn:disabled,.timeline-btn:disabled,.manage-tags-btn:disabled,.clear-filters-btn:disabled,.filter-mode-btn:disabled{opacity:.4;cursor:not-allowed}.btn-sm{height:2rem;padding:0 .75rem;border-radius:var(--ds-radius-round);border:1px solid var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-700);cursor:pointer;font-size:.75rem;font-weight:500}.btn-sm.danger{border-color:transparent;background:var(--ds-red-100);color:var(--ds-red-700)}.hero-actions{display:flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap;margin-top:var(--sp-sm)}.pill,.tag,.activity-badge,.selection-counter{display:inline-flex;align-items:center;gap:.25rem;width:fit-content;padding:.125rem .5rem;border-radius:var(--ds-radius-round);background:var(--ds-gray-100);color:var(--ds-gray-800);border:1px solid var(--ds-gray-200);font-size:.6875rem;font-weight:500;line-height:1.6}.pill.completed{background:var(--ds-green-100);color:var(--ds-green-700);border-color:transparent}.pill.failed,.pill.interrupted{background:var(--ds-red-100);color:var(--ds-red-700);border-color:transparent}.pill.running{background:var(--ds-blue-100);color:var(--ds-blue-700);border-color:transparent}.activity-badge{background:var(--ds-green-100);color:var(--ds-green-700);border-color:transparent}.activity-badge.pulse{animation:pulseBadge 1.4s ease-in-out 2}@keyframes pulseBadge{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.status-dot{display:inline-block;width:.5rem;height:.5rem;border-radius:var(--ds-radius-round);background:var(--ds-green-700);box-shadow:0 0 0 3px var(--ds-green-100)}.status-dot.offline{background:var(--ds-red-700);box-shadow:0 0 0 3px var(--ds-red-100)}table{width:100%;border-collapse:collapse;min-width:0}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll table{min-width:680px}th,td{padding:.875rem 1rem;border-bottom:1px solid var(--ds-gray-200);text-align:left;vertical-align:top;overflow-wrap:anywhere}th{color:var(--ds-gray-500);font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em}td{font-size:.875rem;color:var(--ds-gray-900)}thead tr{background:var(--ds-gray-100)}tbody tr{transition:background .15s ease}tbody tr:hover{background:#ffffff08}.checkbox-cell{width:3rem;text-align:center}.list,.activity-list,.plain-list,.tag-list{list-style:none;margin:0;padding:0}.list,.activity-list{display:grid;gap:var(--sp-lg)}.list{max-height:none;overflow:visible}.list li,.activity-item,.preview-item,.tag-item{padding:var(--sp-xl);border:1px solid var(--ds-gray-200);border-left:3px solid transparent;border-radius:var(--ds-radius-md);background:var(--ds-background-100);line-height:1.7;overflow-wrap:anywhere;transition:border-color .15s ease,background .15s ease}.list li:hover,.activity-item:hover,.preview-item:hover{border-left-color:var(--ds-green-700);background:#ffffff05}.list li strong{display:block;margin-bottom:.5rem;font-size:.9375rem}.list li .pill,.list li .activity-badge{margin-bottom:.375rem}.list li .actions,.list li>div:last-child{margin-top:var(--sp-lg);padding-top:var(--sp-md);border-top:1px solid var(--ds-gray-200)}.activity-item{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-lg)}.activity-content{min-width:0}.activity-item.new-item{border-color:var(--ds-green-100);border-left-color:var(--ds-green-700)}.activity-title{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.activity-title-text,.section-title,.timeline-title,.modal-title{font-weight:600;color:var(--ds-gray-1000)}.activity-meta,.activity-time,.preview-meta,.export-info,.file-stats{color:var(--ds-gray-500);font-size:.8125rem;margin-top:.125rem}.search-bar{margin:0}.search-input-wrapper{position:relative;width:min(100%,520px)}.search-icon{position:absolute;left:.875rem;top:50%;transform:translateY(-50%);color:var(--ds-gray-400);pointer-events:none}.search-input{padding-left:2.5rem;padding-right:2.5rem}.search-clear{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);width:2rem;height:2rem;min-height:auto;padding:0;border-radius:var(--ds-radius-round);background:transparent;color:var(--ds-gray-500);border:none;box-shadow:none}.search-clear:hover{background:var(--ds-gray-100);border-color:transparent}.timeline-container{padding:var(--sp-xl);overflow-x:auto}.timeline{position:relative;min-width:760px;height:210px}.timeline-axis{position:absolute;left:0;right:0;bottom:2.375rem;height:2px;background:var(--ds-gray-200)}.timeline-point{position:absolute;bottom:1.875rem;width:.75rem;height:.75rem;border-radius:var(--ds-radius-round);background:var(--ds-green-700);border:2px solid var(--ds-background-100);box-shadow:0 0 0 2px var(--ds-green-100);transform:translate(-50%);cursor:pointer;transition:box-shadow .18s ease,transform .18s ease}.timeline-point:hover{transform:translate(-50%) scale(1.3);box-shadow:0 0 0 4px #3ecf8e40}.timeline-point.multiple{background:var(--ds-amber-700);box-shadow:0 0 0 2px var(--ds-amber-100)}.timeline-label{position:absolute;bottom:0;transform:translate(-50%);color:var(--ds-gray-500);font-size:.75rem;white-space:nowrap}.timeline-tooltip{position:absolute;bottom:3.875rem;transform:translate(-50%);padding:var(--sp-md) var(--sp-lg);border-radius:var(--ds-radius-md);background:var(--ds-gray-1000);color:#0a0a0a;font-size:.75rem;line-height:1.5;display:none;box-shadow:var(--ds-shadow-lg);z-index:12}.timeline-tooltip:after{content:"";position:absolute;top:100%;left:50%;margin-left:-6px;border:6px solid transparent;border-top-color:var(--ds-gray-1000)}.batch-controls,.tag-controls-header,.tag-filters,.actions-between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.batch-controls,.tag-controls{padding:var(--sp-xl)}.tag-filters{justify-content:flex-start}#tag-filter-chips,.tag-list{display:flex;flex-wrap:wrap;gap:var(--sp-sm)}.tag-list{flex-direction:column}.tag-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;border-radius:var(--ds-radius-round);border:1px solid var(--ds-gray-300);background:var(--ds-background-100);color:var(--ds-gray-800);font-size:.75rem;font-weight:500;transition:background .15s ease,border-color .15s ease}.tag-chip.clickable{cursor:pointer}.tag-chip.clickable:hover{border-color:var(--ds-green-700);background:#3ecf8e14}.tag-chip.active{background:var(--ds-green-700);border-color:var(--ds-green-700);color:#0a0a0a}.tag-close{display:inline-grid;place-items:center;width:1rem;height:1rem;border-radius:var(--ds-radius-round);background:#0003}.filter-mode{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.tag-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-lg);flex-wrap:wrap}.tag-item-info,.tag-item-actions{display:inline-flex;align-items:center;gap:var(--sp-sm);flex-wrap:wrap}.tag-count{color:var(--ds-gray-500);font-size:.8125rem;font-weight:600}.modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:var(--sp-xl);background:#000000b3;backdrop-filter:blur(8px);z-index:30}.modal.show{display:flex}.modal-content{width:min(100%,760px);max-height:min(82vh,860px);overflow:auto}.modal-close{width:2.25rem;height:2.25rem;min-height:auto;padding:0}.preview-area{border:2px dashed var(--ds-gray-300);border-radius:var(--ds-radius-lg);background:var(--ds-background-200);padding:var(--sp-xl)}.preview-content{display:none}.preview-content.active{display:block}.file-info{padding:var(--sp-lg) var(--sp-xl);background:var(--ds-background-100)}.file-name,.content-text,.value,.path-text,.preview-item code,code{font-family:Geist Mono,SF Mono,IBM Plex Mono,Consolas,Menlo,monospace}.content-body{max-height:620px;overflow-y:auto}.content-text{white-space:pre-wrap;font-size:.8125rem;line-height:1.7;color:var(--ds-gray-700)}.error,.success,.empty,.loading,.no-tags,.empty-activity{padding:var(--sp-lg);border-radius:var(--ds-radius-md);font-size:.8125rem}.error{background:var(--ds-red-100);color:var(--ds-red-700)}.success{background:var(--ds-green-100);color:var(--ds-green-700)}.empty,.loading,.no-tags,.empty-activity{background:var(--ds-blue-100);color:var(--ds-blue-700)}.highlight{background:#fbbf2426;border-radius:3px;padding:0 2px}.evidence-checkbox,.select-all-checkbox,input[type=checkbox],input[type=radio]{accent-color:var(--ds-green-700);width:1rem;height:1rem;cursor:pointer}.icon{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.icon-lg{width:1.2em;height:1.2em}.icon-xl{width:1.45em;height:1.45em}.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}.loading{position:relative;overflow:hidden}.loading:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.06) 50%,transparent 100%);animation:shimmer 1.8s ease-in-out infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.content-body a,.card-body a:not(.btn),.section-body a:not(.btn){color:var(--ds-green-700);text-decoration:underline;text-underline-offset:2px;transition:color .15s ease}.content-body a:hover,.card-body a:not(.btn):hover,.section-body a:not(.btn):hover{color:var(--ds-green-800)}@media(max-width:1100px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wide-card{grid-column:span 2}}@media(max-width:900px){body{padding:var(--sp-lg)}.page-title{font-size:clamp(1.5rem,7vw,2rem)}.timeline{min-width:580px}th,td{padding:.75rem}}@media(max-width:760px){body{padding:var(--sp-md)}.page-hero{padding:var(--sp-xl)}.page-hero-toolbar{flex-direction:column;align-items:flex-start}.locale-switch{width:100%;margin-left:0;justify-content:space-between}.locale-switch select{min-width:0;flex:1}.split,.stats,.meta,.metadata-grid,.filters,.options-grid,.dashboard-grid{grid-template-columns:1fr}.wide-card{grid-column:auto}.card{padding:var(--sp-lg)}.card-header,.content-header,.section-header,.timeline-header,.activity-header,.modal-header{padding:var(--sp-lg) var(--sp-lg) 0}.card-body,.content-body,.section-body,.modal-body{padding:var(--sp-lg)}.card-footer,.panel-actions{padding:0 var(--sp-lg) var(--sp-lg)}.actions,.timeline-controls,.header-actions,.hero-actions{flex-direction:column;align-items:stretch}.actions>button,.actions>.btn,.actions>.field,.timeline-controls>button,.hero-actions>button{width:100%}.table-scroll table{min-width:520px}.stat-card,.metadata-card,.batch-controls,.tag-controls{padding:var(--sp-lg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}</style>
182
182
  </head>
183
183
  <body>
184
184
  <div class="shell">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pcircle/footprint",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Local-first MCP server for AI work history, context memory, and encrypted evidence",
5
5
  "keywords": [
6
6
  "mcp",
@@ -109,21 +109,6 @@
109
109
  "vite-plugin-singlefile": "^2.3.0",
110
110
  "vitest": "^4.0.18"
111
111
  },
112
- "pnpm": {
113
- "overrides": {
114
- "esbuild": ">=0.25.0",
115
- "undici": ">=6.23.0",
116
- "ajv": ">=8.18.0",
117
- "qs": ">=6.14.2",
118
- "rollup": ">=4.59.0",
119
- "hono": ">=4.12.7",
120
- "@hono/node-server": ">=1.19.10",
121
- "express-rate-limit": ">=8.2.2"
122
- },
123
- "onlyBuiltDependencies": [
124
- "better-sqlite3"
125
- ]
126
- },
127
112
  "engines": {
128
113
  "node": ">=22.0.0"
129
114
  }