@substrat-run/control-plane-api 0.107.0 → 0.109.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.
@@ -17,6 +17,24 @@ export interface CfObservabilityOptions {
17
17
  * permissions grow with the platform's needs — but nothing here assumes that.
18
18
  */
19
19
  apiToken: string;
20
+ /**
21
+ * The Analytics Engine dataset the ROUTER writes its per-request datapoints into —
22
+ * the only place the tenant dimension exists (§4.2), and therefore the only source
23
+ * `tenantMetrics` can read.
24
+ *
25
+ * Stated by the caller and defaulted NOWHERE, for the reason `DISPATCH_NAMESPACE`
26
+ * is (#962): the environments write to different datasets (`substrat_router` in
27
+ * production, `substrat_router_test` on TEST — `apps/router/wrangler.jsonc`), a
28
+ * code default is inherited silently by whichever environment forgets to override
29
+ * it, and the failure is a TEST control plane answering questions about production
30
+ * traffic. There is no error to notice: the query succeeds and the numbers are
31
+ * somebody else's.
32
+ *
33
+ * Absent ⇒ `tenantMetrics` is not exposed at all, so the route answers 501 — the
34
+ * platform's shape for an unconfigured capability — rather than a wrong number or
35
+ * an empty array that reads as "your app served nothing".
36
+ */
37
+ routerDataset?: string;
20
38
  }
21
39
  export declare function createCfObservabilityReader(opts: CfObservabilityOptions): ObservabilityReader;
22
40
  //# sourceMappingURL=cf-observability.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cf-observability.d.ts","sourceRoot":"","sources":["../src/cf-observability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAqB,MAAM,oBAAoB,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,sBAAsB,GAAG,mBAAmB,CAqW7F"}
1
+ {"version":3,"file":"cf-observability.d.ts","sourceRoot":"","sources":["../src/cf-observability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAIpB,MAAM,oBAAoB,CAAC;AA2G5B;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,sBAAsB,GAAG,mBAAmB,CAuoB7F"}
@@ -1,3 +1,105 @@
1
+ /**
2
+ * Caps on the tenant-log correlation walk (`queryTenantLogs`).
3
+ *
4
+ * Phase two is one query per invocation, so an uncapped walk turns a busy tenant's log
5
+ * page into hundreds of backend queries. These bound it: at most this many invocations
6
+ * are expanded, and at most this many lines are taken from each. The consequence is
7
+ * under-reporting on a very busy window — a tenant sees a recent slice rather than every
8
+ * line — which is the right direction to fail, since the alternative is a page that times
9
+ * out and shows nothing.
10
+ */
11
+ const MAX_CORRELATED_INVOCATIONS = 40;
12
+ const MAX_LINES_PER_INVOCATION = 20;
13
+ /** The event is a stamped invocation line whose request FAILED. */
14
+ function isFailedInvocation(e) {
15
+ const source = (e.raw?.['source'] ?? {});
16
+ if (source['substrat'] !== 'invocation')
17
+ return false;
18
+ const status = source['status'];
19
+ return source['threw'] === true || (typeof status === 'number' && status >= 500);
20
+ }
21
+ /**
22
+ * The event is a stamped invocation line belonging to the tenant (and the narrowing) that
23
+ * was asked about — the proof an account-wide error line may be shown to this caller.
24
+ *
25
+ * Read off the RAW event rather than a projected one, because it runs on phase two's
26
+ * output before anything else touches it, and the fields it reads are the ones the
27
+ * stamped line publishes (`invocation-log.ts`). A missing or mismatched tenant is a
28
+ * refusal, never a shrug: this predicate is the whole isolation boundary for correlated
29
+ * lines, which carry no tenant of their own.
30
+ */
31
+ function ownsInvocation(e, input) {
32
+ const source = (e['source'] ?? {});
33
+ if (source['substrat'] !== 'invocation')
34
+ return false;
35
+ if (source['tenantId'] !== input.tenantId)
36
+ return false;
37
+ if (input.scopeId && source['scopeId'] !== input.scopeId)
38
+ return false;
39
+ if (input.vertical && source['vertical'] !== input.vertical)
40
+ return false;
41
+ return true;
42
+ }
43
+ /**
44
+ * Give a stamped invocation line a human message.
45
+ *
46
+ * Cloudflare populates `$metadata.message` for a STRING log and leaves it unset for a pure
47
+ * JSON one, so every stamped line arrives with `message: null` and would render as a blank
48
+ * row — which is most of the default view, since one is written per request. The fields to
49
+ * say it with are all already on the line, so this composes them on read rather than the
50
+ * vertical logging a redundant string: a read-side fix reaches versions that are already
51
+ * deployed, where changing what is logged would not.
52
+ *
53
+ * Everything else passes through untouched — a vertical's own output already has a message,
54
+ * and it is theirs to word.
55
+ */
56
+ function describeInvocation(e) {
57
+ const source = (e.raw?.['source'] ?? {});
58
+ if (source['substrat'] !== 'invocation')
59
+ return e;
60
+ const method = typeof source['method'] === 'string' ? source['method'] : '?';
61
+ const path = typeof source['path'] === 'string' ? source['path'] : '?';
62
+ const status = typeof source['status'] === 'number' ? source['status'] : null;
63
+ const ms = typeof source['durationMs'] === 'number' ? source['durationMs'] : null;
64
+ const outcome = source['threw'] === true ? 'threw' : (status ?? '—');
65
+ return {
66
+ ...e,
67
+ message: `${method} ${path} → ${outcome}${ms === null ? '' : ` (${ms} ms)`}`,
68
+ // Surfaced as the level it reads as, so the list's own colouring is honest about
69
+ // which rows are failures without the caller having to filter for them.
70
+ level: e.level ?? (isFailedInvocation(e) ? 'error' : 'info'),
71
+ };
72
+ }
73
+ /**
74
+ * One backend event → the seam's neutral `RecentLogEvent`.
75
+ *
76
+ * Shared by the service-grain and tenant-grain readers so a field learned in one is not
77
+ * missing from the other: they query different filters over the same dataset, and the
78
+ * projection is the part that has nothing to do with which filter asked.
79
+ */
80
+ function projectEvent(e) {
81
+ const str = (v) => (typeof v === 'string' ? v : null);
82
+ const num = (v) => (typeof v === 'number' ? v : null);
83
+ const metadata = (e['$metadata'] ?? {});
84
+ const workers = (e['$workers'] ?? {});
85
+ return {
86
+ timestamp: num(e['timestamp']),
87
+ level: str(metadata['level']),
88
+ message: str(metadata['message']),
89
+ service: str(metadata['service']) ?? str(workers['scriptName']),
90
+ outcome: str(workers['outcome']),
91
+ // `$metadata.trigger` reads like `<entrypoint>.<method>` (e.g. `default.importDump`);
92
+ // fall back to the `$workers.event` sub-shape (`rpcMethod`) when it is absent.
93
+ trigger: str(metadata['trigger']) ??
94
+ str(workers['event']?.['rpcMethod']),
95
+ invocation: str(workers['eventType']),
96
+ entrypoint: str(workers['entrypoint']),
97
+ requestId: str(metadata['requestId']) ?? str(workers['requestId']),
98
+ cpuTimeMs: num(workers['cpuTimeMs']),
99
+ wallTimeMs: num(workers['wallTimeMs']),
100
+ raw: e,
101
+ };
102
+ }
1
103
  const GRAPHQL_URL = 'https://api.cloudflare.com/client/v4/graphql';
2
104
  /**
3
105
  * The same dataset Cloudflare's own Workers "Metrics" tab reads —
@@ -178,6 +280,16 @@ export function createCfObservabilityReader(opts) {
178
280
  }
179
281
  return queryEvents(services?.[0], level, search, hours, limit);
180
282
  },
283
+ // Present only when the caller named the router's dataset: with no dataset there is
284
+ // no honest answer, and the route's 501 says so. See `routerDataset`.
285
+ ...(opts.routerDataset
286
+ ? {
287
+ tenantMetrics: (input) => queryTenantMetrics(opts.routerDataset, input),
288
+ }
289
+ : {}),
290
+ async tenantLogs(input) {
291
+ return queryTenantLogs(input);
292
+ },
181
293
  async observedEgress({ services, hours, limit }) {
182
294
  // One query per service, like recentLogs and for the same reason: the telemetry
183
295
  // API's filters are single-valued equality, and an OR across script names is not
@@ -226,6 +338,253 @@ export function createCfObservabilityReader(opts) {
226
338
  };
227
339
  },
228
340
  };
341
+ /**
342
+ * One Analytics Engine SQL read — the tenant grain (§4.2).
343
+ *
344
+ * ## Why this is a different API from everything else in this file
345
+ *
346
+ * Cloudflare records invocations per SCRIPT, and a script serves every tenant that
347
+ * installed the vertical, so no amount of filtering on the GraphQL dataset can produce
348
+ * a per-tenant number. The tenant dimension exists only because the router writes it:
349
+ * one datapoint per dispatched request into the router's dataset (`substrat_router` in
350
+ * production, `substrat_router_test` on TEST — hence `routerDataset`, named by the
351
+ * caller), `index1` = the tenant. That dataset is read with SQL, not GraphQL — hence a
352
+ * third endpoint.
353
+ *
354
+ * ## Counts are sampling-weighted, and `count()` would be a silent lie
355
+ *
356
+ * Analytics Engine head-samples under load and reports the weight of each surviving
357
+ * row in `_sample_interval`. A row that stood for 40 requests arrives once with
358
+ * `_sample_interval = 40`. So `sum(_sample_interval)` is the request count and
359
+ * `count()` is the number of rows that survived sampling — which at low volume are
360
+ * equal, and at exactly the volume anyone cares about are not. The failure is silent
361
+ * and in the flattering direction: a busy tenant reads quiet.
362
+ *
363
+ * The same reasoning governs the quantiles: `quantileWeighted(q)(value, weight)`, not
364
+ * `quantile(q)(value)`, or the surviving rows are each counted once regardless of how
365
+ * many requests they stand for.
366
+ */
367
+ async function queryTenantMetrics(dataset, input) {
368
+ // The dataset name is an IDENTIFIER, not a bound value — it cannot be quoted into
369
+ // place, so the only defence is refusing anything that is not a bare name. Checked
370
+ // here rather than at construction so a mistyped var costs this one route a 500
371
+ // instead of taking every other observability read down with it.
372
+ if (!/^[A-Za-z0-9_]{1,64}$/.test(dataset)) {
373
+ throw new Error('observability: refusing a router dataset name that is not a bare identifier');
374
+ }
375
+ // The tenant is bound, never interpolated: this is SQL built in a string, and the
376
+ // value arrives from a session. Ids are opaque ULIDs, so the escape is a whitelist
377
+ // rather than a quote-doubling dance — anything that is not ULID-shaped is not an
378
+ // id and has no business reaching the query.
379
+ const literal = (v) => {
380
+ if (!/^[A-Za-z0-9_\-./]{1,128}$/.test(v)) {
381
+ throw new Error('observability: refusing a dimension value with unexpected characters');
382
+ }
383
+ return `'${v}'`;
384
+ };
385
+ const where = [
386
+ `index1 = ${literal(input.tenantId)}`,
387
+ `timestamp > now() - INTERVAL '${Math.max(1, Math.floor(input.hours))}' HOUR`,
388
+ ];
389
+ if (input.scopeId)
390
+ where.push(`blob2 = ${literal(input.scopeId)}`);
391
+ if (input.vertical)
392
+ where.push(`blob1 = ${literal(input.vertical)}`);
393
+ // Blob/double positions are the router's published shape (`apps/router/src/worker.ts`
394
+ // `record`): index1 tenant; blob1 vertical, blob2 scope, blob3 surface, blob4 status
395
+ // class; double1 duration ms, double2 status. That shape only ever grows, never
396
+ // reorders — which is what lets these ordinals be written down here at all.
397
+ const sql = `
398
+ SELECT
399
+ blob2 AS scopeId,
400
+ blob1 AS vertical,
401
+ blob3 AS surface,
402
+ sum(_sample_interval) AS requests,
403
+ sum(if(blob4 = '5xx', _sample_interval, 0)) AS errors,
404
+ quantileWeighted(0.5)(double1, _sample_interval) AS durationP50,
405
+ quantileWeighted(0.95)(double1, _sample_interval) AS durationP95
406
+ FROM ${dataset}
407
+ WHERE ${where.join(' AND ')}
408
+ GROUP BY scopeId, vertical, surface
409
+ ORDER BY requests DESC
410
+ LIMIT 200
411
+ FORMAT JSON`;
412
+ const res = await fetch(`https://api.cloudflare.com/client/v4/accounts/${opts.accountId}/analytics_engine/sql`, { method: 'POST', headers: { authorization: `Bearer ${opts.apiToken}` }, body: sql });
413
+ const text = await res.text();
414
+ if (!res.ok) {
415
+ throw new Error(`Cloudflare Analytics Engine query failed: HTTP ${res.status} ${text.slice(0, 200)}`);
416
+ }
417
+ const json = JSON.parse(text);
418
+ // AE returns aggregate sums as STRINGS (they are 64-bit), quantiles as numbers.
419
+ const num = (v) => (typeof v === 'number' ? v : typeof v === 'string' ? Number(v) : 0);
420
+ const str = (v) => (typeof v === 'string' && v !== '' ? v : null);
421
+ return (json.data ?? []).map((r) => ({
422
+ scopeId: String(r['scopeId'] ?? ''),
423
+ vertical: str(r['vertical']),
424
+ surface: str(r['surface']),
425
+ requests: num(r['requests']),
426
+ errors: num(r['errors']),
427
+ durationP50: num(r['durationP50']),
428
+ durationP95: num(r['durationP95']),
429
+ }));
430
+ }
431
+ /**
432
+ * One tenant's log events, in two phases (§4.3).
433
+ *
434
+ * ## Why two phases and not one filter
435
+ *
436
+ * The stamped invocation line carries `tenantId`, so phase one finds it with a single
437
+ * equality filter — Workers Logs indexes a `JSON.stringify`ed `console.log` as
438
+ * queryable TOP-LEVEL fields, so the key is `tenantId`, not `$metadata.tenantId` nor
439
+ * `source.tenantId`. (Verified against the live API. A filter on a key that does not
440
+ * exist returns `success: true` with zero events, so the wrong spelling here is
441
+ * indistinguishable from a tenant with no traffic — the same silent-empty trap the
442
+ * `otel` dataset sets for `observedEgress` below.)
443
+ *
444
+ * But a vertical's OWN output — the exception, the `console.log` inside a handler —
445
+ * carries no tenant at all. Those lines are reachable only by correlation: every line
446
+ * emitted during one invocation shares `$metadata.requestId`. So phase two takes the
447
+ * request ids phase one found and fetches everything sharing them.
448
+ *
449
+ * The router's own lines are deliberately EXCLUDED. They carry the right tenant and
450
+ * would pass the filter, but they are the router's access log for every vertical that
451
+ * tenant runs, and mixing them into one app's log view answers a question nobody asked
452
+ * while burying the app's own output.
453
+ */
454
+ async function queryTenantLogs(input) {
455
+ const base = [
456
+ { key: 'tenantId', operation: 'eq', type: 'string', value: input.tenantId },
457
+ { key: 'substrat', operation: 'eq', type: 'string', value: 'invocation' },
458
+ ];
459
+ if (input.scopeId)
460
+ base.push({ key: 'scopeId', operation: 'eq', type: 'string', value: input.scopeId });
461
+ if (input.vertical)
462
+ base.push({ key: 'vertical', operation: 'eq', type: 'string', value: input.vertical });
463
+ // Phase one. For every read but `error` this is one query: the tenant's stamped
464
+ // lines, newest first.
465
+ //
466
+ // A level filter cannot do that job. Stamped lines are pure JSON, so Cloudflare
467
+ // leaves `$metadata.level` unset on them and a level filter drops every one — which
468
+ // means an error could only ever arrive as a SIBLING, and siblings exist only for the
469
+ // invocations phase two expanded. Asking for errors over 24h would search the 40 most
470
+ // recent invocations and answer "none" if the error was the 41st: an empty page that
471
+ // reads as "nothing is wrong" and means "I did not look".
472
+ //
473
+ // So an error read selects the invocations to expand itself. It takes three queries,
474
+ // because "an error" arrives in three shapes and no single filter spans them:
475
+ //
476
+ // 1. a FAILED response — the stamped line carries `status >= 500`;
477
+ // 2. an ESCAPE — the error got past `onError` itself, so the line carries
478
+ // `threw: true` and `status: null`, which no comparison on `status` can match.
479
+ // These are the rarest lines and the most interesting ones on the page;
480
+ // 3. a `console.error` the vertical wrote during a request that SUCCEEDED — a line
481
+ // with no tenant on it, on an invocation the tenant filter has no reason to
482
+ // select, since its stamped line says 200.
483
+ //
484
+ // (1) and (2) are tenant-filtered, so their invocations are trusted on sight. (3)
485
+ // cannot be: an error-level query has no tenant to filter on and is searched
486
+ // account-wide, so each of its invocations is admitted only once phase two shows a
487
+ // stamped line for THIS tenant on it — `ownsInvocation` below. Narrowing to (1)
488
+ // alone, which is what this did first, silently dropped every crash that escaped the
489
+ // envelope and every error logged by a request that went on to answer 200.
490
+ const isErrorRead = input.level?.toLowerCase() === 'error';
491
+ // Over-fetched relative to `limit`, because each invocation may pull siblings in
492
+ // phase two and the cap belongs on the merged answer.
493
+ const phaseOneLimit = Math.min(input.limit * 2, 200);
494
+ const [stamped, errorLines] = isErrorRead
495
+ ? await Promise.all([
496
+ Promise.all([
497
+ queryRaw([...base, { key: 'status', operation: 'gte', type: 'number', value: 500 }], input.hours, phaseOneLimit),
498
+ queryRaw([...base, { key: 'threw', operation: 'eq', type: 'boolean', value: true }], input.hours, phaseOneLimit),
499
+ ]).then((pages) => pages.flat()),
500
+ queryRaw([{ key: '$metadata.level', operation: 'eq', type: 'string', value: 'error' }], input.hours, phaseOneLimit),
501
+ ])
502
+ : [await queryRaw(base, input.hours, phaseOneLimit), []];
503
+ const trusted = invocationIds(stamped);
504
+ const trustedIds = new Set(trusted);
505
+ const candidates = invocationIds(errorLines).filter((id) => !trustedIds.has(id));
506
+ if (trusted.length === 0 && candidates.length === 0)
507
+ return [];
508
+ // Phase two: everything sharing those invocations. One query per request id — the
509
+ // telemetry API's filters are single-valued equality, the same constraint
510
+ // `recentLogs` batches around — so this is capped rather than unbounded. The cap is a
511
+ // budget, and the trusted ids spend it first: this tenant's own failures must not be
512
+ // crowded out of the page by a noisy neighbour's error lines.
513
+ const requestIds = [...trusted, ...candidates].slice(0, MAX_CORRELATED_INVOCATIONS);
514
+ const sibling = await Promise.all(requestIds.map(async (id) => {
515
+ const events = await queryRaw([{ key: '$metadata.requestId', operation: 'eq', type: 'string', value: id }], input.hours, MAX_LINES_PER_INVOCATION);
516
+ // An account-wide candidate earns its place only by producing this tenant's
517
+ // stamped line. No stamped line, or somebody else's, and the whole invocation is
518
+ // dropped — a line shown to the wrong tenant is exactly the leak the tenant grain
519
+ // exists to prevent, so the conservative direction is the only allowed one.
520
+ if (!trustedIds.has(id) && !events.some((e) => ownsInvocation(e, input)))
521
+ return [];
522
+ return events;
523
+ }));
524
+ // Merge, de-duplicate, drop the router's own access log, then apply the caller's
525
+ // level/search filters HERE rather than in phase one — a filter pushed into phase one
526
+ // would have hidden the stamped line whose request id is the only way to reach the
527
+ // line the caller is actually looking for.
528
+ const byId = new Map();
529
+ for (const e of [...stamped, ...sibling.flat()]) {
530
+ const source = (e['source'] ?? {});
531
+ if (source['router'] === 'request')
532
+ continue;
533
+ const metadata = (e['$metadata'] ?? {});
534
+ const id = typeof metadata['id'] === 'string' ? metadata['id'] : JSON.stringify(e);
535
+ byId.set(id, e);
536
+ }
537
+ const level = input.level?.toLowerCase();
538
+ const search = input.search;
539
+ return [...byId.values()]
540
+ .map((e) => projectEvent(e))
541
+ .map((e) => describeInvocation(e))
542
+ // A plain comparison is enough only because `describeInvocation` ran first: a stamped
543
+ // line has no level of its own (Cloudflare sets `$metadata.level` for a string log
544
+ // and leaves it unset for a pure JSON one), so without that step every one of them
545
+ // would be dropped here — and for `error` that would be actively wrong, since a
546
+ // failing invocation that wrote no console.error of its own is exactly the row being
547
+ // looked for, and phase one selected it BECAUSE it failed.
548
+ .filter((e) => (level ? e.level?.toLowerCase() === level : true))
549
+ .filter((e) => (search ? (e.message ?? '').includes(search) : true))
550
+ .sort((a, b) => (b.timestamp ?? 0) - (a.timestamp ?? 0))
551
+ .slice(0, input.limit);
552
+ }
553
+ /** The de-duplicated, order-preserving request ids of a page of events. */
554
+ function invocationIds(events) {
555
+ return [
556
+ ...new Set(events.map((e) => idOf(e)).filter((id) => typeof id === 'string' && id !== '')),
557
+ ];
558
+ }
559
+ /** `$metadata.requestId`, the key every line of one invocation shares. */
560
+ function idOf(e) {
561
+ const metadata = (e['$metadata'] ?? {});
562
+ const workers = (e['$workers'] ?? {});
563
+ const from = metadata['requestId'] ?? workers['requestId'];
564
+ return typeof from === 'string' ? from : null;
565
+ }
566
+ /** A telemetry `events` query returning the raw events, filters passed through. */
567
+ async function queryRaw(
568
+ // `value` is `string | number | boolean`: every filter was an equality on an id until
569
+ // the error read needed `status >= 500` (the one numeric comparison in this file) and
570
+ // `threw = true` (the one boolean).
571
+ filters, hours, limit) {
572
+ const to = Date.now();
573
+ const res = await authed(`https://api.cloudflare.com/client/v4/accounts/${opts.accountId}/workers/observability/telemetry/query`, {
574
+ queryId: 'substrat-tenant-logs',
575
+ view: 'events',
576
+ timeframe: { from: to - hours * 3_600_000, to },
577
+ parameters: { datasets: ['cloudflare-workers'], filters, limit },
578
+ limit,
579
+ });
580
+ const json = (await res.json());
581
+ if (!res.ok || json.success === false) {
582
+ const message = json.errors?.map((e) => e.message).join('; ') || `HTTP ${res.status}`;
583
+ throw new Error(`Cloudflare telemetry query failed: ${message}`);
584
+ }
585
+ const outer = json.result?.events;
586
+ return (Array.isArray(outer) ? outer : (outer?.events ?? []));
587
+ }
229
588
  /** One telemetry query — narrowed to a single service, or to none (the fleet view). */
230
589
  async function queryEvents(service, level, search, hours, limit) {
231
590
  const to = Date.now();
@@ -257,29 +616,7 @@ export function createCfObservabilityReader(opts) {
257
616
  // accept both rather than pinning to whichever shape was current at writing.
258
617
  const outer = json.result?.events;
259
618
  const events = (Array.isArray(outer) ? outer : (outer?.events ?? []));
260
- const str = (v) => (typeof v === 'string' ? v : null);
261
- const num = (v) => (typeof v === 'number' ? v : null);
262
- return events.map((e) => {
263
- const metadata = (e['$metadata'] ?? {});
264
- const workers = (e['$workers'] ?? {});
265
- return {
266
- timestamp: num(e['timestamp']),
267
- level: str(metadata['level']),
268
- message: str(metadata['message']),
269
- service: str(metadata['service']) ?? str(workers['scriptName']),
270
- outcome: str(workers['outcome']),
271
- // `$metadata.trigger` reads like `<entrypoint>.<method>` (e.g. `default.importDump`);
272
- // fall back to the `$workers.event` sub-shape (`rpcMethod`) when it is absent.
273
- trigger: str(metadata['trigger']) ??
274
- str(workers['event']?.['rpcMethod']),
275
- invocation: str(workers['eventType']),
276
- entrypoint: str(workers['entrypoint']),
277
- requestId: str(metadata['requestId']) ?? str(workers['requestId']),
278
- cpuTimeMs: num(workers['cpuTimeMs']),
279
- wallTimeMs: num(workers['wallTimeMs']),
280
- raw: e,
281
- };
282
- });
619
+ return events.map((e) => projectEvent(e));
283
620
  }
284
621
  /**
285
622
  * Outbound `fetch` spans for one service (#859).
@@ -1 +1 @@
1
- {"version":3,"file":"cf-observability.js","sourceRoot":"","sources":["../src/cf-observability.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cf-observability.js","sourceRoot":"","sources":["../src/cf-observability.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -33,6 +33,6 @@ export { createR2AccessLogSink, createR2BackupStore, createR2DirectoryBackupStor
33
33
  export { backupDirectoryIfDue } from './directory-backup.js';
34
34
  export type { DirectoryBackupOptions, DirectoryBackupResult } from './directory-backup.js';
35
35
  export { maskDump, maskRecords, MASKED } from './mask.js';
36
- export { createPseudonymizer, kindOf } from './pseudonymize.js';
36
+ export { createPseudonymizer, kindOf, kindUnder } from './pseudonymize.js';
37
37
  export type { PiiKind, Pseudonymizer } from './pseudonymize.js';
38
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -26,5 +26,5 @@ export { backupDirectoryIfDue } from './directory-backup.js';
26
26
  // generator, an adapter and a vertical in one process, and the only place all three meet
27
27
  // is a vertical's own suite — `demos/callout/test/masked-round-trip.test.ts`.
28
28
  export { maskDump, maskRecords, MASKED } from './mask.js';
29
- export { createPseudonymizer, kindOf } from './pseudonymize.js';
29
+ export { createPseudonymizer, kindOf, kindUnder } from './pseudonymize.js';
30
30
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAEpG,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EACL,yBAAyB,GAG1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAUrG,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,GAYzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAOjF,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAQhG,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,EAC/B,WAAW,EACX,cAAc,EACd,yBAAyB,EACzB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAQpE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,yFAAyF;AACzF,yFAAyF;AACzF,oFAAoF;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,uFAAuF;AACvF,yFAAyF;AACzF,uFAAuF;AACvF,yFAAyF;AACzF,8EAA8E;AAC9E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAEpG,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,EAC3B,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EACL,yBAAyB,GAG1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAUrG,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,GAYzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAOjF,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAQhG,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,EAC/B,WAAW,EACX,cAAc,EACd,yBAAyB,EACzB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAQpE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,yFAAyF;AACzF,yFAAyF;AACzF,oFAAoF;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,uFAAuF;AACvF,yFAAyF;AACzF,uFAAuF;AACvF,yFAAyF;AACzF,8EAA8E;AAC9E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../src/mask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAwB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA8FrF,kFAAkF;AAClF,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EAAE,EACxB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC,CAK3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAM7F;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../src/mask.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAmC,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAiHhG,kFAAkF;AAClF,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,cAAc,EAAE,EACxB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC,CAK3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAM7F;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
package/dist/mask.js CHANGED
@@ -1,4 +1,4 @@
1
- import { MASKED, kindOf } from './pseudonymize.js';
1
+ import { MASKED, kindOf, kindUnder } from './pseudonymize.js';
2
2
  /**
3
3
  * The default masking pass over a scope dump (preview-and-snapshots.md §6/§8).
4
4
  *
@@ -18,6 +18,16 @@ import { MASKED, kindOf } from './pseudonymize.js';
18
18
  * (consumers and timelines stay debuggable) while the PII fields inside them
19
19
  * are pseudonymized.
20
20
  *
21
+ * **Which tables the sweep reaches, since it is easy to read the wrong answer off a
22
+ * dump.** Both rules are table-agnostic: they judge a COLUMN NAME, so a vertical's own
23
+ * tables, an engine's tables and the `_substrat_*` spine are all swept by exactly the
24
+ * same rule. The gap #1369 measured was never a table the sweep skipped — it was a
25
+ * column NAME the heuristic did not recognise (`party_label`, `signatory_label`, and the
26
+ * `parties[].label` those become inside an outbox payload), which now reads as `label`.
27
+ * What is still true, and is the honest limit: a heuristic sweep only knows names, so a
28
+ * column called `x7` holding a person's name comes out verbatim from any table at all.
29
+ * That is why §6 gates the pull rather than trusting the mask.
30
+ *
21
31
  * What changed with #1034 is only what the masked branch WRITES. It used to be the
22
32
  * literal `[masked]` in every cell, which made a pulled scope structurally valid and
23
33
  * factually useless — every screen read `[masked]`, so nobody could drive a preview,
@@ -33,20 +43,24 @@ import { MASKED, kindOf } from './pseudonymize.js';
33
43
  */
34
44
  // Columns that carry JSON documents worth sweeping by key rather than blanking.
35
45
  const JSON_COLUMN = /(^|_)(payload|detail|details|data|before|after)($|_)/i;
36
- function sweepJson(value, kind, visit) {
46
+ function sweepJson(value, kind, visit, container) {
37
47
  if (typeof value === 'string')
38
48
  return kind && value ? visit(kind, value) : value;
49
+ // An array element has no key of its own, so it keeps BOTH the inherited kind (so
50
+ // `{ email: [a, b] }` sweeps both) and the enclosing key (so `parties: [{ label }]`
51
+ // still sees `parties` as the container `label` sits in).
39
52
  if (Array.isArray(value))
40
- return value.map((v) => sweepJson(v, kind, visit));
53
+ return value.map((v) => sweepJson(v, kind, visit, container));
41
54
  if (value !== null && typeof value === 'object') {
42
55
  const out = {};
43
56
  for (const [k, v] of Object.entries(value)) {
44
57
  // The child's OWN key wins when it is recognised: in `{ contact: { email } }`,
45
58
  // `contact` reads as `person`, and inheriting that would render a full name into
46
59
  // a field a consumer parses as an email. The inherited kind is the fallback for
47
- // keys the heuristic does not classify — and for array elements, which have no
48
- // key of their own, so `{ email: [a, b] }` still sweeps both.
49
- out[k] = sweepJson(v, kindOf(k) ?? kind, visit);
60
+ // keys the heuristic does not classify. `kindUnder` adds the one key that is read
61
+ // by its neighbourhood rather than by itself — `label` inside a person-ish
62
+ // container (#1369).
63
+ out[k] = sweepJson(v, kindUnder(k, container) ?? kind, visit, k);
50
64
  }
51
65
  return out;
52
66
  }