neural-loom 0.2.40 → 0.2.41

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 (122) hide show
  1. package/.next/build-manifest.json +3 -3
  2. package/.next/cache/.previewinfo +1 -1
  3. package/.next/cache/.rscinfo +1 -1
  4. package/.next/cache/.tsbuildinfo +1 -1
  5. package/.next/diagnostics/build-diagnostics.json +1 -1
  6. package/.next/fallback-build-manifest.json +3 -3
  7. package/.next/server/app/api/context/aider/route.js.nft.json +1 -1
  8. package/.next/server/app/api/context/claude/route.js.nft.json +1 -1
  9. package/.next/server/app/api/context/ssh/route.js.nft.json +1 -1
  10. package/.next/server/app/api/recents/route.js.nft.json +1 -1
  11. package/.next/server/app/api/sessions/inject/route.js +1 -1
  12. package/.next/server/app/api/sessions/inject/route.js.nft.json +1 -1
  13. package/.next/server/app/api/sessions/input/route.js +1 -1
  14. package/.next/server/app/api/sessions/input/route.js.nft.json +1 -1
  15. package/.next/server/app/api/sessions/launch/route.js +1 -1
  16. package/.next/server/app/api/sessions/launch/route.js.nft.json +1 -1
  17. package/.next/server/app/api/sessions/route.js +1 -1
  18. package/.next/server/app/api/sessions/route.js.nft.json +1 -1
  19. package/.next/server/app/api/sessions/scope/route.js +1 -1
  20. package/.next/server/app/api/sessions/scope/route.js.nft.json +1 -1
  21. package/.next/server/app/api/sessions/start/route.js +1 -1
  22. package/.next/server/app/api/sessions/start/route.js.nft.json +1 -1
  23. package/.next/server/app/api/sessions/stats/route.js +1 -1
  24. package/.next/server/app/api/sessions/stats/route.js.nft.json +1 -1
  25. package/.next/server/app/api/sessions/stop/route.js +1 -1
  26. package/.next/server/app/api/sessions/stop/route.js.nft.json +1 -1
  27. package/.next/server/app/page/react-loadable-manifest.json +3 -3
  28. package/.next/server/app/page_client-reference-manifest.js +1 -1
  29. package/.next/server/chunks/[root-of-the-server]__005xmeg._.js +15 -0
  30. package/.next/server/chunks/{[root-of-the-server]__0d9_-7g._.js.map → [root-of-the-server]__005xmeg._.js.map} +1 -1
  31. package/.next/server/chunks/[root-of-the-server]__0_~zjnf._.js +15 -0
  32. package/.next/server/chunks/{[root-of-the-server]__0fhv7.1._.js.map → [root-of-the-server]__0_~zjnf._.js.map} +1 -1
  33. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js +8 -8
  34. package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js.map +1 -1
  35. package/.next/server/chunks/[root-of-the-server]__0hl8jxx._.js +15 -0
  36. package/.next/server/chunks/{[root-of-the-server]__0~zauvq._.js.map → [root-of-the-server]__0hl8jxx._.js.map} +1 -1
  37. package/.next/server/chunks/[root-of-the-server]__0ho7s6e._.js +15 -0
  38. package/.next/server/chunks/{[root-of-the-server]__0-vx6-s._.js.map → [root-of-the-server]__0ho7s6e._.js.map} +1 -1
  39. package/.next/server/chunks/[root-of-the-server]__0lh_jn-._.js +15 -0
  40. package/.next/server/chunks/{[root-of-the-server]__0xr~y1f._.js.map → [root-of-the-server]__0lh_jn-._.js.map} +1 -1
  41. package/.next/server/chunks/[root-of-the-server]__0mq3k0u._.js +15 -0
  42. package/.next/server/chunks/{[root-of-the-server]__0zkcq9q._.js.map → [root-of-the-server]__0mq3k0u._.js.map} +1 -1
  43. package/.next/server/chunks/[root-of-the-server]__0rr36fm._.js +15 -0
  44. package/.next/server/chunks/{[root-of-the-server]__0qqnqov._.js.map → [root-of-the-server]__0rr36fm._.js.map} +1 -1
  45. package/.next/server/chunks/[root-of-the-server]__0xcrc-1._.js +15 -0
  46. package/.next/server/chunks/{[root-of-the-server]__0t_~on0._.js.map → [root-of-the-server]__0xcrc-1._.js.map} +1 -1
  47. package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js +1 -1
  48. package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js.map +1 -1
  49. package/.next/server/chunks/ssr/_0t7oqy6._.js +1 -1
  50. package/.next/server/chunks/ssr/_0t7oqy6._.js.map +1 -1
  51. package/.next/server/middleware-build-manifest.js +3 -3
  52. package/.next/server/pages-manifest.json +1 -4
  53. package/.next/server/server-reference-manifest.js +1 -1
  54. package/.next/server/server-reference-manifest.json +1 -1
  55. package/.next/static/ZtSBLhTiGqKpNetcymWiC/_ssgManifest.js +1 -0
  56. package/.next/static/chunks/{0x__nd4avi0fg.js → 070hz362~_h8n.js} +1 -1
  57. package/.next/static/chunks/0bclk7hf35ac4.js +1 -0
  58. package/.next/static/chunks/17jifiroq0_q..js +1 -0
  59. package/package.json +1 -1
  60. package/src/app/components/IdeLayout.tsx +500 -25
  61. package/src/app/components/TerminalConsole.tsx +2 -2
  62. package/src/app/layout.tsx +0 -1
  63. package/src/app/page.tsx +12 -4
  64. package/src/lib/agents/AiderRunner.ts +8 -8
  65. package/src/lib/agents/ClaudeRunner.ts +43 -18
  66. package/src/lib/agents/DockerRunner.ts +1 -3
  67. package/src/lib/agents/SSHRunner.ts +1 -3
  68. package/src/lib/agents/ShellRunner.ts +1 -3
  69. package/src/lib/agents/WebSocketServer.ts +20 -13
  70. package/.next/BUILD_ID +0 -1
  71. package/.next/app-path-routes-manifest.json +0 -20
  72. package/.next/diagnostics/route-bundle-stats.json +0 -25
  73. package/.next/export-marker.json +0 -6
  74. package/.next/images-manifest.json +0 -68
  75. package/.next/prerender-manifest.json +0 -85
  76. package/.next/required-server-files.js +0 -335
  77. package/.next/required-server-files.json +0 -335
  78. package/.next/routes-manifest.json +0 -153
  79. package/.next/server/app/_global-error.html +0 -1
  80. package/.next/server/app/_global-error.meta +0 -15
  81. package/.next/server/app/_global-error.rsc +0 -14
  82. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +0 -5
  83. package/.next/server/app/_global-error.segments/_full.segment.rsc +0 -14
  84. package/.next/server/app/_global-error.segments/_head.segment.rsc +0 -5
  85. package/.next/server/app/_global-error.segments/_index.segment.rsc +0 -5
  86. package/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
  87. package/.next/server/app/_not-found.html +0 -1
  88. package/.next/server/app/_not-found.meta +0 -16
  89. package/.next/server/app/_not-found.rsc +0 -16
  90. package/.next/server/app/_not-found.segments/_full.segment.rsc +0 -16
  91. package/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  92. package/.next/server/app/_not-found.segments/_index.segment.rsc +0 -5
  93. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  94. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
  95. package/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -2
  96. package/.next/server/app/index.html +0 -1
  97. package/.next/server/app/index.meta +0 -14
  98. package/.next/server/app/index.rsc +0 -21
  99. package/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -10
  100. package/.next/server/app/index.segments/_full.segment.rsc +0 -21
  101. package/.next/server/app/index.segments/_head.segment.rsc +0 -6
  102. package/.next/server/app/index.segments/_index.segment.rsc +0 -5
  103. package/.next/server/app/index.segments/_tree.segment.rsc +0 -5
  104. package/.next/server/chunks/[root-of-the-server]__0-vx6-s._.js +0 -15
  105. package/.next/server/chunks/[root-of-the-server]__0d9_-7g._.js +0 -15
  106. package/.next/server/chunks/[root-of-the-server]__0fhv7.1._.js +0 -15
  107. package/.next/server/chunks/[root-of-the-server]__0qqnqov._.js +0 -15
  108. package/.next/server/chunks/[root-of-the-server]__0t_~on0._.js +0 -15
  109. package/.next/server/chunks/[root-of-the-server]__0xr~y1f._.js +0 -15
  110. package/.next/server/chunks/[root-of-the-server]__0zkcq9q._.js +0 -15
  111. package/.next/server/chunks/[root-of-the-server]__0~zauvq._.js +0 -15
  112. package/.next/server/functions-config-manifest.json +0 -4
  113. package/.next/server/pages/404.html +0 -1
  114. package/.next/server/pages/500.html +0 -1
  115. package/.next/server/prefetch-hints.json +0 -1
  116. package/.next/static/5uGIuH8oXybqivkeHIrqb/_ssgManifest.js +0 -1
  117. package/.next/static/chunks/07-tub5vqy.fk.js +0 -1
  118. package/.next/static/chunks/0wq3_34inbzj6.js +0 -1
  119. package/.next/trace +0 -1
  120. package/.next/trace-build +0 -1
  121. /package/.next/static/{5uGIuH8oXybqivkeHIrqb → ZtSBLhTiGqKpNetcymWiC}/_buildManifest.js +0 -0
  122. /package/.next/static/{5uGIuH8oXybqivkeHIrqb → ZtSBLhTiGqKpNetcymWiC}/_clientMiddlewareManifest.js +0 -0
@@ -1,13 +1,13 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
+ import os from "os";
4
+ import { execSync } from "child_process";
3
5
  import type { IPty } from "node-pty";
4
6
  import { AgentRunner, RunnerStatus } from "./AgentRunner";
5
7
  import { SessionPersister } from "./SessionPersister";
6
8
 
7
9
  function isWindows(): boolean {
8
- if (typeof process === "undefined") return false;
9
- const key = Object.keys(process).find(k => k.startsWith("plat") && k.endsWith("form"));
10
- return !!key && (process as unknown as Record<string, unknown>)[key] === "win32";
10
+ return typeof process !== "undefined" && process.platform === "win32";
11
11
  }
12
12
 
13
13
  function findGitBash(): string | null {
@@ -60,12 +60,14 @@ export class ClaudeRunner extends AgentRunner {
60
60
  if (this.status === 'running') return;
61
61
 
62
62
  // Detect Git Bash on Windows
63
- const bashPath = findGitBash();
64
- if (!bashPath) {
63
+ const useCmd = isWindows();
64
+ const shellPath = useCmd ? (process.env.COMSPEC || "cmd.exe") : findGitBash();
65
+ if (!shellPath) {
65
66
  this.status = 'stopped';
66
- this.appendLog("\x1b[1;31m[System Error] Git Bash not found. Please install Git for Windows.\x1b[0m\r\n");
67
+ this.appendLog("\x1b[1;31m[System Error] Shell not found. Cannot spawn terminal.\x1b[0m\r\n");
67
68
  return;
68
69
  }
70
+ const shellArgs = useCmd ? ["/c"] : ["-c"];
69
71
 
70
72
  try {
71
73
  // Dynamic import to prevent bundler SSR/Turbopack errors on server start
@@ -96,24 +98,47 @@ export class ClaudeRunner extends AgentRunner {
96
98
  }
97
99
  }
98
100
 
99
- const claudeCmd = `claude ${extraFlags}`.trim();
101
+ // Setup process environment with injected keys
102
+ const customEnv = {
103
+ ...process.env,
104
+ TERM: "xterm-256color",
105
+ COLORTERM: "truecolor",
106
+ } as Record<string, string>;
107
+
108
+ if (isWindows()) {
109
+ const vsNode = "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VisualStudio\\NodeJs";
110
+ const localNpm = path.join(os.homedir(), "AppData", "Local", "npm");
111
+ const existingPath = process.env.Path || process.env.PATH || "";
112
+ const winPath = [vsNode, localNpm, existingPath].filter(Boolean).join(";");
113
+
114
+ for (const key of Object.keys(customEnv)) {
115
+ if (key.toLowerCase() === "path") {
116
+ delete customEnv[key];
117
+ }
118
+ }
119
+ customEnv.Path = winPath;
120
+ customEnv.PATH = winPath;
121
+ }
122
+
123
+ // Check if 'claude' command exists in PATH, fallback to npx if not
124
+ let baseCmd = "claude";
125
+ try {
126
+ const checkCmd = isWindows() ? "where.exe claude" : "which claude";
127
+ execSync(checkCmd, { env: customEnv, stdio: "ignore" });
128
+ } catch {
129
+ baseCmd = "npx -y @anthropic-ai/claude-code";
130
+ }
131
+
132
+ const claudeCmd = `${baseCmd} ${extraFlags}`.trim();
100
133
  this.appendLog(`[System] Spawning command: ${claudeCmd}\r\n`);
101
134
 
102
- // Spawn bash and run 'claude' command
103
- this.ptyProcess = this.ptyModule!.spawn(bashPath, ["-c", claudeCmd], {
135
+ // Spawn shell and run 'claude' command
136
+ this.ptyProcess = this.ptyModule!.spawn(shellPath, [...shellArgs, claudeCmd], {
104
137
  name: "xterm-256color",
105
138
  cols: 120,
106
139
  rows: 30,
107
140
  cwd: targetCwd,
108
- env: {
109
- ...process.env,
110
- TERM: "xterm-256color",
111
- COLORTERM: "truecolor",
112
- // Inject custom path just in case child processes need Visual Studio Node on Windows
113
- ...(isWindows() ? {
114
- PATH: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Microsoft\\VisualStudio\\NodeJs;" + process.env.PATH
115
- } : {})
116
- },
141
+ env: customEnv,
117
142
  });
118
143
 
119
144
  // Capture output
@@ -5,9 +5,7 @@ import { AgentRunner, RunnerStatus } from "./AgentRunner";
5
5
  import { SessionPersister } from "./SessionPersister";
6
6
 
7
7
  function isWindows(): boolean {
8
- if (typeof process === "undefined") return false;
9
- const key = Object.keys(process).find(k => k.startsWith("plat") && k.endsWith("form"));
10
- return !!key && (process as unknown as Record<string, unknown>)[key] === "win32";
8
+ return typeof process !== "undefined" && process.platform === "win32";
11
9
  }
12
10
 
13
11
  function findGitBash(): string | null {
@@ -5,9 +5,7 @@ import { AgentRunner, RunnerStatus } from "./AgentRunner";
5
5
  import { SessionPersister } from "./SessionPersister";
6
6
 
7
7
  function isWindows(): boolean {
8
- if (typeof process === "undefined") return false;
9
- const key = Object.keys(process).find(k => k.startsWith("plat") && k.endsWith("form"));
10
- return !!key && (process as unknown as Record<string, unknown>)[key] === "win32";
8
+ return typeof process !== "undefined" && process.platform === "win32";
11
9
  }
12
10
 
13
11
  function findGitBash(): string | null {
@@ -4,9 +4,7 @@ import type { IPty } from "node-pty";
4
4
  import { AgentRunner, RunnerStatus } from "./AgentRunner";
5
5
 
6
6
  function isWindows(): boolean {
7
- if (typeof process === "undefined") return false;
8
- const key = Object.keys(process).find(k => k.startsWith("plat") && k.endsWith("form"));
9
- return !!key && (process as unknown as Record<string, unknown>)[key] === "win32";
7
+ return typeof process !== "undefined" && process.platform === "win32";
10
8
  }
11
9
 
12
10
  function findGitBash(): string | null {
@@ -44,11 +44,9 @@ export function initWebSocketServer(port = 3001, getSession?: (id: string) => Ag
44
44
  console.log(`[WebSocketServer] WebSocket gateway successfully listening on port ${currentPort}.`);
45
45
  });
46
46
 
47
- wss.on("connection", (ws: WebSocket & { sessionId?: string }) => {
47
+ wss.on("connection", (ws: WebSocket & { sessionId?: string; outputListener?: (data: string) => void }) => {
48
48
  console.log("[WebSocketServer] New client connected via gateway.");
49
49
 
50
- let activeSessionId: string | null = null;
51
- let outputListener: ((data: string) => void) | null = null;
52
50
  let mockBuffer = "";
53
51
 
54
52
  ws.on("message", async (rawMsg) => {
@@ -58,20 +56,29 @@ export function initWebSocketServer(port = 3001, getSession?: (id: string) => Ag
58
56
  // Client handshake to establish connection to a specific session
59
57
  if (msg.type === "handshake") {
60
58
  const { sessionId } = msg;
59
+
60
+ // Clean up previous registration for this connection if it exists
61
+ if (ws.sessionId && ws.outputListener) {
62
+ const oldSession = getSessionCallback ? getSessionCallback(ws.sessionId) : null;
63
+ if (oldSession) {
64
+ oldSession.offOutput(ws.outputListener);
65
+ }
66
+ }
67
+
61
68
  const session = getSessionCallback ? getSessionCallback(sessionId) : null;
62
69
 
63
70
  if (session) {
64
- activeSessionId = sessionId;
65
71
  ws.sessionId = sessionId;
66
72
  console.log(`[WebSocketServer] Client connected to active session: ${sessionId}`);
67
73
 
68
74
  // Subscribe to runner output events
69
- outputListener = (data: string) => {
75
+ const listener = (data: string) => {
70
76
  if (ws.readyState === WebSocket.OPEN) {
71
77
  ws.send(JSON.stringify({ type: "output", data }));
72
78
  }
73
79
  };
74
- session.onOutput(outputListener);
80
+ ws.outputListener = listener;
81
+ session.onOutput(listener);
75
82
 
76
83
  // Send handshake acknowledgment and full historical logs
77
84
  ws.send(
@@ -87,8 +94,8 @@ export function initWebSocketServer(port = 3001, getSession?: (id: string) => Ag
87
94
  }
88
95
 
89
96
  // User terminal input routing
90
- if (msg.type === "input" && activeSessionId) {
91
- const session = getSessionCallback ? getSessionCallback(activeSessionId) : null;
97
+ if (msg.type === "input" && ws.sessionId) {
98
+ const session = getSessionCallback ? getSessionCallback(ws.sessionId) : null;
92
99
  if (session && session.status === "running") {
93
100
  if (session.type === "mock") {
94
101
  // Buffer input for simulated command parsing in MockRunner
@@ -115,9 +122,9 @@ export function initWebSocketServer(port = 3001, getSession?: (id: string) => Ag
115
122
  }
116
123
 
117
124
  // User terminal resize routing
118
- if (msg.type === "resize" && activeSessionId) {
125
+ if (msg.type === "resize" && ws.sessionId) {
119
126
  const { cols, rows } = msg;
120
- const session = getSessionCallback ? getSessionCallback(activeSessionId) : null;
127
+ const session = getSessionCallback ? getSessionCallback(ws.sessionId) : null;
121
128
  if (session) {
122
129
  session.resize(cols, rows);
123
130
  }
@@ -128,10 +135,10 @@ export function initWebSocketServer(port = 3001, getSession?: (id: string) => Ag
128
135
  });
129
136
 
130
137
  ws.on("close", () => {
131
- if (activeSessionId && outputListener) {
132
- const session = getSessionCallback ? getSessionCallback(activeSessionId) : null;
138
+ if (ws.sessionId && ws.outputListener) {
139
+ const session = getSessionCallback ? getSessionCallback(ws.sessionId) : null;
133
140
  if (session) {
134
- session.offOutput(outputListener);
141
+ session.offOutput(ws.outputListener);
135
142
  }
136
143
  }
137
144
  console.log("[WebSocketServer] Client connection closed.");
package/.next/BUILD_ID DELETED
@@ -1 +0,0 @@
1
- 5uGIuH8oXybqivkeHIrqb
@@ -1,20 +0,0 @@
1
- {
2
- "/_global-error/page": "/_global-error",
3
- "/_not-found/page": "/_not-found",
4
- "/api/context/aider/route": "/api/context/aider",
5
- "/api/context/claude/route": "/api/context/claude",
6
- "/api/context/route": "/api/context",
7
- "/api/context/ssh/route": "/api/context/ssh",
8
- "/api/files/route": "/api/files",
9
- "/api/git/route": "/api/git",
10
- "/api/recents/route": "/api/recents",
11
- "/api/sessions/inject/route": "/api/sessions/inject",
12
- "/api/sessions/input/route": "/api/sessions/input",
13
- "/api/sessions/launch/route": "/api/sessions/launch",
14
- "/api/sessions/route": "/api/sessions",
15
- "/api/sessions/scope/route": "/api/sessions/scope",
16
- "/api/sessions/start/route": "/api/sessions/start",
17
- "/api/sessions/stats/route": "/api/sessions/stats",
18
- "/api/sessions/stop/route": "/api/sessions/stop",
19
- "/page": "/"
20
- }
@@ -1,25 +0,0 @@
1
- [
2
- {
3
- "route": "/",
4
- "firstLoadUncompressedJsBytes": 536938,
5
- "firstLoadChunkPaths": [
6
- ".next\\static\\chunks\\0dbhjjzl8qfwv.js",
7
- ".next\\static\\chunks\\07-tub5vqy.fk.js",
8
- ".next\\static\\chunks\\0fpki3y6aj230.js",
9
- ".next\\static\\chunks\\140ovxvjat1ch.js",
10
- ".next\\static\\chunks\\07lhk_q6pmm3r.js",
11
- ".next\\static\\chunks\\turbopack-08fpdsd.-ns2y.js"
12
- ]
13
- },
14
- {
15
- "route": "/_not-found",
16
- "firstLoadUncompressedJsBytes": 514388,
17
- "firstLoadChunkPaths": [
18
- ".next\\static\\chunks\\0dbhjjzl8qfwv.js",
19
- ".next\\static\\chunks\\0fpki3y6aj230.js",
20
- ".next\\static\\chunks\\140ovxvjat1ch.js",
21
- ".next\\static\\chunks\\07lhk_q6pmm3r.js",
22
- ".next\\static\\chunks\\turbopack-08fpdsd.-ns2y.js"
23
- ]
24
- }
25
- ]
@@ -1,6 +0,0 @@
1
- {
2
- "version": 1,
3
- "hasExportPathMap": false,
4
- "exportTrailingSlash": false,
5
- "isNextImageImported": false
6
- }
@@ -1,68 +0,0 @@
1
- {
2
- "version": 1,
3
- "images": {
4
- "deviceSizes": [
5
- 640,
6
- 750,
7
- 828,
8
- 1080,
9
- 1200,
10
- 1920,
11
- 2048,
12
- 3840
13
- ],
14
- "imageSizes": [
15
- 32,
16
- 48,
17
- 64,
18
- 96,
19
- 128,
20
- 256,
21
- 384
22
- ],
23
- "path": "/_next/image",
24
- "loader": "default",
25
- "loaderFile": "",
26
- "domains": [],
27
- "disableStaticImages": false,
28
- "minimumCacheTTL": 14400,
29
- "formats": [
30
- "image/webp"
31
- ],
32
- "maximumRedirects": 3,
33
- "maximumResponseBody": 50000000,
34
- "dangerouslyAllowLocalIP": false,
35
- "dangerouslyAllowSVG": false,
36
- "contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
37
- "contentDispositionType": "attachment",
38
- "localPatterns": [
39
- {
40
- "pathname": "^(?:(?!(?:^|\\/)\\.{1,2}(?:\\/|$))(?:(?:(?!(?:^|\\/)\\.{1,2}(?:\\/|$)).)*?)\\/?)$",
41
- "search": ""
42
- }
43
- ],
44
- "remotePatterns": [],
45
- "qualities": [
46
- 75
47
- ],
48
- "unoptimized": false,
49
- "customCacheHandler": false,
50
- "sizes": [
51
- 640,
52
- 750,
53
- 828,
54
- 1080,
55
- 1200,
56
- 1920,
57
- 2048,
58
- 3840,
59
- 32,
60
- 48,
61
- 64,
62
- 96,
63
- 128,
64
- 256,
65
- 384
66
- ]
67
- }
68
- }
@@ -1,85 +0,0 @@
1
- {
2
- "version": 4,
3
- "routes": {
4
- "/": {
5
- "experimentalBypassFor": [
6
- {
7
- "type": "header",
8
- "key": "next-action"
9
- },
10
- {
11
- "type": "header",
12
- "key": "content-type",
13
- "value": "multipart/form-data;.*"
14
- }
15
- ],
16
- "initialRevalidateSeconds": false,
17
- "srcRoute": "/",
18
- "dataRoute": "/index.rsc",
19
- "allowHeader": [
20
- "host",
21
- "x-matched-path",
22
- "x-prerender-revalidate",
23
- "x-prerender-revalidate-if-generated",
24
- "x-next-revalidated-tags",
25
- "x-next-revalidate-tag-token"
26
- ]
27
- },
28
- "/_global-error": {
29
- "experimentalBypassFor": [
30
- {
31
- "type": "header",
32
- "key": "next-action"
33
- },
34
- {
35
- "type": "header",
36
- "key": "content-type",
37
- "value": "multipart/form-data;.*"
38
- }
39
- ],
40
- "initialRevalidateSeconds": false,
41
- "srcRoute": "/_global-error",
42
- "dataRoute": "/_global-error.rsc",
43
- "allowHeader": [
44
- "host",
45
- "x-matched-path",
46
- "x-prerender-revalidate",
47
- "x-prerender-revalidate-if-generated",
48
- "x-next-revalidated-tags",
49
- "x-next-revalidate-tag-token"
50
- ]
51
- },
52
- "/_not-found": {
53
- "initialStatus": 404,
54
- "experimentalBypassFor": [
55
- {
56
- "type": "header",
57
- "key": "next-action"
58
- },
59
- {
60
- "type": "header",
61
- "key": "content-type",
62
- "value": "multipart/form-data;.*"
63
- }
64
- ],
65
- "initialRevalidateSeconds": false,
66
- "srcRoute": "/_not-found",
67
- "dataRoute": "/_not-found.rsc",
68
- "allowHeader": [
69
- "host",
70
- "x-matched-path",
71
- "x-prerender-revalidate",
72
- "x-prerender-revalidate-if-generated",
73
- "x-next-revalidated-tags",
74
- "x-next-revalidate-tag-token"
75
- ]
76
- }
77
- },
78
- "dynamicRoutes": {},
79
- "notFoundRoutes": [],
80
- "preview": {
81
- "previewModeId": "bbfc1b1aba1e28878cd386df9646fb77",
82
- "previewModeSigningKey": "2141cd2ce4e2ff748107a61645b3daa7d420b95f846ca67c449a521b7459ed3c",
83
- "previewModeEncryptionKey": "4fb87ad6d0cdecfde6bfe26b7601a6933ae11f2c38e5982a057ac21b5b49c046"
84
- }
85
- }