@happyvertical/smrt-subscriptions 0.39.3 → 0.39.6

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.
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-07-11T16:22:17.420Z",
3
+ "generatedAt": "2026-07-12T08:39:40.673Z",
4
4
  "packageName": "@happyvertical/smrt-subscriptions",
5
- "packageVersion": "0.39.3",
5
+ "packageVersion": "0.39.6",
6
6
  "sourceManifestPath": "dist/manifest.json",
7
7
  "agentDocPath": "AGENTS.md",
8
8
  "sourceHashes": {
9
- "manifest": "c3f5a584ea5f7ea94f1bf44b8de268e5d588a0585f85244935e8db36393aeaaf",
10
- "packageJson": "afd19219ca5302bcec2135e86a91bc20fb95f2cff7ec1a66cfcf923049f7be8d",
11
- "agents": "97061be30df384ee234135e176165d3ecc6303146e596d3dd64c58ce508ae3b4"
9
+ "manifest": "423d43177743b03fec0991ba6d3a00100fdb9ef6a9c60b89aac5c28a667d6d81",
10
+ "packageJson": "0161356bd8f92ab7db1f8be2394a58b91551ca585adf15d2051cc3d9b20fe78b",
11
+ "agents": "065d7d121a55a300284b8cff9e9a1c3ac1cc87187634377af82fdf8a9b9c27f8"
12
12
  },
13
13
  "exports": [
14
14
  ".",
@@ -566,6 +566,30 @@
566
566
  "required": false,
567
567
  "columnType": "TEXT"
568
568
  },
569
+ {
570
+ "name": "projectId",
571
+ "type": "text",
572
+ "required": false,
573
+ "columnType": "TEXT"
574
+ },
575
+ {
576
+ "name": "workRefType",
577
+ "type": "text",
578
+ "required": false,
579
+ "columnType": "TEXT"
580
+ },
581
+ {
582
+ "name": "workRefId",
583
+ "type": "text",
584
+ "required": false,
585
+ "columnType": "TEXT"
586
+ },
587
+ {
588
+ "name": "provider",
589
+ "type": "text",
590
+ "required": false,
591
+ "columnType": "TEXT"
592
+ },
569
593
  {
570
594
  "name": "dimensions",
571
595
  "type": "text",
@@ -606,45 +630,722 @@
606
630
  },
607
631
  {
608
632
  "kind": "cli",
609
- "name": "tenantusagemetric_list",
633
+ "name": "tenantusagemetric_list",
634
+ "operation": "list",
635
+ "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
636
+ },
637
+ {
638
+ "kind": "cli",
639
+ "name": "tenantusagemetric_get",
640
+ "operation": "get",
641
+ "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
642
+ },
643
+ {
644
+ "kind": "cli",
645
+ "name": "tenantusagemetric_create",
646
+ "operation": "create",
647
+ "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
648
+ },
649
+ {
650
+ "kind": "mcp",
651
+ "name": "tenantusagemetric_list",
652
+ "operation": "list",
653
+ "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
654
+ },
655
+ {
656
+ "kind": "mcp",
657
+ "name": "tenantusagemetric_get",
658
+ "operation": "get",
659
+ "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
660
+ }
661
+ ],
662
+ "relationshipFeatures": [
663
+ "uuidColumns"
664
+ ],
665
+ "tags": [],
666
+ "risks": []
667
+ },
668
+ {
669
+ "name": "PricingRule",
670
+ "qualifiedName": "@happyvertical/smrt-subscriptions:PricingRule",
671
+ "collection": "pricingrules",
672
+ "tableName": "_smrt_pricing_rules",
673
+ "packageName": "@happyvertical/smrt-subscriptions",
674
+ "extends": "SmrtObject",
675
+ "fields": [
676
+ {
677
+ "name": "tenantId",
678
+ "type": "text",
679
+ "required": true,
680
+ "columnType": "UUID"
681
+ },
682
+ {
683
+ "name": "ruleKey",
684
+ "type": "text",
685
+ "required": false,
686
+ "columnType": "TEXT"
687
+ },
688
+ {
689
+ "name": "metricKey",
690
+ "type": "text",
691
+ "required": false,
692
+ "columnType": "TEXT"
693
+ },
694
+ {
695
+ "name": "serviceKey",
696
+ "type": "text",
697
+ "required": false,
698
+ "columnType": "TEXT"
699
+ },
700
+ {
701
+ "name": "strategy",
702
+ "type": "text",
703
+ "required": false,
704
+ "columnType": "TEXT"
705
+ },
706
+ {
707
+ "name": "currency",
708
+ "type": "text",
709
+ "required": false,
710
+ "columnType": "TEXT"
711
+ },
712
+ {
713
+ "name": "effectiveFrom",
714
+ "type": "datetime",
715
+ "required": false,
716
+ "columnType": "TIMESTAMP"
717
+ },
718
+ {
719
+ "name": "effectiveTo",
720
+ "type": "datetime",
721
+ "required": false,
722
+ "columnType": "TIMESTAMP"
723
+ },
724
+ {
725
+ "name": "priority",
726
+ "type": "integer",
727
+ "required": false,
728
+ "columnType": "INTEGER"
729
+ },
730
+ {
731
+ "name": "terms",
732
+ "type": "text",
733
+ "required": false,
734
+ "columnType": "TEXT"
735
+ },
736
+ {
737
+ "name": "active",
738
+ "type": "boolean",
739
+ "required": false,
740
+ "columnType": "BOOLEAN"
741
+ }
742
+ ],
743
+ "relationships": [],
744
+ "methods": [
745
+ "getTerms",
746
+ "setTerms"
747
+ ],
748
+ "surfaces": [
749
+ {
750
+ "kind": "api",
751
+ "name": "pricingrules.list",
752
+ "operation": "list",
753
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
754
+ "path": "/pricingrules",
755
+ "method": "GET"
756
+ },
757
+ {
758
+ "kind": "api",
759
+ "name": "pricingrules.get",
760
+ "operation": "get",
761
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
762
+ "path": "/pricingrules/[id]",
763
+ "method": "GET"
764
+ },
765
+ {
766
+ "kind": "api",
767
+ "name": "pricingrules.create",
768
+ "operation": "create",
769
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
770
+ "path": "/pricingrules",
771
+ "method": "POST"
772
+ },
773
+ {
774
+ "kind": "api",
775
+ "name": "pricingrules.update",
776
+ "operation": "update",
777
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
778
+ "path": "/pricingrules/[id]",
779
+ "method": "PATCH"
780
+ },
781
+ {
782
+ "kind": "api",
783
+ "name": "pricingrules.delete",
784
+ "operation": "delete",
785
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
786
+ "path": "/pricingrules/[id]",
787
+ "method": "DELETE"
788
+ },
789
+ {
790
+ "kind": "cli",
791
+ "name": "pricingrule_list",
792
+ "operation": "list",
793
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
794
+ },
795
+ {
796
+ "kind": "cli",
797
+ "name": "pricingrule_get",
798
+ "operation": "get",
799
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
800
+ },
801
+ {
802
+ "kind": "cli",
803
+ "name": "pricingrule_create",
804
+ "operation": "create",
805
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
806
+ },
807
+ {
808
+ "kind": "cli",
809
+ "name": "pricingrule_update",
810
+ "operation": "update",
811
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
812
+ },
813
+ {
814
+ "kind": "cli",
815
+ "name": "pricingrule_delete",
816
+ "operation": "delete",
817
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
818
+ },
819
+ {
820
+ "kind": "mcp",
821
+ "name": "pricingrule_list",
822
+ "operation": "list",
823
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
824
+ },
825
+ {
826
+ "kind": "mcp",
827
+ "name": "pricingrule_get",
828
+ "operation": "get",
829
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
830
+ },
831
+ {
832
+ "kind": "mcp",
833
+ "name": "pricingrule_create",
834
+ "operation": "create",
835
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
836
+ },
837
+ {
838
+ "kind": "mcp",
839
+ "name": "pricingrule_update",
840
+ "operation": "update",
841
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
842
+ },
843
+ {
844
+ "kind": "mcp",
845
+ "name": "pricingrule_delete",
846
+ "operation": "delete",
847
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
848
+ }
849
+ ],
850
+ "relationshipFeatures": [
851
+ "uuidColumns"
852
+ ],
853
+ "tags": [],
854
+ "risks": []
855
+ },
856
+ {
857
+ "name": "ClientCharge",
858
+ "qualifiedName": "@happyvertical/smrt-subscriptions:ClientCharge",
859
+ "collection": "clientcharges",
860
+ "tableName": "_smrt_client_charges",
861
+ "packageName": "@happyvertical/smrt-subscriptions",
862
+ "extends": "SmrtObject",
863
+ "fields": [
864
+ {
865
+ "name": "tenantId",
866
+ "type": "text",
867
+ "required": true,
868
+ "columnType": "UUID"
869
+ },
870
+ {
871
+ "name": "usageEventId",
872
+ "type": "foreignKey",
873
+ "required": false,
874
+ "related": "TenantUsageMetric",
875
+ "columnType": "UUID"
876
+ },
877
+ {
878
+ "name": "subscriberKind",
879
+ "type": "text",
880
+ "required": false,
881
+ "columnType": "TEXT"
882
+ },
883
+ {
884
+ "name": "subscriberExternalId",
885
+ "type": "text",
886
+ "required": false,
887
+ "columnType": "TEXT"
888
+ },
889
+ {
890
+ "name": "projectId",
891
+ "type": "text",
892
+ "required": false,
893
+ "columnType": "TEXT"
894
+ },
895
+ {
896
+ "name": "workRefType",
897
+ "type": "text",
898
+ "required": false,
899
+ "columnType": "TEXT"
900
+ },
901
+ {
902
+ "name": "workRefId",
903
+ "type": "text",
904
+ "required": false,
905
+ "columnType": "TEXT"
906
+ },
907
+ {
908
+ "name": "provider",
909
+ "type": "text",
910
+ "required": false,
911
+ "columnType": "TEXT"
912
+ },
913
+ {
914
+ "name": "serviceKey",
915
+ "type": "text",
916
+ "required": false,
917
+ "columnType": "TEXT"
918
+ },
919
+ {
920
+ "name": "metricKey",
921
+ "type": "text",
922
+ "required": false,
923
+ "columnType": "TEXT"
924
+ },
925
+ {
926
+ "name": "quantity",
927
+ "type": "decimal",
928
+ "required": false,
929
+ "columnType": "REAL"
930
+ },
931
+ {
932
+ "name": "amount",
933
+ "type": "decimal",
934
+ "required": false,
935
+ "columnType": "REAL"
936
+ },
937
+ {
938
+ "name": "currency",
939
+ "type": "text",
940
+ "required": false,
941
+ "columnType": "TEXT"
942
+ },
943
+ {
944
+ "name": "pricingRuleId",
945
+ "type": "foreignKey",
946
+ "required": false,
947
+ "related": "PricingRule",
948
+ "columnType": "UUID"
949
+ },
950
+ {
951
+ "name": "pricingSnapshot",
952
+ "type": "text",
953
+ "required": false,
954
+ "columnType": "TEXT"
955
+ },
956
+ {
957
+ "name": "status",
958
+ "type": "text",
959
+ "required": false,
960
+ "columnType": "TEXT"
961
+ },
962
+ {
963
+ "name": "approvedAt",
964
+ "type": "datetime",
965
+ "required": false,
966
+ "columnType": "TIMESTAMP"
967
+ }
968
+ ],
969
+ "relationships": [
970
+ {
971
+ "name": "usageEventId",
972
+ "type": "foreignKey",
973
+ "required": false,
974
+ "related": "TenantUsageMetric",
975
+ "columnType": "UUID"
976
+ },
977
+ {
978
+ "name": "pricingRuleId",
979
+ "type": "foreignKey",
980
+ "required": false,
981
+ "related": "PricingRule",
982
+ "columnType": "UUID"
983
+ }
984
+ ],
985
+ "methods": [
986
+ "getPricingSnapshot"
987
+ ],
988
+ "surfaces": [
989
+ {
990
+ "kind": "api",
991
+ "name": "clientcharges.list",
992
+ "operation": "list",
993
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge",
994
+ "path": "/clientcharges",
995
+ "method": "GET"
996
+ },
997
+ {
998
+ "kind": "api",
999
+ "name": "clientcharges.get",
1000
+ "operation": "get",
1001
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge",
1002
+ "path": "/clientcharges/[id]",
1003
+ "method": "GET"
1004
+ },
1005
+ {
1006
+ "kind": "cli",
1007
+ "name": "clientcharge_list",
1008
+ "operation": "list",
1009
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
1010
+ },
1011
+ {
1012
+ "kind": "cli",
1013
+ "name": "clientcharge_get",
1014
+ "operation": "get",
1015
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
1016
+ },
1017
+ {
1018
+ "kind": "mcp",
1019
+ "name": "clientcharge_list",
1020
+ "operation": "list",
1021
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
1022
+ },
1023
+ {
1024
+ "kind": "mcp",
1025
+ "name": "clientcharge_get",
1026
+ "operation": "get",
1027
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
1028
+ }
1029
+ ],
1030
+ "relationshipFeatures": [
1031
+ "foreignKey",
1032
+ "uuidColumns"
1033
+ ],
1034
+ "tags": [],
1035
+ "risks": []
1036
+ },
1037
+ {
1038
+ "name": "BillingAdjustment",
1039
+ "qualifiedName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
1040
+ "collection": "billingadjustments",
1041
+ "tableName": "_smrt_billing_adjustments",
1042
+ "packageName": "@happyvertical/smrt-subscriptions",
1043
+ "extends": "SmrtObject",
1044
+ "fields": [
1045
+ {
1046
+ "name": "tenantId",
1047
+ "type": "text",
1048
+ "required": true,
1049
+ "columnType": "UUID"
1050
+ },
1051
+ {
1052
+ "name": "clientChargeId",
1053
+ "type": "foreignKey",
1054
+ "required": false,
1055
+ "related": "ClientCharge",
1056
+ "columnType": "UUID"
1057
+ },
1058
+ {
1059
+ "name": "amount",
1060
+ "type": "decimal",
1061
+ "required": false,
1062
+ "columnType": "REAL"
1063
+ },
1064
+ {
1065
+ "name": "currency",
1066
+ "type": "text",
1067
+ "required": false,
1068
+ "columnType": "TEXT"
1069
+ },
1070
+ {
1071
+ "name": "reason",
1072
+ "type": "text",
1073
+ "required": false,
1074
+ "columnType": "TEXT"
1075
+ },
1076
+ {
1077
+ "name": "source",
1078
+ "type": "text",
1079
+ "required": false,
1080
+ "columnType": "TEXT"
1081
+ },
1082
+ {
1083
+ "name": "sourceId",
1084
+ "type": "text",
1085
+ "required": false,
1086
+ "columnType": "TEXT"
1087
+ },
1088
+ {
1089
+ "name": "createdBy",
1090
+ "type": "text",
1091
+ "required": false,
1092
+ "columnType": "TEXT"
1093
+ }
1094
+ ],
1095
+ "relationships": [
1096
+ {
1097
+ "name": "clientChargeId",
1098
+ "type": "foreignKey",
1099
+ "required": false,
1100
+ "related": "ClientCharge",
1101
+ "columnType": "UUID"
1102
+ }
1103
+ ],
1104
+ "methods": [],
1105
+ "surfaces": [
1106
+ {
1107
+ "kind": "api",
1108
+ "name": "billingadjustments.list",
1109
+ "operation": "list",
1110
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
1111
+ "path": "/billingadjustments",
1112
+ "method": "GET"
1113
+ },
1114
+ {
1115
+ "kind": "api",
1116
+ "name": "billingadjustments.get",
1117
+ "operation": "get",
1118
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
1119
+ "path": "/billingadjustments/[id]",
1120
+ "method": "GET"
1121
+ },
1122
+ {
1123
+ "kind": "cli",
1124
+ "name": "billingadjustment_list",
1125
+ "operation": "list",
1126
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
1127
+ },
1128
+ {
1129
+ "kind": "cli",
1130
+ "name": "billingadjustment_get",
1131
+ "operation": "get",
1132
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
1133
+ },
1134
+ {
1135
+ "kind": "mcp",
1136
+ "name": "billingadjustment_list",
1137
+ "operation": "list",
1138
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
1139
+ },
1140
+ {
1141
+ "kind": "mcp",
1142
+ "name": "billingadjustment_get",
1143
+ "operation": "get",
1144
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
1145
+ }
1146
+ ],
1147
+ "relationshipFeatures": [
1148
+ "foreignKey",
1149
+ "uuidColumns"
1150
+ ],
1151
+ "tags": [],
1152
+ "risks": []
1153
+ },
1154
+ {
1155
+ "name": "SpendingPolicy",
1156
+ "qualifiedName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1157
+ "collection": "spendingpolicies",
1158
+ "tableName": "_smrt_spending_policies",
1159
+ "packageName": "@happyvertical/smrt-subscriptions",
1160
+ "extends": "SmrtObject",
1161
+ "fields": [
1162
+ {
1163
+ "name": "tenantId",
1164
+ "type": "text",
1165
+ "required": true,
1166
+ "columnType": "UUID"
1167
+ },
1168
+ {
1169
+ "name": "name",
1170
+ "type": "text",
1171
+ "required": false,
1172
+ "columnType": "TEXT"
1173
+ },
1174
+ {
1175
+ "name": "subscriberKind",
1176
+ "type": "text",
1177
+ "required": false,
1178
+ "columnType": "TEXT"
1179
+ },
1180
+ {
1181
+ "name": "subscriberExternalId",
1182
+ "type": "text",
1183
+ "required": false,
1184
+ "columnType": "TEXT"
1185
+ },
1186
+ {
1187
+ "name": "projectId",
1188
+ "type": "text",
1189
+ "required": false,
1190
+ "columnType": "TEXT"
1191
+ },
1192
+ {
1193
+ "name": "serviceKey",
1194
+ "type": "text",
1195
+ "required": false,
1196
+ "columnType": "TEXT"
1197
+ },
1198
+ {
1199
+ "name": "metricKey",
1200
+ "type": "text",
1201
+ "required": false,
1202
+ "columnType": "TEXT"
1203
+ },
1204
+ {
1205
+ "name": "period",
1206
+ "type": "text",
1207
+ "required": false,
1208
+ "columnType": "TEXT"
1209
+ },
1210
+ {
1211
+ "name": "rollingSeconds",
1212
+ "type": "integer",
1213
+ "required": false,
1214
+ "columnType": "INTEGER"
1215
+ },
1216
+ {
1217
+ "name": "limitAmount",
1218
+ "type": "decimal",
1219
+ "required": false,
1220
+ "columnType": "REAL"
1221
+ },
1222
+ {
1223
+ "name": "currency",
1224
+ "type": "text",
1225
+ "required": false,
1226
+ "columnType": "TEXT"
1227
+ },
1228
+ {
1229
+ "name": "behavior",
1230
+ "type": "text",
1231
+ "required": false,
1232
+ "columnType": "TEXT"
1233
+ },
1234
+ {
1235
+ "name": "priority",
1236
+ "type": "integer",
1237
+ "required": false,
1238
+ "columnType": "INTEGER"
1239
+ },
1240
+ {
1241
+ "name": "active",
1242
+ "type": "boolean",
1243
+ "required": false,
1244
+ "columnType": "BOOLEAN"
1245
+ }
1246
+ ],
1247
+ "relationships": [],
1248
+ "methods": [],
1249
+ "surfaces": [
1250
+ {
1251
+ "kind": "api",
1252
+ "name": "spendingpolicies.list",
1253
+ "operation": "list",
1254
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1255
+ "path": "/spendingpolicies",
1256
+ "method": "GET"
1257
+ },
1258
+ {
1259
+ "kind": "api",
1260
+ "name": "spendingpolicies.get",
1261
+ "operation": "get",
1262
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1263
+ "path": "/spendingpolicies/[id]",
1264
+ "method": "GET"
1265
+ },
1266
+ {
1267
+ "kind": "api",
1268
+ "name": "spendingpolicies.create",
1269
+ "operation": "create",
1270
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1271
+ "path": "/spendingpolicies",
1272
+ "method": "POST"
1273
+ },
1274
+ {
1275
+ "kind": "api",
1276
+ "name": "spendingpolicies.update",
1277
+ "operation": "update",
1278
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1279
+ "path": "/spendingpolicies/[id]",
1280
+ "method": "PATCH"
1281
+ },
1282
+ {
1283
+ "kind": "api",
1284
+ "name": "spendingpolicies.delete",
1285
+ "operation": "delete",
1286
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1287
+ "path": "/spendingpolicies/[id]",
1288
+ "method": "DELETE"
1289
+ },
1290
+ {
1291
+ "kind": "cli",
1292
+ "name": "spendingpolicy_list",
610
1293
  "operation": "list",
611
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1294
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
612
1295
  },
613
1296
  {
614
1297
  "kind": "cli",
615
- "name": "tenantusagemetric_get",
1298
+ "name": "spendingpolicy_get",
616
1299
  "operation": "get",
617
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1300
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
618
1301
  },
619
1302
  {
620
1303
  "kind": "cli",
621
- "name": "tenantusagemetric_create",
1304
+ "name": "spendingpolicy_create",
622
1305
  "operation": "create",
623
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1306
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
624
1307
  },
625
1308
  {
626
1309
  "kind": "cli",
627
- "name": "tenantusagemetric_update",
1310
+ "name": "spendingpolicy_update",
628
1311
  "operation": "update",
629
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1312
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
630
1313
  },
631
1314
  {
632
1315
  "kind": "cli",
633
- "name": "tenantusagemetric_delete",
1316
+ "name": "spendingpolicy_delete",
634
1317
  "operation": "delete",
635
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1318
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
636
1319
  },
637
1320
  {
638
1321
  "kind": "mcp",
639
- "name": "tenantusagemetric_list",
1322
+ "name": "spendingpolicy_list",
640
1323
  "operation": "list",
641
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1324
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
642
1325
  },
643
1326
  {
644
1327
  "kind": "mcp",
645
- "name": "tenantusagemetric_get",
1328
+ "name": "spendingpolicy_get",
646
1329
  "operation": "get",
647
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1330
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1331
+ },
1332
+ {
1333
+ "kind": "mcp",
1334
+ "name": "spendingpolicy_create",
1335
+ "operation": "create",
1336
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1337
+ },
1338
+ {
1339
+ "kind": "mcp",
1340
+ "name": "spendingpolicy_update",
1341
+ "operation": "update",
1342
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1343
+ },
1344
+ {
1345
+ "kind": "mcp",
1346
+ "name": "spendingpolicy_delete",
1347
+ "operation": "delete",
1348
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
648
1349
  }
649
1350
  ],
650
1351
  "relationshipFeatures": [
@@ -652,6 +1353,74 @@
652
1353
  ],
653
1354
  "tags": [],
654
1355
  "risks": []
1356
+ },
1357
+ {
1358
+ "name": "PricingRuleCollection",
1359
+ "qualifiedName": "@happyvertical/smrt-subscriptions:PricingRuleCollection",
1360
+ "collection": "pricingrules",
1361
+ "tableName": "_smrt_pricing_rules",
1362
+ "packageName": "@happyvertical/smrt-subscriptions",
1363
+ "extends": "SmrtCollection",
1364
+ "fields": [],
1365
+ "relationships": [],
1366
+ "methods": [],
1367
+ "surfaces": [],
1368
+ "relationshipFeatures": [
1369
+ "uuidColumns"
1370
+ ],
1371
+ "tags": [],
1372
+ "risks": []
1373
+ },
1374
+ {
1375
+ "name": "ClientChargeCollection",
1376
+ "qualifiedName": "@happyvertical/smrt-subscriptions:ClientChargeCollection",
1377
+ "collection": "clientcharges",
1378
+ "tableName": "_smrt_client_charges",
1379
+ "packageName": "@happyvertical/smrt-subscriptions",
1380
+ "extends": "SmrtCollection",
1381
+ "fields": [],
1382
+ "relationships": [],
1383
+ "methods": [],
1384
+ "surfaces": [],
1385
+ "relationshipFeatures": [
1386
+ "uuidColumns"
1387
+ ],
1388
+ "tags": [],
1389
+ "risks": []
1390
+ },
1391
+ {
1392
+ "name": "BillingAdjustmentCollection",
1393
+ "qualifiedName": "@happyvertical/smrt-subscriptions:BillingAdjustmentCollection",
1394
+ "collection": "billingadjustments",
1395
+ "tableName": "_smrt_billing_adjustments",
1396
+ "packageName": "@happyvertical/smrt-subscriptions",
1397
+ "extends": "SmrtCollection",
1398
+ "fields": [],
1399
+ "relationships": [],
1400
+ "methods": [],
1401
+ "surfaces": [],
1402
+ "relationshipFeatures": [
1403
+ "uuidColumns"
1404
+ ],
1405
+ "tags": [],
1406
+ "risks": []
1407
+ },
1408
+ {
1409
+ "name": "SpendingPolicyCollection",
1410
+ "qualifiedName": "@happyvertical/smrt-subscriptions:SpendingPolicyCollection",
1411
+ "collection": "spendingpolicies",
1412
+ "tableName": "_smrt_spending_policies",
1413
+ "packageName": "@happyvertical/smrt-subscriptions",
1414
+ "extends": "SmrtCollection",
1415
+ "fields": [],
1416
+ "relationships": [],
1417
+ "methods": [],
1418
+ "surfaces": [],
1419
+ "relationshipFeatures": [
1420
+ "uuidColumns"
1421
+ ],
1422
+ "tags": [],
1423
+ "risks": []
655
1424
  }
656
1425
  ],
657
1426
  "surfaces": [
@@ -845,39 +1614,307 @@
845
1614
  "operation": "create",
846
1615
  "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
847
1616
  },
1617
+ {
1618
+ "kind": "mcp",
1619
+ "name": "tenantusagemetric_list",
1620
+ "operation": "list",
1621
+ "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1622
+ },
1623
+ {
1624
+ "kind": "mcp",
1625
+ "name": "tenantusagemetric_get",
1626
+ "operation": "get",
1627
+ "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1628
+ },
1629
+ {
1630
+ "kind": "api",
1631
+ "name": "pricingrules.list",
1632
+ "operation": "list",
1633
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
1634
+ "path": "/pricingrules",
1635
+ "method": "GET"
1636
+ },
1637
+ {
1638
+ "kind": "api",
1639
+ "name": "pricingrules.get",
1640
+ "operation": "get",
1641
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
1642
+ "path": "/pricingrules/[id]",
1643
+ "method": "GET"
1644
+ },
1645
+ {
1646
+ "kind": "api",
1647
+ "name": "pricingrules.create",
1648
+ "operation": "create",
1649
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
1650
+ "path": "/pricingrules",
1651
+ "method": "POST"
1652
+ },
1653
+ {
1654
+ "kind": "api",
1655
+ "name": "pricingrules.update",
1656
+ "operation": "update",
1657
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
1658
+ "path": "/pricingrules/[id]",
1659
+ "method": "PATCH"
1660
+ },
1661
+ {
1662
+ "kind": "api",
1663
+ "name": "pricingrules.delete",
1664
+ "operation": "delete",
1665
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule",
1666
+ "path": "/pricingrules/[id]",
1667
+ "method": "DELETE"
1668
+ },
1669
+ {
1670
+ "kind": "cli",
1671
+ "name": "pricingrule_list",
1672
+ "operation": "list",
1673
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
1674
+ },
1675
+ {
1676
+ "kind": "cli",
1677
+ "name": "pricingrule_get",
1678
+ "operation": "get",
1679
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
1680
+ },
1681
+ {
1682
+ "kind": "cli",
1683
+ "name": "pricingrule_create",
1684
+ "operation": "create",
1685
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
1686
+ },
848
1687
  {
849
1688
  "kind": "cli",
850
- "name": "tenantusagemetric_update",
1689
+ "name": "pricingrule_update",
851
1690
  "operation": "update",
852
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1691
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
853
1692
  },
854
1693
  {
855
1694
  "kind": "cli",
856
- "name": "tenantusagemetric_delete",
1695
+ "name": "pricingrule_delete",
857
1696
  "operation": "delete",
858
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1697
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
859
1698
  },
860
1699
  {
861
1700
  "kind": "mcp",
862
- "name": "tenantusagemetric_list",
1701
+ "name": "pricingrule_list",
863
1702
  "operation": "list",
864
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1703
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
865
1704
  },
866
1705
  {
867
1706
  "kind": "mcp",
868
- "name": "tenantusagemetric_get",
1707
+ "name": "pricingrule_get",
869
1708
  "operation": "get",
870
- "objectName": "@happyvertical/smrt-subscriptions:TenantUsageMetric"
1709
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
1710
+ },
1711
+ {
1712
+ "kind": "mcp",
1713
+ "name": "pricingrule_create",
1714
+ "operation": "create",
1715
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
1716
+ },
1717
+ {
1718
+ "kind": "mcp",
1719
+ "name": "pricingrule_update",
1720
+ "operation": "update",
1721
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
1722
+ },
1723
+ {
1724
+ "kind": "mcp",
1725
+ "name": "pricingrule_delete",
1726
+ "operation": "delete",
1727
+ "objectName": "@happyvertical/smrt-subscriptions:PricingRule"
1728
+ },
1729
+ {
1730
+ "kind": "api",
1731
+ "name": "clientcharges.list",
1732
+ "operation": "list",
1733
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge",
1734
+ "path": "/clientcharges",
1735
+ "method": "GET"
1736
+ },
1737
+ {
1738
+ "kind": "api",
1739
+ "name": "clientcharges.get",
1740
+ "operation": "get",
1741
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge",
1742
+ "path": "/clientcharges/[id]",
1743
+ "method": "GET"
1744
+ },
1745
+ {
1746
+ "kind": "cli",
1747
+ "name": "clientcharge_list",
1748
+ "operation": "list",
1749
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
1750
+ },
1751
+ {
1752
+ "kind": "cli",
1753
+ "name": "clientcharge_get",
1754
+ "operation": "get",
1755
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
1756
+ },
1757
+ {
1758
+ "kind": "mcp",
1759
+ "name": "clientcharge_list",
1760
+ "operation": "list",
1761
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
1762
+ },
1763
+ {
1764
+ "kind": "mcp",
1765
+ "name": "clientcharge_get",
1766
+ "operation": "get",
1767
+ "objectName": "@happyvertical/smrt-subscriptions:ClientCharge"
1768
+ },
1769
+ {
1770
+ "kind": "api",
1771
+ "name": "billingadjustments.list",
1772
+ "operation": "list",
1773
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
1774
+ "path": "/billingadjustments",
1775
+ "method": "GET"
1776
+ },
1777
+ {
1778
+ "kind": "api",
1779
+ "name": "billingadjustments.get",
1780
+ "operation": "get",
1781
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment",
1782
+ "path": "/billingadjustments/[id]",
1783
+ "method": "GET"
1784
+ },
1785
+ {
1786
+ "kind": "cli",
1787
+ "name": "billingadjustment_list",
1788
+ "operation": "list",
1789
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
1790
+ },
1791
+ {
1792
+ "kind": "cli",
1793
+ "name": "billingadjustment_get",
1794
+ "operation": "get",
1795
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
1796
+ },
1797
+ {
1798
+ "kind": "mcp",
1799
+ "name": "billingadjustment_list",
1800
+ "operation": "list",
1801
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
1802
+ },
1803
+ {
1804
+ "kind": "mcp",
1805
+ "name": "billingadjustment_get",
1806
+ "operation": "get",
1807
+ "objectName": "@happyvertical/smrt-subscriptions:BillingAdjustment"
1808
+ },
1809
+ {
1810
+ "kind": "api",
1811
+ "name": "spendingpolicies.list",
1812
+ "operation": "list",
1813
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1814
+ "path": "/spendingpolicies",
1815
+ "method": "GET"
1816
+ },
1817
+ {
1818
+ "kind": "api",
1819
+ "name": "spendingpolicies.get",
1820
+ "operation": "get",
1821
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1822
+ "path": "/spendingpolicies/[id]",
1823
+ "method": "GET"
1824
+ },
1825
+ {
1826
+ "kind": "api",
1827
+ "name": "spendingpolicies.create",
1828
+ "operation": "create",
1829
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1830
+ "path": "/spendingpolicies",
1831
+ "method": "POST"
1832
+ },
1833
+ {
1834
+ "kind": "api",
1835
+ "name": "spendingpolicies.update",
1836
+ "operation": "update",
1837
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1838
+ "path": "/spendingpolicies/[id]",
1839
+ "method": "PATCH"
1840
+ },
1841
+ {
1842
+ "kind": "api",
1843
+ "name": "spendingpolicies.delete",
1844
+ "operation": "delete",
1845
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy",
1846
+ "path": "/spendingpolicies/[id]",
1847
+ "method": "DELETE"
1848
+ },
1849
+ {
1850
+ "kind": "cli",
1851
+ "name": "spendingpolicy_list",
1852
+ "operation": "list",
1853
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1854
+ },
1855
+ {
1856
+ "kind": "cli",
1857
+ "name": "spendingpolicy_get",
1858
+ "operation": "get",
1859
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1860
+ },
1861
+ {
1862
+ "kind": "cli",
1863
+ "name": "spendingpolicy_create",
1864
+ "operation": "create",
1865
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1866
+ },
1867
+ {
1868
+ "kind": "cli",
1869
+ "name": "spendingpolicy_update",
1870
+ "operation": "update",
1871
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1872
+ },
1873
+ {
1874
+ "kind": "cli",
1875
+ "name": "spendingpolicy_delete",
1876
+ "operation": "delete",
1877
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1878
+ },
1879
+ {
1880
+ "kind": "mcp",
1881
+ "name": "spendingpolicy_list",
1882
+ "operation": "list",
1883
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1884
+ },
1885
+ {
1886
+ "kind": "mcp",
1887
+ "name": "spendingpolicy_get",
1888
+ "operation": "get",
1889
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1890
+ },
1891
+ {
1892
+ "kind": "mcp",
1893
+ "name": "spendingpolicy_create",
1894
+ "operation": "create",
1895
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1896
+ },
1897
+ {
1898
+ "kind": "mcp",
1899
+ "name": "spendingpolicy_update",
1900
+ "operation": "update",
1901
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
1902
+ },
1903
+ {
1904
+ "kind": "mcp",
1905
+ "name": "spendingpolicy_delete",
1906
+ "operation": "delete",
1907
+ "objectName": "@happyvertical/smrt-subscriptions:SpendingPolicy"
871
1908
  }
872
1909
  ],
873
1910
  "prompts": [],
874
1911
  "relationshipsV2": {
875
- "foreignKeyFields": 1,
1912
+ "foreignKeyFields": 4,
876
1913
  "crossPackageRefFields": 0,
877
1914
  "junctionCollections": 0,
878
1915
  "hierarchicalObjects": 0,
879
1916
  "polymorphicAssociations": 0,
880
- "uuidColumns": 10
1917
+ "uuidColumns": 25
881
1918
  },
882
- "agentDoc": "# @happyvertical/smrt-subscriptions\n\nTenant subscriptions, plan features, usage thresholds, and entitlement\nresolution for SMRT applications.\n\n## Validation\n\n```bash\npnpm --filter @happyvertical/smrt-subscriptions test\npnpm --filter @happyvertical/smrt-subscriptions typecheck\npnpm --filter @happyvertical/smrt-subscriptions build\n```\n\n## Notes\n\n- Keep Stripe-specific fields as provider binding metadata. Runtime Stripe API\n calls belong in the HappyVertical SDK accounting provider.\n- Thresholds are evaluated from tenant usage metrics and optional AI usage\n summaries. Resolve multiple thresholds with the batch usage path where\n available; do not bypass tenant context in application code.\n- Use `SubscriptionResolver.create()` or an explicitly injected\n `SubscriptionResolver` once per request when resolving entitlements multiple\n times. Load and pass `EntitlementResolutionContext` to avoid re-reading the\n current subscription and plan.\n- Subscription UI components should stay provider-neutral and receive actions\n from the host app.\n"
1919
+ "agentDoc": "# @happyvertical/smrt-subscriptions\n\nTenant subscriptions, plan features, immutable/idempotent usage evidence,\neffective-dated client pricing, scoped spending policies, and entitlement\nresolution for SMRT applications.\n\n## Validation\n\n```bash\npnpm --filter @happyvertical/smrt-subscriptions test\npnpm --filter @happyvertical/smrt-subscriptions typecheck\npnpm --filter @happyvertical/smrt-subscriptions build\n```\n\n## Notes\n\n- Keep Stripe-specific fields as provider binding metadata. Runtime Stripe API\n calls belong in the HappyVertical SDK accounting provider.\n- Thresholds are evaluated from tenant usage metrics and optional AI usage\n summaries. Resolve multiple thresholds with the batch usage path where\n available; do not bypass tenant context in application code.\n- Use `SubscriptionResolver.create()` or an explicitly injected\n `SubscriptionResolver` once per request when resolving entitlements multiple\n times. Load and pass `EntitlementResolutionContext` to avoid re-reading the\n current subscription and plan.\n- Subscription UI components should stay provider-neutral and receive actions\n from the host app.\n"
883
1920
  }