@geminilight/mindos 0.6.52 → 0.6.53

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 (179) hide show
  1. package/_standalone/.mindos-build-version +1 -1
  2. package/_standalone/.next/BUILD_ID +1 -1
  3. package/_standalone/.next/app-path-routes-manifest.json +16 -16
  4. package/_standalone/.next/build-manifest.json +2 -2
  5. package/_standalone/.next/cache/.previewinfo +1 -1
  6. package/_standalone/.next/cache/.rscinfo +1 -1
  7. package/_standalone/.next/cache/config.json +3 -3
  8. package/_standalone/.next/prerender-manifest.json +3 -3
  9. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  10. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/_standalone/.next/server/app/_global-error.html +2 -2
  12. package/_standalone/.next/server/app/_global-error.rsc +1 -1
  13. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  15. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  16. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  17. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  18. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  19. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  20. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  21. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
  23. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  24. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  25. package/_standalone/.next/server/app/agents/page.js +1 -1
  26. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  27. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  28. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  29. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  30. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  31. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  32. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  37. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/ask/route.js +44 -16
  39. package/_standalone/.next/server/app/api/ask/route.js.nft.json +1 -1
  40. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  41. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  43. package/_standalone/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  44. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  45. package/_standalone/.next/server/app/api/bootstrap/route.js.nft.json +1 -1
  46. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/changes/route.js.nft.json +1 -1
  48. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  49. package/_standalone/.next/server/app/api/export/route.js.nft.json +1 -1
  50. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  51. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  52. package/_standalone/.next/server/app/api/file/import/route.js.nft.json +1 -1
  53. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  54. package/_standalone/.next/server/app/api/file/route.js.nft.json +1 -1
  55. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  56. package/_standalone/.next/server/app/api/files/route.js.nft.json +1 -1
  57. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/git/route.js.nft.json +1 -1
  59. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/graph/route.js.nft.json +1 -1
  61. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  62. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  63. package/_standalone/.next/server/app/api/inbox/route.js.nft.json +1 -1
  64. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  65. package/_standalone/.next/server/app/api/init/route.js.nft.json +1 -1
  66. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  67. package/_standalone/.next/server/app/api/mcp/agents/route.js.nft.json +1 -1
  68. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  69. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  70. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  71. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  72. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  74. package/_standalone/.next/server/app/api/monitoring/route.js.nft.json +1 -1
  75. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  76. package/_standalone/.next/server/app/api/recent-files/route.js.nft.json +1 -1
  77. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/restart/route.js +1 -1
  79. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/search/route.js.nft.json +1 -1
  81. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  84. package/_standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  85. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  86. package/_standalone/.next/server/app/api/settings/test-key/route.js +1 -1
  87. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  88. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  89. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  91. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  92. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  94. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/tree-version/route.js.nft.json +1 -1
  96. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  97. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/update/route.js +1 -1
  99. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  101. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  102. package/_standalone/.next/server/app/api/workflows/route.js.nft.json +1 -1
  103. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  104. package/_standalone/.next/server/app/changes/page.js +1 -1
  105. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  106. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  107. package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
  108. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  109. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  110. package/_standalone/.next/server/app/echo/page.js +1 -1
  111. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  112. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  113. package/_standalone/.next/server/app/explore/page.js +1 -1
  114. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  115. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  116. package/_standalone/.next/server/app/help/page.js +1 -1
  117. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  118. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  119. package/_standalone/.next/server/app/login/page.js +1 -1
  120. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  121. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  122. package/_standalone/.next/server/app/page.js +1 -1
  123. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  124. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  125. package/_standalone/.next/server/app/setup/page.js +1 -1
  126. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  127. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  128. package/_standalone/.next/server/app/trash/page.js +3 -3
  129. package/_standalone/.next/server/app/trash/page.js.nft.json +1 -1
  130. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  131. package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
  132. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  133. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  134. package/_standalone/.next/server/app-paths-manifest.json +16 -16
  135. package/_standalone/.next/server/chunks/3436.js +52 -0
  136. package/_standalone/.next/server/chunks/6539.js +1 -1
  137. package/_standalone/.next/server/chunks/8388.js +1 -1
  138. package/_standalone/.next/server/chunks/8408.js +28 -28
  139. package/_standalone/.next/server/pages/500.html +2 -2
  140. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  141. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  142. package/_standalone/.next/static/chunks/{1053-c519cb347faa75e2.js → 1053-17786066ecd6f216.js} +2 -2
  143. package/_standalone/.next/static/chunks/app/{layout-e706f9a963b177ba.js → layout-e5d2fb384207d821.js} +27 -27
  144. package/_standalone/.next/static/chunks/app/{page-2595175820acfd65.js → page-54edd045d3448df5.js} +2 -2
  145. package/_standalone/.next/static/chunks/app/trash/page-6372bb3f5463affa.js +1 -0
  146. package/_standalone/.next/static/chunks/app/view/[...path]/page-f3d1d87190dcfe28.js +12 -0
  147. package/_standalone/.next/trace +64 -64
  148. package/_standalone/components/walkthrough/WalkthroughOverlay.tsx +39 -10
  149. package/_standalone/lib/stores/walkthrough-store.ts +33 -1
  150. package/_standalone/tsconfig.tsbuildinfo +1 -1
  151. package/app/app/api/ask/route.ts +193 -3
  152. package/app/app/api/restart/route.ts +26 -21
  153. package/app/app/api/update/route.ts +24 -10
  154. package/app/components/walkthrough/WalkthroughOverlay.tsx +39 -10
  155. package/app/lib/agent/model.ts +2 -1
  156. package/app/lib/i18n/modules/ai-chat.ts +8 -0
  157. package/app/lib/settings.ts +32 -0
  158. package/app/lib/stores/walkthrough-store.ts +33 -1
  159. package/bin/commands/update.js +23 -11
  160. package/bin/lib/clean-env.js +38 -0
  161. package/bin/lib/gateway.js +41 -4
  162. package/bin/lib/stop.js +40 -4
  163. package/package.json +1 -1
  164. package/_standalone/.next/server/chunks/2673.js +0 -52
  165. package/_standalone/.next/static/chunks/app/trash/page-61c6210fac1e9710.js +0 -1
  166. package/_standalone/.next/static/chunks/app/view/[...path]/page-798359c36f10ef8d.js +0 -12
  167. package/_standalone/lib/i18n/generated/explore-i18n.generated.ts +0 -138
  168. package/_standalone/lib/i18n/index.ts +0 -38
  169. package/_standalone/lib/i18n/modules/ai-chat.ts +0 -237
  170. package/_standalone/lib/i18n/modules/common.ts +0 -71
  171. package/_standalone/lib/i18n/modules/features.ts +0 -153
  172. package/_standalone/lib/i18n/modules/knowledge.ts +0 -727
  173. package/_standalone/lib/i18n/modules/navigation.ts +0 -157
  174. package/_standalone/lib/i18n/modules/onboarding.ts +0 -445
  175. package/_standalone/lib/i18n/modules/panels.ts +0 -1255
  176. package/_standalone/lib/i18n/modules/settings.ts +0 -889
  177. package/_standalone/lib/i18n.ts +0 -3
  178. /package/_standalone/.next/static/{IiTZbEzZo8l5MSUxlDwKp → W-wLgvhPtPJ5Psq9V4i3M}/_buildManifest.js +0 -0
  179. /package/_standalone/.next/static/{IiTZbEzZo8l5MSUxlDwKp → W-wLgvhPtPJ5Psq9V4i3M}/_ssgManifest.js +0 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Create a clean environment for spawning a new MindOS process.
3
+ *
4
+ * During `mindos update`, the old process inherits env vars like
5
+ * MINDOS_PROJECT_ROOT, MINDOS_CLI_PATH etc. that point to the OLD
6
+ * installation path. If these leak into the child process, the "new"
7
+ * server starts from the old code — the infamous "fake update" bug.
8
+ *
9
+ * This helper strips ALL MINDOS_*/MIND_* prefixed variables plus
10
+ * a curated denylist of other vars that can cause stale-path issues.
11
+ */
12
+
13
+ /** Env var prefixes that must be stripped for a clean restart */
14
+ const STRIP_PREFIXES = ['MINDOS_', 'MIND_'];
15
+
16
+ /** Additional specific vars to strip (not prefix-matched) */
17
+ const STRIP_EXACT = [
18
+ 'AUTH_TOKEN',
19
+ 'WEB_PASSWORD',
20
+ 'NODE_OPTIONS', // may contain --inspect or old module paths
21
+ ];
22
+
23
+ /**
24
+ * Return a copy of `process.env` with all MindOS-related vars removed.
25
+ * The new child process will re-derive paths from its own ROOT constant.
26
+ */
27
+ export function cleanEnvForRestart(baseEnv = process.env) {
28
+ const cleaned = { ...baseEnv };
29
+ for (const key of Object.keys(cleaned)) {
30
+ if (STRIP_PREFIXES.some(p => key.startsWith(p))) {
31
+ delete cleaned[key];
32
+ }
33
+ }
34
+ for (const key of STRIP_EXACT) {
35
+ delete cleaned[key];
36
+ }
37
+ return cleaned;
38
+ }
@@ -113,13 +113,43 @@ export function parseLogHint(line) {
113
113
  return null;
114
114
  }
115
115
 
116
- export async function waitForHttp(port, { retries = 60, intervalMs = 2000, label = 'service', logFile = null } = {}) {
116
+ export async function waitForHttp(port, { retries = 60, intervalMs = 2000, label = 'service', logFile = null, expectedVersion = null } = {}) {
117
117
  const start = Date.now();
118
118
  const elapsed = () => {
119
119
  const s = Math.round((Date.now() - start) / 1000);
120
120
  return s < 60 ? `${s}s` : `${Math.floor(s / 60)}m${String(s % 60).padStart(2, '0')}s`;
121
121
  };
122
122
 
123
+ /**
124
+ * Version-aware readiness check: after health check passes, verify the
125
+ * server is actually running the expected version (not an orphaned old process).
126
+ * Prevents the "fake update" where health check hits a stale worker.
127
+ */
128
+ async function verifyVersion(hostname) {
129
+ if (!expectedVersion) return true; // no version check requested
130
+ try {
131
+ const { request } = await import('node:http');
132
+ return new Promise((resolve) => {
133
+ const req = request(
134
+ { hostname, port, path: '/api/update-check', method: 'GET', timeout: 5000 },
135
+ (res) => {
136
+ let body = '';
137
+ res.on('data', (chunk) => { body += chunk; });
138
+ res.on('end', () => {
139
+ try {
140
+ const data = JSON.parse(body);
141
+ resolve(data.current === expectedVersion);
142
+ } catch { resolve(false); }
143
+ });
144
+ }
145
+ );
146
+ req.on('error', () => resolve(false));
147
+ req.on('timeout', () => { req.destroy(); resolve(false); });
148
+ req.end();
149
+ });
150
+ } catch { return false; }
151
+ }
152
+
123
153
  // Track log file position for incremental reads
124
154
  let logOffset = 0;
125
155
  let lastHint = 'starting…';
@@ -169,9 +199,16 @@ export async function waitForHttp(port, { retries = 60, intervalMs = 2000, label
169
199
  });
170
200
  const ok = await tryHost('127.0.0.1') || await tryHost('localhost');
171
201
  if (ok) {
172
- process.stdout.write(`\r\x1b[K`);
173
- process.stdout.write(` ${green('\u2714')} ${label} ready ${dim(`(${elapsed()})`)}\n`);
174
- return true;
202
+ // If expectedVersion is set, verify the server is running the right version
203
+ const versionOk = await verifyVersion('127.0.0.1') || await verifyVersion('localhost');
204
+ if (!versionOk && expectedVersion) {
205
+ // Health check passed but wrong version — old process still serving
206
+ // Continue waiting for the new process to take over
207
+ } else {
208
+ process.stdout.write(`\r\x1b[K`);
209
+ process.stdout.write(` ${green('\u2714')} ${label} ready ${dim(`(${elapsed()})`)}\n`);
210
+ return true;
211
+ }
175
212
  }
176
213
  } catch { /* not ready yet */ }
177
214
 
package/bin/lib/stop.js CHANGED
@@ -4,6 +4,19 @@ import { green, yellow, dim } from './colors.js';
4
4
  import { loadPids, clearPids } from './pid.js';
5
5
  import { CONFIG_PATH } from './constants.js';
6
6
 
7
+ /**
8
+ * Portable synchronous sleep using SharedArrayBuffer + Atomics.wait.
9
+ * Falls back to execSync('sleep N') on platforms without SharedArrayBuffer.
10
+ */
11
+ function syncSleep(ms) {
12
+ try {
13
+ const sab = new SharedArrayBuffer(4);
14
+ Atomics.wait(new Int32Array(sab), 0, 0, ms);
15
+ } catch {
16
+ try { execSync(`sleep ${Math.ceil(ms / 1000)}`, { stdio: 'ignore' }); } catch {}
17
+ }
18
+ }
19
+
7
20
  /**
8
21
  * Kill processes listening on the given port.
9
22
  * Tries lsof first, then falls back to parsing `ss` output.
@@ -52,6 +65,19 @@ export function killByPort(port) {
52
65
  for (const pid of pidsToKill) {
53
66
  try { process.kill(pid, 'SIGTERM'); killed++; } catch {}
54
67
  }
68
+
69
+ // SIGKILL fallback: if processes survive SIGTERM, force-kill after 2s.
70
+ // Next.js workers can ignore SIGTERM during request handling.
71
+ if (killed > 0) {
72
+ syncSleep(2000);
73
+ for (const pid of pidsToKill) {
74
+ try {
75
+ process.kill(pid, 0); // check if still alive
76
+ process.kill(pid, 'SIGKILL'); // force kill
77
+ } catch { /* already dead, good */ }
78
+ }
79
+ }
80
+
55
81
  return killed;
56
82
  }
57
83
 
@@ -60,10 +86,20 @@ export function killByPort(port) {
60
86
  */
61
87
  function killTree(pid) {
62
88
  // Try to kill the entire process group first
63
- try { process.kill(-pid, 'SIGTERM'); return true; } catch {}
64
- // Fallback: kill individual process
65
- try { process.kill(pid, 'SIGTERM'); return true; } catch {}
66
- return false;
89
+ try { process.kill(-pid, 'SIGTERM'); } catch {}
90
+ // Also kill individual process
91
+ try { process.kill(pid, 'SIGTERM'); } catch {}
92
+
93
+ // Wait briefly then SIGKILL if still alive
94
+ syncSleep(2000);
95
+
96
+ let alive = false;
97
+ try { process.kill(pid, 0); alive = true; } catch {}
98
+ if (alive) {
99
+ try { process.kill(-pid, 'SIGKILL'); } catch {}
100
+ try { process.kill(pid, 'SIGKILL'); } catch {}
101
+ }
102
+ return true;
67
103
  }
68
104
 
69
105
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geminilight/mindos",
3
- "version": "0.6.52",
3
+ "version": "0.6.53",
4
4
  "description": "MindOS — Human-Agent Collaborative Mind System. Local-first knowledge base that syncs your mind to all AI Agents via MCP.",
5
5
  "keywords": [
6
6
  "mindos",
@@ -1,52 +0,0 @@
1
- "use strict";exports.id=2673,exports.ids=[2673],exports.modules={1160:(a,b,c)=>{c.d(b,{GL:()=>d,_l:()=>e,e1:()=>f}),c(29021),c(33873);let d=a=>`# ${a} Instruction Set
2
-
3
- ## Goal
4
-
5
- - Define local execution rules for this directory.
6
-
7
- ## Local Rules
8
-
9
- - Read root \`INSTRUCTION.md\` first.
10
- - Then read this directory \`README.md\` for navigation.
11
- - Keep edits minimal, structured, and traceable.
12
-
13
- ## Execution Order
14
-
15
- 1. Root \`INSTRUCTION.md\`
16
- 2. This directory \`INSTRUCTION.md\`
17
- 3. This directory \`README.md\` and target files
18
-
19
- ## Boundary
20
-
21
- - Root rules win on conflict.
22
- `,e=a=>`# ${a}
23
-
24
- ## 📁 Structure
25
-
26
- \`\`\`bash
27
- ${a}/
28
- ├── INSTRUCTION.md
29
- ├── README.md
30
- └── (your files here)
31
- \`\`\`
32
-
33
- ## 💡 Usage
34
-
35
- (Describe the purpose and usage of this space.)
36
- `;function f(a){return a.replace(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}\s]+/u,"")||a}},2673:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{"00184347a7cbbfc696a74604b6bb38bd3e45dd25de":()=>e.Bn,"0045e6591079a142a0ed89b5abf66146dee51d141b":()=>e.GB,"00bab7c546feac081f859f47c33f5810847519c1e8":()=>e.Dg,"00e67552432db57f703bb329ee7a384995e7dfe40f":()=>e.EG,"40042bc96ad01f402f701c1952d8d496632de61007":()=>e.ku,"400a19b89c8d2454085c3ff6281bc0bccfddd153a0":()=>e.Ar,"4068fcffc40fc3860b75717c8269da5750b38a2b80":()=>e.bC,"40765218403d9d31f3dbfafde44c35a71ed84c0f12":()=>e.Ye,"40a53abb964f610b3bf344990e7415f300f4147413":()=>e.VO,"40b7879972d1b47af01471724c9e1aa4f9ae0bcdf7":()=>e.iJ,"40f253c12bb85417bff9e1c0a1a1a71d1ffb256fd3":()=>e.jW,"601d39b19f8a058f5cc761dccfc5895c9bfc87e8c9":()=>e.pG,"601dd73f1d6d1bc885b62d96c2f93e5bf261528cc1":()=>e.X3,"60591f3430c164d0438b6c7417dc8317b58af8ab98":()=>e.NN,"6093e141cd7cd9c1302d99e3fcfa90f0cca62cfeb0":()=>e.f,"706ce1570e2a5adbf21306f0143589aed899e1f21b":()=>e.FZ,"706eac126bb5c55917b1372253344ae9971c9c5384":()=>e.pX});var e=c(85224),f=a([e]);e=(f.then?(await f)():f)[0],d()}catch(a){d(a)}})},4120:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{kh:()=>o});var e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(21820),j=c.n(i),k=c(61374),l=c(27313),m=a([l]);l=(m.then?(await m)():m)[0];let p=h().join(j().homedir(),".mindos","config.json"),q={ai:{provider:"anthropic",providers:{anthropic:{apiKey:"",model:"claude-sonnet-4-6"},openai:{apiKey:"",model:"gpt-5.4",baseUrl:""}}},mindRoot:""};function n(a,b,c){if(a&&"object"==typeof a){let c=a[b];if("string"==typeof c&&""!==c.trim())return c}return c}function o(){return function(){try{var a;let b=f().readFileSync(p,"utf-8"),c=JSON.parse(b);return{ai:function(a){let b=a.ai;if(!b)return{...q.ai};let c="string"==typeof b.provider?b.provider:"anthropic",d=(0,l.rl)(c)?c:"anthropic";if(b.providers&&"object"==typeof b.providers){let a=b.providers,c={};for(let b of Object.keys(a)){var e;if(!(0,l.rl)(b))continue;let d=l.T_[b],f=q.ai.providers[b]??{apiKey:"",model:d.defaultModel};c[b]=(e=a[b],{apiKey:n(e,"apiKey",f.apiKey),model:n(e,"model",f.model),...void 0!==f.baseUrl?{baseUrl:n(e,"baseUrl",f.baseUrl)}:{}})}return c.anthropic||(c.anthropic=q.ai.providers.anthropic),c.openai||(c.openai=q.ai.providers.openai),{provider:d,providers:c}}return{provider:d,providers:{anthropic:{apiKey:n(b,"anthropicApiKey",""),model:n(b,"anthropicModel","claude-sonnet-4-6")},openai:{apiKey:n(b,"openaiApiKey",""),model:n(b,"openaiModel","gpt-5.4"),baseUrl:n(b,"openaiBaseUrl","")}}}}(c),agent:function(a){if(!a||"object"!=typeof a)return;let b={};return"number"==typeof a.maxSteps&&(b.maxSteps=Math.min(30,Math.max(1,a.maxSteps))),"boolean"==typeof a.enableThinking&&(b.enableThinking=a.enableThinking),"number"==typeof a.thinkingBudget&&(b.thinkingBudget=Math.min(5e4,Math.max(1e3,a.thinkingBudget))),("auto"===a.contextStrategy||"off"===a.contextStrategy)&&(b.contextStrategy=a.contextStrategy),"number"==typeof a.reconnectRetries&&(b.reconnectRetries=Math.min(10,Math.max(0,a.reconnectRetries))),Object.keys(b).length>0?b:void 0}(c.agent),acpAgents:(a=c.acpAgents,(0,k.gG)(a)),mindRoot:c.mindRoot??q.mindRoot,webPassword:"string"==typeof c.webPassword?c.webPassword:void 0,authToken:"string"==typeof c.authToken?c.authToken:void 0,mcpPort:"number"==typeof c.mcpPort?c.mcpPort:void 0,port:"number"==typeof c.port?c.port:void 0,startMode:"string"==typeof c.startMode?c.startMode:void 0,setupPending:!0===c.setupPending||void 0,disabledSkills:Array.isArray(c.disabledSkills)?c.disabledSkills:void 0,guideState:function(a){if(!a||"object"!=typeof a||!0!==a.active)return;let b="en"===a.template||"zh"===a.template||"empty"===a.template?a.template:"en";return{active:!0,dismissed:!0===a.dismissed,template:b,step1Done:!0===a.step1Done,askedAI:!0===a.askedAI,nextStepIndex:"number"==typeof a.nextStepIndex?a.nextStepIndex:0,walkthroughStep:"number"==typeof a.walkthroughStep?a.walkthroughStep:void 0,walkthroughDismissed:"boolean"==typeof a.walkthroughDismissed?a.walkthroughDismissed:void 0}}(c.guideState)}}catch{return{...q,ai:{...q.ai,providers:{...q.ai.providers}},setupPending:!0}}}().mindRoot||process.env.MIND_ROOT||h().join(j().homedir(),"MindOS","mind")}d()}catch(a){d(a)}})},14432:(a,b,c)=>{c.d(b,{Xs:()=>z,As:()=>v,rt:()=>d.rt,x3:()=>d.x3,_E:()=>u,H5:()=>d.H5,OV:()=>d.OV}),c(99863);var d=c(18451),e=c(29021),f=c.n(e);c(79748);var g=c(33873),h=c.n(g);let i=new Set([".git","node_modules","app",".next",".DS_Store","mcp"]),j=new Set([".md",".csv"]),k=new Set(["INSTRUCTION.md","README.md","CONFIG.json","CHANGELOG.md"]);function l(a,b,c={}){let d,e=h().resolve(a),g=b??e,m=c.ignoredDirs??i,n=c.allowedExtensions??j;try{d=f().readdirSync(g,{withFileTypes:!0})}catch{return[]}let o=[];for(let b of d){let d=h().join(g,b.name);if(b.isDirectory()){if(m.has(b.name))continue;o.push(...l(a,d,c))}else if(b.isFile()){if(g===e&&k.has(b.name))continue;let a=h().extname(b.name).toLowerCase();n.has(a)&&o.push(h().relative(e,d))}}return o}var m=c(21820),n=c.n(m);let o=/[\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]/,p="u">typeof Intl&&Intl.Segmenter?new Intl.Segmenter("zh",{granularity:"word"}):null;function q(a){let b=new Set,c=a.toLowerCase(),d=c.match(/[a-z0-9_$@#]+/g);if(d)for(let a of d)a.length>=2&&b.add(a);if(o.test(c))if(p)for(let{segment:a,isWordLike:d}of p.segment(c)){if(!d)continue;let c=a.trim();if(c)for(let a of(b.add(c),c))o.test(a)&&b.add(a)}else{let a=[];for(let d of c)o.test(d)?a.push(d):a.length>0&&(r(a,b),a.length=0);a.length>0&&r(a,b)}return b}function r(a,b){for(let c=0;c<a.length;c++)b.add(a[c]),c+1<a.length&&b.add(a[c]+a[c+1])}class s{rebuild(a){let b=l(a),c=new Map,e=new Map,f=new Map,g=0;for(let h of b){let b;try{b=(0,d.TA)(a,h)}catch{continue}e.set(h,b.length),g+=b.length,b.length>5e4&&(b=b.slice(0,5e4));let i=q(h+"\n"+b);for(let a of(f.set(h,i),i)){let b=c.get(a);b||(b=new Set,c.set(a,b)),b.add(h)}}this.invertedIndex=c,this.builtForRoot=a,this.fileCount=b.length,this.docLengths=e,this.totalChars=g,this.fileTokens=f}invalidate(){this.invertedIndex=null,this.builtForRoot=null,this.fileCount=0,this.docLengths.clear(),this.totalChars=0,this.fileTokens.clear()}removeFile(a){if(!this.invertedIndex)return;let b=this.fileTokens.get(a);if(b){for(let c of b)this.invertedIndex.get(c)?.delete(a);this.fileTokens.delete(a)}let c=this.docLengths.get(a)??0;this.totalChars-=c,this.docLengths.delete(a),this.fileCount=Math.max(0,this.fileCount-1)}addFile(a,b){let c;if(!this.invertedIndex)return;try{c=(0,d.TA)(a,b)}catch{return}this.docLengths.set(b,c.length),this.totalChars+=c.length,this.fileCount++,c.length>5e4&&(c=c.slice(0,5e4));let e=q(b+"\n"+c);for(let a of(this.fileTokens.set(b,e),e)){let c=this.invertedIndex.get(a);c||(c=new Set,this.invertedIndex.set(a,c)),c.add(b)}}updateFile(a,b){this.invertedIndex&&(this.removeFile(b),this.addFile(a,b))}isBuiltFor(a){return null!==this.invertedIndex&&this.builtForRoot===a}isBuilt(){return null!==this.invertedIndex}getFileCount(){return this.fileCount}getAvgDocLength(){return this.fileCount>0?this.totalChars/this.fileCount:0}getDocLength(a){return this.docLengths.get(a)??0}getDocFrequency(a){return this.invertedIndex?this.invertedIndex.get(a)?.size??0:0}getCandidatesUnion(a){if(!a.trim()||!this.invertedIndex)return null;let b=q(a.toLowerCase().trim());if(0===b.size)return null;let c=new Map;for(let a of b){let b=this.invertedIndex.get(a);if(b)for(let a of b)c.set(a,(c.get(a)??0)+1)}if(0===c.size)return[];let d=b.size;if(d>=3){let a=Math.max(1,Math.floor(d/2)),b=[...c.entries()].filter(([,b])=>b>=a).map(([a])=>a);if(b.length>0)return b}return[...c.keys()]}getCandidates(a){if(!a.trim()||!this.invertedIndex)return null;let b=q(a.toLowerCase().trim());if(0===b.size)return null;let c=null;for(let a of b){let b=this.invertedIndex.get(a);if(!b)return[];if(null===c)c=new Set(b);else{for(let a of c)b.has(a)||c.delete(a);if(0===c.size)return[]}}return c?Array.from(c):[]}persist(a){if(!this.invertedIndex)return;let b={version:1,builtForRoot:this.builtForRoot??"",fileCount:this.fileCount,totalChars:this.totalChars,docLengths:Object.fromEntries(this.docLengths),invertedIndex:{},timestamp:Date.now()};for(let[a,c]of this.invertedIndex)b.invertedIndex[a]=[...c];let c=h().join(a,"search-index.json");try{f().mkdirSync(a,{recursive:!0}),f().writeFileSync(c,JSON.stringify(b),"utf-8")}catch{}}load(a,b){let c,d,e=h().join(a,"search-index.json");try{c=f().readFileSync(e,"utf-8")}catch{return!1}try{d=JSON.parse(c)}catch{return!1}if(1!==d.version||d.builtForRoot!==b||l(b).length!==d.fileCount)return!1;let g=Object.keys(d.docLengths);if(Math.min(50,g.length)===g.length)for(let a of g)try{if(f().statSync(h().join(b,a)).mtimeMs>d.timestamp)return!1}catch{return!1}else{let a=Math.max(1,Math.floor(g.length/40)),c=new Set;for(let b=0;b<g.length;b+=a)c.add(b);for(let a=Math.max(0,g.length-10);a<g.length;a++)c.add(a);for(let a of c)try{if(f().statSync(h().join(b,g[a])).mtimeMs>d.timestamp)return!1}catch{return!1}}this.builtForRoot=d.builtForRoot,this.fileCount=d.fileCount,this.totalChars=d.totalChars,this.docLengths=new Map(Object.entries(d.docLengths).map(([a,b])=>[a,b]));let i=new Map,j=new Map;for(let[a,b]of Object.entries(d.invertedIndex)){let c=new Set(b);for(let b of(i.set(a,c),c)){let c=j.get(b);c||(c=new Set,j.set(b,c)),c.add(a)}}return this.invertedIndex=i,this.fileTokens=j,!0}constructor(){this.invertedIndex=null,this.builtForRoot=null,this.fileCount=0,this.docLengths=new Map,this.totalChars=0,this.fileTokens=new Map}}let t=new s;function u(){t.invalidate()}function v(a,b){t.isBuilt()&&(t.addFile(a,b),x=!0,w&&clearTimeout(w),w=setTimeout(y,5e3))}let w=null,x=!1;function y(){if(w&&(clearTimeout(w),w=null),x){x=!1;try{t.persist(h().join(n().homedir(),".mindos"))}catch{}}}"u">typeof process&&(process.on("beforeExit",y),process.on("SIGTERM",()=>{y(),process.exit(0)}),process.on("SIGINT",()=>{y(),process.exit(0)}));class z{rebuild(a){let b=l(a).filter(a=>a.endsWith(".md")),c=new Set(b),e=function(a){let b=new Map;for(let c of a){let a=h().basename(c).toLowerCase();b.has(a)||b.set(a,[]),b.get(a).push(c)}return b}(b),f=new Map,g=new Map;for(let h of b){let b;try{b=(0,d.TA)(a,h)}catch{continue}let i=A(b,h,c,e),j=new Set;for(let a of i)a!==h&&j.add(a);for(let a of(f.set(h,j),j)){let b=g.get(a);b||(b=new Set,g.set(a,b)),b.add(h)}}this.forwardLinks=f,this.backwardLinks=g,this.builtForRoot=a,this.fileSet=c,this.basenameMap=e}invalidate(){this.forwardLinks.clear(),this.backwardLinks.clear(),this.builtForRoot=null,this.fileSet.clear(),this.basenameMap.clear()}isBuiltFor(a){return this.builtForRoot===a}isBuilt(){return null!==this.builtForRoot}getForwardLinks(a){return[...this.forwardLinks.get(a)??[]]}getBacklinks(a){return[...this.backwardLinks.get(a)??[]]}getAllEdges(){let a=[];for(let[b,c]of this.forwardLinks)for(let d of c)a.push({source:b,target:d});return a}removeFile(a){let b=this.forwardLinks.get(a);if(b){for(let c of b)this.backwardLinks.get(c)?.delete(a);this.forwardLinks.delete(a)}let c=this.backwardLinks.get(a);if(c){for(let b of c)this.forwardLinks.get(b)?.delete(a);this.backwardLinks.delete(a)}this.fileSet.delete(a);let d=h().basename(a).toLowerCase(),e=this.basenameMap.get(d);if(e){let b=e.indexOf(a);b>=0&&e.splice(b,1),0===e.length&&this.basenameMap.delete(d)}}updateFile(a,b){let c;if(!this.builtForRoot||!b.endsWith(".md"))return;let e=this.forwardLinks.get(b);if(e)for(let a of e)this.backwardLinks.get(a)?.delete(b);try{c=(0,d.TA)(a,b)}catch{return}if(!this.fileSet.has(b)){this.fileSet.add(b);let a=h().basename(b).toLowerCase();this.basenameMap.has(a)||this.basenameMap.set(a,[]),this.basenameMap.get(a).push(b)}let f=A(c,b,this.fileSet,this.basenameMap),g=new Set;for(let a of f)a!==b&&g.add(a);for(let a of(this.forwardLinks.set(b,g),g)){let c=this.backwardLinks.get(a);c||(c=new Set,this.backwardLinks.set(a,c)),c.add(b)}}constructor(){this.forwardLinks=new Map,this.backwardLinks=new Map,this.builtForRoot=null,this.fileSet=new Set,this.basenameMap=new Map}}function A(a,b,c,d){let e,f=[],g=h().dirname(b),i=/\[\[([^\]|#]+)(?:[|#][^\]]*)?/g;for(;null!==(e=i.exec(a));){let a=e[1].trim();if(!a)continue;if(c.has(a)){f.push(a);continue}let b=a.endsWith(".md")?a:a+".md";if(c.has(b)){f.push(b);continue}let g=h().basename(b).toLowerCase(),i=d.get(g);i&&1===i.length&&f.push(i[0])}let j=/\[[^\]]+\]\(([^)]+\.md)(?:#[^)]*)?\)/g;for(;null!==(e=j.exec(a));){let a=e[1].trim();if(!a||a.startsWith("http"))continue;let b=h().normalize(h().join(g,a));c.has(b)&&f.push(b)}return f}c(20018),c(79646),c(15872)},15872:(a,b,c)=>{c.d(b,{_:()=>l,c:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(20018),i=c(18451),j=c(1160);function k(a,b,c){let d=b.replace(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}\s]+/u,"")||b,e=c.trim()||"(Describe the purpose and usage of this space.)";return`# ${d}
37
-
38
- ${e}
39
-
40
- ## 📁 Structure
41
-
42
- \`\`\`bash
43
- ${a}/
44
- ├── INSTRUCTION.md
45
- ├── README.md
46
- └── (your files here)
47
- \`\`\`
48
-
49
- ## 💡 Usage
50
-
51
- (Add usage guidelines for this space.)
52
- `}function l(a,b,c,d=""){let f=b.trim();if(!f)throw new h.Vt(h.tG.INVALID_REQUEST,"Space name is required",{name:b});if(f.includes("/")||f.includes("\\"))throw new h.Vt(h.tG.INVALID_PATH,"Space name must not contain path separators",{name:f});let m=d.replace(/\/+$/,"").trim();if(m.includes("..")||m.startsWith("/")||m.includes("\\"))throw new h.Vt(h.tG.INVALID_PATH,"Invalid parent path",{parentPath:d});let n=m?`${m}/`:"",o=`${n}${f}`,p=k(o,f,c);(0,i.x3)(a,`${o}/README.md`,p);let q=g().resolve(a,o),r=g().join(q,"INSTRUCTION.md");return e().existsSync(r)||e().writeFileSync(r,(0,j.GL)((0,j.e1)(f)),"utf-8"),{path:o}}},16081:(a,b,c)=>{c.d(b,{F0:()=>o,JI:()=>u,Lr:()=>p,YN:()=>t,hQ:()=>s,kz:()=>q,vn:()=>r});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f);function h(a,b){return g().join(g().dirname(a),b)}function i(a){return h(a,".trash")}function j(a){return h(a,".trash-meta")}function k(a){e().mkdirSync(i(a),{recursive:!0}),e().mkdirSync(j(a),{recursive:!0})}function l(a,b){let c=g().join(j(a),`${b}.json`);if(!e().existsSync(c))return null;try{return JSON.parse(e().readFileSync(c,"utf-8"))}catch{return null}}function m(a,b){let c=g().join(j(a),`${b}.json`);try{e().unlinkSync(c)}catch{}}function n(a,b,c){if(c)e().cpSync(a,b,{recursive:!0}),e().rmSync(a,{recursive:!0,force:!0});else try{e().renameSync(a,b)}catch(c){if("EXDEV"===c.code)e().copyFileSync(a,b),e().unlinkSync(a);else throw c}}function o(a,b){let c,d;k(a);let f=g().join(a,b);if(!e().existsSync(f))throw Error(`File not found: ${b}`);let h=e().statSync(f).isDirectory(),l=g().basename(b),m=(c=l.replace(/[^a-zA-Z0-9._\-\u4e00-\u9fff]/g,"_"),`${Date.now()}_${c}`),o=g().join(i(a),m);e().mkdirSync(g().dirname(o),{recursive:!0}),n(f,o,h);let p=new Date,q={id:m,originalPath:b,deletedAt:p.toISOString(),expiresAt:new Date(p.getTime()+2592e6).toISOString(),fileName:l,isDirectory:h};return d=g().join(j(a),`${q.id}.json`),e().writeFileSync(d,JSON.stringify(q,null,2),"utf-8"),q}function p(a,b,c=!1){let d=l(a,b);if(!d)throw Error("Item not found in trash");let f=g().join(i(a),b);if(!e().existsSync(f))throw Error("Trash file missing from disk");let h=g().join(a,d.originalPath);if(e().existsSync(h)&&!c)throw Object.assign(Error("Restore conflict: file exists at original location"),{code:"RESTORE_CONFLICT"});return e().mkdirSync(g().dirname(h),{recursive:!0}),d.isDirectory?c&&e().existsSync(h)&&e().rmSync(h,{recursive:!0,force:!0}):c&&e().existsSync(h)&&e().unlinkSync(h),n(f,h,d.isDirectory),m(a,b),{restoredPath:d.originalPath}}function q(a,b){let c=l(a,b);if(!c)throw Error("Item not found in trash");let d=g().join(i(a),b);if(!e().existsSync(d))throw Error("Trash file missing from disk");let f=g().dirname(c.originalPath),h=g().extname(c.fileName),j=g().basename(c.fileName,h),k=g().join(f,`${j} (copy)${h}`),o=2;for(;e().existsSync(g().join(a,k));)k=g().join(f,`${j} (copy ${o})${h}`),o++;let p=g().join(a,k);return e().mkdirSync(g().dirname(p),{recursive:!0}),n(d,p,c.isDirectory),m(a,b),{restoredPath:k}}function r(a,b){let c=g().join(i(a),b);try{e().existsSync(c)&&(e().statSync(c).isDirectory()?e().rmSync(c,{recursive:!0,force:!0}):e().unlinkSync(c))}catch{}m(a,b)}function s(a){let b;k(a);let c=j(a);try{b=e().readdirSync(c).filter(a=>a.endsWith(".json"))}catch{return[]}let d=[];for(let f of b)try{let b=JSON.parse(e().readFileSync(g().join(c,f),"utf-8")),h=g().join(i(a),b.id);if(e().existsSync(h))d.push(b);else try{e().unlinkSync(g().join(c,f))}catch{}}catch{}return d.sort((a,b)=>new Date(b.deletedAt).getTime()-new Date(a.deletedAt).getTime()),d}function t(a){let b=s(a);for(let c of b)r(a,c.id);return b.length}function u(a){let b=s(a),c=Date.now(),d=0;for(let e of b)new Date(e.expiresAt).getTime()<=c&&(r(a,e.id),d++);return d}},18451:(a,b,c)=>{c.d(b,{H5:()=>n,OV:()=>o,TA:()=>k,rt:()=>m,x3:()=>l});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(99863),i=c(20018),j=c(1160);function k(a,b){let c=(0,h.eX)(a,b);return e().readFileSync(c,"utf-8")}function l(a,b,c=""){let d=(0,h.eX)(a,b);e().mkdirSync(g().dirname(d),{recursive:!0});try{e().writeFileSync(d,c,{encoding:"utf-8",flag:"wx"})}catch(a){if(a instanceof Error&&"code"in a&&"EEXIST"===a.code)throw new i.Vt(i.tG.FILE_ALREADY_EXISTS,`File already exists: ${b}`,{filePath:b});throw a}}function m(a,b){let c=(0,h.eX)(a,b);if(!e().existsSync(c))throw new i.Vt(i.tG.FILE_NOT_FOUND,`Directory not found: ${b}`,{dirPath:b});if(!e().statSync(c).isDirectory())throw new i.Vt(i.tG.INVALID_PATH,`Not a directory: ${b}`,{dirPath:b});let d=g().basename(c),f=(0,j.e1)(d),k=g().join(c,"INSTRUCTION.md");e().existsSync(k)||e().writeFileSync(k,(0,j.GL)(f),"utf-8");let l=g().join(c,"README.md");e().existsSync(l)||e().writeFileSync(l,(0,j._l)(f),"utf-8")}function n(a,b,c){if(c.includes("/")||c.includes("\\"))throw new i.Vt(i.tG.INVALID_PATH,"Invalid filename: must not contain path separators",{newName:c});let d=g().resolve(a),f=g().resolve(g().join(d,b));(0,h.cP)(f,d);let j=g().dirname(f),k=g().join(j,c);if((0,h.cP)(k,d),e().existsSync(k))throw new i.Vt(i.tG.FILE_ALREADY_EXISTS,"A file with that name already exists",{newName:c});return e().renameSync(f,k),g().relative(d,k)}function o(a,b,c){let d=c.trim();if(!d||d.includes("/")||d.includes("\\"))throw new i.Vt(i.tG.INVALID_PATH,"Invalid space name: must not contain path separators",{newName:c});let f=b.replace(/\/+$/g,"").trim();if(!f)throw new i.Vt(i.tG.INVALID_PATH,"Space path is required",{spacePath:b});let j=g().resolve(a),k=(0,h.eX)(a,f);if(!e().existsSync(k))throw new i.Vt(i.tG.FILE_NOT_FOUND,`Space not found: ${f}`,{spacePath:f});if(!e().statSync(k).isDirectory())throw new i.Vt(i.tG.INVALID_PATH,`Not a directory: ${f}`,{spacePath:f});let l=g().dirname(k),m=g().join(l,d);if((0,h.cP)(m,j),e().existsSync(m))throw new i.Vt(i.tG.FILE_ALREADY_EXISTS,"A space with that name already exists",{newName:d});return e().renameSync(k,m),g().relative(j,m)}},20018:(a,b,c)=>{c.d(b,{Vt:()=>d,tG:()=>e}),c(20457);class d extends Error{constructor(a,b,c,d){super(b),this.code=a,this.context=c,this.userMessage=d,this.name="MindOSError"}}let e={FILE_NOT_FOUND:"FILE_NOT_FOUND",FILE_ALREADY_EXISTS:"FILE_ALREADY_EXISTS",PATH_OUTSIDE_ROOT:"PATH_OUTSIDE_ROOT",PROTECTED_FILE:"PROTECTED_FILE",INVALID_PATH:"INVALID_PATH",INVALID_RANGE:"INVALID_RANGE",HEADING_NOT_FOUND:"HEADING_NOT_FOUND",INVALID_FILE_TYPE:"INVALID_FILE_TYPE",INVALID_REQUEST:"INVALID_REQUEST",MODEL_INIT_FAILED:"MODEL_INIT_FAILED",INTERNAL_ERROR:"INTERNAL_ERROR",PERMISSION_DENIED:"PERMISSION_DENIED"}},27114:(a,b,c)=>{c.d(b,{A:()=>d});let d=new Set(["TODO.md"])},27313:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{T_:()=>h,rl:()=>g});var e=c(14270),f=a([e]);e=(f.then?(await f)():f)[0];let h={anthropic:{id:"anthropic",name:"Anthropic",nameZh:"Anthropic",defaultModel:"claude-sonnet-4-6",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://console.anthropic.com/settings/keys",category:"primary"},openai:{id:"openai",name:"OpenAI",nameZh:"OpenAI",defaultModel:"gpt-5.4",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.openai.com/api-keys",category:"primary"},google:{id:"google",name:"Google Gemini",nameZh:"Google Gemini",defaultModel:"gemini-2.5-flash",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,signupUrl:"https://aistudio.google.com/apikey",category:"primary"},groq:{id:"groq",name:"Groq",nameZh:"Groq",defaultModel:"llama-3.3-70b-versatile",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://console.groq.com/keys",category:"more"},xai:{id:"xai",name:"xAI (Grok)",nameZh:"xAI (Grok)",defaultModel:"grok-3",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},openrouter:{id:"openrouter",name:"OpenRouter",nameZh:"OpenRouter",defaultModel:"anthropic/claude-sonnet-4",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},mistral:{id:"mistral",name:"Mistral",nameZh:"Mistral",defaultModel:"mistral-large-latest",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},deepseek:{id:"deepseek",name:"DeepSeek",nameZh:"DeepSeek",defaultModel:"deepseek-chat",piProviderOverride:"openai",fixedBaseUrl:"https://api.deepseek.com/v1",supportsBaseUrl:!0,supportsThinking:!0,supportsListModels:!0,signupUrl:"https://platform.deepseek.com/api_keys",category:"more"},zai:{id:"zai",name:"ZhipuAI (GLM)",nameZh:"智谱 AI (GLM)",defaultModel:"glm-4-plus",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},"kimi-coding":{id:"kimi-coding",name:"Kimi Coding",nameZh:"Kimi Coding (月之暗面)",defaultModel:"kimi-k2-thinking",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},cerebras:{id:"cerebras",name:"Cerebras",nameZh:"Cerebras",defaultModel:"llama-4-scout-17b-16e",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!0,category:"more"},minimax:{id:"minimax",name:"MiniMax",nameZh:"MiniMax",defaultModel:"MiniMax-M1",supportsBaseUrl:!1,supportsThinking:!1,supportsListModels:!1,category:"more"},huggingface:{id:"huggingface",name:"Hugging Face",nameZh:"Hugging Face",defaultModel:"Qwen/Qwen3-235B-A22B-Thinking-2507",supportsBaseUrl:!1,supportsThinking:!0,supportsListModels:!1,category:"more"},ollama:{id:"ollama",name:"Ollama",nameZh:"Ollama (本地)",defaultModel:"llama3.2",piProviderOverride:"openai",fixedBaseUrl:"http://localhost:11434/v1",apiKeyFallback:"ollama",supportsBaseUrl:!0,supportsThinking:!1,supportsListModels:!0,signupUrl:"https://ollama.com/download",category:"more"}};function g(a){return a in h}Object.keys(h),d()}catch(a){d(a)}})},53134:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{H5:()=>r,JX:()=>l,Jh:()=>s,f:()=>p,gm:()=>m,rt:()=>t,x3:()=>q});var e=c(29021),f=c.n(e),g=c(33873),h=c.n(g);c(20018);var i=c(14432),j=c(4120);c(16081);var k=a([j]);function l(){return(0,j.kh)()}j=(k.then?(await k)():k)[0];let u=new Set([".git","node_modules","app",".next",".DS_Store"]),v=new Set([".md",".csv",".json"]),w=null,x=0,y=new i.Xs;function m(){w=null,x++,(0,i._E)(),y.invalidate()}let z=null,A=null;function n(a,b){try{let c=f().readFileSync(a,"utf-8"),d=[];for(let a of c.split("\n")){let c=a.trim();if(!(!c||c.startsWith("#"))&&(d.push(c),d.length>=b))break}return d}catch{return[]}}let B=["Define local execution rules for this directory.","(your files here)","(Describe the purpose and usage of this space.)","(Add usage guidelines for this space.)"];function o(a){try{let b=f().readFileSync(a,"utf-8");return B.some(a=>b.includes(a))}catch{return!1}}function p(){var a;let b,c;return(null!==w&&Date.now()-w.timestamp<5e3?w:(a=l(),b=function a(b,c){let d,e=c??l();try{d=f().readdirSync(b,{withFileTypes:!0})}catch{return[]}let g=[];for(let c of d){let d=h().join(b,c.name),f=h().relative(e,d);if(c.isDirectory()){if(u.has(c.name))continue;let b=a(d,e);if(b.length>0){let a=b.some(a=>"file"===a.type&&"INSTRUCTION.md"===a.name),e={name:c.name,path:f,type:"directory",children:b};a&&(e.isSpace=!0,e.spacePreview=function(a){let b=h().join(a,"INSTRUCTION.md"),c=h().join(a,"README.md");return{instructionLines:n(b,3),readmeLines:n(c,3),isTemplate:o(b)&&o(c)}}(d)),g.push(e)}}else if(c.isFile()){let a=h().extname(c.name).toLowerCase();v.has(a)&&g.push({name:c.name,path:f,type:"file",extension:a})}}return g.sort((a,b)=>a.type!==b.type?"directory"===a.type?-1:1:a.name.localeCompare(b.name)),g}(a),c=[],function a(b){for(let d of b)"file"===d.type?c.push(d.path):d.children&&a(d.children)}(b),w={tree:b,allFiles:c,timestamp:Date.now()},z||function(){let a;if(!z){try{a=l()}catch{return}try{(z=f().watch(a,{recursive:!0},(a,b)=>{!b||b.startsWith(".git")||b.includes("node_modules")||b.includes(".next")||(A&&clearTimeout(A),A=setTimeout(()=>{w=null,A=null},500))})).on("error",()=>{A&&(clearTimeout(A),A=null),z&&(z.close(),z=null)})}catch{z=null}}}(),w)).allFiles}function q(a,b=""){(0,i.x3)(l(),a,b),w=null,x++,(0,i.As)(l(),a),y.isBuilt()&&y.updateFile(l(),a)}function r(a,b){let c=(0,i.H5)(l(),a,b);return m(),c}function s(a,b){let c=(0,i.OV)(l(),a,b);return m(),c}function t(a){(0,i.rt)(l(),a),m()}d()}catch(a){d(a)}})},61374:(a,b,c)=>{c.d(b,{gG:()=>d});function d(a){if(!a||"object"!=typeof a||Array.isArray(a))return;let b={},c=!1;for(let[d,e]of Object.entries(a)){if(!e||"object"!=typeof e||Array.isArray(e))continue;let a={};if("string"==typeof e.command&&e.command.trim()&&(a.command=e.command.trim()),Array.isArray(e.args)&&(a.args=e.args.filter(a=>"string"==typeof a)),e.env&&"object"==typeof e.env&&!Array.isArray(e.env)){let b={};for(let[a,c]of Object.entries(e.env))"string"==typeof c&&(b[a]=c);Object.keys(b).length>0&&(a.env=b)}"boolean"==typeof e.enabled&&(a.enabled=e.enabled),Object.keys(a).length>0&&(b[d]=a,c=!0)}return c?b:void 0}},85224:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{Ar:()=>v,Bn:()=>E,Dg:()=>B,EG:()=>C,FZ:()=>A,GB:()=>H,NN:()=>F,VO:()=>D,X3:()=>r,Ye:()=>y,bC:()=>G,f:()=>t,iJ:()=>s,jW:()=>u,ku:()=>x,pG:()=>w,pX:()=>z});var e=c(95349),f=c(29021),g=c.n(f),h=c(33873),i=c.n(h),j=c(53134),k=c(16081),l=c(15872),m=c(1160),n=c(42650),o=c(27114),p=c(89337),q=a([j]);async function r(a,b){try{let c=b.trim();if(!c)return{success:!1,error:"File name is required"};let d=c.endsWith(".md")||c.endsWith(".csv")?c:`${c}.md`,e=a?`${a}/${d}`:d;return(0,j.x3)(e),(0,n.revalidatePath)("/","layout"),{success:!0,filePath:e}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to create file"}}}async function s(a){try{let b=i().posix.basename(a);if(!a.includes("/")&&o.A.has(b))return{success:!1,error:`"${b}" is protected and cannot be deleted`};let c=(0,k.F0)((0,j.JX)(),a);return(0,j.gm)(),(0,n.revalidatePath)("/","layout"),{success:!0,trashId:c.id}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete file"}}}async function t(a,b){try{let c=(0,j.H5)(a,b);return(0,n.revalidatePath)("/","layout"),{success:!0,newPath:c}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to rename file"}}}async function u(a){try{return(0,j.rt)(a),(0,n.revalidatePath)("/","layout"),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to convert to space"}}}async function v(a){try{let b=(0,k.F0)((0,j.JX)(),a);return(0,j.gm)(),(0,n.revalidatePath)("/","layout"),{success:!0,trashId:b.id}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete folder"}}}async function w(a,b){try{let c=(0,j.Jh)(a,b);return(0,n.revalidatePath)("/","layout"),{success:!0,newPath:c}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to rename space"}}}async function x(a){try{let b=(0,k.F0)((0,j.JX)(),a);return(0,j.gm)(),(0,n.revalidatePath)("/","layout"),{success:!0,trashId:b.id}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete space"}}}async function y(a){try{return(0,k.Lr)((0,j.JX)(),a,!1),(0,j.gm)(),(0,n.revalidatePath)("/","layout"),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Undo failed"}}}async function z(a,b,c=""){try{let{path:d}=(0,l._)((0,j.JX)(),a,b,c);return(0,j.gm)(),(0,n.revalidatePath)("/","layout"),{success:!0,path:d}}catch(b){let a=b instanceof Error?b.message:"Failed to create space";if(a.includes("already exists"))return{success:!1,error:"A space with this name already exists"};return{success:!1,error:a}}}async function A(a,b,c){try{let d=(0,j.JX)(),e=i().resolve(d,a);if(!e.startsWith(d))return{success:!1,error:"Invalid path"};let f=i().join(e,"README.md"),h=i().join(e,"INSTRUCTION.md"),k=(0,l.c)(a,b,c);g().writeFileSync(f,k,"utf-8");let o=(0,m.e1)(b);return g().writeFileSync(h,(0,m.GL)(o),"utf-8"),(0,j.gm)(),(0,n.revalidatePath)("/","layout"),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to revert"}}}async function B(){return{files:(0,j.f)().filter(a=>i().basename(a).startsWith("\uD83E\uDDEA_example_"))}}async function C(){try{let{files:a}=await B();if(0===a.length)return{success:!0,deleted:0};let b=(0,j.JX)();for(let c of a){let a=i().resolve(b,c);a.startsWith(b)&&g().existsSync(a)&&g().unlinkSync(a)}for(let c of[...new Set(a.map(a=>i().dirname(i().resolve(b,a))))].sort((a,b)=>b.length-a.length))try{if(c.startsWith(b)&&c!==b){let a=g().readdirSync(c);0===a.length&&g().rmdirSync(c)}}catch{}return(0,j.gm)(),(0,n.revalidatePath)("/","layout"),{success:!0,deleted:a.length}}catch(a){return{success:!1,deleted:0,error:a instanceof Error?a.message:"Failed to cleanup"}}}async function D(a){let b=(0,j.f)(),c=a.endsWith("/")?a:a+"/";return b.filter(a=>a.startsWith(c))}async function E(){return(0,k.JI)((0,j.JX)()),(0,k.hQ)((0,j.JX)())}async function F(a,b="restore"){try{let c,d=(0,j.JX)();return c="copy"===b?(0,k.kz)(d,a):(0,k.Lr)(d,a,"overwrite"===b),(0,j.gm)(),(0,n.revalidatePath)("/","layout"),{success:!0,restoredPath:c.restoredPath}}catch(a){if("RESTORE_CONFLICT"===a.code)return{success:!1,error:a.message,conflict:!0};return{success:!1,error:a.message??"Failed to restore"}}}async function G(a){try{return(0,k.vn)((0,j.JX)(),a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete"}}}async function H(){try{let a=(0,k.YN)((0,j.JX)());return{success:!0,count:a}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to empty trash"}}}j=(q.then?(await q)():q)[0],(0,p.D)([r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H]),(0,e.A)(r,"601dd73f1d6d1bc885b62d96c2f93e5bf261528cc1",null),(0,e.A)(s,"40b7879972d1b47af01471724c9e1aa4f9ae0bcdf7",null),(0,e.A)(t,"6093e141cd7cd9c1302d99e3fcfa90f0cca62cfeb0",null),(0,e.A)(u,"40f253c12bb85417bff9e1c0a1a1a71d1ffb256fd3",null),(0,e.A)(v,"400a19b89c8d2454085c3ff6281bc0bccfddd153a0",null),(0,e.A)(w,"601d39b19f8a058f5cc761dccfc5895c9bfc87e8c9",null),(0,e.A)(x,"40042bc96ad01f402f701c1952d8d496632de61007",null),(0,e.A)(y,"40765218403d9d31f3dbfafde44c35a71ed84c0f12",null),(0,e.A)(z,"706eac126bb5c55917b1372253344ae9971c9c5384",null),(0,e.A)(A,"706ce1570e2a5adbf21306f0143589aed899e1f21b",null),(0,e.A)(B,"00bab7c546feac081f859f47c33f5810847519c1e8",null),(0,e.A)(C,"00e67552432db57f703bb329ee7a384995e7dfe40f",null),(0,e.A)(D,"40a53abb964f610b3bf344990e7415f300f4147413",null),(0,e.A)(E,"00184347a7cbbfc696a74604b6bb38bd3e45dd25de",null),(0,e.A)(F,"60591f3430c164d0438b6c7417dc8317b58af8ab98",null),(0,e.A)(G,"4068fcffc40fc3860b75717c8269da5750b38a2b80",null),(0,e.A)(H,"0045e6591079a142a0ed89b5abf66146dee51d141b",null),d()}catch(a){d(a)}})},99863:(a,b,c)=>{c.d(b,{cP:()=>g,eX:()=>h});var d=c(33873),e=c.n(d),f=c(20018);function g(a,b){if(!a.startsWith(b+e().sep)&&a!==b)throw new f.Vt(f.tG.PATH_OUTSIDE_ROOT,"Access denied: path outside MIND_ROOT",{resolved:a,root:b})}function h(a,b){let c=e().resolve(a),d=e().resolve(e().join(c,b));return g(d,c),d}}};
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1227],{1934:(e,t,r)=>{"use strict";r.d(t,{v:()=>i});var s=r(12115);let a=e=>{let t,r=new Set,s=(e,s)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=s?s:"object"!=typeof a||null===a)?a:Object.assign({},t,a),r.forEach(r=>r(t,e))}},a=()=>t,l={setState:s,getState:a,getInitialState:()=>i,subscribe:e=>(r.add(e),()=>r.delete(e))},i=t=e(s,a,l);return l},l=e=>{let t=e?a(e):a,r=e=>(function(e,t=e=>e){let r=s.useSyncExternalStore(e.subscribe,s.useCallback(()=>t(e.getState()),[e,t]),s.useCallback(()=>t(e.getInitialState()),[e,t]));return s.useDebugValue(r),r})(t,e);return Object.assign(r,t),r},i=e=>e?l(e):l},6296:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},9199:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]])},9339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s={callServer:function(){return l.callServer},createServerReference:function(){return n.createServerReference},findSourceMapURL:function(){return i.findSourceMapURL}};for(var a in s)Object.defineProperty(t,a,{enumerable:!0,get:s[a]});let l=r(77304),i=r(4060),n=r(77197)},33078:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("table",[["path",{d:"M12 3v18",key:"108xh3"}],["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M3 15h18",key:"5xshup"}]])},33210:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},38798:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]])},41585:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},48368:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]])},51914:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},54839:(e,t,r)=>{Promise.resolve().then(r.bind(r,96620))},68459:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]])},73321:(e,t,r)=>{"use strict";var s=r(74645);r.o(s,"usePathname")&&r.d(t,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(t,{useRouter:function(){return s.useRouter}}),r.o(s,"useSearchParams")&&r.d(t,{useSearchParams:function(){return s.useSearchParams}})},90425:(e,t,r)=>{"use strict";r.d(t,{A:()=>d});var s=r(12115);let a=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),l=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let n=(0,s.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:l,className:n="",children:d,iconNode:o,...c},u)=>(0,s.createElement)("svg",{ref:u,...i,width:t,height:t,stroke:e,strokeWidth:l?24*Number(r)/Number(t):r,className:a("lucide",n),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(c)&&{"aria-hidden":"true"},...c},[...o.map(([e,t])=>(0,s.createElement)(e,t)),...Array.isArray(d)?d:[d]])),d=(e,t)=>{let r=(0,s.forwardRef)(({className:r,...i},d)=>(0,s.createElement)(n,{ref:d,iconNode:t,className:a(`lucide-${l(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,r),...i}));return r.displayName=l(e),r}},96620:(e,t,r)=>{"use strict";r.d(t,{default:()=>j});var s=r(95155),a=r(12115),l=r(68459),i=r(38798),n=r(33078),d=r(48368),o=r(41585),c=r(6296),u=r(9199),m=r(33210),h=r(73321),x=r(91053),f=r(9339);let p=(0,f.createServerReference)("60591f3430c164d0438b6c7417dc8317b58af8ab98",f.callServer,void 0,f.findSourceMapURL,"restoreFromTrashAction"),b=(0,f.createServerReference)("4068fcffc40fc3860b75717c8269da5750b38a2b80",f.callServer,void 0,f.findSourceMapURL,"permanentlyDeleteAction"),v=(0,f.createServerReference)("0045e6591079a142a0ed89b5abf66146dee51d141b",f.callServer,void 0,f.findSourceMapURL,"emptyTrashAction");var y=r(22721),g=r(4235);function j({initialItems:e}){let{t}=(0,x.Y)(),r=(0,h.useRouter)(),[f,j]=(0,a.useState)(e),[N,k]=(0,a.useTransition)(),[A,w]=(0,a.useState)(!1),[M,C]=(0,a.useState)(null),[S,R]=(0,a.useState)(null),[z,P]=(0,a.useState)(null),L=(0,a.useCallback)(async e=>{P(e.id);try{let s=await p(e.id,"restore");s.success?(j(t=>t.filter(t=>t.id!==e.id)),g.oR.success(t.trash.restored),r.refresh()):s.conflict?R(e):g.oR.error(s.error??t.trash.restoreFailed)}finally{P(null)}},[t,r]),T=(0,a.useCallback)(async e=>{if(!S)return;let s=await p(S.id,e);s.success?(j(e=>e.filter(e=>e.id!==S.id)),g.oR.success(t.trash.restored),R(null),r.refresh()):g.oR.error(s.error??t.trash.restoreFailed)},[S,t,r]),_=(0,a.useCallback)(async()=>{if(!M)return;let e=await b(M.id);e.success?(j(e=>e.filter(e=>e.id!==M.id)),g.oR.success(t.trash.deleted)):g.oR.error(e.error??t.trash.deleteFailed),C(null)},[M,t]),E=(0,a.useCallback)(async()=>{k(async()=>{let e=await v();e.success?(j([]),g.oR.success(t.trash.emptied(e.count??0))):g.oR.error(e.error??t.trash.emptyFailed),w(!1)})},[t]);return(0,s.jsxs)("div",{className:"min-h-screen",children:[(0,s.jsx)("div",{className:"px-4 md:px-6 pt-6 md:pt-8",children:(0,s.jsx)("div",{className:"content-width xl:mr-[220px] rounded-xl border border-border bg-card px-4 py-3 md:px-5 md:py-4",children:(0,s.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium text-foreground font-display",children:[(0,s.jsx)(l.A,{size:15}),t.trash.title]}),(0,s.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:t.trash.subtitle}),f.length>0&&(0,s.jsx)("div",{className:"mt-2 text-xs text-muted-foreground",children:t.trash.itemCount(f.length)})]}),f.length>0&&(0,s.jsx)("button",{type:"button",onClick:()=>w(!0),disabled:N,className:"px-2.5 py-1.5 rounded-md text-xs font-medium bg-error/10 text-error hover:bg-error/20 transition-colors disabled:opacity-50",children:t.trash.emptyTrash})]})})}),(0,s.jsx)("div",{className:"px-4 md:px-6 py-4 md:py-6",children:(0,s.jsx)("div",{className:"content-width xl:mr-[220px]",children:0===f.length?(0,s.jsxs)("div",{className:"rounded-xl border border-dashed border-border bg-card p-12 text-center",children:[(0,s.jsx)(l.A,{size:32,className:"mx-auto text-muted-foreground/30 mb-3"}),(0,s.jsx)("p",{className:"text-sm text-muted-foreground font-display",children:t.trash.empty}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground/60 mt-1",children:t.trash.emptySubtext})]}):(0,s.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3",children:f.map(e=>{let r=Math.max(0,Math.ceil((new Date(e.expiresAt).getTime()-Date.now())/864e5)),a=r<=3;return(0,s.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4 flex flex-col gap-3 hover:border-border/80 transition-colors",children:[(0,s.jsxs)("div",{className:"flex items-start gap-3 min-w-0",children:[(0,s.jsx)("div",{className:"w-9 h-9 rounded-lg bg-muted/50 flex items-center justify-center shrink-0",children:e.isDirectory?(0,s.jsx)(i.A,{size:16,className:"text-muted-foreground"}):e.fileName.endsWith(".csv")?(0,s.jsx)(n.A,{size:16,className:"text-success"}):(0,s.jsx)(d.A,{size:16,className:"text-muted-foreground"})}),(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("p",{className:"text-sm font-medium text-foreground truncate",title:e.fileName,children:e.fileName}),(0,s.jsxs)("p",{className:"text-xs text-muted-foreground truncate mt-0.5",title:e.originalPath,children:[t.trash.from,": ",e.originalPath.split("/").slice(0,-1).join("/")||"/"]})]})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,s.jsx)("span",{className:"text-2xs text-muted-foreground",children:t.trash.deletedAgo(function(e,t){let r=Math.floor((Date.now()-new Date(e).getTime())/6e4);if(r<1)return t.justNow??"just now";if(r<60)return t.minutesAgo?.(r)??`${r}m ago`;let s=Math.floor(r/60);if(s<24)return t.hoursAgo?.(s)??`${s}h ago`;let a=Math.floor(s/24);return t.daysAgo?.(a)??`${a}d ago`}(e.deletedAt,t.trash))}),(0,s.jsxs)("span",{className:`text-2xs ${a?"text-error":"text-muted-foreground/60"}`,children:[a&&(0,s.jsx)(o.A,{size:9,className:"inline mr-0.5"}),t.trash.expiresIn(r)]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsxs)("button",{type:"button",onClick:()=>L(e),disabled:z===e.id,className:"inline-flex items-center gap-1 px-2 py-1 rounded-md text-xs font-medium bg-success/10 text-success hover:bg-success/20 transition-colors disabled:opacity-50",children:[z===e.id?(0,s.jsx)(c.A,{size:11,className:"animate-spin"}):(0,s.jsx)(u.A,{size:11}),t.trash.restore]}),(0,s.jsx)("button",{type:"button",onClick:()=>C(e),className:"p-1 rounded-md text-muted-foreground hover:text-error hover:bg-error/10 transition-colors",title:t.trash.deletePermanently,children:(0,s.jsx)(m.A,{size:13})})]})]})]},e.id)})})})}),(0,s.jsx)(y.TM,{open:A,title:t.trash.emptyTrash,message:t.trash.emptyTrashConfirm,confirmLabel:t.trash.emptyTrash,cancelLabel:t.trash.cancel??"Cancel",onConfirm:()=>void E(),onCancel:()=>w(!1),variant:"destructive"}),(0,s.jsx)(y.TM,{open:!!M,title:t.trash.deletePermanently,message:M?t.trash.deletePermanentlyConfirm(M.fileName):"",confirmLabel:t.trash.deletePermanently,cancelLabel:t.trash.cancel??"Cancel",onConfirm:()=>void _(),onCancel:()=>C(null),variant:"destructive"}),S&&(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm",children:(0,s.jsxs)("div",{className:"bg-card border border-border rounded-xl shadow-xl max-w-sm w-full mx-4 p-5",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,s.jsx)(o.A,{size:16,className:"text-[var(--amber)]"}),(0,s.jsx)("h3",{className:"text-sm font-semibold font-display",children:t.trash.restoreConflict})]}),(0,s.jsxs)("p",{className:"text-xs text-muted-foreground mb-4",children:['"',S.fileName,'" — ',S.originalPath]}),(0,s.jsxs)("div",{className:"flex items-center gap-2 justify-end",children:[(0,s.jsx)("button",{type:"button",onClick:()=>R(null),className:"px-3 py-1.5 rounded-md text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:t.trash.cancel??"Cancel"}),(0,s.jsx)("button",{type:"button",onClick:()=>void T("copy"),className:"px-3 py-1.5 rounded-md text-xs font-medium bg-muted text-foreground hover:bg-muted/80 transition-colors",children:t.trash.saveAsCopy}),(0,s.jsx)("button",{type:"button",onClick:()=>void T("overwrite"),className:"px-3 py-1.5 rounded-md text-xs font-medium bg-[var(--amber-dim)] text-[var(--amber-text)] hover:opacity-80 transition-colors",children:t.trash.overwrite})]})]})})]})}}},e=>{e.O(0,[1053,7035,8441,3794,7358],()=>e(e.s=54839)),_N_E=e.O()}]);
@@ -1,12 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3637,9508],{6962:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]])},7834:(e,t,r)=>{"use strict";async function s(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return!1}}r.d(t,{l:()=>s})},10377:(e,t,r)=>{"use strict";r.d(t,{Z:()=>h});var s=r(12115);let n="mindos-pinned-files",a="mindos:pins-changed";function o(){try{let e=localStorage.getItem(n);return e?JSON.parse(e):[]}catch{return[]}}function l(){return c}let i=[];function d(){return i}let c=[],u=!1;function m(){u||(c=o(),u=!0)}function x(e){m();let t=t=>{t.key===n&&(c=o(),e())},r=()=>{c=o(),e()};return window.addEventListener("storage",t),window.addEventListener(a,r),()=>{window.removeEventListener("storage",t),window.removeEventListener(a,r)}}function p(e){c=e;try{localStorage.setItem(n,JSON.stringify(e))}catch{}window.dispatchEvent(new Event(a))}function h(){m();let e=(0,s.useSyncExternalStore)(x,l,d),t=(0,s.useCallback)(t=>e.includes(t),[e]),r=(0,s.useCallback)(e=>{let t=o(),r=t.indexOf(e);r>=0?t.splice(r,1):t.unshift(e),p(t)},[]);return{pinnedFiles:e,isPinned:t,togglePin:r,reorderPins:(0,s.useCallback)(e=>{p(e)},[]),removePin:(0,s.useCallback)(e=>{p(o().filter(t=>t!==e))},[])}}},13398:(e,t,r)=>{"use strict";r.d(t,{Y:()=>n});var s=r(9339);let n=(0,s.createServerReference)("40765218403d9d31f3dbfafde44c35a71ed84c0f12",s.callServer,void 0,s.findSourceMapURL,"undoDeleteAction")},21362:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},22356:(e,t,r)=>{"use strict";r.d(t,{h:()=>s,n:()=>n});class s extends Error{constructor(e,t,r){super(e),this.name="ApiError",this.status=t,this.code=r}}async function n(e,t={}){let r,a,o,{timeout:l=3e4,signal:i,...d}=t;if((l>0||i)&&(r=new AbortController),l>0&&r&&(a=setTimeout(()=>{r.abort(Error(`Request timed out after ${Math.round(l/1e3)}s`))},l)),i&&r)if(i.aborted)r.abort();else{let e=()=>r?.abort();i.addEventListener("abort",e,{once:!0}),o=()=>{i.removeEventListener("abort",e)}}let c=r?.signal??i;try{let t=await fetch(e,{...d,signal:c});if(!t.ok){let e,r=`Request failed (${t.status})`;try{let s=await t.json();s?.error?.code&&s?.error?.message?(r=s.error.message,e=s.error.code):s?.error&&(r="string"==typeof s.error?s.error:s.error.message??r)}catch{}throw new s(r,t.status,e)}return await t.json()}finally{a&&clearTimeout(a),o&&o()}}},33210:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},34367:(e,t,r)=>{"use strict";r.d(t,{default:()=>I});var s=r(95155),n=r(12115),a=r(98500),o=r.n(a),l=r(38798),i=r(33078),d=r(48368),c=r(42129),u=r(997),m=r(97810),x=r(67635),p=r(41585),h=r(49387),f=r(89363),g=r(33210),v=r(93631),b=r(37595);let y=(0,r(90425).A)("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]);var j=r(44406),w=r(91337),N=r(82125),k=r(91053);async function C(e){try{await navigator.clipboard.writeText(e)}catch{}}function A({node:e}){return"directory"===e.type?(0,s.jsx)(l.A,{size:16,className:"text-yellow-400 shrink-0"}):".csv"===e.extension?(0,s.jsx)(i.A,{size:16,className:"text-success shrink-0"}):(0,s.jsx)(d.A,{size:16,className:"text-muted-foreground shrink-0"})}function E({node:e}){return"directory"===e.type?(0,s.jsx)(c.A,{size:28,className:"text-yellow-400"}):".csv"===e.extension?(0,s.jsx)(i.A,{size:28,className:"text-success"}):(0,s.jsx)(d.A,{size:28,className:"text-muted-foreground"})}let S="mindos-dir-view",z="show-hidden-files";function M(e){let t=t=>{t.key===z&&e()},r=()=>e();return window.addEventListener("storage",t),window.addEventListener("mindos:hidden-files-changed",r),()=>{window.removeEventListener("storage",t),window.removeEventListener("mindos:hidden-files-changed",r)}}function L(){return"true"===localStorage.getItem(z)}function T({icon:e,title:t,lines:r,viewAllHref:n,viewAllLabel:a}){return 0===r.length?null:(0,s.jsxs)("div",{className:"bg-muted/30 border border-border/40 rounded-lg px-4 py-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5 mb-2",children:[e,(0,s.jsx)("span",{className:"text-sm font-medium text-muted-foreground",children:t})]}),(0,s.jsx)("div",{className:"space-y-1",children:r.map((e,t)=>(0,s.jsxs)("p",{className:"text-sm text-muted-foreground/80 leading-relaxed",suppressHydrationWarning:!0,children:["\xb7 ",e]},t))}),(0,s.jsx)("div",{className:"flex justify-end mt-2",children:(0,s.jsx)(o(),{href:n,className:"text-xs hover:underline transition-colors text-[var(--amber)]",children:a})})]})}function R({preview:e,dirPath:t}){let{t:r}=(0,k.Y)(),n=e.instructionLines.length>0,a=e.readmeLines.length>0;return n||a?(0,s.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 mb-6",children:[n&&(0,s.jsx)(T,{icon:(0,s.jsx)(u.A,{size:14,className:"text-muted-foreground shrink-0"}),title:r.fileTree.rules,lines:e.instructionLines,viewAllHref:`/view/${(0,w.O0)(`${t}/INSTRUCTION.md`)}`,viewAllLabel:r.fileTree.viewAll}),a&&(0,s.jsx)(T,{icon:(0,s.jsx)(m.A,{size:14,className:"text-muted-foreground shrink-0"}),title:r.fileTree.about,lines:e.readmeLines,viewAllHref:`/view/${(0,w.O0)(`${t}/README.md`)}`,viewAllLabel:r.fileTree.viewAll})]}):null}function P({x:e,y:t,path:r,label:a,onClose:o}){let l=(0,n.useRef)(null),{t:i}=(0,k.Y)();(0,n.useEffect)(()=>{let e=e=>{l.current&&!l.current.contains(e.target)&&o()},t=e=>{"Escape"===e.key&&o()};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[o]);let d=Math.min(e,window.innerWidth-200),c=Math.min(t,window.innerHeight-60);return(0,s.jsx)("div",{ref:l,className:"fixed z-50 min-w-[160px] bg-card border border-border rounded-lg shadow-lg py-1",style:{top:c,left:d},children:(0,s.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-1.5 text-sm text-foreground hover:bg-muted transition-colors text-left",onClick:()=>{C(r),o()},children:[(0,s.jsx)(x.A,{size:14,className:"shrink-0"})," ",i.fileTree.copyPath]})})}function $({dirPath:e}){let{t}=(0,k.Y)(),r="mindos-space-uninit-dismissed:"+e,[a,l]=(0,n.useState)(!1);return((0,n.useEffect)(()=>{"1"===localStorage.getItem(r)&&l(!0)},[r]),a)?null:(0,s.jsx)("div",{className:"mb-4 rounded-lg border border-error/40 bg-error/5 px-4 py-3",children:(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)(p.A,{size:18,className:"text-error shrink-0 mt-0.5"}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsx)("p",{className:"text-sm font-medium text-foreground",children:t.dirView.uninitTitle}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground mt-1 leading-relaxed",children:t.dirView.uninitDesc}),(0,s.jsxs)("div",{className:"flex items-center gap-3 mt-2.5",children:[(0,s.jsxs)(o(),{href:`/view/${(0,w.O0)(`${e}/README.md`)}`,className:"inline-flex items-center gap-1 text-xs text-[var(--amber)] hover:underline",children:[(0,s.jsx)(h.A,{size:12})," ",t.dirView.uninitEditReadme]}),(0,s.jsxs)(o(),{href:`/view/${(0,w.O0)(`${e}/INSTRUCTION.md`)}`,className:"inline-flex items-center gap-1 text-xs text-[var(--amber)] hover:underline",children:[(0,s.jsx)(h.A,{size:12})," ",t.dirView.uninitEditInstruction]}),(0,s.jsxs)(o(),{href:"/settings",className:"inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",children:[(0,s.jsx)(f.A,{size:12})," ",t.dirView.uninitSettings]})]})]}),(0,s.jsx)("button",{onClick:()=>{localStorage.setItem(r,"1"),l(!0)},className:"text-muted-foreground hover:text-foreground transition-colors p-0.5 shrink-0","aria-label":"Dismiss",children:(0,s.jsx)(g.A,{size:14})})]})})}function I({dirPath:e,entries:t,spacePreview:r}){let[a,l]=[(0,n.useSyncExternalStore)(e=>{let t=()=>e();return window.addEventListener("mindos-dir-view-change",t),()=>window.removeEventListener("mindos-dir-view-change",t)},()=>{let e=localStorage.getItem(S);return"list"===e||"grid"===e?e:"grid"},()=>"grid"),e=>{localStorage.setItem(S,e),window.dispatchEvent(new Event("mindos-dir-view-change"))}],i=(0,n.useSyncExternalStore)(M,L,()=>!1),{t:d}=(0,k.Y)(),u=e=>(0,w.KW)(e,d.home.relativeTime),[m,x]=(0,n.useState)(null),p=(0,n.useCallback)((e,t)=>{e.preventDefault(),e.stopPropagation(),x({x:e.clientX,y:e.clientY,path:t})},[]),h=(0,n.useMemo)(()=>i?t:t.filter(e=>"file"!==e.type||!N.C.has(e.name)),[t,i]),f=(0,n.useMemo)(()=>{let e=new Map;for(let t of h)e.set(t.path,function e(t){return"file"===t.type?1:(t.children||[]).reduce((t,r)=>t+e(r),0)}(t));return e},[h]);return(0,s.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,s.jsx)("div",{className:"sticky top-[52px] md:top-0 z-20 border-b border-border px-4 md:px-6 py-2.5 bg-background",children:(0,s.jsxs)("div",{className:"max-w-[860px] mx-auto flex items-center justify-between gap-2",children:[(0,s.jsx)("div",{className:"min-w-0 flex-1",children:(0,s.jsx)(j.A,{filePath:e})}),(0,s.jsxs)("div",{className:"flex items-center gap-2 shrink-0",children:[(0,s.jsxs)(o(),{href:`/view/${(0,w.O0)(e?`${e}/Untitled.md`:"Untitled.md")}`,className:"flex items-center gap-1.5 px-2.5 py-1.5 text-xs rounded-lg transition-colors text-muted-foreground hover:text-foreground hover:bg-muted",children:[(0,s.jsx)(v.A,{size:13}),(0,s.jsx)("span",{className:"hidden sm:inline",children:d.dirView.newFile})]}),(0,s.jsxs)("div",{className:"flex items-center gap-1 p-1 bg-muted rounded-lg",children:[(0,s.jsx)("button",{onClick:()=>l("grid"),className:`p-1.5 rounded transition-colors ${"grid"===a?"bg-card text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:d.dirView.gridView,children:(0,s.jsx)(b.A,{size:14})}),(0,s.jsx)("button",{onClick:()=>l("list"),className:`p-1.5 rounded transition-colors ${"list"===a?"bg-card text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,title:d.dirView.listView,children:(0,s.jsx)(y,{size:14})})]})]})]})}),(0,s.jsx)("div",{className:"flex-1 px-4 md:px-6 py-6",children:(0,s.jsxs)("div",{className:"max-w-[860px] mx-auto",children:[r?.isTemplate&&(0,s.jsx)($,{dirPath:e}),r&&!r.isTemplate&&(0,s.jsx)(R,{preview:r,dirPath:e}),0===h.length?(0,s.jsx)("p",{className:"text-muted-foreground text-sm",children:d.dirView.emptyFolder}):"grid"===a?(0,s.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 xl:grid-cols-5 gap-3",children:h.map(e=>(0,s.jsxs)(o(),{href:`/view/${(0,w.O0)(e.path)}`,onContextMenu:t=>p(t,e.path),className:"directory"===e.type?"flex flex-col items-center gap-1.5 p-3 rounded-xl border border-border bg-card hover:bg-accent hover:border-border/80 transition-all duration-100 text-center":"flex flex-col items-center gap-2 p-4 rounded-xl border border-border bg-card hover:bg-accent hover:border-border/80 transition-all duration-100 text-center",children:["directory"===e.type?(0,s.jsx)(c.A,{size:22,className:"text-yellow-400"}):(0,s.jsx)(E,{node:e}),(0,s.jsx)("span",{className:"text-xs text-foreground leading-snug line-clamp-2 w-full",title:e.name,suppressHydrationWarning:!0,children:e.name}),"directory"===e.type&&(0,s.jsx)("span",{className:"text-2xs text-muted-foreground",children:d.dirView.fileCount(f.get(e.path)??0)}),"file"===e.type&&e.mtime&&(0,s.jsx)("span",{className:"text-2xs text-muted-foreground font-display",suppressHydrationWarning:!0,children:u(e.mtime)})]},e.path))}):(0,s.jsx)("div",{className:"flex flex-col divide-y divide-border border border-border rounded-xl overflow-hidden",children:h.map(e=>(0,s.jsxs)(o(),{href:`/view/${(0,w.O0)(e.path)}`,onContextMenu:t=>p(t,e.path),className:"flex items-center gap-3 px-4 py-3 bg-card hover:bg-accent transition-colors duration-100",children:[(0,s.jsx)(A,{node:e}),(0,s.jsx)("span",{className:"flex-1 text-sm text-foreground truncate",title:e.name,suppressHydrationWarning:!0,children:e.name}),"directory"===e.type?(0,s.jsx)("span",{className:"text-xs text-muted-foreground shrink-0",children:d.dirView.fileCount(f.get(e.path)??0)}):e.mtime?(0,s.jsx)("span",{className:"text-xs text-muted-foreground shrink-0 tabular-nums font-display",suppressHydrationWarning:!0,children:u(e.mtime)}):null]},e.path))})]})}),m&&(0,s.jsx)(P,{x:m.x,y:m.y,path:m.path,label:d.fileTree.copyPath,onClose:()=>x(null)})]})}},36506:(e,t,r)=>{"use strict";r.d(t,{default:()=>ef});var s=r(95155),n=r(12115),a=r(73321),o=r(80723),l=r(95057),i=r(90425);let d=(0,i.A)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]),c=(0,i.A)("pen-line",[["path",{d:"M13 21h8",key:"1jsn5i"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);var u=r(33210),m=r(6296),x=r(55243),p=r(94290),h=r(60285),f=r(48368);let g=(0,i.A)("share-2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]]);var v=r(6962),b=r(67635),y=r(49387),j=r(68459),w=r(63637);function N({content:e}){let t=(0,n.useMemo)(()=>{try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}},[e]);return(0,s.jsx)("pre",{className:"rounded-xl border border-border bg-card px-4 py-3 overflow-x-auto text-sm leading-relaxed font-display",children:(0,s.jsx)("code",{suppressHydrationWarning:!0,children:t})})}var k=r(59386),C=r.n(k),A=r(9921),E=r(66088),S=r(56563),z=r(51914);function M(e,t){return C().unparse([e,...t])}function L({value:e,editable:t,onCommit:r}){let[a,o]=(0,n.useState)(!1),[l,i]=(0,n.useState)(e),d=(0,n.useRef)(null);function c(){o(!1),l!==e&&r(l)}return((0,n.useEffect)(()=>{a&&d.current?.select()},[a]),a)?(0,s.jsx)("input",{ref:d,value:l,onChange:e=>i(e.target.value),onBlur:c,onKeyDown:t=>{"Enter"===t.key&&c(),"Escape"===t.key&&(i(e),o(!1))},className:"w-full bg-transparent outline-none text-sm",style:{color:"var(--foreground)",borderBottom:"1px solid var(--amber)",minWidth:60},onClick:e=>e.stopPropagation()}):(0,s.jsx)("div",{className:`truncate text-sm ${t?"cursor-text":""}`,style:{color:"var(--foreground)",minWidth:60},onClick:t?function(){t&&(i(e),o(!0))}:void 0,title:e,children:e||(0,s.jsx)("span",{style:{color:"var(--muted-foreground)",opacity:.4},children:"—"})})}function T({headers:e,onAdd:t,onCancel:r}){let[a,o]=(0,n.useState)(()=>Array(e.length).fill("")),l=(0,n.useRef)(null);return(0,s.jsxs)("tr",{style:{background:"color-mix(in srgb, var(--amber) 6%, transparent)",borderTop:"1px solid var(--amber)"},children:[e.map((e,n)=>(0,s.jsx)("td",{className:"px-3 py-2",style:{borderBottom:"1px solid var(--border)"},children:(0,s.jsx)("input",{ref:0===n?l:void 0,autoFocus:0===n,value:a[n],onChange:e=>{var t;return t=e.target.value,void o(e=>{let r=[...e];return r[n]=t,r})},onKeyDown:e=>{"Enter"===e.key&&t(a),"Escape"===e.key&&r()},placeholder:e,className:"w-full bg-transparent outline-none text-sm placeholder:opacity-30",style:{color:"var(--foreground)",borderBottom:"1px solid var(--border)"}})},n)),(0,s.jsx)("td",{className:"px-2 py-2",style:{borderBottom:"1px solid var(--border)"}})]})}function R({content:e,appendAction:t,saveAction:r}){let[a,o]=(0,n.useState)(e),[l,i]=(0,n.useState)(null),[d,c]=(0,n.useState)(null),[u,x]=(0,n.useState)(!1),[p,h]=(0,n.useState)(!1),f=(0,n.useMemo)(()=>C().parse(a,{skipEmptyLines:!0}).data,[a]),g=f[0]||[],v=f.slice(1),b=(0,n.useMemo)(()=>null===l||null===d?v:[...v].sort((e,t)=>{let r=e[l]??"",s=t[l]??"",n=parseFloat(r),a=parseFloat(s);return isNaN(n)||isNaN(a)?"asc"===d?r.localeCompare(s):s.localeCompare(r):"asc"===d?n-a:a-n}),[v,l,d]),y=(0,n.useCallback)(async(e,t,s)=>{if(!r)return;let n=M(g,v.map(r=>r===b[e]?r.map((e,r)=>r===t?s:e):r));o(n),h(!0);try{await r(n)}catch(e){console.error("[CsvView] Cell save failed:",e)}finally{h(!1)}},[r,v,b,g]),w=(0,n.useCallback)(async e=>{if(!r||p)return;let t=b[e],s=M(g,v.filter(e=>e!==t));o(s),h(!0);try{await r(s)}catch(e){console.error("[CsvView] Row delete failed:",e)}finally{h(!1)}},[r,v,b,g,p]),N=(0,n.useCallback)(async e=>{h(!0);try{if(t){let r=await t(e);o(r.newContent)}else if(r){let t=M(g,[...v,e]);o(t),await r(t)}x(!1)}catch(e){console.error("[CsvView] Add row failed:",e)}finally{h(!1)}},[t,r,g,v]),k=!!r||!!t;return 0===g.length?(0,s.jsx)("div",{className:"text-sm py-4",style:{color:"var(--muted-foreground)"},children:"Empty CSV file"}):(0,s.jsxs)("div",{className:"w-full rounded-xl overflow-hidden border",style:{borderColor:"var(--border)"},children:[(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"min-w-full text-sm border-collapse",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{style:{background:"var(--muted)"},children:[g.map((e,t)=>(0,s.jsx)("th",{onClick:()=>(function(e){if(l!==e){i(e),c("asc");return}"asc"===d?c("desc"):(i(null),c(null))})(t),className:"px-4 py-2.5 text-left font-semibold cursor-pointer select-none whitespace-nowrap transition-colors hover:bg-accent",style:{color:"var(--foreground)",borderBottom:"1px solid var(--border)",fontSize:"0.75rem",letterSpacing:"0.04em",textTransform:"uppercase"},children:(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("span",{children:e}),l===t?"asc"===d?(0,s.jsx)(A.A,{size:11,style:{color:"var(--amber)"}}):(0,s.jsx)(E.A,{size:11,style:{color:"var(--amber)"}}):(0,s.jsx)(S.A,{size:11,style:{color:"var(--muted-foreground)",opacity:.4}})]})},t)),k&&(0,s.jsx)("th",{className:"w-8",style:{borderBottom:"1px solid var(--border)",background:"var(--muted)"}})]})}),(0,s.jsxs)("tbody",{children:[b.map((e,t)=>(0,s.jsxs)("tr",{className:"group transition-colors",style:{background:t%2==0?"var(--background)":"var(--card)"},onMouseEnter:e=>e.currentTarget.style.background="var(--muted)",onMouseLeave:e=>e.currentTarget.style.background=t%2==0?"var(--background)":"var(--card)",children:[g.map((n,a)=>(0,s.jsx)("td",{className:"px-4 py-2.5 max-w-xs",style:{borderBottom:"1px solid var(--border)"},children:(0,s.jsx)(L,{value:e[a]??"",editable:!!r,onCommit:e=>y(t,a,e)})},a)),k&&(0,s.jsx)("td",{className:"px-2 py-2",style:{borderBottom:"1px solid var(--border)"},children:r&&(0,s.jsx)("button",{onClick:()=>w(t),disabled:p,className:"opacity-0 group-hover:opacity-100 transition-opacity p-1 rounded hover:bg-destructive/10 disabled:opacity-30",style:{color:"var(--muted-foreground)"},title:p?"Saving...":"Delete row",children:(0,s.jsx)(j.A,{size:12})})})]},t)),u&&(0,s.jsx)(T,{headers:g,onAdd:N,onCancel:()=>x(!1)})]})]})}),(0,s.jsxs)("div",{className:"px-4 py-2 flex items-center justify-between",style:{background:"var(--muted)",borderTop:"1px solid var(--border)"},children:[(0,s.jsxs)("span",{className:"text-xs font-display flex items-center gap-1.5",style:{color:"var(--muted-foreground)"},children:[v.length," rows \xb7 ",g.length," cols",p&&(0,s.jsx)(m.A,{size:10,className:"animate-spin",style:{color:"var(--amber)"}})]}),k&&!u&&(0,s.jsxs)("button",{onClick:()=>x(!0),className:"flex items-center gap-1 text-xs px-2.5 py-1 rounded-md transition-colors font-display",style:{color:"var(--amber)",background:"var(--amber-dim)"},children:[(0,s.jsx)(z.A,{size:12}),"Add row"]}),u&&(0,s.jsx)("button",{onClick:()=>x(!1),className:"text-xs px-2.5 py-1 rounded-md transition-colors font-display",style:{color:"var(--muted-foreground)"},children:"Cancel"})]})]})}var P=r(98500),$=r.n(P);let I=(0,i.A)("link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]);var D=r(91053),F=r(22356);function O({filePath:e}){let[t,r]=(0,n.useState)([]),[a,o]=(0,n.useState)(!0),{t:l}=(0,D.Y)();return((0,n.useEffect)(()=>{o(!0),(0,F.n)(`/api/backlinks?path=${encodeURIComponent(e)}`).then(e=>{r(Array.isArray(e)?e:[]),o(!1)}).catch(()=>{r([]),o(!1)})},[e]),a||0!==t.length)?(0,s.jsxs)("div",{className:"mt-12 pt-8 border-t border-border",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 mb-6 text-muted-foreground",children:[(0,s.jsx)(I,{size:16,className:"text-[var(--amber)]/70"}),(0,s.jsx)("h3",{className:"text-sm font-semibold tracking-wider uppercase font-display",children:l.common?.relatedFiles||"Related Files"}),(0,s.jsx)("span",{className:"text-xs bg-muted px-1.5 py-0.5 rounded-full font-mono",children:t.length})]}),(0,s.jsx)("div",{className:"grid gap-3",children:a?(0,s.jsx)("div",{className:"space-y-3",children:[1,2].map(e=>(0,s.jsx)("div",{className:"h-20 bg-muted/30 rounded-lg animate-pulse"},e))}):t.map(e=>(0,s.jsx)($(),{href:`/view/${e.filePath.split("/").map(encodeURIComponent).join("/")}`,className:"group block p-4 rounded-xl border border-border/50 bg-card/30 hover:bg-muted/30 hover:border-[var(--amber)]/30 transition-all duration-200",children:(0,s.jsxs)("div",{className:"flex items-start gap-3",children:[(0,s.jsx)("div",{className:"mt-1 p-1.5 rounded-md bg-muted group-hover:bg-[var(--amber)]/10 transition-colors",children:(0,s.jsx)(f.A,{size:14,className:"text-muted-foreground group-hover:text-[var(--amber)]"})}),(0,s.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,s.jsx)("div",{className:"font-medium text-sm text-foreground group-hover:text-[var(--amber)] transition-colors truncate mb-1",title:e.filePath,children:e.filePath}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground line-clamp-2 leading-relaxed italic opacity-80 group-hover:opacity-100 transition-opacity",title:e.snippets[0]||"",children:e.snippets[0]||""})]})]})},e.filePath))})]}):null}var H=r(77148),V=r(44406),W=r(37206),U=r(8434);let B=(0,i.A)("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);var Y=r(7915);let _=(0,W.default)(()=>Promise.all([r.e(6079),r.e(8131),r.e(362)]).then(r.bind(r,90362)),{loadableGenerated:{webpack:()=>[90362]},ssr:!1,loading:()=>(0,s.jsx)("div",{className:"h-full w-full min-h-[400px] rounded-lg border border-border bg-background flex items-center justify-center",children:(0,s.jsxs)("div",{className:"flex items-center gap-2 text-muted-foreground text-sm",children:[(0,s.jsx)("div",{className:"w-4 h-4 border-2 border-border border-t-foreground rounded-full animate-spin"}),(0,s.jsx)("span",{children:"Loading editor..."})]})})}),q=(0,W.default)(()=>Promise.all([r.e(5004),r.e(277),r.e(1007),r.e(6087)]).then(r.bind(r,16087)),{loadableGenerated:{webpack:()=>[16087]},ssr:!1}),K=[{id:"wysiwyg",icon:(0,s.jsx)(y.A,{size:12}),label:"WYSIWYG"},{id:"split",icon:(0,s.jsx)(U.A,{size:12}),label:"Split"},{id:"source",icon:(0,s.jsx)(B,{size:12}),label:"Source"},{id:"preview",icon:(0,s.jsx)(Y.A,{size:12}),label:"Preview"}];function G({value:e,onChange:t,viewMode:r,onViewModeChange:n}){return(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)("div",{className:"flex items-center gap-1 p-1 bg-muted rounded-lg self-start",children:K.map(e=>(0,s.jsxs)("button",{onClick:()=>n(e.id),className:`flex items-center gap-1.5 px-2.5 py-1.5 rounded text-xs font-medium transition-colors font-display ${r===e.id?"bg-card text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:[e.icon,e.label]},e.id))}),(0,s.jsxs)("div",{className:"rounded-xl overflow-hidden border border-border flex",style:{height:"calc(100vh - 160px)"},children:["wysiwyg"===r&&(0,s.jsx)("div",{className:"w-full h-full overflow-hidden",children:(0,s.jsx)(q,{value:e,onChange:t})}),"split"===r&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"w-1/2 h-full overflow-auto border-r border-border",children:(0,s.jsx)(_,{value:e,onChange:t,language:"markdown"})}),(0,s.jsx)("div",{className:"w-1/2 h-full overflow-auto bg-background",children:(0,s.jsx)("div",{className:"px-6 py-5",children:(0,s.jsx)(w.default,{content:e})})})]}),"source"===r&&(0,s.jsx)("div",{className:"w-full h-full overflow-auto",children:(0,s.jsx)(_,{value:e,onChange:t,language:"markdown"})}),"preview"===r&&(0,s.jsx)("div",{className:"w-full h-full overflow-auto bg-background",children:(0,s.jsx)("div",{className:"px-6 py-5",children:(0,s.jsx)(w.default,{content:e})})})]})]})}var J=r(21362),Z=r(36306),X=r(91337);function Q({content:e}){let{t}=(0,D.Y)(),{headings:r,minLevel:a}=(0,n.useMemo)(()=>{let t=function(e){let t=new Z.A,r=e.split("\n"),s=[],n=!1;for(let e of r){if(/^(`{3,}|~{3,})/.test(e)){n=!n;continue}if(n)continue;let r=e.match(/^(#{1,4})\s+(.+)/);if(r){let e=r[1].length,n=r[2].trim(),a=t.slug(n);s.push({id:a,text:n,level:e})}}return s}(e);return{headings:t,minLevel:t.length>0?Math.min(...t.map(e=>e.level)):1}},[e]),[o,l]=(0,n.useState)(""),[i,d]=(0,n.useState)(!1);(0,n.useEffect)(()=>{let e=document.documentElement.style;return e.setProperty("--toc-width",i?"0px":"212px"),i?e.removeProperty("--toc-margin"):e.setProperty("--toc-margin","220px"),()=>{e.removeProperty("--toc-width"),e.removeProperty("--toc-margin")}},[i]);let c=(0,n.useRef)(null),u=(0,n.useRef)(null),m=(0,n.useRef)(new Map),x=(0,n.useCallback)(e=>{let t=m.current.get(e),r=u.current;if(!t||!r||!t.isConnected)return;let s=r.getBoundingClientRect(),n=t.getBoundingClientRect(),a=n.top<s.top+40,o=n.bottom>s.bottom-40;(a||o)&&t.scrollIntoView({block:"center",behavior:"auto"})},[]);return((0,n.useEffect)(()=>{if(0===r.length)return;let e=setTimeout(()=>{let e=r.map(e=>document.getElementById(e.id)).filter(Boolean);0!==e.length&&(c.current?.disconnect(),c.current=new IntersectionObserver(e=>{for(let t of e)if(t.isIntersecting){l(t.target.id),x(t.target.id);break}},{rootMargin:"-56px 0% -70% 0%",threshold:0}),e.forEach(e=>c.current?.observe(e)))},150);return()=>{clearTimeout(e),c.current?.disconnect()}},[r]),r.length<2)?null:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{onClick:()=>d(e=>!e),className:"hidden xl:flex fixed z-10 top-[50px] flex items-center justify-center w-5 h-8 rounded-l-md border border-r-0 border-border hover:bg-muted transition-colors",style:{right:`calc(var(--right-panel-width, 0px) + ${212*!i}px)`,background:"var(--background)",transition:"right 200ms ease-in-out"},title:i?t.view.tocExpand:t.view.tocCollapse,children:(0,s.jsx)(J.A,{size:11,className:"text-muted-foreground/60 transition-transform duration-200",style:{transform:i?"rotate(180deg)":"rotate(0deg)"}})}),(0,s.jsx)("aside",{className:"hidden xl:flex flex-col fixed z-10 overflow-hidden",style:{top:44,height:"calc(100vh - 44px)",width:212,right:"var(--right-panel-width, 0px)",transform:i?"translateX(212px)":"translateX(0)",transition:"transform 200ms ease-in-out, right 200ms ease-out"},children:(0,s.jsxs)("nav",{ref:u,"aria-label":t.view.tocTitle,className:"flex flex-col gap-0.5 overflow-y-auto min-h-0 flex-1 py-5 pl-2 pr-3 border-l border-border",style:{background:"var(--background)"},children:[(0,s.jsx)("p",{className:"text-2xs font-semibold uppercase tracking-wider px-2 mb-1 text-muted-foreground/50 shrink-0",children:t.view.tocTitle}),r.map((e,t)=>{let r=(e.level-a)*14,n=o===e.id,i=e.level>a;return(0,s.jsx)("a",{ref:t=>{t?m.current.set(e.id,t):m.current.delete(e.id)},href:`#${e.id}`,onClick:t=>((e,t)=>{e.preventDefault();let r=document.getElementById(t);if(!r)return;let s=r.getBoundingClientRect().top+window.scrollY-56;window.scrollTo({top:s,behavior:"smooth"}),l(t)})(t,e.id),className:(0,X.cn)("block text-xs py-1 rounded transition-colors duration-100 leading-snug shrink-0 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",n&&"font-medium"),style:{paddingLeft:`${8+r}px`,paddingRight:"8px",borderLeft:"2px solid",borderLeftColor:n?"var(--amber)":i?"var(--border)":"transparent",marginLeft:i?"7px":"0",...n?{color:"var(--amber)",background:"var(--amber-dim)"}:{color:"var(--muted-foreground)"}},title:e.text,children:(0,s.jsx)("span",{className:"line-clamp-2",suppressHydrationWarning:!0,children:e.text})},`${e.id}-${t}`)})]})})]})}let ee="findip-highlight",et="findip-active";function er({containerRef:e,onClose:t}){let{t:r}=(0,D.Y)(),[a,o]=(0,n.useState)(""),[l,i]=(0,n.useState)(0),d=(0,n.useRef)(null),c=(0,n.useRef)([]);(0,n.useEffect)(()=>{d.current?.focus()},[]);let m=(0,n.useCallback)(()=>{for(let e of c.current){let t=e.parentNode;t&&(t.replaceChild(document.createTextNode(e.textContent||""),e),t.normalize())}c.current=[]},[]);(0,n.useEffect)(()=>{m(),i(0);let t=e.current;if(!t||!a.trim())return;let r=a.toLowerCase(),s=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode:e=>e.parentElement?.closest("[data-find-in-page]")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),n=[];for(;s.nextNode();)n.push(s.currentNode);let o=[];for(let e of n){let t=e.textContent||"",s=t.toLowerCase(),n=0,a=[];for(;;){let e=s.indexOf(r,n);if(-1===e)break;a.push(e),n=e+r.length}if(0===a.length)continue;let l=e.parentNode;if(!l)continue;let i=document.createDocumentFragment(),d=0;for(let e of a){e>d&&i.appendChild(document.createTextNode(t.slice(d,e)));let s=document.createElement("mark");s.className=ee,s.textContent=t.slice(e,e+r.length),i.appendChild(s),o.push(s),d=e+r.length}d<t.length&&i.appendChild(document.createTextNode(t.slice(d))),l.replaceChild(i,e)}return c.current=o,i(+(o.length>0)),o.length>0&&(o[0].classList.add(et),o[0].scrollIntoView({block:"center",behavior:"smooth"})),()=>{}},[a,e,m]),(0,n.useEffect)(()=>()=>{m()},[m]);let x=c.current.length,p=(0,n.useCallback)(e=>{let t=c.current;if(0===t.length)return;for(let e of t)e.classList.remove(et);let r=((e-1)%t.length+t.length)%t.length;t[r].classList.add(et),t[r].scrollIntoView({block:"center",behavior:"smooth"}),i(r+1)},[]),h=(0,n.useCallback)(()=>p(l+1),[l,p]),f=(0,n.useCallback)(()=>p(l-1),[l,p]),g=(0,n.useCallback)(e=>{"Escape"===e.key?(e.preventDefault(),t()):"Enter"===e.key&&(e.preventDefault(),e.shiftKey?f():h())},[t,h,f]);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("style",{children:`
2
- mark.${ee} {
3
- background: rgba(250, 204, 21, 0.3);
4
- color: inherit;
5
- border-radius: 2px;
6
- padding: 0;
7
- }
8
- mark.${et} {
9
- background: rgba(250, 204, 21, 0.7);
10
- outline: 2px solid rgba(250, 204, 21, 0.5);
11
- }
12
- `}),(0,s.jsx)("div",{className:"sticky top-[96px] md:top-[44px] z-30 flex justify-end px-4 md:px-6 pointer-events-none","data-find-in-page":!0,children:(0,s.jsxs)("div",{className:"pointer-events-auto flex items-center gap-1.5 px-3 py-1.5 rounded-lg border border-border bg-card shadow-lg",children:[(0,s.jsx)("input",{ref:d,type:"text",value:a,onChange:e=>o(e.target.value),onKeyDown:g,placeholder:r.findInPage.placeholder,className:"w-[180px] sm:w-[220px] px-2 py-1 text-sm bg-transparent text-foreground placeholder:text-muted-foreground outline-none"}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground tabular-nums shrink-0 min-w-[48px] text-center font-display",children:a.trim()?x>0?r.findInPage.matchCount(l,x):r.findInPage.noResults:""}),(0,s.jsx)("button",{onClick:f,disabled:0===x,className:"p-1 rounded text-muted-foreground hover:text-foreground disabled:opacity-30 transition-colors","aria-label":"Previous match",children:(0,s.jsx)(A.A,{size:14})}),(0,s.jsx)("button",{onClick:h,disabled:0===x,className:"p-1 rounded text-muted-foreground hover:text-foreground disabled:opacity-30 transition-colors","aria-label":"Next match",children:(0,s.jsx)(E.A,{size:14})}),(0,s.jsx)("button",{onClick:t,className:"p-1 rounded text-muted-foreground hover:text-foreground transition-colors","aria-label":"Close find",children:(0,s.jsx)(u.A,{size:14})})]})})]})}var es=r(46838),en=r(70620),ea=r(63212),eo=r(95404),el=r(13398),ei=r(4235),ed=r(22721),ec=r(97631),eu=r(10377);let em=(0,i.A)("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);var ex=r(92451),ep=r(94514);function eh({open:e,onClose:t,filePath:r,isDirectory:a,fileName:o}){let{t:l}=(0,D.Y)(),[i,d]=(0,n.useState)(a?"zip":"md"),[c,x]=(0,n.useState)("idle"),[p,h]=(0,n.useState)(""),g=(0,n.useRef)(null),b=(0,n.useCallback)(()=>{x("exporting"),h("");let e=new AbortController;g.current=e,fetch(`/api/export?path=${encodeURIComponent(r)}&format=${i}`,{signal:e.signal}).then(e=>{if(!e.ok){if((e.headers.get("content-type")??"").includes("json"))return e.json().then(e=>{throw Error(e.error||"Export failed")});throw Error(`Export failed (${e.status})`)}return e.blob().then(t=>({blob:t,res:e}))}).then(({blob:e,res:t})=>{let r=(t.headers.get("Content-Disposition")??"").match(/filename="?([^"]+)"?/),s=r?decodeURIComponent(r[1]):o,n=document.createElement("a");n.href=URL.createObjectURL(e),n.download=s,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(n.href),x("done"),ei.oR.success(l.export?.downloaded??"Downloaded")}).catch(e=>{"AbortError"!==e.name&&(x("error"),h(e.message??"Export failed"))}).finally(()=>{g.current=null})},[r,i,o,l]),y=(0,n.useCallback)(()=>{g.current&&(g.current.abort(),g.current=null),x("idle"),h("")},[]),j=(0,n.useCallback)(()=>{x("idle"),h("")},[]),w=(0,n.useCallback)(()=>{g.current&&g.current.abort(),g.current=null,x("idle"),h(""),t()},[t]);if(!e)return null;let N=a?[{value:"zip",label:l.export?.formatZipMd??"Markdown ZIP",desc:l.export?.formatZipMdDesc??"All files in original format",icon:(0,s.jsx)(em,{size:14})},{value:"zip-html",label:l.export?.formatZipHtml??"HTML ZIP",desc:l.export?.formatZipHtmlDesc??"All files as webpages",icon:(0,s.jsx)(ex.A,{size:14})}]:[{value:"md",label:l.export?.formatMd??"Markdown (.md)",desc:l.export?.formatMdDesc??"Original format, editable",icon:(0,s.jsx)(f.A,{size:14})},{value:"html",label:l.export?.formatHtml??"HTML (.html)",desc:l.export?.formatHtmlDesc??"Static webpage, shareable",icon:(0,s.jsx)(ex.A,{size:14})}];return(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm",onClick:"exporting"===c?void 0:w,children:(0,s.jsxs)("div",{className:"bg-card border border-border rounded-xl shadow-xl max-w-md w-full mx-4 animate-in fade-in-0 zoom-in-95 duration-200",role:"dialog","aria-modal":"true","aria-labelledby":"export-modal-title",onClick:e=>e.stopPropagation(),children:[(0,s.jsxs)("div",{className:"flex items-center justify-between px-5 py-4 border-b border-border",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)(v.A,{size:15,className:"text-[var(--amber)]"}),(0,s.jsx)("h3",{id:"export-modal-title",className:"text-sm font-semibold font-display",children:a?l.export?.exportSpace??"Export Space":l.export?.exportFile??"Export File"})]}),(0,s.jsx)("button",{onClick:w,className:"p-1 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring","aria-label":l.export?.cancel??"Close",children:(0,s.jsx)(u.A,{size:14})})]}),(0,s.jsx)("div",{className:"px-5 py-4",children:"done"===c?(0,s.jsxs)("div",{className:"text-center py-6",children:[(0,s.jsx)("div",{className:"w-10 h-10 rounded-full bg-success/10 flex items-center justify-center mx-auto mb-3",children:(0,s.jsx)(ep.A,{size:20,className:"text-success"})}),(0,s.jsx)("p",{className:"text-sm font-medium font-display",children:l.export?.done??"Export Complete"}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:o})]}):"error"===c?(0,s.jsxs)("div",{className:"text-center py-6",children:[(0,s.jsx)("p",{className:"text-sm font-medium text-error",children:l.export?.error??"Export failed"}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:p})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("p",{className:"text-xs text-muted-foreground mb-3 truncate",title:r,children:r}),(0,s.jsx)("p",{className:"text-xs font-medium font-display text-foreground mb-2",children:l.export?.chooseFormat??"Choose format"}),(0,s.jsx)("div",{className:"space-y-1.5",children:N.map(e=>(0,s.jsxs)("label",{className:`flex items-start gap-3 p-3 rounded-lg border cursor-pointer transition-all ${i===e.value?"border-[var(--amber)]/40 bg-[var(--amber-dim)]":"border-border hover:border-border/80 hover:bg-muted/30"} ${e.disabled?"opacity-40 cursor-not-allowed":""}`,children:[(0,s.jsx)("input",{type:"radio",name:"export-format",value:e.value,checked:i===e.value,onChange:()=>!e.disabled&&d(e.value),disabled:e.disabled,className:"sr-only"}),(0,s.jsx)("span",{className:`mt-0.5 ${i===e.value?"text-[var(--amber)]":"text-muted-foreground"}`,children:e.icon}),(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"text-sm font-medium text-foreground",children:e.label}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground block mt-0.5",children:e.desc})]})]},e.value))})]})}),(0,s.jsx)("div",{className:"flex items-center justify-end gap-2 px-5 py-3 border-t border-border",children:"done"===c?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{onClick:j,className:"px-3 py-1.5 rounded-md text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:l.export?.downloadAgain??"Download Again"}),(0,s.jsx)("button",{onClick:w,className:"px-3 py-1.5 rounded-md text-xs font-medium bg-[var(--amber-dim)] text-[var(--amber-text)] hover:opacity-80 transition-colors",children:l.export?.close??"Done"})]}):"error"===c?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{onClick:w,className:"px-3 py-1.5 rounded-md text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:l.export?.cancel??"Cancel"}),(0,s.jsx)("button",{onClick:j,className:"px-3 py-1.5 rounded-md text-xs font-medium bg-[var(--amber-dim)] text-[var(--amber-text)] hover:opacity-80 transition-colors",children:l.export?.retry??"Retry"})]}):"exporting"===c?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{onClick:y,className:"px-3 py-1.5 rounded-md text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:l.export?.cancel??"Cancel"}),(0,s.jsxs)("span",{className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium text-[var(--amber-text)] opacity-70",children:[(0,s.jsx)(m.A,{size:12,className:"animate-spin"})," ",l.export?.exporting??"Exporting..."]})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("button",{onClick:w,className:"px-3 py-1.5 rounded-md text-xs font-medium text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:l.export?.cancel??"Cancel"}),(0,s.jsxs)("button",{onClick:b,className:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium bg-[var(--amber-dim)] text-[var(--amber-text)] hover:opacity-80 transition-colors",children:[(0,s.jsx)(v.A,{size:12})," ",l.export?.exportButton??"Export"]})]})})]})})}function ef({filePath:e,content:t,extension:r,saveAction:i,appendRowAction:k,initialEditing:C=!1,isDraft:A=!1,draftDirectories:E=[],createDraftAction:S}){let{t:z}=(0,D.Y)(),{isPinned:M,togglePin:L}=(0,eu.Z)(),T=M(e),[P,$]=(0,n.useState)(!1),I=(0,n.useSyncExternalStore)(()=>()=>{},()=>!0,()=>!1),[F,W]=(0,H.Un)("_raw",e,!1),[U,B]=(0,n.useState)(!1),Y=(0,a.useRouter)(),[_,q]=(0,n.useState)(C||""===t),[K,J]=(0,n.useState)(t),[Z,ee]=(0,n.useState)(t);(0,n.useEffect)(()=>{_||ee(t)},[t,_]);let[et,em]=(0,n.useTransition)(),[ex,ep]=(0,n.useState)(null),[ef,eg]=(0,n.useState)(!1),[ev,eb]=(0,n.useState)("wysiwyg"),[ey,ej]=(0,n.useState)(!1),ew=(0,n.useRef)(null),[eN,ek]=(0,n.useState)(!1),eC=(0,n.useRef)(null),eA=(0,n.useRef)(null),[eE,eS]=(0,n.useState)(!1),[ez,eM]=(0,n.useState)(!1),[eL,eT]=(0,n.useState)(""),[,eR]=(0,n.useTransition)(),eP=e.split("/").pop()||"Untitled.md",[e$,eI]=(0,n.useState)(A),[eD,eF]=(0,n.useState)(""),[eO,eH]=(0,n.useState)(eP);(0,n.useEffect)(()=>{if(!eN)return;let e=e=>{eC.current&&!eC.current.contains(e.target)&&eA.current&&!eA.current.contains(e.target)&&ek(!1)},t=e=>{"Escape"===e.key&&ek(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[eN]);let eV=(0,n.useCallback)(()=>{navigator.clipboard.writeText(e).catch(()=>{}),ek(!1)},[e]),eW=(0,n.useCallback)(()=>{ek(!1),eT(e.split("/").pop()??""),eM(!0)},[e]),eU=(0,n.useCallback)(()=>{let t=eL.trim();t&&t!==e.split("/").pop()?eR(async()=>{let r=await (0,ea.f)(e,t);eM(!1),r.success&&r.newPath&&(Y.push(`/view/${(0,X.O0)(r.newPath)}`),Y.refresh(),window.dispatchEvent(new Event("mindos:files-changed")))}):eM(!1)},[eL,e,Y]),eB=(0,n.useCallback)(()=>{eS(!1);let t=e.split("/").pop()??e;em(async()=>{let r=await (0,eo.i)(e);if(r.success){if(r.trashId){let e=r.trashId;ei.oR.undo(`${z.trash?.movedToTrash??"Deleted"} ${t}`,async()=>{let t=await (0,el.Y)(e);t.success?(Y.refresh(),window.dispatchEvent(new Event("mindos:files-changed"))):ei.oR.error(t.error??"Undo failed")},{label:z.trash?.undo??"Undo"})}Y.push("/"),Y.refresh(),window.dispatchEvent(new Event("mindos:files-changed"))}})},[e,Y,z]),eY=!!I&&F,e_=(0,n.useCallback)(()=>{W(e=>!e)},[W]),eq=(0,n.useCallback)(()=>{B(e=>!e)},[B]),eK=(0,es.YB)(e,r),eG="md"===r&&U?(0,es.YB)(e,r,"graph"):void 0,eJ=eG||eK,eZ="csv"===r,eX=!_&&!!eJ&&(!eY||!!eG),eQ=(0,n.useMemo)(()=>eJ?eJ.component?eJ.component:eJ.load?(0,n.lazy)(eJ.load):null:null,[eJ]),e0=(0,n.useCallback)(()=>{J(Z),q(!0),ep(null),eg(!1)},[Z]),e1=(0,n.useCallback)(()=>{A?Y.push("/"):(q(!1),ep(null))},[A,Y]),e2=(0,n.useCallback)(()=>{let e=eO.trim();if(!e)return void ep("Please enter a file name");if(/[/\\:*?"<>|]/.test(e)||e.includes(".."))return void ep("File name contains invalid characters");if(!S)return void ep("Draft save is not available");let t=e.endsWith(".md")||e.endsWith(".csv")?e:`${e}.md`,r=eD?`${eD}/${t}`:t;ep(null),em(async()=>{try{await S(r,K),ee(K),q(!1),eI(!1),eg(!0),setTimeout(()=>eg(!1),2500),Y.push(`/view/${(0,X.O0)(r)}`),Y.refresh()}catch(e){ep(e instanceof Error?e.message:"Failed to save")}})},[eO,S,eD,K,Y]),e5=(0,n.useCallback)(()=>{if(eZ){q(!1),eg(!0),setTimeout(()=>eg(!1),2500);return}A?eI(!0):(ep(null),em(async()=>{try{await i(K),ee(K),q(!1),eg(!0),setTimeout(()=>eg(!1),2500)}catch(e){ep(e instanceof Error?e.message:"Failed to save")}}))},[eZ,A,i,K]),e3=(0,n.useCallback)(async e=>{await i(e),ee(e)},[i]);(0,n.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"s"===e.key&&(e.preventDefault(),_&&e5()),(e.metaKey||e.ctrlKey)&&"f"===e.key&&!_&&(e.preventDefault(),ej(!0)),"e"!==e.key||_||document.activeElement?.tagName!=="BODY"||e0(),"Escape"===e.key&&_&&e1()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[_,e5,e0,e1]);let[e4,e6]=(0,n.useState)(!1),[e8,e9]=(0,n.useState)([]),e7=(0,n.useRef)(t),te=(0,n.useRef)(!1),tt=(0,n.useRef)(null),tr=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!_&&te.current&&t!==e7.current&&""!==e7.current){te.current=!1;let e=(0,ec.m)(e7.current,t),r=[],s=1;for(let t of e)"insert"===t.type?(r.push(s),s++):"equal"===t.type&&s++;r.length>0&&(e9(r),tt.current&&clearTimeout(tt.current),tt.current=setTimeout(()=>e9([]),6e3),setTimeout(()=>{let e=document.querySelector("[data-highlight-line]");e&&e.scrollIntoView({block:"center",behavior:"smooth"})},100))}e7.current=t},[t,_]),(0,n.useEffect)(()=>{let e=null,t=()=>{_||(e&&clearTimeout(e),e=setTimeout(()=>{te.current=!0,Y.refresh(),e6(!0),tr.current&&clearTimeout(tr.current),tr.current=setTimeout(()=>e6(!1),3e3)},300))};return window.addEventListener("mindos:files-changed",t),()=>{window.removeEventListener("mindos:files-changed",t),e&&clearTimeout(e)}},[_,Y]),(0,s.jsxs)("div",{className:"flex flex-col min-h-screen",children:[(0,s.jsx)("div",{className:"sticky top-[52px] md:top-0 z-20 border-b border-border px-4 md:px-6 py-2.5",style:{background:"var(--background)"},children:(0,s.jsxs)("div",{className:"content-width flex items-center justify-between gap-2",children:[(0,s.jsxs)("div",{className:"min-w-0 flex-1 flex items-center gap-1.5",children:[(0,s.jsx)("button",{onClick:()=>Y.back(),className:"md:hidden p-1 -ml-1 rounded text-muted-foreground hover:text-foreground transition-colors shrink-0","aria-label":"Go back",children:(0,s.jsx)(o.A,{size:16})}),(0,s.jsx)(V.A,{filePath:e})]}),(0,s.jsxs)("div",{className:"flex items-center gap-1.5 md:gap-2 shrink-0",children:[e4&&!_&&(0,s.jsxs)("span",{className:"text-xs flex items-center gap-1.5 text-[var(--amber)] animate-in fade-in-0 duration-200",children:[(0,s.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-[var(--amber)]"}),(0,s.jsx)("span",{className:"hidden sm:inline",children:"updated"})]}),ef&&(0,s.jsxs)("span",{className:"text-xs flex items-center gap-1.5 font-display",style:{color:"var(--success)"},children:[(0,s.jsx)("span",{className:"w-1.5 h-1.5 rounded-full",style:{background:"var(--success)"}}),(0,s.jsx)("span",{className:"hidden sm:inline",children:"saved"})]}),ex&&(0,s.jsx)("span",{className:"text-xs text-error hidden sm:inline",children:ex}),eK&&!_&&!A&&!eG&&(0,s.jsxs)("button",{onClick:e_,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium transition-colors font-display",style:{background:eY?"var(--amber)22":"var(--muted)",color:eY?"var(--amber)":"var(--muted-foreground)"},title:eY?`Switch to ${eK?.name}`:"View raw",children:[eY?(0,s.jsx)(l.A,{size:13}):(0,s.jsx)(d,{size:13}),(0,s.jsx)("span",{className:"hidden sm:inline",children:eY?eK.name:"Raw"})]}),!_&&!eX&&!A&&(0,s.jsxs)("button",{onClick:e0,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium transition-colors font-display",style:{background:"var(--muted)",color:"var(--muted-foreground)"},onMouseEnter:e=>{e.currentTarget.style.color="var(--foreground)",e.currentTarget.style.background="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.color="var(--muted-foreground)",e.currentTarget.style.background="var(--muted)"},children:[(0,s.jsx)(c,{size:13}),(0,s.jsx)("span",{className:"hidden sm:inline",children:"Edit"})]}),_&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("button",{onClick:e1,disabled:et,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium transition-colors disabled:opacity-50 font-display",style:{background:"var(--muted)",color:"var(--muted-foreground)"},onMouseEnter:e=>{e.currentTarget.style.background="var(--accent)"},onMouseLeave:e=>{e.currentTarget.style.background="var(--muted)"},children:[(0,s.jsx)(u.A,{size:13}),(0,s.jsx)("span",{className:"hidden sm:inline",children:"Cancel"})]}),(0,s.jsxs)("button",{onClick:A&&e$?e2:e5,disabled:et,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-medium disabled:opacity-50 font-display",style:{background:"var(--amber)",color:"var(--amber-foreground)"},children:[et?(0,s.jsx)(m.A,{size:13,className:"animate-spin"}):(0,s.jsx)(x.A,{size:13}),(0,s.jsx)("span",{className:"hidden sm:inline",children:"Save"})]})]}),!A&&(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("button",{type:"button",onClick:()=>L(e),className:"p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",title:T?z.fileTree.removeFromFavorites:z.fileTree.pinToFavorites,children:(0,s.jsx)(p.A,{size:16,className:T?"fill-[var(--amber)] text-[var(--amber)]":""})}),(0,s.jsx)("button",{ref:eC,type:"button",onClick:()=>ek(e=>!e),className:"p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",title:z.view?.more??"More",children:(0,s.jsx)(h.A,{size:16})}),eN&&(0,s.jsxs)("div",{ref:eA,className:"absolute right-0 top-full mt-1 z-50 min-w-[160px] rounded-lg border border-border bg-card shadow-lg py-1",children:["md"===r&&!_&&!A&&(0,es.pl)("graph")&&(0,s.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-muted transition-colors text-left",onClick:()=>{ek(!1),eq()},children:[U?(0,s.jsx)(f.A,{size:14,className:"shrink-0"}):(0,s.jsx)(g,{size:14,className:"shrink-0"}),U?z.view?.switchToDoc??"Document view":z.view?.switchToGraph??"Wiki Graph"]}),(0,s.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-muted transition-colors text-left",onClick:()=>{ek(!1),$(!0)},children:[(0,s.jsx)(v.A,{size:14,className:"shrink-0"})," ",z.fileTree?.export??"Export"]}),(0,s.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-muted transition-colors text-left",onClick:eV,children:[(0,s.jsx)(b.A,{size:14,className:"shrink-0"})," ",z.view?.copyPath??z.fileTree?.copyPath??"Copy Path"]}),(0,s.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-muted transition-colors text-left",onClick:eW,children:[(0,s.jsx)(y.A,{size:14,className:"shrink-0"})," ",z.view?.rename??"Rename"]}),(0,s.jsx)("div",{className:"my-1 border-t border-border/50"}),(0,s.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-error hover:bg-error/10 transition-colors text-left",onClick:()=>{ek(!1),eS(!0)},children:[(0,s.jsx)(j.A,{size:14,className:"shrink-0"})," ",z.view?.delete??"Delete"]})]})]})]})]})}),(0,s.jsx)("div",{className:"flex-1 px-4 md:px-6 py-6 md:py-8",children:_?(0,s.jsxs)("div",{className:"content-width",children:[A&&e$&&(0,s.jsxs)("div",{className:"mb-3 rounded-lg border border-border bg-card p-3 flex flex-col gap-2",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-xs text-muted-foreground",children:z.view?.saveDirectory??"Directory"}),(0,s.jsx)("div",{className:"mt-1",children:(0,s.jsx)(en.A,{dirPaths:E,value:eD,onChange:eF,rootLabel:z.home?.rootLevel??"Root"})})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-xs text-muted-foreground",children:z.view?.saveFileName??"File name"}),(0,s.jsx)("input",{value:eO,onChange:e=>eH(e.target.value),onKeyDown:e=>{"Enter"===e.key&&e2()},className:"mt-1 w-full px-2.5 py-1.5 text-sm bg-background border border-border rounded-lg text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"Untitled.md"})]})]}),eZ?(0,s.jsx)(R,{content:K,filePath:e,appendAction:k,saveAction:async e=>{await i(e),J(e),ee(e)}}):(0,s.jsx)(G,{value:K,onChange:J,viewMode:ev,onViewModeChange:eb})]}):eX&&eQ?(0,s.jsxs)("div",{ref:ew,className:"content-width",children:[ey&&(0,s.jsx)(er,{containerRef:ew,onClose:()=>ej(!1)}),(0,s.jsx)(n.Suspense,{fallback:(0,s.jsx)("div",{className:"flex items-center justify-center py-12",children:(0,s.jsx)(m.A,{size:20,className:"animate-spin text-muted-foreground"})}),children:(0,s.jsx)(eQ,{filePath:e,content:Z,extension:r,saveAction:e3})}),(0,s.jsx)(O,{filePath:e})]}):(0,s.jsxs)("div",{ref:ew,className:"content-width",children:[ey&&(0,s.jsx)(er,{containerRef:ew,onClose:()=>ej(!1)}),"csv"===r?(0,s.jsx)(R,{content:Z,filePath:e}):"json"===r?(0,s.jsx)(N,{content:Z}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(w.default,{content:Z,highlightLines:e8,onDismissHighlight:()=>e9([]),emptyPlaceholder:z.view?.emptyNote}),(0,s.jsx)(Q,{content:Z})]}),(0,s.jsx)(O,{filePath:e})]})}),ez&&(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/60 backdrop-blur-sm",children:(0,s.jsxs)("div",{className:"bg-card border border-border rounded-lg shadow-lg p-4 w-80",children:[(0,s.jsx)("h3",{className:"text-sm font-medium mb-2",children:"Rename"}),(0,s.jsx)("input",{autoFocus:!0,value:eL,onChange:e=>eT(e.target.value),onKeyDown:e=>{"Enter"===e.key&&eU(),"Escape"===e.key&&eM(!1)},className:"w-full bg-muted border border-border rounded-md px-3 py-1.5 text-sm text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"}),(0,s.jsxs)("div",{className:"flex justify-end gap-2 mt-3",children:[(0,s.jsx)("button",{onClick:()=>eM(!1),className:"px-3 py-1.5 rounded-md text-xs bg-muted text-muted-foreground hover:bg-accent transition-colors",children:z.view?.cancel??"Cancel"}),(0,s.jsx)("button",{onClick:eU,className:"px-3 py-1.5 rounded-md text-xs bg-[var(--amber)] text-[var(--amber-foreground)] transition-colors",children:z.view?.rename??"Rename"})]})]})}),(0,s.jsx)(ed.TM,{open:eE,title:z.view?.delete??"Delete",message:z.view?.deleteConfirm?.(e.split("/").pop()??"")??`Delete "${e.split("/").pop()}"?`,confirmLabel:z.view?.delete??"Delete",cancelLabel:z.view?.cancel??"Cancel",variant:"destructive",onCancel:()=>eS(!1),onConfirm:eB}),(0,s.jsx)(eh,{open:P,onClose:()=>$(!1),filePath:e,isDirectory:!1,fileName:e.split("/").pop()??e})]})}},41585:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},44406:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var s=r(95155),n=r(98500),a=r.n(n),o=r(33078),l=r(48368),i=r(38798),d=r(66614),c=r(21362);function u({name:e}){let t=e.includes(".")?e.slice(e.lastIndexOf(".")).toLowerCase():"";return".csv"===t?(0,s.jsx)(o.A,{size:13,className:"text-success shrink-0"}):t?(0,s.jsx)(l.A,{size:13,className:"text-muted-foreground shrink-0"}):(0,s.jsx)(i.A,{size:13,className:"text-yellow-400 shrink-0"})}function m({filePath:e}){let t=e.split("/");return(0,s.jsxs)("nav",{className:"flex items-center gap-1 text-xs text-muted-foreground flex-wrap font-display",children:[(0,s.jsx)(a(),{href:"/",className:"hover:text-foreground transition-colors",children:(0,s.jsx)(d.A,{size:14})}),t.map((e,r)=>{let n=r===t.length-1,o="/view/"+t.slice(0,r+1).map(encodeURIComponent).join("/");return(0,s.jsxs)("span",{className:"flex items-center gap-1",children:[(0,s.jsx)(c.A,{size:12,className:"text-muted-foreground/50"}),n?(0,s.jsxs)("span",{className:"flex items-center gap-1.5 text-foreground font-medium",children:[(0,s.jsx)(u,{name:e}),(0,s.jsx)("span",{suppressHydrationWarning:!0,children:e})]}):(0,s.jsx)(a(),{href:o,className:"px-2 py-0.5 rounded-md hover:bg-muted/50 transition-colors truncate max-w-[200px]",title:e,children:(0,s.jsx)("span",{suppressHydrationWarning:!0,children:e})})]},r)})]})}},46838:(e,t,r)=>{"use strict";r.d(t,{$7:()=>o,MZ:()=>c,TS:()=>i,UG:()=>a,YB:()=>d,pl:()=>l});let s=[],n=new Set;function a(){try{let e=localStorage.getItem("mindos-disabled-renderers");n=new Set(e?JSON.parse(e):[])}catch{n=new Set}}function o(e,t){let r=s.find(t=>t.id===e);r?.core||(t?n.delete(e):n.add(e),localStorage.setItem("mindos-disabled-renderers",JSON.stringify([...n])))}function l(e){let t=s.find(t=>t.id===e);return!!t?.core||!n.has(e)}function i(e){s.find(t=>t.id===e.id)||s.push(e)}function d(e,t,r){if(r){let e=s.find(e=>e.id===r);return e&&l(e.id)?e:void 0}return s.find(r=>l(r.id)&&r.match({filePath:e,extension:t}))}function c(){return s.filter(e=>!e.appBuiltinFeature)}},51914:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},55243:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]])},56699:(e,t,r)=>{Promise.resolve().then(r.bind(r,36506)),Promise.resolve().then(r.bind(r,34367))},63212:(e,t,r)=>{"use strict";r.d(t,{f:()=>n});var s=r(9339);let n=(0,s.createServerReference)("6093e141cd7cd9c1302d99e3fcfa90f0cca62cfeb0",s.callServer,void 0,s.findSourceMapURL,"renameFileAction")},63637:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>b});var s=r(95155),n=r(66804),a=r(32957),o=r(98076),l=r(96182),i=r(16535),d=r(12115),c=r(94514),u=r(67635),m=r(33210),x=r(7834),p=r(4235);function h({code:e}){let[t,r]=(0,d.useState)(!1),n=(0,d.useCallback)(()=>{(0,x.l)(e).then(e=>{e&&(r(!0),setTimeout(()=>r(!1),2e3),p.oR.copy())})},[e]);return(0,s.jsx)("button",{onClick:n,className:" absolute top-2.5 right-2.5 p-1.5 rounded-md bg-muted hover:bg-accent text-muted-foreground hover:text-foreground transition-colors duration-100 opacity-0 group-hover:opacity-100 ",title:"Copy code",children:t?(0,s.jsx)(c.A,{size:13}):(0,s.jsx)(u.A,{size:13})})}function f(e){let{node:t,inline:r,ordered:s,depth:n,isHeader:a,...o}=e;return o}function g(e){let t=({children:t,...r})=>(0,s.jsx)(e,{...f(r),suppressHydrationWarning:!0,children:t});return t.displayName=e,t}let v={h1:g("h1"),h2:g("h2"),h3:g("h3"),h4:g("h4"),h5:g("h5"),h6:g("h6"),code:({children:e,node:t,...r})=>(0,s.jsx)("code",{...f(r),suppressHydrationWarning:!0,children:e}),pre({children:e,node:t,...r}){let n="";return e&&"object"==typeof e&&"props"in e&&(n=function e(t){return"string"==typeof t?t:Array.isArray(t)?t.map(e).join(""):t&&"object"==typeof t&&"props"in t?e(t.props?.children):""}(e.props?.children)),(0,s.jsxs)("div",{className:"relative group",children:[(0,s.jsx)("pre",{...f(r),suppressHydrationWarning:!0,children:e}),(0,s.jsx)(h,{code:n})]})},li:({children:e,node:t,...r})=>(0,s.jsx)("li",{...f(r),suppressHydrationWarning:!0,children:e}),p:({children:e,node:t,...r})=>(0,s.jsx)("p",{...f(r),suppressHydrationWarning:!0,children:e}),a({href:e,children:t,node:r,...n}){let a=e?.startsWith("http");return(0,s.jsx)("a",{href:e,target:a?"_blank":void 0,rel:a?"noopener noreferrer":void 0,...f(n),children:t})},img:({src:e,alt:t,node:r,...n})=>e?(0,s.jsx)("img",{src:e,alt:t??"",...f(n)}):null};function b({content:e,highlightLines:t,onDismissHighlight:r,emptyPlaceholder:d}){let c=t&&t.length>0;return!e.trim()&&d?(0,s.jsx)("div",{className:"py-12 text-center text-sm text-muted-foreground/50",children:d}):(0,s.jsxs)("div",{children:[c&&(0,s.jsxs)("div",{className:"mb-4 flex items-center gap-2 rounded-md border px-3 py-2 text-xs animate-in fade-in-0 duration-300",style:{borderColor:"color-mix(in srgb, var(--amber) 40%, var(--border))",background:"color-mix(in srgb, var(--amber) 8%, var(--card))",color:"var(--amber)"},"data-highlight-line":!0,children:[(0,s.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-[var(--amber)] animate-pulse shrink-0"}),(0,s.jsxs)("span",{className:"font-display font-medium flex-1",children:[t.length," line",1!==t.length?"s":""," updated by AI"]}),r&&(0,s.jsx)("button",{type:"button",onClick:r,className:"p-0.5 rounded hover:bg-[var(--amber)]/15 transition-colors shrink-0","aria-label":"Dismiss",children:(0,s.jsx)(m.A,{size:12})})]}),(0,s.jsx)("div",{className:"prose max-w-none",children:(0,s.jsx)(n.oz,{remarkPlugins:[a.A],rehypePlugins:[i.A,o.A,l.A],components:v,children:e})})]})}},66614:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]])},67635:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},68459:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]])},70620:(e,t,r)=>{"use strict";r.d(t,{A:()=>u});var s=r(95155),n=r(12115),a=r(47650),o=r(21362),l=r(38798),i=r(94514),d=r(66088),c=r(91337);function u({dirPaths:e,value:t,onChange:r,rootLabel:u="Root"}){let[m,x]=(0,n.useState)(!1),[p,h]=(0,n.useState)(t),[f,g]=(0,n.useState)(null),v=(0,n.useRef)(null),b=(0,n.useRef)(null);(0,n.useEffect)(()=>{h(t)},[t]);let y=(0,n.useCallback)(()=>{if(!v.current)return;let e=v.current.getBoundingClientRect(),t=window.innerHeight-e.bottom,r=e.top,s=t<208&&r>t;g({top:s?e.top:e.bottom,left:e.left,width:e.width,flipUp:s})},[]);(0,n.useEffect)(()=>m?(y(),window.addEventListener("scroll",y,!0),window.addEventListener("resize",y),()=>{window.removeEventListener("scroll",y,!0),window.removeEventListener("resize",y)}):void g(null),[m,y]);let j=(0,n.useCallback)(()=>x(!1),[]);(0,n.useEffect)(()=>{if(!m)return;let e=e=>{"Escape"===e.key&&(e.preventDefault(),j())},t=e=>{let t=e.target;v.current?.contains(t)||b.current?.contains(t)||j()};return document.addEventListener("keydown",e),document.addEventListener("mousedown",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("mousedown",t)}},[m,j]);let w=(0,n.useMemo)(()=>{let t=p?p+"/":"";return e.filter(e=>{if(!e.startsWith(t))return!1;let r=e.slice(t.length);return r.length>0&&!r.includes("/")}).sort()},[e,p]),N=(0,n.useMemo)(()=>p?p.split("/"):[],[p]),k=e=>{if(e<0)h(""),r("");else{let t=N.slice(0,e+1).join("/");h(t),r(t)}},C=t?t.split("/").map(e=>(0,c.vr)(e)).join(" / "):"/ "+u,A=m&&f&&(0,a.createPortal)((0,s.jsxs)("div",{ref:b,className:"fixed z-[9999] rounded-lg border border-[var(--amber)] bg-card shadow-lg overflow-hidden flex flex-col",style:{left:f.left,width:f.width,maxHeight:200,...f.flipUp?{bottom:window.innerHeight-f.top+4}:{top:f.top+4}},children:[(0,s.jsxs)("div",{className:"flex items-center gap-0.5 px-3 py-1.5 bg-muted/30 border-b border-border overflow-x-auto text-xs shrink-0",children:[(0,s.jsxs)("button",{type:"button",onClick:()=>k(-1),className:`shrink-0 px-1.5 py-0.5 rounded transition-colors ${""===p?"text-[var(--amber)] font-medium":"text-muted-foreground hover:text-foreground"}`,children:["/ ",u]}),N.map((e,t)=>(0,s.jsxs)("span",{className:"flex items-center gap-0.5 shrink-0",children:[(0,s.jsx)(o.A,{size:10,className:"text-muted-foreground/50"}),(0,s.jsx)("button",{type:"button",onClick:()=>k(t),className:`px-1.5 py-0.5 rounded transition-colors truncate max-w-[100px] ${t===N.length-1?"text-[var(--amber)] font-medium":"text-muted-foreground hover:text-foreground"}`,children:e})]},t))]}),w.length>0?(0,s.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:w.map(t=>{let n=t.split("/").pop()||t,a=e.some(e=>e.startsWith(t+"/"));return(0,s.jsxs)("button",{type:"button",onClick:()=>{h(t),r(t)},className:"w-full flex items-center gap-2 px-3 py-1.5 text-xs text-foreground hover:bg-muted/60 transition-colors",children:[(0,s.jsx)(l.A,{size:12,className:"shrink-0 text-[var(--amber)]"}),(0,s.jsx)("span",{className:"flex-1 text-left truncate",children:n}),a&&(0,s.jsx)(o.A,{size:11,className:"shrink-0 text-muted-foreground/40"})]},t)})}):(0,s.jsx)("div",{className:"px-3 py-2 text-xs text-muted-foreground/50 text-center",children:"—"}),(0,s.jsx)("button",{type:"button",onClick:j,className:"w-full py-1.5 flex items-center justify-center gap-1 text-xs font-medium text-[var(--amber)] border-t border-border hover:bg-muted/30 transition-colors shrink-0",children:(0,s.jsx)(i.A,{size:12})})]}),document.body);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("button",{ref:v,type:"button",onClick:()=>x(e=>!e),"aria-haspopup":"true","aria-expanded":m,className:`w-full flex items-center gap-2 px-3 py-2 text-sm rounded-lg border bg-background text-foreground transition-colors text-left focus-visible:ring-1 focus-visible:ring-ring outline-none ${m?"border-[var(--amber)]":"border-border hover:border-[var(--amber)]/40"}`,children:[(0,s.jsx)(l.A,{size:14,className:"shrink-0 text-[var(--amber)]"}),(0,s.jsx)("span",{className:"flex-1 truncate",children:C}),(0,s.jsx)(d.A,{size:14,className:`shrink-0 text-muted-foreground transition-transform duration-150 ${m?"rotate-180":""}`})]}),A]})}},73321:(e,t,r)=>{"use strict";var s=r(74645);r.o(s,"usePathname")&&r.d(t,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(t,{useRouter:function(){return s.useRouter}}),r.o(s,"useSearchParams")&&r.d(t,{useSearchParams:function(){return s.useSearchParams}})},77148:(e,t,r)=>{"use strict";r.d(t,{Un:()=>a});var s=r(12115);let n="mindos-renderer-state-change";function a(e,t,r){let a=`mindos-renderer:${e}:${t}`,o=(0,s.useRef)({key:a,raw:null,parsed:r});return o.current.key!==a&&(o.current={key:a,raw:null,parsed:r}),[(0,s.useSyncExternalStore)(e=>{let t=()=>e();return window.addEventListener("storage",t),window.addEventListener(n,t),()=>{window.removeEventListener("storage",t),window.removeEventListener(n,t)}},()=>{try{let e=localStorage.getItem(a);if(e===o.current.raw)return o.current.parsed;if(null===e)return o.current={key:a,raw:null,parsed:r},r;let t=JSON.parse(e);return o.current={key:a,raw:e,parsed:t},t}catch{return r}},()=>r),(0,s.useCallback)(e=>{try{let t=(()=>{try{let e=localStorage.getItem(a);return null!==e?JSON.parse(e):r}catch{return r}})(),s="function"==typeof e?e(t):e,n=JSON.stringify(s);localStorage.setItem(a,n),o.current={key:a,raw:n,parsed:s}}catch{}window.dispatchEvent(new Event(n))},[a,r])]}},80723:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},82125:(e,t,r)=>{"use strict";r.d(t,{A:()=>n,C:()=>s});let s=new Set(["INSTRUCTION.md","README.md","CONFIG.json","CHANGELOG.md"]),n=new Set(["TODO.md"])},91337:(e,t,r)=>{"use strict";r.d(t,{IX:()=>i,KW:()=>l,O0:()=>o,cn:()=>a,vr:()=>d});var s=r(29722),n=r(622);function a(...e){return(0,n.QP)((0,s.$)(e))}function o(e){return e.split("/").map(encodeURIComponent).join("/")}function l(e,t){let r=Date.now()-e,s=Math.floor(r/6e4),n=Math.floor(r/36e5),a=Math.floor(r/864e5);return s<1?t.justNow:s<60?t.minutesAgo(s):n<24?t.hoursAgo(n):a<7?t.daysAgo(a):new Date(e).toLocaleDateString()}function i(e){let t=e.match(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}]+/u);return t?.[0]??""}function d(e){return e.replace(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}\s]+/u,"")||e}},92451:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},93631:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("file-plus",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M9 15h6",key:"cctwl0"}],["path",{d:"M12 18v-6",key:"17g6i2"}]])},95404:(e,t,r)=>{"use strict";r.d(t,{i:()=>n});var s=r(9339);let n=(0,s.createServerReference)("40b7879972d1b47af01471724c9e1aa4f9ae0bcdf7",s.callServer,void 0,s.findSourceMapURL,"deleteFileAction")},97631:(e,t,r)=>{"use strict";function s(e,t){let r=e.split("\n"),s=t.split("\n"),n=r.length,a=s.length,o=Array.from({length:n+1},()=>Array(a+1).fill(0));for(let e=n-1;e>=0;e--)for(let t=a-1;t>=0;t--)o[e][t]=r[e]===s[t]?1+o[e+1][t+1]:Math.max(o[e+1][t],o[e][t+1]);let l=[],i=0,d=0;for(;i<n||d<a;){if(i<n&&d<a&&r[i]===s[d]){l.push({type:"equal",text:r[i]}),i+=1,d+=1;continue}if(d<a&&(i>=n||o[i][d+1]>=o[i+1][d])){l.push({type:"insert",text:s[d]}),d+=1;continue}l.push({type:"delete",text:r[i]}),i+=1}return l}function n(e,t=2){let r=new Set;e.forEach((s,n)=>{if("equal"!==s.type)for(let s=Math.max(0,n-t);s<=Math.min(e.length-1,n+t);s++)r.add(s)});let s=[],a=-1;for(let t=0;t<e.length;t++){if(r.has(t)){-1!==a&&(s.push({type:"gap",count:t-a}),a=-1),s.push(e[t]);continue}-1===a&&(a=t)}return -1!==a&&s.push({type:"gap",count:e.length-a}),s}r.d(t,{S:()=>n,m:()=>s})},97810:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(90425).A)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]])}},e=>{e.O(0,[6926,9602,9286,3013,6357,1053,7035,8441,3794,7358],()=>e(e.s=56699)),_N_E=e.O()}]);