@substrat-run/contract-tests 0.98.1 → 0.102.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.
package/dist/index.d.ts CHANGED
@@ -18,6 +18,6 @@ export { nodeOnlySuite, declaredNodeOnlySuite } from './node-only-suite.js';
18
18
  export type { NodeOnlyOptions } from './node-only-suite.js';
19
19
  export { declareEntityChecks, declareNodeOnly, assertNodeOnly } from './conformance.js';
20
20
  export type { ConformanceDeclaration, DrivenConformance, DeclaredNodeOnlyConformance, AssertedNodeOnlyConformance, } from './conformance.js';
21
- export { atomicMod, billedMod, brokenMod, connectorMod, contractTestBareOps, contractTestInitialModules, contractTestModules, permMod, scheduleMod, searchMod, searchModManifest, listMod, listModManifest, parseMod, parseModManifest, } from './modules.js';
21
+ export { atomicMod, billedMod, brokenMod, connectorMod, contractTestBareOps, contractTestInitialModules, contractTestModules, permMod, scheduleMod, freshnessMod, searchMod, searchModManifest, listMod, listModManifest, parseMod, parseModManifest, } from './modules.js';
22
22
  export { connectorCalls, connectorTestFetch, resetConnectorCalls, type ConnectorCall, } from './connector-fixture.js';
23
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxF,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxF,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,6 @@ export { spineGuardContractSuite } from './spine-guard-suite.js';
14
14
  export { entityCheckConformanceSuite, planEntityCheckCoverage } from './entity-check-suite.js';
15
15
  export { nodeOnlySuite, declaredNodeOnlySuite } from './node-only-suite.js';
16
16
  export { declareEntityChecks, declareNodeOnly, assertNodeOnly } from './conformance.js';
17
- export { atomicMod, billedMod, brokenMod, connectorMod, contractTestBareOps, contractTestInitialModules, contractTestModules, permMod, scheduleMod, searchMod, searchModManifest, listMod, listModManifest, parseMod, parseModManifest, } from './modules.js';
17
+ export { atomicMod, billedMod, brokenMod, connectorMod, contractTestBareOps, contractTestInitialModules, contractTestModules, permMod, scheduleMod, freshnessMod, searchMod, searchModManifest, listMod, listModManifest, parseMod, parseModManifest, } from './modules.js';
18
18
  export { connectorCalls, connectorTestFetch, resetConnectorCalls, } from './connector-fixture.js';
19
19
  //# 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,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOxF,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOxF,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,wBAAwB,CAAC"}
package/dist/modules.d.ts CHANGED
@@ -53,6 +53,12 @@ export declare const testModManifest: {
53
53
  input?: Record<string, unknown> | undefined;
54
54
  permissions: (string & z.$brand<"PermissionKey">)[];
55
55
  }[] | undefined;
56
+ freshness?: {
57
+ eventType: string;
58
+ within: {
59
+ hours: number;
60
+ };
61
+ }[] | undefined;
56
62
  withdraws?: string[] | undefined;
57
63
  entitlementKey: string;
58
64
  envSpec?: {
@@ -156,6 +162,127 @@ export declare const scheduleModManifest: {
156
162
  input?: Record<string, unknown> | undefined;
157
163
  permissions: (string & z.$brand<"PermissionKey">)[];
158
164
  }[] | undefined;
165
+ freshness?: {
166
+ eventType: string;
167
+ within: {
168
+ hours: number;
169
+ };
170
+ }[] | undefined;
171
+ withdraws?: string[] | undefined;
172
+ entitlementKey: string;
173
+ envSpec?: {
174
+ key: string;
175
+ label?: string | undefined;
176
+ description: string;
177
+ placeholder?: string | undefined;
178
+ required: boolean;
179
+ secret: boolean;
180
+ default?: string | undefined;
181
+ group?: string | undefined;
182
+ }[] | undefined;
183
+ ownerGrants?: (string & z.$brand<"PermissionKey">)[] | undefined;
184
+ entitlements?: string[] | undefined;
185
+ provides?: string[] | undefined;
186
+ requires?: string[] | undefined;
187
+ api?: string | undefined;
188
+ searchables?: {
189
+ entityType: string;
190
+ fields: string[];
191
+ table?: string | undefined;
192
+ idColumn?: string | undefined;
193
+ tokenizer?: "prefix" | "substring" | undefined;
194
+ }[] | undefined;
195
+ lists?: {
196
+ entityType: string;
197
+ sortable: string[];
198
+ filterable?: string[] | undefined;
199
+ table?: string | undefined;
200
+ idColumn?: string | undefined;
201
+ }[] | undefined;
202
+ ui?: {
203
+ routes?: {
204
+ path: string;
205
+ screen: string;
206
+ permission: string & z.$brand<"PermissionKey">;
207
+ }[] | undefined;
208
+ nav?: {
209
+ label: string;
210
+ icon?: string | undefined;
211
+ to: string;
212
+ permission: string & z.$brand<"PermissionKey">;
213
+ }[] | undefined;
214
+ entityViews?: {
215
+ entityType: string;
216
+ view: string;
217
+ }[] | undefined;
218
+ widgets?: {
219
+ slot: string;
220
+ component: string;
221
+ permission: string & z.$brand<"PermissionKey">;
222
+ }[] | undefined;
223
+ settingsPanels?: {
224
+ label: string;
225
+ component: string;
226
+ permission: string & z.$brand<"PermissionKey">;
227
+ }[] | undefined;
228
+ } | undefined;
229
+ };
230
+ /**
231
+ * #1232 regression fixture: a SECOND module expecting the same event type as
232
+ * scheduleMod, with a WIDER window. The evaluator must aggregate across modules
233
+ * to the tightest window and evaluate once per scope — per-module evaluation
234
+ * would fight over the shared gating-state key and dedupe unit.
235
+ */
236
+ export declare const freshnessModManifest: {
237
+ id: string & z.$brand<"ModuleId">;
238
+ version: string;
239
+ kernelContract: string;
240
+ permissions: {
241
+ key: string & z.$brand<"PermissionKey">;
242
+ description: string;
243
+ }[];
244
+ events: {
245
+ emits: {
246
+ type: string;
247
+ schemaVersion: number;
248
+ }[];
249
+ consumes: {
250
+ type: string;
251
+ schemaVersion: number;
252
+ }[];
253
+ };
254
+ migrations: {
255
+ journalDir: string;
256
+ compatibleFrom: string;
257
+ };
258
+ attachmentTargets: {
259
+ entityType: string;
260
+ readPermission: string & z.$brand<"PermissionKey">;
261
+ writePermission?: (string & z.$brand<"PermissionKey">) | undefined;
262
+ }[];
263
+ entityRelations?: {
264
+ entityType: string;
265
+ parentType: string;
266
+ }[] | undefined;
267
+ guards?: {
268
+ before: string;
269
+ predicate: string;
270
+ config: Record<string, unknown>;
271
+ }[] | undefined;
272
+ schedules?: {
273
+ operation: string;
274
+ cadence: {
275
+ everyMinutes: number;
276
+ };
277
+ input?: Record<string, unknown> | undefined;
278
+ permissions: (string & z.$brand<"PermissionKey">)[];
279
+ }[] | undefined;
280
+ freshness?: {
281
+ eventType: string;
282
+ within: {
283
+ hours: number;
284
+ };
285
+ }[] | undefined;
159
286
  withdraws?: string[] | undefined;
160
287
  entitlementKey: string;
161
288
  envSpec?: {
@@ -215,6 +342,7 @@ export declare const scheduleModManifest: {
215
342
  }[] | undefined;
216
343
  } | undefined;
217
344
  };
345
+ export declare const freshnessMod: ModuleRegistration;
218
346
  export declare const flowModManifest: {
219
347
  id: string & z.$brand<"ModuleId">;
220
348
  version: string;
@@ -259,6 +387,12 @@ export declare const flowModManifest: {
259
387
  input?: Record<string, unknown> | undefined;
260
388
  permissions: (string & z.$brand<"PermissionKey">)[];
261
389
  }[] | undefined;
390
+ freshness?: {
391
+ eventType: string;
392
+ within: {
393
+ hours: number;
394
+ };
395
+ }[] | undefined;
262
396
  withdraws?: string[] | undefined;
263
397
  entitlementKey: string;
264
398
  envSpec?: {
@@ -362,6 +496,12 @@ export declare const atomicModManifest: {
362
496
  input?: Record<string, unknown> | undefined;
363
497
  permissions: (string & z.$brand<"PermissionKey">)[];
364
498
  }[] | undefined;
499
+ freshness?: {
500
+ eventType: string;
501
+ within: {
502
+ hours: number;
503
+ };
504
+ }[] | undefined;
365
505
  withdraws?: string[] | undefined;
366
506
  entitlementKey: string;
367
507
  envSpec?: {
@@ -465,6 +605,12 @@ export declare const lateModManifest: {
465
605
  input?: Record<string, unknown> | undefined;
466
606
  permissions: (string & z.$brand<"PermissionKey">)[];
467
607
  }[] | undefined;
608
+ freshness?: {
609
+ eventType: string;
610
+ within: {
611
+ hours: number;
612
+ };
613
+ }[] | undefined;
468
614
  withdraws?: string[] | undefined;
469
615
  entitlementKey: string;
470
616
  envSpec?: {
@@ -568,6 +714,12 @@ export declare const billedModManifest: {
568
714
  input?: Record<string, unknown> | undefined;
569
715
  permissions: (string & z.$brand<"PermissionKey">)[];
570
716
  }[] | undefined;
717
+ freshness?: {
718
+ eventType: string;
719
+ within: {
720
+ hours: number;
721
+ };
722
+ }[] | undefined;
571
723
  withdraws?: string[] | undefined;
572
724
  entitlementKey: string;
573
725
  envSpec?: {
@@ -671,6 +823,12 @@ export declare const guardedModManifest: {
671
823
  input?: Record<string, unknown> | undefined;
672
824
  permissions: (string & z.$brand<"PermissionKey">)[];
673
825
  }[] | undefined;
826
+ freshness?: {
827
+ eventType: string;
828
+ within: {
829
+ hours: number;
830
+ };
831
+ }[] | undefined;
674
832
  withdraws?: string[] | undefined;
675
833
  entitlementKey: string;
676
834
  envSpec?: {
@@ -774,6 +932,12 @@ export declare const withdrawEarlyManifest: {
774
932
  input?: Record<string, unknown> | undefined;
775
933
  permissions: (string & z.$brand<"PermissionKey">)[];
776
934
  }[] | undefined;
935
+ freshness?: {
936
+ eventType: string;
937
+ within: {
938
+ hours: number;
939
+ };
940
+ }[] | undefined;
777
941
  withdraws?: string[] | undefined;
778
942
  entitlementKey: string;
779
943
  envSpec?: {
@@ -877,6 +1041,12 @@ export declare const victimModManifest: {
877
1041
  input?: Record<string, unknown> | undefined;
878
1042
  permissions: (string & z.$brand<"PermissionKey">)[];
879
1043
  }[] | undefined;
1044
+ freshness?: {
1045
+ eventType: string;
1046
+ within: {
1047
+ hours: number;
1048
+ };
1049
+ }[] | undefined;
880
1050
  withdraws?: string[] | undefined;
881
1051
  entitlementKey: string;
882
1052
  envSpec?: {
@@ -980,6 +1150,12 @@ export declare const withdrawLateManifest: {
980
1150
  input?: Record<string, unknown> | undefined;
981
1151
  permissions: (string & z.$brand<"PermissionKey">)[];
982
1152
  }[] | undefined;
1153
+ freshness?: {
1154
+ eventType: string;
1155
+ within: {
1156
+ hours: number;
1157
+ };
1158
+ }[] | undefined;
983
1159
  withdraws?: string[] | undefined;
984
1160
  entitlementKey: string;
985
1161
  envSpec?: {
@@ -1083,6 +1259,12 @@ export declare const gateModManifest: {
1083
1259
  input?: Record<string, unknown> | undefined;
1084
1260
  permissions: (string & z.$brand<"PermissionKey">)[];
1085
1261
  }[] | undefined;
1262
+ freshness?: {
1263
+ eventType: string;
1264
+ within: {
1265
+ hours: number;
1266
+ };
1267
+ }[] | undefined;
1086
1268
  withdraws?: string[] | undefined;
1087
1269
  entitlementKey: string;
1088
1270
  envSpec?: {
@@ -1195,6 +1377,12 @@ export declare const impersonationEchoManifest: {
1195
1377
  input?: Record<string, unknown> | undefined;
1196
1378
  permissions: (string & z.$brand<"PermissionKey">)[];
1197
1379
  }[] | undefined;
1380
+ freshness?: {
1381
+ eventType: string;
1382
+ within: {
1383
+ hours: number;
1384
+ };
1385
+ }[] | undefined;
1198
1386
  withdraws?: string[] | undefined;
1199
1387
  entitlementKey: string;
1200
1388
  envSpec?: {
@@ -1298,6 +1486,12 @@ export declare const permModManifest: {
1298
1486
  input?: Record<string, unknown> | undefined;
1299
1487
  permissions: (string & z.$brand<"PermissionKey">)[];
1300
1488
  }[] | undefined;
1489
+ freshness?: {
1490
+ eventType: string;
1491
+ within: {
1492
+ hours: number;
1493
+ };
1494
+ }[] | undefined;
1301
1495
  withdraws?: string[] | undefined;
1302
1496
  entitlementKey: string;
1303
1497
  envSpec?: {
@@ -1415,6 +1609,12 @@ export declare const connectorModManifest: {
1415
1609
  input?: Record<string, unknown> | undefined;
1416
1610
  permissions: (string & z.$brand<"PermissionKey">)[];
1417
1611
  }[] | undefined;
1612
+ freshness?: {
1613
+ eventType: string;
1614
+ within: {
1615
+ hours: number;
1616
+ };
1617
+ }[] | undefined;
1418
1618
  withdraws?: string[] | undefined;
1419
1619
  entitlementKey: string;
1420
1620
  envSpec?: {
@@ -1549,6 +1749,12 @@ export declare const listModManifest: {
1549
1749
  input?: Record<string, unknown> | undefined;
1550
1750
  permissions: (string & z.$brand<"PermissionKey">)[];
1551
1751
  }[] | undefined;
1752
+ freshness?: {
1753
+ eventType: string;
1754
+ within: {
1755
+ hours: number;
1756
+ };
1757
+ }[] | undefined;
1552
1758
  withdraws?: string[] | undefined;
1553
1759
  entitlementKey: string;
1554
1760
  envSpec?: {
@@ -1653,6 +1859,12 @@ export declare const searchModManifest: {
1653
1859
  input?: Record<string, unknown> | undefined;
1654
1860
  permissions: (string & z.$brand<"PermissionKey">)[];
1655
1861
  }[] | undefined;
1862
+ freshness?: {
1863
+ eventType: string;
1864
+ within: {
1865
+ hours: number;
1866
+ };
1867
+ }[] | undefined;
1656
1868
  withdraws?: string[] | undefined;
1657
1869
  entitlementKey: string;
1658
1870
  envSpec?: {
@@ -1757,6 +1969,12 @@ export declare const parseModManifest: {
1757
1969
  input?: Record<string, unknown> | undefined;
1758
1970
  permissions: (string & z.$brand<"PermissionKey">)[];
1759
1971
  }[] | undefined;
1972
+ freshness?: {
1973
+ eventType: string;
1974
+ within: {
1975
+ hours: number;
1976
+ };
1977
+ }[] | undefined;
1760
1978
  withdraws?: string[] | undefined;
1761
1979
  entitlementKey: string;
1762
1980
  envSpec?: {
@@ -1861,6 +2079,12 @@ export declare const concurrencyModManifest: {
1861
2079
  input?: Record<string, unknown> | undefined;
1862
2080
  permissions: (string & z.$brand<"PermissionKey">)[];
1863
2081
  }[] | undefined;
2082
+ freshness?: {
2083
+ eventType: string;
2084
+ within: {
2085
+ hours: number;
2086
+ };
2087
+ }[] | undefined;
1864
2088
  withdraws?: string[] | undefined;
1865
2089
  entitlementKey: string;
1866
2090
  envSpec?: {
@@ -1965,6 +2189,12 @@ export declare const idempotencyModManifest: {
1965
2189
  input?: Record<string, unknown> | undefined;
1966
2190
  permissions: (string & z.$brand<"PermissionKey">)[];
1967
2191
  }[] | undefined;
2192
+ freshness?: {
2193
+ eventType: string;
2194
+ within: {
2195
+ hours: number;
2196
+ };
2197
+ }[] | undefined;
1968
2198
  withdraws?: string[] | undefined;
1969
2199
  entitlementKey: string;
1970
2200
  envSpec?: {
@@ -2070,6 +2300,12 @@ export declare const brokenModManifest: {
2070
2300
  input?: Record<string, unknown> | undefined;
2071
2301
  permissions: (string & z.$brand<"PermissionKey">)[];
2072
2302
  }[] | undefined;
2303
+ freshness?: {
2304
+ eventType: string;
2305
+ within: {
2306
+ hours: number;
2307
+ };
2308
+ }[] | undefined;
2073
2309
  withdraws?: string[] | undefined;
2074
2310
  entitlementKey: string;
2075
2311
  envSpec?: {
@@ -1 +1 @@
1
- {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
package/dist/modules.js CHANGED
@@ -38,7 +38,36 @@ export const scheduleModManifest = moduleManifest.parse({
38
38
  attachmentTargets: [],
39
39
  entitlementKey: 'sched',
40
40
  schedules: [{ operation: 'sched/tick', cadence: { everyMinutes: 60 }, permissions: ['sched:tick'] }],
41
+ // #1232: a freshness expectation on the module's own emitted type — declared TWICE
42
+ // with different windows, deliberately: the evaluator must collapse duplicates to
43
+ // the tightest window (one row per (scope, eventType), or the drain dedupe eats one).
44
+ freshness: [
45
+ { eventType: 'sched.ticked', within: { hours: 24 } },
46
+ { eventType: 'sched.ticked', within: { hours: 1 } },
47
+ ],
48
+ });
49
+ /**
50
+ * #1232 regression fixture: a SECOND module expecting the same event type as
51
+ * scheduleMod, with a WIDER window. The evaluator must aggregate across modules
52
+ * to the tightest window and evaluate once per scope — per-module evaluation
53
+ * would fight over the shared gating-state key and dedupe unit.
54
+ */
55
+ export const freshnessModManifest = moduleManifest.parse({
56
+ id: '@test/freshwatch',
57
+ version: '1.0.0',
58
+ kernelContract: '^0.0.1',
59
+ permissions: [],
60
+ events: { emits: [], consumes: [{ type: 'sched.ticked', schemaVersion: 1 }] },
61
+ migrations: { journalDir: './migrations', compatibleFrom: '1.0.0' },
62
+ attachmentTargets: [],
63
+ entitlementKey: 'freshwatch',
64
+ freshness: [{ eventType: 'sched.ticked', within: { hours: 48 } }],
41
65
  });
66
+ export const freshnessMod = {
67
+ manifest: freshnessModManifest,
68
+ migrations: [],
69
+ operations: {},
70
+ };
42
71
  export const flowModManifest = moduleManifest.parse({
43
72
  id: '@test/flow',
44
73
  version: '1.0.0',
@@ -495,7 +524,7 @@ const authorizedReadOp = async (ctx, input) => {
495
524
  assertAllowed(await ctx.check(input.permission));
496
525
  return ctx.sql.query('SELECT COUNT(*) AS n FROM testmod_items')[0].n;
497
526
  };
498
- const readOutboxOp = (ctx) => ctx.sql.query('SELECT id, type, authorization, impersonation FROM _substrat_outbox ORDER BY id');
527
+ const readOutboxOp = (ctx) => ctx.sql.query('SELECT id, type, authorization, impersonation, operation FROM _substrat_outbox ORDER BY id');
499
528
  const readDenialsOp = (ctx) => ctx.sql.query(`SELECT actor, permission, tenant_id, scope_id, operation, impersonation
500
529
  FROM _substrat_denials ORDER BY id`);
501
530
  // -- K-42 fixtures (#868) ----------------------------------------------------
@@ -751,7 +780,7 @@ export const scheduleMod = {
751
780
  assertAllowed(await ctx.check('sched:admin'));
752
781
  }),
753
782
  'sched/count': ((ctx) => ctx.sql.query('SELECT COUNT(*) AS n FROM sched_ticks')[0].n),
754
- 'sched/read-outbox': ((ctx) => ctx.sql.query('SELECT type, actor FROM _substrat_outbox ORDER BY id')),
783
+ 'sched/read-outbox': ((ctx) => ctx.sql.query('SELECT type, actor, operation FROM _substrat_outbox ORDER BY id')),
755
784
  'sched/schedule-state': ((ctx) => ctx.sql.query('SELECT schedule_op, last_status FROM _substrat_schedule_state ORDER BY schedule_op')),
756
785
  },
757
786
  };
@@ -776,7 +805,7 @@ export const flowMod = {
776
805
  'flow/log': ((ctx) => ctx.sql.query('SELECT event_id, type FROM flow_log ORDER BY event_id')),
777
806
  'flow/deliveries': ((ctx) => ctx.sql.query(`SELECT event_id, consumer_module, error FROM _substrat_deliveries
778
807
  WHERE consumer_module = '@test/flow' ORDER BY event_id`)),
779
- 'flow/step2-actors': ((ctx) => ctx.sql.query(`SELECT actor FROM _substrat_outbox WHERE type = 'flow.step2'`)),
808
+ 'flow/step2-actors': ((ctx) => ctx.sql.query(`SELECT actor, operation FROM _substrat_outbox WHERE type = 'flow.step2'`)),
780
809
  },
781
810
  consumers: {
782
811
  'flow.step1': flowStep1Consumer,