pipework 0.8.11 → 0.8.13

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 (97) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cli/commands/test.d.ts +1 -0
  3. package/dist/cli/commands/test.d.ts.map +1 -1
  4. package/dist/cli/commands/test.js +24 -1
  5. package/dist/cli/commands/test.js.map +1 -1
  6. package/dist/cli/index.d.ts.map +1 -1
  7. package/dist/cli/index.js +4 -0
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/core/config/namespace.d.ts +1 -0
  10. package/dist/core/config/namespace.d.ts.map +1 -1
  11. package/dist/core/config/schema.d.ts +3 -0
  12. package/dist/core/config/schema.d.ts.map +1 -1
  13. package/dist/core/config/schema.js +2 -0
  14. package/dist/core/config/schema.js.map +1 -1
  15. package/dist/data/migrate/internal-definitions.d.ts.map +1 -1
  16. package/dist/data/migrate/internal-definitions.js +4 -0
  17. package/dist/data/migrate/internal-definitions.js.map +1 -1
  18. package/dist/data/valve/artifact.d.ts +18 -0
  19. package/dist/data/valve/artifact.d.ts.map +1 -0
  20. package/dist/data/valve/artifact.js +15 -0
  21. package/dist/data/valve/artifact.js.map +1 -0
  22. package/dist/data/valve/contract-diff.d.ts +15 -0
  23. package/dist/data/valve/contract-diff.d.ts.map +1 -0
  24. package/dist/data/valve/contract-diff.js +12 -0
  25. package/dist/data/valve/contract-diff.js.map +1 -0
  26. package/dist/data/valve/cross.d.ts +15 -0
  27. package/dist/data/valve/cross.d.ts.map +1 -0
  28. package/dist/data/valve/cross.js +48 -0
  29. package/dist/data/valve/cross.js.map +1 -0
  30. package/dist/data/valve/crossing-ledger.d.ts +24 -0
  31. package/dist/data/valve/crossing-ledger.d.ts.map +1 -0
  32. package/dist/data/valve/crossing-ledger.js +38 -0
  33. package/dist/data/valve/crossing-ledger.js.map +1 -0
  34. package/dist/data/valve/decision.d.ts +29 -0
  35. package/dist/data/valve/decision.d.ts.map +1 -0
  36. package/dist/data/valve/decision.js +19 -0
  37. package/dist/data/valve/decision.js.map +1 -0
  38. package/dist/data/valve/durable-crossing.d.ts +25 -0
  39. package/dist/data/valve/durable-crossing.d.ts.map +1 -0
  40. package/dist/data/valve/durable-crossing.js +32 -0
  41. package/dist/data/valve/durable-crossing.js.map +1 -0
  42. package/dist/data/valve/execute-crossing.d.ts +17 -0
  43. package/dist/data/valve/execute-crossing.d.ts.map +1 -0
  44. package/dist/data/valve/execute-crossing.js +58 -0
  45. package/dist/data/valve/execute-crossing.js.map +1 -0
  46. package/dist/data/valve/faucet.d.ts +18 -0
  47. package/dist/data/valve/faucet.d.ts.map +1 -0
  48. package/dist/data/valve/faucet.js +34 -0
  49. package/dist/data/valve/faucet.js.map +1 -0
  50. package/dist/data/valve/gate.d.ts +28 -0
  51. package/dist/data/valve/gate.d.ts.map +1 -0
  52. package/dist/data/valve/gate.js +74 -0
  53. package/dist/data/valve/gate.js.map +1 -0
  54. package/dist/data/valve/graph.d.ts +28 -0
  55. package/dist/data/valve/graph.d.ts.map +1 -0
  56. package/dist/data/valve/graph.js +43 -0
  57. package/dist/data/valve/graph.js.map +1 -0
  58. package/dist/data/valve/index.d.ts +24 -0
  59. package/dist/data/valve/index.d.ts.map +1 -0
  60. package/dist/data/valve/index.js +14 -0
  61. package/dist/data/valve/index.js.map +1 -0
  62. package/dist/data/valve/namespace.d.ts +57 -0
  63. package/dist/data/valve/namespace.d.ts.map +1 -0
  64. package/dist/data/valve/namespace.js +57 -0
  65. package/dist/data/valve/namespace.js.map +1 -0
  66. package/dist/data/valve/registry.d.ts +14 -0
  67. package/dist/data/valve/registry.d.ts.map +1 -0
  68. package/dist/data/valve/registry.js +41 -0
  69. package/dist/data/valve/registry.js.map +1 -0
  70. package/dist/data/valve/schema/valve-crossing-fields.d.ts +37 -0
  71. package/dist/data/valve/schema/valve-crossing-fields.d.ts.map +1 -0
  72. package/dist/data/valve/schema/valve-crossing-fields.js +22 -0
  73. package/dist/data/valve/schema/valve-crossing-fields.js.map +1 -0
  74. package/dist/data/valve/schema/valve-crossing.d.ts +37 -0
  75. package/dist/data/valve/schema/valve-crossing.d.ts.map +1 -0
  76. package/dist/data/valve/schema/valve-crossing.js +8 -0
  77. package/dist/data/valve/schema/valve-crossing.js.map +1 -0
  78. package/dist/data/valve/supply.d.ts +33 -0
  79. package/dist/data/valve/supply.d.ts.map +1 -0
  80. package/dist/data/valve/supply.js +96 -0
  81. package/dist/data/valve/supply.js.map +1 -0
  82. package/dist/data/valve/types.d.ts +150 -0
  83. package/dist/data/valve/types.d.ts.map +1 -0
  84. package/dist/data/valve/types.js +2 -0
  85. package/dist/data/valve/types.js.map +1 -0
  86. package/dist/index.d.ts +2 -0
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +1 -0
  89. package/dist/index.js.map +1 -1
  90. package/dist/test/reap.d.ts +33 -0
  91. package/dist/test/reap.d.ts.map +1 -0
  92. package/dist/test/reap.js +117 -0
  93. package/dist/test/reap.js.map +1 -0
  94. package/dist/test/setup.d.ts.map +1 -1
  95. package/dist/test/setup.js +49 -8
  96. package/dist/test/setup.js.map +1 -1
  97. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ import type { FaucetDefinition, ValveDefinition } from './types.js';
2
+ /** Register a producer valve under its name. Names must be unique across the process. */
3
+ export declare function registerValve(definition: ValveDefinition): void;
4
+ /** All registered producer valves, keyed by name. */
5
+ export declare function valves(): ReadonlyMap<string, ValveDefinition>;
6
+ /** Look up one producer valve by name, or `undefined` if it is not registered. */
7
+ export declare function getValve(name: string): ValveDefinition | undefined;
8
+ /** Register a faucet against the valve name it consumes. A valve may have many faucets. */
9
+ export declare function registerFaucet(faucet: FaucetDefinition<unknown>): void;
10
+ /** Every faucet that consumes the named valve, in declaration order. */
11
+ export declare function faucetsOf(valveName: string): readonly FaucetDefinition<unknown>[];
12
+ /** Empty both registries. Test support — production code never calls this. */
13
+ export declare function clearValveRegistry(): void;
14
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/data/valve/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AASnE,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI,CAW/D;AAED,qDAAqD;AACrD,wBAAgB,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAE7D;AAED,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAElE;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,IAAI,CAItE;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAEjF;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC"}
@@ -0,0 +1,41 @@
1
+ // Two global registries, populated at import time when valve declarations run.
2
+ // `registry` holds producers (supply / gate); `faucetRegistry` holds the
3
+ // consumer side, keyed by the valve name each faucet binds to. The valve graph
4
+ // reconciles the two into `supply -> faucet` edges.
5
+ const registry = new Map();
6
+ const faucetRegistry = new Map();
7
+ /** Register a producer valve under its name. Names must be unique across the process. */
8
+ export function registerValve(definition) {
9
+ const existing = registry.get(definition.name);
10
+ if (existing !== undefined) {
11
+ throw new Error(`[pipework] Duplicate valve: "${definition.name}" is already registered.\n\n` +
12
+ ' Each valve must have a unique name.\n' +
13
+ ` Existing: ${existing.kind} (${existing.topology.producer} -> ${existing.topology.consumer})\n` +
14
+ ` Duplicate: ${definition.kind} (${definition.topology.producer} -> ${definition.topology.consumer})\n`);
15
+ }
16
+ registry.set(definition.name, definition);
17
+ }
18
+ /** All registered producer valves, keyed by name. */
19
+ export function valves() {
20
+ return registry;
21
+ }
22
+ /** Look up one producer valve by name, or `undefined` if it is not registered. */
23
+ export function getValve(name) {
24
+ return registry.get(name);
25
+ }
26
+ /** Register a faucet against the valve name it consumes. A valve may have many faucets. */
27
+ export function registerFaucet(faucet) {
28
+ const existing = faucetRegistry.get(faucet.valve) ?? [];
29
+ existing.push(faucet);
30
+ faucetRegistry.set(faucet.valve, existing);
31
+ }
32
+ /** Every faucet that consumes the named valve, in declaration order. */
33
+ export function faucetsOf(valveName) {
34
+ return faucetRegistry.get(valveName) ?? [];
35
+ }
36
+ /** Empty both registries. Test support — production code never calls this. */
37
+ export function clearValveRegistry() {
38
+ registry.clear();
39
+ faucetRegistry.clear();
40
+ }
41
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/data/valve/registry.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,yEAAyE;AACzE,+EAA+E;AAC/E,oDAAoD;AACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAA;AACnD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuC,CAAA;AAErE,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,UAA2B;IACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,gCAAgC,UAAU,CAAC,IAAI,8BAA8B;YAC7E,yCAAyC;YACzC,gBAAgB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,QAAQ,OAAO,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK;YAClG,gBAAgB,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,QAAQ,OAAO,UAAU,CAAC,QAAQ,CAAC,QAAQ,KAAK,CACzG,CAAA;IACH,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAC3C,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,MAAM;IACpB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,cAAc,CAAC,MAAiC;IAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IACvD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrB,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;AAC5C,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,OAAO,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;AAC5C,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAA;IAChB,cAAc,CAAC,KAAK,EAAE,CAAA;AACxB,CAAC"}
@@ -0,0 +1,37 @@
1
+ export declare const valveCrossingFields: {
2
+ id: import("../../domain/types.js").FieldDescriptor<import("../../domain/brand.js").Branded<string, "ValveCrossingId">, {
3
+ defaultRandom: true;
4
+ hasDefault: true;
5
+ } & {
6
+ primaryKey: true;
7
+ }> & import("../../domain/field.js").FieldModifiers<import("../../domain/brand.js").Branded<string, "ValveCrossingId">, {
8
+ defaultRandom: true;
9
+ hasDefault: true;
10
+ } & {
11
+ primaryKey: true;
12
+ }>;
13
+ valve: import("../../domain/types.js").FieldDescriptor<string, {}> & import("../../domain/field.js").FieldModifiers<string, {}>;
14
+ idempotencyKey: import("../../domain/types.js").FieldDescriptor<string | null, {
15
+ nullable: true;
16
+ }> & import("../../domain/field.js").FieldModifiers<string | null, {
17
+ nullable: true;
18
+ }>;
19
+ outcome: import("../../domain/types.js").FieldDescriptor<"failed" | "held" | "crossed" | "blocked", {}> & import("../../domain/field.js").FieldModifiers<"failed" | "held" | "crossed" | "blocked", {}>;
20
+ payload: import("../../domain/types.js").FieldDescriptor<import("zod/v4").JSONType, {
21
+ nullable: true;
22
+ }> & import("../../domain/field.js").FieldModifiers<import("zod/v4").JSONType, {
23
+ nullable: true;
24
+ }>;
25
+ detail: import("../../domain/types.js").FieldDescriptor<import("zod/v4").JSONType, {
26
+ nullable: true;
27
+ }> & import("../../domain/field.js").FieldModifiers<import("zod/v4").JSONType, {
28
+ nullable: true;
29
+ }>;
30
+ lineageId: import("../../domain/types.js").FieldDescriptor<string | null, {
31
+ nullable: true;
32
+ }> & import("../../domain/field.js").FieldModifiers<string | null, {
33
+ nullable: true;
34
+ }>;
35
+ crossedAt: import("../../domain/types.js").FieldDescriptor<Date, {}> & import("../../domain/field.js").FieldModifiers<Date, {}>;
36
+ };
37
+ //# sourceMappingURL=valve-crossing-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valve-crossing-fields.d.ts","sourceRoot":"","sources":["../../../../src/data/valve/schema/valve-crossing-fields.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAe/B,CAAA"}
@@ -0,0 +1,22 @@
1
+ // Column shape of `valve_crossing` — the crossing ledger. One row per crossing
2
+ // attempt: the immutable provenance record (#307 field 6) and, for a keyed
3
+ // crossing, the idempotency entry (#307 field 9).
4
+ import { field } from '../../domain/index.js';
5
+ import { schema } from '../../schema/namespace.js';
6
+ export const valveCrossingFields = {
7
+ id: field.uuid().brand('ValveCrossingId').defaultRandom().primaryKey(),
8
+ // The valve crossed.
9
+ valve: field.text(),
10
+ // The idempotency key, or null for an un-keyed crossing.
11
+ idempotencyKey: field.text().nullable(),
12
+ // How the crossing resolved.
13
+ outcome: field.enum(['crossed', 'blocked', 'held', 'failed']),
14
+ // Snapshot of the delivered payload — set for a `crossed` outcome.
15
+ payload: field.jsonb(schema.check.json()).nullable(),
16
+ // The held reason or the failure error — set for `held` / `failed`.
17
+ detail: field.jsonb(schema.check.json()).nullable(),
18
+ // The trace / correlation id propagated across the crossing.
19
+ lineageId: field.text().nullable(),
20
+ crossedAt: field.timestamp(),
21
+ };
22
+ //# sourceMappingURL=valve-crossing-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valve-crossing-fields.js","sourceRoot":"","sources":["../../../../src/data/valve/schema/valve-crossing-fields.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2EAA2E;AAC3E,kDAAkD;AAElD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE,CAAC,UAAU,EAAE;IACtE,qBAAqB;IACrB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;IACnB,yDAAyD;IACzD,cAAc,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACvC,6BAA6B;IAC7B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7D,mEAAmE;IACnE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,oEAAoE;IACpE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnD,6DAA6D;IAC7D,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;CAC7B,CAAA"}
@@ -0,0 +1,37 @@
1
+ export declare const valveCrossing: import("../../domain/types.js").DefinedTable<{
2
+ id: import("../../domain/types.js").FieldDescriptor<import("../../domain/brand.js").Branded<string, "ValveCrossingId">, {
3
+ defaultRandom: true;
4
+ hasDefault: true;
5
+ } & {
6
+ primaryKey: true;
7
+ }> & import("../../domain/field.js").FieldModifiers<import("../../domain/brand.js").Branded<string, "ValveCrossingId">, {
8
+ defaultRandom: true;
9
+ hasDefault: true;
10
+ } & {
11
+ primaryKey: true;
12
+ }>;
13
+ valve: import("../../domain/types.js").FieldDescriptor<string, {}> & import("../../domain/field.js").FieldModifiers<string, {}>;
14
+ idempotencyKey: import("../../domain/types.js").FieldDescriptor<string | null, {
15
+ nullable: true;
16
+ }> & import("../../domain/field.js").FieldModifiers<string | null, {
17
+ nullable: true;
18
+ }>;
19
+ outcome: import("../../domain/types.js").FieldDescriptor<"failed" | "held" | "crossed" | "blocked", {}> & import("../../domain/field.js").FieldModifiers<"failed" | "held" | "crossed" | "blocked", {}>;
20
+ payload: import("../../domain/types.js").FieldDescriptor<import("zod/v4").JSONType, {
21
+ nullable: true;
22
+ }> & import("../../domain/field.js").FieldModifiers<import("zod/v4").JSONType, {
23
+ nullable: true;
24
+ }>;
25
+ detail: import("../../domain/types.js").FieldDescriptor<import("zod/v4").JSONType, {
26
+ nullable: true;
27
+ }> & import("../../domain/field.js").FieldModifiers<import("zod/v4").JSONType, {
28
+ nullable: true;
29
+ }>;
30
+ lineageId: import("../../domain/types.js").FieldDescriptor<string | null, {
31
+ nullable: true;
32
+ }> & import("../../domain/field.js").FieldModifiers<string | null, {
33
+ nullable: true;
34
+ }>;
35
+ crossedAt: import("../../domain/types.js").FieldDescriptor<Date, {}> & import("../../domain/field.js").FieldModifiers<Date, {}>;
36
+ }>;
37
+ //# sourceMappingURL=valve-crossing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valve-crossing.d.ts","sourceRoot":"","sources":["../../../../src/data/valve/schema/valve-crossing.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgD,CAAA"}
@@ -0,0 +1,8 @@
1
+ // The `valve_crossing` ledger — one row per crossing attempt. It is both the
2
+ // immutable provenance record every crossing and non-crossing leaves (#307
3
+ // field 6) and the idempotency store a keyed crossing is replayed against
4
+ // (#307 field 9). Written transactionally with the crossing; non-partitioned.
5
+ import { define } from '../../domain/index.js';
6
+ import { valveCrossingFields } from './valve-crossing-fields.js';
7
+ export const valveCrossing = define('valve_crossing', valveCrossingFields);
8
+ //# sourceMappingURL=valve-crossing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valve-crossing.js","sourceRoot":"","sources":["../../../../src/data/valve/schema/valve-crossing.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAC3E,0EAA0E;AAC1E,8EAA8E;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAA"}
@@ -0,0 +1,33 @@
1
+ import type { ContractPayload, ContractShape, HandoffTrigger, SupplyDefinition } from './types.js';
2
+ /**
3
+ * The producer-side builder for a handoff valve. Type parameters narrow as the
4
+ * chain progresses: `.from()` fixes the source row type, `.contract()` fixes
5
+ * the payload type, and `.guard()` / `.project()` / `.idempotentBy()` are then
6
+ * checked against them. `.to()` is terminal — it registers the valve.
7
+ */
8
+ export interface SupplyBuilder<TSource, TPayload> {
9
+ /** The source entity and the state transition (or push) that fires the crossing. */
10
+ from<TFromSource = TSource>(source: string, trigger: HandoffTrigger): SupplyBuilder<TFromSource, TPayload>;
11
+ /** The payload schema — `.project()` must produce exactly this shape. */
12
+ contract<TShape extends ContractShape>(shape: TShape): SupplyBuilder<TSource, ContractPayload<TShape>>;
13
+ /** A guard predicate; the payload may not cross unless it holds. */
14
+ guard(predicate: (row: TSource) => boolean): SupplyBuilder<TSource, TPayload>;
15
+ /** Projects the source row to the contract payload — a snapshot taken at crossing time. */
16
+ project(projection: (row: TSource) => TPayload): SupplyBuilder<TSource, TPayload>;
17
+ /** Names a post-condition that holds across the crossing (checked via the valve graph). */
18
+ invariant(name: string): SupplyBuilder<TSource, TPayload>;
19
+ /** The source field carrying the trace/correlation id propagated across the crossing. */
20
+ lineage(field: string): SupplyBuilder<TSource, TPayload>;
21
+ /** Derives the idempotency key for a crossing from the source row. */
22
+ idempotentBy(key: (row: TSource) => string): SupplyBuilder<TSource, TPayload>;
23
+ /** Run the crossing as a durable retried job rather than in the caller's transaction. */
24
+ durable(retry?: 'backoff' | 'fixed'): SupplyBuilder<TSource, TPayload>;
25
+ /** The consumer silo. Terminal — registers the valve and returns its definition. */
26
+ to(consumer: string): SupplyDefinition<TSource, TPayload>;
27
+ }
28
+ /**
29
+ * Declare a handoff valve. `name` identifies the valve; `producer` is the silo
30
+ * the data crosses *from*. Chain the anatomy and finish with `.to(consumer)`.
31
+ */
32
+ export declare function supply(name: string, producer: string): SupplyBuilder<unknown, unknown>;
33
+ //# sourceMappingURL=supply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supply.d.ts","sourceRoot":"","sources":["../../../src/data/valve/supply.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB;;;;;GAKG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,EAAE,QAAQ;IAC9C,oFAAoF;IACpF,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC1G,yEAAyE;IACzE,QAAQ,CAAC,MAAM,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;IACtG,oEAAoE;IACpE,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC7E,2FAA2F;IAC3F,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACjF,2FAA2F;IAC3F,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACzD,yFAAyF;IACzF,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACxD,sEAAsE;IACtE,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC7E,yFAAyF;IACzF,OAAO,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACtE,oFAAoF;IACpF,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;CAC1D;AA0DD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CA0DtF"}
@@ -0,0 +1,96 @@
1
+ import { registerValve } from './registry.js';
2
+ function finalize(state, consumer) {
3
+ if (state.source === undefined || state.trigger === undefined) {
4
+ throw new Error(`[pipework] Valve "${state.name}" is missing .from(...).\n\n` +
5
+ ' A supply must declare its source entity and trigger before .to(...).\n' +
6
+ ' Example: supply("frozen-outcome", "compensation")\n' +
7
+ ' .from("outcomes", { on: "status", from: "open", to: "frozen" })\n');
8
+ }
9
+ if (state.contract === undefined) {
10
+ throw new Error(`[pipework] Valve "${state.name}" is missing .contract(...).\n\n` +
11
+ ' A supply must declare its payload contract before .to(...).\n');
12
+ }
13
+ if (state.project === undefined) {
14
+ throw new Error(`[pipework] Valve "${state.name}" is missing .project(...).\n\n` +
15
+ ' A supply must declare how the source row projects to the contract payload before .to(...).\n');
16
+ }
17
+ const definition = {
18
+ name: state.name,
19
+ kind: 'handoff',
20
+ topology: { producer: state.producer, consumer },
21
+ source: state.source,
22
+ trigger: state.trigger,
23
+ contract: state.contract,
24
+ guard: state.guard,
25
+ project: state.project,
26
+ invariants: [...state.invariants],
27
+ lineageField: state.lineageField,
28
+ idempotentBy: state.idempotentBy,
29
+ crossing: state.crossing,
30
+ };
31
+ registerValve(definition);
32
+ return definition;
33
+ }
34
+ /**
35
+ * Declare a handoff valve. `name` identifies the valve; `producer` is the silo
36
+ * the data crosses *from*. Chain the anatomy and finish with `.to(consumer)`.
37
+ */
38
+ export function supply(name, producer) {
39
+ const state = {
40
+ name,
41
+ producer,
42
+ source: undefined,
43
+ trigger: undefined,
44
+ contract: undefined,
45
+ guard: undefined,
46
+ project: undefined,
47
+ invariants: [],
48
+ lineageField: undefined,
49
+ idempotentBy: undefined,
50
+ crossing: { durable: false },
51
+ };
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- builder type params narrow per stage; the public SupplyBuilder type is precise
53
+ const builder = {
54
+ from(source, trigger) {
55
+ state.source = source;
56
+ state.trigger = trigger;
57
+ return builder;
58
+ },
59
+ contract(shape) {
60
+ state.contract = shape;
61
+ return builder;
62
+ },
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- predicate generic erased into state; see SupplyState
64
+ guard(predicate) {
65
+ state.guard = predicate;
66
+ return builder;
67
+ },
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- projection generic erased into state; see SupplyState
69
+ project(projection) {
70
+ state.project = projection;
71
+ return builder;
72
+ },
73
+ invariant(invariantName) {
74
+ state.invariants.push(invariantName);
75
+ return builder;
76
+ },
77
+ lineage(field) {
78
+ state.lineageField = field;
79
+ return builder;
80
+ },
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- key generic erased into state; see SupplyState
82
+ idempotentBy(key) {
83
+ state.idempotentBy = key;
84
+ return builder;
85
+ },
86
+ durable(retry) {
87
+ state.crossing = { durable: true, retry: retry ?? 'backoff' };
88
+ return builder;
89
+ },
90
+ to(consumer) {
91
+ return finalize(state, consumer);
92
+ },
93
+ };
94
+ return builder;
95
+ }
96
+ //# sourceMappingURL=supply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supply.js","sourceRoot":"","sources":["../../../src/data/valve/supply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import type { Schema, Infer } from '../schema/types.js';
2
+ import type { DB } from '../db/namespace.js';
3
+ import type { DecisionOutcome } from './decision.js';
4
+ /**
5
+ * The two valve forms. A `handoff` moves a payload across a silo / ownership
6
+ * boundary; a `transition-gate` modulates a state change within one silo.
7
+ */
8
+ export type ValveKind = 'handoff' | 'transition-gate';
9
+ /**
10
+ * Directional producer -> consumer topology. For a transition gate the
11
+ * producer and consumer silo coincide — the crossing is an intra-silo edge.
12
+ */
13
+ export interface ValveTopology {
14
+ readonly producer: string;
15
+ readonly consumer: string;
16
+ }
17
+ /**
18
+ * A registered valve. The builders (`supply`, `gate`, `faucet`) produce
19
+ * concrete definitions assignable to this base; the registry stores them
20
+ * keyed by `name`, and the valve graph is assembled from their topology.
21
+ */
22
+ export interface ValveDefinition {
23
+ readonly name: string;
24
+ readonly kind: ValveKind;
25
+ readonly topology: ValveTopology;
26
+ }
27
+ /**
28
+ * A handoff trigger — either a source state transition (`status: open -> frozen`)
29
+ * or an explicit push.
30
+ */
31
+ export type HandoffTrigger = {
32
+ readonly on: string;
33
+ readonly from: string;
34
+ readonly to: string;
35
+ } | {
36
+ readonly push: true;
37
+ };
38
+ /**
39
+ * How a crossing executes — synchronously in the caller's transaction, or as a
40
+ * durable retried job that dead-letters on retry exhaustion.
41
+ */
42
+ export type CrossingMode = {
43
+ readonly durable: false;
44
+ } | {
45
+ readonly durable: true;
46
+ readonly retry: 'backoff' | 'fixed';
47
+ };
48
+ /** A contract shape — payload field name -> validation schema. */
49
+ export type ContractShape = Record<string, Schema>;
50
+ /** The payload type a contract shape validates to. */
51
+ export type ContractPayload<TShape extends ContractShape> = {
52
+ readonly [K in keyof TShape]: Infer<TShape[K]>;
53
+ };
54
+ /**
55
+ * A handoff valve, produced by `supply(...).to(...)`. Carries the full anatomy
56
+ * the crossing executor and the valve graph read back.
57
+ */
58
+ export interface SupplyDefinition<TSource, TPayload> extends ValveDefinition {
59
+ readonly kind: 'handoff';
60
+ readonly source: string;
61
+ readonly trigger: HandoffTrigger;
62
+ readonly contract: ContractShape;
63
+ readonly guard: ((row: TSource) => boolean) | undefined;
64
+ readonly project: (row: TSource) => TPayload;
65
+ readonly invariants: readonly string[];
66
+ readonly lineageField: string | undefined;
67
+ readonly idempotentBy: ((row: TSource) => string) | undefined;
68
+ readonly crossing: CrossingMode;
69
+ }
70
+ /**
71
+ * A transition-gate trigger. A gate fires on admission of a source row, on the
72
+ * birth of a new instance version, or by an explicit operator action — the
73
+ * manual trigger carrying a permission and batch semantics.
74
+ */
75
+ export type GateTrigger = {
76
+ readonly trigger: 'admission';
77
+ } | {
78
+ readonly trigger: 'new-version';
79
+ } | {
80
+ readonly trigger: 'manual';
81
+ readonly permission: string;
82
+ readonly batch: boolean;
83
+ };
84
+ /** Retraction config — which trigger supersedes and invalidates the prior crossing. */
85
+ export interface GateRetraction {
86
+ readonly on: 'new-version';
87
+ }
88
+ /**
89
+ * The decision hook — the load-bearing seam (#307 field 13). Async, and returns
90
+ * a partitioned outcome (`cross` / `held` / `failed`) — never a bare verdict.
91
+ */
92
+ export type GateDecision<TEvent> = (event: TEvent, context: Readonly<Record<string, unknown>>) => Promise<DecisionOutcome<unknown, unknown>>;
93
+ /**
94
+ * A transition-gate valve, produced by `gate(...).decision(...)`. Its producer
95
+ * and consumer silo coincide — it modulates an intra-silo state change.
96
+ */
97
+ export interface GateDefinition<TEvent> extends ValveDefinition {
98
+ readonly kind: 'transition-gate';
99
+ readonly source: string;
100
+ readonly triggers: readonly GateTrigger[];
101
+ readonly context: Readonly<Record<string, string>>;
102
+ readonly signals: readonly string[];
103
+ readonly fanOut: ((event: TEvent) => readonly unknown[]) | undefined;
104
+ readonly decision: GateDecision<TEvent>;
105
+ readonly retraction: GateRetraction | undefined;
106
+ }
107
+ /**
108
+ * A faucet's intake handler — receives the re-validated payload and the
109
+ * transaction the crossing runs in, and lands the payload in the consumer.
110
+ */
111
+ export type FaucetHandler<TPayload> = (payload: TPayload, tx: DB) => Promise<void>;
112
+ /**
113
+ * A faucet — the consumer side of a `supply -> faucet` edge. It binds to a
114
+ * valve by name (never to the producer silo) and re-validates every payload.
115
+ */
116
+ export interface FaucetDefinition<TPayload> {
117
+ readonly valve: string;
118
+ readonly target: string;
119
+ readonly handler: FaucetHandler<TPayload>;
120
+ }
121
+ /** The crossing proceeded — `payload` was delivered. */
122
+ export interface CrossedResult {
123
+ readonly kind: 'crossed';
124
+ readonly payload: unknown;
125
+ }
126
+ /** A handoff guard rejected the row — nothing crossed. */
127
+ export interface BlockedResult {
128
+ readonly kind: 'blocked';
129
+ }
130
+ /** A gate held the crossing in a provisional, reviewable state. */
131
+ export interface HeldResult {
132
+ readonly kind: 'held';
133
+ readonly reason: unknown;
134
+ }
135
+ /** A gate's decision evaluation failed. */
136
+ export interface FailedResult {
137
+ readonly kind: 'failed';
138
+ readonly error: Error;
139
+ }
140
+ /** A keyed crossing was replayed — its prior `crossed` outcome already landed. */
141
+ export interface SkippedResult {
142
+ readonly kind: 'skipped';
143
+ }
144
+ /** A handoff crossing resolves as crossed or blocked. */
145
+ export type SupplyCrossingResult = CrossedResult | BlockedResult;
146
+ /** A transition-gate crossing resolves as crossed, held, or failed. */
147
+ export type GateCrossingResult = CrossedResult | HeldResult | FailedResult;
148
+ /** Any crossing outcome — the recorded layer additionally yields `skipped`. */
149
+ export type CrossingResult = CrossedResult | BlockedResult | HeldResult | FailedResult | SkippedResult;
150
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/data/valve/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/data/valve/types.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -42,6 +42,8 @@ export type { TemporalOptions, ReviseOptions, ReviseResult, GetCurrentResult, De
42
42
  export { vector } from './data/vector/namespace.js';
43
43
  export type { HeadlineOptions } from './data/vector/index.js';
44
44
  export { jsonb } from './data/jsonb/namespace.js';
45
+ export { valve } from './data/valve/namespace.js';
46
+ export type { ValveKind, ValveTopology, ValveDefinition, HandoffTrigger, CrossingMode, ContractShape, ContractPayload, SupplyDefinition, SupplyBuilder, GateTrigger, GateRetraction, GateDecision, GateDefinition, GateBuilder, FaucetHandler, FaucetDefinition, FaucetBuilder, CrossedResult, BlockedResult, HeldResult, FailedResult, SkippedResult, SupplyCrossingResult, GateCrossingResult, CrossingResult, CrossingRecord, CrossingJobPayload, DecisionOutcome, Crossed, Held, Failed, ContractArtifact, ContractDiff, ValveGraph, ValveGraphNode, ValveGraphEdge, ValveNodeKind, ValveEdgeKind } from './data/valve/index.js';
45
47
  export { pipeline } from './async/pipeline/namespace.js';
46
48
  export type { PipelineConfig, Pipeline, PipelineRun, PipelineExecuteContext, StepDefinition, StepContext, StepRunResult } from './async/pipeline/index.js';
47
49
  export { state } from './async/state-machine/namespace.js';
@@ -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
@@ -14,6 +14,7 @@ export { fixture } from './request/fixture/namespace.js';
14
14
  export { temporal } from './data/temporal/namespace.js';
15
15
  export { vector } from './data/vector/namespace.js';
16
16
  export { jsonb } from './data/jsonb/namespace.js';
17
+ export { valve } from './data/valve/namespace.js';
17
18
  export { pipeline } from './async/pipeline/namespace.js';
18
19
  export { state } from './async/state-machine/namespace.js';
19
20
  export { behavior } from './request/behavior/namespace.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAW/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAIxD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAOlD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAQ/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAI/C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AAKhD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAIlD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAKxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAIxD,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAI1D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAI1D,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAKtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAMrD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EACtE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAW/D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAIxD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAOlD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAQ/C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAA;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAI/C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAA;AAKhD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAIlD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAKxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGnD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAUjD,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAIxD,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAI1D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAI1D,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAIzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAKtF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAMrD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EACtE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAInD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA"}
@@ -0,0 +1,33 @@
1
+ import postgres from 'postgres';
2
+ import type { Manifold } from '../core/pipework.js';
3
+ export interface ReapResult {
4
+ readonly droppedDatabases: readonly string[];
5
+ }
6
+ /**
7
+ * Advisory-lock key identifying a test run. A live run holds this lock on a
8
+ * dedicated connection for its entire lifetime; Postgres releases it
9
+ * automatically when that connection ends by any means (clean exit, crash,
10
+ * SIGKILL, reboot). The reaper reads "lock is free" as "owning run is dead".
11
+ */
12
+ export declare function runLockKey(nonce: string): bigint;
13
+ /** Admin (`/postgres`) connection URL for a database URL. */
14
+ export declare function getAdminUrl(databaseUrl: string): string;
15
+ /**
16
+ * Drop test databases left behind by runs that never reached teardown
17
+ * (Ctrl-C, timeout, crash). A database is reaped only when BOTH hold:
18
+ *
19
+ * - its run's advisory lock is free — the owning run's process is gone
20
+ * (a legacy name with no nonce is treated as ownerless); and
21
+ * - `numbackends = 0` — no connections remain, so reaping cannot pull a
22
+ * database out from under workers orphaned by a SIGKILL'd parent.
23
+ *
24
+ * Both conditions only ever make the reaper more conservative, so it can
25
+ * never drop a database belonging to a live or still-provisioning run.
26
+ */
27
+ export declare function reapOrphanTestDatabases(admin: postgres.Sql): Promise<ReapResult>;
28
+ /**
29
+ * Reap orphan test databases across every Postgres server referenced by the
30
+ * manifold's database config. Used by `pipework test --reap`.
31
+ */
32
+ export declare function reapConfiguredTestDatabases(instance: Manifold): Promise<ReapResult>;
33
+ //# sourceMappingURL=reap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reap.d.ts","sourceRoot":"","sources":["../../src/test/reap.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAenD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAIvD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CA0BtF;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBzF"}