vana-cli 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/README.md +7 -0
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +3 -0
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/cli/server-start.d.ts +10 -1
  6. package/dist/cli/server-start.d.ts.map +1 -1
  7. package/dist/cli/server-start.js +153 -5
  8. package/dist/cli/server-start.js.map +1 -1
  9. package/dist/personal-server/local/config.d.ts +5 -0
  10. package/dist/personal-server/local/config.d.ts.map +1 -1
  11. package/dist/personal-server/local/config.js +4 -2
  12. package/dist/personal-server/local/config.js.map +1 -1
  13. package/dist/personal-server/local/frpc.d.ts +59 -0
  14. package/dist/personal-server/local/frpc.d.ts.map +1 -0
  15. package/dist/personal-server/local/frpc.js +191 -0
  16. package/dist/personal-server/local/frpc.js.map +1 -0
  17. package/dist/personal-server/local/owner-binding.d.ts +22 -2
  18. package/dist/personal-server/local/owner-binding.d.ts.map +1 -1
  19. package/dist/personal-server/local/owner-binding.js +23 -14
  20. package/dist/personal-server/local/owner-binding.js.map +1 -1
  21. package/dist/personal-server/local/registration.d.ts +42 -0
  22. package/dist/personal-server/local/registration.d.ts.map +1 -0
  23. package/dist/personal-server/local/registration.js +81 -0
  24. package/dist/personal-server/local/registration.js.map +1 -0
  25. package/dist/personal-server/local/runtime-pkg/entry.mjs +138 -20
  26. package/dist/personal-server/local/server.d.ts +25 -0
  27. package/dist/personal-server/local/server.d.ts.map +1 -1
  28. package/dist/personal-server/local/server.js +80 -4
  29. package/dist/personal-server/local/server.js.map +1 -1
  30. package/package.json +1 -1
@@ -2,7 +2,9 @@ import type { VanaNetworkName } from "../core/network.js";
2
2
  import { type ResolvedNode } from "../pdpp/host.js";
3
3
  import { runOwnerBindingExchange } from "../personal-server/local/owner-binding.js";
4
4
  import { type OwnerSecretStore } from "../personal-server/local/owner-secret.js";
5
- import { startLocalServer, type LocalServerHandle, type RunningServer } from "../personal-server/local/server.js";
5
+ import { startLocalServer, type LocalServerHandle, type PublicMarker, type RunningServer } from "../personal-server/local/server.js";
6
+ import { type FrpcResolution } from "../personal-server/local/frpc.js";
7
+ import { signServerRegistration } from "../personal-server/local/registration.js";
6
8
  import { type VanaCredentials } from "./auth.js";
7
9
  export interface ServerStartIo {
8
10
  /** A line for a person; silent in --json mode. */
@@ -25,6 +27,11 @@ export interface ServerStartDeps {
25
27
  ensureRuntime: (node: ResolvedNode, logPath: string) => Promise<string>;
26
28
  choosePort: (requested?: number) => Promise<number | null>;
27
29
  start: typeof startLocalServer;
30
+ resolveFrpc: () => Promise<FrpcResolution>;
31
+ installFrpc: (logPath: string) => Promise<string>;
32
+ signRegistration: typeof signServerRegistration;
33
+ readPublicMarker: (network: VanaNetworkName) => PublicMarker | null;
34
+ writePublicMarker: (network: VanaNetworkName, marker: PublicMarker) => Promise<void>;
28
35
  /** Resolves when the person asks the server to stop (Ctrl+C). */
29
36
  waitForStop: (handle: LocalServerHandle) => Promise<"stopped" | "exited">;
30
37
  }
@@ -38,5 +45,7 @@ export declare function runServerStart(options: {
38
45
  port?: number;
39
46
  noInput?: boolean;
40
47
  yes?: boolean;
48
+ /** Register the server and open its public URL, so apps can reach it. */
49
+ public?: boolean;
41
50
  }, io: ServerStartIo, deps?: ServerStartDeps): Promise<number>;
42
51
  //# sourceMappingURL=server-start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-start.d.ts","sourceRoot":"","sources":["../../src/cli/server-start.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EACL,uBAAuB,EAExB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAGL,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AAKnB,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,8DAA8D;IAC9D,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,4EAA4E;IAC5E,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3E,eAAe,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IAC9C,eAAe,EAAE,CAAC,WAAW,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,OAAO,uBAAuB,CAAC;IACzC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC1D,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,aAAa,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC3D,KAAK,EAAE,OAAO,gBAAgB,CAAC;IAC/B,iEAAiE;IACjE,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;CAC3E;AAED,wBAAgB,sBAAsB,IAAI,eAAe,CAwBxD;AAMD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE;IACP,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,EACD,EAAE,EAAE,aAAa,EACjB,IAAI,GAAE,eAA0C,GAC/C,OAAO,CAAC,MAAM,CAAC,CAsLjB"}
1
+ {"version":3,"file":"server-start.d.ts","sourceRoot":"","sources":["../../src/cli/server-start.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,9 @@ import { canInstallNodeFor, findCompatibleNode, installManagedNode, } from "../p
5
5
  import { isRuntimeInstalled, ensureRuntime, } from "../personal-server/local/runtime.js";
6
6
  import { runOwnerBindingExchange, } from "../personal-server/local/owner-binding.js";
7
7
  import { defaultOwnerSecretStore, ownerSecretKey, } from "../personal-server/local/owner-secret.js";
8
- import { choosePort, findRunningServers, startLocalServer, } from "../personal-server/local/server.js";
8
+ import { choosePort, findRunningServers, nextMessage, readPublicMarker, startLocalServer, writePublicMarker, } from "../personal-server/local/server.js";
9
+ import { installFrpc, resolveFrpc, } from "../personal-server/local/frpc.js";
10
+ import { RegistrationNeedsBrowserError, signServerRegistration, } from "../personal-server/local/registration.js";
9
11
  import { getAccountUrl, isExpired, loadCredentials, openBrowser, saveCredentials, } from "./auth.js";
10
12
  /** The server release needs the same Node range as the published connectors. */
11
13
  const NODE_RANGE = ">=24.15.0 <25";
@@ -23,6 +25,11 @@ export function defaultServerStartDeps() {
23
25
  ensureRuntime: (node, logPath) => ensureRuntime(node, logPath),
24
26
  choosePort,
25
27
  start: startLocalServer,
28
+ resolveFrpc: () => resolveFrpc(),
29
+ installFrpc: (logPath) => installFrpc(logPath),
30
+ signRegistration: signServerRegistration,
31
+ readPublicMarker,
32
+ writePublicMarker,
26
33
  waitForStop: (handle) => new Promise((resolve) => {
27
34
  // Stay subscribed until the process ends: a second Ctrl+C while the
28
35
  // server shuts down must not kill the CLI before it cleans up.
@@ -100,13 +107,30 @@ export async function runServerStart(options, io, deps = defaultServerStartDeps(
100
107
  }
101
108
  deps.secrets.set(secretKey, binding);
102
109
  }
103
- // One-time installs: Node 24 and the pinned server.
110
+ // Public: asked for now, or registered before. A registered server must
111
+ // come back reachable, or apps keep finding a URL that never answers.
112
+ const marker = deps.readPublicMarker(options.network);
113
+ let frpc = null;
114
+ if (options.public || marker) {
115
+ frpc = await deps.resolveFrpc();
116
+ if (frpc.kind === "unavailable") {
117
+ if (options.public) {
118
+ io.say(frpc.reason);
119
+ io.event({ type: "server-tunnel-unavailable", reason: frpc.reason });
120
+ return CliExitCode.NOT_READY;
121
+ }
122
+ io.say(`This server is registered, but ${frpc.reason} It starts local only.`);
123
+ }
124
+ }
125
+ // One-time installs: Node 24, the pinned server, the tunnel client.
104
126
  let node = await deps.findNode(NODE_RANGE);
105
127
  const runtimeReady = deps.runtimeInstalled();
106
- if (!node || !runtimeReady) {
128
+ const frpcNeeded = frpc?.kind === "installable";
129
+ if (!node || !runtimeReady || frpcNeeded) {
107
130
  const needs = [
108
131
  ...(node ? [] : ["Node.js 24, which the server runs on"]),
109
132
  ...(runtimeReady ? [] : ["the Personal Server itself (~175 MB)"]),
133
+ ...(frpcNeeded ? ["the tunnel client, frpc (~15 MB)"] : []),
110
134
  ];
111
135
  if (options.noInput && !options.yes) {
112
136
  io.say(`The first start installs ${needs.join(" and ")}. Run without --no-input, or add --yes.`);
@@ -130,6 +154,11 @@ export async function runServerStart(options, io, deps = defaultServerStartDeps(
130
154
  if (!runtimeReady)
131
155
  io.say("Installing the Personal Server (one time)...");
132
156
  const runtimeDir = await deps.ensureRuntime(node, logPath);
157
+ let frpcPath = frpc?.kind === "ready" ? frpc.path : null;
158
+ if (frpcNeeded) {
159
+ io.say("Installing the tunnel client (one time)...");
160
+ frpcPath = await deps.installFrpc(logPath);
161
+ }
133
162
  const port = await deps.choosePort(options.port);
134
163
  if (!port) {
135
164
  io.say(options.port
@@ -146,6 +175,7 @@ export async function runServerStart(options, io, deps = defaultServerStartDeps(
146
175
  binding,
147
176
  port,
148
177
  logPath,
178
+ frpcPath,
149
179
  });
150
180
  }
151
181
  catch (error) {
@@ -165,14 +195,32 @@ export async function runServerStart(options, io, deps = defaultServerStartDeps(
165
195
  });
166
196
  io.say(`Personal Server running at ${url}`);
167
197
  io.say(`Owner ${binding.signerAddress}, network ${options.network}.`);
168
- io.say("Local only: not registered and not reachable from other devices yet.");
198
+ let registered = false;
199
+ let publicUrl = null;
200
+ if (frpcPath) {
201
+ const outcome = await goPublic(handle, {
202
+ ...options,
203
+ accountUrl,
204
+ accessToken: account.session_token,
205
+ ownerAddress: account.address,
206
+ binding,
207
+ io,
208
+ deps,
209
+ });
210
+ registered = outcome.registered;
211
+ publicUrl = outcome.publicUrl;
212
+ }
213
+ else {
214
+ io.say("Local only: not registered and not reachable from other devices. Add --public to change that.");
215
+ }
169
216
  io.say("Collect into it with `vana connect <source>`. Press Ctrl+C to stop.");
170
217
  io.event({
171
218
  type: "server-ready",
172
219
  url,
173
220
  owner: binding.signerAddress,
174
221
  network: options.network,
175
- registered: false,
222
+ registered,
223
+ publicUrl,
176
224
  logPath,
177
225
  });
178
226
  const reason = await deps.waitForStop(handle);
@@ -186,4 +234,104 @@ export async function runServerStart(options, io, deps = defaultServerStartDeps(
186
234
  io.event({ type: "server-stopped" });
187
235
  return CliExitCode.OK;
188
236
  }
237
+ /**
238
+ * Bring a server with a tunnel client online for apps: register it when asked
239
+ * and not yet registered, then report the public URL once the relay answers.
240
+ * Nothing here stops the server; a failure leaves it running local only.
241
+ */
242
+ async function goPublic(handle, input) {
243
+ const { io, deps } = input;
244
+ let state;
245
+ try {
246
+ // The server checks the gateway and reserves its URL before answering.
247
+ state = await nextMessage(handle, ["public"], 90_000);
248
+ }
249
+ catch (error) {
250
+ io.say(error instanceof Error ? error.message : String(error));
251
+ return { registered: false, publicUrl: null };
252
+ }
253
+ const publicUrl = typeof state.serverUrl === "string" ? state.serverUrl : null;
254
+ const serverAddress = typeof state.serverAddress === "string" ? state.serverAddress : null;
255
+ // Report the tunnel whenever it settles; the command keeps running.
256
+ const unsubscribe = handle.onMessage((message) => {
257
+ if (message.type !== "tunnel")
258
+ return;
259
+ unsubscribe();
260
+ if (message.status === "connected") {
261
+ io.say(`Reachable by apps at ${String(message.url)}`);
262
+ }
263
+ else {
264
+ io.say(`The public URL is not answering yet: ${String(message.warning ?? message.status)}`);
265
+ }
266
+ io.event({
267
+ type: "server-tunnel",
268
+ status: message.status,
269
+ url: message.url ?? null,
270
+ warning: message.warning ?? null,
271
+ });
272
+ });
273
+ if (state.registered === true) {
274
+ io.say(`Registered. Opening ${publicUrl ?? "the public URL"}...`);
275
+ return { registered: true, publicUrl };
276
+ }
277
+ if (!input.public) {
278
+ io.say("This server is not registered, so apps cannot find it. Run with --public to register it.");
279
+ return { registered: false, publicUrl: null };
280
+ }
281
+ if (!publicUrl || !serverAddress) {
282
+ io.say("The server did not reserve a public URL, so it stays local only.");
283
+ return { registered: false, publicUrl: null };
284
+ }
285
+ io.say(`Registering ${publicUrl} as your Personal Server. This is recorded on-chain and cannot be undone.`);
286
+ try {
287
+ handle.send({ type: "prepare-registration" });
288
+ const prepared = await nextMessage(handle, ["registration-request", "command-failed"], 30_000);
289
+ if (prepared.type === "command-failed") {
290
+ throw new Error(String(prepared.message));
291
+ }
292
+ const signed = await deps.signRegistration({
293
+ accountUrl: input.accountUrl,
294
+ accessToken: input.accessToken,
295
+ trustToken: input.binding.trustToken,
296
+ request: prepared.request,
297
+ allowBrowser: !input.noInput,
298
+ }, {
299
+ openBrowser: deps.openBrowser,
300
+ onConfirmationUrl: (url) => io.say(`Confirm the registration in your browser: ${url}`),
301
+ });
302
+ if (signed.signerAddress &&
303
+ signed.signerAddress.toLowerCase() !== input.ownerAddress.toLowerCase()) {
304
+ throw new Error(`The registration came back signed by ${signed.signerAddress}, not ${input.ownerAddress}. Nothing was submitted.`);
305
+ }
306
+ handle.send({ type: "submit-registration", signature: signed.signature });
307
+ const submitted = await nextMessage(handle, ["registration-submitted", "command-failed"], 60_000);
308
+ if (submitted.type === "command-failed") {
309
+ throw new Error(String(submitted.message));
310
+ }
311
+ await deps.writePublicMarker(input.network, {
312
+ serverAddress,
313
+ serverUrl: publicUrl,
314
+ registeredAt: new Date().toISOString(),
315
+ });
316
+ io.say(`Registered. Opening ${publicUrl}...`);
317
+ io.event({
318
+ type: "server-registered",
319
+ serverAddress,
320
+ serverUrl: publicUrl,
321
+ serverId: submitted.serverId ?? null,
322
+ signing: signed.via,
323
+ });
324
+ return { registered: true, publicUrl };
325
+ }
326
+ catch (error) {
327
+ const message = error instanceof Error ? error.message : String(error);
328
+ io.say(`Not registered: ${message} The server keeps running, local only.`);
329
+ io.event({
330
+ type: "server-registration-failed",
331
+ needsBrowser: error instanceof RegistrationNeedsBrowserError,
332
+ message,
333
+ });
334
+ return { registered: false, publicUrl: null };
335
+ }
336
+ }
189
337
  //# sourceMappingURL=server-start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-start.js","sourceRoot":"","sources":["../../src/cli/server-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-start.js","sourceRoot":"","sources":["../../src/cli/server-start.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,11 @@ export interface LocalServerNetwork {
6
6
  gatewayUrl: string;
7
7
  storageApiUrl: string;
8
8
  contracts: Record<string, string>;
9
+ /** The relay frpc dials to give the server its public URL. */
10
+ tunnel: {
11
+ serverAddr: string;
12
+ serverPort: number;
13
+ };
9
14
  }
10
15
  export declare function localServerNetwork(name: VanaNetworkName): LocalServerNetwork;
11
16
  /** The pinned server release, matching runtime-pkg/package.json. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/personal-server/local/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AA+BD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,CAE5E;AAED,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAEhD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAEnE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,6BAA8B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/personal-server/local/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,8DAA8D;IAC9D,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAiCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,kBAAkB,CAE5E;AAED,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAEhD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAEnE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,wFAAwF;AACxF,eAAO,MAAM,kBAAkB,6BAA8B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import path from "node:path";
2
2
  import { getVanaHome } from "../../core/paths.js";
3
- // Same deployment on both chains. Mirrors the `contracts` block of Vana
4
- // Desktop's packages/app-runtime/src/personal-server/environments.json.
3
+ // Same deployment on both chains. Mirrors the `contracts` and tunnel entries
4
+ // of Vana Desktop's packages/app-runtime/src/personal-server/environments.json.
5
5
  const CONTRACTS = {
6
6
  dataPortabilityEscrow: "0x07d7769081adc3a3DBe91f5E4B98E9A5a6B292e3",
7
7
  dataPortabilityGrantees: "0x8325C0A0948483EdA023A1A2Fd895e62C5131234",
@@ -18,6 +18,7 @@ const NETWORKS = {
18
18
  gatewayUrl: "https://dp-rpc.moksha.vana.org",
19
19
  storageApiUrl: "https://storage-dev.vana.org",
20
20
  contracts: CONTRACTS,
21
+ tunnel: { serverAddr: "frpc.server-dev.vana.org", serverPort: 7000 },
21
22
  },
22
23
  mainnet: {
23
24
  name: "mainnet",
@@ -25,6 +26,7 @@ const NETWORKS = {
25
26
  gatewayUrl: "https://dp-rpc.vana.org",
26
27
  storageApiUrl: "https://storage.vana.org",
27
28
  contracts: CONTRACTS,
29
+ tunnel: { serverAddr: "frpc.server.vana.org", serverPort: 7000 },
28
30
  },
29
31
  };
30
32
  export function localServerNetwork(name) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/personal-server/local/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAYlD,wEAAwE;AACxE,wEAAwE;AACxE,MAAM,SAAS,GAA2B;IACxC,qBAAqB,EAAE,4CAA4C;IACnE,uBAAuB,EAAE,4CAA4C;IACrE,0BAA0B,EAAE,4CAA4C;IACxE,qBAAqB,EAAE,4CAA4C;IACnE,mBAAmB,EAAE,4CAA4C;IACjE,YAAY,EAAE,4CAA4C;IAC1D,WAAW,EAAE,4CAA4C;CAC1D,CAAC;AAEF,MAAM,QAAQ,GAAgD;IAC5D,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,gCAAgC;QAC5C,aAAa,EAAE,8BAA8B;QAC7C,SAAS,EAAE,SAAS;KACrB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,yBAAyB;QACrC,aAAa,EAAE,0BAA0B;QACzC,SAAS,EAAE,SAAS;KACrB;CACF,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAEhD,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAwB;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAC1E,CAAC;AAED,wFAAwF;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/personal-server/local/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAclD,6EAA6E;AAC7E,gFAAgF;AAChF,MAAM,SAAS,GAA2B;IACxC,qBAAqB,EAAE,4CAA4C;IACnE,uBAAuB,EAAE,4CAA4C;IACrE,0BAA0B,EAAE,4CAA4C;IACxE,qBAAqB,EAAE,4CAA4C;IACnE,mBAAmB,EAAE,4CAA4C;IACjE,YAAY,EAAE,4CAA4C;IAC1D,WAAW,EAAE,4CAA4C;CAC1D,CAAC;AAEF,MAAM,QAAQ,GAAgD;IAC5D,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,gCAAgC;QAC5C,aAAa,EAAE,8BAA8B;QAC7C,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,EAAE,UAAU,EAAE,0BAA0B,EAAE,UAAU,EAAE,IAAI,EAAE;KACrE;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,yBAAyB;QACrC,aAAa,EAAE,0BAA0B;QACzC,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;KACjE;CACF,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAEhD,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAwB;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;AAC1E,CAAC;AAED,wFAAwF;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * The tunnel client the Personal Server runs to get its public URL. Same
3
+ * version the pinned server would download for itself.
4
+ */
5
+ export declare const FRPC_VERSION = "0.67.0";
6
+ /** The Apple team that signs the CLI and Vana Desktop. */
7
+ export declare const VANA_APPLE_TEAM_ID = "G7QNBSSW44";
8
+ interface FrpcArtifact {
9
+ url: string;
10
+ sha256: string;
11
+ /** The binary's path inside the archive. */
12
+ entry: string;
13
+ }
14
+ /**
15
+ * Pinned downloads per platform. A Mac never gets upstream's build: it is
16
+ * ad-hoc signed, and endpoint security on managed Macs treats an ad-hoc
17
+ * binary run from the home directory as persistence. Macs download the copy
18
+ * the sign-frpc workflow signed and notarized with Vana's Developer ID.
19
+ */
20
+ export declare const FRPC_ARTIFACTS: Record<string, FrpcArtifact>;
21
+ /** Where Vana Desktop ships its signed frpc. */
22
+ export declare const DESKTOP_FRPC_PATHS: string[];
23
+ export type FrpcResolution = {
24
+ kind: "ready";
25
+ path: string;
26
+ source: "env" | "managed" | "desktop";
27
+ } | {
28
+ kind: "installable";
29
+ } | {
30
+ kind: "unavailable";
31
+ reason: string;
32
+ };
33
+ export interface FrpcDeps {
34
+ env: NodeJS.ProcessEnv;
35
+ platform: NodeJS.Platform;
36
+ arch: string;
37
+ managedDir: string;
38
+ desktopPaths: string[];
39
+ /** True when `file` carries a valid signature from `teamId`. */
40
+ signedByTeam: (file: string, teamId: string) => Promise<boolean>;
41
+ }
42
+ export declare function managedFrpcDir(): string;
43
+ export declare function signedByTeam(file: string, teamId: string): Promise<boolean>;
44
+ /**
45
+ * Find a tunnel client this machine may run, without downloading anything.
46
+ * `VANA_FRPC_PATH` wins; then the CLI's own verified install; then, on a
47
+ * Mac, Vana Desktop's copy when it carries Vana's signature, which saves a
48
+ * download.
49
+ */
50
+ export declare function resolveFrpc(overrides?: Partial<FrpcDeps>): Promise<FrpcResolution>;
51
+ /**
52
+ * Download the pinned frpc for this platform, check its sha256, and install
53
+ * it under ~/.vana/cli/personal-server/frpc/<version>.
54
+ */
55
+ export declare function installFrpc(logPath: string, overrides?: Partial<FrpcDeps> & {
56
+ fetchImpl?: typeof fetch;
57
+ }): Promise<string>;
58
+ export {};
59
+ //# sourceMappingURL=frpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frpc.d.ts","sourceRoot":"","sources":["../../../src/personal-server/local/frpc.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,eAAO,MAAM,YAAY,WAAW,CAAC;AAErC,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;CACf;AAoBD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAwBvD,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,kBAAkB,UAM9B,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gEAAgE;IAChE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE;AAMD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CASlB;AAqBD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,SAAS,GAAE,OAAO,CAAC,QAAQ,CAAM,GAChC,OAAO,CAAC,cAAc,CAAC,CA2CzB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GAC/D,OAAO,CAAC,MAAM,CAAC,CAyDjB"}
@@ -0,0 +1,191 @@
1
+ import crypto from "node:crypto";
2
+ import { execFile } from "node:child_process";
3
+ import fs from "node:fs";
4
+ import fsp from "node:fs/promises";
5
+ import os from "node:os";
6
+ import path from "node:path";
7
+ import { promisify } from "node:util";
8
+ import * as tar from "tar";
9
+ import { localServerHome } from "./config.js";
10
+ const execFileAsync = promisify(execFile);
11
+ /**
12
+ * The tunnel client the Personal Server runs to get its public URL. Same
13
+ * version the pinned server would download for itself.
14
+ */
15
+ export const FRPC_VERSION = "0.67.0";
16
+ /** The Apple team that signs the CLI and Vana Desktop. */
17
+ export const VANA_APPLE_TEAM_ID = "G7QNBSSW44";
18
+ function upstream(name, ext, sha256) {
19
+ const base = `frp_${FRPC_VERSION}_${name}`;
20
+ return {
21
+ url: `https://github.com/fatedier/frp/releases/download/v${FRPC_VERSION}/${base}.${ext}`,
22
+ sha256,
23
+ entry: `${base}/${name.startsWith("windows") ? "frpc.exe" : "frpc"}`,
24
+ };
25
+ }
26
+ function signed(name, sha256) {
27
+ const base = `frp_${FRPC_VERSION}_${name}`;
28
+ return {
29
+ url: `https://github.com/vana-com/vana-cli/releases/download/frpc-v${FRPC_VERSION}/${base}.tar.gz`,
30
+ sha256,
31
+ entry: `${base}/frpc`,
32
+ };
33
+ }
34
+ /**
35
+ * Pinned downloads per platform. A Mac never gets upstream's build: it is
36
+ * ad-hoc signed, and endpoint security on managed Macs treats an ad-hoc
37
+ * binary run from the home directory as persistence. Macs download the copy
38
+ * the sign-frpc workflow signed and notarized with Vana's Developer ID.
39
+ */
40
+ export const FRPC_ARTIFACTS = {
41
+ "darwin-arm64": signed("darwin_arm64", "e0a45a02b8be7d2e0e3221b1e1deb242b490a1e6a685beeff04bcd96cb42a9f1"),
42
+ "darwin-x64": signed("darwin_amd64", "106f023c440b395cf7d21283536a87156c69f26ebf40fd0084f11fc01de8f6a4"),
43
+ "linux-x64": upstream("linux_amd64", "tar.gz", "f8629ca7ca56b8e7e7a9903779b8d5c47c56ad1b75b99b2d7138477acc4c7105"),
44
+ "linux-arm64": upstream("linux_arm64", "tar.gz", "0e9683226acdcbbb2ac8d073f35ba8be2a8b1e7584684d2073f39d337ebd6de7"),
45
+ "win32-x64": upstream("windows_amd64", "zip", "8baf23e3fbd486f6ba0913501372c5ff0053efa88a8b8d391f3605ced43d2af5"),
46
+ };
47
+ /** Where Vana Desktop ships its signed frpc. */
48
+ export const DESKTOP_FRPC_PATHS = [
49
+ "/Applications/Vana.app/Contents/Resources/personal-server/dist/frpc",
50
+ path.join(os.homedir(), "Applications/Vana.app/Contents/Resources/personal-server/dist/frpc"),
51
+ ];
52
+ function binaryName(platform) {
53
+ return platform === "win32" ? "frpc.exe" : "frpc";
54
+ }
55
+ export function managedFrpcDir() {
56
+ return path.join(localServerHome(), "frpc", FRPC_VERSION);
57
+ }
58
+ export async function signedByTeam(file, teamId) {
59
+ try {
60
+ await execFileAsync("codesign", ["--verify", "--strict", file]);
61
+ // `codesign -dv` reports on stderr.
62
+ const { stderr } = await execFileAsync("codesign", ["-dv", file]);
63
+ return new RegExp(`^TeamIdentifier=${teamId}$`, "m").test(stderr);
64
+ }
65
+ catch {
66
+ return false;
67
+ }
68
+ }
69
+ function defaultDeps() {
70
+ return {
71
+ env: process.env,
72
+ platform: process.platform,
73
+ arch: process.arch,
74
+ managedDir: managedFrpcDir(),
75
+ desktopPaths: DESKTOP_FRPC_PATHS,
76
+ signedByTeam,
77
+ };
78
+ }
79
+ function isFile(file) {
80
+ try {
81
+ return fs.statSync(file).isFile();
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ }
87
+ /**
88
+ * Find a tunnel client this machine may run, without downloading anything.
89
+ * `VANA_FRPC_PATH` wins; then the CLI's own verified install; then, on a
90
+ * Mac, Vana Desktop's copy when it carries Vana's signature, which saves a
91
+ * download.
92
+ */
93
+ export async function resolveFrpc(overrides = {}) {
94
+ const deps = { ...defaultDeps(), ...overrides };
95
+ const fromEnv = deps.env.VANA_FRPC_PATH;
96
+ if (fromEnv) {
97
+ return isFile(fromEnv)
98
+ ? { kind: "ready", path: fromEnv, source: "env" }
99
+ : {
100
+ kind: "unavailable",
101
+ reason: `VANA_FRPC_PATH (${fromEnv}) is not a file.`,
102
+ };
103
+ }
104
+ const artifact = FRPC_ARTIFACTS[`${deps.platform}-${deps.arch}`];
105
+ const managed = path.join(deps.managedDir, binaryName(deps.platform));
106
+ if (artifact && isFile(managed)) {
107
+ try {
108
+ const marker = fs
109
+ .readFileSync(path.join(deps.managedDir, ".installed"), "utf8")
110
+ .trim();
111
+ if (marker === artifact.sha256) {
112
+ return { kind: "ready", path: managed, source: "managed" };
113
+ }
114
+ }
115
+ catch {
116
+ // No marker: reinstall.
117
+ }
118
+ }
119
+ if (deps.platform === "darwin") {
120
+ for (const candidate of deps.desktopPaths) {
121
+ if (isFile(candidate) &&
122
+ (await deps.signedByTeam(candidate, VANA_APPLE_TEAM_ID))) {
123
+ return { kind: "ready", path: candidate, source: "desktop" };
124
+ }
125
+ }
126
+ }
127
+ if (artifact)
128
+ return { kind: "installable" };
129
+ return {
130
+ kind: "unavailable",
131
+ reason: `No tunnel client is pinned for ${deps.platform}-${deps.arch}. Set VANA_FRPC_PATH.`,
132
+ };
133
+ }
134
+ /**
135
+ * Download the pinned frpc for this platform, check its sha256, and install
136
+ * it under ~/.vana/cli/personal-server/frpc/<version>.
137
+ */
138
+ export async function installFrpc(logPath, overrides = {}) {
139
+ const deps = { ...defaultDeps(), ...overrides };
140
+ const key = `${deps.platform}-${deps.arch}`;
141
+ const artifact = FRPC_ARTIFACTS[key];
142
+ if (!artifact) {
143
+ throw new Error(`No tunnel client is pinned for ${key}.`);
144
+ }
145
+ await fsp.appendFile(logPath, `Downloading ${artifact.url}\n`, "utf8");
146
+ const response = await (overrides.fetchImpl ?? fetch)(artifact.url, {
147
+ headers: { "User-Agent": "vana-cli" },
148
+ });
149
+ if (!response.ok) {
150
+ throw new Error(`Could not download the tunnel client: ${response.status}`);
151
+ }
152
+ const archive = Buffer.from(await response.arrayBuffer());
153
+ const actual = crypto.createHash("sha256").update(archive).digest("hex");
154
+ if (actual !== artifact.sha256) {
155
+ throw new Error(`The tunnel client download failed its checksum (expected ${artifact.sha256}, got ${actual}).`);
156
+ }
157
+ const parent = path.dirname(deps.managedDir);
158
+ await fsp.mkdir(parent, { recursive: true });
159
+ const staging = await fsp.mkdtemp(path.join(parent, ".staging-"));
160
+ try {
161
+ const archivePath = path.join(staging, path.basename(artifact.url));
162
+ await fsp.writeFile(archivePath, archive);
163
+ if (artifact.url.endsWith(".zip")) {
164
+ // Windows 10+ ships a bsdtar that reads zip.
165
+ await execFileAsync("tar", ["-xf", archivePath, "-C", staging]);
166
+ }
167
+ else {
168
+ await tar.x({ file: archivePath, cwd: staging });
169
+ }
170
+ const installed = path.join(staging, "out");
171
+ await fsp.mkdir(installed);
172
+ const target = path.join(installed, binaryName(deps.platform));
173
+ await fsp.rename(path.join(staging, artifact.entry), target);
174
+ if (deps.platform !== "win32")
175
+ await fsp.chmod(target, 0o755);
176
+ // The hash already pins it; the signature check is what endpoint
177
+ // security will judge, so refuse anything it would flag.
178
+ if (deps.platform === "darwin" &&
179
+ !(await deps.signedByTeam(target, VANA_APPLE_TEAM_ID))) {
180
+ throw new Error("The tunnel client is not signed by Vana.");
181
+ }
182
+ await fsp.writeFile(path.join(installed, ".installed"), `${artifact.sha256}\n`);
183
+ await fsp.rm(deps.managedDir, { recursive: true, force: true });
184
+ await fsp.rename(installed, deps.managedDir);
185
+ return path.join(deps.managedDir, binaryName(deps.platform));
186
+ }
187
+ finally {
188
+ await fsp.rm(staging, { recursive: true, force: true });
189
+ }
190
+ }
191
+ //# sourceMappingURL=frpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frpc.js","sourceRoot":"","sources":["../../../src/personal-server/local/frpc.ts"],"names":[],"mappings":"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"}