@datalabrotterdam/nova-ai-cli 1.0.1 → 1.2.0-alpha.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.
Files changed (53) hide show
  1. package/README.md +165 -96
  2. package/dist/acp-ZYOQ6PON.js +65 -0
  3. package/dist/chunk-GZZ7PY3S.js +8878 -0
  4. package/dist/chunk-JAEXUFAS.js +451 -0
  5. package/dist/chunk-Q7WL3DXP.js +19 -0
  6. package/dist/chunk-ZKRZIF3S.js +954 -0
  7. package/dist/headless-ZYUSTZDL.js +567 -0
  8. package/dist/index.d.ts +0 -1
  9. package/dist/index.js +155 -17
  10. package/dist/login-6U7QS7EA.js +118 -0
  11. package/dist/tui-XOKXPXN2.js +4801 -0
  12. package/dist/webui-L4GGMXJ3.js +9 -0
  13. package/package.json +25 -7
  14. package/src/acp/web/dist/assets/index-CSccI7lJ.css +1 -0
  15. package/src/acp/web/dist/assets/index-DlCz3fmq.js +1 -0
  16. package/src/acp/web/dist/favicon.svg +46 -0
  17. package/src/acp/web/dist/index.html +21 -2
  18. package/dist/acp/agent.d.ts +0 -12
  19. package/dist/acp/agent.js +0 -206
  20. package/dist/acp/auth-server.d.ts +0 -10
  21. package/dist/acp/auth-server.js +0 -67
  22. package/dist/acp/credentials.d.ts +0 -11
  23. package/dist/acp/credentials.js +0 -30
  24. package/dist/acp/index.d.ts +0 -2
  25. package/dist/acp/index.js +0 -20
  26. package/dist/acp/sessions.d.ts +0 -20
  27. package/dist/acp/sessions.js +0 -91
  28. package/dist/acp/tools/index.d.ts +0 -6
  29. package/dist/acp/tools/index.js +0 -5
  30. package/dist/acp/tools/marker.d.ts +0 -17
  31. package/dist/acp/tools/marker.js +0 -43
  32. package/dist/acp/tools/permission.d.ts +0 -2
  33. package/dist/acp/tools/permission.js +0 -20
  34. package/dist/acp/tools/read-file.d.ts +0 -2
  35. package/dist/acp/tools/read-file.js +0 -20
  36. package/dist/acp/tools/registry.d.ts +0 -4
  37. package/dist/acp/tools/registry.js +0 -10
  38. package/dist/acp/tools/reporting.d.ts +0 -3
  39. package/dist/acp/tools/reporting.js +0 -26
  40. package/dist/acp/tools/run-command.d.ts +0 -2
  41. package/dist/acp/tools/run-command.js +0 -29
  42. package/dist/acp/tools/system-prompt.d.ts +0 -2
  43. package/dist/acp/tools/system-prompt.js +0 -23
  44. package/dist/acp/tools/types.d.ts +0 -18
  45. package/dist/acp/tools/types.js +0 -1
  46. package/dist/acp/tools/write-file.d.ts +0 -2
  47. package/dist/acp/tools/write-file.js +0 -20
  48. package/dist/tui/index.d.ts +0 -7
  49. package/dist/tui/index.js +0 -11
  50. package/dist/webui/index.d.ts +0 -6
  51. package/dist/webui/index.js +0 -9
  52. package/src/acp/web/dist/assets/index-B3sTKEem.js +0 -1
  53. package/src/acp/web/dist/assets/index-DwysEXf2.css +0 -1
@@ -1,20 +0,0 @@
1
- import type { ChatMessage } from "@datalabrotterdam/nova-sdk";
2
- export type StoredSession = {
3
- sessionId: string;
4
- cwd: string;
5
- title: string | null;
6
- updatedAt: string;
7
- messages: ChatMessage[];
8
- };
9
- export declare function loadStoredSession(sessionId: string): StoredSession | null;
10
- /**
11
- * Each turn is appended as its own line rather than rewriting the whole
12
- * session file, so persisting after every prompt stays O(1) instead of
13
- * O(history length).
14
- */
15
- export declare function appendSessionTurn(sessionId: string, header: {
16
- cwd: string;
17
- title: string | null;
18
- }, newMessages: ChatMessage[]): void;
19
- export declare function listStoredSessions(cwd?: string): StoredSession[];
20
- export declare function deriveTitle(messages: ChatMessage[]): string | null;
@@ -1,91 +0,0 @@
1
- import { appendFileSync, mkdirSync, readdirSync, readFileSync } from "node:fs";
2
- import { homedir } from "node:os";
3
- import { join } from "node:path";
4
- const SESSIONS_DIR = join(homedir(), ".nova-ai", "sessions");
5
- function sessionFilePath(sessionId) {
6
- return join(SESSIONS_DIR, `${sessionId}.jsonl`);
7
- }
8
- function parseSessionFile(raw) {
9
- let header = null;
10
- const messages = [];
11
- let updatedAt = "";
12
- for (const line of raw.split("\n")) {
13
- if (!line.trim())
14
- continue;
15
- const parsed = JSON.parse(line);
16
- if (parsed.kind === "header") {
17
- header = parsed;
18
- }
19
- else {
20
- messages.push(parsed.message);
21
- updatedAt = parsed.updatedAt;
22
- }
23
- }
24
- if (!header)
25
- return null;
26
- return { sessionId: "", cwd: header.cwd, title: header.title, updatedAt, messages };
27
- }
28
- export function loadStoredSession(sessionId) {
29
- try {
30
- const raw = readFileSync(sessionFilePath(sessionId), "utf8");
31
- const session = parseSessionFile(raw);
32
- return session ? { ...session, sessionId } : null;
33
- }
34
- catch {
35
- return null;
36
- }
37
- }
38
- /**
39
- * Each turn is appended as its own line rather than rewriting the whole
40
- * session file, so persisting after every prompt stays O(1) instead of
41
- * O(history length).
42
- */
43
- export function appendSessionTurn(sessionId, header, newMessages) {
44
- mkdirSync(SESSIONS_DIR, { recursive: true });
45
- const path = sessionFilePath(sessionId);
46
- const updatedAt = new Date().toISOString();
47
- const lines = [];
48
- // Re-stating the header is cheap and keeps title updates (set once the
49
- // first user message arrives) visible without rewriting prior lines.
50
- lines.push(JSON.stringify({ kind: "header", cwd: header.cwd, title: header.title }));
51
- for (const message of newMessages) {
52
- lines.push(JSON.stringify({ kind: "message", updatedAt, message }));
53
- }
54
- appendFileSync(path, `${lines.join("\n")}\n`);
55
- }
56
- export function listStoredSessions(cwd) {
57
- let files;
58
- try {
59
- files = readdirSync(SESSIONS_DIR);
60
- }
61
- catch {
62
- return [];
63
- }
64
- const sessions = [];
65
- for (const file of files) {
66
- if (!file.endsWith(".jsonl"))
67
- continue;
68
- const sessionId = file.slice(0, -".jsonl".length);
69
- try {
70
- const raw = readFileSync(join(SESSIONS_DIR, file), "utf8");
71
- const session = parseSessionFile(raw);
72
- if (!session)
73
- continue;
74
- if (!cwd || session.cwd === cwd)
75
- sessions.push({ ...session, sessionId });
76
- }
77
- catch {
78
- // Skip corrupt/partial session files rather than failing the whole listing.
79
- }
80
- }
81
- return sessions.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
82
- }
83
- export function deriveTitle(messages) {
84
- const firstUser = messages.find((m) => m.role === "user");
85
- if (!firstUser || typeof firstUser.content !== "string")
86
- return null;
87
- const text = firstUser.content.trim();
88
- if (!text)
89
- return null;
90
- return text.length > 60 ? `${text.slice(0, 60)}…` : text;
91
- }
@@ -1,6 +0,0 @@
1
- export { extractToolCall, hasPendingFence } from "./marker.js";
2
- export { requestPermissionIfNeeded } from "./permission.js";
3
- export { availableTools, findTool } from "./registry.js";
4
- export { sendToolCallPending, sendToolCallUpdate } from "./reporting.js";
5
- export { buildToolsSystemPrompt } from "./system-prompt.js";
6
- export type { ToolContext, ToolDefinition, ToolResult } from "./types.js";
@@ -1,5 +0,0 @@
1
- export { extractToolCall, hasPendingFence } from "./marker.js";
2
- export { requestPermissionIfNeeded } from "./permission.js";
3
- export { availableTools, findTool } from "./registry.js";
4
- export { sendToolCallPending, sendToolCallUpdate } from "./reporting.js";
5
- export { buildToolsSystemPrompt } from "./system-prompt.js";
@@ -1,17 +0,0 @@
1
- export type ParsedToolCall = {
2
- name: string;
3
- args: Record<string, unknown>;
4
- matchStart: number;
5
- matchEnd: number;
6
- };
7
- /**
8
- * Looks for one complete ```tool_call fenced block in the accumulated stream
9
- * buffer. Returns null while the block hasn't fully arrived yet (it may be
10
- * split across multiple stream chunks).
11
- */
12
- export declare function extractToolCall(buffer: string): ParsedToolCall | null;
13
- /**
14
- * True once the buffer contains the fence start, or ends with a prefix of it
15
- * (the opening marker may itself be split across stream chunks).
16
- */
17
- export declare function hasPendingFence(buffer: string): boolean;
@@ -1,43 +0,0 @@
1
- // Greedy match: takes the LAST closing ``` in the buffer, not the first. The
2
- // JSON payload (e.g. write_file content) may itself contain literal ``` runs
3
- // (markdown snippets, code fences) — a lazy match would close on those and
4
- // truncate/corrupt the JSON.
5
- const FENCE_RE = /```tool_call\s*\n([\s\S]*)\n```/;
6
- /**
7
- * Looks for one complete ```tool_call fenced block in the accumulated stream
8
- * buffer. Returns null while the block hasn't fully arrived yet (it may be
9
- * split across multiple stream chunks).
10
- */
11
- export function extractToolCall(buffer) {
12
- const match = FENCE_RE.exec(buffer);
13
- if (!match)
14
- return null;
15
- try {
16
- const parsed = JSON.parse(match[1]);
17
- if (typeof parsed?.name !== "string")
18
- return null;
19
- return {
20
- name: parsed.name,
21
- args: typeof parsed.args === "object" && parsed.args !== null ? parsed.args : parsed,
22
- matchStart: match.index,
23
- matchEnd: match.index + match[0].length,
24
- };
25
- }
26
- catch {
27
- return null;
28
- }
29
- }
30
- const FENCE_START = "```tool_call";
31
- /**
32
- * True once the buffer contains the fence start, or ends with a prefix of it
33
- * (the opening marker may itself be split across stream chunks).
34
- */
35
- export function hasPendingFence(buffer) {
36
- if (buffer.includes(FENCE_START))
37
- return true;
38
- for (let len = Math.min(FENCE_START.length, buffer.length); len > 0; len--) {
39
- if (buffer.endsWith(FENCE_START.slice(0, len)))
40
- return true;
41
- }
42
- return false;
43
- }
@@ -1,2 +0,0 @@
1
- import type { ToolContext, ToolDefinition } from "./types.js";
2
- export declare function requestPermissionIfNeeded(ctx: ToolContext, toolCallId: string, tool: ToolDefinition, args: Record<string, unknown>): Promise<boolean>;
@@ -1,20 +0,0 @@
1
- import * as acp from "@agentclientprotocol/sdk";
2
- export async function requestPermissionIfNeeded(ctx, toolCallId, tool, args) {
3
- if (!tool.mutating)
4
- return true;
5
- const response = await ctx.client.request(acp.methods.client.session.requestPermission, {
6
- sessionId: ctx.sessionId,
7
- toolCall: {
8
- toolCallId,
9
- title: tool.name,
10
- kind: "execute",
11
- status: "pending",
12
- rawInput: args,
13
- },
14
- options: [
15
- { optionId: "allow", name: "Allow", kind: "allow_once" },
16
- { optionId: "reject", name: "Reject", kind: "reject_once" },
17
- ],
18
- }, { cancellationSignal: ctx.signal });
19
- return response.outcome.outcome === "selected" && response.outcome.optionId === "allow";
20
- }
@@ -1,2 +0,0 @@
1
- import type { ToolDefinition } from "./types.js";
2
- export declare const readFileTool: ToolDefinition;
@@ -1,20 +0,0 @@
1
- import * as acp from "@agentclientprotocol/sdk";
2
- export const readFileTool = {
3
- name: "read_file",
4
- description: 'read_file: {"path": "<absolute path>"} — read a text file in the workspace.',
5
- requiredCapability: (caps) => !!caps?.fs?.readTextFile,
6
- mutating: false,
7
- async execute({ client, sessionId, signal }, args) {
8
- const path = typeof args.path === "string" ? args.path : "";
9
- if (!path)
10
- return { error: "read_file requires a 'path' argument." };
11
- try {
12
- const result = await client.request(acp.methods.client.fs.readTextFile, { sessionId, path }, { cancellationSignal: signal });
13
- return { output: result.content };
14
- }
15
- catch (err) {
16
- const message = err instanceof Error ? err.message : "Failed to read file.";
17
- return { error: `${message} (path tried: ${path})` };
18
- }
19
- },
20
- };
@@ -1,4 +0,0 @@
1
- import type * as acp from "@agentclientprotocol/sdk";
2
- import type { ToolDefinition } from "./types.js";
3
- export declare function availableTools(caps: acp.ClientCapabilities | undefined): ToolDefinition[];
4
- export declare function findTool(name: string): ToolDefinition | undefined;
@@ -1,10 +0,0 @@
1
- import { readFileTool } from "./read-file.js";
2
- import { runCommandTool } from "./run-command.js";
3
- import { writeFileTool } from "./write-file.js";
4
- const TOOLS = [readFileTool, writeFileTool, runCommandTool];
5
- export function availableTools(caps) {
6
- return TOOLS.filter((tool) => tool.requiredCapability(caps));
7
- }
8
- export function findTool(name) {
9
- return TOOLS.find((tool) => tool.name === name);
10
- }
@@ -1,3 +0,0 @@
1
- import type { ToolContext, ToolDefinition } from "./types.js";
2
- export declare function sendToolCallPending(ctx: ToolContext, toolCallId: string, tool: ToolDefinition, args: Record<string, unknown>): Promise<void>;
3
- export declare function sendToolCallUpdate(ctx: ToolContext, toolCallId: string, status: "completed" | "failed", output: string): Promise<void>;
@@ -1,26 +0,0 @@
1
- import * as acp from "@agentclientprotocol/sdk";
2
- export async function sendToolCallPending(ctx, toolCallId, tool, args) {
3
- await ctx.client.notify(acp.methods.client.session.update, {
4
- sessionId: ctx.sessionId,
5
- update: {
6
- sessionUpdate: "tool_call",
7
- toolCallId,
8
- title: tool.name,
9
- kind: tool.mutating ? "execute" : "read",
10
- status: "pending",
11
- rawInput: args,
12
- },
13
- });
14
- }
15
- export async function sendToolCallUpdate(ctx, toolCallId, status, output) {
16
- await ctx.client.notify(acp.methods.client.session.update, {
17
- sessionId: ctx.sessionId,
18
- update: {
19
- sessionUpdate: "tool_call_update",
20
- toolCallId,
21
- status,
22
- content: [{ type: "content", content: { type: "text", text: output } }],
23
- rawOutput: { output },
24
- },
25
- });
26
- }
@@ -1,2 +0,0 @@
1
- import type { ToolDefinition } from "./types.js";
2
- export declare const runCommandTool: ToolDefinition;
@@ -1,29 +0,0 @@
1
- import * as acp from "@agentclientprotocol/sdk";
2
- export const runCommandTool = {
3
- name: "run_command",
4
- description: 'run_command: {"command": "<shell command>"} — run a shell command in the workspace and return its output.',
5
- requiredCapability: (caps) => !!caps?.terminal,
6
- mutating: true,
7
- async execute({ client, sessionId, signal }, args) {
8
- const command = typeof args.command === "string" ? args.command : "";
9
- if (!command)
10
- return { error: "run_command requires a 'command' argument." };
11
- let terminalId;
12
- try {
13
- const created = await client.request(acp.methods.client.terminal.create, { sessionId, command }, { cancellationSignal: signal });
14
- terminalId = created.terminalId;
15
- const exit = await client.request(acp.methods.client.terminal.waitForExit, { sessionId, terminalId }, { cancellationSignal: signal });
16
- const { output, truncated } = await client.request(acp.methods.client.terminal.output, { sessionId, terminalId }, { cancellationSignal: signal });
17
- const exitNote = exit.exitCode !== undefined && exit.exitCode !== null ? ` (exit code ${exit.exitCode})` : "";
18
- return { output: `${output}${truncated ? "\n[output truncated]" : ""}${exitNote}` };
19
- }
20
- catch (err) {
21
- return { error: err instanceof Error ? err.message : "Failed to run command." };
22
- }
23
- finally {
24
- if (terminalId) {
25
- void client.request(acp.methods.client.terminal.release, { sessionId, terminalId }).catch(() => { });
26
- }
27
- }
28
- },
29
- };
@@ -1,2 +0,0 @@
1
- import type { ToolDefinition } from "./types.js";
2
- export declare function buildToolsSystemPrompt(tools: ToolDefinition[], cwd: string): string | null;
@@ -1,23 +0,0 @@
1
- export function buildToolsSystemPrompt(tools, cwd) {
2
- if (tools.length === 0)
3
- return null;
4
- const toolList = tools.map((tool) => `- ${tool.description}`).join("\n");
5
- return [
6
- `The user's workspace root is: ${cwd}`,
7
- "Always use absolute paths rooted there (e.g. resolve a file named X to the corresponding path under that root). Never guess or invent a path like /home/user/... — use the workspace root given above.",
8
- "You can use tools to read/write files or run shell commands in the user's workspace.",
9
- "To use a tool, emit exactly this fenced block and nothing else after it in your turn:",
10
- "```tool_call",
11
- '{"name": "<tool name>", "args": { ... }}',
12
- "```",
13
- "STRICT rules for this JSON:",
14
- "- All tool arguments go INSIDE the \"args\" object. Never put them at the top level next to \"name\".",
15
- "- Include every argument the tool needs, exactly as named below. Do not omit \"path\", \"content\", or \"command\".",
16
- "- Example for write_file: ```tool_call",
17
- '{"name": "write_file", "args": {"path": "' + cwd.replace(/\\/g, "\\\\") + '/example.txt", "content": "file contents here"}}',
18
- "```",
19
- "- One tool call per turn. After the result comes back, continue or call another tool.",
20
- "Wait for the tool's result before continuing. Available tools:",
21
- toolList,
22
- ].join("\n");
23
- }
@@ -1,18 +0,0 @@
1
- import type * as acp from "@agentclientprotocol/sdk";
2
- export type ToolContext = {
3
- client: acp.AgentContext;
4
- sessionId: string;
5
- signal: AbortSignal;
6
- };
7
- export type ToolResult = {
8
- output: string;
9
- } | {
10
- error: string;
11
- };
12
- export type ToolDefinition = {
13
- name: string;
14
- description: string;
15
- requiredCapability: (caps: acp.ClientCapabilities | undefined) => boolean;
16
- mutating: boolean;
17
- execute(ctx: ToolContext, args: Record<string, unknown>): Promise<ToolResult>;
18
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- import type { ToolDefinition } from "./types.js";
2
- export declare const writeFileTool: ToolDefinition;
@@ -1,20 +0,0 @@
1
- import * as acp from "@agentclientprotocol/sdk";
2
- export const writeFileTool = {
3
- name: "write_file",
4
- description: 'write_file: {"path": "<absolute path>", "content": "<full file content>"} — overwrite a text file in the workspace.',
5
- requiredCapability: (caps) => !!caps?.fs?.writeTextFile,
6
- mutating: true,
7
- async execute({ client, sessionId, signal }, args) {
8
- const path = typeof args.path === "string" ? args.path : "";
9
- const content = typeof args.content === "string" ? args.content : "";
10
- if (!path)
11
- return { error: "write_file requires a 'path' argument." };
12
- try {
13
- await client.request(acp.methods.client.fs.writeTextFile, { sessionId, path, content }, { cancellationSignal: signal });
14
- return { output: `Wrote ${content.length} characters to ${path}.` };
15
- }
16
- catch (err) {
17
- return { error: err instanceof Error ? err.message : "Failed to write file." };
18
- }
19
- },
20
- };
@@ -1,7 +0,0 @@
1
- /**
2
- * Placeholder for the interactive terminal chat mode (nova-ai-cli's primary
3
- * entrypoint, mirroring `claude`/`codex`). ACP mode in index.ts is the
4
- * machine-facing counterpart of this same auth/credentials plumbing.
5
- */
6
- export declare function runChat(...args: string[]): Promise<void>;
7
- export default runChat;
package/dist/tui/index.js DELETED
@@ -1,11 +0,0 @@
1
- /**
2
- * Placeholder for the interactive terminal chat mode (nova-ai-cli's primary
3
- * entrypoint, mirroring `claude`/`codex`). ACP mode in index.ts is the
4
- * machine-facing counterpart of this same auth/credentials plumbing.
5
- */
6
- export async function runChat(...args) {
7
- console.log("nova-ai-cli is a work in progress — interactive chat isn't built yet.");
8
- console.log("Right now it only works in ACP mode: run `nova-ai-cli --acp` (or point your ACP client at this binary).");
9
- console.log("Run `nova-ai-cli --setup` first to connect your Nova API key.");
10
- }
11
- export default runChat;
@@ -1,6 +0,0 @@
1
- /**
2
- * Placeholder for the standalone browser-based agent UI (nova-ai-cli --web),
3
- * separate from src/acp/web which only handles the --setup auth page.
4
- */
5
- declare function runWebUi(...args: string[]): Promise<void>;
6
- export default runWebUi;
@@ -1,9 +0,0 @@
1
- /**
2
- * Placeholder for the standalone browser-based agent UI (nova-ai-cli --web),
3
- * separate from src/acp/web which only handles the --setup auth page.
4
- */
5
- async function runWebUi(...args) {
6
- console.log("nova-ai-cli --web is a work in progress — the browser UI isn't built yet.");
7
- console.log("Use `nova-ai-cli` for the terminal chat, or `nova-ai-cli --acp` for ACP mode.");
8
- }
9
- export default runWebUi;
@@ -1 +0,0 @@
1
- var Rr=Object.defineProperty;var wn=e=>{throw TypeError(e)};var Cr=(e,t,n)=>t in e?Rr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var B=(e,t,n)=>Cr(e,typeof t!="symbol"?t+"":t,n),Wt=(e,t,n)=>t.has(e)||wn("Cannot "+n);var l=(e,t,n)=>(Wt(e,t,"read from private field"),n?n.call(e):t.get(e)),m=(e,t,n)=>t.has(e)?wn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),y=(e,t,n,r)=>(Wt(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),E=(e,t,n)=>(Wt(e,t,"access private method"),n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const f of s.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&r(f)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Bn=!1;var Pr=Array.isArray,Nr=Array.prototype.indexOf,Pt=Array.prototype.includes,Mr=Array.from,Dr=Object.defineProperty,it=Object.getOwnPropertyDescriptor,Fr=Object.getOwnPropertyDescriptors,Lr=Object.prototype,jr=Array.prototype,Vn=Object.getPrototypeOf,bn=Object.isExtensible;const Ir=()=>{};function qr(e){return e()}function en(e){for(var t=0;t<e.length;t++)e[t]()}function Yn(){var e,t,n=new Promise((r,i)=>{e=r,t=i});return{promise:n,resolve:e,reject:t}}const D=2,ut=4,gt=8,Hn=1<<24,ne=16,oe=32,ke=64,tn=128,J=512,C=1024,N=2048,ae=4096,Z=8192,ie=16384,Ze=32768,En=1<<25,Ge=65536,Nt=1<<17,Br=1<<18,Qe=1<<19,Un=1<<20,Fe=65536,Mt=1<<21,Be=1<<22,Ee=1<<23,st=Symbol("$state"),Vr=Symbol("attributes"),Yr=Symbol("class"),Hr=Symbol("style"),Xe=Symbol("text"),At=Symbol("form reset"),Yt=new class extends Error{constructor(){super(...arguments);B(this,"name","StaleReactionError");B(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};function Ur(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Kr(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function zr(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Wr(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Gr(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function $r(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Jr(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Zr(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Qr(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Xr=1,ei=2,R=Symbol("uninitialized");function ti(){console.warn("https://svelte.dev/e/derived_inert")}function ni(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function Kn(e){return e===this.v}function ri(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function zn(e){return!ri(e,this.v)}let Ht=!1,ii=!1;function si(){Ht=!0}let O=null;function $e(e){O=e}function Wn(e,t=!1,n){O={p:O,i:!1,c:null,e:null,s:e,x:null,r:b,l:Ht&&!t?{s:null,u:null,$:[]}:null}}function Gn(e){var t=O,n=t.e;if(n!==null){t.e=null;for(var r of n)vr(r)}return t.i=!0,O=t.p,{}}function yt(){return!Ht||O!==null&&O.l===null}let Te=[];function $n(){var e=Te;Te=[],en(e)}function Ne(e){if(Te.length===0&&!ft){var t=Te;queueMicrotask(()=>{t===Te&&$n()})}Te.push(e)}function li(){for(;Te.length>0;)$n()}function Jn(e){var t=b;if(t===null)return w.f|=Ee,e;if(!(t.f&Ze)&&!(t.f&ut))throw e;be(e,t)}function be(e,t){if(!(t!==null&&t.f&ie)){for(;t!==null;){if(t.f&tn){if(!(t.f&Ze))throw e;try{t.b.error(e);return}catch(n){e=n}}t=t.parent}throw e}}const fi=-7169;function A(e,t){e.f=e.f&fi|t}function hn(e){e.f&J||e.deps===null?A(e,C):A(e,ae)}function Zn(e){if(e!==null)for(const t of e)!(t.f&D)||!(t.f&Fe)||(t.f^=Fe,Zn(t.deps))}function Qn(e,t,n){e.f&N?t.add(e):e.f&ae&&n.add(e),Zn(e.deps),A(e,C)}function oi(e){let t=0,n=mt(0),r;return()=>{gn()&&(P(n),_r(()=>(t===0&&(r=mn(()=>e(()=>ot(n)))),t+=1,()=>{Ne(()=>{t-=1,t===0&&(r==null||r(),r=void 0,ot(n))})})))}}var ai=Ge|Qe;function ui(e,t,n,r){new ci(e,t,n,r)}var W,cn,G,xe,j,$,F,Y,de,Oe,me,Ve,ht,dt,ve,qt,T,hi,di,vi,nn,xt,Ot,rn,sn;class ci{constructor(t,n,r,i){m(this,T);B(this,"parent");B(this,"is_pending",!1);B(this,"transform_error");m(this,W);m(this,cn,null);m(this,G);m(this,xe);m(this,j);m(this,$,null);m(this,F,null);m(this,Y,null);m(this,de,null);m(this,Oe,0);m(this,me,0);m(this,Ve,!1);m(this,ht,new Set);m(this,dt,new Set);m(this,ve,null);m(this,qt,oi(()=>(y(this,ve,mt(l(this,Oe))),()=>{y(this,ve,null)})));var s;y(this,W,t),y(this,G,n),y(this,xe,f=>{var a=b;a.b=this,a.f|=tn,r(f)}),this.parent=b.b,this.transform_error=i??((s=this.parent)==null?void 0:s.transform_error)??(f=>f),y(this,j,pr(()=>{E(this,T,nn).call(this)},ai))}defer_effect(t){Qn(t,l(this,ht),l(this,dt))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!l(this,G).pending}update_pending_count(t,n){E(this,T,rn).call(this,t,n),y(this,Oe,l(this,Oe)+t),!(!l(this,ve)||l(this,Ve))&&(y(this,Ve,!0),Ne(()=>{y(this,Ve,!1),l(this,ve)&&Lt(l(this,ve),l(this,Oe))}))}get_effect_pending(){return l(this,qt).call(this),P(l(this,ve))}error(t){if(!l(this,G).onerror&&!l(this,G).failed)throw t;p!=null&&p.is_fork?(l(this,$)&&p.skip_effect(l(this,$)),l(this,F)&&p.skip_effect(l(this,F)),l(this,Y)&&p.skip_effect(l(this,Y)),p.oncommit(()=>{E(this,T,sn).call(this,t)})):E(this,T,sn).call(this,t)}}W=new WeakMap,cn=new WeakMap,G=new WeakMap,xe=new WeakMap,j=new WeakMap,$=new WeakMap,F=new WeakMap,Y=new WeakMap,de=new WeakMap,Oe=new WeakMap,me=new WeakMap,Ve=new WeakMap,ht=new WeakMap,dt=new WeakMap,ve=new WeakMap,qt=new WeakMap,T=new WeakSet,hi=function(){try{y(this,$,he(()=>l(this,xe).call(this,l(this,W))))}catch(t){this.error(t)}},di=function(t){const n=l(this,G).failed;n&&y(this,Y,he(()=>{n(l(this,W),()=>t,()=>()=>{})}))},vi=function(){const t=l(this,G).pending;t&&(this.is_pending=!0,y(this,F,he(()=>t(l(this,W)))),Ne(()=>{var n=y(this,de,document.createDocumentFragment()),r=jt();n.append(r),y(this,$,E(this,T,Ot).call(this,()=>he(()=>l(this,xe).call(this,r)))),l(this,me)===0&&(l(this,W).before(n),y(this,de,null),at(l(this,F),()=>{y(this,F,null)}),E(this,T,xt).call(this,p))}))},nn=function(){try{if(this.is_pending=this.has_pending_snippet(),y(this,me,0),y(this,Oe,0),y(this,$,he(()=>{l(this,xe).call(this,l(this,W))})),l(this,me)>0){var t=y(this,de,document.createDocumentFragment());br(l(this,$),t);const n=l(this,G).pending;y(this,F,he(()=>n(l(this,W))))}else E(this,T,xt).call(this,p)}catch(n){this.error(n)}},xt=function(t){this.is_pending=!1,t.transfer_effects(l(this,ht),l(this,dt))},Ot=function(t){var n=b,r=w,i=O;ue(l(this,j)),Q(l(this,j)),$e(l(this,j).ctx);try{return Le.ensure(),t()}catch(s){return Jn(s),null}finally{ue(n),Q(r),$e(i)}},rn=function(t,n){var r;if(!this.has_pending_snippet()){this.parent&&E(r=this.parent,T,rn).call(r,t,n);return}y(this,me,l(this,me)+t),l(this,me)===0&&(E(this,T,xt).call(this,n),l(this,F)&&at(l(this,F),()=>{y(this,F,null)}),l(this,de)&&(l(this,W).before(l(this,de)),y(this,de,null)))},sn=function(t){l(this,$)&&(U(l(this,$)),y(this,$,null)),l(this,F)&&(U(l(this,F)),y(this,F,null)),l(this,Y)&&(U(l(this,Y)),y(this,Y,null));var n=l(this,G).onerror;let r=l(this,G).failed;var i=!1,s=!1;const f=()=>{if(i){ni();return}i=!0,s&&Qr(),l(this,Y)!==null&&at(l(this,Y),()=>{y(this,Y,null)}),E(this,T,Ot).call(this,()=>{E(this,T,nn).call(this)})},a=o=>{try{s=!0,n==null||n(o,f),s=!1}catch(u){be(u,l(this,j)&&l(this,j).parent)}r&&y(this,Y,E(this,T,Ot).call(this,()=>{try{return he(()=>{var u=b;u.b=this,u.f|=tn,r(l(this,W),()=>o,()=>f)})}catch(u){return be(u,l(this,j).parent),null}}))};Ne(()=>{var o;try{o=this.transform_error(t)}catch(u){be(u,l(this,j)&&l(this,j).parent);return}o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(a,u=>be(u,l(this,j)&&l(this,j).parent)):a(o)})};function _i(e,t,n,r){const i=yt()?dn:yi;var s=e.filter(h=>!h.settled),f=t.map(i);if(n.length===0&&s.length===0){r(f);return}var a=b,o=pi(),u=s.length===1?s[0].promise:s.length>1?Promise.all(s.map(h=>h.promise)):null;function d(h){if(!(a.f&ie)){o();try{r([...f,...h])}catch(_){be(_,a)}Dt()}}var v=Xn();if(n.length===0){u.then(()=>d([])).finally(v);return}function c(){Promise.all(n.map(h=>gi(h))).then(d).catch(h=>be(h,a)).finally(v)}u?u.then(()=>{o(),c(),Dt()}):c()}function pi(){var e=b,t=w,n=O,r=p;return function(s=!0){ue(e),Q(t),$e(n),s&&!(e.f&ie)&&(r==null||r.activate(),r==null||r.apply())}}function Dt(e=!0){ue(null),Q(null),$e(null),e&&(p==null||p.deactivate())}function Xn(){var e=b,t=e.b,n=p,r=!!(t!=null&&t.is_rendered());return t==null||t.update_pending_count(1,n),n.increment(r,e),()=>{t==null||t.update_pending_count(-1,n),n.decrement(r,e)}}function dn(e){var t=D|N;return b!==null&&(b.f|=Qe),{ctx:O,deps:null,effects:null,equals:Kn,f:t,fn:e,reactions:null,rv:0,v:R,wv:0,parent:b,ac:null}}const et=Symbol("obsolete");function gi(e,t,n){let r=b;r===null&&Ur();var i=void 0,s=mt(R),f=!w,a=new Set;return Fi(()=>{var h,_;var o=b,u=Yn();i=u.promise;try{Promise.resolve(e()).then(u.resolve,g=>{g!==Yt&&u.reject(g)}).finally(Dt)}catch(g){u.reject(g),Dt()}var d=p;if(f){if(o.f&Ze)var v=Xn();if((h=r.b)!=null&&h.is_rendered())(_=d.async_deriveds.get(o))==null||_.reject(et);else for(const g of a.values())g.reject(et);a.add(u),d.async_deriveds.set(o,u)}const c=(g,S=void 0)=>{v==null||v(),a.delete(u),S!==et&&(d.activate(),S?(s.f|=Ee,Lt(s,S)):(s.f&Ee&&(s.f^=Ee),Lt(s,g)),d.deactivate())};u.promise.then(c,g=>c(null,g||"unknown"))}),dr(()=>{for(const o of a)o.reject(et)}),new Promise(o=>{function u(d){function v(){d===i?o(s):u(i)}d.then(v,v)}u(i)})}function yi(e){const t=dn(e);return t.equals=zn,t}function mi(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)U(t[n])}}function vn(e){var t,n=b,r=e.parent;if(!Se&&r!==null&&e.v!==R&&r.f&(ie|Z))return ti(),e.v;ue(r);try{e.f&=~Fe,mi(e),t=Tr(e)}finally{ue(n)}return t}function er(e){var t=vn(e);if(!e.equals(t)&&(e.wv=kr(),(!(p!=null&&p.is_fork)||e.deps===null)&&(p!==null?(p.capture(e,t,!0),lt==null||lt.capture(e,t,!0)):e.v=t,e.deps===null))){A(e,C);return}Se||(M!==null?(gn()||p!=null&&p.is_fork)&&M.set(e,t):hn(e))}function wi(e){var t,n;if(e.effects!==null)for(const r of e.effects)(r.teardown||r.ac)&&((t=r.teardown)==null||t.call(r),(n=r.ac)==null||n.abort(Yt),r.fn!==null&&(r.teardown=Ir),r.ac=null,ct(r,0),yn(r))}function tr(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&t.fn!==null&&Je(t)}let Gt=null,je=null,p=null,lt=null,M=null,ln=null,ft=!1,$t=!1,qe=null,Rt=null;var kn=0;let bi=1;var Ye,we,Re,He,Ue,Ke,_e,ze,I,vt,pe,ee,se,We,Ce,k,fn,tt,on,nr,rr,Ie,Ei,nt;const Bt=class Bt{constructor(){m(this,k);B(this,"id",bi++);m(this,Ye,!1);B(this,"linked",!0);m(this,we,null);m(this,Re,null);B(this,"async_deriveds",new Map);B(this,"current",new Map);B(this,"previous",new Map);m(this,He,new Set);m(this,Ue,new Set);m(this,Ke,0);m(this,_e,new Map);m(this,ze,null);m(this,I,[]);m(this,vt,[]);m(this,pe,new Set);m(this,ee,new Set);m(this,se,new Map);m(this,We,new Set);B(this,"is_fork",!1);m(this,Ce,!1);je===null?Gt=je=this:(y(je,Re,this),y(this,we,je)),je=this}skip_effect(t){l(this,se).has(t)||l(this,se).set(t,{d:[],m:[]}),l(this,We).delete(t)}unskip_effect(t,n=r=>this.schedule(r)){var r=l(this,se).get(t);if(r){l(this,se).delete(t);for(var i of r.d)A(i,N),n(i);for(i of r.m)A(i,ae),n(i)}l(this,We).add(t)}capture(t,n,r=!1){t.v!==R&&!this.previous.has(t)&&this.previous.set(t,t.v),t.f&Ee||(this.current.set(t,[n,r]),M==null||M.set(t,n)),this.is_fork||(t.v=n)}activate(){p=this}deactivate(){p=null,M=null}flush(){try{$t=!0,p=this,E(this,k,tt).call(this)}finally{kn=0,ln=null,qe=null,Rt=null,$t=!1,p=null,M=null,Me.clear()}}discard(){var t;for(const n of l(this,Ue))n(this);l(this,Ue).clear();for(const n of this.async_deriveds.values())n.reject(et);E(this,k,nt).call(this),(t=l(this,ze))==null||t.resolve()}register_created_effect(t){l(this,vt).push(t)}increment(t,n){if(y(this,Ke,l(this,Ke)+1),t){let r=l(this,_e).get(n)??0;l(this,_e).set(n,r+1)}}decrement(t,n){if(y(this,Ke,l(this,Ke)-1),t){let r=l(this,_e).get(n)??0;r===1?l(this,_e).delete(n):l(this,_e).set(n,r-1)}l(this,Ce)||(y(this,Ce,!0),Ne(()=>{y(this,Ce,!1),this.linked&&this.flush()}))}transfer_effects(t,n){for(const r of t)l(this,pe).add(r);for(const r of n)l(this,ee).add(r);t.clear(),n.clear()}oncommit(t){l(this,He).add(t)}ondiscard(t){l(this,Ue).add(t)}settled(){return(l(this,ze)??y(this,ze,Yn())).promise}static ensure(){if(p===null){const t=p=new Bt;!$t&&!ft&&Ne(()=>{l(t,Ye)||t.flush()})}return p}apply(){{M=null;return}}schedule(t){var i;if(ln=t,(i=t.b)!=null&&i.is_pending&&t.f&(ut|gt|Hn)&&!(t.f&Ze)){t.b.defer_effect(t);return}for(var n=t;n.parent!==null;){n=n.parent;var r=n.f;if(qe!==null&&n===b&&(w===null||!(w.f&D)))return;if(r&(ke|oe)){if(!(r&C))return;n.f^=C}}l(this,I).push(n)}};Ye=new WeakMap,we=new WeakMap,Re=new WeakMap,He=new WeakMap,Ue=new WeakMap,Ke=new WeakMap,_e=new WeakMap,ze=new WeakMap,I=new WeakMap,vt=new WeakMap,pe=new WeakMap,ee=new WeakMap,se=new WeakMap,We=new WeakMap,Ce=new WeakMap,k=new WeakSet,fn=function(){if(this.is_fork)return!0;for(const r of l(this,_e).keys()){for(var t=r,n=!1;t.parent!==null;){if(l(this,se).has(t)){n=!0;break}t=t.parent}if(!n)return!0}return!1},tt=function(){var o,u,d,v;y(this,Ye,!0),kn++>1e3&&(E(this,k,nt).call(this),Si());for(const c of l(this,pe))l(this,ee).delete(c),A(c,N),this.schedule(c);for(const c of l(this,ee))A(c,ae),this.schedule(c);const t=l(this,I);y(this,I,[]),this.apply();var n=qe=[],r=[],i=Rt=[];for(const c of t)try{E(this,k,on).call(this,c,n,r)}catch(h){throw lr(c),E(this,k,fn).call(this)||this.discard(),h}if(p=null,i.length>0){var s=Bt.ensure();for(const c of i)s.schedule(c)}if(qe=null,Rt=null,E(this,k,fn).call(this)){E(this,k,Ie).call(this,r),E(this,k,Ie).call(this,n);for(const[c,h]of l(this,se))sr(c,h);i.length>0&&E(o=p,k,tt).call(o);return}const f=E(this,k,nr).call(this);if(f){E(this,k,Ie).call(this,r),E(this,k,Ie).call(this,n),E(u=f,k,rr).call(u,this);return}l(this,pe).clear(),l(this,ee).clear();for(const c of l(this,He))c(this);l(this,He).clear(),lt=this,Sn(r),Sn(n),lt=null,(d=l(this,ze))==null||d.resolve();var a=p;if(l(this,Ke)===0&&(l(this,I).length===0||a!==null)&&E(this,k,nt).call(this),l(this,I).length>0)if(a!==null){const c=a;l(c,I).push(...l(this,I).filter(h=>!l(c,I).includes(h)))}else a=this;a!==null&&E(v=a,k,tt).call(v)},on=function(t,n,r){t.f^=C;for(var i=t.first;i!==null;){var s=i.f,f=(s&(oe|ke))!==0,a=f&&(s&C)!==0,o=a||(s&Z)!==0||l(this,se).has(i);if(!o&&i.fn!==null){f?i.f^=C:s&ut?n.push(i):wt(i)&&(s&ne&&l(this,ee).add(i),Je(i));var u=i.first;if(u!==null){i=u;continue}}for(;i!==null;){var d=i.next;if(d!==null){i=d;break}i=i.parent}}},nr=function(){for(var t=l(this,we);t!==null;){if(!t.is_fork){for(const[n,[,r]]of this.current)if(t.current.has(n)&&!r)return t}t=l(t,we)}return null},rr=function(t){var r;for(const[i,s]of t.current)!this.previous.has(i)&&t.previous.has(i)&&this.previous.set(i,t.previous.get(i)),this.current.set(i,s);for(const[i,s]of t.async_deriveds){const f=this.async_deriveds.get(i);f&&s.promise.then(f.resolve).catch(f.reject)}t.async_deriveds.clear(),this.transfer_effects(l(t,pe),l(t,ee));const n=i=>{var s=i.reactions;if(s!==null)for(const o of s){var f=o.f;if(f&D)n(o);else{var a=o;f&(Be|ne)&&!this.async_deriveds.has(a)&&(l(this,ee).delete(a),A(a,N),this.schedule(a))}}};for(const i of this.current.keys())n(i);this.oncommit(()=>t.discard()),E(r=t,k,nt).call(r),p=this,E(this,k,tt).call(this)},Ie=function(t){for(var n=0;n<t.length;n+=1)Qn(t[n],l(this,pe),l(this,ee))},Ei=function(){var v;for(let c=Gt;c!==null;c=l(c,Re)){var t=c.id<this.id,n=[];for(const[h,[_,g]]of this.current){if(c.current.has(h)){var r=c.current.get(h)[0];if(t&&_!==r)c.current.set(h,[_,g]);else continue}n.push(h)}if(t)for(const[h,_]of this.async_deriveds){const g=c.async_deriveds.get(h);g&&_.promise.then(g.resolve).catch(g.reject)}var i=[...c.current.keys()].filter(h=>!c.current.get(h)[1]);if(!(!l(c,Ye)||i.length===0)){var s=i.filter(h=>!this.current.has(h));if(s.length===0)t&&c.discard();else if(n.length>0){if(t)for(const h of l(this,We))c.unskip_effect(h,_=>{var g;_.f&(ne|Be)?c.schedule(_):E(g=c,k,Ie).call(g,[_])});c.activate();var f=new Set,a=new Map;for(var o of n)ir(o,s,f,a);a=new Map;var u=[...c.current].filter(([h,_])=>{const g=this.current.get(h);return g?g[0]!==_[0]||g[1]!==_[1]:!0}).map(([h])=>h);if(u.length>0)for(const h of l(this,vt))!(h.f&(ie|Z|Nt))&&_n(h,u,a)&&(h.f&(Be|ne)?(A(h,N),c.schedule(h)):l(c,pe).add(h));if(l(c,I).length>0&&!l(c,Ce)){c.apply();for(var d of l(c,I))E(v=c,k,on).call(v,d,[],[]);y(c,I,[])}c.deactivate()}}}},nt=function(){if(this.linked){var t=l(this,we),n=l(this,Re);t===null?Gt=n:y(t,Re,n),n===null?je=t:y(n,we,t),this.linked=!1}};let Le=Bt;function ki(e){var t=ft;ft=!0;try{for(var n;;){if(li(),p===null)return n;p.flush()}}finally{ft=t}}function Si(){try{Gr()}catch(e){be(e,ln)}}let X=null;function Sn(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&(ie|Z))&&wt(r)&&(X=new Set,Je(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&yr(r),(X==null?void 0:X.size)>0)){Me.clear();for(const i of X){if(i.f&(ie|Z))continue;const s=[i];let f=i.parent;for(;f!==null;)X.has(f)&&(X.delete(f),s.push(f)),f=f.parent;for(let a=s.length-1;a>=0;a--){const o=s[a];o.f&(ie|Z)||Je(o)}}X.clear()}}X=null}}function ir(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const i of e.reactions){const s=i.f;s&D?ir(i,t,n,r):s&(Be|ne)&&!(s&N)&&_n(i,t,r)&&(A(i,N),pn(i))}}function _n(e,t,n){const r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const i of e.deps){if(Pt.call(t,i))return!0;if(i.f&D&&_n(i,t,n))return n.set(i,!0),!0}return n.set(e,!1),!1}function pn(e){p.schedule(e)}function sr(e,t){if(!(e.f&oe&&e.f&C)){e.f&N?t.d.push(e):e.f&ae&&t.m.push(e),A(e,C);for(var n=e.first;n!==null;)sr(n,t),n=n.next}}function lr(e){A(e,C);for(var t=e.first;t!==null;)lr(t),t=t.next}let Ft=new Set;const Me=new Map;let fr=!1;function mt(e,t){var n={f:0,v:e,reactions:null,equals:Kn,rv:0,wv:0};return n}function ye(e,t){const n=mt(e);return Ii(n),n}function Jt(e,t=!1,n=!0){var i;const r=mt(e);return t||(r.equals=zn),Ht&&n&&O!==null&&O.l!==null&&((i=O.l).s??(i.s=[])).push(r),r}function L(e,t,n=!1){w!==null&&(!re||w.f&Nt)&&yt()&&w.f&(D|ne|Be|Nt)&&(fe===null||!fe.has(e))&&Zr();let r=n?rt(t):t;return Lt(e,r,Rt)}function Lt(e,t,n=null){if(!e.equals(t)){Me.set(e,Se?t:e.v);var r=Le.ensure();if(r.capture(e,t),e.f&D){const i=e;e.f&N&&vn(i),M===null&&hn(i)}e.wv=kr(),or(e,N,n),yt()&&b!==null&&b.f&C&&!(b.f&(oe|ke))&&(z===null?qi([e]):z.push(e)),!r.is_fork&&Ft.size>0&&!fr&&Ti()}return t}function Ti(){fr=!1;for(const e of Ft){e.f&C&&A(e,ae);let t;try{t=wt(e)}catch{t=!0}t&&Je(e)}Ft.clear()}function ot(e){L(e,e.v+1)}function or(e,t,n){var r=e.reactions;if(r!==null)for(var i=yt(),s=r.length,f=0;f<s;f++){var a=r[f],o=a.f;if(!(!i&&a===b)){var u=(o&N)===0;if(u&&A(a,t),o&Nt)Ft.add(a);else if(o&D){var d=a;M==null||M.delete(d),o&Fe||(o&J&&(b===null||!(b.f&Mt))&&(a.f|=Fe),or(d,ae,n))}else if(u){var v=a;o&ne&&X!==null&&X.add(v),n!==null?n.push(v):pn(v)}}}}function rt(e){if(typeof e!="object"||e===null||st in e)return e;const t=Vn(e);if(t!==Lr&&t!==jr)return e;var n=new Map,r=Pr(e),i=ye(0),s=De,f=a=>{if(De===s)return a();var o=w,u=De;Q(null),Pn(s);var d=a();return Q(o),Pn(u),d};return r&&n.set("length",ye(e.length)),new Proxy(e,{defineProperty(a,o,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&$r();var d=n.get(o);return d===void 0?f(()=>{var v=ye(u.value);return n.set(o,v),v}):L(d,u.value,!0),!0},deleteProperty(a,o){var u=n.get(o);if(u===void 0){if(o in a){const d=f(()=>ye(R));n.set(o,d),ot(i)}}else L(u,R),ot(i);return!0},get(a,o,u){var h;if(o===st)return e;var d=n.get(o),v=o in a;if(d===void 0&&(!v||(h=it(a,o))!=null&&h.writable)&&(d=f(()=>{var _=rt(v?a[o]:R),g=ye(_);return g}),n.set(o,d)),d!==void 0){var c=P(d);return c===R?void 0:c}return Reflect.get(a,o,u)},getOwnPropertyDescriptor(a,o){var u=Reflect.getOwnPropertyDescriptor(a,o);if(u&&"value"in u){var d=n.get(o);d&&(u.value=P(d))}else if(u===void 0){var v=n.get(o),c=v==null?void 0:v.v;if(v!==void 0&&c!==R)return{enumerable:!0,configurable:!0,value:c,writable:!0}}return u},has(a,o){var c;if(o===st)return!0;var u=n.get(o),d=u!==void 0&&u.v!==R||Reflect.has(a,o);if(u!==void 0||b!==null&&(!d||(c=it(a,o))!=null&&c.writable)){u===void 0&&(u=f(()=>{var h=d?rt(a[o]):R,_=ye(h);return _}),n.set(o,u));var v=P(u);if(v===R)return!1}return d},set(a,o,u,d){var ce;var v=n.get(o),c=o in a;if(r&&o==="length")for(var h=u;h<v.v;h+=1){var _=n.get(h+"");_!==void 0?L(_,R):h in a&&(_=f(()=>ye(R)),n.set(h+"",_))}if(v===void 0)(!c||(ce=it(a,o))!=null&&ce.writable)&&(v=f(()=>ye(void 0)),L(v,rt(u)),n.set(o,v));else{c=v.v!==R;var g=f(()=>rt(u));L(v,g)}var S=Reflect.getOwnPropertyDescriptor(a,o);if(S!=null&&S.set&&S.set.call(d,u),!c){if(r&&typeof o=="string"){var x=n.get("length"),K=Number(o);Number.isInteger(K)&&K>=x.v&&L(x,K+1)}ot(i)}return!0},ownKeys(a){P(i);var o=Reflect.ownKeys(a).filter(v=>{var c=n.get(v);return c===void 0||c.v!==R});for(var[u,d]of n)d.v!==R&&!(u in a)&&o.push(u);return o},setPrototypeOf(){Jr()}})}var Tn,ar,ur,cr;function Ai(){if(Tn===void 0){Tn=window,ar=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;ur=it(t,"firstChild").get,cr=it(t,"nextSibling").get,bn(e)&&(e[Yr]=void 0,e[Vr]=null,e[Hr]=void 0,e.__e=void 0),bn(n)&&(n[Xe]=void 0)}}function jt(e=""){return document.createTextNode(e)}function It(e){return ur.call(e)}function Ut(e){return cr.call(e)}function bt(e,t){return It(e)}function xi(e,t=!1){{var n=It(e);return n instanceof Comment&&n.data===""?Ut(n):n}}function Et(e,t=1,n=!1){let r=e;for(;t--;)r=Ut(r);return r}function Oi(){return!1}function Ri(e,t,n){return n?document.createElement(e,{is:n}):document.createElement(e)}let An=!1;function Ci(){An||(An=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const n of e.target.elements)(t=n[At])==null||t.call(n)})},{capture:!0}))}function Kt(e){var t=w,n=b;Q(null),ue(null);try{return e()}finally{Q(t),ue(n)}}function Pi(e,t,n,r=n){e.addEventListener(t,()=>Kt(n));const i=e[At];i?e[At]=()=>{i(),r(!0)}:e[At]=()=>r(!0),Ci()}function hr(e){b===null&&(w===null&&Wr(),zr()),Se&&Kr()}function Ni(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function ge(e,t){var n=b;n!==null&&n.f&Z&&(e|=Z);var r={ctx:O,deps:null,nodes:null,f:e|N|J,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};p==null||p.register_created_effect(r);var i=r;if(e&ut)qe!==null?qe.push(r):Le.ensure().schedule(r);else if(t!==null){try{Je(r)}catch(f){throw U(r),f}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&Qe)&&(i=i.first,e&ne&&e&Ge&&i!==null&&(i.f|=Ge))}if(i!==null&&(i.parent=n,n!==null&&Ni(i,n),w!==null&&w.f&D&&!(e&ke))){var s=w;(s.effects??(s.effects=[])).push(i)}return r}function gn(){return w!==null&&!re}function dr(e){const t=ge(gt,null);return A(t,C),t.teardown=e,t}function xn(e){hr();var t=b.f,n=!w&&(t&oe)!==0&&O!==null&&!O.i;if(n){var r=O;(r.e??(r.e=[])).push(e)}else return vr(e)}function vr(e){return ge(ut|Un,e)}function Mi(e){return hr(),ge(gt|Un,e)}function Di(e){Le.ensure();const t=ge(ke|Qe,e);return(n={})=>new Promise(r=>{n.outro?at(t,()=>{U(t),r(void 0)}):(U(t),r(void 0))})}function Fi(e){return ge(Be|Qe,e)}function _r(e,t=0){return ge(gt|t,e)}function On(e,t=[],n=[],r=[]){_i(r,t,n,i=>{ge(gt,()=>{e(...i.map(P))})})}function pr(e,t=0){var n=ge(ne|t,e);return n}function he(e){return ge(oe|Qe,e)}function gr(e){var t=e.teardown;if(t!==null){const n=Se,r=w;Cn(!0),Q(null);try{t.call(null)}finally{Cn(n),Q(r)}}}function yn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const i=n.ac;i!==null&&Kt(()=>{i.abort(Yt)});var r=n.next;n.f&ke?n.parent=null:U(n,t),n=r}}function Li(e){for(var t=e.first;t!==null;){var n=t.next;t.f&oe||U(t),t=n}}function U(e,t=!0){var n=!1;(t||e.f&Br)&&e.nodes!==null&&e.nodes.end!==null&&(ji(e.nodes.start,e.nodes.end),n=!0),e.f|=En,yn(e,t&&!n),ct(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(const s of r)s.stop();gr(e),e.f^=En,e.f|=ie;var i=e.parent;i!==null&&i.first!==null&&yr(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function ji(e,t){for(;e!==null;){var n=e===t?null:Ut(e);e.remove(),e=n}}function yr(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function at(e,t,n=!0){var r=[];mr(e,r,!0);var i=()=>{n&&U(e),t&&t()},s=r.length;if(s>0){var f=()=>--s||i();for(var a of r)a.out(f)}else i()}function mr(e,t,n){if(!(e.f&Z)){e.f^=Z;var r=e.nodes&&e.nodes.t;if(r!==null)for(const a of r)(a.is_global||n)&&t.push(a);for(var i=e.first;i!==null;){var s=i.next;if(!(i.f&ke)){var f=(i.f&Ge)!==0||(i.f&oe)!==0&&(e.f&ne)!==0;mr(i,t,f?n:!1)}i=s}}}function Rn(e){wr(e,!0)}function wr(e,t){if(e.f&Z){e.f^=Z,e.f&C||(A(e,N),Le.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&Ge)!==0||(n.f&oe)!==0;wr(n,i?t:!1),n=r}var s=e.nodes&&e.nodes.t;if(s!==null)for(const f of s)(f.is_global||t)&&f.in()}}function br(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:Ut(n);t.append(n),n=i}}let Ct=!1,Se=!1;function Cn(e){Se=e}let w=null,re=!1;function Q(e){w=e}let b=null;function ue(e){b=e}let fe=null;function Ii(e){w!==null&&(fe??(fe=new Set)).add(e)}let q=null,V=0,z=null;function qi(e){z=e}let Er=1,Ae=0,De=Ae;function Pn(e){De=e}function kr(){return++Er}function wt(e){var t=e.f;if(t&N)return!0;if(t&D&&(e.f&=~Fe),t&ae){for(var n=e.deps,r=n.length,i=0;i<r;i++){var s=n[i];if(wt(s)&&er(s),s.wv>e.wv)return!0}t&J&&M===null&&A(e,C)}return!1}function Sr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(fe!==null&&fe.has(e)))for(var i=0;i<r.length;i++){var s=r[i];s.f&D?Sr(s,t,!1):t===s&&(n?A(s,N):s.f&C&&A(s,ae),pn(s))}}function Tr(e){var g;var t=q,n=V,r=z,i=w,s=fe,f=O,a=re,o=De,u=e.f;q=null,V=0,z=null,w=u&(oe|ke)?null:e,fe=null,$e(e.ctx),re=!1,De=++Ae,e.ac!==null&&(Kt(()=>{e.ac.abort(Yt)}),e.ac=null);try{e.f|=Mt;var d=e.fn,v=d();e.f|=Ze;var c=e.deps,h=p==null?void 0:p.is_fork;if(q!==null){var _;if(h||ct(e,V),c!==null&&V>0)for(c.length=V+q.length,_=0;_<q.length;_++)c[V+_]=q[_];else e.deps=c=q;if(gn()&&e.f&J)for(_=V;_<c.length;_++)((g=c[_]).reactions??(g.reactions=[])).push(e)}else!h&&c!==null&&V<c.length&&(ct(e,V),c.length=V);if(yt()&&z!==null&&!re&&c!==null&&!(e.f&(D|ae|N)))for(_=0;_<z.length;_++)Sr(z[_],e);if(i!==null&&i!==e){if(Ae++,i.deps!==null)for(let S=0;S<n;S+=1)i.deps[S].rv=Ae;if(t!==null)for(const S of t)S.rv=Ae;z!==null&&(r===null?r=z:r.push(...z))}return e.f&Ee&&(e.f^=Ee),v}catch(S){return Jn(S)}finally{e.f^=Mt,q=t,V=n,z=r,w=i,fe=s,$e(f),re=a,De=o}}function Bi(e,t){let n=t.reactions;if(n!==null){var r=Nr.call(n,e);if(r!==-1){var i=n.length-1;i===0?n=t.reactions=null:(n[r]=n[i],n.pop())}}if(n===null&&t.f&D&&(q===null||!Pt.call(q,t))){var s=t;s.f&J&&(s.f^=J,s.f&=~Fe),s.v!==R&&hn(s),wi(s),ct(s,0)}}function ct(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Bi(e,n[r])}function Je(e){var t=e.f;if(!(t&ie)){A(e,C);var n=b,r=Ct;b=e,Ct=!0;try{t&(ne|Hn)?Li(e):yn(e),gr(e);var i=Tr(e);e.teardown=typeof i=="function"?i:null,e.wv=Er;var s;Bn&&ii&&e.f&N&&e.deps}finally{Ct=r,b=n}}}async function Vi(){await Promise.resolve(),ki()}function P(e){var t=e.f,n=(t&D)!==0;if(w!==null&&!re){var r=b!==null&&(b.f&ie)!==0;if(!r&&(fe===null||!fe.has(e))){var i=w.deps;if(w.f&Mt)e.rv<Ae&&(e.rv=Ae,q===null&&i!==null&&i[V]===e?V++:q===null?q=[e]:q.push(e));else{w.deps??(w.deps=[]),Pt.call(w.deps,e)||w.deps.push(e);var s=e.reactions;s===null?e.reactions=[w]:Pt.call(s,w)||s.push(w)}}}if(Se&&Me.has(e))return Me.get(e);if(n){var f=e;if(Se){var a=f.v;return(!(f.f&C)&&f.reactions!==null||xr(f))&&(a=vn(f)),Me.set(f,a),a}var o=(f.f&J)===0&&!re&&w!==null&&(Ct||(w.f&J)!==0),u=(f.f&Ze)===0;wt(f)&&(o&&(f.f|=J),er(f)),o&&!u&&(tr(f),Ar(f))}if(M!=null&&M.has(e))return M.get(e);if(e.f&Ee)throw e.v;return e.v}function Ar(e){if(e.f|=J,e.deps!==null)for(const t of e.deps)(t.reactions??(t.reactions=[])).push(e),t.f&D&&!(t.f&J)&&(tr(t),Ar(t))}function xr(e){if(e.v===R)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(Me.has(t)||t.f&D&&xr(t))return!0;return!1}function mn(e){var t=re;try{return re=!0,e()}finally{re=t}}function Yi(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(st in e)an(e);else if(!Array.isArray(e))for(let t in e){const n=e[t];typeof n=="object"&&n&&st in n&&an(n)}}}function an(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let r in e)try{an(e[r],t)}catch{}const n=Vn(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const r=Fr(n);for(let i in r){const s=r[i].get;if(s)try{s.call(e)}catch{}}}}}const Hi=["touchstart","touchmove"];function Ui(e){return Hi.includes(e)}const kt=Symbol("events"),Ki=new Set,Nn=new Set;function zi(e,t,n,r={}){function i(s){if(r.capture||un.call(t,s),!s.cancelBubble)return Kt(()=>n==null?void 0:n.call(this,s))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?Ne(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function Wi(e,t,n,r,i){var s={capture:r,passive:i},f=zi(e,t,n,s);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&dr(()=>{t.removeEventListener(e,f,s)})}let Mn=null;function un(e){var g,S;var t=this,n=t.ownerDocument,r=e.type,i=((g=e.composedPath)==null?void 0:g.call(e))||[],s=i[0]||e.target;Mn=e;var f=0,a=Mn===e&&e[kt];if(a){var o=i.indexOf(a);if(o!==-1&&(t===document||t===window)){e[kt]=t;return}var u=i.indexOf(t);if(u===-1)return;o<=u&&(f=o)}if(s=i[f]||e.target,s!==t){Dr(e,"currentTarget",{configurable:!0,get(){return s||n}});var d=w,v=b;Q(null),ue(null);try{for(var c,h=[];s!==null&&s!==t;){try{var _=(S=s[kt])==null?void 0:S[r];_!=null&&(!s.disabled||e.target===s)&&_.call(s,e)}catch(x){c?h.push(x):c=x}if(e.cancelBubble)break;f++,s=f<i.length?i[f]:null}if(c){for(let x of h)queueMicrotask(()=>{throw x});throw c}}finally{e[kt]=t,delete e.currentTarget,Q(d),ue(v)}}}var In;const Zt=((In=globalThis==null?void 0:globalThis.window)==null?void 0:In.trustedTypes)&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function Gi(e){return(Zt==null?void 0:Zt.createHTML(e))??e}function $i(e){var t=Ri("template");return t.innerHTML=Gi(e.replaceAll("<!>","<!---->")),t.content}function Dn(e,t){var n=b;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function zt(e,t){var n=(t&Xr)!==0,r=(t&ei)!==0,i,s=!e.startsWith("<!>");return()=>{i===void 0&&(i=$i(s?e:"<!>"+e),n||(i=It(i)));var f=r||ar?document.importNode(i,!0):i.cloneNode(!0);if(n){var a=It(f),o=f.lastChild;Dn(a,o)}else Dn(f,f);return f}}function St(e,t){e!==null&&e.before(t)}function Fn(e,t){var n=t==null?"":typeof t=="object"?`${t}`:t;n!==(e[Xe]??(e[Xe]=e.nodeValue))&&(e[Xe]=n,e.nodeValue=`${n}`)}function Ji(e,t){return Zi(e,t)}const Tt=new Map;function Zi(e,{target:t,anchor:n,props:r={},events:i,context:s,intro:f=!0,transformError:a}){Ai();var o=void 0,u=Di(()=>{var d=n??t.appendChild(jt());ui(d,{pending:()=>{}},h=>{Wn({});var _=O;s&&(_.c=s),i&&(r.$$events=i),o=e(h,r)||{},Gn()},a);var v=new Set,c=h=>{for(var _=0;_<h.length;_++){var g=h[_];if(!v.has(g)){v.add(g);var S=Ui(g);for(const ce of[t,document]){var x=Tt.get(ce);x===void 0&&(x=new Map,Tt.set(ce,x));var K=x.get(g);K===void 0?(ce.addEventListener(g,un,{passive:S}),x.set(g,1)):x.set(g,K+1)}}}};return c(Mr(Ki)),Nn.add(c),()=>{var S;for(var h of v)for(const x of[t,document]){var _=Tt.get(x),g=_.get(h);--g==0?(x.removeEventListener(h,un),_.delete(h),_.size===0&&Tt.delete(x)):_.set(h,g)}Nn.delete(c),d!==n&&((S=d.parentNode)==null||S.removeChild(d))}});return Qi.set(o,u),o}let Qi=new WeakMap;var te,le,H,Pe,_t,pt,Vt;class Xi{constructor(t,n=!0){B(this,"anchor");m(this,te,new Map);m(this,le,new Map);m(this,H,new Map);m(this,Pe,new Set);m(this,_t,!0);m(this,pt,t=>{if(l(this,te).has(t)){var n=l(this,te).get(t),r=l(this,le).get(n);if(r)Rn(r),l(this,Pe).delete(n);else{var i=l(this,H).get(n);i&&(Rn(i.effect),l(this,le).set(n,i.effect),l(this,H).delete(n),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),r=i.effect)}for(const[s,f]of l(this,te)){if(l(this,te).delete(s),s===t)break;const a=l(this,H).get(f);a&&(U(a.effect),l(this,H).delete(f))}for(const[s,f]of l(this,le)){if(s===n||l(this,Pe).has(s))continue;const a=()=>{if(Array.from(l(this,te).values()).includes(s)){var u=document.createDocumentFragment();br(f,u),u.append(jt()),l(this,H).set(s,{effect:f,fragment:u})}else U(f);l(this,Pe).delete(s),l(this,le).delete(s)};l(this,_t)||!r?(l(this,Pe).add(s),at(f,a,!1)):a()}}});m(this,Vt,t=>{l(this,te).delete(t);const n=Array.from(l(this,te).values());for(const[r,i]of l(this,H))n.includes(r)||(U(i.effect),l(this,H).delete(r))});this.anchor=t,y(this,_t,n)}ensure(t,n){var r=p,i=Oi();if(n&&!l(this,le).has(t)&&!l(this,H).has(t))if(i){var s=document.createDocumentFragment(),f=jt();s.append(f),l(this,H).set(t,{effect:he(()=>n(f)),fragment:s})}else l(this,le).set(t,he(()=>n(this.anchor)));if(l(this,te).set(r,t),i){for(const[a,o]of l(this,le))a===t?r.unskip_effect(o):r.skip_effect(o);for(const[a,o]of l(this,H))a===t?r.unskip_effect(o.effect):r.skip_effect(o.effect);r.oncommit(l(this,pt)),r.ondiscard(l(this,Vt))}else l(this,pt).call(this,r)}}te=new WeakMap,le=new WeakMap,H=new WeakMap,Pe=new WeakMap,_t=new WeakMap,pt=new WeakMap,Vt=new WeakMap;function Ln(e,t,n=!1){var r=new Xi(e),i=n?Ge:0;function s(f,a){r.ensure(f,a)}pr(()=>{var f=!1;t((a,o=0)=>{f=!0,s(o,a)}),f||s(-1,null)},i)}function es(e,t,n=t){var r=new WeakSet;Pi(e,"input",async i=>{var s=i?e.defaultValue:e.value;if(s=Qt(e)?Xt(s):s,n(s),p!==null&&r.add(p),await Vi(),s!==(s=t())){var f=e.selectionStart,a=e.selectionEnd,o=e.value.length;if(e.value=s??"",a!==null){var u=e.value.length;f===a&&a===o&&u>o?(e.selectionStart=u,e.selectionEnd=u):(e.selectionStart=f,e.selectionEnd=Math.min(a,u))}}}),mn(t)==null&&e.value&&(n(Qt(e)?Xt(e.value):e.value),p!==null&&r.add(p)),_r(()=>{var i=t();if(e===document.activeElement){var s=p;if(r.has(s))return}Qt(e)&&i===Xt(e.value)||e.type==="date"&&!i&&!e.value||i!==e.value&&(e.value=i??"")})}function Qt(e){var t=e.type;return t==="number"||t==="range"}function Xt(e){return e===""?null:+e}function ts(e){return function(...t){var n=t[0];return n.preventDefault(),e==null?void 0:e.apply(this,t)}}function ns(e=!1){const t=O,n=t.l.u;if(!n)return;let r=()=>Yi(t.s);if(e){let i=0,s={};const f=dn(()=>{let a=!1;const o=t.s;for(const u in o)o[u]!==s[u]&&(s[u]=o[u],a=!0);return a&&i++,i});r=()=>P(f)}n.b.length&&Mi(()=>{jn(t,r),en(n.b)}),xn(()=>{const i=mn(()=>n.m.map(qr));return()=>{for(const s of i)typeof s=="function"&&s()}}),n.a.length&&xn(()=>{jn(t,r),en(n.a)})}function jn(e,t){if(e.l.s)for(const n of e.l.s)P(n);t()}const rs="5";var qn;typeof window<"u"&&((qn=window.__svelte??(window.__svelte={})).v??(qn.v=new Set)).add(rs);si();var is=zt('<p class="success svelte-1n46o8q">Connected. You can close this tab and return to the terminal.</p>'),ss=zt('<p class="error svelte-1n46o8q"> </p>'),ls=zt('<p>Paste your DataLab Rotterdam Nova API key to connect nova-ai-cli.</p> <form class="svelte-1n46o8q"><input type="password" placeholder="Nova API key" autocomplete="off" required="" class="svelte-1n46o8q"/> <button type="submit" class="svelte-1n46o8q"> </button></form> <!>',1),fs=zt('<main class="svelte-1n46o8q"><h1 class="svelte-1n46o8q">Connect Nova AI</h1> <!></main>');function os(e,t){Wn(t,!1);let n=Jt(""),r=Jt("idle"),i=Jt("");async function s(){L(r,"submitting"),L(i,"");try{const d=await fetch("/api/authenticate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:P(n)})});if(!d.ok){const v=await d.json().catch(()=>null);L(i,(v==null?void 0:v.message)??"Failed to validate API key."),L(r,"error");return}L(r,"success")}catch{L(i,"Could not reach the local auth server."),L(r,"error")}}ns();var f=fs(),a=Et(bt(f),2);{var o=d=>{var v=is();St(d,v)},u=d=>{var v=ls(),c=Et(xi(v),2),h=bt(c),_=Et(h,2),g=bt(_),S=Et(c,2);{var x=K=>{var ce=ss(),Or=bt(ce);On(()=>Fn(Or,P(i))),St(K,ce)};Ln(S,K=>{P(r)==="error"&&K(x)})}On(()=>{h.disabled=P(r)==="submitting",_.disabled=P(r)==="submitting"||!P(n),Fn(g,P(r)==="submitting"?"Connecting…":"Connect")}),es(h,()=>P(n),K=>L(n,K)),Wi("submit",c,ts(s)),St(d,v)};Ln(a,d=>{P(r)==="success"?d(o):d(u,-1)})}St(e,f),Gn()}Ji(os,{target:document.getElementById("app")});
@@ -1 +0,0 @@
1
- body{margin:0;background:#0f0f12;color:#e6e6e6;font-family:system-ui,-apple-system,sans-serif}main.svelte-1n46o8q{max-width:360px;margin:10vh auto;padding:2rem}h1.svelte-1n46o8q{font-size:1.25rem;margin-bottom:.5rem}form.svelte-1n46o8q{display:flex;gap:.5rem;margin-top:1rem}input.svelte-1n46o8q{flex:1;padding:.5rem .75rem;border-radius:6px;border:1px solid #333;background:#1a1a1e;color:inherit}button.svelte-1n46o8q{padding:.5rem 1rem;border-radius:6px;border:none;background:#5b5bf0;color:#fff;cursor:pointer}button.svelte-1n46o8q:disabled{opacity:.6;cursor:default}.success.svelte-1n46o8q{color:#4ade80}.error.svelte-1n46o8q{color:#f87171}