@hydra-acp/archiver 0.1.6 → 0.1.8

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":"google-drive.js","sourceRoot":"","sources":["../../src/backend/google-drive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"google-drive.js","sourceRoot":"","sources":["../../src/backend/google-drive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { DeleteObjectCommand, GetObjectCommand, HeadBucketCommand, ListObjectsV2Command, PutObjectCommand, S3Client, } from "@aws-sdk/client-s3";
2
+ import { logger } from "../util/log.js";
3
+ const log = logger("backend.s3");
4
+ async function streamToBuffer(stream) {
5
+ const chunks = [];
6
+ for await (const chunk of stream) {
7
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
8
+ }
9
+ return Buffer.concat(chunks);
10
+ }
11
+ export class S3Backend {
12
+ opts;
13
+ client;
14
+ prefix;
15
+ constructor(opts) {
16
+ this.opts = opts;
17
+ this.prefix = opts.prefix;
18
+ }
19
+ async init() {
20
+ this.client = new S3Client({
21
+ ...(this.opts.region !== undefined ? { region: this.opts.region } : {}),
22
+ ...(this.opts.endpoint !== undefined
23
+ ? { endpoint: this.opts.endpoint, forcePathStyle: true }
24
+ : {}),
25
+ });
26
+ await this.client.send(new HeadBucketCommand({ Bucket: this.opts.bucket }));
27
+ log.info(`s3 backend ready: bucket=${this.opts.bucket}${this.prefix !== "" ? ` prefix="${this.prefix}"` : ""}`);
28
+ }
29
+ async list() {
30
+ const client = this.requireClient();
31
+ const entries = [];
32
+ let continuationToken;
33
+ do {
34
+ const res = await client.send(new ListObjectsV2Command({
35
+ Bucket: this.opts.bucket,
36
+ ...(this.prefix !== "" ? { Prefix: this.prefix } : {}),
37
+ ...(continuationToken !== undefined
38
+ ? { ContinuationToken: continuationToken }
39
+ : {}),
40
+ }));
41
+ for (const obj of res.Contents ?? []) {
42
+ if (!obj.Key)
43
+ continue;
44
+ entries.push({
45
+ key: this.prefix !== "" ? obj.Key.slice(this.prefix.length) : obj.Key,
46
+ size: obj.Size ?? 0,
47
+ modifiedAt: (obj.LastModified ?? new Date(0)).toISOString(),
48
+ });
49
+ }
50
+ continuationToken = res.NextContinuationToken;
51
+ } while (continuationToken !== undefined);
52
+ return entries;
53
+ }
54
+ async get(key) {
55
+ const client = this.requireClient();
56
+ const res = await client.send(new GetObjectCommand({ Bucket: this.opts.bucket, Key: this.prefix + key }));
57
+ if (!res.Body)
58
+ throw new Error(`s3: empty body for key ${key}`);
59
+ return streamToBuffer(res.Body);
60
+ }
61
+ async put(key, data) {
62
+ const client = this.requireClient();
63
+ await client.send(new PutObjectCommand({
64
+ Bucket: this.opts.bucket,
65
+ Key: this.prefix + key,
66
+ Body: data,
67
+ ContentType: "application/octet-stream",
68
+ }));
69
+ }
70
+ async delete(key) {
71
+ const client = this.requireClient();
72
+ await client.send(new DeleteObjectCommand({ Bucket: this.opts.bucket, Key: this.prefix + key }));
73
+ }
74
+ requireClient() {
75
+ if (!this.client)
76
+ throw new Error("S3Backend used before init()");
77
+ return this.client;
78
+ }
79
+ }
80
+ //# sourceMappingURL=s3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../../src/backend/s3.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,37 +1,84 @@
1
- import { homedir } from "node:os";
1
+ import { readFile, readFileSync } from "node:fs";
2
+ import { homedir, hostname } from "node:os";
2
3
  import { resolve } from "node:path";
3
- function deriveWsUrl(httpUrl) {
4
- if (httpUrl.startsWith("https://")) {
5
- return "wss://" + httpUrl.slice("https://".length).replace(/\/$/, "") + "/acp";
4
+ import { promisify } from "node:util";
5
+ const readFileAsync = promisify(readFile);
6
+ // ── Conf file ────────────────────────────────────────────────────────────────
7
+ function confPath(hydraHome) {
8
+ return process.env.HYDRA_ACP_ARCHIVER_CONF ?? resolve(hydraHome, "archiver.conf");
9
+ }
10
+ function expandTilde(val) {
11
+ if (val === "~" || val.startsWith("~/"))
12
+ return homedir() + val.slice(1);
13
+ return val;
14
+ }
15
+ function parseConfFile(text) {
16
+ const out = new Map();
17
+ for (const rawLine of text.split(/\r?\n/)) {
18
+ const line = rawLine.trim();
19
+ if (!line || line.startsWith("#"))
20
+ continue;
21
+ const eq = line.indexOf("=");
22
+ if (eq === -1)
23
+ continue;
24
+ const key = line.slice(0, eq).trim();
25
+ let val = line.slice(eq + 1).trim();
26
+ if ((val.startsWith('"') && val.endsWith('"')) ||
27
+ (val.startsWith("'") && val.endsWith("'")))
28
+ val = val.slice(1, -1);
29
+ out.set(key, expandTilde(val));
6
30
  }
7
- if (httpUrl.startsWith("http://")) {
8
- return "ws://" + httpUrl.slice("http://".length).replace(/\/$/, "") + "/acp";
31
+ return out;
32
+ }
33
+ // Returns an empty map when the file does not exist — conf file is optional.
34
+ function readConf(path) {
35
+ try {
36
+ return parseConfFile(readFileSync(path, "utf8"));
9
37
  }
10
- throw new Error(`hydraDaemonUrl must start with http:// or https://: ${httpUrl}`);
38
+ catch (err) {
39
+ const e = err;
40
+ if (e.code === "ENOENT")
41
+ return new Map();
42
+ throw err;
43
+ }
44
+ }
45
+ // ── Value helpers ─────────────────────────────────────────────────────────────
46
+ // Priority for every config value: env var > conf file > default.
47
+ const TRUTHY = new Set(["1", "true", "yes", "on", "t"]);
48
+ function str(envName, confKey, conf, fallback) {
49
+ return process.env[envName] ?? conf.get(confKey) ?? fallback;
11
50
  }
12
- function intEnv(name, fallback) {
13
- const v = process.env[name];
14
- if (!v) {
51
+ function optStr(envName, confKey, conf) {
52
+ return process.env[envName] ?? conf.get(confKey);
53
+ }
54
+ function intVal(envName, confKey, conf, fallback) {
55
+ const raw = process.env[envName] ?? conf.get(confKey);
56
+ if (!raw)
15
57
  return fallback;
16
- }
17
- const n = Number.parseInt(v, 10);
58
+ const n = Number.parseInt(raw, 10);
18
59
  return Number.isFinite(n) ? n : fallback;
19
60
  }
20
- const TRUTHY = new Set(["1", "true", "yes", "on", "t"]);
21
- function boolEnv(name, fallback) {
22
- const v = process.env[name];
23
- if (v === undefined) {
61
+ function boolVal(envName, confKey, conf, fallback) {
62
+ const raw = process.env[envName] ?? conf.get(confKey);
63
+ if (raw === undefined)
24
64
  return fallback;
25
- }
26
- return TRUTHY.has(v.toLowerCase());
65
+ return TRUTHY.has(raw.toLowerCase());
27
66
  }
28
- function backendEnv() {
29
- const raw = (process.env.HYDRA_ACP_ARCHIVER_BACKEND ?? "google-drive").toLowerCase();
30
- if (raw === "google-drive" || raw === "fs") {
31
- return raw;
32
- }
33
- throw new Error(`HYDRA_ACP_ARCHIVER_BACKEND must be one of: google-drive, fs (got "${raw}")`);
67
+ // ── Derived helpers ───────────────────────────────────────────────────────────
68
+ function deriveWsUrl(httpUrl) {
69
+ if (httpUrl.startsWith("https://"))
70
+ return "wss://" + httpUrl.slice("https://".length).replace(/\/$/, "") + "/acp";
71
+ if (httpUrl.startsWith("http://"))
72
+ return "ws://" + httpUrl.slice("http://".length).replace(/\/$/, "") + "/acp";
73
+ throw new Error(`hydraDaemonUrl must start with http:// or https://: ${httpUrl}`);
34
74
  }
75
+ function parseBackend(raw) {
76
+ const v = raw.toLowerCase();
77
+ if (v === "google-drive" || v === "fs" || v === "s3")
78
+ return v;
79
+ throw new Error(`BACKEND must be one of: google-drive, fs, s3 (got "${raw}")`);
80
+ }
81
+ // ── Public API ────────────────────────────────────────────────────────────────
35
82
  export function loadConfig() {
36
83
  const hydraDaemonUrl = process.env.HYDRA_ACP_DAEMON_URL ?? "http://127.0.0.1:8765";
37
84
  const hydraToken = process.env.HYDRA_ACP_TOKEN ?? "";
@@ -40,38 +87,65 @@ export function loadConfig() {
40
87
  }
41
88
  const hydraWsUrl = process.env.HYDRA_ACP_WS_URL ?? deriveWsUrl(hydraDaemonUrl);
42
89
  const hydraHome = process.env.HYDRA_ACP_HOME ?? resolve(homedir(), ".hydra-acp");
43
- const ruleConfigPath = process.env.HYDRA_ACP_ARCHIVER_CONFIG ??
44
- resolve(hydraHome, "archiver.config.js");
45
- const credentialsPath = process.env.HYDRA_ACP_ARCHIVER_GOOGLE_CREDENTIALS ??
46
- resolve(hydraHome, "archiver-google-credentials.json");
90
+ const conf = readConf(confPath(hydraHome));
91
+ const ruleConfigPath = str("HYDRA_ACP_ARCHIVER_CONFIG", "CONFIG", conf, resolve(hydraHome, "archiver.config.js"));
92
+ const credentialsPath = str("HYDRA_ACP_ARCHIVER_GOOGLE_CREDENTIALS", "GOOGLE_CREDENTIALS", conf, resolve(hydraHome, "archiver-google-credentials.json"));
47
93
  const tokenPath = resolve(hydraHome, "archiver-google-token.json");
48
94
  const statePath = resolve(hydraHome, "archiver-state.json");
49
- const fsDir = process.env.HYDRA_ACP_ARCHIVER_FS_DIR ?? resolve(hydraHome, "archive");
95
+ const backend = parseBackend(str("HYDRA_ACP_ARCHIVER_BACKEND", "BACKEND", conf, "google-drive"));
96
+ const s3Bucket = str("HYDRA_ACP_ARCHIVER_S3_BUCKET", "S3_BUCKET", conf, "");
97
+ if (backend === "s3" && !s3Bucket) {
98
+ throw new Error("S3_BUCKET is required when BACKEND is s3. Set it in archiver.conf or via HYDRA_ACP_ARCHIVER_S3_BUCKET.");
99
+ }
50
100
  return {
51
101
  hydraDaemonUrl,
52
102
  hydraWsUrl,
53
103
  hydraToken,
54
104
  hydraHome,
55
- hydraPollIntervalMs: intEnv("HYDRA_ACP_ARCHIVER_POLL_MS", 2000),
105
+ hydraPollIntervalMs: intVal("HYDRA_ACP_ARCHIVER_POLL_MS", "POLL_MS", conf, 2000),
56
106
  ruleConfigPath,
57
- uploadDebounceMs: intEnv("HYDRA_ACP_ARCHIVER_DEBOUNCE_MS", 5000),
58
- pullIntervalMs: intEnv("HYDRA_ACP_ARCHIVER_PULL_MS", 60000),
59
- backend: backendEnv(),
60
- driveFolderName: process.env.HYDRA_ACP_ARCHIVER_DRIVE_FOLDER ?? "hydra-acp-archive",
61
- fsDir,
107
+ uploadDebounceMs: intVal("HYDRA_ACP_ARCHIVER_DEBOUNCE_MS", "DEBOUNCE_MS", conf, 5000),
108
+ pullIntervalMs: intVal("HYDRA_ACP_ARCHIVER_PULL_MS", "PULL_MS", conf, 60000),
109
+ backend,
110
+ driveFolderName: str("HYDRA_ACP_ARCHIVER_DRIVE_FOLDER", "DRIVE_FOLDER", conf, "hydra-acp-archive"),
111
+ fsDir: str("HYDRA_ACP_ARCHIVER_FS_DIR", "FS_DIR", conf, resolve(hydraHome, "archive")),
112
+ s3Bucket,
113
+ s3Region: optStr("HYDRA_ACP_ARCHIVER_S3_REGION", "S3_REGION", conf),
114
+ s3Endpoint: optStr("HYDRA_ACP_ARCHIVER_S3_ENDPOINT", "S3_ENDPOINT", conf),
115
+ prefix: str("HYDRA_ACP_ARCHIVER_PREFIX", "PREFIX", conf, ""),
116
+ hostId: (optStr("HYDRA_ACP_ARCHIVER_HOST_ID", "HOST_ID", conf) ?? hostname())
117
+ .toLowerCase()
118
+ .replace(/[^a-z0-9-]/g, "-"),
119
+ encryptionKeyPath: optStr("HYDRA_ACP_ARCHIVER_KEY_PATH", "KEY_PATH", conf),
62
120
  credentialsPath,
63
121
  tokenPath,
64
122
  statePath,
65
- debug: boolEnv("DEBUG", false),
123
+ debug: boolVal("DEBUG", "DEBUG", conf, false),
66
124
  };
67
125
  }
68
- // loadLoginConfig is for the standalone `hydra-acp-archiver-login` bin —
69
- // it doesn't need a daemon token, just enough config to know where to
70
- // read credentials from and write the OAuth tokens to.
126
+ export async function loadEncryptionKey(path) {
127
+ if (path === undefined)
128
+ return undefined;
129
+ let hex;
130
+ try {
131
+ hex = (await readFileAsync(path, "utf8")).trim();
132
+ }
133
+ catch (err) {
134
+ const e = err;
135
+ if (e.code === "ENOENT") {
136
+ throw new Error(`Encryption key file not found at ${path}. Run \`hydra-acp-archiver keygen\` to generate one.`);
137
+ }
138
+ throw err;
139
+ }
140
+ if (!/^[0-9a-f]{64}$/i.test(hex)) {
141
+ throw new Error(`Encryption key at ${path} is not a valid 64-character hex string.`);
142
+ }
143
+ return Buffer.from(hex, "hex");
144
+ }
71
145
  export function loadLoginConfig() {
72
146
  const hydraHome = process.env.HYDRA_ACP_HOME ?? resolve(homedir(), ".hydra-acp");
73
- const credentialsPath = process.env.HYDRA_ACP_ARCHIVER_GOOGLE_CREDENTIALS ??
74
- resolve(hydraHome, "archiver-google-credentials.json");
147
+ const conf = readConf(confPath(hydraHome));
148
+ const credentialsPath = str("HYDRA_ACP_ARCHIVER_GOOGLE_CREDENTIALS", "GOOGLE_CREDENTIALS", conf, resolve(hydraHome, "archiver-google-credentials.json"));
75
149
  return {
76
150
  hydraHome,
77
151
  credentialsPath,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/envelope.js CHANGED
@@ -110,11 +110,14 @@ export function keyFor(lineageId) {
110
110
  }
111
111
  const KEY_SUFFIX = ".hydra.archive";
112
112
  // Reverse of keyFor — returns undefined for unrelated keys so callers
113
- // can safely iterate a mixed backend listing.
113
+ // can safely iterate a mixed backend listing. Handles an optional leading
114
+ // host segment (e.g. "alice-macbook/uuid.hydra.archive" → "uuid").
114
115
  export function lineageFromKey(key) {
115
116
  if (!key.endsWith(KEY_SUFFIX)) {
116
117
  return undefined;
117
118
  }
118
- return key.slice(0, -KEY_SUFFIX.length);
119
+ const withoutSuffix = key.slice(0, -KEY_SUFFIX.length);
120
+ const slash = withoutSuffix.lastIndexOf("/");
121
+ return slash >= 0 ? withoutSuffix.slice(slash + 1) : withoutSuffix;
119
122
  }
120
123
  //# sourceMappingURL=envelope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../src/envelope.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,15 +1,19 @@
1
1
  #!/usr/bin/env node
2
+ import { createHash } from "node:crypto";
2
3
  import { readFileSync } from "node:fs";
4
+ import { userInfo } from "node:os";
3
5
  import { dirname, resolve } from "node:path";
4
6
  import { fileURLToPath } from "node:url";
5
7
  import { ArchiveLoop } from "./archive-loop.js";
8
+ import { EncryptedBackend } from "./backend/encrypted.js";
6
9
  import { makeBackend } from "./backend/factory.js";
7
10
  import { ArchiverBridge } from "./bridge.js";
8
11
  import { runColdSweep } from "./cold-sweep.js";
9
- import { loadConfig, loadLoginConfig } from "./config.js";
12
+ import { loadConfig, loadEncryptionKey, loadLoginConfig } from "./config.js";
10
13
  import { DaemonClient } from "./daemon.js";
11
14
  import { HydraDiscovery } from "./discovery.js";
12
15
  import { lineageFromKey } from "./envelope.js";
16
+ import { runKeygen } from "./keygen.js";
13
17
  import { runGoogleLogin } from "./oauth/google.js";
14
18
  import { PullLoop } from "./pull-loop.js";
15
19
  import { DEFAULT_RULE, loadRule } from "./rule.js";
@@ -19,10 +23,12 @@ const log = logger("main");
19
23
  const USAGE = `usage: hydra-acp-archiver [<command>]
20
24
 
21
25
  Commands:
22
- (no args) Run as a daemon-managed extension (the daemon spawns it
23
- this way automatically when registered).
24
- login Interactive Google OAuth flow — opens a browser and writes
25
- the refresh token to ~/.hydra-acp/archiver-google-token.json.
26
+ (no args) Run as a daemon-managed extension (the daemon spawns it
27
+ this way automatically when registered).
28
+ gdrive login Interactive Google OAuth flow — opens a browser and writes
29
+ the refresh token to ~/.hydra-acp/archiver-google-token.json.
30
+ keygen Generate a symmetric encryption key and write it to
31
+ HYDRA_ACP_ARCHIVER_KEY_PATH (or ~/.hydra-acp/archiver-key).
26
32
 
27
33
  Flags:
28
34
  --version, -v Print version and exit.
@@ -54,8 +60,27 @@ async function runExtension() {
54
60
  setDebug(config.debug);
55
61
  const state = new SyncState(config.statePath);
56
62
  await state.load();
57
- const backend = makeBackend(config);
58
- await backend.init();
63
+ const encryptionKey = await loadEncryptionKey(config.encryptionKeyPath);
64
+ if (config.prefix === "") {
65
+ if (encryptionKey !== undefined) {
66
+ config.prefix = createHash("sha256").update(encryptionKey).digest().subarray(0, 8).toString("hex") + "/";
67
+ log.info(`auto-prefix (key fingerprint): ${config.prefix}`);
68
+ }
69
+ else {
70
+ config.prefix = userInfo().username.toLowerCase().replace(/[^a-z0-9-]/g, "-") + "/";
71
+ log.info(`auto-prefix (username): ${config.prefix}`);
72
+ }
73
+ }
74
+ function buildBackend(prefix) {
75
+ const raw = makeBackend({ ...config, prefix });
76
+ return encryptionKey !== undefined ? new EncryptedBackend(raw, encryptionKey) : raw;
77
+ }
78
+ // syncBackend sees the full user namespace (all hosts) — used for listing
79
+ // and pulling. uploadBackend scopes writes to this host's subdirectory.
80
+ const syncBackend = buildBackend(config.prefix);
81
+ const uploadBackend = buildBackend(config.prefix + config.hostId + "/");
82
+ await syncBackend.init();
83
+ await uploadBackend.init();
59
84
  // Reconcile state.json with what's actually on the backend. Without
60
85
  // this a wiped backend (manual nuke, retention delete, expired share)
61
86
  // leaves us believing every lineage is "already uploaded" — the hash
@@ -63,7 +88,7 @@ async function runExtension() {
63
88
  // why nothing flooded in. One list call at startup makes state a
64
89
  // hint-cache instead of a source of truth.
65
90
  try {
66
- const entries = await backend.list();
91
+ const entries = await syncBackend.list();
67
92
  const presentLineages = new Set();
68
93
  for (const e of entries) {
69
94
  const id = lineageFromKey(e.key);
@@ -85,16 +110,18 @@ async function runExtension() {
85
110
  currentRule = await loadRule(config.ruleConfigPath);
86
111
  const archive = new ArchiveLoop({
87
112
  daemon,
88
- backend,
113
+ backend: uploadBackend,
89
114
  state,
90
115
  getRule: () => currentRule,
91
116
  debounceMs: config.uploadDebounceMs,
117
+ host: { host: config.hostId, user: userInfo().username },
92
118
  });
93
119
  const pull = new PullLoop({
94
120
  daemon,
95
- backend,
121
+ backend: syncBackend,
96
122
  state,
97
123
  intervalMs: config.pullIntervalMs,
124
+ hostId: config.hostId,
98
125
  });
99
126
  pull.start();
100
127
  // Backfill: archive every cold session the daemon knows about.
@@ -167,7 +194,7 @@ async function runExtension() {
167
194
  };
168
195
  process.on("SIGINT", () => shutdown("SIGINT"));
169
196
  process.on("SIGTERM", () => shutdown("SIGTERM"));
170
- log.info(`hydra-acp-archiver up; daemon=${config.hydraDaemonUrl} backend=${config.backend} rule=${config.ruleConfigPath}`);
197
+ log.info(`hydra-acp-archiver up; daemon=${config.hydraDaemonUrl} backend=${config.backend} host=${config.hostId} rule=${config.ruleConfigPath}`);
171
198
  }
172
199
  async function main() {
173
200
  const cmd = process.argv[2];
@@ -179,8 +206,24 @@ async function main() {
179
206
  await runExtension();
180
207
  return;
181
208
  }
209
+ if (cmd === "gdrive") {
210
+ const sub = process.argv[3];
211
+ if (sub === "login") {
212
+ await runLogin();
213
+ return;
214
+ }
215
+ const subcmds = "login";
216
+ process.stderr.write(sub !== undefined
217
+ ? `hydra-acp-archiver gdrive: unknown subcommand "${sub}"\n\nAvailable: ${subcmds}\n`
218
+ : `hydra-acp-archiver gdrive: missing subcommand\n\nAvailable: ${subcmds}\n`);
219
+ process.exit(2);
220
+ }
182
221
  if (cmd === "login") {
183
- await runLogin();
222
+ process.stderr.write(`hydra-acp-archiver: "login" is not a command; did you mean "gdrive login"?\n`);
223
+ process.exit(2);
224
+ }
225
+ if (cmd === "keygen") {
226
+ await runKeygen();
184
227
  return;
185
228
  }
186
229
  if (cmd === "-h" || cmd === "--help" || cmd === "help") {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/keygen.js ADDED
@@ -0,0 +1,26 @@
1
+ import { chmod, mkdir, writeFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { dirname, resolve } from "node:path";
4
+ import { createHash, randomBytes } from "node:crypto";
5
+ export async function runKeygen() {
6
+ const keyPath = process.env.HYDRA_ACP_ARCHIVER_KEY_PATH ??
7
+ resolve(homedir(), ".hydra-acp", "archiver-key");
8
+ const key = randomBytes(32);
9
+ const hex = key.toString("hex");
10
+ const fingerprint = createHash("sha256")
11
+ .update(key)
12
+ .digest()
13
+ .subarray(0, 8)
14
+ .toString("hex");
15
+ await mkdir(dirname(keyPath), { recursive: true });
16
+ await writeFile(keyPath, hex + "\n", { mode: 0o600 });
17
+ await chmod(keyPath, 0o600);
18
+ process.stdout.write(`key written to ${keyPath}\n`);
19
+ process.stdout.write(`key fingerprint: ${fingerprint}\n`);
20
+ process.stdout.write(`\n`);
21
+ process.stdout.write(`Copy ${keyPath} to every machine that should share this archive.\n`);
22
+ if (!process.env.HYDRA_ACP_ARCHIVER_KEY_PATH) {
23
+ process.stdout.write(`Then add to your extension env config:\n "HYDRA_ACP_ARCHIVER_KEY_PATH": "${keyPath}"\n`);
24
+ }
25
+ }
26
+ //# sourceMappingURL=keygen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keygen.js","sourceRoot":"","sources":["../src/keygen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,2BAA2B;QACvC,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IAEnD,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;SACrC,MAAM,CAAC,GAAG,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;SACd,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEnB,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,IAAI,CAAC,CAAC;IACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,WAAW,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,OAAO,qDAAqD,CAAC,CAAC;IAC3F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6EAA6E,OAAO,KAAK,CAC1F,CAAC;IACJ,CAAC;AACH,CAAC"}
package/dist/pull-loop.js CHANGED
@@ -45,11 +45,15 @@ export class PullLoop {
45
45
  log.warn(`session list failed; skipping tick: ${err.message}`);
46
46
  return;
47
47
  }
48
+ const ownPrefix = this.opts.hostId + "/";
48
49
  const entries = await this.opts.backend.list();
49
50
  for (const entry of entries) {
50
51
  if (this.stopped) {
51
52
  return;
52
53
  }
54
+ if (entry.key.startsWith(ownPrefix)) {
55
+ continue;
56
+ }
53
57
  await this.processEntry(entry.key, localSessionIds).catch((err) => {
54
58
  log.warn(`processing ${entry.key} failed: ${err.message}`);
55
59
  });