neural-loom 0.2.70 → 0.3.0
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.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/diagnostics/route-bundle-stats.json +11 -11
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +20 -20
- package/.next/required-server-files.json +20 -20
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/configs/route.js.nft.json +1 -1
- package/.next/server/app/api/context/aider/route.js.nft.json +1 -1
- package/.next/server/app/api/context/claude/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/context/ssh/route.js.nft.json +1 -1
- package/.next/server/app/api/files/route.js +1 -1
- package/.next/server/app/api/files/route.js.nft.json +1 -1
- package/.next/server/app/api/recents/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/inject/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/input/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/launch/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/scope/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/start/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/stop/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/upload-image/route.js.nft.json +1 -1
- package/.next/server/app/api/sql/connections/route.js.nft.json +1 -1
- package/.next/server/app/api/sql/mcp/route.js +1 -1
- package/.next/server/app/api/sql/mcp/route.js.nft.json +1 -1
- package/.next/server/app/api/sql/query/route.js +1 -1
- package/.next/server/app/api/sql/query/route.js.nft.json +1 -1
- package/.next/server/app/api/sql/schema/route.js.nft.json +1 -1
- package/.next/server/app/api/telemetry/route.js +1 -1
- package/.next/server/app/api/telemetry/route.js.nft.json +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page/react-loadable-manifest.json +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0.hmw1f._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0.hmw1f._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__00-sqou._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__00-sqou._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__00l5btc._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__00l5btc._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__06men8g._.js +4 -4
- package/.next/server/chunks/[root-of-the-server]__06men8g._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__097vtn1._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__097vtn1._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0_v2.a8._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0_v2.a8._.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0.ptwor._.js → [root-of-the-server]__0ajln56._.js} +7 -7
- package/.next/server/chunks/[root-of-the-server]__0ajln56._.js.map +1 -0
- package/.next/server/chunks/{[root-of-the-server]__0co.g5k._.js → [root-of-the-server]__0auh-2z._.js} +5 -5
- package/.next/server/chunks/[root-of-the-server]__0auh-2z._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0e03ite._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0e03ite._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0fxtx7z._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0fxtx7z._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0h.~hv6._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0h.~hv6._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0i83~95._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0li1h1u._.js +19 -19
- package/.next/server/chunks/[root-of-the-server]__0li1h1u._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0s1axek._.js +5 -5
- package/.next/server/chunks/[root-of-the-server]__0s1axek._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0t713sv._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0t713sv._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0tq0maq._.js +5 -5
- package/.next/server/chunks/[root-of-the-server]__0tq0maq._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0viil6b._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0viil6b._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0ykd4~u._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ykd4~u._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__11h_nxt._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__11h_nxt._.js.map +1 -1
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_016qk~0.js +2 -2
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_016qk~0.js.map +1 -1
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0ev3h.z.js +1 -1
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0ev3h.z.js.map +1 -1
- package/.next/server/edge/chunks/[root-of-the-server]__08ca2jv._.js +11 -0
- package/.next/server/edge/chunks/[root-of-the-server]__08ca2jv._.js.map +1 -0
- package/.next/server/edge/chunks/node_modules_next_dist_esm_build_templates_edge-wrapper_0kvehva.js +3 -0
- package/.next/server/edge/chunks/node_modules_next_dist_esm_build_templates_edge-wrapper_0kvehva.js.map +1 -0
- package/.next/server/edge/chunks/node_modules_next_dist_esm_build_templates_edge-wrapper_0lcpsxv.js.map +1 -0
- package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_0lcpsxv.js +3 -0
- package/.next/server/middleware/middleware-manifest.json +32 -0
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/middleware-manifest.json +30 -2
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/04j4ht7eCOOXSLQ5Wixq0/_clientMiddlewareManifest.js +6 -0
- package/.next/static/chunks/{0fxouf2n_5adf.js → 0uyuco-451j.n.js} +2 -2
- package/.next/static/chunks/{0r3x2gcn0sde..js → 14~-ojwsxf~oe.js} +4 -4
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/README.md +18 -0
- package/bin/cli.js +12 -2
- package/package.json +9 -6
- package/src/app/api/files/route.ts +30 -0
- package/src/app/api/git/route.ts +46 -31
- package/src/app/api/sessions/stats/route.ts +40 -22
- package/src/app/api/sql/query/route.ts +2 -15
- package/src/app/api/telemetry/route.ts +2 -1
- package/src/app/components/TerminalConsole.tsx +103 -39
- package/src/lib/agents/AgentRunner.ts +41 -5
- package/src/lib/agents/AiderRunner.ts +20 -36
- package/src/lib/agents/ClaudeRunner.ts +8 -62
- package/src/lib/agents/DockerRunner.ts +18 -54
- package/src/lib/agents/MockRunner.ts +3 -1
- package/src/lib/agents/SSHRunner.ts +8 -54
- package/src/lib/agents/SessionPersister.ts +11 -1
- package/src/lib/agents/ShellRunner.ts +10 -46
- package/src/lib/agents/WebSocketServer.ts +17 -2
- package/src/lib/agents/pricing.ts +45 -0
- package/src/lib/agents/runtime.ts +92 -0
- package/src/lib/gitSafe.ts +15 -0
- package/src/lib/security.ts +76 -0
- package/src/lib/sql/McpServer.ts +2 -11
- package/src/lib/sql/adapters/MssqlAdapter.ts +16 -1
- package/src/lib/sql/adapters/MysqlAdapter.ts +23 -1
- package/src/lib/sql/adapters/PostgresAdapter.ts +22 -1
- package/src/lib/sql/adapters/SqliteAdapter.ts +21 -10
- package/src/lib/sql/sqlGuard.ts +20 -0
- package/src/lib/workspaceParser.ts +23 -6
- package/src/middleware.ts +27 -0
- package/.next/dev/build-manifest.json +0 -50
- package/.next/dev/fallback-build-manifest.json +0 -37
- package/.next/dev/logs/next-development.log +0 -3737
- package/.next/dev/server/chunks/[root-of-the-server]__11uf~fd._.js +0 -2396
- package/.next/dev/server/chunks/[root-of-the-server]__11uf~fd._.js.map +0 -20
- package/.next/dev/server/chunks/ssr/[externals]__0.o~_~l._.js +0 -32
- package/.next/dev/server/chunks/ssr/[externals]__0.o~_~l._.js.map +0 -5
- package/.next/dev/server/chunks/ssr/[externals]_next_dist_shared_lib_no-fallback-error_external_0fgm~bn.js +0 -8
- package/.next/dev/server/chunks/ssr/[externals]_next_dist_shared_lib_no-fallback-error_external_0fgm~bn.js.map +0 -5
- package/.next/dev/server/chunks/ssr/[root-of-the-server]__0je5zm2._.js +0 -285
- package/.next/dev/server/chunks/ssr/[root-of-the-server]__0je5zm2._.js.map +0 -9
- package/.next/dev/server/chunks/ssr/node_modules_01ed9g5._.js +0 -6621
- package/.next/dev/server/chunks/ssr/node_modules_01ed9g5._.js.map +0 -76
- package/.next/dev/server/chunks/ssr/node_modules_129w7gn._.js +0 -4399
- package/.next/dev/server/chunks/ssr/node_modules_129w7gn._.js.map +0 -35
- package/.next/dev/server/chunks/ssr/node_modules_next_12i4inu._.js +0 -55
- package/.next/dev/server/chunks/ssr/node_modules_next_12i4inu._.js.map +0 -7
- package/.next/dev/server/middleware-build-manifest.js +0 -50
- package/.next/dev/server/next-font-manifest.js +0 -1
- package/.next/dev/server/next-font-manifest.json +0 -11
- package/.next/dev/server/pages/_app/build-manifest.json +0 -23
- package/.next/dev/server/pages/_app/client-build-manifest.json +0 -5
- package/.next/dev/server/pages/_app/next-font-manifest.json +0 -6
- package/.next/dev/server/pages/_app/pages-manifest.json +0 -3
- package/.next/dev/server/pages/_app/react-loadable-manifest.json +0 -1
- package/.next/dev/server/pages/_app.js +0 -4
- package/.next/dev/server/pages/_app.js.map +0 -5
- package/.next/dev/server/pages/_document/next-font-manifest.json +0 -6
- package/.next/dev/server/pages/_document/pages-manifest.json +0 -3
- package/.next/dev/server/pages/_document/react-loadable-manifest.json +0 -1
- package/.next/dev/server/pages/_document.js +0 -5
- package/.next/dev/server/pages/_document.js.map +0 -5
- package/.next/dev/server/pages/_error/build-manifest.json +0 -22
- package/.next/dev/server/pages/_error/client-build-manifest.json +0 -5
- package/.next/dev/server/pages/_error/next-font-manifest.json +0 -6
- package/.next/dev/server/pages/_error/pages-manifest.json +0 -3
- package/.next/dev/server/pages/_error/react-loadable-manifest.json +0 -1
- package/.next/dev/server/pages/_error.js +0 -8
- package/.next/dev/server/pages/_error.js.map +0 -5
- package/.next/dev/server/pages-manifest.json +0 -5
- package/.next/dev/static/chunks/[next]_entry_page-loader_ts_0j~flwh._.js +0 -23
- package/.next/dev/static/chunks/[next]_entry_page-loader_ts_0j~flwh._.js.map +0 -6
- package/.next/dev/static/chunks/[next]_entry_page-loader_ts_0rqw6yo._.js +0 -23
- package/.next/dev/static/chunks/[next]_entry_page-loader_ts_0rqw6yo._.js.map +0 -6
- package/.next/dev/static/chunks/[root-of-the-server]__01mw43t._.js +0 -476
- package/.next/dev/static/chunks/[root-of-the-server]__01mw43t._.js.map +0 -6
- package/.next/dev/static/chunks/[root-of-the-server]__0c0okpg._.js +0 -476
- package/.next/dev/static/chunks/[root-of-the-server]__0c0okpg._.js.map +0 -6
- package/.next/dev/static/chunks/node_modules_0lx093h._.js +0 -1343
- package/.next/dev/static/chunks/node_modules_0lx093h._.js.map +0 -13
- package/.next/dev/static/chunks/node_modules_next_app_0jt-zj..js +0 -8
- package/.next/dev/static/chunks/node_modules_next_app_0jt-zj..js.map +0 -6
- package/.next/dev/static/chunks/node_modules_next_dist_0rt-2cr._.js +0 -2334
- package/.next/dev/static/chunks/node_modules_next_dist_0rt-2cr._.js.map +0 -26
- package/.next/dev/static/chunks/node_modules_next_dist_0u_w_5s._.js +0 -2165
- package/.next/dev/static/chunks/node_modules_next_dist_0u_w_5s._.js.map +0 -25
- package/.next/dev/static/chunks/node_modules_next_dist_client_0pe1dg-._.js +0 -4091
- package/.next/dev/static/chunks/node_modules_next_dist_client_0pe1dg-._.js.map +0 -49
- package/.next/dev/static/chunks/node_modules_next_dist_compiled_0o6l_m6._.js +0 -6064
- package/.next/dev/static/chunks/node_modules_next_dist_compiled_0o6l_m6._.js.map +0 -17
- package/.next/dev/static/chunks/node_modules_next_dist_shared_lib_0ek5eq7._.js +0 -6535
- package/.next/dev/static/chunks/node_modules_next_dist_shared_lib_0ek5eq7._.js.map +0 -72
- package/.next/dev/static/chunks/node_modules_next_dist_shared_lib_0n1wg2c._.js +0 -6294
- package/.next/dev/static/chunks/node_modules_next_dist_shared_lib_0n1wg2c._.js.map +0 -70
- package/.next/dev/static/chunks/node_modules_react-dom_0bruynb._.js +0 -15381
- package/.next/dev/static/chunks/node_modules_react-dom_0bruynb._.js.map +0 -9
- package/.next/dev/static/chunks/pages/_app.js +0 -13
- package/.next/dev/static/chunks/pages/_error.js +0 -12
- package/.next/dev/static/chunks/pages__app_0-bg2z-._.js.map +0 -11
- package/.next/dev/static/chunks/pages__app_07xvfw~._.js +0 -5
- package/.next/dev/static/chunks/pages__error_0.i_zsq._.js.map +0 -11
- package/.next/dev/static/chunks/pages__error_07xvfw~._.js +0 -5
- package/.next/dev/static/chunks/turbopack-pages__app_0-bg2z-._.js +0 -2236
- package/.next/dev/static/chunks/turbopack-pages__error_0.i_zsq._.js +0 -2236
- package/.next/server/chunks/[externals]__048y_op._.js +0 -3
- package/.next/server/chunks/[externals]__048y_op._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0.ptwor._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__08r0s-s._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__08r0s-s._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0co.g5k._.js.map +0 -1
- package/.next/static/llmJsGQafolZV5_sqEw4l/_clientMiddlewareManifest.js +0 -1
- /package/.next/static/{llmJsGQafolZV5_sqEw4l → 04j4ht7eCOOXSLQ5Wixq0}/_buildManifest.js +0 -0
- /package/.next/static/{llmJsGQafolZV5_sqEw4l → 04j4ht7eCOOXSLQ5Wixq0}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Backstop guard for read-only DB connections.
|
|
3
|
+
*
|
|
4
|
+
* Real enforcement happens at the driver/transaction level (SQLite opened
|
|
5
|
+
* read-only, Postgres/MySQL session set READ ONLY). This statement inspection is
|
|
6
|
+
* a defense-in-depth layer and the only available guard for drivers without a
|
|
7
|
+
* session read-only mode (e.g. MSSQL). It strips SQL comments first so a leading
|
|
8
|
+
* comment trick can't hide a mutation, and matches mutation keywords anywhere
|
|
9
|
+
* (covering CTEs such as `WITH x AS (...) DELETE ...` and stacked statements
|
|
10
|
+
* like `SELECT 1; DROP TABLE t`). It intentionally errs toward over-blocking.
|
|
11
|
+
*/
|
|
12
|
+
export function isReadOnlyViolation(sql: string): boolean {
|
|
13
|
+
if (!sql) return false;
|
|
14
|
+
const stripped = sql
|
|
15
|
+
.replace(/\/\*[\s\S]*?\*\//g, " ") // block comments
|
|
16
|
+
.replace(/--[^\n]*/g, " "); // line comments
|
|
17
|
+
return /\b(insert|update|delete|drop|alter|create|truncate|replace|grant|revoke|merge|exec|execute)\b/i.test(
|
|
18
|
+
stripped
|
|
19
|
+
);
|
|
20
|
+
}
|
|
@@ -1,29 +1,45 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
3
|
|
|
4
|
+
// Cache parsed folders per workspace root, keyed off the .code-workspace file's
|
|
5
|
+
// mtime so repeated polling doesn't re-read and re-parse it every call.
|
|
6
|
+
const folderCache = new Map<string, { mtimeMs: number; folders: string[] }>();
|
|
7
|
+
|
|
4
8
|
export function getWorkspaceFileFolders(workspaceRoot: string): string[] {
|
|
5
9
|
try {
|
|
6
10
|
if (!workspaceRoot || !fs.existsSync(workspaceRoot)) return [];
|
|
7
|
-
|
|
11
|
+
|
|
8
12
|
// Normalize workspaceRoot path
|
|
9
13
|
const normRoot = path.resolve(workspaceRoot).replace(/\\/g, "/");
|
|
10
|
-
|
|
14
|
+
|
|
11
15
|
const files = fs.readdirSync(normRoot);
|
|
12
16
|
const workspaceFile = files.find(f => f.endsWith(".code-workspace"));
|
|
13
|
-
if (!workspaceFile)
|
|
17
|
+
if (!workspaceFile) {
|
|
18
|
+
folderCache.delete(normRoot);
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
14
21
|
|
|
15
22
|
const filePath = path.join(normRoot, workspaceFile);
|
|
23
|
+
const mtimeMs = fs.statSync(filePath).mtimeMs;
|
|
24
|
+
const cached = folderCache.get(normRoot);
|
|
25
|
+
if (cached && cached.mtimeMs === mtimeMs) {
|
|
26
|
+
return cached.folders;
|
|
27
|
+
}
|
|
28
|
+
|
|
16
29
|
const content = fs.readFileSync(filePath, "utf8");
|
|
17
30
|
const json = JSON.parse(content);
|
|
18
31
|
|
|
19
|
-
if (!json.folders || !Array.isArray(json.folders))
|
|
20
|
-
|
|
32
|
+
if (!json.folders || !Array.isArray(json.folders)) {
|
|
33
|
+
folderCache.set(normRoot, { mtimeMs, folders: [] });
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
|
|
21
37
|
const folders: string[] = [];
|
|
22
38
|
for (const folder of json.folders) {
|
|
23
39
|
if (folder.path) {
|
|
24
40
|
// Resolve relative to workspace root (where the workspace file resides)
|
|
25
41
|
const resolved = path.resolve(normRoot, folder.path).replace(/\\/g, "/");
|
|
26
|
-
|
|
42
|
+
|
|
27
43
|
// Exclude the workspace root folder itself
|
|
28
44
|
if (resolved !== normRoot) {
|
|
29
45
|
if (fs.existsSync(resolved)) {
|
|
@@ -32,6 +48,7 @@ export function getWorkspaceFileFolders(workspaceRoot: string): string[] {
|
|
|
32
48
|
}
|
|
33
49
|
}
|
|
34
50
|
}
|
|
51
|
+
folderCache.set(normRoot, { mtimeMs, folders });
|
|
35
52
|
return folders;
|
|
36
53
|
} catch (err) {
|
|
37
54
|
console.error("[WorkspaceParser] Failed to parse code-workspace file:", err);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import type { NextRequest } from "next/server";
|
|
3
|
+
import { isRequestAllowed } from "@/lib/security";
|
|
4
|
+
|
|
5
|
+
// Gate every API route behind the localhost-origin guard. The dashboard's APIs
|
|
6
|
+
// expose arbitrary shell, filesystem and database access, so cross-origin / LAN
|
|
7
|
+
// callers are rejected unless NEURAL_LOOM_ALLOW_LAN is explicitly set.
|
|
8
|
+
export function middleware(request: NextRequest) {
|
|
9
|
+
const host = request.headers.get("host");
|
|
10
|
+
const origin = request.headers.get("origin");
|
|
11
|
+
|
|
12
|
+
if (!isRequestAllowed(host, origin)) {
|
|
13
|
+
return NextResponse.json(
|
|
14
|
+
{
|
|
15
|
+
error:
|
|
16
|
+
"Forbidden: NeuralLoom only accepts requests from localhost. Set NEURAL_LOOM_ALLOW_LAN=1 to permit network access.",
|
|
17
|
+
},
|
|
18
|
+
{ status: 403 }
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return NextResponse.next();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const config = {
|
|
26
|
+
matcher: "/api/:path*",
|
|
27
|
+
};
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"pages": {
|
|
3
|
-
"/_app": [
|
|
4
|
-
"static/chunks/node_modules_next_dist_compiled_0o6l_m6._.js",
|
|
5
|
-
"static/chunks/node_modules_next_dist_shared_lib_0n1wg2c._.js",
|
|
6
|
-
"static/chunks/node_modules_next_dist_client_0pe1dg-._.js",
|
|
7
|
-
"static/chunks/node_modules_next_dist_0u_w_5s._.js",
|
|
8
|
-
"static/chunks/node_modules_next_app_0jt-zj..js",
|
|
9
|
-
"static/chunks/[next]_entry_page-loader_ts_0j~flwh._.js",
|
|
10
|
-
"static/chunks/node_modules_react-dom_0bruynb._.js",
|
|
11
|
-
"static/chunks/node_modules_0lx093h._.js",
|
|
12
|
-
"static/chunks/[root-of-the-server]__0c0okpg._.js",
|
|
13
|
-
"static/chunks/pages__app_07xvfw~._.js",
|
|
14
|
-
"static/chunks/turbopack-pages__app_0-bg2z-._.js"
|
|
15
|
-
],
|
|
16
|
-
"/_error": [
|
|
17
|
-
"static/chunks/node_modules_next_dist_compiled_0o6l_m6._.js",
|
|
18
|
-
"static/chunks/node_modules_next_dist_shared_lib_0ek5eq7._.js",
|
|
19
|
-
"static/chunks/node_modules_next_dist_client_0pe1dg-._.js",
|
|
20
|
-
"static/chunks/node_modules_next_dist_0rt-2cr._.js",
|
|
21
|
-
"static/chunks/[next]_entry_page-loader_ts_0rqw6yo._.js",
|
|
22
|
-
"static/chunks/node_modules_react-dom_0bruynb._.js",
|
|
23
|
-
"static/chunks/node_modules_0lx093h._.js",
|
|
24
|
-
"static/chunks/[root-of-the-server]__01mw43t._.js",
|
|
25
|
-
"static/chunks/pages__error_07xvfw~._.js",
|
|
26
|
-
"static/chunks/turbopack-pages__error_0.i_zsq._.js"
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
"devFiles": [],
|
|
30
|
-
"polyfillFiles": [
|
|
31
|
-
"static/chunks/node_modules_next_dist_build_polyfills_polyfill-nomodule.js"
|
|
32
|
-
],
|
|
33
|
-
"lowPriorityFiles": [
|
|
34
|
-
"static/development/_buildManifest.js",
|
|
35
|
-
"static/development/_ssgManifest.js",
|
|
36
|
-
"static/development/_clientMiddlewareManifest.js"
|
|
37
|
-
],
|
|
38
|
-
"rootMainFiles": [
|
|
39
|
-
"static/chunks/[turbopack]_browser_dev_hmr-client_hmr-client_ts_10z625~._.js",
|
|
40
|
-
"static/chunks/node_modules_next_dist_compiled_next-devtools_index_0553esy.js",
|
|
41
|
-
"static/chunks/node_modules_next_dist_compiled_react-dom_058-ah~._.js",
|
|
42
|
-
"static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_0p3wegg._.js",
|
|
43
|
-
"static/chunks/node_modules_next_dist_compiled_0rpq4pf._.js",
|
|
44
|
-
"static/chunks/node_modules_next_dist_client_0fhqo1d._.js",
|
|
45
|
-
"static/chunks/node_modules_next_dist_115brz8._.js",
|
|
46
|
-
"static/chunks/node_modules_@swc_helpers_cjs_0-4ujiy._.js",
|
|
47
|
-
"static/chunks/_0rqeker._.js",
|
|
48
|
-
"static/chunks/turbopack-_0p44nws._.js"
|
|
49
|
-
]
|
|
50
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"pages": {
|
|
3
|
-
"/_app": [
|
|
4
|
-
"static/chunks/node_modules_next_dist_compiled_0o6l_m6._.js",
|
|
5
|
-
"static/chunks/node_modules_next_dist_shared_lib_0n1wg2c._.js",
|
|
6
|
-
"static/chunks/node_modules_next_dist_client_0pe1dg-._.js",
|
|
7
|
-
"static/chunks/node_modules_next_dist_0u_w_5s._.js",
|
|
8
|
-
"static/chunks/node_modules_next_app_0jt-zj..js",
|
|
9
|
-
"static/chunks/[next]_entry_page-loader_ts_0j~flwh._.js",
|
|
10
|
-
"static/chunks/node_modules_react-dom_0bruynb._.js",
|
|
11
|
-
"static/chunks/node_modules_0lx093h._.js",
|
|
12
|
-
"static/chunks/[root-of-the-server]__0c0okpg._.js",
|
|
13
|
-
"static/chunks/pages__app_07xvfw~._.js",
|
|
14
|
-
"static/chunks/turbopack-pages__app_0-bg2z-._.js"
|
|
15
|
-
],
|
|
16
|
-
"/_error": [
|
|
17
|
-
"static/chunks/node_modules_next_dist_compiled_0o6l_m6._.js",
|
|
18
|
-
"static/chunks/node_modules_next_dist_shared_lib_0ek5eq7._.js",
|
|
19
|
-
"static/chunks/node_modules_next_dist_client_0pe1dg-._.js",
|
|
20
|
-
"static/chunks/node_modules_next_dist_0rt-2cr._.js",
|
|
21
|
-
"static/chunks/[next]_entry_page-loader_ts_0rqw6yo._.js",
|
|
22
|
-
"static/chunks/node_modules_react-dom_0bruynb._.js",
|
|
23
|
-
"static/chunks/node_modules_0lx093h._.js",
|
|
24
|
-
"static/chunks/[root-of-the-server]__01mw43t._.js",
|
|
25
|
-
"static/chunks/pages__error_07xvfw~._.js",
|
|
26
|
-
"static/chunks/turbopack-pages__error_0.i_zsq._.js"
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
"devFiles": [],
|
|
30
|
-
"polyfillFiles": [],
|
|
31
|
-
"lowPriorityFiles": [
|
|
32
|
-
"static/development/_buildManifest.js",
|
|
33
|
-
"static/development/_ssgManifest.js",
|
|
34
|
-
"static/development/_clientMiddlewareManifest.js"
|
|
35
|
-
],
|
|
36
|
-
"rootMainFiles": []
|
|
37
|
-
}
|