vana-cli 0.24.5 → 0.26.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 (103) hide show
  1. package/README.md +1 -0
  2. package/dist/cli/auth.d.ts +2 -0
  3. package/dist/cli/auth.d.ts.map +1 -1
  4. package/dist/cli/auth.js +2 -1
  5. package/dist/cli/auth.js.map +1 -1
  6. package/dist/cli/index.d.ts +2 -0
  7. package/dist/cli/index.d.ts.map +1 -1
  8. package/dist/cli/index.js +128 -13
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/server-start.d.ts +42 -0
  11. package/dist/cli/server-start.d.ts.map +1 -0
  12. package/dist/cli/server-start.js +189 -0
  13. package/dist/cli/server-start.js.map +1 -0
  14. package/dist/connectors/registry.d.ts +2 -0
  15. package/dist/connectors/registry.d.ts.map +1 -1
  16. package/dist/connectors/registry.js +18 -2
  17. package/dist/connectors/registry.js.map +1 -1
  18. package/dist/core/cli-types.d.ts +44 -0
  19. package/dist/core/cli-types.d.ts.map +1 -1
  20. package/dist/core/cli-types.js +14 -0
  21. package/dist/core/cli-types.js.map +1 -1
  22. package/dist/core/state-store.d.ts +6 -0
  23. package/dist/core/state-store.d.ts.map +1 -1
  24. package/dist/core/state-store.js.map +1 -1
  25. package/dist/pdpp/host.d.ts +66 -0
  26. package/dist/pdpp/host.d.ts.map +1 -0
  27. package/dist/pdpp/host.js +283 -0
  28. package/dist/pdpp/host.js.map +1 -0
  29. package/dist/pdpp/installer.d.ts +17 -0
  30. package/dist/pdpp/installer.d.ts.map +1 -0
  31. package/dist/pdpp/installer.js +117 -0
  32. package/dist/pdpp/installer.js.map +1 -0
  33. package/dist/pdpp/local.d.ts +14 -0
  34. package/dist/pdpp/local.d.ts.map +1 -0
  35. package/dist/pdpp/local.js +76 -0
  36. package/dist/pdpp/local.js.map +1 -0
  37. package/dist/pdpp/pins.d.ts +23 -0
  38. package/dist/pdpp/pins.d.ts.map +1 -0
  39. package/dist/pdpp/pins.js +18 -0
  40. package/dist/pdpp/pins.js.map +1 -0
  41. package/dist/pdpp/profile.d.ts +49 -0
  42. package/dist/pdpp/profile.d.ts.map +1 -0
  43. package/dist/pdpp/profile.js +17 -0
  44. package/dist/pdpp/profile.js.map +1 -0
  45. package/dist/pdpp/protocol.d.ts +79 -0
  46. package/dist/pdpp/protocol.d.ts.map +1 -0
  47. package/dist/pdpp/protocol.js +372 -0
  48. package/dist/pdpp/protocol.js.map +1 -0
  49. package/dist/pdpp/runtime.d.ts +43 -0
  50. package/dist/pdpp/runtime.d.ts.map +1 -0
  51. package/dist/pdpp/runtime.js +387 -0
  52. package/dist/pdpp/runtime.js.map +1 -0
  53. package/dist/pdpp/store.d.ts +43 -0
  54. package/dist/pdpp/store.d.ts.map +1 -0
  55. package/dist/pdpp/store.js +100 -0
  56. package/dist/pdpp/store.js.map +1 -0
  57. package/dist/personal-server/index.d.ts +1 -0
  58. package/dist/personal-server/index.d.ts.map +1 -1
  59. package/dist/personal-server/index.js +17 -2
  60. package/dist/personal-server/index.js.map +1 -1
  61. package/dist/personal-server/local/config.d.ts +23 -0
  62. package/dist/personal-server/local/config.d.ts.map +1 -0
  63. package/dist/personal-server/local/config.js +51 -0
  64. package/dist/personal-server/local/config.js.map +1 -0
  65. package/dist/personal-server/local/owner-binding.d.ts +33 -0
  66. package/dist/personal-server/local/owner-binding.d.ts.map +1 -0
  67. package/dist/personal-server/local/owner-binding.js +155 -0
  68. package/dist/personal-server/local/owner-binding.js.map +1 -0
  69. package/dist/personal-server/local/owner-secret.d.ts +17 -0
  70. package/dist/personal-server/local/owner-secret.d.ts.map +1 -0
  71. package/dist/personal-server/local/owner-secret.js +119 -0
  72. package/dist/personal-server/local/owner-secret.js.map +1 -0
  73. package/dist/personal-server/local/runtime-pkg/entry.mjs +153 -0
  74. package/dist/personal-server/local/runtime-pkg/package-lock.json +2342 -0
  75. package/dist/personal-server/local/runtime-pkg/package.json +13 -0
  76. package/dist/personal-server/local/runtime.d.ts +9 -0
  77. package/dist/personal-server/local/runtime.d.ts.map +1 -0
  78. package/dist/personal-server/local/runtime.js +66 -0
  79. package/dist/personal-server/local/runtime.js.map +1 -0
  80. package/dist/personal-server/local/server.d.ts +39 -0
  81. package/dist/personal-server/local/server.d.ts.map +1 -0
  82. package/dist/personal-server/local/server.js +203 -0
  83. package/dist/personal-server/local/server.js.map +1 -0
  84. package/dist/runtime/core/contracts.d.ts +2 -0
  85. package/dist/runtime/core/contracts.d.ts.map +1 -1
  86. package/dist/runtime/managed-playwright.d.ts +7 -0
  87. package/dist/runtime/managed-playwright.d.ts.map +1 -1
  88. package/dist/runtime/managed-playwright.js +7 -0
  89. package/dist/runtime/managed-playwright.js.map +1 -1
  90. package/dist/vendor/pdpp-connector-manager/LICENSE +202 -0
  91. package/dist/vendor/pdpp-connector-manager/NOTICE +2 -0
  92. package/dist/vendor/pdpp-connector-manager/VENDOR.md +27 -0
  93. package/dist/vendor/pdpp-connector-manager/catalog-schema-data.mjs +168 -0
  94. package/dist/vendor/pdpp-connector-manager/catalog-schema.mjs +62 -0
  95. package/dist/vendor/pdpp-connector-manager/index.d.mts +49 -0
  96. package/dist/vendor/pdpp-connector-manager/index.mjs +1646 -0
  97. package/dist/vendor/pdpp-connector-manager/oci-catalog.mjs +93 -0
  98. package/dist/vendor/pdpp-connector-manager/oci-registry.mjs +1002 -0
  99. package/dist/vendor/pdpp-connector-manager/oci-verify.mjs +515 -0
  100. package/dist/vendor/pdpp-connector-manager/package.json +51 -0
  101. package/dist/vendor/pdpp-connector-manager/retry.mjs +142 -0
  102. package/dist/vendor/pdpp-connector-manager/tar-stream.mjs +685 -0
  103. package/package.json +7 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/pdpp/runtime.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAqC5E,MAAM,WAAW,kBAAkB;IACjC,oFAAoF;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAET;AAED;;;;GAIG;AACH,qBAAa,WAAW;IAKV,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJpC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAChC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,WAAW,CAA6B;gBAEnB,OAAO,GAAE,kBAAuB;IAE7D,IAAI,cAAc,IAAI;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAOvD;IAED,IAAI,KAAK,IAAI,YAAY,CAKxB;IAEK,eAAe,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC;QACpD,OAAO,EAAE,YAAY,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAkBI,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAqCK,YAAY,CACjB,OAAO,EAAE,mBAAmB,GAC3B,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;YAsDzB,OAAO;YA+KP,QAAQ;CAyHvB"}
@@ -0,0 +1,387 @@
1
+ import crypto from "node:crypto";
2
+ import fs from "node:fs";
3
+ import fsp from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { ensureParentDir, getLogsDir, getSourceResultPath, getTimestampedLogPath, } from "../core/index.js";
6
+ import { browserEnvironment, canInstallNodeFor, ensureConnectorBrowser, findCompatibleNode, findCompatibleNodeSync, getPdppHome, getPdppProfileRoot, installManagedNode, linkHostPackages, PDPP_NODE_VERSION, } from "./host.js";
7
+ import { ensurePinnedArtifact } from "./installer.js";
8
+ import { resolveLocalLaunch } from "./local.js";
9
+ import { findPdppPin } from "./pins.js";
10
+ import { runCollectionProfile, } from "./protocol.js";
11
+ import { collectionStatePath, completedStreams, mergeRun, projectResult, readCollectionState, writeCollectionState, writeResult, } from "./store.js";
12
+ /** The range every published artifact declares today; checked again per artifact. */
13
+ const EXPECTED_NODE_RANGE = ">=24.15.0 <25";
14
+ export function isPdppSource(source, options = {}) {
15
+ return Boolean(options.from) || findPdppPin(source) !== null;
16
+ }
17
+ /**
18
+ * Runs Collection Profile connectors behind the same interface as the
19
+ * managed Playwright runtime, so `vana connect` keeps one flow, one set of
20
+ * prompts and one stream of JSON events for both connector formats.
21
+ */
22
+ export class PdppRuntime {
23
+ options;
24
+ kind = "pdpp";
25
+ launch = null;
26
+ cachedState = null;
27
+ constructor(options = {}) {
28
+ this.options = options;
29
+ }
30
+ get installSummary() {
31
+ return {
32
+ lines: [
33
+ `Node.js ${PDPP_NODE_VERSION}, the runtime these connectors need`,
34
+ ],
35
+ phase: `Installing Node.js ${PDPP_NODE_VERSION} (one time, ~50MB)`,
36
+ };
37
+ }
38
+ get state() {
39
+ this.cachedState ??= findCompatibleNodeSync(EXPECTED_NODE_RANGE)
40
+ ? "installed"
41
+ : "missing";
42
+ return this.cachedState;
43
+ }
44
+ async ensureInstalled(_autoApprove) {
45
+ const existing = await findCompatibleNode(EXPECTED_NODE_RANGE);
46
+ if (existing) {
47
+ this.cachedState = "installed";
48
+ return { runtime: "installed", runtimePath: existing.path };
49
+ }
50
+ const logPath = getTimestampedLogPath("setup-pdpp");
51
+ await ensureParentDir(logPath);
52
+ if (!canInstallNodeFor(EXPECTED_NODE_RANGE)) {
53
+ throw new Error(`These connectors need Node ${EXPECTED_NODE_RANGE}. Install it and set VANA_PDPP_NODE to its path.`);
54
+ }
55
+ const node = await installManagedNode(logPath);
56
+ this.cachedState = "installed";
57
+ return { runtime: "installed", runtimePath: node.path, logPath };
58
+ }
59
+ async fetchConnector(source, _currentVersion) {
60
+ const logPath = getTimestampedLogPath(`fetch-${source}`);
61
+ await ensureParentDir(logPath);
62
+ await fsp.writeFile(logPath, "", "utf8");
63
+ try {
64
+ if (this.options.from) {
65
+ this.launch = await resolveLocalLaunch(this.options.from, source);
66
+ }
67
+ else {
68
+ const pin = findPdppPin(source);
69
+ if (!pin) {
70
+ throw new Error(`No Collection Profile connector is pinned for ${source}.`);
71
+ }
72
+ this.launch = await ensurePinnedArtifact(pin, logPath);
73
+ }
74
+ }
75
+ catch (error) {
76
+ await fsp.appendFile(logPath, `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`, "utf8");
77
+ if (error && typeof error === "object")
78
+ Object.assign(error, { logPath });
79
+ throw error;
80
+ }
81
+ await fsp.appendFile(logPath, `${JSON.stringify({ type: "connector-resolved", source, origin: this.launch.origin, version: this.launch.version })}\n`, "utf8");
82
+ return {
83
+ connectorPath: this.launch.args[this.launch.args.length - 1],
84
+ logPath,
85
+ version: this.launch.version,
86
+ };
87
+ }
88
+ async *runConnector(options) {
89
+ const launch = this.launch;
90
+ if (!launch) {
91
+ throw new Error("fetchConnector must run before runConnector.");
92
+ }
93
+ await fsp.mkdir(getLogsDir(), { recursive: true });
94
+ const logPath = getTimestampedLogPath(`run-${options.source}`);
95
+ const logStream = fs.createWriteStream(logPath);
96
+ const log = (line) => logStream.write(`${line}\n`);
97
+ const queue = [];
98
+ let wake = null;
99
+ const push = (event) => {
100
+ queue.push(event);
101
+ wake?.();
102
+ wake = null;
103
+ };
104
+ const run = this.execute(launch, options, logPath, log, push).catch((error) => {
105
+ const message = error instanceof Error ? error.message : String(error);
106
+ log(`[host] ${message}`);
107
+ push({
108
+ type: "runtime-error",
109
+ source: options.source,
110
+ message,
111
+ logPath,
112
+ });
113
+ });
114
+ let settled = false;
115
+ void run.finally(() => {
116
+ settled = true;
117
+ wake?.();
118
+ wake = null;
119
+ });
120
+ push({ type: "run-started", source: options.source, logPath });
121
+ try {
122
+ while (true) {
123
+ while (queue.length > 0) {
124
+ const event = queue.shift();
125
+ if (event)
126
+ yield event;
127
+ }
128
+ if (settled)
129
+ break;
130
+ await new Promise((resolve) => {
131
+ wake = resolve;
132
+ });
133
+ }
134
+ }
135
+ finally {
136
+ await new Promise((resolve) => logStream.end(resolve));
137
+ }
138
+ }
139
+ async execute(launch, options, logPath, log, push) {
140
+ const source = launch.source;
141
+ const node = await findCompatibleNode(launch.nodeRange);
142
+ if (!node) {
143
+ throw new Error(`The ${launch.displayName} connector needs Node ${launch.nodeRange}, and none was found. Set VANA_PDPP_NODE to a Node binary in that range.`);
144
+ }
145
+ log(`[host] node ${node.version} at ${node.path}`);
146
+ if (launch.installRoot) {
147
+ await linkHostPackages(launch.installRoot, {
148
+ node: launch.nodeRange,
149
+ packages: launch.hostPackages,
150
+ });
151
+ }
152
+ if (launch.profile.runtime_requirements?.bindings?.browser?.required) {
153
+ await ensureConnectorBrowser(node, logPath);
154
+ }
155
+ const statePath = collectionStatePath(source, this.options.owner);
156
+ const previous = await readCollectionState(statePath);
157
+ const streamNames = launch.profile.streams.map((stream) => stream.name);
158
+ const mode = launch.profile.streams.some((stream) => stream.incremental === false)
159
+ ? "full_refresh"
160
+ : "incremental";
161
+ const runId = `vana-${source}-${Date.now()}-${crypto.randomBytes(4).toString("hex")}`;
162
+ // Inherit the caller's environment for PATH and locale, but never its
163
+ // PDPP_* settings: a remote CDP URL in there would attach the connector
164
+ // to someone's own browser, and the runtime closes every tab it finds.
165
+ const env = {};
166
+ for (const [key, value] of Object.entries(process.env)) {
167
+ if (!key.startsWith("PDPP_"))
168
+ env[key] = value;
169
+ }
170
+ Object.assign(env, browserEnvironment(), {
171
+ PDPP_RUN_ID: runId,
172
+ PDPP_BROWSER_PROFILE_ROOT: getPdppProfileRoot(),
173
+ // A scheduled trigger makes connectors fail fast with a repair error
174
+ // instead of waiting on a sign-in nobody will do.
175
+ PDPP_RUN_TRIGGER_KIND: options.noInput ? "scheduled" : "manual",
176
+ });
177
+ const labels = new Map(launch.profile.streams.map((stream) => [
178
+ stream.name,
179
+ stream.display?.label ?? stream.name,
180
+ ]));
181
+ const counts = new Map();
182
+ let activeStream = null;
183
+ const finishStream = (stream) => {
184
+ const count = counts.get(stream) ?? 0;
185
+ push({
186
+ type: "progress-update",
187
+ source,
188
+ logPath,
189
+ message: `Complete: ${count} ${count === 1 ? "record" : "records"}`,
190
+ count,
191
+ phase: {
192
+ step: streamNames.indexOf(stream) + 1,
193
+ total: streamNames.length,
194
+ label: labels.get(stream) ?? stream,
195
+ },
196
+ });
197
+ };
198
+ const enterStream = (stream, message) => {
199
+ if (activeStream && activeStream !== stream)
200
+ finishStream(activeStream);
201
+ activeStream = stream;
202
+ push({
203
+ type: "progress-update",
204
+ source,
205
+ logPath,
206
+ message: message ?? `Collecting ${labels.get(stream) ?? stream}`,
207
+ phase: {
208
+ step: streamNames.indexOf(stream) + 1,
209
+ total: streamNames.length,
210
+ label: labels.get(stream) ?? stream,
211
+ },
212
+ });
213
+ };
214
+ const records = [];
215
+ const checkpoints = {};
216
+ const skips = [];
217
+ const outcome = await runCollectionProfile({
218
+ node: node.path,
219
+ args: launch.args,
220
+ cwd: launch.cwd,
221
+ env,
222
+ signal: options.signal,
223
+ start: {
224
+ type: "START",
225
+ run_id: runId,
226
+ collection_mode: mode,
227
+ scope: { streams: streamNames.map((name) => ({ name })) },
228
+ state: previous.checkpoints,
229
+ },
230
+ log,
231
+ onRecord: (record) => {
232
+ records.push(record);
233
+ counts.set(record.stream, (counts.get(record.stream) ?? 0) + 1);
234
+ if (activeStream !== record.stream)
235
+ enterStream(record.stream);
236
+ },
237
+ onState: (stream, cursor) => {
238
+ checkpoints[stream] = cursor;
239
+ },
240
+ onProgress: (progress) => {
241
+ log(`[progress] ${JSON.stringify(progress)}`);
242
+ if (progress.stream && labels.has(progress.stream)) {
243
+ enterStream(progress.stream, progress.message);
244
+ }
245
+ else if (progress.message) {
246
+ push({
247
+ type: "status-update",
248
+ source,
249
+ logPath,
250
+ message: progress.message,
251
+ });
252
+ }
253
+ },
254
+ onSkip: (skip) => {
255
+ skips.push(skip);
256
+ log(`[skip] ${JSON.stringify(skip)}`);
257
+ push({
258
+ type: "stream-skipped",
259
+ source,
260
+ logPath,
261
+ stream: skip.stream,
262
+ reason: skip.reason,
263
+ message: skip.message ?? `Skipped ${skip.stream ?? "the run"}.`,
264
+ });
265
+ },
266
+ onInteraction: (request) => this.interact(request, source, options, logPath, log, push),
267
+ });
268
+ if (activeStream)
269
+ finishStream(activeStream);
270
+ log(`[host] outcome ${JSON.stringify(outcome)}`);
271
+ if (outcome.status !== "succeeded") {
272
+ push({
273
+ type: "runtime-error",
274
+ source,
275
+ logPath,
276
+ message: outcome.error?.message ?? "The connector run failed.",
277
+ });
278
+ return;
279
+ }
280
+ const completed = completedStreams(streamNames, skips);
281
+ const merged = mergeRun(previous, {
282
+ mode,
283
+ completed,
284
+ records,
285
+ checkpoints,
286
+ });
287
+ const resultPath = getSourceResultPath(source);
288
+ await writeResult(resultPath, projectResult(source, launch.displayName, merged, completed));
289
+ // State is committed only once the result it describes is on disk, so a
290
+ // crash in between re-collects rather than skipping data.
291
+ await writeCollectionState(statePath, merged);
292
+ push({ type: "collection-complete", source, resultPath, logPath });
293
+ }
294
+ async interact(request, source, options, logPath, log, push) {
295
+ log(`[interaction] ${request.kind}: ${request.message}`);
296
+ const manual = request.kind === "manual_action";
297
+ const fields = manual ? [] : Object.keys(request.schema?.properties ?? {});
298
+ if (options.noInput) {
299
+ push(manual
300
+ ? {
301
+ type: "legacy-auth",
302
+ source,
303
+ logPath,
304
+ message: "This source needs you to sign in in a browser window, which --no-input does not allow.",
305
+ }
306
+ : {
307
+ type: "needs-input",
308
+ source,
309
+ logPath,
310
+ message: request.message,
311
+ fields,
312
+ });
313
+ return {
314
+ status: "cancelled",
315
+ message: "Input is disabled for this run.",
316
+ };
317
+ }
318
+ if (manual) {
319
+ push({
320
+ type: "headed-required",
321
+ source,
322
+ logPath,
323
+ message: request.message,
324
+ });
325
+ }
326
+ const pendingInputPath = path.join(getPdppHome(), `pending-input-${request.requestId}.json`);
327
+ const responseInputPath = path.join(getPdppHome(), `input-response-${request.requestId}.json`);
328
+ if (options.onNeedInput) {
329
+ const values = await options.onNeedInput({
330
+ message: request.message,
331
+ schema: request.schema,
332
+ fields,
333
+ responseInputPath,
334
+ kind: request.kind,
335
+ });
336
+ return {
337
+ status: "success",
338
+ ...(fields.length > 0 ? { data: values } : {}),
339
+ };
340
+ }
341
+ // IPC: an agent reads the pending file and answers in the response file.
342
+ // A manual step is confirmed with `{}` once the person has signed in, or
343
+ // declined with `{"status":"cancelled"}`.
344
+ await ensureParentDir(pendingInputPath);
345
+ await fsp.writeFile(pendingInputPath, `${JSON.stringify({
346
+ kind: request.kind,
347
+ message: request.message,
348
+ schema: request.schema ?? {},
349
+ responseInputPath,
350
+ timestamp: new Date().toISOString(),
351
+ }, null, 2)}\n`, "utf8");
352
+ push({
353
+ type: "needs-input",
354
+ source,
355
+ logPath,
356
+ message: request.message,
357
+ fields,
358
+ reason: request.kind,
359
+ pendingInputPath,
360
+ responseInputPath,
361
+ });
362
+ try {
363
+ const deadline = Date.now() + request.timeoutMs;
364
+ while (Date.now() < deadline) {
365
+ try {
366
+ const response = JSON.parse(await fsp.readFile(responseInputPath, "utf8"));
367
+ await fsp.rm(responseInputPath, { force: true });
368
+ if (response.status === "cancelled") {
369
+ return { status: "cancelled", message: "Declined." };
370
+ }
371
+ return fields.length > 0
372
+ ? { status: "success", data: response }
373
+ : { status: "success" };
374
+ }
375
+ catch {
376
+ // Not answered yet.
377
+ }
378
+ await new Promise((resolve) => setTimeout(resolve, 500));
379
+ }
380
+ return { status: "cancelled", message: "Nobody answered in time." };
381
+ }
382
+ finally {
383
+ await fsp.rm(pendingInputPath, { force: true });
384
+ }
385
+ }
386
+ }
387
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/pdpp/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { ConnectorRecord, SkipResult } from "./protocol.js";
2
+ /**
3
+ * What one connector has collected for one Personal Server owner: the
4
+ * cursor per stream to resume from, and every record seen so far.
5
+ *
6
+ * The Personal Server replaces a scope on each write, while an incremental
7
+ * run only returns what changed, so the full set has to be kept here and
8
+ * sent every time. It is kept per owner so switching identities never
9
+ * uploads one person's history into another's server.
10
+ */
11
+ export interface CollectionState {
12
+ version: 1;
13
+ checkpoints: Record<string, Record<string, unknown>>;
14
+ snapshot: Record<string, Array<{
15
+ key: string;
16
+ data: Record<string, unknown>;
17
+ }>>;
18
+ }
19
+ export declare function ownerKey(owner: string | null | undefined): string;
20
+ export declare function collectionStatePath(source: string, owner: string | null | undefined): string;
21
+ export declare function readCollectionState(file: string): Promise<CollectionState>;
22
+ /** Streams whose output this run can stand behind; a skip without a stream voids them all. */
23
+ export declare function completedStreams(requested: string[], skips: SkipResult[]): string[];
24
+ /**
25
+ * Fold a finished run into the stored state. Only completed streams change:
26
+ * a skipped stream keeps its previous records and cursor, so a partial run
27
+ * never erases what an earlier one collected.
28
+ */
29
+ export declare function mergeRun(previous: CollectionState, run: {
30
+ mode: "full_refresh" | "incremental";
31
+ completed: string[];
32
+ records: ConnectorRecord[];
33
+ checkpoints: Record<string, Record<string, unknown>>;
34
+ }): CollectionState;
35
+ export declare function writeCollectionState(file: string, state: CollectionState): Promise<void>;
36
+ /**
37
+ * The result file the ingest step reads: one `<source>.<stream>` key per
38
+ * completed stream, each an object wrapping every record the owner has, since
39
+ * the Personal Server rejects array bodies.
40
+ */
41
+ export declare function projectResult(source: string, displayName: string, state: CollectionState, completed: string[]): Record<string, unknown>;
42
+ export declare function writeResult(file: string, result: Record<string, unknown>): Promise<void>;
43
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/pdpp/store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,EAAE,MAAM,CACd,MAAM,EACN,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CACtD,CAAC;CACH;AAMD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGjE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,MAAM,CAER;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,eAAe,CAAC,CAc1B;AASD,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,UAAU,EAAE,GAClB,MAAM,EAAE,CAIV;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,eAAe,EACzB,GAAG,EAAE;IACH,IAAI,EAAE,cAAc,GAAG,aAAa,CAAC;IACrC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD,GACA,eAAe,CAwBjB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -0,0 +1,100 @@
1
+ import crypto from "node:crypto";
2
+ import fsp from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { getPdppHome } from "./host.js";
5
+ function emptyState() {
6
+ return { version: 1, checkpoints: {}, snapshot: {} };
7
+ }
8
+ export function ownerKey(owner) {
9
+ if (!owner)
10
+ return "unowned";
11
+ return `owner-${crypto.createHash("sha256").update(owner.toLowerCase()).digest("hex").slice(0, 16)}`;
12
+ }
13
+ export function collectionStatePath(source, owner) {
14
+ return path.join(getPdppHome(), "state", source, `${ownerKey(owner)}.json`);
15
+ }
16
+ export async function readCollectionState(file) {
17
+ try {
18
+ const parsed = JSON.parse(await fsp.readFile(file, "utf8"));
19
+ if (parsed.version !== 1)
20
+ return emptyState();
21
+ return {
22
+ version: 1,
23
+ checkpoints: parsed.checkpoints ?? {},
24
+ snapshot: parsed.snapshot ?? {},
25
+ };
26
+ }
27
+ catch {
28
+ return emptyState();
29
+ }
30
+ }
31
+ async function writeAtomic(file, content) {
32
+ await fsp.mkdir(path.dirname(file), { recursive: true, mode: 0o700 });
33
+ const temporary = `${file}.${process.pid}.tmp`;
34
+ await fsp.writeFile(temporary, content, { encoding: "utf8", mode: 0o600 });
35
+ await fsp.rename(temporary, file);
36
+ }
37
+ /** Streams whose output this run can stand behind; a skip without a stream voids them all. */
38
+ export function completedStreams(requested, skips) {
39
+ if (skips.some((skip) => !skip.stream))
40
+ return [];
41
+ const skipped = new Set(skips.map((skip) => skip.stream));
42
+ return requested.filter((stream) => !skipped.has(stream));
43
+ }
44
+ /**
45
+ * Fold a finished run into the stored state. Only completed streams change:
46
+ * a skipped stream keeps its previous records and cursor, so a partial run
47
+ * never erases what an earlier one collected.
48
+ */
49
+ export function mergeRun(previous, run) {
50
+ const completed = new Set(run.completed);
51
+ const snapshot = { ...previous.snapshot };
52
+ const checkpoints = { ...previous.checkpoints };
53
+ const byStream = new Map();
54
+ for (const stream of completed) {
55
+ const seed = run.mode === "full_refresh" ? [] : (previous.snapshot[stream] ?? []);
56
+ byStream.set(stream, new Map(seed.map((entry) => [entry.key, entry.data])));
57
+ }
58
+ for (const record of run.records) {
59
+ const entries = byStream.get(record.stream);
60
+ if (!entries)
61
+ continue;
62
+ // Deleting and re-inserting moves an updated record to the end, matching
63
+ // the order the connector last reported it in.
64
+ entries.delete(record.key);
65
+ if (record.op !== "delete")
66
+ entries.set(record.key, record.data);
67
+ }
68
+ for (const [stream, entries] of byStream) {
69
+ snapshot[stream] = [...entries].map(([key, data]) => ({ key, data }));
70
+ if (run.checkpoints[stream])
71
+ checkpoints[stream] = run.checkpoints[stream];
72
+ }
73
+ return { version: 1, checkpoints, snapshot };
74
+ }
75
+ export async function writeCollectionState(file, state) {
76
+ await writeAtomic(file, `${JSON.stringify(state)}\n`);
77
+ }
78
+ /**
79
+ * The result file the ingest step reads: one `<source>.<stream>` key per
80
+ * completed stream, each an object wrapping every record the owner has, since
81
+ * the Personal Server rejects array bodies.
82
+ */
83
+ export function projectResult(source, displayName, state, completed) {
84
+ const result = {
85
+ platform: source,
86
+ company: displayName,
87
+ exportedAt: new Date().toISOString(),
88
+ completedStreams: completed,
89
+ };
90
+ for (const stream of completed) {
91
+ result[`${source}.${stream}`] = {
92
+ [stream]: (state.snapshot[stream] ?? []).map((entry) => entry.data),
93
+ };
94
+ }
95
+ return result;
96
+ }
97
+ export async function writeResult(file, result) {
98
+ await writeAtomic(file, `${JSON.stringify(result, null, 2)}\n`);
99
+ }
100
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/pdpp/store.ts"],"names":[],"mappings":"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"}
@@ -36,4 +36,5 @@ export declare function personalServerOwnerMismatch(owner: string | null | undef
36
36
  export declare function detectPersonalServerTarget(): Promise<PersonalServerTarget>;
37
37
  export declare function ingestResult(source: string, resultPath: string, target: PersonalServerTarget, options?: IngestResultOptions): Promise<CliEvent[]>;
38
38
  export declare function resolvePersonalServerAuthConfig(serverUrl: string): PersonalServerAuthConfig;
39
+ export declare function urlsMatch(left: string, right: string): boolean;
39
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/personal-server/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQ1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAClD,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACxC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAK3C;AAmBD,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAqDhF;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC,CA0ErB;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,GAChB,wBAAwB,CAe1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/personal-server/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQ1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EACV,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;IAClD,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACxC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAK3C;AAmBD,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAqDhF;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,oBAAoB,EAC5B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,QAAQ,EAAE,CAAC,CA0ErB;AAED,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,MAAM,GAChB,wBAAwB,CAe1B;AAkBD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE9D"}
@@ -162,8 +162,23 @@ export function resolvePersonalServerAuthConfig(serverUrl) {
162
162
  }
163
163
  return undefined;
164
164
  }
165
- function urlsMatch(left, right) {
166
- return left.replace(/\/+$/, "") === right.replace(/\/+$/, "");
165
+ // localhost, 127.0.0.1 and ::1 are the same server: a server reports one
166
+ // spelling and a port scan or a saved URL often uses another.
167
+ const LOOPBACK_HOSTS = new Set(["localhost", "127.0.0.1", "[::1]"]);
168
+ function normalizeServerUrl(value) {
169
+ try {
170
+ const url = new URL(value);
171
+ if (LOOPBACK_HOSTS.has(url.hostname)) {
172
+ url.hostname = "localhost";
173
+ }
174
+ return url.toString().replace(/\/+$/, "");
175
+ }
176
+ catch {
177
+ return value.replace(/\/+$/, "");
178
+ }
179
+ }
180
+ export function urlsMatch(left, right) {
181
+ return normalizeServerUrl(left) === normalizeServerUrl(right);
167
182
  }
168
183
  async function fetchHealth(baseUrl) {
169
184
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/personal-server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/personal-server/index.ts"],"names":[],"mappings":"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"}