@jait/gateway 0.1.64 → 0.1.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/db/migrations.d.ts.map +1 -1
  2. package/dist/db/migrations.js +55 -0
  3. package/dist/db/migrations.js.map +1 -1
  4. package/dist/db/schema.d.ts +392 -0
  5. package/dist/db/schema.d.ts.map +1 -1
  6. package/dist/db/schema.js +31 -0
  7. package/dist/db/schema.js.map +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +49 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/routes/network.d.ts +3 -1
  12. package/dist/routes/network.d.ts.map +1 -1
  13. package/dist/routes/network.js +268 -13
  14. package/dist/routes/network.js.map +1 -1
  15. package/dist/routes/plans.d.ts +30 -0
  16. package/dist/routes/plans.d.ts.map +1 -0
  17. package/dist/routes/plans.js +328 -0
  18. package/dist/routes/plans.js.map +1 -0
  19. package/dist/routes/repositories.d.ts +2 -0
  20. package/dist/routes/repositories.d.ts.map +1 -1
  21. package/dist/routes/repositories.js +161 -1
  22. package/dist/routes/repositories.js.map +1 -1
  23. package/dist/routes/threads.d.ts.map +1 -1
  24. package/dist/routes/threads.js +10 -1
  25. package/dist/routes/threads.js.map +1 -1
  26. package/dist/server.d.ts +2 -0
  27. package/dist/server.d.ts.map +1 -1
  28. package/dist/server.js +14 -1
  29. package/dist/server.js.map +1 -1
  30. package/dist/services/plans.d.ts +47 -0
  31. package/dist/services/plans.d.ts.map +1 -0
  32. package/dist/services/plans.js +108 -0
  33. package/dist/services/plans.js.map +1 -0
  34. package/dist/services/repositories.d.ts +1 -0
  35. package/dist/services/repositories.d.ts.map +1 -1
  36. package/dist/services/repositories.js.map +1 -1
  37. package/dist/tools/network-tools.d.ts +3 -0
  38. package/dist/tools/network-tools.d.ts.map +1 -1
  39. package/dist/tools/network-tools.js +99 -1
  40. package/dist/tools/network-tools.js.map +1 -1
  41. package/dist/ws.d.ts +2 -0
  42. package/dist/ws.d.ts.map +1 -1
  43. package/dist/ws.js +3 -0
  44. package/dist/ws.js.map +1 -1
  45. package/package.json +2 -2
  46. package/web-dist/assets/index-CD3glXmS.css +32 -0
  47. package/web-dist/assets/{index-BYcgrcMm.js → index-ZIbq9Hg7.js} +2 -2
  48. package/web-dist/assets/index-l2kzxway.js +799 -0
  49. package/web-dist/assets/{web-Dh9DfBu3.js → web-xVXcdViE.js} +1 -1
  50. package/web-dist/index.html +2 -2
  51. package/web-dist/assets/index-DkVzT5Nb.js +0 -734
  52. package/web-dist/assets/index-DxsTQ8KW.css +0 -32
package/dist/index.js CHANGED
@@ -25,16 +25,20 @@ import { VoiceService } from "./voice/service.js";
25
25
  import { ScreenShareService } from "@jait/screen-share";
26
26
  import { ThreadService } from "./services/threads.js";
27
27
  import { RepositoryService } from "./services/repositories.js";
28
+ import { PlanService } from "./services/plans.js";
28
29
  import { ProviderRegistry } from "./providers/registry.js";
29
30
  import { CodexProvider } from "./providers/codex-provider.js";
30
31
  import { ClaudeCodeProvider } from "./providers/claude-code-provider.js";
31
32
  import { JaitProvider } from "./providers/jait-provider.js";
32
33
  import { WorkspaceWatcher } from "./services/workspace-watcher.js";
34
+ import { GitService } from "./services/git.js";
35
+ import { setNetworkScanDb } from "./tools/network-tools.js";
33
36
  async function main() {
34
37
  const config = loadConfig();
35
38
  // Initialize SQLite database
36
39
  const { db, sqlite } = await openDatabase();
37
40
  migrateDatabase(sqlite);
41
+ setNetworkScanDb(sqlite);
38
42
  console.log("Database initialized at ~/.jait/data/jait.db");
39
43
  // Services
40
44
  const sessionService = new SessionService(db);
@@ -58,6 +62,7 @@ async function main() {
58
62
  console.log(`Recovered ${staleThreads.length} stale thread(s) from previous run`);
59
63
  }
60
64
  const repoService = new RepositoryService(db);
65
+ const planService = new PlanService(db);
61
66
  const providerRegistry = new ProviderRegistry();
62
67
  providerRegistry.register(new JaitProvider());
63
68
  providerRegistry.register(new CodexProvider());
@@ -335,6 +340,7 @@ async function main() {
335
340
  screenShare,
336
341
  threadService,
337
342
  repoService,
343
+ planService,
338
344
  providerRegistry,
339
345
  shutdown: shutdownRef,
340
346
  });
@@ -427,6 +433,49 @@ async function main() {
427
433
  console.log(`Screen share stopped: ${sessionId}`);
428
434
  }
429
435
  };
436
+ // When a desktop/mobile FsNode registers, auto-claim repos that have no
437
+ // deviceId but a matching local path platform. This ensures repos created
438
+ // before deviceId tracking get properly associated.
439
+ ws.onFsNodeRegistered = (node) => {
440
+ if (node.isGateway)
441
+ return;
442
+ const isWindowsNode = node.platform === "windows";
443
+ const git = new GitService();
444
+ for (const repo of repoService.list()) {
445
+ if (repo.deviceId)
446
+ continue; // already claimed
447
+ const path = repo.localPath;
448
+ const pathIsWindows = /^[A-Za-z]:[\\\/]/.test(path);
449
+ if (pathIsWindows === isWindowsNode) {
450
+ repoService.update(repo.id, { deviceId: node.id });
451
+ ws.broadcastAll({
452
+ type: "repo.updated",
453
+ sessionId: "",
454
+ timestamp: new Date().toISOString(),
455
+ payload: { repo: { ...repo, deviceId: node.id } },
456
+ });
457
+ console.log(`[ws] auto-claimed repo "${repo.name}" for node ${node.name} (${node.id})`);
458
+ // Also try to fill in missing githubUrl asynchronously
459
+ if (!repo.githubUrl) {
460
+ git.getPreferredRemote(path).then(async (remoteName) => {
461
+ if (!remoteName)
462
+ return;
463
+ const url = await git.getRemoteUrl(path, remoteName);
464
+ if (!url)
465
+ return;
466
+ repoService.update(repo.id, { githubUrl: url });
467
+ ws.broadcastAll({
468
+ type: "repo.updated",
469
+ sessionId: "",
470
+ timestamp: new Date().toISOString(),
471
+ payload: { repo: { ...repo, deviceId: node.id, githubUrl: url } },
472
+ });
473
+ console.log(`[ws] detected githubUrl for repo "${repo.name}": ${url}`);
474
+ }).catch(() => { });
475
+ }
476
+ }
477
+ }
478
+ };
430
479
  // Start Fastify first, then attach WS to its HTTP server (shared port)
431
480
  await server.listen({ port: config.port, host: config.host });
432
481
  ws.start(server.server); // shares port with Fastify
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  import type { FastifyInstance } from "fastify";
2
- export declare function registerNetworkRoutes(app: FastifyInstance): void;
2
+ import type { WsControlPlane } from "../ws.js";
3
+ import type { SqliteDatabase } from "../db/sqlite-shim.js";
4
+ export declare function registerNetworkRoutes(app: FastifyInstance, ws?: WsControlPlane, sqlite?: SqliteDatabase): void;
3
5
  //# sourceMappingURL=network.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/routes/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuF/C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,QA0TzD"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/routes/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAO/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA4N3D,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,cAAc,QAocvG"}
@@ -4,6 +4,9 @@ import { platform } from "node:os";
4
4
  import { networkInterfaces } from "node:os";
5
5
  import { createConnection } from "node:net";
6
6
  import { getLatestNetworkScan, setLatestNetworkScan } from "../tools/network-tools.js";
7
+ import { createRequire } from "node:module";
8
+ const require = createRequire(import.meta.url);
9
+ const { version: PKG_VERSION } = require("../../package.json");
7
10
  const execAsync = promisify(exec);
8
11
  // ---------------------------------------------------------------------------
9
12
  // Helpers
@@ -33,14 +36,39 @@ function parseArpTable(output) {
33
36
  // Matches lines like " 192.168.1.1 00-0a-95-9d-68-16 dynamic"
34
37
  // or "(192.168.1.1) at 00:0a:95:9d:68:16 [ether] on eth0"
35
38
  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})/;
39
+ const IGNORED_MACS = new Set(["ff:ff:ff:ff:ff:ff", "00:00:00:00:00:00"]);
36
40
  for (const line of output.split("\n")) {
37
41
  const match = lineRegex.exec(line);
38
42
  if (match) {
39
- results.push({ ip: match[1], mac: match[2].replace(/-/g, ":").toLowerCase() });
43
+ const mac = match[2].replace(/-/g, ":").toLowerCase();
44
+ // Skip broadcast, null, and multicast MACs (first octet odd = multicast)
45
+ if (IGNORED_MACS.has(mac))
46
+ continue;
47
+ const firstOctet = parseInt(mac.slice(0, 2), 16);
48
+ if (firstOctet & 1)
49
+ continue; // multicast bit set
50
+ results.push({ ip: match[1], mac });
40
51
  }
41
52
  }
42
53
  return results;
43
54
  }
55
+ /** Sleep helper. */
56
+ function sleep(ms) {
57
+ return new Promise((resolve) => setTimeout(resolve, ms));
58
+ }
59
+ /** Run tasks with bounded concurrency. */
60
+ async function mapConcurrent(items, concurrency, fn) {
61
+ const results = new Array(items.length);
62
+ let idx = 0;
63
+ const run = async () => {
64
+ while (idx < items.length) {
65
+ const i = idx++;
66
+ results[i] = await fn(items[i]);
67
+ }
68
+ };
69
+ await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, () => run()));
70
+ return results;
71
+ }
44
72
  /** TCP-connect probe to check if a single port is open. */
45
73
  function probePort(ip, port, timeoutMs = 2000) {
46
74
  return new Promise((resolve) => {
@@ -71,6 +99,94 @@ async function reverseResolve(ip) {
71
99
  return null;
72
100
  }
73
101
  }
102
+ /** Detect OS version via SSH banner and/or Jait gateway health endpoint. */
103
+ async function detectOsVersion(ip, sshReachable, agentStatus) {
104
+ if (agentStatus === "running") {
105
+ try {
106
+ const res = await fetch(`http://${ip}:8000/health`, { signal: AbortSignal.timeout(2000) });
107
+ if (res.ok) {
108
+ const health = (await res.json());
109
+ if (health.osVersion)
110
+ return health.osVersion;
111
+ if (health.os)
112
+ return health.os;
113
+ }
114
+ }
115
+ catch { }
116
+ }
117
+ if (sshReachable) {
118
+ try {
119
+ const banner = await new Promise((resolve) => {
120
+ const socket = createConnection({ host: ip, port: 22, timeout: 3000 });
121
+ let data = "";
122
+ socket.on("data", (chunk) => { data += chunk.toString(); socket.destroy(); resolve(data); });
123
+ socket.on("timeout", () => { socket.destroy(); resolve(""); });
124
+ socket.on("error", () => { socket.destroy(); resolve(""); });
125
+ });
126
+ if (banner) {
127
+ const trimmed = banner.trim().slice(0, 200);
128
+ if (/ubuntu/i.test(trimmed)) {
129
+ const m = /Ubuntu[\s-]*(\S*)/i.exec(trimmed);
130
+ return m ? `Ubuntu ${m[1]}` : "Ubuntu";
131
+ }
132
+ if (/debian/i.test(trimmed))
133
+ return "Debian";
134
+ if (/windows/i.test(trimmed))
135
+ return "Windows";
136
+ if (/raspbian/i.test(trimmed))
137
+ return "Raspbian";
138
+ if (trimmed.startsWith("SSH-"))
139
+ return trimmed;
140
+ }
141
+ }
142
+ catch { }
143
+ }
144
+ return null;
145
+ }
146
+ // ---------------------------------------------------------------------------
147
+ // DB helpers — persist and read scanned hosts
148
+ // ---------------------------------------------------------------------------
149
+ function persistHostsToDb(sqlite, hosts, scannedAt) {
150
+ const upsert = sqlite.prepare(`
151
+ INSERT INTO network_hosts (ip, mac, hostname, os_version, open_ports, ssh_reachable, agent_status, providers, first_seen_at, last_seen_at, scanned_at)
152
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
153
+ ON CONFLICT(ip) DO UPDATE SET
154
+ mac = excluded.mac,
155
+ hostname = excluded.hostname,
156
+ os_version = COALESCE(excluded.os_version, network_hosts.os_version),
157
+ open_ports = excluded.open_ports,
158
+ ssh_reachable = excluded.ssh_reachable,
159
+ agent_status = excluded.agent_status,
160
+ providers = excluded.providers,
161
+ last_seen_at = excluded.last_seen_at,
162
+ scanned_at = excluded.scanned_at
163
+ `);
164
+ for (const h of hosts) {
165
+ upsert.run(h.ip, h.mac ?? null, h.hostname ?? null, h.osVersion ?? null, JSON.stringify(h.openPorts), h.sshReachable ? 1 : 0, h.agentStatus, h.providers?.length ? JSON.stringify(h.providers) : null, scannedAt, h.lastSeen, scannedAt);
166
+ }
167
+ }
168
+ function readHostsFromDb(sqlite) {
169
+ const rows = sqlite.prepare("SELECT * FROM network_hosts ORDER BY last_seen_at DESC").all();
170
+ let scannedAt = null;
171
+ const hosts = rows.map((r) => {
172
+ if (!scannedAt || r.scanned_at > scannedAt)
173
+ scannedAt = r.scanned_at;
174
+ return {
175
+ ip: r.ip,
176
+ mac: r.mac,
177
+ hostname: r.hostname,
178
+ vendor: null,
179
+ alive: true,
180
+ openPorts: JSON.parse(r.open_ports),
181
+ sshReachable: r.ssh_reachable === 1,
182
+ agentStatus: r.agent_status,
183
+ osVersion: r.os_version,
184
+ providers: r.providers ? JSON.parse(r.providers) : undefined,
185
+ lastSeen: r.last_seen_at,
186
+ };
187
+ });
188
+ return { hosts, scannedAt };
189
+ }
74
190
  // ---------------------------------------------------------------------------
75
191
  // In-memory node registry (gateway mesh)
76
192
  // ---------------------------------------------------------------------------
@@ -78,7 +194,7 @@ const knownNodes = new Map();
78
194
  // ---------------------------------------------------------------------------
79
195
  // Route registration
80
196
  // ---------------------------------------------------------------------------
81
- export function registerNetworkRoutes(app) {
197
+ export function registerNetworkRoutes(app, ws, sqlite) {
82
198
  // ---- GET /api/network/interfaces — local NIC info ----
83
199
  app.get("/api/network/interfaces", async () => {
84
200
  const ifaces = networkInterfaces();
@@ -94,13 +210,19 @@ export function registerNetworkRoutes(app) {
94
210
  }
95
211
  return { interfaces: result };
96
212
  });
97
- // ---- GET /api/network/scan/latest — return cached scan from the scheduled job ----
213
+ // ---- GET /api/network/scan/latest — return cached scan or DB data ----
98
214
  app.get("/api/network/scan/latest", async () => {
99
215
  const cached = getLatestNetworkScan();
100
- if (!cached) {
101
- return { ok: false, message: "No scan results yet. Trigger a scan or wait for the scheduled job." };
216
+ if (cached)
217
+ return cached;
218
+ // Fall back to DB if no in-memory cache yet
219
+ if (sqlite) {
220
+ const { hosts, scannedAt } = readHostsFromDb(sqlite);
221
+ if (hosts.length > 0) {
222
+ return { subnet: "", hosts, scannedAt: scannedAt ?? new Date().toISOString(), durationMs: 0 };
223
+ }
102
224
  }
103
- return cached;
225
+ return { ok: false, message: "No scan results yet. Trigger a scan or wait for the scheduled job." };
104
226
  });
105
227
  // ---- POST /api/network/scan — ARP scan + port probe ----
106
228
  app.post("/api/network/scan", async (request) => {
@@ -125,14 +247,25 @@ export function registerNetworkRoutes(app) {
125
247
  try {
126
248
  for (const subnet of subnets) {
127
249
  if (platform() === "win32") {
128
- const pingCmd = Array.from({ length: 254 }, (_, i) => `start /b ping -n 1 -w 500 ${subnet}.${i + 1} > nul 2>&1`).join(" & ");
129
- await execAsync(pingCmd, { timeout: 30000 }).catch(() => { });
250
+ // Split into batches of 25 to stay under cmd.exe 8191-char limit.
251
+ // Run batches in parallel — each batch runs pings sequentially (~7s per batch),
252
+ // but all batches run concurrently.
253
+ const BATCH = 25;
254
+ const batches = [];
255
+ for (let i = 1; i <= 254; i += BATCH) {
256
+ const end = Math.min(i + BATCH - 1, 254);
257
+ const cmds = Array.from({ length: end - i + 1 }, (_, j) => `ping -n 1 -w 300 ${subnet}.${i + j} > nul 2>&1`).join(" & ");
258
+ batches.push(cmds);
259
+ }
260
+ await Promise.all(batches.map(cmd => execAsync(cmd, { timeout: 30000 }).catch(() => { })));
130
261
  }
131
262
  else {
132
263
  const pingCmd = `for i in $(seq 1 254); do ping -c 1 -W 1 ${subnet}.$i & done; wait`;
133
264
  await execAsync(pingCmd, { timeout: 30000, shell: "/bin/bash" }).catch(() => { });
134
265
  }
135
266
  }
267
+ // Brief pause to let the OS finish updating ARP/neighbour cache
268
+ await sleep(1500);
136
269
  // Re-read ARP table after all sweeps
137
270
  const { stdout } = await execAsync("arp -a", { timeout: 10000 });
138
271
  arpOutput = stdout;
@@ -144,22 +277,38 @@ export function registerNetworkRoutes(app) {
144
277
  }
145
278
  // 3. Filter to target subnet(s)
146
279
  const subnetFiltered = arpEntries.filter(e => subnets.some(s => e.ip.startsWith(s + ".")));
147
- // 4. Probe SSH (port 22) and common ports in parallel
280
+ // 4. Probe SSH (port 22) and common ports with bounded concurrency
148
281
  const PROBE_PORTS = [22, 80, 443, 8000, 8080];
149
- const hosts = await Promise.all(subnetFiltered.map(async (entry) => {
282
+ const hosts = await mapConcurrent(subnetFiltered, 20, async (entry) => {
150
283
  const portResults = await Promise.all(PROBE_PORTS.map(async (port) => ({ port, open: await probePort(entry.ip, port, 1500) })));
151
284
  const openPorts = portResults.filter(p => p.open).map(p => p.port);
152
285
  const sshReachable = openPorts.includes(22);
153
286
  const hostname = await reverseResolve(entry.ip);
154
287
  // Check if this is a known Jait gateway node
155
288
  let agentStatus = "not-installed";
289
+ let providers;
156
290
  if (openPorts.includes(8000)) {
157
291
  try {
158
292
  const res = await fetch(`http://${entry.ip}:8000/health`, { signal: AbortSignal.timeout(2000) });
159
293
  if (res.ok) {
160
294
  const health = await res.json();
161
- if (health.name === "jait-gateway")
295
+ if (health.name === "jait-gateway") {
162
296
  agentStatus = "running";
297
+ // Try to discover providers from the remote gateway
298
+ try {
299
+ const topoRes = await fetch(`http://${entry.ip}:8000/api/network/topology`, { signal: AbortSignal.timeout(2000) });
300
+ if (topoRes.ok) {
301
+ const topo = await topoRes.json();
302
+ const all = new Set();
303
+ for (const d of topo.devices ?? [])
304
+ for (const p of d.providers ?? [])
305
+ all.add(p);
306
+ if (all.size > 0)
307
+ providers = [...all];
308
+ }
309
+ }
310
+ catch { }
311
+ }
163
312
  }
164
313
  }
165
314
  catch {
@@ -170,14 +319,16 @@ export function registerNetworkRoutes(app) {
170
319
  ip: entry.ip,
171
320
  mac: entry.mac,
172
321
  hostname,
173
- vendor: null, // Could add OUI lookup later
322
+ vendor: null,
174
323
  alive: true,
175
324
  openPorts,
176
325
  sshReachable,
177
326
  agentStatus,
327
+ osVersion: await detectOsVersion(entry.ip, sshReachable, agentStatus),
328
+ providers,
178
329
  lastSeen: new Date().toISOString(),
179
330
  };
180
- }));
331
+ });
181
332
  const result = {
182
333
  subnet: subnets.map(s => s + ".0/24").join(", "),
183
334
  hosts: hosts.sort((a, b) => {
@@ -190,6 +341,15 @@ export function registerNetworkRoutes(app) {
190
341
  };
191
342
  // Update the shared cache so /api/network/scan/latest reflects this scan
192
343
  setLatestNetworkScan(result);
344
+ // Persist to DB
345
+ if (sqlite) {
346
+ try {
347
+ persistHostsToDb(sqlite, result.hosts, result.scannedAt);
348
+ }
349
+ catch (err) {
350
+ console.error("Failed to persist network hosts to DB:", err);
351
+ }
352
+ }
193
353
  return result;
194
354
  });
195
355
  // ---- POST /api/network/ssh/test — test SSH connectivity ----
@@ -363,5 +523,100 @@ export function registerNetworkRoutes(app) {
363
523
  // This unifies the view of all connected devices in the Network panel
364
524
  return { devices: [] }; // Will be wired via deps if needed
365
525
  });
526
+ // ---- GET /api/network/topology — unified graph data for the force-graph visualization ----
527
+ app.get("/api/network/topology", async () => {
528
+ // Gateway node (self)
529
+ const ifaces = networkInterfaces();
530
+ let gatewayIp = "127.0.0.1";
531
+ for (const entries of Object.values(ifaces)) {
532
+ if (!entries)
533
+ continue;
534
+ for (const entry of entries) {
535
+ if (entry.family === "IPv4" && !entry.internal && !entry.address.startsWith("169.254.")) {
536
+ gatewayIp = entry.address;
537
+ break;
538
+ }
539
+ }
540
+ if (gatewayIp !== "127.0.0.1")
541
+ break;
542
+ }
543
+ let osVersion = null;
544
+ try {
545
+ if (platform() === "win32") {
546
+ const { stdout } = await execAsync("cmd /c ver", { timeout: 3000 });
547
+ osVersion = stdout.trim().replace(/^\s*\n+/, "") || null;
548
+ }
549
+ else if (platform() === "darwin") {
550
+ const { stdout } = await execAsync("sw_vers -productVersion", { timeout: 3000 });
551
+ osVersion = `macOS ${stdout.trim()}`;
552
+ }
553
+ else {
554
+ // Try /etc/os-release for Linux distros
555
+ const { stdout } = await execAsync("cat /etc/os-release 2>/dev/null | grep PRETTY_NAME | cut -d= -f2 | tr -d '\"'", { timeout: 3000 });
556
+ osVersion = stdout.trim() || null;
557
+ }
558
+ }
559
+ catch { }
560
+ const gatewayNode = {
561
+ id: "gateway",
562
+ type: "gateway",
563
+ name: platform() === "win32" ? process.env.COMPUTERNAME ?? "Gateway" : (await execAsync("hostname").then(r => r.stdout.trim()).catch(() => "Gateway")),
564
+ platform: platform() === "win32" ? "windows" : platform() === "darwin" ? "macos" : "linux",
565
+ ip: gatewayIp,
566
+ version: PKG_VERSION,
567
+ osVersion,
568
+ online: true,
569
+ };
570
+ // Connected FsNode devices
571
+ const connectedDevices = (ws?.getFsNodes() ?? []).filter(n => !n.isGateway).map(n => ({
572
+ id: `device-${n.id}`,
573
+ type: "device",
574
+ name: n.name,
575
+ platform: n.platform,
576
+ providers: n.providers ?? [],
577
+ online: true,
578
+ registeredAt: n.registeredAt,
579
+ }));
580
+ // Scanned network hosts — prefer in-memory cache, fall back to DB
581
+ const scan = getLatestNetworkScan();
582
+ let hostSource = scan?.hosts ?? [];
583
+ let scannedAt = scan?.scannedAt ?? null;
584
+ if (hostSource.length === 0 && sqlite) {
585
+ const dbData = readHostsFromDb(sqlite);
586
+ hostSource = dbData.hosts;
587
+ scannedAt = dbData.scannedAt;
588
+ }
589
+ const scannedHosts = hostSource.map(h => ({
590
+ id: `host-${h.ip}`,
591
+ type: "host",
592
+ name: h.hostname ?? h.ip,
593
+ ip: h.ip,
594
+ mac: h.mac,
595
+ openPorts: h.openPorts,
596
+ sshReachable: h.sshReachable,
597
+ agentStatus: h.agentStatus,
598
+ osVersion: h.osVersion ?? null,
599
+ providers: h.providers ?? [],
600
+ online: true,
601
+ }));
602
+ // Known gateway mesh nodes
603
+ const meshNodes = [...knownNodes.values()].map(n => ({
604
+ id: `mesh-${n.id}`,
605
+ type: "mesh",
606
+ name: n.hostname ?? n.ip,
607
+ ip: n.ip,
608
+ platform: n.platform,
609
+ version: n.version,
610
+ status: n.status,
611
+ online: n.status === "online",
612
+ }));
613
+ return {
614
+ gateway: gatewayNode,
615
+ devices: connectedDevices,
616
+ hosts: scannedHosts,
617
+ meshNodes,
618
+ scannedAt,
619
+ };
620
+ });
366
621
  }
367
622
  //# sourceMappingURL=network.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/routes/network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/routes/network.ts"],"names":[],"mappings":"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"}