@vantaloom/runtime-linux-x64 0.12.48 → 0.12.50
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/VERSION +1 -1
- package/bin/vantaloom-agent +0 -0
- package/bin/vantaloom-api +0 -0
- package/bin/vantaloom-browser +0 -0
- package/bin/vantaloomctl +0 -0
- package/cli/package.json +1 -1
- package/cli/src/cli.mjs +460 -2100
- package/cli/src/lib/auth.mjs +155 -0
- package/cli/src/lib/constants.mjs +34 -0
- package/cli/src/lib/install.mjs +627 -0
- package/cli/src/lib/lifecycle.mjs +187 -0
- package/cli/src/lib/mesh.mjs +236 -0
- package/cli/src/lib/package.mjs +206 -0
- package/cli/src/lib/platform.mjs +165 -0
- package/cli/src/lib/registry.mjs +237 -0
- package/manifest.json +2 -2
- package/package.json +1 -1
- package/web/404.html +1 -1
- package/web/__next.__PAGE__.txt +2 -2
- package/web/__next._full.txt +2 -2
- package/web/__next._head.txt +1 -1
- package/web/__next._index.txt +1 -1
- package/web/__next._tree.txt +1 -1
- package/web/_next/static/chunks/{c45c5fae4a957e2f.js → fb49ea3bfe8faeb0.js} +1 -1
- package/web/_not-found/__next._full.txt +1 -1
- package/web/_not-found/__next._head.txt +1 -1
- package/web/_not-found/__next._index.txt +1 -1
- 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 +1 -1
- package/web/_not-found.html +1 -1
- package/web/_not-found.txt +1 -1
- package/web/index.html +1 -1
- package/web/index.txt +2 -2
- /package/web/_next/static/{RpkdljcHezHulenQJbyKT → fdvtf4murB4YOO6QLnYED}/_buildManifest.js +0 -0
- /package/web/_next/static/{RpkdljcHezHulenQJbyKT → fdvtf4murB4YOO6QLnYED}/_clientMiddlewareManifest.json +0 -0
- /package/web/_next/static/{RpkdljcHezHulenQJbyKT → fdvtf4murB4YOO6QLnYED}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import {
|
|
2
|
+
existsSync,
|
|
3
|
+
mkdirSync,
|
|
4
|
+
readFileSync,
|
|
5
|
+
rmSync,
|
|
6
|
+
} from "node:fs"
|
|
7
|
+
import { writeFile } from "node:fs/promises"
|
|
8
|
+
import { createHash } from "node:crypto"
|
|
9
|
+
import { execFileSync } from "node:child_process"
|
|
10
|
+
import os from "node:os"
|
|
11
|
+
import path from "node:path"
|
|
12
|
+
|
|
13
|
+
// binaryName returns the OS-appropriate binary file name.
|
|
14
|
+
// NOTE: mirrored in Go at apps/desktop/internal/runtime/
|
|
15
|
+
export function binaryName(name, targetPlatform) {
|
|
16
|
+
const isWindows = targetPlatform
|
|
17
|
+
? targetPlatform.startsWith("win32")
|
|
18
|
+
: process.platform === "win32"
|
|
19
|
+
return isWindows ? `${name}.exe` : name
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// platformId returns the current platform identifier string.
|
|
23
|
+
// NOTE: mirrored in Go at apps/desktop/internal/runtime/
|
|
24
|
+
export function platformId() {
|
|
25
|
+
return `${process.platform}-${process.arch}`
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// runtimePackageName returns the npm package name for a given platform.
|
|
29
|
+
// NOTE: mirrored in Go at apps/desktop/internal/runtime/
|
|
30
|
+
export function runtimePackageName(platform) {
|
|
31
|
+
return `@vantaloom/runtime-${platform}`
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function parsePlatformId(platform) {
|
|
35
|
+
const parts = platform.split("-")
|
|
36
|
+
const cpu = parts.pop()
|
|
37
|
+
const runtimeOS = parts.join("-")
|
|
38
|
+
if (!runtimeOS || !cpu) {
|
|
39
|
+
throw new Error(`invalid platform id: ${platform}`)
|
|
40
|
+
}
|
|
41
|
+
return { os: runtimeOS, cpu }
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// psQuote wraps a value as a PowerShell single-quoted string literal.
|
|
45
|
+
// NOTE: mirrored in Go at apps/desktop/internal/runtime/
|
|
46
|
+
export function psQuote(value) {
|
|
47
|
+
return "'" + String(value).replace(/'/g, "''") + "'"
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// fileSha returns the SHA-256 hex digest of a file's contents.
|
|
51
|
+
// NOTE: mirrored in Go at apps/desktop/internal/runtime/
|
|
52
|
+
export function fileSha(file) {
|
|
53
|
+
return createHash("sha256").update(readFileSync(file)).digest("hex")
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// defaultPrefix returns the default install prefix for the current platform.
|
|
57
|
+
// NOTE: mirrored in Go at apps/desktop/internal/runtime/
|
|
58
|
+
export function defaultPrefix() {
|
|
59
|
+
if (process.env.VANTALOOM_HOME) {
|
|
60
|
+
return process.env.VANTALOOM_HOME
|
|
61
|
+
}
|
|
62
|
+
if (process.platform === "win32") {
|
|
63
|
+
// Prefer D: (the historical default) but fall back to C: when this machine
|
|
64
|
+
// has no D: drive. Keep in sync with the desktop shell's DefaultPrefix().
|
|
65
|
+
return existsSync("D:\\") ? "D:\\Vantaloom" : "C:\\Vantaloom"
|
|
66
|
+
}
|
|
67
|
+
if (process.platform === "darwin") {
|
|
68
|
+
return path.join(os.homedir(), "Applications", "Vantaloom")
|
|
69
|
+
}
|
|
70
|
+
return path.join(os.homedir(), ".local", "vantaloom")
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function displayCommand(prefix) {
|
|
74
|
+
if (process.platform === "win32") {
|
|
75
|
+
return path.join(prefix, "vantaloom.cmd")
|
|
76
|
+
}
|
|
77
|
+
return path.join(prefix, "vantaloom")
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function readJSONIfExists(filePath) {
|
|
81
|
+
if (!existsSync(filePath)) {
|
|
82
|
+
return {}
|
|
83
|
+
}
|
|
84
|
+
return JSON.parse(readFileSync(filePath, "utf8"))
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function packageBasename(name) {
|
|
88
|
+
return name.split("/").pop() ?? name
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function normalizeRegistry(value) {
|
|
92
|
+
return value.replace(/\/+$/, "")
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function toCamel(value) {
|
|
96
|
+
return value.replace(/-([a-z])/g, (_, char) => char.toUpperCase())
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function safeDirectory(value) {
|
|
100
|
+
const full = path.resolve(value)
|
|
101
|
+
const parsed = path.parse(full)
|
|
102
|
+
if (full === parsed.root) {
|
|
103
|
+
throw new Error(`refusing to operate on unsafe directory: ${value}`)
|
|
104
|
+
}
|
|
105
|
+
return full
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export function removeKnownPath(target, expectedParent) {
|
|
109
|
+
if (!existsSync(target)) {
|
|
110
|
+
return
|
|
111
|
+
}
|
|
112
|
+
const full = path.resolve(target)
|
|
113
|
+
const parent = path.resolve(expectedParent)
|
|
114
|
+
const prefix = parent.endsWith(path.sep) ? parent : `${parent}${path.sep}`
|
|
115
|
+
if (!full.startsWith(prefix)) {
|
|
116
|
+
throw new Error(`refusing to remove path outside expected parent: ${full}`)
|
|
117
|
+
}
|
|
118
|
+
rmSync(full, { recursive: true, force: true })
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export async function writeText(filePath, content) {
|
|
122
|
+
mkdirSync(path.dirname(filePath), { recursive: true })
|
|
123
|
+
await writeFile(filePath, content)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export function run(command, args, options = {}) {
|
|
127
|
+
try {
|
|
128
|
+
execFileSync(command, args, { stdio: "inherit", windowsHide: true, ...options })
|
|
129
|
+
} catch (error) {
|
|
130
|
+
if (error && typeof error.status === "number") {
|
|
131
|
+
throw new Error(`${command} exited with ${error.status}`)
|
|
132
|
+
}
|
|
133
|
+
throw error
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export function runPnpm(args, options = {}) {
|
|
138
|
+
if (process.platform === "win32") {
|
|
139
|
+
run("cmd.exe", ["/d", "/s", "/c", "pnpm", ...args], options)
|
|
140
|
+
return
|
|
141
|
+
}
|
|
142
|
+
run("pnpm", args, options)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// runNpm invokes npm cross-platform. On Windows npm is `npm.cmd`, which
|
|
146
|
+
// execFileSync (used by run) can't resolve directly (ENOENT) — so wrap via
|
|
147
|
+
// cmd.exe, mirroring runPnpm.
|
|
148
|
+
export function runNpm(args, options = {}) {
|
|
149
|
+
if (process.platform === "win32") {
|
|
150
|
+
run("cmd.exe", ["/d", "/s", "/c", "npm", ...args], options)
|
|
151
|
+
return
|
|
152
|
+
}
|
|
153
|
+
run("npm", args, options)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export function platformToGoEnv(platform) {
|
|
157
|
+
const { os: runtimeOS, cpu } = parsePlatformId(platform)
|
|
158
|
+
const goosMap = { win32: "windows", linux: "linux", darwin: "darwin" }
|
|
159
|
+
const goarchMap = { x64: "amd64", arm64: "arm64" }
|
|
160
|
+
return {
|
|
161
|
+
GOOS: goosMap[runtimeOS] ?? runtimeOS,
|
|
162
|
+
GOARCH: goarchMap[cpu] ?? cpu,
|
|
163
|
+
CGO_ENABLED: "0",
|
|
164
|
+
}
|
|
165
|
+
}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import {
|
|
2
|
+
existsSync,
|
|
3
|
+
readFileSync,
|
|
4
|
+
readdirSync,
|
|
5
|
+
} from "node:fs"
|
|
6
|
+
import { writeFile } from "node:fs/promises"
|
|
7
|
+
import os from "node:os"
|
|
8
|
+
import path from "node:path"
|
|
9
|
+
|
|
10
|
+
export function detectNpmRegistry() {
|
|
11
|
+
// 1. NPM_CONFIG_REGISTRY env var (highest priority, set by npm/npx when running)
|
|
12
|
+
if (process.env.NPM_CONFIG_REGISTRY) {
|
|
13
|
+
return process.env.npm_config_registry || process.env.NPM_CONFIG_REGISTRY
|
|
14
|
+
}
|
|
15
|
+
// npm also sets the lowercase variant
|
|
16
|
+
if (process.env.npm_config_registry) {
|
|
17
|
+
return process.env.npm_config_registry
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// 2. Read user .npmrc
|
|
21
|
+
try {
|
|
22
|
+
const npmrcPaths = [
|
|
23
|
+
path.join(os.homedir(), ".npmrc"),
|
|
24
|
+
]
|
|
25
|
+
// Also check project-level .npmrc
|
|
26
|
+
const localNpmrc = path.resolve(".npmrc")
|
|
27
|
+
if (localNpmrc !== npmrcPaths[0]) {
|
|
28
|
+
npmrcPaths.unshift(localNpmrc)
|
|
29
|
+
}
|
|
30
|
+
for (const npmrcPath of npmrcPaths) {
|
|
31
|
+
if (existsSync(npmrcPath)) {
|
|
32
|
+
const content = readFileSync(npmrcPath, "utf8")
|
|
33
|
+
const match = content.match(/^\s*registry\s*=\s*(.+)/m)
|
|
34
|
+
if (match) {
|
|
35
|
+
return match[1].trim()
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
} catch {
|
|
40
|
+
// Ignore .npmrc read errors
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return ""
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export async function resolveNpmPackageWithFallback({ registries, name, version }) {
|
|
47
|
+
const errors = []
|
|
48
|
+
for (const registry of registries) {
|
|
49
|
+
try {
|
|
50
|
+
const result = await resolveNpmPackage({ registry, name, version })
|
|
51
|
+
return { ...result, registry }
|
|
52
|
+
} catch (error) {
|
|
53
|
+
const causeCode = error?.cause?.code || ""
|
|
54
|
+
const isNetworkError = causeCode === "ECONNREFUSED"
|
|
55
|
+
|| causeCode === "ENOTFOUND"
|
|
56
|
+
|| causeCode === "ETIMEDOUT"
|
|
57
|
+
|| causeCode === "ECONNRESET"
|
|
58
|
+
|| causeCode === "UND_ERR_CONNECT_TIMEOUT"
|
|
59
|
+
|| (error instanceof TypeError && error.message === "fetch failed")
|
|
60
|
+
const isSslError = causeCode === "UNABLE_TO_GET_ISSUER_CERT_LOCALLY"
|
|
61
|
+
|| causeCode === "CERT_HAS_EXPIRED"
|
|
62
|
+
|| causeCode === "DEPTH_ZERO_SELF_SIGNED_CERT"
|
|
63
|
+
|| causeCode === "SELF_SIGNED_CERT_IN_CHAIN"
|
|
64
|
+
|| causeCode === "ERR_TLS_CERT_ALTNAME_INVALID"
|
|
65
|
+
const isRetryable = isNetworkError || isSslError
|
|
66
|
+
errors.push({ registry, error, isRetryable, isSslError })
|
|
67
|
+
|
|
68
|
+
if (isRetryable && registries.length > 1) {
|
|
69
|
+
const hint = isSslError ? " (SSL certificate error)" : ""
|
|
70
|
+
console.error(`vantaloom: ${registry} unreachable${hint}, trying next registry...`)
|
|
71
|
+
continue
|
|
72
|
+
}
|
|
73
|
+
if (isSslError) {
|
|
74
|
+
throw new Error(
|
|
75
|
+
`SSL certificate error connecting to ${registry}: ${causeCode}\n` +
|
|
76
|
+
` Fix: run with --no-strict-ssl, or set npm config: npm config set strict-ssl false`
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
// Non-network error (404, parse error, etc.) — don't try fallbacks
|
|
80
|
+
throw error
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// All registries failed
|
|
85
|
+
const hasSslError = errors.some((e) => e.isSslError)
|
|
86
|
+
const tried = errors.map((e) => e.registry).join(", ")
|
|
87
|
+
const sslHint = hasSslError
|
|
88
|
+
? `\n SSL fix: run with --no-strict-ssl, or set npm config: npm config set strict-ssl false`
|
|
89
|
+
: ""
|
|
90
|
+
throw new Error(
|
|
91
|
+
`all registries unreachable (tried: ${tried}). ` +
|
|
92
|
+
`Check your network or specify --npm-registry <url>${sslHint}`
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export async function resolveNpmPackage({ registry, name, version }) {
|
|
97
|
+
const metadataUrl = `${registry}/${encodeURIComponent(name).replace("%2F", "%2f")}`
|
|
98
|
+
let response
|
|
99
|
+
try {
|
|
100
|
+
response = await fetch(metadataUrl, {
|
|
101
|
+
headers: {
|
|
102
|
+
Accept: "application/vnd.npm.install-v1+json",
|
|
103
|
+
"User-Agent": "vantaloom-cli",
|
|
104
|
+
},
|
|
105
|
+
signal: AbortSignal.timeout(15000),
|
|
106
|
+
})
|
|
107
|
+
} catch (error) {
|
|
108
|
+
if (error instanceof TypeError && error.message === "fetch failed") {
|
|
109
|
+
const causeCode = error.cause?.code || ""
|
|
110
|
+
const causeMsg = causeCode || error.cause?.message || String(error.cause || "")
|
|
111
|
+
throw Object.assign(
|
|
112
|
+
new Error(`cannot reach registry ${registry} (${causeMsg})`),
|
|
113
|
+
{ cause: error.cause }
|
|
114
|
+
)
|
|
115
|
+
}
|
|
116
|
+
throw error
|
|
117
|
+
}
|
|
118
|
+
if (!response.ok) {
|
|
119
|
+
const detail = await response.text().catch(() => "")
|
|
120
|
+
throw new Error(`failed to inspect npm package ${name}: HTTP ${response.status}${detail ? ` ${detail.slice(0, 200)}` : ""}`)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const metadata = await response.json()
|
|
124
|
+
const selectedVersion = metadata["dist-tags"]?.[version] ?? version
|
|
125
|
+
const packageVersion = metadata.versions?.[selectedVersion]
|
|
126
|
+
if (!packageVersion?.dist?.tarball) {
|
|
127
|
+
const available = Object.keys(metadata.versions ?? {}).slice(-8).join(", ") || "none"
|
|
128
|
+
throw new Error(`missing npm package ${name}@${version}; available versions: ${available}`)
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
version: selectedVersion,
|
|
132
|
+
tarball: packageVersion.dist.tarball,
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export async function downloadNpmTarball({ tarballUrl, target, packageName, version }) {
|
|
137
|
+
console.log(` downloading ${packageName}@${version}...`)
|
|
138
|
+
let response
|
|
139
|
+
try {
|
|
140
|
+
response = await fetch(tarballUrl, {
|
|
141
|
+
headers: {
|
|
142
|
+
"User-Agent": "vantaloom-cli",
|
|
143
|
+
},
|
|
144
|
+
signal: AbortSignal.timeout(120000),
|
|
145
|
+
})
|
|
146
|
+
} catch (error) {
|
|
147
|
+
const causeCode = error?.cause?.code || ""
|
|
148
|
+
const causeMsg = causeCode || error?.cause?.message || error.message || ""
|
|
149
|
+
const isSsl = causeCode.includes("CERT") || causeCode === "UNABLE_TO_GET_ISSUER_CERT_LOCALLY"
|
|
150
|
+
const hint = isSsl ? `\n Fix: run with --no-strict-ssl` : ""
|
|
151
|
+
throw new Error(`failed to download ${packageName}@${version} from ${tarballUrl}: ${causeMsg}${hint}`)
|
|
152
|
+
}
|
|
153
|
+
if (!response.ok) {
|
|
154
|
+
const detail = await response.text().catch(() => "")
|
|
155
|
+
throw new Error(`failed to download ${packageName}@${version}: HTTP ${response.status}${detail ? ` ${detail.slice(0, 200)}` : ""}`)
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const buffer = Buffer.from(await response.arrayBuffer())
|
|
159
|
+
await writeFile(target, buffer)
|
|
160
|
+
console.log(` downloaded ${(buffer.length / 1024 / 1024).toFixed(1)} MB`)
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export async function downloadReleaseAsset({ repo, releaseTag, assetName, target, token }) {
|
|
164
|
+
const releaseUrl = `https://api.github.com/repos/${repo}/releases/tags/${releaseTag}`
|
|
165
|
+
const headers = {
|
|
166
|
+
"User-Agent": "vantaloom-cli",
|
|
167
|
+
}
|
|
168
|
+
const githubToken = token || process.env.VANTALOOM_GITHUB_TOKEN || process.env.GITHUB_TOKEN
|
|
169
|
+
if (githubToken) {
|
|
170
|
+
headers.Authorization = `Bearer ${githubToken}`
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const releaseResponse = await fetch(releaseUrl, { headers })
|
|
174
|
+
if (!releaseResponse.ok) {
|
|
175
|
+
const detail = await releaseResponse.text().catch(() => "")
|
|
176
|
+
const authHint = releaseResponse.status === 404 || releaseResponse.status === 403
|
|
177
|
+
? " If the repository is private, set VANTALOOM_GITHUB_TOKEN to a GitHub token that can read releases."
|
|
178
|
+
: ""
|
|
179
|
+
throw new Error(`failed to inspect ${repo}@${releaseTag}: HTTP ${releaseResponse.status}.${authHint}${detail ? ` ${detail.slice(0, 200)}` : ""}`)
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const release = await releaseResponse.json()
|
|
183
|
+
const asset = release.assets?.find((asset) => asset.name === assetName)
|
|
184
|
+
if (!asset) {
|
|
185
|
+
const names = release.assets?.map((asset) => asset.name).join(", ") || "none"
|
|
186
|
+
throw new Error(`missing release asset ${assetName} in ${repo}@${releaseTag}; available assets: ${names}`)
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const response = await fetch(asset.url, {
|
|
190
|
+
headers: {
|
|
191
|
+
...headers,
|
|
192
|
+
Accept: "application/octet-stream",
|
|
193
|
+
},
|
|
194
|
+
})
|
|
195
|
+
if (!response.ok) {
|
|
196
|
+
const detail = await response.text().catch(() => "")
|
|
197
|
+
const authHint = response.status === 404 || response.status === 403
|
|
198
|
+
? " If the repository is private, set VANTALOOM_GITHUB_TOKEN to a GitHub token that can read releases."
|
|
199
|
+
: ""
|
|
200
|
+
throw new Error(`failed to download ${assetName} from ${repo}@${releaseTag}: HTTP ${response.status}.${authHint}${detail ? ` ${detail.slice(0, 200)}` : ""}`)
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const buffer = Buffer.from(await response.arrayBuffer())
|
|
204
|
+
await writeFile(target, buffer)
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export function findExtractedPackage(extractRoot, platform) {
|
|
208
|
+
const expected = path.join(extractRoot, `vantaloom-${platform}`)
|
|
209
|
+
if (existsSync(expected)) {
|
|
210
|
+
return expected
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const directories = readdirSync(extractRoot, { withFileTypes: true })
|
|
214
|
+
.filter((entry) => entry.isDirectory())
|
|
215
|
+
.map((entry) => path.join(extractRoot, entry.name))
|
|
216
|
+
if (directories.length === 1) {
|
|
217
|
+
return directories[0]
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
throw new Error(`could not find extracted Vantaloom package in ${extractRoot}`)
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export function findExtractedNpmPackage(extractRoot) {
|
|
224
|
+
const expected = path.join(extractRoot, "package")
|
|
225
|
+
if (existsSync(expected)) {
|
|
226
|
+
return expected
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const directories = readdirSync(extractRoot, { withFileTypes: true })
|
|
230
|
+
.filter((entry) => entry.isDirectory())
|
|
231
|
+
.map((entry) => path.join(extractRoot, entry.name))
|
|
232
|
+
if (directories.length === 1) {
|
|
233
|
+
return directories[0]
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
throw new Error(`could not find extracted npm package in ${extractRoot}`)
|
|
237
|
+
}
|
package/manifest.json
CHANGED
package/package.json
CHANGED
package/web/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--RpkdljcHezHulenQJbyKT--><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/e6cf1bffaf46e8a8.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/ccc016f22e340d7a.js"/><script src="/_next/static/chunks/465977caba526416.js" async=""></script><script src="/_next/static/chunks/757e2e1b77b5bacc.js" async=""></script><script src="/_next/static/chunks/turbopack-74ec218a8e8a6a34.js" async=""></script><script src="/_next/static/chunks/10ce0b22985f1a35.js" async=""></script><script src="/_next/static/chunks/c75862ae59265943.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/ccc016f22e340d7a.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/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"ThemeProvider\"]\n3:I[97452,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"FrontendErrorBoundary\"]\n4:I[97452,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"GlobalErrorHandlers\"]\n5:I[64990,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"TourProvider\"]\n6:I[45121,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"default\"]\n7:I[60512,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"default\"]\n8:I[35417,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[35417,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"ViewportBoundary\"]\nd:I[35417,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"MetadataBoundary\"]\nf:I[50025,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"default\"]\n:HL[\"/_next/static/chunks/e6cf1bffaf46e8a8.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"RpkdljcHezHulenQJbyKT\",\"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/e6cf1bffaf46e8a8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/10ce0b22985f1a35.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/c75862ae59265943.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"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,{\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",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,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",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:children:1: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:children:1: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:children:1: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:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"a:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"Vantaloom\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Vantaloom local agent operations console.\"}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><!--fdvtf4murB4YOO6QLnYED--><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/e6cf1bffaf46e8a8.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/ccc016f22e340d7a.js"/><script src="/_next/static/chunks/465977caba526416.js" async=""></script><script src="/_next/static/chunks/757e2e1b77b5bacc.js" async=""></script><script src="/_next/static/chunks/turbopack-74ec218a8e8a6a34.js" async=""></script><script src="/_next/static/chunks/10ce0b22985f1a35.js" async=""></script><script src="/_next/static/chunks/c75862ae59265943.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/ccc016f22e340d7a.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/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"ThemeProvider\"]\n3:I[97452,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"FrontendErrorBoundary\"]\n4:I[97452,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"GlobalErrorHandlers\"]\n5:I[64990,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"TourProvider\"]\n6:I[45121,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"default\"]\n7:I[60512,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"default\"]\n8:I[35417,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[35417,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"ViewportBoundary\"]\nd:I[35417,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"MetadataBoundary\"]\nf:I[50025,[\"/_next/static/chunks/10ce0b22985f1a35.js\",\"/_next/static/chunks/c75862ae59265943.js\",\"/_next/static/chunks/7dfeab42587bcc0e.js\"],\"default\"]\n:HL[\"/_next/static/chunks/e6cf1bffaf46e8a8.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"fdvtf4murB4YOO6QLnYED\",\"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/e6cf1bffaf46e8a8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/10ce0b22985f1a35.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/c75862ae59265943.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"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,{\"children\":[[\"$\",\"$L4\",null,{}],[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",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,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",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:children:1: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:children:1: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:children:1: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:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"a:null\ne:[[\"$\",\"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/10ce0b22985f1a35.js","/_next/static/chunks/c75862ae59265943.js","/_next/static/chunks/17e0384154325960.js","/_next/static/chunks/c990601c49cb69a5.js","/_next/static/chunks/
|
|
3
|
+
3:I[66204,["/_next/static/chunks/10ce0b22985f1a35.js","/_next/static/chunks/c75862ae59265943.js","/_next/static/chunks/17e0384154325960.js","/_next/static/chunks/c990601c49cb69a5.js","/_next/static/chunks/fb49ea3bfe8faeb0.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":"fdvtf4murB4YOO6QLnYED","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/fb49ea3bfe8faeb0.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
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
6:I[45121,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
7
7
|
7:I[60512,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
8
8
|
8:I[66863,["/_next/static/chunks/7dfeab42587bcc0e.js"],"ClientPageRoot"]
|
|
9
|
-
9:I[66204,["/_next/static/chunks/10ce0b22985f1a35.js","/_next/static/chunks/c75862ae59265943.js","/_next/static/chunks/17e0384154325960.js","/_next/static/chunks/c990601c49cb69a5.js","/_next/static/chunks/
|
|
9
|
+
9:I[66204,["/_next/static/chunks/10ce0b22985f1a35.js","/_next/static/chunks/c75862ae59265943.js","/_next/static/chunks/17e0384154325960.js","/_next/static/chunks/c990601c49cb69a5.js","/_next/static/chunks/fb49ea3bfe8faeb0.js","/_next/static/chunks/742d3900ca49db0a.js"],"default"]
|
|
10
10
|
c:I[35417,["/_next/static/chunks/7dfeab42587bcc0e.js"],"OutletBoundary"]
|
|
11
11
|
d:"$Sreact.suspense"
|
|
12
12
|
f:I[35417,["/_next/static/chunks/7dfeab42587bcc0e.js"],"ViewportBoundary"]
|
|
13
13
|
11:I[35417,["/_next/static/chunks/7dfeab42587bcc0e.js"],"MetadataBoundary"]
|
|
14
14
|
13:I[50025,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
15
15
|
:HL["/_next/static/chunks/e6cf1bffaf46e8a8.css","style"]
|
|
16
|
-
0:{"P":null,"b":"
|
|
16
|
+
0:{"P":null,"b":"fdvtf4murB4YOO6QLnYED","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/e6cf1bffaf46e8a8.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/10ce0b22985f1a35.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/c75862ae59265943.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,{"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L7",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":[["$","$L8",null,{"Component":"$9","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@a","$@b"]}}],[["$","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/fb49ea3bfe8faeb0.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/742d3900ca49db0a.js","async":true,"nonce":"$undefined"}]],["$","$Lc",null,{"children":["$","$d",null,{"name":"Next.MetadataOutlet","children":"$@e"}]}]]}],{},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$Lf",null,{"children":"$L10"}],["$","div",null,{"hidden":true,"children":["$","$L11",null,{"children":["$","$d",null,{"name":"Next.Metadata","children":"$L12"}]}]}],null]}],false]],"m":"$undefined","G":["$13",[]],"S":true}
|
|
17
17
|
a:{}
|
|
18
18
|
b:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
19
19
|
10:[["$","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":"fdvtf4murB4YOO6QLnYED","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
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
6:I[45121,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
7
7
|
7:I[60512,["/_next/static/chunks/7dfeab42587bcc0e.js"],"default"]
|
|
8
8
|
:HL["/_next/static/chunks/e6cf1bffaf46e8a8.css","style"]
|
|
9
|
-
0:{"buildId":"
|
|
9
|
+
0:{"buildId":"fdvtf4murB4YOO6QLnYED","rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/e6cf1bffaf46e8a8.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/10ce0b22985f1a35.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/c75862ae59265943.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,{"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"parallelRouterKey":"children","template":["$","$L7",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
1
|
:HL["/_next/static/chunks/e6cf1bffaf46e8a8.css","style"]
|
|
2
|
-
0:{"buildId":"
|
|
2
|
+
0:{"buildId":"fdvtf4murB4YOO6QLnYED","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}
|