@nodii/telemetry 0.4.0 → 0.5.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/dist/agent-invocable.d.ts +1 -1
  2. package/dist/agent-invocable.d.ts.map +1 -1
  3. package/dist/agent-invocable.js +1 -1
  4. package/dist/agent-invocable.js.map +1 -1
  5. package/dist/audit.d.ts +30 -1
  6. package/dist/audit.d.ts.map +1 -1
  7. package/dist/audit.js +64 -11
  8. package/dist/audit.js.map +1 -1
  9. package/dist/configure.d.ts +27 -8
  10. package/dist/configure.d.ts.map +1 -1
  11. package/dist/configure.js +12 -7
  12. package/dist/configure.js.map +1 -1
  13. package/dist/context.d.ts +1 -1
  14. package/dist/context.d.ts.map +1 -1
  15. package/dist/drizzle/audit-schema.d.ts +82 -11
  16. package/dist/drizzle/audit-schema.d.ts.map +1 -1
  17. package/dist/drizzle/audit-schema.js +62 -4
  18. package/dist/drizzle/audit-schema.js.map +1 -1
  19. package/dist/drizzle/index.d.ts +2 -2
  20. package/dist/drizzle/index.d.ts.map +1 -1
  21. package/dist/drizzle/index.js +1 -1
  22. package/dist/drizzle/index.js.map +1 -1
  23. package/dist/index.d.ts +22 -21
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +16 -15
  26. package/dist/index.js.map +1 -1
  27. package/dist/init.d.ts +1 -1
  28. package/dist/init.d.ts.map +1 -1
  29. package/dist/init.js +19 -2
  30. package/dist/init.js.map +1 -1
  31. package/dist/intent.js +4 -4
  32. package/dist/intent.js.map +1 -1
  33. package/dist/logger.d.ts +1 -1
  34. package/dist/logger.d.ts.map +1 -1
  35. package/dist/logger.js +5 -5
  36. package/dist/logger.js.map +1 -1
  37. package/dist/metrics.d.ts +56 -2
  38. package/dist/metrics.d.ts.map +1 -1
  39. package/dist/metrics.js +86 -6
  40. package/dist/metrics.js.map +1 -1
  41. package/dist/otlp-adapter.d.ts +2 -2
  42. package/dist/otlp-adapter.d.ts.map +1 -1
  43. package/dist/otlp-adapter.js +25 -4
  44. package/dist/otlp-adapter.js.map +1 -1
  45. package/dist/outbox-emit.js +2 -2
  46. package/dist/outbox-emit.js.map +1 -1
  47. package/dist/traceparent.d.ts +60 -0
  48. package/dist/traceparent.d.ts.map +1 -0
  49. package/dist/traceparent.js +88 -0
  50. package/dist/traceparent.js.map +1 -0
  51. package/dist/tracer.d.ts +20 -4
  52. package/dist/tracer.d.ts.map +1 -1
  53. package/dist/tracer.js +38 -9
  54. package/dist/tracer.js.map +1 -1
  55. package/dist/types.d.ts +47 -3
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/types.js +66 -0
  58. package/dist/types.js.map +1 -1
  59. package/package.json +9 -3
@@ -1,4 +1,4 @@
1
- import { type AgentInvocableConfig } from "./types";
1
+ import { type AgentInvocableConfig } from "./types.js";
2
2
  export declare const AGENT_INVOCABLE_METADATA: unique symbol;
3
3
  /**
4
4
  * Method decorator. TS legacy decorators are still the only widely
@@ -1 +1 @@
1
- {"version":3,"file":"agent-invocable.d.ts","sourceRoot":"","sources":["../src/agent-invocable.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,wBAAwB,eAEpC,CAAC;AAoBF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,oBAAoB,IAGpD,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,kBAAkB,KAC7B,kBAAkB,CAuBtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,IAAI,EAAE,CAAC,GACN,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,oBAAoB,CAAC,CAM/C"}
1
+ {"version":3,"file":"agent-invocable.d.ts","sourceRoot":"","sources":["../src/agent-invocable.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,wBAAwB,eAEpC,CAAC;AAoBF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,oBAAoB,IAGpD,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,kBAAkB,KAC7B,kBAAkB,CAuBtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,IAAI,EAAE,CAAC,GACN,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,oBAAoB,CAAC,CAM/C"}
@@ -6,7 +6,7 @@
6
6
  // under a well-known symbol so the codegen step (a separate tsc AST
7
7
  // walk in TS-8 wave 2) can also discover registrations via runtime
8
8
  // import if it falls back from the AST path.
9
- import { AGENT_INVOCABLE_SIDE_EFFECTS, } from "./types";
9
+ import { AGENT_INVOCABLE_SIDE_EFFECTS, } from "./types.js";
10
10
  export const AGENT_INVOCABLE_METADATA = Symbol.for("@nodii/telemetry/agentInvocable");
11
11
  function validate(cfg) {
12
12
  if (cfg.mode === "strict-only" && !cfg.allowedPipelines?.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-invocable.js","sourceRoot":"","sources":["../src/agent-invocable.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,4DAA4D;AAC5D,8DAA8D;AAC9D,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,mEAAmE;AACnE,6CAA6C;AAE7C,OAAO,EACL,4BAA4B,GAE7B,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAChD,iCAAiC,CAClC,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAyB;IACzC,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,2CAA2C,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,GAAyB;IACtD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,SAAS,QAAQ,CACtB,MAAc,EACd,WAA4B,EAC5B,UAA8B;QAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;QACJ,CAAC;QACD,iDAAiD;QAChD,QAA+C,CAAC,wBAAwB,CAAC;YACxE,GAAG,CAAC;QACN,4DAA4D;QAC5D,MAAM,IAAI,GAAI,MAAkC,CAAC,WAGhD,CAAC;QACF,MAAM,QAAQ,GACX,IAAI,CAAC,wBAAwB,CAEhB,IAAI,EAAE,CAAC;QACvB,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;QAC5B,IAAI,CAAC,wBAAwB,CAAC,GAAG,QAAQ,CAAC;QAC1C,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAO;IAEP,OAAO,CACH,IAA2C,CAC3C,wBAAwB,CACyB,IAAI,EAAE,CAC1D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"agent-invocable.js","sourceRoot":"","sources":["../src/agent-invocable.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,4DAA4D;AAC5D,8DAA8D;AAC9D,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,mEAAmE;AACnE,6CAA6C;AAE7C,OAAO,EACL,4BAA4B,GAE7B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAChD,iCAAiC,CAClC,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAyB;IACzC,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,2CAA2C,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,GAAyB;IACtD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,SAAS,QAAQ,CACtB,MAAc,EACd,WAA4B,EAC5B,UAA8B;QAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;QACJ,CAAC;QACD,iDAAiD;QAChD,QAA+C,CAAC,wBAAwB,CAAC;YACxE,GAAG,CAAC;QACN,4DAA4D;QAC5D,MAAM,IAAI,GAAI,MAAkC,CAAC,WAGhD,CAAC;QACF,MAAM,QAAQ,GACX,IAAI,CAAC,wBAAwB,CAEhB,IAAI,EAAE,CAAC;QACvB,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;QAC5B,IAAI,CAAC,wBAAwB,CAAC,GAAG,QAAQ,CAAC;QAC1C,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAO;IAEP,OAAO,CACH,IAA2C,CAC3C,wBAAwB,CACyB,IAAI,EAAE,CAC1D,CAAC;AACJ,CAAC"}
package/dist/audit.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, type ActorKind, type AuditOutcome } from "./audit-types";
1
+ import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, type ActorKind, type AuditOutcome } from "./audit-types.js";
2
2
  export { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES };
3
3
  export type { ActorKind, AuditOutcome };
4
4
  /**
@@ -187,6 +187,35 @@ export interface AuditChainAdapter {
187
187
  export declare class TelemetryAuditWriterMissing extends Error {
188
188
  constructor();
189
189
  }
190
+ /**
191
+ * Provider for a DEFAULT `AuditWriter`, populated by `@nodii/audit-chain`
192
+ * (the optional peer) when it initializes. This is the f08a4471 /
193
+ * e6b303f1 "default audit.emit delegates to @nodii/audit-chain" path:
194
+ * when a service has `@nodii/audit-chain` installed + initialized, that
195
+ * lib registers a provider here, and telemetry's `audit.emit` routes to
196
+ * it WITHOUT the consumer calling `initTelemetry({auditWriter})` or
197
+ * `configureTelemetry({audit:{writer}})`.
198
+ *
199
+ * The provider is lazy (a factory) so audit-chain only constructs the
200
+ * writer once, on first use, after its own `initAuditChain(...)` has
201
+ * resolved its store + signing config. Returns `null` until audit-chain
202
+ * registers it — in which case `audit.emit` fails fast
203
+ * (`TelemetryAuditWriterMissing`) rather than silently no-op'ing (R1).
204
+ */
205
+ export type DefaultAuditWriterProvider = () => AuditWriter;
206
+ /**
207
+ * SDK-internal: `@nodii/audit-chain` calls this from `initAuditChain(...)`
208
+ * (via its `installTelemetryAuditDefault()` bridge) to register itself as
209
+ * telemetry's DEFAULT audit writer. After this, `audit.emit` routes to
210
+ * audit-chain automatically with no consumer wiring. An explicit writer
211
+ * (`_setAuditWriter`) still takes precedence. Passing `null` removes the
212
+ * default (used by `initAuditChain`'s test reset).
213
+ */
214
+ export declare function _setDefaultAuditWriterProvider(provider: DefaultAuditWriterProvider | null): void;
215
+ /** SDK-internal: is a default writer (or explicit writer) available? */
216
+ export declare function _hasAnyAuditWriter(): boolean;
217
+ /** Test-only reset of the default-writer provider + its memoised writer. */
218
+ export declare function _resetDefaultAuditWriterForTests(): void;
190
219
  /**
191
220
  * SDK-internal: services or the `@nodii/db-rls` adapter sets the writer.
192
221
  * Public callers MUST NOT call this; the override exists for the adapter
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
package/dist/audit.js CHANGED
@@ -14,10 +14,10 @@
14
14
  // - Pattern A — explicit tx pass: `audit.emit(tx, args)`
15
15
  // - Pattern B — Hono `c.set("txn", tx)` middleware: also `audit.emit(tx, args)`
16
16
  // - Pattern C — out-of-band: `audit.emit(args)` (writer owns its tx)
17
- import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, } from "./audit-types";
18
- import { getContext } from "./context";
19
- import { requireTelemetry } from "./init";
20
- import { uuidv7 } from "./uuid";
17
+ import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, } from "./audit-types.js";
18
+ import { getContext } from "./context.js";
19
+ import { requireTelemetry } from "./init.js";
20
+ import { uuidv7 } from "./uuid.js";
21
21
  export { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES };
22
22
  /**
23
23
  * Thrown by `audit.emit` when no `AuditWriter` has been wired. v0.1.2
@@ -28,10 +28,14 @@ export { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES };
28
28
  export class TelemetryAuditWriterMissing extends Error {
29
29
  constructor() {
30
30
  super("@nodii/telemetry: audit.emit called before an AuditWriter was wired. " +
31
- "Drift 4cc80f62 (R1, breaking) removed the v0.1.0–v0.1.1 Noop default " +
32
- "because it silently dropped audit rows. Wire a real writer via " +
33
- "`_setAuditWriter(...)` (typically from `@nodii/db-rls`'s adapter " +
34
- "writing to <serviceName>_audit_event per 02-audit-doctrine.md § 6.0).");
31
+ "Drift 4cc80f62 + request e6b303f1 (R1) removed the v0.1.0–v0.1.1 " +
32
+ "Noop default because it silently dropped audit rows in production. " +
33
+ "Either (a) install + initialize `@nodii/audit-chain` its " +
34
+ "initAuditChain(...) auto-registers as telemetry's default audit " +
35
+ "writer (no further wiring needed), or (b) wire a service writer via " +
36
+ "`configureTelemetry({audit:{writer}})` / `_setAuditWriter(...)` " +
37
+ "(typically from `@nodii/db-rls`'s adapter writing to " +
38
+ "<serviceName>_audit_event per 02-audit-doctrine.md § 5.1 + § 6.0).");
35
39
  this.name = "TelemetryAuditWriterMissing";
36
40
  }
37
41
  }
@@ -46,10 +50,56 @@ const NODII_TELEMETRY_AUDIT_KEY = Symbol.for("@nodii/telemetry::audit-state");
46
50
  function getAuditState() {
47
51
  const g = globalThis;
48
52
  if (!g[NODII_TELEMETRY_AUDIT_KEY]) {
49
- g[NODII_TELEMETRY_AUDIT_KEY] = { writer: null, chain: null };
53
+ g[NODII_TELEMETRY_AUDIT_KEY] = {
54
+ writer: null,
55
+ chain: null,
56
+ defaultWriterProvider: null,
57
+ resolvedDefaultWriter: null,
58
+ };
50
59
  }
51
60
  return g[NODII_TELEMETRY_AUDIT_KEY];
52
61
  }
62
+ /**
63
+ * SDK-internal: `@nodii/audit-chain` calls this from `initAuditChain(...)`
64
+ * (via its `installTelemetryAuditDefault()` bridge) to register itself as
65
+ * telemetry's DEFAULT audit writer. After this, `audit.emit` routes to
66
+ * audit-chain automatically with no consumer wiring. An explicit writer
67
+ * (`_setAuditWriter`) still takes precedence. Passing `null` removes the
68
+ * default (used by `initAuditChain`'s test reset).
69
+ */
70
+ export function _setDefaultAuditWriterProvider(provider) {
71
+ const state = getAuditState();
72
+ state.defaultWriterProvider = provider;
73
+ state.resolvedDefaultWriter = null;
74
+ }
75
+ /** SDK-internal: is a default writer (or explicit writer) available? */
76
+ export function _hasAnyAuditWriter() {
77
+ const state = getAuditState();
78
+ return state.writer !== null || state.defaultWriterProvider !== null;
79
+ }
80
+ /** Test-only reset of the default-writer provider + its memoised writer. */
81
+ export function _resetDefaultAuditWriterForTests() {
82
+ const state = getAuditState();
83
+ state.defaultWriterProvider = null;
84
+ state.resolvedDefaultWriter = null;
85
+ }
86
+ /**
87
+ * Resolve the effective writer: an explicit one wins; otherwise the
88
+ * audit-chain default (lazily constructed + memoised). Returns `null`
89
+ * when neither is available — `emitImpl` then throws (R1 fail-fast).
90
+ */
91
+ function resolveWriter() {
92
+ const state = getAuditState();
93
+ if (state.writer !== null)
94
+ return state.writer;
95
+ if (state.resolvedDefaultWriter !== null)
96
+ return state.resolvedDefaultWriter;
97
+ if (state.defaultWriterProvider !== null) {
98
+ state.resolvedDefaultWriter = state.defaultWriterProvider();
99
+ return state.resolvedDefaultWriter;
100
+ }
101
+ return null;
102
+ }
53
103
  /**
54
104
  * SDK-internal: services or the `@nodii/db-rls` adapter sets the writer.
55
105
  * Public callers MUST NOT call this; the override exists for the adapter
@@ -249,7 +299,10 @@ function resolveRow(args) {
249
299
  async function emitImpl(args, tx) {
250
300
  requireTelemetry();
251
301
  const state = getAuditState();
252
- if (state.writer === null) {
302
+ const writer = resolveWriter();
303
+ if (writer === null) {
304
+ // R1 fail-fast: NO silent noop. Either an explicit writer or the
305
+ // `@nodii/audit-chain` default must be wired before the first emit.
253
306
  throw new TelemetryAuditWriterMissing();
254
307
  }
255
308
  const row = resolveRow(args);
@@ -259,7 +312,7 @@ async function emitImpl(args, tx) {
259
312
  row.row_hash = augmented.row_hash;
260
313
  row.tenant_audit_seq = augmented.tenant_audit_seq;
261
314
  }
262
- await state.writer(row, tx);
315
+ await writer(row, tx);
263
316
  }
264
317
  async function emit(a, b) {
265
318
  if (b !== undefined) {
package/dist/audit.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,30 @@
1
- import { type AuditChainAdapter } from "./audit";
1
+ import { type AuditChainAdapter, type AuditWriter } from "./audit.js";
2
2
  /**
3
- * Arguments to `configureTelemetry`. Currently only `audit.chain` is
4
- * supported; the shape exists so additional knobs (e.g. log redaction
5
- * overrides, custom exporters) can be added without an API break.
3
+ * Arguments to `configureTelemetry`. Supports `audit.writer` (the
4
+ * service's rich-row Postgres write path) + `audit.chain` (the optional
5
+ * tamper-evident chain layer). The shape leaves room for additional
6
+ * knobs (log redaction overrides, custom exporters) without an API break.
7
+ *
8
+ * Wiring example per D199:
9
+ *
10
+ * configureTelemetry({
11
+ * audit: {
12
+ * writer: postgresAuditWriter(db, "auth"),
13
+ * chain: createDoctrineChainAdapter({ storage }),
14
+ * },
15
+ * });
6
16
  */
7
17
  export interface ConfigureTelemetryOptions {
8
18
  audit?: {
19
+ /**
20
+ * The service rich-row write path per `02-audit-doctrine.md § 5.1`.
21
+ * Wiring it here is equivalent to `_setAuditWriter(...)` (the
22
+ * SDK-internal hook). When NEITHER a writer NOR `@nodii/audit-chain`
23
+ * (the optional-peer default) is wired, `audit.emit` THROWS
24
+ * `TelemetryAuditWriterMissing` — there is no silent Noop default
25
+ * (R1, request e6b303f1).
26
+ */
27
+ writer?: AuditWriter;
9
28
  /**
10
29
  * Opt-in tamper-evident chain layer per `02-audit-doctrine.md § 13` +
11
30
  * § 15.3. When wired, every `audit.emit` row receives `prev_hash`,
@@ -25,10 +44,10 @@ export interface ConfigureTelemetryOptions {
25
44
  };
26
45
  }
27
46
  /**
28
- * Wire optional telemetry adapters. Currently the only knob is
29
- * `audit.chain`. Idempotent: calling repeatedly with `audit.chain` set
30
- * replaces the previously-wired adapter; calling with `audit` undefined
31
- * leaves the existing wiring intact.
47
+ * Wire optional telemetry adapters (`audit.writer` + `audit.chain`).
48
+ * Idempotent: calling repeatedly with a knob set replaces the previously
49
+ * wired value; calling with `audit` undefined leaves the existing wiring
50
+ * intact.
32
51
  */
33
52
  export declare function configureTelemetry(opts: ConfigureTelemetryOptions): void;
34
53
  //# sourceMappingURL=configure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkB,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjE;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE;QACN;;;;;;;;;;;;;;WAcG;QACH,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;KAClC,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,CAIxE"}
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAWA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE;QACN;;;;;;;WAOG;QACH,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB;;;;;;;;;;;;;;WAcG;QACH,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;KAClC,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,CASxE"}
package/dist/configure.js CHANGED
@@ -8,16 +8,21 @@
8
8
  // once secrets/clients are resolved). The library reads the wired
9
9
  // adapter inside `audit.emit` at write time — there is no init-time
10
10
  // snapshot.
11
- import { _setAuditChain } from "./audit";
11
+ import { _setAuditChain, _setAuditWriter, } from "./audit.js";
12
12
  /**
13
- * Wire optional telemetry adapters. Currently the only knob is
14
- * `audit.chain`. Idempotent: calling repeatedly with `audit.chain` set
15
- * replaces the previously-wired adapter; calling with `audit` undefined
16
- * leaves the existing wiring intact.
13
+ * Wire optional telemetry adapters (`audit.writer` + `audit.chain`).
14
+ * Idempotent: calling repeatedly with a knob set replaces the previously
15
+ * wired value; calling with `audit` undefined leaves the existing wiring
16
+ * intact.
17
17
  */
18
18
  export function configureTelemetry(opts) {
19
- if (opts.audit !== undefined && "chain" in opts.audit) {
20
- _setAuditChain(opts.audit.chain ?? null);
19
+ if (opts.audit !== undefined) {
20
+ if ("writer" in opts.audit && opts.audit.writer !== undefined) {
21
+ _setAuditWriter(opts.audit.writer);
22
+ }
23
+ if ("chain" in opts.audit) {
24
+ _setAuditChain(opts.audit.chain ?? null);
25
+ }
21
26
  }
22
27
  }
23
28
  //# sourceMappingURL=configure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,uEAAuE;AACvE,6DAA6D;AAC7D,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,qEAAqE;AACrE,kEAAkE;AAClE,oEAAoE;AACpE,YAAY;AAEZ,OAAO,EAAE,cAAc,EAA0B,MAAM,SAAS,CAAC;AA4BjE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA+B;IAChE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACtD,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,uEAAuE;AACvE,6DAA6D;AAC7D,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,qEAAqE;AACrE,kEAAkE;AAClE,oEAAoE;AACpE,YAAY;AAEZ,OAAO,EACL,cAAc,EACd,eAAe,GAGhB,MAAM,YAAY,CAAC;AA+CpB;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA+B;IAChE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9D,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/context.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { NodiiContext } from "./types";
1
+ import type { NodiiContext } from "./types.js";
2
2
  /**
3
3
  * Returns the active `NodiiContext`, or null if no middleware adapter
4
4
  * has set one for this async scope (cron-flow before the
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,YAAY,GAAG,IAAI,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAQ7C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,YAAY,CAUd"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,YAAY,GAAG,IAAI,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAQ7C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,YAAY,CAUd"}
@@ -1,4 +1,4 @@
1
- import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, type ActorKind, type AuditOutcome } from "../audit-types";
1
+ import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, type ActorKind, type AuditOutcome } from "../audit-types.js";
2
2
  export { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES };
3
3
  export type { ActorKind, AuditOutcome };
4
4
  /**
@@ -200,7 +200,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
200
200
  baseColumn: never;
201
201
  identity: undefined;
202
202
  generated: undefined;
203
- }, {}, {}>;
203
+ }, {}, {
204
+ $type: Record<string, unknown> | null;
205
+ }>;
204
206
  action: import("drizzle-orm/pg-core").PgColumn<{
205
207
  name: "action";
206
208
  tableName: `${Name}_audit_event`;
@@ -404,7 +406,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
404
406
  baseColumn: never;
405
407
  identity: undefined;
406
408
  generated: undefined;
407
- }, {}, {}>;
409
+ }, {}, {
410
+ $type: Record<string, unknown> | null;
411
+ }>;
408
412
  before: import("drizzle-orm/pg-core").PgColumn<{
409
413
  name: "before";
410
414
  tableName: `${Name}_audit_event`;
@@ -421,7 +425,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
421
425
  baseColumn: never;
422
426
  identity: undefined;
423
427
  generated: undefined;
424
- }, {}, {}>;
428
+ }, {}, {
429
+ $type: Record<string, unknown> | null;
430
+ }>;
425
431
  after: import("drizzle-orm/pg-core").PgColumn<{
426
432
  name: "after";
427
433
  tableName: `${Name}_audit_event`;
@@ -438,7 +444,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
438
444
  baseColumn: never;
439
445
  identity: undefined;
440
446
  generated: undefined;
441
- }, {}, {}>;
447
+ }, {}, {
448
+ $type: Record<string, unknown> | null;
449
+ }>;
442
450
  patch: import("drizzle-orm/pg-core").PgColumn<{
443
451
  name: "patch";
444
452
  tableName: `${Name}_audit_event`;
@@ -455,7 +463,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
455
463
  baseColumn: never;
456
464
  identity: undefined;
457
465
  generated: undefined;
458
- }, {}, {}>;
466
+ }, {}, {
467
+ $type: Record<string, unknown> | null;
468
+ }>;
459
469
  changedFields: import("drizzle-orm/pg-core").PgColumn<{
460
470
  name: "changed_fields";
461
471
  tableName: `${Name}_audit_event`;
@@ -485,10 +495,20 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
485
495
  baseColumn: never;
486
496
  identity: undefined;
487
497
  generated: undefined;
488
- }, object, object>;
498
+ }, {}, {}>;
489
499
  identity: undefined;
490
500
  generated: undefined;
491
- }, {}, {}>;
501
+ }, {}, {
502
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
503
+ name: "changed_fields";
504
+ dataType: "string";
505
+ columnType: "PgText";
506
+ data: string;
507
+ enumValues: [string, ...string[]];
508
+ driverParam: string;
509
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
510
+ size: undefined;
511
+ }>;
492
512
  reasonCode: import("drizzle-orm/pg-core").PgColumn<{
493
513
  name: "reason_code";
494
514
  tableName: `${Name}_audit_event`;
@@ -777,7 +797,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
777
797
  baseColumn: never;
778
798
  identity: undefined;
779
799
  generated: undefined;
780
- }, {}, {}>;
800
+ }, {}, {
801
+ pgColumnBuilderBrand: "PgCustomColumnBuilderBrand";
802
+ }>;
781
803
  rowHash: import("drizzle-orm/pg-core").PgColumn<{
782
804
  name: "row_hash";
783
805
  tableName: `${Name}_audit_event`;
@@ -794,7 +816,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
794
816
  baseColumn: never;
795
817
  identity: undefined;
796
818
  generated: undefined;
797
- }, {}, {}>;
819
+ }, {}, {
820
+ pgColumnBuilderBrand: "PgCustomColumnBuilderBrand";
821
+ }>;
798
822
  tenantAuditSeq: import("drizzle-orm/pg-core").PgColumn<{
799
823
  name: "tenant_audit_seq";
800
824
  tableName: `${Name}_audit_event`;
@@ -828,7 +852,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
828
852
  baseColumn: never;
829
853
  identity: undefined;
830
854
  generated: undefined;
831
- }, {}, {}>;
855
+ }, {}, {
856
+ $type: Record<string, unknown>;
857
+ }>;
832
858
  };
833
859
  dialect: "pg";
834
860
  }>;
@@ -879,6 +905,51 @@ export declare function auditEventIndexes<T extends ReturnType<typeof makeAuditE
879
905
  *
880
906
  * Indexes from `auditEventIndexes` are still created against the parent
881
907
  * table — Postgres propagates them to existing + future child partitions.
908
+ *
909
+ * D204 (Locked 2026-06-04) — Postgres partitioning rules drive three
910
+ * constraints that the original DDL got wrong (it failed `CREATE TABLE` on
911
+ * PG16):
912
+ * 1. A partitioned table's PRIMARY KEY MUST include every partition
913
+ * column. The partition key is `at`, so the PK is the composite
914
+ * `(id, at)` — declared as a table-level constraint. `id` keeps
915
+ * `NOT NULL DEFAULT gen_random_uuid()`.
916
+ * 2. `parent_audit_event_id` is a PLAIN `UUID` with NO self-FK. A
917
+ * self-foreign-key cannot reference the now-composite PK (a single-col
918
+ * FK can only target a single-col unique/PK), and D204 picks the
919
+ * `makeAuditEventTable` posture (plain UUID soft reference) as
920
+ * canonical.
921
+ * 3. Per-tenant `tenant_audit_seq` UNIQUEness does NOT live on this
922
+ * partitioned table (a unique index on a partitioned table would have
923
+ * to include the partition key `at`, which would not enforce the
924
+ * intended per-tenant invariant). Uniqueness rides on the chain table
925
+ * `<svc>_audit_rows` (owned by `@nodii/audit-chain`). This function
926
+ * emits no `(tenant_id, tenant_audit_seq)` index at all; the 8 §3
927
+ * B-tree indexes are non-unique and are created by Drizzle from
928
+ * `makeAuditEventTable` (or directly by the consumer migration).
882
929
  */
883
930
  export declare function auditEventPartitionDDL(serviceName: string): string;
931
+ /**
932
+ * The 8 canonical §3 B-tree indexes as raw `CREATE INDEX` DDL for the
933
+ * partitioned `<serviceName>_audit_event` parent table emitted by
934
+ * `auditEventPartitionDDL`. Companion to that function for consumers that
935
+ * adopt monthly partitioning and therefore cannot let Drizzle's declarative
936
+ * migration own the table (and thus its indexes).
937
+ *
938
+ * Mirrors `makeAuditEventTable`'s inline index set 1:1 with two D204
939
+ * differences that partitioning forces:
940
+ * - Every index is NON-unique. The `(tenant_id, tenant_audit_seq)` index
941
+ * is a plain B-tree here, NOT a unique index — a unique index on a
942
+ * partitioned table must include the partition key `at`, which would not
943
+ * enforce the intended per-tenant invariant. Per-tenant
944
+ * `tenant_audit_seq` uniqueness rides on the chain table
945
+ * `<svc>_audit_rows` (owned by `@nodii/audit-chain`).
946
+ * - Indexes are created against the parent partitioned table; Postgres
947
+ * propagates them to existing + future child partitions.
948
+ *
949
+ * Returns the statements as an array (one `CREATE INDEX` per element) so the
950
+ * caller can apply them individually. Postgres has no `CREATE INDEX IF NOT
951
+ * EXISTS ... CONCURRENTLY` ordering concerns here — these run inside the same
952
+ * migration transaction that created the parent table.
953
+ */
954
+ export declare function auditEventPartitionIndexDDL(serviceName: string): string[];
884
955
  //# sourceMappingURL=audit-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-schema.d.ts","sourceRoot":"","sources":["../../src/drizzle/audit-schema.ts"],"names":[],"mappings":"AAyCA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAoBxC;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAQ9B,CAAC;AAET;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAO3B,CAAC;AAET,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,qLAAgD,CAAC;AAEhF,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,kIAA0C,CAAC;AAExE;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAC3D,WAAW,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoHlB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAChD,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;EA2B/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAmDlE"}
1
+ {"version":3,"file":"audit-schema.d.ts","sourceRoot":"","sources":["../../src/drizzle/audit-schema.ts"],"names":[],"mappings":"AAyCA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAoBxC;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAQ9B,CAAC;AAET;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAO3B,CAAC;AAET,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,qLAAgD,CAAC;AAEhF,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,kIAA0C,CAAC;AAExE;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAC3D,WAAW,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoHlB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAChD,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;EA2B/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAoDlE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAYzE"}
@@ -25,7 +25,7 @@
25
25
  // `AUDIT_OUTCOME_ENUM_DDL` so service migrations can run them once.
26
26
  import { bigint, customType, index, inet, integer, jsonb, pgEnum, pgTable, text, timestamp, uniqueIndex, uuid, } from "drizzle-orm/pg-core";
27
27
  import { sql } from "drizzle-orm";
28
- import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, } from "../audit-types";
28
+ import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, } from "../audit-types.js";
29
29
  export { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES };
30
30
  /**
31
31
  * `bytea` column for the audit-chain hash columns (`prev_hash`, `row_hash`).
@@ -212,11 +212,32 @@ export function auditEventIndexes(table, _serviceName) {
212
212
  *
213
213
  * Indexes from `auditEventIndexes` are still created against the parent
214
214
  * table — Postgres propagates them to existing + future child partitions.
215
+ *
216
+ * D204 (Locked 2026-06-04) — Postgres partitioning rules drive three
217
+ * constraints that the original DDL got wrong (it failed `CREATE TABLE` on
218
+ * PG16):
219
+ * 1. A partitioned table's PRIMARY KEY MUST include every partition
220
+ * column. The partition key is `at`, so the PK is the composite
221
+ * `(id, at)` — declared as a table-level constraint. `id` keeps
222
+ * `NOT NULL DEFAULT gen_random_uuid()`.
223
+ * 2. `parent_audit_event_id` is a PLAIN `UUID` with NO self-FK. A
224
+ * self-foreign-key cannot reference the now-composite PK (a single-col
225
+ * FK can only target a single-col unique/PK), and D204 picks the
226
+ * `makeAuditEventTable` posture (plain UUID soft reference) as
227
+ * canonical.
228
+ * 3. Per-tenant `tenant_audit_seq` UNIQUEness does NOT live on this
229
+ * partitioned table (a unique index on a partitioned table would have
230
+ * to include the partition key `at`, which would not enforce the
231
+ * intended per-tenant invariant). Uniqueness rides on the chain table
232
+ * `<svc>_audit_rows` (owned by `@nodii/audit-chain`). This function
233
+ * emits no `(tenant_id, tenant_audit_seq)` index at all; the 8 §3
234
+ * B-tree indexes are non-unique and are created by Drizzle from
235
+ * `makeAuditEventTable` (or directly by the consumer migration).
215
236
  */
216
237
  export function auditEventPartitionDDL(serviceName) {
217
238
  return `
218
239
  CREATE TABLE ${serviceName}_audit_event (
219
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
240
+ id UUID NOT NULL DEFAULT gen_random_uuid(),
220
241
  tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE RESTRICT,
221
242
  at TIMESTAMPTZ NOT NULL DEFAULT now(),
222
243
  actor_kind audit_actor_kind NOT NULL,
@@ -254,15 +275,52 @@ CREATE TABLE ${serviceName}_audit_event (
254
275
  idempotency_key TEXT,
255
276
  queue_name TEXT,
256
277
  job_id TEXT,
257
- parent_audit_event_id UUID REFERENCES ${serviceName}_audit_event(id),
278
+ parent_audit_event_id UUID,
258
279
  read_count INTEGER,
259
280
  first_read_at TIMESTAMPTZ,
260
281
  last_read_at TIMESTAMPTZ,
261
282
  prev_hash BYTEA,
262
283
  row_hash BYTEA,
263
284
  tenant_audit_seq BIGINT,
264
- metadata JSONB NOT NULL DEFAULT '{}'::jsonb
285
+ metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
286
+ PRIMARY KEY (id, at)
265
287
  ) PARTITION BY RANGE (at);
266
288
  `.trim();
267
289
  }
290
+ /**
291
+ * The 8 canonical §3 B-tree indexes as raw `CREATE INDEX` DDL for the
292
+ * partitioned `<serviceName>_audit_event` parent table emitted by
293
+ * `auditEventPartitionDDL`. Companion to that function for consumers that
294
+ * adopt monthly partitioning and therefore cannot let Drizzle's declarative
295
+ * migration own the table (and thus its indexes).
296
+ *
297
+ * Mirrors `makeAuditEventTable`'s inline index set 1:1 with two D204
298
+ * differences that partitioning forces:
299
+ * - Every index is NON-unique. The `(tenant_id, tenant_audit_seq)` index
300
+ * is a plain B-tree here, NOT a unique index — a unique index on a
301
+ * partitioned table must include the partition key `at`, which would not
302
+ * enforce the intended per-tenant invariant. Per-tenant
303
+ * `tenant_audit_seq` uniqueness rides on the chain table
304
+ * `<svc>_audit_rows` (owned by `@nodii/audit-chain`).
305
+ * - Indexes are created against the parent partitioned table; Postgres
306
+ * propagates them to existing + future child partitions.
307
+ *
308
+ * Returns the statements as an array (one `CREATE INDEX` per element) so the
309
+ * caller can apply them individually. Postgres has no `CREATE INDEX IF NOT
310
+ * EXISTS ... CONCURRENTLY` ordering concerns here — these run inside the same
311
+ * migration transaction that created the parent table.
312
+ */
313
+ export function auditEventPartitionIndexDDL(serviceName) {
314
+ const t = `${serviceName}_audit_event`;
315
+ return [
316
+ `CREATE INDEX ${serviceName}_audit_tenant_time ON ${t} (tenant_id, at);`,
317
+ `CREATE INDEX ${serviceName}_audit_resource ON ${t} (tenant_id, resource_type, resource_id, at);`,
318
+ `CREATE INDEX ${serviceName}_audit_action_outcome ON ${t} (tenant_id, action, outcome, at);`,
319
+ `CREATE INDEX ${serviceName}_audit_actor ON ${t} (tenant_id, actor_id, at);`,
320
+ `CREATE INDEX ${serviceName}_audit_correlation ON ${t} (tenant_id, correlation_id);`,
321
+ `CREATE INDEX ${serviceName}_audit_trace ON ${t} (tenant_id, trace_id);`,
322
+ `CREATE INDEX ${serviceName}_audit_saga ON ${t} (tenant_id, saga_id, at) WHERE saga_id IS NOT NULL;`,
323
+ `CREATE INDEX ${serviceName}_audit_tenant_seq ON ${t} (tenant_id, tenant_audit_seq) WHERE tenant_audit_seq IS NOT NULL;`,
324
+ ];
325
+ }
268
326
  //# sourceMappingURL=audit-schema.js.map