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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
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("Show Personal Server status")
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
- async function runServerStatus(options) {
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
- // The local transport URL and the gateway-registered public URL are two
2028
- // names for the same server; show both when the owner is known.
2029
- const registeredServers = target.health?.owner
2030
- ? await lookupRegisteredServers(target.health.owner)
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
- registeredServers,
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 urlSuffix = target.source === "scan"
2055
- ? "(auto-detected)"
2056
- : target.source === "config"
2057
- ? "(saved)"
2058
- : target.source === "auth"
2059
- ? "(from vana login)"
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
- ? "(from VANA_PERSONAL_SERVER_URL)"
2062
- : `(${target.source ?? "unknown"})`;
2063
- emit.keyValue("URL", `${target.url} ${urlSuffix}`, "muted");
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
- for (const server of registeredServers) {
2066
- emit.keyValue("Registered", `${server.url} (${server.network})`, "muted");
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 (target.source && !target.url) {
2077
- const sourceLabel = {
2078
- config: "Saved config",
2079
- env: "VANA_PERSONAL_SERVER_URL",
2080
- scan: "Localhost scan",
2081
- };
2082
- emit.keyValue("Resolved via", sourceLabel[target.source] ?? target.source, "muted");
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 set-url <url>");
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")}`);