@happyvertical/smrt-projects 0.39.4 → 0.39.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/AGENTS.md +36 -1
  2. package/SERVICE_TIME_MIGRATION.md +23 -0
  3. package/dist/collections/DevelopmentRequestHistories.d.ts +7 -0
  4. package/dist/collections/DevelopmentRequestHistories.d.ts.map +1 -0
  5. package/dist/collections/DevelopmentRequests.d.ts +20 -0
  6. package/dist/collections/DevelopmentRequests.d.ts.map +1 -0
  7. package/dist/collections/ProjectIntegrationAudits.d.ts +7 -0
  8. package/dist/collections/ProjectIntegrationAudits.d.ts.map +1 -0
  9. package/dist/collections/ProjectIntegrations.d.ts +28 -0
  10. package/dist/collections/ProjectIntegrations.d.ts.map +1 -0
  11. package/dist/index.d.ts +13 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1673 -33
  14. package/dist/index.js.map +1 -1
  15. package/dist/managed-client.d.ts +13 -0
  16. package/dist/managed-client.d.ts.map +1 -0
  17. package/dist/manifest.json +4790 -1109
  18. package/dist/models/DevelopmentRequest.d.ts +35 -0
  19. package/dist/models/DevelopmentRequest.d.ts.map +1 -0
  20. package/dist/models/DevelopmentRequestHistory.d.ts +22 -0
  21. package/dist/models/DevelopmentRequestHistory.d.ts.map +1 -0
  22. package/dist/models/ProjectIntegration.d.ts +24 -0
  23. package/dist/models/ProjectIntegration.d.ts.map +1 -0
  24. package/dist/models/ProjectIntegrationAudit.d.ts +16 -0
  25. package/dist/models/ProjectIntegrationAudit.d.ts.map +1 -0
  26. package/dist/models/delivery-control-plane.d.ts +83 -0
  27. package/dist/models/delivery-control-plane.d.ts.map +1 -0
  28. package/dist/models/service-evidence.d.ts +79 -0
  29. package/dist/models/service-evidence.d.ts.map +1 -0
  30. package/dist/services/assistance-request-service.d.ts +45 -0
  31. package/dist/services/assistance-request-service.d.ts.map +1 -0
  32. package/dist/services/delivery-service.d.ts +55 -0
  33. package/dist/services/delivery-service.d.ts.map +1 -0
  34. package/dist/services/development-request-service.d.ts +61 -0
  35. package/dist/services/development-request-service.d.ts.map +1 -0
  36. package/dist/services/index.d.ts +6 -0
  37. package/dist/services/index.d.ts.map +1 -0
  38. package/dist/services/service-evidence-service.d.ts +48 -0
  39. package/dist/services/service-evidence-service.d.ts.map +1 -0
  40. package/dist/services/subscription-commercial-resolver.d.ts +17 -0
  41. package/dist/services/subscription-commercial-resolver.d.ts.map +1 -0
  42. package/dist/smrt-knowledge.json +1823 -148
  43. package/dist/svelte/AssistanceLauncher.svelte +96 -0
  44. package/dist/svelte/AssistanceLauncher.svelte.d.ts +12 -0
  45. package/dist/svelte/AssistanceLauncher.svelte.d.ts.map +1 -0
  46. package/dist/svelte/DeliveryStatus.svelte +71 -0
  47. package/dist/svelte/DeliveryStatus.svelte.d.ts +8 -0
  48. package/dist/svelte/DeliveryStatus.svelte.d.ts.map +1 -0
  49. package/dist/svelte/DevelopmentBoard.svelte +103 -0
  50. package/dist/svelte/DevelopmentBoard.svelte.d.ts +10 -0
  51. package/dist/svelte/DevelopmentBoard.svelte.d.ts.map +1 -0
  52. package/dist/svelte/DevelopmentRequestDetail.svelte +92 -0
  53. package/dist/svelte/DevelopmentRequestDetail.svelte.d.ts +9 -0
  54. package/dist/svelte/DevelopmentRequestDetail.svelte.d.ts.map +1 -0
  55. package/dist/svelte/PreviewApprovalPanel.svelte +63 -0
  56. package/dist/svelte/PreviewApprovalPanel.svelte.d.ts +10 -0
  57. package/dist/svelte/PreviewApprovalPanel.svelte.d.ts.map +1 -0
  58. package/dist/svelte/ServiceEvidenceList.svelte +103 -0
  59. package/dist/svelte/ServiceEvidenceList.svelte.d.ts +8 -0
  60. package/dist/svelte/ServiceEvidenceList.svelte.d.ts.map +1 -0
  61. package/dist/svelte/components/DevelopmentRequestForm.svelte +70 -0
  62. package/dist/svelte/components/DevelopmentRequestForm.svelte.d.ts +19 -0
  63. package/dist/svelte/components/DevelopmentRequestForm.svelte.d.ts.map +1 -0
  64. package/dist/svelte/components/DevelopmentRequestList.svelte +218 -0
  65. package/dist/svelte/components/DevelopmentRequestList.svelte.d.ts +22 -0
  66. package/dist/svelte/components/DevelopmentRequestList.svelte.d.ts.map +1 -0
  67. package/dist/svelte/components/__tests__/DeliverySurfaces.test.js +98 -0
  68. package/dist/svelte/components/__tests__/DevelopmentRequest.test.js +52 -0
  69. package/dist/svelte/delivery-types.d.ts +36 -0
  70. package/dist/svelte/delivery-types.d.ts.map +1 -0
  71. package/dist/svelte/delivery-types.js +1 -0
  72. package/dist/svelte/i18n.d.ts +30 -0
  73. package/dist/svelte/i18n.d.ts.map +1 -1
  74. package/dist/svelte/i18n.js +30 -0
  75. package/dist/svelte/index.d.ts +18 -1
  76. package/dist/svelte/index.d.ts.map +1 -1
  77. package/dist/svelte/index.js +18 -1
  78. package/dist/types.d.ts +79 -0
  79. package/dist/types.d.ts.map +1 -1
  80. package/dist/ui.d.ts.map +1 -1
  81. package/dist/ui.js +106 -10
  82. package/dist/ui.js.map +1 -1
  83. package/package.json +11 -9
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-07-12T01:27:24.912Z",
3
+ "generatedAt": "2026-07-12T16:58:32.624Z",
4
4
  "packageName": "@happyvertical/smrt-projects",
5
- "packageVersion": "0.39.4",
5
+ "packageVersion": "0.39.7",
6
6
  "sourceManifestPath": "dist/manifest.json",
7
7
  "agentDocPath": "AGENTS.md",
8
8
  "sourceHashes": {
9
- "manifest": "72d273e5e9ed1259ac8980095215b2b624ab3e24618bc8a98cf388a2f5aa7cf4",
10
- "packageJson": "9442b51eb3496840ae2f2835891b22c9154c85a9c40b6e75496465585ab78763",
11
- "agents": "31de38c962634d69c728bab8dff270448a49718fc36ee20b9cd12216cdbed95c"
9
+ "manifest": "ce2965acca3aa419ca36d4c10a2d3fe56d49451edacf7bcab54f71497a5196ac",
10
+ "packageJson": "0825b773510f0d79cc345c764ad508d1d9069ea15aaa48d04e2c761518e12b8e",
11
+ "agents": "413522a1eeb6062d2011e201074bf783cc501b21d07ca616aacc062db486fe7d"
12
12
  },
13
13
  "exports": [
14
14
  ".",
@@ -26,6 +26,7 @@
26
26
  "@happyvertical/smrt-config": "workspace:*",
27
27
  "@happyvertical/smrt-core": "workspace:*",
28
28
  "@happyvertical/smrt-prompts": "workspace:*",
29
+ "@happyvertical/smrt-subscriptions": "workspace:*",
29
30
  "@happyvertical/smrt-tenancy": "workspace:*",
30
31
  "@happyvertical/smrt-types": "workspace:*",
31
32
  "@happyvertical/smrt-ui": "workspace:*",
@@ -48,6 +49,7 @@
48
49
  "@happyvertical/smrt-config",
49
50
  "@happyvertical/smrt-core",
50
51
  "@happyvertical/smrt-prompts",
52
+ "@happyvertical/smrt-subscriptions",
51
53
  "@happyvertical/smrt-tenancy",
52
54
  "@happyvertical/smrt-types",
53
55
  "@happyvertical/smrt-ui",
@@ -64,6 +66,47 @@
64
66
  "tags": [],
65
67
  "risks": [],
66
68
  "objects": [
69
+ {
70
+ "name": "DevelopmentRequestHistoryCollection",
71
+ "qualifiedName": "@happyvertical/smrt-projects:DevelopmentRequestHistoryCollection",
72
+ "collection": "developmentrequesthistories",
73
+ "tableName": "development_request_histories",
74
+ "packageName": "@happyvertical/smrt-projects",
75
+ "extends": "SmrtCollection",
76
+ "fields": [],
77
+ "relationships": [],
78
+ "methods": [
79
+ "listForRequest"
80
+ ],
81
+ "surfaces": [],
82
+ "relationshipFeatures": [
83
+ "uuidColumns"
84
+ ],
85
+ "tags": [],
86
+ "risks": []
87
+ },
88
+ {
89
+ "name": "DevelopmentRequestCollection",
90
+ "qualifiedName": "@happyvertical/smrt-projects:DevelopmentRequestCollection",
91
+ "collection": "developmentrequests",
92
+ "tableName": "development_requests",
93
+ "packageName": "@happyvertical/smrt-projects",
94
+ "extends": "SmrtCollection",
95
+ "fields": [],
96
+ "relationships": [],
97
+ "methods": [
98
+ "createManaged",
99
+ "listByIntegrationRequester",
100
+ "listForProject",
101
+ "transitionStatus"
102
+ ],
103
+ "surfaces": [],
104
+ "relationshipFeatures": [
105
+ "uuidColumns"
106
+ ],
107
+ "tags": [],
108
+ "risks": []
109
+ },
67
110
  {
68
111
  "name": "IssueCollection",
69
112
  "qualifiedName": "@happyvertical/smrt-projects:IssueCollection",
@@ -94,6 +137,49 @@
94
137
  "tags": [],
95
138
  "risks": []
96
139
  },
140
+ {
141
+ "name": "ProjectIntegrationAuditCollection",
142
+ "qualifiedName": "@happyvertical/smrt-projects:ProjectIntegrationAuditCollection",
143
+ "collection": "projectintegrationaudits",
144
+ "tableName": "project_integration_audits",
145
+ "packageName": "@happyvertical/smrt-projects",
146
+ "extends": "SmrtCollection",
147
+ "fields": [],
148
+ "relationships": [],
149
+ "methods": [
150
+ "listForIntegration"
151
+ ],
152
+ "surfaces": [],
153
+ "relationshipFeatures": [
154
+ "uuidColumns"
155
+ ],
156
+ "tags": [],
157
+ "risks": []
158
+ },
159
+ {
160
+ "name": "ProjectIntegrationCollection",
161
+ "qualifiedName": "@happyvertical/smrt-projects:ProjectIntegrationCollection",
162
+ "collection": "projectintegrations",
163
+ "tableName": "project_integrations",
164
+ "packageName": "@happyvertical/smrt-projects",
165
+ "extends": "SmrtCollection",
166
+ "fields": [],
167
+ "relationships": [],
168
+ "methods": [
169
+ "authenticate",
170
+ "findActive",
171
+ "listForProject",
172
+ "provision",
173
+ "revoke",
174
+ "rotate"
175
+ ],
176
+ "surfaces": [],
177
+ "relationshipFeatures": [
178
+ "uuidColumns"
179
+ ],
180
+ "tags": [],
181
+ "risks": []
182
+ },
97
183
  {
98
184
  "name": "ProjectCollection",
99
185
  "qualifiedName": "@happyvertical/smrt-projects:ProjectCollection",
@@ -304,6 +390,180 @@
304
390
  "tags": [],
305
391
  "risks": []
306
392
  },
393
+ {
394
+ "name": "DevelopmentRequest",
395
+ "qualifiedName": "@happyvertical/smrt-projects:DevelopmentRequest",
396
+ "collection": "developmentrequests",
397
+ "tableName": "development_requests",
398
+ "packageName": "@happyvertical/smrt-projects",
399
+ "extends": "SmrtObject",
400
+ "fields": [
401
+ {
402
+ "name": "tenantId",
403
+ "type": "text",
404
+ "required": true,
405
+ "columnType": "UUID"
406
+ },
407
+ {
408
+ "name": "projectId",
409
+ "type": "text",
410
+ "required": false,
411
+ "columnType": "TEXT"
412
+ },
413
+ {
414
+ "name": "integrationId",
415
+ "type": "foreignKey",
416
+ "required": true,
417
+ "related": "ProjectIntegration",
418
+ "columnType": "UUID"
419
+ },
420
+ {
421
+ "name": "requesterId",
422
+ "type": "text",
423
+ "required": false,
424
+ "columnType": "TEXT"
425
+ },
426
+ {
427
+ "name": "participantId",
428
+ "type": "text",
429
+ "required": false,
430
+ "columnType": "TEXT"
431
+ },
432
+ {
433
+ "name": "type",
434
+ "type": "text",
435
+ "required": false,
436
+ "columnType": "TEXT"
437
+ },
438
+ {
439
+ "name": "description",
440
+ "type": "text",
441
+ "required": false,
442
+ "columnType": "TEXT"
443
+ },
444
+ {
445
+ "name": "evidence",
446
+ "type": "text",
447
+ "required": false,
448
+ "columnType": "TEXT"
449
+ },
450
+ {
451
+ "name": "visibility",
452
+ "type": "text",
453
+ "required": false,
454
+ "columnType": "TEXT"
455
+ },
456
+ {
457
+ "name": "origin",
458
+ "type": "text",
459
+ "required": false,
460
+ "columnType": "TEXT"
461
+ },
462
+ {
463
+ "name": "discussion",
464
+ "type": "text",
465
+ "required": false,
466
+ "columnType": "TEXT"
467
+ },
468
+ {
469
+ "name": "status",
470
+ "type": "text",
471
+ "required": false,
472
+ "columnType": "TEXT"
473
+ }
474
+ ],
475
+ "relationships": [
476
+ {
477
+ "name": "integrationId",
478
+ "type": "foreignKey",
479
+ "required": true,
480
+ "related": "ProjectIntegration",
481
+ "columnType": "UUID"
482
+ }
483
+ ],
484
+ "methods": [
485
+ "getEvidence",
486
+ "initialize",
487
+ "setEvidence"
488
+ ],
489
+ "surfaces": [],
490
+ "relationshipFeatures": [
491
+ "foreignKey",
492
+ "uuidColumns"
493
+ ],
494
+ "tags": [],
495
+ "risks": []
496
+ },
497
+ {
498
+ "name": "DevelopmentRequestHistory",
499
+ "qualifiedName": "@happyvertical/smrt-projects:DevelopmentRequestHistory",
500
+ "collection": "developmentrequesthistories",
501
+ "tableName": "development_request_histories",
502
+ "packageName": "@happyvertical/smrt-projects",
503
+ "extends": "SmrtObject",
504
+ "fields": [
505
+ {
506
+ "name": "tenantId",
507
+ "type": "text",
508
+ "required": true,
509
+ "columnType": "UUID"
510
+ },
511
+ {
512
+ "name": "requestId",
513
+ "type": "foreignKey",
514
+ "required": true,
515
+ "related": "DevelopmentRequest",
516
+ "columnType": "UUID"
517
+ },
518
+ {
519
+ "name": "fromStatus",
520
+ "type": "text",
521
+ "required": false,
522
+ "columnType": "TEXT"
523
+ },
524
+ {
525
+ "name": "toStatus",
526
+ "type": "text",
527
+ "required": false,
528
+ "columnType": "TEXT"
529
+ },
530
+ {
531
+ "name": "actorType",
532
+ "type": "text",
533
+ "required": false,
534
+ "columnType": "TEXT"
535
+ },
536
+ {
537
+ "name": "actorId",
538
+ "type": "text",
539
+ "required": false,
540
+ "columnType": "TEXT"
541
+ },
542
+ {
543
+ "name": "note",
544
+ "type": "text",
545
+ "required": false,
546
+ "columnType": "TEXT"
547
+ }
548
+ ],
549
+ "relationships": [
550
+ {
551
+ "name": "requestId",
552
+ "type": "foreignKey",
553
+ "required": true,
554
+ "related": "DevelopmentRequest",
555
+ "columnType": "UUID"
556
+ }
557
+ ],
558
+ "methods": [],
559
+ "surfaces": [],
560
+ "relationshipFeatures": [
561
+ "foreignKey",
562
+ "uuidColumns"
563
+ ],
564
+ "tags": [],
565
+ "risks": []
566
+ },
307
567
  {
308
568
  "name": "Issue",
309
569
  "qualifiedName": "@happyvertical/smrt-projects:Issue",
@@ -942,82 +1202,238 @@
942
1202
  "risks": []
943
1203
  },
944
1204
  {
945
- "name": "PullRequest",
946
- "qualifiedName": "@happyvertical/smrt-projects:PullRequest",
947
- "collection": "issues",
948
- "tableName": "issues",
1205
+ "name": "ProjectIntegration",
1206
+ "qualifiedName": "@happyvertical/smrt-projects:ProjectIntegration",
1207
+ "collection": "projectintegrations",
1208
+ "tableName": "project_integrations",
949
1209
  "packageName": "@happyvertical/smrt-projects",
950
- "extends": "Issue",
1210
+ "extends": "SmrtObject",
951
1211
  "fields": [
952
- {
953
- "name": "created_at",
954
- "type": "datetime",
955
- "required": false,
956
- "columnType": "TIMESTAMP"
957
- },
958
- {
959
- "name": "updated_at",
960
- "type": "datetime",
961
- "required": false,
962
- "columnType": "TIMESTAMP"
963
- },
964
1212
  {
965
1213
  "name": "tenantId",
966
1214
  "type": "text",
967
- "required": false,
968
- "columnType": "UUID"
969
- },
970
- {
971
- "name": "repositoryId",
972
- "type": "foreignKey",
973
1215
  "required": true,
974
- "related": "Repository",
975
1216
  "columnType": "UUID"
976
1217
  },
977
1218
  {
978
- "name": "number",
979
- "type": "integer",
980
- "required": false,
981
- "columnType": "INTEGER"
982
- },
983
- {
984
- "name": "nodeId",
1219
+ "name": "projectId",
985
1220
  "type": "text",
986
1221
  "required": false,
987
1222
  "columnType": "TEXT"
988
1223
  },
989
1224
  {
990
- "name": "title",
1225
+ "name": "name",
991
1226
  "type": "text",
992
1227
  "required": false,
993
1228
  "columnType": "TEXT"
994
1229
  },
995
1230
  {
996
- "name": "body",
1231
+ "name": "credentialHash",
997
1232
  "type": "text",
998
1233
  "required": false,
999
1234
  "columnType": "TEXT"
1000
1235
  },
1001
1236
  {
1002
- "name": "state",
1003
- "type": "text",
1237
+ "name": "capabilities",
1238
+ "type": "json",
1004
1239
  "required": false,
1005
- "columnType": "TEXT"
1240
+ "columnType": "JSON"
1006
1241
  },
1007
1242
  {
1008
- "name": "author",
1243
+ "name": "status",
1009
1244
  "type": "text",
1010
1245
  "required": false,
1011
1246
  "columnType": "TEXT"
1012
1247
  },
1013
1248
  {
1014
- "name": "labels",
1015
- "type": "json",
1249
+ "name": "revokedAt",
1250
+ "type": "datetime",
1016
1251
  "required": false,
1017
- "columnType": "JSON"
1252
+ "columnType": "TIMESTAMP"
1253
+ }
1254
+ ],
1255
+ "relationships": [],
1256
+ "methods": [
1257
+ "hasCapability",
1258
+ "isActive"
1259
+ ],
1260
+ "surfaces": [
1261
+ {
1262
+ "kind": "api",
1263
+ "name": "projectintegrations.list",
1264
+ "operation": "list",
1265
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration",
1266
+ "path": "/projectintegrations",
1267
+ "method": "GET"
1018
1268
  },
1019
1269
  {
1020
- "name": "assignees",
1270
+ "kind": "api",
1271
+ "name": "projectintegrations.get",
1272
+ "operation": "get",
1273
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration",
1274
+ "path": "/projectintegrations/[id]",
1275
+ "method": "GET"
1276
+ },
1277
+ {
1278
+ "kind": "cli",
1279
+ "name": "projectintegration_list",
1280
+ "operation": "list",
1281
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration"
1282
+ },
1283
+ {
1284
+ "kind": "cli",
1285
+ "name": "projectintegration_get",
1286
+ "operation": "get",
1287
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration"
1288
+ },
1289
+ {
1290
+ "kind": "mcp",
1291
+ "name": "projectintegration_list",
1292
+ "operation": "list",
1293
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration"
1294
+ },
1295
+ {
1296
+ "kind": "mcp",
1297
+ "name": "projectintegration_get",
1298
+ "operation": "get",
1299
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration"
1300
+ }
1301
+ ],
1302
+ "relationshipFeatures": [
1303
+ "uuidColumns"
1304
+ ],
1305
+ "tags": [],
1306
+ "risks": []
1307
+ },
1308
+ {
1309
+ "name": "ProjectIntegrationAudit",
1310
+ "qualifiedName": "@happyvertical/smrt-projects:ProjectIntegrationAudit",
1311
+ "collection": "projectintegrationaudits",
1312
+ "tableName": "project_integration_audits",
1313
+ "packageName": "@happyvertical/smrt-projects",
1314
+ "extends": "SmrtObject",
1315
+ "fields": [
1316
+ {
1317
+ "name": "tenantId",
1318
+ "type": "text",
1319
+ "required": true,
1320
+ "columnType": "UUID"
1321
+ },
1322
+ {
1323
+ "name": "integrationId",
1324
+ "type": "foreignKey",
1325
+ "required": true,
1326
+ "related": "ProjectIntegration",
1327
+ "columnType": "UUID"
1328
+ },
1329
+ {
1330
+ "name": "action",
1331
+ "type": "text",
1332
+ "required": false,
1333
+ "columnType": "TEXT"
1334
+ },
1335
+ {
1336
+ "name": "note",
1337
+ "type": "text",
1338
+ "required": false,
1339
+ "columnType": "TEXT"
1340
+ }
1341
+ ],
1342
+ "relationships": [
1343
+ {
1344
+ "name": "integrationId",
1345
+ "type": "foreignKey",
1346
+ "required": true,
1347
+ "related": "ProjectIntegration",
1348
+ "columnType": "UUID"
1349
+ }
1350
+ ],
1351
+ "methods": [],
1352
+ "surfaces": [],
1353
+ "relationshipFeatures": [
1354
+ "foreignKey",
1355
+ "uuidColumns"
1356
+ ],
1357
+ "tags": [],
1358
+ "risks": []
1359
+ },
1360
+ {
1361
+ "name": "PullRequest",
1362
+ "qualifiedName": "@happyvertical/smrt-projects:PullRequest",
1363
+ "collection": "issues",
1364
+ "tableName": "issues",
1365
+ "packageName": "@happyvertical/smrt-projects",
1366
+ "extends": "Issue",
1367
+ "fields": [
1368
+ {
1369
+ "name": "created_at",
1370
+ "type": "datetime",
1371
+ "required": false,
1372
+ "columnType": "TIMESTAMP"
1373
+ },
1374
+ {
1375
+ "name": "updated_at",
1376
+ "type": "datetime",
1377
+ "required": false,
1378
+ "columnType": "TIMESTAMP"
1379
+ },
1380
+ {
1381
+ "name": "tenantId",
1382
+ "type": "text",
1383
+ "required": false,
1384
+ "columnType": "UUID"
1385
+ },
1386
+ {
1387
+ "name": "repositoryId",
1388
+ "type": "foreignKey",
1389
+ "required": true,
1390
+ "related": "Repository",
1391
+ "columnType": "UUID"
1392
+ },
1393
+ {
1394
+ "name": "number",
1395
+ "type": "integer",
1396
+ "required": false,
1397
+ "columnType": "INTEGER"
1398
+ },
1399
+ {
1400
+ "name": "nodeId",
1401
+ "type": "text",
1402
+ "required": false,
1403
+ "columnType": "TEXT"
1404
+ },
1405
+ {
1406
+ "name": "title",
1407
+ "type": "text",
1408
+ "required": false,
1409
+ "columnType": "TEXT"
1410
+ },
1411
+ {
1412
+ "name": "body",
1413
+ "type": "text",
1414
+ "required": false,
1415
+ "columnType": "TEXT"
1416
+ },
1417
+ {
1418
+ "name": "state",
1419
+ "type": "text",
1420
+ "required": false,
1421
+ "columnType": "TEXT"
1422
+ },
1423
+ {
1424
+ "name": "author",
1425
+ "type": "text",
1426
+ "required": false,
1427
+ "columnType": "TEXT"
1428
+ },
1429
+ {
1430
+ "name": "labels",
1431
+ "type": "json",
1432
+ "required": false,
1433
+ "columnType": "JSON"
1434
+ },
1435
+ {
1436
+ "name": "assignees",
1021
1437
  "type": "json",
1022
1438
  "required": false,
1023
1439
  "columnType": "JSON"
@@ -1287,10 +1703,1109 @@
1287
1703
  "risks": []
1288
1704
  },
1289
1705
  {
1290
- "name": "Repository",
1291
- "qualifiedName": "@happyvertical/smrt-projects:Repository",
1292
- "collection": "repositories",
1293
- "tableName": "repositories",
1706
+ "name": "Repository",
1707
+ "qualifiedName": "@happyvertical/smrt-projects:Repository",
1708
+ "collection": "repositories",
1709
+ "tableName": "repositories",
1710
+ "packageName": "@happyvertical/smrt-projects",
1711
+ "extends": "SmrtObject",
1712
+ "fields": [
1713
+ {
1714
+ "name": "tenantId",
1715
+ "type": "text",
1716
+ "required": false,
1717
+ "columnType": "UUID"
1718
+ },
1719
+ {
1720
+ "name": "owner",
1721
+ "type": "text",
1722
+ "required": false,
1723
+ "columnType": "TEXT"
1724
+ },
1725
+ {
1726
+ "name": "name",
1727
+ "type": "text",
1728
+ "required": false,
1729
+ "columnType": "TEXT"
1730
+ },
1731
+ {
1732
+ "name": "fullName",
1733
+ "type": "text",
1734
+ "required": false,
1735
+ "columnType": "TEXT"
1736
+ },
1737
+ {
1738
+ "name": "description",
1739
+ "type": "text",
1740
+ "required": false,
1741
+ "columnType": "TEXT"
1742
+ },
1743
+ {
1744
+ "name": "defaultBranch",
1745
+ "type": "text",
1746
+ "required": false,
1747
+ "columnType": "TEXT"
1748
+ },
1749
+ {
1750
+ "name": "isPrivate",
1751
+ "type": "boolean",
1752
+ "required": false,
1753
+ "columnType": "BOOLEAN"
1754
+ },
1755
+ {
1756
+ "name": "providerType",
1757
+ "type": "text",
1758
+ "required": false,
1759
+ "columnType": "TEXT"
1760
+ },
1761
+ {
1762
+ "name": "baseUrl",
1763
+ "type": "text",
1764
+ "required": false,
1765
+ "columnType": "TEXT"
1766
+ },
1767
+ {
1768
+ "name": "tokenConfigKey",
1769
+ "type": "text",
1770
+ "required": false,
1771
+ "columnType": "TEXT"
1772
+ },
1773
+ {
1774
+ "name": "lastSyncedAt",
1775
+ "type": "datetime",
1776
+ "required": false,
1777
+ "columnType": "TIMESTAMP"
1778
+ }
1779
+ ],
1780
+ "relationships": [],
1781
+ "methods": [
1782
+ "clearClient",
1783
+ "createIssue",
1784
+ "createPullRequest",
1785
+ "getByFullName",
1786
+ "getClient",
1787
+ "getIssues",
1788
+ "getPullRequests",
1789
+ "hasOpenIssuesMatching",
1790
+ "summarizeActivity",
1791
+ "sync"
1792
+ ],
1793
+ "surfaces": [
1794
+ {
1795
+ "kind": "api",
1796
+ "name": "repositories.list",
1797
+ "operation": "list",
1798
+ "objectName": "@happyvertical/smrt-projects:Repository",
1799
+ "path": "/repositories",
1800
+ "method": "GET"
1801
+ },
1802
+ {
1803
+ "kind": "api",
1804
+ "name": "repositories.get",
1805
+ "operation": "get",
1806
+ "objectName": "@happyvertical/smrt-projects:Repository",
1807
+ "path": "/repositories/[id]",
1808
+ "method": "GET"
1809
+ },
1810
+ {
1811
+ "kind": "api",
1812
+ "name": "repositories.create",
1813
+ "operation": "create",
1814
+ "objectName": "@happyvertical/smrt-projects:Repository",
1815
+ "path": "/repositories",
1816
+ "method": "POST"
1817
+ },
1818
+ {
1819
+ "kind": "api",
1820
+ "name": "repositories.update",
1821
+ "operation": "update",
1822
+ "objectName": "@happyvertical/smrt-projects:Repository",
1823
+ "path": "/repositories/[id]",
1824
+ "method": "PATCH"
1825
+ },
1826
+ {
1827
+ "kind": "cli",
1828
+ "name": "repository_list",
1829
+ "operation": "list",
1830
+ "objectName": "@happyvertical/smrt-projects:Repository"
1831
+ },
1832
+ {
1833
+ "kind": "cli",
1834
+ "name": "repository_get",
1835
+ "operation": "get",
1836
+ "objectName": "@happyvertical/smrt-projects:Repository"
1837
+ },
1838
+ {
1839
+ "kind": "cli",
1840
+ "name": "repository_sync",
1841
+ "operation": "sync",
1842
+ "objectName": "@happyvertical/smrt-projects:Repository"
1843
+ },
1844
+ {
1845
+ "kind": "cli",
1846
+ "name": "repository_create",
1847
+ "operation": "create",
1848
+ "objectName": "@happyvertical/smrt-projects:Repository"
1849
+ },
1850
+ {
1851
+ "kind": "mcp",
1852
+ "name": "repository_list",
1853
+ "operation": "list",
1854
+ "objectName": "@happyvertical/smrt-projects:Repository"
1855
+ },
1856
+ {
1857
+ "kind": "mcp",
1858
+ "name": "repository_get",
1859
+ "operation": "get",
1860
+ "objectName": "@happyvertical/smrt-projects:Repository"
1861
+ },
1862
+ {
1863
+ "kind": "mcp",
1864
+ "name": "repository_sync",
1865
+ "operation": "sync",
1866
+ "objectName": "@happyvertical/smrt-projects:Repository"
1867
+ }
1868
+ ],
1869
+ "relationshipFeatures": [
1870
+ "uuidColumns"
1871
+ ],
1872
+ "tags": [],
1873
+ "risks": []
1874
+ },
1875
+ {
1876
+ "name": "DevelopmentRequestWorkLink",
1877
+ "qualifiedName": "@happyvertical/smrt-projects:DevelopmentRequestWorkLink",
1878
+ "collection": "developmentrequestworklinks",
1879
+ "tableName": "development_request_work_links",
1880
+ "packageName": "@happyvertical/smrt-projects",
1881
+ "extends": "SmrtObject",
1882
+ "fields": [
1883
+ {
1884
+ "name": "tenantId",
1885
+ "type": "text",
1886
+ "required": true,
1887
+ "columnType": "UUID"
1888
+ },
1889
+ {
1890
+ "name": "requestId",
1891
+ "type": "foreignKey",
1892
+ "required": true,
1893
+ "related": "DevelopmentRequest",
1894
+ "columnType": "UUID"
1895
+ },
1896
+ {
1897
+ "name": "workItemType",
1898
+ "type": "text",
1899
+ "required": false,
1900
+ "columnType": "TEXT"
1901
+ },
1902
+ {
1903
+ "name": "workItemId",
1904
+ "type": "text",
1905
+ "required": false,
1906
+ "columnType": "TEXT"
1907
+ },
1908
+ {
1909
+ "name": "canonicalStatus",
1910
+ "type": "text",
1911
+ "required": false,
1912
+ "columnType": "TEXT"
1913
+ },
1914
+ {
1915
+ "name": "providerRef",
1916
+ "type": "text",
1917
+ "required": false,
1918
+ "columnType": "TEXT"
1919
+ },
1920
+ {
1921
+ "name": "metadata",
1922
+ "type": "text",
1923
+ "required": false,
1924
+ "columnType": "TEXT"
1925
+ },
1926
+ {
1927
+ "name": "lastProjectedAt",
1928
+ "type": "datetime",
1929
+ "required": false,
1930
+ "columnType": "TIMESTAMP"
1931
+ }
1932
+ ],
1933
+ "relationships": [
1934
+ {
1935
+ "name": "requestId",
1936
+ "type": "foreignKey",
1937
+ "required": true,
1938
+ "related": "DevelopmentRequest",
1939
+ "columnType": "UUID"
1940
+ }
1941
+ ],
1942
+ "methods": [],
1943
+ "surfaces": [],
1944
+ "relationshipFeatures": [
1945
+ "foreignKey",
1946
+ "uuidColumns"
1947
+ ],
1948
+ "tags": [],
1949
+ "risks": []
1950
+ },
1951
+ {
1952
+ "name": "ProjectDeliveryEvent",
1953
+ "qualifiedName": "@happyvertical/smrt-projects:ProjectDeliveryEvent",
1954
+ "collection": "projectdeliveryevents",
1955
+ "tableName": "project_delivery_events",
1956
+ "packageName": "@happyvertical/smrt-projects",
1957
+ "extends": "SmrtObject",
1958
+ "fields": [
1959
+ {
1960
+ "name": "tenantId",
1961
+ "type": "text",
1962
+ "required": true,
1963
+ "columnType": "UUID"
1964
+ },
1965
+ {
1966
+ "name": "integrationId",
1967
+ "type": "foreignKey",
1968
+ "required": true,
1969
+ "related": "ProjectIntegration",
1970
+ "columnType": "UUID"
1971
+ },
1972
+ {
1973
+ "name": "requestId",
1974
+ "type": "foreignKey",
1975
+ "required": true,
1976
+ "related": "DevelopmentRequest",
1977
+ "columnType": "UUID"
1978
+ },
1979
+ {
1980
+ "name": "idempotencyKey",
1981
+ "type": "text",
1982
+ "required": false,
1983
+ "columnType": "TEXT"
1984
+ },
1985
+ {
1986
+ "name": "sequence",
1987
+ "type": "integer",
1988
+ "required": false,
1989
+ "columnType": "INTEGER"
1990
+ },
1991
+ {
1992
+ "name": "type",
1993
+ "type": "text",
1994
+ "required": false,
1995
+ "columnType": "TEXT"
1996
+ },
1997
+ {
1998
+ "name": "payload",
1999
+ "type": "text",
2000
+ "required": false,
2001
+ "columnType": "TEXT"
2002
+ },
2003
+ {
2004
+ "name": "occurredAt",
2005
+ "type": "datetime",
2006
+ "required": false,
2007
+ "columnType": "TIMESTAMP"
2008
+ },
2009
+ {
2010
+ "name": "deliveredAt",
2011
+ "type": "datetime",
2012
+ "required": false,
2013
+ "columnType": "TIMESTAMP"
2014
+ },
2015
+ {
2016
+ "name": "deliveryAttempts",
2017
+ "type": "integer",
2018
+ "required": false,
2019
+ "columnType": "INTEGER"
2020
+ },
2021
+ {
2022
+ "name": "lastDeliveryError",
2023
+ "type": "text",
2024
+ "required": false,
2025
+ "columnType": "TEXT"
2026
+ }
2027
+ ],
2028
+ "relationships": [
2029
+ {
2030
+ "name": "integrationId",
2031
+ "type": "foreignKey",
2032
+ "required": true,
2033
+ "related": "ProjectIntegration",
2034
+ "columnType": "UUID"
2035
+ },
2036
+ {
2037
+ "name": "requestId",
2038
+ "type": "foreignKey",
2039
+ "required": true,
2040
+ "related": "DevelopmentRequest",
2041
+ "columnType": "UUID"
2042
+ }
2043
+ ],
2044
+ "methods": [],
2045
+ "surfaces": [],
2046
+ "relationshipFeatures": [
2047
+ "foreignKey",
2048
+ "uuidColumns"
2049
+ ],
2050
+ "tags": [],
2051
+ "risks": []
2052
+ },
2053
+ {
2054
+ "name": "PreviewApproval",
2055
+ "qualifiedName": "@happyvertical/smrt-projects:PreviewApproval",
2056
+ "collection": "previewapprovals",
2057
+ "tableName": "preview_approvals",
2058
+ "packageName": "@happyvertical/smrt-projects",
2059
+ "extends": "SmrtObject",
2060
+ "fields": [
2061
+ {
2062
+ "name": "tenantId",
2063
+ "type": "text",
2064
+ "required": true,
2065
+ "columnType": "UUID"
2066
+ },
2067
+ {
2068
+ "name": "requestId",
2069
+ "type": "foreignKey",
2070
+ "required": true,
2071
+ "related": "DevelopmentRequest",
2072
+ "columnType": "UUID"
2073
+ },
2074
+ {
2075
+ "name": "previewId",
2076
+ "type": "text",
2077
+ "required": false,
2078
+ "columnType": "TEXT"
2079
+ },
2080
+ {
2081
+ "name": "previewUrl",
2082
+ "type": "text",
2083
+ "required": false,
2084
+ "columnType": "TEXT"
2085
+ },
2086
+ {
2087
+ "name": "status",
2088
+ "type": "text",
2089
+ "required": false,
2090
+ "columnType": "TEXT"
2091
+ },
2092
+ {
2093
+ "name": "decidedByRef",
2094
+ "type": "text",
2095
+ "required": false,
2096
+ "columnType": "TEXT"
2097
+ },
2098
+ {
2099
+ "name": "reason",
2100
+ "type": "text",
2101
+ "required": false,
2102
+ "columnType": "TEXT"
2103
+ },
2104
+ {
2105
+ "name": "createdAt",
2106
+ "type": "datetime",
2107
+ "required": false,
2108
+ "columnType": "TIMESTAMP"
2109
+ },
2110
+ {
2111
+ "name": "decidedAt",
2112
+ "type": "datetime",
2113
+ "required": false,
2114
+ "columnType": "TIMESTAMP"
2115
+ },
2116
+ {
2117
+ "name": "staleAt",
2118
+ "type": "datetime",
2119
+ "required": false,
2120
+ "columnType": "TIMESTAMP"
2121
+ }
2122
+ ],
2123
+ "relationships": [
2124
+ {
2125
+ "name": "requestId",
2126
+ "type": "foreignKey",
2127
+ "required": true,
2128
+ "related": "DevelopmentRequest",
2129
+ "columnType": "UUID"
2130
+ }
2131
+ ],
2132
+ "methods": [],
2133
+ "surfaces": [],
2134
+ "relationshipFeatures": [
2135
+ "foreignKey",
2136
+ "uuidColumns"
2137
+ ],
2138
+ "tags": [],
2139
+ "risks": []
2140
+ },
2141
+ {
2142
+ "name": "AssistanceRequest",
2143
+ "qualifiedName": "@happyvertical/smrt-projects:AssistanceRequest",
2144
+ "collection": "assistancerequests",
2145
+ "tableName": "assistance_requests",
2146
+ "packageName": "@happyvertical/smrt-projects",
2147
+ "extends": "SmrtObject",
2148
+ "fields": [
2149
+ {
2150
+ "name": "tenantId",
2151
+ "type": "text",
2152
+ "required": true,
2153
+ "columnType": "UUID"
2154
+ },
2155
+ {
2156
+ "name": "integrationId",
2157
+ "type": "foreignKey",
2158
+ "required": true,
2159
+ "related": "ProjectIntegration",
2160
+ "columnType": "UUID"
2161
+ },
2162
+ {
2163
+ "name": "requesterId",
2164
+ "type": "text",
2165
+ "required": false,
2166
+ "columnType": "TEXT"
2167
+ },
2168
+ {
2169
+ "name": "subject",
2170
+ "type": "text",
2171
+ "required": false,
2172
+ "columnType": "TEXT"
2173
+ },
2174
+ {
2175
+ "name": "applicationContext",
2176
+ "type": "text",
2177
+ "required": false,
2178
+ "columnType": "TEXT"
2179
+ },
2180
+ {
2181
+ "name": "conversation",
2182
+ "type": "text",
2183
+ "required": false,
2184
+ "columnType": "TEXT"
2185
+ },
2186
+ {
2187
+ "name": "evidence",
2188
+ "type": "text",
2189
+ "required": false,
2190
+ "columnType": "TEXT"
2191
+ },
2192
+ {
2193
+ "name": "classification",
2194
+ "type": "text",
2195
+ "required": false,
2196
+ "columnType": "TEXT"
2197
+ },
2198
+ {
2199
+ "name": "supportCaseId",
2200
+ "type": "text",
2201
+ "required": false,
2202
+ "columnType": "TEXT"
2203
+ },
2204
+ {
2205
+ "name": "developmentRequestId",
2206
+ "type": "text",
2207
+ "required": false,
2208
+ "columnType": "TEXT"
2209
+ },
2210
+ {
2211
+ "name": "deliveryHandoffLinkedAt",
2212
+ "type": "datetime",
2213
+ "required": false,
2214
+ "columnType": "TIMESTAMP"
2215
+ },
2216
+ {
2217
+ "name": "createdAt",
2218
+ "type": "datetime",
2219
+ "required": false,
2220
+ "columnType": "TIMESTAMP"
2221
+ }
2222
+ ],
2223
+ "relationships": [
2224
+ {
2225
+ "name": "integrationId",
2226
+ "type": "foreignKey",
2227
+ "required": true,
2228
+ "related": "ProjectIntegration",
2229
+ "columnType": "UUID"
2230
+ }
2231
+ ],
2232
+ "methods": [],
2233
+ "surfaces": [],
2234
+ "relationshipFeatures": [
2235
+ "foreignKey",
2236
+ "uuidColumns"
2237
+ ],
2238
+ "tags": [],
2239
+ "risks": []
2240
+ },
2241
+ {
2242
+ "name": "AssistanceRequestEvent",
2243
+ "qualifiedName": "@happyvertical/smrt-projects:AssistanceRequestEvent",
2244
+ "collection": "assistancerequestevents",
2245
+ "tableName": "assistance_request_events",
2246
+ "packageName": "@happyvertical/smrt-projects",
2247
+ "extends": "SmrtObject",
2248
+ "fields": [
2249
+ {
2250
+ "name": "tenantId",
2251
+ "type": "text",
2252
+ "required": true,
2253
+ "columnType": "UUID"
2254
+ },
2255
+ {
2256
+ "name": "assistanceRequestId",
2257
+ "type": "foreignKey",
2258
+ "required": true,
2259
+ "related": "AssistanceRequest",
2260
+ "columnType": "UUID"
2261
+ },
2262
+ {
2263
+ "name": "priorClassification",
2264
+ "type": "text",
2265
+ "required": false,
2266
+ "columnType": "TEXT"
2267
+ },
2268
+ {
2269
+ "name": "resultingClassification",
2270
+ "type": "text",
2271
+ "required": false,
2272
+ "columnType": "TEXT"
2273
+ },
2274
+ {
2275
+ "name": "actorRef",
2276
+ "type": "text",
2277
+ "required": false,
2278
+ "columnType": "TEXT"
2279
+ },
2280
+ {
2281
+ "name": "reason",
2282
+ "type": "text",
2283
+ "required": false,
2284
+ "columnType": "TEXT"
2285
+ },
2286
+ {
2287
+ "name": "resultingLinks",
2288
+ "type": "text",
2289
+ "required": false,
2290
+ "columnType": "TEXT"
2291
+ },
2292
+ {
2293
+ "name": "occurredAt",
2294
+ "type": "datetime",
2295
+ "required": false,
2296
+ "columnType": "TIMESTAMP"
2297
+ }
2298
+ ],
2299
+ "relationships": [
2300
+ {
2301
+ "name": "assistanceRequestId",
2302
+ "type": "foreignKey",
2303
+ "required": true,
2304
+ "related": "AssistanceRequest",
2305
+ "columnType": "UUID"
2306
+ }
2307
+ ],
2308
+ "methods": [],
2309
+ "surfaces": [],
2310
+ "relationshipFeatures": [
2311
+ "foreignKey",
2312
+ "uuidColumns"
2313
+ ],
2314
+ "tags": [],
2315
+ "risks": []
2316
+ },
2317
+ {
2318
+ "name": "DevelopmentRequestWorkLinkCollection",
2319
+ "qualifiedName": "@happyvertical/smrt-projects:DevelopmentRequestWorkLinkCollection",
2320
+ "collection": "developmentrequestworklinks",
2321
+ "tableName": "development_request_work_links",
2322
+ "packageName": "@happyvertical/smrt-projects",
2323
+ "extends": "SmrtCollection",
2324
+ "fields": [],
2325
+ "relationships": [],
2326
+ "methods": [],
2327
+ "surfaces": [],
2328
+ "relationshipFeatures": [
2329
+ "uuidColumns"
2330
+ ],
2331
+ "tags": [],
2332
+ "risks": []
2333
+ },
2334
+ {
2335
+ "name": "ProjectDeliveryEventCollection",
2336
+ "qualifiedName": "@happyvertical/smrt-projects:ProjectDeliveryEventCollection",
2337
+ "collection": "projectdeliveryevents",
2338
+ "tableName": "project_delivery_events",
2339
+ "packageName": "@happyvertical/smrt-projects",
2340
+ "extends": "SmrtCollection",
2341
+ "fields": [],
2342
+ "relationships": [],
2343
+ "methods": [],
2344
+ "surfaces": [],
2345
+ "relationshipFeatures": [
2346
+ "uuidColumns"
2347
+ ],
2348
+ "tags": [],
2349
+ "risks": []
2350
+ },
2351
+ {
2352
+ "name": "PreviewApprovalCollection",
2353
+ "qualifiedName": "@happyvertical/smrt-projects:PreviewApprovalCollection",
2354
+ "collection": "previewapprovals",
2355
+ "tableName": "preview_approvals",
2356
+ "packageName": "@happyvertical/smrt-projects",
2357
+ "extends": "SmrtCollection",
2358
+ "fields": [],
2359
+ "relationships": [],
2360
+ "methods": [],
2361
+ "surfaces": [],
2362
+ "relationshipFeatures": [
2363
+ "uuidColumns"
2364
+ ],
2365
+ "tags": [],
2366
+ "risks": []
2367
+ },
2368
+ {
2369
+ "name": "AssistanceRequestCollection",
2370
+ "qualifiedName": "@happyvertical/smrt-projects:AssistanceRequestCollection",
2371
+ "collection": "assistancerequests",
2372
+ "tableName": "assistance_requests",
2373
+ "packageName": "@happyvertical/smrt-projects",
2374
+ "extends": "SmrtCollection",
2375
+ "fields": [],
2376
+ "relationships": [],
2377
+ "methods": [],
2378
+ "surfaces": [],
2379
+ "relationshipFeatures": [
2380
+ "uuidColumns"
2381
+ ],
2382
+ "tags": [],
2383
+ "risks": []
2384
+ },
2385
+ {
2386
+ "name": "AssistanceRequestEventCollection",
2387
+ "qualifiedName": "@happyvertical/smrt-projects:AssistanceRequestEventCollection",
2388
+ "collection": "assistancerequestevents",
2389
+ "tableName": "assistance_request_events",
2390
+ "packageName": "@happyvertical/smrt-projects",
2391
+ "extends": "SmrtCollection",
2392
+ "fields": [],
2393
+ "relationships": [],
2394
+ "methods": [],
2395
+ "surfaces": [],
2396
+ "relationshipFeatures": [
2397
+ "uuidColumns"
2398
+ ],
2399
+ "tags": [],
2400
+ "risks": []
2401
+ },
2402
+ {
2403
+ "name": "ServiceTimeEntry",
2404
+ "qualifiedName": "@happyvertical/smrt-projects:ServiceTimeEntry",
2405
+ "collection": "servicetimeentries",
2406
+ "tableName": "service_time_entries",
2407
+ "packageName": "@happyvertical/smrt-projects",
2408
+ "extends": "SmrtObject",
2409
+ "fields": [
2410
+ {
2411
+ "name": "tenantId",
2412
+ "type": "text",
2413
+ "required": false,
2414
+ "columnType": "UUID"
2415
+ },
2416
+ {
2417
+ "name": "caseId",
2418
+ "type": "crossPackageRef",
2419
+ "required": false,
2420
+ "related": "@happyvertical/smrt-support:SupportCase",
2421
+ "columnType": "UUID"
2422
+ },
2423
+ {
2424
+ "name": "workRefType",
2425
+ "type": "text",
2426
+ "required": false,
2427
+ "columnType": "TEXT"
2428
+ },
2429
+ {
2430
+ "name": "workRefId",
2431
+ "type": "text",
2432
+ "required": false,
2433
+ "columnType": "TEXT"
2434
+ },
2435
+ {
2436
+ "name": "specialistId",
2437
+ "type": "crossPackageRef",
2438
+ "required": false,
2439
+ "related": "@happyvertical/smrt-support:SupportSpecialist",
2440
+ "columnType": "UUID"
2441
+ },
2442
+ {
2443
+ "name": "participantKind",
2444
+ "type": "text",
2445
+ "required": false,
2446
+ "columnType": "TEXT"
2447
+ },
2448
+ {
2449
+ "name": "participantProfileId",
2450
+ "type": "crossPackageRef",
2451
+ "required": false,
2452
+ "related": "@happyvertical/smrt-profiles:Profile",
2453
+ "columnType": "UUID"
2454
+ },
2455
+ {
2456
+ "name": "agentRef",
2457
+ "type": "text",
2458
+ "required": false,
2459
+ "columnType": "TEXT"
2460
+ },
2461
+ {
2462
+ "name": "source",
2463
+ "type": "text",
2464
+ "required": false,
2465
+ "columnType": "TEXT"
2466
+ },
2467
+ {
2468
+ "name": "description",
2469
+ "type": "text",
2470
+ "required": false,
2471
+ "columnType": "TEXT"
2472
+ },
2473
+ {
2474
+ "name": "startedAt",
2475
+ "type": "datetime",
2476
+ "required": false,
2477
+ "columnType": "TIMESTAMP"
2478
+ },
2479
+ {
2480
+ "name": "endedAt",
2481
+ "type": "datetime",
2482
+ "required": false,
2483
+ "columnType": "TIMESTAMP"
2484
+ },
2485
+ {
2486
+ "name": "durationSeconds",
2487
+ "type": "integer",
2488
+ "required": false,
2489
+ "columnType": "INTEGER"
2490
+ },
2491
+ {
2492
+ "name": "evidence",
2493
+ "type": "text",
2494
+ "required": false,
2495
+ "columnType": "TEXT"
2496
+ },
2497
+ {
2498
+ "name": "status",
2499
+ "type": "text",
2500
+ "required": false,
2501
+ "columnType": "TEXT"
2502
+ },
2503
+ {
2504
+ "name": "submittedAt",
2505
+ "type": "datetime",
2506
+ "required": false,
2507
+ "columnType": "TIMESTAMP"
2508
+ },
2509
+ {
2510
+ "name": "submittedByProfileId",
2511
+ "type": "crossPackageRef",
2512
+ "required": false,
2513
+ "related": "@happyvertical/smrt-profiles:Profile",
2514
+ "columnType": "UUID"
2515
+ },
2516
+ {
2517
+ "name": "approvedAt",
2518
+ "type": "datetime",
2519
+ "required": false,
2520
+ "columnType": "TIMESTAMP"
2521
+ },
2522
+ {
2523
+ "name": "approvedByProfileId",
2524
+ "type": "crossPackageRef",
2525
+ "required": false,
2526
+ "related": "@happyvertical/smrt-profiles:Profile",
2527
+ "columnType": "UUID"
2528
+ },
2529
+ {
2530
+ "name": "approvalPath",
2531
+ "type": "text",
2532
+ "required": false,
2533
+ "columnType": "TEXT"
2534
+ },
2535
+ {
2536
+ "name": "rejectedAt",
2537
+ "type": "datetime",
2538
+ "required": false,
2539
+ "columnType": "TIMESTAMP"
2540
+ },
2541
+ {
2542
+ "name": "rejectedByProfileId",
2543
+ "type": "crossPackageRef",
2544
+ "required": false,
2545
+ "related": "@happyvertical/smrt-profiles:Profile",
2546
+ "columnType": "UUID"
2547
+ },
2548
+ {
2549
+ "name": "rejectionReason",
2550
+ "type": "text",
2551
+ "required": false,
2552
+ "columnType": "TEXT"
2553
+ },
2554
+ {
2555
+ "name": "correctionOfId",
2556
+ "type": "foreignKey",
2557
+ "required": false,
2558
+ "related": "ServiceTimeEntry",
2559
+ "columnType": "UUID"
2560
+ },
2561
+ {
2562
+ "name": "metadata",
2563
+ "type": "text",
2564
+ "required": false,
2565
+ "columnType": "TEXT"
2566
+ }
2567
+ ],
2568
+ "relationships": [
2569
+ {
2570
+ "name": "caseId",
2571
+ "type": "crossPackageRef",
2572
+ "required": false,
2573
+ "related": "@happyvertical/smrt-support:SupportCase",
2574
+ "columnType": "UUID"
2575
+ },
2576
+ {
2577
+ "name": "specialistId",
2578
+ "type": "crossPackageRef",
2579
+ "required": false,
2580
+ "related": "@happyvertical/smrt-support:SupportSpecialist",
2581
+ "columnType": "UUID"
2582
+ },
2583
+ {
2584
+ "name": "participantProfileId",
2585
+ "type": "crossPackageRef",
2586
+ "required": false,
2587
+ "related": "@happyvertical/smrt-profiles:Profile",
2588
+ "columnType": "UUID"
2589
+ },
2590
+ {
2591
+ "name": "submittedByProfileId",
2592
+ "type": "crossPackageRef",
2593
+ "required": false,
2594
+ "related": "@happyvertical/smrt-profiles:Profile",
2595
+ "columnType": "UUID"
2596
+ },
2597
+ {
2598
+ "name": "approvedByProfileId",
2599
+ "type": "crossPackageRef",
2600
+ "required": false,
2601
+ "related": "@happyvertical/smrt-profiles:Profile",
2602
+ "columnType": "UUID"
2603
+ },
2604
+ {
2605
+ "name": "rejectedByProfileId",
2606
+ "type": "crossPackageRef",
2607
+ "required": false,
2608
+ "related": "@happyvertical/smrt-profiles:Profile",
2609
+ "columnType": "UUID"
2610
+ },
2611
+ {
2612
+ "name": "correctionOfId",
2613
+ "type": "foreignKey",
2614
+ "required": false,
2615
+ "related": "ServiceTimeEntry",
2616
+ "columnType": "UUID"
2617
+ }
2618
+ ],
2619
+ "methods": [
2620
+ "durationHours",
2621
+ "getEvidence",
2622
+ "getMetadata",
2623
+ "initialize",
2624
+ "save",
2625
+ "setEvidence",
2626
+ "setMetadata"
2627
+ ],
2628
+ "surfaces": [
2629
+ {
2630
+ "kind": "api",
2631
+ "name": "servicetimeentries.list",
2632
+ "operation": "list",
2633
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry",
2634
+ "path": "/servicetimeentries",
2635
+ "method": "GET"
2636
+ },
2637
+ {
2638
+ "kind": "api",
2639
+ "name": "servicetimeentries.get",
2640
+ "operation": "get",
2641
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry",
2642
+ "path": "/servicetimeentries/[id]",
2643
+ "method": "GET"
2644
+ },
2645
+ {
2646
+ "kind": "cli",
2647
+ "name": "servicetimeentry_list",
2648
+ "operation": "list",
2649
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry"
2650
+ },
2651
+ {
2652
+ "kind": "cli",
2653
+ "name": "servicetimeentry_get",
2654
+ "operation": "get",
2655
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry"
2656
+ },
2657
+ {
2658
+ "kind": "mcp",
2659
+ "name": "servicetimeentry_list",
2660
+ "operation": "list",
2661
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry"
2662
+ },
2663
+ {
2664
+ "kind": "mcp",
2665
+ "name": "servicetimeentry_get",
2666
+ "operation": "get",
2667
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry"
2668
+ }
2669
+ ],
2670
+ "relationshipFeatures": [
2671
+ "crossPackageRef",
2672
+ "foreignKey",
2673
+ "uuidColumns"
2674
+ ],
2675
+ "tags": [],
2676
+ "risks": []
2677
+ },
2678
+ {
2679
+ "name": "ServiceChargeSnapshot",
2680
+ "qualifiedName": "@happyvertical/smrt-projects:ServiceChargeSnapshot",
2681
+ "collection": "servicechargesnapshots",
2682
+ "tableName": "service_charge_snapshots",
2683
+ "packageName": "@happyvertical/smrt-projects",
2684
+ "extends": "SmrtObject",
2685
+ "fields": [
2686
+ {
2687
+ "name": "tenantId",
2688
+ "type": "text",
2689
+ "required": false,
2690
+ "columnType": "UUID"
2691
+ },
2692
+ {
2693
+ "name": "timeEntryId",
2694
+ "type": "foreignKey",
2695
+ "required": true,
2696
+ "related": "ServiceTimeEntry",
2697
+ "columnType": "UUID"
2698
+ },
2699
+ {
2700
+ "name": "amount",
2701
+ "type": "decimal",
2702
+ "required": false,
2703
+ "columnType": "REAL"
2704
+ },
2705
+ {
2706
+ "name": "currency",
2707
+ "type": "text",
2708
+ "required": false,
2709
+ "columnType": "TEXT"
2710
+ },
2711
+ {
2712
+ "name": "pricingVersion",
2713
+ "type": "text",
2714
+ "required": false,
2715
+ "columnType": "TEXT"
2716
+ },
2717
+ {
2718
+ "name": "strategy",
2719
+ "type": "text",
2720
+ "required": false,
2721
+ "columnType": "TEXT"
2722
+ },
2723
+ {
2724
+ "name": "rateSnapshot",
2725
+ "type": "text",
2726
+ "required": false,
2727
+ "columnType": "TEXT"
2728
+ },
2729
+ {
2730
+ "name": "sourceChargeRef",
2731
+ "type": "text",
2732
+ "required": false,
2733
+ "columnType": "TEXT"
2734
+ },
2735
+ {
2736
+ "name": "createdAt",
2737
+ "type": "datetime",
2738
+ "required": false,
2739
+ "columnType": "TIMESTAMP"
2740
+ }
2741
+ ],
2742
+ "relationships": [
2743
+ {
2744
+ "name": "timeEntryId",
2745
+ "type": "foreignKey",
2746
+ "required": true,
2747
+ "related": "ServiceTimeEntry",
2748
+ "columnType": "UUID"
2749
+ }
2750
+ ],
2751
+ "methods": [
2752
+ "initialize",
2753
+ "save"
2754
+ ],
2755
+ "surfaces": [
2756
+ {
2757
+ "kind": "api",
2758
+ "name": "servicechargesnapshots.list",
2759
+ "operation": "list",
2760
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot",
2761
+ "path": "/servicechargesnapshots",
2762
+ "method": "GET"
2763
+ },
2764
+ {
2765
+ "kind": "api",
2766
+ "name": "servicechargesnapshots.get",
2767
+ "operation": "get",
2768
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot",
2769
+ "path": "/servicechargesnapshots/[id]",
2770
+ "method": "GET"
2771
+ },
2772
+ {
2773
+ "kind": "cli",
2774
+ "name": "servicechargesnapshot_list",
2775
+ "operation": "list",
2776
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot"
2777
+ },
2778
+ {
2779
+ "kind": "cli",
2780
+ "name": "servicechargesnapshot_get",
2781
+ "operation": "get",
2782
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot"
2783
+ },
2784
+ {
2785
+ "kind": "mcp",
2786
+ "name": "servicechargesnapshot_list",
2787
+ "operation": "list",
2788
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot"
2789
+ },
2790
+ {
2791
+ "kind": "mcp",
2792
+ "name": "servicechargesnapshot_get",
2793
+ "operation": "get",
2794
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot"
2795
+ }
2796
+ ],
2797
+ "relationshipFeatures": [
2798
+ "foreignKey",
2799
+ "uuidColumns"
2800
+ ],
2801
+ "tags": [],
2802
+ "risks": []
2803
+ },
2804
+ {
2805
+ "name": "ServiceCompensationSnapshot",
2806
+ "qualifiedName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot",
2807
+ "collection": "servicecompensationsnapshots",
2808
+ "tableName": "service_compensation_snapshots",
1294
2809
  "packageName": "@happyvertical/smrt-projects",
1295
2810
  "extends": "SmrtObject",
1296
2811
  "fields": [
@@ -1301,155 +2816,155 @@
1301
2816
  "columnType": "UUID"
1302
2817
  },
1303
2818
  {
1304
- "name": "owner",
1305
- "type": "text",
1306
- "required": false,
1307
- "columnType": "TEXT"
1308
- },
1309
- {
1310
- "name": "name",
1311
- "type": "text",
1312
- "required": false,
1313
- "columnType": "TEXT"
1314
- },
1315
- {
1316
- "name": "fullName",
1317
- "type": "text",
1318
- "required": false,
1319
- "columnType": "TEXT"
1320
- },
1321
- {
1322
- "name": "description",
1323
- "type": "text",
1324
- "required": false,
1325
- "columnType": "TEXT"
1326
- },
1327
- {
1328
- "name": "defaultBranch",
1329
- "type": "text",
1330
- "required": false,
1331
- "columnType": "TEXT"
2819
+ "name": "timeEntryId",
2820
+ "type": "foreignKey",
2821
+ "required": true,
2822
+ "related": "ServiceTimeEntry",
2823
+ "columnType": "UUID"
1332
2824
  },
1333
2825
  {
1334
- "name": "isPrivate",
1335
- "type": "boolean",
2826
+ "name": "amount",
2827
+ "type": "decimal",
1336
2828
  "required": false,
1337
- "columnType": "BOOLEAN"
2829
+ "columnType": "REAL"
1338
2830
  },
1339
2831
  {
1340
- "name": "providerType",
2832
+ "name": "currency",
1341
2833
  "type": "text",
1342
2834
  "required": false,
1343
2835
  "columnType": "TEXT"
1344
2836
  },
1345
2837
  {
1346
- "name": "baseUrl",
2838
+ "name": "termsVersion",
1347
2839
  "type": "text",
1348
2840
  "required": false,
1349
2841
  "columnType": "TEXT"
1350
2842
  },
1351
2843
  {
1352
- "name": "tokenConfigKey",
2844
+ "name": "rateSnapshot",
1353
2845
  "type": "text",
1354
2846
  "required": false,
1355
2847
  "columnType": "TEXT"
1356
2848
  },
1357
2849
  {
1358
- "name": "lastSyncedAt",
2850
+ "name": "createdAt",
1359
2851
  "type": "datetime",
1360
2852
  "required": false,
1361
2853
  "columnType": "TIMESTAMP"
1362
2854
  }
1363
2855
  ],
1364
- "relationships": [],
2856
+ "relationships": [
2857
+ {
2858
+ "name": "timeEntryId",
2859
+ "type": "foreignKey",
2860
+ "required": true,
2861
+ "related": "ServiceTimeEntry",
2862
+ "columnType": "UUID"
2863
+ }
2864
+ ],
1365
2865
  "methods": [
1366
- "clearClient",
1367
- "createIssue",
1368
- "createPullRequest",
1369
- "getByFullName",
1370
- "getClient",
1371
- "getIssues",
1372
- "getPullRequests",
1373
- "hasOpenIssuesMatching",
1374
- "summarizeActivity",
1375
- "sync"
2866
+ "initialize",
2867
+ "save"
1376
2868
  ],
1377
2869
  "surfaces": [
1378
2870
  {
1379
2871
  "kind": "api",
1380
- "name": "repositories.list",
2872
+ "name": "servicecompensationsnapshots.list",
1381
2873
  "operation": "list",
1382
- "objectName": "@happyvertical/smrt-projects:Repository",
1383
- "path": "/repositories",
2874
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot",
2875
+ "path": "/servicecompensationsnapshots",
1384
2876
  "method": "GET"
1385
2877
  },
1386
2878
  {
1387
2879
  "kind": "api",
1388
- "name": "repositories.get",
2880
+ "name": "servicecompensationsnapshots.get",
1389
2881
  "operation": "get",
1390
- "objectName": "@happyvertical/smrt-projects:Repository",
1391
- "path": "/repositories/[id]",
2882
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot",
2883
+ "path": "/servicecompensationsnapshots/[id]",
1392
2884
  "method": "GET"
1393
2885
  },
1394
- {
1395
- "kind": "api",
1396
- "name": "repositories.create",
1397
- "operation": "create",
1398
- "objectName": "@happyvertical/smrt-projects:Repository",
1399
- "path": "/repositories",
1400
- "method": "POST"
1401
- },
1402
- {
1403
- "kind": "api",
1404
- "name": "repositories.update",
1405
- "operation": "update",
1406
- "objectName": "@happyvertical/smrt-projects:Repository",
1407
- "path": "/repositories/[id]",
1408
- "method": "PATCH"
1409
- },
1410
2886
  {
1411
2887
  "kind": "cli",
1412
- "name": "repository_list",
2888
+ "name": "servicecompensationsnapshot_list",
1413
2889
  "operation": "list",
1414
- "objectName": "@happyvertical/smrt-projects:Repository"
2890
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot"
1415
2891
  },
1416
2892
  {
1417
2893
  "kind": "cli",
1418
- "name": "repository_get",
2894
+ "name": "servicecompensationsnapshot_get",
1419
2895
  "operation": "get",
1420
- "objectName": "@happyvertical/smrt-projects:Repository"
1421
- },
1422
- {
1423
- "kind": "cli",
1424
- "name": "repository_sync",
1425
- "operation": "sync",
1426
- "objectName": "@happyvertical/smrt-projects:Repository"
1427
- },
1428
- {
1429
- "kind": "cli",
1430
- "name": "repository_create",
1431
- "operation": "create",
1432
- "objectName": "@happyvertical/smrt-projects:Repository"
2896
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot"
1433
2897
  },
1434
2898
  {
1435
2899
  "kind": "mcp",
1436
- "name": "repository_list",
2900
+ "name": "servicecompensationsnapshot_list",
1437
2901
  "operation": "list",
1438
- "objectName": "@happyvertical/smrt-projects:Repository"
2902
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot"
1439
2903
  },
1440
2904
  {
1441
2905
  "kind": "mcp",
1442
- "name": "repository_get",
2906
+ "name": "servicecompensationsnapshot_get",
1443
2907
  "operation": "get",
1444
- "objectName": "@happyvertical/smrt-projects:Repository"
1445
- },
1446
- {
1447
- "kind": "mcp",
1448
- "name": "repository_sync",
1449
- "operation": "sync",
1450
- "objectName": "@happyvertical/smrt-projects:Repository"
2908
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot"
1451
2909
  }
1452
2910
  ],
2911
+ "relationshipFeatures": [
2912
+ "foreignKey",
2913
+ "uuidColumns"
2914
+ ],
2915
+ "tags": [],
2916
+ "risks": []
2917
+ },
2918
+ {
2919
+ "name": "ServiceTimeEntryCollection",
2920
+ "qualifiedName": "@happyvertical/smrt-projects:ServiceTimeEntryCollection",
2921
+ "collection": "servicetimeentries",
2922
+ "tableName": "service_time_entries",
2923
+ "packageName": "@happyvertical/smrt-projects",
2924
+ "extends": "SmrtCollection",
2925
+ "fields": [],
2926
+ "relationships": [],
2927
+ "methods": [
2928
+ "forCase",
2929
+ "forSpecialist",
2930
+ "forWork",
2931
+ "pendingApproval"
2932
+ ],
2933
+ "surfaces": [],
2934
+ "relationshipFeatures": [
2935
+ "uuidColumns"
2936
+ ],
2937
+ "tags": [],
2938
+ "risks": []
2939
+ },
2940
+ {
2941
+ "name": "ServiceChargeSnapshotCollection",
2942
+ "qualifiedName": "@happyvertical/smrt-projects:ServiceChargeSnapshotCollection",
2943
+ "collection": "servicechargesnapshots",
2944
+ "tableName": "service_charge_snapshots",
2945
+ "packageName": "@happyvertical/smrt-projects",
2946
+ "extends": "SmrtCollection",
2947
+ "fields": [],
2948
+ "relationships": [],
2949
+ "methods": [],
2950
+ "surfaces": [],
2951
+ "relationshipFeatures": [
2952
+ "uuidColumns"
2953
+ ],
2954
+ "tags": [],
2955
+ "risks": []
2956
+ },
2957
+ {
2958
+ "name": "ServiceCompensationSnapshotCollection",
2959
+ "qualifiedName": "@happyvertical/smrt-projects:ServiceCompensationSnapshotCollection",
2960
+ "collection": "servicecompensationsnapshots",
2961
+ "tableName": "service_compensation_snapshots",
2962
+ "packageName": "@happyvertical/smrt-projects",
2963
+ "extends": "SmrtCollection",
2964
+ "fields": [],
2965
+ "relationships": [],
2966
+ "methods": [],
2967
+ "surfaces": [],
1453
2968
  "relationshipFeatures": [
1454
2969
  "uuidColumns"
1455
2970
  ],
@@ -1770,6 +3285,46 @@
1770
3285
  "operation": "updateItemStatus",
1771
3286
  "objectName": "@happyvertical/smrt-projects:Project"
1772
3287
  },
3288
+ {
3289
+ "kind": "api",
3290
+ "name": "projectintegrations.list",
3291
+ "operation": "list",
3292
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration",
3293
+ "path": "/projectintegrations",
3294
+ "method": "GET"
3295
+ },
3296
+ {
3297
+ "kind": "api",
3298
+ "name": "projectintegrations.get",
3299
+ "operation": "get",
3300
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration",
3301
+ "path": "/projectintegrations/[id]",
3302
+ "method": "GET"
3303
+ },
3304
+ {
3305
+ "kind": "cli",
3306
+ "name": "projectintegration_list",
3307
+ "operation": "list",
3308
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration"
3309
+ },
3310
+ {
3311
+ "kind": "cli",
3312
+ "name": "projectintegration_get",
3313
+ "operation": "get",
3314
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration"
3315
+ },
3316
+ {
3317
+ "kind": "mcp",
3318
+ "name": "projectintegration_list",
3319
+ "operation": "list",
3320
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration"
3321
+ },
3322
+ {
3323
+ "kind": "mcp",
3324
+ "name": "projectintegration_get",
3325
+ "operation": "get",
3326
+ "objectName": "@happyvertical/smrt-projects:ProjectIntegration"
3327
+ },
1773
3328
  {
1774
3329
  "kind": "api",
1775
3330
  "name": "issues.list",
@@ -1941,6 +3496,126 @@
1941
3496
  "name": "repository_sync",
1942
3497
  "operation": "sync",
1943
3498
  "objectName": "@happyvertical/smrt-projects:Repository"
3499
+ },
3500
+ {
3501
+ "kind": "api",
3502
+ "name": "servicetimeentries.list",
3503
+ "operation": "list",
3504
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry",
3505
+ "path": "/servicetimeentries",
3506
+ "method": "GET"
3507
+ },
3508
+ {
3509
+ "kind": "api",
3510
+ "name": "servicetimeentries.get",
3511
+ "operation": "get",
3512
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry",
3513
+ "path": "/servicetimeentries/[id]",
3514
+ "method": "GET"
3515
+ },
3516
+ {
3517
+ "kind": "cli",
3518
+ "name": "servicetimeentry_list",
3519
+ "operation": "list",
3520
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry"
3521
+ },
3522
+ {
3523
+ "kind": "cli",
3524
+ "name": "servicetimeentry_get",
3525
+ "operation": "get",
3526
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry"
3527
+ },
3528
+ {
3529
+ "kind": "mcp",
3530
+ "name": "servicetimeentry_list",
3531
+ "operation": "list",
3532
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry"
3533
+ },
3534
+ {
3535
+ "kind": "mcp",
3536
+ "name": "servicetimeentry_get",
3537
+ "operation": "get",
3538
+ "objectName": "@happyvertical/smrt-projects:ServiceTimeEntry"
3539
+ },
3540
+ {
3541
+ "kind": "api",
3542
+ "name": "servicechargesnapshots.list",
3543
+ "operation": "list",
3544
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot",
3545
+ "path": "/servicechargesnapshots",
3546
+ "method": "GET"
3547
+ },
3548
+ {
3549
+ "kind": "api",
3550
+ "name": "servicechargesnapshots.get",
3551
+ "operation": "get",
3552
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot",
3553
+ "path": "/servicechargesnapshots/[id]",
3554
+ "method": "GET"
3555
+ },
3556
+ {
3557
+ "kind": "cli",
3558
+ "name": "servicechargesnapshot_list",
3559
+ "operation": "list",
3560
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot"
3561
+ },
3562
+ {
3563
+ "kind": "cli",
3564
+ "name": "servicechargesnapshot_get",
3565
+ "operation": "get",
3566
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot"
3567
+ },
3568
+ {
3569
+ "kind": "mcp",
3570
+ "name": "servicechargesnapshot_list",
3571
+ "operation": "list",
3572
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot"
3573
+ },
3574
+ {
3575
+ "kind": "mcp",
3576
+ "name": "servicechargesnapshot_get",
3577
+ "operation": "get",
3578
+ "objectName": "@happyvertical/smrt-projects:ServiceChargeSnapshot"
3579
+ },
3580
+ {
3581
+ "kind": "api",
3582
+ "name": "servicecompensationsnapshots.list",
3583
+ "operation": "list",
3584
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot",
3585
+ "path": "/servicecompensationsnapshots",
3586
+ "method": "GET"
3587
+ },
3588
+ {
3589
+ "kind": "api",
3590
+ "name": "servicecompensationsnapshots.get",
3591
+ "operation": "get",
3592
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot",
3593
+ "path": "/servicecompensationsnapshots/[id]",
3594
+ "method": "GET"
3595
+ },
3596
+ {
3597
+ "kind": "cli",
3598
+ "name": "servicecompensationsnapshot_list",
3599
+ "operation": "list",
3600
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot"
3601
+ },
3602
+ {
3603
+ "kind": "cli",
3604
+ "name": "servicecompensationsnapshot_get",
3605
+ "operation": "get",
3606
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot"
3607
+ },
3608
+ {
3609
+ "kind": "mcp",
3610
+ "name": "servicecompensationsnapshot_list",
3611
+ "operation": "list",
3612
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot"
3613
+ },
3614
+ {
3615
+ "kind": "mcp",
3616
+ "name": "servicecompensationsnapshot_get",
3617
+ "operation": "get",
3618
+ "objectName": "@happyvertical/smrt-projects:ServiceCompensationSnapshot"
1944
3619
  }
1945
3620
  ],
1946
3621
  "prompts": [
@@ -1949,12 +3624,12 @@
1949
3624
  }
1950
3625
  ],
1951
3626
  "relationshipsV2": {
1952
- "foreignKeyFields": 4,
1953
- "crossPackageRefFields": 0,
3627
+ "foreignKeyFields": 16,
3628
+ "crossPackageRefFields": 6,
1954
3629
  "junctionCollections": 0,
1955
3630
  "hierarchicalObjects": 0,
1956
3631
  "polymorphicAssociations": 0,
1957
- "uuidColumns": 19
3632
+ "uuidColumns": 73
1958
3633
  },
1959
- "agentDoc": "# @happyvertical/smrt-projects\n\nProvider-agnostic project management GitHub-style issues, PRs, projects, and repositories.\n\n## Models\n\n| Model | Key Fields | Notes |\n|-------|-----------|-------|\n| **Repository** | `owner`, `name`, `providerType`, `tokenConfigKey` | `sync()`, `getIssues()`, `getPullRequests()` |\n| **Issue** | `repositoryId` (FK), `number`, `title`, `body`, `state`, `labels[]` | `incorporateFeedback()`, `rollback()`, `suggestLabels()` |\n| **PullRequest** | extends Issue + `headRef`, `baseRef`, `merged`, `draft` | STI on Issue table. `summarize()`, `merge()` |\n| **Project** | `projectId`, `title`, `statuses[]`, `statusFieldId` | GitHub Projects V2. `addItem()`, `moveItem()`, `analyzeHealth()` |\n| **Comment** | `issueId` (FK), `body`, `authorLogin` | AI analysis support |\n| **Label** | `repositoryId` (FK), `name`, `color` | |\n\n## Key Patterns\n\n- **Token config reference**: stores env var name (`tokenConfigKey: 'GITHUB_TOKEN'`), not the token itself. Resolved at runtime from `process.env` or `getModuleConfig()`\n- **Living spec** (`incorporateFeedback()`): AI synthesizes issue comments into updated body. Supports preview mode and `rollback()`\n- **Provider-agnostic**: GitHub primary, GitLab/Bitbucket/Azure planned. Uses `@happyvertical/repos` and `@happyvertical/projects` SDK packages\n- **PullRequest is STI on Issue**: shares table, discriminated by `_meta_type`\n\n## Collection Methods\n\nAll collections provide: `discover({ repository, filters })`, `findByRepository(repoId)`, `findOpen(repoId?)`, `batchSync(repository)`.\n\n## Gotchas\n\n- **SDK dependency**: requires `@happyvertical/repos` and `@happyvertical/projects` from SDK\n- **tokenConfigKey not tokenValue**: never store actual tokens in the database\n- **synthesisCount tracks incorporateFeedback calls**: incremented on each apply\n"
3634
+ "agentDoc": "# @happyvertical/smrt-projects\n\nProvider-agnostic project management plus the managed-application delivery\ncontrol plane. Repository and board providers remain canonical; managed apps\nonly receive scoped Project Integration credentials and provider-neutral\nrequest/delivery projections.\n\n## Managed application delivery (#1949)\n\n- `ProjectIntegration` stores capability grants and a sensitive credential\n hash; the raw credential is returned once by\n `ProjectIntegrationCollection.provision()`/`rotate()` and is never persisted.\n Provisioning, rotation, and revocation are append-only audited.\n- The stable requester identity is supplied when authenticating\n `ManagedProjectClient`; request reads are always restricted to that requester\n and integration.\n- `DevelopmentRequest` preserves evidence, origin, discussion, visibility, and\n lifecycle history. `ManagedProjectClient` owns managed intake and\n `DevelopmentRequestService` adds internal triage and work projection.\n- `DevelopmentRequestWorkLink` connects zero-to-many provider-neutral work\n items. Canonical status stays on the link and drives request lifecycle\n projection without granting the managed app provider credentials.\n- `ProjectDeliveryEvent` is idempotent per integration key and sequenced for\n replay. Preview decisions flow through the control-plane adapter, never\n directly to repository providers.\n- `AssistanceRequest` preserves conversational intake before lossless routing\n to Support, Development, or both. `smrt-support` supplies the concrete\n `ProjectAssistanceSupportAdapter`.\n- `ManagedProjectClient` deliberately exposes no repository or board client;\n delivery and assistance use separate capability-gated service facades.\n\n## Shared Professional Service evidence (#1955)\n\n`ServiceTimeEntry` is canonical here on the existing `service_time_entries`\ntable. Planning, development, and support use the same immutable evidence and\ncorrection chain. `SubscriptionServiceCommercialResolver` prices client work\nthrough `smrt-subscriptions` (#1925); provider compensation remains a separate\nresolver and snapshot. See `SERVICE_TIME_MIGRATION.md`.\n\n## Models\n\n| Model | Key Fields | Notes |\n|-------|-----------|-------|\n| **Repository** | `owner`, `name`, `providerType`, `tokenConfigKey` | `sync()`, `getIssues()`, `getPullRequests()` |\n| **Issue** | `repositoryId` (FK), `number`, `title`, `body`, `state`, `labels[]` | `incorporateFeedback()`, `rollback()`, `suggestLabels()` |\n| **PullRequest** | extends Issue + `headRef`, `baseRef`, `merged`, `draft` | STI on Issue table. `summarize()`, `merge()` |\n| **Project** | `projectId`, `title`, `statuses[]`, `statusFieldId` | GitHub Projects V2. `addItem()`, `moveItem()`, `analyzeHealth()` |\n| **Comment** | `issueId` (FK), `body`, `authorLogin` | AI analysis support |\n| **Label** | `repositoryId` (FK), `name`, `color` | |\n\n## Key Patterns\n\n- **Token config reference**: stores env var name (`tokenConfigKey: 'GITHUB_TOKEN'`), not the token itself. Resolved at runtime from `process.env` or `getModuleConfig()`\n- **Living spec** (`incorporateFeedback()`): AI synthesizes issue comments into updated body. Supports preview mode and `rollback()`\n- **Provider-agnostic**: GitHub primary, GitLab/Bitbucket/Azure planned. Uses `@happyvertical/repos` and `@happyvertical/projects` SDK packages\n- **PullRequest is STI on Issue**: shares table, discriminated by `_meta_type`\n\n## Collection Methods\n\nAll collections provide: `discover({ repository, filters })`, `findByRepository(repoId)`, `findOpen(repoId?)`, `batchSync(repository)`.\n\n## Gotchas\n\n- **SDK dependency**: requires `@happyvertical/repos` and `@happyvertical/projects` from SDK\n- **tokenConfigKey not tokenValue**: never store actual tokens in the database\n- **synthesisCount tracks incorporateFeedback calls**: incremented on each apply\n"
1960
3635
  }