@jait/gateway 0.1.72 → 0.1.73

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.
@@ -1,114 +1,4 @@
1
- import { exec } from "node:child_process";
2
- import { promisify } from "node:util";
3
- import { platform, networkInterfaces } from "node:os";
4
- import { createConnection } from "node:net";
5
- const execAsync = promisify(exec);
6
- // ---------------------------------------------------------------------------
7
- // Helpers (shared with routes/network.ts — extract later if needed)
8
- // ---------------------------------------------------------------------------
9
- function getLocalSubnets() {
10
- const ifaces = networkInterfaces();
11
- const subnets = [];
12
- for (const entries of Object.values(ifaces)) {
13
- if (!entries)
14
- continue;
15
- for (const entry of entries) {
16
- if (entry.family === "IPv4" && !entry.internal) {
17
- // Skip link-local / APIPA addresses (169.254.x.x)
18
- if (entry.address.startsWith("169.254."))
19
- continue;
20
- const parts = entry.address.split(".");
21
- subnets.push(parts.slice(0, 3).join("."));
22
- }
23
- }
24
- }
25
- return [...new Set(subnets)];
26
- }
27
- function parseArpTable(output) {
28
- const results = [];
29
- const lineRegex = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+(?:at\s+)?([0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2}[:-][0-9a-fA-F]{2})/;
30
- for (const line of output.split("\n")) {
31
- const match = lineRegex.exec(line);
32
- if (match) {
33
- results.push({ ip: match[1], mac: match[2].replace(/-/g, ":").toLowerCase() });
34
- }
35
- }
36
- return results;
37
- }
38
- function probePort(ip, port, timeoutMs = 2000) {
39
- return new Promise((resolve) => {
40
- const socket = createConnection({ host: ip, port, timeout: timeoutMs });
41
- socket.once("connect", () => { socket.destroy(); resolve(true); });
42
- socket.once("timeout", () => { socket.destroy(); resolve(false); });
43
- socket.once("error", () => { socket.destroy(); resolve(false); });
44
- });
45
- }
46
- async function reverseResolve(ip) {
47
- try {
48
- const cmd = platform() === "win32"
49
- ? `nslookup ${ip} 2>nul`
50
- : `host ${ip} 2>/dev/null || true`;
51
- const { stdout } = await execAsync(cmd, { timeout: 3000 });
52
- const winMatch = /Name:\s+(\S+)/i.exec(stdout);
53
- if (winMatch)
54
- return winMatch[1];
55
- const linMatch = /pointer\s+(\S+)/i.exec(stdout);
56
- if (linMatch)
57
- return linMatch[1].replace(/\.$/, "");
58
- return null;
59
- }
60
- catch {
61
- return null;
62
- }
63
- }
64
- /** Detect OS version via SSH banner and/or Jait gateway health endpoint. */
65
- async function detectOsVersion(ip, sshReachable, agentStatus) {
66
- // If it's a running Jait gateway, ask its health endpoint for OS info
67
- if (agentStatus === "running") {
68
- try {
69
- const res = await fetch(`http://${ip}:8000/health`, { signal: AbortSignal.timeout(2000) });
70
- if (res.ok) {
71
- const health = (await res.json());
72
- if (health.osVersion)
73
- return health.osVersion;
74
- if (health.os)
75
- return health.os;
76
- }
77
- }
78
- catch { }
79
- }
80
- // Try SSH banner for OS hints
81
- if (sshReachable) {
82
- try {
83
- const banner = await new Promise((resolve) => {
84
- const socket = createConnection({ host: ip, port: 22, timeout: 3000 });
85
- let data = "";
86
- socket.on("data", (chunk) => { data += chunk.toString(); socket.destroy(); resolve(data); });
87
- socket.on("timeout", () => { socket.destroy(); resolve(""); });
88
- socket.on("error", () => { socket.destroy(); resolve(""); });
89
- });
90
- if (banner) {
91
- const trimmed = banner.trim().slice(0, 200);
92
- // Extract OS info from SSH banner (e.g. "SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6")
93
- if (/ubuntu/i.test(trimmed)) {
94
- const m = /Ubuntu[\s-]*(\S*)/i.exec(trimmed);
95
- return m ? `Ubuntu ${m[1]}` : "Ubuntu";
96
- }
97
- if (/debian/i.test(trimmed))
98
- return "Debian";
99
- if (/windows/i.test(trimmed))
100
- return "Windows";
101
- if (/raspbian/i.test(trimmed))
102
- return "Raspbian";
103
- // Return raw banner as fallback if it looks informative
104
- if (trimmed.startsWith("SSH-"))
105
- return trimmed;
106
- }
107
- }
108
- catch { }
109
- }
110
- return null;
111
- }
1
+ import { scanNetwork } from "../lib/network-scan.js";
112
2
  /** In-memory cache of the latest scan result, populated by the tool/job */
113
3
  let latestScan = null;
114
4
  /** Optional DB reference, set once at startup for persistent storage */
@@ -164,157 +54,36 @@ export function createNetworkScanTool() {
164
54
  type: "string",
165
55
  description: 'Target subnet prefix (e.g. "192.168.1"). If omitted, auto-detects from local interfaces.',
166
56
  },
57
+ deep: {
58
+ type: "boolean",
59
+ description: "Whether to run a deeper sweep across the full subnet instead of relying mostly on ARP/neighbour cache. Defaults to true.",
60
+ },
61
+ includeIps: {
62
+ type: "array",
63
+ items: { type: "string" },
64
+ description: 'Specific IPs to force-include in the scan, for example ["192.168.178.53"].',
65
+ },
167
66
  },
168
67
  },
169
68
  execute: async (input) => {
170
- const { subnet: targetSubnet } = (input ?? {});
171
- const subnets = targetSubnet ? [targetSubnet] : getLocalSubnets();
172
- if (subnets.length === 0) {
173
- return { ok: false, message: "No active IPv4 subnets found" };
174
- }
175
- const start = Date.now();
176
- // 1. Collect / refresh ARP table
177
- let arpEntries = [];
178
69
  try {
179
- const { stdout } = await execAsync("arp -a", { timeout: 10000 });
180
- arpEntries = parseArpTable(stdout);
181
- }
182
- catch {
183
- // continue without ARP
184
- }
185
- // 2. Quick ping sweep for every detected subnet to populate ARP cache
186
- try {
187
- for (const subnet of subnets) {
188
- if (platform() === "win32") {
189
- // Batched ping sweep — 25 per batch, batches in parallel
190
- const BATCH = 25;
191
- const batches = [];
192
- for (let i = 1; i <= 254; i += BATCH) {
193
- const end = Math.min(i + BATCH - 1, 254);
194
- const cmds = Array.from({ length: end - i + 1 }, (_, j) => `ping -n 1 -w 500 ${subnet}.${i + j} > nul 2>&1`).join(" & ");
195
- batches.push(cmds);
196
- }
197
- await Promise.all(batches.map(cmd => execAsync(cmd, { timeout: 45000 }).catch(() => { })));
198
- }
199
- else {
200
- const pingCmd = `for i in $(seq 1 254); do ping -c 1 -W 1 ${subnet}.$i & done; wait`;
201
- await execAsync(pingCmd, { timeout: 30000, shell: "/bin/bash" }).catch(() => { });
202
- }
203
- }
204
- // Brief pause for ARP cache to settle
205
- await new Promise(r => setTimeout(r, 2500));
206
- // Re-read ARP table after all sweeps
207
- const { stdout } = await execAsync("arp -a", { timeout: 10000 });
208
- arpEntries = parseArpTable(stdout);
209
- }
210
- catch {
211
- // use existing ARP entries
212
- }
213
- // 2b. On Windows, supplement with Get-NetNeighbor
214
- if (platform() === "win32") {
215
- try {
216
- const { stdout: pshOutput } = await execAsync('powershell -NoProfile -Command "Get-NetNeighbor -AddressFamily IPv4 | Where-Object { $_.State -ne \'Unreachable\' -and $_.LinkLayerAddress -ne \'\' -and $_.LinkLayerAddress -ne \'00-00-00-00-00-00\' } | Select-Object IPAddress,LinkLayerAddress | ConvertTo-Csv -NoTypeInformation"', { timeout: 15000 });
217
- const existingIps = new Set(arpEntries.map(e => e.ip));
218
- for (const line of pshOutput.split("\n")) {
219
- const csvMatch = /"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"\s*,\s*"([0-9a-fA-F]{2}-[0-9a-fA-F]{2}-[0-9a-fA-F]{2}-[0-9a-fA-F]{2}-[0-9a-fA-F]{2}-[0-9a-fA-F]{2})"/.exec(line);
220
- if (!csvMatch)
221
- continue;
222
- const ip = csvMatch[1];
223
- const mac = csvMatch[2].replace(/-/g, ":").toLowerCase();
224
- if (existingIps.has(ip))
225
- continue;
226
- if (mac === "ff:ff:ff:ff:ff:ff" || mac === "00:00:00:00:00:00")
227
- continue;
228
- const firstOctet = parseInt(mac.slice(0, 2), 16);
229
- if (firstOctet & 1)
230
- continue;
231
- if (subnets.some(s => ip.startsWith(s + "."))) {
232
- arpEntries.push({ ip, mac });
233
- }
234
- }
235
- }
236
- catch { }
70
+ const { subnet: targetSubnet, deep = true, includeIps = [] } = (input ?? {});
71
+ const result = await scanNetwork({ subnet: targetSubnet, deep, includeIps });
72
+ latestScan = result;
73
+ const gatewayCount = result.hosts.filter((host) => host.agentStatus === "running").length;
74
+ const sshCount = result.hosts.filter((host) => host.sshReachable).length;
75
+ return {
76
+ ok: true,
77
+ message: `Network scan complete: ${result.hosts.length} hosts found (${sshCount} with SSH, ${gatewayCount} running Jait Gateway)`,
78
+ data: result,
79
+ };
237
80
  }
238
- // 3. Filter to subnet
239
- const subnetFiltered = arpEntries.filter((e) => subnets.some((s) => e.ip.startsWith(s + ".")));
240
- // 4. Probe ports in parallel
241
- const PROBE_PORTS = [22, 80, 443, 8000, 8080];
242
- const hosts = await Promise.all(subnetFiltered.map(async (entry) => {
243
- const portResults = await Promise.all(PROBE_PORTS.map(async (port) => ({
244
- port,
245
- open: await probePort(entry.ip, port, 1500),
246
- })));
247
- const openPorts = portResults.filter((p) => p.open).map((p) => p.port);
248
- const sshReachable = openPorts.includes(22);
249
- const hostname = await reverseResolve(entry.ip);
250
- let agentStatus = "not-installed";
251
- let providers;
252
- if (openPorts.includes(8000)) {
253
- try {
254
- const res = await fetch(`http://${entry.ip}:8000/health`, {
255
- signal: AbortSignal.timeout(2000),
256
- });
257
- if (res.ok) {
258
- const health = (await res.json());
259
- if (health.name === "jait-gateway") {
260
- agentStatus = "running";
261
- // Try to discover providers from the remote gateway
262
- try {
263
- const topoRes = await fetch(`http://${entry.ip}:8000/api/network/topology`, {
264
- signal: AbortSignal.timeout(2000),
265
- });
266
- if (topoRes.ok) {
267
- const topo = (await topoRes.json());
268
- const all = new Set();
269
- for (const d of topo.devices ?? [])
270
- for (const p of d.providers ?? [])
271
- all.add(p);
272
- if (all.size > 0)
273
- providers = [...all];
274
- }
275
- }
276
- catch { }
277
- }
278
- }
279
- }
280
- catch {
281
- agentStatus = "not-installed";
282
- }
283
- }
81
+ catch (err) {
284
82
  return {
285
- ip: entry.ip,
286
- mac: entry.mac,
287
- hostname,
288
- alive: true,
289
- openPorts,
290
- sshReachable,
291
- agentStatus,
292
- osVersion: await detectOsVersion(entry.ip, sshReachable, agentStatus),
293
- providers,
294
- lastSeen: new Date().toISOString(),
83
+ ok: false,
84
+ message: err instanceof Error ? err.message : "Network scan failed",
295
85
  };
296
- }));
297
- // Sort by IP
298
- hosts.sort((a, b) => {
299
- const aNum = a.ip.split(".").map(Number).reduce((sum, n) => sum * 256 + n, 0);
300
- const bNum = b.ip.split(".").map(Number).reduce((sum, n) => sum * 256 + n, 0);
301
- return aNum - bNum;
302
- });
303
- const result = {
304
- subnet: subnets.map(s => s + ".0/24").join(", "),
305
- hosts,
306
- scannedAt: new Date().toISOString(),
307
- durationMs: Date.now() - start,
308
- };
309
- // Cache for the UI network panel
310
- latestScan = result;
311
- const gatewayCount = hosts.filter((h) => h.agentStatus === "running").length;
312
- const sshCount = hosts.filter((h) => h.sshReachable).length;
313
- return {
314
- ok: true,
315
- message: `Network scan complete: ${hosts.length} hosts found (${sshCount} with SSH, ${gatewayCount} running Jait Gateway)`,
316
- data: result,
317
- };
86
+ }
318
87
  },
319
88
  };
320
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"network-tools.js","sourceRoot":"","sources":["../../src/tools/network-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network-tools.js","sourceRoot":"","sources":["../../src/tools/network-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jait/gateway",
3
- "version": "0.1.72",
3
+ "version": "0.1.73",
4
4
  "description": "Jait AI gateway — local-first AI coding agent with terminal, filesystem, and browser control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",