@happyvertical/smrt-approvals 0.0.0-stage → 0.55.10

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 (38) hide show
  1. package/AGENTS.md +45 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +124 -2
  5. package/agents/approvals.md +93 -0
  6. package/dist/__smrt-register__.d.ts +2 -0
  7. package/dist/__smrt-register__.d.ts.map +1 -0
  8. package/dist/collections/ApprovalEventCollection.d.ts +13 -0
  9. package/dist/collections/ApprovalEventCollection.d.ts.map +1 -0
  10. package/dist/collections/ApprovalPolicyCollection.d.ts +13 -0
  11. package/dist/collections/ApprovalPolicyCollection.d.ts.map +1 -0
  12. package/dist/collections/ApprovalRequestCollection.d.ts +13 -0
  13. package/dist/collections/ApprovalRequestCollection.d.ts.map +1 -0
  14. package/dist/index.d.ts +46 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +1307 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/kinds.d.ts +61 -0
  19. package/dist/kinds.d.ts.map +1 -0
  20. package/dist/manifest.json +1531 -0
  21. package/dist/models/ApprovalEvent.d.ts +82 -0
  22. package/dist/models/ApprovalEvent.d.ts.map +1 -0
  23. package/dist/models/ApprovalPolicy.d.ts +47 -0
  24. package/dist/models/ApprovalPolicy.d.ts.map +1 -0
  25. package/dist/models/ApprovalRequest.d.ts +118 -0
  26. package/dist/models/ApprovalRequest.d.ts.map +1 -0
  27. package/dist/permissions.d.ts +20 -0
  28. package/dist/permissions.d.ts.map +1 -0
  29. package/dist/service.d.ts +203 -0
  30. package/dist/service.d.ts.map +1 -0
  31. package/dist/smrt-knowledge.json +751 -0
  32. package/dist/types.d.ts +136 -0
  33. package/dist/types.d.ts.map +1 -0
  34. package/dist/types.js +45 -0
  35. package/dist/types.js.map +1 -0
  36. package/dist/write-capability.d.ts +28 -0
  37. package/dist/write-capability.d.ts.map +1 -0
  38. package/package.json +64 -3
@@ -0,0 +1,1531 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "timestamp": 0,
4
+ "packageName": "@happyvertical/smrt-approvals",
5
+ "packageVersion": "0.55.10",
6
+ "objects": {
7
+ "@happyvertical/smrt-approvals:ApprovalEventCollection": {
8
+ "name": "approvaleventcollection",
9
+ "className": "ApprovalEventCollection",
10
+ "qualifiedName": "@happyvertical/smrt-approvals:ApprovalEventCollection",
11
+ "collection": "approvalevents",
12
+ "filePath": "/home/runner/work/smrt/smrt/packages/approvals/src/collections/ApprovalEventCollection.ts",
13
+ "packageName": "@happyvertical/smrt-approvals",
14
+ "fields": {},
15
+ "methods": {},
16
+ "decoratorConfig": {
17
+ "api": {
18
+ "include": [
19
+ "list",
20
+ "get"
21
+ ]
22
+ },
23
+ "mcp": {
24
+ "include": [
25
+ "list",
26
+ "get"
27
+ ]
28
+ },
29
+ "cli": false,
30
+ "tableName": "approval_events"
31
+ },
32
+ "extends": "SmrtCollection",
33
+ "extendsTypeArg": "ApprovalEvent",
34
+ "exportName": "ApprovalEventCollection",
35
+ "collectionExportName": "ApprovalEventCollectionCollection",
36
+ "schema": {
37
+ "tableName": "approval_events",
38
+ "ddl": "CREATE TABLE IF NOT EXISTS \"approval_events\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID NOT NULL,\n \"request_id\" UUID NOT NULL,\n \"type\" TEXT NOT NULL,\n \"actor_id\" TEXT NOT NULL,\n \"actor_type\" TEXT,\n \"reason\" TEXT,\n \"subject_revision_hash\" TEXT,\n \"sequence\" INTEGER,\n \"vote_key\" TEXT,\n \"occurred_at\" TIMESTAMP\n);",
39
+ "columns": {
40
+ "id": {
41
+ "type": "UUID",
42
+ "primaryKey": true,
43
+ "referenceKind": "id",
44
+ "notNull": true
45
+ },
46
+ "slug": {
47
+ "type": "TEXT",
48
+ "notNull": true
49
+ },
50
+ "context": {
51
+ "type": "TEXT",
52
+ "notNull": true,
53
+ "default": ""
54
+ },
55
+ "created_at": {
56
+ "type": "TIMESTAMP",
57
+ "notNull": true,
58
+ "default": "current_timestamp"
59
+ },
60
+ "updated_at": {
61
+ "type": "TIMESTAMP",
62
+ "notNull": true,
63
+ "default": "current_timestamp"
64
+ },
65
+ "tenant_id": {
66
+ "type": "UUID",
67
+ "referenceKind": "tenantId",
68
+ "notNull": true,
69
+ "unique": false
70
+ },
71
+ "request_id": {
72
+ "type": "UUID",
73
+ "referenceKind": "foreignKey",
74
+ "notNull": true,
75
+ "unique": false,
76
+ "foreignKey": {
77
+ "table": "approval_requests",
78
+ "column": "id",
79
+ "onDelete": "RESTRICT",
80
+ "onUpdate": "RESTRICT",
81
+ "engines": [
82
+ "postgres",
83
+ "sqlite"
84
+ ]
85
+ }
86
+ },
87
+ "type": {
88
+ "type": "TEXT",
89
+ "notNull": true,
90
+ "unique": false
91
+ },
92
+ "actor_id": {
93
+ "type": "TEXT",
94
+ "notNull": true,
95
+ "unique": false
96
+ },
97
+ "actor_type": {
98
+ "type": "TEXT",
99
+ "notNull": false,
100
+ "unique": false
101
+ },
102
+ "reason": {
103
+ "type": "TEXT",
104
+ "notNull": false,
105
+ "unique": false
106
+ },
107
+ "subject_revision_hash": {
108
+ "type": "TEXT",
109
+ "notNull": false,
110
+ "unique": false
111
+ },
112
+ "sequence": {
113
+ "type": "INTEGER",
114
+ "notNull": false,
115
+ "unique": false
116
+ },
117
+ "vote_key": {
118
+ "type": "TEXT",
119
+ "notNull": false,
120
+ "unique": false
121
+ },
122
+ "occurred_at": {
123
+ "type": "TIMESTAMP",
124
+ "notNull": false,
125
+ "unique": false
126
+ }
127
+ },
128
+ "indexes": [
129
+ {
130
+ "name": "approval_events_slug_context_idx",
131
+ "columns": [
132
+ "tenant_id",
133
+ "slug",
134
+ "context"
135
+ ],
136
+ "unique": true
137
+ },
138
+ {
139
+ "name": "approval_events_request_sequence_key",
140
+ "columns": [
141
+ "request_id",
142
+ "sequence"
143
+ ],
144
+ "unique": true
145
+ },
146
+ {
147
+ "name": "approval_events_request_vote_key",
148
+ "columns": [
149
+ "request_id",
150
+ "vote_key"
151
+ ],
152
+ "unique": true
153
+ },
154
+ {
155
+ "name": "approval_events_tenant_occurred_idx",
156
+ "columns": [
157
+ "tenant_id",
158
+ "occurred_at"
159
+ ]
160
+ },
161
+ {
162
+ "name": "approval_events_tenant_id_created_at_idx",
163
+ "columns": [
164
+ "tenant_id",
165
+ "created_at"
166
+ ]
167
+ }
168
+ ],
169
+ "version": "4963053a"
170
+ },
171
+ "importPath": "@happyvertical/smrt-approvals"
172
+ },
173
+ "@happyvertical/smrt-approvals:ApprovalPolicyCollection": {
174
+ "name": "approvalpolicycollection",
175
+ "className": "ApprovalPolicyCollection",
176
+ "qualifiedName": "@happyvertical/smrt-approvals:ApprovalPolicyCollection",
177
+ "collection": "approvalpolicies",
178
+ "filePath": "/home/runner/work/smrt/smrt/packages/approvals/src/collections/ApprovalPolicyCollection.ts",
179
+ "packageName": "@happyvertical/smrt-approvals",
180
+ "fields": {},
181
+ "methods": {},
182
+ "decoratorConfig": {
183
+ "api": {
184
+ "include": [
185
+ "list",
186
+ "get"
187
+ ]
188
+ },
189
+ "mcp": {
190
+ "include": [
191
+ "list",
192
+ "get"
193
+ ]
194
+ },
195
+ "cli": false,
196
+ "tableName": "approval_policies"
197
+ },
198
+ "extends": "SmrtCollection",
199
+ "extendsTypeArg": "ApprovalPolicy",
200
+ "exportName": "ApprovalPolicyCollection",
201
+ "collectionExportName": "ApprovalPolicyCollectionCollection",
202
+ "schema": {
203
+ "tableName": "approval_policies",
204
+ "ddl": "CREATE TABLE IF NOT EXISTS \"approval_policies\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID NOT NULL,\n \"kind\" TEXT NOT NULL,\n \"required_approvals\" INTEGER,\n \"ttl_ms\" INTEGER,\n \"required_permission\" TEXT,\n \"updated_by\" TEXT\n);",
205
+ "columns": {
206
+ "id": {
207
+ "type": "UUID",
208
+ "primaryKey": true,
209
+ "referenceKind": "id",
210
+ "notNull": true
211
+ },
212
+ "slug": {
213
+ "type": "TEXT",
214
+ "notNull": true
215
+ },
216
+ "context": {
217
+ "type": "TEXT",
218
+ "notNull": true,
219
+ "default": ""
220
+ },
221
+ "created_at": {
222
+ "type": "TIMESTAMP",
223
+ "notNull": true,
224
+ "default": "current_timestamp"
225
+ },
226
+ "updated_at": {
227
+ "type": "TIMESTAMP",
228
+ "notNull": true,
229
+ "default": "current_timestamp"
230
+ },
231
+ "tenant_id": {
232
+ "type": "UUID",
233
+ "referenceKind": "tenantId",
234
+ "notNull": true,
235
+ "unique": false
236
+ },
237
+ "kind": {
238
+ "type": "TEXT",
239
+ "notNull": true,
240
+ "unique": false
241
+ },
242
+ "required_approvals": {
243
+ "type": "INTEGER",
244
+ "notNull": false,
245
+ "unique": false
246
+ },
247
+ "ttl_ms": {
248
+ "type": "INTEGER",
249
+ "notNull": false,
250
+ "unique": false
251
+ },
252
+ "required_permission": {
253
+ "type": "TEXT",
254
+ "notNull": false,
255
+ "unique": false
256
+ },
257
+ "updated_by": {
258
+ "type": "TEXT",
259
+ "notNull": false,
260
+ "unique": false
261
+ }
262
+ },
263
+ "indexes": [
264
+ {
265
+ "name": "approval_policies_slug_context_idx",
266
+ "columns": [
267
+ "tenant_id",
268
+ "slug",
269
+ "context"
270
+ ],
271
+ "unique": true
272
+ },
273
+ {
274
+ "name": "approval_policies_tenant_kind_key",
275
+ "columns": [
276
+ "tenant_id",
277
+ "kind"
278
+ ],
279
+ "unique": true
280
+ },
281
+ {
282
+ "name": "approval_policies_tenant_id_created_at_idx",
283
+ "columns": [
284
+ "tenant_id",
285
+ "created_at"
286
+ ]
287
+ }
288
+ ],
289
+ "version": "80929cc8"
290
+ },
291
+ "importPath": "@happyvertical/smrt-approvals"
292
+ },
293
+ "@happyvertical/smrt-approvals:ApprovalRequestCollection": {
294
+ "name": "approvalrequestcollection",
295
+ "className": "ApprovalRequestCollection",
296
+ "qualifiedName": "@happyvertical/smrt-approvals:ApprovalRequestCollection",
297
+ "collection": "approvalrequests",
298
+ "filePath": "/home/runner/work/smrt/smrt/packages/approvals/src/collections/ApprovalRequestCollection.ts",
299
+ "packageName": "@happyvertical/smrt-approvals",
300
+ "fields": {},
301
+ "methods": {},
302
+ "decoratorConfig": {
303
+ "api": {
304
+ "include": [
305
+ "list",
306
+ "get"
307
+ ]
308
+ },
309
+ "mcp": {
310
+ "include": [
311
+ "list",
312
+ "get"
313
+ ]
314
+ },
315
+ "cli": false,
316
+ "tableName": "approval_requests"
317
+ },
318
+ "extends": "SmrtCollection",
319
+ "extendsTypeArg": "ApprovalRequest",
320
+ "exportName": "ApprovalRequestCollection",
321
+ "collectionExportName": "ApprovalRequestCollectionCollection",
322
+ "schema": {
323
+ "tableName": "approval_requests",
324
+ "ddl": "CREATE TABLE IF NOT EXISTS \"approval_requests\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID NOT NULL,\n \"kind\" TEXT NOT NULL,\n \"subject_type\" TEXT NOT NULL,\n \"subject_id\" TEXT NOT NULL,\n \"subject_revision_hash\" TEXT NOT NULL,\n \"request_key\" TEXT NOT NULL,\n \"requested_by\" TEXT NOT NULL,\n \"requested_by_type\" TEXT,\n \"summary\" TEXT,\n \"status\" TEXT,\n \"required_approvals\" INTEGER,\n \"approval_count\" INTEGER,\n \"required_permissions\" TEXT,\n \"version\" INTEGER,\n \"expires_at\" TIMESTAMP,\n \"decided_at\" TIMESTAMP,\n \"consumed_at\" TIMESTAMP,\n \"consumed_by\" TEXT\n);",
325
+ "columns": {
326
+ "id": {
327
+ "type": "UUID",
328
+ "primaryKey": true,
329
+ "referenceKind": "id",
330
+ "notNull": true
331
+ },
332
+ "slug": {
333
+ "type": "TEXT",
334
+ "notNull": true
335
+ },
336
+ "context": {
337
+ "type": "TEXT",
338
+ "notNull": true,
339
+ "default": ""
340
+ },
341
+ "created_at": {
342
+ "type": "TIMESTAMP",
343
+ "notNull": true,
344
+ "default": "current_timestamp"
345
+ },
346
+ "updated_at": {
347
+ "type": "TIMESTAMP",
348
+ "notNull": true,
349
+ "default": "current_timestamp"
350
+ },
351
+ "tenant_id": {
352
+ "type": "UUID",
353
+ "referenceKind": "tenantId",
354
+ "notNull": true,
355
+ "unique": false
356
+ },
357
+ "kind": {
358
+ "type": "TEXT",
359
+ "notNull": true,
360
+ "unique": false
361
+ },
362
+ "subject_type": {
363
+ "type": "TEXT",
364
+ "notNull": true,
365
+ "unique": false
366
+ },
367
+ "subject_id": {
368
+ "type": "TEXT",
369
+ "notNull": true,
370
+ "unique": false
371
+ },
372
+ "subject_revision_hash": {
373
+ "type": "TEXT",
374
+ "notNull": true,
375
+ "unique": false
376
+ },
377
+ "request_key": {
378
+ "type": "TEXT",
379
+ "notNull": true,
380
+ "unique": false
381
+ },
382
+ "requested_by": {
383
+ "type": "TEXT",
384
+ "notNull": true,
385
+ "unique": false
386
+ },
387
+ "requested_by_type": {
388
+ "type": "TEXT",
389
+ "notNull": false,
390
+ "unique": false
391
+ },
392
+ "summary": {
393
+ "type": "TEXT",
394
+ "notNull": false,
395
+ "unique": false
396
+ },
397
+ "status": {
398
+ "type": "TEXT",
399
+ "notNull": false,
400
+ "unique": false
401
+ },
402
+ "required_approvals": {
403
+ "type": "INTEGER",
404
+ "notNull": false,
405
+ "unique": false
406
+ },
407
+ "approval_count": {
408
+ "type": "INTEGER",
409
+ "notNull": false,
410
+ "unique": false
411
+ },
412
+ "required_permissions": {
413
+ "type": "TEXT",
414
+ "notNull": false,
415
+ "unique": false
416
+ },
417
+ "version": {
418
+ "type": "INTEGER",
419
+ "notNull": false,
420
+ "unique": false
421
+ },
422
+ "expires_at": {
423
+ "type": "TIMESTAMP",
424
+ "notNull": false,
425
+ "unique": false
426
+ },
427
+ "decided_at": {
428
+ "type": "TIMESTAMP",
429
+ "notNull": false,
430
+ "unique": false
431
+ },
432
+ "consumed_at": {
433
+ "type": "TIMESTAMP",
434
+ "notNull": false,
435
+ "unique": false
436
+ },
437
+ "consumed_by": {
438
+ "type": "TEXT",
439
+ "notNull": false,
440
+ "unique": false
441
+ }
442
+ },
443
+ "indexes": [
444
+ {
445
+ "name": "approval_requests_slug_context_idx",
446
+ "columns": [
447
+ "tenant_id",
448
+ "slug",
449
+ "context"
450
+ ],
451
+ "unique": true
452
+ },
453
+ {
454
+ "name": "approval_requests_tenant_request_key",
455
+ "columns": [
456
+ "tenant_id",
457
+ "request_key"
458
+ ],
459
+ "unique": true
460
+ },
461
+ {
462
+ "name": "approval_requests_status_expiry_idx",
463
+ "columns": [
464
+ "tenant_id",
465
+ "status",
466
+ "expires_at"
467
+ ]
468
+ },
469
+ {
470
+ "name": "approval_requests_subject_idx",
471
+ "columns": [
472
+ "tenant_id",
473
+ "subject_type",
474
+ "subject_id"
475
+ ]
476
+ },
477
+ {
478
+ "name": "approval_requests_tenant_id_created_at_idx",
479
+ "columns": [
480
+ "tenant_id",
481
+ "created_at"
482
+ ]
483
+ }
484
+ ],
485
+ "version": "a5800bdd"
486
+ },
487
+ "importPath": "@happyvertical/smrt-approvals"
488
+ },
489
+ "@happyvertical/smrt-approvals:ApprovalEvent": {
490
+ "name": "approvalevent",
491
+ "className": "ApprovalEvent",
492
+ "qualifiedName": "@happyvertical/smrt-approvals:ApprovalEvent",
493
+ "collection": "approvalevents",
494
+ "description": "One immutable entry in an approval request's history.",
495
+ "filePath": "/home/runner/work/smrt/smrt/packages/approvals/src/models/ApprovalEvent.ts",
496
+ "packageName": "@happyvertical/smrt-approvals",
497
+ "fields": {
498
+ "tenantId": {
499
+ "type": "text",
500
+ "required": true,
501
+ "_meta": {
502
+ "sqlType": "UUID",
503
+ "__tenancy": {
504
+ "isTenantIdField": true,
505
+ "autoFilter": true,
506
+ "required": true,
507
+ "autoPopulate": true,
508
+ "nullable": false,
509
+ "mode": "required",
510
+ "field": "tenantId",
511
+ "allowSuperAdminBypass": false
512
+ }
513
+ }
514
+ },
515
+ "requestId": {
516
+ "type": "foreignKey",
517
+ "required": true,
518
+ "related": "ApprovalRequest",
519
+ "_meta": {
520
+ "required": true,
521
+ "constraint": {
522
+ "engines": [
523
+ "postgres",
524
+ "sqlite"
525
+ ]
526
+ },
527
+ "onDelete": "RESTRICT",
528
+ "onUpdate": "RESTRICT"
529
+ }
530
+ },
531
+ "type": {
532
+ "type": "text",
533
+ "required": true,
534
+ "_meta": {
535
+ "required": true,
536
+ "readonly": true
537
+ },
538
+ "readonly": true
539
+ },
540
+ "actorId": {
541
+ "type": "text",
542
+ "required": true,
543
+ "_meta": {
544
+ "required": true,
545
+ "readonly": true
546
+ },
547
+ "readonly": true
548
+ },
549
+ "actorType": {
550
+ "type": "text",
551
+ "required": false,
552
+ "_meta": {
553
+ "readonly": true
554
+ },
555
+ "enum": [
556
+ "human",
557
+ "agent",
558
+ "service"
559
+ ],
560
+ "readonly": true
561
+ },
562
+ "reason": {
563
+ "type": "text",
564
+ "required": false,
565
+ "_meta": {
566
+ "readonly": true
567
+ },
568
+ "readonly": true
569
+ },
570
+ "subjectRevisionHash": {
571
+ "type": "text",
572
+ "required": false,
573
+ "_meta": {
574
+ "readonly": true
575
+ },
576
+ "readonly": true
577
+ },
578
+ "sequence": {
579
+ "type": "integer",
580
+ "required": false,
581
+ "_meta": {
582
+ "readonly": true
583
+ },
584
+ "readonly": true
585
+ },
586
+ "voteKey": {
587
+ "type": "text",
588
+ "required": false,
589
+ "_meta": {
590
+ "nullable": true,
591
+ "readonly": true
592
+ },
593
+ "readonly": true
594
+ },
595
+ "occurredAt": {
596
+ "type": "datetime",
597
+ "required": false,
598
+ "_meta": {
599
+ "readonly": true
600
+ },
601
+ "readonly": true
602
+ }
603
+ },
604
+ "methods": {
605
+ "save": {
606
+ "name": "save",
607
+ "async": true,
608
+ "parameters": [],
609
+ "returnType": "Promise<this>",
610
+ "isStatic": false,
611
+ "isPublic": true
612
+ },
613
+ "delete": {
614
+ "name": "delete",
615
+ "async": true,
616
+ "parameters": [],
617
+ "returnType": "Promise<void>",
618
+ "isStatic": false,
619
+ "isPublic": true
620
+ }
621
+ },
622
+ "decoratorConfig": {
623
+ "tableName": "approval_events",
624
+ "api": {
625
+ "include": [
626
+ "list",
627
+ "get"
628
+ ]
629
+ },
630
+ "mcp": {
631
+ "include": [
632
+ "list",
633
+ "get"
634
+ ]
635
+ },
636
+ "cli": false,
637
+ "indexes": [
638
+ {
639
+ "name": "approval_events_request_sequence_key",
640
+ "columns": [
641
+ "requestId",
642
+ "sequence"
643
+ ],
644
+ "unique": true
645
+ },
646
+ {
647
+ "name": "approval_events_request_vote_key",
648
+ "columns": [
649
+ "requestId",
650
+ "voteKey"
651
+ ],
652
+ "unique": true
653
+ },
654
+ {
655
+ "name": "approval_events_tenant_occurred_idx",
656
+ "columns": [
657
+ "tenantId",
658
+ "occurredAt"
659
+ ]
660
+ }
661
+ ],
662
+ "tenantScoped": {
663
+ "mode": "required"
664
+ },
665
+ "conflictColumns": [
666
+ "tenant_id",
667
+ "slug",
668
+ "context"
669
+ ]
670
+ },
671
+ "extends": "SmrtObject",
672
+ "exportName": "ApprovalEvent",
673
+ "collectionExportName": "ApprovalEventCollection",
674
+ "validationRules": [
675
+ {
676
+ "field": "requestId",
677
+ "rule": "required",
678
+ "fieldType": "foreignKey"
679
+ },
680
+ {
681
+ "field": "type",
682
+ "rule": "required",
683
+ "fieldType": "text"
684
+ },
685
+ {
686
+ "field": "actorId",
687
+ "rule": "required",
688
+ "fieldType": "text"
689
+ }
690
+ ],
691
+ "schema": {
692
+ "tableName": "approval_events",
693
+ "ddl": "CREATE TABLE IF NOT EXISTS \"approval_events\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID NOT NULL,\n \"request_id\" UUID NOT NULL,\n \"type\" TEXT NOT NULL,\n \"actor_id\" TEXT NOT NULL,\n \"actor_type\" TEXT,\n \"reason\" TEXT,\n \"subject_revision_hash\" TEXT,\n \"sequence\" INTEGER,\n \"vote_key\" TEXT,\n \"occurred_at\" TIMESTAMP\n);",
694
+ "columns": {
695
+ "id": {
696
+ "type": "UUID",
697
+ "primaryKey": true,
698
+ "referenceKind": "id",
699
+ "notNull": true
700
+ },
701
+ "slug": {
702
+ "type": "TEXT",
703
+ "notNull": true
704
+ },
705
+ "context": {
706
+ "type": "TEXT",
707
+ "notNull": true,
708
+ "default": ""
709
+ },
710
+ "created_at": {
711
+ "type": "TIMESTAMP",
712
+ "notNull": true,
713
+ "default": "current_timestamp"
714
+ },
715
+ "updated_at": {
716
+ "type": "TIMESTAMP",
717
+ "notNull": true,
718
+ "default": "current_timestamp"
719
+ },
720
+ "tenant_id": {
721
+ "type": "UUID",
722
+ "referenceKind": "tenantId",
723
+ "notNull": true,
724
+ "unique": false
725
+ },
726
+ "request_id": {
727
+ "type": "UUID",
728
+ "referenceKind": "foreignKey",
729
+ "notNull": true,
730
+ "unique": false,
731
+ "foreignKey": {
732
+ "table": "approval_requests",
733
+ "column": "id",
734
+ "onDelete": "RESTRICT",
735
+ "onUpdate": "RESTRICT",
736
+ "engines": [
737
+ "postgres",
738
+ "sqlite"
739
+ ]
740
+ }
741
+ },
742
+ "type": {
743
+ "type": "TEXT",
744
+ "notNull": true,
745
+ "unique": false
746
+ },
747
+ "actor_id": {
748
+ "type": "TEXT",
749
+ "notNull": true,
750
+ "unique": false
751
+ },
752
+ "actor_type": {
753
+ "type": "TEXT",
754
+ "notNull": false,
755
+ "unique": false
756
+ },
757
+ "reason": {
758
+ "type": "TEXT",
759
+ "notNull": false,
760
+ "unique": false
761
+ },
762
+ "subject_revision_hash": {
763
+ "type": "TEXT",
764
+ "notNull": false,
765
+ "unique": false
766
+ },
767
+ "sequence": {
768
+ "type": "INTEGER",
769
+ "notNull": false,
770
+ "unique": false
771
+ },
772
+ "vote_key": {
773
+ "type": "TEXT",
774
+ "notNull": false,
775
+ "unique": false
776
+ },
777
+ "occurred_at": {
778
+ "type": "TIMESTAMP",
779
+ "notNull": false,
780
+ "unique": false
781
+ }
782
+ },
783
+ "indexes": [
784
+ {
785
+ "name": "approval_events_slug_context_idx",
786
+ "columns": [
787
+ "tenant_id",
788
+ "slug",
789
+ "context"
790
+ ],
791
+ "unique": true
792
+ },
793
+ {
794
+ "name": "approval_events_request_sequence_key",
795
+ "columns": [
796
+ "request_id",
797
+ "sequence"
798
+ ],
799
+ "unique": true
800
+ },
801
+ {
802
+ "name": "approval_events_request_vote_key",
803
+ "columns": [
804
+ "request_id",
805
+ "vote_key"
806
+ ],
807
+ "unique": true
808
+ },
809
+ {
810
+ "name": "approval_events_tenant_occurred_idx",
811
+ "columns": [
812
+ "tenant_id",
813
+ "occurred_at"
814
+ ]
815
+ },
816
+ {
817
+ "name": "approval_events_tenant_id_created_at_idx",
818
+ "columns": [
819
+ "tenant_id",
820
+ "created_at"
821
+ ]
822
+ }
823
+ ],
824
+ "version": "4963053a"
825
+ },
826
+ "importPath": "@happyvertical/smrt-approvals"
827
+ },
828
+ "@happyvertical/smrt-approvals:ApprovalPolicy": {
829
+ "name": "approvalpolicy",
830
+ "className": "ApprovalPolicy",
831
+ "qualifiedName": "@happyvertical/smrt-approvals:ApprovalPolicy",
832
+ "collection": "approvalpolicies",
833
+ "description": "Tenant-level tightening of an approval kind. One row per tenant and kind.",
834
+ "filePath": "/home/runner/work/smrt/smrt/packages/approvals/src/models/ApprovalPolicy.ts",
835
+ "packageName": "@happyvertical/smrt-approvals",
836
+ "fields": {
837
+ "tenantId": {
838
+ "type": "text",
839
+ "required": true,
840
+ "_meta": {
841
+ "sqlType": "UUID",
842
+ "__tenancy": {
843
+ "isTenantIdField": true,
844
+ "autoFilter": true,
845
+ "required": true,
846
+ "autoPopulate": true,
847
+ "nullable": false,
848
+ "mode": "required",
849
+ "field": "tenantId",
850
+ "allowSuperAdminBypass": false
851
+ }
852
+ }
853
+ },
854
+ "kind": {
855
+ "type": "text",
856
+ "required": true,
857
+ "_meta": {
858
+ "required": true
859
+ }
860
+ },
861
+ "requiredApprovals": {
862
+ "type": "integer",
863
+ "required": false,
864
+ "_meta": {}
865
+ },
866
+ "ttlMs": {
867
+ "type": "integer",
868
+ "required": false,
869
+ "_meta": {}
870
+ },
871
+ "requiredPermission": {
872
+ "type": "text",
873
+ "required": false,
874
+ "_meta": {}
875
+ },
876
+ "updatedBy": {
877
+ "type": "text",
878
+ "required": false,
879
+ "_meta": {}
880
+ }
881
+ },
882
+ "methods": {
883
+ "save": {
884
+ "name": "save",
885
+ "async": true,
886
+ "parameters": [],
887
+ "returnType": "Promise<this>",
888
+ "isStatic": false,
889
+ "isPublic": true
890
+ }
891
+ },
892
+ "decoratorConfig": {
893
+ "tableName": "approval_policies",
894
+ "api": {
895
+ "include": [
896
+ "list",
897
+ "get"
898
+ ]
899
+ },
900
+ "mcp": {
901
+ "include": [
902
+ "list",
903
+ "get"
904
+ ]
905
+ },
906
+ "cli": false,
907
+ "indexes": [
908
+ {
909
+ "name": "approval_policies_tenant_kind_key",
910
+ "columns": [
911
+ "tenantId",
912
+ "kind"
913
+ ],
914
+ "unique": true
915
+ }
916
+ ],
917
+ "tenantScoped": {
918
+ "mode": "required"
919
+ },
920
+ "conflictColumns": [
921
+ "tenant_id",
922
+ "slug",
923
+ "context"
924
+ ]
925
+ },
926
+ "extends": "SmrtObject",
927
+ "exportName": "ApprovalPolicy",
928
+ "collectionExportName": "ApprovalPolicyCollection",
929
+ "validationRules": [
930
+ {
931
+ "field": "kind",
932
+ "rule": "required",
933
+ "fieldType": "text"
934
+ }
935
+ ],
936
+ "schema": {
937
+ "tableName": "approval_policies",
938
+ "ddl": "CREATE TABLE IF NOT EXISTS \"approval_policies\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID NOT NULL,\n \"kind\" TEXT NOT NULL,\n \"required_approvals\" INTEGER,\n \"ttl_ms\" INTEGER,\n \"required_permission\" TEXT,\n \"updated_by\" TEXT\n);",
939
+ "columns": {
940
+ "id": {
941
+ "type": "UUID",
942
+ "primaryKey": true,
943
+ "referenceKind": "id",
944
+ "notNull": true
945
+ },
946
+ "slug": {
947
+ "type": "TEXT",
948
+ "notNull": true
949
+ },
950
+ "context": {
951
+ "type": "TEXT",
952
+ "notNull": true,
953
+ "default": ""
954
+ },
955
+ "created_at": {
956
+ "type": "TIMESTAMP",
957
+ "notNull": true,
958
+ "default": "current_timestamp"
959
+ },
960
+ "updated_at": {
961
+ "type": "TIMESTAMP",
962
+ "notNull": true,
963
+ "default": "current_timestamp"
964
+ },
965
+ "tenant_id": {
966
+ "type": "UUID",
967
+ "referenceKind": "tenantId",
968
+ "notNull": true,
969
+ "unique": false
970
+ },
971
+ "kind": {
972
+ "type": "TEXT",
973
+ "notNull": true,
974
+ "unique": false
975
+ },
976
+ "required_approvals": {
977
+ "type": "INTEGER",
978
+ "notNull": false,
979
+ "unique": false
980
+ },
981
+ "ttl_ms": {
982
+ "type": "INTEGER",
983
+ "notNull": false,
984
+ "unique": false
985
+ },
986
+ "required_permission": {
987
+ "type": "TEXT",
988
+ "notNull": false,
989
+ "unique": false
990
+ },
991
+ "updated_by": {
992
+ "type": "TEXT",
993
+ "notNull": false,
994
+ "unique": false
995
+ }
996
+ },
997
+ "indexes": [
998
+ {
999
+ "name": "approval_policies_slug_context_idx",
1000
+ "columns": [
1001
+ "tenant_id",
1002
+ "slug",
1003
+ "context"
1004
+ ],
1005
+ "unique": true
1006
+ },
1007
+ {
1008
+ "name": "approval_policies_tenant_kind_key",
1009
+ "columns": [
1010
+ "tenant_id",
1011
+ "kind"
1012
+ ],
1013
+ "unique": true
1014
+ },
1015
+ {
1016
+ "name": "approval_policies_tenant_id_created_at_idx",
1017
+ "columns": [
1018
+ "tenant_id",
1019
+ "created_at"
1020
+ ]
1021
+ }
1022
+ ],
1023
+ "version": "80929cc8"
1024
+ },
1025
+ "importPath": "@happyvertical/smrt-approvals"
1026
+ },
1027
+ "@happyvertical/smrt-approvals:ApprovalRequest": {
1028
+ "name": "approvalrequest",
1029
+ "className": "ApprovalRequest",
1030
+ "qualifiedName": "@happyvertical/smrt-approvals:ApprovalRequest",
1031
+ "collection": "approvalrequests",
1032
+ "description": "A request for approval of one subject revision.",
1033
+ "filePath": "/home/runner/work/smrt/smrt/packages/approvals/src/models/ApprovalRequest.ts",
1034
+ "packageName": "@happyvertical/smrt-approvals",
1035
+ "fields": {
1036
+ "tenantId": {
1037
+ "type": "text",
1038
+ "required": true,
1039
+ "_meta": {
1040
+ "sqlType": "UUID",
1041
+ "__tenancy": {
1042
+ "isTenantIdField": true,
1043
+ "autoFilter": true,
1044
+ "required": true,
1045
+ "autoPopulate": true,
1046
+ "nullable": false,
1047
+ "mode": "required",
1048
+ "field": "tenantId",
1049
+ "allowSuperAdminBypass": false
1050
+ }
1051
+ }
1052
+ },
1053
+ "kind": {
1054
+ "type": "text",
1055
+ "required": true,
1056
+ "_meta": {
1057
+ "required": true,
1058
+ "readonly": true
1059
+ },
1060
+ "readonly": true
1061
+ },
1062
+ "subjectType": {
1063
+ "type": "text",
1064
+ "required": true,
1065
+ "_meta": {
1066
+ "required": true,
1067
+ "readonly": true
1068
+ },
1069
+ "readonly": true
1070
+ },
1071
+ "subjectId": {
1072
+ "type": "text",
1073
+ "required": true,
1074
+ "_meta": {
1075
+ "required": true,
1076
+ "readonly": true
1077
+ },
1078
+ "readonly": true
1079
+ },
1080
+ "subjectRevisionHash": {
1081
+ "type": "text",
1082
+ "required": true,
1083
+ "_meta": {
1084
+ "required": true,
1085
+ "readonly": true
1086
+ },
1087
+ "readonly": true
1088
+ },
1089
+ "requestKey": {
1090
+ "type": "text",
1091
+ "required": true,
1092
+ "_meta": {
1093
+ "required": true,
1094
+ "readonly": true
1095
+ },
1096
+ "readonly": true
1097
+ },
1098
+ "requestedBy": {
1099
+ "type": "text",
1100
+ "required": true,
1101
+ "_meta": {
1102
+ "required": true,
1103
+ "readonly": true
1104
+ },
1105
+ "readonly": true
1106
+ },
1107
+ "requestedByType": {
1108
+ "type": "text",
1109
+ "required": false,
1110
+ "_meta": {
1111
+ "readonly": true
1112
+ },
1113
+ "enum": [
1114
+ "human",
1115
+ "agent",
1116
+ "service"
1117
+ ],
1118
+ "readonly": true
1119
+ },
1120
+ "summary": {
1121
+ "type": "text",
1122
+ "required": false,
1123
+ "_meta": {
1124
+ "readonly": true
1125
+ },
1126
+ "readonly": true
1127
+ },
1128
+ "status": {
1129
+ "type": "text",
1130
+ "required": false,
1131
+ "_meta": {
1132
+ "readonly": true
1133
+ },
1134
+ "readonly": true
1135
+ },
1136
+ "requiredApprovals": {
1137
+ "type": "integer",
1138
+ "required": false,
1139
+ "_meta": {
1140
+ "readonly": true
1141
+ },
1142
+ "readonly": true
1143
+ },
1144
+ "approvalCount": {
1145
+ "type": "integer",
1146
+ "required": false,
1147
+ "_meta": {
1148
+ "readonly": true
1149
+ },
1150
+ "readonly": true
1151
+ },
1152
+ "requiredPermissions": {
1153
+ "type": "text",
1154
+ "required": false,
1155
+ "_meta": {
1156
+ "readonly": true
1157
+ },
1158
+ "readonly": true
1159
+ },
1160
+ "version": {
1161
+ "type": "integer",
1162
+ "required": false,
1163
+ "_meta": {
1164
+ "readonly": true
1165
+ },
1166
+ "readonly": true
1167
+ },
1168
+ "expiresAt": {
1169
+ "type": "datetime",
1170
+ "required": false,
1171
+ "_meta": {
1172
+ "readonly": true
1173
+ },
1174
+ "readonly": true
1175
+ },
1176
+ "decidedAt": {
1177
+ "type": "datetime",
1178
+ "required": false,
1179
+ "_meta": {
1180
+ "readonly": true
1181
+ },
1182
+ "readonly": true
1183
+ },
1184
+ "consumedAt": {
1185
+ "type": "datetime",
1186
+ "required": false,
1187
+ "_meta": {
1188
+ "readonly": true
1189
+ },
1190
+ "readonly": true
1191
+ },
1192
+ "consumedBy": {
1193
+ "type": "text",
1194
+ "required": false,
1195
+ "_meta": {
1196
+ "readonly": true
1197
+ },
1198
+ "readonly": true
1199
+ }
1200
+ },
1201
+ "methods": {
1202
+ "getRequiredPermissions": {
1203
+ "name": "getRequiredPermissions",
1204
+ "async": false,
1205
+ "parameters": [],
1206
+ "returnType": "string[]",
1207
+ "isStatic": false,
1208
+ "isPublic": true
1209
+ },
1210
+ "setRequiredPermissions": {
1211
+ "name": "setRequiredPermissions",
1212
+ "async": false,
1213
+ "parameters": [
1214
+ {
1215
+ "name": "slugs",
1216
+ "type": "any",
1217
+ "optional": false,
1218
+ "typeUnresolved": true
1219
+ }
1220
+ ],
1221
+ "returnType": "void",
1222
+ "isStatic": false,
1223
+ "isPublic": true
1224
+ },
1225
+ "expiresAtMs": {
1226
+ "name": "expiresAtMs",
1227
+ "async": false,
1228
+ "parameters": [],
1229
+ "returnType": "number",
1230
+ "isStatic": false,
1231
+ "isPublic": true
1232
+ },
1233
+ "isConsumed": {
1234
+ "name": "isConsumed",
1235
+ "async": false,
1236
+ "parameters": [],
1237
+ "returnType": "boolean",
1238
+ "isStatic": false,
1239
+ "isPublic": true
1240
+ },
1241
+ "save": {
1242
+ "name": "save",
1243
+ "async": true,
1244
+ "parameters": [],
1245
+ "returnType": "Promise<this>",
1246
+ "isStatic": false,
1247
+ "isPublic": true
1248
+ },
1249
+ "delete": {
1250
+ "name": "delete",
1251
+ "async": true,
1252
+ "parameters": [],
1253
+ "returnType": "Promise<void>",
1254
+ "isStatic": false,
1255
+ "isPublic": true
1256
+ }
1257
+ },
1258
+ "decoratorConfig": {
1259
+ "tableName": "approval_requests",
1260
+ "api": {
1261
+ "include": [
1262
+ "list",
1263
+ "get"
1264
+ ]
1265
+ },
1266
+ "mcp": {
1267
+ "include": [
1268
+ "list",
1269
+ "get"
1270
+ ]
1271
+ },
1272
+ "cli": false,
1273
+ "indexes": [
1274
+ {
1275
+ "name": "approval_requests_tenant_request_key",
1276
+ "columns": [
1277
+ "tenantId",
1278
+ "requestKey"
1279
+ ],
1280
+ "unique": true
1281
+ },
1282
+ {
1283
+ "name": "approval_requests_status_expiry_idx",
1284
+ "columns": [
1285
+ "tenantId",
1286
+ "status",
1287
+ "expiresAt"
1288
+ ]
1289
+ },
1290
+ {
1291
+ "name": "approval_requests_subject_idx",
1292
+ "columns": [
1293
+ "tenantId",
1294
+ "subjectType",
1295
+ "subjectId"
1296
+ ]
1297
+ }
1298
+ ],
1299
+ "tenantScoped": {
1300
+ "mode": "required"
1301
+ },
1302
+ "conflictColumns": [
1303
+ "tenant_id",
1304
+ "slug",
1305
+ "context"
1306
+ ]
1307
+ },
1308
+ "extends": "SmrtObject",
1309
+ "exportName": "ApprovalRequest",
1310
+ "collectionExportName": "ApprovalRequestCollection",
1311
+ "validationRules": [
1312
+ {
1313
+ "field": "kind",
1314
+ "rule": "required",
1315
+ "fieldType": "text"
1316
+ },
1317
+ {
1318
+ "field": "subjectType",
1319
+ "rule": "required",
1320
+ "fieldType": "text"
1321
+ },
1322
+ {
1323
+ "field": "subjectId",
1324
+ "rule": "required",
1325
+ "fieldType": "text"
1326
+ },
1327
+ {
1328
+ "field": "subjectRevisionHash",
1329
+ "rule": "required",
1330
+ "fieldType": "text"
1331
+ },
1332
+ {
1333
+ "field": "requestKey",
1334
+ "rule": "required",
1335
+ "fieldType": "text"
1336
+ },
1337
+ {
1338
+ "field": "requestedBy",
1339
+ "rule": "required",
1340
+ "fieldType": "text"
1341
+ }
1342
+ ],
1343
+ "schema": {
1344
+ "tableName": "approval_requests",
1345
+ "ddl": "CREATE TABLE IF NOT EXISTS \"approval_requests\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID NOT NULL,\n \"kind\" TEXT NOT NULL,\n \"subject_type\" TEXT NOT NULL,\n \"subject_id\" TEXT NOT NULL,\n \"subject_revision_hash\" TEXT NOT NULL,\n \"request_key\" TEXT NOT NULL,\n \"requested_by\" TEXT NOT NULL,\n \"requested_by_type\" TEXT,\n \"summary\" TEXT,\n \"status\" TEXT,\n \"required_approvals\" INTEGER,\n \"approval_count\" INTEGER,\n \"required_permissions\" TEXT,\n \"version\" INTEGER,\n \"expires_at\" TIMESTAMP,\n \"decided_at\" TIMESTAMP,\n \"consumed_at\" TIMESTAMP,\n \"consumed_by\" TEXT\n);",
1346
+ "columns": {
1347
+ "id": {
1348
+ "type": "UUID",
1349
+ "primaryKey": true,
1350
+ "referenceKind": "id",
1351
+ "notNull": true
1352
+ },
1353
+ "slug": {
1354
+ "type": "TEXT",
1355
+ "notNull": true
1356
+ },
1357
+ "context": {
1358
+ "type": "TEXT",
1359
+ "notNull": true,
1360
+ "default": ""
1361
+ },
1362
+ "created_at": {
1363
+ "type": "TIMESTAMP",
1364
+ "notNull": true,
1365
+ "default": "current_timestamp"
1366
+ },
1367
+ "updated_at": {
1368
+ "type": "TIMESTAMP",
1369
+ "notNull": true,
1370
+ "default": "current_timestamp"
1371
+ },
1372
+ "tenant_id": {
1373
+ "type": "UUID",
1374
+ "referenceKind": "tenantId",
1375
+ "notNull": true,
1376
+ "unique": false
1377
+ },
1378
+ "kind": {
1379
+ "type": "TEXT",
1380
+ "notNull": true,
1381
+ "unique": false
1382
+ },
1383
+ "subject_type": {
1384
+ "type": "TEXT",
1385
+ "notNull": true,
1386
+ "unique": false
1387
+ },
1388
+ "subject_id": {
1389
+ "type": "TEXT",
1390
+ "notNull": true,
1391
+ "unique": false
1392
+ },
1393
+ "subject_revision_hash": {
1394
+ "type": "TEXT",
1395
+ "notNull": true,
1396
+ "unique": false
1397
+ },
1398
+ "request_key": {
1399
+ "type": "TEXT",
1400
+ "notNull": true,
1401
+ "unique": false
1402
+ },
1403
+ "requested_by": {
1404
+ "type": "TEXT",
1405
+ "notNull": true,
1406
+ "unique": false
1407
+ },
1408
+ "requested_by_type": {
1409
+ "type": "TEXT",
1410
+ "notNull": false,
1411
+ "unique": false
1412
+ },
1413
+ "summary": {
1414
+ "type": "TEXT",
1415
+ "notNull": false,
1416
+ "unique": false
1417
+ },
1418
+ "status": {
1419
+ "type": "TEXT",
1420
+ "notNull": false,
1421
+ "unique": false
1422
+ },
1423
+ "required_approvals": {
1424
+ "type": "INTEGER",
1425
+ "notNull": false,
1426
+ "unique": false
1427
+ },
1428
+ "approval_count": {
1429
+ "type": "INTEGER",
1430
+ "notNull": false,
1431
+ "unique": false
1432
+ },
1433
+ "required_permissions": {
1434
+ "type": "TEXT",
1435
+ "notNull": false,
1436
+ "unique": false
1437
+ },
1438
+ "version": {
1439
+ "type": "INTEGER",
1440
+ "notNull": false,
1441
+ "unique": false
1442
+ },
1443
+ "expires_at": {
1444
+ "type": "TIMESTAMP",
1445
+ "notNull": false,
1446
+ "unique": false
1447
+ },
1448
+ "decided_at": {
1449
+ "type": "TIMESTAMP",
1450
+ "notNull": false,
1451
+ "unique": false
1452
+ },
1453
+ "consumed_at": {
1454
+ "type": "TIMESTAMP",
1455
+ "notNull": false,
1456
+ "unique": false
1457
+ },
1458
+ "consumed_by": {
1459
+ "type": "TEXT",
1460
+ "notNull": false,
1461
+ "unique": false
1462
+ }
1463
+ },
1464
+ "indexes": [
1465
+ {
1466
+ "name": "approval_requests_slug_context_idx",
1467
+ "columns": [
1468
+ "tenant_id",
1469
+ "slug",
1470
+ "context"
1471
+ ],
1472
+ "unique": true
1473
+ },
1474
+ {
1475
+ "name": "approval_requests_tenant_request_key",
1476
+ "columns": [
1477
+ "tenant_id",
1478
+ "request_key"
1479
+ ],
1480
+ "unique": true
1481
+ },
1482
+ {
1483
+ "name": "approval_requests_status_expiry_idx",
1484
+ "columns": [
1485
+ "tenant_id",
1486
+ "status",
1487
+ "expires_at"
1488
+ ]
1489
+ },
1490
+ {
1491
+ "name": "approval_requests_subject_idx",
1492
+ "columns": [
1493
+ "tenant_id",
1494
+ "subject_type",
1495
+ "subject_id"
1496
+ ]
1497
+ },
1498
+ {
1499
+ "name": "approval_requests_tenant_id_created_at_idx",
1500
+ "columns": [
1501
+ "tenant_id",
1502
+ "created_at"
1503
+ ]
1504
+ }
1505
+ ],
1506
+ "version": "a5800bdd"
1507
+ },
1508
+ "importPath": "@happyvertical/smrt-approvals"
1509
+ }
1510
+ },
1511
+ "moduleType": "smrt",
1512
+ "smrtDependencies": [
1513
+ "@happyvertical/smrt-core",
1514
+ "@happyvertical/smrt-tenancy",
1515
+ "@happyvertical/smrt-users"
1516
+ ],
1517
+ "browser": {
1518
+ "status": "server-only",
1519
+ "issues": [
1520
+ "#3617",
1521
+ "#3624",
1522
+ "#3626"
1523
+ ],
1524
+ "via": [
1525
+ "@happyvertical/smrt-profiles",
1526
+ "@happyvertical/smrt-tenancy",
1527
+ "@happyvertical/smrt-users"
1528
+ ]
1529
+ },
1530
+ "stampsConstructors": true
1531
+ }