@vantaloom/runtime-win32-x64 0.6.2 → 0.6.3
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/bin/vantaloom-agent.exe +0 -0
- package/bin/vantaloom-api.exe +0 -0
- package/bin/vantaloom-mesh.exe +0 -0
- package/bin/vantaloom-tray.exe +0 -0
- package/bin/vantaloomctl.exe +0 -0
- package/cli/package.json +1 -1
- package/cli/src/cli.mjs +168 -0
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/web/404.html +1 -1
- package/web/__next.__PAGE__.txt +2 -2
- package/web/__next._full.txt +3 -3
- package/web/__next._head.txt +1 -1
- package/web/__next._index.txt +2 -2
- package/web/__next._tree.txt +2 -2
- package/web/_next/static/chunks/0031a7a7913074e5.css +2 -0
- package/web/_next/static/chunks/{06d60d15ce500880.js → 7a1a687e4e013ecc.js} +12 -12
- package/web/_not-found/__next._full.txt +2 -2
- package/web/_not-found/__next._head.txt +1 -1
- package/web/_not-found/__next._index.txt +2 -2
- package/web/_not-found/__next._not-found/__PAGE__.txt +1 -1
- package/web/_not-found/__next._not-found.txt +1 -1
- package/web/_not-found/__next._tree.txt +2 -2
- package/web/_not-found.html +1 -1
- package/web/_not-found.txt +2 -2
- package/web/index.html +1 -1
- package/web/index.txt +3 -3
- package/web/_next/static/chunks/15845c5b8fdcd923.css +0 -2
- /package/web/_next/static/{1onal8psWwHjdnyckVw0n → 0Uqyry_qoiv_a5FVsCaBQ}/_buildManifest.js +0 -0
- /package/web/_next/static/{1onal8psWwHjdnyckVw0n → 0Uqyry_qoiv_a5FVsCaBQ}/_clientMiddlewareManifest.json +0 -0
- /package/web/_next/static/{1onal8psWwHjdnyckVw0n → 0Uqyry_qoiv_a5FVsCaBQ}/_ssgManifest.js +0 -0
package/bin/vantaloom-agent.exe
CHANGED
|
Binary file
|
package/bin/vantaloom-api.exe
CHANGED
|
Binary file
|
package/bin/vantaloom-mesh.exe
CHANGED
|
Binary file
|
package/bin/vantaloom-tray.exe
CHANGED
|
Binary file
|
package/bin/vantaloomctl.exe
CHANGED
|
Binary file
|
package/cli/package.json
CHANGED
package/cli/src/cli.mjs
CHANGED
|
@@ -14,6 +14,7 @@ import { cp, writeFile } from "node:fs/promises"
|
|
|
14
14
|
import { createHash } from "node:crypto"
|
|
15
15
|
import os from "node:os"
|
|
16
16
|
import path from "node:path"
|
|
17
|
+
import readline from "node:readline"
|
|
17
18
|
import { fileURLToPath } from "node:url"
|
|
18
19
|
|
|
19
20
|
// The mesh binaries the privileged service holds open while running. On Windows
|
|
@@ -108,6 +109,12 @@ export async function main(argv) {
|
|
|
108
109
|
case "uninstall":
|
|
109
110
|
await uninstallRuntime(options)
|
|
110
111
|
return
|
|
112
|
+
case "login":
|
|
113
|
+
await runLogin(options)
|
|
114
|
+
return
|
|
115
|
+
case "logout":
|
|
116
|
+
await runLogout(options)
|
|
117
|
+
return
|
|
111
118
|
case "help":
|
|
112
119
|
case "-h":
|
|
113
120
|
case "--help":
|
|
@@ -1229,6 +1236,156 @@ function printPaths(options) {
|
|
|
1229
1236
|
console.log(JSON.stringify({ sourceRoot, prefix }, null, 2))
|
|
1230
1237
|
}
|
|
1231
1238
|
|
|
1239
|
+
// ── Hub login (headless / no-web) ──
|
|
1240
|
+
// Authenticates to the Hub entirely from the command line, so a machine that
|
|
1241
|
+
// never opens the web UI (e.g. a server with no public access) can still join
|
|
1242
|
+
// the workgroup. Reuses the exact endpoints the web app uses, then tells the
|
|
1243
|
+
// local runtime to connect (which persists the Hub config to local.json).
|
|
1244
|
+
|
|
1245
|
+
const DEFAULT_HUB_URL = "http://vanta.timefiles.online"
|
|
1246
|
+
|
|
1247
|
+
function localApiBase(prefix) {
|
|
1248
|
+
let port
|
|
1249
|
+
try {
|
|
1250
|
+
port = readFileSync(path.join(prefix, "runtime", "api.port"), "utf8").trim()
|
|
1251
|
+
} catch {}
|
|
1252
|
+
if (!port) {
|
|
1253
|
+
const cfg = readJSONIfExists(path.join(prefix, "config", "local.json"))
|
|
1254
|
+
port = cfg.apiPort ? String(cfg.apiPort) : "8780"
|
|
1255
|
+
}
|
|
1256
|
+
return `http://127.0.0.1:${port}`
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
function localMachineInfo() {
|
|
1260
|
+
const platMap = { win32: "windows", darwin: "darwin", linux: "linux" }
|
|
1261
|
+
const archMap = { x64: "amd64", arm64: "arm64" }
|
|
1262
|
+
return {
|
|
1263
|
+
name: `${platMap[process.platform] ?? process.platform}-${os.hostname() || "unknown"}`,
|
|
1264
|
+
platform: platMap[process.platform] ?? process.platform,
|
|
1265
|
+
arch: archMap[process.arch] ?? process.arch,
|
|
1266
|
+
localIp: "127.0.0.1",
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
async function hubFetch(url, { method = "GET", body, token } = {}) {
|
|
1271
|
+
const headers = { "Content-Type": "application/json" }
|
|
1272
|
+
if (token) headers.Authorization = `Bearer ${token}`
|
|
1273
|
+
const res = await fetch(url, {
|
|
1274
|
+
method,
|
|
1275
|
+
headers,
|
|
1276
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
1277
|
+
})
|
|
1278
|
+
const data = await res.json().catch(() => ({}))
|
|
1279
|
+
if (!res.ok) {
|
|
1280
|
+
throw new Error(data.error || `${url}: HTTP ${res.status}`)
|
|
1281
|
+
}
|
|
1282
|
+
return data
|
|
1283
|
+
}
|
|
1284
|
+
|
|
1285
|
+
function promptVisible(query) {
|
|
1286
|
+
return new Promise((resolve) => {
|
|
1287
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout })
|
|
1288
|
+
rl.question(query, (answer) => {
|
|
1289
|
+
rl.close()
|
|
1290
|
+
resolve(answer.trim())
|
|
1291
|
+
})
|
|
1292
|
+
})
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
function promptHidden(query) {
|
|
1296
|
+
return new Promise((resolve) => {
|
|
1297
|
+
const rl = readline.createInterface({
|
|
1298
|
+
input: process.stdin,
|
|
1299
|
+
output: process.stdout,
|
|
1300
|
+
terminal: true,
|
|
1301
|
+
})
|
|
1302
|
+
process.stdout.write(query)
|
|
1303
|
+
// Suppress echo so the password isn't shown as it's typed.
|
|
1304
|
+
rl._writeToOutput = () => {}
|
|
1305
|
+
rl.question("", (answer) => {
|
|
1306
|
+
rl.close()
|
|
1307
|
+
process.stdout.write("\n")
|
|
1308
|
+
resolve(answer)
|
|
1309
|
+
})
|
|
1310
|
+
})
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
async function runLogin(options) {
|
|
1314
|
+
const prefix = safeDirectory(options.prefix ?? defaultPrefix())
|
|
1315
|
+
const existing = readJSONIfExists(path.join(prefix, "config", "local.json"))
|
|
1316
|
+
const hubUrl = (options.hub ?? existing.hubUrl ?? DEFAULT_HUB_URL).replace(/\/+$/, "")
|
|
1317
|
+
const localApi = localApiBase(prefix)
|
|
1318
|
+
|
|
1319
|
+
// The local runtime must be running: we need its stable hardware id (so the
|
|
1320
|
+
// Hub dedups re-registrations) and it's what actually connects to the Hub.
|
|
1321
|
+
let hardwareId = null
|
|
1322
|
+
try {
|
|
1323
|
+
const res = await fetch(`${localApi}/v1/hub/status`)
|
|
1324
|
+
if (res.ok) hardwareId = (await res.json()).hardwareId ?? null
|
|
1325
|
+
} catch {}
|
|
1326
|
+
if (!hardwareId) {
|
|
1327
|
+
throw new Error(
|
|
1328
|
+
`local runtime not reachable at ${localApi}. Start it first with "vantaloom start", then retry "vantaloom login".`
|
|
1329
|
+
)
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
const email = options.email ?? (await promptVisible("Hub email: "))
|
|
1333
|
+
const password = options.password ?? (await promptHidden("Hub password: "))
|
|
1334
|
+
if (!email || !password) {
|
|
1335
|
+
throw new Error("email and password are required")
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1338
|
+
console.log(`logging in to ${hubUrl} ...`)
|
|
1339
|
+
const login = await hubFetch(`${hubUrl}/api/auth/login`, {
|
|
1340
|
+
method: "POST",
|
|
1341
|
+
body: { email, password },
|
|
1342
|
+
})
|
|
1343
|
+
const userToken = login.token
|
|
1344
|
+
if (!userToken) throw new Error("login failed: no token returned")
|
|
1345
|
+
|
|
1346
|
+
const { deviceToken } = await hubFetch(`${hubUrl}/api/machines/token`, {
|
|
1347
|
+
method: "POST",
|
|
1348
|
+
token: userToken,
|
|
1349
|
+
})
|
|
1350
|
+
const info = localMachineInfo()
|
|
1351
|
+
const connect = await hubFetch(`${hubUrl}/api/connect`, {
|
|
1352
|
+
method: "POST",
|
|
1353
|
+
body: { deviceToken, hardwareId, ...info },
|
|
1354
|
+
})
|
|
1355
|
+
const machineId = connect.machine?.id
|
|
1356
|
+
if (!machineId) throw new Error("machine registration failed: no machine id")
|
|
1357
|
+
|
|
1358
|
+
// Hand the credentials to the running runtime; it persists them to local.json
|
|
1359
|
+
// and brings up the Hub WebSocket + heartbeat + mesh.
|
|
1360
|
+
const res = await fetch(`${localApi}/v1/hub/connect`, {
|
|
1361
|
+
method: "POST",
|
|
1362
|
+
headers: { "Content-Type": "application/json" },
|
|
1363
|
+
body: JSON.stringify({ hubUrl, hubToken: userToken, machineId }),
|
|
1364
|
+
})
|
|
1365
|
+
if (!res.ok) {
|
|
1366
|
+
throw new Error(`runtime failed to connect to Hub: HTTP ${res.status}`)
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
console.log(`\n✓ logged in as ${login.user?.email ?? email}`)
|
|
1370
|
+
console.log(`✓ machine registered: ${info.name} (${machineId})`)
|
|
1371
|
+
console.log(`✓ runtime connected to Hub at ${hubUrl}`)
|
|
1372
|
+
console.log(`\nThis machine is now in your workgroup. It will reconnect automatically on restart.`)
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
async function runLogout(options) {
|
|
1376
|
+
const prefix = safeDirectory(options.prefix ?? defaultPrefix())
|
|
1377
|
+
const localApi = localApiBase(prefix)
|
|
1378
|
+
try {
|
|
1379
|
+
const res = await fetch(`${localApi}/v1/hub/disconnect`, { method: "POST" })
|
|
1380
|
+
if (!res.ok) throw new Error(`HTTP ${res.status}`)
|
|
1381
|
+
console.log("✓ disconnected from Hub (runtime keeps running locally).")
|
|
1382
|
+
} catch (error) {
|
|
1383
|
+
throw new Error(
|
|
1384
|
+
`could not reach local runtime at ${localApi}: ${error.message}`
|
|
1385
|
+
)
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1232
1389
|
function buildGo(sourceRoot, buildBin, name, targetPlatform) {
|
|
1233
1390
|
const goEnv = targetPlatform ? platformToGoEnv(targetPlatform) : {}
|
|
1234
1391
|
const isWindowsTarget = targetPlatform
|
|
@@ -1373,6 +1530,9 @@ function parseOptions(args) {
|
|
|
1373
1530
|
case "runtime-package":
|
|
1374
1531
|
case "runtime-version":
|
|
1375
1532
|
case "npm-registry":
|
|
1533
|
+
case "hub":
|
|
1534
|
+
case "email":
|
|
1535
|
+
case "password":
|
|
1376
1536
|
options[toCamel(key)] = inlineValue ?? args[++index]
|
|
1377
1537
|
if (!options[toCamel(key)]) {
|
|
1378
1538
|
throw new Error(`missing value for --${key}`)
|
|
@@ -1635,6 +1795,14 @@ Usage:
|
|
|
1635
1795
|
vantaloom ports [--prefix <dir>]
|
|
1636
1796
|
vantaloom path [--prefix <dir>] [--source <repo>]
|
|
1637
1797
|
vantaloom platform
|
|
1798
|
+
vantaloom login [--hub <url>] [--email <email>] [--password <pw>] [--prefix <dir>]
|
|
1799
|
+
vantaloom logout [--prefix <dir>]
|
|
1800
|
+
|
|
1801
|
+
Hub login (for machines with no web access):
|
|
1802
|
+
"vantaloom login" authenticates to the Hub from the terminal and joins this
|
|
1803
|
+
machine to your workgroup — no browser needed. Email/password may be passed as
|
|
1804
|
+
flags (for scripts) or entered interactively. The local runtime must be running
|
|
1805
|
+
(run "vantaloom start" first).
|
|
1638
1806
|
|
|
1639
1807
|
Mesh (P2P) service:
|
|
1640
1808
|
Windows/macOS register a privileged EasyTier service at install (one UAC/sudo prompt).
|
package/manifest.json
CHANGED
package/package.json
CHANGED
package/web/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--0Uqyry_qoiv_a5FVsCaBQ--><html lang="zh-CN" class="font-sans antialiased" data-vtl-theme="default" data-vtl-density="default" data-vtl-motion="default"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0031a7a7913074e5.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/a678910d6e3629e7.js"/><script src="/_next/static/chunks/b9cfbaaba1fd82be.js" async=""></script><script src="/_next/static/chunks/757e2e1b77b5bacc.js" async=""></script><script src="/_next/static/chunks/turbopack-d8677f40582561e6.js" async=""></script><script src="/_next/static/chunks/eca64d281474b631.js" async=""></script><script src="/_next/static/chunks/7dfeab42587bcc0e.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Vantaloom</title><meta name="description" content="Vantaloom local agent operations console."/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/a678910d6e3629e7.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[22332,[\"/_next/static/chunks/eca64d281474b631.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"ThemeProvider\"]\n3:I[45121,[\"/_next/static/chunks/eca64d281474b631.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"default\"]\n4:I[60512,[\"/_next/static/chunks/eca64d281474b631.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"default\"]\n5:I[35417,[\"/_next/static/chunks/eca64d281474b631.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n8:I[35417,[\"/_next/static/chunks/eca64d281474b631.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"ViewportBoundary\"]\na:I[35417,[\"/_next/static/chunks/eca64d281474b631.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"MetadataBoundary\"]\nc:I[50025,[\"/_next/static/chunks/eca64d281474b631.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"default\"]\n:HL[\"/_next/static/chunks/0031a7a7913074e5.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"0Uqyry_qoiv_a5FVsCaBQ\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0031a7a7913074e5.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/eca64d281474b631.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/7dfeab42587bcc0e.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"zh-CN\",\"suppressHydrationWarning\":true,\"className\":\"font-sans antialiased\",\"data-vtl-theme\":\"default\",\"data-vtl-density\":\"default\",\"data-vtl-motion\":\"default\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"7:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"Vantaloom\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Vantaloom local agent operations console.\"}]]\n"])</script></body></html>
|
package/web/__next.__PAGE__.txt
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[66863,["/_next/static/chunks/7dfeab42587bcc0e.js"],"ClientPageRoot"]
|
|
3
|
-
3:I[66204,["/_next/static/chunks/eca64d281474b631.js","/_next/static/chunks/17e0384154325960.js","/_next/static/chunks/c990601c49cb69a5.js","/_next/static/chunks/
|
|
3
|
+
3:I[66204,["/_next/static/chunks/eca64d281474b631.js","/_next/static/chunks/17e0384154325960.js","/_next/static/chunks/c990601c49cb69a5.js","/_next/static/chunks/7a1a687e4e013ecc.js","/_next/static/chunks/742d3900ca49db0a.js"],"default"]
|
|
4
4
|
6:I[35417,["/_next/static/chunks/7dfeab42587bcc0e.js"],"OutletBoundary"]
|
|
5
5
|
7:"$Sreact.suspense"
|
|
6
|
-
0:{"buildId":"
|
|
6
|
+
0:{"buildId":"0Uqyry_qoiv_a5FVsCaBQ","rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/17e0384154325960.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/c990601c49cb69a5.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/7a1a687e4e013ecc.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/742d3900ca49db0a.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"loading":null,"isPartial":false}
|
|
7
7
|
4:{}
|
|
8
8
|
5:"$0:rsc:props:children:0:props:serverProvidedParams:params"
|
|
9
9
|
8:null
|
package/web/__next._full.txt
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
3:I[45121,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
4
4
|
4:I[60512,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
5
5
|
5:I[66863,["/_next/static/chunks/7dfeab42587bcc0e.js"],"ClientPageRoot"]
|
|
6
|
-
6:I[66204,["/_next/static/chunks/eca64d281474b631.js","/_next/static/chunks/17e0384154325960.js","/_next/static/chunks/c990601c49cb69a5.js","/_next/static/chunks/
|
|
6
|
+
6:I[66204,["/_next/static/chunks/eca64d281474b631.js","/_next/static/chunks/17e0384154325960.js","/_next/static/chunks/c990601c49cb69a5.js","/_next/static/chunks/7a1a687e4e013ecc.js","/_next/static/chunks/742d3900ca49db0a.js"],"default"]
|
|
7
7
|
9:I[35417,["/_next/static/chunks/7dfeab42587bcc0e.js"],"OutletBoundary"]
|
|
8
8
|
a:"$Sreact.suspense"
|
|
9
9
|
c:I[35417,["/_next/static/chunks/7dfeab42587bcc0e.js"],"ViewportBoundary"]
|
|
10
10
|
e:I[35417,["/_next/static/chunks/7dfeab42587bcc0e.js"],"MetadataBoundary"]
|
|
11
11
|
10:I[50025,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
12
|
-
:HL["/_next/static/chunks/
|
|
13
|
-
0:{"P":null,"b":"
|
|
12
|
+
:HL["/_next/static/chunks/0031a7a7913074e5.css","style"]
|
|
13
|
+
0:{"P":null,"b":"0Uqyry_qoiv_a5FVsCaBQ","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0031a7a7913074e5.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/eca64d281474b631.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"zh-CN","suppressHydrationWarning":true,"className":"font-sans antialiased","data-vtl-theme":"default","data-vtl-density":"default","data-vtl-motion":"default","children":["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/17e0384154325960.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/c990601c49cb69a5.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/7a1a687e4e013ecc.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/742d3900ca49db0a.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lc",null,{"children":"$Ld"}],["$","div",null,{"hidden":true,"children":["$","$Le",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$Lf"}]}]}],null]}],false]],"m":"$undefined","G":["$10",[]],"S":true}
|
|
14
14
|
7:{}
|
|
15
15
|
8:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
16
16
|
d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
package/web/__next._head.txt
CHANGED
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
2:I[35417,["/_next/static/chunks/7dfeab42587bcc0e.js"],"ViewportBoundary"]
|
|
3
3
|
3:I[35417,["/_next/static/chunks/7dfeab42587bcc0e.js"],"MetadataBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
|
-
0:{"buildId":"
|
|
5
|
+
0:{"buildId":"0Uqyry_qoiv_a5FVsCaBQ","rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Vantaloom"}],["$","meta","1",{"name":"description","content":"Vantaloom local agent operations console."}]]}]}]}],null]}],"loading":null,"isPartial":false}
|
package/web/__next._index.txt
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
2:I[22332,["/_next/static/chunks/eca64d281474b631.js"],"ThemeProvider"]
|
|
3
3
|
3:I[45121,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
4
4
|
4:I[60512,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
5
|
-
:HL["/_next/static/chunks/
|
|
6
|
-
0:{"buildId":"
|
|
5
|
+
:HL["/_next/static/chunks/0031a7a7913074e5.css","style"]
|
|
6
|
+
0:{"buildId":"0Uqyry_qoiv_a5FVsCaBQ","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0031a7a7913074e5.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/eca64d281474b631.js","async":true}]],["$","html",null,{"lang":"zh-CN","suppressHydrationWarning":true,"className":"font-sans antialiased","data-vtl-theme":"default","data-vtl-density":"default","data-vtl-motion":"default","children":["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","template":["$","$L4",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]}]]}],"loading":null,"isPartial":false}
|
package/web/__next._tree.txt
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:HL["/_next/static/chunks/
|
|
2
|
-
0:{"buildId":"
|
|
1
|
+
:HL["/_next/static/chunks/0031a7a7913074e5.css","style"]
|
|
2
|
+
0:{"buildId":"0Uqyry_qoiv_a5FVsCaBQ","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
|