neural-loom 0.2.18 → 0.2.40
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/app-path-routes-manifest.json +0 -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 +2 -2
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -32
- package/.next/routes-manifest.json +0 -6
- package/.next/server/app/_global-error/page.js +6 -7
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +2 -3
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -3
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -2
- 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/page.js +6 -7
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- 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/context/aider/route.js +2 -2
- package/.next/server/app/api/context/aider/route.js.nft.json +1 -1
- package/.next/server/app/api/context/claude/route.js +2 -2
- package/.next/server/app/api/context/claude/route.js.nft.json +1 -1
- package/.next/server/app/api/context/route.js +2 -2
- package/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/server/app/api/context/ssh/route.js +2 -2
- package/.next/server/app/api/context/ssh/route.js.nft.json +1 -1
- package/.next/server/app/api/files/route.js +2 -2
- package/.next/server/app/api/files/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route.js +2 -2
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/recents/route.js +2 -2
- package/.next/server/app/api/recents/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/inject/route.js +2 -2
- package/.next/server/app/api/sessions/inject/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/input/route.js +2 -2
- package/.next/server/app/api/sessions/input/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/launch/route.js +2 -2
- package/.next/server/app/api/sessions/launch/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/route.js +2 -2
- package/.next/server/app/api/sessions/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/scope/route.js +2 -2
- package/.next/server/app/api/sessions/scope/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/start/route.js +2 -2
- package/.next/server/app/api/sessions/start/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/stats/route.js +2 -2
- package/.next/server/app/api/sessions/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/sessions/stop/route.js +2 -2
- package/.next/server/app/api/sessions/stop/route.js.nft.json +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- 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 +2 -2
- package/.next/server/app/page/react-loadable-manifest.json +2 -2
- package/.next/server/app/page.js +6 -7
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +0 -1
- package/.next/server/chunks/{[externals]_next_dist_0arv.vj._.js → [externals]__048y_op._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0-lisav._.js → [root-of-the-server]__0-vx6-s._.js} +3 -3
- package/.next/server/chunks/{[root-of-the-server]__0-lisav._.js.map → [root-of-the-server]__0-vx6-s._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0k6w___._.js → [root-of-the-server]__0656ruo._.js} +3 -3
- package/.next/server/chunks/{[root-of-the-server]__0k6w___._.js.map → [root-of-the-server]__0656ruo._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0969ozy._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0l7c-gn._.js.map → [root-of-the-server]__0969ozy._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js +10 -5
- package/.next/server/chunks/[root-of-the-server]__0d0pykb._.js.map +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0iqaxhx._.js → [root-of-the-server]__0d9_-7g._.js} +3 -3
- package/.next/server/chunks/{[root-of-the-server]__0iqaxhx._.js.map → [root-of-the-server]__0d9_-7g._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0qz~w0~._.js → [root-of-the-server]__0fhv7.1._.js} +3 -3
- package/.next/server/chunks/{[root-of-the-server]__0qz~w0~._.js.map → [root-of-the-server]__0fhv7.1._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0j8-xkl._.js → [root-of-the-server]__0i83~95._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0j8-xkl._.js.map → [root-of-the-server]__0i83~95._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0kn5tap._.js +4 -0
- package/.next/server/chunks/{[root-of-the-server]__0ntt3om._.js.map → [root-of-the-server]__0kn5tap._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0n-zban._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0p~u94k._.js.map → [root-of-the-server]__0n-zban._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0qqnqov._.js +15 -0
- package/.next/server/chunks/{[root-of-the-server]__0m91xif._.js.map → [root-of-the-server]__0qqnqov._.js.map} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0sa_gpm._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sa_gpm._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0t_~on0._.js +15 -0
- package/.next/server/chunks/[root-of-the-server]__0t_~on0._.js.map +1 -0
- package/.next/server/chunks/[root-of-the-server]__0vp8-ka._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0qyrt6_._.js.map → [root-of-the-server]__0vp8-ka._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0__9rdk._.js → [root-of-the-server]__0xr~y1f._.js} +3 -3
- package/.next/server/chunks/{[root-of-the-server]__0__9rdk._.js.map → [root-of-the-server]__0xr~y1f._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0_2_i_q._.js → [root-of-the-server]__0zkcq9q._.js} +3 -3
- package/.next/server/chunks/{[root-of-the-server]__0_2_i_q._.js.map → [root-of-the-server]__0zkcq9q._.js.map} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0bi3d5z._.js → [root-of-the-server]__0~zauvq._.js} +3 -3
- package/.next/server/chunks/{[root-of-the-server]__0bi3d5z._.js.map → [root-of-the-server]__0~zauvq._.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/chunks/ssr/[root-of-the-server]__0cbmrds._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0cbmrds._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ni-l5l._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ni-l5l._.js.map +1 -0
- package/.next/server/chunks/ssr/{[root-of-the-server]__089dc4i._.js → [root-of-the-server]__0tcyn68._.js} +2 -2
- package/.next/server/chunks/ssr/[root-of-the-server]__0tcyn68._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0v73tbn._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0yj_dfr._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0yj_dfr._.js.map +1 -0
- package/.next/server/chunks/ssr/_0t7oqy6._.js +1 -1
- package/.next/server/chunks/ssr/_0t7oqy6._.js.map +1 -1
- package/.next/server/chunks/ssr/{node_modules_next_dist_0ppctuh._.js → node_modules_next_dist_0-g.jog._.js} +2 -2
- package/.next/server/chunks/ssr/node_modules_next_dist_0-g.jog._.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bj8dkg.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0bj8dkg.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0cvrgh7.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0cvrgh7.js.map +1 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rc3ul_.js +4 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rc3ul_.js.map +1 -0
- package/.next/server/middleware-build-manifest.js +3 -3
- 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/chunks/07-tub5vqy.fk.js +1 -0
- package/.next/static/chunks/0kkoif8x_kxrq.js +1 -0
- package/.next/static/chunks/{0pp.lp89pntpv.css → 0m-_sw1425nkp.css} +1 -1
- package/.next/static/chunks/0wq3_34inbzj6.js +1 -0
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/package.json +1 -1
- package/public/logo.png +0 -0
- package/public/manifest.json +22 -0
- package/public/sw.js +12 -0
- package/src/app/api/context/aider/route.ts +6 -1
- package/src/app/api/files/route.ts +20 -8
- package/src/app/api/git/route.ts +117 -1
- package/src/app/api/sessions/route.ts +4 -1
- package/src/app/components/AiderWizard.tsx +19 -1
- package/src/app/components/IdeLayout.tsx +715 -87
- package/src/app/components/MarkdownPreview.tsx +528 -0
- package/src/app/layout.tsx +6 -0
- package/src/app/page.module.css +2 -0
- package/src/app/page.tsx +40 -10
- package/src/lib/agents/AgentRunner.ts +2 -2
- package/src/lib/agents/AiderRunner.ts +75 -36
- package/src/lib/agents/SessionManager.ts +25 -10
- package/src/lib/agents/SessionPersister.ts +10 -0
- package/src/lib/agents/ShellRunner.ts +159 -0
- package/.next/server/app/favicon.ico/route/app-paths-manifest.json +0 -3
- package/.next/server/app/favicon.ico/route/build-manifest.json +0 -9
- package/.next/server/app/favicon.ico/route.js +0 -7
- package/.next/server/app/favicon.ico/route.js.map +0 -5
- package/.next/server/app/favicon.ico/route.js.nft.json +0 -1
- package/.next/server/app/favicon.ico.body +0 -0
- package/.next/server/app/favicon.ico.meta +0 -1
- package/.next/server/chunks/[externals]__1334_78._.js +0 -3
- package/.next/server/chunks/[externals]_next_dist_0arv.vj._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0l7c-gn._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0m91xif._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__0ntt3om._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0p~u94k._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0qyrt6_._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0ty8hwz._.js +0 -15
- package/.next/server/chunks/[root-of-the-server]__0ty8hwz._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0ylcu31._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0ylcu31._.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_095lj93.js +0 -3
- package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_095lj93.js.map +0 -1
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0m.429v.js +0 -3
- package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0m.429v.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__089dc4i._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0_7i5h0._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0_7i5h0._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0hw~y-4._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0hw~y-4._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0~y8ue.._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0~y8ue.._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_05l396c._.js +0 -3
- package/.next/server/chunks/ssr/node_modules_05l396c._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_0ppctuh._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03-z2qq.js +0 -4
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_03-z2qq.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_07vh7rm.js +0 -4
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_07vh7rm.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0qp4u6g.js +0 -4
- package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0qp4u6g.js.map +0 -1
- package/.next/static/chunks/0ek0280331wie.js +0 -1
- package/.next/static/chunks/0jxar8nsw_py3.js +0 -1
- package/.next/static/chunks/0whfmx9l_25d4.js +0 -1
- package/.next/static/media/favicon.0x3dzn~oxb6tn.ico +0 -0
- package/src/app/favicon.ico +0 -0
- /package/.next/server/chunks/{[externals]__1334_78._.js.map → [externals]__048y_op._.js.map} +0 -0
- /package/.next/static/{OOK46QJncZAPJTv2oCT-X → 5uGIuH8oXybqivkeHIrqb}/_buildManifest.js +0 -0
- /package/.next/static/{OOK46QJncZAPJTv2oCT-X → 5uGIuH8oXybqivkeHIrqb}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{OOK46QJncZAPJTv2oCT-X → 5uGIuH8oXybqivkeHIrqb}/_ssgManifest.js +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
|
+
import { exec } from "child_process";
|
|
3
4
|
import type { IPty } from "node-pty";
|
|
4
5
|
import { AgentRunner, RunnerStatus } from "./AgentRunner";
|
|
5
6
|
import { SessionPersister } from "./SessionPersister";
|
|
@@ -28,6 +29,46 @@ function findGitBash(): string | null {
|
|
|
28
29
|
return candidates.find(p => fs.existsSync(p)) || null;
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
function getFilesForAider(dir: string): string {
|
|
33
|
+
const maxFiles = 150;
|
|
34
|
+
const files: string[] = [];
|
|
35
|
+
|
|
36
|
+
function walk(current: string) {
|
|
37
|
+
if (files.length >= maxFiles) return;
|
|
38
|
+
try {
|
|
39
|
+
const entries = fs.readdirSync(current, { withFileTypes: true });
|
|
40
|
+
for (const entry of entries) {
|
|
41
|
+
const name = entry.name;
|
|
42
|
+
if (
|
|
43
|
+
name.startsWith(".") ||
|
|
44
|
+
name === "node_modules" ||
|
|
45
|
+
name === "out" ||
|
|
46
|
+
name === ".next" ||
|
|
47
|
+
name === "bin" ||
|
|
48
|
+
name === "obj" ||
|
|
49
|
+
name === "dist" ||
|
|
50
|
+
name === "build"
|
|
51
|
+
) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const fullPath = path.join(current, name);
|
|
55
|
+
if (entry.isDirectory()) {
|
|
56
|
+
walk(fullPath);
|
|
57
|
+
} else {
|
|
58
|
+
const relPath = path.relative(dir, fullPath);
|
|
59
|
+
files.push(relPath);
|
|
60
|
+
if (files.length >= maxFiles) return;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
} catch (err) {
|
|
64
|
+
console.error("Error reading dir for Aider files list:", err);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
walk(dir);
|
|
69
|
+
return files.map(f => `"${f.replace(/"/g, '\\"')}"`).join(" ");
|
|
70
|
+
}
|
|
71
|
+
|
|
31
72
|
export class AiderRunner extends AgentRunner {
|
|
32
73
|
id: string;
|
|
33
74
|
name: string;
|
|
@@ -84,6 +125,7 @@ export class AiderRunner extends AgentRunner {
|
|
|
84
125
|
geminiApiKey: "",
|
|
85
126
|
model: "claude-3-5-sonnet",
|
|
86
127
|
extraFlags: "",
|
|
128
|
+
loadAllFiles: true,
|
|
87
129
|
};
|
|
88
130
|
|
|
89
131
|
const aiderConfigPath = path.join(process.env.ORIGINAL_CWD || process.cwd(), ".ai", "neural-loom", "aider.json");
|
|
@@ -100,6 +142,7 @@ export class AiderRunner extends AgentRunner {
|
|
|
100
142
|
...process.env,
|
|
101
143
|
TERM: "xterm-256color",
|
|
102
144
|
COLORTERM: "truecolor",
|
|
145
|
+
NEURAL_LOOM: "true",
|
|
103
146
|
} as Record<string, string>;
|
|
104
147
|
|
|
105
148
|
if (aiderConfig.openaiApiKey) {
|
|
@@ -112,34 +155,36 @@ export class AiderRunner extends AgentRunner {
|
|
|
112
155
|
customEnv.GEMINI_API_KEY = aiderConfig.geminiApiKey;
|
|
113
156
|
}
|
|
114
157
|
|
|
115
|
-
const modelFlag = aiderConfig.model ? `--model ${aiderConfig.model}` : "";
|
|
116
|
-
const extraFlags = aiderConfig.extraFlags || "";
|
|
117
|
-
|
|
118
158
|
const targetCwd = (this.workspaceRoot && fs.existsSync(this.workspaceRoot))
|
|
119
159
|
? this.workspaceRoot
|
|
120
160
|
: process.env.ORIGINAL_CWD || process.cwd();
|
|
121
161
|
|
|
162
|
+
const modelFlag = aiderConfig.model ? `--model ${aiderConfig.model}` : "";
|
|
163
|
+
const extraFlags = aiderConfig.extraFlags || "";
|
|
164
|
+
|
|
165
|
+
let loadAllFilesFlag = "";
|
|
166
|
+
if (aiderConfig.loadAllFiles !== false) {
|
|
167
|
+
if (extraFlags.includes("--no-git")) {
|
|
168
|
+
loadAllFilesFlag = getFilesForAider(targetCwd);
|
|
169
|
+
} else {
|
|
170
|
+
loadAllFilesFlag = ".";
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
122
174
|
if (this.type === "aider-docker") {
|
|
123
175
|
this.appendLog("[System] Verifying Docker environment accessibility...\r\n");
|
|
124
176
|
|
|
125
|
-
// Check if docker executable exists by
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
testPty.onData((data) => {
|
|
135
|
-
if (data.toLowerCase().includes("docker version")) {
|
|
136
|
-
hasDocker = true;
|
|
137
|
-
}
|
|
177
|
+
// Check if docker executable exists by running `docker --version`
|
|
178
|
+
const hasDocker = await new Promise<boolean>((resolve) => {
|
|
179
|
+
exec("docker --version", { env: process.env }, (error: Error | null, stdout: string) => {
|
|
180
|
+
if (!error && stdout.toLowerCase().includes("version")) {
|
|
181
|
+
resolve(true);
|
|
182
|
+
} else {
|
|
183
|
+
resolve(false);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
138
186
|
});
|
|
139
187
|
|
|
140
|
-
await new Promise(resolve => setTimeout(resolve, 800));
|
|
141
|
-
testPty.kill();
|
|
142
|
-
|
|
143
188
|
if (!hasDocker) {
|
|
144
189
|
this.status = 'stopped';
|
|
145
190
|
this.appendLog("\x1b[1;31m[Dependency Warning] Docker command not recognized in local PATH.\x1b[0m\r\n");
|
|
@@ -152,6 +197,7 @@ export class AiderRunner extends AgentRunner {
|
|
|
152
197
|
if (aiderConfig.openaiApiKey) envFlags.push("-e OPENAI_API_KEY");
|
|
153
198
|
if (aiderConfig.anthropicApiKey) envFlags.push("-e ANTHROPIC_API_KEY");
|
|
154
199
|
if (aiderConfig.geminiApiKey) envFlags.push("-e GEMINI_API_KEY");
|
|
200
|
+
envFlags.push("-e NEURAL_LOOM=true");
|
|
155
201
|
const envFlagsStr = envFlags.join(" ");
|
|
156
202
|
|
|
157
203
|
// Volume mounts for primary workspace and each scoped directory
|
|
@@ -166,7 +212,7 @@ export class AiderRunner extends AgentRunner {
|
|
|
166
212
|
}
|
|
167
213
|
const mountsStr = mounts.join(" ");
|
|
168
214
|
|
|
169
|
-
const dockerCmd = `docker run -it --name neural-loom-session-${this.id} --rm ${mountsStr} -w /workspace ${envFlagsStr} paulgauthier/aider ${modelFlag} ${extraFlags}`.trim();
|
|
215
|
+
const dockerCmd = `docker run -it --name neural-loom-session-${this.id} --rm ${mountsStr} -w /workspace ${envFlagsStr} paulgauthier/aider ${modelFlag} ${extraFlags} --no-fancy-input ${loadAllFilesFlag}`.trim();
|
|
170
216
|
|
|
171
217
|
this.ptyProcess = this.ptyModule!.spawn(bashPath, ["-c", dockerCmd], {
|
|
172
218
|
name: "xterm-256color",
|
|
@@ -179,23 +225,16 @@ export class AiderRunner extends AgentRunner {
|
|
|
179
225
|
this.appendLog("[System] Verifying 'aider' command availability in local PATH...\r\n");
|
|
180
226
|
|
|
181
227
|
// Check if aider executable exists by running `aider --version`
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
testPty.onData((data) => {
|
|
191
|
-
if (data.toLowerCase().includes("aider")) {
|
|
192
|
-
hasAider = true;
|
|
193
|
-
}
|
|
228
|
+
const hasAider = await new Promise<boolean>((resolve) => {
|
|
229
|
+
exec("aider --version", { env: process.env }, (error: Error | null, stdout: string) => {
|
|
230
|
+
if (!error && stdout.toLowerCase().includes("aider")) {
|
|
231
|
+
resolve(true);
|
|
232
|
+
} else {
|
|
233
|
+
resolve(false);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
194
236
|
});
|
|
195
237
|
|
|
196
|
-
await new Promise(resolve => setTimeout(resolve, 800));
|
|
197
|
-
testPty.kill();
|
|
198
|
-
|
|
199
238
|
if (!hasAider) {
|
|
200
239
|
this.status = 'stopped';
|
|
201
240
|
this.appendLog("\x1b[1;31m[Dependency Warning] 'aider' executable not found on local PATH.\x1b[0m\r\n");
|
|
@@ -204,7 +243,7 @@ export class AiderRunner extends AgentRunner {
|
|
|
204
243
|
}
|
|
205
244
|
|
|
206
245
|
this.appendLog("[System] Spawning local Aider CLI...\r\n");
|
|
207
|
-
const localCmd = `aider ${modelFlag} ${extraFlags}`.trim();
|
|
246
|
+
const localCmd = `aider ${modelFlag} ${extraFlags} --no-fancy-input ${loadAllFilesFlag}`.trim();
|
|
208
247
|
|
|
209
248
|
this.ptyProcess = this.ptyModule!.spawn(bashPath, ["-c", localCmd], {
|
|
210
249
|
name: "xterm-256color",
|
|
@@ -8,8 +8,13 @@ import { AiderRunner } from "./AiderRunner";
|
|
|
8
8
|
import { initWebSocketServer } from "./WebSocketServer";
|
|
9
9
|
import { ContextManager } from "./ContextManager";
|
|
10
10
|
import { SessionPersister } from "./SessionPersister";
|
|
11
|
+
import { ShellRunner } from "./ShellRunner";
|
|
11
12
|
import { getWorkspaceFileFolders } from "../workspaceParser";
|
|
12
13
|
|
|
14
|
+
declare global {
|
|
15
|
+
var sessionManager: SessionManager | undefined;
|
|
16
|
+
}
|
|
17
|
+
|
|
13
18
|
export class SessionManager {
|
|
14
19
|
private static instance: SessionManager | null = null;
|
|
15
20
|
private sessions = new Map<string, AgentRunner>();
|
|
@@ -19,10 +24,25 @@ export class SessionManager {
|
|
|
19
24
|
ContextManager.initializeStaging();
|
|
20
25
|
ContextManager.compileGlobalRules();
|
|
21
26
|
|
|
27
|
+
// Spawn/start permanent workspace terminal shell runner
|
|
28
|
+
const shellRunner = new ShellRunner();
|
|
29
|
+
shellRunner.start();
|
|
30
|
+
this.sessions.set(shellRunner.id, shellRunner);
|
|
31
|
+
|
|
22
32
|
// Reload persisted sessions
|
|
23
33
|
try {
|
|
24
34
|
const saved = SessionPersister.loadAllSessions();
|
|
25
35
|
for (const data of saved) {
|
|
36
|
+
// Automatically clean up stopped sessions older than 24 hours to avoid clutter
|
|
37
|
+
if (data.status === "stopped") {
|
|
38
|
+
const createdTime = new Date(data.createdAt).getTime();
|
|
39
|
+
const ageHours = (Date.now() - createdTime) / (1000 * 60 * 60);
|
|
40
|
+
if (ageHours > 24) {
|
|
41
|
+
SessionPersister.deleteSession(data.id);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
26
46
|
let runner: AgentRunner;
|
|
27
47
|
if (data.type === "mock") {
|
|
28
48
|
runner = new MockRunner(data.id, data.name);
|
|
@@ -43,11 +63,6 @@ export class SessionManager {
|
|
|
43
63
|
runner.scopedDirs = data.scopedDirs;
|
|
44
64
|
runner.lastSyncedWorkspaceFolders = data.lastSyncedWorkspaceFolders;
|
|
45
65
|
|
|
46
|
-
// Auto-resume mock runner if running
|
|
47
|
-
if (data.type === "mock" && data.status === "running") {
|
|
48
|
-
runner.start();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
66
|
this.sessions.set(data.id, runner);
|
|
52
67
|
}
|
|
53
68
|
} catch (err) {
|
|
@@ -56,12 +71,12 @@ export class SessionManager {
|
|
|
56
71
|
}
|
|
57
72
|
|
|
58
73
|
public static getInstance(): SessionManager {
|
|
59
|
-
if (!
|
|
60
|
-
|
|
74
|
+
if (!globalThis.sessionManager) {
|
|
75
|
+
globalThis.sessionManager = new SessionManager();
|
|
61
76
|
// Initialize WebSocket gateway server on port 3001
|
|
62
|
-
initWebSocketServer(3001, (id) =>
|
|
77
|
+
initWebSocketServer(3001, (id) => globalThis.sessionManager!.getSession(id));
|
|
63
78
|
}
|
|
64
|
-
return
|
|
79
|
+
return globalThis.sessionManager;
|
|
65
80
|
}
|
|
66
81
|
|
|
67
82
|
private generateId(): string {
|
|
@@ -114,7 +129,7 @@ export class SessionManager {
|
|
|
114
129
|
}
|
|
115
130
|
|
|
116
131
|
public syncWorkspaceFolders(session: AgentRunner) {
|
|
117
|
-
if (session.type === 'mock') return;
|
|
132
|
+
if (session.type === 'mock' || session.type === 'shell') return;
|
|
118
133
|
const root = session.workspaceRoot || process.env.ORIGINAL_CWD || process.cwd();
|
|
119
134
|
const currentWorkspaceFolders = getWorkspaceFileFolders(root);
|
|
120
135
|
|
|
@@ -116,7 +116,17 @@ export class SessionPersister {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
+
public static cancelPendingSave(id: string) {
|
|
120
|
+
const timer = this.pendingSaves.get(id);
|
|
121
|
+
if (timer) {
|
|
122
|
+
clearTimeout(timer);
|
|
123
|
+
this.pendingSaves.delete(id);
|
|
124
|
+
}
|
|
125
|
+
this.pendingData.delete(id);
|
|
126
|
+
}
|
|
127
|
+
|
|
119
128
|
public static deleteSession(id: string) {
|
|
129
|
+
this.cancelPendingSave(id);
|
|
120
130
|
try {
|
|
121
131
|
const dir = this.getSessionsDir();
|
|
122
132
|
const filePath = path.join(dir, `${id}.json`);
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import type { IPty } from "node-pty";
|
|
4
|
+
import { AgentRunner, RunnerStatus } from "./AgentRunner";
|
|
5
|
+
|
|
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";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function findGitBash(): string | null {
|
|
13
|
+
if (!isWindows()) {
|
|
14
|
+
return "bash";
|
|
15
|
+
}
|
|
16
|
+
const pf = process.env.PROGRAMFILES || "C:\\Program Files";
|
|
17
|
+
const pf86 = process.env["PROGRAMFILES(X86)"] || "C:\\Program Files (x86)";
|
|
18
|
+
const local = process.env.LOCALAPPDATA || "";
|
|
19
|
+
|
|
20
|
+
const candidates: string[] = [
|
|
21
|
+
process.env.WINGMAN_BASH_PATH,
|
|
22
|
+
path.join(pf, "Git", "bin", "bash.exe"),
|
|
23
|
+
path.join(pf86, "Git", "bin", "bash.exe"),
|
|
24
|
+
local ? path.join(local, "Programs", "Git", "bin", "bash.exe") : "",
|
|
25
|
+
].filter((p): p is string => typeof p === "string" && p !== "");
|
|
26
|
+
|
|
27
|
+
const found = candidates.find(p => fs.existsSync(p));
|
|
28
|
+
if (found) return found;
|
|
29
|
+
|
|
30
|
+
// Fallback to PowerShell or Cmd on Windows
|
|
31
|
+
const windir = process.env.windir || "C:\\Windows";
|
|
32
|
+
const powershell = path.join(windir, "System32", "WindowsPowerShell", "v1.0", "powershell.exe");
|
|
33
|
+
if (fs.existsSync(powershell)) return powershell;
|
|
34
|
+
|
|
35
|
+
const cmd = path.join(windir, "System32", "cmd.exe");
|
|
36
|
+
if (fs.existsSync(cmd)) return cmd;
|
|
37
|
+
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export class ShellRunner extends AgentRunner {
|
|
42
|
+
id: string = "workspace-terminal";
|
|
43
|
+
name: string = "Workspace Shell";
|
|
44
|
+
type: 'mock' | 'claude' | 'claude-docker' | 'claude-ssh' | 'aider' | 'aider-docker' | 'shell' = "shell";
|
|
45
|
+
status: 'idle' | 'running' | 'stopped' = 'idle';
|
|
46
|
+
createdAt: string = new Date().toISOString();
|
|
47
|
+
logs: string[] = [];
|
|
48
|
+
|
|
49
|
+
private ptyProcess: IPty | null = null;
|
|
50
|
+
private ptyModule: typeof import("node-pty") | null = null;
|
|
51
|
+
|
|
52
|
+
constructor() {
|
|
53
|
+
super();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
private appendLog(line: string) {
|
|
57
|
+
this.logs.push(line);
|
|
58
|
+
if (this.logs.length > 5000) {
|
|
59
|
+
this.logs.shift();
|
|
60
|
+
}
|
|
61
|
+
this.emitOutput(line);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async start(): Promise<void> {
|
|
65
|
+
if (this.status === 'running') return;
|
|
66
|
+
|
|
67
|
+
const shellPath = findGitBash();
|
|
68
|
+
if (!shellPath) {
|
|
69
|
+
this.status = 'stopped';
|
|
70
|
+
this.appendLog("[System Error] Shell executable (Git Bash/PowerShell) not found.\r\n");
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
if (!this.ptyModule) {
|
|
76
|
+
this.ptyModule = eval("require")("node-pty");
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
this.status = 'running';
|
|
80
|
+
this.appendLog("\x1b[1;36m[System] Launching workspace terminal interactive shell...\x1b[0m\r\n");
|
|
81
|
+
|
|
82
|
+
const targetCwd = process.env.ORIGINAL_CWD || process.cwd();
|
|
83
|
+
|
|
84
|
+
// Spawn login/interactive shell
|
|
85
|
+
const spawnArgs = isWindows() && shellPath.endsWith("bash.exe") ? ["--login"] : [];
|
|
86
|
+
|
|
87
|
+
this.ptyProcess = this.ptyModule!.spawn(shellPath, spawnArgs, {
|
|
88
|
+
name: "xterm-256color",
|
|
89
|
+
cols: 120,
|
|
90
|
+
rows: 30,
|
|
91
|
+
cwd: targetCwd,
|
|
92
|
+
env: {
|
|
93
|
+
...process.env,
|
|
94
|
+
TERM: "xterm-256color",
|
|
95
|
+
COLORTERM: "truecolor",
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
this.ptyProcess.onData((data: string) => {
|
|
100
|
+
this.appendLog(data);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
this.ptyProcess.onExit(({ exitCode, signal }: { exitCode: number; signal?: number }) => {
|
|
104
|
+
this.status = 'stopped';
|
|
105
|
+
this.appendLog(`\r\n\x1b[1;31m[System] Shell process exited (code=${exitCode}, signal=${signal}).\x1b[0m\r\n`);
|
|
106
|
+
this.ptyProcess = null;
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
} catch (err) {
|
|
110
|
+
const errorMessage = err instanceof Error ? err.message : "Unknown error";
|
|
111
|
+
this.status = 'stopped';
|
|
112
|
+
this.appendLog(`[System Error] Failed to initialize shell runner: ${errorMessage}\r\n`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async stop(): Promise<void> {
|
|
117
|
+
this.status = 'stopped';
|
|
118
|
+
if (this.ptyProcess) {
|
|
119
|
+
try {
|
|
120
|
+
this.ptyProcess.kill();
|
|
121
|
+
} catch (err) {
|
|
122
|
+
console.error("Error killing shell process:", err);
|
|
123
|
+
}
|
|
124
|
+
this.ptyProcess = null;
|
|
125
|
+
}
|
|
126
|
+
this.appendLog("\r\n\x1b[1;31m[System] Shell session stopped.\x1b[0m\r\n");
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
async sendInput(text: string, isRaw = false): Promise<void> {
|
|
130
|
+
if (this.status !== 'running' || !this.ptyProcess) {
|
|
131
|
+
this.appendLog(`\r\n[Error] Shell process is ${this.status}.\r\n`);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
this.ptyProcess.write(isRaw ? text : text + "\r");
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
override resize(cols: number, rows: number): void {
|
|
138
|
+
if (this.ptyProcess) {
|
|
139
|
+
try {
|
|
140
|
+
this.ptyProcess.resize(cols, rows);
|
|
141
|
+
} catch (err) {
|
|
142
|
+
console.error("[ShellRunner] Failed to resize:", err);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
getStatus(): RunnerStatus {
|
|
148
|
+
return {
|
|
149
|
+
id: this.id,
|
|
150
|
+
name: this.name,
|
|
151
|
+
type: this.type,
|
|
152
|
+
status: this.status,
|
|
153
|
+
createdAt: this.createdAt,
|
|
154
|
+
logsCount: this.logs.length,
|
|
155
|
+
workspaceRoot: process.env.ORIGINAL_CWD || process.cwd(),
|
|
156
|
+
scopedDirs: [],
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
var R=require("../../chunks/[turbopack]_runtime.js")("server/app/favicon.ico/route.js")
|
|
2
|
-
R.c("server/chunks/[externals]_next_dist_0arv.vj._.js")
|
|
3
|
-
R.c("server/chunks/[root-of-the-server]__0j8-xkl._.js")
|
|
4
|
-
R.c("server/chunks/node_modules_next_dist_esm_build_templates_app-route_0m.429v.js")
|
|
5
|
-
R.c("server/chunks/_next-internal_server_app_favicon_ico_route_actions_095lj93.js")
|
|
6
|
-
R.m(27413)
|
|
7
|
-
module.exports=R.m(27413).exports
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":1,"files":["../../../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../../../node_modules/@swc/helpers/package.json","../../../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/client/components/hooks-server-context.js","../../../../node_modules/next/dist/client/components/static-generation-bailout.js","../../../../node_modules/next/dist/client/lib/console.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../../../node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js","../../../../node_modules/next/dist/compiled/source-map/package.json","../../../../node_modules/next/dist/compiled/source-map/source-map.js","../../../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../../../node_modules/next/dist/compiled/ws/index.js","../../../../node_modules/next/dist/compiled/ws/package.json","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/framework/boundary-constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/picocolors.js","../../../../node_modules/next/dist/lib/scheduler.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/staged-rendering.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/parse-stack.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/source-maps.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/node-environment-baseline.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../../../node_modules/next/dist/server/node-environment-extensions/date.js","../../../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../../../node_modules/next/dist/server/node-environment-extensions/random.js","../../../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../../../node_modules/next/dist/server/node-environment.js","../../../../node_modules/next/dist/server/node-polyfill-crypto.js","../../../../node_modules/next/dist/server/patch-error-inspect.js","../../../../node_modules/next/dist/server/require-hook.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/server/runtime-reacts.external.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../node_modules/react/cjs/react.development.js","../../../../node_modules/react/cjs/react.production.js","../../../../node_modules/react/index.js","../../../../node_modules/react/package.json","../../chunks/[externals]_next_dist_0arv.vj._.js","../../chunks/[root-of-the-server]__0j8-xkl._.js","../../chunks/[turbopack]_runtime.js","../../chunks/_next-internal_server_app_favicon_ico_route_actions_095lj93.js","../../chunks/node_modules_next_dist_esm_build_templates_app-route_0m.429v.js"]}
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"status":200,"headers":{"cache-control":"public, max-age=0, must-revalidate","content-type":"image/x-icon","x-next-cache-tags":"_N_T_/layout,_N_T_/favicon.ico/layout,_N_T_/favicon.ico/route,_N_T_/favicon.ico"}}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},46786,(e,r,t)=>{r.exports=e.x("os",()=>require("os"))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Bexternals%5D__1334_78._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},35545,e=>{"use strict";var t=e.i(47909),r=e.i(74017),s=e.i(96250),n=e.i(59756),a=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),u=e.i(87718),c=e.i(95169),d=e.i(47587),p=e.i(66012),h=e.i(70101),x=e.i(26937),f=e.i(10372),R=e.i(93695);e.i(52474);var v=e.i(220),m=e.i(89171),g=e.i(22734),y=e.i(14747),w=e.i(33405);let E=y.default.join(process.env.ORIGINAL_CWD||process.cwd(),".ai","neural-loom"),C=y.default.join(E,"ssh.json");async function N(){try{if(g.default.existsSync(C)){let e=g.default.readFileSync(C,"utf8"),t=JSON.parse(e);return m.NextResponse.json({success:!0,config:t})}return m.NextResponse.json({success:!0,config:{host:"",port:22,username:"",privateKeyPath:""}})}catch(t){let e=t instanceof Error?t.message:"Unknown error";return m.NextResponse.json({success:!1,error:e},{status:500})}}async function S(e){try{let{test:t,host:r,port:s,username:n,privateKeyPath:a}=await e.json();if(!r||!n)return m.NextResponse.json({success:!1,error:"Host and Username are required."},{status:400});let o=s?parseInt(String(s),10):22;if(t){let e=await new Promise(e=>{let t=a?`-i "${a}"`:"",s=`-p ${o}`,i=`ssh -o ConnectTimeout=3 -o BatchMode=yes -o StrictHostKeyChecking=accept-new ${t} ${s} ${n}@${r} "echo CONNECTED"`;(0,w.exec)(i,(t,r,s)=>{t?e({ok:!1,message:s.trim()||t.message}):r.trim().includes("CONNECTED")?e({ok:!0,message:"Successfully connected to remote VM!"}):e({ok:!1,message:s.trim()||"Failed to verify remote host verification print."})})});return m.NextResponse.json({success:e.ok,message:e.message})}return g.default.existsSync(E)||g.default.mkdirSync(E,{recursive:!0}),g.default.writeFileSync(C,JSON.stringify({host:r,port:o,username:n,privateKeyPath:a||""},null,2),"utf8"),m.NextResponse.json({success:!0,message:"SSH configuration saved successfully!"})}catch(t){let e=t instanceof Error?t.message:"Unknown error";return m.NextResponse.json({success:!1,error:e},{status:500})}}e.s(["GET",0,N,"POST",0,S],22571);var A=e.i(22571);let T=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/context/ssh/route",pathname:"/api/context/ssh",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/context/ssh/route.ts",nextConfigOutput:"",userland:A,...{}}),{workAsyncStorage:b,workUnitAsyncStorage:k,serverHooks:j}=T;async function q(e,t,s){s.requestMeta&&(0,n.setRequestMeta)(e,s.requestMeta),T.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let m="/api/context/ssh/route";m=m.replace(/\/index$/,"")||"/";let g=await T.prepare(e,t,{srcPage:m,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:y,deploymentId:w,params:E,nextConfig:C,parsedUrl:N,isDraftMode:S,prerenderManifest:A,routerServerContext:b,isOnDemandRevalidate:k,revalidateOnlyGenerated:j,resolvedPathname:q,clientReferenceManifest:P,serverActionsManifest:O}=g,_=(0,i.normalizeAppPath)(m),H=!!(A.dynamicRoutes[_]||A.routes[q]),I=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,N,!1):t.end("This page could not be found"),null);if(H&&!S){let e=!!A.routes[q],t=A.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await I();throw new R.NoFallbackError}}let U=null;!H||T.isDev||S||(U="/index"===(U=q)?"/":U);let M=!0===T.isDev||!H,D=H&&!M;O&&P&&(0,o.setManifestsSingleton)({page:m,clientReferenceManifest:P,serverActionsManifest:O});let $=e.method||"GET",F=(0,a.getTracer)(),K=F.getActiveScopeSpan(),B=!!(null==b?void 0:b.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await T.getIncrementalCache(e,C,A,L);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let V={params:E,previewProps:A.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:M,incrementalCache:G,cacheLifeProfiles:C.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>T.onRequestError(e,t,s,n,b)},sharedContext:{buildId:y,deploymentId:w}},W=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t));try{let n,o=async e=>T.handle(J,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=F.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${$} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",s),n.updateName(t))}else e.updateName(`${$} ${m}`)}),i=async n=>{var a,i;let l=async({previousCacheEntry:r})=>{try{if(!L&&k&&j&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await o(n);e.fetchMetrics=V.renderOpts.fetchMetrics;let i=V.renderOpts.pendingWaitUntil;i&&s.waitUntil&&(s.waitUntil(i),i=void 0);let l=V.renderOpts.collectedTags;if(!H)return await (0,p.sendResponse)(W,X,a,V.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(a.headers);l&&(t[f.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,s=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await T.onRequestError(e,t,{routerKind:"App Router",routePath:m,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:k})},!1,b),t}},u=await T.handleResponse({req:e,nextConfig:C,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:A,isRoutePPREnabled:!1,isOnDemandRevalidate:k,revalidateOnlyGenerated:j,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:L});if(!H)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(i=u.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",k?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return L&&H||c.delete(f.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,x.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(W,X,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};B&&K?await i(K):(n=F.getActiveScopeSpan(),await F.withPropagatedContext(e.headers,()=>F.trace(c.BaseServerSpan.handleRequest,{spanName:`${$} ${m}`,kind:a.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},i),void 0,!B))}catch(t){if(t instanceof R.NoFallbackError||await T.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:k})},!1,b),H)throw t;return await (0,p.sendResponse)(W,X,new Response(null,{status:500})),null}}e.s(["handler",0,q,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:k})},"routeModule",0,T,"serverHooks",0,j,"workAsyncStorage",0,b,"workUnitAsyncStorage",0,k],35545)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0l7c-gn._.js.map
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module.exports=[24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},24417,e=>{"use strict";var t=e.i(22734),r=e.i(14747);e.s(["getWorkspaceFileFolders",0,function(e){try{if(!e||!t.default.existsSync(e))return[];let s=r.default.resolve(e).replace(/\\/g,"/"),a=t.default.readdirSync(s).find(e=>e.endsWith(".code-workspace"));if(!a)return[];let n=r.default.join(s,a),i=t.default.readFileSync(n,"utf8"),o=JSON.parse(i);if(!o.folders||!Array.isArray(o.folders))return[];let l=[];for(let e of o.folders)if(e.path){let a=r.default.resolve(s,e.path).replace(/\\/g,"/");a!==s&&t.default.existsSync(a)&&l.push(a)}return l}catch(e){return console.error("[WorkspaceParser] Failed to parse code-workspace file:",e),[]}}])},46619,e=>{"use strict";var t=e.i(22734),r=e.i(14747);e.s(["ContextManager",0,class{static get workspaceRoot(){return process.env.ORIGINAL_CWD||process.cwd()}static ensureDirs(e){let s=r.default.join(e,".ai","neural-loom");t.default.existsSync(s)||t.default.mkdirSync(s,{recursive:!0});let a=r.default.join(e,".claude","commands");t.default.existsSync(a)||t.default.mkdirSync(a,{recursive:!0})}static initializeStaging(e=process.env.ORIGINAL_CWD||process.cwd()){this.ensureDirs(e);let s=r.default.join(e,".claude","commands","ccp.md");t.default.existsSync(s)||t.default.writeFileSync(s,"Read the prompt from .ai/neural-loom/cprompt.md and execute it. This is a staged prompt from the NeuralLoom UI. Treat the contents as user instructions.\n");let a=r.default.join(e,".claude","commands","ccc.md");t.default.existsSync(a)||t.default.writeFileSync(a,"Read the context from .ai/neural-loom/ccontext.md. This is persistent context from the NeuralLoom UI. Absorb it as background information for this session. Acknowledge briefly what you received.\n")}static updatePrompt(e,s=process.env.ORIGINAL_CWD||process.cwd()){this.ensureDirs(s);let a=r.default.join(s,".ai","neural-loom","cprompt.md");t.default.writeFileSync(a,e)}static updateContext(e,s=process.env.ORIGINAL_CWD||process.cwd()){this.ensureDirs(s);let a=r.default.join(s,".ai","neural-loom","ccontext.md");t.default.writeFileSync(a,e)}static updateRules(e,s=process.env.ORIGINAL_CWD||process.cwd()){this.ensureDirs(s);let a=r.default.join(s,"AGENTS.md");t.default.writeFileSync(a,e,"utf8")}static loadPrompt(e=process.env.ORIGINAL_CWD||process.cwd()){let s=r.default.join(e,".ai","neural-loom","cprompt.md");return t.default.existsSync(s)?t.default.readFileSync(s,"utf8"):""}static loadRules(e=process.env.ORIGINAL_CWD||process.cwd()){let s=r.default.join(e,"AGENTS.md");return t.default.existsSync(s)?t.default.readFileSync(s,"utf8"):""}static compileGlobalRules(){this.compileSessionContext()}static compileSessionContext(e=process.env.ORIGINAL_CWD||process.cwd(),s){this.ensureDirs(e),this.initializeStaging(e);let a=r.default.join(e,"AGENTS.md"),n="";if(t.default.existsSync(a))n=t.default.readFileSync(a,"utf8");else{let e=r.default.join(this.workspaceRoot,"AGENTS.md");t.default.existsSync(e)&&(n=t.default.readFileSync(e,"utf8"))}let i=`## Workspace Root Map (${e}):
|
|
2
|
-
${this.generateProjectMapFor(e)}`;s&&Array.isArray(s)&&s.forEach(e=>{t.default.existsSync(e)&&(i+=`
|
|
3
|
-
|
|
4
|
-
## Scoped Directory Map (${e}):
|
|
5
|
-
${this.generateProjectMapFor(e)}`)});let o=`# System Rules & Guidelines
|
|
6
|
-
|
|
7
|
-
${n}
|
|
8
|
-
|
|
9
|
-
# Project File Hierarchy Map
|
|
10
|
-
|
|
11
|
-
${i}`;this.updateContext(o,e);let l=r.default.join(e,".ai","neural-loom","cprompt.md");t.default.existsSync(l)||t.default.writeFileSync(l,"Hello! Please review the project context (/ccc) and check for any tasks to execute.")}static generateProjectMapFor(e){try{let s=(e,a=0)=>{if(a>2)return"";let n="";for(let i of t.default.readdirSync(e,{withFileTypes:!0})){if(i.name.startsWith(".")||"node_modules"===i.name||"out"===i.name||".next"===i.name)continue;let t=" ".repeat(a);i.isDirectory()?(n+=`${t}- [Dir] ${i.name}/
|
|
12
|
-
`,n+=s(r.default.join(e,i.name),a+1)):n+=`${t}- [File] ${i.name}
|
|
13
|
-
`}return n};return s(e)}catch(e){return"Error generating project map: "+(e instanceof Error?e.message:String(e))}}}])},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},46786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},6299,e=>{"use strict";var t=e.i(47909),r=e.i(74017),s=e.i(96250),a=e.i(59756),n=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),m=e.i(26937),h=e.i(10372),x=e.i(93695);e.i(52474);var y=e.i(220),R=e.i(89171),g=e.i(29307),v=e.i(24361),w=e.i(33405),S=e.i(46786);let C=(0,v.promisify)(w.exec);async function E(e){try{let{searchParams:t}=new URL(e.url),r=t.get("id");if(!r)return R.NextResponse.json({error:"Missing session id"},{status:400});let s=g.SessionManager.getInstance().getSession(r);if(!s)return R.NextResponse.json({error:"Session not found"},{status:404});let a="0.0%",n="0.0MiB",i="0.0%";if("running"===s.status)if("claude-docker"===s.type||"aider-docker"===s.type)try{let e=`neural-loom-session-${r}`,{stdout:t}=await C(`docker stats ${e} --no-stream --format "{{.CPUPerc}},{{.MemUsage}},{{.MemPerc}}"`),s=t.trim().split(",");s.length>=3&&(a=s[0].trim(),n=s[1].trim().split(" / ")[0],i=s[2].trim())}catch{let e=(3*Math.random()+1).toFixed(1)+"%",t=(130+20*Math.random()).toFixed(1)+"MiB",r=(1.5+.5*Math.random()).toFixed(2)+"%";a=e,n=t,i=r}else{let e=(5*Math.random()+2).toFixed(1)+"%",t=process.memoryUsage().rss,r=(t/1048576).toFixed(1)+"MiB",s=(t/S.default.totalmem()*100).toFixed(2)+"%";a=e,n=r,i=s}return R.NextResponse.json({success:!0,id:r,status:s.status,type:s.type,cpu:a,memory:n,memoryPercent:i})}catch(t){let e=t instanceof Error?t.message:"Unknown error";return R.NextResponse.json({error:e},{status:500})}}e.s(["GET",0,E],40607);var A=e.i(40607);let N=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/sessions/stats/route",pathname:"/api/sessions/stats",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/sessions/stats/route.ts",nextConfigOutput:"",userland:A,...{}}),{workAsyncStorage:j,workUnitAsyncStorage:k,serverHooks:I}=N;async function P(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),N.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/sessions/stats/route";R=R.replace(/\/index$/,"")||"/";let g=await N.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:v,deploymentId:w,params:S,nextConfig:C,parsedUrl:E,isDraftMode:A,prerenderManifest:j,routerServerContext:k,isOnDemandRevalidate:I,revalidateOnlyGenerated:P,resolvedPathname:b,clientReferenceManifest:F,serverActionsManifest:T}=g,M=(0,o.normalizeAppPath)(R),_=!!(j.dynamicRoutes[M]||j.routes[b]),D=async()=>((null==k?void 0:k.render404)?await k.render404(e,t,E,!1):t.end("This page could not be found"),null);if(_&&!A){let e=!!j.routes[b],t=j.dynamicRoutes[M];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await D();throw new x.NoFallbackError}}let O=null;!_||N.isDev||A||(O="/index"===(O=b)?"/":O);let q=!0===N.isDev||!_,U=_&&!q;T&&F&&(0,i.setManifestsSingleton)({page:R,clientReferenceManifest:F,serverActionsManifest:T});let $=e.method||"GET",H=(0,n.getTracer)(),G=H.getActiveScopeSpan(),L=!!(null==k?void 0:k.isWrappedByNextServer),W=!!(0,a.getRequestMeta)(e,"minimalMode"),B=(0,a.getRequestMeta)(e,"incrementalCache")||await N.getIncrementalCache(e,C,j,W);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let K={params:S,previewProps:j.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:q,incrementalCache:B,cacheLifeProfiles:C.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>N.onRequestError(e,t,s,a,k)},sharedContext:{buildId:v,deploymentId:w}},z=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(z,(0,d.signalFromNodeResponse)(t));try{let a,i=async e=>N.handle(X,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=H.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${$} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${$} ${R}`)}),o=async a=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!W&&I&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);e.fetchMetrics=K.renderOpts.fetchMetrics;let o=K.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=K.renderOpts.collectedTags;if(!_)return await (0,p.sendResponse)(z,V,n,K.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,s=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:y.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await N.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:I})},!1,k),t}},d=await N.handleResponse({req:e,nextConfig:C,cacheKey:O,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:P,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:W});if(!_)return null;if((null==d||null==(n=d.value)?void 0:n.kind)!==y.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",I?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return W&&_||u.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,m.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(z,V,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};L&&G?await o(G):(a=H.getActiveScopeSpan(),await H.withPropagatedContext(e.headers,()=>H.trace(u.BaseServerSpan.handleRequest,{spanName:`${$} ${R}`,kind:n.SpanKind.SERVER,attributes:{"http.method":$,"http.target":e.url}},o),void 0,!L))}catch(t){if(t instanceof x.NoFallbackError||await N.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:I})},!1,k),_)throw t;return await (0,p.sendResponse)(z,V,new Response(null,{status:500})),null}}e.s(["handler",0,P,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:k})},"routeModule",0,N,"serverHooks",0,I,"workAsyncStorage",0,j,"workUnitAsyncStorage",0,k],6299)}];
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0m91xif._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},33405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},5687,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),s=e.i(59756),n=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),x=e.i(70101),f=e.i(26937),h=e.i(10372),R=e.i(93695);e.i(52474);var g=e.i(220),v=e.i(89171),w=e.i(24361),m=e.i(33405),y=e.i(22734),E=e.i(14747);let C=(0,w.promisify)(m.exec);async function N(e){try{let{searchParams:t}=new URL(e.url),r=t.get("action"),a=t.get("root"),s=t.get("file"),n=(a&&y.default.existsSync(a)?a:process.env.ORIGINAL_CWD||process.cwd()).replace(/\\/g,"/");try{await C("git rev-parse --is-inside-work-tree",{cwd:n})}catch{return v.NextResponse.json({success:!0,isGit:!1,files:[]})}if("status"===r){let{stdout:e}=await C("git status --porcelain",{cwd:n}),t=e.split(/\r?\n/).filter(Boolean).map(e=>{let t=e.substring(0,2),r=e.substring(3).trim();r.startsWith('"')&&r.endsWith('"')&&(r=r.slice(1,-1));let a=E.default.join(n,r).replace(/\\/g,"/");return{status:t.trim(),relativePath:r,absolutePath:a,name:E.default.basename(r)}});return v.NextResponse.json({success:!0,isGit:!0,files:t})}if("diff"===r){if(!s)return v.NextResponse.json({error:"Missing file parameter"},{status:400});let e=E.default.resolve(n,s).replace(/\\/g,"/");if(!y.default.existsSync(e))return v.NextResponse.json({error:"File not found"},{status:404});let{stdout:t}=await C("git status --porcelain -- "+JSON.stringify(s),{cwd:n});if(t.startsWith("??")){let t=y.default.readFileSync(e,"utf8").split(/\r?\n/).map(e=>"+"+e).join("\n");return v.NextResponse.json({success:!0,diff:t})}try{let{stdout:e}=await C(`git diff --no-color -- ${JSON.stringify(s)}`,{cwd:n});return v.NextResponse.json({success:!0,diff:e})}catch{return v.NextResponse.json({success:!0,diff:"Binary file or diff unavailable."})}}return v.NextResponse.json({error:"Invalid action"},{status:400})}catch(t){let e=t instanceof Error?t.message:"Unknown error";return v.NextResponse.json({error:e},{status:500})}}e.s(["GET",0,N],89717);var b=e.i(89717);let A=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/git/route",pathname:"/api/git",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/git/route.ts",nextConfigOutput:"",userland:b,...{}}),{workAsyncStorage:j,workUnitAsyncStorage:q,serverHooks:S}=A;async function T(e,t,a){a.requestMeta&&(0,s.setRequestMeta)(e,a.requestMeta),A.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/git/route";v=v.replace(/\/index$/,"")||"/";let w=await A.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:m,deploymentId:y,params:E,nextConfig:C,parsedUrl:N,isDraftMode:b,prerenderManifest:j,routerServerContext:q,isOnDemandRevalidate:S,revalidateOnlyGenerated:T,resolvedPathname:_,clientReferenceManifest:O,serverActionsManifest:P}=w,k=(0,o.normalizeAppPath)(v),I=!!(j.dynamicRoutes[k]||j.routes[_]),U=async()=>((null==q?void 0:q.render404)?await q.render404(e,t,N,!1):t.end("This page could not be found"),null);if(I&&!b){let e=!!j.routes[_],t=j.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await U();throw new R.NoFallbackError}}let H=null;!I||A.isDev||b||(H="/index"===(H=_)?"/":H);let M=!0===A.isDev||!I,D=I&&!M;P&&O&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:O,serverActionsManifest:P});let F=e.method||"GET",$=(0,n.getTracer)(),B=$.getActiveScopeSpan(),K=!!(null==q?void 0:q.isWrappedByNextServer),G=!!(0,s.getRequestMeta)(e,"minimalMode"),L=(0,s.getRequestMeta)(e,"incrementalCache")||await A.getIncrementalCache(e,C,j,G);null==L||L.resetRequestCache(),globalThis.__incrementalCache=L;let W={params:E,previewProps:j.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:M,incrementalCache:L,cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,s)=>A.onRequestError(e,t,a,s,q)},sharedContext:{buildId:m,deploymentId:y}},V=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(V,(0,u.signalFromNodeResponse)(t));try{let s,i=async e=>A.handle(J,W).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${F} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),s&&s!==e&&(s.setAttribute("http.route",a),s.updateName(t))}else e.updateName(`${F} ${v}`)}),o=async s=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!G&&S&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(s);e.fetchMetrics=W.renderOpts.fetchMetrics;let o=W.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=W.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(V,X,n,W.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,x.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,a=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:W.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:S})},!1,q),t}},u=await A.handleResponse({req:e,nextConfig:C,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:j,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:G});if(!I)return null;if((null==u||null==(n=u.value)?void 0:n.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),b&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,x.fromNodeOutgoingHttpHeaders)(u.value.headers);return G&&I||d.delete(h.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,c.sendResponse)(V,X,new Response(u.value.body,{headers:d,status:u.value.status||200})),null};K&&B?await o(B):(s=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${v}`,kind:n.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof R.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:S})},!1,q),I)throw t;return await (0,c.sendResponse)(V,X,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:j,workUnitAsyncStorage:q})},"routeModule",0,A,"serverHooks",0,S,"workAsyncStorage",0,j,"workUnitAsyncStorage",0,q],5687)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0ntt3om._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},24417,e=>{"use strict";var t=e.i(22734),r=e.i(14747);e.s(["getWorkspaceFileFolders",0,function(e){try{if(!e||!t.default.existsSync(e))return[];let a=r.default.resolve(e).replace(/\\/g,"/"),n=t.default.readdirSync(a).find(e=>e.endsWith(".code-workspace"));if(!n)return[];let s=r.default.join(a,n),o=t.default.readFileSync(s,"utf8"),i=JSON.parse(o);if(!i.folders||!Array.isArray(i.folders))return[];let l=[];for(let e of i.folders)if(e.path){let n=r.default.resolve(a,e.path).replace(/\\/g,"/");n!==a&&t.default.existsSync(n)&&l.push(n)}return l}catch(e){return console.error("[WorkspaceParser] Failed to parse code-workspace file:",e),[]}}])},81243,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),o=e.i(74677),i=e.i(69741),l=e.i(16795),d=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),f=e.i(70101),x=e.i(26937),h=e.i(10372),R=e.i(93695);e.i(52474);var v=e.i(220),g=e.i(89171),y=e.i(22734),w=e.i(14747),m=e.i(24417);let E=w.default.join(process.env.ORIGINAL_CWD||process.cwd(),".ai","neural-loom"),C=w.default.join(E,"claude.json");async function A(){try{let e="Claude Local",t="",r=[],a="";if(y.default.existsSync(C))try{let n=y.default.readFileSync(C,"utf8"),s=JSON.parse(n);e=s.name||"Claude Local",t=s.workspaceRoot||"",r=s.scopedDirs||[],a=s.extraFlags||""}catch(e){console.error("Failed to parse claude.json:",e)}let n=t||process.env.ORIGINAL_CWD||process.cwd(),s=(0,m.getWorkspaceFileFolders)(n),o=Array.from(new Set([...r,...s]));return g.NextResponse.json({success:!0,config:{name:e,workspaceRoot:t,scopedDirs:o,extraFlags:a}})}catch(t){let e=t instanceof Error?t.message:"Unknown error";return g.NextResponse.json({success:!1,error:e},{status:500})}}async function S(e){try{let{name:t,workspaceRoot:r,scopedDirs:a,extraFlags:n}=await e.json();return y.default.existsSync(E)||y.default.mkdirSync(E,{recursive:!0}),y.default.writeFileSync(C,JSON.stringify({name:t||"Claude Local",workspaceRoot:r||"",scopedDirs:a||[],extraFlags:n||""},null,2),"utf8"),g.NextResponse.json({success:!0,message:"Claude configuration saved successfully!"})}catch(t){let e=t instanceof Error?t.message:"Unknown error";return g.NextResponse.json({success:!1,error:e},{status:500})}}e.s(["GET",0,A,"POST",0,S],82294);var N=e.i(82294);let k=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/context/claude/route",pathname:"/api/context/claude",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/context/claude/route.ts",nextConfigOutput:"",userland:N,...{}}),{workAsyncStorage:b,workUnitAsyncStorage:j,serverHooks:O}=k;async function T(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),k.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/context/claude/route";g=g.replace(/\/index$/,"")||"/";let y=await k.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,deploymentId:m,params:E,nextConfig:C,parsedUrl:A,isDraftMode:S,prerenderManifest:N,routerServerContext:b,isOnDemandRevalidate:j,revalidateOnlyGenerated:O,resolvedPathname:T,clientReferenceManifest:q,serverActionsManifest:P}=y,_=(0,i.normalizeAppPath)(g),I=!!(N.dynamicRoutes[_]||N.routes[T]),F=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,A,!1):t.end("This page could not be found"),null);if(I&&!S){let e=!!N.routes[T],t=N.dynamicRoutes[_];if(t&&!1===t.fallback&&!e){if(C.adapterPath)return await F();throw new R.NoFallbackError}}let D=null;!I||k.isDev||S||(D="/index"===(D=T)?"/":D);let U=!0===k.isDev||!I,H=I&&!U;P&&q&&(0,o.setManifestsSingleton)({page:g,clientReferenceManifest:q,serverActionsManifest:P});let M=e.method||"GET",L=(0,s.getTracer)(),W=L.getActiveScopeSpan(),$=!!(null==b?void 0:b.isWrappedByNextServer),K=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await k.getIncrementalCache(e,C,N,K);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let G={params:E,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts},cacheComponents:!!C.cacheComponents,supportsDynamicResponse:U,incrementalCache:B,cacheLifeProfiles:C.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>k.onRequestError(e,t,a,n,b)},sharedContext:{buildId:w,deploymentId:m}},J=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(J,(0,d.signalFromNodeResponse)(t));try{let n,o=async e=>k.handle(X,G).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=L.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${M} ${g}`)}),i=async n=>{var s,i;let l=async({previousCacheEntry:r})=>{try{if(!K&&j&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(n);e.fetchMetrics=G.renderOpts.fetchMetrics;let i=G.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let l=G.renderOpts.collectedTags;if(!I)return await (0,p.sendResponse)(J,V,s,G.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,f.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[h.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,a=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=h.INFINITE_CACHE?void 0:G.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await k.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:j})},!1,b),t}},d=await k.handleResponse({req:e,nextConfig:C,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:j,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:K});if(!I)return null;if((null==d||null==(s=d.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});K||t.setHeader("x-nextjs-cache",j?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,f.fromNodeOutgoingHttpHeaders)(d.value.headers);return K&&I||u.delete(h.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,x.getCacheControlHeader)(d.cacheControl)),await (0,p.sendResponse)(J,V,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};$&&W?await i(W):(n=L.getActiveScopeSpan(),await L.withPropagatedContext(e.headers,()=>L.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${g}`,kind:s.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},i),void 0,!$))}catch(t){if(t instanceof R.NoFallbackError||await k.onRequestError(e,t,{routerKind:"App Router",routePath:_,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:j})},!1,b),I)throw t;return await (0,p.sendResponse)(J,V,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:j})},"routeModule",0,k,"serverHooks",0,O,"workAsyncStorage",0,b,"workUnitAsyncStorage",0,j],81243)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0p~u94k._.js.map
|