clawcrib 0.1.1 → 0.1.3

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 (135) hide show
  1. package/README.md +41 -9
  2. package/bin/clawcrib.mjs +115 -22
  3. package/dist/.next/BUILD_ID +1 -1
  4. package/dist/.next/build-manifest.json +2 -2
  5. package/dist/.next/server/app/_global-error.html +2 -2
  6. package/dist/.next/server/app/_global-error.rsc +1 -1
  7. package/dist/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/dist/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/dist/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/dist/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/dist/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/dist/.next/server/app/_not-found.html +2 -2
  14. package/dist/.next/server/app/_not-found.rsc +3 -3
  15. package/dist/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  16. package/dist/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  17. package/dist/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  18. package/dist/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  19. package/dist/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  20. package/dist/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  21. package/dist/.next/server/app/agent/[name]/page_client-reference-manifest.js +1 -1
  22. package/dist/.next/server/app/browse/page_client-reference-manifest.js +1 -1
  23. package/dist/.next/server/app/browse.html +2 -2
  24. package/dist/.next/server/app/browse.rsc +3 -3
  25. package/dist/.next/server/app/browse.segments/_full.segment.rsc +3 -3
  26. package/dist/.next/server/app/browse.segments/_head.segment.rsc +1 -1
  27. package/dist/.next/server/app/browse.segments/_index.segment.rsc +2 -2
  28. package/dist/.next/server/app/browse.segments/_tree.segment.rsc +2 -2
  29. package/dist/.next/server/app/browse.segments/browse/__PAGE__.segment.rsc +1 -1
  30. package/dist/.next/server/app/browse.segments/browse.segment.rsc +1 -1
  31. package/dist/.next/server/app/builder/page_client-reference-manifest.js +1 -1
  32. package/dist/.next/server/app/builder.html +2 -2
  33. package/dist/.next/server/app/builder.rsc +3 -3
  34. package/dist/.next/server/app/builder.segments/_full.segment.rsc +3 -3
  35. package/dist/.next/server/app/builder.segments/_head.segment.rsc +1 -1
  36. package/dist/.next/server/app/builder.segments/_index.segment.rsc +2 -2
  37. package/dist/.next/server/app/builder.segments/_tree.segment.rsc +2 -2
  38. package/dist/.next/server/app/builder.segments/builder/__PAGE__.segment.rsc +1 -1
  39. package/dist/.next/server/app/builder.segments/builder.segment.rsc +1 -1
  40. package/dist/.next/server/app/crib/[slug]/page_client-reference-manifest.js +1 -1
  41. package/dist/.next/server/app/crib/page_client-reference-manifest.js +1 -1
  42. package/dist/.next/server/app/crib.html +1 -1
  43. package/dist/.next/server/app/crib.rsc +4 -4
  44. package/dist/.next/server/app/crib.segments/_full.segment.rsc +4 -4
  45. package/dist/.next/server/app/crib.segments/_head.segment.rsc +1 -1
  46. package/dist/.next/server/app/crib.segments/_index.segment.rsc +2 -2
  47. package/dist/.next/server/app/crib.segments/_tree.segment.rsc +2 -2
  48. package/dist/.next/server/app/crib.segments/crib/__PAGE__.segment.rsc +2 -2
  49. package/dist/.next/server/app/crib.segments/crib.segment.rsc +1 -1
  50. package/dist/.next/server/app/demo/page_client-reference-manifest.js +1 -1
  51. package/dist/.next/server/app/demo.html +1 -1
  52. package/dist/.next/server/app/demo.rsc +4 -4
  53. package/dist/.next/server/app/demo.segments/_full.segment.rsc +4 -4
  54. package/dist/.next/server/app/demo.segments/_head.segment.rsc +1 -1
  55. package/dist/.next/server/app/demo.segments/_index.segment.rsc +2 -2
  56. package/dist/.next/server/app/demo.segments/_tree.segment.rsc +2 -2
  57. package/dist/.next/server/app/demo.segments/demo/__PAGE__.segment.rsc +2 -2
  58. package/dist/.next/server/app/demo.segments/demo.segment.rsc +1 -1
  59. package/dist/.next/server/app/feedback/page_client-reference-manifest.js +1 -1
  60. package/dist/.next/server/app/feedback.html +2 -2
  61. package/dist/.next/server/app/feedback.rsc +3 -3
  62. package/dist/.next/server/app/feedback.segments/_full.segment.rsc +3 -3
  63. package/dist/.next/server/app/feedback.segments/_head.segment.rsc +1 -1
  64. package/dist/.next/server/app/feedback.segments/_index.segment.rsc +2 -2
  65. package/dist/.next/server/app/feedback.segments/_tree.segment.rsc +2 -2
  66. package/dist/.next/server/app/feedback.segments/feedback/__PAGE__.segment.rsc +1 -1
  67. package/dist/.next/server/app/feedback.segments/feedback.segment.rsc +1 -1
  68. package/dist/.next/server/app/gltest/page_client-reference-manifest.js +1 -1
  69. package/dist/.next/server/app/gltest.html +1 -1
  70. package/dist/.next/server/app/gltest.rsc +3 -3
  71. package/dist/.next/server/app/gltest.segments/_full.segment.rsc +3 -3
  72. package/dist/.next/server/app/gltest.segments/_head.segment.rsc +1 -1
  73. package/dist/.next/server/app/gltest.segments/_index.segment.rsc +2 -2
  74. package/dist/.next/server/app/gltest.segments/_tree.segment.rsc +2 -2
  75. package/dist/.next/server/app/gltest.segments/gltest/__PAGE__.segment.rsc +1 -1
  76. package/dist/.next/server/app/gltest.segments/gltest.segment.rsc +1 -1
  77. package/dist/.next/server/app/help/page_client-reference-manifest.js +1 -1
  78. package/dist/.next/server/app/help.html +2 -2
  79. package/dist/.next/server/app/help.rsc +3 -3
  80. package/dist/.next/server/app/help.segments/_full.segment.rsc +3 -3
  81. package/dist/.next/server/app/help.segments/_head.segment.rsc +1 -1
  82. package/dist/.next/server/app/help.segments/_index.segment.rsc +2 -2
  83. package/dist/.next/server/app/help.segments/_tree.segment.rsc +2 -2
  84. package/dist/.next/server/app/help.segments/help/__PAGE__.segment.rsc +1 -1
  85. package/dist/.next/server/app/help.segments/help.segment.rsc +1 -1
  86. package/dist/.next/server/app/index.html +1 -1
  87. package/dist/.next/server/app/index.rsc +4 -4
  88. package/dist/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  89. package/dist/.next/server/app/index.segments/_full.segment.rsc +4 -4
  90. package/dist/.next/server/app/index.segments/_head.segment.rsc +1 -1
  91. package/dist/.next/server/app/index.segments/_index.segment.rsc +2 -2
  92. package/dist/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  93. package/dist/.next/server/app/learn/page_client-reference-manifest.js +1 -1
  94. package/dist/.next/server/app/learn.html +2 -2
  95. package/dist/.next/server/app/learn.rsc +3 -3
  96. package/dist/.next/server/app/learn.segments/_full.segment.rsc +3 -3
  97. package/dist/.next/server/app/learn.segments/_head.segment.rsc +1 -1
  98. package/dist/.next/server/app/learn.segments/_index.segment.rsc +2 -2
  99. package/dist/.next/server/app/learn.segments/_tree.segment.rsc +2 -2
  100. package/dist/.next/server/app/learn.segments/learn/__PAGE__.segment.rsc +1 -1
  101. package/dist/.next/server/app/learn.segments/learn.segment.rsc +1 -1
  102. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  103. package/dist/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  104. package/dist/.next/server/app/privacy.html +2 -2
  105. package/dist/.next/server/app/privacy.rsc +3 -3
  106. package/dist/.next/server/app/privacy.segments/_full.segment.rsc +3 -3
  107. package/dist/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
  108. package/dist/.next/server/app/privacy.segments/_index.segment.rsc +2 -2
  109. package/dist/.next/server/app/privacy.segments/_tree.segment.rsc +2 -2
  110. package/dist/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +1 -1
  111. package/dist/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
  112. package/dist/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  113. package/dist/.next/server/app/terms.html +2 -2
  114. package/dist/.next/server/app/terms.rsc +3 -3
  115. package/dist/.next/server/app/terms.segments/_full.segment.rsc +3 -3
  116. package/dist/.next/server/app/terms.segments/_head.segment.rsc +1 -1
  117. package/dist/.next/server/app/terms.segments/_index.segment.rsc +2 -2
  118. package/dist/.next/server/app/terms.segments/_tree.segment.rsc +2 -2
  119. package/dist/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
  120. package/dist/.next/server/app/terms.segments/terms.segment.rsc +1 -1
  121. package/dist/.next/server/chunks/ssr/[root-of-the-server]__76b71b25._.js +1 -1
  122. package/dist/.next/server/chunks/ssr/_a46dee72._.js +1 -1
  123. package/dist/.next/server/chunks/ssr/_e01a61c0._.js +1 -1
  124. package/dist/.next/server/middleware-manifest.json +1 -1
  125. package/dist/.next/server/pages/404.html +2 -2
  126. package/dist/.next/server/pages/500.html +2 -2
  127. package/dist/.next/static/chunks/{1a8b8355b176018c.css → 123ff9bd00156eb9.css} +1 -1
  128. package/dist/.next/static/chunks/a6f2506f5593153c.js +1 -0
  129. package/dist/.next/static/chunks/f520d44d82e7efc9.js +1 -0
  130. package/package.json +2 -2
  131. package/dist/.next/static/chunks/6b3aa1f3b4ac9239.js +0 -1
  132. package/dist/.next/static/chunks/eda8b4c24ac1f12f.js +0 -1
  133. /package/dist/.next/static/{7d4fjIFyjViUDWgLnLDuG → I0biwA23B0Jemw5fELRqB}/_buildManifest.js +0 -0
  134. /package/dist/.next/static/{7d4fjIFyjViUDWgLnLDuG → I0biwA23B0Jemw5fELRqB}/_clientMiddlewareManifest.json +0 -0
  135. /package/dist/.next/static/{7d4fjIFyjViUDWgLnLDuG → I0biwA23B0Jemw5fELRqB}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -2,26 +2,58 @@
2
2
 
3
3
  The live 3D office for your [OpenClaw](https://openclaw.ai) agents — watch your whole team work: agents at their desks, walking to the workboard, live task flow, sub-agents, crons, all in real time.
4
4
 
5
- ```sh
6
- npx clawcrib
7
- # → ClawCrib on http://localhost:18787/crib (demo mode)
5
+ ## Install it where your agents run
8
6
 
9
- npx clawcrib --gateway ws://127.0.0.1:18789 --token <token>
10
- # live data from your OpenClaw gateway
7
+ ```sh
8
+ npm i -g clawcrib
9
+ clawcrib start
11
10
  ```
12
11
 
12
+ That's the whole setup. It finds the OpenClaw gateway on that machine, connects to it, and keeps running in the background after you close the terminal — or your SSH session.
13
+
14
+ Over SSH it also binds `0.0.0.0` and prints the LAN address to open, since a loopback bind is unreachable from the laptop you're tunnelling in from.
15
+
16
+ Just looking? `npx clawcrib` runs it once without installing, or see the live demo at [clawcrib.com/demo](https://clawcrib.com/demo).
17
+
18
+ ## Commands
19
+
20
+ | Command | Description |
21
+ | --- | --- |
22
+ | `clawcrib` | Run in the foreground until Ctrl-C |
23
+ | `clawcrib start` | Run in the background |
24
+ | `clawcrib stop` | Stop the background instance |
25
+ | `clawcrib restart` | Stop, then start |
26
+ | `clawcrib status` | Is it running, and is it responding? |
27
+ | `clawcrib install-service` | Keep it running across reboots (systemd / launchd) |
28
+ | `clawcrib uninstall-service` | Remove that service file |
29
+
13
30
  ## Options
14
31
 
15
32
  | Flag | Default | Description |
16
33
  | --- | --- | --- |
17
34
  | `-p, --port` | `18787` | Port to listen on |
18
- | `-g, --gateway` | | OpenClaw gateway WebSocket URL |
35
+ | `-g, --gateway` | auto | Gateway WebSocket URL — only needed for a *remote* gateway |
19
36
  | `-t, --token` | — | Gateway auth token |
20
- | `--host` | `127.0.0.1` | Host to bind |
37
+ | `--host` | `127.0.0.1`, or `0.0.0.0` over SSH | Host to bind |
38
+ | `--demo` | — | Force the simulated team even if a gateway is found |
21
39
  | `--no-open` | — | Don't open the browser |
22
40
 
23
- Without `--gateway`, ClawCrib runs in demo mode with a simulated team so you can explore the crib. `OPENCLAW_GATEWAY_URL` / `OPENCLAW_GATEWAY_TOKEN` environment variables are honored when flags are omitted.
41
+ A gateway on the same machine (`127.0.0.1:18789`) is detected and connected automatically — you only need `--gateway` to point at another host. With no gateway anywhere, ClawCrib shows a simulated team so the floor is never empty. `OPENCLAW_GATEWAY_URL` / `OPENCLAW_GATEWAY_TOKEN` are honored when flags are omitted.
42
+
43
+ If your gateway requires pairing, approve the device on the gateway host:
24
44
 
25
- Floor plans you build are saved to `~/.clawcrib/` (override with `CLAWCRIB_CONFIG_DIR`).
45
+ ```sh
46
+ openclaw devices approve <requestId>
47
+ ```
48
+
49
+ ## Notes
50
+
51
+ Floor plans, the device key and logs live in `~/.clawcrib/` (override with `CLAWCRIB_CONFIG_DIR`). Nothing leaves your network — there's no account and no cloud.
52
+
53
+ Can't reach it from another machine? The port is usually firewalled:
54
+
55
+ ```sh
56
+ sudo ufw allow from 192.168.0.0/24 to any port 18787 proto tcp
57
+ ```
26
58
 
27
59
  More: [clawcrib.com](https://clawcrib.com)
package/bin/clawcrib.mjs CHANGED
@@ -34,19 +34,28 @@ const HELP = `
34
34
  --host <host> Host to bind (default: 127.0.0.1 — use 0.0.0.0 to
35
35
  reach it from another machine over LAN/SSH)
36
36
  --no-open Don't open the browser
37
+ --demo Force the simulated team, even if a gateway is found
37
38
  -v, --version Print version
38
39
  -h, --help Show this help
39
40
 
40
- Without --gateway, ClawCrib runs in demo mode with a simulated team.
41
- Environment variables OPENCLAW_GATEWAY_URL / OPENCLAW_GATEWAY_TOKEN
42
- are honored when flags are not given.
41
+ A gateway on this machine (127.0.0.1:18789) is detected and connected
42
+ automatically you only need --gateway for a remote one. With no gateway
43
+ anywhere, ClawCrib shows a simulated team so the floor is never empty.
44
+ Over SSH the bind defaults to 0.0.0.0 so you can reach it from your laptop.
45
+ OPENCLAW_GATEWAY_URL / OPENCLAW_GATEWAY_TOKEN are honored too.
43
46
  `;
44
47
 
45
48
  const COMMANDS = new Set(["start", "stop", "restart", "status", "install-service", "uninstall-service"]);
46
49
 
50
+ // Reached over SSH, a loopback bind is useless — the dashboard is only visible
51
+ // from inside the box you are already tunnelling into. Default to all
52
+ // interfaces there so `clawcrib start` just works; an explicit --host wins.
53
+ const OVER_SSH = Boolean(process.env.SSH_CONNECTION || process.env.SSH_TTY || process.env.SSH_CLIENT);
54
+
47
55
  function parseArgs(argv) {
48
- const opts = { port: 18787, host: "127.0.0.1", open: true, gateway: null, token: null, cmd: "run" };
56
+ const opts = { port: 18787, host: "127.0.0.1", open: true, gateway: null, token: null, cmd: "run", hostAuto: false, demo: false };
49
57
  if (argv.length && COMMANDS.has(argv[0])) opts.cmd = argv.shift();
58
+ let hostGiven = false;
50
59
  for (let i = 0; i < argv.length; i++) {
51
60
  const a = argv[i];
52
61
  switch (a) {
@@ -64,10 +73,14 @@ function parseArgs(argv) {
64
73
  break;
65
74
  case "--host":
66
75
  opts.host = argv[++i];
76
+ hostGiven = true;
67
77
  break;
68
78
  case "--no-open":
69
79
  opts.open = false;
70
80
  break;
81
+ case "--demo":
82
+ opts.demo = true;
83
+ break;
71
84
  case "-v":
72
85
  case "--version":
73
86
  console.log(pkg.version);
@@ -87,6 +100,10 @@ function parseArgs(argv) {
87
100
  console.error("Invalid --port");
88
101
  process.exit(1);
89
102
  }
103
+ if (!hostGiven && OVER_SSH) {
104
+ opts.host = "0.0.0.0";
105
+ opts.hostAuto = true;
106
+ }
90
107
  return opts;
91
108
  }
92
109
 
@@ -171,10 +188,38 @@ const CONFIG_DIR = process.env.CLAWCRIB_CONFIG_DIR || path.join(os.homedir(), ".
171
188
  const PID_FILE = path.join(CONFIG_DIR, "clawcrib.pid");
172
189
  const LOG_FILE = path.join(CONFIG_DIR, "clawcrib.log");
173
190
 
174
- const url = `http://${opts.host === "0.0.0.0" ? "localhost" : opts.host}:${opts.port}`;
175
- const mode = env.OPENCLAW_GATEWAY_URL
176
- ? `live gateway: ${env.OPENCLAW_GATEWAY_URL}`
177
- : "demo mode (no gateway configured — pass --gateway ws://... for live data)";
191
+ // Health checks always go to loopback, but what we *print* when bound to all
192
+ // interfaces must be the address another machine can actually open. Printing
193
+ // "localhost" there is worse than useless: it is the one URL that cannot work
194
+ // from anywhere else.
195
+ const healthUrl = `http://${opts.host === "0.0.0.0" ? "127.0.0.1" : opts.host}:${opts.port}`;
196
+ const lanIp = lanAddress();
197
+ const url = opts.host === "0.0.0.0" && lanIp ? `http://${lanIp}:${opts.port}` : healthUrl;
198
+ let autoGateway = false;
199
+
200
+ // You installed this on the box your agents run on. Finding the gateway and
201
+ // then asking you to re-type its address is a step that exists for no reason —
202
+ // connect to it. `--demo` opts out, and an explicit --gateway always wins.
203
+ async function resolveGateway() {
204
+ if (env.OPENCLAW_GATEWAY_URL || opts.demo) return;
205
+ if (await probePort("127.0.0.1", GATEWAY_PORT)) {
206
+ env.OPENCLAW_GATEWAY_URL = `ws://127.0.0.1:${GATEWAY_PORT}`;
207
+ autoGateway = true;
208
+ }
209
+ }
210
+
211
+ function modeLine() {
212
+ if (!env.OPENCLAW_GATEWAY_URL) {
213
+ return opts.demo
214
+ ? "demo mode (--demo)"
215
+ : "demo mode — no gateway found on this machine. Pass --gateway ws://host:18789 for a remote one.";
216
+ }
217
+ return autoGateway
218
+ ? `live — auto-connected to the gateway on this machine (${env.OPENCLAW_GATEWAY_URL})`
219
+ : `live gateway: ${env.OPENCLAW_GATEWAY_URL}`;
220
+ }
221
+
222
+ const STATE_FILE = path.join(CONFIG_DIR, "clawcrib.json");
178
223
 
179
224
  function readPid() {
180
225
  try {
@@ -187,16 +232,42 @@ function readPid() {
187
232
  }
188
233
  }
189
234
 
235
+ // What the running instance was actually started with. Without this, `start`
236
+ // can only ask "is something alive?" and would report success while silently
237
+ // ignoring the --host/--port/--gateway you just asked for.
238
+ function readState() {
239
+ try {
240
+ return JSON.parse(readFileSync(STATE_FILE, "utf8"));
241
+ } catch {
242
+ return null;
243
+ }
244
+ }
245
+
246
+ function settingsDiffer(prev) {
247
+ if (!prev) return null;
248
+ const now = { host: opts.host, port: opts.port, gateway: env.OPENCLAW_GATEWAY_URL ?? null };
249
+ const changed = [];
250
+ if (prev.host !== now.host) changed.push(`host ${prev.host} → ${now.host}`);
251
+ if (prev.port !== now.port) changed.push(`port ${prev.port} → ${now.port}`);
252
+ if ((prev.gateway ?? null) !== now.gateway) changed.push(`gateway ${prev.gateway ?? "none"} → ${now.gateway ?? "none"}`);
253
+ return changed.length ? changed : null;
254
+ }
255
+
190
256
  async function printDetails() {
191
257
  if (LOOPBACK.has(opts.host)) {
192
- const lan = lanAddress();
193
258
  console.log(` Note: bound to ${opts.host} — reachable only from this machine.`);
194
259
  console.log(` For LAN/SSH access, use --host 0.0.0.0`);
195
- if (lan) console.log(` then open http://${lan}:${opts.port}`);
260
+ if (lanIp) console.log(` then open http://${lanIp}:${opts.port}`);
261
+ } else if (opts.host === "0.0.0.0") {
262
+ if (opts.hostAuto) console.log(` Bind: 0.0.0.0 (auto: this is an SSH session — pass --host to override)`);
263
+ console.log(` Open: ${url} from another machine on this network`);
264
+ console.log(` Not loading? The port is probably firewalled:`);
265
+ console.log(` sudo ufw allow ${opts.port}/tcp # ufw`);
266
+ console.log(` sudo firewall-cmd --add-port=${opts.port}/tcp --permanent && sudo firewall-cmd --reload`);
196
267
  }
197
- if (!env.OPENCLAW_GATEWAY_URL && (await probePort("127.0.0.1", GATEWAY_PORT))) {
198
- console.log(`\n Found an OpenClaw gateway on 127.0.0.1:${GATEWAY_PORT}. For live agents:`);
199
- console.log(` clawcrib --gateway ws://127.0.0.1:${GATEWAY_PORT}`);
268
+ if (autoGateway) {
269
+ console.log(` If the gateway asks to pair, approve it there:`);
270
+ console.log(` openclaw devices approve <requestId>`);
200
271
  }
201
272
  }
202
273
 
@@ -212,15 +283,36 @@ function spawnServer(detached) {
212
283
  }
213
284
 
214
285
  async function cmdStart() {
286
+ await resolveGateway();
215
287
  const running = readPid();
216
288
  if (running) {
217
- console.log(`\n ClawCrib is already running (pid ${running}) at ${url}\n`);
218
- return;
289
+ const changed = settingsDiffer(readState());
290
+ if (!changed) {
291
+ console.log(`\n ClawCrib is already running (pid ${running}) at ${url}\n`);
292
+ return;
293
+ }
294
+ // You asked for different settings; honouring the old ones and calling it
295
+ // success is how "--host 0.0.0.0" silently did nothing.
296
+ console.log(`\n Restarting with new settings: ${changed.join(", ")}`);
297
+ await cmdStop();
298
+ }
299
+
300
+ // A clearer failure than Node's raw EADDRINUSE stack trace.
301
+ if (await probePort(opts.host === "0.0.0.0" ? "127.0.0.1" : opts.host, opts.port, 400)) {
302
+ console.error(
303
+ `\n Port ${opts.port} is already in use by something else.\n` +
304
+ ` Free it, or pick another: clawcrib start --port 18788\n`
305
+ );
306
+ process.exit(1);
219
307
  }
220
308
  const child = spawnServer(true);
221
309
  child.unref(); // survives this shell exiting
222
310
  writeFileSync(PID_FILE, String(child.pid));
223
- if (!(await waitForServer(url))) {
311
+ writeFileSync(
312
+ STATE_FILE,
313
+ JSON.stringify({ pid: child.pid, host: opts.host, port: opts.port, gateway: env.OPENCLAW_GATEWAY_URL ?? null })
314
+ );
315
+ if (!(await waitForServer(healthUrl))) {
224
316
  console.error(`ClawCrib did not come up within 30s. Log: ${LOG_FILE}`);
225
317
  try {
226
318
  process.kill(child.pid);
@@ -232,7 +324,7 @@ async function cmdStart() {
232
324
  }
233
325
  console.log(`\n ClawCrib v${pkg.version} started in the background (pid ${child.pid})`);
234
326
  console.log(` Crib: ${url}`);
235
- console.log(` Mode: ${mode}`);
327
+ console.log(` Mode: ${modeLine()}`);
236
328
  await printDetails();
237
329
  console.log(`\n Log: ${LOG_FILE}`);
238
330
  console.log(` Stop: clawcrib stop\n`);
@@ -268,7 +360,7 @@ async function cmdStatus() {
268
360
  process.exitCode = 1;
269
361
  return;
270
362
  }
271
- const responding = await waitForServer(url, 3000);
363
+ const responding = await waitForServer(healthUrl, 3000);
272
364
  console.log(`\n ClawCrib is running (pid ${pid})`);
273
365
  console.log(` Crib: ${url} — ${responding ? "responding" : "NOT responding"}`);
274
366
  console.log(` Log: ${LOG_FILE}\n`);
@@ -380,11 +472,12 @@ function cmdUninstallService() {
380
472
  console.log(`\n Removed ${file}\n`);
381
473
  }
382
474
 
383
- function cmdRun() {
475
+ async function cmdRun() {
476
+ await resolveGateway();
384
477
  const child = spawnServer(false);
385
478
  child.stdout.on("data", () => {}); // keep Next's own listen log quiet; we print our own
386
479
 
387
- waitForServer(url).then(async (up) => {
480
+ waitForServer(healthUrl).then(async (up) => {
388
481
  if (!up) {
389
482
  console.error("ClawCrib server did not come up within 30s.");
390
483
  child.kill();
@@ -392,7 +485,7 @@ function cmdRun() {
392
485
  }
393
486
  console.log(`\n ClawCrib v${pkg.version}`);
394
487
  console.log(` Crib: ${url}`);
395
- console.log(` Mode: ${mode}`);
488
+ console.log(` Mode: ${modeLine()}`);
396
489
  await printDetails();
397
490
  console.log(`\n Serving. Press Ctrl-C to stop.`);
398
491
  console.log(` Prefer it always-on? clawcrib start (background)\n`);
@@ -433,5 +526,5 @@ switch (opts.cmd) {
433
526
  cmdUninstallService();
434
527
  break;
435
528
  default:
436
- cmdRun();
529
+ await cmdRun();
437
530
  }
@@ -1 +1 @@
1
- 7d4fjIFyjViUDWgLnLDuG
1
+ I0biwA23B0Jemw5fELRqB
@@ -7,8 +7,8 @@
7
7
  "static/chunks/a6dad97d9634a72d.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/7d4fjIFyjViUDWgLnLDuG/_ssgManifest.js",
11
- "static/7d4fjIFyjViUDWgLnLDuG/_buildManifest.js"
10
+ "static/I0biwA23B0Jemw5fELRqB/_ssgManifest.js",
11
+ "static/I0biwA23B0Jemw5fELRqB/_buildManifest.js"
12
12
  ],
13
13
  "rootMainFiles": [
14
14
  "static/chunks/251e16428085edaf.js",
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><!--7d4fjIFyjViUDWgLnLDuG--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/251e16428085edaf.js"/><script src="/_next/static/chunks/f188e57e58a39d0f.js" async=""></script><script src="/_next/static/chunks/045c83caa4d15373.js" async=""></script><script src="/_next/static/chunks/619d93506b5beb32.js" async=""></script><script src="/_next/static/chunks/82abf2d65f5428ae.js" async=""></script><script src="/_next/static/chunks/turbopack-aadb2fcebd6885bc.js" async=""></script><script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/_next/static/chunks/0bd6498bda341889.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
- @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/251e16428085edaf.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"ViewportBoundary\"]\n9:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"MetadataBoundary\"]\nb:I[68027,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"7d4fjIFyjViUDWgLnLDuG\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ff1a16fafef87110.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0bd6498bda341889.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--I0biwA23B0Jemw5fELRqB--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/251e16428085edaf.js"/><script src="/_next/static/chunks/f188e57e58a39d0f.js" async=""></script><script src="/_next/static/chunks/045c83caa4d15373.js" async=""></script><script src="/_next/static/chunks/619d93506b5beb32.js" async=""></script><script src="/_next/static/chunks/82abf2d65f5428ae.js" async=""></script><script src="/_next/static/chunks/turbopack-aadb2fcebd6885bc.js" async=""></script><script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script><script src="/_next/static/chunks/0bd6498bda341889.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
+ @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/251e16428085edaf.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"ViewportBoundary\"]\n9:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"MetadataBoundary\"]\nb:I[68027,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/0bd6498bda341889.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"I0biwA23B0Jemw5fELRqB\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ff1a16fafef87110.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0bd6498bda341889.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
@@ -6,7 +6,7 @@
6
6
  7:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"ViewportBoundary"]
7
7
  9:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"MetadataBoundary"]
8
8
  b:I[68027,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"default"]
9
- 0:{"P":null,"b":"7d4fjIFyjViUDWgLnLDuG","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/ff1a16fafef87110.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0bd6498bda341889.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true}
9
+ 0:{"P":null,"b":"I0biwA23B0Jemw5fELRqB","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/ff1a16fafef87110.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0bd6498bda341889.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true}
10
10
  8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
11
11
  6:null
12
12
  a:[]
@@ -1,5 +1,5 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"OutletBoundary"]
3
3
  3:"$Sreact.suspense"
4
- 0:{"buildId":"7d4fjIFyjViUDWgLnLDuG","rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/ff1a16fafef87110.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0bd6498bda341889.js","async":true}]],["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false}
4
+ 0:{"buildId":"I0biwA23B0Jemw5fELRqB","rsc":["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/ff1a16fafef87110.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0bd6498bda341889.js","async":true}]],["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"loading":null,"isPartial":false}
5
5
  4:null
@@ -6,7 +6,7 @@
6
6
  7:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"ViewportBoundary"]
7
7
  9:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"MetadataBoundary"]
8
8
  b:I[68027,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"default"]
9
- 0:{"P":null,"b":"7d4fjIFyjViUDWgLnLDuG","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/ff1a16fafef87110.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0bd6498bda341889.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true}
9
+ 0:{"P":null,"b":"I0biwA23B0Jemw5fELRqB","c":["","_global-error"],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]}],[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","html",null,{"id":"__next_error__","children":[["$","head",null,{"children":["$","title",null,{"children":"500: Internal Server Error."}]}],["$","body",null,{"children":["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"style":{"lineHeight":"48px"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","paddingRight":23,"fontSize":24,"fontWeight":500,"verticalAlign":"top"},"children":"500"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"28px"},"children":"Internal Server Error."}]}]]}]}]}]]}],[["$","script","script-0",{"src":"/_next/static/chunks/ff1a16fafef87110.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0bd6498bda341889.js","async":true,"nonce":"$undefined"}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$L7",null,{"children":"$L8"}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$5",null,{"name":"Next.Metadata","children":"$La"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$b","$undefined"],"S":true}
10
10
  8:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
11
11
  6:null
12
12
  a:[]
@@ -2,4 +2,4 @@
2
2
  2:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"ViewportBoundary"]
3
3
  3:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
- 0:{"buildId":"7d4fjIFyjViUDWgLnLDuG","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
5
+ 0:{"buildId":"I0biwA23B0Jemw5fELRqB","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"loading":null,"isPartial":false}
@@ -1,4 +1,4 @@
1
1
  1:"$Sreact.fragment"
2
2
  2:I[39756,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"default"]
3
3
  3:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"default"]
4
- 0:{"buildId":"7d4fjIFyjViUDWgLnLDuG","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
4
+ 0:{"buildId":"I0biwA23B0Jemw5fELRqB","rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"loading":null,"isPartial":false}
@@ -1 +1 @@
1
- 0:{"buildId":"7d4fjIFyjViUDWgLnLDuG","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false},"staleTime":300}
1
+ 0:{"buildId":"I0biwA23B0Jemw5fELRqB","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false},"staleTime":300}
@@ -1,2 +1,2 @@
1
1
  globalThis.__RSC_MANIFEST = globalThis.__RSC_MANIFEST || {};
2
- globalThis.__RSC_MANIFEST["/_not-found/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/@vercel/analytics/dist/next/index.mjs <module evaluation>":{"id":2355,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/node_modules/@vercel/analytics/dist/next/index.mjs":{"id":2355,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/components/ConvexClientProvider.tsx <module evaluation>":{"id":41658,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/components/ConvexClientProvider.tsx":{"id":41658,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/lib/theme.tsx <module evaluation>":{"id":2534,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/lib/theme.tsx":{"id":2534,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/components/AppShell.tsx <module evaluation>":{"id":49830,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/components/AppShell.tsx":{"id":49830,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/app/error.tsx <module evaluation>":{"id":58298,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js","/_next/static/chunks/5e108d2a5086dd3c.js"],"async":false},"[project]/src/app/error.tsx":{"id":58298,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js","/_next/static/chunks/5e108d2a5086dd3c.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>":{"id":22016,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js":{"id":22016,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false}},"ssrModuleMapping":{"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"2355":{"*":{"id":62065,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}},"41658":{"*":{"id":82084,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}},"2534":{"*":{"id":66351,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}},"49830":{"*":{"id":15149,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}},"58298":{"*":{"id":23953,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js","server/chunks/ssr/_be519242._.js"],"async":false}},"22016":{"*":{"id":38246,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":13778,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":33249,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"2355":{"*":{"id":81037,"name":"*","chunks":[],"async":false}},"41658":{"*":{"id":26241,"name":"*","chunks":[],"async":false}},"2534":{"*":{"id":67059,"name":"*","chunks":[],"async":false}},"49830":{"*":{"id":43297,"name":"*","chunks":[],"async":false}},"58298":{"*":{"id":80257,"name":"*","chunks":[],"async":false}},"22016":{"*":{"id":84707,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/app/icon.svg":[],"[project]/src/app/layout":[{"path":"static/chunks/87c6fa7148018b34.css","inlined":false},{"path":"static/chunks/1a8b8355b176018c.css","inlined":false}],"[project]/src/app/error":[{"path":"static/chunks/87c6fa7148018b34.css","inlined":false},{"path":"static/chunks/1a8b8355b176018c.css","inlined":false}],"[project]/src/app/not-found":[{"path":"static/chunks/87c6fa7148018b34.css","inlined":false},{"path":"static/chunks/1a8b8355b176018c.css","inlined":false}]},"entryJSFiles":{"[project]/src/app/icon.svg":["static/chunks/ff1a16fafef87110.js","static/chunks/0bd6498bda341889.js"],"[project]/src/app/layout":["static/chunks/3cb5ccf4d1eaa633.js","static/chunks/169b21b9dab86074.js"],"[project]/src/app/error":["static/chunks/3cb5ccf4d1eaa633.js","static/chunks/169b21b9dab86074.js","static/chunks/5e108d2a5086dd3c.js"],"[project]/src/app/not-found":["static/chunks/3cb5ccf4d1eaa633.js","static/chunks/169b21b9dab86074.js"]}}
2
+ globalThis.__RSC_MANIFEST["/_not-found/page"] = {"moduleLoading":{"prefix":"","crossOrigin":null},"clientModules":{"[project]/node_modules/next/dist/client/components/builtin/global-error.js <module evaluation>":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/client/components/builtin/global-error.js":{"id":68027,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js <module evaluation>":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/layout-router.js":{"id":39756,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js <module evaluation>":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":37457,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js <module evaluation>":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-page.js":{"id":47257,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js <module evaluation>":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/client-segment.js":{"id":92825,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js <module evaluation>":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":68017,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js <module evaluation>":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":27201,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js <module evaluation>":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":97367,"name":"*","chunks":["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/0bd6498bda341889.js"],"async":false},"[project]/node_modules/@vercel/analytics/dist/next/index.mjs <module evaluation>":{"id":2355,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/node_modules/@vercel/analytics/dist/next/index.mjs":{"id":2355,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/components/ConvexClientProvider.tsx <module evaluation>":{"id":41658,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/components/ConvexClientProvider.tsx":{"id":41658,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/lib/theme.tsx <module evaluation>":{"id":2534,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/lib/theme.tsx":{"id":2534,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/components/AppShell.tsx <module evaluation>":{"id":49830,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/components/AppShell.tsx":{"id":49830,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/src/app/error.tsx <module evaluation>":{"id":58298,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js","/_next/static/chunks/5e108d2a5086dd3c.js"],"async":false},"[project]/src/app/error.tsx":{"id":58298,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js","/_next/static/chunks/5e108d2a5086dd3c.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>":{"id":22016,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false},"[project]/node_modules/next/dist/client/app-dir/link.js":{"id":22016,"name":"*","chunks":["/_next/static/chunks/3cb5ccf4d1eaa633.js","/_next/static/chunks/169b21b9dab86074.js"],"async":false}},"ssrModuleMapping":{"68027":{"*":{"id":40622,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"39756":{"*":{"id":2420,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"37457":{"*":{"id":24017,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"47257":{"*":{"id":77682,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"92825":{"*":{"id":97296,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"68017":{"*":{"id":61660,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"27201":{"*":{"id":60704,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"97367":{"*":{"id":90574,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__1eed2761._.js","server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js"],"async":false}},"2355":{"*":{"id":62065,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}},"41658":{"*":{"id":82084,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}},"2534":{"*":{"id":66351,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}},"49830":{"*":{"id":15149,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}},"58298":{"*":{"id":23953,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js","server/chunks/ssr/_be519242._.js"],"async":false}},"22016":{"*":{"id":38246,"name":"*","chunks":["server/chunks/ssr/[root-of-the-server]__e79298db._.js","server/chunks/ssr/node_modules_next_920e7746._.js","server/chunks/ssr/_3449c279._.js","server/chunks/ssr/node_modules_@convex-dev_auth_dist_react_index_c572ed70.js","server/chunks/ssr/src_components_ConvexClientProvider_tsx_df965ff3._.js","server/chunks/ssr/node_modules_next_dist_61a87db9._.js"],"async":false}}},"edgeSSRModuleMapping":{},"rscModuleMapping":{"68027":{"*":{"id":82509,"name":"*","chunks":[],"async":false}},"39756":{"*":{"id":26768,"name":"*","chunks":[],"async":false}},"37457":{"*":{"id":13778,"name":"*","chunks":[],"async":false}},"47257":{"*":{"id":92977,"name":"*","chunks":[],"async":false}},"92825":{"*":{"id":48552,"name":"*","chunks":[],"async":false}},"68017":{"*":{"id":83919,"name":"*","chunks":[],"async":false}},"27201":{"*":{"id":33249,"name":"*","chunks":[],"async":false}},"97367":{"*":{"id":24150,"name":"*","chunks":[],"async":false}},"2355":{"*":{"id":81037,"name":"*","chunks":[],"async":false}},"41658":{"*":{"id":26241,"name":"*","chunks":[],"async":false}},"2534":{"*":{"id":67059,"name":"*","chunks":[],"async":false}},"49830":{"*":{"id":43297,"name":"*","chunks":[],"async":false}},"58298":{"*":{"id":80257,"name":"*","chunks":[],"async":false}},"22016":{"*":{"id":84707,"name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{},"entryCSSFiles":{"[project]/src/app/icon.svg":[],"[project]/src/app/layout":[{"path":"static/chunks/87c6fa7148018b34.css","inlined":false},{"path":"static/chunks/123ff9bd00156eb9.css","inlined":false}],"[project]/src/app/error":[{"path":"static/chunks/87c6fa7148018b34.css","inlined":false},{"path":"static/chunks/123ff9bd00156eb9.css","inlined":false}],"[project]/src/app/not-found":[{"path":"static/chunks/87c6fa7148018b34.css","inlined":false},{"path":"static/chunks/123ff9bd00156eb9.css","inlined":false}]},"entryJSFiles":{"[project]/src/app/icon.svg":["static/chunks/ff1a16fafef87110.js","static/chunks/0bd6498bda341889.js"],"[project]/src/app/layout":["static/chunks/3cb5ccf4d1eaa633.js","static/chunks/169b21b9dab86074.js"],"[project]/src/app/error":["static/chunks/3cb5ccf4d1eaa633.js","static/chunks/169b21b9dab86074.js","static/chunks/5e108d2a5086dd3c.js"],"[project]/src/app/not-found":["static/chunks/3cb5ccf4d1eaa633.js","static/chunks/169b21b9dab86074.js"]}}