Files
openclaw-config/cache/control-ui-assets/d08fd045b9cb86d13f0b4aa403c8a06ddcd32e533058ae463245169e5cff5e85/assets/activity-page-D7YouqRi.js
T

719 lines
70 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{Di as t,Ei as n,Sn as r,Tn as i,Yt as a,bn as o,er as s,nn as c,yn as l}from"./control-ui-foundation-CeFMP1Ly.js";import{Bc as u,C as d,Da as f,E as p,Na as m,S as ee,To as te,U as ne,ao as re,b as ie,bc as ae,bt as oe,dl as se,fl as ce,g as le,gs as ue,hs as de,ja as fe,ka as pe,ml as me,ni as he,ti as ge,vr as _e,w as h,x as ve,xo as ye,xt as be,yr as xe,yt as Se}from"./control-ui-core-pH6nakZ-.js";import{G as g,J as _,W as v,Z as Ce,at as y,rt as b}from"./lit-runtime-BEtFSUCp.js";import{$t as we,An as Te,B as Ee,Cn as De,F as Oe,U as ke,en as Ae,ln as je,m as Me,p as Ne,qn as Pe,zn as x}from"./control-ui-core-DGVkFhVB.js";import{Ht as S,Lt as C,Qt as Fe,Rt as w,Zt as Ie,qt as T}from"./control-ui-core-Br5DB0Zj.js";import{In as Le,Ln as Re}from"./control-ui-boot-wpHCbPL9.js";import{a as ze,n as Be,r as Ve}from"./gateway-runtime-DUNO4Mi1.js";import{Hc as He,bn as Ue,cl as We,il as Ge,ol as E,on as Ke,rl as qe,xn as Je}from"./control-ui-boot-Cdpgu1Gm.js";import{ct as Ye,st as Xe}from"./control-ui-boot-BPFwXC8p.js";import{t as Ze}from"./web-awesome-popover-DTDr8XNA.js";import{n as Qe,t as $e}from"./hub-tabs-mHLCJmKB.js";import{n as et,t as tt}from"./settings-workspace-Bo4nqRhI.js";import{n as nt,t as rt}from"./stream-auto-follow-controller-DQpG-yCd.js";function it(e){return e===`24h`||e===`7d`||e===`30d`||e===`all`}function D(e){return e?.trim()||void 0}function at(e){let t=new URLSearchParams(e),n=t.get(`time`);return{personId:D(t.get(`person`))??null,query:t.get(`q`)?.trim()??``,time:it(n)?n:k}}function ot(e){let t=new URLSearchParams;e.time!==k&&t.set(`time`,e.time),e.personId&&t.set(Te,e.personId),e.query&&t.set(`q`,e.query);let n=t.toString();return n?`?${n}`:``}function O(e){return e.lastActivityAt??e.updatedAt??e.createdAt??0}function st(e,t){return O(t)-O(e)||(e.key<t.key?-1:+(e.key>t.key))}function ct(e){let t=e.owner?.actor??e.createdActor,n=D(e.agentId),{resourceBasePath:r}=oe();return{id:D(t?.id)??n??`system`,name:D(t?.label)??n,avatarUrl:t?D(t.avatarUrl):n?Xe(`agentAvatar`,r,n):void 0,watchedSessions:[]}}function lt(e){let t=new Date(e),n=String(t.getMonth()+1).padStart(2,`0`),r=String(t.getDate()).padStart(2,`0`);return`${t.getFullYear()}-${n}-${r}`}function ut(e){let t=new Date(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()}function dt(e){let t=e?.sessions??[],n=(e?.people??[]).map(e=>({id:e.identity.id,name:e.label,avatarUrl:e.avatarUrl,watchedSessions:[],count:e.sessionCount})),r=new Map;for(let e of t){let t=O(e),n=t>0?lt(t):`unknown`,i=r.get(n);i?i.push(e):r.set(n,[e])}return{days:[...r.entries()].map(([e,t])=>({key:e,timestamp:e===`unknown`?null:ut(O(t[0])),sessions:t})),matchedCount:e?.totalCount??t.length,people:n,sessions:t,timeCount:e?.peopleSessionCount??t.length}}function ft(e,t){let n=new Set(e.watchedSessions);return t.filter(e=>n.has(e.key)).toSorted(st)}var pt,k;function A(){return(A=e((()=>{Ye(),x(),Se(),pt=[`24h`,`7d`,`30d`,`all`],k=`7d`})))()}function mt(e,t){let n=`?view=run&${e.kind}=${encodeURIComponent(e.id)}`;return t&&(n+=`&receipt=${encodeURIComponent(t.id)}`,t.decisionCursor&&(n+=`&decision=${encodeURIComponent(t.decisionCursor)}`)),n}function j(e,t,n){return`${Pe(`activity`,t)}${mt(e,n)}`}function ht(e,t){return j({kind:`run`,id:e},t)}function gt(e){let t=new URLSearchParams(e);if(t.get(`view`)===`live`)return{mode:`live`,selector:null};if(t.get(`view`)!==`run`)return{mode:`sessions`,filters:at(e),selector:null};let n=t.get(`execution`),r=t.get(`receipt`)?.trim()||null,i=r&&t.get(`decision`)?.trim()||null;if(n?.trim())return{mode:`run`,selector:{kind:`execution`,id:n},selectorId:r,decisionCursor:i};let a=t.get(`run`);return{mode:`run`,selector:a?.trim()?{kind:`run`,id:a}:null,selectorId:r,decisionCursor:i}}function _t(e,t){return new Map(e.map(e=>[e.selectorId,t]))}function vt(e,t){if(e.identity.state!==`present`||t.identity.state!==`present`||e.run.executionId!==t.run.executionId||e.identity.context.contextId!==t.identity.context.contextId)return null;let n=new Map(e.decisionDisplays.map(e=>[e.selectorId,e]));for(let e of t.decisionDisplays)n.set(e.selectorId,e);return{...t,decisionDisplays:[...n.values()]}}function yt(e){let t=e.identity;return t.state===`present`?`present`:t.state===`ambiguous`?`ambiguous`:t.reasonCode===`run_not_found`||t.reasonCode===`execution_not_found`?`not-found`:t.reasonCode===`identity_context_corrupt`?`corrupt`:t.state===`unsupported`&&t.remediation.some(e=>e.code===`run_again_after_expiry`)?`expired`:t.state}function M(){return(M=e((()=>{x(),A()})))()}var N,P;function F(){return(F=e((()=>{Fe(),N={activity:{title:`Activity`,visibleCount:`{visible} of {total}`,search:`Search`,searchPlaceholder:`Filter by activity, summary, run, session`,filters:`Filters`,toolFilter:`Tool`,allTools:`All tools`,statusFilters:`Status filters`,autoFollow:`Auto-follow`,expandAll:`Expand all`,collapseAll:`Collapse all`,clear:`Clear`,empty:`No activity yet.`,emptyFiltered:`No activity matches these filters.`,argumentHiddenOne:`1 argument hidden`,argumentsHidden:`{count} arguments hidden`,streamLabel:`Agent activity entries`,toolCallId:`Tool call`,runId:`Run`,session:`Session`,outputTruncated:`Preview redacted and truncated.`,noOutputPreview:`No output preview.`,answerCandidate:{title:`Answer candidate`,itemId:`Item`,candidate:`Candidate answer`,superseded:`Superseded answer`,selected:`Selected answer`},status:{running:`Running`,done:`Done`,error:`Error`},runInspector:{activityView:`Activity view`,liveMode:`Live activity`,mode:`Run inspector`,intro:`Durable Gateway-backed identity evidence for one run. Reloading this page queries the Gateway again.`,bestEffortWarning:`Best-effort audit warning: this view is for operational diagnostics, not a lossless compliance record. Absence of evidence does not prove that an action or run did not occur.`,evidenceStateLabel:`Evidence state: {state}`,evidenceState:{present:`Present`,absent:`Absent`,unknown:`Unknown`,unsupported:`Unsupported`},coverageStatusLabel:`Inspection coverage: {state}`,coverage:{enforced:{label:`Enforced`,description:`A decision receipt proves identity-aware evaluation; it does not by itself mean the action was allowed.`},attributionOnly:{label:`Attribution only`,description:`Identity facts were recorded, but no identity-aware policy or grant evaluation is proven.`},unattributed:{label:`Unattributed`,description:`The supported path was observed without a usable invoker principal.`},unknown:{label:`Unknown`,description:`Expected evidence is missing, corrupt, expired unexpectedly, or unreadable.`},unsupported:{label:`Unsupported`,description:`This path has no Phase 0 identity evidence contract.`}},facts:{trustDomain:`Trust domain`,ingress:`Ingress`,invoker:`Invoker`,representedSubject:`Represented subject`,sponsor:`Sponsor`,agentPrincipal:`Agent principal`,agentDefinition:`Agent definition`,runtimeInstance:`Runtime instance`,applicableGrants:`Applicable grants`,applicableGrant:`Applicable grant {index}`,assuranceEvidence:`Assurance evidence`,assuranceEvidenceItem:`Assurance evidence {index}`,lineage:`Lineage`},values:{label:`Label`,kind:`Kind`,operation:`Operation`,principalReference:`Principal reference`,domainReference:`Domain reference`,owningBoundary:`Owning boundary`,sourceReference:`Source reference`,relationshipReference:`Relationship reference`,definitionReference:`Definition reference`,revisionReference:`Revision reference`,runtimeReference:`Runtime reference`,grantReference:`Grant reference`,strength:`Strength`,evidenceReference:`Evidence reference`,depth:`Depth`,parentRunReference:`Parent run reference`,parentExecutionReference:`Parent execution reference`,parentContextReference:`Parent context reference`,delegationReference:`Delegation reference`},reasons:{absent:`No {label} was recorded at the owning boundary.`,unknown:`The {label} was expected, but its evidence is unavailable or unreadable.`,unsupported:`This execution path does not provide {label} evidence.`,invokerAbsent:`The supported ingress boundary recorded no usable invoker principal.`,noGrants:`No applicable grants were recorded for this run.`,noAssurance:`No assurance evidence was recorded for this run.`,noLineage:`No parent or subagent lineage was recorded for this run.`},identityHeading:`Identity and authority`,missingEvidenceHeading:`Missing evidence`,noMissingEvidence:`No missing evidence was reported for this projection.`,nextStepsHeading:`Next steps`,decisions:{heading:`Decision receipts`,none:`No decision receipts were returned for this bounded page.`,returned:`Showing {count} retained decision receipts.`,listLabel:`Decision receipt list`,inspectLabel:`{summary}. Outcome: {outcome}. Evidence classification: {classification}.`,detailHeading:`Receipt detail`,requestedHeading:`What was requested`,outcomeHeading:`What happened`,outcomeLabel:`Outcome`,classificationLabel:`Evidence classification`,reasonLabel:`Recorded reason`,occurredAtLabel:`Recorded at`,ownerHeading:`Display provenance`,durableOwnerLabel:`Verified producer`,boundaryLabel:`Decision boundary`,ownerNote:`The Gateway exposes explanations only from a verified owning call path. Receipt-controlled explanations and next steps are hidden; the Control UI does not infer trust from receipt metadata.`,evidenceHeading:`Evidence limits`,contextFieldsLabel:`Context fields used`,noContextFields:`No context fields were recorded as used.`,policyCountLabel:`Policy references used`,grantCountLabel:`Grant references used`,notFoundTitle:`Receipt not found on this page`,notFoundDescription:`The selected receipt is not present in this retained page. Return to the first page or use a current receipt link.`,readOnly:`Decision receipts are read-only. This view cannot approve, edit, or repeat an action.`,more:`Additional decision receipts are available.`,loadMore:`Load more receipts`,loadingMore:`Loading receipts…`,loadMoreError:`More receipts could not be loaded. The receipts already shown remain unchanged.`,bounded:`Decision inspection is bounded to at most 50 records per request.`,outcomes:{allowed:`Allowed`,denied:`Denied`,notApplicable:`Not applicable`,unknown:`Unknown`}},diagnosticReason:`Diagnostic reason:`,diagnostic:{notFound:{title:`Run not found`,description:`No retained run or identity record matched this reference. Missing best-effort evidence does not prove that the run never occurred.`},expired:{title:`Identity evidence expired`,description:`The Gateway found the run, but its identity context is outside the 30-day retention window.`},corrupt:{title:`Identity evidence is corrupt`,description:`The Gateway found evidence for this run but could not validate the stored identity context.`},ambiguous:{title:`Multiple executions match this run`,description:`A run reference can correlate more than one execution. The inspector will not guess which execution you meant.`},unsupported:{title:`Identity evidence unsupported`,description:`The run is known, but this execution path did not retain a supported identity context.`},unknown:{title:`Identity evidence unknown`,description:`The path promises evidence, but the expected record is missing, unreadable, or otherwise unavailable.`}},candidates:{listLabel:`Matching executions`,recorded:`Recorded {date}`,executionReference:`Inspect execution`,more:`More matching executions exist beyond this bounded page.`,loadMore:`Load more executions`,loadingMore:`Loading executions…`,loadMoreError:`More executions could not be loaded. Try again.`},panels:{empty:{title:`No run selected`,description:`Open a link shaped like /activity?view=run&run=<run-id> to inspect durable identity evidence.`},waiting:{title:`Waiting for the Gateway`,description:`The durable projection will load when this browser reconnects.`},loading:{title:`Loading run inspection`,description:`Reading the Gateway's retained identity projection…`},disconnected:{title:`Gateway disconnected`,description:`Run identity is durable on the Gateway, but it cannot be read while this browser is disconnected.`},unauthorized:{title:`Operator read access required`,description:`This connection does not have operator.read, so retained run identity cannot be loaded.`},unsupported:{title:`Run inspection unsupported`,description:`This Gateway does not offer audit.run.inspect. Upgrade the Gateway, enable execution identity collection, and record a new run.`},error:{title:`Run inspection failed`,description:`The Gateway could not return this diagnostic projection. No identity facts were inferred from Live activity.`}},restart:`Restart inspection`,retry:`Retry inspection`}}},P=Object.assign(()=>{Ie.activity=N.activity},{catalog:N})})))()}function I(e){return e===`attribution-only`?`attributionOnly`:e}function L(e){return T(`activity.runInspector.coverage.${I(e)}.label`)}function R(e,t=!1,n){let r=_`<bdi
class=${t?`run-inspector__ref mono`:`run-inspector__ref`}
dir="ltr"
>${e}</bdi
>`;return n?_`<a href=${n}>${r}</a>`:r}function bt(e,t,n){return n===6?_`<h6 id=${t}>${e}</h6>`:_`<h3 id=${t}>${e}</h3>`}function z(e,t={}){let n=t.headingId??`run-inspector-missing-heading`;return _`
<section class="run-inspector__section" aria-labelledby=${n}>
${bt(T(`activity.runInspector.missingEvidenceHeading`),n,t.headingLevel??3)}
${e.length===0?_`<p>${T(`activity.runInspector.noMissingEvidence`)}</p>`:_`<ul class="run-inspector__code-list">
${e.map(e=>_`<li>${R(e,!0)}</li>`)}
</ul>`}
</section>
`}function xt(e,t={}){if(e.length===0)return g;let n=t.headingId??`run-inspector-remediation-heading`;return _`
<section class="run-inspector__section" aria-labelledby=${n}>
${bt(T(`activity.runInspector.nextStepsHeading`),n,t.headingLevel??3)}
<ul class="run-inspector__remediation-list">
${e.map(e=>_`<li>
<span>${e.text}</span> ${R(e.code,!0)}
</li>`)}
</ul>
</section>
`}function St(e,t,n,r){return j(e,r,{id:t,decisionCursor:n})}function B(e){return T(`activity.runInspector.decisions.outcomes.${e===`not-applicable`?`notApplicable`:e}`)}function Ct(e,t){return e.length===0?_`<p class="run-inspector__reason">${t}</p>`:_`<ul class="run-inspector__code-list">
${e.map(e=>_`<li>${R(e,!0)}</li>`)}
</ul>`}function wt(e){let t=e.enforcement.coverageState;return _`
<article class="run-inspector__receipt-detail" aria-labelledby="run-inspector-receipt-detail">
<h4 id="run-inspector-receipt-detail">
${T(`activity.runInspector.decisions.detailHeading`)}
</h4>
<section aria-labelledby="run-inspector-receipt-requested">
<h5 id="run-inspector-receipt-requested">
${T(`activity.runInspector.decisions.requestedHeading`)}
</h5>
${e.action.summary?_`<p>${e.action.summary}</p>`:g}
<dl class="run-inspector__values">
<div>
<dt>${T(`activity.runInspector.values.kind`)}</dt>
<dd>${R(e.action.family)}</dd>
</div>
<div>
<dt>${T(`activity.runInspector.values.operation`)}</dt>
<dd>${R(e.action.operation)}</dd>
</div>
</dl>
</section>
<section aria-labelledby="run-inspector-receipt-outcome">
<h5 id="run-inspector-receipt-outcome">
${T(`activity.runInspector.decisions.outcomeHeading`)}
</h5>
<div class="run-inspector__receipt-badges">
<span
class="run-inspector__receipt-badge run-inspector__receipt-badge--${e.decision.outcome}"
aria-label=${`${T(`activity.runInspector.decisions.outcomeLabel`)}: ${B(e.decision.outcome)}`}
>
${B(e.decision.outcome)}
</span>
<span
class="run-inspector__receipt-badge run-inspector__receipt-badge--${t}"
aria-label=${`${T(`activity.runInspector.decisions.classificationLabel`)}: ${L(t)}`}
>
${L(t)}
</span>
</div>
<p class="run-inspector__reason">
${T(`activity.runInspector.coverage.${I(t)}.description`)}
</p>
<dl class="run-inspector__values">
<div>
<dt>${T(`activity.runInspector.decisions.reasonLabel`)}</dt>
<dd>${R(e.decision.reasonCode,!0)}</dd>
</div>
<div>
<dt>${T(`activity.runInspector.decisions.occurredAtLabel`)}</dt>
<dd>${new Date(e.occurredAt).toLocaleString()}</dd>
</div>
</dl>
</section>
<section aria-labelledby="run-inspector-receipt-owner">
<h5 id="run-inspector-receipt-owner">
${T(`activity.runInspector.decisions.ownerHeading`)}
</h5>
${e.provenance.state===`verified`?_`<dl class="run-inspector__values">
<div>
<dt>${T(`activity.runInspector.decisions.durableOwnerLabel`)}</dt>
<dd>${R(e.provenance.producer)}</dd>
</div>
</dl>
<p class="run-inspector__reason">
${T(`activity.runInspector.decisions.ownerNote`)}
</p>`:_`<p class="run-inspector__reason">
${T(`activity.runInspector.decisions.ownerNote`)}
</p>`}
</section>
<section aria-labelledby="run-inspector-receipt-evidence">
<h5 id="run-inspector-receipt-evidence">
${T(`activity.runInspector.decisions.evidenceHeading`)}
</h5>
<dl class="run-inspector__values">
<div>
<dt>${T(`activity.runInspector.decisions.policyCountLabel`)}</dt>
<dd>${e.enforcement.policyCount}</dd>
</div>
<div>
<dt>${T(`activity.runInspector.decisions.grantCountLabel`)}</dt>
<dd>${e.enforcement.grantCount}</dd>
</div>
</dl>
<h6>${T(`activity.runInspector.decisions.contextFieldsLabel`)}</h6>
${Ct(e.enforcement.contextFieldsUsed,T(`activity.runInspector.decisions.noContextFields`))}
${z(e.missingEvidence,{headingId:`run-inspector-receipt-missing-heading`,headingLevel:6})}
</section>
${xt(e.remediation,{headingId:`run-inspector-receipt-remediation-heading`,headingLevel:6})}
</article>
`}function Tt(e,t,n,r,i){let a=e.result,o=n?a.decisionDisplays.find(e=>e.selectorId===n):a.decisionDisplays[0];return _`
<section class="run-inspector__section" aria-labelledby="run-inspector-decisions-heading">
<h3 id="run-inspector-decisions-heading">${T(`activity.runInspector.decisions.heading`)}</h3>
${a.decisionDisplays.length===0?_`<p>${T(`activity.runInspector.decisions.none`)}</p>`:_`<p>
${T(`activity.runInspector.decisions.returned`,{count:String(a.decisionDisplays.length)})}
</p>`}
<div class="run-inspector__warning" role="note">
${T(`activity.runInspector.decisions.readOnly`)}
</div>
${a.decisionDisplays.length>0&&t?_`<ol
class="run-inspector__receipt-list"
aria-label=${T(`activity.runInspector.decisions.listLabel`)}
>
${a.decisionDisplays.map(n=>{let i=o?.selectorId===n.selectorId;return _`<li>
<a
href=${St(t,n.selectorId,e.receiptPageCursors.get(n.selectorId),r)}
aria-current=${i?`true`:g}
aria-label=${T(`activity.runInspector.decisions.inspectLabel`,{summary:n.action.summary??`${n.action.family} · ${n.action.operation}`,outcome:B(n.decision.outcome),classification:L(n.enforcement.coverageState)})}
>
<span
>${n.action.summary??`${n.action.family} · ${n.action.operation}`}</span
>
<span class="run-inspector__receipt-badges" aria-hidden="true">
<span
class="run-inspector__receipt-badge run-inspector__receipt-badge--${n.decision.outcome}"
>${B(n.decision.outcome)}</span
>
<span
class="run-inspector__receipt-badge run-inspector__receipt-badge--${n.enforcement.coverageState}"
>${L(n.enforcement.coverageState)}</span
>
</span>
</a>
</li>`})}
</ol>`:g}
${a.nextDecisionCursor?_`<div class="run-inspector__pagination">
<span>${T(`activity.runInspector.decisions.more`)}</span>
<button
type="button"
class="btn"
?disabled=${e.decisionPageStatus===`loading`}
@click=${i}
>
${e.decisionPageStatus===`loading`?T(`activity.runInspector.decisions.loadingMore`):T(`activity.runInspector.decisions.loadMore`)}
</button>
${e.decisionPageStatus===`error`?_`<span role="alert">
${T(`activity.runInspector.decisions.loadMoreError`)}
</span>`:g}
</div>`:_`<div class="run-inspector__pagination" role="note">
${T(`activity.runInspector.decisions.bounded`)}
</div>`}
${n&&!o?_`<div class="run-inspector__result-state" role="status">
<h4>${T(`activity.runInspector.decisions.notFoundTitle`)}</h4>
<p>${T(`activity.runInspector.decisions.notFoundDescription`)}</p>
${t?_`<a href=${j(t,r)}>
${T(`activity.runInspector.decisions.heading`)}
</a>`:g}
</div>`:o?wt(o):g}
</section>
`}function Et(){return(Et=e((()=>{v(),S(),M()})))()}function Dt(e){return T(`activity.runInspector.evidenceState.${e}`)}function Ot(e,t){switch(t){case`absent`:return T(`activity.runInspector.reasons.absent`,{label:e.toLowerCase()});case`unknown`:return T(`activity.runInspector.reasons.unknown`,{label:e.toLowerCase()});case`unsupported`:return T(`activity.runInspector.reasons.unsupported`,{label:e.toLowerCase()});case`present`:return}return t}function V(e){return e?[...e.displayLabel?[{label:T(`activity.runInspector.values.label`),value:e.displayLabel}]:[],{label:T(`activity.runInspector.values.kind`),value:e.kind},{label:T(`activity.runInspector.values.principalReference`),value:e.principalRef,mono:!0},{label:T(`activity.runInspector.values.domainReference`),value:e.domainRef,mono:!0}]:[]}function kt(e){let t=e.values??[],n=e.reason??Ot(e.label,e.state);return _`
<div class="run-inspector__fact" data-state=${e.state}>
<dt>
<span>${e.label}</span>
<span
class="run-inspector__state run-inspector__state--${e.state}"
aria-label=${T(`activity.runInspector.evidenceStateLabel`,{state:Dt(e.state)})}
>
${Dt(e.state)}
</span>
</dt>
<dd>
${t.length>0?_`<dl class="run-inspector__values">
${t.map(e=>_`
<div>
<dt>${e.label}</dt>
<dd>${R(e.value,e.mono,e.href)}</dd>
</div>
`)}
</dl>`:g}
${n?_`<p class="run-inspector__reason">${n}</p>`:g}
</dd>
</div>
`}function At(e,t){let n=e.representedSubject,r=e.sponsor,i=e.lineage;return[{label:T(`activity.runInspector.facts.trustDomain`),state:e.trustDomain.state,values:[{label:T(`activity.runInspector.values.kind`),value:e.trustDomain.kind},{label:T(`activity.runInspector.values.domainReference`),value:e.trustDomain.domainRef,mono:!0}]},{label:T(`activity.runInspector.facts.ingress`),state:e.ingress.state,values:[{label:T(`activity.runInspector.values.kind`),value:e.ingress.kind},{label:T(`activity.runInspector.values.owningBoundary`),value:e.ingress.boundary,mono:!0},...e.ingress.sourceRef?[{label:T(`activity.runInspector.values.sourceReference`),value:e.ingress.sourceRef,mono:!0}]:[]]},{label:T(`activity.runInspector.facts.invoker`),state:e.invoker.state,values:V(e.invoker.principal),reason:e.invoker.state===`absent`?T(`activity.runInspector.reasons.invokerAbsent`):void 0},{label:T(`activity.runInspector.facts.representedSubject`),state:n?.state??`absent`,values:V(n?.principal)},{label:T(`activity.runInspector.facts.sponsor`),state:r?.state??`absent`,values:[...V(r?.principal),...r?.relationshipRef?[{label:T(`activity.runInspector.values.relationshipReference`),value:r.relationshipRef,mono:!0}]:[]]},{label:T(`activity.runInspector.facts.agentDefinition`),state:e.agentDefinition.state,values:[{label:T(`activity.runInspector.values.definitionReference`),value:e.agentDefinition.definitionRef,mono:!0},...e.agentDefinition.revisionRef?[{label:T(`activity.runInspector.values.revisionReference`),value:e.agentDefinition.revisionRef,mono:!0}]:[]]},{label:T(`activity.runInspector.facts.agentPrincipal`),state:`present`,values:V(e.agentPrincipal)},{label:T(`activity.runInspector.facts.runtimeInstance`),state:e.runtimeInstance.state,values:[{label:T(`activity.runInspector.values.kind`),value:e.runtimeInstance.kind},{label:T(`activity.runInspector.values.runtimeReference`),value:e.runtimeInstance.runtimeRef,mono:!0}]},...e.applicableGrants.length===0?[{label:T(`activity.runInspector.facts.applicableGrants`),state:`absent`,reason:T(`activity.runInspector.reasons.noGrants`)}]:e.applicableGrants.map((e,t)=>({label:T(`activity.runInspector.facts.applicableGrant`,{index:String(t+1)}),state:e.state,values:[{label:T(`activity.runInspector.values.grantReference`),value:e.grantRef,mono:!0}]})),...e.assurance.length===0?[{label:T(`activity.runInspector.facts.assuranceEvidence`),state:`absent`,reason:T(`activity.runInspector.reasons.noAssurance`)}]:e.assurance.map((e,t)=>({label:T(`activity.runInspector.facts.assuranceEvidenceItem`,{index:String(t+1)}),state:`present`,values:[{label:T(`activity.runInspector.values.kind`),value:e.kind},{label:T(`activity.runInspector.values.strength`),value:e.strength},{label:T(`activity.runInspector.values.evidenceReference`),value:e.evidenceRef,mono:!0}]})),{label:T(`activity.runInspector.facts.lineage`),state:i?`present`:`absent`,values:i?[{label:T(`activity.runInspector.values.depth`),value:i.depth},...i.parentRunId?[{label:T(`activity.runInspector.values.parentRunReference`),value:i.parentRunId,mono:!0,href:j({kind:`run`,id:i.parentRunId},t)}]:[],...i.parentExecutionId?[{label:T(`activity.runInspector.values.parentExecutionReference`),value:i.parentExecutionId,mono:!0}]:[],...i.parentContextId?[{label:T(`activity.runInspector.values.parentContextReference`),value:i.parentContextId,mono:!0}]:[],...i.delegationRef?[{label:T(`activity.runInspector.values.delegationReference`),value:i.delegationRef,mono:!0}]:[],...V(i.parentAgentPrincipal)]:[],reason:i?void 0:T(`activity.runInspector.reasons.noLineage`)}]}function jt(e){let t=yt(e);switch(t){case`not-found`:return{title:T(`activity.runInspector.diagnostic.notFound.title`),description:T(`activity.runInspector.diagnostic.notFound.description`)};case`expired`:return{title:T(`activity.runInspector.diagnostic.expired.title`),description:T(`activity.runInspector.diagnostic.expired.description`)};case`corrupt`:return{title:T(`activity.runInspector.diagnostic.corrupt.title`),description:T(`activity.runInspector.diagnostic.corrupt.description`)};case`ambiguous`:return{title:T(`activity.runInspector.diagnostic.ambiguous.title`),description:T(`activity.runInspector.diagnostic.ambiguous.description`)};case`unsupported`:return{title:T(`activity.runInspector.diagnostic.unsupported.title`),description:T(`activity.runInspector.diagnostic.unsupported.description`)};case`unknown`:return{title:T(`activity.runInspector.diagnostic.unknown.title`),description:T(`activity.runInspector.diagnostic.unknown.description`)};case`present`:return null}return t}function Mt(e,t,n,r){let i=jt(e);if(!i||e.identity.state===`present`)return g;let a=e.identity;return _`
<div class="run-inspector__result-state" role="status" aria-label=${i.title}>
<h3>${i.title}</h3>
<p>${i.description}</p>
<p>
${T(`activity.runInspector.diagnosticReason`)}
${R(a.reasonCode,!0)}
</p>
</div>
${a.state===`ambiguous`?_`
<ol
class="run-inspector__candidate-list"
aria-label=${T(`activity.runInspector.candidates.listLabel`)}
>
${a.candidates.map(e=>_`
<li>
<span
>${T(`activity.runInspector.candidates.recorded`,{date:new Date(e.createdAt).toLocaleString()})}</span
>
<a
href=${j({kind:`execution`,id:e.executionId},t)}
>
${T(`activity.runInspector.candidates.executionReference`)}
${R(e.executionId,!0)}
</a>
</li>
`)}
</ol>
${e.nextExecutionCursor?_`<div class="run-inspector__pagination">
<span>${T(`activity.runInspector.candidates.more`)}</span>
<button
type="button"
class="btn"
?disabled=${n===`loading`}
@click=${r}
>
${T(n===`loading`?`activity.runInspector.candidates.loadingMore`:`activity.runInspector.candidates.loadMore`)}
</button>
${n===`error`?_`<span role="alert">
${T(`activity.runInspector.candidates.loadMoreError`)}
</span>`:g}
</div>`:g}
`:g}
${z(a.missingEvidence)}
${xt(a.remediation)}
`}function Nt(e,t,n,r,i,a){let o=e.result,s=L(o.coverage.state);return _`
<div
class="run-inspector__coverage run-inspector__coverage--${o.coverage.state}"
role="status"
aria-label=${T(`activity.runInspector.coverageStatusLabel`,{state:s})}
>
<strong>${s}</strong>
<span>
${T(`activity.runInspector.coverage.${I(o.coverage.state)}.description`)}
</span>
</div>
${o.identity.state===`present`?_`
<section class="run-inspector__section" aria-labelledby="run-inspector-identity-heading">
<h3 id="run-inspector-identity-heading">
${T(`activity.runInspector.identityHeading`)}
</h3>
<dl class="run-inspector__facts">
${At(o.identity.context,t).map(kt)}
</dl>
</section>
${z(o.coverage.missingEvidence)}
${Tt(e,n,r,t,i)}
`:Mt(o,t,e.executionPageStatus,a)}
`}function H(e,t,n={}){return _`
<div class="run-inspector__panel" role=${n.role??`status`}>
<h3>${e}</h3>
<p>${t}</p>
${n.action?_`<button type="button" class="btn" @click=${n.action.onClick}>
${n.action.label}
</button>`:g}
</div>
`}function Pt(e){let t=e.state,n;switch(t.status){case`empty`:n=H(T(`activity.runInspector.panels.empty.title`),T(`activity.runInspector.panels.empty.description`));break;case`loading`:n=H(t.waitingForGateway?T(`activity.runInspector.panels.waiting.title`):T(`activity.runInspector.panels.loading.title`),t.waitingForGateway?T(`activity.runInspector.panels.waiting.description`):T(`activity.runInspector.panels.loading.description`));break;case`disconnected`:n=H(T(`activity.runInspector.panels.disconnected.title`),T(`activity.runInspector.panels.disconnected.description`));break;case`unauthorized`:n=H(T(`activity.runInspector.panels.unauthorized.title`),T(`activity.runInspector.panels.unauthorized.description`),{role:`alert`});break;case`unsupported`:n=H(T(`activity.runInspector.panels.unsupported.title`),T(`activity.runInspector.panels.unsupported.description`));break;case`error`:n=H(T(`activity.runInspector.panels.error.title`),T(`activity.runInspector.panels.error.description`),{action:t.recovery===`restart`?{label:T(`activity.runInspector.restart`),onClick:e.onRestart}:{label:T(`activity.runInspector.retry`),onClick:e.onRetry},role:`alert`});break;case`ready`:n=Nt(t,e.basePath,e.selector,e.selectorId,e.onLoadMoreDecisions,e.onLoadMoreExecutions)}return _`
<section
id="activity-run-panel"
class="run-inspector"
aria-label=${T(`activity.runInspector.mode`)}
>
<div class="settings-section__header">
<div>
<h2 class="settings-section__heading">${T(`activity.runInspector.mode`)}</h2>
<p class="run-inspector__intro">${T(`activity.runInspector.intro`)}</p>
</div>
</div>
<div class="run-inspector__warning" role="note">
${T(`activity.runInspector.bestEffortWarning`)}
</div>
${n}
</section>
`}function Ft(){return(Ft=e((()=>{v(),S(),F(),Et(),M(),P()})))()}var It;function Lt(){return(Lt=e((()=>{It=class{constructor(e){this.host=e,this.loading=!1,this.client=null,this.refreshPending=!1,e.addController(this)}hostDisconnected(){this.pending?.abort(),this.pending=void 0,this.client=null,this.queryKey=void 0,this.result=void 0,this.refreshPending=!1}load(e,t,n=!1){if(!e||!t){this.hostDisconnected(),this.loading=!1,this.host.requestUpdate();return}let r={archived:`all`,includeGlobal:!0,includeUnknown:!0,includePeople:!0,includeDerivedTitles:!0,limit:100,...t.personId?{involvingProfileId:t.personId}:{},...t.query?{search:t.query}:{},...t.time===`all`?{}:{activeMinutes:t.time===`24h`?1440:t.time===`7d`?10080:43200}},i=JSON.stringify(r),a=this.client===e&&this.queryKey===i;if(a&&this.pending){this.refreshPending||=n;return}if(!n&&a)return;this.pending?.abort();let o=new AbortController;this.pending=o,this.client=e,this.queryKey=i,this.loading=!0,this.error=void 0,a||(this.result=void 0),this.refreshPending=!1,this.host.requestUpdate(),e.request(`sessions.list`,r,{signal:o.signal}).then(e=>{this.pending===o&&(this.result=e)}).catch(e=>{this.pending===o&&!o.signal.aborted&&(this.error=e instanceof Error?e.message:String(e))}).finally(()=>{this.pending===o&&(this.pending=void 0,this.loading=!1,this.host.requestUpdate(),this.refreshPending&&this.load(e,t,!0))})}}})))()}function Rt(){U.clear()}function zt(e){let t=r(e);if(t?.found!==!0)return{status:`absent`};let n=e=>e?.trim()?e:void 0,a=r(t.attribution),o=n(i(a,`text`)),s=n(i(a,`url`)),c=n(i(t,`city`)),l=n(i(t,`region`)),u=n(i(t,`country`)),d={...c?{city:c}:{},...l?{region:l}:{},...u?{country:u}:{},...o&&s?{attribution:{text:o,url:s}}:{}};return Object.keys(d).length>0?{status:`located`,location:d}:{status:`absent`}}async function Bt(e){let{origin:t,authHeader:n}=oe();try{let r=await fetch(`${t??``}/plugins/geolocation/lookup?ip=${encodeURIComponent(e)}`,{credentials:`include`,...n?{headers:{Authorization:n}}:{},signal:AbortSignal.timeout(Ht)});return r.ok?zt(await r.json()):{status:`unavailable`}}catch{return{status:`unavailable`}}}function Vt(e){let t=U.get(e);if(t)return t;let n=Bt(e).then(t=>(t.status===`unavailable`&&U.delete(e),t));if(U.size>=Ut){let e=U.keys().next();e.done||U.delete(e.value)}return U.set(e,n),n}var Ht,Ut,U;function Wt(){return(Wt=e((()=>{Se(),Ht=15e3,Ut=256,U=new Map,be(Rt)})))()}var Gt,W;function Kt(){return(Kt=e((()=>{v(),Ce(),Wt(),me(),w(),Gt=[5e3,15e3,45e3],W=class extends se{constructor(...e){super(...e),this.location=null,this.retryAttempt=0}disconnectedCallback(){super.disconnectedCallback(),this.clearRetry()}willUpdate(){let e=this.ip?.trim();!e||e===this.requestedIp||(this.clearRetry(),this.requestedIp=e,this.retryAttempt=0,this.location=null,this.resolve(e))}clearRetry(){this.retryTimer!==void 0&&(clearTimeout(this.retryTimer),this.retryTimer=void 0)}resolve(e){Vt(e).then(t=>{if(this.requestedIp!==e)return;if(t.status===`located`){this.location=t.location;return}if(t.status===`absent`)return;let n=Gt[this.retryAttempt];n!==void 0&&(this.retryAttempt+=1,this.retryTimer=setTimeout(()=>{this.retryTimer=void 0,this.requestedIp===e&&this.isConnected&&this.resolve(e)},n))})}render(){let e=[this.location?.city,this.location?.region??this.location?.country].filter(Boolean).join(`, `);if(!e)return g;let t=this.location?.attribution;return _`<span class="activity-feed__device-location"
>${e}${t?_`<a
class="activity-feed__device-attribution"
href=${t.url}
target="_blank"
rel="noreferrer noopener"
aria-label=${t.text}
title=${t.text}
>${C.info}</a
>`:g}</span
>`}},s([y({attribute:!1})],W.prototype,`ip`,void 0),s([b()],W.prototype,`location`,void 0),globalThis.customElements&&(customElements.get(`openclaw-ip-location`)||customElements.define(`openclaw-ip-location`,W))})))()}function G(e){return!e.name&&!e.email&&E(e)===e.id}function qt(e){return G(e)&&e.id.length>8?`${e.id.slice(0,8)}…`:E(e)}function K(e,t=!1){return G(e)?_`<span
class="viewer-avatar viewer-avatar--overflow activity-feed__unknown-avatar"
aria-hidden="true"
>${C.users}</span
>`:_`<span class="activity-feed__person-avatar">
<openclaw-viewer-avatar
.identity=${{type:`profile`,id:e.id}}
.user=${e}
.markAsViewer=${!1}
variant="footer"
></openclaw-viewer-avatar>
${t&&(e.entries?.length??0)>0?_`<span
class="activity-feed__presence-dot"
aria-label=${T(`activityFeed.online`)}
></span>`:g}
</span>`}function Jt(e,t,n){e.currentTarget instanceof Element&&e.currentTarget.closest(`wa-popover`)?.removeAttribute(`open`),t.onFiltersChange({...t.filters,personId:n})}function Yt(e,t){e.currentTarget instanceof Element&&e.currentTarget.parentElement?.querySelector(`.activity-feed__people-trigger`)?.setAttribute(`aria-expanded`,String(t))}function Xt(e,t){return _`<button
type="button"
class="session-menu__item activity-feed__people-row"
data-activity-person=${e.id}
aria-pressed=${String(t.filters.personId===e.id)}
@click=${n=>Jt(n,t,e.id)}
>
${K(e,!0)}
<span class="activity-feed__people-copy">
<span class="activity-feed__people-name">${qt(e)}</span>
</span>
<span class="activity-feed__people-count">${e.count}</span>
</button>`}function Zt(e,t,n,r){let i=t.slice(0,3),a=t.length-i.length,o=t.filter(e=>!G(e)),s=t.filter(G);return _`<div class="activity-feed__people-control">
<button
id="activity-feed-people-trigger"
type="button"
class="btn btn--sm activity-feed__people-trigger"
aria-label=${T(`activityFeed.peopleButtonLabel`)}
aria-haspopup="dialog"
aria-expanded="false"
>
${n?_`${K(n)}<span class="activity-feed__selected-person"
>${qt(n)}</span
>`:_`<span class="activity-feed__facepile" aria-hidden="true">
${i.length>0?i.map(e=>K(e)):_`<span
class="viewer-avatar viewer-avatar--overflow activity-feed__unknown-avatar"
>${C.users}</span
>`}
${a>0?_`<span class="viewer-avatar viewer-avatar--overflow">+${a}</span>`:g}
</span>`}
</button>
${n?_`<button
type="button"
class="btn btn--sm activity-feed__people-clear"
aria-label=${T(`activityFeed.clearPersonFilter`)}
@click=${()=>e.onFiltersChange({...e.filters,personId:null})}
>
×
</button>`:g}
<wa-popover
class="activity-feed__people-popover"
for="activity-feed-people-trigger"
placement="bottom-end"
without-arrow
@wa-show=${e=>Yt(e,!0)}
@wa-hide=${e=>Yt(e,!1)}
>
<div class="activity-feed__people-panel" aria-label=${T(`activityFeed.peopleButtonLabel`)}>
<button
type="button"
class="session-menu__item activity-feed__people-row"
data-activity-person=""
aria-pressed=${String(e.filters.personId===null)}
@click=${t=>Jt(t,e,null)}
>
<span
class="viewer-avatar viewer-avatar--overflow activity-feed__unknown-avatar"
aria-hidden="true"
>${C.users}</span
>
<span class="activity-feed__people-copy">
<span class="activity-feed__people-name">${T(`activityFeed.everyone`)}</span>
</span>
<span class="activity-feed__people-count">${r}</span>
</button>
${o.map(t=>Xt(t,e))}
${s.length>0?_`<div class="session-menu__separator" role="separator"></div>
<div class="activity-feed__people-group-label">
${T(`activityFeed.unresolvedIdentities`)}
</div>
<div data-activity-unresolved>
${s.map(t=>Xt(t,e))}
</div>`:g}
</div>
</wa-popover>
</div>`}function Qt(e,t,n){if(!ne(e))return;e.preventDefault();let r=pe(n),i=fe({context:t,face:r,sessionKey:n.key});t.navigate(r,i.options)}function $t(e,t){return fe({context:e,face:pe(t),sessionKey:t.key}).href}function en(e,t=Date.now()){if(e===null)return T(`activityFeed.unknownDate`);let n=new Date(t),r=new Date(n.getFullYear(),n.getMonth(),n.getDate()).getTime(),i=new Date(r);return i.setDate(i.getDate()-1),e===r?T(`activityFeed.today`):e===i.getTime()?T(`activityFeed.yesterday`):new Intl.DateTimeFormat(void 0,{day:`numeric`,month:`long`,year:`numeric`}).format(e)}function q(e,t){let n=ct(t),r=E(n),i=O(t),a=t.observerDigest?.runId,o=t.hasActiveRun===!0&&a&&t.activeRunIds?.includes(a)?a:void 0,s=o?t.observerDigest?.headline.trim():``,c=t.channel?T(`activityFeed.channelLabel`,{value:t.channel}):t.agentId?T(`activityFeed.agentLabel`,{value:t.agentId}):null,l=t.createdVia===`cron`?T(`activityFeed.automation`):null;return _`<div class="activity-feed__session-row">
<a
class="activity-feed__session"
data-activity-session=${t.key}
href=${$t(e,t)}
@click=${n=>Qt(n,e,t)}
>
<span class="activity-feed__session-avatar">
${t.hasActiveRun===!0?_`<span
class="activity-feed__presence-dot activity-feed__run-dot"
aria-hidden="true"
></span>`:g}
<openclaw-viewer-avatar
.identity=${t.owner?.actor.identity??t.createdActor?.identity}
.user=${n}
.markAsViewer=${!1}
variant="footer"
></openclaw-viewer-avatar>
</span>
<span class="activity-feed__session-main">
<span class="activity-feed__session-title">${te(t.key,t)}</span>
<span class="activity-feed__session-meta">
${s?_`<span
class="activity-feed__session-headline"
data-health=${t.observerDigest?.health??g}
>${s}</span
>`:_`<span>${r}</span>`}${l?_`<span class="activity-feed__session-source" data-activity-created-via="cron"
${l}${c?` ·`:``}</span
>`:g}${c?_`<span class="activity-feed__session-scope">${c}</span>`:g}
</span>
</span>
<span class="activity-feed__session-time">
${s?_`<span class="activity-feed__session-owner">${r}</span>`:g}
${i>0?_`<span>${ie(i,{fallback:``})}</span>`:g}
</span>
</a>
${o?_`<a
class="activity-feed__inspect-run"
href=${ht(o,e.basePath)}
>${T(`activityFeed.inspectRun`)}</a
>`:g}
</div>`}function tn(e,t){if(e.filters.query||e.filters.personId)return t.sessions.map(t=>q(e.context,t));let n=t.sessions.filter(e=>e.hasAutomation===!0);if(n.length<2)return t.sessions.map(t=>q(e.context,t));let r=e.expandedAutomationDays.has(t.key);return _`
${t.sessions.filter(e=>e.hasAutomation!==!0).map(t=>q(e.context,t))}
<button
type="button"
class="activity-feed__session activity-feed__automation-group"
data-activity-automation-group=${t.key}
aria-expanded=${String(r)}
@click=${()=>e.onAutomationDayToggle(t.key)}
>
<span class="activity-feed__automation-group-icon" aria-hidden="true">${C.clock}</span>
<span>${T(`activityFeed.automationGroup`,{count:String(n.length)})}</span>
<span class="activity-feed__automation-group-chevron" aria-hidden="true"
>${C.chevronRight}</span
>
</button>
${r?n.map(t=>q(e.context,t)):g}
`}function nn(e,t,n){let r=(t.entries?.length??0)>0,i=r&&Ge(t),a=T(r?i?`activityFeed.idle`:`activityFeed.online`:`activityFeed.offline`),o=t.entries??[],s=ft(t,n);return _`
<section class="activity-feed__identity" data-activity-identity=${t.id}>
<div class="activity-feed__identity-main">
<openclaw-viewer-avatar
.identity=${{type:`profile`,id:t.id}}
.user=${t}
.markAsViewer=${!1}
variant="profile"
></openclaw-viewer-avatar>
<div class="activity-feed__identity-copy">
<h2>${E(t)}</h2>
${t.email?_`<p>${t.email}</p>`:g}
</div>
${Ue({kind:r?i?`warn`:`ok`:`muted`,label:a})}
</div>
${o.length>0?_`<div class="activity-feed__devices">
${o.map(e=>{let t=[e.deviceFamily,e.platform,e.ip,e.timeZone].filter(Boolean).join(` · `);return _`<div class="activity-feed__device">
<span class="activity-feed__device-name"
>${e.host??T(`activityFeed.unknownDevice`)}</span
>
${t?_`<span>${t}</span>`:g}
${e.ip?_`<openclaw-ip-location .ip=${e.ip}></openclaw-ip-location>`:g}
${e.lastInputSeconds===void 0?g:_`<span
>${T(`activityFeed.lastInput`,{time:ve(e.lastInputSeconds*1e3,{suffix:!1})})}</span
>`}
</div>`})}
</div>`:g}
<div class="activity-feed__viewing">
<h3>${T(`activityFeed.viewingNow`)}</h3>
${s.length>0?_`<div class="activity-feed__viewing-list">
${s.map(t=>q(e,t))}
</div>`:_`<p class="activity-feed__empty-note">${T(`activityFeed.notViewing`)}</p>`}
</div>
</section>
`}function rn(e){let t=dt(e.result),n=new Map(e.presenceViewers.flatMap(e=>e.identity?[[e.identity.id,e]]:[])),r=e.filters.personId?n.get(e.filters.personId)??t.people.find(t=>t.id===e.filters.personId)??null:null,i=t.people.map(e=>{let t=n.get(e.id);return t?{...e,...t,count:e.count}:e}),a=e.filters.personId?i.find(t=>t.id===e.filters.personId)??r:null;return _`
<div class="activity-feed">
<div class="activity-feed__toolbar">
<label class="data-table-search activity-feed__search">
${C.search}
<input
type="search"
.value=${e.filters.query}
placeholder=${T(`activityFeed.searchPlaceholder`)}
@input=${t=>{t.currentTarget instanceof HTMLInputElement&&e.onFiltersChange({...e.filters,query:t.currentTarget.value})}}
/>
</label>
<div
class="settings-segmented activity-feed__time-filter"
role="group"
aria-label=${T(`activityFeed.time`)}
>
${pt.map(t=>_`<button
type="button"
class="settings-segmented__btn ${e.filters.time===t?`settings-segmented__btn--active`:``}"
data-compact-label=${t===`all`?T(J[t]):t}
aria-label=${T(J[t])}
aria-pressed=${String(e.filters.time===t)}
@click=${()=>e.onFiltersChange({...e.filters,time:t})}
>
${T(J[t])}
</button>`)}
</div>
${Zt(e,i,a,t.timeCount)}
</div>
<div class="activity-feed__main">
${e.loading?_`<p role="status">${T(`common.loading`)}</p>`:g}
${e.error?_`<p role="alert">
${e.error}
<button class="btn" @click=${e.onRetry}>${T(`common.retry`)}</button>
</p>`:g}
${e.result?.peopleIncomplete?_`<p role="status">${T(`activityFeed.partialHistory`)}</p>`:g}
${e.result&&e.filters.personId?r?nn(e.context,r,t.sessions):_`<section class="activity-feed__not-found" role="status">
<h2>${T(`activityFeed.notFoundTitle`)}</h2>
<p>${T(`activityFeed.notFoundDescription`)}</p>
</section>`:g}
${e.result&&(!e.filters.personId||r)?_`
<div class="activity-feed__summary">
<h2>${T(`activityFeed.sessions`)}</h2>
<span
>${T(`activityFeed.showing`,{shown:String(t.sessions.length),total:String(t.matchedCount)})}</span
>
</div>
${t.days.length>0?t.days.map(t=>_`<section class="activity-feed__day">
<h3>${en(t.timestamp)}</h3>
<div class="activity-feed__sessions">${tn(e,t)}</div>
</section>`):_`<section class="activity-feed__empty" role="status">
${T(`activityFeed.noSessions`)}
</section>`}
`:g}
</div>
</div>
`}var J;function an(){return(an=e((()=>{v(),w(),Kt(),He(),Ze(),Ke(),S(),h(),qe(),ye(),f(),M(),A(),J={"24h":`activityFeed.time24h`,"7d":`activityFeed.time7d`,"30d":`activityFeed.time30d`,all:`activityFeed.timeAll`}})))()}function on(e,n=Date.now()){let r=l(e),i=t(r?.runId),a=l(r?.data),o=r?.stream===`tool`,s=r?.stream===`item`&&t(a?.kind)===`answer_candidate`;if(!r||!o&&!s||!i||!a)return null;let c=t(r.sessionKey),u=t(r.agentId);return{stream:o?`tool`:`item`,runId:i,ts:typeof r.ts==`number`?r.ts:n,receivedAt:n,...c?{sessionKey:c}:{},...u?{agentId:u}:{},data:a}}function sn(e){if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);let t=l(e);if(!t)return null;if(typeof t.text==`string`)return t.text;let n=t.content;if(!Array.isArray(n))return null;let r=n.map(e=>{let t=l(e);return t?.type===`text`&&typeof t.text==`string`?t.text:null}).filter(e=>!!e);return r.length>0?r.join(`
`):null}function cn(e){let t=sn(e);if(t!==null)return t;if(e==null)return null;try{return JSON.stringify(e,null,2)}catch{return d(e)}}function ln(e){let t=cn(e);if(!t)return{truncated:!1};let n=ue(t),r=p(n,vn);return{text:r.text,truncated:r.truncated}}function un(e){if(e==null)return 0;if(Array.isArray(e))return e.length;let t=l(e);return t?Object.keys(t).length:1}function dn(e){return e?.isError===!0||e?.is_error===!0}function fn(e){if(t(e.phase)!==`result`)return`running`;let n=l(e.result);if(dn(e)||dn(n))return`error`;let r=t(e.status)??t(n?.status);if(r&&/error|fail|failed|failure/i.test(r))return`error`;let i=Number(n?.exitCode??e.exitCode);return Number.isFinite(i)&&i!==0?`error`:`done`}function pn(e){return yn[e]}function mn(e,t,n){let r=`${n} argument${n===1?``:`s`} hidden`;return`${e} ${pn(t)}; ${r}`}function hn(e,n){let r=n.data??{};if(n.stream===`item`)return _n(e,n);let i=t(r.toolCallId);if(!i)return e;let a=t(r.name)??`tool`,o=`${n.runId}:${i}`,s=n.receivedAt,c=typeof n.ts==`number`?n.ts:s,l=fn(r),u=ln(r.phase===`update`?r.partialResult:r.phase===`result`?r.result:null),d=e.find(e=>e.id===o),f=r.args===void 0?d?.hiddenArgumentCount??0:un(r.args),p=u.text??d?.outputPreview,m={id:o,toolCallId:i,runId:n.runId,...n.sessionKey?{sessionKey:n.sessionKey}:{},toolName:a,entryKind:`tool`,status:l,startedAt:d?.startedAt??c,updatedAt:s,durationMs:Math.max(0,s-(d?.startedAt??c)),outputTruncated:u.truncated||d?.outputTruncated===!0,summary:mn(a,l,f),hiddenArgumentCount:f,...p?{outputPreview:p}:{}};return(d?e.map(e=>e.id===o?m:e):[...e,m]).slice(-100)}function gn(e){return e===`candidate`||e===`superseded`||e===`selected`?e:null}function _n(e,n){let r=t(n.data.itemId),i=gn(n.data.status);if(!r||!i)return e;let a=`${n.runId}:answer_candidate:${r}`,o=e.find(e=>e.id===a),s=n.receivedAt,c=o?.startedAt??n.ts,l=ln(n.data.progressText),u={id:a,toolCallId:r,itemId:r,runId:n.runId,...n.sessionKey?{sessionKey:n.sessionKey}:{},toolName:`answer_candidate`,entryKind:`answer_candidate`,candidateStatus:i,status:i===`candidate`?`running`:`done`,startedAt:c,updatedAt:s,durationMs:Math.max(0,s-c),outputTruncated:l.truncated||o?.outputTruncated===!0,summary:`answer_candidate.${i}`,hiddenArgumentCount:0,...l.text?{outputPreview:l.text}:{}};return(o?e.map(e=>e.id===a?u:e):[...e,u]).slice(-100)}var vn,yn;function bn(){return(bn=e((()=>{de(),h(),vn=2e3,yn={running:`running`,done:`completed`,error:`failed`}})))()}function xn(e){return ee(e,{hour:`numeric`,minute:`2-digit`,second:`2-digit`},``)}function Sn(e){return!Number.isFinite(e)||e<0?T(`common.na`):le(e)??`0ms`}function Cn(e){return T(`activity.status.${e}`)}function Y(e){return e===1?T(`activity.argumentHiddenOne`):T(`activity.argumentsHidden`,{count:String(e)})}function wn(e){return e.entryKind===`answer_candidate`?T(`activity.answerCandidate.${e.candidateStatus??`candidate`}`):Y(e.hiddenArgumentCount)}function Tn(e){return e.entryKind===`answer_candidate`?T(`activity.answerCandidate.title`):e.toolName}function En(e,t){return!t||n([e.toolName,Tn(e),e.candidateStatus,e.status,e.summary,wn(e),e.outputPreview,e.runId,e.toolCallId,e.sessionKey].filter(Boolean).join(` `)).includes(t)}function Dn(e){return c(e.map(e=>e.toolName))}function On(e){let t=n(e.filterText);return e.entries.filter(n=>!e.statusFilters[n.status]||e.toolFilter&&n.toolName!==e.toolFilter?!1:En(n,t))}function kn(e,t){return _`
<label class="activity-status-filter">
<input
type="checkbox"
.checked=${e.statusFilters[t]}
@change=${n=>e.onStatusToggle(t,n.target.checked)}
/>
<span>${Cn(t)}</span>
</label>
`}function An(e,t){e.currentTarget instanceof Element&&e.currentTarget.previousElementSibling?.setAttribute(`aria-expanded`,String(t))}function jn(e,t){let n=!!e.toolFilter;return _`
<button
id="activity-live-filter-trigger"
type="button"
class="btn btn--sm activity-live-filter-trigger ${n?`active`:``}"
title=${T(`activity.filters`)}
aria-label=${T(`activity.filters`)}
aria-haspopup="dialog"
aria-expanded="false"
>
${C.listFilter}
</button>
<wa-popover
class="activity-live-filter-popover"
for="activity-live-filter-trigger"
placement="bottom-end"
without-arrow
@wa-show=${e=>An(e,!0)}
@wa-hide=${e=>An(e,!1)}
>
<div class="activity-live-filter-popover__panel">
<label class="field">
<span>${T(`activity.toolFilter`)}</span>
<select
class="settings-select"
aria-label=${T(`activity.toolFilter`)}
.value=${e.toolFilter}
@change=${t=>{t.currentTarget instanceof HTMLSelectElement&&e.onToolFilterChange(t.currentTarget.value)}}
>
<option value="">${T(`activity.allTools`)}</option>
${t.map(e=>_`<option value=${e}>${e}</option>`)}
</select>
</label>
</div>
</wa-popover>
`}function Mn(e,t){return _`
<div class="activity-live-toolbar">
<div class="activity-feed__search activity-live-search">
<span aria-hidden="true">${C.search}</span>
<input
class="settings-input"
type="search"
aria-label=${T(`activity.search`)}
.value=${e.filterText}
placeholder=${T(`activity.searchPlaceholder`)}
@input=${t=>{t.currentTarget instanceof HTMLInputElement&&e.onFilterTextChange(t.currentTarget.value)}}
/>
</div>
<span role="group" aria-label=${T(`activity.statusFilters`)} class="activity-status-filters">
${X.map(t=>kn(e,t))}
</span>
<span class="activity-live-autofollow">
<span>${T(`activity.autoFollow`)}</span>
${Je({checked:e.autoFollow,ariaLabel:T(`activity.autoFollow`),onChange:t=>e.onToggleAutoFollow(t)})}
</span>
${jn(e,t)}
</div>
`}function Nn(e){return In[e]}function Pn(e,t){let n=e.expandedIds.has(t.id);return _`
<details
class="activity-entry activity-entry--${t.status}"
role="listitem"
.open=${n}
@toggle=${n=>e.onEntryToggle(t.id,n.currentTarget.open)}
>
<summary class="activity-entry__summary">
<span class="activity-entry__chevron" aria-hidden="true">${C.chevronRight}</span>
<span class="activity-entry__main">
<span class="activity-entry__title">
${Ue({kind:Nn(t.status),label:Cn(t.status)})}
<span class="activity-entry__tool mono">${Tn(t)}</span>
</span>
<span class="activity-entry__text">${wn(t)}</span>
</span>
<span class="activity-entry__meta">
<span>${xn(t.updatedAt)}</span>
<span>${Sn(t.durationMs)}</span>
</span>
</summary>
<div class="activity-entry__body">
<div class="activity-entry__facts">
${t.entryKind===`answer_candidate`?_`<span class="mono"
>${T(`activity.answerCandidate.itemId`)}: ${t.itemId}</span
>`:_`
<span>${Y(t.hiddenArgumentCount)}</span>
<span class="mono">${T(`activity.toolCallId`)}: ${t.toolCallId}</span>
`}
<a
class="activity-entry__run-link mono"
href=${ht(t.runId,e.basePath)}
>${T(`activity.runId`)}: ${t.runId}</a
>
${t.sessionKey?_`<span class="mono">${T(`activity.session`)}: ${t.sessionKey}</span>`:g}
</div>
${t.outputPreview?_`
<pre class="activity-entry__preview">${t.outputPreview}</pre>
${t.outputTruncated?_`<div class="activity-entry__note">${T(`activity.outputTruncated`)}</div>`:g}
`:_`<div class="activity-entry__note">${T(`activity.noOutputPreview`)}</div>`}
</div>
</details>
`}function Fn(e){let t=Dn(e.entries),n=On(e),r=e.filterText.trim()||e.toolFilter||X.some(t=>!e.statusFilters[t]);return _`
<section class="activity-page" aria-label=${T(`activity.title`)}>
<div class="settings-section__header">
<h2 class="settings-section__heading">${T(`activity.title`)}</h2>
<div class="settings-section__actions">
<span class="activity-count" aria-live="polite">
${T(`activity.visibleCount`,{visible:String(n.length),total:String(e.entries.length)})}
</span>
<button
type="button"
class="btn btn--sm"
?disabled=${n.length===0}
@click=${e.onExpandAll}
>
${T(`activity.expandAll`)}
</button>
<button
type="button"
class="btn btn--sm"
?disabled=${e.expandedIds.size===0}
@click=${e.onCollapseAll}
>
${T(`activity.collapseAll`)}
</button>
<button
type="button"
class="btn btn--sm danger"
?disabled=${e.entries.length===0}
@click=${e.onClear}
>
${T(`activity.clear`)}
</button>
</div>
</div>
<div class="settings-group activity-group">
${Mn(e,t)}
<div
class="activity-stream"
role="list"
aria-label=${T(`activity.streamLabel`)}
@scroll=${e.onScroll}
>
${n.length===0?_`
<div class="activity-empty">
${e.entries.length===0||!r?T(`activity.empty`):T(`activity.emptyFiltered`)}
</div>
`:n.map(t=>Pn(e,t))}
</div>
</div>
</section>
`}var X,In;function Ln(){return(Ln=e((()=>{a(),v(),w(),Ke(),S(),F(),h(),M(),P(),X=[`running`,`done`,`error`],In={running:`warn`,done:`ok`,error:`danger`}})))()}function Rn(e){return e?`${e.kind}:${e.id}`:null}function Z(e){return e.mode!==`run`||!e.selector?null:`${Rn(e.selector)}:${e.decisionCursor??``}`}function zn(e){let t=o(e);return(t?.gatewayCode===`INVALID_REQUEST`||t?.code===`INVALID_REQUEST`)&&t.retryable!==!0}var Q,$,Bn;function Vn(){return(Vn=e((()=>{Re(),v(),Ce(),Ae(),je(),x(),Me(),Ee(),$e(),w(),tt(),S(),ge(),Ve(),qe(),m(),ae(),me(),nt(),xe(),M(),Ft(),Lt(),an(),A(),bn(),Ln(),$=class extends ce{constructor(...e){super(...e),this.routeSearch=``,this.routeData={mode:`sessions`,filters:{personId:null,query:``,time:`7d`},selector:null},this.entries=[],this.filterText=``,this.statusFilters={running:!0,done:!0,error:!0},this.toolFilter=``,this.expandedIds=new Set,this.expandedAutomationDays=new Set,this.autoFollow=!0,this.runInspector={status:`empty`},this.sessionKey=``,this.sessionActivity=new It(this),this.inspectorAbort=null,this.inspectorClient=null,this.inspectorEpoch=0,this.inspectorSelectorKey=null,this.presenceClient=null,this.streamFollow=new rt(this,{selector:`.activity-stream`,isEnabled:()=>this.autoFollow}),this.subscriptions=new _e(this).effect(()=>this.context?.gateway,e=>{this.applyGatewaySnapshot(e,e.snapshot,!0);let t=e.subscribeEvents(t=>{this.applyGatewayEvent(e,t,Date.now())}),n=e.subscribe(t=>this.applyGatewaySnapshot(e,t,!1));return()=>{n(),t()}})}willUpdate(e){e.has(`routeSearch`)&&(this.routeData=gt(this.routeSearch))}updated(e){e.has(`routeSearch`)&&(this.bindInspectorRoute(),this.syncSessionActivity()),this.autoFollow&&this.streamFollow.atBottom&&(e.has(`entries`)||e.has(`autoFollow`))&&this.streamFollow.schedule(e.has(`autoFollow`))}disconnectedCallback(){this.subscriptions.clear(),this.cancelInspectorRequest(),super.disconnectedCallback()}applyGatewaySnapshot(e,t,n){let r=this.sessionKey;if(this.sessionKey=re(ke().sessionKey,t.hello),(n||this.sessionKey!==r)&&this.rebuildEntries(e,t),n||t.client!==this.presenceClient){this.presenceClient=t.client;let e=t.phase===`connected`?Oe(t.hello?.snapshot):void 0;this.presencePayload=e?{presence:e}:void 0}else t.phase!==`connected`&&this.presencePayload&&(this.presencePayload=void 0);this.syncRunInspector(e,t,n),this.syncSessionActivity()}syncSessionActivity(e=!1){let t=this.context?.gateway.snapshot;this.sessionActivity.load(t?.phase===`connected`?t.client:null,this.routeData.mode===`sessions`?this.routeData.filters:null,e)}bindInspectorRoute(){let e=this.routeData,t=e?.mode===`run`?e.selector:null,n=Z(e);(n!==this.inspectorSelectorKey||e?.mode!==`run`)&&(this.inspectorSelectorKey=n,this.cancelInspectorRequest(),this.inspectorClient=null,this.runInspector=t?{status:`loading`,waitingForGateway:!0}:{status:`empty`},e?.mode===`run`&&this.syncRunInspector(this.context.gateway,this.context.gateway.snapshot,!0))}cancelInspectorRequest(){this.inspectorEpoch+=1,this.inspectorAbort?.abort(),this.inspectorAbort=null}syncRunInspector(e,t,n=!1){let r=this.routeData;if(r?.mode!==`run`)return;let i=r.selector;if(!i){this.runInspector={status:`empty`};return}if(this.inspectorSelectorKey=Z(r),t.phase!==`connected`||!t.client){this.cancelInspectorRequest(),this.inspectorClient=null,this.runInspector={status:`disconnected`};return}if(ze(t,`audit.run.inspect`)===!1){this.cancelInspectorRequest(),this.inspectorClient=t.client,this.runInspector={status:`unsupported`};return}if(!Be(t,`audit.run.inspect`,`operator.read`)){this.cancelInspectorRequest(),this.inspectorClient=t.client,this.runInspector={status:`unauthorized`};return}!n&&this.inspectorClient===t.client&&(this.runInspector.status===`loading`||this.runInspector.status===`ready`)||this.loadRunInspector(e,t.client,i)}isUnknownInspectMethod(e){return e instanceof we&&e.gatewayCode===`INVALID_REQUEST`&&(e.message===`unknown method: audit.run.inspect`||e.message===`missing scope: operator.admin`)}async loadRunInspector(e,t,n,r){this.cancelInspectorRequest();let i=this.inspectorEpoch,a=new AbortController;this.inspectorAbort=a,this.inspectorClient=t,this.runInspector=r?{...r,executionPageStatus:`loading`}:{status:`loading`,waitingForGateway:!1};let o=Z(this.routeData),s=()=>this.inspectorEpoch===i&&this.context.gateway===e&&e.snapshot.client===t&&e.snapshot.phase===`connected`&&this.routeData?.mode===`run`&&Z(this.routeData)===o,c=this.routeData.mode===`run`?this.routeData.decisionCursor:null;try{let e=n.kind===`run`?{runId:n.id,decisionLimit:50,executionLimit:50,...c?{decisionCursor:c}:{},...r?.result.nextExecutionCursor?{executionCursor:r.result.nextExecutionCursor}:{}}:{executionId:n.id,decisionLimit:50,...c?{decisionCursor:c}:{}},i=await t.request(`audit.run.inspect`,e,{signal:a.signal});if(s()){if(r?.result.identity.state===`ambiguous`&&i.identity.state===`ambiguous`){let e=new Map(r.result.identity.candidates.map(e=>[e.executionId,e]));for(let t of i.identity.candidates)e.set(t.executionId,t);this.runInspector={status:`ready`,result:{...i,identity:{...i.identity,candidates:[...e.values()]}},receiptPageCursors:r.receiptPageCursors}}else this.runInspector={status:`ready`,result:i,receiptPageCursors:_t(i.decisionDisplays,c??void 0)}}}catch(e){if(!s()||a.signal.aborted)return;this.runInspector=he(e)?{status:`unauthorized`}:this.isUnknownInspectMethod(e)?{status:`unsupported`}:r?{...r,executionPageStatus:`error`}:{status:`error`,recovery:c&&zn(e)?`restart`:`retry`}}finally{this.inspectorAbort===a&&(this.inspectorAbort=null)}}loadMoreExecutions(){let e=this.routeData,t=this.context.gateway.snapshot,n=this.runInspector;e?.mode!==`run`||e.selector?.kind!==`run`||t.phase!==`connected`||!t.client||n.status!==`ready`||n.executionPageStatus===`loading`||n.result.identity.state!==`ambiguous`||!n.result.nextExecutionCursor||this.loadRunInspector(this.context.gateway,t.client,e.selector,n)}loadMoreDecisions(){let e=this.routeData,t=this.context.gateway,n=t.snapshot,r=this.runInspector;if(e.mode!==`run`||!e.selector||n.phase!==`connected`||!n.client||r.status!==`ready`||r.decisionPageStatus===`loading`||r.result.identity.state!==`present`||!r.result.nextDecisionCursor)return;let i=r.result.nextDecisionCursor,a=e.selector,o=n.client,s=Z(e);this.cancelInspectorRequest();let c=this.inspectorEpoch,l=new AbortController;this.inspectorAbort=l,this.runInspector={...r,decisionPageStatus:`loading`};let u=()=>this.inspectorEpoch===c&&this.context.gateway===t&&t.snapshot.client===o&&t.snapshot.phase===`connected`&&Z(this.routeData)===s,d=a.kind===`run`?{runId:a.id,decisionCursor:i,decisionLimit:50,executionLimit:50}:{executionId:a.id,decisionCursor:i,decisionLimit:50};o.request(`audit.run.inspect`,d,{signal:l.signal}).then(e=>{if(!u())return;let t=vt(r.result,e);if(!t){this.runInspector={...r,decisionPageStatus:`error`};return}let n=new Map(r.receiptPageCursors);for(let t of e.decisionDisplays)n.set(t.selectorId,i);this.runInspector={status:`ready`,result:t,receiptPageCursors:n}}).catch(e=>{!u()||l.signal.aborted||(this.runInspector=he(e)?{status:`unauthorized`}:this.isUnknownInspectMethod(e)?{status:`unsupported`}:{...r,decisionPageStatus:`error`})}).finally(()=>{this.inspectorAbort===l&&(this.inspectorAbort=null)})}restartRunInspector(){let e=this.routeData;e.mode!==`run`||!e.selector||this.context.navigate(`activity`,{search:mt(e.selector)})}selectMode(e){if(e===`sessions`){this.context.navigate(`activity`,{search:``});return}e===`live`&&this.context.navigate(`activity`,{search:`?view=live`})}rebuildEntries(e,t){let n=[],r=e.eventLog,i=Q?r.indexOf(Q):-1,a=i<0?r:r.slice(0,i);for(let e of a.toReversed())n=this.reduceGatewayEvent(n,t,e.event,e.payload,e.ts);(n.length>0||this.entries.length>0)&&(this.entries=n),this.expandedIds.size>0&&(this.expandedIds=new Set),this.streamFollow.atBottom=!0}applyGatewayEvent(e,t,n){if(this.context.gateway!==e)return;if(t.event===`sessions.changed`&&this.syncSessionActivity(!0),t.event===`presence`){let e=Oe(t.payload);this.presencePayload=e?{presence:e}:void 0;return}let r=this.reduceGatewayEvent(this.entries,e.snapshot,t.event,t.payload,n);r!==this.entries&&(this.entries=r)}reduceGatewayEvent(e,t,n,r,i){if(n!==`agent`&&n!==`session.tool`)return e;let a=on(r,i);return!a||!u({sessionKey:this.sessionKey,assistantAgentId:t.assistantAgentId,hello:t.hello},a.sessionKey,a.agentId)?e:hn(e,a)}clearEntries(){Q=this.context.gateway.eventLog[0],this.entries=[],this.expandedIds=new Set,this.streamFollow.atBottom=!0}render(){let e=Fn({basePath:this.context.basePath,entries:this.entries,filterText:this.filterText,statusFilters:this.statusFilters,toolFilter:this.toolFilter,expandedIds:this.expandedIds,autoFollow:this.autoFollow,onFilterTextChange:e=>this.filterText=e,onToolFilterChange:e=>this.toolFilter=e,onStatusToggle:(e,t)=>{this.statusFilters={...this.statusFilters,[e]:t}},onToggleAutoFollow:e=>{this.autoFollow=e,e&&this.streamFollow.schedule(!0)},onClear:()=>this.clearEntries(),onExpandAll:()=>{this.expandedIds=new Set(this.entries.map(e=>e.id))},onCollapseAll:()=>{this.expandedIds=new Set},onEntryToggle:(e,t)=>{let n=new Set(this.expandedIds);t?n.add(e):n.delete(e),this.expandedIds=n},onScroll:e=>this.streamFollow.handleScroll(e)}),t=this.routeData?.mode??`live`,n=this.routeData.mode===`sessions`?this.routeData.filters:{personId:null,query:``,time:`7d`},r=We(this.presencePayload).users,i=this.sessionActivity.result?.involvingProfileId??n.personId,a=_`
${t===`run`?g:Qe({id:`activity-mode`,active:t,tabs:[{value:`sessions`,label:T(`activityFeed.sessionsMode`)},{value:`live`,label:T(`activity.runInspector.liveMode`)}],ariaLabel:T(`activity.runInspector.activityView`),panelId:`activity-mode-panel`,className:`activity-mode-tabs`,variant:`sub`,onSelect:e=>this.selectMode(e)})}
<div
id="activity-mode-panel"
role=${t===`run`?g:`tabpanel`}
aria-labelledby=${t===`run`?g:`activity-mode-tab-${t}`}
>
${t===`sessions`?rn({context:this.context,expandedAutomationDays:this.expandedAutomationDays,filters:{...n,personId:i},presenceViewers:r,result:this.sessionActivity.result,loading:this.sessionActivity.loading,error:this.sessionActivity.error,onRetry:()=>this.syncSessionActivity(!0),onAutomationDayToggle:e=>{let t=new Set(this.expandedAutomationDays);t.has(e)?t.delete(e):t.add(e),this.expandedAutomationDays=t},onFiltersChange:e=>this.context.navigate(`activity`,{search:ot(e)})}):t===`run`?_`<a
class="activity-run-inspector-back"
href=${Pe(`activity`,this.context.basePath)}
>${C.arrowLeft}${T(`activityFeed.backToSessions`)}</a
>
${Pt({basePath:this.context.basePath,state:this.runInspector,onLoadMoreExecutions:()=>this.loadMoreExecutions(),onLoadMoreDecisions:()=>this.loadMoreDecisions(),selectorId:this.routeData.mode===`run`?this.routeData.selectorId:null,selector:this.routeData.mode===`run`?this.routeData.selector:null,onRestart:()=>this.restartRunInspector(),onRetry:()=>this.syncRunInspector(this.context.gateway,this.context.gateway.snapshot,!0)})}`:_`<div id="activity-live-panel">${e}</div>`}
</div>
`;return _`
<section class="content-header">
<div>
<div class="page-title">${De(`activity`)}</div>
${t===`live`?g:_`<div class="page-sub">${T(`subtitles.activity`)}</div>`}
</div>
</section>
${et(a,{fillHeight:!0})}
`}},s([Le({context:Ne,subscribe:!0})],$.prototype,`context`,void 0),s([y({attribute:!1})],$.prototype,`routeSearch`,void 0),s([b()],$.prototype,`entries`,void 0),s([b()],$.prototype,`filterText`,void 0),s([b()],$.prototype,`statusFilters`,void 0),s([b()],$.prototype,`toolFilter`,void 0),s([b()],$.prototype,`expandedIds`,void 0),s([b()],$.prototype,`expandedAutomationDays`,void 0),s([b()],$.prototype,`autoFollow`,void 0),s([b()],$.prototype,`runInspector`,void 0),s([b()],$.prototype,`presencePayload`,void 0),Bn={header:!0,render:e=>_`<openclaw-activity-page
.routeSearch=${typeof e==`string`?e:``}
></openclaw-activity-page>`},customElements.get(`openclaw-activity-page`)||customElements.define(`openclaw-activity-page`,$)})))()}Vn();export{Bn as activityPageComponent};
//# sourceMappingURL=activity-page-D7YouqRi.js.map