@happyvertical/smrt-sales 0.42.1 → 0.42.2

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.
@@ -3,12 +3,12 @@
3
3
  "sensitiveFieldsExcluded": true,
4
4
  "generatedAt": "1970-01-01T00:00:00.000Z",
5
5
  "packageName": "@happyvertical/smrt-sales",
6
- "packageVersion": "0.42.1",
6
+ "packageVersion": "0.42.2",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "2a629526b2fc55b0bb7bc3195c4cd5d4c44b011b82d71e17f314f138504f1b16",
11
- "packageJson": "d65b38af763899921a42698d3287efc2f9039c0d2374d979c0a71fd08b98851c",
10
+ "manifest": "9951f3c67c41281f91c96ee522caa0bcb45974707d36244c688635d5b93eaf58",
11
+ "packageJson": "a0584d98bbdf71268575374bfde37f88926f78c218f4da5f07335756a71959d5",
12
12
  "agents": "8731bdb94c727a97b289ebd88d0d0abfc1eba249aa8dd5ddd6b89ee3c92e1ca2",
13
13
  "moduleDoc:agents/agreements.md": "eb6ff147a0f60ee627d3337e8e9394d06fda955b4a4fff228537a9bd2803f886",
14
14
  "moduleDoc:agents/commissions.md": "e047024aafe5edcf072c1a6b7ea253c24cb15f2fa1beb2edd13651e735921f73",
@@ -1069,61 +1069,73 @@
1069
1069
  "risks": []
1070
1070
  },
1071
1071
  {
1072
- "name": "LeadCollection",
1073
- "qualifiedName": "@happyvertical/smrt-sales:LeadCollection",
1074
- "collection": "leads",
1075
- "tableName": "lead_collections",
1072
+ "name": "CommissionAdjustmentCollection",
1073
+ "qualifiedName": "@happyvertical/smrt-sales:CommissionAdjustmentCollection",
1074
+ "collection": "commissionadjustments",
1075
+ "tableName": "commission_adjustment_collections",
1076
1076
  "packageName": "@happyvertical/smrt-sales",
1077
1077
  "extends": "SmrtCollection",
1078
1078
  "fields": [],
1079
1079
  "relationships": [],
1080
1080
  "methods": [
1081
- "activitiesIncludingMerged",
1082
- "findByOwner",
1083
- "findByStatus",
1084
- "mergeLeads",
1085
- "qualify"
1081
+ "claimForPayout",
1082
+ "findByCommission",
1083
+ "findByPayout",
1084
+ "findByPayouts",
1085
+ "findUnsettledByEarner",
1086
+ "sumUnsettledByEarner"
1086
1087
  ],
1087
1088
  "methodSignatures": [
1088
1089
  {
1089
- "name": "activitiesIncludingMerged",
1090
+ "name": "claimForPayout",
1090
1091
  "async": true,
1091
1092
  "params": [
1092
- "leadId: string"
1093
+ "adjustmentIds: string[]",
1094
+ "payoutId: string"
1093
1095
  ],
1094
- "returns": "Promise<SalesActivity[]>"
1096
+ "returns": "Promise<CommissionAdjustment[]>"
1095
1097
  },
1096
1098
  {
1097
- "name": "findByOwner",
1099
+ "name": "findByCommission",
1098
1100
  "async": true,
1099
1101
  "params": [
1100
- "ownerRepId: string"
1102
+ "commissionId: string"
1101
1103
  ],
1102
- "returns": "Promise<Lead[]>"
1104
+ "returns": "Promise<CommissionAdjustment[]>"
1103
1105
  },
1104
1106
  {
1105
- "name": "findByStatus",
1107
+ "name": "findByPayout",
1106
1108
  "async": true,
1107
1109
  "params": [
1108
- "status: LeadStatus"
1110
+ "payoutId: string"
1109
1111
  ],
1110
- "returns": "Promise<Lead[]>"
1112
+ "returns": "Promise<CommissionAdjustment[]>"
1111
1113
  },
1112
1114
  {
1113
- "name": "mergeLeads",
1115
+ "name": "findByPayouts",
1114
1116
  "async": true,
1115
1117
  "params": [
1116
- "params: MergeLeadsParams"
1118
+ "payoutIds: string[]"
1117
1119
  ],
1118
- "returns": "Promise<MergeLeadsResult>"
1120
+ "returns": "Promise<CommissionAdjustment[]>"
1119
1121
  },
1120
1122
  {
1121
- "name": "qualify",
1123
+ "name": "findUnsettledByEarner",
1122
1124
  "async": true,
1123
1125
  "params": [
1124
- "params: QualifyLeadParams"
1126
+ "earnerId: string",
1127
+ "currency: string"
1125
1128
  ],
1126
- "returns": "Promise<Opportunity>"
1129
+ "returns": "Promise<CommissionAdjustment[]>"
1130
+ },
1131
+ {
1132
+ "name": "sumUnsettledByEarner",
1133
+ "async": true,
1134
+ "params": [
1135
+ "earnerId: string",
1136
+ "currency: string"
1137
+ ],
1138
+ "returns": "Promise<number>"
1127
1139
  }
1128
1140
  ],
1129
1141
  "surfaces": [],
@@ -1134,43 +1146,34 @@
1134
1146
  "risks": []
1135
1147
  },
1136
1148
  {
1137
- "name": "OpportunityCollection",
1138
- "qualifiedName": "@happyvertical/smrt-sales:OpportunityCollection",
1139
- "collection": "opportunities",
1140
- "tableName": "opportunity_collections",
1149
+ "name": "CommissionAdjustmentOperationCollection",
1150
+ "qualifiedName": "@happyvertical/smrt-sales:CommissionAdjustmentOperationCollection",
1151
+ "collection": "commissionadjustmentoperations",
1152
+ "tableName": "commission_adjustment_operation_collections",
1141
1153
  "packageName": "@happyvertical/smrt-sales",
1142
1154
  "extends": "SmrtCollection",
1143
1155
  "fields": [],
1144
1156
  "relationships": [],
1145
1157
  "methods": [
1146
- "findByLead",
1147
- "findOpen",
1148
- "moveToStage"
1158
+ "claim",
1159
+ "findByOperationId"
1149
1160
  ],
1150
1161
  "methodSignatures": [
1151
1162
  {
1152
- "name": "findByLead",
1153
- "async": true,
1154
- "params": [
1155
- "leadId: string"
1156
- ],
1157
- "returns": "Promise<Opportunity[]>"
1158
- },
1159
- {
1160
- "name": "findOpen",
1163
+ "name": "claim",
1161
1164
  "async": true,
1162
1165
  "params": [
1163
- "pipelineId?: string"
1166
+ "input: ClaimCommissionAdjustmentOperationInput"
1164
1167
  ],
1165
- "returns": "Promise<Opportunity[]>"
1168
+ "returns": "Promise<ClaimCommissionAdjustmentOperationResult>"
1166
1169
  },
1167
1170
  {
1168
- "name": "moveToStage",
1171
+ "name": "findByOperationId",
1169
1172
  "async": true,
1170
1173
  "params": [
1171
- "params: MoveToStageParams"
1174
+ "operationId: string"
1172
1175
  ],
1173
- "returns": "Promise<Opportunity>"
1176
+ "returns": "Promise<CommissionAdjustmentOperation | null>"
1174
1177
  }
1175
1178
  ],
1176
1179
  "surfaces": [],
@@ -1181,34 +1184,101 @@
1181
1184
  "risks": []
1182
1185
  },
1183
1186
  {
1184
- "name": "OpportunityConversionCollection",
1185
- "qualifiedName": "@happyvertical/smrt-sales:OpportunityConversionCollection",
1186
- "collection": "opportunityconversions",
1187
- "tableName": "opportunity_conversion_collections",
1187
+ "name": "CommissionCollection",
1188
+ "qualifiedName": "@happyvertical/smrt-sales:CommissionCollection",
1189
+ "collection": "commissions",
1190
+ "tableName": "commission_collections",
1188
1191
  "packageName": "@happyvertical/smrt-sales",
1189
1192
  "extends": "SmrtCollection",
1190
1193
  "fields": [],
1191
1194
  "relationships": [],
1192
1195
  "methods": [
1193
- "findByOpportunity",
1194
- "recordConversion"
1196
+ "claimForPayout",
1197
+ "findByDedupeKey",
1198
+ "findByEarner",
1199
+ "findByEvent",
1200
+ "findByPayout",
1201
+ "findByPayouts",
1202
+ "findByStatus",
1203
+ "findPayableUnsettled",
1204
+ "sumPayableByEarner"
1195
1205
  ],
1196
1206
  "methodSignatures": [
1197
1207
  {
1198
- "name": "findByOpportunity",
1208
+ "name": "claimForPayout",
1199
1209
  "async": true,
1200
1210
  "params": [
1201
- "opportunityId: string"
1211
+ "commissionIds: string[]",
1212
+ "payoutId: string"
1202
1213
  ],
1203
- "returns": "Promise<OpportunityConversion[]>"
1214
+ "returns": "Promise<Commission[]>"
1204
1215
  },
1205
1216
  {
1206
- "name": "recordConversion",
1217
+ "name": "findByDedupeKey",
1207
1218
  "async": true,
1208
1219
  "params": [
1209
- "params: RecordConversionParams"
1220
+ "dedupeKey: string"
1210
1221
  ],
1211
- "returns": "Promise<RecordConversionResult>"
1222
+ "returns": "Promise<Commission | null>"
1223
+ },
1224
+ {
1225
+ "name": "findByEarner",
1226
+ "async": true,
1227
+ "params": [
1228
+ "earnerId: string"
1229
+ ],
1230
+ "returns": "Promise<Commission[]>"
1231
+ },
1232
+ {
1233
+ "name": "findByEvent",
1234
+ "async": true,
1235
+ "params": [
1236
+ "earningEventId: string"
1237
+ ],
1238
+ "returns": "Promise<Commission[]>"
1239
+ },
1240
+ {
1241
+ "name": "findByPayout",
1242
+ "async": true,
1243
+ "params": [
1244
+ "payoutId: string"
1245
+ ],
1246
+ "returns": "Promise<Commission[]>"
1247
+ },
1248
+ {
1249
+ "name": "findByPayouts",
1250
+ "async": true,
1251
+ "params": [
1252
+ "payoutIds: string[]"
1253
+ ],
1254
+ "returns": "Promise<Commission[]>"
1255
+ },
1256
+ {
1257
+ "name": "findByStatus",
1258
+ "async": true,
1259
+ "params": [
1260
+ "status: CommissionStatus"
1261
+ ],
1262
+ "returns": "Promise<Commission[]>"
1263
+ },
1264
+ {
1265
+ "name": "findPayableUnsettled",
1266
+ "async": true,
1267
+ "params": [
1268
+ "earnerId: string",
1269
+ "currency: string",
1270
+ "scope?: object"
1271
+ ],
1272
+ "returns": "Promise<Commission[]>"
1273
+ },
1274
+ {
1275
+ "name": "sumPayableByEarner",
1276
+ "async": true,
1277
+ "params": [
1278
+ "earnerId: string",
1279
+ "currency: string"
1280
+ ],
1281
+ "returns": "Promise<number>"
1212
1282
  }
1213
1283
  ],
1214
1284
  "surfaces": [],
@@ -1219,49 +1289,64 @@
1219
1289
  "risks": []
1220
1290
  },
1221
1291
  {
1222
- "name": "PipelineDefinitionCollection",
1223
- "qualifiedName": "@happyvertical/smrt-sales:PipelineDefinitionCollection",
1224
- "collection": "pipelinedefinitions",
1225
- "tableName": "pipeline_definition_collections",
1292
+ "name": "CommissionPayoutCollection",
1293
+ "qualifiedName": "@happyvertical/smrt-sales:CommissionPayoutCollection",
1294
+ "collection": "commissionpayouts",
1295
+ "tableName": "commission_payout_collections",
1226
1296
  "packageName": "@happyvertical/smrt-sales",
1227
1297
  "extends": "SmrtCollection",
1228
1298
  "fields": [],
1229
1299
  "relationships": [],
1230
1300
  "methods": [
1231
- "ensureDefaultPipeline",
1232
- "findByKey",
1233
- "findDefault",
1234
- "getStages"
1301
+ "findByEarner",
1302
+ "findByIdempotencyKey",
1303
+ "findBySource",
1304
+ "findByStatus",
1305
+ "sumPaidByEarner"
1235
1306
  ],
1236
1307
  "methodSignatures": [
1237
1308
  {
1238
- "name": "ensureDefaultPipeline",
1309
+ "name": "findByEarner",
1239
1310
  "async": true,
1240
1311
  "params": [
1241
- "params?: EnsureDefaultPipelineParams"
1312
+ "earnerId: string"
1242
1313
  ],
1243
- "returns": "Promise<EnsureDefaultPipelineResult>"
1314
+ "returns": "Promise<CommissionPayout[]>"
1244
1315
  },
1245
1316
  {
1246
- "name": "findByKey",
1317
+ "name": "findByIdempotencyKey",
1247
1318
  "async": true,
1248
1319
  "params": [
1249
- "key: string"
1320
+ "idempotencyKey: string"
1250
1321
  ],
1251
- "returns": "Promise<PipelineDefinition | null>"
1322
+ "returns": "Promise<CommissionPayout | null>"
1252
1323
  },
1253
1324
  {
1254
- "name": "findDefault",
1325
+ "name": "findBySource",
1255
1326
  "async": true,
1256
- "returns": "Promise<PipelineDefinition | null>"
1327
+ "params": [
1328
+ "sourceKind: string",
1329
+ "sourceId: string",
1330
+ "page: object"
1331
+ ],
1332
+ "returns": "Promise<CommissionPayout[]>"
1257
1333
  },
1258
1334
  {
1259
- "name": "getStages",
1335
+ "name": "findByStatus",
1260
1336
  "async": true,
1261
1337
  "params": [
1262
- "pipelineId: string"
1338
+ "status: CommissionPayoutStatus"
1263
1339
  ],
1264
- "returns": "Promise<PipelineStage[]>"
1340
+ "returns": "Promise<CommissionPayout[]>"
1341
+ },
1342
+ {
1343
+ "name": "sumPaidByEarner",
1344
+ "async": true,
1345
+ "params": [
1346
+ "earnerId: string",
1347
+ "currency: string"
1348
+ ],
1349
+ "returns": "Promise<number>"
1265
1350
  }
1266
1351
  ],
1267
1352
  "surfaces": [],
@@ -1272,35 +1357,55 @@
1272
1357
  "risks": []
1273
1358
  },
1274
1359
  {
1275
- "name": "PipelineStageCollection",
1276
- "qualifiedName": "@happyvertical/smrt-sales:PipelineStageCollection",
1277
- "collection": "pipelinestages",
1278
- "tableName": "pipeline_stage_collections",
1360
+ "name": "CommissionPlanCollection",
1361
+ "qualifiedName": "@happyvertical/smrt-sales:CommissionPlanCollection",
1362
+ "collection": "commissionplans",
1363
+ "tableName": "commission_plan_collections",
1279
1364
  "packageName": "@happyvertical/smrt-sales",
1280
1365
  "extends": "SmrtCollection",
1281
1366
  "fields": [],
1282
1367
  "relationships": [],
1283
1368
  "methods": [
1284
- "findByKey",
1285
- "findByPipeline"
1369
+ "createAmendment",
1370
+ "findByPlanKey",
1371
+ "findByStatus",
1372
+ "latestActiveByKey"
1286
1373
  ],
1287
1374
  "methodSignatures": [
1288
1375
  {
1289
- "name": "findByKey",
1376
+ "name": "createAmendment",
1290
1377
  "async": true,
1291
1378
  "params": [
1292
- "pipelineId: string",
1293
- "key: string"
1294
- ],
1295
- "returns": "Promise<PipelineStage | null>"
1379
+ "planKey: string",
1380
+ "changes?: CommissionPlanAmendmentChanges"
1381
+ ],
1382
+ "returns": "Promise<CommissionPlan>"
1296
1383
  },
1297
1384
  {
1298
- "name": "findByPipeline",
1385
+ "name": "findByPlanKey",
1299
1386
  "async": true,
1300
1387
  "params": [
1301
- "pipelineId: string"
1388
+ "planKey: string"
1302
1389
  ],
1303
- "returns": "Promise<PipelineStage[]>"
1390
+ "returns": "Promise<CommissionPlan[]>"
1391
+ },
1392
+ {
1393
+ "name": "findByStatus",
1394
+ "async": true,
1395
+ "params": [
1396
+ "status: CommissionPlanStatus"
1397
+ ],
1398
+ "returns": "Promise<CommissionPlan[]>"
1399
+ },
1400
+ {
1401
+ "name": "latestActiveByKey",
1402
+ "async": true,
1403
+ "params": [
1404
+ "planKey: string",
1405
+ "at?: Date",
1406
+ "tenantId?: string | null"
1407
+ ],
1408
+ "returns": "Promise<CommissionPlan | null>"
1304
1409
  }
1305
1410
  ],
1306
1411
  "surfaces": [],
@@ -1311,36 +1416,40 @@
1311
1416
  "risks": []
1312
1417
  },
1313
1418
  {
1314
- "name": "SalesActivityCollection",
1315
- "qualifiedName": "@happyvertical/smrt-sales:SalesActivityCollection",
1316
- "collection": "salesactivities",
1317
- "tableName": "sales_activity_collections",
1419
+ "name": "EarnerCollection",
1420
+ "qualifiedName": "@happyvertical/smrt-sales:EarnerCollection",
1421
+ "collection": "earners",
1422
+ "tableName": "earner_collections",
1318
1423
  "packageName": "@happyvertical/smrt-sales",
1319
1424
  "extends": "SmrtCollection",
1320
1425
  "fields": [],
1321
1426
  "relationships": [],
1322
1427
  "methods": [
1323
- "findBySubject",
1324
- "findOpenTasks"
1428
+ "findActive",
1429
+ "findByProfile",
1430
+ "findByStatus"
1325
1431
  ],
1326
1432
  "methodSignatures": [
1327
1433
  {
1328
- "name": "findBySubject",
1434
+ "name": "findActive",
1435
+ "async": true,
1436
+ "returns": "Promise<Earner[]>"
1437
+ },
1438
+ {
1439
+ "name": "findByProfile",
1329
1440
  "async": true,
1330
1441
  "params": [
1331
- "subjectKind: SalesActivitySubjectKind",
1332
- "subjectId: string"
1442
+ "profileId: string"
1333
1443
  ],
1334
- "returns": "Promise<SalesActivity[]>"
1444
+ "returns": "Promise<Earner[]>"
1335
1445
  },
1336
1446
  {
1337
- "name": "findOpenTasks",
1447
+ "name": "findByStatus",
1338
1448
  "async": true,
1339
1449
  "params": [
1340
- "subjectKind: SalesActivitySubjectKind",
1341
- "subjectId: string"
1450
+ "status: EarnerStatus"
1342
1451
  ],
1343
- "returns": "Promise<SalesActivity[]>"
1452
+ "returns": "Promise<Earner[]>"
1344
1453
  }
1345
1454
  ],
1346
1455
  "surfaces": [],
@@ -1351,31 +1460,45 @@
1351
1460
  "risks": []
1352
1461
  },
1353
1462
  {
1354
- "name": "SalesRepresentativeCollection",
1355
- "qualifiedName": "@happyvertical/smrt-sales:SalesRepresentativeCollection",
1356
- "collection": "salesrepresentatives",
1357
- "tableName": "sales_representative_collections",
1463
+ "name": "EarnerSourceAttributionCollection",
1464
+ "qualifiedName": "@happyvertical/smrt-sales:EarnerSourceAttributionCollection",
1465
+ "collection": "earnersourceattributions",
1466
+ "tableName": "earner_source_attribution_collections",
1358
1467
  "packageName": "@happyvertical/smrt-sales",
1359
1468
  "extends": "SmrtCollection",
1360
1469
  "fields": [],
1361
1470
  "relationships": [],
1362
1471
  "methods": [
1363
- "findActive",
1364
- "findByProfile"
1472
+ "findByEarner",
1473
+ "findBySource",
1474
+ "findBySources"
1365
1475
  ],
1366
1476
  "methodSignatures": [
1367
1477
  {
1368
- "name": "findActive",
1478
+ "name": "findByEarner",
1369
1479
  "async": true,
1370
- "returns": "Promise<SalesRepresentative[]>"
1480
+ "params": [
1481
+ "earnerId: string"
1482
+ ],
1483
+ "returns": "Promise<EarnerSourceAttribution[]>"
1371
1484
  },
1372
1485
  {
1373
- "name": "findByProfile",
1486
+ "name": "findBySource",
1374
1487
  "async": true,
1375
1488
  "params": [
1376
- "profileId: string"
1489
+ "sourceKind: string",
1490
+ "sourceId: string"
1377
1491
  ],
1378
- "returns": "Promise<SalesRepresentative[]>"
1492
+ "returns": "Promise<EarnerSourceAttribution[]>"
1493
+ },
1494
+ {
1495
+ "name": "findBySources",
1496
+ "async": true,
1497
+ "params": [
1498
+ "sourceKind: string",
1499
+ "sourceIds: string[]"
1500
+ ],
1501
+ "returns": "Promise<EarnerSourceAttribution[]>"
1379
1502
  }
1380
1503
  ],
1381
1504
  "surfaces": [],
@@ -1386,304 +1509,384 @@
1386
1509
  "risks": []
1387
1510
  },
1388
1511
  {
1389
- "name": "Lead",
1390
- "qualifiedName": "@happyvertical/smrt-sales:Lead",
1391
- "collection": "leads",
1392
- "tableName": "leads",
1512
+ "name": "EarningEventCollection",
1513
+ "qualifiedName": "@happyvertical/smrt-sales:EarningEventCollection",
1514
+ "collection": "earningevents",
1515
+ "tableName": "earning_event_collections",
1393
1516
  "packageName": "@happyvertical/smrt-sales",
1394
- "extends": "SmrtObject",
1395
- "fields": [
1396
- {
1397
- "name": "tenantId",
1398
- "type": "text",
1399
- "required": false,
1400
- "columnType": "UUID"
1401
- },
1402
- {
1403
- "name": "name",
1404
- "type": "text",
1405
- "required": true,
1406
- "columnType": "TEXT",
1407
- "default": ""
1408
- },
1409
- {
1410
- "name": "contactName",
1411
- "type": "text",
1412
- "required": false,
1413
- "columnType": "TEXT",
1414
- "default": ""
1415
- },
1517
+ "extends": "SmrtCollection",
1518
+ "fields": [],
1519
+ "relationships": [],
1520
+ "methods": [
1521
+ "findByDedupeKey",
1522
+ "findByKind",
1523
+ "findBySource",
1524
+ "getOrCreateByDedupeKey"
1525
+ ],
1526
+ "methodSignatures": [
1416
1527
  {
1417
- "name": "email",
1418
- "type": "text",
1419
- "required": false,
1420
- "columnType": "TEXT",
1421
- "default": ""
1528
+ "name": "findByDedupeKey",
1529
+ "async": true,
1530
+ "params": [
1531
+ "dedupeKey: string"
1532
+ ],
1533
+ "returns": "Promise<EarningEvent | null>"
1422
1534
  },
1423
1535
  {
1424
- "name": "phone",
1425
- "type": "text",
1426
- "required": false,
1427
- "columnType": "TEXT",
1428
- "default": ""
1536
+ "name": "findByKind",
1537
+ "async": true,
1538
+ "params": [
1539
+ "eventKind: string"
1540
+ ],
1541
+ "returns": "Promise<EarningEvent[]>"
1429
1542
  },
1430
1543
  {
1431
- "name": "organizationName",
1432
- "type": "text",
1433
- "required": false,
1434
- "columnType": "TEXT",
1435
- "default": ""
1544
+ "name": "findBySource",
1545
+ "async": true,
1546
+ "params": [
1547
+ "sourceKind: string",
1548
+ "sourceId: string"
1549
+ ],
1550
+ "returns": "Promise<EarningEvent[]>"
1436
1551
  },
1437
1552
  {
1438
- "name": "profileId",
1439
- "type": "crossPackageRef",
1440
- "required": false,
1441
- "related": "@happyvertical/smrt-profiles:Profile",
1442
- "columnType": "UUID"
1443
- },
1553
+ "name": "getOrCreateByDedupeKey",
1554
+ "async": true,
1555
+ "params": [
1556
+ "options: EarningEventOptions"
1557
+ ],
1558
+ "returns": "Promise<object>"
1559
+ }
1560
+ ],
1561
+ "surfaces": [],
1562
+ "relationshipFeatures": [
1563
+ "uuidColumns"
1564
+ ],
1565
+ "tags": [],
1566
+ "risks": []
1567
+ },
1568
+ {
1569
+ "name": "LeadCollection",
1570
+ "qualifiedName": "@happyvertical/smrt-sales:LeadCollection",
1571
+ "collection": "leads",
1572
+ "tableName": "lead_collections",
1573
+ "packageName": "@happyvertical/smrt-sales",
1574
+ "extends": "SmrtCollection",
1575
+ "fields": [],
1576
+ "relationships": [],
1577
+ "methods": [
1578
+ "activitiesIncludingMerged",
1579
+ "findByOwner",
1580
+ "findByStatus",
1581
+ "mergeLeads",
1582
+ "qualify"
1583
+ ],
1584
+ "methodSignatures": [
1444
1585
  {
1445
- "name": "ownerRepId",
1446
- "type": "foreignKey",
1447
- "required": false,
1448
- "related": "SalesRepresentative",
1449
- "columnType": "UUID"
1586
+ "name": "activitiesIncludingMerged",
1587
+ "async": true,
1588
+ "params": [
1589
+ "leadId: string"
1590
+ ],
1591
+ "returns": "Promise<SalesActivity[]>"
1450
1592
  },
1451
1593
  {
1452
- "name": "status",
1453
- "type": "text",
1454
- "required": false,
1455
- "columnType": "TEXT",
1456
- "default": "new"
1594
+ "name": "findByOwner",
1595
+ "async": true,
1596
+ "params": [
1597
+ "ownerRepId: string"
1598
+ ],
1599
+ "returns": "Promise<Lead[]>"
1457
1600
  },
1458
1601
  {
1459
- "name": "sourceKind",
1460
- "type": "text",
1461
- "required": false,
1462
- "columnType": "TEXT",
1463
- "default": ""
1602
+ "name": "findByStatus",
1603
+ "async": true,
1604
+ "params": [
1605
+ "status: LeadStatus"
1606
+ ],
1607
+ "returns": "Promise<Lead[]>"
1464
1608
  },
1465
1609
  {
1466
- "name": "sourceId",
1467
- "type": "text",
1468
- "required": false,
1469
- "columnType": "TEXT",
1470
- "default": ""
1610
+ "name": "mergeLeads",
1611
+ "async": true,
1612
+ "params": [
1613
+ "params: MergeLeadsParams"
1614
+ ],
1615
+ "returns": "Promise<MergeLeadsResult>"
1471
1616
  },
1472
1617
  {
1473
- "name": "acquisitionContext",
1474
- "type": "text",
1475
- "required": false,
1476
- "columnType": "TEXT",
1477
- "default": "{}"
1478
- },
1479
- {
1480
- "name": "intakeRef",
1481
- "type": "text",
1482
- "required": false,
1483
- "columnType": "TEXT",
1484
- "default": ""
1485
- },
1486
- {
1487
- "name": "mergedIntoId",
1488
- "type": "foreignKey",
1489
- "required": false,
1490
- "related": "Lead",
1491
- "columnType": "UUID"
1492
- },
1493
- {
1494
- "name": "qualifiedAt",
1495
- "type": "datetime",
1496
- "required": false,
1497
- "columnType": "TIMESTAMP"
1498
- },
1499
- {
1500
- "name": "metadata",
1501
- "type": "text",
1502
- "required": false,
1503
- "columnType": "TEXT",
1504
- "default": "{}"
1618
+ "name": "qualify",
1619
+ "async": true,
1620
+ "params": [
1621
+ "params: QualifyLeadParams"
1622
+ ],
1623
+ "returns": "Promise<Opportunity>"
1505
1624
  }
1506
1625
  ],
1507
- "relationships": [
1626
+ "surfaces": [],
1627
+ "relationshipFeatures": [
1628
+ "uuidColumns"
1629
+ ],
1630
+ "tags": [],
1631
+ "risks": []
1632
+ },
1633
+ {
1634
+ "name": "OpportunityCollection",
1635
+ "qualifiedName": "@happyvertical/smrt-sales:OpportunityCollection",
1636
+ "collection": "opportunities",
1637
+ "tableName": "opportunity_collections",
1638
+ "packageName": "@happyvertical/smrt-sales",
1639
+ "extends": "SmrtCollection",
1640
+ "fields": [],
1641
+ "relationships": [],
1642
+ "methods": [
1643
+ "findByLead",
1644
+ "findOpen",
1645
+ "moveToStage"
1646
+ ],
1647
+ "methodSignatures": [
1508
1648
  {
1509
- "name": "profileId",
1510
- "type": "crossPackageRef",
1511
- "required": false,
1512
- "related": "@happyvertical/smrt-profiles:Profile",
1513
- "columnType": "UUID"
1649
+ "name": "findByLead",
1650
+ "async": true,
1651
+ "params": [
1652
+ "leadId: string"
1653
+ ],
1654
+ "returns": "Promise<Opportunity[]>"
1514
1655
  },
1515
1656
  {
1516
- "name": "ownerRepId",
1517
- "type": "foreignKey",
1518
- "required": false,
1519
- "related": "SalesRepresentative",
1520
- "columnType": "UUID"
1657
+ "name": "findOpen",
1658
+ "async": true,
1659
+ "params": [
1660
+ "pipelineId?: string"
1661
+ ],
1662
+ "returns": "Promise<Opportunity[]>"
1521
1663
  },
1522
1664
  {
1523
- "name": "mergedIntoId",
1524
- "type": "foreignKey",
1525
- "required": false,
1526
- "related": "Lead",
1527
- "columnType": "UUID"
1665
+ "name": "moveToStage",
1666
+ "async": true,
1667
+ "params": [
1668
+ "params: MoveToStageParams"
1669
+ ],
1670
+ "returns": "Promise<Opportunity>"
1528
1671
  }
1529
1672
  ],
1673
+ "surfaces": [],
1674
+ "relationshipFeatures": [
1675
+ "uuidColumns"
1676
+ ],
1677
+ "tags": [],
1678
+ "risks": []
1679
+ },
1680
+ {
1681
+ "name": "OpportunityConversionCollection",
1682
+ "qualifiedName": "@happyvertical/smrt-sales:OpportunityConversionCollection",
1683
+ "collection": "opportunityconversions",
1684
+ "tableName": "opportunity_conversion_collections",
1685
+ "packageName": "@happyvertical/smrt-sales",
1686
+ "extends": "SmrtCollection",
1687
+ "fields": [],
1688
+ "relationships": [],
1530
1689
  "methods": [
1531
- "getAcquisitionContext",
1532
- "getMetadata",
1533
- "initialize",
1534
- "isMerged",
1535
- "isQualified",
1536
- "save",
1537
- "setAcquisitionContext",
1538
- "setMetadata"
1690
+ "findByOpportunity",
1691
+ "recordConversion"
1539
1692
  ],
1540
1693
  "methodSignatures": [
1541
1694
  {
1542
- "name": "getAcquisitionContext",
1543
- "returns": "Record<string>"
1695
+ "name": "findByOpportunity",
1696
+ "async": true,
1697
+ "params": [
1698
+ "opportunityId: string"
1699
+ ],
1700
+ "returns": "Promise<OpportunityConversion[]>"
1544
1701
  },
1545
1702
  {
1546
- "name": "getMetadata",
1547
- "returns": "Record<string>"
1548
- },
1703
+ "name": "recordConversion",
1704
+ "async": true,
1705
+ "params": [
1706
+ "params: RecordConversionParams"
1707
+ ],
1708
+ "returns": "Promise<RecordConversionResult>"
1709
+ }
1710
+ ],
1711
+ "surfaces": [],
1712
+ "relationshipFeatures": [
1713
+ "uuidColumns"
1714
+ ],
1715
+ "tags": [],
1716
+ "risks": []
1717
+ },
1718
+ {
1719
+ "name": "PipelineDefinitionCollection",
1720
+ "qualifiedName": "@happyvertical/smrt-sales:PipelineDefinitionCollection",
1721
+ "collection": "pipelinedefinitions",
1722
+ "tableName": "pipeline_definition_collections",
1723
+ "packageName": "@happyvertical/smrt-sales",
1724
+ "extends": "SmrtCollection",
1725
+ "fields": [],
1726
+ "relationships": [],
1727
+ "methods": [
1728
+ "ensureDefaultPipeline",
1729
+ "findByKey",
1730
+ "findDefault",
1731
+ "getStages"
1732
+ ],
1733
+ "methodSignatures": [
1549
1734
  {
1550
- "name": "initialize",
1735
+ "name": "ensureDefaultPipeline",
1551
1736
  "async": true,
1552
- "returns": "Promise"
1737
+ "params": [
1738
+ "params?: EnsureDefaultPipelineParams"
1739
+ ],
1740
+ "returns": "Promise<EnsureDefaultPipelineResult>"
1553
1741
  },
1554
1742
  {
1555
- "name": "isMerged",
1556
- "returns": "boolean"
1743
+ "name": "findByKey",
1744
+ "async": true,
1745
+ "params": [
1746
+ "key: string"
1747
+ ],
1748
+ "returns": "Promise<PipelineDefinition | null>"
1557
1749
  },
1558
1750
  {
1559
- "name": "isQualified",
1560
- "returns": "boolean"
1751
+ "name": "findDefault",
1752
+ "async": true,
1753
+ "returns": "Promise<PipelineDefinition | null>"
1561
1754
  },
1562
1755
  {
1563
- "name": "save",
1756
+ "name": "getStages",
1564
1757
  "async": true,
1565
- "returns": "Promise"
1566
- },
1758
+ "params": [
1759
+ "pipelineId: string"
1760
+ ],
1761
+ "returns": "Promise<PipelineStage[]>"
1762
+ }
1763
+ ],
1764
+ "surfaces": [],
1765
+ "relationshipFeatures": [
1766
+ "uuidColumns"
1767
+ ],
1768
+ "tags": [],
1769
+ "risks": []
1770
+ },
1771
+ {
1772
+ "name": "PipelineStageCollection",
1773
+ "qualifiedName": "@happyvertical/smrt-sales:PipelineStageCollection",
1774
+ "collection": "pipelinestages",
1775
+ "tableName": "pipeline_stage_collections",
1776
+ "packageName": "@happyvertical/smrt-sales",
1777
+ "extends": "SmrtCollection",
1778
+ "fields": [],
1779
+ "relationships": [],
1780
+ "methods": [
1781
+ "findByKey",
1782
+ "findByPipeline"
1783
+ ],
1784
+ "methodSignatures": [
1567
1785
  {
1568
- "name": "setAcquisitionContext",
1786
+ "name": "findByKey",
1787
+ "async": true,
1569
1788
  "params": [
1570
- "context: Record<string>"
1789
+ "pipelineId: string",
1790
+ "key: string"
1571
1791
  ],
1572
- "returns": "void"
1792
+ "returns": "Promise<PipelineStage | null>"
1573
1793
  },
1574
1794
  {
1575
- "name": "setMetadata",
1795
+ "name": "findByPipeline",
1796
+ "async": true,
1576
1797
  "params": [
1577
- "metadata: Record<string>"
1798
+ "pipelineId: string"
1578
1799
  ],
1579
- "returns": "void"
1800
+ "returns": "Promise<PipelineStage[]>"
1580
1801
  }
1581
1802
  ],
1582
- "tenant": {
1583
- "scoped": true,
1584
- "mode": "optional",
1585
- "field": "tenantId"
1586
- },
1587
- "conflictColumns": [
1588
- "tenant_id",
1589
- "slug",
1590
- "context"
1803
+ "surfaces": [],
1804
+ "relationshipFeatures": [
1805
+ "uuidColumns"
1591
1806
  ],
1592
- "surfaces": [
1593
- {
1594
- "kind": "api",
1595
- "name": "leads.list",
1596
- "operation": "list",
1597
- "objectName": "@happyvertical/smrt-sales:Lead",
1598
- "path": "/leads",
1599
- "method": "GET"
1600
- },
1601
- {
1602
- "kind": "api",
1603
- "name": "leads.get",
1604
- "operation": "get",
1605
- "objectName": "@happyvertical/smrt-sales:Lead",
1606
- "path": "/leads/[id]",
1607
- "method": "GET"
1608
- },
1609
- {
1610
- "kind": "api",
1611
- "name": "leads.create",
1612
- "operation": "create",
1613
- "objectName": "@happyvertical/smrt-sales:Lead",
1614
- "path": "/leads",
1615
- "method": "POST"
1616
- },
1617
- {
1618
- "kind": "api",
1619
- "name": "leads.update",
1620
- "operation": "update",
1621
- "objectName": "@happyvertical/smrt-sales:Lead",
1622
- "path": "/leads/[id]",
1623
- "method": "PATCH"
1624
- },
1625
- {
1626
- "kind": "cli",
1627
- "name": "lead_list",
1628
- "operation": "list",
1629
- "objectName": "@happyvertical/smrt-sales:Lead"
1630
- },
1631
- {
1632
- "kind": "cli",
1633
- "name": "lead_get",
1634
- "operation": "get",
1635
- "objectName": "@happyvertical/smrt-sales:Lead"
1636
- },
1637
- {
1638
- "kind": "cli",
1639
- "name": "lead_create",
1640
- "operation": "create",
1641
- "objectName": "@happyvertical/smrt-sales:Lead"
1642
- },
1643
- {
1644
- "kind": "cli",
1645
- "name": "lead_update",
1646
- "operation": "update",
1647
- "objectName": "@happyvertical/smrt-sales:Lead"
1648
- },
1807
+ "tags": [],
1808
+ "risks": []
1809
+ },
1810
+ {
1811
+ "name": "SalesActivityCollection",
1812
+ "qualifiedName": "@happyvertical/smrt-sales:SalesActivityCollection",
1813
+ "collection": "salesactivities",
1814
+ "tableName": "sales_activity_collections",
1815
+ "packageName": "@happyvertical/smrt-sales",
1816
+ "extends": "SmrtCollection",
1817
+ "fields": [],
1818
+ "relationships": [],
1819
+ "methods": [
1820
+ "findBySubject",
1821
+ "findOpenTasks"
1822
+ ],
1823
+ "methodSignatures": [
1649
1824
  {
1650
- "kind": "cli",
1651
- "name": "lead_delete",
1652
- "operation": "delete",
1653
- "objectName": "@happyvertical/smrt-sales:Lead"
1825
+ "name": "findBySubject",
1826
+ "async": true,
1827
+ "params": [
1828
+ "subjectKind: SalesActivitySubjectKind",
1829
+ "subjectId: string"
1830
+ ],
1831
+ "returns": "Promise<SalesActivity[]>"
1654
1832
  },
1655
1833
  {
1656
- "kind": "mcp",
1657
- "name": "lead_list",
1658
- "operation": "list",
1659
- "objectName": "@happyvertical/smrt-sales:Lead"
1660
- },
1834
+ "name": "findOpenTasks",
1835
+ "async": true,
1836
+ "params": [
1837
+ "subjectKind: SalesActivitySubjectKind",
1838
+ "subjectId: string"
1839
+ ],
1840
+ "returns": "Promise<SalesActivity[]>"
1841
+ }
1842
+ ],
1843
+ "surfaces": [],
1844
+ "relationshipFeatures": [
1845
+ "uuidColumns"
1846
+ ],
1847
+ "tags": [],
1848
+ "risks": []
1849
+ },
1850
+ {
1851
+ "name": "SalesRepresentativeCollection",
1852
+ "qualifiedName": "@happyvertical/smrt-sales:SalesRepresentativeCollection",
1853
+ "collection": "salesrepresentatives",
1854
+ "tableName": "sales_representative_collections",
1855
+ "packageName": "@happyvertical/smrt-sales",
1856
+ "extends": "SmrtCollection",
1857
+ "fields": [],
1858
+ "relationships": [],
1859
+ "methods": [
1860
+ "findActive",
1861
+ "findByProfile"
1862
+ ],
1863
+ "methodSignatures": [
1661
1864
  {
1662
- "kind": "mcp",
1663
- "name": "lead_get",
1664
- "operation": "get",
1665
- "objectName": "@happyvertical/smrt-sales:Lead"
1865
+ "name": "findActive",
1866
+ "async": true,
1867
+ "returns": "Promise<SalesRepresentative[]>"
1666
1868
  },
1667
1869
  {
1668
- "kind": "mcp",
1669
- "name": "lead_create",
1670
- "operation": "create",
1671
- "objectName": "@happyvertical/smrt-sales:Lead"
1870
+ "name": "findByProfile",
1871
+ "async": true,
1872
+ "params": [
1873
+ "profileId: string"
1874
+ ],
1875
+ "returns": "Promise<SalesRepresentative[]>"
1672
1876
  }
1673
1877
  ],
1878
+ "surfaces": [],
1674
1879
  "relationshipFeatures": [
1675
- "crossPackageRef",
1676
- "foreignKey",
1677
1880
  "uuidColumns"
1678
1881
  ],
1679
1882
  "tags": [],
1680
1883
  "risks": []
1681
1884
  },
1682
1885
  {
1683
- "name": "Opportunity",
1684
- "qualifiedName": "@happyvertical/smrt-sales:Opportunity",
1685
- "collection": "opportunities",
1686
- "tableName": "opportunities",
1886
+ "name": "Lead",
1887
+ "qualifiedName": "@happyvertical/smrt-sales:Lead",
1888
+ "collection": "leads",
1889
+ "tableName": "leads",
1687
1890
  "packageName": "@happyvertical/smrt-sales",
1688
1891
  "extends": "SmrtObject",
1689
1892
  "fields": [
@@ -1701,99 +1904,94 @@
1701
1904
  "default": ""
1702
1905
  },
1703
1906
  {
1704
- "name": "leadId",
1705
- "type": "foreignKey",
1706
- "required": false,
1707
- "related": "Lead",
1708
- "columnType": "UUID"
1709
- },
1710
- {
1711
- "name": "ownerRepId",
1712
- "type": "foreignKey",
1713
- "required": false,
1714
- "related": "SalesRepresentative",
1715
- "columnType": "UUID"
1716
- },
1717
- {
1718
- "name": "pipelineId",
1719
- "type": "foreignKey",
1907
+ "name": "contactName",
1908
+ "type": "text",
1720
1909
  "required": false,
1721
- "related": "PipelineDefinition",
1722
- "columnType": "UUID"
1910
+ "columnType": "TEXT",
1911
+ "default": ""
1723
1912
  },
1724
1913
  {
1725
- "name": "stageId",
1726
- "type": "foreignKey",
1914
+ "name": "email",
1915
+ "type": "text",
1727
1916
  "required": false,
1728
- "related": "PipelineStage",
1729
- "columnType": "UUID"
1917
+ "columnType": "TEXT",
1918
+ "default": ""
1730
1919
  },
1731
1920
  {
1732
- "name": "expectedValueCents",
1733
- "type": "integer",
1921
+ "name": "phone",
1922
+ "type": "text",
1734
1923
  "required": false,
1735
- "columnType": "INTEGER",
1736
- "default": 0
1924
+ "columnType": "TEXT",
1925
+ "default": ""
1737
1926
  },
1738
1927
  {
1739
- "name": "currency",
1928
+ "name": "organizationName",
1740
1929
  "type": "text",
1741
1930
  "required": false,
1742
1931
  "columnType": "TEXT",
1743
- "default": "USD"
1932
+ "default": ""
1744
1933
  },
1745
1934
  {
1746
- "name": "probability",
1747
- "type": "decimal",
1935
+ "name": "profileId",
1936
+ "type": "crossPackageRef",
1748
1937
  "required": false,
1749
- "columnType": "REAL",
1750
- "default": 0
1938
+ "related": "@happyvertical/smrt-profiles:Profile",
1939
+ "columnType": "UUID"
1751
1940
  },
1752
1941
  {
1753
- "name": "expectedCloseAt",
1754
- "type": "datetime",
1942
+ "name": "ownerRepId",
1943
+ "type": "foreignKey",
1755
1944
  "required": false,
1756
- "columnType": "TIMESTAMP"
1945
+ "related": "SalesRepresentative",
1946
+ "columnType": "UUID"
1757
1947
  },
1758
1948
  {
1759
1949
  "name": "status",
1760
1950
  "type": "text",
1761
1951
  "required": false,
1762
1952
  "columnType": "TEXT",
1763
- "default": "open"
1953
+ "default": "new"
1764
1954
  },
1765
1955
  {
1766
- "name": "outcomeReason",
1956
+ "name": "sourceKind",
1767
1957
  "type": "text",
1768
1958
  "required": false,
1769
1959
  "columnType": "TEXT",
1770
1960
  "default": ""
1771
1961
  },
1772
1962
  {
1773
- "name": "wonAt",
1774
- "type": "datetime",
1963
+ "name": "sourceId",
1964
+ "type": "text",
1775
1965
  "required": false,
1776
- "columnType": "TIMESTAMP"
1966
+ "columnType": "TEXT",
1967
+ "default": ""
1777
1968
  },
1778
1969
  {
1779
- "name": "lostAt",
1780
- "type": "datetime",
1970
+ "name": "acquisitionContext",
1971
+ "type": "text",
1781
1972
  "required": false,
1782
- "columnType": "TIMESTAMP"
1973
+ "columnType": "TEXT",
1974
+ "default": "{}"
1783
1975
  },
1784
1976
  {
1785
- "name": "sourceKind",
1977
+ "name": "intakeRef",
1786
1978
  "type": "text",
1787
1979
  "required": false,
1788
1980
  "columnType": "TEXT",
1789
1981
  "default": ""
1790
1982
  },
1791
1983
  {
1792
- "name": "sourceId",
1793
- "type": "text",
1984
+ "name": "mergedIntoId",
1985
+ "type": "foreignKey",
1794
1986
  "required": false,
1795
- "columnType": "TEXT",
1796
- "default": ""
1987
+ "related": "Lead",
1988
+ "columnType": "UUID"
1989
+ },
1990
+ {
1991
+ "name": "qualifiedAt",
1992
+ "type": "datetime",
1993
+ "required": false,
1994
+ "columnType": "TIMESTAMP"
1797
1995
  },
1798
1996
  {
1799
1997
  "name": "metadata",
@@ -1805,10 +2003,10 @@
1805
2003
  ],
1806
2004
  "relationships": [
1807
2005
  {
1808
- "name": "leadId",
1809
- "type": "foreignKey",
2006
+ "name": "profileId",
2007
+ "type": "crossPackageRef",
1810
2008
  "required": false,
1811
- "related": "Lead",
2009
+ "related": "@happyvertical/smrt-profiles:Profile",
1812
2010
  "columnType": "UUID"
1813
2011
  },
1814
2012
  {
@@ -1819,29 +2017,28 @@
1819
2017
  "columnType": "UUID"
1820
2018
  },
1821
2019
  {
1822
- "name": "pipelineId",
1823
- "type": "foreignKey",
1824
- "required": false,
1825
- "related": "PipelineDefinition",
1826
- "columnType": "UUID"
1827
- },
1828
- {
1829
- "name": "stageId",
2020
+ "name": "mergedIntoId",
1830
2021
  "type": "foreignKey",
1831
2022
  "required": false,
1832
- "related": "PipelineStage",
2023
+ "related": "Lead",
1833
2024
  "columnType": "UUID"
1834
2025
  }
1835
2026
  ],
1836
2027
  "methods": [
2028
+ "getAcquisitionContext",
1837
2029
  "getMetadata",
1838
2030
  "initialize",
1839
- "isClosed",
1840
- "isOpen",
2031
+ "isMerged",
2032
+ "isQualified",
1841
2033
  "save",
2034
+ "setAcquisitionContext",
1842
2035
  "setMetadata"
1843
2036
  ],
1844
2037
  "methodSignatures": [
2038
+ {
2039
+ "name": "getAcquisitionContext",
2040
+ "returns": "Record<string>"
2041
+ },
1845
2042
  {
1846
2043
  "name": "getMetadata",
1847
2044
  "returns": "Record<string>"
@@ -1852,11 +2049,11 @@
1852
2049
  "returns": "Promise"
1853
2050
  },
1854
2051
  {
1855
- "name": "isClosed",
2052
+ "name": "isMerged",
1856
2053
  "returns": "boolean"
1857
2054
  },
1858
2055
  {
1859
- "name": "isOpen",
2056
+ "name": "isQualified",
1860
2057
  "returns": "boolean"
1861
2058
  },
1862
2059
  {
@@ -1864,6 +2061,13 @@
1864
2061
  "async": true,
1865
2062
  "returns": "Promise"
1866
2063
  },
2064
+ {
2065
+ "name": "setAcquisitionContext",
2066
+ "params": [
2067
+ "context: Record<string>"
2068
+ ],
2069
+ "returns": "void"
2070
+ },
1867
2071
  {
1868
2072
  "name": "setMetadata",
1869
2073
  "params": [
@@ -1885,217 +2089,87 @@
1885
2089
  "surfaces": [
1886
2090
  {
1887
2091
  "kind": "api",
1888
- "name": "opportunities.list",
2092
+ "name": "leads.list",
1889
2093
  "operation": "list",
1890
- "objectName": "@happyvertical/smrt-sales:Opportunity",
1891
- "path": "/opportunities",
2094
+ "objectName": "@happyvertical/smrt-sales:Lead",
2095
+ "path": "/leads",
1892
2096
  "method": "GET"
1893
2097
  },
1894
2098
  {
1895
2099
  "kind": "api",
1896
- "name": "opportunities.get",
2100
+ "name": "leads.get",
1897
2101
  "operation": "get",
1898
- "objectName": "@happyvertical/smrt-sales:Opportunity",
1899
- "path": "/opportunities/[id]",
2102
+ "objectName": "@happyvertical/smrt-sales:Lead",
2103
+ "path": "/leads/[id]",
1900
2104
  "method": "GET"
1901
2105
  },
1902
2106
  {
1903
2107
  "kind": "api",
1904
- "name": "opportunities.create",
2108
+ "name": "leads.create",
1905
2109
  "operation": "create",
1906
- "objectName": "@happyvertical/smrt-sales:Opportunity",
1907
- "path": "/opportunities",
2110
+ "objectName": "@happyvertical/smrt-sales:Lead",
2111
+ "path": "/leads",
1908
2112
  "method": "POST"
1909
2113
  },
1910
2114
  {
1911
2115
  "kind": "api",
1912
- "name": "opportunities.update",
2116
+ "name": "leads.update",
1913
2117
  "operation": "update",
1914
- "objectName": "@happyvertical/smrt-sales:Opportunity",
1915
- "path": "/opportunities/[id]",
2118
+ "objectName": "@happyvertical/smrt-sales:Lead",
2119
+ "path": "/leads/[id]",
1916
2120
  "method": "PATCH"
1917
2121
  },
1918
2122
  {
1919
2123
  "kind": "cli",
1920
- "name": "opportunity_list",
2124
+ "name": "lead_list",
1921
2125
  "operation": "list",
1922
- "objectName": "@happyvertical/smrt-sales:Opportunity"
2126
+ "objectName": "@happyvertical/smrt-sales:Lead"
1923
2127
  },
1924
2128
  {
1925
2129
  "kind": "cli",
1926
- "name": "opportunity_get",
2130
+ "name": "lead_get",
1927
2131
  "operation": "get",
1928
- "objectName": "@happyvertical/smrt-sales:Opportunity"
2132
+ "objectName": "@happyvertical/smrt-sales:Lead"
1929
2133
  },
1930
2134
  {
1931
2135
  "kind": "cli",
1932
- "name": "opportunity_create",
2136
+ "name": "lead_create",
1933
2137
  "operation": "create",
1934
- "objectName": "@happyvertical/smrt-sales:Opportunity"
2138
+ "objectName": "@happyvertical/smrt-sales:Lead"
1935
2139
  },
1936
2140
  {
1937
2141
  "kind": "cli",
1938
- "name": "opportunity_update",
2142
+ "name": "lead_update",
1939
2143
  "operation": "update",
1940
- "objectName": "@happyvertical/smrt-sales:Opportunity"
2144
+ "objectName": "@happyvertical/smrt-sales:Lead"
1941
2145
  },
1942
2146
  {
1943
2147
  "kind": "cli",
1944
- "name": "opportunity_delete",
2148
+ "name": "lead_delete",
1945
2149
  "operation": "delete",
1946
- "objectName": "@happyvertical/smrt-sales:Opportunity"
1947
- },
1948
- {
1949
- "kind": "mcp",
1950
- "name": "opportunity_list",
1951
- "operation": "list",
1952
- "objectName": "@happyvertical/smrt-sales:Opportunity"
2150
+ "objectName": "@happyvertical/smrt-sales:Lead"
1953
2151
  },
1954
2152
  {
1955
2153
  "kind": "mcp",
1956
- "name": "opportunity_get",
1957
- "operation": "get",
1958
- "objectName": "@happyvertical/smrt-sales:Opportunity"
1959
- }
1960
- ],
1961
- "relationshipFeatures": [
1962
- "foreignKey",
1963
- "uuidColumns"
1964
- ],
1965
- "tags": [],
1966
- "risks": []
1967
- },
1968
- {
1969
- "name": "OpportunityConversion",
1970
- "qualifiedName": "@happyvertical/smrt-sales:OpportunityConversion",
1971
- "collection": "opportunityconversions",
1972
- "tableName": "opportunity_conversions",
1973
- "packageName": "@happyvertical/smrt-sales",
1974
- "extends": "SmrtObject",
1975
- "fields": [
1976
- {
1977
- "name": "tenantId",
1978
- "type": "text",
1979
- "required": false,
1980
- "columnType": "UUID"
1981
- },
1982
- {
1983
- "name": "opportunityId",
1984
- "type": "foreignKey",
1985
- "required": true,
1986
- "related": "Opportunity",
1987
- "columnType": "UUID"
1988
- },
1989
- {
1990
- "name": "targetKind",
1991
- "type": "text",
1992
- "required": true,
1993
- "columnType": "TEXT",
1994
- "default": ""
1995
- },
1996
- {
1997
- "name": "targetId",
1998
- "type": "text",
1999
- "required": true,
2000
- "columnType": "TEXT",
2001
- "default": ""
2002
- },
2003
- {
2004
- "name": "note",
2005
- "type": "text",
2006
- "required": false,
2007
- "columnType": "TEXT",
2008
- "default": ""
2009
- },
2010
- {
2011
- "name": "metadata",
2012
- "type": "text",
2013
- "required": false,
2014
- "columnType": "TEXT",
2015
- "default": "{}"
2016
- }
2017
- ],
2018
- "relationships": [
2019
- {
2020
- "name": "opportunityId",
2021
- "type": "foreignKey",
2022
- "required": true,
2023
- "related": "Opportunity",
2024
- "columnType": "UUID"
2025
- }
2026
- ],
2027
- "methods": [
2028
- "getMetadata",
2029
- "save",
2030
- "setMetadata"
2031
- ],
2032
- "methodSignatures": [
2033
- {
2034
- "name": "getMetadata",
2035
- "returns": "Record<string>"
2036
- },
2037
- {
2038
- "name": "save",
2039
- "async": true,
2040
- "returns": "Promise"
2041
- },
2042
- {
2043
- "name": "setMetadata",
2044
- "params": [
2045
- "metadata: Record<string>"
2046
- ],
2047
- "returns": "void"
2048
- }
2049
- ],
2050
- "tenant": {
2051
- "scoped": true,
2052
- "mode": "optional",
2053
- "field": "tenantId"
2054
- },
2055
- "conflictColumns": [
2056
- "opportunity_id",
2057
- "target_kind",
2058
- "target_id"
2059
- ],
2060
- "surfaces": [
2061
- {
2062
- "kind": "api",
2063
- "name": "opportunityconversions.list",
2154
+ "name": "lead_list",
2064
2155
  "operation": "list",
2065
- "objectName": "@happyvertical/smrt-sales:OpportunityConversion",
2066
- "path": "/opportunityconversions",
2067
- "method": "GET"
2068
- },
2069
- {
2070
- "kind": "api",
2071
- "name": "opportunityconversions.get",
2072
- "operation": "get",
2073
- "objectName": "@happyvertical/smrt-sales:OpportunityConversion",
2074
- "path": "/opportunityconversions/[id]",
2075
- "method": "GET"
2076
- },
2077
- {
2078
- "kind": "api",
2079
- "name": "opportunityconversions.create",
2080
- "operation": "create",
2081
- "objectName": "@happyvertical/smrt-sales:OpportunityConversion",
2082
- "path": "/opportunityconversions",
2083
- "method": "POST"
2156
+ "objectName": "@happyvertical/smrt-sales:Lead"
2084
2157
  },
2085
2158
  {
2086
2159
  "kind": "mcp",
2087
- "name": "opportunityconversion_list",
2088
- "operation": "list",
2089
- "objectName": "@happyvertical/smrt-sales:OpportunityConversion"
2160
+ "name": "lead_get",
2161
+ "operation": "get",
2162
+ "objectName": "@happyvertical/smrt-sales:Lead"
2090
2163
  },
2091
2164
  {
2092
2165
  "kind": "mcp",
2093
- "name": "opportunityconversion_get",
2094
- "operation": "get",
2095
- "objectName": "@happyvertical/smrt-sales:OpportunityConversion"
2166
+ "name": "lead_create",
2167
+ "operation": "create",
2168
+ "objectName": "@happyvertical/smrt-sales:Lead"
2096
2169
  }
2097
2170
  ],
2098
2171
  "relationshipFeatures": [
2172
+ "crossPackageRef",
2099
2173
  "foreignKey",
2100
2174
  "uuidColumns"
2101
2175
  ],
@@ -2103,10 +2177,10 @@
2103
2177
  "risks": []
2104
2178
  },
2105
2179
  {
2106
- "name": "PipelineDefinition",
2107
- "qualifiedName": "@happyvertical/smrt-sales:PipelineDefinition",
2108
- "collection": "pipelinedefinitions",
2109
- "tableName": "pipeline_definitions",
2180
+ "name": "Opportunity",
2181
+ "qualifiedName": "@happyvertical/smrt-sales:Opportunity",
2182
+ "collection": "opportunities",
2183
+ "tableName": "opportunities",
2110
2184
  "packageName": "@happyvertical/smrt-sales",
2111
2185
  "extends": "SmrtObject",
2112
2186
  "fields": [
@@ -2117,32 +2191,106 @@
2117
2191
  "columnType": "UUID"
2118
2192
  },
2119
2193
  {
2120
- "name": "key",
2194
+ "name": "name",
2121
2195
  "type": "text",
2122
2196
  "required": true,
2123
2197
  "columnType": "TEXT",
2124
2198
  "default": ""
2125
2199
  },
2126
2200
  {
2127
- "name": "name",
2201
+ "name": "leadId",
2202
+ "type": "foreignKey",
2203
+ "required": false,
2204
+ "related": "Lead",
2205
+ "columnType": "UUID"
2206
+ },
2207
+ {
2208
+ "name": "ownerRepId",
2209
+ "type": "foreignKey",
2210
+ "required": false,
2211
+ "related": "SalesRepresentative",
2212
+ "columnType": "UUID"
2213
+ },
2214
+ {
2215
+ "name": "pipelineId",
2216
+ "type": "foreignKey",
2217
+ "required": false,
2218
+ "related": "PipelineDefinition",
2219
+ "columnType": "UUID"
2220
+ },
2221
+ {
2222
+ "name": "stageId",
2223
+ "type": "foreignKey",
2224
+ "required": false,
2225
+ "related": "PipelineStage",
2226
+ "columnType": "UUID"
2227
+ },
2228
+ {
2229
+ "name": "expectedValueCents",
2230
+ "type": "integer",
2231
+ "required": false,
2232
+ "columnType": "INTEGER",
2233
+ "default": 0
2234
+ },
2235
+ {
2236
+ "name": "currency",
2128
2237
  "type": "text",
2129
2238
  "required": false,
2130
2239
  "columnType": "TEXT",
2131
- "default": ""
2240
+ "default": "USD"
2132
2241
  },
2133
2242
  {
2134
- "name": "isDefault",
2135
- "type": "boolean",
2243
+ "name": "probability",
2244
+ "type": "decimal",
2136
2245
  "required": false,
2137
- "columnType": "BOOLEAN",
2138
- "default": false
2246
+ "columnType": "REAL",
2247
+ "default": 0
2248
+ },
2249
+ {
2250
+ "name": "expectedCloseAt",
2251
+ "type": "datetime",
2252
+ "required": false,
2253
+ "columnType": "TIMESTAMP"
2139
2254
  },
2140
2255
  {
2141
2256
  "name": "status",
2142
2257
  "type": "text",
2143
2258
  "required": false,
2144
2259
  "columnType": "TEXT",
2145
- "default": "active"
2260
+ "default": "open"
2261
+ },
2262
+ {
2263
+ "name": "outcomeReason",
2264
+ "type": "text",
2265
+ "required": false,
2266
+ "columnType": "TEXT",
2267
+ "default": ""
2268
+ },
2269
+ {
2270
+ "name": "wonAt",
2271
+ "type": "datetime",
2272
+ "required": false,
2273
+ "columnType": "TIMESTAMP"
2274
+ },
2275
+ {
2276
+ "name": "lostAt",
2277
+ "type": "datetime",
2278
+ "required": false,
2279
+ "columnType": "TIMESTAMP"
2280
+ },
2281
+ {
2282
+ "name": "sourceKind",
2283
+ "type": "text",
2284
+ "required": false,
2285
+ "columnType": "TEXT",
2286
+ "default": ""
2287
+ },
2288
+ {
2289
+ "name": "sourceId",
2290
+ "type": "text",
2291
+ "required": false,
2292
+ "columnType": "TEXT",
2293
+ "default": ""
2146
2294
  },
2147
2295
  {
2148
2296
  "name": "metadata",
@@ -2152,10 +2300,42 @@
2152
2300
  "default": "{}"
2153
2301
  }
2154
2302
  ],
2155
- "relationships": [],
2303
+ "relationships": [
2304
+ {
2305
+ "name": "leadId",
2306
+ "type": "foreignKey",
2307
+ "required": false,
2308
+ "related": "Lead",
2309
+ "columnType": "UUID"
2310
+ },
2311
+ {
2312
+ "name": "ownerRepId",
2313
+ "type": "foreignKey",
2314
+ "required": false,
2315
+ "related": "SalesRepresentative",
2316
+ "columnType": "UUID"
2317
+ },
2318
+ {
2319
+ "name": "pipelineId",
2320
+ "type": "foreignKey",
2321
+ "required": false,
2322
+ "related": "PipelineDefinition",
2323
+ "columnType": "UUID"
2324
+ },
2325
+ {
2326
+ "name": "stageId",
2327
+ "type": "foreignKey",
2328
+ "required": false,
2329
+ "related": "PipelineStage",
2330
+ "columnType": "UUID"
2331
+ }
2332
+ ],
2156
2333
  "methods": [
2157
2334
  "getMetadata",
2158
- "isActive",
2335
+ "initialize",
2336
+ "isClosed",
2337
+ "isOpen",
2338
+ "save",
2159
2339
  "setMetadata"
2160
2340
  ],
2161
2341
  "methodSignatures": [
@@ -2164,9 +2344,23 @@
2164
2344
  "returns": "Record<string>"
2165
2345
  },
2166
2346
  {
2167
- "name": "isActive",
2347
+ "name": "initialize",
2348
+ "async": true,
2349
+ "returns": "Promise"
2350
+ },
2351
+ {
2352
+ "name": "isClosed",
2353
+ "returns": "boolean"
2354
+ },
2355
+ {
2356
+ "name": "isOpen",
2168
2357
  "returns": "boolean"
2169
2358
  },
2359
+ {
2360
+ "name": "save",
2361
+ "async": true,
2362
+ "returns": "Promise"
2363
+ },
2170
2364
  {
2171
2365
  "name": "setMetadata",
2172
2366
  "params": [
@@ -2182,95 +2376,97 @@
2182
2376
  },
2183
2377
  "conflictColumns": [
2184
2378
  "tenant_id",
2185
- "key"
2379
+ "slug",
2380
+ "context"
2186
2381
  ],
2187
2382
  "surfaces": [
2188
2383
  {
2189
2384
  "kind": "api",
2190
- "name": "pipelinedefinitions.list",
2385
+ "name": "opportunities.list",
2191
2386
  "operation": "list",
2192
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition",
2193
- "path": "/pipelinedefinitions",
2387
+ "objectName": "@happyvertical/smrt-sales:Opportunity",
2388
+ "path": "/opportunities",
2194
2389
  "method": "GET"
2195
2390
  },
2196
2391
  {
2197
2392
  "kind": "api",
2198
- "name": "pipelinedefinitions.get",
2393
+ "name": "opportunities.get",
2199
2394
  "operation": "get",
2200
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition",
2201
- "path": "/pipelinedefinitions/[id]",
2395
+ "objectName": "@happyvertical/smrt-sales:Opportunity",
2396
+ "path": "/opportunities/[id]",
2202
2397
  "method": "GET"
2203
2398
  },
2204
2399
  {
2205
2400
  "kind": "api",
2206
- "name": "pipelinedefinitions.create",
2401
+ "name": "opportunities.create",
2207
2402
  "operation": "create",
2208
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition",
2209
- "path": "/pipelinedefinitions",
2403
+ "objectName": "@happyvertical/smrt-sales:Opportunity",
2404
+ "path": "/opportunities",
2210
2405
  "method": "POST"
2211
2406
  },
2212
2407
  {
2213
2408
  "kind": "api",
2214
- "name": "pipelinedefinitions.update",
2409
+ "name": "opportunities.update",
2215
2410
  "operation": "update",
2216
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition",
2217
- "path": "/pipelinedefinitions/[id]",
2411
+ "objectName": "@happyvertical/smrt-sales:Opportunity",
2412
+ "path": "/opportunities/[id]",
2218
2413
  "method": "PATCH"
2219
2414
  },
2220
2415
  {
2221
2416
  "kind": "cli",
2222
- "name": "pipelinedefinition_list",
2417
+ "name": "opportunity_list",
2223
2418
  "operation": "list",
2224
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2419
+ "objectName": "@happyvertical/smrt-sales:Opportunity"
2225
2420
  },
2226
2421
  {
2227
2422
  "kind": "cli",
2228
- "name": "pipelinedefinition_get",
2423
+ "name": "opportunity_get",
2229
2424
  "operation": "get",
2230
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2425
+ "objectName": "@happyvertical/smrt-sales:Opportunity"
2231
2426
  },
2232
2427
  {
2233
2428
  "kind": "cli",
2234
- "name": "pipelinedefinition_create",
2429
+ "name": "opportunity_create",
2235
2430
  "operation": "create",
2236
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2431
+ "objectName": "@happyvertical/smrt-sales:Opportunity"
2237
2432
  },
2238
2433
  {
2239
2434
  "kind": "cli",
2240
- "name": "pipelinedefinition_update",
2435
+ "name": "opportunity_update",
2241
2436
  "operation": "update",
2242
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2437
+ "objectName": "@happyvertical/smrt-sales:Opportunity"
2243
2438
  },
2244
2439
  {
2245
2440
  "kind": "cli",
2246
- "name": "pipelinedefinition_delete",
2441
+ "name": "opportunity_delete",
2247
2442
  "operation": "delete",
2248
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2443
+ "objectName": "@happyvertical/smrt-sales:Opportunity"
2249
2444
  },
2250
2445
  {
2251
2446
  "kind": "mcp",
2252
- "name": "pipelinedefinition_list",
2447
+ "name": "opportunity_list",
2253
2448
  "operation": "list",
2254
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2449
+ "objectName": "@happyvertical/smrt-sales:Opportunity"
2255
2450
  },
2256
2451
  {
2257
2452
  "kind": "mcp",
2258
- "name": "pipelinedefinition_get",
2453
+ "name": "opportunity_get",
2259
2454
  "operation": "get",
2260
- "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2455
+ "objectName": "@happyvertical/smrt-sales:Opportunity"
2261
2456
  }
2262
2457
  ],
2263
2458
  "relationshipFeatures": [
2459
+ "foreignKey",
2264
2460
  "uuidColumns"
2265
2461
  ],
2266
2462
  "tags": [],
2267
2463
  "risks": []
2268
2464
  },
2269
2465
  {
2270
- "name": "PipelineStage",
2271
- "qualifiedName": "@happyvertical/smrt-sales:PipelineStage",
2272
- "collection": "pipelinestages",
2273
- "tableName": "pipeline_stages",
2466
+ "name": "OpportunityConversion",
2467
+ "qualifiedName": "@happyvertical/smrt-sales:OpportunityConversion",
2468
+ "collection": "opportunityconversions",
2469
+ "tableName": "opportunity_conversions",
2274
2470
  "packageName": "@happyvertical/smrt-sales",
2275
2471
  "extends": "SmrtObject",
2276
2472
  "fields": [
@@ -2281,53 +2477,32 @@
2281
2477
  "columnType": "UUID"
2282
2478
  },
2283
2479
  {
2284
- "name": "pipelineId",
2480
+ "name": "opportunityId",
2285
2481
  "type": "foreignKey",
2286
2482
  "required": true,
2287
- "related": "PipelineDefinition",
2483
+ "related": "Opportunity",
2288
2484
  "columnType": "UUID"
2289
2485
  },
2290
2486
  {
2291
- "name": "key",
2292
- "type": "text",
2293
- "required": true,
2294
- "columnType": "TEXT",
2295
- "default": ""
2296
- },
2297
- {
2298
- "name": "name",
2299
- "type": "text",
2300
- "required": false,
2301
- "columnType": "TEXT",
2302
- "default": ""
2303
- },
2304
- {
2305
- "name": "sortOrder",
2306
- "type": "integer",
2307
- "required": false,
2308
- "columnType": "INTEGER",
2309
- "default": 0
2310
- },
2311
- {
2312
- "name": "probability",
2313
- "type": "decimal",
2314
- "required": false,
2315
- "columnType": "REAL",
2316
- "default": 0
2317
- },
2318
- {
2319
- "name": "isWon",
2320
- "type": "boolean",
2321
- "required": false,
2322
- "columnType": "BOOLEAN",
2323
- "default": false
2487
+ "name": "targetKind",
2488
+ "type": "text",
2489
+ "required": true,
2490
+ "columnType": "TEXT",
2491
+ "default": ""
2324
2492
  },
2325
2493
  {
2326
- "name": "isLost",
2327
- "type": "boolean",
2494
+ "name": "targetId",
2495
+ "type": "text",
2496
+ "required": true,
2497
+ "columnType": "TEXT",
2498
+ "default": ""
2499
+ },
2500
+ {
2501
+ "name": "note",
2502
+ "type": "text",
2328
2503
  "required": false,
2329
- "columnType": "BOOLEAN",
2330
- "default": false
2504
+ "columnType": "TEXT",
2505
+ "default": ""
2331
2506
  },
2332
2507
  {
2333
2508
  "name": "metadata",
@@ -2339,16 +2514,16 @@
2339
2514
  ],
2340
2515
  "relationships": [
2341
2516
  {
2342
- "name": "pipelineId",
2517
+ "name": "opportunityId",
2343
2518
  "type": "foreignKey",
2344
2519
  "required": true,
2345
- "related": "PipelineDefinition",
2520
+ "related": "Opportunity",
2346
2521
  "columnType": "UUID"
2347
2522
  }
2348
2523
  ],
2349
2524
  "methods": [
2350
2525
  "getMetadata",
2351
- "isTerminal",
2526
+ "save",
2352
2527
  "setMetadata"
2353
2528
  ],
2354
2529
  "methodSignatures": [
@@ -2357,8 +2532,9 @@
2357
2532
  "returns": "Record<string>"
2358
2533
  },
2359
2534
  {
2360
- "name": "isTerminal",
2361
- "returns": "boolean"
2535
+ "name": "save",
2536
+ "async": true,
2537
+ "returns": "Promise"
2362
2538
  },
2363
2539
  {
2364
2540
  "name": "setMetadata",
@@ -2374,53 +2550,46 @@
2374
2550
  "field": "tenantId"
2375
2551
  },
2376
2552
  "conflictColumns": [
2377
- "pipeline_id",
2378
- "key"
2553
+ "opportunity_id",
2554
+ "target_kind",
2555
+ "target_id"
2379
2556
  ],
2380
2557
  "surfaces": [
2381
2558
  {
2382
2559
  "kind": "api",
2383
- "name": "pipelinestages.list",
2560
+ "name": "opportunityconversions.list",
2384
2561
  "operation": "list",
2385
- "objectName": "@happyvertical/smrt-sales:PipelineStage",
2386
- "path": "/pipelinestages",
2562
+ "objectName": "@happyvertical/smrt-sales:OpportunityConversion",
2563
+ "path": "/opportunityconversions",
2387
2564
  "method": "GET"
2388
2565
  },
2389
2566
  {
2390
2567
  "kind": "api",
2391
- "name": "pipelinestages.get",
2568
+ "name": "opportunityconversions.get",
2392
2569
  "operation": "get",
2393
- "objectName": "@happyvertical/smrt-sales:PipelineStage",
2394
- "path": "/pipelinestages/[id]",
2570
+ "objectName": "@happyvertical/smrt-sales:OpportunityConversion",
2571
+ "path": "/opportunityconversions/[id]",
2395
2572
  "method": "GET"
2396
2573
  },
2397
2574
  {
2398
2575
  "kind": "api",
2399
- "name": "pipelinestages.create",
2576
+ "name": "opportunityconversions.create",
2400
2577
  "operation": "create",
2401
- "objectName": "@happyvertical/smrt-sales:PipelineStage",
2402
- "path": "/pipelinestages",
2578
+ "objectName": "@happyvertical/smrt-sales:OpportunityConversion",
2579
+ "path": "/opportunityconversions",
2403
2580
  "method": "POST"
2404
2581
  },
2405
- {
2406
- "kind": "api",
2407
- "name": "pipelinestages.update",
2408
- "operation": "update",
2409
- "objectName": "@happyvertical/smrt-sales:PipelineStage",
2410
- "path": "/pipelinestages/[id]",
2411
- "method": "PATCH"
2412
- },
2413
2582
  {
2414
2583
  "kind": "mcp",
2415
- "name": "pipelinestage_list",
2584
+ "name": "opportunityconversion_list",
2416
2585
  "operation": "list",
2417
- "objectName": "@happyvertical/smrt-sales:PipelineStage"
2586
+ "objectName": "@happyvertical/smrt-sales:OpportunityConversion"
2418
2587
  },
2419
2588
  {
2420
2589
  "kind": "mcp",
2421
- "name": "pipelinestage_get",
2590
+ "name": "opportunityconversion_get",
2422
2591
  "operation": "get",
2423
- "objectName": "@happyvertical/smrt-sales:PipelineStage"
2592
+ "objectName": "@happyvertical/smrt-sales:OpportunityConversion"
2424
2593
  }
2425
2594
  ],
2426
2595
  "relationshipFeatures": [
@@ -2431,10 +2600,10 @@
2431
2600
  "risks": []
2432
2601
  },
2433
2602
  {
2434
- "name": "SalesActivity",
2435
- "qualifiedName": "@happyvertical/smrt-sales:SalesActivity",
2436
- "collection": "salesactivities",
2437
- "tableName": "sales_activities",
2603
+ "name": "PipelineDefinition",
2604
+ "qualifiedName": "@happyvertical/smrt-sales:PipelineDefinition",
2605
+ "collection": "pipelinedefinitions",
2606
+ "tableName": "pipeline_definitions",
2438
2607
  "packageName": "@happyvertical/smrt-sales",
2439
2608
  "extends": "SmrtObject",
2440
2609
  "fields": [
@@ -2445,51 +2614,32 @@
2445
2614
  "columnType": "UUID"
2446
2615
  },
2447
2616
  {
2448
- "name": "subjectKind",
2449
- "type": "text",
2450
- "required": false,
2451
- "columnType": "TEXT",
2452
- "default": "lead"
2453
- },
2454
- {
2455
- "name": "subjectId",
2617
+ "name": "key",
2456
2618
  "type": "text",
2457
2619
  "required": true,
2458
2620
  "columnType": "TEXT",
2459
2621
  "default": ""
2460
2622
  },
2461
2623
  {
2462
- "name": "activityKind",
2463
- "type": "text",
2464
- "required": false,
2465
- "columnType": "TEXT",
2466
- "default": "note"
2467
- },
2468
- {
2469
- "name": "summary",
2624
+ "name": "name",
2470
2625
  "type": "text",
2471
2626
  "required": false,
2472
2627
  "columnType": "TEXT",
2473
2628
  "default": ""
2474
2629
  },
2475
2630
  {
2476
- "name": "dueAt",
2477
- "type": "datetime",
2478
- "required": false,
2479
- "columnType": "TIMESTAMP"
2480
- },
2481
- {
2482
- "name": "completedAt",
2483
- "type": "datetime",
2631
+ "name": "isDefault",
2632
+ "type": "boolean",
2484
2633
  "required": false,
2485
- "columnType": "TIMESTAMP"
2634
+ "columnType": "BOOLEAN",
2635
+ "default": false
2486
2636
  },
2487
2637
  {
2488
- "name": "actorProfileId",
2489
- "type": "crossPackageRef",
2638
+ "name": "status",
2639
+ "type": "text",
2490
2640
  "required": false,
2491
- "related": "@happyvertical/smrt-profiles:Profile",
2492
- "columnType": "UUID"
2641
+ "columnType": "TEXT",
2642
+ "default": "active"
2493
2643
  },
2494
2644
  {
2495
2645
  "name": "metadata",
@@ -2499,19 +2649,10 @@
2499
2649
  "default": "{}"
2500
2650
  }
2501
2651
  ],
2502
- "relationships": [
2503
- {
2504
- "name": "actorProfileId",
2505
- "type": "crossPackageRef",
2506
- "required": false,
2507
- "related": "@happyvertical/smrt-profiles:Profile",
2508
- "columnType": "UUID"
2509
- }
2510
- ],
2652
+ "relationships": [],
2511
2653
  "methods": [
2512
2654
  "getMetadata",
2513
- "isOpenTask",
2514
- "save",
2655
+ "isActive",
2515
2656
  "setMetadata"
2516
2657
  ],
2517
2658
  "methodSignatures": [
@@ -2520,14 +2661,9 @@
2520
2661
  "returns": "Record<string>"
2521
2662
  },
2522
2663
  {
2523
- "name": "isOpenTask",
2664
+ "name": "isActive",
2524
2665
  "returns": "boolean"
2525
2666
  },
2526
- {
2527
- "name": "save",
2528
- "async": true,
2529
- "returns": "Promise"
2530
- },
2531
2667
  {
2532
2668
  "name": "setMetadata",
2533
2669
  "params": [
@@ -2543,59 +2679,95 @@
2543
2679
  },
2544
2680
  "conflictColumns": [
2545
2681
  "tenant_id",
2546
- "slug",
2547
- "context"
2682
+ "key"
2548
2683
  ],
2549
2684
  "surfaces": [
2550
2685
  {
2551
2686
  "kind": "api",
2552
- "name": "salesactivities.create",
2687
+ "name": "pipelinedefinitions.list",
2688
+ "operation": "list",
2689
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition",
2690
+ "path": "/pipelinedefinitions",
2691
+ "method": "GET"
2692
+ },
2693
+ {
2694
+ "kind": "api",
2695
+ "name": "pipelinedefinitions.get",
2696
+ "operation": "get",
2697
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition",
2698
+ "path": "/pipelinedefinitions/[id]",
2699
+ "method": "GET"
2700
+ },
2701
+ {
2702
+ "kind": "api",
2703
+ "name": "pipelinedefinitions.create",
2553
2704
  "operation": "create",
2554
- "objectName": "@happyvertical/smrt-sales:SalesActivity",
2555
- "path": "/salesactivities",
2705
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition",
2706
+ "path": "/pipelinedefinitions",
2556
2707
  "method": "POST"
2557
2708
  },
2558
2709
  {
2559
2710
  "kind": "api",
2560
- "name": "salesactivities.list",
2711
+ "name": "pipelinedefinitions.update",
2712
+ "operation": "update",
2713
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition",
2714
+ "path": "/pipelinedefinitions/[id]",
2715
+ "method": "PATCH"
2716
+ },
2717
+ {
2718
+ "kind": "cli",
2719
+ "name": "pipelinedefinition_list",
2561
2720
  "operation": "list",
2562
- "objectName": "@happyvertical/smrt-sales:SalesActivity",
2563
- "path": "/salesactivities",
2564
- "method": "GET"
2721
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2565
2722
  },
2566
2723
  {
2567
- "kind": "api",
2568
- "name": "salesactivities.get",
2724
+ "kind": "cli",
2725
+ "name": "pipelinedefinition_get",
2569
2726
  "operation": "get",
2570
- "objectName": "@happyvertical/smrt-sales:SalesActivity",
2571
- "path": "/salesactivities/[id]",
2572
- "method": "GET"
2727
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2728
+ },
2729
+ {
2730
+ "kind": "cli",
2731
+ "name": "pipelinedefinition_create",
2732
+ "operation": "create",
2733
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2734
+ },
2735
+ {
2736
+ "kind": "cli",
2737
+ "name": "pipelinedefinition_update",
2738
+ "operation": "update",
2739
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2740
+ },
2741
+ {
2742
+ "kind": "cli",
2743
+ "name": "pipelinedefinition_delete",
2744
+ "operation": "delete",
2745
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2573
2746
  },
2574
2747
  {
2575
2748
  "kind": "mcp",
2576
- "name": "salesactivity_list",
2749
+ "name": "pipelinedefinition_list",
2577
2750
  "operation": "list",
2578
- "objectName": "@happyvertical/smrt-sales:SalesActivity"
2751
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2579
2752
  },
2580
2753
  {
2581
2754
  "kind": "mcp",
2582
- "name": "salesactivity_create",
2583
- "operation": "create",
2584
- "objectName": "@happyvertical/smrt-sales:SalesActivity"
2755
+ "name": "pipelinedefinition_get",
2756
+ "operation": "get",
2757
+ "objectName": "@happyvertical/smrt-sales:PipelineDefinition"
2585
2758
  }
2586
2759
  ],
2587
2760
  "relationshipFeatures": [
2588
- "crossPackageRef",
2589
2761
  "uuidColumns"
2590
2762
  ],
2591
2763
  "tags": [],
2592
2764
  "risks": []
2593
2765
  },
2594
2766
  {
2595
- "name": "SalesRepresentative",
2596
- "qualifiedName": "@happyvertical/smrt-sales:SalesRepresentative",
2597
- "collection": "salesrepresentatives",
2598
- "tableName": "sales_representatives",
2767
+ "name": "PipelineStage",
2768
+ "qualifiedName": "@happyvertical/smrt-sales:PipelineStage",
2769
+ "collection": "pipelinestages",
2770
+ "tableName": "pipeline_stages",
2599
2771
  "packageName": "@happyvertical/smrt-sales",
2600
2772
  "extends": "SmrtObject",
2601
2773
  "fields": [
@@ -2606,32 +2778,53 @@
2606
2778
  "columnType": "UUID"
2607
2779
  },
2608
2780
  {
2609
- "name": "profileId",
2610
- "type": "crossPackageRef",
2611
- "required": false,
2612
- "related": "@happyvertical/smrt-profiles:Profile",
2781
+ "name": "pipelineId",
2782
+ "type": "foreignKey",
2783
+ "required": true,
2784
+ "related": "PipelineDefinition",
2613
2785
  "columnType": "UUID"
2614
2786
  },
2615
2787
  {
2616
- "name": "earnerId",
2617
- "type": "foreignKey",
2788
+ "name": "key",
2789
+ "type": "text",
2790
+ "required": true,
2791
+ "columnType": "TEXT",
2792
+ "default": ""
2793
+ },
2794
+ {
2795
+ "name": "name",
2796
+ "type": "text",
2797
+ "required": false,
2798
+ "columnType": "TEXT",
2799
+ "default": ""
2800
+ },
2801
+ {
2802
+ "name": "sortOrder",
2803
+ "type": "integer",
2804
+ "required": false,
2805
+ "columnType": "INTEGER",
2806
+ "default": 0
2807
+ },
2808
+ {
2809
+ "name": "probability",
2810
+ "type": "decimal",
2618
2811
  "required": false,
2619
- "related": "Earner",
2620
- "columnType": "UUID"
2812
+ "columnType": "REAL",
2813
+ "default": 0
2621
2814
  },
2622
2815
  {
2623
- "name": "status",
2624
- "type": "text",
2816
+ "name": "isWon",
2817
+ "type": "boolean",
2625
2818
  "required": false,
2626
- "columnType": "TEXT",
2627
- "default": "active"
2819
+ "columnType": "BOOLEAN",
2820
+ "default": false
2628
2821
  },
2629
2822
  {
2630
- "name": "title",
2631
- "type": "text",
2823
+ "name": "isLost",
2824
+ "type": "boolean",
2632
2825
  "required": false,
2633
- "columnType": "TEXT",
2634
- "default": ""
2826
+ "columnType": "BOOLEAN",
2827
+ "default": false
2635
2828
  },
2636
2829
  {
2637
2830
  "name": "metadata",
@@ -2643,23 +2836,16 @@
2643
2836
  ],
2644
2837
  "relationships": [
2645
2838
  {
2646
- "name": "profileId",
2647
- "type": "crossPackageRef",
2648
- "required": false,
2649
- "related": "@happyvertical/smrt-profiles:Profile",
2650
- "columnType": "UUID"
2651
- },
2652
- {
2653
- "name": "earnerId",
2839
+ "name": "pipelineId",
2654
2840
  "type": "foreignKey",
2655
- "required": false,
2656
- "related": "Earner",
2841
+ "required": true,
2842
+ "related": "PipelineDefinition",
2657
2843
  "columnType": "UUID"
2658
2844
  }
2659
2845
  ],
2660
2846
  "methods": [
2661
2847
  "getMetadata",
2662
- "isActive",
2848
+ "isTerminal",
2663
2849
  "setMetadata"
2664
2850
  ],
2665
2851
  "methodSignatures": [
@@ -2668,7 +2854,7 @@
2668
2854
  "returns": "Record<string>"
2669
2855
  },
2670
2856
  {
2671
- "name": "isActive",
2857
+ "name": "isTerminal",
2672
2858
  "returns": "boolean"
2673
2859
  },
2674
2860
  {
@@ -2685,88 +2871,56 @@
2685
2871
  "field": "tenantId"
2686
2872
  },
2687
2873
  "conflictColumns": [
2688
- "tenant_id",
2689
- "slug",
2690
- "context"
2874
+ "pipeline_id",
2875
+ "key"
2691
2876
  ],
2692
2877
  "surfaces": [
2693
2878
  {
2694
2879
  "kind": "api",
2695
- "name": "salesrepresentatives.list",
2880
+ "name": "pipelinestages.list",
2696
2881
  "operation": "list",
2697
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative",
2698
- "path": "/salesrepresentatives",
2882
+ "objectName": "@happyvertical/smrt-sales:PipelineStage",
2883
+ "path": "/pipelinestages",
2699
2884
  "method": "GET"
2700
2885
  },
2701
2886
  {
2702
2887
  "kind": "api",
2703
- "name": "salesrepresentatives.get",
2888
+ "name": "pipelinestages.get",
2704
2889
  "operation": "get",
2705
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative",
2706
- "path": "/salesrepresentatives/[id]",
2890
+ "objectName": "@happyvertical/smrt-sales:PipelineStage",
2891
+ "path": "/pipelinestages/[id]",
2707
2892
  "method": "GET"
2708
2893
  },
2709
2894
  {
2710
2895
  "kind": "api",
2711
- "name": "salesrepresentatives.create",
2896
+ "name": "pipelinestages.create",
2712
2897
  "operation": "create",
2713
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative",
2714
- "path": "/salesrepresentatives",
2898
+ "objectName": "@happyvertical/smrt-sales:PipelineStage",
2899
+ "path": "/pipelinestages",
2715
2900
  "method": "POST"
2716
2901
  },
2717
2902
  {
2718
2903
  "kind": "api",
2719
- "name": "salesrepresentatives.update",
2904
+ "name": "pipelinestages.update",
2720
2905
  "operation": "update",
2721
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative",
2722
- "path": "/salesrepresentatives/[id]",
2906
+ "objectName": "@happyvertical/smrt-sales:PipelineStage",
2907
+ "path": "/pipelinestages/[id]",
2723
2908
  "method": "PATCH"
2724
2909
  },
2725
- {
2726
- "kind": "cli",
2727
- "name": "salesrepresentative_list",
2728
- "operation": "list",
2729
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
2730
- },
2731
- {
2732
- "kind": "cli",
2733
- "name": "salesrepresentative_get",
2734
- "operation": "get",
2735
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
2736
- },
2737
- {
2738
- "kind": "cli",
2739
- "name": "salesrepresentative_create",
2740
- "operation": "create",
2741
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
2742
- },
2743
- {
2744
- "kind": "cli",
2745
- "name": "salesrepresentative_update",
2746
- "operation": "update",
2747
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
2748
- },
2749
- {
2750
- "kind": "cli",
2751
- "name": "salesrepresentative_delete",
2752
- "operation": "delete",
2753
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
2754
- },
2755
2910
  {
2756
2911
  "kind": "mcp",
2757
- "name": "salesrepresentative_list",
2912
+ "name": "pipelinestage_list",
2758
2913
  "operation": "list",
2759
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
2914
+ "objectName": "@happyvertical/smrt-sales:PipelineStage"
2760
2915
  },
2761
2916
  {
2762
2917
  "kind": "mcp",
2763
- "name": "salesrepresentative_get",
2918
+ "name": "pipelinestage_get",
2764
2919
  "operation": "get",
2765
- "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
2920
+ "objectName": "@happyvertical/smrt-sales:PipelineStage"
2766
2921
  }
2767
2922
  ],
2768
2923
  "relationshipFeatures": [
2769
- "crossPackageRef",
2770
2924
  "foreignKey",
2771
2925
  "uuidColumns"
2772
2926
  ],
@@ -2774,497 +2928,343 @@
2774
2928
  "risks": []
2775
2929
  },
2776
2930
  {
2777
- "name": "CommissionAdjustmentCollection",
2778
- "qualifiedName": "@happyvertical/smrt-sales:CommissionAdjustmentCollection",
2779
- "collection": "commissionadjustments",
2780
- "tableName": "commission_adjustment_collections",
2781
- "packageName": "@happyvertical/smrt-sales",
2782
- "extends": "SmrtCollection",
2783
- "fields": [],
2784
- "relationships": [],
2785
- "methods": [
2786
- "claimForPayout",
2787
- "findByCommission",
2788
- "findByPayout",
2789
- "findByPayouts",
2790
- "findUnsettledByEarner",
2791
- "sumUnsettledByEarner"
2792
- ],
2793
- "methodSignatures": [
2794
- {
2795
- "name": "claimForPayout",
2796
- "async": true,
2797
- "params": [
2798
- "adjustmentIds: string[]",
2799
- "payoutId: string"
2800
- ],
2801
- "returns": "Promise<CommissionAdjustment[]>"
2802
- },
2803
- {
2804
- "name": "findByCommission",
2805
- "async": true,
2806
- "params": [
2807
- "commissionId: string"
2808
- ],
2809
- "returns": "Promise<CommissionAdjustment[]>"
2810
- },
2811
- {
2812
- "name": "findByPayout",
2813
- "async": true,
2814
- "params": [
2815
- "payoutId: string"
2816
- ],
2817
- "returns": "Promise<CommissionAdjustment[]>"
2818
- },
2819
- {
2820
- "name": "findByPayouts",
2821
- "async": true,
2822
- "params": [
2823
- "payoutIds: string[]"
2824
- ],
2825
- "returns": "Promise<CommissionAdjustment[]>"
2826
- },
2827
- {
2828
- "name": "findUnsettledByEarner",
2829
- "async": true,
2830
- "params": [
2831
- "earnerId: string",
2832
- "currency: string"
2833
- ],
2834
- "returns": "Promise<CommissionAdjustment[]>"
2835
- },
2836
- {
2837
- "name": "sumUnsettledByEarner",
2838
- "async": true,
2839
- "params": [
2840
- "earnerId: string",
2841
- "currency: string"
2842
- ],
2843
- "returns": "Promise<number>"
2844
- }
2845
- ],
2846
- "surfaces": [],
2847
- "relationshipFeatures": [
2848
- "uuidColumns"
2849
- ],
2850
- "tags": [],
2851
- "risks": []
2852
- },
2853
- {
2854
- "name": "CommissionAdjustmentOperationCollection",
2855
- "qualifiedName": "@happyvertical/smrt-sales:CommissionAdjustmentOperationCollection",
2856
- "collection": "commissionadjustmentoperations",
2857
- "tableName": "commission_adjustment_operation_collections",
2858
- "packageName": "@happyvertical/smrt-sales",
2859
- "extends": "SmrtCollection",
2860
- "fields": [],
2861
- "relationships": [],
2862
- "methods": [
2863
- "claim",
2864
- "findByOperationId"
2865
- ],
2866
- "methodSignatures": [
2867
- {
2868
- "name": "claim",
2869
- "async": true,
2870
- "params": [
2871
- "input: ClaimCommissionAdjustmentOperationInput"
2872
- ],
2873
- "returns": "Promise<ClaimCommissionAdjustmentOperationResult>"
2874
- },
2875
- {
2876
- "name": "findByOperationId",
2877
- "async": true,
2878
- "params": [
2879
- "operationId: string"
2880
- ],
2881
- "returns": "Promise<CommissionAdjustmentOperation | null>"
2882
- }
2883
- ],
2884
- "surfaces": [],
2885
- "relationshipFeatures": [
2886
- "uuidColumns"
2887
- ],
2888
- "tags": [],
2889
- "risks": []
2890
- },
2891
- {
2892
- "name": "CommissionCollection",
2893
- "qualifiedName": "@happyvertical/smrt-sales:CommissionCollection",
2894
- "collection": "commissions",
2895
- "tableName": "commission_collections",
2931
+ "name": "SalesActivity",
2932
+ "qualifiedName": "@happyvertical/smrt-sales:SalesActivity",
2933
+ "collection": "salesactivities",
2934
+ "tableName": "sales_activities",
2896
2935
  "packageName": "@happyvertical/smrt-sales",
2897
- "extends": "SmrtCollection",
2898
- "fields": [],
2899
- "relationships": [],
2900
- "methods": [
2901
- "claimForPayout",
2902
- "findByDedupeKey",
2903
- "findByEarner",
2904
- "findByEvent",
2905
- "findByPayout",
2906
- "findByPayouts",
2907
- "findByStatus",
2908
- "findPayableUnsettled",
2909
- "sumPayableByEarner"
2910
- ],
2911
- "methodSignatures": [
2912
- {
2913
- "name": "claimForPayout",
2914
- "async": true,
2915
- "params": [
2916
- "commissionIds: string[]",
2917
- "payoutId: string"
2918
- ],
2919
- "returns": "Promise<Commission[]>"
2936
+ "extends": "SmrtObject",
2937
+ "fields": [
2938
+ {
2939
+ "name": "tenantId",
2940
+ "type": "text",
2941
+ "required": false,
2942
+ "columnType": "UUID"
2920
2943
  },
2921
2944
  {
2922
- "name": "findByDedupeKey",
2923
- "async": true,
2924
- "params": [
2925
- "dedupeKey: string"
2926
- ],
2927
- "returns": "Promise<Commission | null>"
2945
+ "name": "subjectKind",
2946
+ "type": "text",
2947
+ "required": false,
2948
+ "columnType": "TEXT",
2949
+ "default": "lead"
2928
2950
  },
2929
2951
  {
2930
- "name": "findByEarner",
2931
- "async": true,
2932
- "params": [
2933
- "earnerId: string"
2934
- ],
2935
- "returns": "Promise<Commission[]>"
2952
+ "name": "subjectId",
2953
+ "type": "text",
2954
+ "required": true,
2955
+ "columnType": "TEXT",
2956
+ "default": ""
2936
2957
  },
2937
2958
  {
2938
- "name": "findByEvent",
2939
- "async": true,
2940
- "params": [
2941
- "earningEventId: string"
2942
- ],
2943
- "returns": "Promise<Commission[]>"
2959
+ "name": "activityKind",
2960
+ "type": "text",
2961
+ "required": false,
2962
+ "columnType": "TEXT",
2963
+ "default": "note"
2944
2964
  },
2945
2965
  {
2946
- "name": "findByPayout",
2947
- "async": true,
2948
- "params": [
2949
- "payoutId: string"
2950
- ],
2951
- "returns": "Promise<Commission[]>"
2966
+ "name": "summary",
2967
+ "type": "text",
2968
+ "required": false,
2969
+ "columnType": "TEXT",
2970
+ "default": ""
2952
2971
  },
2953
2972
  {
2954
- "name": "findByPayouts",
2955
- "async": true,
2956
- "params": [
2957
- "payoutIds: string[]"
2958
- ],
2959
- "returns": "Promise<Commission[]>"
2973
+ "name": "dueAt",
2974
+ "type": "datetime",
2975
+ "required": false,
2976
+ "columnType": "TIMESTAMP"
2960
2977
  },
2961
2978
  {
2962
- "name": "findByStatus",
2963
- "async": true,
2964
- "params": [
2965
- "status: CommissionStatus"
2966
- ],
2967
- "returns": "Promise<Commission[]>"
2979
+ "name": "completedAt",
2980
+ "type": "datetime",
2981
+ "required": false,
2982
+ "columnType": "TIMESTAMP"
2968
2983
  },
2969
2984
  {
2970
- "name": "findPayableUnsettled",
2971
- "async": true,
2972
- "params": [
2973
- "earnerId: string",
2974
- "currency: string",
2975
- "scope?: object"
2976
- ],
2977
- "returns": "Promise<Commission[]>"
2985
+ "name": "actorProfileId",
2986
+ "type": "crossPackageRef",
2987
+ "required": false,
2988
+ "related": "@happyvertical/smrt-profiles:Profile",
2989
+ "columnType": "UUID"
2978
2990
  },
2979
2991
  {
2980
- "name": "sumPayableByEarner",
2981
- "async": true,
2982
- "params": [
2983
- "earnerId: string",
2984
- "currency: string"
2985
- ],
2986
- "returns": "Promise<number>"
2992
+ "name": "metadata",
2993
+ "type": "text",
2994
+ "required": false,
2995
+ "columnType": "TEXT",
2996
+ "default": "{}"
2987
2997
  }
2988
2998
  ],
2989
- "surfaces": [],
2990
- "relationshipFeatures": [
2991
- "uuidColumns"
2999
+ "relationships": [
3000
+ {
3001
+ "name": "actorProfileId",
3002
+ "type": "crossPackageRef",
3003
+ "required": false,
3004
+ "related": "@happyvertical/smrt-profiles:Profile",
3005
+ "columnType": "UUID"
3006
+ }
2992
3007
  ],
2993
- "tags": [],
2994
- "risks": []
2995
- },
2996
- {
2997
- "name": "CommissionPayoutCollection",
2998
- "qualifiedName": "@happyvertical/smrt-sales:CommissionPayoutCollection",
2999
- "collection": "commissionpayouts",
3000
- "tableName": "commission_payout_collections",
3001
- "packageName": "@happyvertical/smrt-sales",
3002
- "extends": "SmrtCollection",
3003
- "fields": [],
3004
- "relationships": [],
3005
3008
  "methods": [
3006
- "findByEarner",
3007
- "findByIdempotencyKey",
3008
- "findBySource",
3009
- "findByStatus",
3010
- "sumPaidByEarner"
3009
+ "getMetadata",
3010
+ "isOpenTask",
3011
+ "save",
3012
+ "setMetadata"
3011
3013
  ],
3012
3014
  "methodSignatures": [
3013
3015
  {
3014
- "name": "findByEarner",
3015
- "async": true,
3016
- "params": [
3017
- "earnerId: string"
3018
- ],
3019
- "returns": "Promise<CommissionPayout[]>"
3020
- },
3021
- {
3022
- "name": "findByIdempotencyKey",
3023
- "async": true,
3024
- "params": [
3025
- "idempotencyKey: string"
3026
- ],
3027
- "returns": "Promise<CommissionPayout | null>"
3016
+ "name": "getMetadata",
3017
+ "returns": "Record<string>"
3028
3018
  },
3029
3019
  {
3030
- "name": "findBySource",
3031
- "async": true,
3032
- "params": [
3033
- "sourceKind: string",
3034
- "sourceId: string",
3035
- "page: object"
3036
- ],
3037
- "returns": "Promise<CommissionPayout[]>"
3020
+ "name": "isOpenTask",
3021
+ "returns": "boolean"
3038
3022
  },
3039
3023
  {
3040
- "name": "findByStatus",
3024
+ "name": "save",
3041
3025
  "async": true,
3042
- "params": [
3043
- "status: CommissionPayoutStatus"
3044
- ],
3045
- "returns": "Promise<CommissionPayout[]>"
3026
+ "returns": "Promise"
3046
3027
  },
3047
3028
  {
3048
- "name": "sumPaidByEarner",
3049
- "async": true,
3029
+ "name": "setMetadata",
3050
3030
  "params": [
3051
- "earnerId: string",
3052
- "currency: string"
3031
+ "metadata: Record<string>"
3053
3032
  ],
3054
- "returns": "Promise<number>"
3033
+ "returns": "void"
3055
3034
  }
3056
3035
  ],
3057
- "surfaces": [],
3058
- "relationshipFeatures": [
3059
- "uuidColumns"
3060
- ],
3061
- "tags": [],
3062
- "risks": []
3063
- },
3064
- {
3065
- "name": "CommissionPlanCollection",
3066
- "qualifiedName": "@happyvertical/smrt-sales:CommissionPlanCollection",
3067
- "collection": "commissionplans",
3068
- "tableName": "commission_plan_collections",
3069
- "packageName": "@happyvertical/smrt-sales",
3070
- "extends": "SmrtCollection",
3071
- "fields": [],
3072
- "relationships": [],
3073
- "methods": [
3074
- "createAmendment",
3075
- "findByPlanKey",
3076
- "findByStatus",
3077
- "latestActiveByKey"
3036
+ "tenant": {
3037
+ "scoped": true,
3038
+ "mode": "optional",
3039
+ "field": "tenantId"
3040
+ },
3041
+ "conflictColumns": [
3042
+ "tenant_id",
3043
+ "slug",
3044
+ "context"
3078
3045
  ],
3079
- "methodSignatures": [
3046
+ "surfaces": [
3080
3047
  {
3081
- "name": "createAmendment",
3082
- "async": true,
3083
- "params": [
3084
- "planKey: string",
3085
- "changes?: CommissionPlanAmendmentChanges"
3086
- ],
3087
- "returns": "Promise<CommissionPlan>"
3048
+ "kind": "api",
3049
+ "name": "salesactivities.create",
3050
+ "operation": "create",
3051
+ "objectName": "@happyvertical/smrt-sales:SalesActivity",
3052
+ "path": "/salesactivities",
3053
+ "method": "POST"
3088
3054
  },
3089
3055
  {
3090
- "name": "findByPlanKey",
3091
- "async": true,
3092
- "params": [
3093
- "planKey: string"
3094
- ],
3095
- "returns": "Promise<CommissionPlan[]>"
3056
+ "kind": "api",
3057
+ "name": "salesactivities.list",
3058
+ "operation": "list",
3059
+ "objectName": "@happyvertical/smrt-sales:SalesActivity",
3060
+ "path": "/salesactivities",
3061
+ "method": "GET"
3096
3062
  },
3097
3063
  {
3098
- "name": "findByStatus",
3099
- "async": true,
3100
- "params": [
3101
- "status: CommissionPlanStatus"
3102
- ],
3103
- "returns": "Promise<CommissionPlan[]>"
3064
+ "kind": "api",
3065
+ "name": "salesactivities.get",
3066
+ "operation": "get",
3067
+ "objectName": "@happyvertical/smrt-sales:SalesActivity",
3068
+ "path": "/salesactivities/[id]",
3069
+ "method": "GET"
3104
3070
  },
3105
3071
  {
3106
- "name": "latestActiveByKey",
3107
- "async": true,
3108
- "params": [
3109
- "planKey: string",
3110
- "at?: Date",
3111
- "tenantId?: string | null"
3112
- ],
3113
- "returns": "Promise<CommissionPlan | null>"
3072
+ "kind": "mcp",
3073
+ "name": "salesactivity_list",
3074
+ "operation": "list",
3075
+ "objectName": "@happyvertical/smrt-sales:SalesActivity"
3076
+ },
3077
+ {
3078
+ "kind": "mcp",
3079
+ "name": "salesactivity_create",
3080
+ "operation": "create",
3081
+ "objectName": "@happyvertical/smrt-sales:SalesActivity"
3114
3082
  }
3115
3083
  ],
3116
- "surfaces": [],
3117
3084
  "relationshipFeatures": [
3085
+ "crossPackageRef",
3118
3086
  "uuidColumns"
3119
3087
  ],
3120
3088
  "tags": [],
3121
3089
  "risks": []
3122
3090
  },
3123
3091
  {
3124
- "name": "EarnerCollection",
3125
- "qualifiedName": "@happyvertical/smrt-sales:EarnerCollection",
3126
- "collection": "earners",
3127
- "tableName": "earner_collections",
3092
+ "name": "SalesRepresentative",
3093
+ "qualifiedName": "@happyvertical/smrt-sales:SalesRepresentative",
3094
+ "collection": "salesrepresentatives",
3095
+ "tableName": "sales_representatives",
3128
3096
  "packageName": "@happyvertical/smrt-sales",
3129
- "extends": "SmrtCollection",
3130
- "fields": [],
3131
- "relationships": [],
3132
- "methods": [
3133
- "findActive",
3134
- "findByProfile",
3135
- "findByStatus"
3136
- ],
3137
- "methodSignatures": [
3097
+ "extends": "SmrtObject",
3098
+ "fields": [
3138
3099
  {
3139
- "name": "findActive",
3140
- "async": true,
3141
- "returns": "Promise<Earner[]>"
3100
+ "name": "tenantId",
3101
+ "type": "text",
3102
+ "required": false,
3103
+ "columnType": "UUID"
3142
3104
  },
3143
3105
  {
3144
- "name": "findByProfile",
3145
- "async": true,
3146
- "params": [
3147
- "profileId: string"
3148
- ],
3149
- "returns": "Promise<Earner[]>"
3106
+ "name": "profileId",
3107
+ "type": "crossPackageRef",
3108
+ "required": false,
3109
+ "related": "@happyvertical/smrt-profiles:Profile",
3110
+ "columnType": "UUID"
3150
3111
  },
3151
3112
  {
3152
- "name": "findByStatus",
3153
- "async": true,
3154
- "params": [
3155
- "status: EarnerStatus"
3156
- ],
3157
- "returns": "Promise<Earner[]>"
3113
+ "name": "earnerId",
3114
+ "type": "foreignKey",
3115
+ "required": false,
3116
+ "related": "Earner",
3117
+ "columnType": "UUID"
3118
+ },
3119
+ {
3120
+ "name": "status",
3121
+ "type": "text",
3122
+ "required": false,
3123
+ "columnType": "TEXT",
3124
+ "default": "active"
3125
+ },
3126
+ {
3127
+ "name": "title",
3128
+ "type": "text",
3129
+ "required": false,
3130
+ "columnType": "TEXT",
3131
+ "default": ""
3132
+ },
3133
+ {
3134
+ "name": "metadata",
3135
+ "type": "text",
3136
+ "required": false,
3137
+ "columnType": "TEXT",
3138
+ "default": "{}"
3158
3139
  }
3159
3140
  ],
3160
- "surfaces": [],
3161
- "relationshipFeatures": [
3162
- "uuidColumns"
3141
+ "relationships": [
3142
+ {
3143
+ "name": "profileId",
3144
+ "type": "crossPackageRef",
3145
+ "required": false,
3146
+ "related": "@happyvertical/smrt-profiles:Profile",
3147
+ "columnType": "UUID"
3148
+ },
3149
+ {
3150
+ "name": "earnerId",
3151
+ "type": "foreignKey",
3152
+ "required": false,
3153
+ "related": "Earner",
3154
+ "columnType": "UUID"
3155
+ }
3163
3156
  ],
3164
- "tags": [],
3165
- "risks": []
3166
- },
3167
- {
3168
- "name": "EarnerSourceAttributionCollection",
3169
- "qualifiedName": "@happyvertical/smrt-sales:EarnerSourceAttributionCollection",
3170
- "collection": "earnersourceattributions",
3171
- "tableName": "earner_source_attribution_collections",
3172
- "packageName": "@happyvertical/smrt-sales",
3173
- "extends": "SmrtCollection",
3174
- "fields": [],
3175
- "relationships": [],
3176
3157
  "methods": [
3177
- "findByEarner",
3178
- "findBySource",
3179
- "findBySources"
3158
+ "getMetadata",
3159
+ "isActive",
3160
+ "setMetadata"
3180
3161
  ],
3181
3162
  "methodSignatures": [
3182
3163
  {
3183
- "name": "findByEarner",
3184
- "async": true,
3185
- "params": [
3186
- "earnerId: string"
3187
- ],
3188
- "returns": "Promise<EarnerSourceAttribution[]>"
3164
+ "name": "getMetadata",
3165
+ "returns": "Record<string>"
3189
3166
  },
3190
3167
  {
3191
- "name": "findBySource",
3192
- "async": true,
3193
- "params": [
3194
- "sourceKind: string",
3195
- "sourceId: string"
3196
- ],
3197
- "returns": "Promise<EarnerSourceAttribution[]>"
3168
+ "name": "isActive",
3169
+ "returns": "boolean"
3198
3170
  },
3199
3171
  {
3200
- "name": "findBySources",
3201
- "async": true,
3172
+ "name": "setMetadata",
3202
3173
  "params": [
3203
- "sourceKind: string",
3204
- "sourceIds: string[]"
3174
+ "metadata: Record<string>"
3205
3175
  ],
3206
- "returns": "Promise<EarnerSourceAttribution[]>"
3176
+ "returns": "void"
3207
3177
  }
3208
3178
  ],
3209
- "surfaces": [],
3210
- "relationshipFeatures": [
3211
- "uuidColumns"
3212
- ],
3213
- "tags": [],
3214
- "risks": []
3215
- },
3216
- {
3217
- "name": "EarningEventCollection",
3218
- "qualifiedName": "@happyvertical/smrt-sales:EarningEventCollection",
3219
- "collection": "earningevents",
3220
- "tableName": "earning_event_collections",
3221
- "packageName": "@happyvertical/smrt-sales",
3222
- "extends": "SmrtCollection",
3223
- "fields": [],
3224
- "relationships": [],
3225
- "methods": [
3226
- "findByDedupeKey",
3227
- "findByKind",
3228
- "findBySource",
3229
- "getOrCreateByDedupeKey"
3179
+ "tenant": {
3180
+ "scoped": true,
3181
+ "mode": "optional",
3182
+ "field": "tenantId"
3183
+ },
3184
+ "conflictColumns": [
3185
+ "tenant_id",
3186
+ "slug",
3187
+ "context"
3230
3188
  ],
3231
- "methodSignatures": [
3189
+ "surfaces": [
3232
3190
  {
3233
- "name": "findByDedupeKey",
3234
- "async": true,
3235
- "params": [
3236
- "dedupeKey: string"
3237
- ],
3238
- "returns": "Promise<EarningEvent | null>"
3191
+ "kind": "api",
3192
+ "name": "salesrepresentatives.list",
3193
+ "operation": "list",
3194
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative",
3195
+ "path": "/salesrepresentatives",
3196
+ "method": "GET"
3239
3197
  },
3240
3198
  {
3241
- "name": "findByKind",
3242
- "async": true,
3243
- "params": [
3244
- "eventKind: string"
3245
- ],
3246
- "returns": "Promise<EarningEvent[]>"
3199
+ "kind": "api",
3200
+ "name": "salesrepresentatives.get",
3201
+ "operation": "get",
3202
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative",
3203
+ "path": "/salesrepresentatives/[id]",
3204
+ "method": "GET"
3247
3205
  },
3248
3206
  {
3249
- "name": "findBySource",
3250
- "async": true,
3251
- "params": [
3252
- "sourceKind: string",
3253
- "sourceId: string"
3254
- ],
3255
- "returns": "Promise<EarningEvent[]>"
3207
+ "kind": "api",
3208
+ "name": "salesrepresentatives.create",
3209
+ "operation": "create",
3210
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative",
3211
+ "path": "/salesrepresentatives",
3212
+ "method": "POST"
3256
3213
  },
3257
3214
  {
3258
- "name": "getOrCreateByDedupeKey",
3259
- "async": true,
3260
- "params": [
3261
- "options: EarningEventOptions"
3262
- ],
3263
- "returns": "Promise<object>"
3215
+ "kind": "api",
3216
+ "name": "salesrepresentatives.update",
3217
+ "operation": "update",
3218
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative",
3219
+ "path": "/salesrepresentatives/[id]",
3220
+ "method": "PATCH"
3221
+ },
3222
+ {
3223
+ "kind": "cli",
3224
+ "name": "salesrepresentative_list",
3225
+ "operation": "list",
3226
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
3227
+ },
3228
+ {
3229
+ "kind": "cli",
3230
+ "name": "salesrepresentative_get",
3231
+ "operation": "get",
3232
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
3233
+ },
3234
+ {
3235
+ "kind": "cli",
3236
+ "name": "salesrepresentative_create",
3237
+ "operation": "create",
3238
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
3239
+ },
3240
+ {
3241
+ "kind": "cli",
3242
+ "name": "salesrepresentative_update",
3243
+ "operation": "update",
3244
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
3245
+ },
3246
+ {
3247
+ "kind": "cli",
3248
+ "name": "salesrepresentative_delete",
3249
+ "operation": "delete",
3250
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
3251
+ },
3252
+ {
3253
+ "kind": "mcp",
3254
+ "name": "salesrepresentative_list",
3255
+ "operation": "list",
3256
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
3257
+ },
3258
+ {
3259
+ "kind": "mcp",
3260
+ "name": "salesrepresentative_get",
3261
+ "operation": "get",
3262
+ "objectName": "@happyvertical/smrt-sales:SalesRepresentative"
3264
3263
  }
3265
3264
  ],
3266
- "surfaces": [],
3267
3265
  "relationshipFeatures": [
3266
+ "crossPackageRef",
3267
+ "foreignKey",
3268
3268
  "uuidColumns"
3269
3269
  ],
3270
3270
  "tags": [],