salidium 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,63 +1,59 @@
1
1
  # Salidium
2
2
 
3
- **Understand what your coding agent did.** Salidium turns Claude Code and Codex sessions into a
4
- clear, evidence-linked report of what changed, why, what was verified, and what needs you.
3
+ **Visualize your agent's work with diagrams and evidence you can check, not walls of text.**
4
+
5
+ Reading back a Claude Code or Codex run means scrolling the whole transcript. Salidium reads it and
6
+ draws what happened. You do not have to wait for the run to end. The report updates while the agent
7
+ is still working, and an explanation is written at the end of each turn.
5
8
 
6
9
  ```bash
7
10
  npx salidium
8
11
  ```
9
12
 
13
+ <picture>
14
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twinkling-reality/salidium/main/apps/site/public/tour-dark.gif">
15
+ <img src="https://raw.githubusercontent.com/twinkling-reality/salidium/main/apps/site/public/tour-light.gif" alt="Salidium in use: a report of a checkout fix, the session list folded away to give the report the window, the Evidence panel showing which changed files have had a passing check, the record behind one of them, and the report wound back to a moment when the check was still green.">
16
+ </picture>
17
+
10
18
  Salidium is [MIT-licensed](LICENSE), open source, and local-first. The report, event store, and
11
19
  interface run on your machine with no Salidium telemetry. Raw transcripts stay local. Optional
12
20
  generated explanations send a bounded, redacted excerpt through your installed agent CLI, which
13
21
  may contact its provider; they can be turned off.
14
22
 
15
- ## See the work without reading every line
16
-
17
- ```text
18
- Agent response Salidium report
19
- ────────────────────────────── ──────────────────────────────
20
- "The cursor advanced before the WHY
21
- storage transaction committed..." → Evidence could be lost before storage was durable.
22
-
23
- "I now queue the record, flush, HOW
24
- then advance the cursor." → Queue the record. Flush storage. Advance the cursor.
25
-
26
- test/build output → VERIFIED 42 tests passed
27
- unsupported agent claim → REVIEW Claim needs evidence
28
- ```
29
-
30
- Salidium gives you:
31
-
32
- - **What changed** across the agent's work and files.
33
- - **Why and how**, with reported reasoning kept clearly attributed.
34
- - **Verified results** parsed from real test, build, typecheck, and lint output.
35
- - **Left and Review** for unfinished work, failures, unknowns, and claims needing a person.
36
- - **Evidence and Rewind** to inspect the original record or reconstruct an earlier moment.
37
-
38
- Supported agents: **Claude Code** and **Codex**. On first run, Salidium finds them, shows the local
39
- settings it wants to update, asks permission, and opens the local interface. Node.js 24 or newer is
40
- required.
41
-
42
- ## Trust model
43
-
44
- The complete account-free local product lives in this repository. A hosted Salidium service may
45
- later provide cross-device or team coordination, but the local product does not require it and raw
46
- provider evidence remains local by default. Read the
47
- [open-source and hosted-service boundary](docs/open-source-boundary.md) for the exact public and
48
- private split.
49
-
50
- Optional generated explanations send a bounded, locally redacted excerpt through the Claude or
51
- Codex CLI you selected; that CLI may contact its provider and use your plan or API allowance. Set
52
- `SALIDIUM_EXPLAINER=off` to disable them. The fact-based report still works.
53
-
54
- ## Learn more
55
-
56
- - [Using Salidium](docs/using-salidium.md): setup, report guide, commands, privacy, and recovery
57
- - [Architecture](docs/architecture.md): evidence, replay, storage, and extension boundaries
58
- - [Long-term intelligence](docs/long-term-intelligence.md): memory, retrieval, consent, and evaluation
59
- - [Evaluation protocol](docs/evaluation-protocol.md): how a future recall claim would have to be proven
60
- - [Contributing](CONTRIBUTING.md) and [security policy](SECURITY.md)
23
+ <picture>
24
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/twinkling-reality/salidium/main/apps/site/public/report-dark.png">
25
+ <img src="https://raw.githubusercontent.com/twinkling-reality/salidium/main/apps/site/public/report-light.png" alt="A full report: the verdict, Why drawn as two paths converging on one order charged twice, How drawn as one idempotency key per order, and the approach the agent abandoned beside the one it adopted.">
26
+ </picture>
27
+
28
+ Supported agents: Claude Code and Codex. Node.js 24 or newer is required. On first run Salidium
29
+ finds the agents, shows the local settings it wants to update, asks permission, and opens the
30
+ interface.
31
+
32
+ ## Documentation
33
+
34
+ The documentation is at [salidium.com/docs](https://salidium.com/docs).
35
+
36
+ 1. [Install](https://salidium.com/docs/install)
37
+ 2. [Opening the page](https://salidium.com/docs/the-page)
38
+ 3. [Sessions](https://salidium.com/docs/sessions)
39
+ 4. [Reading a report](https://salidium.com/docs/report)
40
+ 5. [Evidence](https://salidium.com/docs/evidence)
41
+ 6. [Rewind, History and Quantities](https://salidium.com/docs/rewind)
42
+ 7. [Records](https://salidium.com/docs/records)
43
+ 8. [How we know](https://salidium.com/docs/provenance)
44
+ 9. [Explanations](https://salidium.com/docs/explanations)
45
+ 10. [What stays on your machine](https://salidium.com/docs/local)
46
+ 11. [Keyboard](https://salidium.com/docs/keyboard)
47
+ 12. [CLI](https://salidium.com/docs/cli)
48
+ 13. [Environment](https://salidium.com/docs/environment)
49
+ 14. [Limits](https://salidium.com/docs/limits)
50
+
51
+ In this repository: [Using Salidium](docs/using-salidium.md),
52
+ [architecture](docs/architecture.md), the
53
+ [open-source and hosted-service boundary](docs/open-source-boundary.md),
54
+ [long-term intelligence](docs/long-term-intelligence.md) and its
55
+ [evaluation protocol](docs/evaluation-protocol.md), [contributing](CONTRIBUTING.md), and the
56
+ [security policy](SECURITY.md).
61
57
 
62
58
  ## Development
63
59
 
@@ -69,5 +65,5 @@ pnpm test
69
65
  pnpm build
70
66
  ```
71
67
 
72
- Run from source with `pnpm salidium`. The public CLI is bundled as one self-contained script; the
73
- separately releasable `@salidium/sync-contract` contains only strict interoperability schemas.
68
+ Run from source with `pnpm salidium`. The public CLI is bundled as one self-contained script, and
69
+ the separately releasable `@salidium/sync-contract` contains only strict interoperability schemas.
@@ -26422,7 +26422,7 @@ function providerDisplayName(provider, providers = []) {
26422
26422
  }
26423
26423
 
26424
26424
  // src/main.ts
26425
- var HELP = `salidium \u2014 see what your coding agent did, why, how, what's verified, what's left, what needs you.
26425
+ var HELP = `salidium: see what your coding agent did, why, how, what is verified, what is left, and what it flagged for a human.
26426
26426
 
26427
26427
  Usage:
26428
26428
  salidium Connect detected agents on first run, then start and open Salidium
@@ -83,4 +83,4 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
83
83
  `)){let e=Ts(n);if(e.length!==0)return e.length>t?`${e.slice(0,t-1).trimEnd()}…`:e}return``}var gc=[{runner:`vitest`,method:`test`,pattern:/^vitest(\s|$)/},{runner:`jest`,method:`test`,pattern:/^jest(\s|$)/},{runner:`playwright`,method:`test`,pattern:/^playwright\s+test(\s|$)/},{runner:`mocha`,method:`test`,pattern:/^mocha(\s|$)/},{runner:`pytest`,method:`test`,pattern:/^(pytest|py\.test)(\s|$)/},{runner:`cargo`,method:`test`,pattern:/^cargo\s+(nextest\s+run|test)(\s|$)/},{runner:`go`,method:`test`,pattern:/^go\s+test(\s|$)/},{runner:`xcodebuild`,method:`test`,pattern:/^xcodebuild\b.*\stest(-without-building)?(\s|$)/},{runner:`swift`,method:`test`,pattern:/^swift\s+test(\s|$)/},{runner:`dotnet`,method:`test`,pattern:/^dotnet\s+test(\s|$)/},{runner:`rspec`,method:`test`,pattern:/^rspec(\s|$)/},{runner:`phpunit`,method:`test`,pattern:/^phpunit(\s|$)/},{runner:`mix`,method:`test`,pattern:/^mix\s+test(\s|$)/},{runner:`gradle`,method:`test`,pattern:/^gradlew?\s+(:[\w-]+:)?test(\s|$)/},{runner:`maven`,method:`test`,pattern:/^mvn\s+(-[^\s]+\s+)*(test|verify)(\s|$)/},{runner:`node-test`,method:`test`,pattern:/^node\s+(--[^\s]+\s+)*--test(\s|$)/},{runner:`tsc`,method:`typecheck`,pattern:/^tsc(\s|$)/},{runner:`mypy`,method:`typecheck`,pattern:/^mypy(\s|$)/},{runner:`pyright`,method:`typecheck`,pattern:/^pyright(\s|$)/},{runner:`eslint`,method:`lint`,pattern:/^eslint(\s|$)/},{runner:`biome`,method:`lint`,pattern:/^biome\s+(check|lint|ci)(\s|$)/},{runner:`ruff`,method:`lint`,pattern:/^ruff\s+(check|format\s+--check)(\s|$)/},{runner:`clippy`,method:`lint`,pattern:/^cargo\s+clippy(\s|$)/},{runner:`golangci-lint`,method:`lint`,pattern:/^golangci-lint\s+run(\s|$)/},{runner:`cargo-build`,method:`build`,pattern:/^cargo\s+(build|check)(\s|$)/},{runner:`go-build`,method:`build`,pattern:/^go\s+(build|vet)(\s|$)/},{runner:`xcodebuild`,method:`build`,pattern:/^xcodebuild(\s|$)/},{runner:`swift-build`,method:`build`,pattern:/^swift\s+build(\s|$)/},{runner:`vite-build`,method:`build`,pattern:/^vite\s+build(\s|$)/},{runner:`make`,method:`build`,pattern:/^make(\s|$)/},{runner:`npm-script`,method:`test`,pattern:/^(npm|pnpm|yarn|bun)\s+(run\s+)?test(:[\w-]+)?(\s|$)/,scopeUnknown:!0},{runner:`npm-script`,method:`typecheck`,pattern:/^(npm|pnpm|yarn|bun)\s+(run\s+)?(typecheck|type-check|tsc)(\s|$)/,scopeUnknown:!0},{runner:`npm-script`,method:`lint`,pattern:/^(npm|pnpm|yarn|bun)\s+(run\s+)?lint(\s|$)/,scopeUnknown:!0},{runner:`npm-script`,method:`build`,pattern:/^(npm|pnpm|yarn|bun)\s+(run\s+)?build(\s|$)/,scopeUnknown:!0}],_c=/(^|\s)(--watch(=\S+)?|-w|--watchAll)(\s|$)/,vc=/(^|\s)(-k|-t|--grep|-g|--filter|-run|--only-testing|--testNamePattern|--testPathPattern|-x|--bail)(\s|=)/,yc=new Set(`run.test.lint.build.typecheck.type-check.start.dev.exec.dlx.x.add.install.i.remove.rm.update.up.create.init.publish.link.why.ls.list.outdated.audit.view.info.config.cache.store.setup.env.patch`.split(`.`));function bc(e){let t=[];for(let n of Ec(e)){let e=n.real.trim();if(!e)continue;let r=e.split(/\s+/);for(;r.length&&/^[A-Za-z_][A-Za-z0-9_]*=/.test(r[0]??``);)r.shift();if(r.length===0||r[0]===`cd`)continue;for(let e=0;e<3;e++){let e=r[0]??``,t=r[1]??``;if(e===`npx`||e===`bunx`||e===`yarn`){if(e===`yarn`&&(yc.has(t)||t.startsWith(`-`)||!t))break;r.shift(),r[0]?.startsWith(`-`)&&r.shift();continue}if((e===`pnpm`||e===`npm`||e===`bun`)&&(t===`exec`||t===`dlx`||t===`x`)){r.splice(0,2);continue}if(e===`pnpm`&&t&&!yc.has(t)&&!t.startsWith(`-`)){r.shift();continue}if((e===`python`||e===`python3`)&&t===`-m`){r.splice(0,2);continue}if(e===`bundle`&&t===`exec`||(e===`poetry`||e===`uv`||e===`pipenv`)&&t===`run`){r.splice(0,2);continue}break}if(r.length===0)continue;let i=r[0]??``,a=i.slice(i.lastIndexOf(`/`)+1);t.push([a,...r.slice(1)].join(` `))}return t}function xc(e){return e.split(/\s+/).slice(1).some(e=>!e.startsWith(`-`)&&/\.(test|spec)\.[cm]?[jt]sx?$|\/|\.py$|\.rs$|\.go$|_test\b/.test(e))}function Sc(e){for(let t of bc(e))for(let e of gc){if(!e.pattern.test(t))continue;let n=_c.test(t),r=e.scopeUnknown?`unknown`:`full`;return!e.scopeUnknown&&(vc.test(t)||xc(t))&&(r=`partial`),{method:e.method,runner:e.runner,scope:r,watch:n}}}var Cc=[{id:`rm-rf`,pattern:/(^|\s)rm\s+(-[a-zA-Z]*r[a-zA-Z]*f|-[a-zA-Z]*f[a-zA-Z]*r)\b/,summary:`Recursive force delete`},{id:`git-force-push`,pattern:/(^|\s)git\s+push\b[^|;&]*(\s--force\b|\s-f\b|\s--force-with-lease\b)/,summary:`Force push`},{id:`git-reset-hard`,pattern:/(^|\s)git\s+reset\s+--hard\b/,summary:`Hard reset`},{id:`git-clean`,pattern:/(^|\s)git\s+clean\s+-[a-zA-Z]*f/,summary:`git clean -f`},{id:`git-checkout-discard`,pattern:/(^|\s)git\s+(checkout|restore)\s+(--\s+)?\.(\s|$)/,summary:`Discard working tree changes`},{id:`drop-table`,pattern:/\bdrop\s+(table|database|schema)\b/i,summary:`DROP TABLE/DATABASE`},{id:`no-verify`,pattern:/(^|\s)git\s+(commit|push)\b[^|;&]*\s--no-verify\b/,summary:`Skipped git hooks (--no-verify)`},{id:`chmod-777`,pattern:/(^|\s)chmod\s+(-R\s+)?777\b/,summary:`chmod 777`},{id:`sudo`,pattern:/(^|\s)sudo\s/,summary:`sudo`}];function wc(e){let t=e=>e.replace(/[^\n]/g,` `);return e.replace(/<<-?\s*(['"]?)([A-Za-z_][A-Za-z0-9_]*)\1[\s\S]*?^[ \t]*\2[ \t]*$/gm,t).replace(/'[^']*'/g,t).replace(/"[^"]*"/g,t)}var Tc=/&&|\|\||;|\||\n/g;function Ec(e){let t=wc(e),n=[],r=0;Tc.lastIndex=0;for(let i=Tc.exec(t);i;i=Tc.exec(t))n.push({real:e.slice(r,i.index),masked:t.slice(r,i.index)}),r=i.index+i[0].length;return n.push({real:e.slice(r),masked:t.slice(r)}),n}function Dc(e){let t=Ec(e);for(let e of Cc){let n=t.find(t=>e.pattern.test(t.masked));if(n)return{id:e.id,summary:e.summary,segment:n.real.trim()}}}var Oc=String.raw`(?:(?:-C\s+\S+|-c\s+\S+|--[\w-]+(?:=\S+)?|-\w)\s+)*`,kc=new RegExp(String.raw`(^|\s)git\s+${Oc}commit\b`),Ac=new RegExp(String.raw`(^|\s)git\s+${Oc}push\b`);function jc(e){if(Ac.test(e))return`push`;if(kc.test(e))return`commit`}var Mc=/\x1b\[[0-9;?]*[ -/]*[@-~]/g;function Nc(e){return e.replace(Mc,``)}function V(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isFinite(t)?t:void 0}function Pc(e,t){let n,r,i=new RegExp(e.source,e.flags.includes(`g`)?e.flags:`${e.flags}g`);for(;(n=i.exec(t))!==null;)r=n;return r}function Fc(e){let t={};for(let n of e.matchAll(/(\d+)\s+(failed|passed|skipped|todo|pending|expected fail|flaky)/g)){let e=Number(n[1]);switch(n[2]){case`failed`:t.failed=(t.failed??0)+e;break;case`passed`:t.passed=(t.passed??0)+e;break;default:t.skipped=(t.skipped??0)+e}}return t}function Ic(e,t){let n=!1,r={pass:0,fail:0};for(let i of t.matchAll(e))n=!0,i[1]===`pass`?r.pass+=V(i[2])??0:r.fail+=V(i[2])??0;return n?r:void 0}function Lc(e){return e?(e.failed??0)>0?`fail`:(e.passed??0)>0?`pass`:`unknown`:`unknown`}var Rc={vitest:e=>{let t=Pc(/^\s*Tests\s+(.+?)\s*\((\d+)\)\s*$/m,e),n=Pc(/^\s*Test Files\s+(.+?)\s*\((\d+)\)\s*$/m,e),r=t??n;if(!r)return/No test files found/i.test(e)?{runner:`vitest`,outcome:`unknown`,rule:`vitest.none`}:void 0;let i=Fc(r[1]??``);return i.total=V(r[2]),{runner:`vitest`,outcome:Lc(i),counts:i,rule:`vitest.summary`}},jest:e=>{let t=Pc(/^Tests:\s+(.+?),\s*(\d+)\s+total\s*$/m,e);if(!t)return;let n=Fc(t[1]??``);return n.total=V(t[2]),{runner:`jest`,outcome:Lc(n),counts:n,rule:`jest.summary`}},pytest:e=>{let t=Pc(/^=+\s+(.+?)\s+in\s+[\d.]+s(?:\s+\([^)]*\))?\s+=+\s*$/m,e);if(!t)return/no tests ran/i.test(e)?{runner:`pytest`,outcome:`unknown`,rule:`pytest.none`}:void 0;let n={};for(let e of(t[1]??``).matchAll(/(\d+)\s+(failed|passed|skipped|deselected|xfailed|xpassed|errors?|warnings?)/g)){let t=Number(e[1]),r=e[2]??``;r===`failed`||r.startsWith(`error`)?n.failed=(n.failed??0)+t:r===`passed`||r===`xpassed`?n.passed=(n.passed??0)+t:(r===`skipped`||r===`xfailed`||r===`deselected`)&&(n.skipped=(n.skipped??0)+t)}return n.total=(n.passed??0)+(n.failed??0)+(n.skipped??0),{runner:`pytest`,outcome:Lc(n),counts:n,rule:`pytest.summary`}},cargo:e=>{let t=[...e.matchAll(/^test result: (ok|FAILED)\. (\d+) passed; (\d+) failed; (\d+) ignored/gm)];if(t.length===0)return/^error(\[E\d+\])?:/m.test(e)?{runner:`cargo`,outcome:`fail`,rule:`cargo.compile-error`}:void 0;let n={passed:0,failed:0,skipped:0},r=!1;for(let e of t)e[1]===`FAILED`&&(r=!0),n.passed=(n.passed??0)+Number(e[2]),n.failed=(n.failed??0)+Number(e[3]),n.skipped=(n.skipped??0)+Number(e[4]);return n.total=(n.passed??0)+(n.failed??0)+(n.skipped??0),{runner:`cargo`,outcome:r||(n.failed??0)>0?`fail`:`pass`,counts:n,rule:`cargo.summary`}},go:e=>{let t=[...e.matchAll(/^(ok|FAIL|\?)\s+(\S+)/gm)];if(t.length===0)return;let n=[...e.matchAll(/^\s*--- (PASS|FAIL|SKIP): /gm)],r={};return n.length>0&&(r.passed=n.filter(e=>e[1]===`PASS`).length,r.failed=n.filter(e=>e[1]===`FAIL`).length,r.skipped=n.filter(e=>e[1]===`SKIP`).length,r.total=n.length),{runner:`go`,outcome:t.some(e=>e[1]===`FAIL`)||/\[build failed\]/.test(e)?`fail`:`pass`,counts:n.length?r:void 0,rule:`go.package-lines`}},xcodebuild:e=>{let t=Pc(/\*\* (TEST|BUILD) (SUCCEEDED|FAILED|EXECUTE FAILED) \*\*/,e),n=Pc(/Executed (\d+) tests?, with (?:(\d+) tests? skipped and )?(\d+) failures?/,e);if(!t&&!n)return;let r=n?{total:V(n[1]),skipped:V(n[2])??0,failed:V(n[3]),passed:(V(n[1])??0)-(V(n[3])??0)-(V(n[2])??0)}:void 0;return{runner:`xcodebuild`,outcome:t?t[2]===`SUCCEEDED`?`pass`:`fail`:Lc(r),counts:r,rule:`xcodebuild.marker`}},swift:e=>{let t=Pc(/Test run with (\d+) tests?(?: in \d+ suites?)? (passed|failed) after [\d.]+ seconds(?: with (\d+) issues?)?/,e),n=Pc(/Executed (\d+) tests?, with (?:(\d+) tests? skipped and )?(\d+) failures?/,e);if(!t&&!n)return/^error:/m.test(e)||/Compiling.*\n.*error:/.test(e)?{runner:`swift`,outcome:`fail`,rule:`swift.compile-error`}:void 0;let r={},i=`unknown`;if(t){r.total=(r.total??0)+(V(t[1])??0);let e=V(t[3])??0;r.failed=(r.failed??0)+(t[2]===`failed`?Math.max(1,e):0),i=t[2]===`passed`?`pass`:`fail`}n&&(r.total=(r.total??0)+(V(n[1])??0),r.failed=(r.failed??0)+(V(n[3])??0),r.skipped=(r.skipped??0)+(V(n[2])??0),(V(n[3])??0)>0?i=`fail`:i===`unknown`&&(i=`pass`));let a=(r.total??0)-(r.failed??0)-(r.skipped??0);return a>=0&&(r.passed=a),{runner:`swift`,outcome:i,counts:r,rule:`swift.summary`}},playwright:e=>{let t=Pc(/^\s*(\d+) passed(?: \([^)]*\))?\s*$/m,e),n=Pc(/^\s*(\d+) failed\s*$/m,e),r=Pc(/^\s*(\d+) skipped\s*$/m,e),i=Pc(/^\s*(\d+) flaky\s*$/m,e);if(!t&&!n)return;let a={passed:V(t?.[1])??0,failed:V(n?.[1])??0,skipped:(V(r?.[1])??0)+(V(i?.[1])??0)};return a.total=(a.passed??0)+(a.failed??0)+(a.skipped??0),{runner:`playwright`,outcome:Lc(a),counts:a,rule:`playwright.summary`}},mocha:e=>{let t=Pc(/^\s*(\d+) passing/m,e),n=Pc(/^\s*(\d+) failing/m,e),r=Pc(/^\s*(\d+) pending/m,e);if(!t&&!n)return;let i={passed:V(t?.[1])??0,failed:V(n?.[1])??0,skipped:V(r?.[1])??0};return i.total=(i.passed??0)+(i.failed??0)+(i.skipped??0),{runner:`mocha`,outcome:Lc(i),counts:i,rule:`mocha.summary`}},"node-test":e=>{let t=Ic(/^# (pass|fail) (\d+)$/gm,e),n=Ic(/^ℹ (pass|fail) (\d+)$/gm,e),r=n??t;if(!r)return;let i={passed:r.pass,failed:r.fail};return i.total=r.pass+r.fail,{runner:`node-test`,outcome:Lc(i),counts:i,rule:n?`node-test.spec`:`node-test.tap`}},astro:e=>{let t=Pc(/^Result \(\d+ files?\):[ \t]*\n-[ \t]*(\d+) errors?/m,e);if(t){let e=V(t[1])??0;return{runner:`astro`,outcome:e>0?`fail`:`pass`,counts:{failed:e},rule:`astro.check`}}if(/\[build\] Complete!/.test(e))return{runner:`astro`,outcome:`pass`,rule:`astro.build`}},dotnet:e=>{let t=Pc(/(Passed|Failed)!\s+-\s+Failed:\s+(\d+),\s+Passed:\s+(\d+),\s+Skipped:\s+(\d+),\s+Total:\s+(\d+)/,e);if(!t)return;let n={failed:V(t[2]),passed:V(t[3]),skipped:V(t[4]),total:V(t[5])};return{runner:`dotnet`,outcome:Lc(n),counts:n,rule:`dotnet.summary`}},rspec:e=>{let t=Pc(/^(\d+) examples?, (\d+) failures?(?:, (\d+) pending)?/m,e);if(!t)return;let n={total:V(t[1]),failed:V(t[2]),skipped:V(t[3])??0};return n.passed=(n.total??0)-(n.failed??0)-(n.skipped??0),{runner:`rspec`,outcome:Lc(n),counts:n,rule:`rspec.summary`}},mix:e=>{let t=Pc(/^(\d+) tests?, (\d+) failures?/m,e);if(!t)return;let n={total:V(t[1]),failed:V(t[2])};return n.passed=(n.total??0)-(n.failed??0),{runner:`mix`,outcome:Lc(n),counts:n,rule:`mix.summary`}},phpunit:e=>{let t=Pc(/^OK \((\d+) tests?, \d+ assertions?\)/m,e);if(t)return{runner:`phpunit`,outcome:`pass`,counts:{total:V(t[1]),passed:V(t[1]),failed:0},rule:`phpunit.ok`};let n=Pc(/^Tests: (\d+), Assertions: \d+(?:, Failures: (\d+))?(?:, Errors: (\d+))?/m,e);if(!n)return;let r=(V(n[2])??0)+(V(n[3])??0);return{runner:`phpunit`,outcome:r>0?`fail`:`pass`,counts:{total:V(n[1]),failed:r,passed:(V(n[1])??0)-r},rule:`phpunit.summary`}},tsc:e=>{let t=Pc(/Found (\d+) errors?/,e);if(t)return{runner:`tsc`,outcome:Number(t[1])>0?`fail`:`pass`,counts:{failed:V(t[1])},rule:`tsc.found`};if(/error TS\d+:/.test(e))return{runner:`tsc`,outcome:`fail`,counts:{failed:(e.match(/error TS\d+:/g)??[]).length},rule:`tsc.errors`}},eslint:e=>{let t=Pc(/✖ (\d+) problems? \((\d+) errors?, (\d+) warnings?\)/,e);if(t)return{runner:`eslint`,outcome:Number(t[2])>0?`fail`:`pass`,counts:{failed:V(t[2])},rule:`eslint.summary`}},biome:e=>{let t=Pc(/Found (\d+) errors?/,e);if(t)return{runner:`biome`,outcome:Number(t[1])>0?`fail`:`pass`,counts:{failed:V(t[1])},rule:`biome.errors`};if(/Checked \d+ files? in/.test(e))return{runner:`biome`,outcome:`pass`,rule:`biome.checked`}}},zc={"npm-script":[`vitest`,`jest`,`playwright`,`mocha`,`node-test`,`tsc`,`eslint`,`biome`,`pytest`,`astro`],ruff:[],mypy:[],pyright:[],clippy:[`cargo`],"cargo-build":[`cargo`],"go-build":[`go`],"swift-build":[`swift`],"vite-build":[],make:[`vitest`,`jest`,`pytest`,`cargo`,`go`],gradle:[],maven:[],"golangci-lint":[]},H={vitest:`test`,jest:`test`,playwright:`test`,mocha:`test`,"node-test":`test`,pytest:`test`,cargo:`test`,go:`test`,swift:`test`,dotnet:`test`,rspec:`test`,mix:`test`,phpunit:`test`,xcodebuild:`build`,astro:`build`,tsc:`typecheck`,eslint:`lint`,biome:`lint`};function Bc(e,t,n){let r=Nc(t),i=Rc[e];if(i){let e=i(r);if(e)return e}let a=zc[e]??[],o=n===void 0?a:[...a.filter(e=>H[e]===n),...a.filter(e=>H[e]!==n)];for(let e of o){let t=Rc[e]?.(r);if(t)return t}}Object.keys(Rc);function Vc(e,t){if(e.input.kind!==`command`)return;let n=Sc(e.input.command);if(!n||n.watch||e.input.background)return;let r=e.result?.kind===`command`?e.result:void 0,i=e.exit??r?.exit??{observation:`unknown`},a=r?.outputExcerpt??e.errorExcerpt??``,o=Bc(n.runner,a,n.method),s=(o?H[o.runner]:void 0)??n.method,c=[];r?.truncated&&c.push(`output-truncated`),n.scope===`partial`&&c.push(`scope-partial`),o||c.push(`no-summary-parsed`);let l=`unknown`,u=`inferred`,d=i.observation===`inferred-failure`||i.observation===`explicit`&&(i.code??0)!==0,f=i.observation===`inferred-success`||i.observation===`explicit`&&i.code===0;o&&o.outcome!==`unknown`?(l=o.outcome,o.outcome===`pass`&&d?(l=`partial`,c.push(`exit-summary-mismatch`)):o.outcome===`fail`&&f&&c.push(`exit-masked`),u=i.observation===`explicit`?`observed`:`inferred`):d?(l=`fail`,u=i.observation===`explicit`?`observed`:`inferred`):f?(l=`pass`,u=i.observation===`explicit`?`observed`:`inferred`,i.observation!==`explicit`&&c.push(`exit-inferred`)):l=`unknown`,e.status===`running`&&(l=`unknown`),(r?.interrupted||r?.timedOut)&&(l=`unknown`,c.push(r.interrupted?`interrupted`:`timed-out`));let p=l===`fail`||l===`partial`?Hc(a,800):void 0;return{id:e.callId,callId:e.callId,turnId:e.turnId,at:e.endedAt??e.startedAt,seq:t,command:e.input.command,runner:o?.runner??n.runner,method:s,outcome:l,counts:o?.counts,scope:n.scope,exit:i,outcomeEpistemic:u,caveats:c,failureExcerpt:p,stale:!1}}function Hc(e,t){return e.length<=t?e:e.slice(e.length-t)}var Uc=class{ordinal=0;changes=[];sessionId;event;constructor(e,t){this.sessionId=e,this.event=t}add(e,t,n,r,i){this.changes.push({sessionId:this.sessionId,seq:this.event.seq,ordinal:this.ordinal++,ts:this.event.ts,facet:e,summary:U(t,160),epistemic:n,refs:i??[this.event.id],...r?{detail:r}:{}})}};function U(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t-1).trimEnd()}…`:n}function Wc(e){let t=Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`));return t>=0?e.slice(t+1):e}function Gc(e){return e.slice(0,7)}function Kc(e){if(e.endedAt)return`ended`;if(e.waiting)return`waiting`;let t=e.turns[e.turns.length-1];return t&&!t.endedAt||e.running.length>0?`working`:t||e.startedAt?`idle`:`unknown`}function qc(e,t,n,r){if(e.review.some(e=>e.id===r.id&&e.resolvedSeq===void 0))return;let i=r.instance?`${r.label}: ${r.instance}`:r.label;e.review.push({...r,summary:i,refs:r.refs??[t.id],createdSeq:t.seq,createdAt:t.ts,epistemic:r.epistemic??`inferred`}),n.changes.some(e=>e.facet===`review`&&e.summary===U(i,160))||n.add(`review`,i,r.epistemic??`inferred`,{rule:r.rule,severity:r.severity})}function Jc(e,t,n){for(let r of e.review)r.resolvedSeq===void 0&&n(r)&&(r.resolvedSeq=t.seq)}var Yc=/\b(?:all\s+)?(tests?|checks?|build|typecheck|lint)\s+(?:are\s+|is\s+|now\s+|still\s+)?(pass|passes|passed|passing|green|succeeds|succeeded|clean)\b/i,Xc=/\b(not|n't|never|should|will|would|until|once|need to|needs to|make sure|to see if|whether|if)\b[^.\n]{0,40}$/i;function Zc(e){let t=Yc.exec(e);if(!t)return!1;let n=e.slice(Math.max(0,t.index-60),t.index);return!Xc.test(n)}function Qc(e,t,n){let r=e.verifications[e.verifications.length-1];if(!(!r||r.seq!==t.seq)){if(r.outcome===`fail`)qc(e,t,n,{id:`verification-failed:${r.method}`,rule:`verification-failed`,severity:`high`,label:el(r),epistemic:r.outcomeEpistemic});else if(r.outcome===`pass`&&r.scope!==`partial`){let n=r.method!==`lint`;Jc(e,t,e=>e.id===`verification-failed:${r.method}`||n&&e.rule===`changes-unverified`)}}}function $c(e,t,n){switch(t.kind){case`permission.requested`:qc(e,t,n,{id:`waiting:permission:${t.seq}`,rule:`waiting-permission`,severity:`high`,label:`Waiting for your permission`,instance:t.summary,epistemic:`observed`});break;case`notification`:e.waiting?.kind===`input`&&e.waiting.seq===t.seq&&qc(e,t,n,{id:`waiting:input:${t.seq}`,rule:`waiting-input`,severity:`high`,label:`Agent needs input`,instance:U(t.message,120),epistemic:`observed`});break;case`tool.called`:if(t.input.kind===`question`&&qc(e,t,n,{id:`waiting:question:${t.callId}`,rule:`waiting-question`,severity:`high`,label:`Asked you a question`,instance:U(t.input.questions[0]??`a question`,120),epistemic:`observed`}),t.input.kind===`command`){let r=Dc(t.input.command);r&&qc(e,t,n,{id:`destructive:${t.callId}`,rule:`destructive:${r.id}`,severity:r.id===`sudo`?`info`:`medium`,label:r.summary,instance:U(r.segment,100),epistemic:`observed`})}Qc(e,t,n),Jc(e,t,e=>e.rule===`waiting-permission`||e.rule===`waiting-input`);break;case`tool.completed`:case`tool.failed`:if(Jc(e,t,e=>e.rule===`waiting-permission`||e.rule===`waiting-input`||e.id===`waiting:question:${t.callId}`),Qc(e,t,n),t.kind===`tool.completed`&&t.result.kind===`command`&&!t.isError&&!t.result.gitOperation?.push){let r=e.activities[t.callId];r?.input.kind===`command`&&jc(r.input.command)===`push`&&qc(e,t,n,{id:`push:${t.callId}`,rule:`git-push`,severity:`low`,label:`Pushed to remote`,epistemic:`inferred`})}t.kind===`tool.completed`&&t.result.kind===`command`&&t.result.gitOperation?.push&&qc(e,t,n,{id:`push:${t.callId}`,rule:`git-push`,severity:`low`,label:`Pushed${t.result.gitOperation.push.branch?` ${t.result.gitOperation.push.branch}`:` to remote`}`,epistemic:`observed`});break;case`turn.started`:Jc(e,t,e=>e.rule.startsWith(`waiting-`));break;case`turn.ended`:{Jc(e,t,e=>e.rule.startsWith(`waiting-`));let r=e.turns.find(n=>n.id===(t.turnId??e.turns[e.turns.length-1]?.id));if(t.outcome===`failed`&&qc(e,t,n,{id:`turn-failed:${t.seq}`,rule:`turn-failed`,severity:`high`,label:`Turn failed`,instance:U(t.error??`error`,120),epistemic:`observed`}),r){let i=[...e.verifications].filter(e=>e.outcome===`pass`&&e.scope!==`partial`&&e.method!==`lint`).sort((e,t)=>e.at.localeCompare(t.at)).pop(),a=Object.values(e.files).filter(e=>!i||e.lastChangedAt>i.at);if(r.filesTouched.length>0&&a.length>0){let r=i?`low`:`medium`,o=i?`${a.length} file${a.length===1?``:`s`} changed since the last passing check`:`${a.length} file${a.length===1?``:`s`} changed with no passing check observed`,s=e.review.find(e=>e.rule===`changes-unverified`&&e.resolvedSeq===void 0);s?(s.label=o,s.summary=o,s.severity=r,s.detail=a.map(e=>e.path).slice(0,50).join(`
84
84
  `)):qc(e,t,n,{id:`changes-unverified:${t.seq}`,rule:`changes-unverified`,severity:r,label:o,detail:a.map(e=>e.path).slice(0,50).join(`
85
85
  `)})}t.lastMessage&&Zc(t.lastMessage)&&(e.verifications.some(e=>e.turnId===r.id&&e.outcome===`pass`)||qc(e,t,n,{id:`claim-without-evidence:${r.id}`,rule:`claim-without-evidence`,severity:`medium`,label:`Agent reports checks passing, but no passing check was observed this turn`,detail:U(t.lastMessage,300)}))}break}}}function el(e){let t=e.runner?` (${e.runner})`:``;return e.method===`test`?e.counts?.failed?`${e.counts.failed} test${e.counts.failed===1?``:`s`} failing${t}`:`Tests failing${t}`:`${e.method===`typecheck`?`Typecheck`:e.method===`lint`?`Lint`:e.method===`build`?`Build`:`Check`} failing${t}${e.counts?.failed?` — ${e.counts.failed} errors`:``}`}function tl(e,t){if(t.seq<=e.latestSeq)return[];let n=new Uc(e.sessionId,t);switch(e.latestSeq=t.seq,e.revision+=1,e.lastEventAt=G(e.lastEventAt,t.ts),t.redactions&&(e.counters.redactions+=t.redactions),t.kind){case`session.started`:rl(e,t,n);break;case`session.updated`:t.model&&(e.model=t.model),t.title&&(e.title=t.title),t.gitBranch&&(e.gitBranch=t.gitBranch),t.cwd&&(e.cwd=t.cwd);break;case`session.ended`:e.endedAt=t.ts,n.add(`status`,`Session ended`,`observed`);break;case`turn.started`:cl(e,t,n);break;case`turn.ended`:ll(e,t,n);break;case`agent.message`:ul(e,t,n);break;case`agent.thinking`:break;case`agent.usage`:fl(e,t);break;case`tool.called`:vl(e,t,n);break;case`tool.completed`:xl(e,t,n);break;case`tool.failed`:Fl(e,t,n);break;case`subagent.started`:e.subagents[t.subagentId]={id:t.subagentId,agentType:t.agentType,description:t.description,startedAt:t.ts,toolCalls:0,eventId:t.id},n.add(`how`,`Delegated to ${t.agentType??`subagent`}: ${t.description??t.subagentId}`,`observed`);break;case`subagent.ended`:{let r=e.subagents[t.subagentId];r&&(r.endedAt=t.ts,r.lastMessage=t.lastMessage?U(Ts(t.lastMessage),600):void 0,r.lastMessage&&(r.eventId=t.id)),n.add(`how`,`Subagent finished: ${r?.description??t.subagentId}`,`observed`);break}case`plan.updated`:zl(e,t,n);break;case`compaction`:{let r=e.lastCompactionAt?Date.parse(e.lastCompactionAt):NaN,i=Date.parse(t.ts);if(!Number.isNaN(r)&&!Number.isNaN(i)&&Math.abs(i-r)<6e4)break;e.lastCompactionAt=t.ts,e.counters.compactions+=1,n.add(`status`,`Context compacted`,`observed`);break}case`permission.requested`:e.waiting={kind:`permission`,since:t.ts,summary:t.summary,seq:t.seq};break;case`notification`:(t.notificationType===`idle_prompt`||t.notificationType===`agent_needs_input`)&&(e.waiting={kind:`input`,since:t.ts,summary:t.message,seq:t.seq});break;case`git.snapshot`:Bl(e,t,n);break;case`ingest.warning`:e.counters.ingestWarnings+=1;break;case`salidium.explanation`:e.explained={basedOnSeq:t.basedOnSeq,model:t.model,at:t.ts,what:t.what,why:{...t.why,lanes:t.why.lanes??[]},how:{...t.how,root:t.how.root??null},approachChange:t.approachChange?{...t.approachChange,fromSteps:t.approachChange.fromSteps??[],toSteps:t.approachChange.toSteps??[]}:null},n.add(`what`,t.what.summary,`explained`,{model:t.model})}$c(e,t,n);let r=e.status;return e.status=Kc(e),e.status!==r&&(e.statusSince=t.ts),n.changes}var nl=/\.salidium[/\\]explainer$/;function rl(e,t,n){nl.test(t.cwd)&&(e.internal=!0);let r=t.reason===`resume`;if((!e.startedAt||!r)&&(e.startedAt=e.startedAt??t.ts),t.cwd&&(e.cwd=t.cwd),t.model&&(e.model=t.model),t.entrypoint&&(e.entrypoint=t.entrypoint),t.gitBranch&&(e.gitBranch=t.gitBranch),t.title&&(e.title=t.title),t.transcriptPath&&(e.transcriptPath=t.transcriptPath),t.reason===`compact`||t.reason===`clear`)return;let i=Wc(e.cwd||``)||e.cwd;r?n.add(`status`,`Session resumed in ${i}`,`observed`,{model:e.model,reason:t.reason}):e.startLogged||(e.startLogged=!0,n.add(`status`,`Session started in ${i}`,`observed`,{model:e.model,reason:t.reason}))}function il(e){let t=e.turns[e.turns.length-1];return t&&!t.endedAt?t:void 0}function al(e,t){return t.turnId?e.turns.find(e=>e.id===t.turnId)||ol(e,t.turnId,``,t.ts,t.seq):e.turns.find(e=>e.startedAt<=t.ts&&(!e.endedAt||t.ts<=e.endedAt))??il(e)??e.turns[e.turns.length-1]}function ol(e,t,n,r,i){let a=il(e);if(a&&a.id!==t&&a.activityIds.length===0&&a.prompt===``)return a.id=t,a.prompt=n,a;a&&a.id!==t&&sl(a,r,i,`interrupted`,!0);let o={id:t,index:e.turns.length,prompt:n,startedAt:r,activityIds:[],filesTouched:[],verificationIds:[],startSeq:i};return e.turns.push(o),e.counters.turns=e.turns.length,o}function sl(e,t,n,r,i=!1){e.endedAt||(e.endedAt=t,e.endSeq=n,e.outcome=r,e.endInferred=i)}function cl(e,t,n){t.prompt?.includes(`[salidium-explainer]`)&&(e.internal=!0);let r=t.turnId??`turn-${e.turns.length+1}`,i=e.turns.find(e=>e.id===r);if(i){if(i.prompt)return;i.prompt=t.prompt,i.startedAt=t.ts,i.startSeq=t.seq,e.waiting=void 0;let r=hc(t.prompt,140);n.add(`why`,r?`Asked: ${r}`:`New request`,`reported`,{author:`user`,turn:i.index});return}let a=ol(e,r,t.prompt,t.ts,t.seq);e.waiting=void 0;let o=hc(t.prompt,140);n.add(`why`,o?`Asked: ${o}`:`New request`,`reported`,{author:`user`,turn:a.index})}function ll(e,t,n){let r=t.turnId?e.turns.find(e=>e.id===t.turnId):il(e);if(!r&&t.turnId&&(r=ol(e,t.turnId,``,t.ts,t.seq)),!r)return;if(r.endedAt&&!r.endInferred){t.lastMessage&&!r.lastMessage&&(r.lastMessage=t.lastMessage,dl(e,t,t.lastMessage,`final`,n,r));return}r.endInferred=!1,r.endedAt=t.ts,r.endSeq=t.seq,r.outcome=t.outcome,r.lastMessage=t.lastMessage,r.error=t.error,e.waiting=void 0;for(let n of e.running){let i=e.activities[n];i&&i.turnId===r.id&&(i.status=`unknown`,i.endedAt=t.ts)}if(e.running=e.running.filter(t=>e.activities[t]?.turnId!==r.id),t.outcome===`failed`){e.issues.push({id:`turn-failed:${r.id}`,kind:`turnFailed`,summary:t.error??`Turn failed`,seq:t.seq,ts:t.ts}),n.add(`status`,`Turn failed: ${U(t.error??`error`,120)}`,`observed`);return}if(t.outcome===`interrupted`){e.issues.push({id:`interrupted:${r.id}`,kind:`interrupted`,summary:`Turn interrupted`,seq:t.seq,ts:t.ts}),n.add(`status`,`Turn interrupted`,`observed`);return}let i=t.lastMessage?hc(t.lastMessage,140):``;n.add(`status`,i?`Turn complete: ${i}`:`Turn complete`,i?`reported`:`observed`,{turn:r.index}),t.lastMessage&&dl(e,t,t.lastMessage,`final`,n,r)}function ul(e,t,n){let r=t.text.trim();if(!r)return;let i=al(e,t),a=t.phase??`commentary`;i&&!i.headline&&!t.agentId&&(i.headline=hc(r,140)),dl(e,t,r,a,n,i)}function dl(e,t,n,r,i,a){let o=pc(n,r),s=a!==void 0&&e.claims.filter(e=>e.turnId===a.id&&!e.agentId).length===0;for(let[n,c]of o.entries()){let o={id:n===0?t.id:`${t.id}::${n}`,eventId:t.id,seq:t.seq,ts:t.ts,turnId:a?.id,agentId:t.agentId,kind:c.kind,text:c.text,confidence:c.confidence,rule:c.rule,phase:r,epistemic:`reported`};if(!e.claims.some(e=>e.text===o.text&&e.turnId===o.turnId)&&(e.claims.push(o),!t.agentId))switch(o.kind){case`discovery`:i.add(`why`,o.text,`reported`,{claim:o.kind,rule:o.rule});break;case`approach`:i.add(`how`,o.text,`reported`,{claim:o.kind,rule:o.rule});break;case`verification`:i.add(`verified`,`Agent says: ${o.text}`,`reported`,{claim:o.kind,rule:o.rule});break;case`remaining`:i.add(`left`,o.text,`reported`,{claim:o.kind,rule:o.rule});break;case`question`:r===`final`&&(e.waiting={kind:`question`,since:t.ts,summary:o.text,seq:t.seq},i.add(`review`,`Agent asks: ${o.text}`,`reported`,{claim:o.kind,rule:o.rule}));break;case`summary`:r===`final`&&i.add(`what`,o.text,`reported`,{claim:o.kind});break;default:s&&n===0&&i.add(`status`,o.text,`reported`,{claim:o.kind,rule:o.rule})}}}function fl(e,t){let n=e.usage,r=t.agentId??`main`,i=n.lastByLane[r];i?.messageId===t.messageId?(n.inputTokens-=i.inputTokens,n.outputTokens-=i.outputTokens,n.cacheReadTokens-=i.cacheReadTokens,n.cacheWriteTokens-=i.cacheWriteTokens):n.messages+=1,n.inputTokens+=t.inputTokens,n.outputTokens+=t.outputTokens,n.cacheReadTokens+=t.cacheReadTokens,n.cacheWriteTokens+=t.cacheWriteTokens,n.lastByLane[r]={messageId:t.messageId,inputTokens:t.inputTokens,outputTokens:t.outputTokens,cacheReadTokens:t.cacheReadTokens,cacheWriteTokens:t.cacheWriteTokens}}function pl(e){switch(e.source.channel){case`transcript`:case`rollout`:return 3;case`app-server`:return 2;case`hook`:return 1;case`salidium`:return 0}}function ml(e){return(e.input.kind===`other`?0:100)+pl(e)}function hl(e){let t=100;switch(e.result.kind){case`command`:t=e.result.exit.observation===`explicit`?500:e.result.exit.observation===`unknown`?300:400;break;case`fileChanges`:{let n=e.result.changes.filter(e=>e.applied);t=300+(n.some(e=>e.linesAdded+e.linesRemoved>0)?100:0)+(n.some(e=>!!e.hunks?.length)?50:0);break}case`fileRead`:t=300;break;case`subagent`:t=e.result.status===`completed`?400:300;break;case`generic`:t=e.result.excerpt?200:100}return t*10+pl(e)}function gl(e){return(e.exit?.observation===`explicit`?500:e.exit?.observation===`unknown`?300:e.exit?400:200)*10+pl(e)}function _l(e,t){e.eventIds.includes(t)||e.eventIds.push(t),e.eventIds.sort((e,t)=>e.localeCompare(t))}function vl(e,t,n){let r=e.activities[t.callId];if(r){yl(e,r,t,n);return}let i=al(e,t),a={callId:t.callId,turnId:i?.id,agentId:t.agentId,toolName:t.toolName,kind:t.input.kind,title:U(t.title,200),input:t.input.kind===`command`&&t.input.command.length>1200?{...t.input,command:`${t.input.command.slice(0,1200)}…`}:t.input,startedAt:t.ts,status:`running`,isError:!1,seqCalled:t.seq,callFidelity:ml(t),eventIds:[t.id]};e.activities[t.callId]=a,e.activityOrder.push(t.callId),e.running.push(t.callId),e.counters.toolCalls+=1,t.input.kind===`command`&&(e.counters.commands+=1),i?.activityIds.push(t.callId);let o=t.agentId?e.subagents[t.agentId]:void 0;if(o&&(o.toolCalls+=1),t.input.kind===`question`){let n=t.input.questions[0]??`question`;e.waiting={kind:`question`,since:t.ts,summary:n,seq:t.seq}}}function yl(e,t,n,r){let i=t.input.kind===`other`&&t.seqCompleted!==void 0,a=ml(n);if(_l(t,n.id),t.input.kind!==`other`&&a<=(t.callFidelity??-1))return;let o=t.input.kind,s=t.turnId?e.turns.find(e=>e.id===t.turnId):void 0,c=al(e,n);s&&c&&s.id!==c.id&&(s.activityIds=s.activityIds.filter(e=>e!==t.callId)),c&&!c.activityIds.includes(t.callId)&&c.activityIds.push(t.callId),t.turnId=c?.id??t.turnId,t.agentId=n.agentId??t.agentId,t.toolName=n.toolName,t.kind=n.input.kind,t.title=U(n.title,200),t.input=n.input.kind===`command`&&n.input.command.length>1200?{...n.input,command:`${n.input.command.slice(0,1200)}…`}:n.input,t.startedAt=n.ts,!t.resultDurationExplicit&&t.endedAt&&(t.durationMs=W(n.ts,t.endedAt)),t.seqCalled=n.seq,t.callFidelity=a,o!==`command`&&n.input.kind===`command`&&(e.counters.commands+=1),o===`command`&&n.input.kind!==`command`&&--e.counters.commands;let l=n.agentId?e.subagents[n.agentId]:void 0;if(l&&i&&(l.toolCalls+=1),n.input.kind===`command`&&t.status!==`running`){if(t.result?.kind===`command`){Ml(e,t,{...n,id:t.eventIds.find(e=>e!==n.id)??n.id,kind:`tool.completed`,callId:t.callId,toolName:t.toolName,result:t.result,isError:t.isError,durationMs:t.durationMs},r,c),t.result=Ol(t.result);return}if(t.isError&&t.status===`failed`){for(let n=e.issues.length-1;n>=0;n--)e.issues[n]?.callId===t.callId&&e.issues[n]?.kind===`toolError`&&e.issues.splice(n,1);Rl(e,t,{...n,id:t.eventIds.find(e=>e!==n.id)??n.id,kind:`tool.failed`,callId:t.callId,toolName:t.toolName,errorExcerpt:t.errorExcerpt??``,cause:t.failureCause??`error`,exit:t.exit,interrupted:t.failureCause===`interrupted`||void 0,durationMs:t.durationMs},r)}}}function bl(e,t,n){let r=e.activities[t];if(r)return r.status===`running`?(r.endedAt=n.ts,r.seqCompleted=n.seq,_l(r,n.id),e.running=e.running.filter(e=>e!==t),e.waiting&&(e.waiting.kind===`permission`||e.waiting.kind===`input`)&&(e.waiting=void 0),r):r}function xl(e,t,n){let r=e.activities[t.callId];if(!r){let n=al(e,t);r={callId:t.callId,turnId:n?.id,agentId:t.agentId,toolName:t.toolName,kind:kl(t),title:t.toolName,input:{kind:`other`,summary:t.toolName},startedAt:t.ts,status:`running`,isError:!1,seqCalled:t.seq,callFidelity:0,eventIds:[]},e.activities[t.callId]=r,e.activityOrder.push(t.callId),e.counters.toolCalls+=1,n?.activityIds.push(t.callId),e.running.push(t.callId)}if(r.status!==`running`){Sl(e,r,t,n);return}bl(e,t.callId,t),r.status=t.isError?`failed`:`completed`,r.isError=t.isError,r.result=t.result,r.resultFidelity=hl(t),r.resultDurationExplicit=t.durationMs!==void 0,r.durationMs=t.durationMs??r.durationMs??W(r.startedAt,t.ts),t.result.kind===`command`&&(r.exit=t.result.exit),t.isError&&(e.counters.toolFailures+=1),r.kind===`question`&&e.waiting?.kind===`question`&&(e.waiting=void 0);let i=r.turnId?e.turns.find(e=>e.id===r.turnId):void 0;switch(t.result.kind){case`fileChanges`:for(let a of t.result.changes)Al(e,r,a,t,n,i);break;case`command`:Ml(e,r,t,n,i);break;case`subagent`:{let n=t.result.agentId?e.subagents[t.result.agentId]:void 0;n&&(n.endedAt=n.endedAt??t.ts,n.lastMessage=n.lastMessage??t.result.summaryExcerpt)}}r.result=r.input.kind===`other`&&t.result.kind===`command`?t.result:Ol(t.result)}function Sl(e,t,n,r){if(t.sourceConflict){_l(t,n.id);return}let i=hl(n);_l(t,n.id);let a=t.turnId?e.turns.find(e=>e.id===t.turnId):void 0;if(n.result.kind===`command`&&t.result?.kind===`command`){if(wl(Cl(t.result.exit,t.isError),Cl(n.result.exit,n.isError))){El(e,t,n,r);return}if(i<=(t.resultFidelity??-1))return;t.exit=n.result.exit,t.isError=n.isError,t.status=n.isError?`failed`:`completed`,t.endedAt=n.ts,t.seqCompleted=n.seq,t.durationMs=n.durationMs??W(t.startedAt,n.ts),t.resultDurationExplicit=n.durationMs!==void 0,t.resultFidelity=i;let o={...t,result:n.result,exit:n.result.exit},s=e.verifications.findIndex(e=>e.callId===t.callId),c=s>=0?e.verifications[s]:void 0;c&&(e.verifications.splice(s,1),a&&(a.verificationIds=a.verificationIds.filter(e=>e!==c.id)));let l=Vc(o,n.seq);l&&Nl(e,t,l,n,r,a,c===void 0||c.outcome!==l.outcome),t.result=Ol(n.result);return}if(n.result.kind===`fileChanges`&&t.result?.kind===`fileChanges`){if(i<=(t.resultFidelity??-1))return;for(let i of n.result.changes){let o=t.result.changes.find(e=>e.path===i.path);if(!o){Al(e,t,i,n,r,a);continue}let s=o.linesAdded+o.linesRemoved,c=i.linesAdded+i.linesRemoved,l=e.files[i.path];l&&(l.linesAdded+=i.linesAdded-o.linesAdded,l.linesRemoved+=i.linesRemoved-o.linesRemoved,e.counters.linesAdded+=i.linesAdded-o.linesAdded,e.counters.linesRemoved+=i.linesRemoved-o.linesRemoved,l.lastHunks=i.hunks?.slice(0,20),l.lastChangedAt=n.ts,l.lastChangeSeq=n.seq,l.lastAgentId=n.agentId,s===0&&c>0&&r.add(`what`,`${Dl(i.change)} ${Wc(i.path)} (+${i.linesAdded} −${i.linesRemoved})`,`observed`,{path:i.path,change:i.change,linesAdded:i.linesAdded,linesRemoved:i.linesRemoved,agentId:n.agentId}))}t.endedAt=n.ts,t.seqCompleted=n.seq,t.durationMs=n.durationMs??W(t.startedAt,n.ts),t.resultDurationExplicit=n.durationMs!==void 0,t.resultFidelity=i,t.isError=n.isError,t.status=n.isError?`failed`:`completed`,t.result=Ol(n.result);return}i<=(t.resultFidelity??-1)||(t.endedAt=n.ts,t.seqCompleted=n.seq,t.durationMs=n.durationMs??W(t.startedAt,n.ts),t.resultDurationExplicit=n.durationMs!==void 0,t.resultFidelity=i,t.isError=n.isError,t.status=n.isError?`failed`:`completed`,t.result=Ol(n.result))}function Cl(e,t){return t||e?.observation===`inferred-failure`?`fail`:e?.observation===`inferred-success`?`pass`:e?.observation===`explicit`?e.code===0?`pass`:`fail`:`unknown`}function wl(e,t){return e===`pass`&&t===`fail`||e===`fail`&&t===`pass`}function Tl(e){return e.cause===`timeout`||e.cause===`interrupted`||e.cause===`rejected`||e.cause===`denied`?`unknown`:`fail`}function El(e,t,n,r){let i=[...new Set([...t.eventIds,n.id])].sort(),a=n.kind===`tool.failed`||n.isError,o=t.status===`failed`||t.isError;a&&!o&&(e.counters.toolFailures+=1);let s=t.turnId?e.turns.find(e=>e.id===t.turnId):void 0,c=e.verifications.find(e=>e.callId===t.callId);e.verifications=e.verifications.filter(e=>e.callId!==t.callId),s&&(s.verificationIds=s.verificationIds.filter(e=>e!==t.callId)),e.issues=e.issues.filter(e=>e.callId!==t.callId),e.review=e.review.filter(e=>!(e.rule===`verification-failed`&&e.refs.some(e=>i.includes(e))));let l=t.endedAt&&t.endedAt>n.ts?t.endedAt:n.ts,u=n.durationMs??W(t.startedAt,n.ts)??0;t.endedAt=l,t.durationMs=Math.max(t.durationMs??0,u),t.seqCompleted=n.seq,t.eventIds=i,t.status=`unknown`,t.sourceConflict=!0,t.isError=!1,t.errorExcerpt=void 0,t.failureCause=void 0,t.exit={observation:`unknown`},t.result={kind:`command`,exit:{observation:`unknown`},outputExcerpt:``,outputChars:0,truncated:!1},e.running=e.running.filter(e=>e!==t.callId);let d=Vc(t,n.seq);d?Nl(e,t,{...d,outcome:`unknown`,counts:void 0,exit:{observation:`unknown`},outcomeEpistemic:`observed`,caveats:[...new Set([...d.caveats,`source-conflict`])],failureExcerpt:void 0},n,r,s):c&&t.input.kind===`command`&&Nl(e,t,{...c,at:l,seq:n.seq,outcome:`unknown`,counts:void 0,exit:{observation:`unknown`},outcomeEpistemic:`observed`,caveats:[...new Set([...c.caveats,`source-conflict`])],failureExcerpt:void 0},n,r,s);let f=`source-conflict:${t.callId}`;if(!e.review.some(e=>e.id===f&&e.resolvedSeq===void 0)){let a=`Conflicting tool results`,o=U(t.input.kind===`command`?t.input.command:t.title,120);e.review.push({id:f,rule:`source-conflict`,severity:`high`,label:a,instance:o,summary:`${a}: ${o}`,detail:`The provider records disagree about whether this call succeeded.`,refs:i,createdSeq:n.seq,createdAt:l,epistemic:`observed`}),r.add(`review`,`${a}: ${o}`,`observed`,{rule:`source-conflict`,severity:`high`})}}function Dl(e){return e===`add`?`Created`:e===`delete`?`Deleted`:e===`move`?`Moved`:`Changed`}function Ol(e){switch(e.kind){case`command`:return{...e,outputExcerpt:U(e.outputExcerpt,240)};case`fileChanges`:return{...e,changes:e.changes.map(e=>({...e,hunks:void 0}))};case`subagent`:return{...e,summaryExcerpt:e.summaryExcerpt?U(e.summaryExcerpt,400):void 0};case`generic`:return{...e,excerpt:e.excerpt?U(e.excerpt,240):void 0};default:return e}}function kl(e){switch(e.result.kind){case`command`:return`command`;case`fileChanges`:return`fileEdit`;case`fileRead`:return`fileRead`;case`subagent`:return`subagent`;default:return`other`}}function Al(e,t,n,r,i,a){if(!n.applied){e.issues.push({id:`patch:${r.id}:${n.path}`,kind:`patchFailed`,summary:`Patch not applied: ${Wc(n.path)}`,seq:r.seq,ts:r.ts,callId:t.callId}),i.add(`review`,`Patch not applied: ${Wc(n.path)}`,`observed`);return}let o=e.files[n.path],s=o??{path:n.path,changeCount:0,linesAdded:0,linesRemoved:0,kinds:[],firstChangedAt:r.ts,lastChangedAt:r.ts,lastChangeSeq:r.seq,lastCallId:t.callId,turnIds:[]};o||(e.files[n.path]=s,e.counters.filesChanged+=1),s.changeCount+=1,s.linesAdded+=n.linesAdded,s.linesRemoved+=n.linesRemoved,s.kinds.includes(n.change)||s.kinds.push(n.change),s.lastChangedAt=r.ts>s.lastChangedAt?r.ts:s.lastChangedAt,s.lastChangeSeq=r.seq,s.lastCallId=t.callId,s.lastAgentId=r.agentId,n.hunks&&(s.lastHunks=n.hunks.slice(0,20)),n.userModifiedBefore&&(s.userModifiedBefore=!0),a&&!s.turnIds.includes(a.id)&&s.turnIds.push(a.id),a&&!a.filesTouched.includes(n.path)&&a.filesTouched.push(n.path),e.counters.linesAdded+=n.linesAdded,e.counters.linesRemoved+=n.linesRemoved;for(let t of e.verifications)t.at<=r.ts&&(t.stale=!0);let c=Dl(n.change),l=n.change===`delete`?``:` (+${n.linesAdded} −${n.linesRemoved})`;n.change===`update`&&n.linesAdded+n.linesRemoved===0&&!n.hunks||i.add(`what`,`${c} ${Wc(n.path)}${l}`,`observed`,{path:n.path,change:n.change,linesAdded:n.linesAdded,linesRemoved:n.linesRemoved,agentId:r.agentId}),n.userModifiedBefore&&i.add(`review`,`You had edited ${Wc(n.path)} before the agent changed it`,`observed`,{path:n.path,rule:`user-modified`})}var jl=/^\s*(ls|cat|head|tail|grep|rg|find|fd|pwd|which|echo|wc|tree|stat|file|du|df|env|printenv|git\s+(status|log|diff|show|blame|branch|remote|rev-parse|ls-files)|sed\s+-n|awk|jq|less|more|type|node\s+-e|python3?\s+-c|open|curl\s+-s)\b/;function Ml(e,t,n,r,i){if(t.input.kind!==`command`||n.result.kind!==`command`)return;let a=t.input.command,o=n.result;if(o.gitOperation)e.git.operations.push({op:o.gitOperation,at:n.ts,callId:t.callId}),o.gitOperation.commit&&(e.git.commits.push({sha:o.gitOperation.commit.sha,at:n.ts,callId:t.callId,kind:o.gitOperation.commit.kind}),e.git.head=o.gitOperation.commit.sha,r.add(`what`,`Committed ${Gc(o.gitOperation.commit.sha)}`,`observed`,{sha:o.gitOperation.commit.sha})),o.gitOperation.push&&e.git.pushes.push({branch:o.gitOperation.push.branch,at:n.ts,callId:t.callId});else{let i=jc(a);if(i===`commit`&&!n.isError){let i=/\[[^\]]*\s([0-9a-f]{7,40})\]/.exec(o.outputExcerpt)?.[1];e.git.commits.push({sha:i??``,at:n.ts,callId:t.callId}),i&&(e.git.head=i),r.add(`what`,i?`Committed ${Gc(i)}`:`Committed`,i?`observed`:`inferred`,{sha:i})}else i===`push`&&!n.isError&&e.git.pushes.push({at:n.ts,callId:t.callId})}let s=Vc(t,n.seq);if(s){Nl(e,t,s,n,r,i);return}if(n.isError){e.issues.push({id:`command:${n.id}`,kind:`commandFailed`,summary:`Command failed: ${U(a,100)}`,seq:n.seq,ts:n.ts,callId:t.callId}),r.add(`what`,`Command failed: ${U(a,100)}`,`observed`,{exit:o.exit});return}!jl.test(a)&&(t.durationMs??0)>=3e4&&r.add(`what`,`Ran ${U(a,110)} (${Math.round((t.durationMs??0)/1e3)}s)`,`observed`)}function Nl(e,t,n,r,i,a,o=!0){if(e.verifications.push(n),a?.verificationIds.push(n.id),o&&i.add(`verified`,Pl(n),n.outcomeEpistemic,{outcome:n.outcome,runner:n.runner,method:n.method,counts:n.counts,caveats:n.caveats}),n.outcome===`fail`)e.issues.push({id:`verification:${n.id}`,kind:`commandFailed`,summary:Pl(n),seq:r.seq,ts:r.ts,callId:t.callId});else if(n.outcome===`pass`&&n.scope!==`partial`)for(let t of e.issues)t.kind===`commandFailed`&&t.resolvedSeq===void 0&&t.id.startsWith(`verification:`)&&(t.resolvedSeq=r.seq)}function Pl(e){let t=e.runner?` (${e.runner})`:``,n=e.counts,r=e.scope===`partial`?` [subset]`:``;if(e.method===`test`){if(e.outcome===`pass`){if(n?.total!==void 0&&n.total>0){let e=n.skipped?`, ${n.skipped} skipped`:``;return`${n.passed??0}/${n.total} tests passed${e}${t}${r}`}return`Tests passed${t}${r}${e.caveats?.includes(`exit-inferred`)?` — exit inferred`:``}`}return e.outcome===`fail`?n?.failed!==void 0&&n.failed>0?`${n.failed} of ${n.total??`?`} tests failed${t}${r}`:`Tests failed${t}${r}`:e.outcome===`partial`?`Tests passed but command failed${t}`:`Test run result unknown${t}`}let i=e.method===`typecheck`?`Typecheck`:e.method===`lint`?`Lint`:e.method===`build`?`Build`:`Check`;return e.outcome===`pass`?`${i} passed${t}`:e.outcome===`fail`?`${i} failed${t}${n?.failed?` — ${n.failed} error${n.failed===1?``:`s`}`:``}`:e.outcome===`partial`?`${i} partially passed${t}`:`${i} result unknown${t}`}function Fl(e,t,n){Il(e,t,n);let r=e.activities[t.callId];r&&(r.errorExcerpt=r.errorExcerpt===void 0?void 0:U(r.errorExcerpt,400),r.result?.kind===`command`&&(r.result={...r.result,outputExcerpt:U(r.result.outputExcerpt,240)}))}function Il(e,t,n){let r=e.activities[t.callId];if(!r){let n=al(e,t);r={callId:t.callId,turnId:n?.id,agentId:t.agentId,toolName:t.toolName,kind:`other`,title:t.toolName,input:{kind:`other`,summary:t.toolName},startedAt:t.ts,status:`running`,isError:!1,seqCalled:t.seq,callFidelity:0,eventIds:[]},e.activities[t.callId]=r,e.activityOrder.push(t.callId),e.counters.toolCalls+=1,n?.activityIds.push(t.callId),e.running.push(t.callId)}if(r.sourceConflict){_l(r,t.id);return}if(r.status!==`running`){r.result?.kind===`command`&&wl(Cl(r.result.exit,r.isError),Tl(t))?El(e,r,t,n):Ll(e,r,t,n);return}if(bl(e,t.callId,t),r.status=`failed`,r.isError=!0,r.errorExcerpt=t.errorExcerpt,r.failureCause=t.cause,r.resultFidelity=gl(t),r.resultDurationExplicit=t.durationMs!==void 0,r.durationMs=t.durationMs??W(r.startedAt,t.ts),t.exit&&(r.exit=t.exit),t.cause===`rejected`||t.cause===`denied`){r.status=`unknown`,e.waiting?.kind===`question`&&r.kind===`question`&&(e.waiting=void 0),n.add(`review`,`${t.cause===`rejected`?`You rejected`:`Denied`}: ${r.title}`,`observed`,{cause:t.cause});return}e.counters.toolFailures+=1,Rl(e,r,t,n)}function Ll(e,t,n,r){let i=gl(n);if(_l(t,n.id),i<=(t.resultFidelity??-1))return;let a=new Set(t.eventIds),o=t.turnId?e.turns.find(e=>e.id===t.turnId):void 0;e.verifications=e.verifications.filter(e=>e.callId!==t.callId),o&&(o.verificationIds=o.verificationIds.filter(e=>e!==t.callId)),e.issues=e.issues.filter(e=>e.callId!==t.callId),e.review=e.review.filter(e=>!(e.rule===`verification-failed`&&e.refs.some(e=>a.has(e)))),t.endedAt=n.ts,t.seqCompleted=n.seq,t.status=n.cause===`rejected`||n.cause===`denied`?`unknown`:`failed`,t.isError=!0,t.errorExcerpt=n.errorExcerpt,t.failureCause=n.cause,t.exit=n.exit,t.result=void 0,t.durationMs=n.durationMs??W(t.startedAt,n.ts),t.resultDurationExplicit=n.durationMs!==void 0,t.resultFidelity=i,Rl(e,t,n,r)}function Rl(e,t,n,r){if(t.kind===`command`&&t.input.kind===`command`){let i=n.cause===`timeout`||n.cause===`interrupted`;t.result||={kind:`command`,exit:i?{observation:`unknown`}:n.exit??{observation:`inferred-failure`},outputExcerpt:n.errorExcerpt,outputChars:n.errorExcerpt.length,truncated:!1,interrupted:n.interrupted||n.cause===`interrupted`||void 0,timedOut:n.cause===`timeout`||void 0},i&&(t.exit={observation:`unknown`});let a=t.turnId?e.turns.find(e=>e.id===t.turnId):void 0,o=Vc(t,n.seq);if(o){Nl(e,t,o,n,r,a);return}if(n.interrupted){r.add(`what`,`Interrupted: ${U(t.input.command,100)}`,`observed`);return}e.issues.push({id:`command:${n.id}`,kind:`commandFailed`,summary:`Command failed: ${U(t.input.command,100)}`,seq:n.seq,ts:n.ts,callId:t.callId}),r.add(`what`,`Command failed: ${U(t.input.command,100)}`,`observed`,{exit:n.exit});return}e.issues.push({id:`tool:${n.id}`,kind:`toolError`,summary:`${t.title} failed`,seq:n.seq,ts:n.ts,callId:t.callId}),r.add(`what`,`${t.title} failed`,`observed`)}function zl(e,t,n){let r=e.plan.items,i;if(t.mode===`replace`)i=t.items.map(e=>({...e}));else{let e=new Map(r.map(e=>[e.id,{...e}]));for(let n of t.items){let t=e.get(n.id);e.set(n.id,t?{...t,status:n.status,text:n.text||t.text,activeForm:n.activeForm??t.activeForm}:{...n})}i=[...e.values()].filter(e=>e.status!==`cancelled`||r.some(t=>t.id===e.id))}e.plan={items:i,updatedAt:t.ts,updatedSeq:t.seq,explanation:t.explanation??e.plan.explanation};let a=i.filter(e=>e.status===`completed`).length,o=i.find(e=>e.status===`in_progress`),s=i.filter(e=>e.status===`pending`||e.status===`in_progress`).length,c=i.filter(e=>e.status===`completed`&&r.find(t=>t.id===e.id)?.status!==`completed`),l=r.length===0&&i.length>0;l&&n.add(`how`,`Plan: ${i.length} steps — ${i.slice(0,3).map(e=>e.text).join(`; `)}`,`planned`,{items:i.length});for(let e of c)n.add(`left`,`Done: ${e.text}`,`reported`,{itemId:e.id,done:a,total:i.length});o&&(l||r.find(e=>e.id===o.id)?.status!==`in_progress`)&&n.add(`how`,`Now: ${o.activeForm??o.text}`,`planned`,{itemId:o.id}),t.explanation&&n.add(`why`,`Plan changed: ${t.explanation}`,`reported`);let u=JSON.stringify(r)!==JSON.stringify(i);!l&&c.length===0&&!o&&u&&n.add(`left`,s>0?`${s} of ${i.length} steps remaining`:`All plan steps completed`,`planned`,{pending:s,total:i.length})}function Bl(e,t,n){let r=e.git.head;if(e.git.head=t.head??e.git.head,e.git.branch=t.branch??e.git.branch,e.git.dirtyCount=t.dirty.length+ +!!t.dirtyTruncated,e.git.snapshotAt=t.ts,e.repoRoot||=t.repoRoot,t.head&&r&&t.head!==r){let i=e.git.commits.find(e=>e.sha&&(t.head?.startsWith(e.sha)||e.sha.startsWith(t.head??``)));i?i.sha.length<t.head.length&&(i.sha=t.head):(e.git.headMoves.push({from:r,to:t.head,at:t.ts}),n.add(`what`,`HEAD moved to ${Gc(t.head)}`,`observed`,{sha:t.head,branch:t.branch}))}}function W(e,t){let n=Date.parse(e),r=Date.parse(t);if(!(Number.isNaN(n)||Number.isNaN(r)||r<n))return r-n}function G(e,t){return e?t>e?t:e:t}function K(e,t){if(e.status===`working`&&e.lastEventAt){let n=t-Date.parse(e.lastEventAt);if(Number.isFinite(n)&&n>9e5)return`idle`}return e.status}function q(e,t=Date.now()){let n=K(e,t),r=e.verifications.map(t=>Yl(e,t)),i=r[r.length-1],a=Object.values(e.files).sort((e,t)=>t.lastChangeSeq-e.lastChangeSeq),o=[...e.verifications].filter(e=>e.outcome===`pass`&&e.scope!==`partial`&&e.method!==`lint`).sort((e,t)=>e.at.localeCompare(t.at)).pop(),s=e.review.filter(e=>e.resolvedSeq===void 0),c=s.filter(e=>e.severity!==`info`),l=s.slice().sort((e,t)=>J(t.severity)-J(e.severity)||t.createdSeq-e.createdSeq).map(Xl),u=tu(e),d=[...e.running].reverse().map(t=>e.activities[t]).find(e=>e&&!e.agentId&&t-Date.parse(e.startedAt)<6e5),f={status:n,statusSince:n===e.status?e.statusSince:e.lastEventAt,activeTitle:n===`working`?d?.title:void 0,activeSince:n===`working`?d?.startedAt:void 0,model:e.model,turns:e.turns.length,filesChanged:e.counters.filesChanged,linesAdded:e.counters.linesAdded,linesRemoved:e.counters.linesRemoved,commits:e.git.commits.length,latestVerification:i,reviewOpen:c.length,remaining:u.items.length,waiting:e.waiting?{kind:e.waiting.kind,summary:e.waiting.summary,since:e.waiting.since}:void 0},p=e.turns[e.turns.length-1],m=e=>e.kinds.includes(`delete`)?`-`:e.kinds.includes(`add`)&&e.kinds.length===1?`+`:`~`,h=Gl(e,d,p,a,n)[0];return{strip:f,explained:e.explained,verdict:Ul(e,n,d,o,c.length,a),report:{whatNow:h,editing:d&&(d.kind===`fileEdit`||d.kind===`fileWrite`)?d.title:a[0]?.path,ask:p?.prompt?{text:U(p.prompt,300),epistemic:`reported`,refs:[],at:p.startedAt,author:`user`}:void 0,plan:e.plan.items.map(e=>({text:e.text,status:e.status})),files:a.map(e=>({path:e.path,mark:m(e)})),runtimeMs:e.startedAt?Math.max(0,(e.lastEventAt?Date.parse(e.lastEventAt):t)-Date.parse(e.startedAt)):void 0},review:{glance:c.length===0?s.length===0?`Nothing needs you`:`Nothing needs you · ${s.length} noted`:`${c.length} item${c.length===1?``:`s`} need attention`,items:l,groups:Zl(l),resolvedCount:e.review.length-s.length},changes:{glance:Kl(e),files:a.map(t=>Ql(e,t,o)),commands:e.activityOrder.map(t=>e.activities[t]).filter(e=>!!(e&&e.kind===`command`&&e.input.kind===`command`)).map(t=>eu(e,t)),commits:e.git.commits.map(e=>({sha:e.sha,at:e.at,callId:e.callId}))},verified:{glance:ql(e,i),runs:r.slice().reverse(),summary:Jl(r),unverifiedFiles:a.filter(e=>!o||e.lastChangedAt>o.at).map(e=>e.path),claims:e.claims.filter(e=>e.kind===`verification`).map(e=>Wl(e))},left:u,turns:e.turns.map(t=>nu(e,t,r)),subagents:Object.values(e.subagents).map(e=>({...e})),ingest:{warnings:e.counters.ingestWarnings,redactions:e.counters.redactions,compactions:e.counters.compactions},usage:e.usage.messages>0?{messages:e.usage.messages,inputTokens:e.usage.inputTokens,outputTokens:e.usage.outputTokens,cacheReadTokens:e.usage.cacheReadTokens,cacheWriteTokens:e.usage.cacheWriteTokens}:void 0}}function J(e){return e===`high`?3:e===`medium`?2:+(e===`low`)}function Vl(e){return e.verifications.filter(t=>t.outcome===`fail`&&!e.verifications.some(e=>e.at>=t.at&&e.seq!==t.seq&&e.method===t.method&&e.outcome===`pass`&&e.scope!==`partial`))}function Hl(e,t){return t===void 0?e.length:e.filter(e=>e.lastChangedAt>t).length}function Ul(e,t,n,r,i,a){let o=e.counters.filesChanged,s=e=>`${e} file${e===1?``:`s`}`;if(t===`waiting`&&e.waiting)return{headline:`Waiting for you`,tone:`attention`,epistemic:`observed`,because:e.waiting.summary,at:e.waiting.since,refs:[]};let c=Vl(e).pop();if(c){let e=Hl(a,c.at);return{headline:Pl(c),tone:`fail`,epistemic:c.outcomeEpistemic,because:e>0?`${s(e)} changed after this check, so it may be out of date.`:c.caveats.includes(`exit-inferred`)?`Read from the output; the command reported no exit code.`:void 0,at:c.at,refs:[c.callId]}}if(t===`working`&&n)return{headline:n.title,tone:`working`,epistemic:`observed`,because:o>0?`${Kl(e)} so far.`:void 0,at:n.startedAt,refs:[n.callId]};let l=Hl(a,r?.at);return o>0&&l>0?{headline:`${s(o)} changed, unverified`,tone:`attention`,epistemic:`observed`,because:r?`${s(l)} changed after the last passing check (${Pl(r)}).`:`No passing test, build or typecheck run was observed in this session.`,at:r?.at,refs:r?[r.callId]:[]}:r?{headline:Pl(r),tone:`pass`,epistemic:r.outcomeEpistemic,because:r.caveats.includes(`exit-inferred`)?`Read from the output; the command reported no exit code.`:o>0?`Ran after the last of ${s(o)} changed.`:void 0,at:r.at,refs:[r.callId]}:i>0?{headline:`${i} thing${i===1?``:`s`} need${i===1?`s`:``} you`,tone:`attention`,epistemic:`inferred`,refs:[]}:o>0?{headline:`${s(o)} changed`,tone:`neutral`,epistemic:`observed`,because:`No checks were observed in this session.`,refs:[]}:{headline:e.turns.length===0?`Nothing recorded yet`:`No files changed`,tone:`neutral`,epistemic:`observed`,refs:[]}}function Wl(e){return{text:e.text,epistemic:`reported`,refs:[e.id],at:e.ts,author:e.agentId?`subagent`:`agent`}}function Gl(e,t,n,r,i){let a=[];if(i===`working`&&n){let t=[...e.claims].reverse().find(e=>e.turnId===n.id&&!e.agentId&&e.kind!==`question`);t?a.push({text:t.text,epistemic:`reported`,refs:[t.id],at:t.ts,author:`agent`}):n.headline?a.push({text:n.headline,epistemic:`reported`,refs:[],at:n.startedAt,author:`agent`}):a.push({text:`Working on: ${U(n.prompt,140)}`,epistemic:`reported`,refs:[],at:n.startedAt,author:`user`})}else if(n?.lastMessage){let t=e.claims.filter(e=>e.turnId===n.id&&e.phase===`final`&&e.kind===`summary`).pop();a.push({text:t?.text??hc(n.lastMessage,300),epistemic:`reported`,refs:t?[t.id]:[],at:n.endedAt,author:`agent`})}else n?.headline&&a.push({text:n.headline,epistemic:`reported`,refs:[],at:n.startedAt,author:`agent`});let o=r.slice(0,6);t===void 0&&o.length>0&&a.push({text:`Recently: ${o.map(e=>Wc(e.path)).join(`, `)}`,epistemic:`observed`,refs:o.map(e=>e.lastCallId)});let s=e.git.commits;return s.length>0&&a.push({text:`${s.length} commit${s.length===1?``:`s`}: ${s.map(e=>Gc(e.sha||`???????`)).join(`, `)}`,epistemic:`observed`,refs:s.map(e=>e.callId??``).filter(Boolean)}),a}function Kl(e){let t=e.counters,n=[];return n.push(t.filesChanged===0?`No files changed`:`${t.filesChanged} file${t.filesChanged===1?``:`s`} changed (+${t.linesAdded} −${t.linesRemoved})`),t.commands>0&&n.push(`${t.commands} command${t.commands===1?``:`s`}`),e.git.commits.length>0&&n.push(`${e.git.commits.length} commit${e.git.commits.length===1?``:`s`}`),n.join(` · `)}function ql(e,t){return t?`${t.label}${t.stale?` — before latest changes`:``}`:e.counters.filesChanged>0?`No checks observed`:`No checks yet`}function Jl(e){let t=new Map;for(let n of e){let e=t.get(n.method);if(n.outcome===`unknown`){e?e.outcome===`unknown`?t.set(n.method,{...n,laterUnreadable:0}):e.laterUnreadable+=1:t.set(n.method,{...n,laterUnreadable:0});continue}t.set(n.method,{...n,laterUnreadable:0})}return[...t.values()]}function Yl(e,t){let n=t.turnId?e.turns.find(e=>e.id===t.turnId):void 0;return{id:t.id,callId:t.callId,at:t.at,label:Pl(t),method:t.method,runner:t.runner,outcome:t.outcome,counts:t.counts,scope:t.scope,exit:t.exit,epistemic:t.outcomeEpistemic,caveats:t.caveats,stale:t.stale,command:t.command,failureExcerpt:t.failureExcerpt,turnIndex:n?.index}}function Xl(e){return{id:e.id,rule:e.rule,severity:e.severity,label:e.label,instance:e.instance,summary:e.summary,detail:e.detail,refs:e.refs,createdAt:e.createdAt,epistemic:e.epistemic}}function Zl(e){let t=new Map;for(let n of e){let e=t.get(n.rule);if(!e){t.set(n.rule,{rule:n.rule,label:n.label,severity:n.severity,occurrences:1,items:[{...n,repeats:1}],createdAt:n.createdAt});continue}e.occurrences++,J(n.severity)>J(e.severity)&&(e.severity=n.severity),n.createdAt>e.createdAt&&(e.createdAt=n.createdAt);let r=n.instance??n.label,i=e.items.find(e=>(e.instance??e.label)===r);i?i.repeats++:e.items.push({...n,repeats:1})}return[...t.values()]}function Ql(e,t,n){let r=t.turnIds.map(t=>e.turns.find(e=>e.id===t)?.index).filter(e=>e!==void 0),i=t.turnIds[t.turnIds.length-1],a=i?$l(e,i,t):void 0;return{path:t.path,changeCount:t.changeCount,linesAdded:t.linesAdded,linesRemoved:t.linesRemoved,kinds:t.kinds,lastChangedAt:t.lastChangedAt,lastCallId:t.lastCallId,verifiedAfter:n!==void 0&&n.at>t.lastChangedAt,verifiedBy:n!==void 0&&n.at>t.lastChangedAt?Pl(n):void 0,turnIndexes:r,reason:a}}function $l(e,t,n){let r=n.lastAgentId,i=e.claims.filter(e=>(r?e.agentId===r:e.turnId===t&&!e.agentId)&&e.ts<=n.lastChangedAt&&(e.kind===`approach`||e.kind===`discovery`||e.kind===`status`)).sort((e,t)=>e.ts.localeCompare(t.ts)),a=Wc(n.path).replace(/\.[^.]+$/,``),o=[...i].reverse().find(e=>a.length>2&&e.text.includes(a))??i[i.length-1];if(o)return{text:o.text,epistemic:`reported`,refs:[o.id],at:o.ts,author:r?`subagent`:`agent`};if(r){let t=e.subagents[r];if(t?.description)return{text:`Subagent: ${t.description}`,epistemic:`observed`,refs:[],at:t.startedAt,author:`subagent`}}}function eu(e,t){let n=t.input.kind===`command`?t.input:void 0,r=t.turnId?e.turns.find(e=>e.id===t.turnId):void 0;return{callId:t.callId,command:n?.command??t.title,description:n?.description,at:t.startedAt,status:t.status,exit:t.exit,durationMs:t.durationMs,isVerification:e.verifications.some(e=>e.callId===t.callId),turnIndex:r?.index,agentId:t.agentId}}function tu(e){let t=[];for(let n of e.plan.items)(n.status===`pending`||n.status===`in_progress`)&&t.push({id:`plan:${n.id}`,text:n.text,status:n.status,epistemic:`planned`,source:`plan`,refs:[]});let n=Vl(e),r=new Set;for(let e of n)r.has(e.method)||(r.add(e.method),t.push({id:`verification:${e.id}`,text:Pl(e),status:`failing`,epistemic:e.outcomeEpistemic,source:`verification`,refs:[e.callId]}));let i=e.turns[e.turns.length-1],a=e.claims.filter(e=>e.kind===`remaining`&&!e.agentId&&(!i||e.turnId===i.id));for(let e of a.slice(-5))t.push({id:`claim:${e.id}`,text:e.text,status:`reported`,epistemic:`reported`,source:`agent`,refs:[e.id]});let o=e.plan.items.filter(e=>e.status===`pending`||e.status===`in_progress`).length,s=[];return e.plan.items.length>0&&s.push(o===0?`All plan steps done`:`${o} of ${e.plan.items.length} steps remaining`),n.length>0&&s.push(`${n.length} failing check${n.length===1?``:`s`}`),a.length>0&&s.push(`${a.length} item${a.length===1?``:`s`} agent says remain`),{glance:s.length?s.join(` · `):t.length===0?`Nothing recorded as remaining`:`${t.length} remaining`,items:t,planExplanation:e.plan.explanation}}function nu(e,t,n){let r=t.activityIds.map(t=>e.activities[t]).filter(e=>!!e),i=0,a=0;for(let e of r)if(e.result?.kind===`fileChanges`)for(let t of e.result.changes)i+=t.linesAdded,a+=t.linesRemoved;return{id:t.id,index:t.index,prompt:U(t.prompt,120),headline:t.headline,startedAt:t.startedAt,endedAt:t.endedAt,outcome:t.outcome,lastMessage:t.lastMessage,activityCount:r.length,files:t.filesTouched,linesAdded:i,linesRemoved:a,verifications:n.filter(e=>t.verificationIds.includes(e.id)),activities:r.map(e=>({callId:e.callId,kind:e.kind,title:e.title,toolName:e.toolName,startedAt:e.startedAt,durationMs:e.durationMs,status:e.status,agentId:e.agentId,isVerification:t.verificationIds.includes(e.callId),exit:e.exit,eventIds:e.eventIds})),claims:e.claims.filter(e=>e.turnId===t.id).map(Wl)}}var ru=`(?![A-Za-z0-9._~+/=-])`;[{id:`aws-access-key`,label:`AWS_KEY`,pattern:/\b((?:A3T[A-Z0-9]|AKIA|ASIA|ABIA|ACCA)[A-Z2-7]{16})\b/g,group:1,entropy:3,keywords:[`akia`,`asia`,`abia`,`acca`,`a3t`]},{id:`aws-secret-key`,label:`AWS_SECRET`,pattern:/(?:aws|secret)[\w.-]{0,24}?(?:secret|access)[\w.-]{0,16}?\s*[:=]\s*['"]?([A-Za-z0-9/+=]{40})\b/gi,group:1,entropy:3.5,keywords:[`aws`,`secret`]},{id:`github-token`,label:`GITHUB_TOKEN`,pattern:/\b((?:ghp|gho|ghu|ghs|ghr)_[0-9a-zA-Z_]{20,255}|github_pat_[0-9a-zA-Z_]{22,255})\b/g,group:1,keywords:[`ghp_`,`gho_`,`ghu_`,`ghs_`,`ghr_`,`github_pat_`]},{id:`gitlab-token`,label:`GITLAB_TOKEN`,pattern:/\b(glpat-[0-9a-zA-Z_-]{20,300})\b/g,group:1,keywords:[`glpat-`]},{id:`openai-key`,label:`OPENAI_KEY`,pattern:new RegExp(String.raw`\b(sk-(?:proj|svcacct|admin)-[A-Za-z0-9_-]{20,}T3BlbkFJ[A-Za-z0-9_-]{20,}|sk-[a-zA-Z0-9]{20}T3BlbkFJ[a-zA-Z0-9]{20})${ru}`,`g`),group:1,keywords:[`t3blbkfj`]},{id:`anthropic-key`,label:`ANTHROPIC_KEY`,pattern:new RegExp(String.raw`\b(sk-ant-(?:api|admin)\d{2}-[a-zA-Z0-9_-]{80,}AA)${ru}`,`g`),group:1,keywords:[`sk-ant-`]},{id:`slack-token`,label:`SLACK_TOKEN`,pattern:/\b(xox[abpers]-[0-9]{8,13}-[0-9A-Za-z-]{8,})\b/g,group:1,keywords:[`xox`]},{id:`slack-webhook`,label:`SLACK_WEBHOOK`,pattern:/(https?:\/\/hooks\.slack\.com\/(?:services|workflows|triggers)\/[A-Za-z0-9+/]{20,})/g,group:1,keywords:[`hooks.slack.com`]},{id:`stripe-key`,label:`STRIPE_KEY`,pattern:new RegExp(String.raw`\b((?:sk|rk)_(?:test|live|prod)_[a-zA-Z0-9]{10,99})${ru}`,`g`),group:1,keywords:[`sk_test`,`sk_live`,`sk_prod`,`rk_test`,`rk_live`,`rk_prod`]},{id:`google-api-key`,label:`GOOGLE_KEY`,pattern:new RegExp(String.raw`\b(AIza[\w-]{35})${ru}`,`g`),group:1,entropy:4,keywords:[`aiza`]},{id:`npm-token`,label:`NPM_TOKEN`,pattern:new RegExp(String.raw`\b(npm_[a-zA-Z0-9]{36})${ru}`,`g`),group:1,keywords:[`npm_`]},{id:`pypi-token`,label:`PYPI_TOKEN`,pattern:/\b(pypi-AgEIcHlwaS5vcmc[\w-]{50,1000})\b/g,group:1,keywords:[`pypi-ageichlwas5vcmc`]},{id:`huggingface-token`,label:`HF_TOKEN`,pattern:new RegExp(String.raw`\b(hf_[a-zA-Z]{34})${ru}`,`g`),group:1,keywords:[`hf_`]},{id:`sendgrid-key`,label:`SENDGRID_KEY`,pattern:new RegExp(String.raw`\b(SG\.[a-zA-Z0-9=_.-]{66})${ru}`,`g`),group:1,keywords:[`sg.`]},{id:`digitalocean-token`,label:`DO_TOKEN`,pattern:/\b(dop_v1_[a-f0-9]{64})\b/g,group:1,keywords:[`dop_v1_`]},{id:`vault-token`,label:`VAULT_TOKEN`,pattern:/\b(hvs\.[\w-]{90,120})\b/g,group:1,keywords:[`hvs.`]},{id:`jwt`,label:`JWT`,pattern:new RegExp(String.raw`\b(ey[a-zA-Z0-9]{17,}\.ey[a-zA-Z0-9/\\_-]{17,}\.[a-zA-Z0-9/\\_-]{10,}={0,2})${ru}`,`g`),group:1,entropy:3,keywords:[`ey`]},{id:`private-key`,label:`PRIVATE_KEY`,pattern:/(-----BEGIN[ A-Z0-9_-]{0,100}PRIVATE KEY(?: BLOCK)?-----[\s\S]{0,4000}?-----END[ A-Z0-9_-]{0,100}PRIVATE KEY(?: BLOCK)?-----)/g,group:1,keywords:[`-----begin`]},{id:`bearer-header`,label:`BEARER_TOKEN`,pattern:/(?:authorization|x-api-key)\s*[:=]\s*(?:bearer\s+|token\s+|basic\s+)?['"]?([A-Za-z0-9._~+/=-]{16,})/gi,group:1,entropy:3,keywords:[`authorization`,`x-api-key`]},{id:`url-credentials`,label:`URL_PASSWORD`,pattern:/\b[a-z][a-z0-9+.-]*:\/\/[^/\s:@]+:([^@\s/]{3,})@/gi,group:1,keywords:[`://`]},{id:`generic-secret`,label:`SECRET`,pattern:/(?:^|[\s"'`{(,])(?:[\w.-]{0,30}?(?:passw(?:or)?d|secret|token|api[_-]?key|access[_-]?key|private[_-]?key|client[_-]?secret|auth[_-]?token))[\w.-]{0,10}\s*(?:=|:|=>|:=)\s*["'`]?([A-Za-z0-9_+/=.~!#$%^&*-]{12,200})/gi,group:1,entropy:3.5,keywords:[`password`,`passwd`,`secret`,`token`,`api_key`,`api-key`,`apikey`,`access_key`,`accesskey`,`private_key`,`client_secret`,`auth_token`]}].map(e=>e.id);var iu=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},au=(e=>e?iu(e):iu),ou=e=>e;function su(e,t=ou){let n=z.useSyncExternalStore(e.subscribe,z.useCallback(()=>t(e.getState()),[e,t]),z.useCallback(()=>t(e.getInitialState()),[e,t]));return z.useDebugValue(n),n}var cu=e=>{let t=au(e),n=e=>su(t,e);return Object.assign(n,t),n},lu=(e=>e?cu(e):cu),uu=[`status`,`what`,`why`,`how`,`verified`,`left`,`review`],du=`salidium.detail`,fu=`salidium.sidebar`,pu=`salidium.theme`,mu=`salidium.stats`,hu=`salidium.rewind`,gu=`salidium.sideFolds`,_u=`Nothing recorded`;function vu(){let e=localStorage.getItem(gu);if(e===null)return[_u];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}function yu(e){e===`system`?delete document.documentElement.dataset.theme:document.documentElement.dataset.theme=e}function bu(){let e=localStorage.getItem(pu);return e===`light`||e===`dark`?e:`system`}function xu(){let e=localStorage.getItem(du);return e===`1`?1:e===`2`?2:0}yu(bu());function Su(e,t){return e.ts.localeCompare(t.ts)||e.seq-t.seq||e.ordinal-t.ordinal}function Cu(e,t){let n={...e};for(let e of t){if(e.internal||e.title?.includes(`[salidium-explainer]`)){delete n[e.id];continue}n[e.id]=e}return n}function wu(e){return Object.values(e).sort((e,t)=>(t.lastEventAt??t.startedAt??``).localeCompare(e.lastEventAt??e.startedAt??``)).map(e=>e.id)}var Y=lu((e,t)=>({api:void 0,detail:xu(),panel:void 0,sidebarOpen:localStorage.getItem(fu)!==`0`,statsOpen:localStorage.getItem(mu)===`1`,rewindOpen:localStorage.getItem(hu)===`1`,sessionQuery:``,sessionSearch:void 0,folded:vu(),historyMode:`off`,historyKinds:[...uu],theme:bu(),sessions:{},sessionOrder:[],sessionsLoaded:!1,listConnection:`connecting`,selectedId:void 0,live:{},liveErrors:{},rawOpen:void 0,explainer:void 0,daemonError:void 0,authRejected:!1,openPanel:t=>e({panel:t}),closePanel:()=>e({panel:void 0}),setToken:n=>e({api:new as(n,{onUnauthorized:()=>t().unauthorized()}),authRejected:!1,daemonError:void 0}),unauthorized:()=>{t().api&&(ms(),e({api:void 0,authRejected:!0,live:{},liveErrors:{},rawOpen:void 0}))},setDetail:t=>{localStorage.setItem(du,String(t)),e({detail:t})},loadExplainer:()=>{let n=t().api;n&&n.explainerSettings().then(t=>e({explainer:t}),()=>{})},setExplainerCadence:n=>{let r=t().api;if(!r)return;let i=t().explainer;i&&e({explainer:{...i,cadence:n}}),r.setExplainerCadence(n).then(t=>e({explainer:t}),()=>e({explainer:i}))},setTheme:t=>{localStorage.setItem(pu,t),yu(t),e({theme:t})},toggleSidebar:()=>e(e=>{let t=!e.sidebarOpen;return localStorage.setItem(fu,t?`1`:`0`),{sidebarOpen:t}}),toggleRewind:()=>e(e=>{let t=!e.rewindOpen;return localStorage.setItem(hu,t?`1`:`0`),{rewindOpen:t}}),toggleStats:()=>e(e=>{let t=!e.statsOpen;return localStorage.setItem(mu,t?`1`:`0`),{statsOpen:t}}),setSessionQuery:t=>e({sessionQuery:t}),toggleFold:t=>e(e=>{let n=e.folded.includes(t)?e.folded.filter(e=>e!==t):[...e.folded,t];return localStorage.setItem(gu,JSON.stringify(n)),{folded:n}}),setHistoryMode:t=>e({historyMode:t}),setHistoryKinds:t=>e({historyKinds:t.length===0?[...uu]:t}),upsertSessions:t=>e(e=>{let n=Cu(e.sessions,t);return{sessions:n,sessionOrder:wu(n),sessionsLoaded:!0}}),setSessionSearch:t=>e(e=>{if(t.query!==e.sessionQuery.trim())return{};let n=Cu(e.sessions,t.sessions);return{sessions:n,sessionOrder:wu(n),sessionSearch:{query:t.query,ids:t.query?t.sessions.map(e=>e.id):void 0,matched:t.matched,total:t.total}}}),removeSession:t=>e(e=>{let n={...e.sessions};delete n[t];let r={...e.live};return delete r[t],{sessions:n,sessionOrder:wu(n),live:r,selectedId:e.selectedId===t?void 0:e.selectedId}}),select:t=>e({selectedId:t,rawOpen:void 0}),setListConnection:t=>e(e=>({listConnection:t,daemonError:t===`open`?void 0:e.daemonError})),setDaemonError:t=>e({daemonError:t}),setLiveError:(t,n)=>e(e=>e.liveErrors[t]===n?{}:{liveErrors:{...e.liveErrors,[t]:n}}),initLive:(t,n,r)=>e(e=>({live:{...e.live,[t]:{state:n,revision:1,changes:[...r].sort(Su),connection:`connecting`,lastSeenSeq:e.live[t]?.lastSeenSeq??n.latestSeq}},liveErrors:e.liveErrors[t]?{...e.liveErrors,[t]:void 0}:e.liveErrors})),applyEvents:(n,r,i)=>{let a=t().live[n];if(!a)return;let o=0;for(let e of r){let t=tl(a.state,e);t.length&&a.changes.push(...t),o++}if(o>0&&i.length===0&&a.changes.sort(Su),i.length){let e=new Set(a.changes.map(e=>`${e.seq}:${e.ordinal}`));for(let t of i)e.has(`${t.seq}:${t.ordinal}`)||a.changes.push(t);a.changes.sort(Su)}(o!==0||i.length!==0)&&e(e=>({live:{...e.live,[n]:{...a,revision:a.revision+1}}}))},setLiveConnection:(t,n,r)=>e(e=>{let i=e.live[t];return i?{live:{...e.live,[t]:{...i,connection:n,error:r}}}:{}}),setScrub:(t,n)=>e(e=>{let r=e.live[t];return r?{live:{...e.live,[t]:{...r,scrub:n}}}:{}}),markSeen:t=>e(e=>{let n=e.live[t];return n?{live:{...e.live,[t]:{...n,lastSeenSeq:n.state.latestSeq}}}:{}}),openRaw:(t,n)=>e({rawOpen:{sessionId:t,eventId:n}}),closeRaw:()=>e({rawOpen:void 0})})),Tu={copy:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`rect`,{x:`5.5`,y:`5.5`,width:`8`,height:`8`,rx:`1.8`}),(0,B.jsx)(`path`,{d:`M10.5 2.5H4.2A1.7 1.7 0 0 0 2.5 4.2v6.3`})]}),check:(0,B.jsx)(`path`,{d:`M3 8.4l3.4 3.2L13 4.8`}),panel:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`rect`,{x:`2`,y:`3`,width:`12`,height:`10`,rx:`2`}),(0,B.jsx)(`path`,{d:`M6.5 3v10`})]}),history:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.5`}),(0,B.jsx)(`path`,{d:`M8 5v3.2l2 1.4`})]}),sliders:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`path`,{d:`M2 5h8M12.5 5H14M2 11h2.5M7 11h7`}),(0,B.jsx)(`circle`,{cx:`11`,cy:`5`,r:`1.5`}),(0,B.jsx)(`circle`,{cx:`5.5`,cy:`11`,r:`1.5`})]}),sun:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`circle`,{cx:`8`,cy:`8`,r:`3`}),(0,B.jsx)(`path`,{d:`M8 1.5v1.2M8 13.3v1.2M2.4 2.4l.9.9M12.7 12.7l.9.9M1.5 8h1.2M13.3 8h1.2M2.4 13.6l.9-.9M12.7 3.3l.9-.9`})]}),moon:(0,B.jsx)(`path`,{d:`M13 9.6A5.6 5.6 0 0 1 6.4 3a5.6 5.6 0 1 0 6.6 6.6Z`}),auto:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`circle`,{cx:`8`,cy:`8`,r:`5.5`}),(0,B.jsx)(`path`,{d:`M8 2.5a5.5 5.5 0 0 1 0 11Z`,fill:`currentColor`,stroke:`none`})]}),latest:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`path`,{d:`M3 3.5 8 8l-5 4.5`}),(0,B.jsx)(`path`,{d:`M12.5 3v10`})]}),record:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`path`,{d:`M3.5 2.5h6L12.5 5.5v8h-9Z`}),(0,B.jsx)(`path`,{d:`M5.5 7.5h5M5.5 10h3.5`})]}),filter:(0,B.jsx)(`path`,{d:`M2 3.5h12l-4.6 5.2v4.1l-2.8 1.7V8.7Z`}),help:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`path`,{d:`M5.9 6.2a2.2 2.2 0 1 1 2.9 2.1c-.6.2-1 .7-1 1.3v.4`}),(0,B.jsx)(`path`,{d:`M7.8 12.4h.4`})]}),search:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`circle`,{cx:`7.2`,cy:`7.2`,r:`4.2`}),(0,B.jsx)(`path`,{d:`M10.3 10.3 13.5 13.5`})]}),reset:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`path`,{d:`M2.6 8a5.4 5.4 0 1 0 1.7-3.9`}),(0,B.jsx)(`path`,{d:`M2.3 3.2v3.1h3.1`})]}),table:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`rect`,{x:`2`,y:`3`,width:`12`,height:`10`,rx:`1.5`}),(0,B.jsx)(`path`,{d:`M2 6.5h12M6.5 6.5v6.5`})]}),stats:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`path`,{d:`M2.5 13.5h11`}),(0,B.jsx)(`path`,{d:`M4.5 11V7M8 11V3.5M11.5 11V8.5`})]}),outbound:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`path`,{d:`M8 3.5H3.5v9h9V8`}),(0,B.jsx)(`path`,{d:`M10 2.5h3.5V6`}),(0,B.jsx)(`path`,{d:`M13.5 2.5 8.5 7.5`})]}),close:(0,B.jsx)(`path`,{d:`M4 4l8 8M12 4l-8 8`}),prev:(0,B.jsx)(`path`,{d:`M10 3.5 5.5 8l4.5 4.5`}),next:(0,B.jsx)(`path`,{d:`M6 3.5 10.5 8 6 12.5`}),save:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`path`,{d:`M8 2.5v7.5`}),(0,B.jsx)(`path`,{d:`M4.8 7.2 8 10.4l3.2-3.2`}),(0,B.jsx)(`path`,{d:`M3 12.5h10`})]}),flag:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`path`,{d:`M4 14.5V2.5`}),(0,B.jsx)(`path`,{d:`M4 3.2h7.6l-1.6 2.9 1.6 2.9H4`})]})};function Eu({name:e}){return(0,B.jsx)(`svg`,{className:`ico`,viewBox:`0 0 16 16`,"aria-hidden":`true`,focusable:`false`,children:Tu[e]})}function Du({icon:e,label:t,value:n,on:r,title:i,onClick:a}){return(0,B.jsxs)(`button`,{type:`button`,className:`btn ${t?``:`btn-icon`} ${r?`is-on`:``}`,onClick:a,"aria-pressed":r,title:i,children:[(0,B.jsx)(Eu,{name:e}),t&&(0,B.jsx)(`span`,{children:t}),n&&(0,B.jsx)(`span`,{className:`btn-value`,children:n}),!t&&(0,B.jsx)(`span`,{className:`sr-only`,children:i})]})}var Ou=`https://salidium.com/docs`;function ku({icon:e,label:t,href:n,title:r}){return(0,B.jsxs)(`a`,{className:`btn`,href:n,target:`_blank`,rel:`noreferrer`,title:r,children:[(0,B.jsx)(Eu,{name:e}),(0,B.jsx)(`span`,{children:t})]})}function Au(e,t){let n=(0,z.useRef)(null);return(0,z.useEffect)(()=>{if(!e)return;let r=e=>{n.current?.contains(e.target)||t()},i=e=>{e.key===`Escape`&&t()};return document.addEventListener(`pointerdown`,r),document.addEventListener(`keydown`,i),()=>{document.removeEventListener(`pointerdown`,r),document.removeEventListener(`keydown`,i)}},[e,t]),n}var ju=[{value:`system`,icon:`auto`,label:`Match the system`},{value:`light`,icon:`sun`,label:`Light`},{value:`dark`,icon:`moon`,label:`Dark`}];function Mu(){let e=Y(e=>e.theme),t=Y(e=>e.setTheme),n=Math.max(0,ju.findIndex(t=>t.value===e)),r=ju[n],i=ju[(n+1)%ju.length];return(0,B.jsx)(Du,{icon:r.icon,title:`Theme: ${r.label}. Switch to ${i.label.toLowerCase()}.`,onClick:()=>t(i.value)})}function Nu({label:e,id:t,children:n}){let[r,i]=(0,z.useState)(!1);return(0,B.jsxs)(`div`,{className:`disclosure`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`disclosure-toggle`,onClick:()=>i(e=>!e),"aria-expanded":r,"aria-controls":`disc-${t}`,children:[(0,B.jsx)(`span`,{className:`chev ${r?`is-open`:``}`,"aria-hidden":`true`,children:`›`}),e]}),(0,B.jsx)(`div`,{className:`disclosure-body ${r?`is-open`:``}`,id:`disc-${t}`,children:(0,B.jsx)(`div`,{children:n})})]})}function Pu({status:e}){return e===`connecting`?(0,B.jsx)(`span`,{className:`conn conn-warn`,title:`Opening the connection to the daemon`,children:`connecting`}):e===`reconnecting`?(0,B.jsx)(`span`,{className:`conn conn-warn`,title:`Lost contact with the daemon; retrying`,children:`reconnecting…`}):e===`closed`?(0,B.jsx)(`span`,{className:`conn conn-bad`,title:`Not receiving updates; the daemon may have stopped`,children:`disconnected`}):null}async function Fu(e){if(!navigator.clipboard)return`refused`;try{return await navigator.clipboard.writeText(e),`copied`}catch{return`refused`}}function Iu(e){if(!e)return;let t=document.createRange();t.selectNodeContents(e);let n=window.getSelection();n?.removeAllRanges(),n?.addRange(t)}function Lu(e){let t=e.source.version?` ${e.source.version}`:``;return{title:Ru(e),meta:`seq ${e.seq} · ${e.source.provider} ${e.source.channel}${t}`,facts:Wu(e),origin:Ju(e)}}function Ru(e){switch(e.kind){case`session.started`:return`Session started`;case`session.updated`:return`Session details changed`;case`session.ended`:return`Session ended`;case`turn.started`:return`Turn started`;case`turn.ended`:return`Turn ended`;case`agent.message`:return e.phase===`final`?`The agent’s answer`:`The agent said`;case`agent.thinking`:return`The agent thought`;case`agent.usage`:return`What one model call used`;case`tool.called`:return zu[e.input.kind];case`tool.completed`:return Bu[e.result.kind];case`tool.failed`:return e.cause===`rejected`||e.cause===`denied`?`Tool stopped`:`Tool failed`;case`subagent.started`:return`Subagent started`;case`subagent.ended`:return`Subagent finished`;case`plan.updated`:return`Plan updated`;case`compaction`:return`Context compacted`;case`permission.requested`:return`Permission asked for`;case`notification`:return`Notification`;case`git.snapshot`:return`Repository snapshot`;case`ingest.warning`:return`A record could not be read`;case`salidium.explanation`:return`Generated explanation`;default:return`Record`}}var zu={command:`Command run`,fileEdit:`File edited`,fileWrite:`File written`,fileRead:`File read`,search:`Search`,webFetch:`Page fetched`,webSearch:`Web search`,subagent:`Subagent launched`,plan:`Plan written`,question:`Question asked`,mcp:`MCP tool called`,other:`Tool called`},Bu={command:`Command finished`,fileChanges:`Files changed`,fileRead:`File read`,subagent:`Subagent reported`,generic:`Tool finished`};function Vu(e){let t=e.code===void 0?``:String(e.code);switch(e.observation){case`explicit`:return{value:t===``?`reported, no code`:t};case`inferred-success`:return{value:t===``?`success`:t,note:`inferred, not reported`};case`inferred-failure`:return{value:t===``?`failure`:t,note:`inferred, not reported`};default:return{value:`unknown`,note:`the record does not say`}}}function Hu(e,t,n=`${t}s`){return`${e} ${e===1?t:n}`}function Uu(e){return e.toLocaleString()}function Wu(e){switch(e.kind){case`tool.called`:return[...Ku(e),{label:`Tool`,value:e.toolName,mono:!0}];case`tool.completed`:return[...qu(e),{label:`Tool`,value:e.toolName,mono:!0},...e.durationMs===void 0?[]:[{label:`Took`,value:`${e.durationMs} ms`,mono:!0}]];case`tool.failed`:{let t=e.exit?Vu(e.exit):void 0;return[{label:`Error`,value:e.errorExcerpt,mono:!0,block:!0,copy:!0},{label:`Cause`,value:Gu[e.cause]},...t?[{label:`Exit`,value:t.value,mono:!0,note:t.note}]:[],{label:`Tool`,value:e.toolName,mono:!0},...e.durationMs===void 0?[]:[{label:`Took`,value:`${e.durationMs} ms`,mono:!0}]]}case`agent.message`:return[{label:`Said`,value:e.text,block:!0,copy:!0,note:e.truncated?`cut short by the excerpt limit`:void 0},...e.phase?[{label:`Phase`,value:e.phase}]:[]];case`agent.thinking`:return[{label:`Length`,value:Hu(e.chars,`character`),mono:!0,note:`the reasoning itself is neither stored nor shown`}];case`agent.usage`:return[{label:`Input tokens`,value:Uu(e.inputTokens),mono:!0},{label:`Output tokens`,value:Uu(e.outputTokens),mono:!0},{label:`Cache read tokens`,value:Uu(e.cacheReadTokens),mono:!0},{label:`Cache write tokens`,value:Uu(e.cacheWriteTokens),mono:!0},...Z(`Model`,e.model,!0),{label:`Response`,value:e.messageId,mono:!0,copy:!0,note:`one API response; its other records repeat these same figures`}];case`turn.started`:return[{label:`Asked`,value:e.prompt,block:!0,copy:!0,note:e.promptTruncated?`cut short by the excerpt limit`:void 0}];case`turn.ended`:return[{label:`Outcome`,value:e.outcome},...e.error?[{label:`Error`,value:e.error,mono:!0,block:!0}]:[],...e.lastMessage?[{label:`Last message`,value:e.lastMessage,block:!0,copy:!0}]:[]];case`session.started`:return[{label:`Working in`,value:e.cwd,mono:!0,copy:!0},...Z(`Title`,e.title),...Z(`Model`,e.model,!0),...Z(`Branch`,e.gitBranch,!0),...Z(`Started by`,e.entrypoint),...Z(`Reason`,e.reason),...Z(`Transcript`,e.transcriptPath,!0,!0)];case`session.updated`:return[...Z(`Title`,e.title),...Z(`Model`,e.model,!0),...Z(`Branch`,e.gitBranch,!0),...Z(`Working in`,e.cwd,!0,!0)];case`session.ended`:return[...Z(`Reason`,e.reason)];case`subagent.started`:return[...Z(`Task`,e.description),...Z(`Kind`,e.agentType,!0),{label:`Lane`,value:e.subagentId,mono:!0},...Z(`From call`,e.parentCallId,!0),...Z(`Transcript`,e.transcriptPath,!0,!0)];case`subagent.ended`:return[{label:`Lane`,value:e.subagentId,mono:!0},...e.lastMessage?[{label:`Reported`,value:e.lastMessage,block:!0,copy:!0}]:[]];case`plan.updated`:{let t=e.items.filter(e=>e.status===`completed`).length,n=e.items.filter(e=>e.status===`in_progress`).length;return[{label:`Plan`,value:`${Hu(e.items.length,`item`)} · ${t} done · ${n} in progress`},...e.items.map(e=>({label:X[e.status],value:e.text})),...Z(`Why`,e.explanation),{label:`Kind`,value:e.mode===`replace`?`the whole plan`:`an update to it`}]}case`compaction`:return[...Z(`Trigger`,e.trigger),...e.summaryExcerpt?[{label:`Kept`,value:e.summaryExcerpt,block:!0,copy:!0}]:[]];case`permission.requested`:return[{label:`Asked`,value:e.summary,block:!0},{label:`Tool`,value:e.toolName,mono:!0}];case`notification`:return[{label:`Message`,value:e.message,block:!0},...Z(`Kind`,e.notificationType)];case`git.snapshot`:return[{label:`Repository`,value:e.repoRoot,mono:!0,copy:!0},...Z(`Head`,e.head,!0,!0),...Z(`Branch`,e.branch,!0),{label:`Dirty`,value:e.dirty.length===0?`nothing uncommitted`:Hu(e.dirty.length,`path`),note:e.dirtyTruncated?`the list is capped, so there may be more`:void 0},...e.dirty.map(e=>({label:e.status.trim()===``?`unchanged`:e.status.trim(),value:e.path,mono:!0}))];case`ingest.warning`:return[{label:`Problem`,value:e.code},...Z(`Detail`,e.detail,!0,!1,!0)];case`salidium.explanation`:return[{label:`Summary`,value:e.what.summary,block:!0,note:`generated, not observed`},...Z(`Currently`,e.what.currently??void 0),{label:`Generated by`,value:e.model,mono:!0},{label:`From records up to`,value:`seq ${e.basedOnSeq}`,mono:!0}];default:return[]}}var Gu={error:`the tool itself failed`,rejected:`a human declined it`,denied:`policy refused it`,interrupted:`it was interrupted`,timeout:`it ran out of time`},X={completed:`done`,in_progress:`doing`,pending:`to do`,cancelled:`dropped`};function Z(e,t,n=!1,r=!1,i=!1){return t===void 0||t===``?[]:[{label:e,value:t,mono:n,copy:r,block:i}]}function Ku(e){let t=e.input;switch(t.kind){case`command`:return[{label:`Command`,value:t.command,mono:!0,block:!0,copy:!0},...Z(`Why`,t.description),...Z(`In`,t.cwd,!0,!0),...t.background?[{label:`Runs`,value:`in the background`}]:[]];case`fileEdit`:case`fileWrite`:case`fileRead`:return[{label:`File`,value:t.path,mono:!0,copy:!0}];case`search`:return[{label:`Query`,value:t.query,mono:!0,copy:!0},...Z(`In`,t.path,!0,!0)];case`webFetch`:case`webSearch`:return[{label:`Target`,value:t.target,mono:!0,copy:!0}];case`subagent`:return[...Z(`Task`,t.description),...Z(`Kind`,t.agentType,!0)];case`question`:return[{label:`Asked`,value:t.questions.join(`
86
- `),block:!0,copy:!0}];case`mcp`:return[{label:`Tool`,value:`${t.server}/${t.tool}`,mono:!0,copy:!0},...Z(`Arguments`,t.argsExcerpt,!0,!0,!0)];case`plan`:return[{label:`Wrote`,value:e.title}];default:return[...Z(`Summary`,t.summary)]}}function qu(e){let t=e.result;switch(t.kind){case`command`:{let e=Vu(t.exit),n=t.gitOperation;return[{label:`Exit`,value:e.value,mono:!0,note:e.note},...t.outputExcerpt?[{label:`Output`,value:t.outputExcerpt,mono:!0,block:!0,copy:!0,note:t.truncated?`excerpt of ${Hu(t.outputChars,`character`)}`:Hu(t.outputChars,`character`)}]:[{label:`Output`,value:`none recorded`}],...t.interrupted?[{label:`Interrupted`,value:`yes`}]:[],...t.timedOut?[{label:`Timed out`,value:`yes`}]:[],...n?.commit?[{label:`Commit`,value:n.commit.sha,mono:!0,copy:!0}]:[],...n?.push?[{label:`Pushed`,value:n.push.branch??`yes`,mono:!0}]:[],...n?.pr?.number===void 0?[]:[{label:`Pull request`,value:`#${n.pr.number}`,mono:!0}]]}case`fileChanges`:{let e=t.changes.reduce((e,t)=>e+t.linesAdded,0),n=t.changes.reduce((e,t)=>e+t.linesRemoved,0);return[{label:`Changed`,value:`${Hu(t.changes.length,`file`)} · +${e} −${n}`},...t.changes.map(e=>({label:e.change,value:`${e.path} +${e.linesAdded} −${e.linesRemoved}`,mono:!0,note:e.applied?void 0:`not applied`}))]}case`fileRead`:return[{label:`File`,value:t.path,mono:!0,copy:!0},...t.suppressed?[{label:`Contents`,value:`withheld: this path holds credentials`}]:[]];case`subagent`:return[{label:`Status`,value:t.status},...t.summaryExcerpt?[{label:`Reported`,value:t.summaryExcerpt,block:!0,copy:!0}]:[],...t.toolCalls===void 0?[]:[{label:`Tool calls`,value:String(t.toolCalls),mono:!0}],...t.durationMs===void 0?[]:[{label:`Ran for`,value:`${t.durationMs} ms`,mono:!0}],...Z(`Lane`,t.agentId,!0)];default:return t.excerpt?[{label:`Result`,value:t.excerpt,mono:!0,block:!0,copy:!0}]:[{label:`Result`,value:`nothing recorded`}]}}function Ju(e){return[{label:`When`,value:e.ts,mono:!0,note:e.tsSource===`ingest`?`when Salidium received it, not when it happened`:void 0},...Z(`Lane`,e.agentId,!0),...Z(`Turn`,e.turnId,!0),...e.redactions?[{label:`Redacted`,value:Hu(e.redactions,`credential-shaped string`),note:`removed at ingest, before anything was stored`}]:[],{label:`Id`,value:e.id,mono:!0,copy:!0}]}var Yu=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`,Xu=[];function Zu(e){return Array.from(e.querySelectorAll(Yu)).filter(e=>!e.closest(`[hidden], [inert], [aria-hidden="true"]`)&&e.getClientRects().length>0)}function Qu({active:e,containerRef:t,onClose:n,initialFocus:r,restoreFocus:i,shouldRestoreFocus:a}){let o=(0,z.useRef)(e),s=(0,z.useRef)(n),c=(0,z.useRef)(r),l=(0,z.useRef)(i),u=(0,z.useRef)(a),d=(0,z.useRef)(null);o.current=e,s.current=n,c.current=r,l.current=i,u.current=a,(0,z.useEffect)(()=>{if(e)return;let t=e=>{let t=e.target instanceof Element?e.target.closest(Yu):null;t&&(d.current=t)};return document.addEventListener(`pointerdown`,t,!0),()=>document.removeEventListener(`pointerdown`,t,!0)},[e]),(0,z.useEffect)(()=>{if(!e)return;let n=t.current;if(!n)return;let r=Symbol(`modal`),i=d.current;d.current=null;let a=i?.isConnected===!0?i:document.activeElement instanceof HTMLElement?document.activeElement:null;Xu.push(r);let f=()=>c.current?.(n)??Zu(n)[0]??n,p=requestAnimationFrame(()=>f().focus()),m=e=>{if(Xu.at(-1)!==r)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),s.current();return}if(e.key!==`Tab`)return;let t=Zu(n),i=t[0],a=t.at(-1);if(!i||!a){e.preventDefault(),n.focus();return}let o=document.activeElement;!(o instanceof Node)||!n.contains(o)?(e.preventDefault(),(e.shiftKey?a:i).focus()):e.shiftKey&&(o===i||o===n)?(e.preventDefault(),a.focus()):!e.shiftKey&&o===a&&(e.preventDefault(),i.focus())},h=e=>{Xu.at(-1)!==r||n.contains(e.target)||f().focus()};return document.addEventListener(`keydown`,m,!0),document.addEventListener(`focusin`,h,!0),()=>{cancelAnimationFrame(p),document.removeEventListener(`keydown`,m,!0),document.removeEventListener(`focusin`,h,!0);let e=Xu.lastIndexOf(r);e>=0&&Xu.splice(e,1),!(o.current||u.current?.()===!1)&&requestAnimationFrame(()=>{let e=l.current?.()??a;e?.isConnected&&e.focus()})}},[e,t])}var $u=900;function ed(){return(0,z.useCallback)(e=>{if(!e)return;let t=0,n,r=()=>{t=0;let n=e.scrollTop>1,r=e.scrollTop+e.clientHeight<e.scrollHeight-1;e.dataset.fade=n&&r?`both`:n?`top`:r?`bottom`:`none`},i=()=>{t||=requestAnimationFrame(r)},a=()=>{e.dataset.scrolling=`true`,n&&clearTimeout(n),n=setTimeout(()=>{delete e.dataset.scrolling},$u),i()};r(),e.addEventListener(`scroll`,a,{passive:!0});let o=new ResizeObserver(i);o.observe(e);for(let t of e.children)o.observe(t);let s=new MutationObserver(i);return s.observe(e,{childList:!0,subtree:!0}),()=>{e.removeEventListener(`scroll`,a),o.disconnect(),s.disconnect(),t&&cancelAnimationFrame(t),n&&clearTimeout(n)}},[])}function td({label:e,size:t=`sm`,className:n=``}){return(0,B.jsxs)(`span`,{className:`loading is-${t} ${n}`.trim(),role:`status`,children:[(0,B.jsx)(nd,{}),(0,B.jsx)(`span`,{className:`loading-label shimmer`,children:e})]})}function nd(){return(0,B.jsxs)(`svg`,{className:`orb`,viewBox:`0 0 16 16`,"aria-hidden":`true`,focusable:`false`,children:[(0,B.jsx)(`circle`,{className:`orb-dot`,cx:`8`,cy:`3.2`,r:`1.9`,fill:`currentColor`}),(0,B.jsx)(`circle`,{className:`orb-dot`,cx:`12.2`,cy:`10.4`,r:`1.9`,fill:`currentColor`}),(0,B.jsx)(`circle`,{className:`orb-dot`,cx:`3.8`,cy:`10.4`,r:`1.9`,fill:`currentColor`})]})}function rd(){let e=Y(e=>e.api),t=Y(e=>e.rawOpen),n=Y(e=>e.closeRaw),r=Y(e=>e.openRaw),[i,a]=(0,z.useState)(),[o,s]=(0,z.useState)(),[c,l]=(0,z.useState)(`event`),[u,d]=(0,z.useState)({}),f=(0,z.useRef)(null),p=ed(),m=(0,z.useCallback)(()=>{!e||!t||(a(void 0),s(void 0),d({}),e.raw(t.sessionId,t.eventId).then(a,e=>s(e instanceof Error?e.message:String(e))))},[e,t]);(0,z.useEffect)(m,[m]);let h=t?.sessionId,g=i?.event.seq;(0,z.useEffect)(()=>{if(!e||h===void 0||g===void 0)return;let t=!0;return e.events(h,g-2,g+1,3).then(e=>{t&&d({prev:e.find(e=>e.seq===g-1)?.id,next:e.find(e=>e.seq===g+1)?.id})},()=>{}),()=>{t=!1}},[e,h,g]);let _=(0,z.useCallback)(e=>{e&&h&&r(h,e)},[r,h]);if(Qu({active:t!==void 0,containerRef:f,onClose:n,initialFocus:e=>e.querySelector(`[data-modal-initial]`)}),(0,z.useEffect)(()=>{if(!t)return;let e=e=>{if(e.key===`ArrowLeft`||e.key===`ArrowRight`){let t=document.activeElement;if(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault(),_(e.key===`ArrowLeft`?u.prev:u.next);return}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,_,u]),!t)return null;let v=i?Lu(i.event):void 0;return(0,B.jsxs)(`div`,{className:`drawer`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`drawer-title`,ref:f,tabIndex:-1,children:[(0,B.jsxs)(`div`,{className:`drawer-head`,children:[(0,B.jsx)(`h2`,{className:`drawer-title`,id:`drawer-title`,children:v?v.title:`Source record`}),(0,B.jsxs)(`div`,{className:`drawer-acts`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>_(u.prev),disabled:!u.prev,title:`The record before this one (←)`,children:[(0,B.jsx)(Eu,{name:`prev`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`The record before this one`})]}),(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>_(u.next),disabled:!u.next,title:`The record after this one (→)`,children:[(0,B.jsx)(Eu,{name:`next`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`The record after this one`})]}),i&&(0,B.jsx)(od,{data:i}),(0,B.jsx)(`span`,{className:`toolbar-sep`,"aria-hidden":`true`}),(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:n,title:`Close (Escape)`,"data-modal-initial":`true`,children:[(0,B.jsx)(Eu,{name:`close`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}),(0,B.jsxs)(`div`,{className:`drawer-panes`,children:[(0,B.jsx)(`button`,{type:`button`,"aria-pressed":c===`event`,className:`btn ${c===`event`?`is-on`:``}`,onClick:()=>l(`event`),title:`What Salidium derived and stored`,children:`Salidium event`}),(0,B.jsx)(`button`,{type:`button`,"aria-pressed":c===`raw`,className:`btn ${c===`raw`?`is-on`:``}`,onClick:()=>l(`raw`),title:`The original line from the agent's own file`,children:`Provider record`}),v&&(0,B.jsx)(`span`,{className:`drawer-id mono`,children:v.meta})]}),(0,B.jsxs)(`div`,{className:`drawer-body scroll-fade`,ref:p,children:[o&&(0,B.jsxs)(`div`,{className:`bad`,role:`alert`,children:[(0,B.jsx)(`p`,{className:`bad-title`,children:`Could not load this record`}),(0,B.jsx)(`p`,{className:`mono`,children:o}),(0,B.jsx)(`button`,{type:`button`,className:`btn btn-accent`,onClick:m,children:`Try again`})]}),!i&&!o&&(0,B.jsx)(`div`,{className:`muted`,role:`status`,children:(0,B.jsx)(td,{label:`Loading the record`})}),i&&v&&c===`event`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(id,{facts:v.facts}),(0,B.jsx)(`h3`,{className:`drawer-sub`,children:`How we know`}),(0,B.jsx)(id,{facts:v.origin}),(0,B.jsxs)(`details`,{className:`drawer-full`,children:[(0,B.jsx)(`summary`,{children:`Everything Salidium stored, as it is stored`}),(0,B.jsx)(`pre`,{className:`mono`,children:JSON.stringify(i.event,null,2)})]})]}),i&&c===`raw`&&(0,B.jsxs)(B.Fragment,{children:[i.path!==void 0&&(0,B.jsx)(id,{facts:[{label:`Line`,value:`${i.path}:${(i.line??0)+1}`,mono:!0,copy:!0}]}),i.raw===null||i.raw===void 0?(0,B.jsx)(`p`,{className:`muted`,children:i.reason??`No raw record.`}):(0,B.jsx)(`pre`,{className:`mono drawer-raw`,children:typeof i.raw==`string`?i.raw:JSON.stringify(i.raw,null,2)})]})]})]})}function id({facts:e}){if(e.length===0)return null;let t=new Map,n=e.map(e=>{let n=`${e.label}\u0000${e.value}`,r=(t.get(n)??0)+1;return t.set(n,r),{fact:e,key:r===1?n:`${n}\u0000${r}`}});return(0,B.jsx)(`dl`,{className:`facts`,children:n.map(e=>(0,B.jsx)(ad,{fact:e.fact},e.key))})}function ad({fact:e}){let[t,n]=(0,z.useState)(`idle`),r=(0,z.useRef)(null);return(0,z.useEffect)(()=>{if(t===`idle`)return;let e=setTimeout(()=>n(`idle`),2400);return()=>clearTimeout(e)},[t]),(0,B.jsxs)(`div`,{className:`fact ${e.block?`is-block`:``}`,children:[(0,B.jsx)(`dt`,{className:`fact-label`,children:e.label}),(0,B.jsxs)(`dd`,{className:`fact-value`,children:[(0,B.jsx)(`span`,{className:e.mono?`mono`:void 0,ref:r,children:e.value}),e.note&&(0,B.jsx)(`span`,{className:`fact-note`,children:e.note}),e.copy&&(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon fact-copy`,onClick:()=>{Fu(e.value).then(e=>{if(e===`copied`)return n(`copied`);Iu(r.current),n(`selected`)})},title:t===`copied`?`Copied`:t===`selected`?`This window cannot reach the clipboard, so it is selected instead`:`Copy the ${e.label.toLowerCase()}`,children:[(0,B.jsx)(Eu,{name:t===`copied`?`check`:`copy`}),(0,B.jsxs)(`span`,{className:`sr-only`,children:[`Copy the `,e.label.toLowerCase()]})]})]})]})}function od({data:e}){return(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>{let t=JSON.stringify({event:e.event,provider:{path:e.path,line:e.line,record:e.raw,reason:e.reason}},null,2),n=URL.createObjectURL(new Blob([t],{type:`application/json`})),r=document.createElement(`a`);r.href=n,r.download=`salidium-${e.event.seq}-${e.event.kind}.json`,r.click(),URL.revokeObjectURL(n)},title:`Save both records as a JSON file`,children:[(0,B.jsx)(Eu,{name:`save`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Save both records as a JSON file`})]})}function sd(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`})}function cd(e,t=Date.now()){if(!e)return``;let n=Date.parse(e);if(Number.isNaN(n))return``;let r=Math.max(0,Math.round((t-n)/1e3));if(r<5)return`just now`;if(r<60)return`${r}s ago`;let i=Math.round(r/60);if(i<60)return`${i}m ago`;let a=Math.round(i/60);return a<48?`${a}h ago`:`${Math.round(a/24)}d ago`}function ld(e){if(e===void 0)return``;if(e<1e3)return`${e}ms`;if(e<6e4)return`${(e/1e3).toFixed(+(e<1e4))}s`;let t=Math.floor(e/6e4);if(t<60)return`${t}m ${Math.round(e%6e4/1e3)}s`;let n=Math.floor(t/60);return n<24?`${n}h ${t%60}m`:`${Math.floor(n/24)}d ${n%24}h`}function ud(e,t){let n=hd(e),r=t?hd(t).replace(/\/$/,``):void 0;return r&&n.startsWith(`${r}/`)&&(n=n.slice(r.length+1)),n}function dd(e){return e.replace(/[A-Za-z]:[\\/]Users[\\/][^\\/\s'"]+/g,`~`).replace(/\/(?:Users|home)\/[^/\s'"]+/g,`~`)}function fd(e){let t=e.map(hd),n=t[0];if(!n||e.length<2)return``;let r=n.split(`/`),i=r.length-1;for(let e of t){let t=e.split(`/`),n=0;for(;n<i&&n<t.length-1&&t[n]===r[n];)n++;if(i=n,i===0)return``}return`${r.slice(0,i).join(`/`)}/`}function pd(e){let t=hd(e),n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t}function md(e){let t=hd(e),n=t.lastIndexOf(`/`);return n>0?t.slice(0,n):``}function hd(e){return e.replaceAll(`\\`,`/`)}function gd(e){switch(e){case`working`:return{glyph:`●`,label:`Working`,cls:`st-working`};case`waiting`:return{glyph:`◐`,label:`Waiting for you`,cls:`st-waiting`};case`idle`:return{glyph:`○`,label:`Idle`,cls:`st-idle`};case`ended`:return{glyph:`◌`,label:`Ended`,cls:`st-ended`};default:return{glyph:`·`,label:`Unknown`,cls:`st-unknown`}}}var _d=[`working`,`waiting`,`idle`,`ended`];function vd(){let[e,t]=(0,z.useState)(!1),n=Au(e,()=>t(!1));return(0,B.jsxs)(`div`,{className:`pop`,ref:n,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon ${e?`is-on`:``}`,onClick:()=>t(e=>!e),"aria-expanded":e,title:`What the marks on a row mean`,children:[(0,B.jsx)(Eu,{name:`help`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`What the marks on a row mean`})]}),(0,B.jsxs)(`div`,{className:`pop-panel is-narrow marks-key arrives ${e?`is-open`:``}`,children:[(0,B.jsx)(`div`,{className:`pop-head`,children:(0,B.jsx)(`span`,{children:`On a row`})}),(0,B.jsxs)(`dl`,{children:[_d.map(e=>{let t=gd(e);return(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{className:`status-dot ${t.cls}`,"aria-hidden":`true`,children:t.glyph}),(0,B.jsx)(`dd`,{children:t.label.toLowerCase()})]},e)}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{"aria-hidden":`true`,children:(0,B.jsxs)(`span`,{className:`attn-badge num is-live`,children:[(0,B.jsx)(Eu,{name:`flag`}),`1`]})}),(0,B.jsx)(`dd`,{children:`to review`})]})]})]})]})}var yd=18e5;function Q(e,t){if(e.status===`waiting`)return!0;if(e.counts.reviewOpen===0||e.status===`ended`)return!1;if(e.status===`working`)return!0;let n=Date.parse(e.lastEventAt??``);return Number.isFinite(n)&&t-n<yd}function bd(e){return!e.title&&e.counts.turns===0&&e.counts.toolCalls===0&&e.counts.filesChanged===0}function xd(e){return`${e.title??``} ${e.repoRoot??``} ${e.cwd??``} ${e.providerSessionId}`.toLowerCase()}function Sd(e){let t=e.toLowerCase().split(/\s+/).filter(Boolean);return t.length===0?()=>!0:e=>{let n=xd(e);return t.every(e=>n.includes(e))}}var Cd=150;function wd({now:e}){let t=Y(e=>e.sessionOrder),n=Y(e=>e.sessions),r=Y(e=>e.selectedId),i=Y(e=>e.sessionsLoaded),a=Y(e=>e.select),o=Y(e=>e.sessionQuery),s=Y(e=>e.setSessionQuery),c=Y(e=>e.api),l=Y(e=>e.sessionSearch),u=Y(e=>e.setSessionSearch),d=ed(),f=o.trim();if((0,z.useEffect)(()=>{if(!c)return;let e=new AbortController,t=setTimeout(()=>{c.searchSessions(f,{limit:f?void 0:0,signal:e.signal}).then(u,()=>{})},Cd);return()=>{clearTimeout(t),e.abort()}},[c,f,u]),!i)return(0,B.jsx)(`div`,{className:`side-empty`,children:(0,B.jsx)(td,{label:`Loading sessions`})});if(t.length===0)return(0,B.jsxs)(`div`,{className:`side-empty`,children:[(0,B.jsx)(`p`,{children:`No agent sessions yet.`}),(0,B.jsx)(`p`,{className:`muted`,children:`Start a Claude Code or Codex session and it will appear here within a second. Sessions from the last few days are read in when the daemon starts.`})]});let p=l?.query===f?l:void 0,m=p?.ids?p.ids.map(e=>n[e]).filter(e=>!!e):t.map(e=>n[e]).filter(e=>!!e).filter(Sd(f)),h=m.filter(bd),g=m.filter(e=>!bd(e)),_=[[`Needs you`,g.filter(t=>Q(t,e))],[`Working`,g.filter(t=>!Q(t,e)&&t.status===`working`)],[`Recent`,g.filter(t=>!Q(t,e)&&t.status!==`working`)]],v=f.length>0,y=l?.total,b=p?.matched,x=b!==void 0&&b>0&&y!==void 0?y-b:0,ee=b!==void 0&&b>m.length;return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Td,{query:o,setQuery:s}),(0,B.jsxs)(`div`,{className:`side-scroll scroll-fade`,ref:d,children:[_.map(([t,n])=>n.length===0?null:(0,B.jsx)(Ed,{title:t,count:n.length,filtering:v,children:(0,B.jsx)(`ul`,{className:`session-list`,"aria-label":t,children:n.map(t=>(0,B.jsx)(Dd,{s:t,selected:t.id===r,now:e,onSelect:()=>a(t.id)},t.id))})},t)),h.length>0&&(0,B.jsx)(Ed,{title:`Nothing recorded`,count:h.length,filtering:v,title2:`Sessions that started and ended without running a turn`,children:(0,B.jsx)(`ul`,{className:`session-list is-quiet`,"aria-label":`Sessions with nothing recorded`,children:[...h].sort((e,t)=>(t.lastEventAt??t.startedAt??``).localeCompare(e.lastEventAt??e.startedAt??``)).map(t=>(0,B.jsx)(Dd,{s:t,selected:t.id===r,now:e,onSelect:()=>a(t.id)},t.id))})}),!v&&y!==void 0&&y>m.length&&(0,B.jsxs)(`p`,{className:`side-hidden`,children:[m.length,` of `,y,` sessions`]}),v&&b===0&&y!==void 0&&(0,B.jsxs)(`p`,{className:`side-none`,children:[`Nothing matches `,(0,B.jsx)(`strong`,{children:o}),`.`,(0,B.jsxs)(`span`,{className:`muted`,children:[` `,y,` searched by name, repo and id.`]})]}),v&&ee&&(0,B.jsxs)(`p`,{className:`side-hidden`,children:[`Showing the newest `,m.length,` of `,b,` matches`]}),v&&x>0&&(0,B.jsxs)(`p`,{className:`side-hidden`,children:[x,` `,x===1?`session`:`sessions`,` hidden by the filter`]})]})]})}function Td({query:e,setQuery:t}){return(0,B.jsxs)(`div`,{className:`side-find`,children:[(0,B.jsx)(`span`,{className:`side-find-mark`,"aria-hidden":`true`,children:(0,B.jsx)(Eu,{name:`search`})}),(0,B.jsx)(`input`,{className:`field side-find-field`,type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:`Find a session`,"aria-label":`Find a session by name, repo or id`,spellCheck:!1,autoComplete:`off`}),e!==``&&(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon side-find-clear`,onClick:()=>t(``),title:`Clear the filter`,children:[(0,B.jsx)(Eu,{name:`close`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Clear the filter`})]})]})}function Ed({title:e,count:t,filtering:n,title2:r,children:i}){let a=Y(t=>t.folded.includes(e)),o=Y(e=>e.toggleFold),s=n||!a;return(0,B.jsxs)(`section`,{className:`side-section`,children:[(0,B.jsx)(`h2`,{className:`side-section-h`,children:(0,B.jsxs)(`button`,{type:`button`,className:`side-section-head is-toggle`,onClick:()=>o(e),"aria-expanded":s,title:r??(s?`Fold ${e} away`:`Show ${e}`),children:[(0,B.jsx)(`span`,{className:`chev ${s?`is-open`:``}`,"aria-hidden":`true`,children:`›`}),(0,B.jsx)(`span`,{children:e}),(0,B.jsx)(`span`,{className:`num`,children:t})]})}),s&&i]})}function Dd({s:e,selected:t,now:n,onSelect:r}){let i=gd(e.status),a=Q(e,n),o=pd(e.repoRoot||e.cwd),s=e.title||(bd(e)?e.providerSessionId.slice(0,8):o)||`unnamed`,c=s!==o,l=[s,c&&`in ${o}`,i.label,e.counts.reviewOpen>0&&`${e.counts.reviewOpen} to review`].filter(Boolean).join(`, `);return(0,B.jsx)(`li`,{children:(0,B.jsxs)(`button`,{type:`button`,className:`session-row ${t?`is-selected`:``} ${a?`has-attn`:``}`,onClick:r,"aria-current":t?`true`:void 0,"aria-label":l,title:c?`${s} — ${o}`:s,children:[(0,B.jsx)(`span`,{className:`status-dot ${i.cls}`,"aria-hidden":`true`,children:i.glyph}),(0,B.jsx)(`span`,{className:`session-title`,children:s}),(0,B.jsx)(`span`,{className:`session-when`,title:`Last activity`,children:cd(e.lastEventAt??e.startedAt,n)}),e.counts.reviewOpen>0&&(0,B.jsxs)(`span`,{className:`attn-badge num ${a?`is-live`:``}`,title:a?`${e.counts.reviewOpen} to review — needs you now`:`${e.counts.reviewOpen} flagged during this session; it is no longer running`,children:[(0,B.jsx)(Eu,{name:`flag`}),e.counts.reviewOpen]})]})})}function Od(e,t){return t<e?`duplicate`:t>e?`resnapshot`:`accept`}function kd(e){return e instanceof ls&&e.status===404?{kind:`not-found`,message:`Session not found`}:e instanceof ls&&e.status===0?{kind:`unreachable`,message:e.message}:{kind:`failed`,message:e instanceof Error?e.message:String(e)}}function Ad(e,t=0){let n=Y(e=>e.api);(0,z.useEffect)(()=>{if(!n||!e)return;let t=!1,r=0,i,a=[],o=[],s,c=()=>{s=void 0;let t=a,n=o;a=[],o=[],(t.length||n.length)&&Y.getState().applyEvents(e,t,n)},l=()=>{a=[],o=[],s!==void 0&&cancelAnimationFrame(s),s=void 0},u=async()=>{let d=++r;i?.(),i=void 0,l();try{let l=await n.snapshot(e);if(t||d!==r)return;let f=Y.getState();f.initLive(e,l.state,l.changes),f.setDaemonError(void 0),n.changes(e).then(n=>{!t&&d===r&&n.length>l.changes.length&&Y.getState().applyEvents(e,[],n)},()=>void 0);let p=l.seq,m=l.seq+1;i=n.stream(()=>`/api/sessions/${encodeURIComponent(e)}/stream?after=${p}`,e=>{if(!(t||d!==r)){if(e.type===`event`){let t=e.event,n=Od(m,t.seq);if(n===`duplicate`)return;if(n===`resnapshot`){u();return}m+=1,p=t.seq,a.push(t)}else if(e.type===`changes`)o.push(...e.changes);else return;s===void 0&&(s=requestAnimationFrame(c))}},n=>{!t&&d===r&&Y.getState().setLiveConnection(e,n)},()=>{!t&&d===r&&u()})}catch(n){if(t||d!==r||n instanceof ls&&n.status===401)return;Y.getState().setLiveError(e,kd(n))}};return u(),()=>{t=!0,r+=1,i?.(),l()}},[n,e,t])}function jd(){let e=Y(e=>e.api);(0,z.useEffect)(()=>{if(!e)return;let t=!1;e.sessions().then(e=>{if(t)return;let n=Y.getState();n.upsertSessions(e),n.setDaemonError(void 0)},e=>{t||e instanceof ls&&e.status===401||Y.getState().setDaemonError({message:e instanceof Error?e.message:String(e),unreachable:e instanceof ls&&e.status===0})});let n=e.stream(`/api/stream`,e=>{e.type===`session`&&Y.getState().upsertSessions([e.summary]),e.type===`sessionRemoved`&&Y.getState().removeSession(e.id)},e=>Y.getState().setListConnection(e));return()=>{t=!0,n()}},[e])}function Md(e){return e===`claude-code`?`Claude Code`:e===`codex`?`Codex`:e}function $(e){let[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(null);return(0,z.useLayoutEffect)(()=>{if(!t||!r)return;let e=()=>t.style.setProperty(`--foot-space`,`${r.getBoundingClientRect().height}px`);e();let n=new ResizeObserver(e);return n.observe(r),()=>n.disconnect()},[t,r,e]),[n,i]}function Nd(e){let[t,n]=(0,z.useState)(e);return e&&!t&&n(!0),t||e}var Pd=m();function Fd(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function Id(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function Ld(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var Rd=(e,t)=>Math.abs(e-t)<1.01,zd=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},Bd,Vd=()=>{if(Bd!==void 0)return Bd;if(typeof navigator>`u`)return Bd=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return Bd=!0;let e=navigator.maxTouchPoints;return Bd=navigator.platform===`MacIntel`&&e!==void 0&&e>0},Hd=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},Ud=e=>e,Wd=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},Gd=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(Hd(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(Hd(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},Kd={passive:!0},qd=typeof window>`u`||`onscrollend`in window,Jd=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&qd,o=0,s=a?null:zd(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,Kd),a&&r.addEventListener(`scrollend`,u,Kd),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},Yd=(e,t)=>Jd(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),Xd=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},Zd=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},Qd=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Ud,rangeExtractor:Wd,onChange:()=>{},measureElement:Xd,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=e>0?s[0]?.key??n.getItemKey(0):null,l=e>0?s[e-1]?.key??n.getItemKey(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==c||t.getItemKey(o-1)!==l)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>e&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==l)&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=!1,s=0;if(r&&this.scrollOffset!==null){let[e,t]=r,n=this.getMeasurements(),{count:i,getItemKey:a}=this.options,c=0;for(;c<i&&a(c)!==e;)c++;if(c<i){let e=n[c];if(e){let n=Math.max(0,e.start+t);n!==this.scrollOffset&&(s=n-this.scrollOffset,this.scrollOffset=n,o=!0)}}}(o||i)&&(this.pendingScrollAnchor=[o?r[0]:null,o?r[1]:0,i,s])},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=Id(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.targetWindow=this.scrollElement&&`ownerDocument`in this.scrollElement?this.scrollElement.ownerDocument.defaultView:this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{if(t&&this._intendedScrollOffset===null&&e===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;let n=this.getScrollOffset();this.scrollDirection=t?n===e?this.scrollDirection:n<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!Vd()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,Kd),e.addEventListener(`touchend`,n,Kd),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}let t=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled){let[e,n,r,i]=t;e!==null&&!r&&(Vd()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?i!==0&&(this._iosDeferredAdjustment+=i):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;if(this._iosDeferredAdjustment<0&&e>=t-1){this._iosDeferredAdjustment=0;return}let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=Id(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.getMeasurements=Id(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let l=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._flatMeasurements;if(!a||a.length<i){let e=new Float64Array(i);a&&u>0&&e.set(a.subarray(0,u*2)),a=e,this._flatMeasurements=a}let o;if(u===0)o=t+n;else{let e=u-1;o=a[e*2]+a[e*2+1]+s}for(let t=u;t<e;t++){let e=r(t),n=l.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=o,a[t*2+1]=i,o+=i+s}let c=Fd(e,a,r);return this.measurementsCache=c,c}let d=this.measurementsCache.slice(0,u),f=Array(a).fill(void 0),p=new Float64Array(a),m=0;for(let e=0;e<u;e++){let t=d[e];t&&(f[t.lane]===void 0&&m++,f[t.lane]=e,p[t.lane]=t.end)}for(let i=u;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),u,h,g=o===`estimate`||l.has(e);if(c!==void 0&&this.options.lanes>1){u=c;let e=f[u],r=e===void 0?void 0:d[e];h=r?r.end+s:t+n}else if(m===a){let e=0,t=p[0],n=f[0];for(let r=1;r<a;r++){let i=p[r];(i<t||i===t&&f[r]<n)&&(e=r,t=i,n=f[r])}u=e,h=t+s,g&&this.laneAssignments.set(i,u)}else u=i%this.options.lanes,h=t+n,g&&this.laneAssignments.set(i,u);let _=l.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=h+v;d[i]={index:i,start:h,size:v,end:y,key:e,lane:u},f[u]===void 0&&m++,f[u]=i,p[u]=y}return this.measurementsCache=d,d},{key:!1,debug:()=>this.options.debug}),this.calculateRange=Id(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=tf(e,t,n,r,r===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=Id(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=this.itemSizeCache.get(i)??n,s=t-o;if(s!==0){let a=this.options.anchorTo===`end`&&this.scrollState?.behavior!==`smooth`&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,c=a?this.getTotalSize():0,l=this.getScrollOffset()+this.scrollAdjustments,u=this.itemSizeCache.has(i)?r+o<=l&&this.scrollDirection!==`backward`:r<l,d=this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?u:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},s,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++;let f=!1;a?f=this.applyScrollAdjustment(this.getTotalSize()-c):d&&(f=this.applyScrollAdjustment(s)),this.notify(f)}},this.getVirtualItems=Id(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return Ld(t[$d(0,t.length-1,r?e=>n[e*2]:e=>Ld(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`){if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t]}if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0;let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0,e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e=`auto`}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:`end`,behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}applyScrollAdjustment(e,t){return e===0?!1:Vd()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?(this._iosDeferredAdjustment+=e,!1):(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=e,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&Rd(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},$d=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function ef(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function tf(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=ef(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=$d(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var nf=typeof document<`u`?z.useLayoutEffect:z.useEffect;function rf({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=z.useReducer(e=>e+1,0)[1],a=z.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},s=e=>{let t=a.current;if(!t.enabled||!t.container)return;o(e);let n=!!e.options.horizontal,r=t.mode===`transform`,i=n?`left`:`top`,s=e.options.scrollMargin,c=e.getVirtualItems();for(let a of c){let o=a.start-s,c=e.elementsCache.get(a.key);c&&t.lastPositions.get(c)!==o&&(t.lastPositions.set(c,o),r?c.style.transform=n?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:c.style[i]=`${o}px`)}},c={...r,onChange:(t,n)=>{var o;let c=a.current,l=!0;if(c.enabled){s(t);let e=t.range,n=c.prevRange;l=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,l&&(c.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}l&&(e&&n?(0,Pd.flushSync)(i):i()),(o=r.onChange)==null||o.call(r,t,n)}},[l]=z.useState(()=>{let e=new Qd(c);return Object.assign(e,{containerRef:t=>{let n=a.current;if(n.container=t,n.lastSize=null,t&&n.enabled){let r=e.getTotalSize();n.lastSize=r;let i=e.options.horizontal?`width`:`height`;t.style[i]=`${r}px`}}})});return l.setOptions(c),nf(()=>l._didMount(),[]),nf(()=>(o(l),l._willUpdate())),nf(()=>{s(l)}),l}function af(e){return rf({observeElementRect:Gd,observeElementOffset:Yd,scrollToFn:Zd,...e})}var of={status:`status`,what:`what changed`,why:`why`,how:`how`,verified:`checks`,left:`left to do`,review:`needs review`};function sf(){let e=Y(e=>e.historyKinds),t=Y(e=>e.setHistoryKinds),[n,r]=(0,z.useState)(!1),i=Au(n,()=>r(!1)),a=new Set(e),o=a.size===uu.length,s=n=>t(a.has(n)?e.filter(e=>e!==n):[...e,n]);return(0,B.jsxs)(`div`,{className:`pop`,ref:i,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn ${n?`is-on`:``}`,onClick:()=>r(e=>!e),"aria-expanded":n,title:`Choose which kinds of change to show`,children:[(0,B.jsx)(Eu,{name:`filter`}),(0,B.jsx)(`span`,{children:`Filter`}),(0,B.jsx)(`span`,{className:`btn-pill`,children:o?`All`:`${a.size}/${uu.length}`})]}),(0,B.jsxs)(`div`,{className:`pop-panel is-left is-narrow arrives ${n?`is-open`:``}`,children:[(0,B.jsxs)(`div`,{className:`pop-head`,children:[(0,B.jsx)(`span`,{children:`Show`}),!o&&(0,B.jsxs)(`button`,{type:`button`,className:`pop-help`,onClick:()=>t([...uu]),title:`Show every kind again`,children:[(0,B.jsx)(Eu,{name:`reset`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Show every kind again`})]})]}),(0,B.jsxs)(`fieldset`,{className:`opts`,children:[(0,B.jsx)(`legend`,{className:`sr-only`,children:`Kinds of change to show`}),uu.map(e=>(0,B.jsxs)(`label`,{className:`opt is-tight ${a.has(e)?`is-on`:``}`,children:[(0,B.jsx)(`input`,{className:`sr-only`,type:`checkbox`,checked:a.has(e),onChange:()=>s(e)}),(0,B.jsx)(`span`,{className:`opt-swatch facet-${e}`,"aria-hidden":`true`}),(0,B.jsx)(`span`,{className:`opt-name`,children:of[e]})]},e))]})]})]})}function cf(e){return`ep-${e}`}function lf({changes:e,scrubTs:t,focusSeq:n,onScrub:r,onLive:i,onClose:a,onRef:o}){let s=Y(e=>e.historyKinds),c=Y(e=>e.setHistoryMode),l=(0,z.useRef)(null),u=ed(),d=(0,z.useCallback)(e=>(l.current=e,u(e)),[u]),[f,p]=(0,z.useState)(n!==void 0);(0,z.useEffect)(()=>p(n!==void 0),[n]);let m=f&&n!==void 0,h=(0,z.useMemo)(()=>new Set(s),[s]),g=(0,z.useMemo)(()=>e.filter(e=>h.has(e.facet)&&(!m||e.seq>n)),[e,h,m,n]),_=af({count:g.length,getScrollElement:()=>l.current,estimateSize:()=>52,overscan:12,useFlushSync:!1,anchorTo:`end`,followOnAppend:!0}),[v,y]=(0,z.useState)(!0),b=_.getTotalSize();return(0,z.useEffect)(()=>{v&&t===void 0&&g.length>0&&b>0&&_.scrollToIndex(g.length-1,{align:`end`})},[g.length,v,t,_,b]),(0,B.jsxs)(`aside`,{className:`inspector history`,"aria-label":`History`,children:[(0,B.jsxs)(`div`,{className:`inspector-head`,children:[(0,B.jsx)(Du,{icon:`panel`,title:`Hide history (h)`,onClick:a}),(0,B.jsx)(sf,{}),(0,B.jsx)(Du,{icon:`table`,title:`Open the history as a table across the page`,onClick:()=>c(`table`)}),(0,B.jsxs)(`span`,{className:`inspector-title`,children:[m?`Since you looked`:`History`,` `,(0,B.jsx)(`span`,{className:`num`,children:g.length})]})]}),(t!==void 0||m)&&(0,B.jsxs)(`div`,{className:`history-scope`,children:[t!==void 0&&(0,B.jsx)(Du,{icon:`latest`,label:`Back to live`,title:`Stop showing a past moment`,onClick:i}),m&&(0,B.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>p(!1),children:`Show all history`})]}),(0,B.jsxs)(`div`,{className:`history-list scroll-fade`,ref:d,onScroll:()=>{let e=l.current;e&&y(e.scrollTop+e.clientHeight>=e.scrollHeight-40)},children:[g.length===0&&(0,B.jsx)(`div`,{className:`side-empty muted`,children:`No history yet.`}),(0,B.jsx)(`div`,{style:{height:b,position:`relative`},children:_.getVirtualItems().map(e=>{let n=g[e.index];if(!n)return null;let i=t!==void 0&&n.ts===t,a=t!==void 0&&n.ts>t;return(0,B.jsxs)(`div`,{"data-index":e.index,ref:_.measureElement,className:`hist-item facet-${n.facet} ${i?`is-scrub`:``} ${a?`is-future`:``}`,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start}px)`},children:[(0,B.jsxs)(`button`,{type:`button`,className:`hist-main`,onClick:()=>r(n.ts,n.seq),title:`Show the session as of this moment`,children:[(0,B.jsxs)(`span`,{className:`hist-meta`,children:[(0,B.jsx)(`span`,{className:`hist-dot`,"aria-hidden":`true`}),(0,B.jsx)(`span`,{className:`hist-facet`,children:of[n.facet]}),n.epistemic!==`observed`&&(0,B.jsx)(`span`,{className:`hist-prov ${cf(n.epistemic)}`,title:n.epistemic===`explained`?`Generated by a model, not observed`:n.epistemic===`reported`?`The agent said so; Salidium did not see it`:`Worked out by Salidium rather than seen directly`,children:n.epistemic}),(0,B.jsx)(`span`,{className:`hist-time mono`,children:sd(n.ts)})]}),(0,B.jsx)(`span`,{className:`hist-text`,children:n.summary})]}),n.refs[0]&&(0,B.jsx)(`button`,{type:`button`,className:`link hist-record`,onClick:()=>o(n.refs[0]??``),title:`Open the raw record this came from`,children:`record`})]},`${n.seq}:${n.ordinal}`)})})]})]})}function uf(e){return e+1}function df(e){return e+2}function ff({changes:e,scrubTs:t,onScrub:n,onLive:r,onRef:i}){let a=Y(e=>e.historyKinds),o=Y(e=>e.setHistoryMode),s=(0,z.useRef)(null),c=ed(),l=(0,z.useCallback)(e=>(s.current=e,c(e)),[c]),u=(0,z.useMemo)(()=>new Set(a),[a]),d=(0,z.useMemo)(()=>e.filter(e=>u.has(e.facet)),[e,u]),f=af({count:d.length,getScrollElement:()=>s.current,estimateSize:()=>40,overscan:16,useFlushSync:!1});return(0,B.jsxs)(`div`,{className:`htab`,children:[(0,B.jsxs)(`header`,{className:`htab-head`,children:[(0,B.jsxs)(`h1`,{className:`htab-title`,children:[`History `,(0,B.jsx)(`span`,{className:`num`,children:d.length})]}),(0,B.jsxs)(`div`,{className:`toolbar htab-tools`,children:[(0,B.jsx)(sf,{}),t!==void 0&&(0,B.jsx)(Du,{icon:`latest`,label:`Back to live`,title:`Stop showing a past moment`,onClick:r}),(0,B.jsx)(Du,{icon:`panel`,label:`Show beside`,title:`Move the history back into the side rail`,onClick:()=>o(`rail`)})]})]}),(0,B.jsxs)(`div`,{className:`htab-grid`,role:`table`,"aria-label":`History`,"aria-rowcount":uf(d.length),children:[(0,B.jsxs)(`div`,{className:`htab-row is-head`,role:`row`,"aria-rowindex":1,children:[(0,B.jsx)(`span`,{role:`columnheader`,children:`When`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Kind`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Change`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`How we know`}),(0,B.jsx)(`span`,{role:`columnheader`,children:(0,B.jsx)(`span`,{className:`sr-only`,children:`Record`})})]}),(0,B.jsx)(`div`,{className:`htab-scroll scroll-fade`,ref:l,children:(0,B.jsx)(`div`,{style:{height:f.getTotalSize(),position:`relative`},children:f.getVirtualItems().map(e=>{let r=d[e.index];if(!r)return null;let a=t!==void 0&&r.ts===t,o=t!==void 0&&r.ts>t;return(0,B.jsxs)(`div`,{"data-index":e.index,ref:f.measureElement,role:`row`,"aria-rowindex":df(e.index),className:`htab-row facet-${r.facet} ${a?`is-scrub`:``} ${o?`is-future`:``}`,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start}px)`},children:[(0,B.jsx)(`span`,{role:`cell`,children:(0,B.jsx)(`button`,{type:`button`,className:`htab-when mono`,onClick:()=>n(r.ts,r.seq),title:`Show the session as of this moment`,children:sd(r.ts)})}),(0,B.jsxs)(`span`,{role:`cell`,className:`htab-kind`,children:[(0,B.jsx)(`span`,{className:`hist-dot`,"aria-hidden":`true`}),of[r.facet]]}),(0,B.jsx)(`span`,{role:`cell`,className:`htab-text`,children:r.summary}),(0,B.jsx)(`span`,{role:`cell`,className:`htab-prov`,children:r.epistemic===`observed`?``:r.epistemic}),(0,B.jsx)(`span`,{role:`cell`,children:r.refs[0]&&(0,B.jsxs)(`button`,{type:`button`,className:`tag-ev`,onClick:()=>i(r.refs[0]??``),title:`Open the raw record this came from`,children:[(0,B.jsx)(Eu,{name:`record`}),`record`]})})]},`${r.seq}:${r.ordinal}`)})})})]}),d.length===0&&(0,B.jsx)(`p`,{className:`rp-empty`,children:`No history yet.`})]})}function pf({id:e,title:t,children:n,sections:r}){let i=Y(e=>e.panel)===e,a=Y(e=>e.closePanel),o=(0,z.useRef)(null),[s,c]=(0,z.useState)(),l=r?.some(e=>e.key===s)?s:r?.[0]?.key,u=r?.find(e=>e.key===l)??r?.[0];Qu({active:i,containerRef:o,onClose:a});let d=Nd(i);return(0,z.useEffect)(()=>{i&&l!==s&&c(l)},[i,l,s]),d?(0,B.jsxs)(`div`,{className:`panel-scrim arrives ${i?`is-open`:``}`,inert:!i,children:[(0,B.jsx)(`div`,{className:`panel-backdrop`,"aria-hidden":`true`,onClick:a}),(0,B.jsxs)(`div`,{className:`panel-card`,ref:o,role:`dialog`,"aria-modal":`true`,"aria-label":t,tabIndex:-1,children:[(0,B.jsxs)(`div`,{className:`panel-head`,children:[(0,B.jsx)(`h2`,{className:`panel-title`,children:t}),(0,B.jsx)(`button`,{type:`button`,className:`panel-close`,onClick:a,title:`Close (Esc)`,children:(0,B.jsx)(Eu,{name:`close`})})]}),r&&r.length>0?(0,B.jsxs)(`div`,{className:`panel-split`,children:[(0,B.jsx)(`nav`,{className:`panel-rail`,"aria-label":`${t} sections`,children:r.map(e=>(0,B.jsxs)(`button`,{type:`button`,className:`panel-rail-item ${e.key===l?`is-on`:``}`,"aria-current":e.key===l?`true`:void 0,onClick:()=>c(e.key),children:[(0,B.jsx)(`span`,{className:`panel-rail-label`,children:e.label}),e.count!==void 0&&(0,B.jsx)(`span`,{className:`panel-rail-count num`,children:e.count})]},e.key))}),(0,B.jsx)(`div`,{className:`panel-body`,children:u?.render()})]}):(0,B.jsx)(`div`,{className:`panel-body`,children:n})]})]}):null}var mf={pass:`✓`,fail:`✕`,partial:`◐`,unknown:`?`};function hf(e){return mf[e]??`?`}function gf(e,t){let n=(0,z.useRef)(null),[r,i]=(0,z.useState)(!1);return(0,z.useEffect)(()=>{let t=n.current;if(!t||e)return;let r=()=>i(t.scrollHeight-t.clientHeight>1);r();let a=new ResizeObserver(r);return a.observe(t),()=>a.disconnect()},[e,t]),[n,r]}function _f({steps:e,terminal:t=`accent`}){return e.length===0?null:(0,B.jsx)(`ol`,{className:`fd-chain end-${t}`,children:e.map((e,t)=>(0,B.jsx)(`li`,{className:`fd-node`,children:e},`${t}:${e}`))})}function vf({lanes:e,trunk:t}){return(0,B.jsxs)(`div`,{className:`fd-converge`,children:[(0,B.jsx)(`div`,{className:`fd-lanes`,style:{gridTemplateColumns:`repeat(${e.length}, minmax(0, 1fr))`},children:e.map(e=>(0,B.jsxs)(`div`,{className:`fd-lane`,children:[(0,B.jsx)(`p`,{className:`fd-lane-title`,children:e.title}),(0,B.jsx)(`ol`,{className:`fd-lane-steps`,children:e.steps.map((e,t)=>(0,B.jsx)(`li`,{children:e},`${t}:${e}`))})]},e.title))}),t.length>0&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(yf,{count:e.length}),(0,B.jsx)(_f,{steps:t})]})]})}function yf({count:e,fanOut:t=!1}){return(0,B.jsxs)(`div`,{className:`fd-junction ${t?`is-fan`:``}`,style:{"--lanes":e},"aria-hidden":`true`,children:[(0,B.jsx)(`span`,{className:`fd-trunk`}),(0,B.jsx)(`span`,{className:`fd-bus`}),(0,B.jsx)(`div`,{className:`fd-stems`,children:Array.from({length:e},(e,t)=>(0,B.jsx)(`span`,{},t))})]})}function bf({root:e,steps:t}){return t.length===0?null:e?(0,B.jsxs)(`div`,{className:`fd-tree has-root`,children:[(0,B.jsx)(`p`,{className:`fd-root mono`,children:e}),(0,B.jsx)(yf,{count:t.length,fanOut:!0}),(0,B.jsx)(xf,{steps:t})]}):(0,B.jsx)(`div`,{className:`fd-tree`,children:(0,B.jsx)(xf,{steps:t})})}function xf({steps:e}){return(0,B.jsx)(`ul`,{className:`fd-branches`,style:{gridTemplateColumns:`repeat(${e.length}, minmax(0, 1fr))`},children:e.map((e,t)=>(0,B.jsx)(`li`,{className:`fd-node`,children:e},`${t}:${e}`))})}function Sf({from:e,fromSteps:t,to:n,toSteps:r,why:i}){return(0,B.jsxs)(`div`,{className:`fd-ba`,children:[(0,B.jsxs)(`div`,{className:`fd-ba-side is-was`,children:[(0,B.jsx)(`p`,{className:`fd-ba-label`,children:`Was`}),(0,B.jsx)(`p`,{className:`fd-ba-head`,children:e}),(0,B.jsx)(_f,{steps:t,terminal:`bad`})]}),i&&(0,B.jsxs)(`p`,{className:`fd-ba-why`,children:[(0,B.jsx)(`span`,{className:`fd-ba-pivot`,"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:i})]}),(0,B.jsxs)(`div`,{className:`fd-ba-side is-now`,children:[(0,B.jsx)(`p`,{className:`fd-ba-label`,children:`Now`}),(0,B.jsx)(`p`,{className:`fd-ba-head`,children:n}),(0,B.jsx)(_f,{steps:r,terminal:`good`})]})]})}function Cf({marks:e}){let t=[];return e.junction&&t.push([`fd-key-junction`,`where separate paths meet`]),e.outcome&&t.push([`fd-key-outcome`,`abandoned, and adopted`]),t.length===0?null:(0,B.jsx)(`ul`,{className:`fd-legend`,children:t.map(([e,t])=>(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`fd-key ${e}`,"aria-hidden":`true`}),t]},e))})}var wf={fileEdit:`edit`,fileWrite:`edit`,fileRead:`read`,search:`read`,command:`run`,subagent:`delegate`,webFetch:`look`,webSearch:`look`,mcp:`look`,plan:`plan`,question:`plan`,other:`run`},Tf=4,Ef={edit:e=>`edited ${e} ${e===1?`file`:`files`}`,read:e=>`read ${e} ${e===1?`file`:`files`}`,run:e=>`ran ${e} ${e===1?`command`:`commands`}`,delegate:e=>`delegated to ${e} ${e===1?`subagent`:`subagents`}`,look:e=>`${e} ${e===1?`lookup`:`lookups`}`,plan:e=>`planned (${e})`},Df={edit:`±`,read:`⋯`,run:`$`,delegate:`⇢`,look:`@`,plan:`☰`};function Of(e){let t=e.split(/\s+/).find(e=>e.includes(`/`)||/\.[a-z0-9]+$/i.test(e));return t?pd(t):void 0}var kf=new Set([`edit`]);function Af(e,t){let n=new Map(e.verifications.map(e=>[e.callId,e])),r=new Map(t.filter(e=>e.callId).map(e=>[e.callId,e])),i=[],a,o=[],s=()=>{if(!a)return;let e=[...new Set(a.items.map(e=>Of(e.title)).filter(Boolean))],t=a.bucket===`edit`&&e.length===1?`edited ${e[0]}${a.items.length>1?` (${a.items.length}\u00d7)`:``}`:Ef[a.bucket](e.length||a.items.length);i.push({kind:`work`,bucket:a.bucket,label:t,detail:e.length>1?e.slice(0,3).join(`, `):void 0,at:a.items[0]?.startedAt??``,refs:a.items.map(e=>e.callId),quiet:!1}),a=void 0},c=()=>{if(o.length===0)return;let e=new Map;for(let t of o){let n=wf[t.kind];e.set(n,(e.get(n)??0)+1)}i.push({kind:`work`,bucket:`read`,label:[...e.entries()].map(([e,t])=>Ef[e](t)).join(`, `),at:o[0]?.startedAt??``,refs:o.map(e=>e.callId),quiet:!0}),o=[]},l=()=>{s(),c()};for(let t of e.activities){let e=n.get(t.callId);if(e){l(),i.push({kind:`check`,row:e});continue}let u=r.get(t.callId);if(u){l(),i.push({kind:`commit`,sha:u.sha,at:u.at,callId:u.callId});continue}let d=wf[t.kind];kf.has(d)?a&&a.bucket===d&&o.length<Tf?(o=[],a.items.push(t)):(s(),c(),a={bucket:d,items:[t]}):o.push(t)}l();let u=i.map(e=>e.kind===`check`).lastIndexOf(!0);return i.slice(u+1).some(e=>e.kind===`work`&&e.bucket===`edit`)&&i.push({kind:`gap`,label:`nothing checked these edits`}),i}var jf=6;function Mf({turns:e,commits:t,onRef:n}){let[r,i]=(0,z.useState)(jf);if(e.length===0)return null;let a=e.length>r?e.slice(e.length-r):e,o=e.length-a.length;return(0,B.jsxs)(`section`,{className:`viz`,"aria-label":`What the agent did, in order`,children:[(0,B.jsxs)(`h3`,{className:`viz-title`,children:[`What happened `,(0,B.jsxs)(`span`,{className:`viz-count num`,children:[e.length,` turns`]})]}),o>0&&(0,B.jsxs)(`button`,{type:`button`,className:`flow-more`,onClick:()=>i(e=>e+jf),children:[`show `,Math.min(jf,o),` earlier `,o===1?`turn`:`turns`]}),(0,B.jsx)(`ol`,{className:`flow`,children:a.map((e,r)=>(0,B.jsx)(Nf,{turn:e,commits:t,onRef:n,defaultOpen:r===a.length-1},e.id))})]})}function Nf({turn:e,commits:t,onRef:n,defaultOpen:r}){let[i,a]=(0,z.useState)(r),o=Af(e,t),s=o.filter(e=>e.kind===`check`),c=s.filter(e=>e.kind===`check`&&e.row.outcome===`fail`).length,l=s.filter(e=>e.kind===`check`&&e.row.outcome===`pass`).length,u=o.some(e=>e.kind===`gap`);return(0,B.jsxs)(`li`,{className:`flow-turn ${i?`is-open`:``}`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`flow-ask`,onClick:()=>a(e=>!e),"aria-expanded":i,children:[(0,B.jsx)(`span`,{className:`flow-ask-n num`,children:e.index+1}),(0,B.jsx)(`span`,{className:`flow-ask-text`,children:e.prompt||`(prompt not recorded)`}),(0,B.jsxs)(`span`,{className:`flow-sum`,children:[u&&(0,B.jsx)(`span`,{className:`flow-chip flow-sum-gap`,children:`unchecked`}),c>0?(0,B.jsxs)(`span`,{className:`flow-chip flow-sum-bad`,children:[(0,B.jsx)(`span`,{className:`num`,children:c}),` failed`]}):l>0&&(0,B.jsxs)(`span`,{className:`flow-chip flow-sum-ok`,children:[(0,B.jsx)(`span`,{className:`num`,children:l}),` passed`]})]}),(0,B.jsx)(`span`,{className:`flow-ask-caret`,"aria-hidden":`true`,children:`›`})]}),i&&(0,B.jsx)(`ol`,{className:`flow-steps`,children:o.map((e,t)=>(0,B.jsx)(Pf,{step:e,onRef:n},t))})]})}function Pf({step:e,onRef:t}){if(e.kind===`gap`)return(0,B.jsxs)(`li`,{className:`flow-step is-gap`,children:[(0,B.jsx)(`span`,{className:`flow-node`,"aria-hidden":`true`,children:`!`}),(0,B.jsx)(`span`,{className:`flow-label`,children:e.label})]});if(e.kind===`check`){let n=e.row,r=hf(n.outcome);return(0,B.jsxs)(`li`,{className:`flow-step is-check v-${n.outcome}`,children:[(0,B.jsx)(`span`,{className:`flow-node`,"aria-hidden":`true`,children:r}),(0,B.jsxs)(`button`,{type:`button`,className:`flow-label as-button`,onClick:()=>t(n.callId),children:[n.label,n.epistemic===`inferred`&&(0,B.jsx)(`span`,{className:`flow-derived`,children:`derived`})]}),(0,B.jsx)(`span`,{className:`flow-at mono`,children:sd(n.at)})]})}return e.kind===`commit`?(0,B.jsxs)(`li`,{className:`flow-step is-commit`,children:[(0,B.jsx)(`span`,{className:`flow-node`,"aria-hidden":`true`,children:`◆`}),(0,B.jsxs)(`button`,{type:`button`,className:`flow-label as-button`,onClick:()=>e.callId&&t(e.callId),children:[`committed `,(0,B.jsx)(`span`,{className:`mono`,children:e.sha.slice(0,7)})]}),(0,B.jsx)(`span`,{className:`flow-at mono`,children:sd(e.at)})]}):(0,B.jsxs)(`li`,{className:`flow-step is-${e.bucket} ${e.quiet?`is-quiet`:``}`,children:[(0,B.jsx)(`span`,{className:`flow-node`,"aria-hidden":`true`,children:Df[e.bucket]}),(0,B.jsxs)(`button`,{type:`button`,className:`flow-label as-button`,onClick:()=>e.refs[0]&&t(e.refs[0]),children:[e.label,e.detail&&(0,B.jsx)(`span`,{className:`flow-detail mono`,children:e.detail})]}),(0,B.jsx)(`span`,{className:`flow-at mono`,children:sd(e.at)})]})}function Ff({files:e,cwd:t,limit:n=10,onOpen:r}){if(e.length===0)return null;let i=[...e].sort((e,t)=>t.linesAdded+t.linesRemoved-(e.linesAdded+e.linesRemoved)).slice(0,n),a=Math.max(1,...i.map(e=>e.linesAdded+e.linesRemoved)),o=e.length-i.length,s=fd(i.map(e=>e.path));return(0,B.jsxs)(`section`,{className:`viz`,"aria-label":`Churn for ${e.length} changed files`,children:[(0,B.jsxs)(`h3`,{className:`viz-title`,children:[`Changed `,(0,B.jsx)(`span`,{className:`viz-count num`,children:e.length})]}),s&&(0,B.jsx)(`p`,{className:`viz-root mono`,title:s,children:(0,B.jsx)(`bdi`,{children:dd(s)})}),(0,B.jsx)(`ul`,{className:`churn`,children:i.map(e=>{let n=e.linesAdded+e.linesRemoved;return(0,B.jsxs)(`li`,{className:`churn-row`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`churn-main`,onClick:()=>r(e),children:[(0,B.jsxs)(`span`,{className:`churn-name mono`,title:e.path,children:[pd(e.path),(0,B.jsx)(`span`,{className:`churn-dir`,children:md(s?e.path.slice(s.length):ud(e.path,t))})]}),(0,B.jsxs)(`span`,{className:`churn-bar`,"aria-hidden":`true`,children:[(0,B.jsx)(`span`,{className:`churn-add`,style:{width:`${e.linesAdded/a*100}%`}}),(0,B.jsx)(`span`,{className:`churn-del`,style:{width:`${e.linesRemoved/a*100}%`}})]}),(0,B.jsxs)(`span`,{className:`churn-num num`,children:[(0,B.jsxs)(`span`,{className:`add`,children:[`+`,e.linesAdded]}),(0,B.jsxs)(`span`,{className:`del`,children:[`−`,e.linesRemoved]})]}),!e.verifiedAfter&&(0,B.jsx)(`span`,{className:`churn-flag`,title:`No passing check ran after this edit`,children:`?`})]}),(0,B.jsxs)(`span`,{className:`sr-only`,children:[ud(e.path,t),`: `,n,` lines changed`,e.verifiedAfter?``:`, unchecked since`]})]},e.path)})}),o>0&&(0,B.jsxs)(`p`,{className:`viz-foot`,children:[o,` smaller changes not shown`]})]})}function If({runs:e,onOpen:t}){if(e.length===0)return null;let n=[...new Set(e.map(e=>e.method))],r=e=>e===`pass`?`passing`:e===`fail`?`failing`:e===`partial`?`partial`:`unknown`;return(0,B.jsxs)(`section`,{className:`viz checks`,"aria-label":`${e.length} checks across ${n.length} kinds`,children:[(0,B.jsx)(`ul`,{className:`checks-rows`,children:n.map(n=>{let i=e.filter(e=>e.method===n).sort((e,t)=>e.at.localeCompare(t.at)),a=i[i.length-1];if(!a)return null;let o=i.filter(e=>e.outcome===`fail`).length;return(0,B.jsxs)(`li`,{className:`checks-row`,children:[(0,B.jsx)(`span`,{className:`checks-method`,children:n}),(0,B.jsxs)(`span`,{className:`checks-now v-${a.outcome}`,children:[(0,B.jsx)(`span`,{className:`checks-now-mark`,"aria-hidden":`true`,children:hf(a.outcome)}),r(a.outcome),a.counts?.total!==void 0&&(0,B.jsxs)(`span`,{className:`checks-counts num`,children:[a.counts.passed??0,`/`,a.counts.total]})]}),(0,B.jsx)(`span`,{className:`checks-strip`,children:i.map(e=>(0,B.jsx)(`button`,{type:`button`,className:`checks-tick v-${e.outcome} ${e.epistemic===`inferred`?`is-derived`:``}`,onClick:()=>t(e),title:`${sd(e.at)} — ${e.label}${e.epistemic===`inferred`?` (worked out, not observed)`:``}`,children:(0,B.jsxs)(`span`,{className:`sr-only`,children:[sd(e.at),` `,e.outcome]})},e.id))}),(0,B.jsx)(`span`,{className:`checks-runs`,children:i.length===1?`ran once`:`${i.length} runs${o>0?`, ${o} failed`:``}`}),(0,B.jsx)(`span`,{className:`checks-when`,children:sd(a.at)})]},n)})}),(0,B.jsx)(`p`,{className:`checks-key`,children:`Oldest first. A hollow mark is one Salidium worked out rather than read. Open any run for its record.`})]})}function Lf({files:e,failing:t,onOpen:n}){if(e.length===0)return null;let r=e.slice(0,120),i=e.filter(e=>e.verifiedAfter).length,a=e.length-i,o=t.length>0;return(0,B.jsxs)(`section`,{className:`viz cov`,"aria-label":`Which changed files a passing check ran after`,children:[(0,B.jsxs)(`p`,{className:`cov-lead`,children:[(0,B.jsxs)(`strong`,{className:`num`,children:[i,` of `,e.length]}),` `,`changed `,e.length===1?`file has`:`files have`,` had a passing check since it was last edited.`]}),o&&(0,B.jsxs)(`p`,{className:`cov-held`,children:[t.join(` and `),` `,t.length===1?`is`:`are`,` still failing.`]}),(0,B.jsx)(`p`,{className:`cov-scope`,children:`A filled square is one file, not the project. A full grid does not mean the project is green.`}),(0,B.jsx)(`ul`,{className:`cov-grid`,children:r.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsx)(`button`,{type:`button`,className:`cov-cell ${e.verifiedAfter?`is-covered`:`is-stale`}`,onClick:()=>n?.(e),title:`${e.path} — ${e.verifiedAfter?e.verifiedBy??`checked after the last edit`:`changed after the last passing check`}`,children:(0,B.jsxs)(`span`,{className:`sr-only`,children:[e.path,`:`,` `,e.verifiedAfter?`checked since last edit`:`not checked since last edit`]})})},e.path))}),e.length>120&&(0,B.jsxs)(`p`,{className:`cov-more`,children:[`…and `,e.length-120,` more.`]}),(0,B.jsxs)(`ul`,{className:`cov-key`,children:[(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`cov-cell is-covered`,"aria-hidden":`true`}),` checked since last edit`,(0,B.jsx)(`span`,{className:`num cov-key-n`,children:i})]}),(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`cov-cell is-stale`,"aria-hidden":`true`}),` changed since the last check`,(0,B.jsx)(`span`,{className:`num cov-key-n`,children:a})]})]})]})}function Rf({ex:e}){let t=e.approachChange,n=e.why.lanes.length>1,r=e.why.chain.length>0||e.why.lanes.length>0,i={junction:n,outcome:!!t};return(0,B.jsxs)(`section`,{className:`ex`,"aria-label":`Generated explanation`,children:[(0,B.jsx)(`p`,{className:`ex-what`,children:e.what.summary}),e.what.currently&&(0,B.jsxs)(`p`,{className:`ex-now`,children:[(0,B.jsx)(`span`,{className:`ex-now-key`,children:`Now`}),e.what.currently]}),r&&(0,B.jsxs)(`section`,{className:`ex-block`,id:`sec-why`,children:[(0,B.jsx)(zf,{title:`Why`,summary:e.why.summary}),n?(0,B.jsx)(vf,{lanes:e.why.lanes,trunk:e.why.chain}):(0,B.jsx)(_f,{steps:e.why.chain})]}),e.how.steps.length>0&&(0,B.jsxs)(`section`,{className:`ex-block`,id:`sec-how`,children:[(0,B.jsx)(zf,{title:`How`,summary:e.how.summary}),(0,B.jsx)(bf,{root:e.how.root,steps:e.how.steps})]}),t&&(0,B.jsxs)(`section`,{className:`ex-block`,id:`sec-approach`,children:[(0,B.jsx)(zf,{title:`Approach changed`}),(0,B.jsx)(Sf,{from:t.from,fromSteps:t.fromSteps,to:t.to,toSteps:t.toSteps,why:t.why})]}),(0,B.jsxs)(`footer`,{className:`ex-foot`,children:[(0,B.jsx)(Cf,{marks:i}),(0,B.jsxs)(`p`,{className:`ex-mark`,children:[`Generated by `,e.model]})]})]})}function zf({title:e,summary:t}){return(0,B.jsxs)(`header`,{className:`ex-head`,children:[(0,B.jsx)(`h2`,{className:`ex-title`,children:e}),t&&(0,B.jsx)(`p`,{className:`ex-summary`,children:t})]})}function Bf({view:e}){let t=e.strip,n=t.latestVerification,r=(e,t,n)=>`${e} ${e===1?t:n}`,i=[e.ingest.redactions>0&&`${r(e.ingest.redactions,`credential-shaped string`,`credential-shaped strings`)} redacted`,e.ingest.warnings>0&&`${r(e.ingest.warnings,`record`,`records`)} could not be read`,e.ingest.compactions>0&&r(e.ingest.compactions,`context compaction`,`context compactions`)].filter(Boolean);return(0,B.jsxs)(`div`,{className:`tm`,children:[(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-changes`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-changes`,children:`Changes`}),(0,B.jsxs)(`dl`,{className:`tm-grid`,children:[(0,B.jsx)(Vf,{label:`Files`,children:(0,B.jsx)(`span`,{className:`num`,children:t.filesChanged})}),(0,B.jsx)(Vf,{label:`Added`,children:(0,B.jsxs)(`span`,{className:`tm-add`,children:[`+`,t.linesAdded]})}),(0,B.jsx)(Vf,{label:`Removed`,children:(0,B.jsxs)(`span`,{className:`tm-del`,children:[`−`,t.linesRemoved]})})]})]}),(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-activity`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-activity`,children:`Activity`}),(0,B.jsxs)(`dl`,{className:`tm-grid`,children:[(0,B.jsx)(Vf,{label:`Duration`,children:e.report.runtimeMs===void 0?(0,B.jsx)(`span`,{className:`tm-unknown`,children:`unknown`}):(0,B.jsx)(`span`,{className:`num`,children:ld(e.report.runtimeMs)})}),(0,B.jsx)(Vf,{label:`Commits`,children:(0,B.jsx)(`span`,{className:`num`,children:t.commits})}),(0,B.jsx)(Vf,{label:`Turns`,children:(0,B.jsx)(`span`,{className:`num`,children:t.turns})})]})]}),e.usage&&(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-model`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-model`,children:`Model`}),(0,B.jsxs)(`dl`,{className:`tm-grid is-wide`,children:[(0,B.jsx)(Vf,{label:`Responses`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.messages.toLocaleString()})}),(0,B.jsx)(Vf,{label:`In`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.inputTokens.toLocaleString()})}),(0,B.jsx)(Vf,{label:`Out`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.outputTokens.toLocaleString()})}),(0,B.jsx)(Vf,{label:`Cache read`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.cacheReadTokens.toLocaleString()})}),(0,B.jsx)(Vf,{label:`Cache write`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.cacheWriteTokens.toLocaleString()})})]})]}),n&&(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-check`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-check`,children:`Latest check`}),(0,B.jsxs)(`div`,{className:`tm-check`,children:[(0,B.jsx)(`span`,{className:`tm-check-method`,children:n.method}),(0,B.jsx)(`span`,{className:`v-${n.outcome}`,children:n.outcome}),(0,B.jsx)(`span`,{className:`num`,children:sd(n.at)})]})]}),i.length>0&&(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-handling`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-handling`,children:`Data handling`}),(0,B.jsx)(`ul`,{className:`tm-note-list`,children:i.map(e=>(0,B.jsx)(`li`,{children:e},e))})]})]})}function Vf({label:e,children:t}){return(0,B.jsxs)(`div`,{className:`tm-quantity`,children:[(0,B.jsx)(`dt`,{children:e}),(0,B.jsx)(`dd`,{children:t})]})}function Hf({view:e,onRef:t}){let n=[...new Set(e.left.items.filter(e=>e.source===`verification`&&e.status===`failing`).map(e=>e.text.replace(/\s.*$/,``).toLowerCase()))];return(0,B.jsx)(Lf,{files:e.changes.files,failing:n,onOpen:e=>t(e.lastCallId)})}function Uf({view:e,onRef:t}){return(0,B.jsx)(If,{runs:e.verified.runs,onOpen:e=>t(e.callId)})}function Wf({view:e,cwd:t,onRef:n}){return(0,B.jsx)(Ff,{files:e.changes.files,cwd:t,limit:20,onOpen:e=>n(e.lastCallId)})}function Gf({view:e,onRef:t}){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Mf,{turns:e.turns,commits:e.changes.commits,onRef:t}),(0,B.jsx)(Qf,{subagents:e.subagents,onRef:t})]})}function Kf({which:e,view:t,onRef:n}){return(0,B.jsx)(Zf,{view:t,detail:2,onRef:n,only:e})}var qf={pass:`passed`,fail:`failed`,partial:`partial`,unknown:`unknown`},Jf={"exit-inferred":`exit code not reported, read from the output`,"exit-masked":`exit code hidden by a pipe`,"output-truncated":`output was truncated`,"no-summary-parsed":`no summary line found in the output`,"exit-summary-mismatch":`the output says passed and the exit code says failed`};function Yf(e){return e.filter(e=>e!==`scope-partial`).map(e=>Jf[e]??e).join(` · `)}var Xf=6;function Zf({view:e,detail:t,onRef:n,only:r}){let i=e.verified.summary,a=e.review.groups.filter(e=>e.severity!==`info`),o=e=>t>1?e:e.slice(0,Xf),s=e=>t>1||e<=Xf?null:(0,B.jsxs)(`li`,{className:`rp-none`,children:[`…`,e-Xf,` more, under Records`]}),c=e=>r===void 0||r===e;return(0,B.jsxs)(`div`,{className:`rp-cols${r?` is-single`:``}`,children:[c(`checks`)&&(0,B.jsxs)(`div`,{className:`rp-block`,id:`sec-verified`,children:[(0,B.jsx)(`h3`,{className:`rp-title`,children:`Verified`}),i.length===0?(0,B.jsx)(`p`,{className:`rp-none`,children:`No checks observed.`}):(0,B.jsx)(`ul`,{className:`rp-status`,children:i.map(e=>{let r=Yf(e.caveats);return(0,B.jsxs)(`li`,{className:`v-${e.outcome}`,children:[(0,B.jsx)(`span`,{className:`rp-mark`,"aria-hidden":`true`,children:hf(e.outcome)}),(0,B.jsxs)(`button`,{type:`button`,className:`rp-status-label`,onClick:()=>n(e.callId),children:[e.method,(0,B.jsx)(`span`,{className:`sr-only`,children:qf[e.outcome]??e.outcome}),e.counts?.total!==void 0&&(0,B.jsxs)(`span`,{className:`mono rp-counts`,children:[e.counts.passed??0,`/`,e.counts.total]})]}),e.scope===`partial`&&(0,B.jsx)(`span`,{className:`rp-subset`,children:`subset`}),e.laterUnreadable>0&&(0,B.jsx)(`span`,{className:`rp-stale`,title:`${e.laterUnreadable} later ${e.laterUnreadable===1?`run`:`runs`} of ${e.method} produced no readable outcome`,children:`not the latest run`}),r&&(0,B.jsx)(`span`,{className:`rp-caveat`,children:r}),t>1&&e.epistemic===`inferred`&&(0,B.jsx)(`span`,{className:`rp-derived`,children:`derived`})]},e.id)})})]}),c(`left`)&&(0,B.jsxs)(`div`,{className:`rp-block`,id:`sec-left`,children:[(0,B.jsx)(`h3`,{className:`rp-title`,children:`Left`}),e.left.items.length===0?(0,B.jsx)(`p`,{className:`rp-none`,children:`Nothing recorded.`}):(0,B.jsxs)(`ul`,{className:`rp-status`,children:[o(e.left.items).map(e=>(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`rp-mark`,"aria-hidden":`true`,children:e.status===`failing`?`✕`:e.status===`in_progress`?`▸`:`○`}),(0,B.jsx)(`span`,{children:e.text})]},e.id)),s(e.left.items.length)]})]}),c(`review`)&&(0,B.jsxs)(`div`,{className:`rp-block`,id:`sec-review`,children:[(0,B.jsx)(`h3`,{className:`rp-title`,children:`Review`}),a.length===0?(0,B.jsx)(`p`,{className:`rp-none`,children:`Nothing needs you.`}):(0,B.jsxs)(`ul`,{className:`rp-status`,children:[o(a).map(e=>(0,B.jsx)(ep,{group:e,onRef:n},e.rule)),s(a.length)]})]})]})}function Qf({subagents:e,onRef:t}){if(e.length===0)return null;let n=e.filter(e=>e.lastMessage).length;return(0,B.jsx)(Nu,{label:`Delegated to ${e.length} ${e.length===1?`agent`:`agents`}${n>0?`, ${n} reported back`:``}`,id:`subagents`,children:(0,B.jsx)(`ul`,{className:`rows`,children:e.map(e=>(0,B.jsx)($f,{agent:e,onRef:t},e.id))})})}function $f({agent:e,onRef:t}){let[n,r]=(0,z.useState)(!1),i=e.lastMessage??``,[a,o]=gf(n,i);return(0,B.jsxs)(`li`,{className:`row row-flat is-quote`,children:[(0,B.jsx)(`span`,{className:`attrib`,children:e.description??e.agentType??e.id}),i?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{ref:a,className:`rp-statement-body${n?` is-open`:``}`,children:i}),(o||n)&&(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>r(!n),children:n?`less`:`more`})]}):(0,B.jsx)(`span`,{className:`muted`,children:e.endedAt?`ended without reporting`:`still running`}),e.eventId&&(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>t(e.eventId),"aria-label":`Open the record for ${e.description??e.agentType??e.id}`,children:`record`})]})}function ep({group:e,onRef:t}){let[n,r]=(0,z.useState)(!1),i=e.items[0];return e.occurrences===1&&i?(0,B.jsxs)(`li`,{className:`is-attn`,children:[(0,B.jsx)(`span`,{className:`rp-mark`,"aria-hidden":`true`,children:`⚠`}),(0,B.jsx)(`span`,{children:i.summary}),i.refs[0]&&(0,B.jsx)(`button`,{type:`button`,className:`link rp-ev`,onClick:()=>t(i.refs[0]),children:`record`})]}):(0,B.jsxs)(`li`,{className:`is-attn rp-group`,children:[(0,B.jsx)(`span`,{className:`rp-mark`,"aria-hidden":`true`,children:`⚠`}),(0,B.jsxs)(`div`,{className:`rp-group-body`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`rp-group-head`,onClick:()=>r(e=>!e),"aria-expanded":n,children:[(0,B.jsx)(`span`,{className:`rp-group-label`,children:e.label}),(0,B.jsxs)(`span`,{className:`rp-group-count num`,children:[e.occurrences,e.items.length<e.occurrences&&(0,B.jsxs)(`span`,{className:`rp-group-distinct`,children:[` · `,e.items.length,` distinct`]})]})]}),n&&(0,B.jsx)(`ul`,{className:`rp-group-items`,children:e.items.map(e=>(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`mono`,title:e.instance??e.label,children:dd(e.instance??e.label)}),e.repeats>1&&(0,B.jsxs)(`span`,{className:`rp-group-repeats num`,children:[`×`,e.repeats]}),e.refs[0]&&(0,B.jsx)(`button`,{type:`button`,className:`link rp-ev`,onClick:()=>t(e.refs[0]),children:`record`})]},e.id))})]})]})}function tp({verdict:e,strip:t,onOpen:n}){let r=[e.because,t.waiting?.summary,e.epistemic===`inferred`&&!e.because?`Worked out, not observed.`:void 0].filter(Boolean).join(` `);return(0,B.jsxs)(`div`,{className:`masthead-badges`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`tag is-open`,"data-tone":e.tone,onClick:()=>n(`checks`),title:`Open the checks this verdict was read from`,children:[(0,B.jsx)(`span`,{className:`tag-strong`,children:e.headline}),r&&(0,B.jsx)(`span`,{className:`tag-note`,children:r})]}),t.reviewOpen>0&&(0,B.jsxs)(`button`,{type:`button`,className:`tag is-open`,"data-tone":`attention`,onClick:()=>n(`review`),title:`Things Salidium flagged for a human: failing checks, waiting prompts, destructive commands, claims with no evidence`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`to review`}),(0,B.jsx)(`span`,{className:`num tag-strong`,children:t.reviewOpen})]}),t.remaining>0&&(0,B.jsxs)(`button`,{type:`button`,className:`tag is-open`,onClick:()=>n(`left`),title:`Work the agent recorded as not yet finished`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`unfinished`}),(0,B.jsx)(`span`,{className:`num tag-strong`,children:t.remaining})]})]})}var np=8,rp=`live`;function ip(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>1,a=e[i];a!==void 0&&a.ts<=t?n=i+1:r=i}return n-1}var ap=16,op=(e,t=0)=>`calc(${ap/2+t}px + (100% - ${ap}px) * ${e})`;function sp({startedAt:e,endedAt:t,changes:n,checks:r,commits:i,scrubTs:a,onScrub:o,onLive:s}){let[c,l]=(0,z.useState)(),u=(0,z.useRef)(void 0);(0,z.useEffect)(()=>()=>clearTimeout(u.current),[]);let d=(0,z.useRef)(null),[f,p]=(0,z.useState)(0);(0,z.useLayoutEffect)(()=>{let e=d.current;if(!e)return;p(e.getBoundingClientRect().width);let t=new ResizeObserver(([t])=>p(t?.contentRect.width??e.getBoundingClientRect().width));return t.observe(e),()=>t.disconnect()},[]);let m=(0,z.useMemo)(()=>{let e=[],t=-1;for(let r of n){t=Math.max(t,r.seq);let n=e[e.length-1];n!==void 0&&n.ts===r.ts?n.seq=t:e.push({ts:r.ts,seq:t})}return e},[n,n.length]),h=(0,z.useMemo)(()=>{let e=new Map,t=(t,n)=>{let r=ip(m,t);if(r<0)return;let i=e.get(r)??{fail:!1,pass:!1,commit:!1,n:0};i[n]=!0,i.n+=1,e.set(r,i)};for(let e of r)e.outcome===`pass`?t(e.at,`pass`):e.outcome===`fail`&&t(e.at,`fail`);for(let e of i)t(e.at,`commit`);let n=Math.max(0,f-ap),a=n>0&&m.length>0?n/m.length:0,o=a>0?Math.max(1,Math.ceil(np/a)):1,s=[];for(let t of[...e.keys()].sort((e,t)=>e-t)){let n=e.get(t),r=s[s.length-1];if(r&&t-r.at<o){r.fail||=n.fail,r.pass||=n.pass,r.commit||=n.commit,r.n+=n.n;continue}s.push({at:t,...n})}return s.map(e=>({at:e.at,f:e.at/m.length,tone:e.fail?`fail`:e.pass?`pass`:`commit`,n:e.n}))},[r,i,m,f]);if(m.length===0)return null;let g=c??a,_=g===void 0||g===rp?m.length:Math.max(0,ip(m,g)),v=m[_]?.ts,y=_/m.length,b=e=>{let t=m[e];l(t?t.ts:rp),clearTimeout(u.current),u.current=setTimeout(()=>{l(void 0),t?o(t.ts,t.seq):s()},90)};return(0,B.jsxs)(`section`,{className:`timeline`,"aria-label":`Session timeline`,children:[(0,B.jsxs)(`div`,{className:`tl-track`,ref:d,children:[(0,B.jsx)(`div`,{className:`tl-marks`,"aria-hidden":`true`,children:h.map(e=>(0,B.jsx)(`span`,{className:`tl-mark tl-${e.tone}`,style:{left:op(e.f)},title:`${e.n} ${e.n===1?`event`:`events`} here`},e.at))}),_<m.length&&(0,B.jsx)(`div`,{className:`tl-future`,style:{left:op(y)},"aria-hidden":`true`}),(0,B.jsx)(`div`,{className:`tl-stem`,style:{left:op(y,-1)},"aria-hidden":`true`}),(0,B.jsx)(`input`,{className:`tl-range`,type:`range`,min:0,max:m.length,step:1,value:_,onChange:e=>b(Number(e.target.value)),"aria-label":`Show the session as it stood at a moment in time`,"aria-valuetext":v===void 0?t?`the whole session`:`now, following live`:`${sd(v)}, change ${_+1} of ${m.length}, later events hidden`})]}),(0,B.jsxs)(`div`,{className:`tl-legend`,children:[(0,B.jsx)(`span`,{className:`mono`,children:sd(e)}),(0,B.jsx)(`span`,{className:`tl-legend-mid`,children:_>=m.length?t?`whole session`:`following live`:(0,B.jsxs)(B.Fragment,{children:[`showing `,(0,B.jsx)(`strong`,{className:`mono`,children:sd(v)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>b(m.length),children:`back to now`})]})}),(0,B.jsx)(`span`,{className:`mono`,children:t?sd(t):`now`})]})]})}function cp(){let[e,t]=(0,z.useState)(!1),n=Au(e,()=>t(!1));return(0,B.jsxs)(`div`,{className:`pop`,ref:n,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-float ${e?`is-on`:``}`,onClick:()=>t(e=>!e),"aria-expanded":e,title:`What the track shows`,children:[(0,B.jsx)(Eu,{name:`help`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`What the track shows`})]}),(0,B.jsxs)(`div`,{className:`pop-panel is-narrow is-up arrives ${e?`is-open`:``}`,children:[(0,B.jsx)(`div`,{className:`pop-head`,children:(0,B.jsx)(`span`,{children:`On the track`})}),(0,B.jsx)(`p`,{className:`pop-note`,children:`One step per change, not per minute. The clock is in the two end labels and in the readout while you drag.`}),(0,B.jsx)(`p`,{className:`pop-note`,children:`A mark is a check or a commit, red where a check failed. Marks too close to draw apart are merged, and a merged mark takes the worst outcome in it.`})]})]})}function lp({sessionId:e,now:t}){let[n,r]=(0,z.useState)(0);Ad(e,n);let i=Y(e=>e.api),a=Y(t=>t.live[e]),o=Y(t=>t.liveErrors[e]),s=Y(t=>t.sessions[e]),c=Y(e=>e.openRaw),l=Y(e=>e.setScrub),u=Y(e=>e.markSeen),d=Y(e=>e.openPanel),f=Y(e=>e.rewindOpen),p=Y(e=>e.toggleRewind),m=Y(e=>e.sidebarOpen),h=Y(e=>e.toggleSidebar),g=Y(e=>e.statsOpen),_=Y(e=>e.toggleStats),v=Y(e=>e.historyMode),y=Y(e=>e.setHistoryMode),[b,x]=(0,z.useState)(void 0),ee=ed(),[te,S]=$(`${f}`),ne=Nd(f),re=a?.state,ie=a?.scrub?.state,ae=a?.revision??0,oe=a?.scrub?.seq,C=(0,z.useMemo)(()=>re?q(re,t):void 0,[re,ae,t]),se=(0,z.useMemo)(()=>ie?q(ie,t):void 0,[ie,oe,t]),ce=(0,z.useCallback)(t=>{let n=Y.getState().live[e]?.state;if(!n)return;let r=t.includes(`#`)?t:n.activities[t]?.eventIds[0]??n.claims.find(e=>e.id===t)?.eventId??n.claims.find(e=>e.id===t)?.id;r&&c(e,r)},[c,e]),le=(0,z.useRef)(0),ue=(0,z.useCallback)((t,n)=>{let r=Y.getState().live[e];if(!i||!r)return;let a=++le.current;l(e,{ts:t,seq:n,state:r.scrub?.state??r.state,loading:!0}),i.stateAtTime(e,t).then(r=>{le.current===a&&l(e,{ts:t,seq:n,state:r.state,loading:!1})},()=>{le.current===a&&l(e,void 0)})},[i,e,l]),de=(0,z.useCallback)(()=>{le.current++,l(e,void 0)},[e,l]),w=(0,z.useMemo)(()=>a?a.changes.filter(e=>e.seq>a.lastSeenSeq&&(e.facet===`what`||e.facet===`verified`||e.facet===`review`||e.facet===`left`)).length:0,[a]);(0,z.useEffect)(()=>()=>u(e),[e,u]);let T=(0,z.useCallback)(()=>{x(Y.getState().live[e]?.lastSeenSeq),Y.getState().statsOpen&&_(),y(`rail`),u(e)},[e,u,y,_]),fe=(0,z.useCallback)(()=>{Y.getState().historyMode===`off`?(Y.getState().statsOpen&&_(),y(`rail`)):(x(void 0),y(`off`))},[y,_]),pe=(0,z.useCallback)(()=>{Y.getState().statsOpen||(x(void 0),y(`off`)),_()},[y,_]);if((0,z.useEffect)(()=>{let e=e=>{e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement||e.metaKey||e.ctrlKey||e.altKey||(e.key===`h`?fe():e.key===`l`&&oe!==void 0&&de())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[oe,de,fe]),!a||!re||!C)return o?(0,B.jsx)(pp,{error:o,onRetry:()=>r(e=>e+1)}):(0,B.jsx)(`div`,{className:`main-empty`,children:(0,B.jsx)(`div`,{className:`muted`,role:`status`,children:(0,B.jsx)(td,{label:`Loading session`,size:`md`})})});let me=ie??re,E=se??C,D=E.changes.files.length>0||E.verified.runs.length>0||E.turns.length+E.subagents.length>0,O=gd(E.strip.status),he=C.strip.status===`ended`?re.lastEventAt:void 0,ge=E.explained;return(0,B.jsxs)(`div`,{className:`session ${g||v===`rail`?`has-inspector`:``}`,children:[(0,B.jsxs)(`div`,{className:`session-main`,ref:te,children:[(0,B.jsxs)(`div`,{className:`session-actions`,children:[!m&&(0,B.jsx)(Du,{icon:`panel`,title:`Show the session list ([)`,onClick:h}),(0,B.jsxs)(`div`,{className:`toolbar session-actions-end`,children:[oe===void 0&&w>0&&(0,B.jsxs)(`button`,{type:`button`,className:`fresh`,onClick:T,title:`Changes since you last had this session open. Opens History filtered to them.`,children:[`Show `,w,` new`]}),D&&(0,B.jsx)(Du,{icon:`table`,label:`Evidence`,title:`Coverage, checks over time, what changed, what happened when`,onClick:()=>d(`evidence`)}),(0,B.jsx)(Du,{icon:`latest`,label:`Rewind`,on:f,title:`Show the session as it stood at a moment in time`,onClick:p}),(0,B.jsx)(Du,{icon:`stats`,label:`Quantities`,on:g,title:`Show measured totals beside the session`,onClick:pe}),(0,B.jsx)(Du,{icon:`history`,label:`History`,on:v!==`off`,title:`Toggle history (h)`,onClick:fe}),(0,B.jsx)(ku,{icon:`outbound`,label:`Docs`,href:Ou,title:`Open the Salidium documentation in a new tab`}),(0,B.jsx)(Mu,{}),a.connection!==`open`&&a.connection!==`connecting`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`toolbar-sep`,"aria-hidden":`true`}),(0,B.jsx)(Pu,{status:a.connection})]})]})]}),v===`table`?(0,B.jsx)(ff,{changes:a.changes,scrubTs:a.scrub?.ts,onScrub:ue,onLive:de,onRef:ce}):(0,B.jsx)(`div`,{className:`session-content scroll-fade`,ref:ee,children:(0,B.jsxs)(`article`,{className:`page`,children:[(0,B.jsxs)(`header`,{className:`masthead`,children:[(0,B.jsx)(vs,{size:16,className:`masthead-mark`}),(0,B.jsx)(`h1`,{className:`masthead-title`,children:me.title||s?.title||me.cwd}),(0,B.jsxs)(`p`,{className:`masthead-meta`,children:[(0,B.jsxs)(`span`,{className:`tag is-status`,children:[(0,B.jsx)(`span`,{className:`status-dot ${O.cls}`,"aria-hidden":`true`,children:O.glyph}),O.label,E.strip.statusSince&&` ${cd(E.strip.statusSince,t)}`]}),(0,B.jsxs)(`span`,{className:`tag masthead-path`,title:me.cwd,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`in`}),(0,B.jsx)(`span`,{className:`mono`,children:dd(ud(me.cwd))})]}),me.gitBranch&&(0,B.jsxs)(`span`,{className:`tag`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`branch`}),(0,B.jsx)(`span`,{className:`mono`,children:me.gitBranch})]}),(0,B.jsxs)(`span`,{className:`tag is-${me.provider}`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`agent`}),Md(me.provider)]}),me.model&&(0,B.jsxs)(`span`,{className:`tag`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`model`}),(0,B.jsx)(`span`,{className:`mono`,children:me.model})]})]}),(0,B.jsx)(tp,{verdict:E.verdict,strip:E.strip,onOpen:d})]}),oe!==void 0&&(0,B.jsxs)(`p`,{className:`scrub-note`,role:`status`,children:[`Showing this session as it stood at `,(0,B.jsx)(`strong`,{children:sd(a.scrub?.ts)}),`. Anything later is hidden. `,a.scrub?.loading&&(0,B.jsx)(td,{label:`replaying`})]}),ge?(0,B.jsx)(Rf,{ex:ge}):(0,B.jsx)(fp,{turns:E.turns.length,status:s?.explanationStatus})]})}),(0,B.jsx)(`div`,{className:`session-foot`,ref:S,children:ne&&(0,B.jsxs)(`div`,{className:`rewind arrives ${f?`is-open`:``}`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-float`,onClick:p,title:`Close the scrubber`,children:[(0,B.jsx)(Eu,{name:`close`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Close the scrubber`})]}),(0,B.jsx)(sp,{startedAt:re.startedAt,endedAt:he,now:t,changes:a.changes,checks:C.verified.runs,commits:C.changes.commits,scrubTs:a.scrub?.ts,onScrub:ue,onLive:de}),(0,B.jsx)(cp,{})]})}),(0,B.jsx)(pf,{id:`checks`,title:`Verified`,children:(0,B.jsx)(Kf,{which:`checks`,view:E,onRef:ce})}),(0,B.jsx)(pf,{id:`left`,title:`Left`,children:(0,B.jsx)(Kf,{which:`left`,view:E,onRef:ce})}),(0,B.jsx)(pf,{id:`review`,title:`Needs you`,children:(0,B.jsx)(Kf,{which:`review`,view:E,onRef:ce})}),(0,B.jsx)(up,{view:E,cwd:me.cwd,onRef:ce})]}),g?(0,B.jsx)(dp,{view:E,onClose:pe}):v===`rail`?(0,B.jsx)(lf,{changes:a.changes,scrubTs:a.scrub?.ts,focusSeq:b,onScrub:ue,onLive:de,onClose:fe,onRef:ce}):null]})}function up({view:e,cwd:t,onRef:n}){let r=Y(e=>e.panel),i=Y(e=>e.closePanel),a=e.changes.files.length,o=e.verified.runs.length,s=e.turns.length+e.subagents.length,c=[];return a>0&&c.push({key:`coverage`,label:`Coverage`,count:a,render:()=>(0,B.jsx)(Hf,{view:e,onRef:n})}),o>0&&c.push({key:`checks`,label:`Checks`,count:o,render:()=>(0,B.jsx)(Uf,{view:e,onRef:n})}),a>0&&c.push({key:`changed`,label:`Changed`,count:a,render:()=>(0,B.jsx)(Wf,{view:e,cwd:t,onRef:n})}),s>0&&c.push({key:`happened`,label:`What happened`,count:s,render:()=>(0,B.jsx)(Gf,{view:e,onRef:n})}),(0,z.useEffect)(()=>{r===`evidence`&&c.length===0&&i()},[r,c.length,i]),c.length===0?null:(0,B.jsx)(pf,{id:`evidence`,title:`Evidence`,sections:c})}function dp({view:e,onClose:t}){return(0,B.jsxs)(`aside`,{className:`inspector quantities`,"aria-label":`Quantities`,children:[(0,B.jsxs)(`div`,{className:`inspector-head`,children:[(0,B.jsx)(Du,{icon:`panel`,title:`Hide quantities`,onClick:t}),(0,B.jsx)(`span`,{className:`inspector-title`,children:`Quantities`})]}),(0,B.jsx)(`div`,{className:`quantities-body scroll-fade`,children:(0,B.jsx)(Bf,{view:e})})]})}function fp({turns:e,status:t}){return e===0?(0,B.jsx)(`section`,{className:`ex-pending`,role:`status`,children:(0,B.jsx)(`p`,{children:`Nothing has happened in this session yet.`})}):t===`generating`?(0,B.jsxs)(`section`,{className:`ex-pending is-running`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:(0,B.jsx)(td,{label:`Reading the session`,size:`md`})}),(0,B.jsx)(`p`,{children:`Your selected agent is writing from a bounded, redacted summary of the session. It takes a few seconds, then the explanation is cached.`})]}):t===`disabled`?(0,B.jsxs)(`section`,{className:`ex-pending`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:`Visual explanations are off.`}),(0,B.jsx)(`p`,{children:`No evidence was sent to an agent. Observed facts are still available in Evidence.`})]}):t===`unavailable`?(0,B.jsxs)(`section`,{className:`ex-pending`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:`No explanation for this session.`}),(0,B.jsx)(`p`,{children:`No compatible Claude Code or Codex command is available, so nothing was sent. Observed facts are still available in Evidence.`})]}):t===`failed`?(0,B.jsxs)(`section`,{className:`ex-pending`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:`No explanation for this session.`}),(0,B.jsx)(`p`,{children:`The selected agent was asked but returned no usable structured explanation. Observed facts are still available in Evidence; the next turn will try again.`})]}):(0,B.jsxs)(`section`,{className:`ex-pending`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:`No explanation yet.`}),(0,B.jsx)(`p`,{children:`One is written when the agent finishes its next turn.`})]})}function pp({error:e,onRetry:t}){let n=Y(e=>e.select);return(0,B.jsx)(`div`,{className:`main-empty`,children:(0,B.jsxs)(`div`,{className:`session-error`,role:`alert`,children:[e.kind===`not-found`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`session-error-title`,children:`This session is not in the store`}),(0,B.jsx)(`p`,{className:`muted`,children:`It may have been forgotten, or the daemon was restarted with a fresh store. Pick another session from the list.`})]}),e.kind===`unreachable`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`session-error-title`,children:`Cannot reach the Salidium daemon`}),(0,B.jsxs)(`p`,{className:`muted`,children:[e.message,`. Start it again with `,(0,B.jsx)(`code`,{children:`salidium`}),` in a terminal.`]})]}),e.kind===`failed`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`session-error-title`,children:`Could not load this session`}),(0,B.jsx)(`p`,{className:`muted mono`,children:e.message})]}),(0,B.jsxs)(`div`,{className:`session-error-actions`,children:[(0,B.jsx)(`button`,{type:`button`,className:`btn btn-accent`,onClick:t,children:`Try again`}),e.kind===`not-found`&&(0,B.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>n(void 0),children:`Back to sessions`})]})]})})}var mp=[{value:`off`,name:`Off`,adds:`The page Salidium derives, and nothing else. No model is ever called.`},{value:`session`,name:`When a session ends`,adds:`One explanation each, written once a session has finished or gone quiet.`},{value:`turn`,name:`While it works`,adds:`A fresh explanation at every turn end, so the page keeps up with the agent.`}],hp=[{key:`inputTokens`,label:`input`},{key:`outputTokens`,label:`output`},{key:`cacheReadTokens`,label:`cache read`},{key:`cacheWriteTokens`,label:`cache write`}];function gp(){let e=Y(e=>e.api),t=Y(e=>e.explainer),n=Y(e=>e.loadExplainer),r=Y(e=>e.setExplainerCadence),[i,a]=(0,z.useState)(!1),[o,s]=(0,z.useState)(!1),c=Au(i,()=>a(!1));(0,z.useEffect)(()=>{e&&n()},[e,n]);let l=t?.cadence,u=t?.usage;return(0,B.jsxs)(`div`,{className:`pop`,ref:c,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon ${i?`is-on`:``}`,onClick:()=>a(e=>!e),"aria-expanded":i,title:`When Salidium explains`,children:[(0,B.jsx)(Eu,{name:`sliders`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`When Salidium explains`})]}),(0,B.jsxs)(`div`,{className:`pop-panel arrives ${i?`is-open`:``}`,children:[(0,B.jsxs)(`div`,{className:`pop-head`,children:[(0,B.jsx)(`span`,{children:`Explaining`}),(0,B.jsxs)(`button`,{type:`button`,className:`pop-help ${o?`is-on`:``}`,onClick:()=>s(e=>!e),"aria-expanded":o,title:`What this control does`,children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,children:`?`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`What this control does`})]})]}),o&&(0,B.jsx)(`p`,{className:`pop-note`,children:`Everything else on the page is observed or derived from what was observed. The explanation is the one part a model writes, on the subscription you already have.`}),(0,B.jsxs)(`fieldset`,{className:`opts`,children:[(0,B.jsx)(`legend`,{className:`sr-only`,children:`When Salidium explains`}),mp.map(e=>(0,B.jsxs)(`label`,{className:`opt ${e.value===l?`is-on`:``}`,children:[(0,B.jsx)(`input`,{className:`sr-only`,type:`radio`,name:`salidium-explainer`,checked:e.value===l,disabled:l===void 0,onChange:()=>r(e.value)}),(0,B.jsx)(`span`,{className:`opt-mark`,"aria-hidden":`true`}),(0,B.jsxs)(`span`,{className:`opt-text`,children:[(0,B.jsx)(`span`,{className:`opt-name`,children:e.name}),(0,B.jsx)(`span`,{className:`opt-adds`,children:e.adds})]})]},e.value))]}),t?.envOff&&(0,B.jsx)(`p`,{className:`pop-note`,children:`The daemon was started with the explainer switched off in its environment, so nothing is generated whichever stop is chosen here.`}),u&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`pop-head`,children:(0,B.jsx)(`span`,{children:`Consumed`})}),(0,B.jsxs)(`dl`,{className:`usage`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`responses`}),(0,B.jsx)(`dd`,{className:`mono`,children:u.messages.toLocaleString()})]}),hp.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e.label}),(0,B.jsx)(`dd`,{className:`mono`,children:u[e.key].toLocaleString()})]},e.key))]})]})]})]})}var _p=`salidium open`,vp=/Mac|iPhone|iPad/.test(navigator.platform??``)?`⌘C`:`Ctrl+C`;function yp(){let[e,t]=(0,z.useState)(()=>Date.now());return(0,z.useEffect)(()=>{let e=setInterval(()=>t(Date.now()),3e4);return()=>clearInterval(e)},[]),e}function bp(){let[e,t]=(0,z.useState)(()=>window.matchMedia(`(max-width: 900px)`).matches);return(0,z.useEffect)(()=>{let e=window.matchMedia(`(max-width: 900px)`),n=()=>t(e.matches);return n(),e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}function xp(){let e=Y(e=>e.api),t=Y(e=>e.setToken),n=Y(e=>e.authRejected),r=Y(e=>e.selectedId),i=Y(e=>e.select),a=Y(e=>e.sessionOrder),o=Y(e=>e.daemonError),s=a.length,c=Y(e=>e.listConnection),l=Y(e=>e.sidebarOpen),u=Y(e=>e.toggleSidebar),d=(0,z.useRef)(null),f=(0,z.useRef)(null),p=bp()&&l,m=yp();return(0,z.useEffect)(()=>{let e=()=>{let e=ds();e&&t(e)};return e(),window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[t]),(0,z.useEffect)(()=>{let e=()=>{let e=/^#\/s\/(.+)$/.exec(window.location.hash);e?.[1]&&i(decodeURIComponent(e[1]))};return e(),window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[i]),(0,z.useEffect)(()=>{let e=r?`#/s/${encodeURIComponent(r)}`:``;window.location.hash!==e&&!/token=/.test(window.location.hash)&&history.replaceState(null,``,`${window.location.pathname}${e}`)},[r]),(0,z.useEffect)(()=>{!r&&a.length>0&&i(a[0])},[r,a,i]),(0,z.useEffect)(()=>{let e=e=>{if(e.key===`Escape`&&window.matchMedia(`(max-width: 900px)`).matches&&Y.getState().sidebarOpen){Y.getState().toggleSidebar();return}e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement||e.metaKey||e.ctrlKey||e.altKey||e.key===`[`&&Y.getState().toggleSidebar()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),Qu({active:p&&!!e,containerRef:d,onClose:u,initialFocus:e=>e.querySelector(`[data-modal-initial] button`)??e.querySelector(`button:not([disabled])`),restoreFocus:()=>f.current?.querySelector(`button`)??null,shouldRestoreFocus:()=>!Y.getState().sidebarOpen}),jd(),e?(0,B.jsxs)(`div`,{className:`app ${l?``:`no-side`}`,children:[(0,B.jsx)(`div`,{className:`side-backdrop arrives ${l?`is-open`:``}`,"aria-hidden":`true`,onClick:u}),!l&&(0,B.jsx)(`div`,{className:`mobile-side-trigger`,ref:f,children:(0,B.jsx)(Du,{icon:`panel`,title:`Show the session list ([)`,onClick:u})}),(0,B.jsxs)(`aside`,{ref:d,className:`side arrives ${l?`is-open`:``}`,role:p?`dialog`:void 0,"aria-modal":p?`true`:void 0,"aria-labelledby":p?`session-list-title`:void 0,"aria-label":p?void 0:`Sessions`,tabIndex:p?-1:void 0,inert:!l,onClickCapture:e=>{window.matchMedia(`(max-width: 900px)`).matches&&e.target.closest(`.session-row`)&&u()},children:[(0,B.jsxs)(`div`,{className:`side-head`,children:[(0,B.jsx)(vs,{size:22,className:`side-mark`,decorative:!0}),(0,B.jsx)(`span`,{className:`side-head-title`,id:`session-list-title`,children:`Salidium`}),(0,B.jsx)(Pu,{status:c}),s>0&&(0,B.jsx)(vd,{}),(0,B.jsx)(gp,{}),(0,B.jsx)(`span`,{"data-modal-initial":`true`,children:(0,B.jsx)(Du,{icon:`panel`,title:`Hide the session list ([)`,onClick:u})})]}),(0,B.jsx)(wd,{now:m}),o&&(0,B.jsxs)(`div`,{className:`side-error`,role:`alert`,children:[(0,B.jsx)(`p`,{className:`side-error-title`,children:`The session list is not updating`}),(0,B.jsxs)(`p`,{children:[o.message,`.`,` `,o.unreachable?(0,B.jsxs)(B.Fragment,{children:[`Start the daemon again with `,(0,B.jsx)(`code`,{children:`salidium`}),` in a terminal.`]}):`It is reachable, so this is worth reporting rather than restarting.`]})]})]}),(0,B.jsx)(`main`,{className:`main`,inert:p,"aria-hidden":p||void 0,children:r?(0,B.jsx)(lp,{sessionId:r,now:m},r):s===0?(0,B.jsx)(`div`,{className:`main-empty`,children:(0,B.jsxs)(`div`,{className:`main-empty-first`,children:[(0,B.jsx)(`p`,{children:`A report appears here when your agent runs.`}),(0,B.jsx)(`p`,{className:`muted`,children:`Start a run in Claude Code or Codex. Salidium reads the session it writes and turns it into what changed, what was checked, and what needs you.`}),(0,B.jsx)(`a`,{className:`link`,href:Ou,target:`_blank`,rel:`noreferrer`,children:`Read the documentation`})]})}):null}),(0,B.jsx)(`div`,{className:`raw-layer`,inert:p,"aria-hidden":p||void 0,children:(0,B.jsx)(rd,{})})]}):(0,B.jsx)(Sp,{authRejected:n,onToken:t})}function Sp({authRejected:e,onToken:t}){let[n,r]=(0,z.useState)(`idle`),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(!1),c=(0,z.useRef)(null),l=(0,z.useRef)(null);return(0,z.useEffect)(()=>{if(n===`idle`)return;let e=setTimeout(()=>r(`idle`),2400);return()=>clearTimeout(e)},[n]),(0,B.jsx)(`div`,{className:`gate`,children:(0,B.jsxs)(`div`,{className:`gate-inner`,children:[(0,B.jsx)(`h1`,{className:`gate-mark`,children:(0,B.jsx)(ys,{markSize:34})}),(0,B.jsx)(`p`,{className:`gate-lede`,role:e?`alert`:void 0,children:e?`The daemon restarted with a new token, so this page signed out.`:`This page needs the token your daemon is listening for.`}),(0,B.jsx)(`p`,{className:`gate-note`,children:`It is rotated every time the daemon starts, so it is never the same one twice.`}),(0,B.jsxs)(`div`,{className:`gate-cmd`,children:[(0,B.jsx)(`code`,{ref:c,children:_p}),(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>{let e=()=>{let e=c.current;if(e){let t=document.createRange();t.selectNodeContents(e);let n=window.getSelection();n?.removeAllRanges(),n?.addRange(t)}r(`selected`)};if(!navigator.clipboard)return e();navigator.clipboard.writeText(_p).then(()=>r(`copied`),e)},title:n===`copied`?`Copied`:`Copy the command`,children:[(0,B.jsx)(Eu,{name:n===`copied`?`check`:`copy`}),(0,B.jsx)(`span`,{className:`sr-only`,children:n===`copied`?`Copied`:`Copy the command`})]})]}),(0,B.jsx)(`p`,{className:`gate-hint`,role:n===`idle`?void 0:`status`,children:n===`copied`?`Copied. Run it in a terminal; it opens this page with the token attached.`:n===`selected`?`This window cannot reach the clipboard, so the command is selected — ${vp} to take it.`:`Run it in a terminal; it opens this page with the token attached.`}),(0,B.jsxs)(`form`,{className:`gate-paste`,onSubmit:e=>{if(e.preventDefault(),i.trim()===``){l.current?.focus();return}let n=ps(i);if(!n){s(!0);return}s(!1),fs(n),t(n)},children:[(0,B.jsx)(`input`,{ref:l,className:`field gate-field`,value:i,onChange:e=>{a(e.target.value),s(!1)},placeholder:`or paste the token, or the URL carrying it`,"aria-label":`Daemon token, or a URL containing it`,"aria-invalid":o||void 0,spellCheck:!1,autoComplete:`off`}),(0,B.jsx)(`button`,{type:`submit`,className:`btn btn-accent`,children:`Connect`})]}),o&&(0,B.jsxs)(`p`,{className:`gate-bad`,role:`alert`,children:[`That is not a token. It is a long run of hex, and the URL the command prints carries one after `,(0,B.jsx)(`code`,{children:`#token=`}),`.`]})]})})}var Cp=document.getElementById(`root`);Cp&&(0,bo.createRoot)(Cp).render((0,B.jsx)(z.StrictMode,{children:(0,B.jsx)(xp,{})}));
86
+ `),block:!0,copy:!0}];case`mcp`:return[{label:`Tool`,value:`${t.server}/${t.tool}`,mono:!0,copy:!0},...Z(`Arguments`,t.argsExcerpt,!0,!0,!0)];case`plan`:return[{label:`Wrote`,value:e.title}];default:return[...Z(`Summary`,t.summary)]}}function qu(e){let t=e.result;switch(t.kind){case`command`:{let e=Vu(t.exit),n=t.gitOperation;return[{label:`Exit`,value:e.value,mono:!0,note:e.note},...t.outputExcerpt?[{label:`Output`,value:t.outputExcerpt,mono:!0,block:!0,copy:!0,note:t.truncated?`excerpt of ${Hu(t.outputChars,`character`)}`:Hu(t.outputChars,`character`)}]:[{label:`Output`,value:`none recorded`}],...t.interrupted?[{label:`Interrupted`,value:`yes`}]:[],...t.timedOut?[{label:`Timed out`,value:`yes`}]:[],...n?.commit?[{label:`Commit`,value:n.commit.sha,mono:!0,copy:!0}]:[],...n?.push?[{label:`Pushed`,value:n.push.branch??`yes`,mono:!0}]:[],...n?.pr?.number===void 0?[]:[{label:`Pull request`,value:`#${n.pr.number}`,mono:!0}]]}case`fileChanges`:{let e=t.changes.reduce((e,t)=>e+t.linesAdded,0),n=t.changes.reduce((e,t)=>e+t.linesRemoved,0);return[{label:`Changed`,value:`${Hu(t.changes.length,`file`)} · +${e} −${n}`},...t.changes.map(e=>({label:e.change,value:`${e.path} +${e.linesAdded} −${e.linesRemoved}`,mono:!0,note:e.applied?void 0:`not applied`}))]}case`fileRead`:return[{label:`File`,value:t.path,mono:!0,copy:!0},...t.suppressed?[{label:`Contents`,value:`withheld: this path holds credentials`}]:[]];case`subagent`:return[{label:`Status`,value:t.status},...t.summaryExcerpt?[{label:`Reported`,value:t.summaryExcerpt,block:!0,copy:!0}]:[],...t.toolCalls===void 0?[]:[{label:`Tool calls`,value:String(t.toolCalls),mono:!0}],...t.durationMs===void 0?[]:[{label:`Ran for`,value:`${t.durationMs} ms`,mono:!0}],...Z(`Lane`,t.agentId,!0)];default:return t.excerpt?[{label:`Result`,value:t.excerpt,mono:!0,block:!0,copy:!0}]:[{label:`Result`,value:`nothing recorded`}]}}function Ju(e){return[{label:`When`,value:e.ts,mono:!0,note:e.tsSource===`ingest`?`when Salidium received it, not when it happened`:void 0},...Z(`Lane`,e.agentId,!0),...Z(`Turn`,e.turnId,!0),...e.redactions?[{label:`Redacted`,value:Hu(e.redactions,`credential-shaped string`),note:`removed at ingest, before anything was stored`}]:[],{label:`Id`,value:e.id,mono:!0,copy:!0}]}var Yu=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`,Xu=[];function Zu(e){return Array.from(e.querySelectorAll(Yu)).filter(e=>!e.closest(`[hidden], [inert], [aria-hidden="true"]`)&&e.getClientRects().length>0)}function Qu({active:e,containerRef:t,onClose:n,initialFocus:r,restoreFocus:i,shouldRestoreFocus:a}){let o=(0,z.useRef)(e),s=(0,z.useRef)(n),c=(0,z.useRef)(r),l=(0,z.useRef)(i),u=(0,z.useRef)(a),d=(0,z.useRef)(null);o.current=e,s.current=n,c.current=r,l.current=i,u.current=a,(0,z.useEffect)(()=>{if(e)return;let t=e=>{let t=e.target instanceof Element?e.target.closest(Yu):null;t&&(d.current=t)};return document.addEventListener(`pointerdown`,t,!0),()=>document.removeEventListener(`pointerdown`,t,!0)},[e]),(0,z.useEffect)(()=>{if(!e)return;let n=t.current;if(!n)return;let r=Symbol(`modal`),i=d.current;d.current=null;let a=i?.isConnected===!0?i:document.activeElement instanceof HTMLElement?document.activeElement:null;Xu.push(r);let f=()=>c.current?.(n)??Zu(n)[0]??n,p=requestAnimationFrame(()=>f().focus()),m=e=>{if(Xu.at(-1)!==r)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),s.current();return}if(e.key!==`Tab`)return;let t=Zu(n),i=t[0],a=t.at(-1);if(!i||!a){e.preventDefault(),n.focus();return}let o=document.activeElement;!(o instanceof Node)||!n.contains(o)?(e.preventDefault(),(e.shiftKey?a:i).focus()):e.shiftKey&&(o===i||o===n)?(e.preventDefault(),a.focus()):!e.shiftKey&&o===a&&(e.preventDefault(),i.focus())},h=e=>{Xu.at(-1)!==r||n.contains(e.target)||f().focus()};return document.addEventListener(`keydown`,m,!0),document.addEventListener(`focusin`,h,!0),()=>{cancelAnimationFrame(p),document.removeEventListener(`keydown`,m,!0),document.removeEventListener(`focusin`,h,!0);let e=Xu.lastIndexOf(r);e>=0&&Xu.splice(e,1),!(o.current||u.current?.()===!1)&&requestAnimationFrame(()=>{let e=l.current?.()??a;e?.isConnected&&e.focus()})}},[e,t])}var $u=900;function ed(){return(0,z.useCallback)(e=>{if(!e)return;let t=0,n,r=()=>{t=0;let n=e.scrollTop>1,r=e.scrollTop+e.clientHeight<e.scrollHeight-1;e.dataset.fade=n&&r?`both`:n?`top`:r?`bottom`:`none`},i=()=>{t||=requestAnimationFrame(r)},a=()=>{e.dataset.scrolling=`true`,n&&clearTimeout(n),n=setTimeout(()=>{delete e.dataset.scrolling},$u),i()};r(),e.addEventListener(`scroll`,a,{passive:!0});let o=new ResizeObserver(i);o.observe(e);for(let t of e.children)o.observe(t);let s=new MutationObserver(i);return s.observe(e,{childList:!0,subtree:!0}),()=>{e.removeEventListener(`scroll`,a),o.disconnect(),s.disconnect(),t&&cancelAnimationFrame(t),n&&clearTimeout(n)}},[])}function td({label:e,size:t=`sm`,className:n=``}){return(0,B.jsxs)(`span`,{className:`loading is-${t} ${n}`.trim(),role:`status`,children:[(0,B.jsx)(nd,{}),(0,B.jsx)(`span`,{className:`loading-label shimmer`,children:e})]})}function nd(){return(0,B.jsxs)(`svg`,{className:`orb`,viewBox:`0 0 16 16`,"aria-hidden":`true`,focusable:`false`,children:[(0,B.jsx)(`circle`,{className:`orb-dot`,cx:`8`,cy:`3.2`,r:`1.9`,fill:`currentColor`}),(0,B.jsx)(`circle`,{className:`orb-dot`,cx:`12.2`,cy:`10.4`,r:`1.9`,fill:`currentColor`}),(0,B.jsx)(`circle`,{className:`orb-dot`,cx:`3.8`,cy:`10.4`,r:`1.9`,fill:`currentColor`})]})}function rd(){let e=Y(e=>e.api),t=Y(e=>e.rawOpen),n=Y(e=>e.closeRaw),r=Y(e=>e.openRaw),[i,a]=(0,z.useState)(),[o,s]=(0,z.useState)(),[c,l]=(0,z.useState)(`event`),[u,d]=(0,z.useState)({}),f=(0,z.useRef)(null),p=ed(),m=(0,z.useCallback)(()=>{!e||!t||(a(void 0),s(void 0),d({}),e.raw(t.sessionId,t.eventId).then(a,e=>s(e instanceof Error?e.message:String(e))))},[e,t]);(0,z.useEffect)(m,[m]);let h=t?.sessionId,g=i?.event.seq;(0,z.useEffect)(()=>{if(!e||h===void 0||g===void 0)return;let t=!0;return e.events(h,g-2,g+1,3).then(e=>{t&&d({prev:e.find(e=>e.seq===g-1)?.id,next:e.find(e=>e.seq===g+1)?.id})},()=>{}),()=>{t=!1}},[e,h,g]);let _=(0,z.useCallback)(e=>{e&&h&&r(h,e)},[r,h]);if(Qu({active:t!==void 0,containerRef:f,onClose:n,initialFocus:e=>e.querySelector(`[data-modal-initial]`)}),(0,z.useEffect)(()=>{if(!t)return;let e=e=>{if(e.key===`ArrowLeft`||e.key===`ArrowRight`){let t=document.activeElement;if(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault(),_(e.key===`ArrowLeft`?u.prev:u.next);return}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,_,u]),!t)return null;let v=i?Lu(i.event):void 0;return(0,B.jsxs)(`div`,{className:`drawer`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`drawer-title`,ref:f,tabIndex:-1,children:[(0,B.jsxs)(`div`,{className:`drawer-head`,children:[(0,B.jsx)(`h2`,{className:`drawer-title`,id:`drawer-title`,children:v?v.title:`Source record`}),(0,B.jsxs)(`div`,{className:`drawer-acts`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>_(u.prev),disabled:!u.prev,title:`The record before this one (←)`,children:[(0,B.jsx)(Eu,{name:`prev`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`The record before this one`})]}),(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>_(u.next),disabled:!u.next,title:`The record after this one (→)`,children:[(0,B.jsx)(Eu,{name:`next`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`The record after this one`})]}),i&&(0,B.jsx)(od,{data:i}),(0,B.jsx)(`span`,{className:`toolbar-sep`,"aria-hidden":`true`}),(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:n,title:`Close (Escape)`,"data-modal-initial":`true`,children:[(0,B.jsx)(Eu,{name:`close`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}),(0,B.jsxs)(`div`,{className:`drawer-panes`,children:[(0,B.jsx)(`button`,{type:`button`,"aria-pressed":c===`event`,className:`btn ${c===`event`?`is-on`:``}`,onClick:()=>l(`event`),title:`What Salidium derived and stored`,children:`Salidium event`}),(0,B.jsx)(`button`,{type:`button`,"aria-pressed":c===`raw`,className:`btn ${c===`raw`?`is-on`:``}`,onClick:()=>l(`raw`),title:`The original line from the agent's own file`,children:`Provider record`}),v&&(0,B.jsx)(`span`,{className:`drawer-id mono`,children:v.meta})]}),(0,B.jsxs)(`div`,{className:`drawer-body scroll-fade`,ref:p,children:[o&&(0,B.jsxs)(`div`,{className:`bad`,role:`alert`,children:[(0,B.jsx)(`p`,{className:`bad-title`,children:`Could not load this record`}),(0,B.jsx)(`p`,{className:`mono`,children:o}),(0,B.jsx)(`button`,{type:`button`,className:`btn btn-accent`,onClick:m,children:`Try again`})]}),!i&&!o&&(0,B.jsx)(`div`,{className:`muted`,role:`status`,children:(0,B.jsx)(td,{label:`Loading the record`})}),i&&v&&c===`event`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(id,{facts:v.facts}),(0,B.jsx)(`h3`,{className:`drawer-sub`,children:`How we know`}),(0,B.jsx)(id,{facts:v.origin}),(0,B.jsxs)(`details`,{className:`drawer-full`,children:[(0,B.jsx)(`summary`,{children:`Everything Salidium stored, as it is stored`}),(0,B.jsx)(`pre`,{className:`mono`,children:JSON.stringify(i.event,null,2)})]})]}),i&&c===`raw`&&(0,B.jsxs)(B.Fragment,{children:[i.path!==void 0&&(0,B.jsx)(id,{facts:[{label:`Line`,value:`${i.path}:${(i.line??0)+1}`,mono:!0,copy:!0}]}),i.raw===null||i.raw===void 0?(0,B.jsx)(`p`,{className:`muted`,children:i.reason??`No raw record.`}):(0,B.jsx)(`pre`,{className:`mono drawer-raw`,children:typeof i.raw==`string`?i.raw:JSON.stringify(i.raw,null,2)})]})]})]})}function id({facts:e}){if(e.length===0)return null;let t=new Map,n=e.map(e=>{let n=`${e.label}\u0000${e.value}`,r=(t.get(n)??0)+1;return t.set(n,r),{fact:e,key:r===1?n:`${n}\u0000${r}`}});return(0,B.jsx)(`dl`,{className:`facts`,children:n.map(e=>(0,B.jsx)(ad,{fact:e.fact},e.key))})}function ad({fact:e}){let[t,n]=(0,z.useState)(`idle`),r=(0,z.useRef)(null);return(0,z.useEffect)(()=>{if(t===`idle`)return;let e=setTimeout(()=>n(`idle`),2400);return()=>clearTimeout(e)},[t]),(0,B.jsxs)(`div`,{className:`fact ${e.block?`is-block`:``}`,children:[(0,B.jsx)(`dt`,{className:`fact-label`,children:e.label}),(0,B.jsxs)(`dd`,{className:`fact-value`,children:[(0,B.jsx)(`span`,{className:e.mono?`mono`:void 0,ref:r,children:e.value}),e.note&&(0,B.jsx)(`span`,{className:`fact-note`,children:e.note}),e.copy&&(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon fact-copy`,onClick:()=>{Fu(e.value).then(e=>{if(e===`copied`)return n(`copied`);Iu(r.current),n(`selected`)})},title:t===`copied`?`Copied`:t===`selected`?`This window cannot reach the clipboard, so it is selected instead`:`Copy the ${e.label.toLowerCase()}`,children:[(0,B.jsx)(Eu,{name:t===`copied`?`check`:`copy`}),(0,B.jsxs)(`span`,{className:`sr-only`,children:[`Copy the `,e.label.toLowerCase()]})]})]})]})}function od({data:e}){return(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>{let t=JSON.stringify({event:e.event,provider:{path:e.path,line:e.line,record:e.raw,reason:e.reason}},null,2),n=URL.createObjectURL(new Blob([t],{type:`application/json`})),r=document.createElement(`a`);r.href=n,r.download=`salidium-${e.event.seq}-${e.event.kind}.json`,r.click(),URL.revokeObjectURL(n)},title:`Save both records as a JSON file`,children:[(0,B.jsx)(Eu,{name:`save`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Save both records as a JSON file`})]})}function sd(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`})}function cd(e,t=Date.now()){if(!e)return``;let n=Date.parse(e);if(Number.isNaN(n))return``;let r=Math.max(0,Math.round((t-n)/1e3));if(r<5)return`just now`;if(r<60)return`${r}s ago`;let i=Math.round(r/60);if(i<60)return`${i}m ago`;let a=Math.round(i/60);return a<48?`${a}h ago`:`${Math.round(a/24)}d ago`}function ld(e){if(e===void 0)return``;if(e<1e3)return`${e}ms`;if(e<6e4)return`${(e/1e3).toFixed(+(e<1e4))}s`;let t=Math.floor(e/6e4);if(t<60)return`${t}m ${Math.round(e%6e4/1e3)}s`;let n=Math.floor(t/60);return n<24?`${n}h ${t%60}m`:`${Math.floor(n/24)}d ${n%24}h`}function ud(e,t){let n=hd(e),r=t?hd(t).replace(/\/$/,``):void 0;return r&&n.startsWith(`${r}/`)&&(n=n.slice(r.length+1)),n}function dd(e){return e.replace(/[A-Za-z]:[\\/]Users[\\/][^\\/\s'"]+/g,`~`).replace(/\/(?:Users|home)\/[^/\s'"]+/g,`~`)}function fd(e){let t=e.map(hd),n=t[0];if(!n||e.length<2)return``;let r=n.split(`/`),i=r.length-1;for(let e of t){let t=e.split(`/`),n=0;for(;n<i&&n<t.length-1&&t[n]===r[n];)n++;if(i=n,i===0)return``}return`${r.slice(0,i).join(`/`)}/`}function pd(e){let t=hd(e),n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t}function md(e){let t=hd(e),n=t.lastIndexOf(`/`);return n>0?t.slice(0,n):``}function hd(e){return e.replaceAll(`\\`,`/`)}function gd(e){switch(e){case`working`:return{glyph:`●`,label:`Working`,cls:`st-working`};case`waiting`:return{glyph:`◐`,label:`Waiting for you`,cls:`st-waiting`};case`idle`:return{glyph:`○`,label:`Idle`,cls:`st-idle`};case`ended`:return{glyph:`◌`,label:`Ended`,cls:`st-ended`};default:return{glyph:`·`,label:`Unknown`,cls:`st-unknown`}}}var _d=[`working`,`waiting`,`idle`,`ended`];function vd(){let[e,t]=(0,z.useState)(!1),n=Au(e,()=>t(!1));return(0,B.jsxs)(`div`,{className:`pop`,ref:n,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon ${e?`is-on`:``}`,onClick:()=>t(e=>!e),"aria-expanded":e,title:`What the marks on a row mean`,children:[(0,B.jsx)(Eu,{name:`help`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`What the marks on a row mean`})]}),(0,B.jsxs)(`div`,{className:`pop-panel is-narrow marks-key arrives ${e?`is-open`:``}`,children:[(0,B.jsx)(`div`,{className:`pop-head`,children:(0,B.jsx)(`span`,{children:`On a row`})}),(0,B.jsxs)(`dl`,{children:[_d.map(e=>{let t=gd(e);return(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{className:`status-dot ${t.cls}`,"aria-hidden":`true`,children:t.glyph}),(0,B.jsx)(`dd`,{children:t.label.toLowerCase()})]},e)}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{"aria-hidden":`true`,children:(0,B.jsxs)(`span`,{className:`attn-badge num is-live`,children:[(0,B.jsx)(Eu,{name:`flag`}),`1`]})}),(0,B.jsx)(`dd`,{children:`to review`})]})]})]})]})}var yd=18e5;function Q(e,t){if(e.status===`waiting`)return!0;if(e.counts.reviewOpen===0||e.status===`ended`)return!1;if(e.status===`working`)return!0;let n=Date.parse(e.lastEventAt??``);return Number.isFinite(n)&&t-n<yd}function bd(e){return!e.title&&e.counts.turns===0&&e.counts.toolCalls===0&&e.counts.filesChanged===0}function xd(e){return`${e.title??``} ${e.repoRoot??``} ${e.cwd??``} ${e.providerSessionId}`.toLowerCase()}function Sd(e){let t=e.toLowerCase().split(/\s+/).filter(Boolean);return t.length===0?()=>!0:e=>{let n=xd(e);return t.every(e=>n.includes(e))}}var Cd=150;function wd({now:e}){let t=Y(e=>e.sessionOrder),n=Y(e=>e.sessions),r=Y(e=>e.selectedId),i=Y(e=>e.sessionsLoaded),a=Y(e=>e.select),o=Y(e=>e.sessionQuery),s=Y(e=>e.setSessionQuery),c=Y(e=>e.api),l=Y(e=>e.sessionSearch),u=Y(e=>e.setSessionSearch),d=ed(),f=o.trim();if((0,z.useEffect)(()=>{if(!c)return;let e=new AbortController,t=setTimeout(()=>{c.searchSessions(f,{limit:f?void 0:0,signal:e.signal}).then(u,()=>{})},Cd);return()=>{clearTimeout(t),e.abort()}},[c,f,u]),!i)return(0,B.jsx)(`div`,{className:`side-empty`,children:(0,B.jsx)(td,{label:`Loading sessions`})});if(t.length===0)return(0,B.jsxs)(`div`,{className:`side-empty`,children:[(0,B.jsx)(`p`,{children:`No agent sessions yet.`}),(0,B.jsx)(`p`,{className:`muted`,children:`Start a Claude Code or Codex session and it will appear here within a second. Sessions from the last few days are read in when the daemon starts.`})]});let p=l?.query===f?l:void 0,m=p?.ids?p.ids.map(e=>n[e]).filter(e=>!!e):t.map(e=>n[e]).filter(e=>!!e).filter(Sd(f)),h=m.filter(bd),g=m.filter(e=>!bd(e)),_=[[`Needs you`,g.filter(t=>Q(t,e))],[`Working`,g.filter(t=>!Q(t,e)&&t.status===`working`)],[`Recent`,g.filter(t=>!Q(t,e)&&t.status!==`working`)]],v=f.length>0,y=l?.total,b=p?.matched,x=b!==void 0&&b>0&&y!==void 0?y-b:0,ee=b!==void 0&&b>m.length;return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Td,{query:o,setQuery:s}),(0,B.jsxs)(`div`,{className:`side-scroll scroll-fade`,ref:d,children:[_.map(([t,n])=>n.length===0?null:(0,B.jsx)(Ed,{title:t,count:n.length,filtering:v,children:(0,B.jsx)(`ul`,{className:`session-list`,"aria-label":t,children:n.map(t=>(0,B.jsx)(Dd,{s:t,selected:t.id===r,now:e,onSelect:()=>a(t.id)},t.id))})},t)),h.length>0&&(0,B.jsx)(Ed,{title:`Nothing recorded`,count:h.length,filtering:v,title2:`Sessions that started and ended without running a turn`,children:(0,B.jsx)(`ul`,{className:`session-list is-quiet`,"aria-label":`Sessions with nothing recorded`,children:[...h].sort((e,t)=>(t.lastEventAt??t.startedAt??``).localeCompare(e.lastEventAt??e.startedAt??``)).map(t=>(0,B.jsx)(Dd,{s:t,selected:t.id===r,now:e,onSelect:()=>a(t.id)},t.id))})}),!v&&y!==void 0&&y>m.length&&(0,B.jsxs)(`p`,{className:`side-hidden`,children:[m.length,` of `,y,` sessions`]}),v&&b===0&&y!==void 0&&(0,B.jsxs)(`p`,{className:`side-none`,children:[`Nothing matches `,(0,B.jsx)(`strong`,{children:o}),`.`,(0,B.jsxs)(`span`,{className:`muted`,children:[` `,y,` searched by name, repo and id.`]})]}),v&&ee&&(0,B.jsxs)(`p`,{className:`side-hidden`,children:[`Showing the newest `,m.length,` of `,b,` matches`]}),v&&x>0&&(0,B.jsxs)(`p`,{className:`side-hidden`,children:[x,` `,x===1?`session`:`sessions`,` hidden by the filter`]})]})]})}function Td({query:e,setQuery:t}){return(0,B.jsxs)(`div`,{className:`side-find`,children:[(0,B.jsx)(`span`,{className:`side-find-mark`,"aria-hidden":`true`,children:(0,B.jsx)(Eu,{name:`search`})}),(0,B.jsx)(`input`,{className:`field side-find-field`,type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:`Find a session`,"aria-label":`Find a session by name, repo or id`,spellCheck:!1,autoComplete:`off`}),e!==``&&(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon side-find-clear`,onClick:()=>t(``),title:`Clear the filter`,children:[(0,B.jsx)(Eu,{name:`close`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Clear the filter`})]})]})}function Ed({title:e,count:t,filtering:n,title2:r,children:i}){let a=Y(t=>t.folded.includes(e)),o=Y(e=>e.toggleFold),s=n||!a;return(0,B.jsxs)(`section`,{className:`side-section`,children:[(0,B.jsx)(`h2`,{className:`side-section-h`,children:(0,B.jsxs)(`button`,{type:`button`,className:`side-section-head is-toggle`,onClick:()=>o(e),"aria-expanded":s,title:r??(s?`Fold ${e} away`:`Show ${e}`),children:[(0,B.jsx)(`span`,{className:`chev ${s?`is-open`:``}`,"aria-hidden":`true`,children:`›`}),(0,B.jsx)(`span`,{children:e}),(0,B.jsx)(`span`,{className:`num`,children:t})]})}),s&&i]})}function Dd({s:e,selected:t,now:n,onSelect:r}){let i=gd(e.status),a=Q(e,n),o=pd(e.repoRoot||e.cwd),s=e.title||(bd(e)?e.providerSessionId.slice(0,8):o)||`unnamed`,c=s!==o,l=[s,c&&`in ${o}`,i.label,e.counts.reviewOpen>0&&`${e.counts.reviewOpen} to review`].filter(Boolean).join(`, `);return(0,B.jsx)(`li`,{children:(0,B.jsxs)(`button`,{type:`button`,className:`session-row ${t?`is-selected`:``} ${a?`has-attn`:``}`,onClick:r,"aria-current":t?`true`:void 0,"aria-label":l,title:c?`${s} — ${o}`:s,children:[(0,B.jsx)(`span`,{className:`status-dot ${i.cls}`,"aria-hidden":`true`,children:i.glyph}),(0,B.jsx)(`span`,{className:`session-title`,children:s}),(0,B.jsx)(`span`,{className:`session-when`,title:`Last activity`,children:cd(e.lastEventAt??e.startedAt,n)}),e.counts.reviewOpen>0&&(0,B.jsxs)(`span`,{className:`attn-badge num ${a?`is-live`:``}`,title:a?`${e.counts.reviewOpen} to review — needs you now`:`${e.counts.reviewOpen} flagged during this session; it is no longer running`,children:[(0,B.jsx)(Eu,{name:`flag`}),e.counts.reviewOpen]})]})})}function Od(e,t){return t<e?`duplicate`:t>e?`resnapshot`:`accept`}function kd(e){return e instanceof ls&&e.status===404?{kind:`not-found`,message:`Session not found`}:e instanceof ls&&e.status===0?{kind:`unreachable`,message:e.message}:{kind:`failed`,message:e instanceof Error?e.message:String(e)}}function Ad(e,t=0){let n=Y(e=>e.api);(0,z.useEffect)(()=>{if(!n||!e)return;let t=!1,r=0,i,a=[],o=[],s,c=()=>{s=void 0;let t=a,n=o;a=[],o=[],(t.length||n.length)&&Y.getState().applyEvents(e,t,n)},l=()=>{a=[],o=[],s!==void 0&&cancelAnimationFrame(s),s=void 0},u=async()=>{let d=++r;i?.(),i=void 0,l();try{let l=await n.snapshot(e);if(t||d!==r)return;let f=Y.getState();f.initLive(e,l.state,l.changes),f.setDaemonError(void 0),n.changes(e).then(n=>{!t&&d===r&&n.length>l.changes.length&&Y.getState().applyEvents(e,[],n)},()=>void 0);let p=l.seq,m=l.seq+1;i=n.stream(()=>`/api/sessions/${encodeURIComponent(e)}/stream?after=${p}`,e=>{if(!(t||d!==r)){if(e.type===`event`){let t=e.event,n=Od(m,t.seq);if(n===`duplicate`)return;if(n===`resnapshot`){u();return}m+=1,p=t.seq,a.push(t)}else if(e.type===`changes`)o.push(...e.changes);else return;s===void 0&&(s=requestAnimationFrame(c))}},n=>{!t&&d===r&&Y.getState().setLiveConnection(e,n)},()=>{!t&&d===r&&u()})}catch(n){if(t||d!==r||n instanceof ls&&n.status===401)return;Y.getState().setLiveError(e,kd(n))}};return u(),()=>{t=!0,r+=1,i?.(),l()}},[n,e,t])}function jd(){let e=Y(e=>e.api);(0,z.useEffect)(()=>{if(!e)return;let t=!1;e.sessions().then(e=>{if(t)return;let n=Y.getState();n.upsertSessions(e),n.setDaemonError(void 0)},e=>{t||e instanceof ls&&e.status===401||Y.getState().setDaemonError({message:e instanceof Error?e.message:String(e),unreachable:e instanceof ls&&e.status===0})});let n=e.stream(`/api/stream`,e=>{e.type===`session`&&Y.getState().upsertSessions([e.summary]),e.type===`sessionRemoved`&&Y.getState().removeSession(e.id)},e=>Y.getState().setListConnection(e));return()=>{t=!0,n()}},[e])}function Md(e){return e===`claude-code`?`Claude Code`:e===`codex`?`Codex`:e}function $(e){let[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(null);return(0,z.useLayoutEffect)(()=>{if(!t||!r)return;let e=()=>t.style.setProperty(`--foot-space`,`${r.getBoundingClientRect().height}px`);e();let n=new ResizeObserver(e);return n.observe(r),()=>n.disconnect()},[t,r,e]),[n,i]}function Nd(e){let[t,n]=(0,z.useState)(e);return e&&!t&&n(!0),t||e}var Pd=m();function Fd(e,t,n){let r=Array(e);return new Proxy(r,{get(r,i,a){if(typeof i==`string`){let a=i.charCodeAt(0);if(a>=48&&a<=57){let a=+i;if(Number.isInteger(a)&&a>=0&&a<e){let e=r[a];if(!e){let i=t[a*2];e=r[a]={index:a,key:n(a),start:i,size:t[a*2+1],end:i+t[a*2+1],lane:0}}return e}}if(i===`length`)return e}return Reflect.get(r,i,a)}})}function Id(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o=e();return o.length!==r.length||o.some((e,t)=>r[t]!==e)?(r=o,i=t(...o),n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i):i}return o.updateDeps=e=>{r=e},o}function Ld(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var Rd=(e,t)=>Math.abs(e-t)<1.01,zd=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},Bd,Vd=()=>{if(Bd!==void 0)return Bd;if(typeof navigator>`u`)return Bd=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return Bd=!0;let e=navigator.maxTouchPoints;return Bd=navigator.platform===`MacIntel`&&e!==void 0&&e>0},Hd=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},Ud=e=>e,Wd=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=Array(n);for(let e=0;e<n;e++)r[e]=t+e;return r},Gd=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(Hd(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(Hd(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},Kd={passive:!0},qd=typeof window>`u`||`onscrollend`in window,Jd=(e,t,n)=>{let r=e.scrollElement;if(!r)return;let i=e.targetWindow;if(!i)return;let a=e.options.useScrollendEvent&&qd,o=0,s=a?null:zd(i,()=>t(o,!1),e.options.isScrollingResetDelay),c=e=>()=>{o=n(r),s?.(),t(o,e)},l=c(!0),u=c(!1);return r.addEventListener(`scroll`,l,Kd),a&&r.addEventListener(`scrollend`,u,Kd),()=>{r.removeEventListener(`scroll`,l),a&&r.removeEventListener(`scrollend`,u)}},Yd=(e,t)=>Jd(e,t,t=>{let{horizontal:n,isRtl:r}=e.options;return n?t.scrollLeft*(r&&-1||1):t.scrollTop}),Xd=(e,t,n)=>{if(n.options.useCachedMeasurements){let t=n.indexFromElement(e),r=n.options.getItemKey(t);return n.itemSizeCache.get(r)??n.options.estimateSize(t)}if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}if(!t){let t=n.indexFromElement(e),r=n.options.getItemKey(t),i=n.itemSizeCache.get(r);if(i!==void 0)return i}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},Zd=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:e+t,behavior:n})},Qd=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);for(let[e,n]of this.elementsCache)if(n===t){this.elementsCache.delete(e);break}return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{let t={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Ud,rangeExtractor:Wd,onChange:()=>{},measureElement:Xd,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,anchorTo:`start`,followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,useCachedMeasurements:!1};for(let n in e){let r=e[n];r!==void 0&&(t[n]=r)}let n=this.options,r=null,i=null,a=!1;if(n!==void 0&&n.enabled&&t.enabled&&t.anchorTo===`end`&&this.scrollElement!==null){let e=n.count,o=t.count,s=this.getMeasurements(),c=e>0?s[0]?.key??n.getItemKey(0):null,l=e>0?s[e-1]?.key??n.getItemKey(e-1):null;if(o!==e||e>0&&o>0&&(t.getItemKey(0)!==c||t.getItemKey(o-1)!==l)){a=!0;let c=e>0?this.getVirtualItemForOffset(this.getScrollOffset())??s[0]:null;c&&(r=[c.key,this.getScrollOffset()-c.start]);let u=t.followOnAppend===!0?`auto`:t.followOnAppend||null;u&&o>e&&this.isAtEnd(n.scrollEndThreshold)&&(e===0||t.getItemKey(o-1)!==l)&&(i=u)}}this.options=t,a&&(this.pendingMin=0,this.itemSizeCacheVersion++);let o=!1,s=0;if(r&&this.scrollOffset!==null){let[e,t]=r,n=this.getMeasurements(),{count:i,getItemKey:a}=this.options,c=0;for(;c<i&&a(c)!==e;)c++;if(c<i){let e=n[c];if(e){let n=Math.max(0,e.start+t);n!==this.scrollOffset&&(s=n-this.scrollOffset,this.scrollOffset=n,o=!0)}}}(o||i)&&(this.pendingScrollAnchor=[o?r[0]:null,o?r[1]:0,i,s])},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=Id(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}if(this.scrollElement=e,this.targetWindow=this.scrollElement&&`ownerDocument`in this.scrollElement?this.scrollElement.ownerDocument.defaultView:this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{if(t&&this._intendedScrollOffset===null&&e===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(e-this._intendedScrollOffset)<1.5&&(e=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;let n=this.getScrollOffset();this.scrollDirection=t?n===e?this.scrollDirection:n<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),`addEventListener`in this.scrollElement){let e=this.scrollElement,t=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},n=()=>{this._iosTouching=!1,!(!Vd()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};e.addEventListener(`touchstart`,t,Kd),e.addEventListener(`touchend`,n,Kd),this.unsubs.push(()=>{e.removeEventListener(`touchstart`,t),e.removeEventListener(`touchend`,n),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}let t=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,t&&this.scrollElement&&this.options.enabled){let[e,n,r,i]=t;e!==null&&!r&&(Vd()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?i!==0&&(this._iosDeferredAdjustment+=i):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),r&&this.scrollToEnd({behavior:r})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;let e=this.getScrollOffset(),t=this.getMaxScrollOffset();if(e<0||e>t)return;if(this._iosDeferredAdjustment<0&&e>=t-1){this._iosDeferredAdjustment=0;return}let n=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(e,{adjustments:this.scrollAdjustments+=n,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=Id(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(e,t,n,r,i,a,o,s)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMin=null,{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s}),{key:!1}),this.getMeasurements=Id(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o,gap:s},c)=>{let l=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let u=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1),a===1){let i=e*2,a=this._flatMeasurements;if(!a||a.length<i){let e=new Float64Array(i);a&&u>0&&e.set(a.subarray(0,u*2)),a=e,this._flatMeasurements=a}let o;if(u===0)o=t+n;else{let e=u-1;o=a[e*2]+a[e*2+1]+s}for(let t=u;t<e;t++){let e=r(t),n=l.get(e),i=typeof n==`number`?n:this.options.estimateSize(t);a[t*2]=o,a[t*2+1]=i,o+=i+s}let c=Fd(e,a,r);return this.measurementsCache=c,c}let d=this.measurementsCache.slice(0,u),f=Array(a).fill(void 0),p=new Float64Array(a),m=0;for(let e=0;e<u;e++){let t=d[e];t&&(f[t.lane]===void 0&&m++,f[t.lane]=e,p[t.lane]=t.end)}for(let i=u;i<e;i++){let e=r(i),c=this.laneAssignments.get(i),u,h,g=o===`estimate`||l.has(e);if(c!==void 0&&this.options.lanes>1){u=c;let e=f[u],r=e===void 0?void 0:d[e];h=r?r.end+s:t+n}else if(m===a){let e=0,t=p[0],n=f[0];for(let r=1;r<a;r++){let i=p[r];(i<t||i===t&&f[r]<n)&&(e=r,t=i,n=f[r])}u=e,h=t+s,g&&this.laneAssignments.set(i,u)}else u=i%this.options.lanes,h=t+n,g&&this.laneAssignments.set(i,u);let _=l.get(e),v=typeof _==`number`?_:this.options.estimateSize(i),y=h+v;d[i]={index:i,start:h,size:v,end:y,key:e,lane:u},f[u]===void 0&&m++,f[u]=i,p[u]=y}return this.measurementsCache=d,d},{key:!1,debug:()=>this.options.debug}),this.calculateRange=Id(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>e.length===0||t===0?(this.range=null,null):(this.range=tf(e,t,n,r,r===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=Id(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{if(e<0||e>=this.options.count)return;let n,r,i,a=this._flatMeasurements;if(this.options.lanes===1&&a!==null)i=this.options.getItemKey(e),r=a[e*2],n=a[e*2+1];else{let t=this.measurementsCache[e];if(!t)return;i=t.key,r=t.start,n=t.size}let o=this.itemSizeCache.get(i)??n,s=t-o;if(s!==0){let a=this.options.anchorTo===`end`&&this.scrollState?.behavior!==`smooth`&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,c=a?this.getTotalSize():0,l=this.getScrollOffset()+this.scrollAdjustments,u=this.itemSizeCache.has(i)?r+o<=l&&this.scrollDirection!==`backward`:r<l,d=this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?u:this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[e]??{index:e,key:i,start:r,size:n,end:r+n,lane:0},s,this));(this.pendingMin===null||e<this.pendingMin)&&(this.pendingMin=e),this.itemSizeCache.set(i,t),this.itemSizeCacheVersion++;let f=!1;a?f=this.applyScrollAdjustment(this.getTotalSize()-c):d&&(f=this.applyScrollAdjustment(s)),this.notify(f)}},this.getVirtualItems=Id(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length===0)return;let n=this._flatMeasurements,r=this.options.lanes===1&&n!=null;return Ld(t[$d(0,t.length-1,r?e=>n[e*2]:e=>Ld(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(e=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=e,this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`){if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t]}if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0;let r=this.getOffsetForAlignment(e,t),i=this.now();this.scrollState={index:null,align:t,behavior:n,startedAt:i,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{this._iosDeferredAdjustment=0,e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e,r=this.now();this.scrollState={index:null,align:`start`,behavior:t,startedAt:r,lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:e=`auto`}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:`end`,behavior:e});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:e})},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1){let n=e.length-1,r=this._flatMeasurements;t=r==null?e[n]?.end??0:r[n*2]+r[n*2+1]}else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{let e=[];if(this.itemSizeCache.size===0)return e;let t=this.getMeasurements();for(let n of t)n&&this.itemSizeCache.has(n.key)&&e.push({index:n.index,key:n.key,start:n.start,size:n.size,end:n.end,lane:n.lane});return e},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this._intendedScrollOffset=e+(t??0),this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(e)}applyScrollAdjustment(e,t){return e===0?!1:Vd()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?(this._iosDeferredAdjustment+=e,!1):(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=e,behavior:t}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollOffset<0&&(this.scrollOffset=0),this.scrollAdjustments=0),!0)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&Rd(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.getScrollOffset()!==t&&this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,n){let e=this.getSize()||600,n=Math.abs(t-this.getScrollOffset()),r=this.scrollState.behavior===`smooth`&&n>e;this.scrollState.lastTargetOffset=t,r||(this.scrollState.behavior=`auto`),this._scrollToOffset(t,{adjustments:void 0,behavior:r?`smooth`:`auto`})}this.scheduleScrollReconcile()}},$d=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function ef(e,t,n){let r=0;for(;r<=t;){let i=(r+t)/2|0,a=e[i*2];if(a<n)r=i+1;else if(a>n)t=i-1;else return i}return r>0?r-1:0}function tf(e,t,n,r,i){let a=e.length-1;if(e.length<=r)return{startIndex:0,endIndex:a};if(r===1&&i!==null){let e=ef(i,a,n),r=e,o=n+t;for(;r<a&&i[r*2]+i[r*2+1]<o;)r++;return{startIndex:e,endIndex:r}}let o=$d(0,a,t=>e[t].start,n),s=o;if(r===1)for(;s<a&&e[s].end<n+t;)s++;else if(r>1){let i=Array(r).fill(0);for(;s<a&&i.some(e=>e<n+t);){let t=e[s];i[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(a,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var nf=typeof document<`u`?z.useLayoutEffect:z.useEffect;function rf({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:n=`transform`,...r}){let i=z.useReducer(e=>e+1,0)[1],a=z.useRef({enabled:t,mode:n,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});a.current.enabled=t,a.current.mode=n;let o=e=>{let t=a.current;if(!t.enabled||!t.container)return;let n=e.getTotalSize();if(n!==t.lastSize){t.lastSize=n;let r=e.options.horizontal?`width`:`height`;t.container.style[r]=`${n}px`}},s=e=>{let t=a.current;if(!t.enabled||!t.container)return;o(e);let n=!!e.options.horizontal,r=t.mode===`transform`,i=n?`left`:`top`,s=e.options.scrollMargin,c=e.getVirtualItems();for(let a of c){let o=a.start-s,c=e.elementsCache.get(a.key);c&&t.lastPositions.get(c)!==o&&(t.lastPositions.set(c,o),r?c.style.transform=n?`translate3d(${o}px, 0, 0)`:`translate3d(0, ${o}px, 0)`:c.style[i]=`${o}px`)}},c={...r,onChange:(t,n)=>{var o;let c=a.current,l=!0;if(c.enabled){s(t);let e=t.range,n=c.prevRange;l=!n||n.isScrolling!==t.isScrolling||n.startIndex!==e?.startIndex||n.endIndex!==e?.endIndex,l&&(c.prevRange=e?{startIndex:e.startIndex,endIndex:e.endIndex,isScrolling:t.isScrolling}:null)}l&&(e&&n?(0,Pd.flushSync)(i):i()),(o=r.onChange)==null||o.call(r,t,n)}},[l]=z.useState(()=>{let e=new Qd(c);return Object.assign(e,{containerRef:t=>{let n=a.current;if(n.container=t,n.lastSize=null,t&&n.enabled){let r=e.getTotalSize();n.lastSize=r;let i=e.options.horizontal?`width`:`height`;t.style[i]=`${r}px`}}})});return l.setOptions(c),nf(()=>l._didMount(),[]),nf(()=>(o(l),l._willUpdate())),nf(()=>{s(l)}),l}function af(e){return rf({observeElementRect:Gd,observeElementOffset:Yd,scrollToFn:Zd,...e})}var of={status:`status`,what:`what changed`,why:`why`,how:`how`,verified:`checks`,left:`left to do`,review:`needs review`};function sf(){let e=Y(e=>e.historyKinds),t=Y(e=>e.setHistoryKinds),[n,r]=(0,z.useState)(!1),i=Au(n,()=>r(!1)),a=new Set(e),o=a.size===uu.length,s=n=>t(a.has(n)?e.filter(e=>e!==n):[...e,n]);return(0,B.jsxs)(`div`,{className:`pop`,ref:i,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn ${n?`is-on`:``}`,onClick:()=>r(e=>!e),"aria-expanded":n,title:`Choose which kinds of change to show`,children:[(0,B.jsx)(Eu,{name:`filter`}),(0,B.jsx)(`span`,{children:`Filter`}),(0,B.jsx)(`span`,{className:`btn-pill`,children:o?`All`:`${a.size}/${uu.length}`})]}),(0,B.jsxs)(`div`,{className:`pop-panel is-left is-narrow arrives ${n?`is-open`:``}`,children:[(0,B.jsxs)(`div`,{className:`pop-head`,children:[(0,B.jsx)(`span`,{children:`Show`}),!o&&(0,B.jsxs)(`button`,{type:`button`,className:`pop-help`,onClick:()=>t([...uu]),title:`Show every kind again`,children:[(0,B.jsx)(Eu,{name:`reset`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Show every kind again`})]})]}),(0,B.jsxs)(`fieldset`,{className:`opts`,children:[(0,B.jsx)(`legend`,{className:`sr-only`,children:`Kinds of change to show`}),uu.map(e=>(0,B.jsxs)(`label`,{className:`opt is-tight ${a.has(e)?`is-on`:``}`,children:[(0,B.jsx)(`input`,{className:`sr-only`,type:`checkbox`,checked:a.has(e),onChange:()=>s(e)}),(0,B.jsx)(`span`,{className:`opt-swatch facet-${e}`,"aria-hidden":`true`}),(0,B.jsx)(`span`,{className:`opt-name`,children:of[e]})]},e))]})]})]})}function cf(e){return`ep-${e}`}function lf({changes:e,scrubTs:t,focusSeq:n,onScrub:r,onLive:i,onClose:a,onRef:o}){let s=Y(e=>e.historyKinds),c=Y(e=>e.setHistoryMode),l=(0,z.useRef)(null),u=ed(),d=(0,z.useCallback)(e=>(l.current=e,u(e)),[u]),[f,p]=(0,z.useState)(n!==void 0);(0,z.useEffect)(()=>p(n!==void 0),[n]);let m=f&&n!==void 0,h=(0,z.useMemo)(()=>new Set(s),[s]),g=(0,z.useMemo)(()=>e.filter(e=>h.has(e.facet)&&(!m||e.seq>n)),[e,h,m,n]),_=af({count:g.length,getScrollElement:()=>l.current,estimateSize:()=>52,overscan:12,useFlushSync:!1,anchorTo:`end`,followOnAppend:!0}),[v,y]=(0,z.useState)(!0),b=_.getTotalSize();return(0,z.useEffect)(()=>{v&&t===void 0&&g.length>0&&b>0&&_.scrollToIndex(g.length-1,{align:`end`})},[g.length,v,t,_,b]),(0,B.jsxs)(`aside`,{className:`inspector history`,"aria-label":`History`,children:[(0,B.jsxs)(`div`,{className:`inspector-head`,children:[(0,B.jsx)(Du,{icon:`panel`,title:`Hide history (h)`,onClick:a}),(0,B.jsx)(sf,{}),(0,B.jsx)(Du,{icon:`table`,title:`Open the history as a table across the page`,onClick:()=>c(`table`)}),(0,B.jsxs)(`span`,{className:`inspector-title`,children:[m?`Since you looked`:`History`,` `,(0,B.jsx)(`span`,{className:`num`,children:g.length})]})]}),(t!==void 0||m)&&(0,B.jsxs)(`div`,{className:`history-scope`,children:[t!==void 0&&(0,B.jsx)(Du,{icon:`latest`,label:`Back to live`,title:`Stop showing a past moment`,onClick:i}),m&&(0,B.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>p(!1),children:`Show all history`})]}),(0,B.jsxs)(`div`,{className:`history-list scroll-fade`,ref:d,onScroll:()=>{let e=l.current;e&&y(e.scrollTop+e.clientHeight>=e.scrollHeight-40)},children:[g.length===0&&(0,B.jsx)(`div`,{className:`side-empty muted`,children:`No history yet.`}),(0,B.jsx)(`div`,{style:{height:b,position:`relative`},children:_.getVirtualItems().map(e=>{let n=g[e.index];if(!n)return null;let i=t!==void 0&&n.ts===t,a=t!==void 0&&n.ts>t;return(0,B.jsxs)(`div`,{"data-index":e.index,ref:_.measureElement,className:`hist-item facet-${n.facet} ${i?`is-scrub`:``} ${a?`is-future`:``}`,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start}px)`},children:[(0,B.jsxs)(`button`,{type:`button`,className:`hist-main`,onClick:()=>r(n.ts,n.seq),title:`Show the session as of this moment`,children:[(0,B.jsxs)(`span`,{className:`hist-meta`,children:[(0,B.jsx)(`span`,{className:`hist-dot`,"aria-hidden":`true`}),(0,B.jsx)(`span`,{className:`hist-facet`,children:of[n.facet]}),n.epistemic!==`observed`&&(0,B.jsx)(`span`,{className:`hist-prov ${cf(n.epistemic)}`,title:n.epistemic===`explained`?`Generated by a model, not observed`:n.epistemic===`reported`?`The agent said so; Salidium did not see it`:`Worked out by Salidium rather than seen directly`,children:n.epistemic}),(0,B.jsx)(`span`,{className:`hist-time mono`,children:sd(n.ts)})]}),(0,B.jsx)(`span`,{className:`hist-text`,children:n.summary})]}),n.refs[0]&&(0,B.jsx)(`button`,{type:`button`,className:`link hist-record`,onClick:()=>o(n.refs[0]??``),title:`Open the raw record this came from`,children:`record`})]},`${n.seq}:${n.ordinal}`)})})]})]})}function uf(e){return e+1}function df(e){return e+2}function ff({changes:e,scrubTs:t,onScrub:n,onLive:r,onRef:i}){let a=Y(e=>e.historyKinds),o=Y(e=>e.setHistoryMode),s=(0,z.useRef)(null),c=ed(),l=(0,z.useCallback)(e=>(s.current=e,c(e)),[c]),u=(0,z.useMemo)(()=>new Set(a),[a]),d=(0,z.useMemo)(()=>e.filter(e=>u.has(e.facet)),[e,u]),f=af({count:d.length,getScrollElement:()=>s.current,estimateSize:()=>40,overscan:16,useFlushSync:!1});return(0,B.jsxs)(`div`,{className:`htab`,children:[(0,B.jsxs)(`header`,{className:`htab-head`,children:[(0,B.jsxs)(`h1`,{className:`htab-title`,children:[`History `,(0,B.jsx)(`span`,{className:`num`,children:d.length})]}),(0,B.jsxs)(`div`,{className:`toolbar htab-tools`,children:[(0,B.jsx)(sf,{}),t!==void 0&&(0,B.jsx)(Du,{icon:`latest`,label:`Back to live`,title:`Stop showing a past moment`,onClick:r}),(0,B.jsx)(Du,{icon:`panel`,label:`Show beside`,title:`Move the history back into the side rail`,onClick:()=>o(`rail`)})]})]}),(0,B.jsxs)(`div`,{className:`htab-grid`,role:`table`,"aria-label":`History`,"aria-rowcount":uf(d.length),children:[(0,B.jsxs)(`div`,{className:`htab-row is-head`,role:`row`,"aria-rowindex":1,children:[(0,B.jsx)(`span`,{role:`columnheader`,children:`When`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Kind`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`Change`}),(0,B.jsx)(`span`,{role:`columnheader`,children:`How we know`}),(0,B.jsx)(`span`,{role:`columnheader`,children:(0,B.jsx)(`span`,{className:`sr-only`,children:`Record`})})]}),(0,B.jsx)(`div`,{className:`htab-scroll scroll-fade`,ref:l,children:(0,B.jsx)(`div`,{style:{height:f.getTotalSize(),position:`relative`},children:f.getVirtualItems().map(e=>{let r=d[e.index];if(!r)return null;let a=t!==void 0&&r.ts===t,o=t!==void 0&&r.ts>t;return(0,B.jsxs)(`div`,{"data-index":e.index,ref:f.measureElement,role:`row`,"aria-rowindex":df(e.index),className:`htab-row facet-${r.facet} ${a?`is-scrub`:``} ${o?`is-future`:``}`,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start}px)`},children:[(0,B.jsx)(`span`,{role:`cell`,children:(0,B.jsx)(`button`,{type:`button`,className:`htab-when mono`,onClick:()=>n(r.ts,r.seq),title:`Show the session as of this moment`,children:sd(r.ts)})}),(0,B.jsxs)(`span`,{role:`cell`,className:`htab-kind`,children:[(0,B.jsx)(`span`,{className:`hist-dot`,"aria-hidden":`true`}),of[r.facet]]}),(0,B.jsx)(`span`,{role:`cell`,className:`htab-text`,children:r.summary}),(0,B.jsx)(`span`,{role:`cell`,className:`htab-prov`,children:r.epistemic===`observed`?``:r.epistemic}),(0,B.jsx)(`span`,{role:`cell`,children:r.refs[0]&&(0,B.jsxs)(`button`,{type:`button`,className:`tag-ev`,onClick:()=>i(r.refs[0]??``),title:`Open the raw record this came from`,children:[(0,B.jsx)(Eu,{name:`record`}),`record`]})})]},`${r.seq}:${r.ordinal}`)})})})]}),d.length===0&&(0,B.jsx)(`p`,{className:`rp-empty`,children:`No history yet.`})]})}function pf({id:e,title:t,children:n,sections:r}){let i=Y(e=>e.panel)===e,a=Y(e=>e.closePanel),o=(0,z.useRef)(null),[s,c]=(0,z.useState)(),l=r?.some(e=>e.key===s)?s:r?.[0]?.key,u=r?.find(e=>e.key===l)??r?.[0];Qu({active:i,containerRef:o,onClose:a});let d=Nd(i);return(0,z.useEffect)(()=>{i&&l!==s&&c(l)},[i,l,s]),d?(0,B.jsxs)(`div`,{className:`panel-scrim arrives ${i?`is-open`:``}`,inert:!i,children:[(0,B.jsx)(`div`,{className:`panel-backdrop`,"aria-hidden":`true`,onClick:a}),(0,B.jsxs)(`div`,{className:`panel-card`,ref:o,role:`dialog`,"aria-modal":`true`,"aria-label":t,tabIndex:-1,children:[(0,B.jsxs)(`div`,{className:`panel-head`,children:[(0,B.jsx)(`h2`,{className:`panel-title`,children:t}),(0,B.jsx)(`button`,{type:`button`,className:`panel-close`,onClick:a,title:`Close (Esc)`,children:(0,B.jsx)(Eu,{name:`close`})})]}),r&&r.length>0?(0,B.jsxs)(`div`,{className:`panel-split`,children:[(0,B.jsx)(`nav`,{className:`panel-rail`,"aria-label":`${t} sections`,children:r.map(e=>(0,B.jsxs)(`button`,{type:`button`,className:`panel-rail-item ${e.key===l?`is-on`:``}`,"aria-current":e.key===l?`true`:void 0,onClick:()=>c(e.key),children:[(0,B.jsx)(`span`,{className:`panel-rail-label`,children:e.label}),e.count!==void 0&&(0,B.jsx)(`span`,{className:`panel-rail-count num`,children:e.count})]},e.key))}),(0,B.jsx)(`div`,{className:`panel-body`,children:u?.render()})]}):(0,B.jsx)(`div`,{className:`panel-body`,children:n})]})]}):null}var mf={pass:`✓`,fail:`✕`,partial:`◐`,unknown:`?`};function hf(e){return mf[e]??`?`}function gf(e,t){let n=(0,z.useRef)(null),[r,i]=(0,z.useState)(!1);return(0,z.useEffect)(()=>{let t=n.current;if(!t||e)return;let r=()=>i(t.scrollHeight-t.clientHeight>1);r();let a=new ResizeObserver(r);return a.observe(t),()=>a.disconnect()},[e,t]),[n,r]}function _f({steps:e,terminal:t=`accent`}){return e.length===0?null:(0,B.jsx)(`ol`,{className:`fd-chain end-${t}`,children:e.map((e,t)=>(0,B.jsx)(`li`,{className:`fd-node`,children:e},`${t}:${e}`))})}function vf({lanes:e,trunk:t}){return(0,B.jsxs)(`div`,{className:`fd-converge`,children:[(0,B.jsx)(`div`,{className:`fd-lanes`,style:{gridTemplateColumns:`repeat(${e.length}, minmax(0, 1fr))`},children:e.map(e=>(0,B.jsxs)(`div`,{className:`fd-lane`,children:[(0,B.jsx)(`p`,{className:`fd-lane-title`,children:e.title}),(0,B.jsx)(`ol`,{className:`fd-lane-steps`,children:e.steps.map((e,t)=>(0,B.jsx)(`li`,{children:e},`${t}:${e}`))})]},e.title))}),t.length>0&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(yf,{count:e.length}),(0,B.jsx)(_f,{steps:t})]})]})}function yf({count:e,fanOut:t=!1}){return(0,B.jsxs)(`div`,{className:`fd-junction ${t?`is-fan`:``}`,style:{"--lanes":e},"aria-hidden":`true`,children:[(0,B.jsx)(`span`,{className:`fd-trunk`}),(0,B.jsx)(`span`,{className:`fd-bus`}),(0,B.jsx)(`div`,{className:`fd-stems`,children:Array.from({length:e},(e,t)=>(0,B.jsx)(`span`,{},t))})]})}function bf({root:e,steps:t}){return t.length===0?null:e?(0,B.jsxs)(`div`,{className:`fd-tree has-root`,children:[(0,B.jsx)(`p`,{className:`fd-root mono`,children:e}),(0,B.jsx)(yf,{count:t.length,fanOut:!0}),(0,B.jsx)(xf,{steps:t})]}):(0,B.jsx)(`div`,{className:`fd-tree`,children:(0,B.jsx)(xf,{steps:t})})}function xf({steps:e}){return(0,B.jsx)(`ul`,{className:`fd-branches`,style:{gridTemplateColumns:`repeat(${e.length}, minmax(0, 1fr))`},children:e.map((e,t)=>(0,B.jsx)(`li`,{className:`fd-node`,children:e},`${t}:${e}`))})}function Sf({from:e,fromSteps:t,to:n,toSteps:r,why:i}){return(0,B.jsxs)(`div`,{className:`fd-ba`,children:[(0,B.jsxs)(`div`,{className:`fd-ba-side is-was`,children:[(0,B.jsx)(`p`,{className:`fd-ba-label`,children:`Was`}),(0,B.jsx)(`p`,{className:`fd-ba-head`,children:e}),(0,B.jsx)(_f,{steps:t,terminal:`bad`})]}),i&&(0,B.jsxs)(`p`,{className:`fd-ba-why`,children:[(0,B.jsx)(`span`,{className:`fd-ba-pivot`,"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:i})]}),(0,B.jsxs)(`div`,{className:`fd-ba-side is-now`,children:[(0,B.jsx)(`p`,{className:`fd-ba-label`,children:`Now`}),(0,B.jsx)(`p`,{className:`fd-ba-head`,children:n}),(0,B.jsx)(_f,{steps:r,terminal:`good`})]})]})}function Cf({marks:e}){let t=[];return e.junction&&t.push([`fd-key-junction`,`where separate paths meet`]),e.outcome&&t.push([`fd-key-outcome`,`abandoned, and adopted`]),t.length===0?null:(0,B.jsx)(`ul`,{className:`fd-legend`,children:t.map(([e,t])=>(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`fd-key ${e}`,"aria-hidden":`true`}),t]},e))})}var wf={fileEdit:`edit`,fileWrite:`edit`,fileRead:`read`,search:`read`,command:`run`,subagent:`delegate`,webFetch:`look`,webSearch:`look`,mcp:`look`,plan:`plan`,question:`plan`,other:`run`},Tf=4,Ef={edit:e=>`edited ${e} ${e===1?`file`:`files`}`,read:e=>`read ${e} ${e===1?`file`:`files`}`,run:e=>`ran ${e} ${e===1?`command`:`commands`}`,delegate:e=>`delegated to ${e} ${e===1?`subagent`:`subagents`}`,look:e=>`${e} ${e===1?`lookup`:`lookups`}`,plan:e=>`planned (${e})`},Df={edit:`±`,read:`⋯`,run:`$`,delegate:`⇢`,look:`@`,plan:`☰`};function Of(e){let t=e.split(/\s+/).find(e=>e.includes(`/`)||/\.[a-z0-9]+$/i.test(e));return t?pd(t):void 0}var kf=new Set([`edit`]);function Af(e,t){let n=new Map(e.verifications.map(e=>[e.callId,e])),r=new Map(t.filter(e=>e.callId).map(e=>[e.callId,e])),i=[],a,o=[],s=()=>{if(!a)return;let e=[...new Set(a.items.map(e=>Of(e.title)).filter(Boolean))],t=a.bucket===`edit`&&e.length===1?`edited ${e[0]}${a.items.length>1?` (${a.items.length}\u00d7)`:``}`:Ef[a.bucket](e.length||a.items.length);i.push({kind:`work`,bucket:a.bucket,label:t,detail:e.length>1?e.slice(0,3).join(`, `):void 0,at:a.items[0]?.startedAt??``,refs:a.items.map(e=>e.callId),quiet:!1}),a=void 0},c=()=>{if(o.length===0)return;let e=new Map;for(let t of o){let n=wf[t.kind];e.set(n,(e.get(n)??0)+1)}i.push({kind:`work`,bucket:`read`,label:[...e.entries()].map(([e,t])=>Ef[e](t)).join(`, `),at:o[0]?.startedAt??``,refs:o.map(e=>e.callId),quiet:!0}),o=[]},l=()=>{s(),c()};for(let t of e.activities){let e=n.get(t.callId);if(e){l(),i.push({kind:`check`,row:e});continue}let u=r.get(t.callId);if(u){l(),i.push({kind:`commit`,sha:u.sha,at:u.at,callId:u.callId});continue}let d=wf[t.kind];kf.has(d)?a&&a.bucket===d&&o.length<Tf?(o=[],a.items.push(t)):(s(),c(),a={bucket:d,items:[t]}):o.push(t)}l();let u=i.map(e=>e.kind===`check`).lastIndexOf(!0);return i.slice(u+1).some(e=>e.kind===`work`&&e.bucket===`edit`)&&i.push({kind:`gap`,label:`nothing checked these edits`}),i}var jf=6;function Mf({turns:e,commits:t,onRef:n}){let[r,i]=(0,z.useState)(jf);if(e.length===0)return null;let a=e.length>r?e.slice(e.length-r):e,o=e.length-a.length;return(0,B.jsxs)(`section`,{className:`viz`,"aria-label":`What the agent did, in order`,children:[(0,B.jsxs)(`h3`,{className:`viz-title`,children:[`What happened `,(0,B.jsxs)(`span`,{className:`viz-count num`,children:[e.length,` turns`]})]}),o>0&&(0,B.jsxs)(`button`,{type:`button`,className:`flow-more`,onClick:()=>i(e=>e+jf),children:[`show `,Math.min(jf,o),` earlier `,o===1?`turn`:`turns`]}),(0,B.jsx)(`ol`,{className:`flow`,children:a.map((e,r)=>(0,B.jsx)(Nf,{turn:e,commits:t,onRef:n,defaultOpen:r===a.length-1},e.id))})]})}function Nf({turn:e,commits:t,onRef:n,defaultOpen:r}){let[i,a]=(0,z.useState)(r),o=Af(e,t),s=o.filter(e=>e.kind===`check`),c=s.filter(e=>e.kind===`check`&&e.row.outcome===`fail`).length,l=s.filter(e=>e.kind===`check`&&e.row.outcome===`pass`).length,u=o.some(e=>e.kind===`gap`);return(0,B.jsxs)(`li`,{className:`flow-turn ${i?`is-open`:``}`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`flow-ask`,onClick:()=>a(e=>!e),"aria-expanded":i,children:[(0,B.jsx)(`span`,{className:`flow-ask-n num`,children:e.index+1}),(0,B.jsx)(`span`,{className:`flow-ask-text`,children:e.prompt||`(prompt not recorded)`}),(0,B.jsxs)(`span`,{className:`flow-sum`,children:[u&&(0,B.jsx)(`span`,{className:`flow-chip flow-sum-gap`,children:`unchecked`}),c>0?(0,B.jsxs)(`span`,{className:`flow-chip flow-sum-bad`,children:[(0,B.jsx)(`span`,{className:`num`,children:c}),` failed`]}):l>0&&(0,B.jsxs)(`span`,{className:`flow-chip flow-sum-ok`,children:[(0,B.jsx)(`span`,{className:`num`,children:l}),` passed`]})]}),(0,B.jsx)(`span`,{className:`flow-ask-caret`,"aria-hidden":`true`,children:`›`})]}),i&&(0,B.jsx)(`ol`,{className:`flow-steps`,children:o.map((e,t)=>(0,B.jsx)(Pf,{step:e,onRef:n},t))})]})}function Pf({step:e,onRef:t}){if(e.kind===`gap`)return(0,B.jsxs)(`li`,{className:`flow-step is-gap`,children:[(0,B.jsx)(`span`,{className:`flow-node`,"aria-hidden":`true`,children:`!`}),(0,B.jsx)(`span`,{className:`flow-label`,children:e.label})]});if(e.kind===`check`){let n=e.row,r=hf(n.outcome);return(0,B.jsxs)(`li`,{className:`flow-step is-check v-${n.outcome}`,children:[(0,B.jsx)(`span`,{className:`flow-node`,"aria-hidden":`true`,children:r}),(0,B.jsxs)(`button`,{type:`button`,className:`flow-label as-button`,onClick:()=>t(n.callId),children:[n.label,n.epistemic===`inferred`&&(0,B.jsx)(`span`,{className:`flow-derived`,children:`derived`})]}),(0,B.jsx)(`span`,{className:`flow-at mono`,children:sd(n.at)})]})}return e.kind===`commit`?(0,B.jsxs)(`li`,{className:`flow-step is-commit`,children:[(0,B.jsx)(`span`,{className:`flow-node`,"aria-hidden":`true`,children:`◆`}),(0,B.jsxs)(`button`,{type:`button`,className:`flow-label as-button`,onClick:()=>e.callId&&t(e.callId),children:[`committed `,(0,B.jsx)(`span`,{className:`mono`,children:e.sha.slice(0,7)})]}),(0,B.jsx)(`span`,{className:`flow-at mono`,children:sd(e.at)})]}):(0,B.jsxs)(`li`,{className:`flow-step is-${e.bucket} ${e.quiet?`is-quiet`:``}`,children:[(0,B.jsx)(`span`,{className:`flow-node`,"aria-hidden":`true`,children:Df[e.bucket]}),(0,B.jsxs)(`button`,{type:`button`,className:`flow-label as-button`,onClick:()=>e.refs[0]&&t(e.refs[0]),children:[e.label,e.detail&&(0,B.jsx)(`span`,{className:`flow-detail mono`,children:e.detail})]}),(0,B.jsx)(`span`,{className:`flow-at mono`,children:sd(e.at)})]})}function Ff({files:e,cwd:t,limit:n=10,onOpen:r}){if(e.length===0)return null;let i=[...e].sort((e,t)=>t.linesAdded+t.linesRemoved-(e.linesAdded+e.linesRemoved)).slice(0,n),a=Math.max(1,...i.map(e=>e.linesAdded+e.linesRemoved)),o=e.length-i.length,s=fd(i.map(e=>e.path));return(0,B.jsxs)(`section`,{className:`viz`,"aria-label":`Churn for ${e.length} changed files`,children:[(0,B.jsxs)(`h3`,{className:`viz-title`,children:[`Changed `,(0,B.jsx)(`span`,{className:`viz-count num`,children:e.length})]}),s&&(0,B.jsx)(`p`,{className:`viz-root mono`,title:s,children:(0,B.jsx)(`bdi`,{children:dd(s)})}),(0,B.jsx)(`ul`,{className:`churn`,children:i.map(e=>{let n=e.linesAdded+e.linesRemoved;return(0,B.jsxs)(`li`,{className:`churn-row`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`churn-main`,onClick:()=>r(e),children:[(0,B.jsxs)(`span`,{className:`churn-name mono`,title:e.path,children:[pd(e.path),(0,B.jsx)(`span`,{className:`churn-dir`,children:md(s?e.path.slice(s.length):ud(e.path,t))})]}),(0,B.jsxs)(`span`,{className:`churn-bar`,"aria-hidden":`true`,children:[(0,B.jsx)(`span`,{className:`churn-add`,style:{width:`${e.linesAdded/a*100}%`}}),(0,B.jsx)(`span`,{className:`churn-del`,style:{width:`${e.linesRemoved/a*100}%`}})]}),(0,B.jsxs)(`span`,{className:`churn-num num`,children:[(0,B.jsxs)(`span`,{className:`add`,children:[`+`,e.linesAdded]}),(0,B.jsxs)(`span`,{className:`del`,children:[`−`,e.linesRemoved]})]}),!e.verifiedAfter&&(0,B.jsx)(`span`,{className:`churn-flag`,title:`No passing check ran after this edit`,children:`?`})]}),(0,B.jsxs)(`span`,{className:`sr-only`,children:[ud(e.path,t),`: `,n,` lines changed`,e.verifiedAfter?``:`, unchecked since`]})]},e.path)})}),o>0&&(0,B.jsxs)(`p`,{className:`viz-foot`,children:[o,` smaller changes not shown`]})]})}function If({runs:e,onOpen:t}){if(e.length===0)return null;let n=[...new Set(e.map(e=>e.method))],r=e=>e===`pass`?`passing`:e===`fail`?`failing`:e===`partial`?`partial`:`unknown`;return(0,B.jsxs)(`section`,{className:`viz checks`,"aria-label":`${e.length} checks across ${n.length} kinds`,children:[(0,B.jsx)(`ul`,{className:`checks-rows`,children:n.map(n=>{let i=e.filter(e=>e.method===n).sort((e,t)=>e.at.localeCompare(t.at)),a=i[i.length-1];if(!a)return null;let o=i.filter(e=>e.outcome===`fail`).length;return(0,B.jsxs)(`li`,{className:`checks-row`,children:[(0,B.jsx)(`span`,{className:`checks-method`,children:n}),(0,B.jsxs)(`span`,{className:`checks-now v-${a.outcome}`,children:[(0,B.jsx)(`span`,{className:`checks-now-mark`,"aria-hidden":`true`,children:hf(a.outcome)}),r(a.outcome),a.counts?.total!==void 0&&(0,B.jsxs)(`span`,{className:`checks-counts num`,children:[a.counts.passed??0,`/`,a.counts.total]})]}),(0,B.jsx)(`span`,{className:`checks-strip`,children:i.map(e=>(0,B.jsx)(`button`,{type:`button`,className:`checks-tick v-${e.outcome} ${e.epistemic===`inferred`?`is-derived`:``}`,onClick:()=>t(e),title:`${sd(e.at)} — ${e.label}${e.epistemic===`inferred`?` (worked out, not observed)`:``}`,children:(0,B.jsxs)(`span`,{className:`sr-only`,children:[sd(e.at),` `,e.outcome]})},e.id))}),(0,B.jsx)(`span`,{className:`checks-runs`,children:i.length===1?`ran once`:`${i.length} runs${o>0?`, ${o} failed`:``}`}),(0,B.jsx)(`span`,{className:`checks-when`,children:sd(a.at)})]},n)})}),(0,B.jsx)(`p`,{className:`checks-key`,children:`Oldest first. A hollow mark is one Salidium worked out rather than read. Open any run for its record.`})]})}function Lf({files:e,failing:t,onOpen:n}){if(e.length===0)return null;let r=e.slice(0,120),i=e.filter(e=>e.verifiedAfter).length,a=e.length-i,o=t.length>0;return(0,B.jsxs)(`section`,{className:`viz cov`,"aria-label":`Which changed files a passing check ran after`,children:[(0,B.jsxs)(`p`,{className:`cov-lead`,children:[(0,B.jsxs)(`strong`,{className:`num`,children:[i,` of `,e.length]}),` `,`changed `,e.length===1?`file has`:`files have`,` had a passing check since it was last edited.`]}),o&&(0,B.jsxs)(`p`,{className:`cov-held`,children:[t.join(` and `),` `,t.length===1?`is`:`are`,` still failing.`]}),(0,B.jsx)(`p`,{className:`cov-scope`,children:`A filled square is one file, not the project. A full grid does not mean the project is green.`}),(0,B.jsx)(`ul`,{className:`cov-grid`,children:r.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsx)(`button`,{type:`button`,className:`cov-cell ${e.verifiedAfter?`is-covered`:`is-stale`}`,onClick:()=>n?.(e),title:`${e.path} — ${e.verifiedAfter?e.verifiedBy??`checked after the last edit`:`changed after the last passing check`}`,children:(0,B.jsxs)(`span`,{className:`sr-only`,children:[e.path,`:`,` `,e.verifiedAfter?`checked since last edit`:`not checked since last edit`]})})},e.path))}),e.length>120&&(0,B.jsxs)(`p`,{className:`cov-more`,children:[`…and `,e.length-120,` more.`]}),(0,B.jsxs)(`ul`,{className:`cov-key`,children:[(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`cov-cell is-covered`,"aria-hidden":`true`}),` checked since last edit`,(0,B.jsx)(`span`,{className:`num cov-key-n`,children:i})]}),(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`cov-cell is-stale`,"aria-hidden":`true`}),` changed since the last check`,(0,B.jsx)(`span`,{className:`num cov-key-n`,children:a})]})]})]})}function Rf({ex:e}){let t=e.approachChange,n=e.why.lanes.length>1,r=e.why.chain.length>0||e.why.lanes.length>0,i={junction:n,outcome:!!t};return(0,B.jsxs)(`section`,{className:`ex`,"aria-label":`Generated explanation`,children:[(0,B.jsx)(`p`,{className:`ex-what`,children:e.what.summary}),e.what.currently&&(0,B.jsxs)(`p`,{className:`ex-now`,children:[(0,B.jsx)(`span`,{className:`ex-now-key`,children:`Now`}),e.what.currently]}),r&&(0,B.jsxs)(`section`,{className:`ex-block`,id:`sec-why`,children:[(0,B.jsx)(zf,{title:`Why`,summary:e.why.summary}),n?(0,B.jsx)(vf,{lanes:e.why.lanes,trunk:e.why.chain}):(0,B.jsx)(_f,{steps:e.why.chain})]}),e.how.steps.length>0&&(0,B.jsxs)(`section`,{className:`ex-block`,id:`sec-how`,children:[(0,B.jsx)(zf,{title:`How`,summary:e.how.summary}),(0,B.jsx)(bf,{root:e.how.root,steps:e.how.steps})]}),t&&(0,B.jsxs)(`section`,{className:`ex-block`,id:`sec-approach`,children:[(0,B.jsx)(zf,{title:`Approach changed`}),(0,B.jsx)(Sf,{from:t.from,fromSteps:t.fromSteps,to:t.to,toSteps:t.toSteps,why:t.why})]}),(0,B.jsxs)(`footer`,{className:`ex-foot`,children:[(0,B.jsx)(Cf,{marks:i}),(0,B.jsxs)(`p`,{className:`ex-mark`,children:[`Generated by `,e.model]})]})]})}function zf({title:e,summary:t}){return(0,B.jsxs)(`header`,{className:`ex-head`,children:[(0,B.jsx)(`h2`,{className:`ex-title`,children:e}),t&&(0,B.jsx)(`p`,{className:`ex-summary`,children:t})]})}function Bf({view:e}){let t=e.strip,n=t.latestVerification,r=(e,t,n)=>`${e} ${e===1?t:n}`,i=[e.ingest.redactions>0&&`${r(e.ingest.redactions,`credential-shaped string`,`credential-shaped strings`)} redacted`,e.ingest.warnings>0&&`${r(e.ingest.warnings,`record`,`records`)} could not be read`,e.ingest.compactions>0&&r(e.ingest.compactions,`context compaction`,`context compactions`)].filter(Boolean);return(0,B.jsxs)(`div`,{className:`tm`,children:[(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-changes`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-changes`,children:`Changes`}),(0,B.jsxs)(`dl`,{className:`tm-grid`,children:[(0,B.jsx)(Vf,{label:`Files`,children:(0,B.jsx)(`span`,{className:`num`,children:t.filesChanged})}),(0,B.jsx)(Vf,{label:`Added`,children:(0,B.jsxs)(`span`,{className:`tm-add`,children:[`+`,t.linesAdded]})}),(0,B.jsx)(Vf,{label:`Removed`,children:(0,B.jsxs)(`span`,{className:`tm-del`,children:[`−`,t.linesRemoved]})})]})]}),(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-activity`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-activity`,children:`Activity`}),(0,B.jsxs)(`dl`,{className:`tm-grid`,children:[(0,B.jsx)(Vf,{label:`Duration`,children:e.report.runtimeMs===void 0?(0,B.jsx)(`span`,{className:`tm-unknown`,children:`unknown`}):(0,B.jsx)(`span`,{className:`num`,children:ld(e.report.runtimeMs)})}),(0,B.jsx)(Vf,{label:`Commits`,children:(0,B.jsx)(`span`,{className:`num`,children:t.commits})}),(0,B.jsx)(Vf,{label:`Turns`,children:(0,B.jsx)(`span`,{className:`num`,children:t.turns})})]})]}),e.usage&&(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-model`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-model`,children:`Model`}),(0,B.jsxs)(`dl`,{className:`tm-grid is-wide`,children:[(0,B.jsx)(Vf,{label:`Responses`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.messages.toLocaleString()})}),(0,B.jsx)(Vf,{label:`In`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.inputTokens.toLocaleString()})}),(0,B.jsx)(Vf,{label:`Out`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.outputTokens.toLocaleString()})}),(0,B.jsx)(Vf,{label:`Cache read`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.cacheReadTokens.toLocaleString()})}),(0,B.jsx)(Vf,{label:`Cache write`,children:(0,B.jsx)(`span`,{className:`num`,children:e.usage.cacheWriteTokens.toLocaleString()})})]})]}),n&&(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-check`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-check`,children:`Latest check`}),(0,B.jsxs)(`div`,{className:`tm-check`,children:[(0,B.jsx)(`span`,{className:`tm-check-method`,children:n.method}),(0,B.jsx)(`span`,{className:`v-${n.outcome}`,children:n.outcome}),(0,B.jsx)(`span`,{className:`num`,children:sd(n.at)})]})]}),i.length>0&&(0,B.jsxs)(`section`,{className:`tm-group`,"aria-labelledby":`tm-handling`,children:[(0,B.jsx)(`h3`,{className:`tm-title`,id:`tm-handling`,children:`Data handling`}),(0,B.jsx)(`ul`,{className:`tm-note-list`,children:i.map(e=>(0,B.jsx)(`li`,{children:e},e))})]})]})}function Vf({label:e,children:t}){return(0,B.jsxs)(`div`,{className:`tm-quantity`,children:[(0,B.jsx)(`dt`,{children:e}),(0,B.jsx)(`dd`,{children:t})]})}function Hf({view:e,onRef:t}){let n=[...new Set(e.left.items.filter(e=>e.source===`verification`&&e.status===`failing`).map(e=>e.text.replace(/\s.*$/,``).toLowerCase()))];return(0,B.jsx)(Lf,{files:e.changes.files,failing:n,onOpen:e=>t(e.lastCallId)})}function Uf({view:e,onRef:t}){return(0,B.jsx)(If,{runs:e.verified.runs,onOpen:e=>t(e.callId)})}function Wf({view:e,cwd:t,onRef:n}){return(0,B.jsx)(Ff,{files:e.changes.files,cwd:t,limit:20,onOpen:e=>n(e.lastCallId)})}function Gf({view:e,onRef:t}){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Mf,{turns:e.turns,commits:e.changes.commits,onRef:t}),(0,B.jsx)(Qf,{subagents:e.subagents,onRef:t})]})}function Kf({which:e,view:t,onRef:n}){return(0,B.jsx)(Zf,{view:t,detail:2,onRef:n,only:e})}var qf={pass:`passed`,fail:`failed`,partial:`partial`,unknown:`unknown`},Jf={"exit-inferred":`exit code not reported, read from the output`,"exit-masked":`exit code hidden by a pipe`,"output-truncated":`output was truncated`,"no-summary-parsed":`no summary line found in the output`,"exit-summary-mismatch":`the output says passed and the exit code says failed`};function Yf(e){return e.filter(e=>e!==`scope-partial`).map(e=>Jf[e]??e).join(` · `)}var Xf=6;function Zf({view:e,detail:t,onRef:n,only:r}){let i=e.verified.summary,a=e.review.groups.filter(e=>e.severity!==`info`),o=e=>t>1?e:e.slice(0,Xf),s=e=>t>1||e<=Xf?null:(0,B.jsxs)(`li`,{className:`rp-none`,children:[`…`,e-Xf,` more, under Records`]}),c=e=>r===void 0||r===e;return(0,B.jsxs)(`div`,{className:`rp-cols${r?` is-single`:``}`,children:[c(`checks`)&&(0,B.jsxs)(`div`,{className:`rp-block`,id:`sec-verified`,children:[(0,B.jsx)(`h3`,{className:`rp-title`,children:`Verified`}),i.length===0?(0,B.jsx)(`p`,{className:`rp-none`,children:`No checks observed.`}):(0,B.jsx)(`ul`,{className:`rp-status`,children:i.map(e=>{let r=Yf(e.caveats);return(0,B.jsxs)(`li`,{className:`v-${e.outcome}`,children:[(0,B.jsx)(`span`,{className:`rp-mark`,"aria-hidden":`true`,children:hf(e.outcome)}),(0,B.jsxs)(`button`,{type:`button`,className:`rp-status-label`,onClick:()=>n(e.callId),children:[e.method,(0,B.jsx)(`span`,{className:`sr-only`,children:qf[e.outcome]??e.outcome}),e.counts?.total!==void 0&&(0,B.jsxs)(`span`,{className:`mono rp-counts`,children:[e.counts.passed??0,`/`,e.counts.total]})]}),e.scope===`partial`&&(0,B.jsx)(`span`,{className:`rp-subset`,children:`subset`}),e.laterUnreadable>0&&(0,B.jsx)(`span`,{className:`rp-stale`,title:`${e.laterUnreadable} later ${e.laterUnreadable===1?`run`:`runs`} of ${e.method} produced no readable outcome`,children:`not the latest run`}),r&&(0,B.jsx)(`span`,{className:`rp-caveat`,children:r}),t>1&&e.epistemic===`inferred`&&(0,B.jsx)(`span`,{className:`rp-derived`,children:`derived`})]},e.id)})})]}),c(`left`)&&(0,B.jsxs)(`div`,{className:`rp-block`,id:`sec-left`,children:[(0,B.jsx)(`h3`,{className:`rp-title`,children:`Left`}),e.left.items.length===0?(0,B.jsx)(`p`,{className:`rp-none`,children:`Nothing recorded.`}):(0,B.jsxs)(`ul`,{className:`rp-status`,children:[o(e.left.items).map(e=>(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`rp-mark`,"aria-hidden":`true`,children:e.status===`failing`?`✕`:e.status===`in_progress`?`▸`:`○`}),(0,B.jsx)(`span`,{children:e.text})]},e.id)),s(e.left.items.length)]})]}),c(`review`)&&(0,B.jsxs)(`div`,{className:`rp-block`,id:`sec-review`,children:[(0,B.jsx)(`h3`,{className:`rp-title`,children:`Review`}),a.length===0?(0,B.jsx)(`p`,{className:`rp-none`,children:`Nothing needs you.`}):(0,B.jsxs)(`ul`,{className:`rp-status`,children:[o(a).map(e=>(0,B.jsx)(ep,{group:e,onRef:n},e.rule)),s(a.length)]})]})]})}function Qf({subagents:e,onRef:t}){if(e.length===0)return null;let n=e.filter(e=>e.lastMessage).length;return(0,B.jsx)(Nu,{label:`Delegated to ${e.length} ${e.length===1?`agent`:`agents`}${n>0?`, ${n} reported back`:``}`,id:`subagents`,children:(0,B.jsx)(`ul`,{className:`rows`,children:e.map(e=>(0,B.jsx)($f,{agent:e,onRef:t},e.id))})})}function $f({agent:e,onRef:t}){let[n,r]=(0,z.useState)(!1),i=e.lastMessage??``,[a,o]=gf(n,i);return(0,B.jsxs)(`li`,{className:`row row-flat is-quote`,children:[(0,B.jsx)(`span`,{className:`attrib`,children:e.description??e.agentType??e.id}),i?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{ref:a,className:`rp-statement-body${n?` is-open`:``}`,children:i}),(o||n)&&(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>r(!n),children:n?`less`:`more`})]}):(0,B.jsx)(`span`,{className:`muted`,children:e.endedAt?`ended without reporting`:`still running`}),e.eventId&&(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>t(e.eventId),"aria-label":`Open the record for ${e.description??e.agentType??e.id}`,children:`record`})]})}function ep({group:e,onRef:t}){let[n,r]=(0,z.useState)(!1),i=e.items[0];return e.occurrences===1&&i?(0,B.jsxs)(`li`,{className:`is-attn`,children:[(0,B.jsx)(`span`,{className:`rp-mark`,"aria-hidden":`true`,children:`⚠`}),(0,B.jsx)(`span`,{children:i.summary}),i.refs[0]&&(0,B.jsx)(`button`,{type:`button`,className:`link rp-ev`,onClick:()=>t(i.refs[0]),children:`record`})]}):(0,B.jsxs)(`li`,{className:`is-attn rp-group`,children:[(0,B.jsx)(`span`,{className:`rp-mark`,"aria-hidden":`true`,children:`⚠`}),(0,B.jsxs)(`div`,{className:`rp-group-body`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`rp-group-head`,onClick:()=>r(e=>!e),"aria-expanded":n,children:[(0,B.jsx)(`span`,{className:`rp-group-label`,children:e.label}),(0,B.jsxs)(`span`,{className:`rp-group-count num`,children:[e.occurrences,e.items.length<e.occurrences&&(0,B.jsxs)(`span`,{className:`rp-group-distinct`,children:[` · `,e.items.length,` distinct`]})]})]}),n&&(0,B.jsx)(`ul`,{className:`rp-group-items`,children:e.items.map(e=>(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:`mono`,title:e.instance??e.label,children:dd(e.instance??e.label)}),e.repeats>1&&(0,B.jsxs)(`span`,{className:`rp-group-repeats num`,children:[`×`,e.repeats]}),e.refs[0]&&(0,B.jsx)(`button`,{type:`button`,className:`link rp-ev`,onClick:()=>t(e.refs[0]),children:`record`})]},e.id))})]})]})}function tp({verdict:e,strip:t,onOpen:n}){let r=[e.because,t.waiting?.summary,e.epistemic===`inferred`&&!e.because?`Worked out, not observed.`:void 0].filter(Boolean).join(` `);return(0,B.jsxs)(`div`,{className:`masthead-badges`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`tag is-open`,"data-tone":e.tone,onClick:()=>n(`checks`),title:`Open the checks this verdict was read from`,children:[(0,B.jsx)(`span`,{className:`tag-strong`,children:e.headline}),r&&(0,B.jsx)(`span`,{className:`tag-note`,children:r})]}),t.reviewOpen>0&&(0,B.jsxs)(`button`,{type:`button`,className:`tag is-open`,"data-tone":`attention`,onClick:()=>n(`review`),title:`Things Salidium flagged for a human: failing checks, waiting prompts, destructive commands, claims with no evidence`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`to review`}),(0,B.jsx)(`span`,{className:`num tag-strong`,children:t.reviewOpen})]}),t.remaining>0&&(0,B.jsxs)(`button`,{type:`button`,className:`tag is-open`,onClick:()=>n(`left`),title:`Work the agent recorded as not yet finished`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`unfinished`}),(0,B.jsx)(`span`,{className:`num tag-strong`,children:t.remaining})]})]})}var np=8,rp=`live`;function ip(e,t){let n=0,r=e.length;for(;n<r;){let i=n+r>>1,a=e[i];a!==void 0&&a.ts<=t?n=i+1:r=i}return n-1}var ap=16,op=(e,t=0)=>`calc(${ap/2+t}px + (100% - ${ap}px) * ${e})`;function sp({startedAt:e,endedAt:t,changes:n,checks:r,commits:i,scrubTs:a,onScrub:o,onLive:s}){let[c,l]=(0,z.useState)(),u=(0,z.useRef)(void 0);(0,z.useEffect)(()=>()=>clearTimeout(u.current),[]);let d=(0,z.useRef)(null),[f,p]=(0,z.useState)(0);(0,z.useLayoutEffect)(()=>{let e=d.current;if(!e)return;p(e.getBoundingClientRect().width);let t=new ResizeObserver(([t])=>p(t?.contentRect.width??e.getBoundingClientRect().width));return t.observe(e),()=>t.disconnect()},[]);let m=(0,z.useMemo)(()=>{let e=[],t=-1;for(let r of n){t=Math.max(t,r.seq);let n=e[e.length-1];n!==void 0&&n.ts===r.ts?n.seq=t:e.push({ts:r.ts,seq:t})}return e},[n,n.length]),h=(0,z.useMemo)(()=>{let e=new Map,t=(t,n)=>{let r=ip(m,t);if(r<0)return;let i=e.get(r)??{fail:!1,pass:!1,commit:!1,n:0};i[n]=!0,i.n+=1,e.set(r,i)};for(let e of r)e.outcome===`pass`?t(e.at,`pass`):e.outcome===`fail`&&t(e.at,`fail`);for(let e of i)t(e.at,`commit`);let n=Math.max(0,f-ap),a=n>0&&m.length>0?n/m.length:0,o=a>0?Math.max(1,Math.ceil(np/a)):1,s=[];for(let t of[...e.keys()].sort((e,t)=>e-t)){let n=e.get(t),r=s[s.length-1];if(r&&t-r.at<o){r.fail||=n.fail,r.pass||=n.pass,r.commit||=n.commit,r.n+=n.n;continue}s.push({at:t,...n})}return s.map(e=>({at:e.at,f:e.at/m.length,tone:e.fail?`fail`:e.pass?`pass`:`commit`,n:e.n}))},[r,i,m,f]);if(m.length===0)return null;let g=c??a,_=g===void 0||g===rp?m.length:Math.max(0,ip(m,g)),v=m[_]?.ts,y=_/m.length,b=e=>{let t=m[e];l(t?t.ts:rp),clearTimeout(u.current),u.current=setTimeout(()=>{l(void 0),t?o(t.ts,t.seq):s()},90)};return(0,B.jsxs)(`section`,{className:`timeline`,"aria-label":`Session timeline`,children:[(0,B.jsxs)(`div`,{className:`tl-track`,ref:d,children:[(0,B.jsx)(`div`,{className:`tl-marks`,"aria-hidden":`true`,children:h.map(e=>(0,B.jsx)(`span`,{className:`tl-mark tl-${e.tone}`,style:{left:op(e.f)},title:`${e.n} ${e.n===1?`event`:`events`} here`},e.at))}),_<m.length&&(0,B.jsx)(`div`,{className:`tl-future`,style:{left:op(y)},"aria-hidden":`true`}),(0,B.jsx)(`div`,{className:`tl-stem`,style:{left:op(y,-1)},"aria-hidden":`true`}),(0,B.jsx)(`input`,{className:`tl-range`,type:`range`,min:0,max:m.length,step:1,value:_,onChange:e=>b(Number(e.target.value)),"aria-label":`Show the session as it stood at a moment in time`,"aria-valuetext":v===void 0?t?`the whole session`:`now, following live`:`${sd(v)}, change ${_+1} of ${m.length}, later events hidden`})]}),(0,B.jsxs)(`div`,{className:`tl-legend`,children:[(0,B.jsx)(`span`,{className:`mono`,children:sd(e)}),(0,B.jsx)(`span`,{className:`tl-legend-mid`,children:_>=m.length?t?`whole session`:`following live`:(0,B.jsxs)(B.Fragment,{children:[`showing `,(0,B.jsx)(`strong`,{className:`mono`,children:sd(v)}),(0,B.jsx)(`button`,{type:`button`,className:`link`,onClick:()=>b(m.length),children:`back to now`})]})}),(0,B.jsx)(`span`,{className:`mono`,children:t?sd(t):`now`})]})]})}function cp(){let[e,t]=(0,z.useState)(!1),n=Au(e,()=>t(!1));return(0,B.jsxs)(`div`,{className:`pop`,ref:n,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-float ${e?`is-on`:``}`,onClick:()=>t(e=>!e),"aria-expanded":e,title:`What the track shows`,children:[(0,B.jsx)(Eu,{name:`help`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`What the track shows`})]}),(0,B.jsxs)(`div`,{className:`pop-panel is-narrow is-up arrives ${e?`is-open`:``}`,children:[(0,B.jsx)(`div`,{className:`pop-head`,children:(0,B.jsx)(`span`,{children:`On the track`})}),(0,B.jsx)(`p`,{className:`pop-note`,children:`One step per change, not per minute. The clock is in the two end labels and in the readout while you drag.`}),(0,B.jsx)(`p`,{className:`pop-note`,children:`A mark is a check or a commit, red where a check failed. Marks too close to draw apart are merged, and a merged mark takes the worst outcome in it.`})]})]})}function lp({sessionId:e,now:t}){let[n,r]=(0,z.useState)(0);Ad(e,n);let i=Y(e=>e.api),a=Y(t=>t.live[e]),o=Y(t=>t.liveErrors[e]),s=Y(t=>t.sessions[e]),c=Y(e=>e.openRaw),l=Y(e=>e.setScrub),u=Y(e=>e.markSeen),d=Y(e=>e.openPanel),f=Y(e=>e.rewindOpen),p=Y(e=>e.toggleRewind),m=Y(e=>e.sidebarOpen),h=Y(e=>e.toggleSidebar),g=Y(e=>e.statsOpen),_=Y(e=>e.toggleStats),v=Y(e=>e.historyMode),y=Y(e=>e.setHistoryMode),[b,x]=(0,z.useState)(void 0),ee=ed(),[te,S]=$(`${f}`),ne=Nd(f),re=a?.state,ie=a?.scrub?.state,ae=a?.revision??0,oe=a?.scrub?.seq,C=(0,z.useMemo)(()=>re?q(re,t):void 0,[re,ae,t]),se=(0,z.useMemo)(()=>ie?q(ie,t):void 0,[ie,oe,t]),ce=(0,z.useCallback)(t=>{let n=Y.getState().live[e]?.state;if(!n)return;let r=t.includes(`#`)?t:n.activities[t]?.eventIds[0]??n.claims.find(e=>e.id===t)?.eventId??n.claims.find(e=>e.id===t)?.id;r&&c(e,r)},[c,e]),le=(0,z.useRef)(0),ue=(0,z.useCallback)((t,n)=>{let r=Y.getState().live[e];if(!i||!r)return;let a=++le.current;l(e,{ts:t,seq:n,state:r.scrub?.state??r.state,loading:!0}),i.stateAtTime(e,t).then(r=>{le.current===a&&l(e,{ts:t,seq:n,state:r.state,loading:!1})},()=>{le.current===a&&l(e,void 0)})},[i,e,l]),de=(0,z.useCallback)(()=>{le.current++,l(e,void 0)},[e,l]),w=(0,z.useMemo)(()=>a?a.changes.filter(e=>e.seq>a.lastSeenSeq&&(e.facet===`what`||e.facet===`verified`||e.facet===`review`||e.facet===`left`)).length:0,[a]);(0,z.useEffect)(()=>()=>u(e),[e,u]);let T=(0,z.useCallback)(()=>{x(Y.getState().live[e]?.lastSeenSeq),Y.getState().statsOpen&&_(),y(`rail`),u(e)},[e,u,y,_]),fe=(0,z.useCallback)(()=>{Y.getState().historyMode===`off`?(Y.getState().statsOpen&&_(),y(`rail`)):(x(void 0),y(`off`))},[y,_]),pe=(0,z.useCallback)(()=>{Y.getState().statsOpen||(x(void 0),y(`off`)),_()},[y,_]);if((0,z.useEffect)(()=>{let e=e=>{e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement||e.metaKey||e.ctrlKey||e.altKey||(e.key===`h`?fe():e.key===`l`&&oe!==void 0&&de())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[oe,de,fe]),!a||!re||!C)return o?(0,B.jsx)(pp,{error:o,onRetry:()=>r(e=>e+1)}):(0,B.jsx)(`div`,{className:`main-empty`,children:(0,B.jsx)(`div`,{className:`muted`,role:`status`,children:(0,B.jsx)(td,{label:`Loading session`,size:`md`})})});let me=ie??re,E=se??C,D=E.changes.files.length>0||E.verified.runs.length>0||E.turns.length+E.subagents.length>0,O=gd(E.strip.status),he=C.strip.status===`ended`?re.lastEventAt:void 0,ge=E.explained;return(0,B.jsxs)(`div`,{className:`session ${g||v===`rail`?`has-inspector`:``}`,children:[(0,B.jsxs)(`div`,{className:`session-main`,ref:te,children:[(0,B.jsxs)(`div`,{className:`session-actions`,children:[!m&&(0,B.jsx)(Du,{icon:`panel`,title:`Show the session list ([)`,onClick:h}),(0,B.jsxs)(`div`,{className:`toolbar session-actions-end`,children:[oe===void 0&&w>0&&(0,B.jsxs)(`button`,{type:`button`,className:`fresh`,onClick:T,title:`Changes since you last had this session open. Opens History filtered to them.`,children:[`Show `,w,` new`]}),D&&(0,B.jsx)(Du,{icon:`table`,label:`Evidence`,title:`Coverage, checks over time, what changed, what happened when`,onClick:()=>d(`evidence`)}),(0,B.jsx)(Du,{icon:`latest`,label:`Rewind`,on:f,title:`Show the session as it stood at a moment in time`,onClick:p}),(0,B.jsx)(Du,{icon:`stats`,label:`Quantities`,on:g,title:`Show measured totals beside the session`,onClick:pe}),(0,B.jsx)(Du,{icon:`history`,label:`History`,on:v!==`off`,title:`Toggle history (h)`,onClick:fe}),(0,B.jsx)(ku,{icon:`outbound`,label:`Docs`,href:Ou,title:`Open the Salidium documentation in a new tab`}),(0,B.jsx)(Mu,{}),a.connection!==`open`&&a.connection!==`connecting`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:`toolbar-sep`,"aria-hidden":`true`}),(0,B.jsx)(Pu,{status:a.connection})]})]})]}),v===`table`?(0,B.jsx)(ff,{changes:a.changes,scrubTs:a.scrub?.ts,onScrub:ue,onLive:de,onRef:ce}):(0,B.jsx)(`div`,{className:`session-content scroll-fade`,ref:ee,children:(0,B.jsxs)(`article`,{className:`page`,children:[(0,B.jsxs)(`header`,{className:`masthead`,children:[(0,B.jsx)(vs,{size:16,className:`masthead-mark`}),(0,B.jsx)(`h1`,{className:`masthead-title`,children:me.title||s?.title||me.cwd}),(0,B.jsxs)(`p`,{className:`masthead-meta`,children:[(0,B.jsxs)(`span`,{className:`tag is-status`,children:[(0,B.jsx)(`span`,{className:`status-dot ${O.cls}`,"aria-hidden":`true`,children:O.glyph}),O.label,E.strip.statusSince&&` ${cd(E.strip.statusSince,t)}`]}),(0,B.jsxs)(`span`,{className:`tag masthead-path`,title:me.cwd,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`in`}),(0,B.jsx)(`span`,{className:`mono`,children:dd(ud(me.cwd))})]}),me.gitBranch&&(0,B.jsxs)(`span`,{className:`tag`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`branch`}),(0,B.jsx)(`span`,{className:`mono`,children:me.gitBranch})]}),(0,B.jsxs)(`span`,{className:`tag is-${me.provider}`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`agent`}),Md(me.provider)]}),me.model&&(0,B.jsxs)(`span`,{className:`tag`,children:[(0,B.jsx)(`span`,{className:`tag-key`,children:`model`}),(0,B.jsx)(`span`,{className:`mono`,children:me.model})]})]}),(0,B.jsx)(tp,{verdict:E.verdict,strip:E.strip,onOpen:d})]}),oe!==void 0&&(0,B.jsxs)(`p`,{className:`scrub-note`,role:`status`,children:[`Showing this session as it stood at `,(0,B.jsx)(`strong`,{children:sd(a.scrub?.ts)}),`. Anything later is hidden. `,a.scrub?.loading&&(0,B.jsx)(td,{label:`replaying`})]}),ge?(0,B.jsx)(Rf,{ex:ge}):(0,B.jsx)(fp,{turns:E.turns.length,status:s?.explanationStatus})]})}),(0,B.jsx)(`div`,{className:`session-foot`,ref:S,children:ne&&(0,B.jsxs)(`div`,{className:`rewind arrives ${f?`is-open`:``}`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-float`,onClick:p,title:`Close the scrubber`,children:[(0,B.jsx)(Eu,{name:`close`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Close the scrubber`})]}),(0,B.jsx)(sp,{startedAt:re.startedAt,endedAt:he,now:t,changes:a.changes,checks:C.verified.runs,commits:C.changes.commits,scrubTs:a.scrub?.ts,onScrub:ue,onLive:de}),(0,B.jsx)(cp,{})]})}),(0,B.jsx)(pf,{id:`checks`,title:`Verified`,children:(0,B.jsx)(Kf,{which:`checks`,view:E,onRef:ce})}),(0,B.jsx)(pf,{id:`left`,title:`Left`,children:(0,B.jsx)(Kf,{which:`left`,view:E,onRef:ce})}),(0,B.jsx)(pf,{id:`review`,title:`Needs you`,children:(0,B.jsx)(Kf,{which:`review`,view:E,onRef:ce})}),(0,B.jsx)(up,{view:E,cwd:me.cwd,onRef:ce})]}),g?(0,B.jsx)(dp,{view:E,onClose:pe}):v===`rail`?(0,B.jsx)(lf,{changes:a.changes,scrubTs:a.scrub?.ts,focusSeq:b,onScrub:ue,onLive:de,onClose:fe,onRef:ce}):null]})}function up({view:e,cwd:t,onRef:n}){let r=Y(e=>e.panel),i=Y(e=>e.closePanel),a=e.changes.files.length,o=e.verified.runs.length,s=e.turns.length+e.subagents.length,c=[];return a>0&&c.push({key:`coverage`,label:`Coverage`,count:a,render:()=>(0,B.jsx)(Hf,{view:e,onRef:n})}),o>0&&c.push({key:`checks`,label:`Checks`,count:o,render:()=>(0,B.jsx)(Uf,{view:e,onRef:n})}),a>0&&c.push({key:`changed`,label:`Changed`,count:a,render:()=>(0,B.jsx)(Wf,{view:e,cwd:t,onRef:n})}),s>0&&c.push({key:`happened`,label:`What happened`,count:s,render:()=>(0,B.jsx)(Gf,{view:e,onRef:n})}),(0,z.useEffect)(()=>{r===`evidence`&&c.length===0&&i()},[r,c.length,i]),c.length===0?null:(0,B.jsx)(pf,{id:`evidence`,title:`Evidence`,sections:c})}function dp({view:e,onClose:t}){return(0,B.jsxs)(`aside`,{className:`inspector quantities`,"aria-label":`Quantities`,children:[(0,B.jsxs)(`div`,{className:`inspector-head`,children:[(0,B.jsx)(Du,{icon:`panel`,title:`Hide quantities`,onClick:t}),(0,B.jsx)(`span`,{className:`inspector-title`,children:`Quantities`})]}),(0,B.jsx)(`div`,{className:`quantities-body scroll-fade`,children:(0,B.jsx)(Bf,{view:e})})]})}function fp({turns:e,status:t}){return e===0?(0,B.jsx)(`section`,{className:`ex-pending`,role:`status`,children:(0,B.jsx)(`p`,{children:`Nothing has happened in this session yet.`})}):t===`generating`?(0,B.jsxs)(`section`,{className:`ex-pending is-running`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:(0,B.jsx)(td,{label:`Reading the session`,size:`md`})}),(0,B.jsx)(`p`,{children:`Your selected agent is writing from a bounded, redacted summary of the session. It takes a few seconds, then the explanation is cached.`})]}):t===`disabled`?(0,B.jsxs)(`section`,{className:`ex-pending`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:`Visual explanations are off.`}),(0,B.jsx)(`p`,{children:`No evidence was sent to an agent. Observed facts are still available in Evidence.`})]}):t===`unavailable`?(0,B.jsxs)(`section`,{className:`ex-pending`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:`No explanation for this session.`}),(0,B.jsx)(`p`,{children:`No compatible Claude Code or Codex command is available, so nothing was sent. Observed facts are still available in Evidence.`})]}):t===`failed`?(0,B.jsxs)(`section`,{className:`ex-pending`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:`No explanation for this session.`}),(0,B.jsx)(`p`,{children:`The selected agent was asked but returned no usable structured explanation. Observed facts are still available in Evidence; the next turn will try again.`})]}):(0,B.jsxs)(`section`,{className:`ex-pending`,role:`status`,children:[(0,B.jsx)(`p`,{className:`ex-pending-main`,children:`No explanation yet.`}),(0,B.jsx)(`p`,{children:`One is written when the agent finishes its next turn.`})]})}function pp({error:e,onRetry:t}){let n=Y(e=>e.select);return(0,B.jsx)(`div`,{className:`main-empty`,children:(0,B.jsxs)(`div`,{className:`session-error`,role:`alert`,children:[e.kind===`not-found`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`session-error-title`,children:`This session is not in the store`}),(0,B.jsx)(`p`,{className:`muted`,children:`It may have been forgotten, or the daemon was restarted with a fresh store. Pick another session from the list.`})]}),e.kind===`unreachable`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`session-error-title`,children:`Cannot reach the Salidium daemon`}),(0,B.jsxs)(`p`,{className:`muted`,children:[e.message,`. Start it again with `,(0,B.jsx)(`code`,{children:`salidium`}),` in a terminal.`]})]}),e.kind===`failed`&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`session-error-title`,children:`Could not load this session`}),(0,B.jsx)(`p`,{className:`muted mono`,children:e.message})]}),(0,B.jsxs)(`div`,{className:`session-error-actions`,children:[(0,B.jsx)(`button`,{type:`button`,className:`btn btn-accent`,onClick:t,children:`Try again`}),e.kind===`not-found`&&(0,B.jsx)(`button`,{type:`button`,className:`btn`,onClick:()=>n(void 0),children:`Back to sessions`})]})]})})}var mp=[{value:`off`,name:`Off`,adds:`The page Salidium derives, and nothing else. No model is ever called.`},{value:`session`,name:`When a session ends`,adds:`One explanation each, written once a session has finished or gone quiet.`},{value:`turn`,name:`While it works`,adds:`A fresh explanation at every turn end, so the page keeps up with the agent.`}],hp=[{key:`inputTokens`,label:`input`},{key:`outputTokens`,label:`output`},{key:`cacheReadTokens`,label:`cache read`},{key:`cacheWriteTokens`,label:`cache write`}];function gp(){let e=Y(e=>e.api),t=Y(e=>e.explainer),n=Y(e=>e.loadExplainer),r=Y(e=>e.setExplainerCadence),[i,a]=(0,z.useState)(!1),[o,s]=(0,z.useState)(!1),c=Au(i,()=>a(!1));(0,z.useEffect)(()=>{e&&n()},[e,n]);let l=t?.cadence,u=t?.usage;return(0,B.jsxs)(`div`,{className:`pop`,ref:c,children:[(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon ${i?`is-on`:``}`,onClick:()=>a(e=>!e),"aria-expanded":i,title:`When Salidium explains`,children:[(0,B.jsx)(Eu,{name:`sliders`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`When Salidium explains`})]}),(0,B.jsxs)(`div`,{className:`pop-panel arrives ${i?`is-open`:``}`,children:[(0,B.jsxs)(`div`,{className:`pop-head`,children:[(0,B.jsx)(`span`,{children:`Explaining`}),(0,B.jsxs)(`button`,{type:`button`,className:`pop-help ${o?`is-on`:``}`,onClick:()=>s(e=>!e),"aria-expanded":o,title:`What this control does`,children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,children:`?`}),(0,B.jsx)(`span`,{className:`sr-only`,children:`What this control does`})]})]}),o&&(0,B.jsx)(`p`,{className:`pop-note`,children:`Everything else on the page is observed or derived from what was observed. The explanation is the one part a model writes, on the subscription you already have.`}),(0,B.jsxs)(`fieldset`,{className:`opts`,children:[(0,B.jsx)(`legend`,{className:`sr-only`,children:`When Salidium explains`}),mp.map(e=>(0,B.jsxs)(`label`,{className:`opt ${e.value===l?`is-on`:``}`,children:[(0,B.jsx)(`input`,{className:`sr-only`,type:`radio`,name:`salidium-explainer`,checked:e.value===l,disabled:l===void 0,onChange:()=>r(e.value)}),(0,B.jsx)(`span`,{className:`opt-mark`,"aria-hidden":`true`}),(0,B.jsxs)(`span`,{className:`opt-text`,children:[(0,B.jsx)(`span`,{className:`opt-name`,children:e.name}),(0,B.jsx)(`span`,{className:`opt-adds`,children:e.adds})]})]},e.value))]}),t?.envOff&&(0,B.jsx)(`p`,{className:`pop-note`,children:`The daemon was started with the explainer switched off in its environment, so nothing is generated whichever stop is chosen here.`}),u&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`pop-head`,children:(0,B.jsx)(`span`,{children:`Consumed`})}),(0,B.jsxs)(`dl`,{className:`usage`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`responses`}),(0,B.jsx)(`dd`,{className:`mono`,children:u.messages.toLocaleString()})]}),hp.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e.label}),(0,B.jsx)(`dd`,{className:`mono`,children:u[e.key].toLocaleString()})]},e.key))]})]})]})]})}var _p=`salidium open`,vp=/Mac|iPhone|iPad/.test(navigator.platform??``)?`⌘C`:`Ctrl+C`;function yp(){let[e,t]=(0,z.useState)(()=>Date.now());return(0,z.useEffect)(()=>{let e=setInterval(()=>t(Date.now()),3e4);return()=>clearInterval(e)},[]),e}function bp(){let[e,t]=(0,z.useState)(()=>window.matchMedia(`(max-width: 900px)`).matches);return(0,z.useEffect)(()=>{let e=window.matchMedia(`(max-width: 900px)`),n=()=>t(e.matches);return n(),e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}function xp(){let e=Y(e=>e.api),t=Y(e=>e.setToken),n=Y(e=>e.authRejected),r=Y(e=>e.selectedId),i=Y(e=>e.select),a=Y(e=>e.sessionOrder),o=Y(e=>e.daemonError),s=a.length,c=Y(e=>e.listConnection),l=Y(e=>e.sidebarOpen),u=Y(e=>e.toggleSidebar),d=(0,z.useRef)(null),f=(0,z.useRef)(null),p=bp()&&l,m=yp();return(0,z.useEffect)(()=>{let e=()=>{let e=ds();e&&t(e)};return e(),window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[t]),(0,z.useEffect)(()=>{let e=()=>{let e=/^#\/s\/(.+)$/.exec(window.location.hash);e?.[1]&&i(decodeURIComponent(e[1]))};return e(),window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[i]),(0,z.useEffect)(()=>{let e=r?`#/s/${encodeURIComponent(r)}`:``;window.location.hash!==e&&!/token=/.test(window.location.hash)&&history.replaceState(null,``,`${window.location.pathname}${e}`)},[r]),(0,z.useEffect)(()=>{!r&&a.length>0&&i(a[0])},[r,a,i]),(0,z.useEffect)(()=>{let e=e=>{if(e.key===`Escape`&&window.matchMedia(`(max-width: 900px)`).matches&&Y.getState().sidebarOpen){Y.getState().toggleSidebar();return}e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement||e.metaKey||e.ctrlKey||e.altKey||e.key===`[`&&Y.getState().toggleSidebar()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),Qu({active:p&&!!e,containerRef:d,onClose:u,initialFocus:e=>e.querySelector(`[data-modal-initial] button`)??e.querySelector(`button:not([disabled])`),restoreFocus:()=>f.current?.querySelector(`button`)??null,shouldRestoreFocus:()=>!Y.getState().sidebarOpen}),jd(),e?(0,B.jsxs)(`div`,{className:`app ${l?``:`no-side`}`,children:[(0,B.jsx)(`div`,{className:`side-backdrop arrives ${l?`is-open`:``}`,"aria-hidden":`true`,onClick:u}),!l&&(0,B.jsx)(`div`,{className:`mobile-side-trigger`,ref:f,children:(0,B.jsx)(Du,{icon:`panel`,title:`Show the session list ([)`,onClick:u})}),(0,B.jsxs)(`aside`,{ref:d,className:`side arrives ${l?`is-open`:``}`,role:p?`dialog`:void 0,"aria-modal":p?`true`:void 0,"aria-labelledby":p?`session-list-title`:void 0,"aria-label":p?void 0:`Sessions`,tabIndex:p?-1:void 0,inert:!l,onClickCapture:e=>{window.matchMedia(`(max-width: 900px)`).matches&&e.target.closest(`.session-row`)&&u()},children:[(0,B.jsxs)(`div`,{className:`side-head`,children:[(0,B.jsx)(vs,{size:22,className:`side-mark`,decorative:!0}),(0,B.jsx)(`span`,{className:`side-head-title`,id:`session-list-title`,children:`Salidium`}),(0,B.jsx)(Pu,{status:c}),s>0&&(0,B.jsx)(vd,{}),(0,B.jsx)(gp,{}),(0,B.jsx)(`span`,{"data-modal-initial":`true`,children:(0,B.jsx)(Du,{icon:`panel`,title:`Hide the session list ([)`,onClick:u})})]}),(0,B.jsx)(wd,{now:m}),o&&(0,B.jsxs)(`div`,{className:`side-error`,role:`alert`,children:[(0,B.jsx)(`p`,{className:`side-error-title`,children:`The session list is not updating`}),(0,B.jsxs)(`p`,{children:[o.message,`.`,` `,o.unreachable?(0,B.jsxs)(B.Fragment,{children:[`Start the daemon again with `,(0,B.jsx)(`code`,{children:`salidium`}),` in a terminal.`]}):`It is reachable, so this is worth reporting rather than restarting.`]})]})]}),(0,B.jsx)(`main`,{className:`main`,inert:p,"aria-hidden":p||void 0,children:r?(0,B.jsx)(lp,{sessionId:r,now:m},r):s===0?(0,B.jsx)(`div`,{className:`main-empty`,children:(0,B.jsxs)(`div`,{className:`main-empty-first`,children:[(0,B.jsx)(`p`,{children:`A report appears here when your agent runs.`}),(0,B.jsx)(`p`,{className:`muted`,children:`Start a run in Claude Code or Codex. Salidium reads the session it writes and turns it into what changed, what was checked, and what it flagged for a human.`}),(0,B.jsx)(`a`,{className:`link`,href:Ou,target:`_blank`,rel:`noreferrer`,children:`Read the documentation`})]})}):null}),(0,B.jsx)(`div`,{className:`raw-layer`,inert:p,"aria-hidden":p||void 0,children:(0,B.jsx)(rd,{})})]}):(0,B.jsx)(Sp,{authRejected:n,onToken:t})}function Sp({authRejected:e,onToken:t}){let[n,r]=(0,z.useState)(`idle`),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(!1),c=(0,z.useRef)(null),l=(0,z.useRef)(null);return(0,z.useEffect)(()=>{if(n===`idle`)return;let e=setTimeout(()=>r(`idle`),2400);return()=>clearTimeout(e)},[n]),(0,B.jsx)(`div`,{className:`gate`,children:(0,B.jsxs)(`div`,{className:`gate-inner`,children:[(0,B.jsx)(`h1`,{className:`gate-mark`,children:(0,B.jsx)(ys,{markSize:34})}),(0,B.jsx)(`p`,{className:`gate-lede`,role:e?`alert`:void 0,children:e?`The daemon restarted with a new token, so this page signed out.`:`This page needs the token your daemon is listening for.`}),(0,B.jsx)(`p`,{className:`gate-note`,children:`It is rotated every time the daemon starts, so it is never the same one twice.`}),(0,B.jsxs)(`div`,{className:`gate-cmd`,children:[(0,B.jsx)(`code`,{ref:c,children:_p}),(0,B.jsxs)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>{let e=()=>{let e=c.current;if(e){let t=document.createRange();t.selectNodeContents(e);let n=window.getSelection();n?.removeAllRanges(),n?.addRange(t)}r(`selected`)};if(!navigator.clipboard)return e();navigator.clipboard.writeText(_p).then(()=>r(`copied`),e)},title:n===`copied`?`Copied`:`Copy the command`,children:[(0,B.jsx)(Eu,{name:n===`copied`?`check`:`copy`}),(0,B.jsx)(`span`,{className:`sr-only`,children:n===`copied`?`Copied`:`Copy the command`})]})]}),(0,B.jsx)(`p`,{className:`gate-hint`,role:n===`idle`?void 0:`status`,children:n===`copied`?`Copied. Run it in a terminal; it opens this page with the token attached.`:n===`selected`?`This window cannot reach the clipboard, so the command is selected — ${vp} to take it.`:`Run it in a terminal; it opens this page with the token attached.`}),(0,B.jsxs)(`form`,{className:`gate-paste`,onSubmit:e=>{if(e.preventDefault(),i.trim()===``){l.current?.focus();return}let n=ps(i);if(!n){s(!0);return}s(!1),fs(n),t(n)},children:[(0,B.jsx)(`input`,{ref:l,className:`field gate-field`,value:i,onChange:e=>{a(e.target.value),s(!1)},placeholder:`or paste the token, or the URL carrying it`,"aria-label":`Daemon token, or a URL containing it`,"aria-invalid":o||void 0,spellCheck:!1,autoComplete:`off`}),(0,B.jsx)(`button`,{type:`submit`,className:`btn btn-accent`,children:`Connect`})]}),o&&(0,B.jsxs)(`p`,{className:`gate-bad`,role:`alert`,children:[`That is not a token. It is a long run of hex, and the URL the command prints carries one after `,(0,B.jsx)(`code`,{children:`#token=`}),`.`]})]})})}var Cp=document.getElementById(`root`);Cp&&(0,bo.createRoot)(Cp).render((0,B.jsx)(z.StrictMode,{children:(0,B.jsx)(xp,{})}));
@@ -6,7 +6,7 @@
6
6
  <meta name="color-scheme" content="light dark" />
7
7
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
8
8
  <title>Salidium</title>
9
- <script type="module" crossorigin src="/assets/index-DPH48dJH.js"></script>
9
+ <script type="module" crossorigin src="/assets/index-BAFQ-Y4f.js"></script>
10
10
  <link rel="stylesheet" crossorigin href="/assets/index-Bob9Rxh_.css">
11
11
  </head>
12
12
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "salidium",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "bundle"
@@ -14,7 +14,7 @@
14
14
  "bin": {
15
15
  "salidium": "bundle/salidium.mjs"
16
16
  },
17
- "description": "Turn Claude Code and Codex sessions into a clear, evidence-linked report of what changed, why, what was verified, and what needs you.",
17
+ "description": "Turn Claude Code and Codex sessions into a clear, evidence-linked report: what changed, why, what was verified, and what it flagged for a human.",
18
18
  "license": "MIT",
19
19
  "author": "Glendon Chin",
20
20
  "homepage": "https://github.com/twinkling-reality/salidium#readme",