neural-loom 0.2.68 → 0.2.69
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 +1 -1
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- 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/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 +3 -3
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0tq0maq._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0tq0maq._.js.map +1 -1
- 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/{0fdyrz6c97v4y.js → 008bf~h8rh5_3.js} +1 -1
- package/.next/static/chunks/{0cbr3_t9j1ilb.js → 00pgauqedvo01.js} +2 -2
- package/.next/static/chunks/{09at8yg03trv8.js → 0ii_nb0g40rmj.js} +1 -1
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/app/components/IdeLayout.tsx +1 -1
- package/src/app/components/TerminalConsole.tsx +16 -1
- /package/.next/static/{7qXcDZENU2sMQ6EyGkMNq → EglcK14vXeSWIjxjJCP9A}/_buildManifest.js +0 -0
- /package/.next/static/{7qXcDZENU2sMQ6EyGkMNq → EglcK14vXeSWIjxjJCP9A}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{7qXcDZENU2sMQ6EyGkMNq → EglcK14vXeSWIjxjJCP9A}/_ssgManifest.js +0 -0
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
NeuralLoom is a local Next.js orchestration cockpit and terminal bridge designed to manage multiple concurrent terminal agent sessions (such as **Claude Code** and **Aider**) in isolated or overlapping workspaces. It streams pseudo-terminal (PTY) streams to the browser over secure WebSockets, manages system prompt environments, compiles directory maps, tracks active token costs, and displays visual resource telemetry.
|
|
4
4
|
|
|
5
5
|
> [!TIP]
|
|
6
|
-
> **UI Capabilities & Gap Audit**: You can view the live interactive [UI Capabilities & Gap Audit Dashboard](http://localhost:
|
|
6
|
+
> **UI Capabilities & Gap Audit**: You can view the live interactive [UI Capabilities & Gap Audit Dashboard](http://localhost:9600/ui-audit.html) (or access it locally at `/ui-audit.html` on the server) to explore current layout components, read-only diff viewers, and the built-in database/terminal consoles.
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -33,9 +33,9 @@ NeuralLoom is a local Next.js orchestration cockpit and terminal bridge designed
|
|
|
33
33
|
> It depends on a persistent server runtime to manage active node-pty terminal threads, keep sockets connected, write to the local filesystem, and interface with Docker/SSH.
|
|
34
34
|
|
|
35
35
|
### Core Components
|
|
36
|
-
1. **Next.js Frontend (Port
|
|
36
|
+
1. **Next.js Frontend (Port 9600)**: Visual IDE layout containing the file explorer, Monaco-style editor textareas, resource telemetry gauges, and xterm.js terminals.
|
|
37
37
|
2. **Next.js Backend API routes**: Filesystem operations, git diff generator, context compilers, and launcher configurations.
|
|
38
|
-
3. **WebSocket Server Gateway (Port
|
|
38
|
+
3. **WebSocket Server Gateway (Port 9601)**: Intercepts raw keystrokes from the browser, pipes them to respective PTY child processes on the server, and routes stdout buffers back to the UI terminal wrapper.
|
|
39
39
|
|
|
40
40
|
## 🚀 Instant Run via npx (Recommended)
|
|
41
41
|
|
|
@@ -58,7 +58,7 @@ npm install -g neural-loom
|
|
|
58
58
|
neural-loom
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
Once started, open **[http://localhost:
|
|
61
|
+
Once started, open **[http://localhost:9600](http://localhost:9600)** in your browser to start launching and managing your AI coding agent sessions.
|
|
62
62
|
|
|
63
63
|
> [!NOTE]
|
|
64
64
|
> On Windows, ensure you run this command in a terminal that has access to Git Bash (for runner wrapping) and Node/NPM. If `npm` is not in your global path, you can prepend the path:
|
|
@@ -93,7 +93,7 @@ Launches the Next.js app and the background WebSocket gateway concurrently:
|
|
|
93
93
|
```bash
|
|
94
94
|
npm run dev
|
|
95
95
|
```
|
|
96
|
-
Open **[http://localhost:
|
|
96
|
+
Open **[http://localhost:9600](http://localhost:9600)** to launch your dashboard.
|
|
97
97
|
|
|
98
98
|
### 5. Compiling for Production Local Run
|
|
99
99
|
To build the bundle and boot up the production server locally:
|
package/package.json
CHANGED
|
@@ -221,7 +221,7 @@ interface OpenFile {
|
|
|
221
221
|
isModified: boolean;
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
-
export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClose, sessions, onSwitchSession, onRefreshSessions, wsPort =
|
|
224
|
+
export default function IdeLayout({ sessionId, workspaceRoot, scopedDirs, onClose, sessions, onSwitchSession, onRefreshSessions, wsPort = 9601 }: IdeLayoutProps) {
|
|
225
225
|
const scopedDirsStr = JSON.stringify(scopedDirs);
|
|
226
226
|
const activeSession = sessions.find(s => s.id === sessionId);
|
|
227
227
|
const [workspace, setWorkspace] = useState<WorkspaceData | null>(null);
|
|
@@ -46,7 +46,7 @@ function copyTextToClipboard(text: string): boolean {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
export default function TerminalConsole({ sessionId, height = "400px", wsPort =
|
|
49
|
+
export default function TerminalConsole({ sessionId, height = "400px", wsPort = 9601 }: TerminalConsoleProps) {
|
|
50
50
|
const terminalRef = useRef<HTMLDivElement>(null);
|
|
51
51
|
const xtermRef = useRef<Terminal | null>(null);
|
|
52
52
|
const wsRef = useRef<WebSocket | null>(null);
|
|
@@ -182,13 +182,26 @@ export default function TerminalConsole({ sessionId, height = "400px", wsPort =
|
|
|
182
182
|
term.focus();
|
|
183
183
|
|
|
184
184
|
const container = terminalRef.current;
|
|
185
|
+
const handleMouseDown = (e: MouseEvent) => {
|
|
186
|
+
if (e.button === 2 && term.hasSelection()) {
|
|
187
|
+
e.stopPropagation();
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
const handleMouseUp = (e: MouseEvent) => {
|
|
191
|
+
if (e.button === 2 && term.hasSelection()) {
|
|
192
|
+
e.stopPropagation();
|
|
193
|
+
}
|
|
194
|
+
};
|
|
185
195
|
const handleContextMenu = (e: MouseEvent) => {
|
|
186
196
|
if (term.hasSelection()) {
|
|
187
197
|
e.preventDefault();
|
|
188
198
|
copyTextToClipboard(term.getSelection());
|
|
199
|
+
term.clearSelection();
|
|
189
200
|
}
|
|
190
201
|
};
|
|
191
202
|
if (container) {
|
|
203
|
+
container.addEventListener("mousedown", handleMouseDown, true);
|
|
204
|
+
container.addEventListener("mouseup", handleMouseUp, true);
|
|
192
205
|
container.addEventListener("contextmenu", handleContextMenu);
|
|
193
206
|
}
|
|
194
207
|
|
|
@@ -390,6 +403,8 @@ export default function TerminalConsole({ sessionId, height = "400px", wsPort =
|
|
|
390
403
|
resizeObserver.disconnect();
|
|
391
404
|
ws.close();
|
|
392
405
|
if (container) {
|
|
406
|
+
container.removeEventListener("mousedown", handleMouseDown, true);
|
|
407
|
+
container.removeEventListener("mouseup", handleMouseUp, true);
|
|
393
408
|
container.removeEventListener("contextmenu", handleContextMenu);
|
|
394
409
|
}
|
|
395
410
|
try {
|
|
File without changes
|
/package/.next/static/{7qXcDZENU2sMQ6EyGkMNq → EglcK14vXeSWIjxjJCP9A}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|