vana-cli 0.28.3 → 0.29.1
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/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +91 -41
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/server-start.d.ts +12 -0
- package/dist/cli/server-start.d.ts.map +1 -1
- package/dist/cli/server-start.js +48 -1
- package/dist/cli/server-start.js.map +1 -1
- package/dist/personal-server/index.d.ts +4 -0
- package/dist/personal-server/index.d.ts.map +1 -1
- package/dist/personal-server/index.js +7 -0
- package/dist/personal-server/index.js.map +1 -1
- package/dist/personal-server/local/runtime-pkg/derived-config.mjs +64 -0
- package/dist/personal-server/local/runtime-pkg/entry.mjs +2 -56
- package/dist/personal-server/local/runtime.d.ts.map +1 -1
- package/dist/personal-server/local/runtime.js +12 -4
- package/dist/personal-server/local/runtime.js.map +1 -1
- package/dist/personal-server/local/server.d.ts +2 -0
- package/dist/personal-server/local/server.d.ts.map +1 -1
- package/dist/personal-server/local/server.js +1 -0
- package/dist/personal-server/local/server.js.map +1 -1
- package/dist/personal-server/registered.d.ts +10 -0
- package/dist/personal-server/registered.d.ts.map +1 -1
- package/dist/personal-server/registered.js +24 -0
- package/dist/personal-server/registered.js.map +1 -1
- package/dist/runtime/playwright/in-process-run.d.ts +1 -0
- package/dist/runtime/playwright/in-process-run.d.ts.map +1 -1
- package/dist/runtime/playwright/in-process-run.js +64 -1
- package/dist/runtime/playwright/in-process-run.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAQL,YAAY,EAIb,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -29,17 +29,19 @@ const vanaPromptTheme = {
|
|
|
29
29
|
};
|
|
30
30
|
import { createConnectRenderer, createHumanRenderer, createLoginRenderer, formatDisplayPath, formatRelativeTime, } from "./render/index.js";
|
|
31
31
|
import { CliOutcomeStatus, migrateLegacyDataHome, getBrowserProfilesDir, getConnectorCacheDir, getLogsDir, getSessionsDir, getSourceResultPath, readCliState, readCliConfig, updateCliConfig, updateSourceState, } from "../core/index.js";
|
|
32
|
+
import { getVanaHome } from "../core/paths.js";
|
|
32
33
|
import { UnknownNetworkError, VANA_NETWORKS, isVanaNetworkName, resolveNetwork, } from "../core/network.js";
|
|
33
34
|
import { CliExitCode } from "../core/exit-codes.js";
|
|
34
35
|
import { registerAppCommands } from "./app/index.js";
|
|
35
|
-
import { lookupRegisteredServers } from "../personal-server/registered.js";
|
|
36
|
+
import { checkRegisteredServers, lookupRegisteredServers, } from "../personal-server/registered.js";
|
|
36
37
|
import { fetchConnectorToCache, listAvailableSources, readCachedConnectorMetadata, } from "../connectors/registry.js";
|
|
37
38
|
import { detectPersonalServerTarget, ingestResult, personalServerOwnerMismatch, urlsMatch, resolvePersonalServerAuthConfig, } from "../personal-server/index.js";
|
|
38
39
|
import { findDataConnectorsDir, ManagedPlaywrightRuntime, } from "../runtime/index.js";
|
|
39
40
|
import { getPdppProfileRoot } from "../pdpp/host.js";
|
|
40
41
|
import { runServerStart } from "./server-start.js";
|
|
41
42
|
import { findRunningServers } from "../personal-server/local/server.js";
|
|
42
|
-
import { stopLocalServer } from "../personal-server/local/detach.js";
|
|
43
|
+
import { runningServerPid, stopLocalServer, } from "../personal-server/local/detach.js";
|
|
44
|
+
import { localServerDataDir } from "../personal-server/local/config.js";
|
|
43
45
|
import { isPdppSource, PdppRuntime } from "../pdpp/runtime.js";
|
|
44
46
|
import { listAvailableSkills, installSkill, readInstalledSkills, } from "../skills/index.js";
|
|
45
47
|
import { queryStatus, querySources, queryDataList, queryDataShow, queryDoctor, } from "./queries.js";
|
|
@@ -424,10 +426,11 @@ Examples:
|
|
|
424
426
|
});
|
|
425
427
|
server
|
|
426
428
|
.command("status")
|
|
427
|
-
.description("
|
|
429
|
+
.description("Where your data is served from, where it is stored, and old registrations")
|
|
430
|
+
.option("--all", "List every old registration, not just the count")
|
|
428
431
|
.option("--json", "Output machine-readable JSON")
|
|
429
|
-
.action(async () => {
|
|
430
|
-
process.exitCode = await runCommandWithTelemetry({ ...telemetryBaseContext, command: "server", subcommand: "status" }, async () => runServerStatus(parsedOptions));
|
|
432
|
+
.action(async (statusOptions) => {
|
|
433
|
+
process.exitCode = await runCommandWithTelemetry({ ...telemetryBaseContext, command: "server", subcommand: "status" }, async () => runServerStatus(parsedOptions, statusOptions));
|
|
431
434
|
});
|
|
432
435
|
server
|
|
433
436
|
.command("set-url <url>")
|
|
@@ -2021,14 +2024,48 @@ async function runDoctor(options) {
|
|
|
2021
2024
|
}
|
|
2022
2025
|
return 0;
|
|
2023
2026
|
}
|
|
2024
|
-
|
|
2027
|
+
/** Which network a server serves, from the gateway it reports. */
|
|
2028
|
+
function networkOfGateway(gatewayUrl) {
|
|
2029
|
+
if (typeof gatewayUrl !== "string")
|
|
2030
|
+
return null;
|
|
2031
|
+
return /dp-rpc\.vana\.org/.test(gatewayUrl) ? "mainnet" : "moksha";
|
|
2032
|
+
}
|
|
2033
|
+
/** Where the running server keeps its data on this machine, when known. */
|
|
2034
|
+
function localDataDir(target, network) {
|
|
2035
|
+
if (!target.url || !network)
|
|
2036
|
+
return null;
|
|
2037
|
+
const saved = loadCredentials()?.personal_server;
|
|
2038
|
+
if (saved?.started_by === "vana-server-start" &&
|
|
2039
|
+
urlsMatch(saved.url, target.url) &&
|
|
2040
|
+
runningServerPid(network)) {
|
|
2041
|
+
return { path: localServerDataDir(network), runBy: "cli" };
|
|
2042
|
+
}
|
|
2043
|
+
const desktop = path.join(getVanaHome(), "desktop", "personal-server");
|
|
2044
|
+
const perNetwork = path.join(desktop, network);
|
|
2045
|
+
if (fs.existsSync(perNetwork))
|
|
2046
|
+
return { path: perNetwork, runBy: "desktop" };
|
|
2047
|
+
if (fs.existsSync(desktop))
|
|
2048
|
+
return { path: desktop, runBy: "desktop" };
|
|
2049
|
+
return null;
|
|
2050
|
+
}
|
|
2051
|
+
async function runServerStatus(options, statusOptions = {}) {
|
|
2025
2052
|
const emit = createEmitter(options);
|
|
2026
2053
|
const target = await detectPersonalServerTarget();
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2054
|
+
const account = loadCredentials()?.account.address;
|
|
2055
|
+
const owner = target.health?.owner ?? (account && account !== "env" ? account : null);
|
|
2056
|
+
// Every registration this owner has, checked from outside: the live one is
|
|
2057
|
+
// where apps actually reach the data; the rest are old server identities.
|
|
2058
|
+
const registrations = owner
|
|
2059
|
+
? await checkRegisteredServers(await lookupRegisteredServers(owner), owner)
|
|
2031
2060
|
: [];
|
|
2061
|
+
const localIdentity = target.health?.identity?.toLowerCase();
|
|
2062
|
+
const live = registrations.find((server) => server.reachable &&
|
|
2063
|
+
server.serverAddress.toLowerCase() === localIdentity) ??
|
|
2064
|
+
registrations.find((server) => server.reachable) ??
|
|
2065
|
+
null;
|
|
2066
|
+
const stale = registrations.filter((server) => !server.reachable);
|
|
2067
|
+
const network = networkOfGateway(target.health?.gatewayUrl) ?? live?.network ?? null;
|
|
2068
|
+
const dataDir = localDataDir(target, network);
|
|
2032
2069
|
const state = await readCliState();
|
|
2033
2070
|
// Count scopes from state
|
|
2034
2071
|
let totalScopeCount = 0;
|
|
@@ -2042,7 +2079,12 @@ async function runServerStatus(options) {
|
|
|
2042
2079
|
state: target.state,
|
|
2043
2080
|
url: target.url,
|
|
2044
2081
|
source: target.source,
|
|
2045
|
-
|
|
2082
|
+
owner,
|
|
2083
|
+
publicUrl: live?.url ?? null,
|
|
2084
|
+
publicNetwork: live?.network ?? null,
|
|
2085
|
+
dataDir: dataDir?.path ?? null,
|
|
2086
|
+
runBy: dataDir?.runBy ?? null,
|
|
2087
|
+
registeredServers: registrations,
|
|
2046
2088
|
health: target.health,
|
|
2047
2089
|
scopeCount: totalScopeCount,
|
|
2048
2090
|
})}\n`);
|
|
@@ -2050,50 +2092,58 @@ async function runServerStatus(options) {
|
|
|
2050
2092
|
}
|
|
2051
2093
|
emit.title("Personal Server");
|
|
2052
2094
|
emit.blank();
|
|
2095
|
+
if (live) {
|
|
2096
|
+
emit.keyValue("Public URL", `${live.url} (${live.network}, reachable)`, "success");
|
|
2097
|
+
}
|
|
2098
|
+
else if (target.state === "available") {
|
|
2099
|
+
emit.keyValue("Public URL", "none: apps cannot reach your data", "warning");
|
|
2100
|
+
}
|
|
2101
|
+
else {
|
|
2102
|
+
emit.keyValue("Public URL", "none: no server of yours is answering", "warning");
|
|
2103
|
+
}
|
|
2053
2104
|
if (target.url) {
|
|
2054
|
-
const
|
|
2055
|
-
? "
|
|
2056
|
-
:
|
|
2057
|
-
? "
|
|
2058
|
-
: target.source === "
|
|
2059
|
-
? "
|
|
2105
|
+
const runBy = dataDir?.runBy === "cli"
|
|
2106
|
+
? "vana server start"
|
|
2107
|
+
: dataDir?.runBy === "desktop"
|
|
2108
|
+
? "Vana Desktop"
|
|
2109
|
+
: target.source === "scan"
|
|
2110
|
+
? "found running"
|
|
2060
2111
|
: target.source === "env"
|
|
2061
|
-
? "
|
|
2062
|
-
:
|
|
2063
|
-
emit.keyValue("URL", `${target.url} ${
|
|
2112
|
+
? "from VANA_PERSONAL_SERVER_URL"
|
|
2113
|
+
: "saved";
|
|
2114
|
+
emit.keyValue("Local URL", `${target.url} (${runBy})`, "muted");
|
|
2115
|
+
}
|
|
2116
|
+
else {
|
|
2117
|
+
emit.keyValue("Local URL", "no server running on this machine", "muted");
|
|
2118
|
+
}
|
|
2119
|
+
if (dataDir) {
|
|
2120
|
+
emit.keyValue("Data on disk", formatDisplayPath(dataDir.path), "muted");
|
|
2064
2121
|
}
|
|
2065
|
-
|
|
2066
|
-
emit.keyValue("
|
|
2122
|
+
if (live) {
|
|
2123
|
+
emit.keyValue("Backup", "encrypted in Vana storage, follows your account", "muted");
|
|
2067
2124
|
}
|
|
2068
|
-
const stateLabel = target.state === "available" ? "healthy" : "Not connected";
|
|
2069
|
-
emit.keyValue("Status", stateLabel, target.state === "available" ? "success" : "warning");
|
|
2070
2125
|
if (target.health) {
|
|
2071
2126
|
emit.keyValue("Version", target.health.version, "muted");
|
|
2127
|
+
emit.keyValue("Uptime", formatUptime(target.health.uptime), "muted");
|
|
2072
2128
|
}
|
|
2129
|
+
if (owner)
|
|
2130
|
+
emit.keyValue("Owner", owner, "muted");
|
|
2073
2131
|
if (totalScopeCount > 0) {
|
|
2074
2132
|
emit.keyValue("Scopes", `${totalScopeCount} stored`, "muted");
|
|
2075
2133
|
}
|
|
2076
|
-
if (
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
}
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
if (target.health) {
|
|
2085
|
-
emit.keyValue("Uptime", formatUptime(target.health.uptime), "muted");
|
|
2086
|
-
if (target.health.owner) {
|
|
2087
|
-
emit.keyValue("Owner", target.health.owner, "muted");
|
|
2134
|
+
if (stale.length > 0) {
|
|
2135
|
+
if (statusOptions.all) {
|
|
2136
|
+
for (const server of stale) {
|
|
2137
|
+
emit.keyValue("Old server", `${server.url} (${server.network}, not answering)`, "muted");
|
|
2138
|
+
}
|
|
2139
|
+
}
|
|
2140
|
+
else {
|
|
2141
|
+
emit.keyValue("Old servers", `${stale.length} not answering (${emit.code("vana server status --all")})`, "muted");
|
|
2088
2142
|
}
|
|
2089
|
-
}
|
|
2090
|
-
if (target.source === "scan" && target.url) {
|
|
2091
|
-
emit.blank();
|
|
2092
|
-
emit.detail(`Save with ${emit.code(`vana server set-url ${target.url}`)}.`);
|
|
2093
2143
|
}
|
|
2094
2144
|
if (target.state !== "available") {
|
|
2095
2145
|
emit.blank();
|
|
2096
|
-
emit.next("vana server
|
|
2146
|
+
emit.next("vana server start --detach");
|
|
2097
2147
|
}
|
|
2098
2148
|
emit.blank();
|
|
2099
2149
|
emit.detail(`More: ${emit.code("vana server sync")} | ${emit.code("vana server data")} | ${emit.code("vana server --help")}`);
|