@uptimizr/collector-server 1.1.1 → 2.0.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 (59) hide show
  1. package/README.md +112 -8
  2. package/dist/__tests__/support/registryRequests.d.ts +47 -0
  3. package/dist/__tests__/support/registryRequests.d.ts.map +1 -0
  4. package/dist/__tests__/support/registryRequests.js +93 -0
  5. package/dist/__tests__/support/registryRequests.js.map +1 -0
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +34 -3
  8. package/dist/app.js.map +1 -1
  9. package/dist/audit.d.ts +22 -0
  10. package/dist/audit.d.ts.map +1 -0
  11. package/dist/audit.js +96 -0
  12. package/dist/audit.js.map +1 -0
  13. package/dist/auth.d.ts +64 -0
  14. package/dist/auth.d.ts.map +1 -0
  15. package/dist/auth.js +71 -0
  16. package/dist/auth.js.map +1 -0
  17. package/dist/cli.js +279 -0
  18. package/dist/cli.js.map +1 -1
  19. package/dist/cliStore.d.ts +20 -2
  20. package/dist/cliStore.d.ts.map +1 -1
  21. package/dist/cliStore.js +20 -8
  22. package/dist/cliStore.js.map +1 -1
  23. package/dist/clickhouseStore.d.ts.map +1 -1
  24. package/dist/clickhouseStore.js +7 -1
  25. package/dist/clickhouseStore.js.map +1 -1
  26. package/dist/config.d.ts +13 -0
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +2 -0
  29. package/dist/config.js.map +1 -1
  30. package/dist/duckdbStore.d.ts.map +1 -1
  31. package/dist/duckdbStore.js +7 -1
  32. package/dist/duckdbStore.js.map +1 -1
  33. package/dist/liveToken.d.ts +14 -5
  34. package/dist/liveToken.d.ts.map +1 -1
  35. package/dist/liveToken.js +32 -6
  36. package/dist/liveToken.js.map +1 -1
  37. package/dist/memoryStore.d.ts +8 -3
  38. package/dist/memoryStore.d.ts.map +1 -1
  39. package/dist/memoryStore.js +57 -2
  40. package/dist/memoryStore.js.map +1 -1
  41. package/dist/mssqlStore.d.ts.map +1 -1
  42. package/dist/mssqlStore.js +7 -1
  43. package/dist/mssqlStore.js.map +1 -1
  44. package/dist/postgresStore.d.ts.map +1 -1
  45. package/dist/postgresStore.js +7 -1
  46. package/dist/postgresStore.js.map +1 -1
  47. package/dist/routes/live.d.ts.map +1 -1
  48. package/dist/routes/live.js +31 -26
  49. package/dist/routes/live.js.map +1 -1
  50. package/dist/routes/meta.d.ts +67 -0
  51. package/dist/routes/meta.d.ts.map +1 -0
  52. package/dist/routes/meta.js +436 -0
  53. package/dist/routes/meta.js.map +1 -0
  54. package/dist/routes/query.d.ts.map +1 -1
  55. package/dist/routes/query.js +805 -108
  56. package/dist/routes/query.js.map +1 -1
  57. package/dist/store.d.ts +32 -5
  58. package/dist/store.d.ts.map +1 -1
  59. package/package.json +8 -6
package/dist/auth.js ADDED
@@ -0,0 +1,71 @@
1
+ /** Header a first-party UI sets to identify itself (see `isDashboardRequest`). */
2
+ export const CLIENT_HEADER = "x-uptimizr-client";
3
+ /**
4
+ * Whether this request is "the dashboard's own session" — the requests the
5
+ * audit log deliberately skips so an agent's activity is not buried under a
6
+ * dashboard's panel refreshes.
7
+ *
8
+ * It is identified by the `x-uptimizr-client: dashboard` header that
9
+ * `@uptimizr/react`'s `CollectorApi` sets by default; the in-browser assistant
10
+ * and any other agent client send a different value (or none) and are audited.
11
+ *
12
+ * This is a **volume filter, not a security boundary**: anyone holding the key
13
+ * could send the header, and anyone holding the key can already do everything
14
+ * the key allows. Set `AUDIT_DASHBOARD_REQUESTS=1` to record every
15
+ * authenticated request without exception.
16
+ */
17
+ export function isDashboardRequest(request) {
18
+ return request.headers[CLIENT_HEADER] === "dashboard";
19
+ }
20
+ /**
21
+ * Resolve the request's `x-api-key` into {@link FastifyRequest.resolvedKey}.
22
+ * Never replies and never throws: an absent, unknown or revoked key simply
23
+ * leaves `resolvedKey` null, and the helpers below turn that into a 401.
24
+ */
25
+ export async function attachApiKey(request, store) {
26
+ const header = request.headers["x-api-key"];
27
+ if (typeof header !== "string" || header.length === 0)
28
+ return;
29
+ try {
30
+ request.resolvedKey = await store.resolveApiKey(header);
31
+ }
32
+ catch (err) {
33
+ request.log.warn({ err }, "api key resolution failed");
34
+ }
35
+ }
36
+ /** The 403 body for each capability a request can be refused for. */
37
+ const CAPABILITY_REFUSALS = {
38
+ query: "api key not permitted to read",
39
+ "query:raw": "api key not permitted to read raw session data",
40
+ annotate: "api key not permitted to write metadata",
41
+ ingest: "api key not permitted to ingest",
42
+ };
43
+ /**
44
+ * Require an authenticated key holding `capability`. Sends a 401 (no/invalid
45
+ * key) or 403 (key lacks the capability) and returns `null` on refusal.
46
+ *
47
+ * Reads are always scoped to the authenticated project — a client-supplied
48
+ * project id is never trusted.
49
+ */
50
+ export async function requireCapability(request, reply, store, capability) {
51
+ const header = request.headers["x-api-key"];
52
+ if (typeof header !== "string" || header.length === 0) {
53
+ await reply.code(401).send({ error: "missing api key" });
54
+ return null;
55
+ }
56
+ // The `onRequest` hook has normally resolved this already; fall back to a
57
+ // direct lookup so the helper is usable from a plugin registered without it.
58
+ if (!request.resolvedKey)
59
+ await attachApiKey(request, store);
60
+ const resolved = request.resolvedKey;
61
+ if (!resolved) {
62
+ await reply.code(401).send({ error: "invalid api key" });
63
+ return null;
64
+ }
65
+ if (!resolved.capabilities.includes(capability)) {
66
+ await reply.code(403).send({ error: CAPABILITY_REFUSALS[capability] });
67
+ return null;
68
+ }
69
+ return resolved;
70
+ }
71
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAmCA,kFAAkF;AAClF,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAuB;IACxD,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,WAAW,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAuB,EAAE,KAAqB;IAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9D,IAAI,CAAC;QACH,OAAO,CAAC,WAAW,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,mBAAmB,GAAqC;IAC5D,KAAK,EAAE,+BAA+B;IACtC,WAAW,EAAE,gDAAgD;IAC7D,QAAQ,EAAE,yCAAyC;IACnD,MAAM,EAAE,iCAAiC;CAC1C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAuB,EACvB,KAAmB,EACnB,KAAqB,EACrB,UAA4B;IAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,0EAA0E;IAC1E,6EAA6E;IAC7E,IAAI,CAAC,OAAO,CAAC,WAAW;QAAE,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/dist/cli.js CHANGED
@@ -2,6 +2,8 @@
2
2
  import { randomBytes } from "node:crypto";
3
3
  import { appendFileSync, existsSync, readFileSync, writeFileSync } from "node:fs";
4
4
  import { resolve } from "node:path";
5
+ import { parseCapabilityList } from "@uptimizr/db";
6
+ import { sceneIdSchema, sceneRegionsSchema } from "@uptimizr/schema";
5
7
  import { openCliStore, renderEnv, resolveCliStoreKind } from "./cliStore.js";
6
8
  /**
7
9
  * Unified `uptimizr` CLI (ADR 0029) — collapses the multi-step npm self-host
@@ -13,7 +15,11 @@ import { openCliStore, renderEnv, resolveCliStoreKind } from "./cliStore.js";
13
15
  * store, mint a first project + API key, and write `.env`.
14
16
  * - `serve` (default) — run the ingestion + query API (see {@link serve}).
15
17
  * - `new-project <name>` — mint an additional project + API key.
18
+ * - `new-key <id>` — mint an additional API key on an existing project,
19
+ * with an explicit capability set, label and per-key
20
+ * rate limit (#309, ADR 0051 §7).
16
21
  * - `migrate` — apply store migrations.
22
+ * - `regions set|get` — declare / read a scene's named regions (ADR 0051 §2).
17
23
  *
18
24
  * Every command targets the store selected by `COLLECTOR_STORE` — the OSS
19
25
  * DuckDB default (no Docker, no external database; ADR 0020), or the optional
@@ -35,6 +41,47 @@ function nameArg(args) {
35
41
  .join(" ")
36
42
  .trim();
37
43
  }
44
+ /**
45
+ * Split `--flag value` / `--flag=value` pairs out of an argument list, returning
46
+ * the flags plus whatever positional arguments remain. Deliberately tiny: the
47
+ * CLI has no dependency on an argument parser.
48
+ */
49
+ function parseFlags(args) {
50
+ const flags = {};
51
+ const rest = [];
52
+ for (let i = 0; i < args.length; i += 1) {
53
+ const arg = args[i];
54
+ if (!arg.startsWith("--") || arg === "--") {
55
+ if (arg !== "--")
56
+ rest.push(arg);
57
+ continue;
58
+ }
59
+ const eq = arg.indexOf("=");
60
+ if (eq > 2) {
61
+ flags[arg.slice(2, eq)] = arg.slice(eq + 1);
62
+ }
63
+ else {
64
+ const next = args[i + 1];
65
+ if (next === undefined || next.startsWith("--")) {
66
+ throw new Error(`Missing value for ${arg}`);
67
+ }
68
+ flags[arg.slice(2)] = next;
69
+ i += 1;
70
+ }
71
+ }
72
+ return { flags, rest };
73
+ }
74
+ /** Parse a positive-integer flag, or throw with an actionable message. */
75
+ function intFlag(flags, name) {
76
+ const raw = flags[name];
77
+ if (raw === undefined)
78
+ return undefined;
79
+ const value = Number(raw);
80
+ if (!Number.isInteger(value) || value <= 0) {
81
+ throw new Error(`--${name} must be a positive integer (got "${raw}")`);
82
+ }
83
+ return value;
84
+ }
38
85
  /** Persist a generated secret so `serve` works on the next run. */
39
86
  function ensureSecretPersisted(secret, generated, store) {
40
87
  try {
@@ -89,6 +136,62 @@ async function cmdNewProject(name) {
89
136
  console.error(` API key (shown once): ${key}`);
90
137
  process.stdout.write(`${JSON.stringify({ projectId: project.id, name: project.name, apiKey: key })}\n`);
91
138
  }
139
+ /**
140
+ * Mint an additional API key on an existing project with an explicit capability
141
+ * set, label and optional per-key rate limit (#309, ADR 0051 §7):
142
+ *
143
+ * ```
144
+ * uptimizr new-key <projectId> --capabilities query,annotate --label "weekly-report-agent"
145
+ * ```
146
+ *
147
+ * Capabilities default to `query` (read-only), matching `init` / `new-project`.
148
+ * `query:raw` additionally needs `ENABLE_RAW_SESSION_RETENTION` on the collector
149
+ * before it grants anything (ADR 0003).
150
+ */
151
+ async function cmdNewKey(args) {
152
+ loadLocalEnv();
153
+ const { flags, rest } = parseFlags(args);
154
+ const projectId = rest[0];
155
+ if (!projectId) {
156
+ throw new Error("Usage: uptimizr new-key <projectId> [--capabilities query,annotate] [--label NAME] " +
157
+ "[--rate-limit-max N --rate-limit-window-ms M]");
158
+ }
159
+ const capabilities = parseCapabilityList(flags.capabilities ?? "query");
160
+ const rateLimitMax = intFlag(flags, "rate-limit-max");
161
+ const rateLimitWindowMs = intFlag(flags, "rate-limit-window-ms");
162
+ if ((rateLimitMax == null) !== (rateLimitWindowMs == null)) {
163
+ throw new Error("--rate-limit-max and --rate-limit-window-ms must be given together");
164
+ }
165
+ const db = await openCliStore();
166
+ try {
167
+ const { key, record } = await db.createApiKey(projectId, {
168
+ capabilities,
169
+ label: flags.label ?? null,
170
+ rateLimit: rateLimitMax != null && rateLimitWindowMs != null
171
+ ? { max: rateLimitMax, windowMs: rateLimitWindowMs }
172
+ : null,
173
+ });
174
+ console.error(`✓ API key created for project ${projectId}`);
175
+ console.error(` Capabilities: ${record.capabilities.join(", ")}`);
176
+ if (record.label)
177
+ console.error(` Label: ${record.label}`);
178
+ if (record.rateLimit) {
179
+ console.error(` Rate limit: ${record.rateLimit.max} requests / ${record.rateLimit.windowMs} ms`);
180
+ }
181
+ console.error(` API key (shown once): ${key}`);
182
+ process.stdout.write(`${JSON.stringify({
183
+ projectId,
184
+ keyId: record.id,
185
+ capabilities: record.capabilities,
186
+ label: record.label,
187
+ rateLimit: record.rateLimit,
188
+ apiKey: key,
189
+ })}\n`);
190
+ }
191
+ finally {
192
+ await db.close();
193
+ }
194
+ }
92
195
  async function cmdMigrate() {
93
196
  loadLocalEnv();
94
197
  // Opening the store applies its migrations, exactly as `serve` does on boot.
@@ -96,6 +199,158 @@ async function cmdMigrate() {
96
199
  await db.close();
97
200
  console.error(`✓ migrations applied (${resolveCliStoreKind()})`);
98
201
  }
202
+ /** Read `--<name> <value>` (or `--<name>=<value>`) out of a command's argv tail. */
203
+ function flagArg(args, name) {
204
+ const prefix = `--${name}`;
205
+ for (let i = 0; i < args.length; i++) {
206
+ const arg = args[i];
207
+ if (arg === prefix)
208
+ return args[i + 1];
209
+ if (arg.startsWith(`${prefix}=`))
210
+ return arg.slice(prefix.length + 1);
211
+ }
212
+ return undefined;
213
+ }
214
+ /** Positional arguments of a command: everything that is not a flag or its value. */
215
+ function positionalArgs(args, flags) {
216
+ const out = [];
217
+ for (let i = 0; i < args.length; i++) {
218
+ const arg = args[i];
219
+ if (arg === "--")
220
+ continue;
221
+ const matched = flags.find((f) => arg === `--${f}`);
222
+ if (matched) {
223
+ i++; // skip the flag's value
224
+ continue;
225
+ }
226
+ if (flags.some((f) => arg.startsWith(`--${f}=`)))
227
+ continue;
228
+ out.push(arg);
229
+ }
230
+ return out;
231
+ }
232
+ /**
233
+ * Resolve the project a `regions` command targets: `--project <id>`, else
234
+ * `UPTIMIZR_PROJECT_ID`. There is no "current project" concept in the OSS
235
+ * collector (a store can hold several), so the id is explicit rather than
236
+ * guessed — writing a scene's regions under the wrong project would silently
237
+ * produce an empty-looking registry.
238
+ */
239
+ function resolveProjectId(args) {
240
+ const projectId = flagArg(args, "project") ?? process.env.UPTIMIZR_PROJECT_ID;
241
+ if (!projectId) {
242
+ throw new Error("No project selected. Pass --project <projectId> (or set UPTIMIZR_PROJECT_ID). " +
243
+ "`uptimizr init` prints the id it minted.");
244
+ }
245
+ return projectId;
246
+ }
247
+ /**
248
+ * Parse a regions file: either a bare array of regions or the
249
+ * `{ "regions": [...] }` envelope the HTTP endpoint takes, so the same file
250
+ * works with `curl -d @regions.json` and with this command. Validated against
251
+ * `sceneRegionsSchema`, so a bad box or a duplicate id fails here with a precise
252
+ * message instead of half-writing the set.
253
+ */
254
+ function readRegionsFile(path) {
255
+ const absolute = resolve(process.cwd(), path);
256
+ let parsed;
257
+ try {
258
+ parsed = JSON.parse(readFileSync(absolute, "utf8"));
259
+ }
260
+ catch (err) {
261
+ throw new Error(`Could not read regions from ${absolute}: ${err.message}`, {
262
+ cause: err,
263
+ });
264
+ }
265
+ const candidate = Array.isArray(parsed) || parsed == null
266
+ ? parsed
267
+ : (parsed.regions ?? parsed);
268
+ const result = sceneRegionsSchema.safeParse(candidate);
269
+ if (!result.success) {
270
+ const issues = result.error.issues
271
+ .map((issue) => ` - ${issue.path.join(".") || "(root)"}: ${issue.message}`)
272
+ .join("\n");
273
+ throw new Error(`Invalid regions in ${absolute}:\n${issues}`);
274
+ }
275
+ return result.data;
276
+ }
277
+ /** Validate a scene id the same way the collector's route params do. */
278
+ function parseSceneId(value) {
279
+ const result = sceneIdSchema.safeParse(value);
280
+ if (!result.success) {
281
+ throw new Error(`Invalid scene id ${JSON.stringify(value ?? "")}: expected 1-64 chars of [A-Za-z0-9._:-].`);
282
+ }
283
+ return result.data;
284
+ }
285
+ /**
286
+ * `uptimizr regions set <sceneId> --file regions.json` — replace a scene's
287
+ * region set in the store the collector serves (ADR 0051 §2). Replace-the-set:
288
+ * a region left out of the file is removed, and an empty array clears the scene.
289
+ *
290
+ * The offline sibling of `PUT /api/v1/scenes/:sceneId/regions`, which requires
291
+ * an `annotate`-capable key. This command takes no key at all: like
292
+ * `new-project` and `new-key` it is an **operator** command that opens the store
293
+ * directly, and store access is already strictly more than any capability grants.
294
+ */
295
+ async function cmdRegionsSet(args) {
296
+ loadLocalEnv();
297
+ const positional = positionalArgs(args, ["file", "project"]);
298
+ const sceneId = parseSceneId(positional[0]);
299
+ const file = flagArg(args, "file");
300
+ if (!file)
301
+ throw new Error("`uptimizr regions set` needs --file <regions.json>.");
302
+ const regions = readRegionsFile(file);
303
+ const projectId = resolveProjectId(args);
304
+ const db = await openCliStore();
305
+ try {
306
+ if (!(await db.getProject(projectId))) {
307
+ throw new Error(`No project ${JSON.stringify(projectId)} in this store.`);
308
+ }
309
+ const stored = await db.putSceneRegions(projectId, sceneId, regions);
310
+ console.error(`✓ ${stored.length} region(s) set on scene "${sceneId}" (project ${projectId})`);
311
+ process.stdout.write(`${JSON.stringify(stored, null, 2)}\n`);
312
+ }
313
+ finally {
314
+ await db.close();
315
+ }
316
+ }
317
+ /** `uptimizr regions get <sceneId>` — print a scene's stored regions as JSON. */
318
+ async function cmdRegionsGet(args) {
319
+ loadLocalEnv();
320
+ const positional = positionalArgs(args, ["project"]);
321
+ const sceneId = parseSceneId(positional[0]);
322
+ const projectId = resolveProjectId(args);
323
+ const db = await openCliStore();
324
+ try {
325
+ // Check the project first: an unknown id would otherwise read as "this scene
326
+ // has no regions" rather than "you named the wrong project".
327
+ if (!(await db.getProject(projectId))) {
328
+ throw new Error(`No project ${JSON.stringify(projectId)} in this store.`);
329
+ }
330
+ const regions = await db.getSceneRegions(projectId, sceneId);
331
+ console.error(`${regions.length} region(s) on scene "${sceneId}" (project ${projectId})`);
332
+ process.stdout.write(`${JSON.stringify(regions, null, 2)}\n`);
333
+ }
334
+ finally {
335
+ await db.close();
336
+ }
337
+ }
338
+ /** Dispatch the `regions` sub-namespace (`set` / `get`). */
339
+ async function cmdRegions(args) {
340
+ const [sub, ...rest] = args;
341
+ switch (sub) {
342
+ case "set":
343
+ await cmdRegionsSet(rest);
344
+ return;
345
+ case "get":
346
+ await cmdRegionsGet(rest);
347
+ return;
348
+ default:
349
+ throw new Error(`Unknown regions command ${JSON.stringify(sub ?? "")}. ` +
350
+ "Expected: uptimizr regions set <sceneId> --file <regions.json> | " +
351
+ "uptimizr regions get <sceneId>");
352
+ }
353
+ }
99
354
  function printUsage() {
100
355
  console.error([
101
356
  "uptimizr — self-host the OSS 3D-analytics collector (DuckDB by default, no Docker).",
@@ -104,9 +359,27 @@ function printUsage() {
104
359
  " uptimizr init [name] generate a secret, create the store, mint a project + key, write .env",
105
360
  " uptimizr serve run the ingestion + query API (default)",
106
361
  " uptimizr new-project <name> mint an additional project + API key",
362
+ " uptimizr new-key <projectId> mint an additional API key on an existing project",
107
363
  " uptimizr migrate apply store migrations",
364
+ " uptimizr regions set <sceneId> --file <regions.json>",
365
+ " declare a scene's named regions (replaces the set)",
366
+ " uptimizr regions get <sceneId>",
367
+ " print a scene's named regions as JSON",
108
368
  " uptimizr help show this help",
109
369
  "",
370
+ "new-key options:",
371
+ " --capabilities <list> comma-separated: ingest, query, annotate, query:raw",
372
+ " (default: query). `query:raw` is only honoured when the",
373
+ " collector runs with ENABLE_RAW_SESSION_RETENTION.",
374
+ ' --label <name> operator-supplied name, e.g. "weekly-report-agent"',
375
+ " --rate-limit-max <n> per-key request budget (needs --rate-limit-window-ms)",
376
+ " --rate-limit-window-ms <ms> per-key rate-limit window (needs --rate-limit-max)",
377
+ "",
378
+ "The regions commands target a project: pass --project <projectId> or set",
379
+ "UPTIMIZR_PROJECT_ID. The file is either a bare array of",
380
+ "{ id, label, bounds: [minX,minY,minZ,maxX,maxY,maxZ], description? } or a",
381
+ '{ "regions": [...] } envelope.',
382
+ "",
110
383
  "Every command targets the store selected by COLLECTOR_STORE (duckdb | postgres | mssql |",
111
384
  "clickhouse), using the same connection variables as `serve` (DUCKDB_PATH, POSTGRES_URL,",
112
385
  "MSSQL_URL, CLICKHOUSE_*). Unset = duckdb.",
@@ -130,9 +403,15 @@ async function main() {
130
403
  case "new-project":
131
404
  await cmdNewProject(nameArg(rest) || "Project");
132
405
  return;
406
+ case "new-key":
407
+ await cmdNewKey(rest);
408
+ return;
133
409
  case "migrate":
134
410
  await cmdMigrate();
135
411
  return;
412
+ case "regions":
413
+ await cmdRegions(rest);
414
+ return;
136
415
  case "help":
137
416
  case "--help":
138
417
  case "-h":
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import type { SceneRegion } from "@uptimizr/schema";
2
+ import { type ApiKeyRecord, type CreateApiKeyOptions, type SceneRegionRecord } from "@uptimizr/db";
1
3
  /**
2
4
  * The persistent stores the `uptimizr` CLI can bootstrap (`init` / `new-project`
3
5
  * / `migrate`). Mirrors the `COLLECTOR_STORE` values `serve` accepts, minus
@@ -17,10 +19,26 @@ export interface CliStore {
17
19
  id: string;
18
20
  name: string;
19
21
  }>;
20
- /** Issue a query-capable API key; the plaintext is returned exactly once. */
21
- createApiKey(projectId: string): Promise<{
22
+ /**
23
+ * Issue an API key; the plaintext is returned exactly once. Defaults to the
24
+ * `query` (read-only) capability when no options are given.
25
+ */
26
+ createApiKey(projectId: string, options?: CreateApiKeyOptions): Promise<{
22
27
  key: string;
28
+ record: ApiKeyRecord;
23
29
  }>;
30
+ /** Look a project up so a command can fail fast on a wrong `--project`. */
31
+ getProject(projectId: string): Promise<{
32
+ id: string;
33
+ name: string;
34
+ } | null>;
35
+ /**
36
+ * Replace a scene's region set (ADR 0051 §2) — the CLI's `regions set`, the
37
+ * offline sibling of `PUT /api/v1/scenes/:sceneId/regions`.
38
+ */
39
+ putSceneRegions(projectId: string, sceneId: string, regions: readonly SceneRegion[]): Promise<SceneRegionRecord[]>;
40
+ /** Read a scene's regions — the CLI's `regions get`. */
41
+ getSceneRegions(projectId: string, sceneId: string): Promise<SceneRegionRecord[]>;
24
42
  close(): Promise<void>;
25
43
  }
26
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cliStore.d.ts","sourceRoot":"","sources":["../src/cliStore.ts"],"names":[],"mappings":"AA4BA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,wDAAyD,CAAC;AAEjF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,6EAA6E;IAC7E,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,CAUtF;AAuBD;;;GAGG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4C1F"}
1
+ {"version":3,"file":"cliStore.d.ts","sourceRoot":"","sources":["../src/cliStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AA+BtB;;;;;GAKG;AACH,eAAO,MAAM,UAAU,wDAAyD,CAAC;AAEjF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE;;;OAGG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IAClD,2EAA2E;IAC3E,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC5E;;;OAGG;IACH,eAAe,CACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,WAAW,EAAE,GAC9B,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAChC,wDAAwD;IACxD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAClF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,CAUtF;AAuBD;;;GAGG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,EACnB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA4D1F"}
package/dist/cliStore.js CHANGED
@@ -1,7 +1,7 @@
1
- import { createDuckdbClient, duckdbCreateApiKey, duckdbCreateProject, migrateDuckdb, readDbSettings, } from "@uptimizr/db";
2
- import { createApiKey as chCreateApiKey, createClickhouseClient, createProject as chCreateProject, migrateClickhouse, } from "@uptimizr/db-clickhouse";
3
- import { createApiKey as msCreateApiKey, createMssqlClient, createProject as msCreateProject, ensureMssqlDatabase, migrateMssql, resolveMssqlConfig, } from "@uptimizr/db-mssql";
4
- import { createApiKey as pgCreateApiKey, createPostgresClient, createProject as pgCreateProject, migratePostgres, } from "@uptimizr/db-postgres";
1
+ import { createDuckdbClient, duckdbCreateApiKey, duckdbCreateProject, duckdbGetProject, duckdbGetSceneRegions, duckdbPutSceneRegions, migrateDuckdb, readDbSettings, } from "@uptimizr/db";
2
+ import { createApiKey as chCreateApiKey, createClickhouseClient, createProject as chCreateProject, getProject as chGetProject, getSceneRegions as chGetSceneRegions, migrateClickhouse, putSceneRegions as chPutSceneRegions, } from "@uptimizr/db-clickhouse";
3
+ import { createApiKey as msCreateApiKey, createMssqlClient, createProject as msCreateProject, ensureMssqlDatabase, getProject as msGetProject, getSceneRegions as msGetSceneRegions, migrateMssql, putSceneRegions as msPutSceneRegions, resolveMssqlConfig, } from "@uptimizr/db-mssql";
4
+ import { createApiKey as pgCreateApiKey, createPostgresClient, createProject as pgCreateProject, getProject as pgGetProject, getSceneRegions as pgGetSceneRegions, migratePostgres, putSceneRegions as pgPutSceneRegions, } from "@uptimizr/db-postgres";
5
5
  /**
6
6
  * The persistent stores the `uptimizr` CLI can bootstrap (`init` / `new-project`
7
7
  * / `migrate`). Mirrors the `COLLECTOR_STORE` values `serve` accepts, minus
@@ -85,7 +85,10 @@ export async function openCliStore(env = process.env) {
85
85
  await migrateDuckdb(db);
86
86
  return {
87
87
  createProject: (name) => duckdbCreateProject(db, name),
88
- createApiKey: (projectId) => duckdbCreateApiKey(db, projectId),
88
+ createApiKey: (projectId, options) => duckdbCreateApiKey(db, projectId, options),
89
+ getProject: (projectId) => duckdbGetProject(db, projectId),
90
+ putSceneRegions: (projectId, sceneId, regions) => duckdbPutSceneRegions(db, projectId, sceneId, regions),
91
+ getSceneRegions: (projectId, sceneId) => duckdbGetSceneRegions(db, projectId, sceneId),
89
92
  close: () => db.close(),
90
93
  };
91
94
  }
@@ -94,7 +97,10 @@ export async function openCliStore(env = process.env) {
94
97
  await migratePostgres(pgc, settings.postgres);
95
98
  return {
96
99
  createProject: (name) => pgCreateProject(pgc, name),
97
- createApiKey: (projectId) => pgCreateApiKey(pgc, projectId),
100
+ createApiKey: (projectId, options) => pgCreateApiKey(pgc, projectId, options),
101
+ getProject: (projectId) => pgGetProject(pgc, projectId),
102
+ putSceneRegions: (projectId, sceneId, regions) => pgPutSceneRegions(pgc, projectId, sceneId, regions),
103
+ getSceneRegions: (projectId, sceneId) => pgGetSceneRegions(pgc, projectId, sceneId),
98
104
  close: () => pgc.close(),
99
105
  };
100
106
  }
@@ -105,7 +111,10 @@ export async function openCliStore(env = process.env) {
105
111
  await migrateMssql(msc);
106
112
  return {
107
113
  createProject: (name) => msCreateProject(msc, name),
108
- createApiKey: (projectId) => msCreateApiKey(msc, projectId),
114
+ createApiKey: (projectId, options) => msCreateApiKey(msc, projectId, options),
115
+ getProject: (projectId) => msGetProject(msc, projectId),
116
+ putSceneRegions: (projectId, sceneId, regions) => msPutSceneRegions(msc, projectId, sceneId, regions),
117
+ getSceneRegions: (projectId, sceneId) => msGetSceneRegions(msc, projectId, sceneId),
109
118
  close: () => msc.close(),
110
119
  };
111
120
  }
@@ -114,7 +123,10 @@ export async function openCliStore(env = process.env) {
114
123
  await migrateClickhouse(ch, settings.clickhouse);
115
124
  return {
116
125
  createProject: (name) => chCreateProject(ch, name),
117
- createApiKey: (projectId) => chCreateApiKey(ch, projectId),
126
+ createApiKey: (projectId, options) => chCreateApiKey(ch, projectId, options),
127
+ getProject: (projectId) => chGetProject(ch, projectId),
128
+ putSceneRegions: (projectId, sceneId, regions) => chPutSceneRegions(ch, projectId, sceneId, regions),
129
+ getSceneRegions: (projectId, sceneId) => chGetSceneRegions(ch, projectId, sceneId),
118
130
  close: () => ch.close(),
119
131
  };
120
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cliStore.js","sourceRoot":"","sources":["../src/cliStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliStore.js","sourceRoot":"","sources":["../src/cliStore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"clickhouseStore.d.ts","sourceRoot":"","sources":["../src/clickhouseStore.ts"],"names":[],"mappings":"AAmJA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,cAAc,CAAC,CAyLrE"}
1
+ {"version":3,"file":"clickhouseStore.d.ts","sourceRoot":"","sources":["../src/clickhouseStore.ts"],"names":[],"mappings":"AAyJA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,cAAc,CAAC,CAgMrE"}
@@ -1,5 +1,5 @@
1
1
  import { buildCameraDirectionHeatmap, buildViewCoverageHistogram, buildCameraDistance, buildCameraPositionHeatmap, buildClickGazeRay, buildDeadClicks, buildRageClicks, buildHoverDwell, buildCompileStalls, buildArPlacementTimeToPlace, buildArPlacementAttempts, buildArPlacementSurfaces, buildResourceSummary, buildCapabilityChanges, buildCameraGestures, buildDistinctScenes, buildEventTypeCounts, buildFlowHeatmap, buildFunnel, buildSceneRetention, buildLoadBounceFunnel, buildVariantLeaderboard, buildListSessions, buildNavigationStats, buildBacktrackRatio, buildXrRotationRate, buildXrSourceUsage, buildXrAbandonment, buildXrLocomotionComfort, buildTrackingQuality, buildInteractionsBySource, buildMeshDwell, buildMeshBlindSpots, buildMeshInteractionKinds, buildReachability, buildPerfSummary, buildPerfDistribution, buildFpsHistogram, buildFrameTimePercentiles, buildJankRate, buildPerfChurn, buildPerfByDevice, buildPerfByScene, buildResourcePercentiles, buildStabilityCounts, buildGraphicsDiagnosticCounts, buildErrorHeatmap, buildBoundaryHeatmap, buildBoundaryHeatmapStats, buildBoundaryContacts, buildRenderingTechnology, buildPointerHeatmap, buildMeshUvHeatmap, buildSceneCoverage, buildPerfHeatmap, buildSessionTrajectory, buildAggregateTrajectories, buildRenderScaleTruth, buildTimeseries, buildTopMeshes, buildTopMeshesBySource, buildTopMeshesTrend, buildTopInputActions, buildWorldHeatmap, buildWorldHeatmapStats, buildGazeHeatmap, buildGazeHeatmapStats, clickhouseDialect, readDbSettings, } from "@uptimizr/db";
2
- import { createClickhouseClient, migrateClickhouse, runClickhouseQuery, insertEvents as chInsertEvents, getSessionEvents as chGetSessionEvents, streamSessionEvents as chStreamSessionEvents, getSessionMeta as chGetSessionMeta, getProject as chGetProject, resolveApiKey as chResolveApiKey, upsertSceneProxy as chUpsertSceneProxy, getSceneRepresentation as chGetSceneRepresentation, listSceneRepresentations as chListSceneRepresentations, } from "@uptimizr/db-clickhouse";
2
+ import { createClickhouseClient, migrateClickhouse, runClickhouseQuery, insertEvents as chInsertEvents, getSessionEvents as chGetSessionEvents, streamSessionEvents as chStreamSessionEvents, getSessionMeta as chGetSessionMeta, getProject as chGetProject, resolveApiKey as chResolveApiKey, recordAudit as chRecordAudit, listAudit as chListAudit, pruneAudit as chPruneAudit, upsertSceneProxy as chUpsertSceneProxy, getSceneRepresentation as chGetSceneRepresentation, listSceneRepresentations as chListSceneRepresentations, putSceneRegions as chPutSceneRegions, getSceneRegions as chGetSceneRegions, listSceneRegions as chListSceneRegions, } from "@uptimizr/db-clickhouse";
3
3
  /**
4
4
  * Optional single-tenant ClickHouse store (ADR 0020): the scale path for
5
5
  * self-hosters who outgrow DuckDB's single read-write process. It carries the
@@ -21,6 +21,9 @@ export async function createClickhouseStore() {
21
21
  const d = clickhouseDialect;
22
22
  return {
23
23
  resolveApiKey: (key) => chResolveApiKey(ch, key),
24
+ recordAudit: (entry) => chRecordAudit(ch, entry),
25
+ listAudit: (projectId, opts) => chListAudit(ch, projectId, opts),
26
+ pruneAudit: (cutoffMs) => chPruneAudit(ch, cutoffMs),
24
27
  projectExists: async (projectId) => (await chGetProject(ch, projectId)) !== null,
25
28
  insertEvents: (events) => chInsertEvents(ch, [...events]),
26
29
  listSessions: (projectId, opts = {}) => runClickhouseQuery(ch, buildListSessions(projectId, opts, d)),
@@ -105,6 +108,9 @@ export async function createClickhouseStore() {
105
108
  putSceneProxy: (projectId, proxy, label) => chUpsertSceneProxy(ch, projectId, proxy, label),
106
109
  getSceneRepresentation: (projectId, sceneId) => chGetSceneRepresentation(ch, projectId, sceneId),
107
110
  listSceneRepresentations: (projectId) => chListSceneRepresentations(ch, projectId),
111
+ putSceneRegions: (projectId, sceneId, regions) => chPutSceneRegions(ch, projectId, sceneId, regions),
112
+ getSceneRegions: (projectId, sceneId) => chGetSceneRegions(ch, projectId, sceneId),
113
+ listSceneRegions: (projectId) => chListSceneRegions(ch, projectId),
108
114
  async close() {
109
115
  await ch.close();
110
116
  },