jeopi-cli 16.2.26 → 16.2.27

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.
@@ -2,7 +2,7 @@
2
2
  * `jeopi install <target>` — top-level convenience over `jeopi plugin install` /
3
3
  * `jeopi plugin link`.
4
4
  *
5
- * The docs (omp.sh/docs/extension-authoring) advertise
5
+ * The docs (docs/extensions.md, or `jeopi read omp://extensions.md`) advertise
6
6
  *
7
7
  * jeopi install ./my-extension
8
8
  *
@@ -155,7 +155,7 @@ export declare function calculateDepth(cwd: string, targetDir: string, separator
155
155
  * Discovery rules:
156
156
  * 1. Direct files: `extensions/*.ts` or `*.js` → load
157
157
  * 2. Subdirectory with index: `extensions/<ext>/index.ts` or `index.js` → load
158
- * 3. Subdirectory with package.json: `extensions/<ext>/package.json` with "omp"/"pi" field → load declared paths
158
+ * 3. Subdirectory with package.json: `extensions/<ext>/package.json` with "jeopi"/"pi" field → load declared paths
159
159
  *
160
160
  * No recursion beyond one level. Complex packages must use package.json manifest.
161
161
  * Uses native glob for fast filesystem scanning with gitignore support.
@@ -7,7 +7,7 @@ export interface ExportOptions {
7
7
  outputPath?: string;
8
8
  /**
9
9
  * Which color palette the export ships with.
10
- * - `"web"` (default) — the omp brand identity (collab-web pink/purple),
10
+ * - `"web"` (default) — the jeopi brand identity (collab-web pink/purple),
11
11
  * so public HTML exports and the `/s/<id>` share viewer match the live
12
12
  * `my.omp.sh` client. See `web-palette.ts`.
13
13
  * - `"theme"` — derive from `themeName` (or the active TUI theme), preserving
@@ -27,7 +27,7 @@ export interface ExportOptions {
27
27
  *
28
28
  * Two call shapes:
29
29
  * • `generateThemeVars("web" | "theme", themeName?)` — explicit palette.
30
- * `"web"` (the default for public artifacts) returns the fixed omp brand
30
+ * `"web"` (the default for public artifacts) returns the fixed jeopi brand
31
31
  * palette from `web-palette.ts` — collab-web pink/purple identity, shared
32
32
  * with the live `my.omp.sh` client, so exports and the share viewer render
33
33
  * identically to it. `"theme"` derives from the TUI theme via
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Web/export palette — the omp brand identity shared by the collab-web live
2
+ * Web/export palette — the jeopi brand identity shared by the collab-web live
3
3
  * client (`my.omp.sh/`) and every public HTML export / share viewer (`/s/<id>`).
4
4
  *
5
5
  * Why this exists separately from `modes/theme/dark.json`: the `dark` theme is
6
6
  * the **default TUI theme** — its amber accent (`#febc38`) drives the terminal
7
7
  * status line, syntax highlighting, thinking levels, and bash/python mode
8
- * colors for every omp user. The public web artifacts want the collab-web
8
+ * colors for every jeopi user. The public web artifacts want the collab-web
9
9
  * pink/purple identity instead, so they pin this palette rather than inheriting
10
10
  * the TUI's. Editing `dark.json` to repurpose it for the web would repaint
11
11
  * every terminal; this file keeps the two surfaces decoupled.
@@ -20,9 +20,16 @@ export declare function formatTitleUserMessage(message: string): string;
20
20
  export interface TitleConversationTurn {
21
21
  role: "user" | "assistant";
22
22
  text?: string;
23
- thinking?: string;
24
23
  }
25
- /** Format recent user/assistant context for title generation after a todo replan. */
24
+ /**
25
+ * Format recent user/assistant context for title generation after a todo
26
+ * replan. Assistant `thinking` is intentionally never included: the
27
+ * replan-refresh title model falls back to the session's own current model
28
+ * when no `tiny`/`commit`/`smol` role is configured, so replaying prior
29
+ * reasoning as plaintext here is a `reasoning_extraction` classifier-refusal
30
+ * trigger on Anthropic targets (mirrors the thinking-drop in compaction,
31
+ * memories, and the hindsight transcript extractor).
32
+ */
26
33
  export declare function formatTitleConversationContext(turns: readonly TitleConversationTurn[]): string;
27
34
  /**
28
35
  * True when a first user message is too low-signal to title (greeting, ack,
@@ -13,7 +13,7 @@
13
13
  * (including from subagents) read the cached decision without prompting.
14
14
  *
15
15
  * When the user grants consent, push is automatically active against the
16
- * bundled endpoint (`dev.autoqaPush.endpoint`, default `qa.omp.sh`). Each
16
+ * bundled endpoint (`dev.autoqaPush.endpoint`, default `qa.jeopi.sh`). Each
17
17
  * insert schedules a background flush that POSTs pending rows and deletes
18
18
  * them on HTTP 2xx. `PI_AUTO_QA_PUSH=1` forces push in non-interactive
19
19
  * environments where the consent dialog never fires. Tool execution is
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "jeopi-cli",
4
- "version": "16.2.26",
4
+ "version": "16.2.27",
5
5
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
6
6
  "homepage": "https://github.com/akillness/jeopi",
7
7
  "author": "Can Boluk",
@@ -56,17 +56,17 @@
56
56
  "@agentclientprotocol/sdk": "0.25.0",
57
57
  "@babel/parser": "^7.29.7",
58
58
  "@mozilla/readability": "^0.6.0",
59
- "jeopi-hashline": "16.2.26",
60
- "jeopi-stats": "16.2.26",
61
- "jeopi-agent-core": "16.2.26",
62
- "jeopi-ai": "16.2.26",
63
- "jeopi-catalog": "16.2.26",
64
- "jeopi-mnemopi": "16.2.26",
65
- "jeopi-natives": "16.2.26",
66
- "jeopi-tui": "16.2.26",
67
- "jeopi-utils": "16.2.26",
68
- "jeopi-wire": "16.2.26",
69
- "jeopi-snapcompact": "16.2.26",
59
+ "jeopi-hashline": "16.2.27",
60
+ "jeopi-stats": "16.2.27",
61
+ "jeopi-agent-core": "16.2.27",
62
+ "jeopi-ai": "16.2.27",
63
+ "jeopi-catalog": "16.2.27",
64
+ "jeopi-mnemopi": "16.2.27",
65
+ "jeopi-natives": "16.2.27",
66
+ "jeopi-tui": "16.2.27",
67
+ "jeopi-utils": "16.2.27",
68
+ "jeopi-wire": "16.2.27",
69
+ "jeopi-snapcompact": "16.2.27",
70
70
  "@opentelemetry/api": "^1.9.1",
71
71
  "@opentelemetry/context-async-hooks": "^2.7.1",
72
72
  "@opentelemetry/exporter-trace-otlp-proto": "^0.218.0",
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env bun
2
2
  /**
3
- * Build the standalone share-viewer page the omp relay serves at `GET /s/<id>`.
3
+ * Build the standalone share-viewer page the jeopi relay serves at `GET /s/<id>`.
4
4
  *
5
5
  * Same template as HTML exports, but with no embedded session: share-loader.js
6
6
  * (injected right after the empty #session-data tag) fetches the sealed blob
7
7
  * (gist or relay store), decrypts it with the `#<key>` fragment in-browser, and
8
- * hands the JSON to template.js via `window.__OMP_SESSION_DATA__`.
8
+ * hands the JSON to template.js via `window.__JEOPI_SESSION_DATA__`.
9
9
  *
10
10
  * The relay repo's build script runs this and embeds the output via go:embed.
11
11
  */
@@ -19,18 +19,18 @@ if (!outPath) {
19
19
  }
20
20
 
21
21
  const loaderJs = await Bun.file(new URL("../src/export/html/share-loader.js", import.meta.url).pathname).text();
22
- // Pin the omp brand palette (collab-web pink/purple identity) — the viewer is
22
+ // Pin the jeopi brand palette (collab-web pink/purple identity) — the viewer is
23
23
  // a public artifact matching the live my.omp.sh client, not a per-user export
24
24
  // that should mirror the host's terminal theme.
25
25
  const themeVars = await generateThemeVars("web");
26
26
 
27
27
  const html = getTemplate()
28
28
  .replace("<theme-vars/>", () => `<style>:root { ${themeVars} }</style>`)
29
- .replace("<title>Session Export</title>", () => "<title>omp session</title>")
29
+ .replace("<title>Session Export</title>", () => "<title>jeopi session</title>")
30
30
  .replace("{{SESSION_DATA}}</script>", () => `</script>\n <script>${loaderJs}</script>`);
31
31
 
32
32
  if (html.includes("{{SESSION_DATA}}")) throw new Error("session-data placeholder survived substitution");
33
- if (!html.includes("__OMP_SESSION_DATA__")) throw new Error("share loader not injected");
33
+ if (!html.includes("__JEOPI_SESSION_DATA__")) throw new Error("share loader not injected");
34
34
 
35
35
  await Bun.write(outPath, html);
36
36
  console.log(`Generated ${path.resolve(outPath)} (${(html.length / 1024).toFixed(0)} KB)`);
package/scripts/jeopi CHANGED
@@ -27,14 +27,14 @@ while [ -L "$self" ]; do
27
27
  done
28
28
  scripts_dir=$(CDPATH= cd -- "$(dirname -- "$self")" && pwd -P)
29
29
  cli=$scripts_dir/../src/cli.ts
30
- preload=$scripts_dir/omp.ts
30
+ preload=$scripts_dir/jeopi-preload.ts
31
31
  timing_preload=$scripts_dir/../../utils/src/module-timer.ts
32
32
 
33
- launch_dir=${OMP_DEV_LAUNCH_DIR:-${HOME}/.jeopi/.dev-cwd}
33
+ launch_dir=${JEOPI_DEV_LAUNCH_DIR:-${HOME}/.jeopi/.dev-cwd}
34
34
  mkdir -p "$launch_dir"
35
35
 
36
- OMP_LAUNCH_CWD=$PWD
37
- export OMP_LAUNCH_CWD
36
+ JEOPI_LAUNCH_CWD=$PWD
37
+ export JEOPI_LAUNCH_CWD
38
38
  cd "$launch_dir"
39
39
  if [ -n "${PI_TIMING:-}" ]; then
40
40
  exec bun --preload "$preload" --preload "$timing_preload" "$cli" "$@"
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Bun `--preload` shim for the omp dev launcher (`scripts/omp`).
2
+ * Bun `--preload` shim for the jeopi dev launcher (`scripts/jeopi`).
3
3
  *
4
4
  * The launcher starts Bun from an empty, bunfig-free directory so a foreign
5
- * project's `bunfig.toml` `preload` cannot run inside the omp CLI: Bun reads
5
+ * project's `bunfig.toml` `preload` cannot run inside the jeopi CLI: Bun reads
6
6
  * `bunfig.toml` from the *current working directory* on startup and evaluates
7
7
  * its `preload` entries before the entrypoint, so a bun-shebang bin inherits
8
8
  * whatever `preload` the directory you launched from declares (and crashes if
@@ -10,9 +10,9 @@
10
10
  * imports run, so it restores the user's real working directory in time for
11
11
  * import-time snapshots (e.g. `getProjectDir()` in `jeopi-utils/dirs`).
12
12
  */
13
- const launchCwd = process.env.OMP_LAUNCH_CWD;
13
+ const launchCwd = process.env.JEOPI_LAUNCH_CWD;
14
14
  if (launchCwd) {
15
- delete process.env.OMP_LAUNCH_CWD;
15
+ delete process.env.JEOPI_LAUNCH_CWD;
16
16
  try {
17
17
  process.chdir(launchCwd);
18
18
  } catch {}
@@ -2,7 +2,7 @@
2
2
  * `jeopi install <target>` — top-level convenience over `jeopi plugin install` /
3
3
  * `jeopi plugin link`.
4
4
  *
5
- * The docs (omp.sh/docs/extension-authoring) advertise
5
+ * The docs (docs/extensions.md, or `jeopi read omp://extensions.md`) advertise
6
6
  *
7
7
  * jeopi install ./my-extension
8
8
  *
@@ -85,7 +85,7 @@ export async function createReportBundle(options: ReportBundleOptions): Promise<
85
85
  await fs.mkdir(reportsDir, { recursive: true });
86
86
 
87
87
  const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
88
- const outputPath = path.join(reportsDir, `omp-report-${timestamp}.tar.gz`);
88
+ const outputPath = path.join(reportsDir, `jeopi-report-${timestamp}.tar.gz`);
89
89
 
90
90
  const data: Record<string, string> = {};
91
91
  const files: string[] = [];
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import * as os from "node:os";
6
- import { formatBytes, getProjectDir, VERSION } from "jeopi-utils";
6
+ import { APP_NAME, formatBytes, getProjectDir, VERSION } from "jeopi-utils";
7
7
 
8
8
  export interface SystemInfo {
9
9
  os: string;
@@ -86,7 +86,7 @@ export function formatSystemInfo(info: SystemInfo): string {
86
86
  `CPU: ${info.cpu}`,
87
87
  `Memory: ${formatBytes(info.memory.total)} (${formatBytes(info.memory.free)} free)`,
88
88
  `Bun: ${info.versions.bun}`,
89
- `App: omp ${info.versions.app}`,
89
+ `App: ${APP_NAME} ${info.versions.app}`,
90
90
  `Node: ${info.versions.node} (compat)`,
91
91
  `CWD: ${info.cwd}`,
92
92
  `Shell: ${info.shell}`,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Builtin Provider (.jeopi)
3
3
  *
4
- * Primary provider for OMP native configs. Supports all capabilities.
4
+ * Primary provider for jeopi native configs. Supports all capabilities.
5
5
  */
6
6
  import * as path from "node:path";
7
7
  import { YAML } from "bun";
@@ -36,8 +36,8 @@ import {
36
36
  } from "./helpers";
37
37
 
38
38
  const PROVIDER_ID = "native";
39
- const DISPLAY_NAME = "OMP";
40
- const DESCRIPTION = "Native OMP configuration from ~/.jeopi and .jeopi/";
39
+ const DISPLAY_NAME = "jeopi";
40
+ const DESCRIPTION = "Native jeopi configuration from ~/.jeopi and .jeopi/";
41
41
  const PRIORITY = 100;
42
42
 
43
43
  const PATHS = SOURCE_PATHS.native;
@@ -375,7 +375,7 @@ async function loadRules(ctx: LoadContext): Promise<LoadResult<Rule>> {
375
375
  }
376
376
 
377
377
  // Top-level RULES.md is a sticky always-apply rule. Documented in
378
- // https://omp.sh/docs/context-files as the file that gets "re-injected near
378
+ // docs/context-files.md (or `jeopi read omp://context-files.md`) as the file that gets "re-injected near
379
379
  // the current turn so they keep hold across long conversations".
380
380
  // User scope: ~/.jeopi/agent/RULES.md
381
381
  // Project scope: nearest .jeopi/RULES.md walking up from cwd to repoRoot
@@ -567,7 +567,7 @@ async function readExtensionModuleManifest(
567
567
  * Discovery rules:
568
568
  * 1. Direct files: `extensions/*.ts` or `*.js` → load
569
569
  * 2. Subdirectory with index: `extensions/<ext>/index.ts` or `index.js` → load
570
- * 3. Subdirectory with package.json: `extensions/<ext>/package.json` with "omp"/"pi" field → load declared paths
570
+ * 3. Subdirectory with package.json: `extensions/<ext>/package.json` with "jeopi"/"pi" field → load declared paths
571
571
  *
572
572
  * No recursion beyond one level. Complex packages must use package.json manifest.
573
573
  * Uses native glob for fast filesystem scanning with gitignore support.
@@ -940,7 +940,7 @@ export async function listClaudePluginRoots(
940
940
  }
941
941
  }
942
942
  } else {
943
- warnings.push(`Failed to parse OMP plugin registry: ${ompRegistryPath}`);
943
+ warnings.push(`Failed to parse jeopi plugin registry: ${ompRegistryPath}`);
944
944
  }
945
945
  }
946
946
 
@@ -1,10 +1,10 @@
1
1
  /**
2
- * OMP extension-package sub-discovery provider.
2
+ * jeopi extension-package sub-discovery provider.
3
3
  *
4
4
  * When a user configures an extension via `extensions:` (in settings) or
5
5
  * `--extension`/`-e` (on the CLI), the docs promise that the package's
6
6
  * sibling directories — `skills/`, `hooks/pre|post/`, `tools/`, `commands/`,
7
- * `rules/`, `prompts/`, and `.mcp.json` — are picked up by omp's standard
7
+ * `rules/`, `prompts/`, and `.mcp.json` — are picked up by jeopi's standard
8
8
  * discovery surfaces. The native `jeopi` provider in `builtin.ts` only walks
9
9
  * `.jeopi/` and `~/.jeopi/agent/`, so without this provider those sub-trees are
10
10
  * silently ignored.
@@ -32,7 +32,7 @@ import { buildRuleFromMarkdown, createSourceMeta, loadFilesFromDir, scanSkillsFr
32
32
  import { listOmpExtensionRoots, type OmpExtensionRoot } from "./omp-extension-roots";
33
33
 
34
34
  const PROVIDER_ID = "omp-plugins";
35
- const DISPLAY_NAME = "OMP Extension Packages";
35
+ const DISPLAY_NAME = "jeopi Extension Packages";
36
36
  const DESCRIPTION =
37
37
  "Sub-discovery (skills, hooks, tools, commands, rules, prompts, .mcp.json) inside extension packages";
38
38
  const PRIORITY = 90;
@@ -147,7 +147,7 @@ async function load(ctx: LoadContext): Promise<LoadResult<SSHHost>> {
147
147
  registerProvider(sshCapability.id, {
148
148
  id: PROVIDER_ID,
149
149
  displayName: DISPLAY_NAME,
150
- description: "Load SSH hosts from managed omp paths and legacy ssh.json/.ssh.json files",
150
+ description: "Load SSH hosts from managed jeopi paths and legacy ssh.json/.ssh.json files",
151
151
  priority: 5,
152
152
  load,
153
153
  });
@@ -39,7 +39,7 @@ export interface ExportOptions {
39
39
  outputPath?: string;
40
40
  /**
41
41
  * Which color palette the export ships with.
42
- * - `"web"` (default) — the omp brand identity (collab-web pink/purple),
42
+ * - `"web"` (default) — the jeopi brand identity (collab-web pink/purple),
43
43
  * so public HTML exports and the `/s/<id>` share viewer match the live
44
44
  * `my.omp.sh` client. See `web-palette.ts`.
45
45
  * - `"theme"` — derive from `themeName` (or the active TUI theme), preserving
@@ -120,7 +120,7 @@ function deriveExportColors(baseColor: string): { pageBg: string; cardBg: string
120
120
  *
121
121
  * Two call shapes:
122
122
  * • `generateThemeVars("web" | "theme", themeName?)` — explicit palette.
123
- * `"web"` (the default for public artifacts) returns the fixed omp brand
123
+ * `"web"` (the default for public artifacts) returns the fixed jeopi brand
124
124
  * palette from `web-palette.ts` — collab-web pink/purple identity, shared
125
125
  * with the live `my.omp.sh` client, so exports and the share viewer render
126
126
  * identically to it. `"theme"` derives from the TUI theme via
@@ -5,9 +5,9 @@
5
5
  // SHARE VIEWER BOOTSTRAP
6
6
  // ============================================================
7
7
  //
8
- // Served by the omp relay at /s/<id>; the AES-256-GCM key rides in the
8
+ // Served by the jeopi relay at /s/<id>; the AES-256-GCM key rides in the
9
9
  // URL fragment and never leaves the browser. Resolves the session JSON
10
- // and hands it to template.js via `window.__OMP_SESSION_DATA__`:
10
+ // and hands it to template.js via `window.__JEOPI_SESSION_DATA__`:
11
11
  // 1. hex ids -> secret GitHub gist holding base64(sealed blob)
12
12
  // 2. anything else -> relay blob store at /s/<id>/raw
13
13
  // Sealed layout: [12B IV][AES-256-GCM(gzip(session JSON))].
@@ -36,7 +36,7 @@
36
36
  if (!res.ok) throw new Error('Gist fetch failed: HTTP ' + res.status);
37
37
  var gist = await res.json();
38
38
  var files = Object.values(gist.files || {});
39
- var file = files.find(function(f) { return /\.ompshare\.txt$/.test(f.filename); }) || files[0];
39
+ var file = files.find(function(f) { return /\.jeopishare\.txt$/.test(f.filename); }) || files[0];
40
40
  if (!file) throw new Error('Gist has no files.');
41
41
  var text = file.content;
42
42
  if (!text || file.truncated) {
@@ -89,7 +89,7 @@
89
89
  new Blob([plain]).stream().pipeThrough(new DecompressionStream('gzip'))
90
90
  ).json();
91
91
  if (data && data.header && data.header.title) {
92
- document.title = data.header.title + ' — omp session';
92
+ document.title = data.header.title + ' — jeopi session';
93
93
  }
94
94
  return data;
95
95
  }
@@ -98,5 +98,5 @@
98
98
  // template.js surfaces the failure in-page; swallow the duplicate here
99
99
  // so the console does not report an unhandled rejection.
100
100
  pending.catch(function() {});
101
- window.__OMP_SESSION_DATA__ = pending;
101
+ window.__JEOPI_SESSION_DATA__ = pending;
102
102
  })();
@@ -697,9 +697,9 @@
697
697
  margin-left: 10px;
698
698
  }
699
699
 
700
- /* Tool calls render inside the <omp-tool-view> web component, which draws
700
+ /* Tool calls render inside the <jeopi-tool-view> web component, which draws
701
701
  its own card chrome; the host box collapses to a plain block. */
702
- omp-tool-view.tool-execution {
702
+ jeopi-tool-view.tool-execution {
703
703
  display: block;
704
704
  padding: 0;
705
705
  background: none;
@@ -7,7 +7,7 @@
7
7
  //
8
8
  // Two boot paths share this template:
9
9
  // - Static export: session JSON rides base64-embedded in #session-data.
10
- // - Share viewer: share-loader.js sets `window.__OMP_SESSION_DATA__` to
10
+ // - Share viewer: share-loader.js sets `window.__JEOPI_SESSION_DATA__` to
11
11
  // a promise resolving to the session JSON (fetched + decrypted).
12
12
  // The entire app lives in bootSession(); its body keeps the original
13
13
  // one-level indentation to avoid a whole-file reindent.
@@ -721,13 +721,13 @@
721
721
  // TOOL CALL RENDERING
722
722
  // ============================================================
723
723
  //
724
- // Tool calls render through the bundled <omp-tool-view> web component
724
+ // Tool calls render through the bundled <jeopi-tool-view> web component
725
725
  // (tool-views.generated.js — the same React renderers collab-web uses).
726
726
  // Payloads are handed over via a global store keyed by data-key, which
727
727
  // survives innerHTML serialization and cloneNode round trips.
728
728
 
729
729
  const TOOL_VIEW_DATA = new Map();
730
- globalThis.__OMP_TOOL_VIEW_DATA = TOOL_VIEW_DATA;
730
+ globalThis.__JEOPI_TOOL_VIEW_DATA = TOOL_VIEW_DATA;
731
731
  let toolViewSeq = 0;
732
732
 
733
733
  function renderToolCall(call, sctx) {
@@ -743,7 +743,7 @@
743
743
  openAgent: (id) => openSubSession(joinKey(sctx.prefix, id)),
744
744
  },
745
745
  });
746
- return '<omp-tool-view class="tool-execution ' + statusClass + '" data-key="' + key + '" open></omp-tool-view>';
746
+ return '<jeopi-tool-view class="tool-execution ' + statusClass + '" data-key="' + key + '" open></jeopi-tool-view>';
747
747
  }
748
748
 
749
749
  // ============================================================
@@ -1619,7 +1619,7 @@
1619
1619
  messages.appendChild(div);
1620
1620
  }
1621
1621
 
1622
- const pending = window.__OMP_SESSION_DATA__;
1622
+ const pending = window.__JEOPI_SESSION_DATA__;
1623
1623
  if (pending && typeof pending.then === 'function') {
1624
1624
  pending.then(bootSession, showLoadError);
1625
1625
  } else {
@@ -1,5 +1,5 @@
1
1
  // Auto-generated by packages/collab-web/scripts/build-tool-views.ts - DO NOT EDIT
2
- (()=>{var s=document.createElement("style");s.dataset.ompToolViews="";s.textContent=".tv-card{--tv-fg:var(--fg,var(--text,oklch(.92 .01 307)));--tv-muted:var(--fg-muted,var(--muted,oklch(.71 .016 307)));--tv-faint:var(--fg-faint,var(--dim,oklch(.53 .018 307)));--tv-accent:var(--accent,oklch(.674 .23 341));--tv-ok:var(--ok,var(--success,oklch(.76 .14 150)));--tv-err:var(--err,var(--error,oklch(.66 .19 25)));--tv-warn:var(--warn,var(--warning,oklch(.79 .14 85)));--tv-border:var(--border,oklch(1 0 0/9%));--tv-inset:var(--bg-inset,var(--info-bg,oklch(0 0 0/22%)));--tv-raised:var(--bg-raised,var(--container-bg,oklch(1 0 0/4%)));--tv-ring:var(--ring,oklch(.817 .112 205/70%));--tv-mono:var(--font-mono,ui-monospace,\"SF Mono\",\"Cascadia Mono\",Menlo,Consolas,monospace);border:1px solid var(--tv-border);font-family:var(--tv-mono);color:var(--tv-fg);isolation:isolate;overflow:hidden;border-radius:6px;font-size:12px;line-height:1.5}.tv-card--error{border-color:color-mix(in oklch,var(--tv-err)40%,var(--tv-border))}.tv-head{display:flex;font:inherit;color:inherit;text-align:left;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-items: center;gap:8px;width:100%;padding:5px 10px}.tv-head:hover{background:color-mix(in oklch,var(--tv-fg)4%,transparent)}.tv-head:focus-visible{outline:2px solid var(--tv-ring);outline-offset:-2px}.tv-status{border-radius:50%;flex:none;width:7px;height:7px}.tv-status--ok{background:var(--tv-ok)}.tv-status--err{background:var(--tv-err)}.tv-status--pending{background:var(--tv-faint)}.tv-spin{border:1.5px solid color-mix(in oklch,var(--tv-faint)50%,transparent);border-top-color:var(--tv-accent);animation:tv-rot .7s linear infinite;border-radius:50%;flex:none;width:9px;height:9px}.tv-name{letter-spacing:.02em;color:var(--tv-muted);flex:none;font-size:11px;font-weight:600}.tv-sum{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tv-muted);flex:1;min-width:0;font-size:11.5px}.tv-sum>*{white-space:nowrap}.tv-chev{border-right:1.5px solid var(--tv-faint);border-bottom:1.5px solid var(--tv-faint);flex:none;width:7px;height:7px;margin-left:2px;transition:transform .15s;transform:rotate(-45deg)translateY(-1px)}.tv-head[aria-expanded=true] .tv-chev{transform:rotate(45deg)}.tv-body{display:flex;border-top:1px solid var(--tv-border);flex-direction:column;gap:8px;padding:8px 10px 10px}.tv-intent{color:var(--tv-faint);font-size:11px;font-style:italic}.tv-partial{border-top:1px solid var(--tv-border);color:var(--tv-faint);white-space:pre-wrap;overflow-wrap:anywhere;overflow-y:auto;max-height:160px;margin:0;padding:6px 10px;font-size:11px;line-height:1.45}.tv-badge{display:inline-block;background:var(--tv-raised);color:var(--tv-muted);vertical-align:1px;border-radius:3px;padding:0 5px;font-size:10px;line-height:16px}.tv-badge--accent{background:color-mix(in oklch,var(--tv-accent)16%,transparent);color:color-mix(in oklch,var(--tv-accent)80%,var(--tv-fg))}.tv-badge--ok{background:color-mix(in oklch,var(--tv-ok)14%,transparent);color:var(--tv-ok)}.tv-badge--err{background:color-mix(in oklch,var(--tv-err)14%,transparent);color:var(--tv-err)}.tv-badge--warn{background:color-mix(in oklch,var(--tv-warn)14%,transparent);color:var(--tv-warn)}.tv-badges{display:inline-flex;flex-wrap:wrap;gap:4px}.tv-path{color:var(--tv-fg)}.tv-lines{color:var(--tv-faint)}.tv-pattern{color:color-mix(in oklch,var(--tv-accent)75%,var(--tv-fg))}.tv-muted{color:var(--tv-muted)}.tv-faint{color:var(--tv-faint)}.tv-err-text{color:var(--tv-err)}.tv-ok-text{color:var(--tv-ok)}.tv-agent-link{font:inherit;cursor:pointer;border:0;font-size:10px}.tv-agent-link:hover{background:color-mix(in oklch,var(--tv-accent)26%,transparent);text-decoration:underline}.tv-agent-link:focus-visible{outline:2px solid var(--tv-ring);outline-offset:1px}.tv-agent-link-arrow{opacity:.7}.tv-warn-text{color:var(--tv-warn)}.tv-trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tv-kv{display:grid;grid-template-columns:max-content 1fr;gap:2px 10px;font-size:11.5px}.tv-kv-key{color:var(--tv-faint)}.tv-kv-val{color:var(--tv-fg);overflow-wrap:anywhere;min-width:0}.tv-out{display:flex;flex-direction:column;min-width:0}.tv-pre{background:var(--tv-inset);font-family:var(--tv-mono);overflow-x:auto;tab-size:3;border-radius:4px;margin:0;padding:7px 9px;font-size:11.5px;line-height:1.5}.tv-pre--wrap{white-space:pre-wrap;overflow-wrap:anywhere}.tv-pre--bare{background:0 0;padding:0 1px}.tv-pre--error{color:var(--tv-err)}.tv-out-title{letter-spacing:.05em;text-transform:uppercase;color:var(--tv-faint);padding:0 1px 3px;font-size:10px}.tv-expand{font-family:var(--tv-mono);color:var(--tv-faint);cursor:pointer;background:0 0;border:0;align-self: flex-start;margin-top:3px;padding:0 1px;font-size:10.5px}.tv-expand:hover{color:var(--tv-fg);text-decoration:underline}.tv-expand:focus-visible{outline:2px solid var(--tv-ring);outline-offset:1px;border-radius:2px}.tv-cmd{display:flex;gap:7px;font-size:11.5px}.tv-cmd-prompt{color:var(--tv-accent);user-select:none;flex:none}.tv-cmd-text{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.tv-cmd-env{color:var(--tv-faint)}.tv-diff{background:var(--tv-inset);overflow-x:auto;border-radius:4px;margin:0;padding:5px 0;font-size:11.5px;line-height:1.5}.tv-diff-row{white-space:pre;padding:0 9px}.tv-diff-row--add{background:color-mix(in oklch,var(--tv-ok)11%,transparent);color:color-mix(in oklch,var(--tv-ok)70%,var(--tv-fg))}.tv-diff-row--del{background:color-mix(in oklch,var(--tv-err)11%,transparent);color:color-mix(in oklch,var(--tv-err)70%,var(--tv-fg))}.tv-diff-row--hunk{color:var(--tv-faint)}.tv-diff-row--gap{color:var(--tv-faint);user-select:none}.tv-cells{display:flex;flex-direction:column;gap:8px}.tv-cell{display:flex;flex-direction:column;min-width:0}.tv-cell-title{letter-spacing:.05em;text-transform:uppercase;color:var(--tv-faint);padding:0 1px 3px;font-size:10px}.tv-list{display:flex;flex-direction:column;gap:3px;font-size:11.5px}.tv-row{display:flex;gap:7px;min-width:0}.tv-row-key{color:var(--tv-faint);flex:none}.tv-row-val{overflow-wrap:anywhere;min-width:0}.tv-todo{display:flex;flex-direction:column;gap:2px;font-size:11.5px}.tv-todo-phase{color:var(--tv-muted);letter-spacing:.04em;text-transform:uppercase;margin-top:4px;font-size:10.5px;font-weight:600}.tv-todo-phase:first-child{margin-top:0}.tv-task{display:flex;color:var(--tv-fg);gap:7px}.tv-task-icon{text-align:center;color:var(--tv-faint);flex:none;width:12px}.tv-task--completed{color:var(--tv-faint)}.tv-task--completed .tv-task-icon{color:var(--tv-ok)}.tv-task--in_progress .tv-task-icon{color:var(--tv-accent)}.tv-task--in_progress{color:var(--tv-fg)}.tv-task--abandoned{color:var(--tv-faint);text-decoration:line-through}.tv-note{background:var(--tv-raised);color:var(--tv-muted);overflow-wrap:anywhere;border-radius:4px;padding:6px 9px;font-size:11.5px}.tv-note--err{background:color-mix(in oklch,var(--tv-err)10%,transparent);color:var(--tv-err)}.tv-note--warn{background:color-mix(in oklch,var(--tv-warn)10%,transparent);color:var(--tv-warn)}.tv-note--ok{background:color-mix(in oklch,var(--tv-ok)10%,transparent);color:var(--tv-ok)}.tv-imgs{display:flex;flex-wrap:wrap;gap:6px}.tv-img{border:1px solid var(--tv-border);cursor:zoom-in;background:var(--tv-inset);border-radius:4px;max-width:100%;max-height:180px}.tv-prose{color:var(--tv-fg);white-space:pre-wrap;overflow-wrap:anywhere;font-size:11.5px;line-height:1.55}.tv-pre .hljs-comment,.tv-pre .hljs-quote{color:var(--tv-faint);font-style:italic}.tv-pre .hljs-keyword,.tv-pre .hljs-selector-tag,.tv-pre .hljs-section,.tv-pre .hljs-name,.tv-pre .hljs-tag{color:color-mix(in oklch,var(--tv-accent)72%,var(--tv-fg))}.tv-pre .hljs-string,.tv-pre .hljs-regexp,.tv-pre .hljs-addition{color:var(--tv-ok)}.tv-pre .hljs-number,.tv-pre .hljs-literal,.tv-pre .hljs-symbol,.tv-pre .hljs-bullet,.tv-pre .hljs-link,.tv-pre .hljs-meta{color:var(--tv-warn)}.tv-pre .hljs-title,.tv-pre .hljs-attr,.tv-pre .hljs-attribute,.tv-pre .hljs-selector-id,.tv-pre .hljs-selector-class,.tv-pre .hljs-type,.tv-pre .hljs-built_in{color:color-mix(in oklch,var(--tv-fg)80%,var(--tv-accent))}.tv-pre .hljs-deletion{color:var(--tv-err)}.tv-pre .hljs-emphasis{font-style:italic}.tv-pre .hljs-strong{font-weight:600}@keyframes tv-rot{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.tv-spin{animation:tv-pulse 1.4s ease-in-out infinite}.tv-chev{transition:none}@keyframes tv-pulse{50%{opacity:.35}}}";(document.head||document.documentElement).appendChild(s);})();
2
+ (()=>{var s=document.createElement("style");s.dataset.jeopiToolViews="";s.textContent=".tv-card{--tv-fg:var(--fg,var(--text,oklch(.92 .01 307)));--tv-muted:var(--fg-muted,var(--muted,oklch(.71 .016 307)));--tv-faint:var(--fg-faint,var(--dim,oklch(.53 .018 307)));--tv-accent:var(--accent,oklch(.674 .23 341));--tv-ok:var(--ok,var(--success,oklch(.76 .14 150)));--tv-err:var(--err,var(--error,oklch(.66 .19 25)));--tv-warn:var(--warn,var(--warning,oklch(.79 .14 85)));--tv-border:var(--border,oklch(1 0 0/9%));--tv-inset:var(--bg-inset,var(--info-bg,oklch(0 0 0/22%)));--tv-raised:var(--bg-raised,var(--container-bg,oklch(1 0 0/4%)));--tv-ring:var(--ring,oklch(.817 .112 205/70%));--tv-mono:var(--font-mono,ui-monospace,\"SF Mono\",\"Cascadia Mono\",Menlo,Consolas,monospace);border:1px solid var(--tv-border);font-family:var(--tv-mono);color:var(--tv-fg);isolation:isolate;overflow:hidden;border-radius:6px;font-size:12px;line-height:1.5}.tv-card--error{border-color:color-mix(in oklch,var(--tv-err)40%,var(--tv-border))}.tv-head{display:flex;font:inherit;color:inherit;text-align:left;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-items: center;gap:8px;width:100%;padding:5px 10px}.tv-head:hover{background:color-mix(in oklch,var(--tv-fg)4%,transparent)}.tv-head:focus-visible{outline:2px solid var(--tv-ring);outline-offset:-2px}.tv-status{border-radius:50%;flex:none;width:7px;height:7px}.tv-status--ok{background:var(--tv-ok)}.tv-status--err{background:var(--tv-err)}.tv-status--pending{background:var(--tv-faint)}.tv-spin{border:1.5px solid color-mix(in oklch,var(--tv-faint)50%,transparent);border-top-color:var(--tv-accent);animation:tv-rot .7s linear infinite;border-radius:50%;flex:none;width:9px;height:9px}.tv-name{letter-spacing:.02em;color:var(--tv-muted);flex:none;font-size:11px;font-weight:600}.tv-sum{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tv-muted);flex:1;min-width:0;font-size:11.5px}.tv-sum>*{white-space:nowrap}.tv-chev{border-right:1.5px solid var(--tv-faint);border-bottom:1.5px solid var(--tv-faint);flex:none;width:7px;height:7px;margin-left:2px;transition:transform .15s;transform:rotate(-45deg)translateY(-1px)}.tv-head[aria-expanded=true] .tv-chev{transform:rotate(45deg)}.tv-body{display:flex;border-top:1px solid var(--tv-border);flex-direction:column;gap:8px;padding:8px 10px 10px}.tv-intent{color:var(--tv-faint);font-size:11px;font-style:italic}.tv-partial{border-top:1px solid var(--tv-border);color:var(--tv-faint);white-space:pre-wrap;overflow-wrap:anywhere;overflow-y:auto;max-height:160px;margin:0;padding:6px 10px;font-size:11px;line-height:1.45}.tv-badge{display:inline-block;background:var(--tv-raised);color:var(--tv-muted);vertical-align:1px;border-radius:3px;padding:0 5px;font-size:10px;line-height:16px}.tv-badge--accent{background:color-mix(in oklch,var(--tv-accent)16%,transparent);color:color-mix(in oklch,var(--tv-accent)80%,var(--tv-fg))}.tv-badge--ok{background:color-mix(in oklch,var(--tv-ok)14%,transparent);color:var(--tv-ok)}.tv-badge--err{background:color-mix(in oklch,var(--tv-err)14%,transparent);color:var(--tv-err)}.tv-badge--warn{background:color-mix(in oklch,var(--tv-warn)14%,transparent);color:var(--tv-warn)}.tv-badges{display:inline-flex;flex-wrap:wrap;gap:4px}.tv-path{color:var(--tv-fg)}.tv-lines{color:var(--tv-faint)}.tv-pattern{color:color-mix(in oklch,var(--tv-accent)75%,var(--tv-fg))}.tv-muted{color:var(--tv-muted)}.tv-faint{color:var(--tv-faint)}.tv-err-text{color:var(--tv-err)}.tv-ok-text{color:var(--tv-ok)}.tv-agent-link{font:inherit;cursor:pointer;border:0;font-size:10px}.tv-agent-link:hover{background:color-mix(in oklch,var(--tv-accent)26%,transparent);text-decoration:underline}.tv-agent-link:focus-visible{outline:2px solid var(--tv-ring);outline-offset:1px}.tv-agent-link-arrow{opacity:.7}.tv-warn-text{color:var(--tv-warn)}.tv-trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tv-kv{display:grid;grid-template-columns:max-content 1fr;gap:2px 10px;font-size:11.5px}.tv-kv-key{color:var(--tv-faint)}.tv-kv-val{color:var(--tv-fg);overflow-wrap:anywhere;min-width:0}.tv-out{display:flex;flex-direction:column;min-width:0}.tv-pre{background:var(--tv-inset);font-family:var(--tv-mono);overflow-x:auto;tab-size:3;border-radius:4px;margin:0;padding:7px 9px;font-size:11.5px;line-height:1.5}.tv-pre--wrap{white-space:pre-wrap;overflow-wrap:anywhere}.tv-pre--bare{background:0 0;padding:0 1px}.tv-pre--error{color:var(--tv-err)}.tv-out-title{letter-spacing:.05em;text-transform:uppercase;color:var(--tv-faint);padding:0 1px 3px;font-size:10px}.tv-expand{font-family:var(--tv-mono);color:var(--tv-faint);cursor:pointer;background:0 0;border:0;align-self: flex-start;margin-top:3px;padding:0 1px;font-size:10.5px}.tv-expand:hover{color:var(--tv-fg);text-decoration:underline}.tv-expand:focus-visible{outline:2px solid var(--tv-ring);outline-offset:1px;border-radius:2px}.tv-cmd{display:flex;gap:7px;font-size:11.5px}.tv-cmd-prompt{color:var(--tv-accent);user-select:none;flex:none}.tv-cmd-text{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.tv-cmd-env{color:var(--tv-faint)}.tv-diff{background:var(--tv-inset);overflow-x:auto;border-radius:4px;margin:0;padding:5px 0;font-size:11.5px;line-height:1.5}.tv-diff-row{white-space:pre;padding:0 9px}.tv-diff-row--add{background:color-mix(in oklch,var(--tv-ok)11%,transparent);color:color-mix(in oklch,var(--tv-ok)70%,var(--tv-fg))}.tv-diff-row--del{background:color-mix(in oklch,var(--tv-err)11%,transparent);color:color-mix(in oklch,var(--tv-err)70%,var(--tv-fg))}.tv-diff-row--hunk{color:var(--tv-faint)}.tv-diff-row--gap{color:var(--tv-faint);user-select:none}.tv-cells{display:flex;flex-direction:column;gap:8px}.tv-cell{display:flex;flex-direction:column;min-width:0}.tv-cell-title{letter-spacing:.05em;text-transform:uppercase;color:var(--tv-faint);padding:0 1px 3px;font-size:10px}.tv-list{display:flex;flex-direction:column;gap:3px;font-size:11.5px}.tv-row{display:flex;gap:7px;min-width:0}.tv-row-key{color:var(--tv-faint);flex:none}.tv-row-val{overflow-wrap:anywhere;min-width:0}.tv-todo{display:flex;flex-direction:column;gap:2px;font-size:11.5px}.tv-todo-phase{color:var(--tv-muted);letter-spacing:.04em;text-transform:uppercase;margin-top:4px;font-size:10.5px;font-weight:600}.tv-todo-phase:first-child{margin-top:0}.tv-task{display:flex;color:var(--tv-fg);gap:7px}.tv-task-icon{text-align:center;color:var(--tv-faint);flex:none;width:12px}.tv-task--completed{color:var(--tv-faint)}.tv-task--completed .tv-task-icon{color:var(--tv-ok)}.tv-task--in_progress .tv-task-icon{color:var(--tv-accent)}.tv-task--in_progress{color:var(--tv-fg)}.tv-task--abandoned{color:var(--tv-faint);text-decoration:line-through}.tv-note{background:var(--tv-raised);color:var(--tv-muted);overflow-wrap:anywhere;border-radius:4px;padding:6px 9px;font-size:11.5px}.tv-note--err{background:color-mix(in oklch,var(--tv-err)10%,transparent);color:var(--tv-err)}.tv-note--warn{background:color-mix(in oklch,var(--tv-warn)10%,transparent);color:var(--tv-warn)}.tv-note--ok{background:color-mix(in oklch,var(--tv-ok)10%,transparent);color:var(--tv-ok)}.tv-imgs{display:flex;flex-wrap:wrap;gap:6px}.tv-img{border:1px solid var(--tv-border);cursor:zoom-in;background:var(--tv-inset);border-radius:4px;max-width:100%;max-height:180px}.tv-prose{color:var(--tv-fg);white-space:pre-wrap;overflow-wrap:anywhere;font-size:11.5px;line-height:1.55}.tv-pre .hljs-comment,.tv-pre .hljs-quote{color:var(--tv-faint);font-style:italic}.tv-pre .hljs-keyword,.tv-pre .hljs-selector-tag,.tv-pre .hljs-section,.tv-pre .hljs-name,.tv-pre .hljs-tag{color:color-mix(in oklch,var(--tv-accent)72%,var(--tv-fg))}.tv-pre .hljs-string,.tv-pre .hljs-regexp,.tv-pre .hljs-addition{color:var(--tv-ok)}.tv-pre .hljs-number,.tv-pre .hljs-literal,.tv-pre .hljs-symbol,.tv-pre .hljs-bullet,.tv-pre .hljs-link,.tv-pre .hljs-meta{color:var(--tv-warn)}.tv-pre .hljs-title,.tv-pre .hljs-attr,.tv-pre .hljs-attribute,.tv-pre .hljs-selector-id,.tv-pre .hljs-selector-class,.tv-pre .hljs-type,.tv-pre .hljs-built_in{color:color-mix(in oklch,var(--tv-fg)80%,var(--tv-accent))}.tv-pre .hljs-deletion{color:var(--tv-err)}.tv-pre .hljs-emphasis{font-style:italic}.tv-pre .hljs-strong{font-weight:600}@keyframes tv-rot{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.tv-spin{animation:tv-pulse 1.4s ease-in-out infinite}.tv-chev{transition:none}@keyframes tv-pulse{50%{opacity:.35}}}";(document.head||document.documentElement).appendChild(s);})();
3
3
  (()=>{var VA=Object.create;var{getPrototypeOf:OA,defineProperty:U8,getOwnPropertyNames:FA}=Object;var NA=Object.prototype.hasOwnProperty;function IA(Y){return this[Y]}var TA,KA,K=(Y,Z,X)=>{var f=Y!=null&&typeof Y==="object";if(f){var G=Z?TA??=new WeakMap:KA??=new WeakMap,z=G.get(Y);if(z)return z}X=Y!=null?VA(OA(Y)):{};let J=Z||!Y||!Y.__esModule?U8(X,"default",{value:Y,enumerable:!0}):X;for(let U of FA(Y))if(!NA.call(J,U))U8(J,U,{get:IA.bind(Y,U),enumerable:!0});if(f)G.set(Y,J);return J};var n7=(Y,Z)=>()=>(Z||Y((Z={exports:{}}).exports,Z),Z.exports);var _8=n7(($0)=>{function Q1(Y,Z){var X=Y.length;Y.push(Z);Y:for(;0<X;){var f=X-1>>>1,G=Y[f];if(0<kX(G,Z))Y[f]=Z,Y[X]=G,X=f;else break Y}}function r7(Y){return Y.length===0?null:Y[0]}function vX(Y){if(Y.length===0)return null;var Z=Y[0],X=Y.pop();if(X!==Z){Y[0]=X;Y:for(var f=0,G=Y.length,z=G>>>1;f<z;){var J=2*(f+1)-1,U=Y[J],H=J+1,W=Y[H];if(0>kX(U,X))H<G&&0>kX(W,U)?(Y[f]=W,Y[H]=X,f=H):(Y[f]=U,Y[J]=X,f=J);else if(H<G&&0>kX(W,X))Y[f]=W,Y[H]=X,f=H;else break Y}}return Z}function kX(Y,Z){var X=Y.sortIndex-Z.sortIndex;return X!==0?X:Y.id-Z.id}$0.unstable_now=void 0;if(typeof performance==="object"&&typeof performance.now==="function")M1=performance,$0.unstable_now=function(){return M1.now()};else bX=Date,_1=bX.now(),$0.unstable_now=function(){return bX.now()-_1};var M1,bX,_1,f6=[],K6=[],$A=1,E7=null,J7=3,R1=!1,VZ=!1,OZ=!1,L1=!1,A8=typeof setTimeout==="function"?setTimeout:null,W8=typeof clearTimeout==="function"?clearTimeout:null,H8=typeof setImmediate<"u"?setImmediate:null;function PX(Y){for(var Z=r7(K6);Z!==null;){if(Z.callback===null)vX(K6);else if(Z.startTime<=Y)vX(K6),Z.sortIndex=Z.expirationTime,Q1(f6,Z);else break;Z=r7(K6)}}function D1(Y){if(OZ=!1,PX(Y),!VZ)if(r7(f6)!==null)VZ=!0,KY||(KY=!0,TY());else{var Z=r7(K6);Z!==null&&B1(D1,Z.startTime-Y)}}var KY=!1,FZ=-1,q8=5,Q8=-1;function M8(){return L1?!0:$0.unstable_now()-Q8<q8?!1:!0}function q1(){if(L1=!1,KY){var Y=$0.unstable_now();Q8=Y;var Z=!0;try{Y:{VZ=!1,OZ&&(OZ=!1,W8(FZ),FZ=-1),R1=!0;var X=J7;try{Z:{PX(Y);for(E7=r7(f6);E7!==null&&!(E7.expirationTime>Y&&M8());){var f=E7.callback;if(typeof f==="function"){E7.callback=null,J7=E7.priorityLevel;var G=f(E7.expirationTime<=Y);if(Y=$0.unstable_now(),typeof G==="function"){E7.callback=G,PX(Y),Z=!0;break Z}E7===r7(f6)&&vX(f6),PX(Y)}else vX(f6);E7=r7(f6)}if(E7!==null)Z=!0;else{var z=r7(K6);z!==null&&B1(D1,z.startTime-Y),Z=!1}}break Y}finally{E7=null,J7=X,R1=!1}Z=void 0}}finally{Z?TY():KY=!1}}}var TY;if(typeof H8==="function")TY=function(){H8(q1)};else if(typeof MessageChannel<"u")EX=new MessageChannel,w1=EX.port2,EX.port1.onmessage=q1,TY=function(){w1.postMessage(null)};else TY=function(){A8(q1,0)};var EX,w1;function B1(Y,Z){FZ=A8(function(){Y($0.unstable_now())},Z)}$0.unstable_IdlePriority=5;$0.unstable_ImmediatePriority=1;$0.unstable_LowPriority=4;$0.unstable_NormalPriority=3;$0.unstable_Profiling=null;$0.unstable_UserBlockingPriority=2;$0.unstable_cancelCallback=function(Y){Y.callback=null};$0.unstable_forceFrameRate=function(Y){0>Y||125<Y?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):q8=0<Y?Math.floor(1000/Y):5};$0.unstable_getCurrentPriorityLevel=function(){return J7};$0.unstable_next=function(Y){switch(J7){case 1:case 2:case 3:var Z=3;break;default:Z=J7}var X=J7;J7=Z;try{return Y()}finally{J7=X}};$0.unstable_requestPaint=function(){L1=!0};$0.unstable_runWithPriority=function(Y,Z){switch(Y){case 1:case 2:case 3:case 4:case 5:break;default:Y=3}var X=J7;J7=Y;try{return Z()}finally{J7=X}};$0.unstable_scheduleCallback=function(Y,Z,X){var f=$0.unstable_now();switch(typeof X==="object"&&X!==null?(X=X.delay,X=typeof X==="number"&&0<X?f+X:f):X=f,Y){case 1:var G=-1;break;case 2:G=250;break;case 5:G=1073741823;break;case 4:G=1e4;break;default:G=5000}return G=X+G,Y={id:$A++,callback:Z,priorityLevel:Y,startTime:X,expirationTime:G,sortIndex:-1},X>f?(Y.sortIndex=X,Q1(K6,Y),r7(f6)===null&&Y===r7(K6)&&(OZ?(W8(FZ),FZ=-1):OZ=!0,B1(D1,X-f))):(Y.sortIndex=G,Q1(f6,Y),VZ||R1||(VZ=!0,KY||(KY=!0,TY()))),Y};$0.unstable_shouldYield=M8;$0.unstable_wrapCallback=function(Y){var Z=J7;return function(){var X=J7;J7=Z;try{return Y.apply(this,arguments)}finally{J7=X}}}});var w8=n7((MM,R8)=>{R8.exports=_8()});var $8=n7((l)=>{var F1=Symbol.for("react.transitional.element"),SA=Symbol.for("react.portal"),CA=Symbol.for("react.fragment"),kA=Symbol.for("react.strict_mode"),bA=Symbol.for("react.profiler"),PA=Symbol.for("react.consumer"),EA=Symbol.for("react.context"),vA=Symbol.for("react.forward_ref"),hA=Symbol.for("react.suspense"),jA=Symbol.for("react.memo"),O8=Symbol.for("react.lazy"),xA=Symbol.for("react.activity"),L8=Symbol.iterator;function yA(Y){if(Y===null||typeof Y!=="object")return null;return Y=L8&&Y[L8]||Y["@@iterator"],typeof Y==="function"?Y:null}var F8={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},N8=Object.assign,I8={};function SY(Y,Z,X){this.props=Y,this.context=Z,this.refs=I8,this.updater=X||F8}SY.prototype.isReactComponent={};SY.prototype.setState=function(Y,Z){if(typeof Y!=="object"&&typeof Y!=="function"&&Y!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,Y,Z,"setState")};SY.prototype.forceUpdate=function(Y){this.updater.enqueueForceUpdate(this,Y,"forceUpdate")};function T8(){}T8.prototype=SY.prototype;function N1(Y,Z,X){this.props=Y,this.context=Z,this.refs=I8,this.updater=X||F8}var I1=N1.prototype=new T8;I1.constructor=N1;N8(I1,SY.prototype);I1.isPureReactComponent=!0;var D8=Array.isArray;function O1(){}var F0={H:null,A:null,T:null,S:null},K8=Object.prototype.hasOwnProperty;function T1(Y,Z,X){var f=X.ref;return{$$typeof:F1,type:Y,key:Z,ref:f!==void 0?f:null,props:X}}function gA(Y,Z){return T1(Y.type,Z,Y.props)}function K1(Y){return typeof Y==="object"&&Y!==null&&Y.$$typeof===F1}function mA(Y){var Z={"=":"=0",":":"=2"};return"$"+Y.replace(/[=:]/g,function(X){return Z[X]})}var B8=/\/+/g;function V1(Y,Z){return typeof Y==="object"&&Y!==null&&Y.key!=null?mA(""+Y.key):Z.toString(36)}function uA(Y){switch(Y.status){case"fulfilled":return Y.value;case"rejected":throw Y.reason;default:switch(typeof Y.status==="string"?Y.then(O1,O1):(Y.status="pending",Y.then(function(Z){Y.status==="pending"&&(Y.status="fulfilled",Y.value=Z)},function(Z){Y.status==="pending"&&(Y.status="rejected",Y.reason=Z)})),Y.status){case"fulfilled":return Y.value;case"rejected":throw Y.reason}}throw Y}function $Y(Y,Z,X,f,G){var z=typeof Y;if(z==="undefined"||z==="boolean")Y=null;var J=!1;if(Y===null)J=!0;else switch(z){case"bigint":case"string":case"number":J=!0;break;case"object":switch(Y.$$typeof){case F1:case SA:J=!0;break;case O8:return J=Y._init,$Y(J(Y._payload),Z,X,f,G)}}if(J)return G=G(Y),J=f===""?"."+V1(Y,0):f,D8(G)?(X="",J!=null&&(X=J.replace(B8,"$&/")+"/"),$Y(G,Z,X,"",function(W){return W})):G!=null&&(K1(G)&&(G=gA(G,X+(G.key==null||Y&&Y.key===G.key?"":(""+G.key).replace(B8,"$&/")+"/")+J)),Z.push(G)),1;J=0;var U=f===""?".":f+":";if(D8(Y))for(var H=0;H<Y.length;H++)f=Y[H],z=U+V1(f,H),J+=$Y(f,Z,X,z,G);else if(H=yA(Y),typeof H==="function")for(Y=H.call(Y),H=0;!(f=Y.next()).done;)f=f.value,z=U+V1(f,H++),J+=$Y(f,Z,X,z,G);else if(z==="object"){if(typeof Y.then==="function")return $Y(uA(Y),Z,X,f,G);throw Z=String(Y),Error("Objects are not valid as a React child (found: "+(Z==="[object Object]"?"object with keys {"+Object.keys(Y).join(", ")+"}":Z)+"). If you meant to render a collection of children, use an array instead.")}return J}function hX(Y,Z,X){if(Y==null)return Y;var f=[],G=0;return $Y(Y,f,"","",function(z){return Z.call(X,z,G++)}),f}function cA(Y){if(Y._status===-1){var Z=Y._result;Z=Z(),Z.then(function(X){if(Y._status===0||Y._status===-1)Y._status=1,Y._result=X},function(X){if(Y._status===0||Y._status===-1)Y._status=2,Y._result=X}),Y._status===-1&&(Y._status=0,Y._result=Z)}if(Y._status===1)return Y._result.default;throw Y._result}var V8=typeof reportError==="function"?reportError:function(Y){if(typeof window==="object"&&typeof window.ErrorEvent==="function"){var Z=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof Y==="object"&&Y!==null&&typeof Y.message==="string"?String(Y.message):String(Y),error:Y});if(!window.dispatchEvent(Z))return}else if(typeof process==="object"&&typeof process.emit==="function"){process.emit("uncaughtException",Y);return}console.error(Y)},dA={map:hX,forEach:function(Y,Z,X){hX(Y,function(){Z.apply(this,arguments)},X)},count:function(Y){var Z=0;return hX(Y,function(){Z++}),Z},toArray:function(Y){return hX(Y,function(Z){return Z})||[]},only:function(Y){if(!K1(Y))throw Error("React.Children.only expected to receive a single React element child.");return Y}};l.Activity=xA;l.Children=dA;l.Component=SY;l.Fragment=CA;l.Profiler=bA;l.PureComponent=N1;l.StrictMode=kA;l.Suspense=hA;l.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=F0;l.__COMPILER_RUNTIME={__proto__:null,c:function(Y){return F0.H.useMemoCache(Y)}};l.cache=function(Y){return function(){return Y.apply(null,arguments)}};l.cacheSignal=function(){return null};l.cloneElement=function(Y,Z,X){if(Y===null||Y===void 0)throw Error("The argument must be a React element, but you passed "+Y+".");var f=N8({},Y.props),G=Y.key;if(Z!=null)for(z in Z.key!==void 0&&(G=""+Z.key),Z)!K8.call(Z,z)||z==="key"||z==="__self"||z==="__source"||z==="ref"&&Z.ref===void 0||(f[z]=Z[z]);var z=arguments.length-2;if(z===1)f.children=X;else if(1<z){for(var J=Array(z),U=0;U<z;U++)J[U]=arguments[U+2];f.children=J}return T1(Y.type,G,f)};l.createContext=function(Y){return Y={$$typeof:EA,_currentValue:Y,_currentValue2:Y,_threadCount:0,Provider:null,Consumer:null},Y.Provider=Y,Y.Consumer={$$typeof:PA,_context:Y},Y};l.createElement=function(Y,Z,X){var f,G={},z=null;if(Z!=null)for(f in Z.key!==void 0&&(z=""+Z.key),Z)K8.call(Z,f)&&f!=="key"&&f!=="__self"&&f!=="__source"&&(G[f]=Z[f]);var J=arguments.length-2;if(J===1)G.children=X;else if(1<J){for(var U=Array(J),H=0;H<J;H++)U[H]=arguments[H+2];G.children=U}if(Y&&Y.defaultProps)for(f in J=Y.defaultProps,J)G[f]===void 0&&(G[f]=J[f]);return T1(Y,z,G)};l.createRef=function(){return{current:null}};l.forwardRef=function(Y){return{$$typeof:vA,render:Y}};l.isValidElement=K1;l.lazy=function(Y){return{$$typeof:O8,_payload:{_status:-1,_result:Y},_init:cA}};l.memo=function(Y,Z){return{$$typeof:jA,type:Y,compare:Z===void 0?null:Z}};l.startTransition=function(Y){var Z=F0.T,X={};F0.T=X;try{var f=Y(),G=F0.S;G!==null&&G(X,f),typeof f==="object"&&f!==null&&typeof f.then==="function"&&f.then(O1,V8)}catch(z){V8(z)}finally{Z!==null&&X.types!==null&&(Z.types=X.types),F0.T=Z}};l.unstable_useCacheRefresh=function(){return F0.H.useCacheRefresh()};l.use=function(Y){return F0.H.use(Y)};l.useActionState=function(Y,Z,X){return F0.H.useActionState(Y,Z,X)};l.useCallback=function(Y,Z){return F0.H.useCallback(Y,Z)};l.useContext=function(Y){return F0.H.useContext(Y)};l.useDebugValue=function(){};l.useDeferredValue=function(Y,Z){return F0.H.useDeferredValue(Y,Z)};l.useEffect=function(Y,Z){return F0.H.useEffect(Y,Z)};l.useEffectEvent=function(Y){return F0.H.useEffectEvent(Y)};l.useId=function(){return F0.H.useId()};l.useImperativeHandle=function(Y,Z,X){return F0.H.useImperativeHandle(Y,Z,X)};l.useInsertionEffect=function(Y,Z){return F0.H.useInsertionEffect(Y,Z)};l.useLayoutEffect=function(Y,Z){return F0.H.useLayoutEffect(Y,Z)};l.useMemo=function(Y,Z){return F0.H.useMemo(Y,Z)};l.useOptimistic=function(Y,Z){return F0.H.useOptimistic(Y,Z)};l.useReducer=function(Y,Z,X){return F0.H.useReducer(Y,Z,X)};l.useRef=function(Y){return F0.H.useRef(Y)};l.useState=function(Y){return F0.H.useState(Y)};l.useSyncExternalStore=function(Y,Z,X){return F0.H.useSyncExternalStore(Y,Z,X)};l.useTransition=function(){return F0.H.useTransition()};l.version="19.2.7"});var NZ=n7((RM,S8)=>{S8.exports=$8()});var k8=n7((A7)=>{var lA=NZ();function C8(Y){var Z="https://react.dev/errors/"+Y;if(1<arguments.length){Z+="?args[]="+encodeURIComponent(arguments[1]);for(var X=2;X<arguments.length;X++)Z+="&args[]="+encodeURIComponent(arguments[X])}return"Minified React error #"+Y+"; visit "+Z+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function $6(){}var H7={d:{f:$6,r:function(){throw Error(C8(522))},D:$6,C:$6,L:$6,m:$6,X:$6,S:$6,M:$6},p:0,findDOMNode:null},pA=Symbol.for("react.portal");function iA(Y,Z,X){var f=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:pA,key:f==null?null:""+f,children:Y,containerInfo:Z,implementation:X}}var IZ=lA.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function jX(Y,Z){if(Y==="font")return"";if(typeof Z==="string")return Z==="use-credentials"?Z:""}A7.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=H7;A7.createPortal=function(Y,Z){var X=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!Z||Z.nodeType!==1&&Z.nodeType!==9&&Z.nodeType!==11)throw Error(C8(299));return iA(Y,Z,null,X)};A7.flushSync=function(Y){var Z=IZ.T,X=H7.p;try{if(IZ.T=null,H7.p=2,Y)return Y()}finally{IZ.T=Z,H7.p=X,H7.d.f()}};A7.preconnect=function(Y,Z){typeof Y==="string"&&(Z?(Z=Z.crossOrigin,Z=typeof Z==="string"?Z==="use-credentials"?Z:"":void 0):Z=null,H7.d.C(Y,Z))};A7.prefetchDNS=function(Y){typeof Y==="string"&&H7.d.D(Y)};A7.preinit=function(Y,Z){if(typeof Y==="string"&&Z&&typeof Z.as==="string"){var X=Z.as,f=jX(X,Z.crossOrigin),G=typeof Z.integrity==="string"?Z.integrity:void 0,z=typeof Z.fetchPriority==="string"?Z.fetchPriority:void 0;X==="style"?H7.d.S(Y,typeof Z.precedence==="string"?Z.precedence:void 0,{crossOrigin:f,integrity:G,fetchPriority:z}):X==="script"&&H7.d.X(Y,{crossOrigin:f,integrity:G,fetchPriority:z,nonce:typeof Z.nonce==="string"?Z.nonce:void 0})}};A7.preinitModule=function(Y,Z){if(typeof Y==="string")if(typeof Z==="object"&&Z!==null){if(Z.as==null||Z.as==="script"){var X=jX(Z.as,Z.crossOrigin);H7.d.M(Y,{crossOrigin:X,integrity:typeof Z.integrity==="string"?Z.integrity:void 0,nonce:typeof Z.nonce==="string"?Z.nonce:void 0})}}else Z==null&&H7.d.M(Y)};A7.preload=function(Y,Z){if(typeof Y==="string"&&typeof Z==="object"&&Z!==null&&typeof Z.as==="string"){var X=Z.as,f=jX(X,Z.crossOrigin);H7.d.L(Y,X,{crossOrigin:f,integrity:typeof Z.integrity==="string"?Z.integrity:void 0,nonce:typeof Z.nonce==="string"?Z.nonce:void 0,type:typeof Z.type==="string"?Z.type:void 0,fetchPriority:typeof Z.fetchPriority==="string"?Z.fetchPriority:void 0,referrerPolicy:typeof Z.referrerPolicy==="string"?Z.referrerPolicy:void 0,imageSrcSet:typeof Z.imageSrcSet==="string"?Z.imageSrcSet:void 0,imageSizes:typeof Z.imageSizes==="string"?Z.imageSizes:void 0,media:typeof Z.media==="string"?Z.media:void 0})}};A7.preloadModule=function(Y,Z){if(typeof Y==="string")if(Z){var X=jX(Z.as,Z.crossOrigin);H7.d.m(Y,{as:typeof Z.as==="string"&&Z.as!=="script"?Z.as:void 0,crossOrigin:X,integrity:typeof Z.integrity==="string"?Z.integrity:void 0})}else H7.d.m(Y)};A7.requestFormReset=function(Y){H7.d.r(Y)};A7.unstable_batchedUpdates=function(Y,Z){return Y(Z)};A7.useFormState=function(Y,Z,X){return IZ.H.useFormState(Y,Z,X)};A7.useFormStatus=function(){return IZ.H.useHostTransitionStatus()};A7.version="19.2.7"});var E8=n7((LM,P8)=>{function b8(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=="function")return;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(b8)}catch(Y){console.error(Y)}}b8(),P8.exports=k8()});var dU=n7((z1)=>{var i0=w8(),fJ=NZ(),oA=E8();function F(Y){var Z="https://react.dev/errors/"+Y;if(1<arguments.length){Z+="?args[]="+encodeURIComponent(arguments[1]);for(var X=2;X<arguments.length;X++)Z+="&args[]="+encodeURIComponent(arguments[X])}return"Minified React error #"+Y+"; visit "+Z+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function GJ(Y){return!(!Y||Y.nodeType!==1&&Y.nodeType!==9&&Y.nodeType!==11)}function MX(Y){var Z=Y,X=Y;if(Y.alternate)for(;Z.return;)Z=Z.return;else{Y=Z;do Z=Y,(Z.flags&4098)!==0&&(X=Z.return),Y=Z.return;while(Y)}return Z.tag===3?X:null}function zJ(Y){if(Y.tag===13){var Z=Y.memoizedState;if(Z===null&&(Y=Y.alternate,Y!==null&&(Z=Y.memoizedState)),Z!==null)return Z.dehydrated}return null}function JJ(Y){if(Y.tag===31){var Z=Y.memoizedState;if(Z===null&&(Y=Y.alternate,Y!==null&&(Z=Y.memoizedState)),Z!==null)return Z.dehydrated}return null}function v8(Y){if(MX(Y)!==Y)throw Error(F(188))}function nA(Y){var Z=Y.alternate;if(!Z){if(Z=MX(Y),Z===null)throw Error(F(188));return Z!==Y?null:Y}for(var X=Y,f=Z;;){var G=X.return;if(G===null)break;var z=G.alternate;if(z===null){if(f=G.return,f!==null){X=f;continue}break}if(G.child===z.child){for(z=G.child;z;){if(z===X)return v8(G),Y;if(z===f)return v8(G),Z;z=z.sibling}throw Error(F(188))}if(X.return!==f.return)X=G,f=z;else{for(var J=!1,U=G.child;U;){if(U===X){J=!0,X=G,f=z;break}if(U===f){J=!0,f=G,X=z;break}U=U.sibling}if(!J){for(U=z.child;U;){if(U===X){J=!0,X=z,f=G;break}if(U===f){J=!0,f=z,X=G;break}U=U.sibling}if(!J)throw Error(F(189))}}if(X.alternate!==f)throw Error(F(190))}if(X.tag!==3)throw Error(F(188));return X.stateNode.current===X?Y:Z}function UJ(Y){var Z=Y.tag;if(Z===5||Z===26||Z===27||Z===6)return Y;for(Y=Y.child;Y!==null;){if(Z=UJ(Y),Z!==null)return Z;Y=Y.sibling}return null}var T0=Object.assign,rA=Symbol.for("react.element"),xX=Symbol.for("react.transitional.element"),bZ=Symbol.for("react.portal"),vY=Symbol.for("react.fragment"),HJ=Symbol.for("react.strict_mode"),z4=Symbol.for("react.profiler"),AJ=Symbol.for("react.consumer"),q6=Symbol.for("react.context"),XG=Symbol.for("react.forward_ref"),J4=Symbol.for("react.suspense"),U4=Symbol.for("react.suspense_list"),fG=Symbol.for("react.memo"),S6=Symbol.for("react.lazy"),H4=Symbol.for("react.activity"),aA=Symbol.for("react.memo_cache_sentinel"),h8=Symbol.iterator;function TZ(Y){if(Y===null||typeof Y!=="object")return null;return Y=h8&&Y[h8]||Y["@@iterator"],typeof Y==="function"?Y:null}var sA=Symbol.for("react.client.reference");function A4(Y){if(Y==null)return null;if(typeof Y==="function")return Y.$$typeof===sA?null:Y.displayName||Y.name||null;if(typeof Y==="string")return Y;switch(Y){case vY:return"Fragment";case z4:return"Profiler";case HJ:return"StrictMode";case J4:return"Suspense";case U4:return"SuspenseList";case H4:return"Activity"}if(typeof Y==="object")switch(Y.$$typeof){case bZ:return"Portal";case q6:return Y.displayName||"Context";case AJ:return(Y._context.displayName||"Context")+".Consumer";case XG:var Z=Y.render;return Y=Y.displayName,Y||(Y=Z.displayName||Z.name||"",Y=Y!==""?"ForwardRef("+Y+")":"ForwardRef"),Y;case fG:return Z=Y.displayName||null,Z!==null?Z:A4(Y.type)||"Memo";case S6:Z=Y._payload,Y=Y._init;try{return A4(Y(Z))}catch(X){}}return null}var PZ=Array.isArray,c=fJ.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,A0=oA.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,AY={pending:!1,data:null,method:null,action:null},W4=[],hY=-1;function Y6(Y){return{current:Y}}function a0(Y){0>hY||(Y.current=W4[hY],W4[hY]=null,hY--)}function V0(Y,Z){hY++,W4[hY]=Y.current,Y.current=Z}var e7=Y6(null),eZ=Y6(null),g6=Y6(null),Mf=Y6(null);function _f(Y,Z){switch(V0(g6,Z),V0(eZ,Y),V0(e7,null),Z.nodeType){case 9:case 11:Y=(Y=Z.documentElement)?(Y=Y.namespaceURI)?mz(Y):0:0;break;default:if(Y=Z.tagName,Z=Z.namespaceURI)Z=mz(Z),Y=CU(Z,Y);else switch(Y){case"svg":Y=1;break;case"math":Y=2;break;default:Y=0}}a0(e7),V0(e7,Y)}function eY(){a0(e7),a0(eZ),a0(g6)}function q4(Y){Y.memoizedState!==null&&V0(Mf,Y);var Z=e7.current,X=CU(Z,Y.type);Z!==X&&(V0(eZ,Y),V0(e7,X))}function Rf(Y){eZ.current===Y&&(a0(e7),a0(eZ)),Mf.current===Y&&(a0(Mf),WX._currentValue=AY)}var $1,j8;function GY(Y){if($1===void 0)try{throw Error()}catch(X){var Z=X.stack.trim().match(/\n( *(at )?)/);$1=Z&&Z[1]||"",j8=-1<X.stack.indexOf(`
4
4
  at`)?" (<anonymous>)":-1<X.stack.indexOf("@")?"@unknown:0:0":""}return`
5
5
  `+$1+Y+j8}var S1=!1;function C1(Y,Z){if(!Y||S1)return"";S1=!0;var X=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var f={DetermineComponentFrameRoot:function(){try{if(Z){var R=function(){throw Error()};if(Object.defineProperty(R.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==="object"&&Reflect.construct){try{Reflect.construct(R,[])}catch(M){var q=M}Reflect.construct(Y,[],R)}else{try{R.call()}catch(M){q=M}Y.call(R.prototype)}}else{try{throw Error()}catch(M){q=M}(R=Y())&&typeof R.catch==="function"&&R.catch(function(){})}}catch(M){if(M&&q&&typeof M.stack==="string")return[M.stack,q.stack]}return[null,null]}};f.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var G=Object.getOwnPropertyDescriptor(f.DetermineComponentFrameRoot,"name");G&&G.configurable&&Object.defineProperty(f.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var z=f.DetermineComponentFrameRoot(),J=z[0],U=z[1];if(J&&U){var H=J.split(`
@@ -34,4 +34,4 @@ Error generating stack: `+f.message+`
34
34
  `)?"":Z}function g2({args:Y}){let Z=A(Y.host),X=A(Y.command);return g0.jsxs(g0.Fragment,{children:[g0.jsx(D,{tone:"accent",children:Z??"…"})," ",X!==null?T(b(X),80):Y.command!==void 0&&g0.jsx(h,{what:"command"})]})}function m2({args:Y,result:Z}){let X=A(Y.host),f=A(Y.command),G=A(Y.cwd),z=O(Y.timeout),J=x2(Z),U=J!==null&&Z?.isError!==!0?y2(o0(Z).trim()):null;return g0.jsxs(g0.Fragment,{children:[g0.jsx(o,{items:[X!==null?g0.jsx(D,{tone:"accent",children:X}):g0.jsx(h,{what:"host"}),G!==null&&g0.jsxs(D,{children:["cwd ",w0(G)]}),z!==null&&g0.jsxs(D,{children:["timeout ",z,"s"]})]}),f!==null?g0.jsxs("div",{className:"tv-cmd",children:[g0.jsx("span",{className:"tv-cmd-prompt",children:"$"}),g0.jsx("span",{className:"tv-cmd-text",children:N6(f)})]}):g0.jsx(h,{what:"command"}),U!==null?U!==""&&g0.jsx(n,{text:U,maxLines:12}):g0.jsx(S,{result:Z,maxLines:12}),J!==null&&g0.jsxs(p,{tone:"warn",children:["Output truncated",J.outputLines!==null&&J.totalLines!==null&&` — showing ${J.outputLines} of ${J.totalLines} lines`,J.artifactId!==null&&` · full output at artifact://${J.artifactId}`]})]})}var XA={Summary:g2,Body:m2};var g=K($(),1),u2="SYSTEM WARNING: Subagent exited without calling yield tool";function fA(Y){let Z=Y.tasks;if(Array.isArray(Z)){let f=[];for(let G of Z){if(!I(G))continue;f.push({id:A(G.id),description:A(G.description),assignment:A(G.assignment),isolated:G.isolated===!0})}return f}let X={id:A(Y.id),description:A(Y.description),assignment:A(Y.assignment),isolated:Y.isolated===!0};return X.id||X.description||X.assignment?[X]:[]}function z8(Y){return Y.includes(".")?Y.split(".").join(">"):Y}function J8(Y){if(Y<1000)return`${Math.round(Y)}ms`;let Z=Y/1000;if(Z<60)return`${Z<10?Z.toFixed(1):Math.round(Z)}s`;return`${Math.floor(Z/60)}m ${Math.round(Z%60)}s`}function GA(Y){return Y>=1000?`${(Y/1000).toFixed(1)}k`:String(Y)}function zA(Y){if(Y.aborted===!0)return{label:"aborted",tone:"err"};if(O(Y.exitCode)===0)return A(Y.error)?{label:"merge failed",tone:"warn"}:{label:"done",tone:"ok"};return{label:"failed",tone:"err"}}function c2({args:Y}){let Z=A(Y.agent),X=A(Y.resume),f=fA(Y),G=f.length>0?f[0]:null,z=G?G.description??G.id:null;return g.jsxs(g.Fragment,{children:[Z&&g.jsx(D,{tone:"accent",children:Z}),!Z&&X&&g.jsxs(D,{children:["resume ",X]}),z&&g.jsx("span",{className:"tv-muted",children:T(b(z),72)}),f.length>1&&g.jsxs(D,{children:[f.length," tasks"]})]})}function d2({res:Y,host:Z}){let{label:X,tone:f}=zA(Y),G=A(Y.id)??"agent",z=A(Y.description),J=[],U=O(Y.tokens);if(U)J.push(`${GA(U)} tok`);let H=O(Y.requests);if(H)J.push(`${H} req`);let W=O(Y.durationMs);if(W!=null)J.push(J8(W));let Q=A(Y.resolvedModel);if(Q)J.push(Q);let R=A(Y.output)??"",q=null,M=R.indexOf(`
35
35
  `),B=(M===-1?R:R.slice(0,M)).trim();if(B.startsWith(u2))q=B,R=M===-1?"":R.slice(M+1).replace(/^\s*\n+/,"");let N=A(Y.error),u=Y.aborted===!0,w=A(Y.abortReason),_=A(Y.patchPath),L=A(Y.branchName);return g.jsxs(g.Fragment,{children:[g.jsxs(m,{k:g.jsx(A1,{id:G,host:Z,children:z8(G)}),children:[g.jsx(D,{tone:f,children:X})," ",Y.truncated===!0&&g.jsx(D,{tone:"warn",children:"truncated"})," ",z&&g.jsx("span",{children:T(b(z),96)})," ",J.length>0&&g.jsx("span",{className:"tv-faint",children:J.join(" · ")})]}),q&&g.jsx(p,{tone:"warn",children:q}),u&&w&&g.jsx(p,{tone:"err",children:w}),R.trim()!==""&&g.jsx(n,{text:R,maxLines:6,error:f==="err"}),N&&!u&&N!==w&&g.jsx(p,{tone:f==="warn"?"warn":"err",children:N}),_&&g.jsxs("div",{className:"tv-faint",children:["patch: ",_]}),!_&&L&&g.jsxs("div",{className:"tv-faint",children:["branch: ",L]})]})}function l2({p:Y,host:Z}){let X=A(Y.status)??"running",f=X==="completed"?"ok":X==="failed"||X==="aborted"?"err":X==="running"?"accent":void 0,G=A(Y.id)??"agent",z=A(Y.description),J=A(Y.lastIntent)??A(Y.currentTool),U=[],H=O(Y.toolCount);if(H)U.push(`${H} tools`);let W=O(Y.tokens);if(W)U.push(`${GA(W)} tok`);let Q=O(Y.durationMs);if(Q)U.push(J8(Q));return g.jsxs(m,{k:g.jsx(A1,{id:G,host:Z,children:z8(G)}),children:[g.jsx(D,{tone:f,children:X})," ",z&&g.jsx("span",{children:T(b(z),96)})," ",J&&g.jsx("span",{className:"tv-muted",children:T(b(J),64)})," ",U.length>0&&g.jsx("span",{className:"tv-faint",children:U.join(" · ")})]})}function p2({args:Y,result:Z,host:X}){let f=A(Y.resume),G=A(Y.context),z=fA(Y),J=P(Z),U=J&&Array.isArray(J.results)?J.results.filter(I):[],H=J&&Array.isArray(J.progress)?J.progress.filter(I):[],W=U.length===0&&H.length>0,Q=null;if(U.length>0){let q=0,M=0,B=0,N=0;for(let w of U){let{label:_}=zA(w);if(_==="done")q++;else if(_==="merge failed")M++;else if(_==="aborted")B++;else N++}let u=J?O(J.totalDurationMs):null;Q=g.jsxs(m,{children:[q>0&&g.jsxs(D,{tone:"ok",children:[q," succeeded"]})," ",M>0&&g.jsxs(D,{tone:"warn",children:[M," merge failed"]})," ",N>0&&g.jsxs(D,{tone:"err",children:[N," failed"]})," ",B>0&&g.jsxs(D,{tone:"err",children:[B," aborted"]})," ",u!=null&&g.jsx("span",{className:"tv-faint",children:J8(u)})]})}let R=[...U].sort((q,M)=>(O(q.durationMs)??0)-(O(M.durationMs)??0)||(O(q.index)??0)-(O(M.index)??0));return g.jsxs(g.Fragment,{children:[f&&g.jsxs(D,{children:["resume ",f]}),G&&g.jsx(n,{text:G,maxLines:4,title:"context"}),z.length>0&&g.jsx("div",{className:"tv-list",children:z.map((q,M)=>g.jsxs("div",{children:[g.jsxs(m,{k:q.id?g.jsx(A1,{id:q.id,host:X,children:z8(q.id)}):g.jsx(D,{tone:"accent",children:`#${M+1}`}),children:[q.isolated&&g.jsx(D,{children:"isolated"})," ",q.description&&g.jsx("span",{children:T(b(q.description),120)})]}),q.assignment&&g.jsx(n,{text:q.assignment,maxLines:6,title:"assignment"})]},q.id??M))}),R.length>0&&g.jsxs("div",{className:"tv-list",children:[R.map((q,M)=>g.jsx(d2,{res:q,host:X},A(q.id)??M)),Q]}),W&&g.jsx("div",{className:"tv-list",children:H.map((q,M)=>g.jsx(l2,{p:q,host:X},A(q.id)??M))}),R.length===0&&!W&&g.jsx(S,{result:Z,maxLines:12})]})}var JA={Summary:c2,Body:p2};var t0=K($(),1),i2={completed:"✓",in_progress:"→",abandoned:"✕",pending:"○"},o2=[[1000,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];function n2(Y){if(Y<=0)return"";let Z="",X=Y;for(let[f,G]of o2)while(X>=f)Z+=G,X-=f;return Z}function UA(Y){if(Array.isArray(Y.ops))return Y.ops;return typeof Y.op==="string"?[Y]:[]}function r2({args:Y}){let Z=UA(Y),X={},f=[],G=null;for(let J of Z){if(!I(J))continue;let U=A(J.op)??"update";if(X[U]===void 0)X[U]=0,f.push(U);if(X[U]++,G===null){if(G=A(J.task)??A(J.phase),G===null&&Array.isArray(J.list)){let H=J.list.find(I);if(H&&Array.isArray(H.items))G=A(H.items[0])}}}let z=f.map((J)=>X[J]>1?`${J}×${X[J]}`:J);return t0.jsxs(t0.Fragment,{children:[t0.jsx(o,{items:z.length>0?z:["update"]}),G!==null&&t0.jsxs("span",{children:[" ",T(b(G),60)]})]})}function a2(Y,Z){if(!I(Y))return null;let X=[],f=A(Y.task),G=A(Y.phase);if(f!==null)X.push(f);if(G!==null)X.push(G);if(Array.isArray(Y.items)&&Y.items.length>0)X.push(`${Y.items.length} item${Y.items.length===1?"":"s"}`);if(Array.isArray(Y.list)&&Y.list.length>0){let z=0;for(let J of Y.list)if(I(J)&&Array.isArray(J.items))z+=J.items.length;X.push(`${Y.list.length} phase${Y.list.length===1?"":"s"} · ${z} tasks`)}return t0.jsx(m,{k:A(Y.op)??"update",children:T(b(X.join(" · ")),160)},Z)}function s2({phases:Y}){let Z=[];for(let X=0;X<Y.length;X++){let f=Y[X];if(!I(f))continue;if(Z.push(t0.jsxs("div",{className:"tv-todo-phase",children:[n2(X+1),". ",A(f.name)??""]},`p${X}`)),!Array.isArray(f.tasks))continue;for(let G=0;G<f.tasks.length;G++){let z=f.tasks[G];if(!I(z))continue;let J=z.status,U=J==="completed"||J==="in_progress"||J==="abandoned"?J:"pending";Z.push(t0.jsxs("div",{className:`tv-task tv-task--${U}`,children:[t0.jsx("span",{className:"tv-task-icon",children:i2[U]}),t0.jsx("span",{children:A(z.content)??""})]},`p${X}t${G}`))}}if(Z.length===0)return null;return t0.jsx("div",{className:"tv-todo",children:Z})}function t2({args:Y,result:Z}){let X=UA(Y),f=P(Z),G=f&&Array.isArray(f.phases)&&!Z?.isError?f.phases:null;return t0.jsxs(t0.Fragment,{children:[X.length>0&&t0.jsx("div",{className:"tv-list",children:X.map(a2)}),G!==null?t0.jsx(s2,{phases:G}):t0.jsx(S,{result:Z,maxLines:8})]})}var HA={Summary:r2,Body:t2};var P0=K($(),1);function e2(Y){try{return new URL(Y).hostname.replace(/^www\./,"")}catch{return""}}function YM(Y){let Z=O(Y);if(Z===null||Z<0)return"";let X=Math.floor(Z/60);if(X<60)return`${X}m ago`;let f=Math.floor(X/60);if(f<24)return`${f}h ago`;let G=Math.floor(f/24);if(G<365)return`${G}d ago`;return`${Math.floor(G/365)}y ago`}function ZM({args:Y}){let Z=A(Y.query),X=A(Y.recency);return P0.jsxs(P0.Fragment,{children:[Z===null?P0.jsx(h,{what:"query"}):P0.jsx("span",{className:"tv-pattern",children:T(b(Z),80)}),X&&P0.jsx(D,{children:X})]})}function XM({source:Y,index:Z}){let X=A(Y.url)??"",f=A(Y.title)?.trim()||X||"Untitled",G=X?e2(X):"",z=YM(Y.ageSeconds)||(A(Y.publishedDate)??"");return P0.jsxs(m,{k:String(Z+1),children:[X?P0.jsx("a",{href:X,rel:"noreferrer",target:"_blank",children:f}):f,G&&P0.jsxs("span",{className:"tv-faint",children:[" (",G,")"]}),z&&P0.jsxs("span",{className:"tv-muted",children:[" · ",z]})]})}function fM({args:Y,result:Z}){let X=A(Y.query),f=A(Y.recency),G=O(Y.limit),z=O(Y.num_search_results),J=P(Z),U=J&&I(J.response)?J.response:null,H=J?A(J.error):null,W=U?A(U.provider):null,Q=U?A(U.model):null,R=U?A(U.authMode):null,q=U&&Array.isArray(U.sources)?U.sources.filter(I):[],M=Q&&W?`${Q} @ ${W}`:Q??W??"";if(M&&R)M+=` (${R==="oauth"?"OAuth":R==="api_key"?"API":R})`;let B=U&&I(U.usage)?U.usage:null,N=[];if(B){let u=O(B.inputTokens),w=O(B.outputTokens),_=O(B.totalTokens),L=O(B.searchRequests);if(u!==null)N.push(`in ${u}`);if(w!==null)N.push(`out ${w}`);if(_!==null)N.push(`total ${_}`);if(L!==null)N.push(`search ${L}`)}return P0.jsxs(P0.Fragment,{children:[P0.jsx(o,{items:[f&&`recency=${f}`,G!==null&&`limit=${G}`,z!==null&&`results=${z}`,U&&`${q.length} source${q.length===1?"":"s"}`]}),(X!==null||M||N.length>0)&&P0.jsxs(O0,{children:[X!==null&&P0.jsx(E,{k:"query",children:X}),M&&P0.jsx(E,{k:"provider",children:M}),N.length>0&&P0.jsx(E,{k:"usage",children:N.join(" · ")})]}),H&&!o0(Z)&&P0.jsx(p,{tone:"err",children:H}),P0.jsx(S,{result:Z,maxLines:14,lang:"markdown"}),q.length>0&&P0.jsx("div",{className:"tv-list",children:q.map((u,w)=>P0.jsx(XM,{source:u,index:w},A(u.url)??w))})]})}var AA={Summary:ZM,Body:fM};var l0=K($(),1);function GM(Y){if(!Y||!I(Y.diagnostics))return null;let Z=Y.diagnostics,X=[];if(Array.isArray(Z.messages)){for(let G of Z.messages)if(typeof G==="string")X.push(G)}let f=A(Z.summary);if(X.length===0&&!f)return null;return{server:A(Z.server)??void 0,messages:X,summary:f,errored:Z.errored===!0}}function zM({args:Y}){let Z=A(Y.file_path??Y.path),X=A(Y.content),f=X?X.split(`
36
36
  `).length:0;return l0.jsxs(l0.Fragment,{children:[Z===null?l0.jsx(h,{what:"path"}):l0.jsx(Z0,{path:Z}),f>1&&l0.jsxs(l0.Fragment,{children:[" ",l0.jsxs(D,{children:[f," lines"]})]})]})}function JM({args:Y,result:Z}){let X=A(Y.file_path??Y.path),f=A(Y.content),G=P(Z),z=GM(G);return l0.jsxs(l0.Fragment,{children:[l0.jsx(o,{items:[G?.madeExecutable===!0&&l0.jsx(D,{tone:"ok",children:"made executable"}),z?.summary&&l0.jsxs(D,{tone:z.errored?"err":"warn",children:[z.server?`${z.server}: `:"",z.summary]})]}),f===null?l0.jsxs(p,{tone:"err",children:[l0.jsx(h,{what:"content"})," — expected string"]}):f&&l0.jsx(O7,{code:f,lang:X?LZ(X):null,maxLines:12}),l0.jsx(S,{result:Z,maxLines:4}),z&&z.messages.length>0&&l0.jsx(n,{text:z.messages.join(`
37
- `),title:"diagnostics",error:z.errored,maxLines:8})]})}var WA={Summary:zM,Body:JM};var XY=K($(),1);function UM({args:Y}){return XY.jsx("span",{children:DZ(Y.data??Y)})}function HM({args:Y,result:Z}){let X="";if(Y.data!==void 0)try{X=JSON.stringify(Y.data,null,2)??""}catch{X=String(Y.data)}return XY.jsxs(XY.Fragment,{children:[X&&XY.jsx(n,{text:X,lang:"json",variant:"code",maxLines:12}),XY.jsx(S,{result:Z,maxLines:6})]})}var qA={Summary:UM,Body:HM};var AM={ask:XH,ast_edit:zH,ast_grep:HH,bash:AH,browser:eG,puppeteer:eG,debug:qH,edit:Y8,apply_patch:Y8,eval:$X,js:$X,python:$X,notebook:$X,fetch:DH,glob:X8,find:X8,generate_image:BH,github:IH,goal:SH,inspect_image:PH,irc:jH,job:CX,await:CX,poll:CX,cancel_job:CX,lsp:cH,recall:lH,reflect:pH,retain:oH,read:rH,report_finding:sH,report_tool_issue:tH,resolve:eH,grep:f8,search:f8,search_tool_bm25:ZA,ssh:XA,task:JA,todo:HA,web_search:AA,write:WA,yield:qA};function QA(Y){return AM[Y]??sU}var F7=K($(),1);function WM(Y){if(!I(Y))return{args:{},intent:void 0};let Z=typeof Y[TX]==="string"?Y[TX].trim():void 0;if(!(TX in Y))return{args:Y,intent:Z};let X={};for(let f in Y)if(f!==TX)X[f]=Y[f];return{args:X,intent:Z}}function _A(Y){let[Z,X]=MA.useState(Y.defaultOpen??!1),{args:f,intent:G}=WM(Y.args),z=Y.intent?.trim()||G,J=QA(Y.name),U={name:Y.name,args:f,result:Y.result,running:Y.running,host:Y.host},H=Y.result?.isError===!0,W=Y.running?"run":H?"err":Y.result?"ok":"pending",Q=Y.running&&!Y.result&&Y.partial?KX(N6(Y.partial)):"";return F7.jsxs("div",{className:`tv-card${H?" tv-card--error":""}`,children:[F7.jsxs("button",{type:"button",className:"tv-head","aria-expanded":Z,onClick:()=>X((R)=>!R),title:z||void 0,children:[W==="run"?F7.jsx("span",{className:"tv-spin","aria-label":"running"}):F7.jsx("span",{className:`tv-status tv-status--${W}`,"aria-hidden":"true"}),F7.jsx("span",{className:"tv-name",children:Y.name}),F7.jsx("span",{className:"tv-sum",children:F7.jsx(J.Summary,{...U})}),F7.jsx("span",{className:"tv-chev","aria-hidden":"true"})]}),Z&&F7.jsxs("div",{className:"tv-body",children:[z&&F7.jsx("div",{className:"tv-intent",children:z}),J.Body?F7.jsx(J.Body,{...U}):null]}),Q&&F7.jsx("pre",{className:"tv-partial",children:Q.length>2048?`…${Q.slice(-2048)}`:Q})]})}var DA=K($(),1);class wA extends HTMLElement{#Y=null;#Z=null;set data(Y){this.#Z=Y,this.#X()}connectedCallback(){this.#X()}disconnectedCallback(){let Y=this.#Y;if(this.#Y=null,Y)queueMicrotask(()=>Y.unmount())}#f(){if(this.#Z)return this.#Z;let Y=this.getAttribute("data-key");if(Y){let f=globalThis.__OMP_TOOL_VIEW_DATA?.get(Y);if(f)return f}let Z=this.getAttribute("payload");if(Z)try{let X=JSON.parse(Z);if(X&&typeof X==="object")return X}catch{}return null}#X(){if(!this.isConnected)return;let Y=this.#f();if(!Y||typeof Y.name!=="string")return;this.#Y??=RA.createRoot(this),this.#Y.render(DA.jsx(_A,{...Y,defaultOpen:Y.defaultOpen??this.hasAttribute("open")}))}}function LA(Y="omp-tool-view"){if(!customElements.get(Y))customElements.define(Y,wA)}LA();})();
37
+ `),title:"diagnostics",error:z.errored,maxLines:8})]})}var WA={Summary:zM,Body:JM};var XY=K($(),1);function UM({args:Y}){return XY.jsx("span",{children:DZ(Y.data??Y)})}function HM({args:Y,result:Z}){let X="";if(Y.data!==void 0)try{X=JSON.stringify(Y.data,null,2)??""}catch{X=String(Y.data)}return XY.jsxs(XY.Fragment,{children:[X&&XY.jsx(n,{text:X,lang:"json",variant:"code",maxLines:12}),XY.jsx(S,{result:Z,maxLines:6})]})}var qA={Summary:UM,Body:HM};var AM={ask:XH,ast_edit:zH,ast_grep:HH,bash:AH,browser:eG,puppeteer:eG,debug:qH,edit:Y8,apply_patch:Y8,eval:$X,js:$X,python:$X,notebook:$X,fetch:DH,glob:X8,find:X8,generate_image:BH,github:IH,goal:SH,inspect_image:PH,irc:jH,job:CX,await:CX,poll:CX,cancel_job:CX,lsp:cH,recall:lH,reflect:pH,retain:oH,read:rH,report_finding:sH,report_tool_issue:tH,resolve:eH,grep:f8,search:f8,search_tool_bm25:ZA,ssh:XA,task:JA,todo:HA,web_search:AA,write:WA,yield:qA};function QA(Y){return AM[Y]??sU}var F7=K($(),1);function WM(Y){if(!I(Y))return{args:{},intent:void 0};let Z=typeof Y[TX]==="string"?Y[TX].trim():void 0;if(!(TX in Y))return{args:Y,intent:Z};let X={};for(let f in Y)if(f!==TX)X[f]=Y[f];return{args:X,intent:Z}}function _A(Y){let[Z,X]=MA.useState(Y.defaultOpen??!1),{args:f,intent:G}=WM(Y.args),z=Y.intent?.trim()||G,J=QA(Y.name),U={name:Y.name,args:f,result:Y.result,running:Y.running,host:Y.host},H=Y.result?.isError===!0,W=Y.running?"run":H?"err":Y.result?"ok":"pending",Q=Y.running&&!Y.result&&Y.partial?KX(N6(Y.partial)):"";return F7.jsxs("div",{className:`tv-card${H?" tv-card--error":""}`,children:[F7.jsxs("button",{type:"button",className:"tv-head","aria-expanded":Z,onClick:()=>X((R)=>!R),title:z||void 0,children:[W==="run"?F7.jsx("span",{className:"tv-spin","aria-label":"running"}):F7.jsx("span",{className:`tv-status tv-status--${W}`,"aria-hidden":"true"}),F7.jsx("span",{className:"tv-name",children:Y.name}),F7.jsx("span",{className:"tv-sum",children:F7.jsx(J.Summary,{...U})}),F7.jsx("span",{className:"tv-chev","aria-hidden":"true"})]}),Z&&F7.jsxs("div",{className:"tv-body",children:[z&&F7.jsx("div",{className:"tv-intent",children:z}),J.Body?F7.jsx(J.Body,{...U}):null]}),Q&&F7.jsx("pre",{className:"tv-partial",children:Q.length>2048?`…${Q.slice(-2048)}`:Q})]})}var DA=K($(),1);class wA extends HTMLElement{#Y=null;#Z=null;set data(Y){this.#Z=Y,this.#X()}connectedCallback(){this.#X()}disconnectedCallback(){let Y=this.#Y;if(this.#Y=null,Y)queueMicrotask(()=>Y.unmount())}#f(){if(this.#Z)return this.#Z;let Y=this.getAttribute("data-key");if(Y){let f=globalThis.__JEOPI_TOOL_VIEW_DATA?.get(Y);if(f)return f}let Z=this.getAttribute("payload");if(Z)try{let X=JSON.parse(Z);if(X&&typeof X==="object")return X}catch{}return null}#X(){if(!this.isConnected)return;let Y=this.#f();if(!Y||typeof Y.name!=="string")return;this.#Y??=RA.createRoot(this),this.#Y.render(DA.jsx(_A,{...Y,defaultOpen:Y.defaultOpen??this.hasAttribute("open")}))}}function LA(Y="jeopi-tool-view"){if(!customElements.get(Y))customElements.define(Y,wA)}LA();})();
@@ -1,11 +1,11 @@
1
1
  /**
2
- * Web/export palette — the omp brand identity shared by the collab-web live
2
+ * Web/export palette — the jeopi brand identity shared by the collab-web live
3
3
  * client (`my.omp.sh/`) and every public HTML export / share viewer (`/s/<id>`).
4
4
  *
5
5
  * Why this exists separately from `modes/theme/dark.json`: the `dark` theme is
6
6
  * the **default TUI theme** — its amber accent (`#febc38`) drives the terminal
7
7
  * status line, syntax highlighting, thinking levels, and bash/python mode
8
- * colors for every omp user. The public web artifacts want the collab-web
8
+ * colors for every jeopi user. The public web artifacts want the collab-web
9
9
  * pink/purple identity instead, so they pin this palette rather than inheriting
10
10
  * the TUI's. Editing `dark.json` to repurpose it for the web would repaint
11
11
  * every terminal; this file keeps the two surfaces decoupled.
@@ -40,7 +40,7 @@ const GIST_MAX_SEALED_BYTES = 5_000_000;
40
40
  const IV_LENGTH = 12;
41
41
  const SHARE_KEY_BYTES = 32;
42
42
  /** The viewer picks the gist file by this suffix. */
43
- const GIST_FILENAME = "session.ompshare.txt";
43
+ const GIST_FILENAME = "session.jeopishare.txt";
44
44
  /** Gist ids are hex; the relay never issues pure-hex ids, so the viewer can route on shape. */
45
45
  const GIST_ID_RE = /^[0-9a-f]{20,64}$/;
46
46