claude-sessions-mcp 0.1.4 → 0.1.6

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 (99) hide show
  1. package/dist/mcp/index.js +93 -9
  2. package/dist/mcp/index.js.map +1 -1
  3. package/dist/web/client/_app/immutable/assets/0.C8nBXjrd.css +1 -0
  4. package/dist/web/client/_app/immutable/assets/0.C8nBXjrd.css.br +0 -0
  5. package/dist/web/client/_app/immutable/assets/0.C8nBXjrd.css.gz +0 -0
  6. package/dist/web/client/_app/immutable/chunks/{DJ2XDlZh.js → Bnj9_x4l.js} +1 -1
  7. package/dist/web/client/_app/immutable/chunks/Bnj9_x4l.js.br +0 -0
  8. package/dist/web/client/_app/immutable/chunks/Bnj9_x4l.js.gz +0 -0
  9. package/dist/web/client/_app/immutable/chunks/CoYbTZW3.js +1 -0
  10. package/dist/web/client/_app/immutable/chunks/CoYbTZW3.js.br +0 -0
  11. package/dist/web/client/_app/immutable/chunks/CoYbTZW3.js.gz +0 -0
  12. package/dist/web/client/_app/immutable/chunks/{CkKD22Ww.js → DUVCQSoz.js} +1 -1
  13. package/dist/web/client/_app/immutable/chunks/DUVCQSoz.js.br +0 -0
  14. package/dist/web/client/_app/immutable/chunks/DUVCQSoz.js.gz +0 -0
  15. package/dist/web/client/_app/immutable/chunks/DXY2Rq4J.js +1 -0
  16. package/dist/web/client/_app/immutable/chunks/DXY2Rq4J.js.br +0 -0
  17. package/dist/web/client/_app/immutable/chunks/DXY2Rq4J.js.gz +0 -0
  18. package/dist/web/client/_app/immutable/chunks/{DecY8Lt_.js → sCxbWNg5.js} +1 -1
  19. package/dist/web/client/_app/immutable/chunks/sCxbWNg5.js.br +0 -0
  20. package/dist/web/client/_app/immutable/chunks/sCxbWNg5.js.gz +0 -0
  21. package/dist/web/client/_app/immutable/entry/{app.D9OMq4hT.js → app.kqUYTLBh.js} +2 -2
  22. package/dist/web/client/_app/immutable/entry/app.kqUYTLBh.js.br +0 -0
  23. package/dist/web/client/_app/immutable/entry/app.kqUYTLBh.js.gz +0 -0
  24. package/dist/web/client/_app/immutable/entry/start.BPGMjvr3.js +1 -0
  25. package/dist/web/client/_app/immutable/entry/start.BPGMjvr3.js.br +2 -0
  26. package/dist/web/client/_app/immutable/entry/start.BPGMjvr3.js.gz +0 -0
  27. package/dist/web/client/_app/immutable/nodes/{0.BihBXfXC.js → 0.BkssNmeP.js} +1 -1
  28. package/dist/web/client/_app/immutable/nodes/0.BkssNmeP.js.br +0 -0
  29. package/dist/web/client/_app/immutable/nodes/0.BkssNmeP.js.gz +0 -0
  30. package/dist/web/client/_app/immutable/nodes/{1.GzS0_vVo.js → 1.nrfaX95H.js} +1 -1
  31. package/dist/web/client/_app/immutable/nodes/1.nrfaX95H.js.br +3 -0
  32. package/dist/web/client/_app/immutable/nodes/1.nrfaX95H.js.gz +0 -0
  33. package/dist/web/client/_app/immutable/nodes/2.JRQSNUQJ.js +1 -0
  34. package/dist/web/client/_app/immutable/nodes/2.JRQSNUQJ.js.br +0 -0
  35. package/dist/web/client/_app/immutable/nodes/2.JRQSNUQJ.js.gz +0 -0
  36. package/dist/web/client/_app/version.json +1 -1
  37. package/dist/web/client/_app/version.json.br +0 -0
  38. package/dist/web/client/_app/version.json.gz +0 -0
  39. package/dist/web/server/chunks/{0-CfWkxQMb.js → 0-PRvIjum0.js} +3 -3
  40. package/dist/web/server/chunks/{0-CfWkxQMb.js.map → 0-PRvIjum0.js.map} +1 -1
  41. package/dist/web/server/chunks/{1-CYWeDRMQ.js → 1-C9LHKX1M.js} +2 -2
  42. package/dist/web/server/chunks/{1-CYWeDRMQ.js.map → 1-C9LHKX1M.js.map} +1 -1
  43. package/dist/web/server/chunks/{2-CbCSzfAy.js → 2-CAJqQrr8.js} +2 -2
  44. package/dist/web/server/chunks/{2-CbCSzfAy.js.map → 2-CAJqQrr8.js.map} +1 -1
  45. package/dist/web/server/chunks/_server.ts-BUo23tM8.js +23 -0
  46. package/dist/web/server/chunks/_server.ts-BUo23tM8.js.map +1 -0
  47. package/dist/web/server/chunks/{_server.ts-D8vMV9FN.js → _server.ts-Bn_98d_y.js} +2 -2
  48. package/dist/web/server/chunks/{_server.ts-D8vMV9FN.js.map → _server.ts-Bn_98d_y.js.map} +1 -1
  49. package/dist/web/server/chunks/{_server.ts-C5Bf6au4.js → _server.ts-BzsEPkcX.js} +2 -2
  50. package/dist/web/server/chunks/{_server.ts-C5Bf6au4.js.map → _server.ts-BzsEPkcX.js.map} +1 -1
  51. package/dist/web/server/chunks/{_server.ts-Bxqo8tYS.js → _server.ts-CR3BXGRo.js} +2 -2
  52. package/dist/web/server/chunks/{_server.ts-Bxqo8tYS.js.map → _server.ts-CR3BXGRo.js.map} +1 -1
  53. package/dist/web/server/chunks/_server.ts-CmmN7FJP.js +19 -0
  54. package/dist/web/server/chunks/_server.ts-CmmN7FJP.js.map +1 -0
  55. package/dist/web/server/chunks/{_server.ts-BXCTPhzX.js → _server.ts-CpyT5bqO.js} +2 -2
  56. package/dist/web/server/chunks/{_server.ts-BXCTPhzX.js.map → _server.ts-CpyT5bqO.js.map} +1 -1
  57. package/dist/web/server/chunks/{_server.ts-Ne8LE0dr.js → _server.ts-D1Ih9YID.js} +2 -2
  58. package/dist/web/server/chunks/{_server.ts-Ne8LE0dr.js.map → _server.ts-D1Ih9YID.js.map} +1 -1
  59. package/dist/web/server/chunks/{_server.ts-DW3OhHzP.js → _server.ts-DWAZmBHh.js} +2 -2
  60. package/dist/web/server/chunks/{_server.ts-DW3OhHzP.js.map → _server.ts-DWAZmBHh.js.map} +1 -1
  61. package/dist/web/server/chunks/_server.ts-fWcsgf21.js +8 -0
  62. package/dist/web/server/chunks/_server.ts-fWcsgf21.js.map +1 -0
  63. package/dist/web/server/chunks/{session-ioLIuaZI.js → session--a-xLYU7.js} +54 -2
  64. package/dist/web/server/chunks/session--a-xLYU7.js.map +1 -0
  65. package/dist/web/server/index.js +1 -1
  66. package/dist/web/server/index.js.map +1 -1
  67. package/dist/web/server/manifest.js +25 -11
  68. package/dist/web/server/manifest.js.map +1 -1
  69. package/package.json +1 -1
  70. package/dist/web/client/_app/immutable/assets/0.CwJLztMb.css +0 -1
  71. package/dist/web/client/_app/immutable/assets/0.CwJLztMb.css.br +0 -0
  72. package/dist/web/client/_app/immutable/assets/0.CwJLztMb.css.gz +0 -0
  73. package/dist/web/client/_app/immutable/chunks/CkKD22Ww.js.br +0 -0
  74. package/dist/web/client/_app/immutable/chunks/CkKD22Ww.js.gz +0 -0
  75. package/dist/web/client/_app/immutable/chunks/DJ2XDlZh.js.br +0 -0
  76. package/dist/web/client/_app/immutable/chunks/DJ2XDlZh.js.gz +0 -0
  77. package/dist/web/client/_app/immutable/chunks/DUfrtY0h.js +0 -1
  78. package/dist/web/client/_app/immutable/chunks/DUfrtY0h.js.br +0 -0
  79. package/dist/web/client/_app/immutable/chunks/DUfrtY0h.js.gz +0 -0
  80. package/dist/web/client/_app/immutable/chunks/DecY8Lt_.js.br +0 -0
  81. package/dist/web/client/_app/immutable/chunks/DecY8Lt_.js.gz +0 -0
  82. package/dist/web/client/_app/immutable/chunks/xvhGf2kv.js +0 -1
  83. package/dist/web/client/_app/immutable/chunks/xvhGf2kv.js.br +0 -0
  84. package/dist/web/client/_app/immutable/chunks/xvhGf2kv.js.gz +0 -0
  85. package/dist/web/client/_app/immutable/entry/app.D9OMq4hT.js.br +0 -0
  86. package/dist/web/client/_app/immutable/entry/app.D9OMq4hT.js.gz +0 -0
  87. package/dist/web/client/_app/immutable/entry/start.B8HX8ndm.js +0 -1
  88. package/dist/web/client/_app/immutable/entry/start.B8HX8ndm.js.br +0 -2
  89. package/dist/web/client/_app/immutable/entry/start.B8HX8ndm.js.gz +0 -0
  90. package/dist/web/client/_app/immutable/nodes/0.BihBXfXC.js.br +0 -0
  91. package/dist/web/client/_app/immutable/nodes/0.BihBXfXC.js.gz +0 -0
  92. package/dist/web/client/_app/immutable/nodes/1.GzS0_vVo.js.br +0 -2
  93. package/dist/web/client/_app/immutable/nodes/1.GzS0_vVo.js.gz +0 -0
  94. package/dist/web/client/_app/immutable/nodes/2.DLDvSy-I.js +0 -1
  95. package/dist/web/client/_app/immutable/nodes/2.DLDvSy-I.js.br +0 -0
  96. package/dist/web/client/_app/immutable/nodes/2.DLDvSy-I.js.gz +0 -0
  97. package/dist/web/server/chunks/_server.ts-C88EFL4g.js +0 -19
  98. package/dist/web/server/chunks/_server.ts-C88EFL4g.js.map +0 -1
  99. package/dist/web/server/chunks/session-ioLIuaZI.js.map +0 -1
package/dist/mcp/index.js CHANGED
@@ -86,14 +86,44 @@ var readSession = (projectName, sessionId) => Effect.gen(function* () {
86
86
  const lines = content.trim().split("\n").filter(Boolean);
87
87
  return lines.map((line) => JSON.parse(line));
88
88
  });
89
+ var findLinkedAgents = (projectName, sessionId) => Effect.gen(function* () {
90
+ const projectPath = path.join(getSessionsDir(), projectName);
91
+ const files = yield* Effect.tryPromise(() => fs.readdir(projectPath));
92
+ const agentFiles = files.filter((f) => f.startsWith("agent-") && f.endsWith(".jsonl"));
93
+ const linkedAgents = [];
94
+ for (const agentFile of agentFiles) {
95
+ const filePath = path.join(projectPath, agentFile);
96
+ const content = yield* Effect.tryPromise(() => fs.readFile(filePath, "utf-8"));
97
+ const firstLine = content.split("\n")[0];
98
+ if (firstLine) {
99
+ try {
100
+ const parsed = JSON.parse(firstLine);
101
+ if (parsed.sessionId === sessionId) {
102
+ linkedAgents.push(agentFile.replace(".jsonl", ""));
103
+ }
104
+ } catch {
105
+ }
106
+ }
107
+ }
108
+ return linkedAgents;
109
+ });
89
110
  var deleteSession = (projectName, sessionId) => Effect.gen(function* () {
90
111
  const sessionsDir = getSessionsDir();
91
- const filePath = path.join(sessionsDir, projectName, `${sessionId}.jsonl`);
92
- const backupDir = path.join(sessionsDir, projectName, ".bak");
112
+ const projectPath = path.join(sessionsDir, projectName);
113
+ const filePath = path.join(projectPath, `${sessionId}.jsonl`);
114
+ const backupDir = path.join(projectPath, ".bak");
93
115
  yield* Effect.tryPromise(() => fs.mkdir(backupDir, { recursive: true }));
116
+ const linkedAgents = yield* findLinkedAgents(projectName, sessionId);
117
+ const deletedAgents = [];
118
+ for (const agentId of linkedAgents) {
119
+ const agentPath = path.join(projectPath, `${agentId}.jsonl`);
120
+ const agentBackupPath = path.join(backupDir, `${agentId}.jsonl`);
121
+ yield* Effect.tryPromise(() => fs.rename(agentPath, agentBackupPath));
122
+ deletedAgents.push(agentId);
123
+ }
94
124
  const backupPath = path.join(backupDir, `${sessionId}.jsonl`);
95
125
  yield* Effect.tryPromise(() => fs.rename(filePath, backupPath));
96
- return { success: true, backupPath };
126
+ return { success: true, backupPath, deletedAgents };
97
127
  });
98
128
  var renameSession = (projectName, sessionId, newTitle) => Effect.gen(function* () {
99
129
  const filePath = path.join(getSessionsDir(), projectName, `${sessionId}.jsonl`);
@@ -157,21 +187,73 @@ var previewCleanup = (projectName) => Effect.gen(function* () {
157
187
  );
158
188
  return results;
159
189
  });
190
+ var findOrphanAgents = (projectName) => Effect.gen(function* () {
191
+ const projectPath = path.join(getSessionsDir(), projectName);
192
+ const files = yield* Effect.tryPromise(() => fs.readdir(projectPath));
193
+ const sessionIds = new Set(
194
+ files.filter((f) => !f.startsWith("agent-") && f.endsWith(".jsonl")).map((f) => f.replace(".jsonl", ""))
195
+ );
196
+ const agentFiles = files.filter((f) => f.startsWith("agent-") && f.endsWith(".jsonl"));
197
+ const orphanAgents = [];
198
+ for (const agentFile of agentFiles) {
199
+ const filePath = path.join(projectPath, agentFile);
200
+ const content = yield* Effect.tryPromise(() => fs.readFile(filePath, "utf-8"));
201
+ const firstLine = content.split("\n")[0];
202
+ if (firstLine) {
203
+ try {
204
+ const parsed = JSON.parse(firstLine);
205
+ if (parsed.sessionId && !sessionIds.has(parsed.sessionId)) {
206
+ orphanAgents.push({
207
+ agentId: agentFile.replace(".jsonl", ""),
208
+ sessionId: parsed.sessionId
209
+ });
210
+ }
211
+ } catch {
212
+ }
213
+ }
214
+ }
215
+ return orphanAgents;
216
+ });
217
+ var deleteOrphanAgents = (projectName) => Effect.gen(function* () {
218
+ const projectPath = path.join(getSessionsDir(), projectName);
219
+ const orphans = yield* findOrphanAgents(projectName);
220
+ const backupDir = path.join(projectPath, ".bak");
221
+ yield* Effect.tryPromise(() => fs.mkdir(backupDir, { recursive: true }));
222
+ const deletedAgents = [];
223
+ for (const orphan of orphans) {
224
+ const agentPath = path.join(projectPath, `${orphan.agentId}.jsonl`);
225
+ const agentBackupPath = path.join(backupDir, `${orphan.agentId}.jsonl`);
226
+ yield* Effect.tryPromise(() => fs.rename(agentPath, agentBackupPath));
227
+ deletedAgents.push(orphan.agentId);
228
+ }
229
+ return { success: true, deletedAgents, count: deletedAgents.length };
230
+ });
160
231
  var clearSessions = (options) => Effect.gen(function* () {
161
- const { projectName, clearEmpty = true, clearInvalid = true } = options;
232
+ const {
233
+ projectName,
234
+ clearEmpty = true,
235
+ clearInvalid = true,
236
+ clearOrphanAgents = true
237
+ } = options;
162
238
  const cleanupPreview = yield* previewCleanup(projectName);
163
239
  let deletedCount = 0;
240
+ let deletedAgentCount = 0;
164
241
  for (const result of cleanupPreview) {
165
242
  const toDelete = [
166
243
  ...clearEmpty ? result.emptySessions : [],
167
244
  ...clearInvalid ? result.invalidSessions : []
168
245
  ];
169
246
  for (const session of toDelete) {
170
- yield* deleteSession(result.project, session.id);
247
+ const deleteResult = yield* deleteSession(result.project, session.id);
171
248
  deletedCount++;
249
+ deletedAgentCount += deleteResult.deletedAgents.length;
250
+ }
251
+ if (clearOrphanAgents) {
252
+ const orphanResult = yield* deleteOrphanAgents(result.project);
253
+ deletedAgentCount += orphanResult.count;
172
254
  }
173
255
  }
174
- return { success: true, deletedCount };
256
+ return { success: true, deletedCount, deletedAgentCount };
175
257
  });
176
258
  var getSessionFiles = (projectName, sessionId) => Effect.gen(function* () {
177
259
  const messages = yield* readSession(projectName, sessionId);
@@ -361,14 +443,16 @@ server.tool(
361
443
  {
362
444
  project_name: z.string().optional().describe("Optional: filter by project name"),
363
445
  clear_empty: z.boolean().default(true).describe("Clear empty sessions (default: true)"),
364
- clear_invalid: z.boolean().default(true).describe("Clear invalid API key sessions (default: true)")
446
+ clear_invalid: z.boolean().default(true).describe("Clear invalid API key sessions (default: true)"),
447
+ clear_orphan_agents: z.boolean().default(true).describe("Clear orphan agent files whose session no longer exists (default: true)")
365
448
  },
366
- async ({ project_name, clear_empty, clear_invalid }) => {
449
+ async ({ project_name, clear_empty, clear_invalid, clear_orphan_agents }) => {
367
450
  const result = await Effect2.runPromise(
368
451
  clearSessions({
369
452
  projectName: project_name,
370
453
  clearEmpty: clear_empty,
371
- clearInvalid: clear_invalid
454
+ clearInvalid: clear_invalid,
455
+ clearOrphanAgents: clear_orphan_agents
372
456
  })
373
457
  );
374
458
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mcp/index.ts","../../src/lib/session.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { Effect } from 'effect'\nimport { z } from 'zod'\nimport * as session from '../lib/session.js'\nimport { startWebServer, stopWebServer } from '../server.js'\n\nconst server = new McpServer({\n name: 'claude-sessions-mcp',\n version: '0.1.0',\n})\n\n// List all projects\nserver.tool('list_projects', 'List all Claude Code projects with session counts', {}, async () => {\n const result = await Effect.runPromise(session.listProjects)\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n})\n\n// List sessions in a project\nserver.tool(\n 'list_sessions',\n 'List all sessions in a project',\n {\n project_name: z.string().describe(\"Project folder name (e.g., '-Users-young-works-myproject')\"),\n },\n async ({ project_name }) => {\n const result = await Effect.runPromise(session.listSessions(project_name))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Rename session\nserver.tool(\n 'rename_session',\n 'Rename a session by adding a title prefix to the first message',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID (filename without .jsonl)'),\n new_title: z.string().describe('New title to add as prefix'),\n },\n async ({ project_name, session_id, new_title }) => {\n const result = await Effect.runPromise(\n session.renameSession(project_name, session_id, new_title)\n )\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Delete session\nserver.tool(\n 'delete_session',\n 'Delete a session (moves to .bak folder for recovery)',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID to delete'),\n },\n async ({ project_name, session_id }) => {\n const result = await Effect.runPromise(session.deleteSession(project_name, session_id))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Delete message\nserver.tool(\n 'delete_message',\n 'Delete a message from a session and repair the parentUuid chain',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID'),\n message_uuid: z.string().describe('UUID of the message to delete'),\n },\n async ({ project_name, session_id, message_uuid }) => {\n const result = await Effect.runPromise(\n session.deleteMessage(project_name, session_id, message_uuid)\n )\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Preview cleanup\nserver.tool(\n 'preview_cleanup',\n 'Preview sessions that would be cleaned (empty and invalid API key sessions)',\n {\n project_name: z.string().optional().describe('Optional: filter by project name'),\n },\n async ({ project_name }) => {\n const result = await Effect.runPromise(session.previewCleanup(project_name))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Clear sessions\nserver.tool(\n 'clear_sessions',\n 'Delete all empty sessions and invalid API key sessions',\n {\n project_name: z.string().optional().describe('Optional: filter by project name'),\n clear_empty: z.boolean().default(true).describe('Clear empty sessions (default: true)'),\n clear_invalid: z\n .boolean()\n .default(true)\n .describe('Clear invalid API key sessions (default: true)'),\n },\n async ({ project_name, clear_empty, clear_invalid }) => {\n const result = await Effect.runPromise(\n session.clearSessions({\n projectName: project_name,\n clearEmpty: clear_empty,\n clearInvalid: clear_invalid,\n })\n )\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Get changed files from a session\nserver.tool(\n 'get_session_files',\n 'Get list of all files changed in a session (from file-history-snapshot and tool_use)',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID'),\n },\n async ({ project_name, session_id }) => {\n const result = await Effect.runPromise(session.getSessionFiles(project_name, session_id))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Get session diff summary\nserver.tool(\n 'get_session_diff',\n 'Get diff summary for a session including file changes and snapshot info',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID'),\n },\n async ({ project_name, session_id }) => {\n const result = await Effect.runPromise(session.getSessionDiffSummary(project_name, session_id))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Start GUI\nlet webServerInstance: Awaited<ReturnType<typeof startWebServer>> | null = null\n\nserver.tool(\n 'start_gui',\n 'Start the web GUI for session management and open it in browser',\n {\n port: z.number().default(5173).describe('Port to run the web server on (default: 5173)'),\n open_browser: z\n .boolean()\n .default(true)\n .describe('Whether to open browser automatically (default: true)'),\n restart: z\n .boolean()\n .default(false)\n .describe('Restart the server if already running (default: false)'),\n },\n async ({ port, open_browser, restart }) => {\n try {\n if (webServerInstance) {\n if (restart) {\n await stopWebServer(webServerInstance)\n webServerInstance = null\n } else {\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n {\n success: true,\n message: 'Web GUI is already running',\n url: `http://localhost:${port}`,\n },\n null,\n 2\n ),\n },\n ],\n }\n }\n }\n\n webServerInstance = await startWebServer(port, open_browser)\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n {\n success: true,\n message: 'Web GUI started successfully',\n url: `http://localhost:${port}`,\n pid: process.pid,\n },\n null,\n 2\n ),\n },\n ],\n }\n } catch (error) {\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n {\n success: false,\n error: String(error),\n },\n null,\n 2\n ),\n },\n ],\n }\n }\n }\n)\n\n// Stop GUI\nserver.tool('stop_gui', 'Stop the web GUI server', {}, async () => {\n if (webServerInstance) {\n const port = webServerInstance.port\n // Call shutdown API first for graceful shutdown\n try {\n await fetch(`http://localhost:${port}/api/shutdown`, { method: 'POST' })\n } catch {\n // Server might already be stopping\n }\n // Then kill the process if still running\n await stopWebServer(webServerInstance)\n webServerInstance = null\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({ success: true, message: 'Web GUI stopped successfully' }, null, 2),\n },\n ],\n }\n }\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({ success: true, message: 'Web GUI was not running' }, null, 2),\n },\n ],\n }\n})\n\n// Main entry\nasync function main() {\n const transport = new StdioServerTransport()\n await server.connect(transport)\n}\n\nmain().catch(console.error)\n","import { Effect, pipe, Array as A, Option as O } from 'effect'\nimport * as fs from 'node:fs/promises'\nimport * as path from 'node:path'\nimport * as os from 'node:os'\nimport type { Message, SessionMeta, Project } from './schema.js'\n\n// Get Claude sessions directory\nexport const getSessionsDir = (): string => path.join(os.homedir(), '.claude', 'projects')\n\n// List all project directories\nexport const listProjects = Effect.gen(function* () {\n const sessionsDir = getSessionsDir()\n\n const exists = yield* Effect.tryPromise(() =>\n fs\n .access(sessionsDir)\n .then(() => true)\n .catch(() => false)\n )\n\n if (!exists) {\n return [] as Project[]\n }\n\n const entries = yield* Effect.tryPromise(() => fs.readdir(sessionsDir, { withFileTypes: true }))\n\n const projects = yield* Effect.all(\n entries\n .filter((e) => e.isDirectory())\n .map((entry) =>\n Effect.gen(function* () {\n const projectPath = path.join(sessionsDir, entry.name)\n const files = yield* Effect.tryPromise(() => fs.readdir(projectPath))\n const sessionFiles = files.filter((f) => f.endsWith('.jsonl'))\n\n return {\n name: entry.name,\n path: projectPath,\n sessionCount: sessionFiles.length,\n } satisfies Project\n })\n ),\n { concurrency: 10 }\n )\n\n return projects\n})\n\n// List sessions in a project\nexport const listSessions = (projectName: string) =>\n Effect.gen(function* () {\n const projectPath = path.join(getSessionsDir(), projectName)\n const files = yield* Effect.tryPromise(() => fs.readdir(projectPath))\n const sessionFiles = files.filter((f) => f.endsWith('.jsonl'))\n\n const sessions = yield* Effect.all(\n sessionFiles.map((file) =>\n Effect.gen(function* () {\n const filePath = path.join(projectPath, file)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const lines = content.trim().split('\\n').filter(Boolean)\n const messages = lines.map((line) => JSON.parse(line) as Message)\n\n const sessionId = file.replace('.jsonl', '')\n const firstMessage = messages[0]\n const lastMessage = messages[messages.length - 1]\n\n // Extract title from first user message\n const title = pipe(\n messages,\n A.findFirst((m) => m.type === 'human'),\n O.map((m) => {\n const msg = m.message as { content?: string } | undefined\n const content = msg?.content ?? ''\n return content.slice(0, 50) + (content.length > 50 ? '...' : '')\n }),\n O.getOrElse(() => 'Untitled')\n )\n\n return {\n id: sessionId,\n projectName,\n title,\n messageCount: messages.length,\n createdAt: firstMessage?.timestamp,\n updatedAt: lastMessage?.timestamp,\n } satisfies SessionMeta\n })\n ),\n { concurrency: 10 }\n )\n\n return sessions\n })\n\n// Read session messages\nexport const readSession = (projectName: string, sessionId: string) =>\n Effect.gen(function* () {\n const filePath = path.join(getSessionsDir(), projectName, `${sessionId}.jsonl`)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const lines = content.trim().split('\\n').filter(Boolean)\n return lines.map((line) => JSON.parse(line) as Message)\n })\n\n// Delete a session\nexport const deleteSession = (projectName: string, sessionId: string) =>\n Effect.gen(function* () {\n const sessionsDir = getSessionsDir()\n const filePath = path.join(sessionsDir, projectName, `${sessionId}.jsonl`)\n\n // Create backup directory\n const backupDir = path.join(sessionsDir, projectName, '.bak')\n yield* Effect.tryPromise(() => fs.mkdir(backupDir, { recursive: true }))\n\n // Move to backup\n const backupPath = path.join(backupDir, `${sessionId}.jsonl`)\n yield* Effect.tryPromise(() => fs.rename(filePath, backupPath))\n\n return { success: true, backupPath }\n })\n\n// Rename session by adding title prefix\nexport const renameSession = (projectName: string, sessionId: string, newTitle: string) =>\n Effect.gen(function* () {\n const filePath = path.join(getSessionsDir(), projectName, `${sessionId}.jsonl`)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const lines = content.trim().split('\\n').filter(Boolean)\n\n if (lines.length === 0) {\n return { success: false, error: 'Empty session' }\n }\n\n const messages = lines.map((line) => JSON.parse(line) as Message)\n const firstMsg = messages[0]\n\n // Add title prefix to first message\n if (firstMsg && typeof firstMsg.message === 'object' && firstMsg.message !== null) {\n const msg = firstMsg.message as { content?: string }\n if (msg.content) {\n // Remove existing title prefix if any\n const cleanContent = msg.content.replace(/^\\[.*?\\]\\s*/, '')\n msg.content = `[${newTitle}] ${cleanContent}`\n }\n }\n\n const newContent = messages.map((m) => JSON.stringify(m)).join('\\n') + '\\n'\n yield* Effect.tryPromise(() => fs.writeFile(filePath, newContent, 'utf-8'))\n\n return { success: true }\n })\n\n// Delete a message from session\nexport const deleteMessage = (projectName: string, sessionId: string, messageUuid: string) =>\n Effect.gen(function* () {\n const filePath = path.join(getSessionsDir(), projectName, `${sessionId}.jsonl`)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const lines = content.trim().split('\\n').filter(Boolean)\n const messages = lines.map((line) => JSON.parse(line) as Message)\n\n const targetIndex = messages.findIndex((m) => m.uuid === messageUuid)\n if (targetIndex === -1) {\n return { success: false, error: 'Message not found' }\n }\n\n // Get the parent UUID of deleted message\n const deletedMsg = messages[targetIndex]\n const parentUuid = deletedMsg?.parentUuid\n\n // Update child message to point to deleted message's parent\n const nextMsg = messages[targetIndex + 1]\n if (nextMsg) {\n nextMsg.parentUuid = parentUuid\n }\n\n // Remove the message\n messages.splice(targetIndex, 1)\n\n const newContent = messages.map((m) => JSON.stringify(m)).join('\\n') + '\\n'\n yield* Effect.tryPromise(() => fs.writeFile(filePath, newContent, 'utf-8'))\n\n return { success: true }\n })\n\n// Preview cleanup - find empty and invalid sessions\nexport const previewCleanup = (projectName?: string) =>\n Effect.gen(function* () {\n const projects = yield* listProjects\n const targetProjects = projectName ? projects.filter((p) => p.name === projectName) : projects\n\n const results = yield* Effect.all(\n targetProjects.map((project) =>\n Effect.gen(function* () {\n const sessions = yield* listSessions(project.name)\n const emptySessions = sessions.filter((s) => s.messageCount === 0)\n const invalidSessions = sessions.filter(\n (s) => s.title?.includes('Invalid API key') || s.title?.includes('API key')\n )\n\n return {\n project: project.name,\n emptySessions,\n invalidSessions,\n }\n })\n ),\n { concurrency: 5 }\n )\n\n return results\n })\n\n// Clear sessions (empty and invalid)\nexport const clearSessions = (options: {\n projectName?: string\n clearEmpty?: boolean\n clearInvalid?: boolean\n}) =>\n Effect.gen(function* () {\n const { projectName, clearEmpty = true, clearInvalid = true } = options\n const cleanupPreview = yield* previewCleanup(projectName)\n\n let deletedCount = 0\n\n for (const result of cleanupPreview) {\n const toDelete = [\n ...(clearEmpty ? result.emptySessions : []),\n ...(clearInvalid ? result.invalidSessions : []),\n ]\n\n for (const session of toDelete) {\n yield* deleteSession(result.project, session.id)\n deletedCount++\n }\n }\n\n return { success: true, deletedCount }\n })\n\n// File change info extracted from session\nexport interface FileChange {\n path: string\n action: 'created' | 'modified' | 'deleted'\n timestamp?: string\n messageUuid?: string\n}\n\n// Session file changes summary\nexport interface SessionFilesSummary {\n sessionId: string\n projectName: string\n files: FileChange[]\n totalChanges: number\n}\n\n// Get changed files from a session\nexport const getSessionFiles = (projectName: string, sessionId: string) =>\n Effect.gen(function* () {\n const messages = yield* readSession(projectName, sessionId)\n const fileChanges: FileChange[] = []\n const seenFiles = new Set<string>()\n\n for (const msg of messages) {\n // Check for file-history-snapshot type\n if (msg.type === 'file-history-snapshot') {\n const snapshot = msg as unknown as {\n type: string\n messageId?: string\n snapshot?: {\n trackedFileBackups?: Record<string, unknown>\n timestamp?: string\n }\n }\n\n const backups = snapshot.snapshot?.trackedFileBackups\n if (backups && typeof backups === 'object') {\n for (const filePath of Object.keys(backups)) {\n if (!seenFiles.has(filePath)) {\n seenFiles.add(filePath)\n fileChanges.push({\n path: filePath,\n action: 'modified',\n timestamp: snapshot.snapshot?.timestamp,\n messageUuid: snapshot.messageId ?? msg.uuid,\n })\n }\n }\n }\n }\n\n // Also check tool_use for Write/Edit operations\n if (msg.type === 'assistant' && msg.message) {\n const assistantMsg = msg.message as {\n content?: Array<{ type: string; name?: string; input?: { file_path?: string } }>\n }\n const content = assistantMsg.content\n if (Array.isArray(content)) {\n for (const block of content) {\n if (block.type === 'tool_use' && (block.name === 'Write' || block.name === 'Edit')) {\n const filePath = block.input?.file_path\n if (filePath && !seenFiles.has(filePath)) {\n seenFiles.add(filePath)\n fileChanges.push({\n path: filePath,\n action: block.name === 'Write' ? 'created' : 'modified',\n timestamp: msg.timestamp,\n messageUuid: msg.uuid,\n })\n }\n }\n }\n }\n }\n }\n\n return {\n sessionId,\n projectName,\n files: fileChanges,\n totalChanges: fileChanges.length,\n } satisfies SessionFilesSummary\n })\n\n// Get file changes diff summary for a session\nexport interface FileDiffSummary {\n sessionId: string\n projectName: string\n title: string\n changes: Array<{\n path: string\n action: 'created' | 'modified' | 'deleted'\n hasBackup: boolean\n backupPreview?: string\n }>\n totalFiles: number\n snapshotCount: number\n}\n\nexport const getSessionDiffSummary = (projectName: string, sessionId: string) =>\n Effect.gen(function* () {\n const messages = yield* readSession(projectName, sessionId)\n\n // Extract title\n const title = pipe(\n messages,\n A.findFirst((m) => m.type === 'human'),\n O.map((m) => {\n const msg = m.message as { content?: string } | undefined\n const content = msg?.content ?? ''\n return content.slice(0, 50) + (content.length > 50 ? '...' : '')\n }),\n O.getOrElse(() => 'Untitled')\n )\n\n const changes: FileDiffSummary['changes'] = []\n const seenFiles = new Set<string>()\n let snapshotCount = 0\n\n for (const msg of messages) {\n if (msg.type === 'file-history-snapshot') {\n snapshotCount++\n const snapshot = msg as {\n type: string\n snapshot?: {\n trackedFileBackups?: Record<string, { content?: string }>\n }\n }\n\n const backups = snapshot.snapshot?.trackedFileBackups\n if (backups && typeof backups === 'object') {\n for (const [filePath, backup] of Object.entries(backups)) {\n if (!seenFiles.has(filePath)) {\n seenFiles.add(filePath)\n const backupData = backup as { content?: string } | undefined\n const content = backupData?.content ?? ''\n changes.push({\n path: filePath,\n action: 'modified',\n hasBackup: content.length > 0,\n backupPreview: content.slice(0, 100) + (content.length > 100 ? '...' : ''),\n })\n }\n }\n }\n }\n }\n\n return {\n sessionId,\n projectName,\n title,\n changes,\n totalFiles: changes.length,\n snapshotCount,\n } satisfies FileDiffSummary\n })\n"],"mappings":"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","names":["Effect","content","Effect"]}
1
+ {"version":3,"sources":["../../src/mcp/index.ts","../../src/lib/session.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { Effect } from 'effect'\nimport { z } from 'zod'\nimport * as session from '../lib/session.js'\nimport { startWebServer, stopWebServer } from '../server.js'\n\nconst server = new McpServer({\n name: 'claude-sessions-mcp',\n version: '0.1.0',\n})\n\n// List all projects\nserver.tool('list_projects', 'List all Claude Code projects with session counts', {}, async () => {\n const result = await Effect.runPromise(session.listProjects)\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n})\n\n// List sessions in a project\nserver.tool(\n 'list_sessions',\n 'List all sessions in a project',\n {\n project_name: z.string().describe(\"Project folder name (e.g., '-Users-young-works-myproject')\"),\n },\n async ({ project_name }) => {\n const result = await Effect.runPromise(session.listSessions(project_name))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Rename session\nserver.tool(\n 'rename_session',\n 'Rename a session by adding a title prefix to the first message',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID (filename without .jsonl)'),\n new_title: z.string().describe('New title to add as prefix'),\n },\n async ({ project_name, session_id, new_title }) => {\n const result = await Effect.runPromise(\n session.renameSession(project_name, session_id, new_title)\n )\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Delete session\nserver.tool(\n 'delete_session',\n 'Delete a session (moves to .bak folder for recovery)',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID to delete'),\n },\n async ({ project_name, session_id }) => {\n const result = await Effect.runPromise(session.deleteSession(project_name, session_id))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Delete message\nserver.tool(\n 'delete_message',\n 'Delete a message from a session and repair the parentUuid chain',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID'),\n message_uuid: z.string().describe('UUID of the message to delete'),\n },\n async ({ project_name, session_id, message_uuid }) => {\n const result = await Effect.runPromise(\n session.deleteMessage(project_name, session_id, message_uuid)\n )\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Preview cleanup\nserver.tool(\n 'preview_cleanup',\n 'Preview sessions that would be cleaned (empty and invalid API key sessions)',\n {\n project_name: z.string().optional().describe('Optional: filter by project name'),\n },\n async ({ project_name }) => {\n const result = await Effect.runPromise(session.previewCleanup(project_name))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Clear sessions\nserver.tool(\n 'clear_sessions',\n 'Delete all empty sessions and invalid API key sessions',\n {\n project_name: z.string().optional().describe('Optional: filter by project name'),\n clear_empty: z.boolean().default(true).describe('Clear empty sessions (default: true)'),\n clear_invalid: z\n .boolean()\n .default(true)\n .describe('Clear invalid API key sessions (default: true)'),\n clear_orphan_agents: z\n .boolean()\n .default(true)\n .describe('Clear orphan agent files whose session no longer exists (default: true)'),\n },\n async ({ project_name, clear_empty, clear_invalid, clear_orphan_agents }) => {\n const result = await Effect.runPromise(\n session.clearSessions({\n projectName: project_name,\n clearEmpty: clear_empty,\n clearInvalid: clear_invalid,\n clearOrphanAgents: clear_orphan_agents,\n })\n )\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Get changed files from a session\nserver.tool(\n 'get_session_files',\n 'Get list of all files changed in a session (from file-history-snapshot and tool_use)',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID'),\n },\n async ({ project_name, session_id }) => {\n const result = await Effect.runPromise(session.getSessionFiles(project_name, session_id))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Get session diff summary\nserver.tool(\n 'get_session_diff',\n 'Get diff summary for a session including file changes and snapshot info',\n {\n project_name: z.string().describe('Project folder name'),\n session_id: z.string().describe('Session ID'),\n },\n async ({ project_name, session_id }) => {\n const result = await Effect.runPromise(session.getSessionDiffSummary(project_name, session_id))\n return {\n content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],\n }\n }\n)\n\n// Start GUI\nlet webServerInstance: Awaited<ReturnType<typeof startWebServer>> | null = null\n\nserver.tool(\n 'start_gui',\n 'Start the web GUI for session management and open it in browser',\n {\n port: z.number().default(5173).describe('Port to run the web server on (default: 5173)'),\n open_browser: z\n .boolean()\n .default(true)\n .describe('Whether to open browser automatically (default: true)'),\n restart: z\n .boolean()\n .default(false)\n .describe('Restart the server if already running (default: false)'),\n },\n async ({ port, open_browser, restart }) => {\n try {\n if (webServerInstance) {\n if (restart) {\n await stopWebServer(webServerInstance)\n webServerInstance = null\n } else {\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n {\n success: true,\n message: 'Web GUI is already running',\n url: `http://localhost:${port}`,\n },\n null,\n 2\n ),\n },\n ],\n }\n }\n }\n\n webServerInstance = await startWebServer(port, open_browser)\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n {\n success: true,\n message: 'Web GUI started successfully',\n url: `http://localhost:${port}`,\n pid: process.pid,\n },\n null,\n 2\n ),\n },\n ],\n }\n } catch (error) {\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(\n {\n success: false,\n error: String(error),\n },\n null,\n 2\n ),\n },\n ],\n }\n }\n }\n)\n\n// Stop GUI\nserver.tool('stop_gui', 'Stop the web GUI server', {}, async () => {\n if (webServerInstance) {\n const port = webServerInstance.port\n // Call shutdown API first for graceful shutdown\n try {\n await fetch(`http://localhost:${port}/api/shutdown`, { method: 'POST' })\n } catch {\n // Server might already be stopping\n }\n // Then kill the process if still running\n await stopWebServer(webServerInstance)\n webServerInstance = null\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({ success: true, message: 'Web GUI stopped successfully' }, null, 2),\n },\n ],\n }\n }\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({ success: true, message: 'Web GUI was not running' }, null, 2),\n },\n ],\n }\n})\n\n// Main entry\nasync function main() {\n const transport = new StdioServerTransport()\n await server.connect(transport)\n}\n\nmain().catch(console.error)\n","import { Effect, pipe, Array as A, Option as O } from 'effect'\nimport * as fs from 'node:fs/promises'\nimport * as path from 'node:path'\nimport * as os from 'node:os'\nimport type { Message, SessionMeta, Project } from './schema.js'\n\n// Get Claude sessions directory\nexport const getSessionsDir = (): string => path.join(os.homedir(), '.claude', 'projects')\n\n// List all project directories\nexport const listProjects = Effect.gen(function* () {\n const sessionsDir = getSessionsDir()\n\n const exists = yield* Effect.tryPromise(() =>\n fs\n .access(sessionsDir)\n .then(() => true)\n .catch(() => false)\n )\n\n if (!exists) {\n return [] as Project[]\n }\n\n const entries = yield* Effect.tryPromise(() => fs.readdir(sessionsDir, { withFileTypes: true }))\n\n const projects = yield* Effect.all(\n entries\n .filter((e) => e.isDirectory())\n .map((entry) =>\n Effect.gen(function* () {\n const projectPath = path.join(sessionsDir, entry.name)\n const files = yield* Effect.tryPromise(() => fs.readdir(projectPath))\n const sessionFiles = files.filter((f) => f.endsWith('.jsonl'))\n\n return {\n name: entry.name,\n path: projectPath,\n sessionCount: sessionFiles.length,\n } satisfies Project\n })\n ),\n { concurrency: 10 }\n )\n\n return projects\n})\n\n// List sessions in a project\nexport const listSessions = (projectName: string) =>\n Effect.gen(function* () {\n const projectPath = path.join(getSessionsDir(), projectName)\n const files = yield* Effect.tryPromise(() => fs.readdir(projectPath))\n const sessionFiles = files.filter((f) => f.endsWith('.jsonl'))\n\n const sessions = yield* Effect.all(\n sessionFiles.map((file) =>\n Effect.gen(function* () {\n const filePath = path.join(projectPath, file)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const lines = content.trim().split('\\n').filter(Boolean)\n const messages = lines.map((line) => JSON.parse(line) as Message)\n\n const sessionId = file.replace('.jsonl', '')\n const firstMessage = messages[0]\n const lastMessage = messages[messages.length - 1]\n\n // Extract title from first user message\n const title = pipe(\n messages,\n A.findFirst((m) => m.type === 'human'),\n O.map((m) => {\n const msg = m.message as { content?: string } | undefined\n const content = msg?.content ?? ''\n return content.slice(0, 50) + (content.length > 50 ? '...' : '')\n }),\n O.getOrElse(() => 'Untitled')\n )\n\n return {\n id: sessionId,\n projectName,\n title,\n messageCount: messages.length,\n createdAt: firstMessage?.timestamp,\n updatedAt: lastMessage?.timestamp,\n } satisfies SessionMeta\n })\n ),\n { concurrency: 10 }\n )\n\n return sessions\n })\n\n// Read session messages\nexport const readSession = (projectName: string, sessionId: string) =>\n Effect.gen(function* () {\n const filePath = path.join(getSessionsDir(), projectName, `${sessionId}.jsonl`)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const lines = content.trim().split('\\n').filter(Boolean)\n return lines.map((line) => JSON.parse(line) as Message)\n })\n\n// Find agent files linked to a session\nexport const findLinkedAgents = (projectName: string, sessionId: string) =>\n Effect.gen(function* () {\n const projectPath = path.join(getSessionsDir(), projectName)\n const files = yield* Effect.tryPromise(() => fs.readdir(projectPath))\n const agentFiles = files.filter((f) => f.startsWith('agent-') && f.endsWith('.jsonl'))\n\n const linkedAgents: string[] = []\n\n for (const agentFile of agentFiles) {\n const filePath = path.join(projectPath, agentFile)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const firstLine = content.split('\\n')[0]\n\n if (firstLine) {\n try {\n const parsed = JSON.parse(firstLine) as { sessionId?: string }\n if (parsed.sessionId === sessionId) {\n linkedAgents.push(agentFile.replace('.jsonl', ''))\n }\n } catch {\n // Skip invalid JSON\n }\n }\n }\n\n return linkedAgents\n })\n\n// Delete a session and its linked agent files\nexport const deleteSession = (projectName: string, sessionId: string) =>\n Effect.gen(function* () {\n const sessionsDir = getSessionsDir()\n const projectPath = path.join(sessionsDir, projectName)\n const filePath = path.join(projectPath, `${sessionId}.jsonl`)\n\n // Create backup directory\n const backupDir = path.join(projectPath, '.bak')\n yield* Effect.tryPromise(() => fs.mkdir(backupDir, { recursive: true }))\n\n // Find and delete linked agent files\n const linkedAgents = yield* findLinkedAgents(projectName, sessionId)\n const deletedAgents: string[] = []\n\n for (const agentId of linkedAgents) {\n const agentPath = path.join(projectPath, `${agentId}.jsonl`)\n const agentBackupPath = path.join(backupDir, `${agentId}.jsonl`)\n yield* Effect.tryPromise(() => fs.rename(agentPath, agentBackupPath))\n deletedAgents.push(agentId)\n }\n\n // Move session file to backup\n const backupPath = path.join(backupDir, `${sessionId}.jsonl`)\n yield* Effect.tryPromise(() => fs.rename(filePath, backupPath))\n\n return { success: true, backupPath, deletedAgents }\n })\n\n// Rename session by adding title prefix\nexport const renameSession = (projectName: string, sessionId: string, newTitle: string) =>\n Effect.gen(function* () {\n const filePath = path.join(getSessionsDir(), projectName, `${sessionId}.jsonl`)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const lines = content.trim().split('\\n').filter(Boolean)\n\n if (lines.length === 0) {\n return { success: false, error: 'Empty session' }\n }\n\n const messages = lines.map((line) => JSON.parse(line) as Message)\n const firstMsg = messages[0]\n\n // Add title prefix to first message\n if (firstMsg && typeof firstMsg.message === 'object' && firstMsg.message !== null) {\n const msg = firstMsg.message as { content?: string }\n if (msg.content) {\n // Remove existing title prefix if any\n const cleanContent = msg.content.replace(/^\\[.*?\\]\\s*/, '')\n msg.content = `[${newTitle}] ${cleanContent}`\n }\n }\n\n const newContent = messages.map((m) => JSON.stringify(m)).join('\\n') + '\\n'\n yield* Effect.tryPromise(() => fs.writeFile(filePath, newContent, 'utf-8'))\n\n return { success: true }\n })\n\n// Delete a message from session\nexport const deleteMessage = (projectName: string, sessionId: string, messageUuid: string) =>\n Effect.gen(function* () {\n const filePath = path.join(getSessionsDir(), projectName, `${sessionId}.jsonl`)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const lines = content.trim().split('\\n').filter(Boolean)\n const messages = lines.map((line) => JSON.parse(line) as Message)\n\n const targetIndex = messages.findIndex((m) => m.uuid === messageUuid)\n if (targetIndex === -1) {\n return { success: false, error: 'Message not found' }\n }\n\n // Get the parent UUID of deleted message\n const deletedMsg = messages[targetIndex]\n const parentUuid = deletedMsg?.parentUuid\n\n // Update child message to point to deleted message's parent\n const nextMsg = messages[targetIndex + 1]\n if (nextMsg) {\n nextMsg.parentUuid = parentUuid\n }\n\n // Remove the message\n messages.splice(targetIndex, 1)\n\n const newContent = messages.map((m) => JSON.stringify(m)).join('\\n') + '\\n'\n yield* Effect.tryPromise(() => fs.writeFile(filePath, newContent, 'utf-8'))\n\n return { success: true }\n })\n\n// Preview cleanup - find empty and invalid sessions\nexport const previewCleanup = (projectName?: string) =>\n Effect.gen(function* () {\n const projects = yield* listProjects\n const targetProjects = projectName ? projects.filter((p) => p.name === projectName) : projects\n\n const results = yield* Effect.all(\n targetProjects.map((project) =>\n Effect.gen(function* () {\n const sessions = yield* listSessions(project.name)\n const emptySessions = sessions.filter((s) => s.messageCount === 0)\n const invalidSessions = sessions.filter(\n (s) => s.title?.includes('Invalid API key') || s.title?.includes('API key')\n )\n\n return {\n project: project.name,\n emptySessions,\n invalidSessions,\n }\n })\n ),\n { concurrency: 5 }\n )\n\n return results\n })\n\n// Find orphan agent files (agents whose parent session no longer exists)\nexport const findOrphanAgents = (projectName: string) =>\n Effect.gen(function* () {\n const projectPath = path.join(getSessionsDir(), projectName)\n const files = yield* Effect.tryPromise(() => fs.readdir(projectPath))\n\n const sessionIds = new Set(\n files\n .filter((f) => !f.startsWith('agent-') && f.endsWith('.jsonl'))\n .map((f) => f.replace('.jsonl', ''))\n )\n\n const agentFiles = files.filter((f) => f.startsWith('agent-') && f.endsWith('.jsonl'))\n const orphanAgents: Array<{ agentId: string; sessionId: string }> = []\n\n for (const agentFile of agentFiles) {\n const filePath = path.join(projectPath, agentFile)\n const content = yield* Effect.tryPromise(() => fs.readFile(filePath, 'utf-8'))\n const firstLine = content.split('\\n')[0]\n\n if (firstLine) {\n try {\n const parsed = JSON.parse(firstLine) as { sessionId?: string }\n if (parsed.sessionId && !sessionIds.has(parsed.sessionId)) {\n orphanAgents.push({\n agentId: agentFile.replace('.jsonl', ''),\n sessionId: parsed.sessionId,\n })\n }\n } catch {\n // Skip invalid JSON\n }\n }\n }\n\n return orphanAgents\n })\n\n// Delete orphan agent files\nexport const deleteOrphanAgents = (projectName: string) =>\n Effect.gen(function* () {\n const projectPath = path.join(getSessionsDir(), projectName)\n const orphans = yield* findOrphanAgents(projectName)\n\n // Create backup directory\n const backupDir = path.join(projectPath, '.bak')\n yield* Effect.tryPromise(() => fs.mkdir(backupDir, { recursive: true }))\n\n const deletedAgents: string[] = []\n\n for (const orphan of orphans) {\n const agentPath = path.join(projectPath, `${orphan.agentId}.jsonl`)\n const agentBackupPath = path.join(backupDir, `${orphan.agentId}.jsonl`)\n yield* Effect.tryPromise(() => fs.rename(agentPath, agentBackupPath))\n deletedAgents.push(orphan.agentId)\n }\n\n return { success: true, deletedAgents, count: deletedAgents.length }\n })\n\n// Clear sessions (empty and invalid)\nexport const clearSessions = (options: {\n projectName?: string\n clearEmpty?: boolean\n clearInvalid?: boolean\n clearOrphanAgents?: boolean\n}) =>\n Effect.gen(function* () {\n const {\n projectName,\n clearEmpty = true,\n clearInvalid = true,\n clearOrphanAgents = true,\n } = options\n const cleanupPreview = yield* previewCleanup(projectName)\n\n let deletedCount = 0\n let deletedAgentCount = 0\n\n for (const result of cleanupPreview) {\n const toDelete = [\n ...(clearEmpty ? result.emptySessions : []),\n ...(clearInvalid ? result.invalidSessions : []),\n ]\n\n for (const session of toDelete) {\n const deleteResult = yield* deleteSession(result.project, session.id)\n deletedCount++\n deletedAgentCount += deleteResult.deletedAgents.length\n }\n\n // Clean up orphan agents after deleting sessions\n if (clearOrphanAgents) {\n const orphanResult = yield* deleteOrphanAgents(result.project)\n deletedAgentCount += orphanResult.count\n }\n }\n\n return { success: true, deletedCount, deletedAgentCount }\n })\n\n// File change info extracted from session\nexport interface FileChange {\n path: string\n action: 'created' | 'modified' | 'deleted'\n timestamp?: string\n messageUuid?: string\n}\n\n// Session file changes summary\nexport interface SessionFilesSummary {\n sessionId: string\n projectName: string\n files: FileChange[]\n totalChanges: number\n}\n\n// Get changed files from a session\nexport const getSessionFiles = (projectName: string, sessionId: string) =>\n Effect.gen(function* () {\n const messages = yield* readSession(projectName, sessionId)\n const fileChanges: FileChange[] = []\n const seenFiles = new Set<string>()\n\n for (const msg of messages) {\n // Check for file-history-snapshot type\n if (msg.type === 'file-history-snapshot') {\n const snapshot = msg as unknown as {\n type: string\n messageId?: string\n snapshot?: {\n trackedFileBackups?: Record<string, unknown>\n timestamp?: string\n }\n }\n\n const backups = snapshot.snapshot?.trackedFileBackups\n if (backups && typeof backups === 'object') {\n for (const filePath of Object.keys(backups)) {\n if (!seenFiles.has(filePath)) {\n seenFiles.add(filePath)\n fileChanges.push({\n path: filePath,\n action: 'modified',\n timestamp: snapshot.snapshot?.timestamp,\n messageUuid: snapshot.messageId ?? msg.uuid,\n })\n }\n }\n }\n }\n\n // Also check tool_use for Write/Edit operations\n if (msg.type === 'assistant' && msg.message) {\n const assistantMsg = msg.message as {\n content?: Array<{ type: string; name?: string; input?: { file_path?: string } }>\n }\n const content = assistantMsg.content\n if (Array.isArray(content)) {\n for (const block of content) {\n if (block.type === 'tool_use' && (block.name === 'Write' || block.name === 'Edit')) {\n const filePath = block.input?.file_path\n if (filePath && !seenFiles.has(filePath)) {\n seenFiles.add(filePath)\n fileChanges.push({\n path: filePath,\n action: block.name === 'Write' ? 'created' : 'modified',\n timestamp: msg.timestamp,\n messageUuid: msg.uuid,\n })\n }\n }\n }\n }\n }\n }\n\n return {\n sessionId,\n projectName,\n files: fileChanges,\n totalChanges: fileChanges.length,\n } satisfies SessionFilesSummary\n })\n\n// Get file changes diff summary for a session\nexport interface FileDiffSummary {\n sessionId: string\n projectName: string\n title: string\n changes: Array<{\n path: string\n action: 'created' | 'modified' | 'deleted'\n hasBackup: boolean\n backupPreview?: string\n }>\n totalFiles: number\n snapshotCount: number\n}\n\nexport const getSessionDiffSummary = (projectName: string, sessionId: string) =>\n Effect.gen(function* () {\n const messages = yield* readSession(projectName, sessionId)\n\n // Extract title\n const title = pipe(\n messages,\n A.findFirst((m) => m.type === 'human'),\n O.map((m) => {\n const msg = m.message as { content?: string } | undefined\n const content = msg?.content ?? ''\n return content.slice(0, 50) + (content.length > 50 ? '...' : '')\n }),\n O.getOrElse(() => 'Untitled')\n )\n\n const changes: FileDiffSummary['changes'] = []\n const seenFiles = new Set<string>()\n let snapshotCount = 0\n\n for (const msg of messages) {\n if (msg.type === 'file-history-snapshot') {\n snapshotCount++\n const snapshot = msg as {\n type: string\n snapshot?: {\n trackedFileBackups?: Record<string, { content?: string }>\n }\n }\n\n const backups = snapshot.snapshot?.trackedFileBackups\n if (backups && typeof backups === 'object') {\n for (const [filePath, backup] of Object.entries(backups)) {\n if (!seenFiles.has(filePath)) {\n seenFiles.add(filePath)\n const backupData = backup as { content?: string } | undefined\n const content = backupData?.content ?? ''\n changes.push({\n path: filePath,\n action: 'modified',\n hasBackup: content.length > 0,\n backupPreview: content.slice(0, 100) + (content.length > 100 ? '...' : ''),\n })\n }\n }\n }\n }\n }\n\n return {\n sessionId,\n projectName,\n title,\n changes,\n totalFiles: changes.length,\n snapshotCount,\n } satisfies FileDiffSummary\n })\n"],"mappings":"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","names":["Effect","content","Effect"]}
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-700:oklch(50.5% .213 27.518);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-white:#fff;--spacing:.25rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-gh-bg:#0d1117;--color-gh-bg-secondary:#161b22;--color-gh-border:#30363d;--color-gh-border-subtle:#21262d;--color-gh-text:#c9d1d9;--color-gh-text-secondary:#8b949e;--color-gh-accent:#1f6feb;--color-gh-green:#238636;--color-gh-red:#f85149}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.fixed{position:fixed}.relative{position:relative}.right-4{right:calc(var(--spacing)*4)}.bottom-4{bottom:calc(var(--spacing)*4)}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\[calc\(100vh-120px\)\]{height:calc(100vh - 120px)}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing)*3)}.w-full{width:100%}.max-w-7xl{max-width:var(--container-7xl)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.grid-cols-\[350px_1fr\]{grid-template-columns:350px 1fr}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-3{border-left-style:var(--tw-border-style);border-left-width:3px}.border-none{--tw-border-style:none;border-style:none}.border-gh-border{border-color:var(--color-gh-border)}.border-gh-border-subtle{border-color:var(--color-gh-border-subtle)}.border-gh-red{border-color:var(--color-gh-red)}.border-l-amber-500{border-left-color:var(--color-amber-500)}.border-l-cyan-500{border-left-color:var(--color-cyan-500)}.border-l-gh-accent{border-left-color:var(--color-gh-accent)}.border-l-gh-green{border-left-color:var(--color-gh-green)}.border-l-purple-500{border-left-color:var(--color-purple-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/10{background-color:color-mix(in oklab,var(--color-cyan-500)10%,transparent)}}.bg-gh-accent{background-color:var(--color-gh-accent)}.bg-gh-accent\/10{background-color:#1f6feb1a}@supports (color:color-mix(in lab,red,red)){.bg-gh-accent\/10{background-color:color-mix(in oklab,var(--color-gh-accent)10%,transparent)}}.bg-gh-accent\/15{background-color:#1f6feb26}@supports (color:color-mix(in lab,red,red)){.bg-gh-accent\/15{background-color:color-mix(in oklab,var(--color-gh-accent)15%,transparent)}}.bg-gh-accent\/20{background-color:#1f6feb33}@supports (color:color-mix(in lab,red,red)){.bg-gh-accent\/20{background-color:color-mix(in oklab,var(--color-gh-accent)20%,transparent)}}.bg-gh-bg{background-color:var(--color-gh-bg)}.bg-gh-bg-secondary{background-color:var(--color-gh-bg-secondary)}.bg-gh-border{background-color:var(--color-gh-border)}.bg-gh-border-subtle{background-color:var(--color-gh-border-subtle)}.bg-gh-green{background-color:var(--color-gh-green)}.bg-gh-green\/15{background-color:#23863626}@supports (color:color-mix(in lab,red,red)){.bg-gh-green\/15{background-color:color-mix(in oklab,var(--color-gh-green)15%,transparent)}}.bg-gh-red{background-color:var(--color-gh-red)}.bg-purple-500\/15{background-color:#ac4bff26}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/15{background-color:color-mix(in oklab,var(--color-purple-500)15%,transparent)}}.bg-transparent{background-color:#0000}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-px{padding-block:1px}.pr-2{padding-right:calc(var(--spacing)*2)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-\[calc\(2rem-3px\)\]{padding-left:calc(2rem - 3px)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-400{color:var(--color-amber-400)}.text-cyan-400{color:var(--color-cyan-400)}.text-gh-accent{color:var(--color-gh-accent)}.text-gh-text{color:var(--color-gh-text)}.text-gh-text-secondary{color:var(--color-gh-text-secondary)}.text-gh-text-secondary\/70{color:#8b949eb3}@supports (color:color-mix(in lab,red,red)){.text-gh-text-secondary\/70{color:color-mix(in oklab,var(--color-gh-text-secondary)70%,transparent)}}.text-purple-400{color:var(--color-purple-400)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.group-hover\:hidden:is(:where(.group):hover *){display:none}.group-hover\:inline:is(:where(.group):hover *){display:inline}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:border-gh-text-secondary:hover{border-color:var(--color-gh-text-secondary)}.hover\:bg-gh-border:hover{background-color:var(--color-gh-border)}.hover\:bg-gh-border-subtle:hover{background-color:var(--color-gh-border-subtle)}.hover\:bg-gh-red\/20:hover{background-color:#f8514933}@supports (color:color-mix(in lab,red,red)){.hover\:bg-gh-red\/20:hover{background-color:color-mix(in oklab,var(--color-gh-red)20%,transparent)}}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:underline:hover{text-decoration-line:underline}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}
@@ -1 +1 @@
1
- const t="/api",s=async e=>{const o=await fetch(`${t}${e}`);if(!o.ok)throw new Error(await o.text());return o.json()},c=async(e,o)=>{const n=await fetch(`${t}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!n.ok)throw new Error(await n.text());return n.json()},a=async e=>{const o=await fetch(`${t}${e}`,{method:"DELETE"});if(!o.ok)throw new Error(await o.text());return o.json()},i=async(e,o)=>{const n=await fetch(`${t}${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!n.ok)throw new Error(await n.text());return n.json()},p=()=>s("/projects"),d=e=>s(`/sessions?project=${encodeURIComponent(e)}`),$=(e,o)=>s(`/session?project=${encodeURIComponent(e)}&id=${encodeURIComponent(o)}`),m=(e,o)=>a(`/session?project=${encodeURIComponent(e)}&id=${encodeURIComponent(o)}`),w=(e,o,n)=>c("/session/rename",{project:e,id:o,title:n}),h=(e,o,n)=>a(`/message?project=${encodeURIComponent(e)}&session=${encodeURIComponent(o)}&uuid=${encodeURIComponent(n)}`),u=(e,o,n,r)=>i(`/message?project=${encodeURIComponent(e)}&session=${encodeURIComponent(o)}&uuid=${encodeURIComponent(n)}`,{customTitle:r}),C=e=>s("/cleanup"),j=e=>c("/cleanup",e),l=()=>s("/version"),R=()=>c("/shutdown",{});export{d as a,$ as b,j as c,h as d,m as e,l as g,p as l,C as p,w as r,R as s,u};
1
+ const t="/api",s=async e=>{const o=await fetch(`${t}${e}`);if(!o.ok)throw new Error(await o.text());return o.json()},c=async(e,o)=>{const n=await fetch(`${t}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!n.ok)throw new Error(await n.text());return n.json()},a=async e=>{const o=await fetch(`${t}${e}`,{method:"DELETE"});if(!o.ok)throw new Error(await o.text());return o.json()},i=async(e,o)=>{const n=await fetch(`${t}${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!n.ok)throw new Error(await n.text());return n.json()},p=()=>s("/projects"),d=e=>s(`/sessions?project=${encodeURIComponent(e)}`),$=(e,o)=>s(`/session?project=${encodeURIComponent(e)}&id=${encodeURIComponent(o)}`),m=(e,o)=>a(`/session?project=${encodeURIComponent(e)}&id=${encodeURIComponent(o)}`),w=(e,o,n)=>c("/session/rename",{project:e,id:o,title:n}),h=(e,o,n)=>a(`/message?project=${encodeURIComponent(e)}&session=${encodeURIComponent(o)}&uuid=${encodeURIComponent(n)}`),u=(e,o,n,r)=>i(`/message?project=${encodeURIComponent(e)}&session=${encodeURIComponent(o)}&uuid=${encodeURIComponent(n)}`,{customTitle:r}),C=e=>s("/cleanup"),l=e=>c("/cleanup",e),j=()=>s("/version"),I=()=>c("/shutdown",{}),R=(e,o)=>c("/open-file",{sessionId:e,backupFileName:o});export{d as a,$ as b,l as c,m as d,h as e,j as g,p as l,R as o,C as p,w as r,I as s,u};
@@ -0,0 +1 @@
1
+ var Zt=t=>{throw TypeError(t)};var Ce=(t,e,n)=>e.has(t)||Zt("Cannot "+n);var w=(t,e,n)=>(Ce(t,e,"read from private field"),n?n.call(t):e.get(t)),U=(t,e,n)=>e.has(t)?Zt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n);import{aS as At,aT as je,u as te,B as T,F as I,A as O,aR as pt,aU as ee,aV as Ne}from"./DXY2Rq4J.js";const F=[];function Nt(t,e=At){let n=null;const r=new Set;function a(i){if(je(t,i)&&(t=i,n)){const c=!F.length;for(const l of r)l[1](),F.push(l,t);if(c){for(let l=0;l<F.length;l+=2)F[l][0](F[l+1]);F.length=0}}}function s(i){a(i(t))}function o(i,c=At){const l=[i,c];return r.add(l),r.size===1&&(n=e(a,s)||At),i(t),()=>{r.delete(l),r.size===0&&n&&(n(),n=null)}}return{set:a,update:s,subscribe:o}}class qt{constructor(e,n){this.status=e,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}}class Dt{constructor(e,n){this.status=e,this.location=n}}class Vt extends Error{constructor(e,n,r){super(r),this.status=e,this.text=n}}new URL("sveltekit-internal://");function qe(t,e){return t==="/"||e==="ignore"?t:e==="never"?t.endsWith("/")?t.slice(0,-1):t:e==="always"&&!t.endsWith("/")?t+"/":t}function De(t){return t.split("%25").map(decodeURI).join("%25")}function Ve(t){for(const e in t)t[e]=decodeURIComponent(t[e]);return t}function Lt({href:t}){return t.split("#")[0]}function Be(...t){let e=5381;for(const n of t)if(typeof n=="string"){let r=n.length;for(;r;)e=e*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)e=e*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(e>>>0).toString(36)}new TextEncoder;new TextDecoder;function Ke(t){const e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}const Fe=window.fetch;window.fetch=(t,e)=>((t instanceof Request?t.method:(e==null?void 0:e.method)||"GET")!=="GET"&&Y.delete(Bt(t)),Fe(t,e));const Y=new Map;function Me(t,e){const n=Bt(t,e),r=document.querySelector(n);if(r!=null&&r.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&Y.set(n,{body:a,init:s,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=Ke(a)),Promise.resolve(new Response(a,s))}return window.fetch(t,e)}function ze(t,e,n){if(Y.size>0){const r=Bt(t,n),a=Y.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(a.body,a.init);Y.delete(r)}}return window.fetch(e,n)}function Bt(t,e){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(t instanceof Request?t.url:t)}]`;if(e!=null&&e.headers||e!=null&&e.body){const a=[];e.headers&&a.push([...new Headers(e.headers)].join(",")),e.body&&(typeof e.body=="string"||ArrayBuffer.isView(e.body))&&a.push(e.body),r+=`[data-hash="${Be(...a)}"]`}return r}const Ge=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function We(t){const e=[];return{pattern:t==="/"?/^\/$/:new RegExp(`^${He(t).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return e.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return e.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return Ut(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return Ut(String.fromCharCode(...c.slice(2).split("-").map(_=>parseInt(_,16))));const d=Ge.exec(c),[,u,v,f,h]=d;return e.push({name:f,matcher:h,optional:!!u,rest:!!v,chained:v?l===1&&o[0]==="":!1}),v?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return Ut(c)}).join("")}).join("")}/?$`),params:e}}function Ye(t){return t!==""&&!/^\([^)]+\)$/.test(t)}function He(t){return t.slice(1).split("/").filter(Ye)}function Je(t,e,n){const r={},a=t.slice(1),s=a.filter(i=>i!==void 0);let o=0;for(let i=0;i<e.length;i+=1){const c=e[i];let l=a[i-o];if(c.chained&&c.rest&&o&&(l=a.slice(i-o,i+1).filter(d=>d).join("/"),o=0),l===void 0){c.rest&&(r[c.name]="");continue}if(!c.matcher||n[c.matcher](l)){r[c.name]=l;const d=e[i+1],u=a[i+1];d&&!d.rest&&d.optional&&u&&c.chained&&(o=0),!d&&!u&&Object.keys(r).length===s.length&&(o=0);continue}if(c.optional&&c.chained){o++;continue}return}if(!o)return r}function Ut(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Xe({nodes:t,server_loads:e,dictionary:n,matchers:r}){const a=new Set(e);return Object.entries(n).map(([i,[c,l,d]])=>{const{pattern:u,params:v}=We(i),f={id:i,exec:h=>{const _=u.exec(h);if(_)return Je(_,v,r)},errors:[1,...d||[]].map(h=>t[h]),layouts:[0,...l||[]].map(o),leaf:s(c)};return f.errors.length=f.layouts.length=Math.max(f.errors.length,f.layouts.length),f});function s(i){const c=i<0;return c&&(i=~i),[c,t[i]]}function o(i){return i===void 0?i:[a.has(i),t[i]]}}function pe(t,e=JSON.parse){try{return e(sessionStorage[t])}catch{}}function ne(t,e,n=JSON.stringify){const r=n(e);try{sessionStorage[t]=r}catch{}}var le;const L=((le=globalThis.__sveltekit_1ofgwe3)==null?void 0:le.base)??"";var fe;const Qe=((fe=globalThis.__sveltekit_1ofgwe3)==null?void 0:fe.assets)??L??"",Ze="1765607667728",ge="sveltekit:snapshot",me="sveltekit:scroll",_e="sveltekit:states",tn="sveltekit:pageurl",z="sveltekit:history",J="sveltekit:navigation",q={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Kt=location.origin;function we(t){if(t instanceof URL)return t;let e=document.baseURI;if(!e){const n=document.getElementsByTagName("base");e=n.length?n[0].href:document.URL}return new URL(t,e)}function St(){return{x:pageXOffset,y:pageYOffset}}function M(t,e){return t.getAttribute(`data-sveltekit-${e}`)}const ae={...q,"":q.hover};function ye(t){let e=t.assignedSlot??t.parentNode;return(e==null?void 0:e.nodeType)===11&&(e=e.host),e}function ve(t,e){for(;t&&t!==e;){if(t.nodeName.toUpperCase()==="A"&&t.hasAttribute("href"))return t;t=ye(t)}}function Ot(t,e,n){let r;try{if(r=new URL(t instanceof SVGAElement?t.href.baseVal:t.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const i=location.hash.split("#")[1]||"/";r.hash=`#${i}${r.hash}`}}catch{}const a=t instanceof SVGAElement?t.target.baseVal:t.target,s=!r||!!a||Et(r,e,n)||(t.getAttribute("rel")||"").split(/\s+/).includes("external"),o=(r==null?void 0:r.origin)===Kt&&t.hasAttribute("download");return{url:r,external:s,target:a,download:o}}function gt(t){let e=null,n=null,r=null,a=null,s=null,o=null,i=t;for(;i&&i!==document.documentElement;)r===null&&(r=M(i,"preload-code")),a===null&&(a=M(i,"preload-data")),e===null&&(e=M(i,"keepfocus")),n===null&&(n=M(i,"noscroll")),s===null&&(s=M(i,"reload")),o===null&&(o=M(i,"replacestate")),i=ye(i);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:ae[r??"off"],preload_data:ae[a??"off"],keepfocus:c(e),noscroll:c(n),reload:c(s),replace_state:c(o)}}function re(t){const e=Nt(t);let n=!0;function r(){n=!0,e.update(o=>o)}function a(o){n=!1,e.set(o)}function s(o){let i;return e.subscribe(c=>{(i===void 0||n&&c!==i)&&o(i=c)})}return{notify:r,set:a,subscribe:s}}const be={v:()=>{}};function en(){const{set:t,subscribe:e}=Nt(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${Qe}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==Ze;return o&&(t(!0),be.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:e,check:r}}function Et(t,e,n){return t.origin!==Kt||!t.pathname.startsWith(e)?!0:n?t.pathname!==location.pathname:!1}function Un(t){}const ke=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...ke];const nn=new Set([...ke]);[...nn];function an(t){return t.filter(e=>e!=null)}function Ft(t){return t instanceof qt||t instanceof Vt?t.status:500}function rn(t){return t instanceof Vt?t.text:"Internal Error"}let R,X,Tt;const on=te.toString().includes("$$")||/function \w+\(\) \{\}/.test(te.toString());var nt,at,rt,ot,st,it,ct,lt,ue,ft,de,ut,he;on?(R={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},X={current:null},Tt={current:!1}):(R=new(ue=class{constructor(){U(this,nt,T({}));U(this,at,T(null));U(this,rt,T(null));U(this,ot,T({}));U(this,st,T({id:null}));U(this,it,T({}));U(this,ct,T(-1));U(this,lt,T(new URL("https://example.com")))}get data(){return I(w(this,nt))}set data(e){O(w(this,nt),e)}get form(){return I(w(this,at))}set form(e){O(w(this,at),e)}get error(){return I(w(this,rt))}set error(e){O(w(this,rt),e)}get params(){return I(w(this,ot))}set params(e){O(w(this,ot),e)}get route(){return I(w(this,st))}set route(e){O(w(this,st),e)}get state(){return I(w(this,it))}set state(e){O(w(this,it),e)}get status(){return I(w(this,ct))}set status(e){O(w(this,ct),e)}get url(){return I(w(this,lt))}set url(e){O(w(this,lt),e)}},nt=new WeakMap,at=new WeakMap,rt=new WeakMap,ot=new WeakMap,st=new WeakMap,it=new WeakMap,ct=new WeakMap,lt=new WeakMap,ue),X=new(de=class{constructor(){U(this,ft,T(null))}get current(){return I(w(this,ft))}set current(e){O(w(this,ft),e)}},ft=new WeakMap,de),Tt=new(he=class{constructor(){U(this,ut,T(!1))}get current(){return I(w(this,ut))}set current(e){O(w(this,ut),e)}},ut=new WeakMap,he),be.v=()=>Tt.current=!0);function Se(t){Object.assign(R,t)}const sn=new Set(["icon","shortcut icon","apple-touch-icon"]),V=pe(me)??{},Q=pe(ge)??{},N={url:re({}),page:re({}),navigating:Nt(null),updated:en()};function Mt(t){V[t]=St()}function cn(t,e){let n=t+1;for(;V[n];)delete V[n],n+=1;for(n=e+1;Q[n];)delete Q[n],n+=1}function Z(t,e=!1){return e?location.replace(t.href):location.href=t.href,new Promise(()=>{})}async function Ee(){if("serviceWorker"in navigator){const t=await navigator.serviceWorker.getRegistration(L||"/");t&&await t.update()}}function oe(){}let zt,$t,mt,P,Pt,b;const _t=[],wt=[];let y=null;function Ct(){var t;(t=y==null?void 0:y.fork)==null||t.then(e=>e==null?void 0:e.discard()),y=null}const ht=new Map,Re=new Set,ln=new Set,H=new Set;let m={branch:[],error:null,url:null},xe=!1,yt=!1,se=!0,tt=!1,W=!1,Ae=!1,Gt=!1,Wt,S,A,D;const vt=new Set,ie=new Map;async function $n(t,e,n){var s,o,i,c,l;(s=globalThis.__sveltekit_1ofgwe3)!=null&&s.data&&globalThis.__sveltekit_1ofgwe3.data,document.URL!==location.href&&(location.href=location.href),b=t,await((i=(o=t.hooks).init)==null?void 0:i.call(o)),zt=Xe(t),P=document.documentElement,Pt=e,$t=t.nodes[0],mt=t.nodes[1],$t(),mt(),S=(c=history.state)==null?void 0:c[z],A=(l=history.state)==null?void 0:l[J],S||(S=A=Date.now(),history.replaceState({...history.state,[z]:S,[J]:A},""));const r=V[S];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await Sn(Pt,n)):(await G({type:"enter",url:we(b.hash?xn(new URL(location.href)):location.href),replace_state:!0}),a()),kn()}function fn(){_t.length=0,Gt=!1}function Le(t){wt.some(e=>e==null?void 0:e.snapshot)&&(Q[t]=wt.map(e=>{var n;return(n=e==null?void 0:e.snapshot)==null?void 0:n.capture()}))}function Ue(t){var e;(e=Q[t])==null||e.forEach((n,r)=>{var a,s;(s=(a=wt[r])==null?void 0:a.snapshot)==null||s.restore(n)})}function ce(){Mt(S),ne(me,V),Le(A),ne(ge,Q)}async function un(t,e,n,r){let a;e.invalidateAll&&Ct(),await G({type:"goto",url:we(t),keepfocus:e.keepFocus,noscroll:e.noScroll,replace_state:e.replaceState,state:e.state,redirect_count:n,nav_token:r,accept:()=>{e.invalidateAll&&(Gt=!0,a=[...ie.keys()]),e.invalidate&&e.invalidate.forEach(bn)}}),e.invalidateAll&&pt().then(pt).then(()=>{ie.forEach(({resource:s},o)=>{var i;a!=null&&a.includes(o)&&((i=s.refresh)==null||i.call(s))})})}async function dn(t){if(t.id!==(y==null?void 0:y.id)){Ct();const e={};if(vt.add(e),y={id:t.id,token:e,promise:Ie({...t,preload:e}).then(n=>(vt.delete(e),n.type==="loaded"&&n.state.error&&Ct(),n)),fork:null},ee){const n=y;n.fork=n.promise.then(r=>{if(n===y&&r.type==="loaded")try{return ee(()=>{Wt.$set(r.props),Se(r.props.page)})}catch{}return null})}}return y.promise}async function It(t){var n;const e=(n=await Rt(t,!1))==null?void 0:n.route;e&&await Promise.all([...e.layouts,e.leaf].map(r=>r==null?void 0:r[1]()))}async function Te(t,e,n){var a;m=t.state;const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(R,t.props.page),Wt=new b.root({target:e,props:{...t.props,stores:N,components:wt},hydrate:n,sync:!1}),await Promise.resolve(),Ue(A),n){const s={from:null,to:{params:m.params,route:{id:((a=m.route)==null?void 0:a.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};H.forEach(o=>o(s))}yt=!0}function bt({url:t,params:e,branch:n,status:r,error:a,route:s,form:o}){let i="never";if(L&&(t.pathname===L||t.pathname===L+"/"))i="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(i=f.slash);t.pathname=qe(t.pathname,i),t.search=t.search;const c={type:"loaded",state:{url:t,params:e,branch:n,error:a,route:s},props:{constructors:an(n).map(f=>f.node.component),page:Qt(R)}};o!==void 0&&(c.props.form=o);let l={},d=!R,u=0;for(let f=0;f<Math.max(n.length,m.branch.length);f+=1){const h=n[f],_=m.branch[f];(h==null?void 0:h.data)!==(_==null?void 0:_.data)&&(d=!0),h&&(l={...l,...h.data},d&&(c.props[`data_${u}`]=l),u+=1)}return(!m.url||t.href!==m.url.href||m.error!==a||o!==void 0&&o!==R.form||d)&&(c.props.page={error:a,params:e,route:{id:(s==null?void 0:s.id)??null},state:{},status:r,url:new URL(t),form:o??null,data:d?l:R.data}),c}async function Yt({loader:t,parent:e,url:n,params:r,route:a,server_data_node:s}){var l,d;let o=null;const i={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},c=await t();return{node:c,loader:t,server:s,universal:(l=c.universal)!=null&&l.load?{type:"data",data:o,uses:i}:null,data:o??(s==null?void 0:s.data)??null,slash:((d=c.universal)==null?void 0:d.trailingSlash)??(s==null?void 0:s.slash)}}function hn(t,e,n){let r=t instanceof Request?t.url:t;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=yt?ze(r,a.href,e):Me(r,e);return{resolved:a,promise:s}}function pn(t,e,n,r,a,s){if(Gt)return!0;if(!a)return!1;if(a.parent&&t||a.route&&e||a.url&&n)return!0;for(const o of a.search_params)if(r.has(o))return!0;for(const o of a.params)if(s[o]!==m.params[o])return!0;for(const o of a.dependencies)if(_t.some(i=>i(new URL(o))))return!0;return!1}function Ht(t,e){return(t==null?void 0:t.type)==="data"?t:(t==null?void 0:t.type)==="skip"?e??null:null}function gn(t,e){if(!t)return new Set(e.searchParams.keys());const n=new Set([...t.searchParams.keys(),...e.searchParams.keys()]);for(const r of n){const a=t.searchParams.getAll(r),s=e.searchParams.getAll(r);a.every(o=>s.includes(o))&&s.every(o=>a.includes(o))&&n.delete(r)}return n}function mn({error:t,url:e,route:n,params:r}){return{type:"loaded",state:{error:t,url:e,route:n,params:r,branch:[]},props:{page:Qt(R),constructors:[]}}}async function Ie({id:t,invalidating:e,url:n,params:r,route:a,preload:s}){if((y==null?void 0:y.id)===t)return vt.delete(y.token),y.promise;const{errors:o,layouts:i,leaf:c}=a,l=[...i,c];o.forEach(g=>g==null?void 0:g().catch(()=>{})),l.forEach(g=>g==null?void 0:g[1]().catch(()=>{}));const d=m.url?t!==kt(m.url):!1,u=m.route?a.id!==m.route.id:!1,v=gn(m.url,n);let f=!1;const h=l.map(async(g,p)=>{var C;if(!g)return;const k=m.branch[p];return g[1]===(k==null?void 0:k.loader)&&!pn(f,u,d,v,(C=k.universal)==null?void 0:C.uses,r)?k:(f=!0,Yt({loader:g[1],url:n,params:r,route:a,parent:async()=>{var dt;const $={};for(let B=0;B<p;B+=1)Object.assign($,(dt=await h[B])==null?void 0:dt.data);return $},server_data_node:Ht(g[0]?{type:"skip"}:null,g[0]?k==null?void 0:k.server:void 0)}))});for(const g of h)g.catch(()=>{});const _=[];for(let g=0;g<l.length;g+=1)if(l[g])try{_.push(await h[g])}catch(p){if(p instanceof Dt)return{type:"redirect",location:p.location};if(vt.has(s))return mn({error:await et(p,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let k=Ft(p),x;if(p instanceof qt)x=p.body;else{if(await N.updated.check())return await Ee(),await Z(n);x=await et(p,{params:r,url:n,route:{id:a.id}})}const C=await _n(g,_,o);return C?bt({url:n,params:r,branch:_.slice(0,C.idx).concat(C.node),status:k,error:x,route:a}):await $e(n,{id:a.id},x,k)}else _.push(void 0);return bt({url:n,params:r,branch:_,status:200,error:null,route:a,form:e?void 0:null})}async function _n(t,e,n){for(;t--;)if(n[t]){let r=t;for(;!e[r];)r-=1;try{return{idx:r+1,node:{node:await n[t](),loader:n[t],data:{},server:null,universal:null}}}catch{continue}}}async function Jt({status:t,error:e,url:n,route:r}){const a={};let s=null;try{const o=await Yt({loader:$t,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:Ht(s)}),i={node:await mt(),loader:mt,universal:null,server:null,data:null};return bt({url:n,params:a,branch:[o,i],status:t,error:e,route:null})}catch(o){if(o instanceof Dt)return un(new URL(o.location,location.href),{},0);throw o}}async function wn(t){const e=t.href;if(ht.has(e))return ht.get(e);let n;try{const r=(async()=>{let a=await b.hooks.reroute({url:new URL(t),fetch:async(s,o)=>hn(s,o,t).promise})??t;if(typeof a=="string"){const s=new URL(t);b.hash?s.hash=a:s.pathname=a,a=s}return a})();ht.set(e,r),n=await r}catch{ht.delete(e);return}return n}async function Rt(t,e){if(t&&!Et(t,L,b.hash)){const n=await wn(t);if(!n)return;const r=yn(n);for(const a of zt){const s=a.exec(r);if(s)return{id:kt(t),invalidating:e,route:a,params:Ve(s),url:t}}}}function yn(t){return De(b.hash?t.hash.replace(/^#/,"").replace(/[?#].+/,""):t.pathname.slice(L.length))||"/"}function kt(t){return(b.hash?t.hash.replace(/^#/,""):t.pathname)+t.search}function Oe({url:t,type:e,intent:n,delta:r,event:a}){let s=!1;const o=Xt(m,n,t,e);r!==void 0&&(o.navigation.delta=r),a!==void 0&&(o.navigation.event=a);const i={...o.navigation,cancel:()=>{s=!0,o.reject(new Error("navigation cancelled"))}};return tt||Re.forEach(c=>c(i)),s?null:o}async function G({type:t,url:e,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o={},redirect_count:i=0,nav_token:c={},accept:l=oe,block:d=oe,event:u}){var B;const v=D;D=c;const f=await Rt(e,!1),h=t==="enter"?Xt(m,f,e,t):Oe({url:e,type:t,delta:n==null?void 0:n.delta,intent:f,event:u});if(!h){d(),D===c&&(D=v);return}const _=S,g=A;l(),tt=!0,yt&&h.navigation.type!=="enter"&&N.navigating.set(X.current=h.navigation);let p=f&&await Ie(f);if(!p){if(Et(e,L,b.hash))return await Z(e,s);p=await $e(e,{id:null},await et(new Vt(404,"Not Found",`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404,s)}if(e=(f==null?void 0:f.url)||e,D!==c)return h.reject(new Error("navigation aborted")),!1;if(p.type==="redirect"){if(i<20){await G({type:t,url:new URL(p.location,e),popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o,redirect_count:i+1,nav_token:c}),h.fulfil(void 0);return}p=await Jt({status:500,error:await et(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}})}else p.props.page.status>=400&&await N.updated.check()&&(await Ee(),await Z(e,s));if(fn(),Mt(_),Le(g),p.props.page.url.pathname!==e.pathname&&(e.pathname=p.props.page.url.pathname),o=n?n.state:o,!n){const E=s?0:1,K={[z]:S+=E,[J]:A+=E,[_e]:o};(s?history.replaceState:history.pushState).call(history,K,"",e),s||cn(S,A)}const k=f&&(y==null?void 0:y.id)===f.id?y.fork:null;y=null,p.props.page.state=o;let x;if(yt){const E=(await Promise.all(Array.from(ln,j=>j(h.navigation)))).filter(j=>typeof j=="function");if(E.length>0){let j=function(){E.forEach(xt=>{H.delete(xt)})};E.push(j),E.forEach(xt=>{H.add(xt)})}m=p.state,p.props.page&&(p.props.page.url=e);const K=k&&await k;K?x=K.commit():(Wt.$set(p.props),Se(p.props.page),x=(B=Ne)==null?void 0:B()),Ae=!0}else await Te(p,Pt,!1);const{activeElement:C}=document;await x,await pt(),await pt();let $=n?n.scroll:a?St():null;if(se){const E=e.hash&&document.getElementById(Pe(e));if($)scrollTo($.x,$.y);else if(E){E.scrollIntoView();const{top:K,left:j}=E.getBoundingClientRect();$={x:pageXOffset+j,y:pageYOffset+K}}else scrollTo(0,0)}const dt=document.activeElement!==C&&document.activeElement!==document.body;!r&&!dt&&Rn(e,$),se=!0,p.props.page&&Object.assign(R,p.props.page),tt=!1,t==="popstate"&&Ue(A),h.fulfil(void 0),H.forEach(E=>E(h.navigation)),N.navigating.set(X.current=null)}async function $e(t,e,n,r,a){return t.origin===Kt&&t.pathname===location.pathname&&!xe?await Jt({status:r,error:n,url:t,route:e}):await Z(t,a)}function vn(){let t,e,n;P.addEventListener("mousemove",i=>{const c=i.target;clearTimeout(t),t=setTimeout(()=>{s(c,q.hover)},20)});function r(i){i.defaultPrevented||s(i.composedPath()[0],q.tap)}P.addEventListener("mousedown",r),P.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(i=>{for(const c of i)c.isIntersecting&&(It(new URL(c.target.href)),a.unobserve(c.target))},{threshold:0});async function s(i,c){const l=ve(i,P),d=l===e&&c>=n;if(!l||d)return;const{url:u,external:v,download:f}=Ot(l,L,b.hash);if(v||f)return;const h=gt(l),_=u&&kt(m.url)===kt(u);if(!(h.reload||_))if(c<=h.preload_data){e=l,n=q.tap;const g=await Rt(u,!1);if(!g)return;dn(g)}else c<=h.preload_code&&(e=l,n=c,It(u))}function o(){a.disconnect();for(const i of P.querySelectorAll("a")){const{url:c,external:l,download:d}=Ot(i,L,b.hash);if(l||d)continue;const u=gt(i);u.reload||(u.preload_code===q.viewport&&a.observe(i),u.preload_code===q.eager&&It(c))}}H.add(o),o()}function et(t,e){if(t instanceof qt)return t.body;const n=Ft(t),r=rn(t);return b.hooks.handleError({error:t,event:e,status:n,message:r})??{message:r}}function bn(t){if(typeof t=="function")_t.push(t);else{const{href:e}=new URL(t,location.href);_t.push(n=>n.href===e)}}function kn(){var e;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let r=!1;if(ce(),!tt){const a=Xt(m,void 0,null,"leave"),s={...a.navigation,cancel:()=>{r=!0,a.reject(new Error("navigation cancelled"))}};Re.forEach(o=>o(s))}r?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ce()}),(e=navigator.connection)!=null&&e.saveData||vn(),P.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const r=ve(n.composedPath()[0],P);if(!r)return;const{url:a,external:s,target:o,download:i}=Ot(r,L,b.hash);if(!a)return;if(o==="_parent"||o==="_top"){if(window.parent!==window)return}else if(o&&o!=="_self")return;const c=gt(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||i)return;const[d,u]=(b.hash?a.hash.replace(/^#/,""):a.href).split("#"),v=d===Lt(location);if(s||c.reload&&(!v||!u)){Oe({url:a,type:"link",event:n})?tt=!0:n.preventDefault();return}if(u!==void 0&&v){const[,f]=m.url.href.split("#");if(f===u){if(n.preventDefault(),u===""||u==="top"&&r.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const h=r.ownerDocument.getElementById(decodeURIComponent(u));h&&(h.scrollIntoView(),h.focus())}return}if(W=!0,Mt(S),t(a),!c.replace_state)return;W=!1}n.preventDefault(),await new Promise(f=>{requestAnimationFrame(()=>{setTimeout(f,0)}),setTimeout(f,100)}),await G({type:"link",url:a,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??a.href===location.href,event:n})}),P.addEventListener("submit",n=>{if(n.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(n.target),a=n.submitter;if(((a==null?void 0:a.formTarget)||r.target)==="_blank"||((a==null?void 0:a.formMethod)||r.method)!=="get")return;const i=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(Et(i,L,!1))return;const c=n.target,l=gt(c);if(l.reload)return;n.preventDefault(),n.stopPropagation();const d=new FormData(c,a);i.search=new URLSearchParams(d).toString(),G({type:"form",url:i,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??i.href===location.href,event:n})}),addEventListener("popstate",async n=>{var r;if(!jt){if((r=n.state)!=null&&r[z]){const a=n.state[z];if(D={},a===S)return;const s=V[a],o=n.state[_e]??{},i=new URL(n.state[tn]??location.href),c=n.state[J],l=m.url?Lt(location)===Lt(m.url):!1;if(c===A&&(Ae||l)){o!==R.state&&(R.state=o),t(i),V[S]=St(),s&&scrollTo(s.x,s.y),S=a;return}const u=a-S;await G({type:"popstate",url:i,popped:{state:o,scroll:s,delta:u},accept:()=>{S=a,A=c},block:()=>{history.go(-u)},nav_token:D,event:n})}else if(!W){const a=new URL(location.href);t(a),b.hash&&location.reload()}}}),addEventListener("hashchange",()=>{W&&(W=!1,history.replaceState({...history.state,[z]:++S,[J]:A},"",location.href))});for(const n of document.querySelectorAll("link"))sn.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&N.navigating.set(X.current=null)});function t(n){m.url=R.url=n,N.page.set(Qt(R)),N.page.notify()}}async function Sn(t,{status:e=200,error:n,node_ids:r,params:a,route:s,server_route:o,data:i,form:c}){xe=!0;const l=new URL(location.href);let d;({params:a={},route:s={id:null}}=await Rt(l,!1)||{}),d=zt.find(({id:f})=>f===s.id);let u,v=!0;try{const f=r.map(async(_,g)=>{const p=i[g];return p!=null&&p.uses&&(p.uses=En(p.uses)),Yt({loader:b.nodes[_],url:l,params:a,route:s,parent:async()=>{const k={};for(let x=0;x<g;x+=1)Object.assign(k,(await f[x]).data);return k},server_data_node:Ht(p)})}),h=await Promise.all(f);if(d){const _=d.layouts;for(let g=0;g<_.length;g++)_[g]||h.splice(g,0,void 0)}u=bt({url:l,params:a,branch:h,status:e,error:n,form:c,route:d??null})}catch(f){if(f instanceof Dt){await Z(new URL(f.location,location.href));return}u=await Jt({status:Ft(f),error:await et(f,{url:l,params:a,route:s}),url:l,route:s}),t.textContent="",v=!1}u.props.page&&(u.props.page.state={}),await Te(u,t,v)}function En(t){return{dependencies:new Set((t==null?void 0:t.dependencies)??[]),params:new Set((t==null?void 0:t.params)??[]),parent:!!(t!=null&&t.parent),route:!!(t!=null&&t.route),url:!!(t!=null&&t.url),search_params:new Set((t==null?void 0:t.search_params)??[])}}let jt=!1;function Rn(t,e=null){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=Pe(t);if(r&&document.getElementById(r)){const{x:s,y:o}=e??St();setTimeout(()=>{const i=history.state;jt=!0,location.replace(`#${r}`),b.hash&&location.replace(t.hash),history.replaceState(i,"",t.hash),scrollTo(s,o),jt=!1})}else{const s=document.body,o=s.getAttribute("tabindex");s.tabIndex=-1,s.focus({preventScroll:!0,focusVisible:!1}),o!==null?s.setAttribute("tabindex",o):s.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const s=[];for(let o=0;o<a.rangeCount;o+=1)s.push(a.getRangeAt(o));setTimeout(()=>{if(a.rangeCount===s.length){for(let o=0;o<a.rangeCount;o+=1){const i=s[o],c=a.getRangeAt(o);if(i.commonAncestorContainer!==c.commonAncestorContainer||i.startContainer!==c.startContainer||i.endContainer!==c.endContainer||i.startOffset!==c.startOffset||i.endOffset!==c.endOffset)return}a.removeAllRanges()}})}}}function Xt(t,e,n,r){var c,l;let a,s;const o=new Promise((d,u)=>{a=d,s=u});return o.catch(()=>{}),{navigation:{from:{params:t.params,route:{id:((c=t.route)==null?void 0:c.id)??null},url:t.url},to:n&&{params:(e==null?void 0:e.params)??null,route:{id:((l=e==null?void 0:e.route)==null?void 0:l.id)??null},url:n},willUnload:!e,type:r,complete:o},fulfil:a,reject:s}}function Qt(t){return{data:t.data,error:t.error,form:t.form,params:t.params,route:t.route,state:t.state,status:t.status,url:t.url}}function xn(t){const e=new URL(t);return e.hash=decodeURIComponent(t.hash),e}function Pe(t){let e;if(b.hash){const[,,n]=t.hash.split("#",3);e=n??""}else e=t.hash.slice(1);return decodeURIComponent(e)}export{$n as a,Un as l,R as p,N as s};
@@ -1,2 +1,2 @@
1
- var Oe=Object.defineProperty;var de=t=>{throw TypeError(t)};var De=(t,e,r)=>e in t?Oe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var ce=(t,e,r)=>De(t,typeof e!="symbol"?e+"":e,r),Z=(t,e,r)=>e.has(t)||de("Cannot "+r);var s=(t,e,r)=>(Z(t,e,"read from private field"),r?r.call(t):e.get(t)),h=(t,e,r)=>e.has(t)?de("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),i=(t,e,r,a)=>(Z(t,e,"write to private field"),a?a.call(t,r):e.set(t,r),r),p=(t,e,r)=>(Z(t,e,"access private method"),r);import{ab as Fe,F as ye,V as Ee,ac as ke,L as Ce,ad as _e,a4 as Te,e as v,h as T,ae as P,f as Le,g as be,C as he,H as Me,b as C,af as W,p as ee,a as x,ag as J,ah as H,ai as pe,aj as Ie,ak as re,I as we,m as Pe,T as Ve,d as te,k as Y,al as Be,j as He,am as ge,an as qe,E as xe,ao as Ye,ap as je,aq as Ue,ar as We,o as se,as as ze,at as Xe,au as $e,av as Ge,aw as Je,ax as ne,ay as Ke,q as Qe,az as ie,l as z,aA as Ze,a2 as et,X as tt,aB as rt,t as st,S as nt,aC as it,z as at}from"./DUfrtY0h.js";function ot(t){let e=0,r=Ee(0),a;return()=>{Fe()&&(ye(r),ke(()=>(e===0&&(a=Ce(()=>t(()=>_e(r)))),e+=1,()=>{Te(()=>{e-=1,e===0&&(a==null||a(),a=void 0,_e(r))})})))}}var lt=xe|Ye|je;function ft(t,e,r){new ht(t,e,r)}var y,g,j,b,L,w,E,c,N,A,O,M,D,I,F,K,f,Ne,Re,ae,$,G,oe;class ht{constructor(e,r,a){h(this,f);ce(this,"parent");h(this,y,!1);h(this,g);h(this,j,T?v:null);h(this,b);h(this,L);h(this,w);h(this,E,null);h(this,c,null);h(this,N,null);h(this,A,null);h(this,O,null);h(this,M,0);h(this,D,0);h(this,I,!1);h(this,F,null);h(this,K,ot(()=>(i(this,F,Ee(s(this,M))),()=>{i(this,F,null)})));i(this,g,e),i(this,b,r),i(this,L,a),this.parent=P.b,i(this,y,!!s(this,b).pending),i(this,w,Le(()=>{if(P.b=this,T){const n=s(this,j);be(),n.nodeType===he&&n.data===Me?p(this,f,Re).call(this):p(this,f,Ne).call(this)}else{var o=p(this,f,ae).call(this);try{i(this,E,C(()=>a(o)))}catch(n){this.error(n)}s(this,D)>0?p(this,f,G).call(this):i(this,y,!1)}return()=>{var n;(n=s(this,O))==null||n.remove()}},lt)),T&&i(this,g,v)}is_pending(){return s(this,y)||!!this.parent&&this.parent.is_pending()}has_pending_snippet(){return!!s(this,b).pending}update_pending_count(e){p(this,f,oe).call(this,e),i(this,M,s(this,M)+e),s(this,F)&&Ve(s(this,F),s(this,M))}get_effect_pending(){return s(this,K).call(this),ye(s(this,F))}error(e){var r=s(this,b).onerror;let a=s(this,b).failed;if(s(this,I)||!r&&!a)throw e;s(this,E)&&(te(s(this,E)),i(this,E,null)),s(this,c)&&(te(s(this,c)),i(this,c,null)),s(this,N)&&(te(s(this,N)),i(this,N,null)),T&&(Y(s(this,j)),Be(),Y(He()));var o=!1,n=!1;const l=()=>{if(o){Ue();return}o=!0,n&&qe(),W.ensure(),i(this,M,0),s(this,N)!==null&&ee(s(this,N),()=>{i(this,N,null)}),i(this,y,this.has_pending_snippet()),i(this,E,p(this,f,$).call(this,()=>(i(this,I,!1),C(()=>s(this,L).call(this,s(this,g)))))),s(this,D)>0?p(this,f,G).call(this):i(this,y,!1)};var m=re;try{H(null),n=!0,r==null||r(e,l),n=!1}catch(_){ge(_,s(this,w)&&s(this,w).parent)}finally{H(m)}a&&Te(()=>{i(this,N,p(this,f,$).call(this,()=>{W.ensure(),i(this,I,!0);try{return C(()=>{a(s(this,g),()=>e,()=>l)})}catch(_){return ge(_,s(this,w).parent),null}finally{i(this,I,!1)}}))})}}y=new WeakMap,g=new WeakMap,j=new WeakMap,b=new WeakMap,L=new WeakMap,w=new WeakMap,E=new WeakMap,c=new WeakMap,N=new WeakMap,A=new WeakMap,O=new WeakMap,M=new WeakMap,D=new WeakMap,I=new WeakMap,F=new WeakMap,K=new WeakMap,f=new WeakSet,Ne=function(){try{i(this,E,C(()=>s(this,L).call(this,s(this,g))))}catch(e){this.error(e)}i(this,y,!1)},Re=function(){const e=s(this,b).pending;e&&(i(this,c,C(()=>e(s(this,g)))),W.enqueue(()=>{var r=p(this,f,ae).call(this);i(this,E,p(this,f,$).call(this,()=>(W.ensure(),C(()=>s(this,L).call(this,r))))),s(this,D)>0?p(this,f,G).call(this):(ee(s(this,c),()=>{i(this,c,null)}),i(this,y,!1))}))},ae=function(){var e=s(this,g);return s(this,y)&&(i(this,O,x()),s(this,g).before(s(this,O)),e=s(this,O)),e},$=function(e){var r=P,a=re,o=we;J(s(this,w)),H(s(this,w)),pe(s(this,w).ctx);try{return e()}catch(n){return Ie(n),null}finally{J(r),H(a),pe(o)}},G=function(){const e=s(this,b).pending;s(this,E)!==null&&(i(this,A,document.createDocumentFragment()),s(this,A).append(s(this,O)),Pe(s(this,E),s(this,A))),s(this,c)===null&&i(this,c,C(()=>e(s(this,g))))},oe=function(e){var r;if(!this.has_pending_snippet()){this.parent&&p(r=this.parent,f,oe).call(r,e);return}i(this,D,s(this,D)+e),s(this,D)===0&&(i(this,y,!1),s(this,c)&&ee(s(this,c),()=>{i(this,c,null)}),s(this,A)&&(s(this,g).before(s(this,A)),i(this,A,null)))};const ut=["touchstart","touchmove"];function dt(t){return ut.includes(t)}const Se=new Set,le=new Set;function mt(t){for(var e=0;e<t.length;e++)Se.add(t[e]);for(var r of le)r(t)}let ve=null;function X(t){var ue;var e=this,r=e.ownerDocument,a=t.type,o=((ue=t.composedPath)==null?void 0:ue.call(t))||[],n=o[0]||t.target;ve=t;var l=0,m=ve===t&&t.__root;if(m){var _=o.indexOf(m);if(_!==-1&&(e===document||e===window)){t.__root=e;return}var V=o.indexOf(e);if(V===-1)return;_<=V&&(l=_)}if(n=o[l]||t.target,n!==e){We(t,"currentTarget",{configurable:!0,get(){return n||r}});var Q=re,R=P;H(null),J(null);try{for(var u,d=[];n!==null;){var S=n.assignedSlot||n.parentNode||n.host||null;try{var q=n["__"+a];q!=null&&(!n.disabled||t.target===n)&&q.call(n,t)}catch(U){u?d.push(U):u=U}if(t.cancelBubble||S===e||S===null)break;n=S}if(u){for(let U of d)queueMicrotask(()=>{throw U});throw u}}finally{t.__root=e,delete t.currentTarget,H(Q),J(R)}}}function ct(t){var e=document.createElement("template");return e.innerHTML=t.replaceAll("<!>","<!---->"),e.content}function k(t,e){var r=P;r.nodes===null&&(r.nodes={start:t,end:e,a:null,t:null})}function yt(t,e){var r=(e&Xe)!==0,a=(e&$e)!==0,o,n=!t.startsWith("<!>");return()=>{if(T)return k(v,null),v;o===void 0&&(o=ct(n?t:"<!>"+t),r||(o=se(o)));var l=a||ze?document.importNode(o,!0):o.cloneNode(!0);if(r){var m=se(l),_=l.lastChild;k(m,_)}else k(l,l);return l}}function Et(t=""){if(!T){var e=x(t+"");return k(e,e),e}var r=v;return r.nodeType!==Je&&(r.before(r=x()),Y(r)),k(r,r),r}function Tt(){if(T)return k(v,null),v;var t=document.createDocumentFragment(),e=document.createComment(""),r=x();return t.append(e,r),k(e,r),t}function bt(t,e){if(T){var r=P;((r.f&Ge)===0||r.nodes.end===null)&&(r.nodes.end=v),be();return}t!==null&&t.before(e)}function wt(t,e){var r=e==null?"":typeof e=="object"?e+"":e;r!==(t.__t??(t.__t=t.nodeValue))&&(t.__t=r,t.nodeValue=r+"")}function _t(t,e){return Ae(t,e)}function Nt(t,e){ne(),e.intro=e.intro??!1;const r=e.target,a=T,o=v;try{for(var n=se(r);n&&(n.nodeType!==he||n.data!==Ke);)n=Qe(n);if(!n)throw ie;z(!0),Y(n);const l=Ae(t,{...e,anchor:n});return z(!1),l}catch(l){if(l instanceof Error&&l.message.split(`
1
+ var De=Object.defineProperty;var de=t=>{throw TypeError(t)};var Oe=(t,e,r)=>e in t?De(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var ce=(t,e,r)=>Oe(t,typeof e!="symbol"?e+"":e,r),Z=(t,e,r)=>e.has(t)||de("Cannot "+r);var s=(t,e,r)=>(Z(t,e,"read from private field"),r?r.call(t):e.get(t)),h=(t,e,r)=>e.has(t)?de("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),i=(t,e,r,a)=>(Z(t,e,"write to private field"),a?a.call(t,r):e.set(t,r),r),p=(t,e,r)=>(Z(t,e,"access private method"),r);import{ac as Fe,F as ye,V as Ee,ad as ke,L as Ce,ae as _e,a4 as Te,e as v,h as T,af as P,f as Le,g as be,C as he,H as Me,b as C,ag as W,p as ee,a as x,ah as J,ai as H,aj as pe,ak as Ie,al as re,I as we,m as Pe,T as Ve,d as te,k as Y,am as Be,j as He,an as ge,ao as qe,E as xe,ap as Ye,aq as je,ar as Ue,as as We,o as se,at as ze,au as Xe,av as $e,aw as Ge,ax as Je,ay as ne,az as Ke,q as Qe,aA as ie,l as z,aB as Ze,a2 as et,X as tt,aC as rt,t as st,S as nt,aD as it,z as at}from"./DXY2Rq4J.js";function ot(t){let e=0,r=Ee(0),a;return()=>{Fe()&&(ye(r),ke(()=>(e===0&&(a=Ce(()=>t(()=>_e(r)))),e+=1,()=>{Te(()=>{e-=1,e===0&&(a==null||a(),a=void 0,_e(r))})})))}}var lt=xe|Ye|je;function ft(t,e,r){new ht(t,e,r)}var y,g,j,b,L,w,E,c,N,A,D,M,O,I,F,K,f,Ne,Re,ae,$,G,oe;class ht{constructor(e,r,a){h(this,f);ce(this,"parent");h(this,y,!1);h(this,g);h(this,j,T?v:null);h(this,b);h(this,L);h(this,w);h(this,E,null);h(this,c,null);h(this,N,null);h(this,A,null);h(this,D,null);h(this,M,0);h(this,O,0);h(this,I,!1);h(this,F,null);h(this,K,ot(()=>(i(this,F,Ee(s(this,M))),()=>{i(this,F,null)})));i(this,g,e),i(this,b,r),i(this,L,a),this.parent=P.b,i(this,y,!!s(this,b).pending),i(this,w,Le(()=>{if(P.b=this,T){const n=s(this,j);be(),n.nodeType===he&&n.data===Me?p(this,f,Re).call(this):p(this,f,Ne).call(this)}else{var o=p(this,f,ae).call(this);try{i(this,E,C(()=>a(o)))}catch(n){this.error(n)}s(this,O)>0?p(this,f,G).call(this):i(this,y,!1)}return()=>{var n;(n=s(this,D))==null||n.remove()}},lt)),T&&i(this,g,v)}is_pending(){return s(this,y)||!!this.parent&&this.parent.is_pending()}has_pending_snippet(){return!!s(this,b).pending}update_pending_count(e){p(this,f,oe).call(this,e),i(this,M,s(this,M)+e),s(this,F)&&Ve(s(this,F),s(this,M))}get_effect_pending(){return s(this,K).call(this),ye(s(this,F))}error(e){var r=s(this,b).onerror;let a=s(this,b).failed;if(s(this,I)||!r&&!a)throw e;s(this,E)&&(te(s(this,E)),i(this,E,null)),s(this,c)&&(te(s(this,c)),i(this,c,null)),s(this,N)&&(te(s(this,N)),i(this,N,null)),T&&(Y(s(this,j)),Be(),Y(He()));var o=!1,n=!1;const l=()=>{if(o){Ue();return}o=!0,n&&qe(),W.ensure(),i(this,M,0),s(this,N)!==null&&ee(s(this,N),()=>{i(this,N,null)}),i(this,y,this.has_pending_snippet()),i(this,E,p(this,f,$).call(this,()=>(i(this,I,!1),C(()=>s(this,L).call(this,s(this,g)))))),s(this,O)>0?p(this,f,G).call(this):i(this,y,!1)};var m=re;try{H(null),n=!0,r==null||r(e,l),n=!1}catch(_){ge(_,s(this,w)&&s(this,w).parent)}finally{H(m)}a&&Te(()=>{i(this,N,p(this,f,$).call(this,()=>{W.ensure(),i(this,I,!0);try{return C(()=>{a(s(this,g),()=>e,()=>l)})}catch(_){return ge(_,s(this,w).parent),null}finally{i(this,I,!1)}}))})}}y=new WeakMap,g=new WeakMap,j=new WeakMap,b=new WeakMap,L=new WeakMap,w=new WeakMap,E=new WeakMap,c=new WeakMap,N=new WeakMap,A=new WeakMap,D=new WeakMap,M=new WeakMap,O=new WeakMap,I=new WeakMap,F=new WeakMap,K=new WeakMap,f=new WeakSet,Ne=function(){try{i(this,E,C(()=>s(this,L).call(this,s(this,g))))}catch(e){this.error(e)}i(this,y,!1)},Re=function(){const e=s(this,b).pending;e&&(i(this,c,C(()=>e(s(this,g)))),W.enqueue(()=>{var r=p(this,f,ae).call(this);i(this,E,p(this,f,$).call(this,()=>(W.ensure(),C(()=>s(this,L).call(this,r))))),s(this,O)>0?p(this,f,G).call(this):(ee(s(this,c),()=>{i(this,c,null)}),i(this,y,!1))}))},ae=function(){var e=s(this,g);return s(this,y)&&(i(this,D,x()),s(this,g).before(s(this,D)),e=s(this,D)),e},$=function(e){var r=P,a=re,o=we;J(s(this,w)),H(s(this,w)),pe(s(this,w).ctx);try{return e()}catch(n){return Ie(n),null}finally{J(r),H(a),pe(o)}},G=function(){const e=s(this,b).pending;s(this,E)!==null&&(i(this,A,document.createDocumentFragment()),s(this,A).append(s(this,D)),Pe(s(this,E),s(this,A))),s(this,c)===null&&i(this,c,C(()=>e(s(this,g))))},oe=function(e){var r;if(!this.has_pending_snippet()){this.parent&&p(r=this.parent,f,oe).call(r,e);return}i(this,O,s(this,O)+e),s(this,O)===0&&(i(this,y,!1),s(this,c)&&ee(s(this,c),()=>{i(this,c,null)}),s(this,A)&&(s(this,g).before(s(this,A)),i(this,A,null)))};const ut=["touchstart","touchmove"];function dt(t){return ut.includes(t)}const Se=new Set,le=new Set;function mt(t){for(var e=0;e<t.length;e++)Se.add(t[e]);for(var r of le)r(t)}let ve=null;function X(t){var ue;var e=this,r=e.ownerDocument,a=t.type,o=((ue=t.composedPath)==null?void 0:ue.call(t))||[],n=o[0]||t.target;ve=t;var l=0,m=ve===t&&t.__root;if(m){var _=o.indexOf(m);if(_!==-1&&(e===document||e===window)){t.__root=e;return}var V=o.indexOf(e);if(V===-1)return;_<=V&&(l=_)}if(n=o[l]||t.target,n!==e){We(t,"currentTarget",{configurable:!0,get(){return n||r}});var Q=re,R=P;H(null),J(null);try{for(var u,d=[];n!==null;){var S=n.assignedSlot||n.parentNode||n.host||null;try{var q=n["__"+a];q!=null&&(!n.disabled||t.target===n)&&q.call(n,t)}catch(U){u?d.push(U):u=U}if(t.cancelBubble||S===e||S===null)break;n=S}if(u){for(let U of d)queueMicrotask(()=>{throw U});throw u}}finally{t.__root=e,delete t.currentTarget,H(Q),J(R)}}}function ct(t){var e=document.createElement("template");return e.innerHTML=t.replaceAll("<!>","<!---->"),e.content}function k(t,e){var r=P;r.nodes===null&&(r.nodes={start:t,end:e,a:null,t:null})}function yt(t,e){var r=(e&Xe)!==0,a=(e&$e)!==0,o,n=!t.startsWith("<!>");return()=>{if(T)return k(v,null),v;o===void 0&&(o=ct(n?t:"<!>"+t),r||(o=se(o)));var l=a||ze?document.importNode(o,!0):o.cloneNode(!0);if(r){var m=se(l),_=l.lastChild;k(m,_)}else k(l,l);return l}}function Et(t=""){if(!T){var e=x(t+"");return k(e,e),e}var r=v;return r.nodeType!==Je&&(r.before(r=x()),Y(r)),k(r,r),r}function Tt(){if(T)return k(v,null),v;var t=document.createDocumentFragment(),e=document.createComment(""),r=x();return t.append(e,r),k(e,r),t}function bt(t,e){if(T){var r=P;((r.f&Ge)===0||r.nodes.end===null)&&(r.nodes.end=v),be();return}t!==null&&t.before(e)}function wt(t,e){var r=e==null?"":typeof e=="object"?e+"":e;r!==(t.__t??(t.__t=t.nodeValue))&&(t.__t=r,t.nodeValue=r+"")}function _t(t,e){return Ae(t,e)}function Nt(t,e){ne(),e.intro=e.intro??!1;const r=e.target,a=T,o=v;try{for(var n=se(r);n&&(n.nodeType!==he||n.data!==Ke);)n=Qe(n);if(!n)throw ie;z(!0),Y(n);const l=Ae(t,{...e,anchor:n});return z(!1),l}catch(l){if(l instanceof Error&&l.message.split(`
2
2
  `).some(m=>m.startsWith("https://svelte.dev/e/")))throw l;return l!==ie&&console.warn("Failed to hydrate: ",l),e.recover===!1&&Ze(),ne(),et(r),z(!1),_t(t,e)}finally{z(a),Y(o)}}const B=new Map;function Ae(t,{target:e,anchor:r,props:a={},events:o,context:n,intro:l=!0}){ne();var m=new Set,_=R=>{for(var u=0;u<R.length;u++){var d=R[u];if(!m.has(d)){m.add(d);var S=dt(d);e.addEventListener(d,X,{passive:S});var q=B.get(d);q===void 0?(document.addEventListener(d,X,{passive:S}),B.set(d,1)):B.set(d,q+1)}}};_(tt(Se)),le.add(_);var V=void 0,Q=rt(()=>{var R=r??e.appendChild(x());return ft(R,{pending:()=>{}},u=>{if(n){st({});var d=we;d.c=n}if(o&&(a.$$events=o),T&&k(u,null),V=t(u,a)||{},T&&(P.nodes.end=v,v===null||v.nodeType!==he||v.data!==nt))throw it(),ie;n&&at()}),()=>{var S;for(var u of m){e.removeEventListener(u,X);var d=B.get(u);--d===0?(document.removeEventListener(u,X),B.delete(u)):B.set(u,d)}le.delete(_),R!==r&&((S=R.parentNode)==null||S.removeChild(R))}});return fe.set(V,Q),V}let fe=new WeakMap;function Rt(t,e){const r=fe.get(t);return r?(fe.delete(t),r(e)):Promise.resolve()}const pt="5";var me;typeof window<"u"&&((me=window.__svelte??(window.__svelte={})).v??(me.v=new Set)).add(pt);export{bt as a,Tt as c,mt as d,yt as f,Nt as h,_t as m,wt as s,Et as t,Rt as u};
@@ -0,0 +1 @@
1
+ var rn=Object.defineProperty;var ht=e=>{throw TypeError(e)};var fn=(e,t,n)=>t in e?rn(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var B=(e,t,n)=>fn(e,typeof t!="symbol"?t+"":t,n),Ke=(e,t,n)=>t.has(e)||ht("Cannot "+n);var w=(e,t,n)=>(Ke(e,t,"read from private field"),n?n.call(e):t.get(e)),Y=(e,t,n)=>t.has(e)?ht("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),ce=(e,t,n,r)=>(Ke(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),I=(e,t,n)=>(Ke(e,t,"access private method"),n);var sn=Array.isArray,an=Array.prototype.indexOf,er=Array.from,tr=Object.defineProperty,Ae=Object.getOwnPropertyDescriptor,ln=Object.getOwnPropertyDescriptors,on=Object.prototype,un=Array.prototype,Tt=Object.getPrototypeOf,wt=Object.isExtensible;const nr=()=>{};function rr(e){return e()}function cn(e){for(var t=0;t<e.length;t++)e[t]()}function At(){var e,t,n=new Promise((r,f)=>{e=r,t=f});return{promise:n,resolve:e,reject:t}}function fr(e,t){if(Array.isArray(e))return e;if(!(Symbol.iterator in e))return Array.from(e);const n=[];for(const r of e)if(n.push(r),n.length===t)break;return n}const m=2,ft=4,Ve=8,_n=1<<24,H=16,U=32,oe=64,st=128,F=512,R=1024,O=2048,L=4096,j=8192,K=16384,it=32768,Ie=65536,$e=1<<17,St=1<<18,Oe=1<<19,Rt=1<<20,sr=1<<25,fe=32768,Xe=1<<21,at=1<<22,z=1<<23,Se=Symbol("$state"),ir=Symbol("legacy props"),_e=new class extends Error{constructor(){super(...arguments);B(this,"name","StaleReactionError");B(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}},lt=3,kt=8;function vn(e){throw new Error("https://svelte.dev/e/experimental_async_required")}function dn(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function pn(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function hn(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function wn(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function yn(e){throw new Error("https://svelte.dev/e/effect_orphan")}function En(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function mn(){throw new Error("https://svelte.dev/e/fork_discarded")}function gn(){throw new Error("https://svelte.dev/e/fork_timing")}function lr(){throw new Error("https://svelte.dev/e/hydration_failed")}function or(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function Tn(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function An(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Sn(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function ur(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const cr=1,_r=2,vr=4,dr=8,pr=16,hr=1,wr=2,yr=4,Er=8,mr=16,gr=1,Tr=2,Rn="[",kn="[!",bn="]",ot={},S=Symbol(),Ar="http://www.w3.org/1999/xhtml";function ut(e){console.warn("https://svelte.dev/e/hydration_mismatch")}function Sr(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let se=!1;function Rr(e){se=e}let g;function we(e){if(e===null)throw ut(),ot;return g=e}function kr(){return we(Z(g))}function br(e){if(se){if(Z(g)!==null)throw ut(),ot;g=e}}function xr(e=1){if(se){for(var t=e,n=g;t--;)n=Z(n);g=n}}function Or(e=!0){for(var t=0,n=g;;){if(n.nodeType===kt){var r=n.data;if(r===bn){if(t===0)return n;t-=1}else(r===Rn||r===kn)&&(t+=1)}var f=Z(n);e&&n.remove(),n=f}}function Dr(e){if(!e||e.nodeType!==kt)throw ut(),ot;return e.data}function bt(e){return e===this.v}function xn(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function xt(e){return!xn(e,this.v)}let De=!1;function Nr(){De=!0}let E=null;function Pe(e){E=e}function Cr(e,t=!1,n){E={p:E,i:!1,c:null,e:null,s:e,x:null,l:De&&!t?{s:null,u:null,$:[]}:null}}function Ir(e){var t=E,n=t.e;if(n!==null){t.e=null;for(var r of n)Bt(r)}return t.i=!0,E=t.p,{}}function Ne(){return!De||E!==null&&E.l===null}let Q=[];function Ot(){var e=Q;Q=[],cn(e)}function On(e){if(Q.length===0&&!Re){var t=Q;queueMicrotask(()=>{t===Q&&Ot()})}Q.push(e)}function Dn(){for(;Q.length>0;)Ot()}function Nn(e){var t=h;if(t===null)return _.f|=z,e;if((t.f&it)===0){if((t.f&st)===0)throw e;t.b.error(e)}else Fe(e,t)}function Fe(e,t){for(;t!==null;){if((t.f&st)!==0)try{t.b.error(e);return}catch(n){e=n}t=t.parent}throw e}const W=new Set;let v=null,y=null,C=[],Be=null,Ze=!1,Re=!1;var ve,de,ee,te,xe,pe,he,T,Je,me,Qe,Dt,Nt;const Ue=class Ue{constructor(){Y(this,T);B(this,"committed",!1);B(this,"current",new Map);B(this,"previous",new Map);Y(this,ve,new Set);Y(this,de,new Set);Y(this,ee,0);Y(this,te,0);Y(this,xe,null);Y(this,pe,new Set);Y(this,he,new Set);B(this,"skipped_effects",new Set);B(this,"is_fork",!1)}is_deferred(){return this.is_fork||w(this,te)>0}process(t){var r;C=[],this.apply();var n={parent:null,effect:null,effects:[],render_effects:[]};for(const f of t)I(this,T,Je).call(this,f,n);this.is_fork||I(this,T,Dt).call(this),this.is_deferred()?(I(this,T,me).call(this,n.effects),I(this,T,me).call(this,n.render_effects)):(v=null,yt(n.render_effects),yt(n.effects),(r=w(this,xe))==null||r.resolve()),y=null}capture(t,n){this.previous.has(t)||this.previous.set(t,n),(t.f&z)===0&&(this.current.set(t,t.v),y==null||y.set(t,t.v))}activate(){v=this,this.apply()}deactivate(){v===this&&(v=null,y=null)}flush(){if(this.activate(),C.length>0){if(et(),v!==null&&v!==this)return}else w(this,ee)===0&&this.process([]);this.deactivate()}discard(){for(const t of w(this,de))t(this);w(this,de).clear()}increment(t){ce(this,ee,w(this,ee)+1),t&&ce(this,te,w(this,te)+1)}decrement(t){ce(this,ee,w(this,ee)-1),t&&ce(this,te,w(this,te)-1),this.revive()}revive(){for(const t of w(this,pe))w(this,he).delete(t),A(t,O),ae(t);for(const t of w(this,he))A(t,L),ae(t);this.flush()}oncommit(t){w(this,ve).add(t)}ondiscard(t){w(this,de).add(t)}settled(){return(w(this,xe)??ce(this,xe,At())).promise}static ensure(){if(v===null){const t=v=new Ue;W.add(v),Re||Ue.enqueue(()=>{v===t&&t.flush()})}return v}static enqueue(t){On(t)}apply(){}};ve=new WeakMap,de=new WeakMap,ee=new WeakMap,te=new WeakMap,xe=new WeakMap,pe=new WeakMap,he=new WeakMap,T=new WeakSet,Je=function(t,n){var u;t.f^=R;for(var r=t.first;r!==null;){var f=r.f,s=(f&(U|oe))!==0,l=s&&(f&R)!==0,o=l||(f&j)!==0||this.skipped_effects.has(r);if((r.f&st)!==0&&((u=r.b)!=null&&u.is_pending())&&(n={parent:n,effect:r,effects:[],render_effects:[]}),!o&&r.fn!==null){s?r.f^=R:(f&ft)!==0?n.effects.push(r):Ce(r)&&((r.f&H)!==0&&w(this,pe).add(r),be(r));var a=r.first;if(a!==null){r=a;continue}}var i=r.parent;for(r=r.next;r===null&&i!==null;)i===n.effect&&(I(this,T,me).call(this,n.effects),I(this,T,me).call(this,n.render_effects),n=n.parent),r=i.next,i=i.parent}},me=function(t){for(const n of t)(n.f&O)!==0?w(this,pe).add(n):(n.f&L)!==0&&w(this,he).add(n),I(this,T,Qe).call(this,n.deps),A(n,R)},Qe=function(t){if(t!==null)for(const n of t)(n.f&m)===0||(n.f&fe)===0||(n.f^=fe,I(this,T,Qe).call(this,n.deps))},Dt=function(){if(w(this,te)===0){for(const t of w(this,ve))t();w(this,ve).clear()}w(this,ee)===0&&I(this,T,Nt).call(this)},Nt=function(){var s;if(W.size>1){this.previous.clear();var t=y,n=!0,r={parent:null,effect:null,effects:[],render_effects:[]};for(const l of W){if(l===this){n=!1;continue}const o=[];for(const[i,u]of this.current){if(l.current.has(i))if(n&&u!==l.current.get(i))l.current.set(i,u);else continue;o.push(i)}if(o.length===0)continue;const a=[...l.current.keys()].filter(i=>!this.current.has(i));if(a.length>0){var f=C;C=[];const i=new Set,u=new Map;for(const c of o)Ct(c,a,i,u);if(C.length>0){v=l,l.apply();for(const c of C)I(s=l,T,Je).call(s,c,r);l.deactivate()}C=f}}v=null,y=t}this.committed=!0,W.delete(this)};let ie=Ue;function We(e){var t=Re;Re=!0;try{var n;for(e&&(v!==null&&et(),n=e());;){if(Dn(),C.length===0&&(v==null||v.flush(),C.length===0))return Be=null,n;et()}}finally{Re=t}}function et(){var e=ne;Ze=!0;var t=null;try{var n=0;for(Ye(!0);C.length>0;){var r=ie.ensure();if(n++>1e3){var f,s;Cn()}r.process(C),$.clear()}}finally{Ze=!1,Ye(e),Be=null}}function Cn(){try{En()}catch(e){Fe(e,Be)}}let P=null;function yt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if((r.f&(K|j))===0&&Ce(r)&&(P=new Set,be(r),r.deps===null&&r.first===null&&r.nodes===null&&(r.teardown===null&&r.ac===null?zt(r):r.fn=null),(P==null?void 0:P.size)>0)){$.clear();for(const f of P){if((f.f&(K|j))!==0)continue;const s=[f];let l=f.parent;for(;l!==null;)P.has(l)&&(P.delete(l),s.push(l)),l=l.parent;for(let o=s.length-1;o>=0;o--){const a=s[o];(a.f&(K|j))===0&&be(a)}}P.clear()}}P=null}}function Ct(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const f of e.reactions){const s=f.f;(s&m)!==0?Ct(f,t,n,r):(s&(at|H))!==0&&(s&O)===0&&Pt(f,t,r)&&(A(f,O),ae(f))}}function It(e,t){if(e.reactions!==null)for(const n of e.reactions){const r=n.f;(r&m)!==0?It(n,t):(r&$e)!==0&&(A(n,O),t.add(n))}}function Pt(e,t,n){const r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const f of e.deps){if(t.includes(f))return!0;if((f.f&m)!==0&&Pt(f,t,n))return n.set(f,!0),!0}return n.set(e,!1),!1}function ae(e){for(var t=Be=e;t.parent!==null;){t=t.parent;var n=t.f;if(Ze&&t===h&&(n&H)!==0&&(n&St)===0)return;if((n&(oe|U))!==0){if((n&R)===0)return;t.f^=R}}C.push(t)}function Pr(e){vn(),v!==null&&gn();var t=ie.ensure();t.is_fork=!0,y=new Map;var n=!1,r=t.settled();We(e),y=null;for(var[f,s]of t.previous)f.v=s;return{commit:async()=>{if(n){await r;return}W.has(t)||mn(),n=!0,t.is_fork=!1;for(var[l,o]of t.current)l.v=o;We(()=>{var a=new Set;for(var i of t.current.keys())It(i,a);Ln(a),Lt()}),t.revive(),await r},discard:()=>{!n&&W.has(t)&&(W.delete(t),t.discard())}}}function In(e,t,n,r){const f=Ne()?ct:Mn;if(n.length===0&&e.length===0){r(t.map(f));return}var s=v,l=h,o=Pn();function a(){Promise.all(n.map(i=>Fn(i))).then(i=>{o();try{r([...t.map(f),...i])}catch(u){(l.f&K)===0&&Fe(u,l)}s==null||s.deactivate(),Me()}).catch(i=>{Fe(i,l)})}e.length>0?Promise.all(e).then(()=>{o();try{return a()}finally{s==null||s.deactivate(),Me()}}):a()}function Pn(){var e=h,t=_,n=E,r=v;return function(s=!0){ye(e),X(t),Pe(n),s&&(r==null||r.activate())}}function Me(){ye(null),X(null),Pe(null)}function ct(e){var t=m|O,n=_!==null&&(_.f&m)!==0?_:null;return h!==null&&(h.f|=Oe),{ctx:E,deps:null,effects:null,equals:bt,f:t,fn:e,reactions:null,rv:0,v:S,wv:0,parent:n??h,ac:null}}function Fn(e,t){let n=h;n===null&&pn();var r=n.b,f=void 0,s=vt(S),l=!_,o=new Map;return Bn(()=>{var p;var a=At();f=a.promise;try{Promise.resolve(e()).then(a.resolve,a.reject).then(()=>{i===v&&i.committed&&i.deactivate(),Me()})}catch(d){a.reject(d),Me()}var i=v;if(l){var u=!r.is_pending();r.update_pending_count(1),i.increment(u),(p=o.get(i))==null||p.reject(_e),o.delete(i),o.set(i,a)}const c=(d,k=void 0)=>{if(i.activate(),k)k!==_e&&(s.f|=z,tt(s,k));else{(s.f&z)!==0&&(s.f^=z),tt(s,d);for(const[V,ue]of o){if(o.delete(V),V===i)break;ue.reject(_e)}}l&&(r.update_pending_count(-1),i.decrement(u))};a.promise.then(c,d=>c(null,d||"unknown"))}),Un(()=>{for(const a of o.values())a.reject(_e)}),new Promise(a=>{function i(u){function c(){u===f?a(s):i(f)}u.then(c,c)}i(f)})}function Fr(e){const t=ct(e);return Zt(t),t}function Mn(e){const t=ct(e);return t.equals=xt,t}function Ft(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)le(t[n])}}function jn(e){for(var t=e.parent;t!==null;){if((t.f&m)===0)return(t.f&K)===0?t:null;t=t.parent}return null}function _t(e){var t,n=h;ye(jn(e));try{e.f&=~fe,Ft(e),t=en(e)}finally{ye(n)}return t}function Mt(e){var t=_t(e);if(e.equals(t)||(v!=null&&v.is_fork||(e.v=t),e.wv=Qt()),!Ee)if(y!==null)(qe()||v!=null&&v.is_fork)&&y.set(e,t);else{var n=(e.f&F)===0?L:R;A(e,n)}}let je=new Set;const $=new Map;function Ln(e){je=e}let jt=!1;function vt(e,t){var n={f:0,v:e,reactions:null,equals:bt,rv:0,wv:0};return n}function G(e,t){const n=vt(e);return Zt(n),n}function Mr(e,t=!1,n=!0){var f;const r=vt(e);return t||(r.equals=xt),De&&n&&E!==null&&E.l!==null&&((f=E.l).s??(f.s=[])).push(r),r}function J(e,t,n=!1){_!==null&&(!M||(_.f&$e)!==0)&&Ne()&&(_.f&(m|H|at|$e))!==0&&!(x!=null&&x.includes(e))&&Sn();let r=n?ge(t):t;return tt(e,r)}function tt(e,t){if(!e.equals(t)){var n=e.v;Ee?$.set(e,t):$.set(e,n),e.v=t;var r=ie.ensure();r.capture(e,n),(e.f&m)!==0&&((e.f&O)!==0&&_t(e),A(e,(e.f&F)!==0?R:L)),e.wv=Qt(),qt(e,O),Ne()&&h!==null&&(h.f&R)!==0&&(h.f&(U|oe))===0&&(N===null?$n([e]):N.push(e)),!r.is_fork&&je.size>0&&!jt&&Lt()}return t}function Lt(){jt=!1;var e=ne;Ye(!0);const t=Array.from(je);try{for(const n of t)(n.f&R)!==0&&A(n,L),Ce(n)&&be(n)}finally{Ye(e)}je.clear()}function ze(e){J(e,e.v+1)}function qt(e,t){var n=e.reactions;if(n!==null)for(var r=Ne(),f=n.length,s=0;s<f;s++){var l=n[s],o=l.f;if(!(!r&&l===h)){var a=(o&O)===0;if(a&&A(l,t),(o&m)!==0){var i=l;y==null||y.delete(i),(o&fe)===0&&(o&F&&(l.f|=fe),qt(i,L))}else a&&((o&H)!==0&&P!==null&&P.add(l),ae(l))}}}function ge(e){if(typeof e!="object"||e===null||Se in e)return e;const t=Tt(e);if(t!==on&&t!==un)return e;var n=new Map,r=sn(e),f=G(0),s=re,l=o=>{if(re===s)return o();var a=_,i=re;X(null),gt(s);var u=o();return X(a),gt(i),u};return r&&n.set("length",G(e.length)),new Proxy(e,{defineProperty(o,a,i){(!("value"in i)||i.configurable===!1||i.enumerable===!1||i.writable===!1)&&Tn();var u=n.get(a);return u===void 0?u=l(()=>{var c=G(i.value);return n.set(a,c),c}):J(u,i.value,!0),!0},deleteProperty(o,a){var i=n.get(a);if(i===void 0){if(a in o){const u=l(()=>G(S));n.set(a,u),ze(f)}}else J(i,S),ze(f);return!0},get(o,a,i){var d;if(a===Se)return e;var u=n.get(a),c=a in o;if(u===void 0&&(!c||(d=Ae(o,a))!=null&&d.writable)&&(u=l(()=>{var k=ge(c?o[a]:S),V=G(k);return V}),n.set(a,u)),u!==void 0){var p=Te(u);return p===S?void 0:p}return Reflect.get(o,a,i)},getOwnPropertyDescriptor(o,a){var i=Reflect.getOwnPropertyDescriptor(o,a);if(i&&"value"in i){var u=n.get(a);u&&(i.value=Te(u))}else if(i===void 0){var c=n.get(a),p=c==null?void 0:c.v;if(c!==void 0&&p!==S)return{enumerable:!0,configurable:!0,value:p,writable:!0}}return i},has(o,a){var p;if(a===Se)return!0;var i=n.get(a),u=i!==void 0&&i.v!==S||Reflect.has(o,a);if(i!==void 0||h!==null&&(!u||(p=Ae(o,a))!=null&&p.writable)){i===void 0&&(i=l(()=>{var d=u?ge(o[a]):S,k=G(d);return k}),n.set(a,i));var c=Te(i);if(c===S)return!1}return u},set(o,a,i,u){var pt;var c=n.get(a),p=a in o;if(r&&a==="length")for(var d=i;d<c.v;d+=1){var k=n.get(d+"");k!==void 0?J(k,S):d in o&&(k=l(()=>G(S)),n.set(d+"",k))}if(c===void 0)(!p||(pt=Ae(o,a))!=null&&pt.writable)&&(c=l(()=>G(void 0)),J(c,ge(i)),n.set(a,c));else{p=c.v!==S;var V=l(()=>ge(i));J(c,V)}var ue=Reflect.getOwnPropertyDescriptor(o,a);if(ue!=null&&ue.set&&ue.set.call(u,i),!p){if(r&&typeof a=="string"){var dt=n.get("length"),Ge=Number(a);Number.isInteger(Ge)&&Ge>=dt.v&&J(dt,Ge+1)}ze(f)}return!0},ownKeys(o){Te(f);var a=Reflect.ownKeys(o).filter(c=>{var p=n.get(c);return p===void 0||p.v!==S});for(var[i,u]of n)u.v!==S&&!(i in o)&&a.push(i);return a},setPrototypeOf(){An()}})}var Et,qn,Yn,Yt,Ht;function jr(){if(Et===void 0){Et=window,qn=document,Yn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Yt=Ae(t,"firstChild").get,Ht=Ae(t,"nextSibling").get,wt(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),wt(n)&&(n.__t=void 0)}}function Le(e=""){return document.createTextNode(e)}function nt(e){return Yt.call(e)}function Z(e){return Ht.call(e)}function Lr(e,t){if(!se)return nt(e);var n=nt(g);if(n===null)n=g.appendChild(Le());else if(t&&n.nodeType!==lt){var r=Le();return n==null||n.before(r),we(r),r}return we(n),n}function qr(e,t=!1){if(!se){var n=nt(e);return n instanceof Comment&&n.data===""?Z(n):n}if(t&&(g==null?void 0:g.nodeType)!==lt){var r=Le();return g==null||g.before(r),we(r),r}return g}function Yr(e,t=1,n=!1){let r=se?g:e;for(var f;t--;)f=r,r=Z(r);if(!se)return r;if(n&&(r==null?void 0:r.nodeType)!==lt){var s=Le();return r===null?f==null||f.after(s):r.before(s),we(s),s}return we(r),r}function Hr(e){e.textContent=""}function Ur(){return!1}function Ut(e){var t=_,n=h;X(null),ye(null);try{return e()}finally{X(t),ye(n)}}function Vt(e){h===null&&(_===null&&yn(),wn()),Ee&&hn()}function Hn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function q(e,t,n){var r=h;r!==null&&(r.f&j)!==0&&(e|=j);var f={ctx:E,deps:null,nodes:null,f:e|O|F,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};if(n)try{be(f),f.f|=it}catch(o){throw le(f),o}else t!==null&&ae(f);var s=f;if(n&&s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&(s.f&Oe)===0&&(s=s.first,(e&H)!==0&&(e&Ie)!==0&&s!==null&&(s.f|=Ie)),s!==null&&(s.parent=r,r!==null&&Hn(s,r),_!==null&&(_.f&m)!==0&&(e&oe)===0)){var l=_;(l.effects??(l.effects=[])).push(s)}return f}function qe(){return _!==null&&!M}function Un(e){const t=q(Ve,null,!1);return A(t,R),t.teardown=e,t}function Vn(e){Vt();var t=h.f,n=!_&&(t&U)!==0&&(t&it)===0;if(n){var r=E;(r.e??(r.e=[])).push(e)}else return Bt(e)}function Bt(e){return q(ft|Rt,e,!1)}function Vr(e){return Vt(),q(Ve|Rt,e,!0)}function Br(e){ie.ensure();const t=q(oe|Oe,e,!0);return(n={})=>new Promise(r=>{n.outro?zn(t,()=>{le(t),r(void 0)}):(le(t),r(void 0))})}function Gr(e){return q(ft,e,!1)}function Bn(e){return q(at|Oe,e,!0)}function Kr(e,t=0){return q(Ve|t,e,!0)}function zr(e,t=[],n=[],r=[]){In(r,t,n,f=>{q(Ve,()=>e(...f.map(Te)),!0)})}function $r(e,t=0){var n=q(H|t,e,!0);return n}function Xr(e){return q(U|Oe,e,!0)}function Gt(e){var t=e.teardown;if(t!==null){const n=Ee,r=_;mt(!0),X(null);try{t.call(null)}finally{mt(n),X(r)}}}function Kt(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const f=n.ac;f!==null&&Ut(()=>{f.abort(_e)});var r=n.next;(n.f&oe)!==0?n.parent=null:le(n,t),n=r}}function Gn(e){for(var t=e.first;t!==null;){var n=t.next;(t.f&U)===0&&le(t),t=n}}function le(e,t=!0){var n=!1;(t||(e.f&St)!==0)&&e.nodes!==null&&e.nodes.end!==null&&(Kn(e.nodes.start,e.nodes.end),n=!0),Kt(e,t&&!n),He(e,0),A(e,K);var r=e.nodes&&e.nodes.t;if(r!==null)for(const s of r)s.stop();Gt(e);var f=e.parent;f!==null&&f.first!==null&&zt(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=null}function Kn(e,t){for(;e!==null;){var n=e===t?null:Z(e);e.remove(),e=n}}function zt(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 zn(e,t,n=!0){var r=[];$t(e,r,!0);var f=()=>{n&&le(e),t&&t()},s=r.length;if(s>0){var l=()=>--s||f();for(var o of r)o.out(l)}else f()}function $t(e,t,n){if((e.f&j)===0){e.f^=j;var r=e.nodes&&e.nodes.t;if(r!==null)for(const o of r)(o.is_global||n)&&t.push(o);for(var f=e.first;f!==null;){var s=f.next,l=(f.f&Ie)!==0||(f.f&U)!==0&&(e.f&H)!==0;$t(f,t,l?n:!1),f=s}}}function Zr(e){Xt(e,!0)}function Xt(e,t){if((e.f&j)!==0){e.f^=j,(e.f&R)===0&&(A(e,O),ae(e));for(var n=e.first;n!==null;){var r=n.next,f=(n.f&Ie)!==0||(n.f&U)!==0;Xt(n,f?t:!1),n=r}var s=e.nodes&&e.nodes.t;if(s!==null)for(const l of s)(l.is_global||t)&&l.in()}}function Jr(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var f=n===r?null:Z(n);t.append(n),n=f}}let ne=!1;function Ye(e){ne=e}let Ee=!1;function mt(e){Ee=e}let _=null,M=!1;function X(e){_=e}let h=null;function ye(e){h=e}let x=null;function Zt(e){_!==null&&(x===null?x=[e]:x.push(e))}let b=null,D=0,N=null;function $n(e){N=e}let Jt=1,ke=0,re=ke;function gt(e){re=e}function Qt(){return++Jt}function Ce(e){var t=e.f;if((t&O)!==0)return!0;if(t&m&&(e.f&=~fe),(t&L)!==0){var n=e.deps;if(n!==null)for(var r=n.length,f=0;f<r;f++){var s=n[f];if(Ce(s)&&Mt(s),s.wv>e.wv)return!0}(t&F)!==0&&y===null&&A(e,R)}return!1}function Wt(e,t,n=!0){var r=e.reactions;if(r!==null&&!(x!=null&&x.includes(e)))for(var f=0;f<r.length;f++){var s=r[f];(s.f&m)!==0?Wt(s,t,!1):t===s&&(n?A(s,O):(s.f&R)!==0&&A(s,L),ae(s))}}function en(e){var k;var t=b,n=D,r=N,f=_,s=x,l=E,o=M,a=re,i=e.f;b=null,D=0,N=null,_=(i&(U|oe))===0?e:null,x=null,Pe(e.ctx),M=!1,re=++ke,e.ac!==null&&(Ut(()=>{e.ac.abort(_e)}),e.ac=null);try{e.f|=Xe;var u=e.fn,c=u(),p=e.deps;if(b!==null){var d;if(He(e,D),p!==null&&D>0)for(p.length=D+b.length,d=0;d<b.length;d++)p[D+d]=b[d];else e.deps=p=b;if(qe()&&(e.f&F)!==0)for(d=D;d<p.length;d++)((k=p[d]).reactions??(k.reactions=[])).push(e)}else p!==null&&D<p.length&&(He(e,D),p.length=D);if(Ne()&&N!==null&&!M&&p!==null&&(e.f&(m|L|O))===0)for(d=0;d<N.length;d++)Wt(N[d],e);return f!==null&&f!==e&&(ke++,N!==null&&(r===null?r=N:r.push(...N))),(e.f&z)!==0&&(e.f^=z),c}catch(V){return Nn(V)}finally{e.f^=Xe,b=t,D=n,N=r,_=f,x=s,Pe(l),M=o,re=a}}function Xn(e,t){let n=t.reactions;if(n!==null){var r=an.call(n,e);if(r!==-1){var f=n.length-1;f===0?n=t.reactions=null:(n[r]=n[f],n.pop())}}n===null&&(t.f&m)!==0&&(b===null||!b.includes(t))&&(A(t,L),(t.f&F)!==0&&(t.f^=F,t.f&=~fe),Ft(t),He(t,0))}function He(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Xn(e,n[r])}function be(e){var t=e.f;if((t&K)===0){A(e,R);var n=h,r=ne;h=e,ne=!0;try{(t&(H|_n))!==0?Gn(e):Kt(e),Gt(e);var f=en(e);e.teardown=typeof f=="function"?f:null,e.wv=Jt;var s}finally{ne=r,h=n}}}async function Qr(){await Promise.resolve(),We()}function Wr(){return ie.ensure().settled()}function Te(e){var t=e.f,n=(t&m)!==0;if(_!==null&&!M){var r=h!==null&&(h.f&K)!==0;if(!r&&!(x!=null&&x.includes(e))){var f=_.deps;if((_.f&Xe)!==0)e.rv<ke&&(e.rv=ke,b===null&&f!==null&&f[D]===e?D++:b===null?b=[e]:b.includes(e)||b.push(e));else{(_.deps??(_.deps=[])).push(e);var s=e.reactions;s===null?e.reactions=[_]:s.includes(_)||s.push(_)}}}if(Ee){if($.has(e))return $.get(e);if(n){var l=e,o=l.v;return((l.f&R)===0&&l.reactions!==null||nn(l))&&(o=_t(l)),$.set(l,o),o}}else n&&(!(y!=null&&y.has(e))||v!=null&&v.is_fork&&!qe())&&(l=e,Ce(l)&&Mt(l),ne&&qe()&&(l.f&F)===0&&tn(l));if(y!=null&&y.has(e))return y.get(e);if((e.f&z)!==0)throw e.v;return e.v}function tn(e){if(e.deps!==null){e.f^=F;for(const t of e.deps)(t.reactions??(t.reactions=[])).push(e),(t.f&m)!==0&&(t.f&F)===0&&tn(t)}}function nn(e){if(e.v===S)return!0;if(e.deps===null)return!1;for(const t of e.deps)if($.has(t)||(t.f&m)!==0&&nn(t))return!0;return!1}function Zn(e){var t=M;try{return M=!0,e()}finally{M=t}}const Jn=-7169;function A(e,t){e.f=e.f&Jn|t}function ef(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(Se in e)rt(e);else if(!Array.isArray(e))for(let t in e){const n=e[t];typeof n=="object"&&n&&Se in n&&rt(n)}}}function rt(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{rt(e[r],t)}catch{}const n=Tt(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const r=ln(n);for(let f in r){const s=r[f].get;if(s)try{s.call(e)}catch{}}}}}function tf(e){E===null&&dn(),De&&E.l!==null?Qn(E).m.push(e):Vn(()=>{const t=Zn(e);if(typeof t=="function")return t})}function Qn(e){var t=e.l;return t.u??(t.u={a:[],b:[],m:[]})}export{qn as $,J as A,G as B,kt as C,Gr as D,Ie as E,Te as F,br as G,kn as H,E as I,Vr as J,Vn as K,Zn as L,cn as M,rr as N,ef as O,ct as P,Nr as Q,Mn as R,bn as S,tt as T,sr as U,vt as V,Mr as W,er as X,sn as Y,cr as Z,pr as _,Le as a,_r as a0,j as a1,Hr as a2,vr as a3,On as a4,dr as a5,Ar as a6,Tt as a7,ln as a8,ge as a9,ot as aA,lr as aB,Br as aC,ut as aD,Se as aE,Ae as aF,or as aG,yr as aH,Ee as aI,K as aJ,Er as aK,De as aL,wr as aM,hr as aN,mr as aO,ir as aP,We as aQ,Qr as aR,nr as aS,xn as aT,Pr as aU,Wr as aV,Fr as aa,fr as ab,qe as ac,Kr as ad,ze as ae,h as af,ie as ag,ye as ah,X as ai,Pe as aj,Nn as ak,_ as al,xr as am,Fe as an,ur as ao,Oe as ap,st as aq,Sr as ar,tr as as,Yn as at,gr as au,Tr as av,it as aw,lt as ax,jr as ay,Rn as az,Xr as b,v as c,le as d,g as e,$r as f,kr as g,se as h,Dr as i,Or as j,we as k,Rr as l,Jr as m,St as n,nt as o,zn as p,Z as q,Zr as r,Ur as s,Cr as t,tf as u,qr as v,Lr as w,Yr as x,zr as y,Ir as z};
@@ -1 +1 @@
1
- var S=Object.defineProperty;var y=a=>{throw TypeError(a)};var x=(a,e,t)=>e in a?S(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var A=(a,e,t)=>x(a,typeof e!="symbol"?e+"":e,t),E=(a,e,t)=>e.has(a)||y("Cannot "+t);var s=(a,e,t)=>(E(a,e,"read from private field"),t?t.call(a):e.get(a)),u=(a,e,t)=>e.has(a)?y("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(a):e.set(a,t),T=(a,e,t,i)=>(E(a,e,"write to private field"),i?i.call(a,t):e.set(a,t),t);import{c as w,r as D,d as k,p as N,a as F,b as M,h as g,e as B,m as C,s as H,f as j,g as I,E as L,i as O,H as P,j as Y,k as q,l as R}from"./DUfrtY0h.js";var d,l,c,_,m,v,b;class z{constructor(e,t=!0){A(this,"anchor");u(this,d,new Map);u(this,l,new Map);u(this,c,new Map);u(this,_,new Set);u(this,m,!0);u(this,v,()=>{var e=w;if(s(this,d).has(e)){var t=s(this,d).get(e),i=s(this,l).get(t);if(i)D(i),s(this,_).delete(t);else{var n=s(this,c).get(t);n&&(s(this,l).set(t,n.effect),s(this,c).delete(t),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),i=n.effect)}for(const[f,r]of s(this,d)){if(s(this,d).delete(f),f===e)break;const h=s(this,c).get(r);h&&(k(h.effect),s(this,c).delete(r))}for(const[f,r]of s(this,l)){if(f===t||s(this,_).has(f))continue;const h=()=>{if(Array.from(s(this,d).values()).includes(f)){var p=document.createDocumentFragment();C(r,p),p.append(F()),s(this,c).set(f,{effect:r,fragment:p})}else k(r);s(this,_).delete(f),s(this,l).delete(f)};s(this,m)||!i?(s(this,_).add(f),N(r,h,!1)):h()}}});u(this,b,e=>{s(this,d).delete(e);const t=Array.from(s(this,d).values());for(const[i,n]of s(this,c))t.includes(i)||(k(n.effect),s(this,c).delete(i))});this.anchor=e,T(this,m,t)}ensure(e,t){var i=w,n=H();if(t&&!s(this,l).has(e)&&!s(this,c).has(e))if(n){var f=document.createDocumentFragment(),r=F();f.append(r),s(this,c).set(e,{effect:M(()=>t(r)),fragment:f})}else s(this,l).set(e,M(()=>t(this.anchor)));if(s(this,d).set(i,e),n){for(const[h,o]of s(this,l))h===e?i.skipped_effects.delete(o):i.skipped_effects.add(o);for(const[h,o]of s(this,c))h===e?i.skipped_effects.delete(o.effect):i.skipped_effects.add(o.effect);i.oncommit(s(this,v)),i.ondiscard(s(this,b))}else g&&(this.anchor=B),s(this,v).call(this)}}d=new WeakMap,l=new WeakMap,c=new WeakMap,_=new WeakMap,m=new WeakMap,v=new WeakMap,b=new WeakMap;function K(a,e,t=!1){g&&I();var i=new z(a),n=t?L:0;function f(r,h){if(g){const p=O(a)===P;if(r===p){var o=Y();q(o),i.anchor=o,R(!1),i.ensure(r,h),R(!0);return}}i.ensure(r,h)}j(()=>{var r=!1;e((h,o=!0)=>{r=!0,f(o,h)}),r||f(!1,null)},n)}export{z as B,K as i};
1
+ var S=Object.defineProperty;var y=a=>{throw TypeError(a)};var x=(a,e,t)=>e in a?S(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var A=(a,e,t)=>x(a,typeof e!="symbol"?e+"":e,t),E=(a,e,t)=>e.has(a)||y("Cannot "+t);var s=(a,e,t)=>(E(a,e,"read from private field"),t?t.call(a):e.get(a)),u=(a,e,t)=>e.has(a)?y("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(a):e.set(a,t),T=(a,e,t,i)=>(E(a,e,"write to private field"),i?i.call(a,t):e.set(a,t),t);import{c as w,r as D,d as k,p as N,a as F,b as M,h as g,e as B,m as C,s as H,f as j,g as I,E as L,i as O,H as P,j as Y,k as q,l as R}from"./DXY2Rq4J.js";var d,l,c,_,m,v,b;class z{constructor(e,t=!0){A(this,"anchor");u(this,d,new Map);u(this,l,new Map);u(this,c,new Map);u(this,_,new Set);u(this,m,!0);u(this,v,()=>{var e=w;if(s(this,d).has(e)){var t=s(this,d).get(e),i=s(this,l).get(t);if(i)D(i),s(this,_).delete(t);else{var n=s(this,c).get(t);n&&(s(this,l).set(t,n.effect),s(this,c).delete(t),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),i=n.effect)}for(const[f,r]of s(this,d)){if(s(this,d).delete(f),f===e)break;const h=s(this,c).get(r);h&&(k(h.effect),s(this,c).delete(r))}for(const[f,r]of s(this,l)){if(f===t||s(this,_).has(f))continue;const h=()=>{if(Array.from(s(this,d).values()).includes(f)){var p=document.createDocumentFragment();C(r,p),p.append(F()),s(this,c).set(f,{effect:r,fragment:p})}else k(r);s(this,_).delete(f),s(this,l).delete(f)};s(this,m)||!i?(s(this,_).add(f),N(r,h,!1)):h()}}});u(this,b,e=>{s(this,d).delete(e);const t=Array.from(s(this,d).values());for(const[i,n]of s(this,c))t.includes(i)||(k(n.effect),s(this,c).delete(i))});this.anchor=e,T(this,m,t)}ensure(e,t){var i=w,n=H();if(t&&!s(this,l).has(e)&&!s(this,c).has(e))if(n){var f=document.createDocumentFragment(),r=F();f.append(r),s(this,c).set(e,{effect:M(()=>t(r)),fragment:f})}else s(this,l).set(e,M(()=>t(this.anchor)));if(s(this,d).set(i,e),n){for(const[h,o]of s(this,l))h===e?i.skipped_effects.delete(o):i.skipped_effects.add(o);for(const[h,o]of s(this,c))h===e?i.skipped_effects.delete(o.effect):i.skipped_effects.add(o.effect);i.oncommit(s(this,v)),i.ondiscard(s(this,b))}else g&&(this.anchor=B),s(this,v).call(this)}}d=new WeakMap,l=new WeakMap,c=new WeakMap,_=new WeakMap,m=new WeakMap,v=new WeakMap,b=new WeakMap;function K(a,e,t=!1){g&&I();var i=new z(a),n=t?L:0;function f(r,h){if(g){const p=O(a)===P;if(r===p){var o=Y();q(o),i.anchor=o,R(!1),i.ensure(r,h),R(!0);return}}i.ensure(r,h)}j(()=>{var r=!1;e((h,o=!0)=>{r=!0,f(o,h)}),r||f(!1,null)},n)}export{z as B,K as i};