@happyvertical/smrt-projects 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/AGENTS.md +31 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +97 -0
  5. package/dist/__smrt-register__.d.ts +2 -0
  6. package/dist/__smrt-register__.d.ts.map +1 -0
  7. package/dist/collections/Issues.d.ts +107 -0
  8. package/dist/collections/Issues.d.ts.map +1 -0
  9. package/dist/collections/Projects.d.ts +90 -0
  10. package/dist/collections/Projects.d.ts.map +1 -0
  11. package/dist/collections/PullRequests.d.ts +107 -0
  12. package/dist/collections/PullRequests.d.ts.map +1 -0
  13. package/dist/collections/Repositories.d.ts +77 -0
  14. package/dist/collections/Repositories.d.ts.map +1 -0
  15. package/dist/constants.d.ts +9 -0
  16. package/dist/constants.d.ts.map +1 -0
  17. package/dist/index.d.ts +14 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +2477 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/manifest.json +4193 -0
  22. package/dist/models/Comment.d.ts +77 -0
  23. package/dist/models/Comment.d.ts.map +1 -0
  24. package/dist/models/Issue.d.ts +200 -0
  25. package/dist/models/Issue.d.ts.map +1 -0
  26. package/dist/models/Label.d.ts +63 -0
  27. package/dist/models/Label.d.ts.map +1 -0
  28. package/dist/models/Project.d.ts +183 -0
  29. package/dist/models/Project.d.ts.map +1 -0
  30. package/dist/models/PullRequest.d.ts +114 -0
  31. package/dist/models/PullRequest.d.ts.map +1 -0
  32. package/dist/models/Repository.d.ts +141 -0
  33. package/dist/models/Repository.d.ts.map +1 -0
  34. package/dist/playground.d.ts +2 -0
  35. package/dist/playground.d.ts.map +1 -0
  36. package/dist/playground.js +129 -0
  37. package/dist/playground.js.map +1 -0
  38. package/dist/prompts.d.ts +2 -0
  39. package/dist/prompts.d.ts.map +1 -0
  40. package/dist/smrt-knowledge.json +1956 -0
  41. package/dist/svelte/components/ApprovalActions.svelte +213 -0
  42. package/dist/svelte/components/ApprovalActions.svelte.d.ts +17 -0
  43. package/dist/svelte/components/ApprovalActions.svelte.d.ts.map +1 -0
  44. package/dist/svelte/components/BulkActions.svelte +224 -0
  45. package/dist/svelte/components/BulkActions.svelte.d.ts +14 -0
  46. package/dist/svelte/components/BulkActions.svelte.d.ts.map +1 -0
  47. package/dist/svelte/components/DurationDisplay.svelte +68 -0
  48. package/dist/svelte/components/DurationDisplay.svelte.d.ts +11 -0
  49. package/dist/svelte/components/DurationDisplay.svelte.d.ts.map +1 -0
  50. package/dist/svelte/components/RejectDialog.svelte +250 -0
  51. package/dist/svelte/components/RejectDialog.svelte.d.ts +17 -0
  52. package/dist/svelte/components/RejectDialog.svelte.d.ts.map +1 -0
  53. package/dist/svelte/components/TimeEntryCard.svelte +294 -0
  54. package/dist/svelte/components/TimeEntryCard.svelte.d.ts +17 -0
  55. package/dist/svelte/components/TimeEntryCard.svelte.d.ts.map +1 -0
  56. package/dist/svelte/components/TimeEntryList.svelte +351 -0
  57. package/dist/svelte/components/TimeEntryList.svelte.d.ts +17 -0
  58. package/dist/svelte/components/TimeEntryList.svelte.d.ts.map +1 -0
  59. package/dist/svelte/components/TimeSummary.svelte +165 -0
  60. package/dist/svelte/components/TimeSummary.svelte.d.ts +19 -0
  61. package/dist/svelte/components/TimeSummary.svelte.d.ts.map +1 -0
  62. package/dist/svelte/components/__tests__/ApprovalActions.test.js +41 -0
  63. package/dist/svelte/components/__tests__/BulkActions.test.js +46 -0
  64. package/dist/svelte/components/__tests__/DurationDisplay.test.js +23 -0
  65. package/dist/svelte/components/__tests__/RejectDialog.test.js +45 -0
  66. package/dist/svelte/components/__tests__/TimeEntryCard.test.js +45 -0
  67. package/dist/svelte/components/__tests__/TimeEntryList.test.js +50 -0
  68. package/dist/svelte/components/__tests__/TimeSummary.test.js +39 -0
  69. package/dist/svelte/components/utils.d.ts +42 -0
  70. package/dist/svelte/components/utils.d.ts.map +1 -0
  71. package/dist/svelte/components/utils.js +43 -0
  72. package/dist/svelte/i18n.d.ts +18 -0
  73. package/dist/svelte/i18n.d.ts.map +1 -0
  74. package/dist/svelte/i18n.js +18 -0
  75. package/dist/svelte/index.d.ts +26 -0
  76. package/dist/svelte/index.d.ts.map +1 -0
  77. package/dist/svelte/index.js +31 -0
  78. package/dist/svelte/playground.d.ts +122 -0
  79. package/dist/svelte/playground.d.ts.map +1 -0
  80. package/dist/svelte/playground.js +114 -0
  81. package/dist/svelte/utils.d.ts +42 -0
  82. package/dist/svelte/utils.d.ts.map +1 -0
  83. package/dist/svelte/utils.js +43 -0
  84. package/dist/types.d.ts +54 -0
  85. package/dist/types.d.ts.map +1 -0
  86. package/dist/types.js +2 -0
  87. package/dist/types.js.map +1 -0
  88. package/dist/ui.d.ts +10 -0
  89. package/dist/ui.d.ts.map +1 -0
  90. package/dist/ui.js +85 -0
  91. package/dist/ui.js.map +1 -0
  92. package/package.json +100 -0
@@ -0,0 +1,1956 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-06-23T01:12:10.694Z",
4
+ "packageName": "@happyvertical/smrt-projects",
5
+ "packageVersion": "0.30.0",
6
+ "sourceManifestPath": "dist/manifest.json",
7
+ "agentDocPath": "AGENTS.md",
8
+ "sourceHashes": {
9
+ "manifest": "282890df46a6a6d20f03a0ac6d7bc1b30d1ace8f8d7e90bfc514bd227d026d64",
10
+ "packageJson": "c2b5fdfe6e664d738c2631524f4b16896ba76a9b25f77ccf0cf444ad1f9e1fe5",
11
+ "agents": "31de38c962634d69c728bab8dff270448a49718fc36ee20b9cd12216cdbed95c"
12
+ },
13
+ "exports": [
14
+ ".",
15
+ "./manifest",
16
+ "./manifest.json",
17
+ "./playground",
18
+ "./svelte",
19
+ "./ui"
20
+ ],
21
+ "dependencies": {
22
+ "@happyvertical/ai": "catalog:",
23
+ "@happyvertical/logger": "catalog:",
24
+ "@happyvertical/projects": "catalog:",
25
+ "@happyvertical/repos": "catalog:",
26
+ "@happyvertical/smrt-config": "workspace:*",
27
+ "@happyvertical/smrt-core": "workspace:*",
28
+ "@happyvertical/smrt-prompts": "workspace:*",
29
+ "@happyvertical/smrt-tenancy": "workspace:*",
30
+ "@happyvertical/smrt-types": "workspace:*",
31
+ "@happyvertical/smrt-ui": "workspace:*",
32
+ "@happyvertical/sql": "catalog:",
33
+ "@happyvertical/utils": "catalog:",
34
+ "@happyvertical/smrt-cli": "workspace:*",
35
+ "@happyvertical/smrt-vitest": "workspace:*",
36
+ "@sveltejs/package": "^2.5.7",
37
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
38
+ "@types/node": "25.0.9",
39
+ "fast-glob": "3.3.3",
40
+ "svelte": "^5.18.0",
41
+ "svelte-check": "^4.3.5",
42
+ "typescript": "^5.9.3",
43
+ "vite": "^7.3.1",
44
+ "vitest": "^4.0.17"
45
+ },
46
+ "smrtDependencies": [
47
+ "@happyvertical/smrt-cli",
48
+ "@happyvertical/smrt-config",
49
+ "@happyvertical/smrt-core",
50
+ "@happyvertical/smrt-prompts",
51
+ "@happyvertical/smrt-tenancy",
52
+ "@happyvertical/smrt-types",
53
+ "@happyvertical/smrt-ui",
54
+ "@happyvertical/smrt-vitest"
55
+ ],
56
+ "sdkDependencies": [
57
+ "@happyvertical/ai",
58
+ "@happyvertical/logger",
59
+ "@happyvertical/projects",
60
+ "@happyvertical/repos",
61
+ "@happyvertical/sql",
62
+ "@happyvertical/utils"
63
+ ],
64
+ "tags": [],
65
+ "risks": [],
66
+ "objects": [
67
+ {
68
+ "name": "IssueCollection",
69
+ "qualifiedName": "@happyvertical/smrt-projects:IssueCollection",
70
+ "collection": "issues",
71
+ "tableName": "issue_collections",
72
+ "packageName": "@happyvertical/smrt-projects",
73
+ "extends": "SmrtCollection",
74
+ "fields": [],
75
+ "relationships": [],
76
+ "methods": [
77
+ "batchSync",
78
+ "discover",
79
+ "findByAssignee",
80
+ "findByLabel",
81
+ "findByNumber",
82
+ "findByRepository",
83
+ "findByTenant",
84
+ "findGlobal",
85
+ "findNeedingReview",
86
+ "findOpen",
87
+ "findWithGlobals",
88
+ "findWithUnincorporatedFeedback"
89
+ ],
90
+ "surfaces": [],
91
+ "relationshipFeatures": [
92
+ "uuidColumns"
93
+ ],
94
+ "tags": [],
95
+ "risks": []
96
+ },
97
+ {
98
+ "name": "ProjectCollection",
99
+ "qualifiedName": "@happyvertical/smrt-projects:ProjectCollection",
100
+ "collection": "projects",
101
+ "tableName": "project_collections",
102
+ "packageName": "@happyvertical/smrt-projects",
103
+ "extends": "SmrtCollection",
104
+ "fields": [],
105
+ "relationships": [],
106
+ "methods": [
107
+ "findByOwner",
108
+ "findByProvider",
109
+ "findByTenant",
110
+ "findByTitle",
111
+ "findGlobal",
112
+ "findWithGlobals",
113
+ "findWithItemsInStatus",
114
+ "getOrCreate",
115
+ "getStatistics",
116
+ "syncAll"
117
+ ],
118
+ "surfaces": [],
119
+ "relationshipFeatures": [
120
+ "uuidColumns"
121
+ ],
122
+ "tags": [],
123
+ "risks": []
124
+ },
125
+ {
126
+ "name": "PullRequestCollection",
127
+ "qualifiedName": "@happyvertical/smrt-projects:PullRequestCollection",
128
+ "collection": "issues",
129
+ "tableName": "issues",
130
+ "packageName": "@happyvertical/smrt-projects",
131
+ "extends": "SmrtCollection",
132
+ "fields": [],
133
+ "relationships": [],
134
+ "methods": [
135
+ "batchSync",
136
+ "discover",
137
+ "findAIReadyToMerge",
138
+ "findByBranch",
139
+ "findByNumber",
140
+ "findByRepository",
141
+ "findBySize",
142
+ "findByTenant",
143
+ "findDrafts",
144
+ "findGlobal",
145
+ "findOpen",
146
+ "findReadyToMerge",
147
+ "findWithGlobals"
148
+ ],
149
+ "surfaces": [],
150
+ "relationshipFeatures": [
151
+ "uuidColumns"
152
+ ],
153
+ "tags": [],
154
+ "risks": []
155
+ },
156
+ {
157
+ "name": "RepositoryCollection",
158
+ "qualifiedName": "@happyvertical/smrt-projects:RepositoryCollection",
159
+ "collection": "repositories",
160
+ "tableName": "repository_collections",
161
+ "packageName": "@happyvertical/smrt-projects",
162
+ "extends": "SmrtCollection",
163
+ "fields": [],
164
+ "relationships": [],
165
+ "methods": [
166
+ "findByFullName",
167
+ "findByOwner",
168
+ "findByProvider",
169
+ "findByTenant",
170
+ "findGlobal",
171
+ "findWithGlobals",
172
+ "findWithOpenIssues",
173
+ "getOrCreate",
174
+ "syncAll"
175
+ ],
176
+ "surfaces": [],
177
+ "relationshipFeatures": [
178
+ "uuidColumns"
179
+ ],
180
+ "tags": [],
181
+ "risks": []
182
+ },
183
+ {
184
+ "name": "Comment",
185
+ "qualifiedName": "@happyvertical/smrt-projects:Comment",
186
+ "collection": "comments",
187
+ "tableName": "comments",
188
+ "packageName": "@happyvertical/smrt-projects",
189
+ "extends": "SmrtObject",
190
+ "fields": [
191
+ {
192
+ "name": "tenantId",
193
+ "type": "text",
194
+ "required": false,
195
+ "columnType": "UUID"
196
+ },
197
+ {
198
+ "name": "issueId",
199
+ "type": "foreignKey",
200
+ "required": false,
201
+ "related": "Issue",
202
+ "columnType": "UUID"
203
+ },
204
+ {
205
+ "name": "commentId",
206
+ "type": "text",
207
+ "required": false,
208
+ "columnType": "TEXT"
209
+ },
210
+ {
211
+ "name": "body",
212
+ "type": "text",
213
+ "required": false,
214
+ "columnType": "TEXT"
215
+ },
216
+ {
217
+ "name": "author",
218
+ "type": "text",
219
+ "required": false,
220
+ "columnType": "TEXT"
221
+ },
222
+ {
223
+ "name": "createdAt",
224
+ "type": "datetime",
225
+ "required": false,
226
+ "columnType": "TIMESTAMP"
227
+ },
228
+ {
229
+ "name": "updatedAt",
230
+ "type": "datetime",
231
+ "required": false,
232
+ "columnType": "TIMESTAMP"
233
+ },
234
+ {
235
+ "name": "url",
236
+ "type": "text",
237
+ "required": false,
238
+ "columnType": "TEXT"
239
+ }
240
+ ],
241
+ "relationships": [
242
+ {
243
+ "name": "issueId",
244
+ "type": "foreignKey",
245
+ "required": false,
246
+ "related": "Issue",
247
+ "columnType": "UUID"
248
+ }
249
+ ],
250
+ "methods": [
251
+ "extractActionItems",
252
+ "getSentiment",
253
+ "isApproval",
254
+ "isQuestion",
255
+ "requestsChanges",
256
+ "summarize"
257
+ ],
258
+ "surfaces": [
259
+ {
260
+ "kind": "api",
261
+ "name": "comments.list",
262
+ "operation": "list",
263
+ "objectName": "@happyvertical/smrt-projects:Comment",
264
+ "path": "/comments",
265
+ "method": "GET"
266
+ },
267
+ {
268
+ "kind": "api",
269
+ "name": "comments.get",
270
+ "operation": "get",
271
+ "objectName": "@happyvertical/smrt-projects:Comment",
272
+ "path": "/comments/[id]",
273
+ "method": "GET"
274
+ },
275
+ {
276
+ "kind": "cli",
277
+ "name": "comment_list",
278
+ "operation": "list",
279
+ "objectName": "@happyvertical/smrt-projects:Comment"
280
+ },
281
+ {
282
+ "kind": "cli",
283
+ "name": "comment_get",
284
+ "operation": "get",
285
+ "objectName": "@happyvertical/smrt-projects:Comment"
286
+ },
287
+ {
288
+ "kind": "mcp",
289
+ "name": "comment_list",
290
+ "operation": "list",
291
+ "objectName": "@happyvertical/smrt-projects:Comment"
292
+ },
293
+ {
294
+ "kind": "mcp",
295
+ "name": "comment_get",
296
+ "operation": "get",
297
+ "objectName": "@happyvertical/smrt-projects:Comment"
298
+ }
299
+ ],
300
+ "relationshipFeatures": [
301
+ "foreignKey",
302
+ "uuidColumns"
303
+ ],
304
+ "tags": [],
305
+ "risks": []
306
+ },
307
+ {
308
+ "name": "Issue",
309
+ "qualifiedName": "@happyvertical/smrt-projects:Issue",
310
+ "collection": "issues",
311
+ "tableName": "issues",
312
+ "packageName": "@happyvertical/smrt-projects",
313
+ "extends": "SmrtObject",
314
+ "fields": [
315
+ {
316
+ "name": "created_at",
317
+ "type": "datetime",
318
+ "required": false,
319
+ "columnType": "TIMESTAMP"
320
+ },
321
+ {
322
+ "name": "updated_at",
323
+ "type": "datetime",
324
+ "required": false,
325
+ "columnType": "TIMESTAMP"
326
+ },
327
+ {
328
+ "name": "tenantId",
329
+ "type": "text",
330
+ "required": false,
331
+ "columnType": "UUID"
332
+ },
333
+ {
334
+ "name": "repositoryId",
335
+ "type": "foreignKey",
336
+ "required": true,
337
+ "related": "Repository",
338
+ "columnType": "UUID"
339
+ },
340
+ {
341
+ "name": "number",
342
+ "type": "integer",
343
+ "required": false,
344
+ "columnType": "INTEGER"
345
+ },
346
+ {
347
+ "name": "nodeId",
348
+ "type": "text",
349
+ "required": false,
350
+ "columnType": "TEXT"
351
+ },
352
+ {
353
+ "name": "title",
354
+ "type": "text",
355
+ "required": false,
356
+ "columnType": "TEXT"
357
+ },
358
+ {
359
+ "name": "body",
360
+ "type": "text",
361
+ "required": false,
362
+ "columnType": "TEXT"
363
+ },
364
+ {
365
+ "name": "state",
366
+ "type": "text",
367
+ "required": false,
368
+ "columnType": "TEXT"
369
+ },
370
+ {
371
+ "name": "author",
372
+ "type": "text",
373
+ "required": false,
374
+ "columnType": "TEXT"
375
+ },
376
+ {
377
+ "name": "labels",
378
+ "type": "json",
379
+ "required": false,
380
+ "columnType": "JSON"
381
+ },
382
+ {
383
+ "name": "assignees",
384
+ "type": "json",
385
+ "required": false,
386
+ "columnType": "JSON"
387
+ },
388
+ {
389
+ "name": "commentsCount",
390
+ "type": "integer",
391
+ "required": false,
392
+ "columnType": "INTEGER"
393
+ },
394
+ {
395
+ "name": "lastSyncedAt",
396
+ "type": "datetime",
397
+ "required": false,
398
+ "columnType": "TIMESTAMP"
399
+ },
400
+ {
401
+ "name": "originalBody",
402
+ "type": "text",
403
+ "required": false,
404
+ "columnType": "TEXT"
405
+ },
406
+ {
407
+ "name": "synthesisCount",
408
+ "type": "integer",
409
+ "required": false,
410
+ "columnType": "INTEGER"
411
+ }
412
+ ],
413
+ "relationships": [
414
+ {
415
+ "name": "repositoryId",
416
+ "type": "foreignKey",
417
+ "required": true,
418
+ "related": "Repository",
419
+ "columnType": "UUID"
420
+ }
421
+ ],
422
+ "methods": [
423
+ "addComment",
424
+ "addLabels",
425
+ "assign",
426
+ "classifyConstraintError",
427
+ "clearCache",
428
+ "clearEmbeddings",
429
+ "close",
430
+ "delete",
431
+ "describe",
432
+ "destroy",
433
+ "do",
434
+ "executeToolCall",
435
+ "forget",
436
+ "forgetScope",
437
+ "generateEmbeddings",
438
+ "getAiUsageSnapshot",
439
+ "getAvailableTools",
440
+ "getClient",
441
+ "getComments",
442
+ "getEmbedding",
443
+ "getFields",
444
+ "getId",
445
+ "getRelated",
446
+ "getRepository",
447
+ "getSavedId",
448
+ "getSlug",
449
+ "getUrl",
450
+ "hasStaleEmbeddings",
451
+ "incorporateFeedback",
452
+ "initialize",
453
+ "is",
454
+ "isBugReport",
455
+ "isFeatureRequest",
456
+ "isRelatedLoaded",
457
+ "isSaved",
458
+ "listAiUsage",
459
+ "loadDataFromDb",
460
+ "loadFromId",
461
+ "loadFromSlug",
462
+ "loadRelated",
463
+ "loadRelatedMany",
464
+ "markAsPersisted",
465
+ "needsReview",
466
+ "recall",
467
+ "recallAll",
468
+ "remember",
469
+ "removeLabel",
470
+ "resetAiUsage",
471
+ "rollback",
472
+ "save",
473
+ "suggestLabels",
474
+ "summarizeAiUsage",
475
+ "sync",
476
+ "toJSON",
477
+ "toPlainObject",
478
+ "toPublicJSON"
479
+ ],
480
+ "surfaces": [
481
+ {
482
+ "kind": "api",
483
+ "name": "issues.list",
484
+ "operation": "list",
485
+ "objectName": "@happyvertical/smrt-projects:Issue",
486
+ "path": "/issues",
487
+ "method": "GET"
488
+ },
489
+ {
490
+ "kind": "api",
491
+ "name": "issues.get",
492
+ "operation": "get",
493
+ "objectName": "@happyvertical/smrt-projects:Issue",
494
+ "path": "/issues/[id]",
495
+ "method": "GET"
496
+ },
497
+ {
498
+ "kind": "api",
499
+ "name": "issues.create",
500
+ "operation": "create",
501
+ "objectName": "@happyvertical/smrt-projects:Issue",
502
+ "path": "/issues",
503
+ "method": "POST"
504
+ },
505
+ {
506
+ "kind": "api",
507
+ "name": "issues.update",
508
+ "operation": "update",
509
+ "objectName": "@happyvertical/smrt-projects:Issue",
510
+ "path": "/issues/[id]",
511
+ "method": "PATCH"
512
+ },
513
+ {
514
+ "kind": "cli",
515
+ "name": "issue_list",
516
+ "operation": "list",
517
+ "objectName": "@happyvertical/smrt-projects:Issue"
518
+ },
519
+ {
520
+ "kind": "cli",
521
+ "name": "issue_get",
522
+ "operation": "get",
523
+ "objectName": "@happyvertical/smrt-projects:Issue"
524
+ },
525
+ {
526
+ "kind": "cli",
527
+ "name": "issue_sync",
528
+ "operation": "sync",
529
+ "objectName": "@happyvertical/smrt-projects:Issue"
530
+ },
531
+ {
532
+ "kind": "cli",
533
+ "name": "issue_incorporateFeedback",
534
+ "operation": "incorporateFeedback",
535
+ "objectName": "@happyvertical/smrt-projects:Issue"
536
+ },
537
+ {
538
+ "kind": "cli",
539
+ "name": "issue_rollback",
540
+ "operation": "rollback",
541
+ "objectName": "@happyvertical/smrt-projects:Issue"
542
+ },
543
+ {
544
+ "kind": "mcp",
545
+ "name": "issue_list",
546
+ "operation": "list",
547
+ "objectName": "@happyvertical/smrt-projects:Issue"
548
+ },
549
+ {
550
+ "kind": "mcp",
551
+ "name": "issue_get",
552
+ "operation": "get",
553
+ "objectName": "@happyvertical/smrt-projects:Issue"
554
+ },
555
+ {
556
+ "kind": "mcp",
557
+ "name": "issue_sync",
558
+ "operation": "sync",
559
+ "objectName": "@happyvertical/smrt-projects:Issue"
560
+ },
561
+ {
562
+ "kind": "mcp",
563
+ "name": "issue_incorporateFeedback",
564
+ "operation": "incorporateFeedback",
565
+ "objectName": "@happyvertical/smrt-projects:Issue"
566
+ }
567
+ ],
568
+ "relationshipFeatures": [
569
+ "foreignKey",
570
+ "uuidColumns"
571
+ ],
572
+ "tags": [],
573
+ "risks": []
574
+ },
575
+ {
576
+ "name": "Label",
577
+ "qualifiedName": "@happyvertical/smrt-projects:Label",
578
+ "collection": "labels",
579
+ "tableName": "labels",
580
+ "packageName": "@happyvertical/smrt-projects",
581
+ "extends": "SmrtObject",
582
+ "fields": [
583
+ {
584
+ "name": "repositoryId",
585
+ "type": "foreignKey",
586
+ "required": false,
587
+ "related": "Repository",
588
+ "columnType": "UUID"
589
+ },
590
+ {
591
+ "name": "name",
592
+ "type": "text",
593
+ "required": false,
594
+ "columnType": "TEXT"
595
+ },
596
+ {
597
+ "name": "color",
598
+ "type": "text",
599
+ "required": false,
600
+ "columnType": "TEXT"
601
+ },
602
+ {
603
+ "name": "description",
604
+ "type": "text",
605
+ "required": false,
606
+ "columnType": "TEXT"
607
+ }
608
+ ],
609
+ "relationships": [
610
+ {
611
+ "name": "repositoryId",
612
+ "type": "foreignKey",
613
+ "required": false,
614
+ "related": "Repository",
615
+ "columnType": "UUID"
616
+ }
617
+ ],
618
+ "methods": [
619
+ "createInRepository",
620
+ "getCategory",
621
+ "getHexColor",
622
+ "getPriorityLevel",
623
+ "isPriorityLabel",
624
+ "isStatusLabel",
625
+ "isTypeLabel",
626
+ "updateInRepository"
627
+ ],
628
+ "surfaces": [
629
+ {
630
+ "kind": "api",
631
+ "name": "labels.list",
632
+ "operation": "list",
633
+ "objectName": "@happyvertical/smrt-projects:Label",
634
+ "path": "/labels",
635
+ "method": "GET"
636
+ },
637
+ {
638
+ "kind": "api",
639
+ "name": "labels.get",
640
+ "operation": "get",
641
+ "objectName": "@happyvertical/smrt-projects:Label",
642
+ "path": "/labels/[id]",
643
+ "method": "GET"
644
+ },
645
+ {
646
+ "kind": "api",
647
+ "name": "labels.create",
648
+ "operation": "create",
649
+ "objectName": "@happyvertical/smrt-projects:Label",
650
+ "path": "/labels",
651
+ "method": "POST"
652
+ },
653
+ {
654
+ "kind": "api",
655
+ "name": "labels.update",
656
+ "operation": "update",
657
+ "objectName": "@happyvertical/smrt-projects:Label",
658
+ "path": "/labels/[id]",
659
+ "method": "PATCH"
660
+ },
661
+ {
662
+ "kind": "api",
663
+ "name": "labels.delete",
664
+ "operation": "delete",
665
+ "objectName": "@happyvertical/smrt-projects:Label",
666
+ "path": "/labels/[id]",
667
+ "method": "DELETE"
668
+ },
669
+ {
670
+ "kind": "cli",
671
+ "name": "label_list",
672
+ "operation": "list",
673
+ "objectName": "@happyvertical/smrt-projects:Label"
674
+ },
675
+ {
676
+ "kind": "cli",
677
+ "name": "label_get",
678
+ "operation": "get",
679
+ "objectName": "@happyvertical/smrt-projects:Label"
680
+ },
681
+ {
682
+ "kind": "cli",
683
+ "name": "label_create",
684
+ "operation": "create",
685
+ "objectName": "@happyvertical/smrt-projects:Label"
686
+ },
687
+ {
688
+ "kind": "cli",
689
+ "name": "label_update",
690
+ "operation": "update",
691
+ "objectName": "@happyvertical/smrt-projects:Label"
692
+ },
693
+ {
694
+ "kind": "cli",
695
+ "name": "label_delete",
696
+ "operation": "delete",
697
+ "objectName": "@happyvertical/smrt-projects:Label"
698
+ },
699
+ {
700
+ "kind": "mcp",
701
+ "name": "label_list",
702
+ "operation": "list",
703
+ "objectName": "@happyvertical/smrt-projects:Label"
704
+ },
705
+ {
706
+ "kind": "mcp",
707
+ "name": "label_get",
708
+ "operation": "get",
709
+ "objectName": "@happyvertical/smrt-projects:Label"
710
+ },
711
+ {
712
+ "kind": "mcp",
713
+ "name": "label_create",
714
+ "operation": "create",
715
+ "objectName": "@happyvertical/smrt-projects:Label"
716
+ }
717
+ ],
718
+ "relationshipFeatures": [
719
+ "foreignKey",
720
+ "uuidColumns"
721
+ ],
722
+ "tags": [],
723
+ "risks": []
724
+ },
725
+ {
726
+ "name": "Project",
727
+ "qualifiedName": "@happyvertical/smrt-projects:Project",
728
+ "collection": "projects",
729
+ "tableName": "projects",
730
+ "packageName": "@happyvertical/smrt-projects",
731
+ "extends": "SmrtObject",
732
+ "fields": [
733
+ {
734
+ "name": "tenantId",
735
+ "type": "text",
736
+ "required": false,
737
+ "columnType": "UUID"
738
+ },
739
+ {
740
+ "name": "projectId",
741
+ "type": "text",
742
+ "required": false,
743
+ "columnType": "TEXT"
744
+ },
745
+ {
746
+ "name": "projectNumber",
747
+ "type": "integer",
748
+ "required": false,
749
+ "columnType": "INTEGER"
750
+ },
751
+ {
752
+ "name": "title",
753
+ "type": "text",
754
+ "required": false,
755
+ "columnType": "TEXT"
756
+ },
757
+ {
758
+ "name": "description",
759
+ "type": "text",
760
+ "required": false,
761
+ "columnType": "TEXT"
762
+ },
763
+ {
764
+ "name": "owner",
765
+ "type": "text",
766
+ "required": false,
767
+ "columnType": "TEXT"
768
+ },
769
+ {
770
+ "name": "url",
771
+ "type": "text",
772
+ "required": false,
773
+ "columnType": "TEXT"
774
+ },
775
+ {
776
+ "name": "providerType",
777
+ "type": "text",
778
+ "required": false,
779
+ "columnType": "TEXT"
780
+ },
781
+ {
782
+ "name": "tokenConfigKey",
783
+ "type": "text",
784
+ "required": false,
785
+ "columnType": "TEXT"
786
+ },
787
+ {
788
+ "name": "statuses",
789
+ "type": "json",
790
+ "required": false,
791
+ "columnType": "JSON"
792
+ },
793
+ {
794
+ "name": "fields",
795
+ "type": "json",
796
+ "required": false,
797
+ "columnType": "JSON"
798
+ },
799
+ {
800
+ "name": "statusFieldId",
801
+ "type": "text",
802
+ "required": false,
803
+ "columnType": "TEXT"
804
+ },
805
+ {
806
+ "name": "statusOptions",
807
+ "type": "json",
808
+ "required": false,
809
+ "columnType": "JSON"
810
+ },
811
+ {
812
+ "name": "lastSyncedAt",
813
+ "type": "datetime",
814
+ "required": false,
815
+ "columnType": "TIMESTAMP"
816
+ }
817
+ ],
818
+ "relationships": [],
819
+ "methods": [
820
+ "addItem",
821
+ "analyzeHealth",
822
+ "clearClient",
823
+ "getByTitle",
824
+ "getClient",
825
+ "getFields",
826
+ "getItem",
827
+ "getItemsByStatus",
828
+ "getStatuses",
829
+ "listItems",
830
+ "moveItem",
831
+ "removeItem",
832
+ "sync",
833
+ "updateItemField",
834
+ "updateItemStatus"
835
+ ],
836
+ "surfaces": [
837
+ {
838
+ "kind": "api",
839
+ "name": "projects.list",
840
+ "operation": "list",
841
+ "objectName": "@happyvertical/smrt-projects:Project",
842
+ "path": "/projects",
843
+ "method": "GET"
844
+ },
845
+ {
846
+ "kind": "api",
847
+ "name": "projects.get",
848
+ "operation": "get",
849
+ "objectName": "@happyvertical/smrt-projects:Project",
850
+ "path": "/projects/[id]",
851
+ "method": "GET"
852
+ },
853
+ {
854
+ "kind": "api",
855
+ "name": "projects.create",
856
+ "operation": "create",
857
+ "objectName": "@happyvertical/smrt-projects:Project",
858
+ "path": "/projects",
859
+ "method": "POST"
860
+ },
861
+ {
862
+ "kind": "api",
863
+ "name": "projects.update",
864
+ "operation": "update",
865
+ "objectName": "@happyvertical/smrt-projects:Project",
866
+ "path": "/projects/[id]",
867
+ "method": "PATCH"
868
+ },
869
+ {
870
+ "kind": "cli",
871
+ "name": "project_list",
872
+ "operation": "list",
873
+ "objectName": "@happyvertical/smrt-projects:Project"
874
+ },
875
+ {
876
+ "kind": "cli",
877
+ "name": "project_get",
878
+ "operation": "get",
879
+ "objectName": "@happyvertical/smrt-projects:Project"
880
+ },
881
+ {
882
+ "kind": "cli",
883
+ "name": "project_sync",
884
+ "operation": "sync",
885
+ "objectName": "@happyvertical/smrt-projects:Project"
886
+ },
887
+ {
888
+ "kind": "cli",
889
+ "name": "project_addItem",
890
+ "operation": "addItem",
891
+ "objectName": "@happyvertical/smrt-projects:Project"
892
+ },
893
+ {
894
+ "kind": "cli",
895
+ "name": "project_updateItemStatus",
896
+ "operation": "updateItemStatus",
897
+ "objectName": "@happyvertical/smrt-projects:Project"
898
+ },
899
+ {
900
+ "kind": "cli",
901
+ "name": "project_listItems",
902
+ "operation": "listItems",
903
+ "objectName": "@happyvertical/smrt-projects:Project"
904
+ },
905
+ {
906
+ "kind": "mcp",
907
+ "name": "project_list",
908
+ "operation": "list",
909
+ "objectName": "@happyvertical/smrt-projects:Project"
910
+ },
911
+ {
912
+ "kind": "mcp",
913
+ "name": "project_get",
914
+ "operation": "get",
915
+ "objectName": "@happyvertical/smrt-projects:Project"
916
+ },
917
+ {
918
+ "kind": "mcp",
919
+ "name": "project_sync",
920
+ "operation": "sync",
921
+ "objectName": "@happyvertical/smrt-projects:Project"
922
+ },
923
+ {
924
+ "kind": "mcp",
925
+ "name": "project_addItem",
926
+ "operation": "addItem",
927
+ "objectName": "@happyvertical/smrt-projects:Project"
928
+ },
929
+ {
930
+ "kind": "mcp",
931
+ "name": "project_updateItemStatus",
932
+ "operation": "updateItemStatus",
933
+ "objectName": "@happyvertical/smrt-projects:Project"
934
+ }
935
+ ],
936
+ "relationshipFeatures": [
937
+ "uuidColumns"
938
+ ],
939
+ "tags": [],
940
+ "risks": []
941
+ },
942
+ {
943
+ "name": "PullRequest",
944
+ "qualifiedName": "@happyvertical/smrt-projects:PullRequest",
945
+ "collection": "issues",
946
+ "tableName": "issues",
947
+ "packageName": "@happyvertical/smrt-projects",
948
+ "extends": "Issue",
949
+ "fields": [
950
+ {
951
+ "name": "created_at",
952
+ "type": "datetime",
953
+ "required": false,
954
+ "columnType": "TIMESTAMP"
955
+ },
956
+ {
957
+ "name": "updated_at",
958
+ "type": "datetime",
959
+ "required": false,
960
+ "columnType": "TIMESTAMP"
961
+ },
962
+ {
963
+ "name": "tenantId",
964
+ "type": "text",
965
+ "required": false,
966
+ "columnType": "UUID"
967
+ },
968
+ {
969
+ "name": "repositoryId",
970
+ "type": "foreignKey",
971
+ "required": true,
972
+ "related": "Repository",
973
+ "columnType": "UUID"
974
+ },
975
+ {
976
+ "name": "number",
977
+ "type": "integer",
978
+ "required": false,
979
+ "columnType": "INTEGER"
980
+ },
981
+ {
982
+ "name": "nodeId",
983
+ "type": "text",
984
+ "required": false,
985
+ "columnType": "TEXT"
986
+ },
987
+ {
988
+ "name": "title",
989
+ "type": "text",
990
+ "required": false,
991
+ "columnType": "TEXT"
992
+ },
993
+ {
994
+ "name": "body",
995
+ "type": "text",
996
+ "required": false,
997
+ "columnType": "TEXT"
998
+ },
999
+ {
1000
+ "name": "state",
1001
+ "type": "text",
1002
+ "required": false,
1003
+ "columnType": "TEXT"
1004
+ },
1005
+ {
1006
+ "name": "author",
1007
+ "type": "text",
1008
+ "required": false,
1009
+ "columnType": "TEXT"
1010
+ },
1011
+ {
1012
+ "name": "labels",
1013
+ "type": "json",
1014
+ "required": false,
1015
+ "columnType": "JSON"
1016
+ },
1017
+ {
1018
+ "name": "assignees",
1019
+ "type": "json",
1020
+ "required": false,
1021
+ "columnType": "JSON"
1022
+ },
1023
+ {
1024
+ "name": "commentsCount",
1025
+ "type": "integer",
1026
+ "required": false,
1027
+ "columnType": "INTEGER"
1028
+ },
1029
+ {
1030
+ "name": "lastSyncedAt",
1031
+ "type": "datetime",
1032
+ "required": false,
1033
+ "columnType": "TIMESTAMP"
1034
+ },
1035
+ {
1036
+ "name": "originalBody",
1037
+ "type": "text",
1038
+ "required": false,
1039
+ "columnType": "TEXT"
1040
+ },
1041
+ {
1042
+ "name": "synthesisCount",
1043
+ "type": "integer",
1044
+ "required": false,
1045
+ "columnType": "INTEGER"
1046
+ },
1047
+ {
1048
+ "name": "headRef",
1049
+ "type": "text",
1050
+ "required": false,
1051
+ "columnType": "TEXT"
1052
+ },
1053
+ {
1054
+ "name": "baseRef",
1055
+ "type": "text",
1056
+ "required": false,
1057
+ "columnType": "TEXT"
1058
+ },
1059
+ {
1060
+ "name": "merged",
1061
+ "type": "boolean",
1062
+ "required": false,
1063
+ "columnType": "BOOLEAN"
1064
+ },
1065
+ {
1066
+ "name": "mergedAt",
1067
+ "type": "datetime",
1068
+ "required": false,
1069
+ "columnType": "TIMESTAMP"
1070
+ },
1071
+ {
1072
+ "name": "mergeable",
1073
+ "type": "boolean",
1074
+ "required": false,
1075
+ "columnType": "BOOLEAN"
1076
+ },
1077
+ {
1078
+ "name": "draft",
1079
+ "type": "boolean",
1080
+ "required": false,
1081
+ "columnType": "BOOLEAN"
1082
+ },
1083
+ {
1084
+ "name": "additions",
1085
+ "type": "integer",
1086
+ "required": false,
1087
+ "columnType": "INTEGER"
1088
+ },
1089
+ {
1090
+ "name": "deletions",
1091
+ "type": "integer",
1092
+ "required": false,
1093
+ "columnType": "INTEGER"
1094
+ },
1095
+ {
1096
+ "name": "changedFiles",
1097
+ "type": "integer",
1098
+ "required": false,
1099
+ "columnType": "INTEGER"
1100
+ }
1101
+ ],
1102
+ "relationships": [
1103
+ {
1104
+ "name": "repositoryId",
1105
+ "type": "foreignKey",
1106
+ "required": true,
1107
+ "related": "Repository",
1108
+ "columnType": "UUID"
1109
+ }
1110
+ ],
1111
+ "methods": [
1112
+ "addComment",
1113
+ "addLabels",
1114
+ "assign",
1115
+ "classifyConstraintError",
1116
+ "clearCache",
1117
+ "clearEmbeddings",
1118
+ "close",
1119
+ "convertToDraft",
1120
+ "delete",
1121
+ "describe",
1122
+ "destroy",
1123
+ "do",
1124
+ "executeToolCall",
1125
+ "findLinkedIssue",
1126
+ "forget",
1127
+ "forgetScope",
1128
+ "generateEmbeddings",
1129
+ "getAiUsageSnapshot",
1130
+ "getAvailableTools",
1131
+ "getChangeSize",
1132
+ "getClient",
1133
+ "getComments",
1134
+ "getEmbedding",
1135
+ "getFields",
1136
+ "getId",
1137
+ "getRelated",
1138
+ "getRepository",
1139
+ "getSavedId",
1140
+ "getSlug",
1141
+ "getUrl",
1142
+ "hasStaleEmbeddings",
1143
+ "incorporateFeedback",
1144
+ "initialize",
1145
+ "is",
1146
+ "isBugReport",
1147
+ "isFeatureRequest",
1148
+ "isReadyToMerge",
1149
+ "isRelatedLoaded",
1150
+ "isSaved",
1151
+ "listAiUsage",
1152
+ "loadDataFromDb",
1153
+ "loadFromId",
1154
+ "loadFromSlug",
1155
+ "loadRelated",
1156
+ "loadRelatedMany",
1157
+ "markAsPersisted",
1158
+ "markReady",
1159
+ "merge",
1160
+ "needsReview",
1161
+ "recall",
1162
+ "recallAll",
1163
+ "remember",
1164
+ "removeLabel",
1165
+ "requestReviewers",
1166
+ "resetAiUsage",
1167
+ "rollback",
1168
+ "save",
1169
+ "suggestLabels",
1170
+ "suggestReviewers",
1171
+ "summarize",
1172
+ "summarizeAiUsage",
1173
+ "sync",
1174
+ "toJSON",
1175
+ "toPlainObject",
1176
+ "toPublicJSON"
1177
+ ],
1178
+ "surfaces": [
1179
+ {
1180
+ "kind": "api",
1181
+ "name": "issues.list",
1182
+ "operation": "list",
1183
+ "objectName": "@happyvertical/smrt-projects:PullRequest",
1184
+ "path": "/issues",
1185
+ "method": "GET"
1186
+ },
1187
+ {
1188
+ "kind": "api",
1189
+ "name": "issues.get",
1190
+ "operation": "get",
1191
+ "objectName": "@happyvertical/smrt-projects:PullRequest",
1192
+ "path": "/issues/[id]",
1193
+ "method": "GET"
1194
+ },
1195
+ {
1196
+ "kind": "api",
1197
+ "name": "issues.create",
1198
+ "operation": "create",
1199
+ "objectName": "@happyvertical/smrt-projects:PullRequest",
1200
+ "path": "/issues",
1201
+ "method": "POST"
1202
+ },
1203
+ {
1204
+ "kind": "api",
1205
+ "name": "issues.update",
1206
+ "operation": "update",
1207
+ "objectName": "@happyvertical/smrt-projects:PullRequest",
1208
+ "path": "/issues/[id]",
1209
+ "method": "PATCH"
1210
+ },
1211
+ {
1212
+ "kind": "cli",
1213
+ "name": "pullrequest_list",
1214
+ "operation": "list",
1215
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1216
+ },
1217
+ {
1218
+ "kind": "cli",
1219
+ "name": "pullrequest_get",
1220
+ "operation": "get",
1221
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1222
+ },
1223
+ {
1224
+ "kind": "cli",
1225
+ "name": "pullrequest_sync",
1226
+ "operation": "sync",
1227
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1228
+ },
1229
+ {
1230
+ "kind": "cli",
1231
+ "name": "pullrequest_summarize",
1232
+ "operation": "summarize",
1233
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1234
+ },
1235
+ {
1236
+ "kind": "cli",
1237
+ "name": "pullrequest_merge",
1238
+ "operation": "merge",
1239
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1240
+ },
1241
+ {
1242
+ "kind": "cli",
1243
+ "name": "pullrequest_markReady",
1244
+ "operation": "markReady",
1245
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1246
+ },
1247
+ {
1248
+ "kind": "mcp",
1249
+ "name": "pullrequest_list",
1250
+ "operation": "list",
1251
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1252
+ },
1253
+ {
1254
+ "kind": "mcp",
1255
+ "name": "pullrequest_get",
1256
+ "operation": "get",
1257
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1258
+ },
1259
+ {
1260
+ "kind": "mcp",
1261
+ "name": "pullrequest_sync",
1262
+ "operation": "sync",
1263
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1264
+ },
1265
+ {
1266
+ "kind": "mcp",
1267
+ "name": "pullrequest_summarize",
1268
+ "operation": "summarize",
1269
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1270
+ },
1271
+ {
1272
+ "kind": "mcp",
1273
+ "name": "pullrequest_merge",
1274
+ "operation": "merge",
1275
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1276
+ }
1277
+ ],
1278
+ "relationshipFeatures": [
1279
+ "foreignKey",
1280
+ "uuidColumns"
1281
+ ],
1282
+ "tags": [],
1283
+ "risks": []
1284
+ },
1285
+ {
1286
+ "name": "Repository",
1287
+ "qualifiedName": "@happyvertical/smrt-projects:Repository",
1288
+ "collection": "repositories",
1289
+ "tableName": "repositories",
1290
+ "packageName": "@happyvertical/smrt-projects",
1291
+ "extends": "SmrtObject",
1292
+ "fields": [
1293
+ {
1294
+ "name": "tenantId",
1295
+ "type": "text",
1296
+ "required": false,
1297
+ "columnType": "UUID"
1298
+ },
1299
+ {
1300
+ "name": "owner",
1301
+ "type": "text",
1302
+ "required": false,
1303
+ "columnType": "TEXT"
1304
+ },
1305
+ {
1306
+ "name": "name",
1307
+ "type": "text",
1308
+ "required": false,
1309
+ "columnType": "TEXT"
1310
+ },
1311
+ {
1312
+ "name": "fullName",
1313
+ "type": "text",
1314
+ "required": false,
1315
+ "columnType": "TEXT"
1316
+ },
1317
+ {
1318
+ "name": "description",
1319
+ "type": "text",
1320
+ "required": false,
1321
+ "columnType": "TEXT"
1322
+ },
1323
+ {
1324
+ "name": "defaultBranch",
1325
+ "type": "text",
1326
+ "required": false,
1327
+ "columnType": "TEXT"
1328
+ },
1329
+ {
1330
+ "name": "isPrivate",
1331
+ "type": "boolean",
1332
+ "required": false,
1333
+ "columnType": "BOOLEAN"
1334
+ },
1335
+ {
1336
+ "name": "providerType",
1337
+ "type": "text",
1338
+ "required": false,
1339
+ "columnType": "TEXT"
1340
+ },
1341
+ {
1342
+ "name": "baseUrl",
1343
+ "type": "text",
1344
+ "required": false,
1345
+ "columnType": "TEXT"
1346
+ },
1347
+ {
1348
+ "name": "tokenConfigKey",
1349
+ "type": "text",
1350
+ "required": false,
1351
+ "columnType": "TEXT"
1352
+ },
1353
+ {
1354
+ "name": "lastSyncedAt",
1355
+ "type": "datetime",
1356
+ "required": false,
1357
+ "columnType": "TIMESTAMP"
1358
+ }
1359
+ ],
1360
+ "relationships": [],
1361
+ "methods": [
1362
+ "clearClient",
1363
+ "createIssue",
1364
+ "createPullRequest",
1365
+ "getByFullName",
1366
+ "getClient",
1367
+ "getIssues",
1368
+ "getPullRequests",
1369
+ "hasOpenIssuesMatching",
1370
+ "summarizeActivity",
1371
+ "sync"
1372
+ ],
1373
+ "surfaces": [
1374
+ {
1375
+ "kind": "api",
1376
+ "name": "repositories.list",
1377
+ "operation": "list",
1378
+ "objectName": "@happyvertical/smrt-projects:Repository",
1379
+ "path": "/repositories",
1380
+ "method": "GET"
1381
+ },
1382
+ {
1383
+ "kind": "api",
1384
+ "name": "repositories.get",
1385
+ "operation": "get",
1386
+ "objectName": "@happyvertical/smrt-projects:Repository",
1387
+ "path": "/repositories/[id]",
1388
+ "method": "GET"
1389
+ },
1390
+ {
1391
+ "kind": "api",
1392
+ "name": "repositories.create",
1393
+ "operation": "create",
1394
+ "objectName": "@happyvertical/smrt-projects:Repository",
1395
+ "path": "/repositories",
1396
+ "method": "POST"
1397
+ },
1398
+ {
1399
+ "kind": "api",
1400
+ "name": "repositories.update",
1401
+ "operation": "update",
1402
+ "objectName": "@happyvertical/smrt-projects:Repository",
1403
+ "path": "/repositories/[id]",
1404
+ "method": "PATCH"
1405
+ },
1406
+ {
1407
+ "kind": "cli",
1408
+ "name": "repository_list",
1409
+ "operation": "list",
1410
+ "objectName": "@happyvertical/smrt-projects:Repository"
1411
+ },
1412
+ {
1413
+ "kind": "cli",
1414
+ "name": "repository_get",
1415
+ "operation": "get",
1416
+ "objectName": "@happyvertical/smrt-projects:Repository"
1417
+ },
1418
+ {
1419
+ "kind": "cli",
1420
+ "name": "repository_sync",
1421
+ "operation": "sync",
1422
+ "objectName": "@happyvertical/smrt-projects:Repository"
1423
+ },
1424
+ {
1425
+ "kind": "cli",
1426
+ "name": "repository_create",
1427
+ "operation": "create",
1428
+ "objectName": "@happyvertical/smrt-projects:Repository"
1429
+ },
1430
+ {
1431
+ "kind": "mcp",
1432
+ "name": "repository_list",
1433
+ "operation": "list",
1434
+ "objectName": "@happyvertical/smrt-projects:Repository"
1435
+ },
1436
+ {
1437
+ "kind": "mcp",
1438
+ "name": "repository_get",
1439
+ "operation": "get",
1440
+ "objectName": "@happyvertical/smrt-projects:Repository"
1441
+ },
1442
+ {
1443
+ "kind": "mcp",
1444
+ "name": "repository_sync",
1445
+ "operation": "sync",
1446
+ "objectName": "@happyvertical/smrt-projects:Repository"
1447
+ }
1448
+ ],
1449
+ "relationshipFeatures": [
1450
+ "uuidColumns"
1451
+ ],
1452
+ "tags": [],
1453
+ "risks": []
1454
+ }
1455
+ ],
1456
+ "surfaces": [
1457
+ {
1458
+ "kind": "api",
1459
+ "name": "comments.list",
1460
+ "operation": "list",
1461
+ "objectName": "@happyvertical/smrt-projects:Comment",
1462
+ "path": "/comments",
1463
+ "method": "GET"
1464
+ },
1465
+ {
1466
+ "kind": "api",
1467
+ "name": "comments.get",
1468
+ "operation": "get",
1469
+ "objectName": "@happyvertical/smrt-projects:Comment",
1470
+ "path": "/comments/[id]",
1471
+ "method": "GET"
1472
+ },
1473
+ {
1474
+ "kind": "cli",
1475
+ "name": "comment_list",
1476
+ "operation": "list",
1477
+ "objectName": "@happyvertical/smrt-projects:Comment"
1478
+ },
1479
+ {
1480
+ "kind": "cli",
1481
+ "name": "comment_get",
1482
+ "operation": "get",
1483
+ "objectName": "@happyvertical/smrt-projects:Comment"
1484
+ },
1485
+ {
1486
+ "kind": "mcp",
1487
+ "name": "comment_list",
1488
+ "operation": "list",
1489
+ "objectName": "@happyvertical/smrt-projects:Comment"
1490
+ },
1491
+ {
1492
+ "kind": "mcp",
1493
+ "name": "comment_get",
1494
+ "operation": "get",
1495
+ "objectName": "@happyvertical/smrt-projects:Comment"
1496
+ },
1497
+ {
1498
+ "kind": "api",
1499
+ "name": "issues.list",
1500
+ "operation": "list",
1501
+ "objectName": "@happyvertical/smrt-projects:Issue",
1502
+ "path": "/issues",
1503
+ "method": "GET"
1504
+ },
1505
+ {
1506
+ "kind": "api",
1507
+ "name": "issues.get",
1508
+ "operation": "get",
1509
+ "objectName": "@happyvertical/smrt-projects:Issue",
1510
+ "path": "/issues/[id]",
1511
+ "method": "GET"
1512
+ },
1513
+ {
1514
+ "kind": "api",
1515
+ "name": "issues.create",
1516
+ "operation": "create",
1517
+ "objectName": "@happyvertical/smrt-projects:Issue",
1518
+ "path": "/issues",
1519
+ "method": "POST"
1520
+ },
1521
+ {
1522
+ "kind": "api",
1523
+ "name": "issues.update",
1524
+ "operation": "update",
1525
+ "objectName": "@happyvertical/smrt-projects:Issue",
1526
+ "path": "/issues/[id]",
1527
+ "method": "PATCH"
1528
+ },
1529
+ {
1530
+ "kind": "cli",
1531
+ "name": "issue_list",
1532
+ "operation": "list",
1533
+ "objectName": "@happyvertical/smrt-projects:Issue"
1534
+ },
1535
+ {
1536
+ "kind": "cli",
1537
+ "name": "issue_get",
1538
+ "operation": "get",
1539
+ "objectName": "@happyvertical/smrt-projects:Issue"
1540
+ },
1541
+ {
1542
+ "kind": "cli",
1543
+ "name": "issue_sync",
1544
+ "operation": "sync",
1545
+ "objectName": "@happyvertical/smrt-projects:Issue"
1546
+ },
1547
+ {
1548
+ "kind": "cli",
1549
+ "name": "issue_incorporateFeedback",
1550
+ "operation": "incorporateFeedback",
1551
+ "objectName": "@happyvertical/smrt-projects:Issue"
1552
+ },
1553
+ {
1554
+ "kind": "cli",
1555
+ "name": "issue_rollback",
1556
+ "operation": "rollback",
1557
+ "objectName": "@happyvertical/smrt-projects:Issue"
1558
+ },
1559
+ {
1560
+ "kind": "mcp",
1561
+ "name": "issue_list",
1562
+ "operation": "list",
1563
+ "objectName": "@happyvertical/smrt-projects:Issue"
1564
+ },
1565
+ {
1566
+ "kind": "mcp",
1567
+ "name": "issue_get",
1568
+ "operation": "get",
1569
+ "objectName": "@happyvertical/smrt-projects:Issue"
1570
+ },
1571
+ {
1572
+ "kind": "mcp",
1573
+ "name": "issue_sync",
1574
+ "operation": "sync",
1575
+ "objectName": "@happyvertical/smrt-projects:Issue"
1576
+ },
1577
+ {
1578
+ "kind": "mcp",
1579
+ "name": "issue_incorporateFeedback",
1580
+ "operation": "incorporateFeedback",
1581
+ "objectName": "@happyvertical/smrt-projects:Issue"
1582
+ },
1583
+ {
1584
+ "kind": "api",
1585
+ "name": "labels.list",
1586
+ "operation": "list",
1587
+ "objectName": "@happyvertical/smrt-projects:Label",
1588
+ "path": "/labels",
1589
+ "method": "GET"
1590
+ },
1591
+ {
1592
+ "kind": "api",
1593
+ "name": "labels.get",
1594
+ "operation": "get",
1595
+ "objectName": "@happyvertical/smrt-projects:Label",
1596
+ "path": "/labels/[id]",
1597
+ "method": "GET"
1598
+ },
1599
+ {
1600
+ "kind": "api",
1601
+ "name": "labels.create",
1602
+ "operation": "create",
1603
+ "objectName": "@happyvertical/smrt-projects:Label",
1604
+ "path": "/labels",
1605
+ "method": "POST"
1606
+ },
1607
+ {
1608
+ "kind": "api",
1609
+ "name": "labels.update",
1610
+ "operation": "update",
1611
+ "objectName": "@happyvertical/smrt-projects:Label",
1612
+ "path": "/labels/[id]",
1613
+ "method": "PATCH"
1614
+ },
1615
+ {
1616
+ "kind": "api",
1617
+ "name": "labels.delete",
1618
+ "operation": "delete",
1619
+ "objectName": "@happyvertical/smrt-projects:Label",
1620
+ "path": "/labels/[id]",
1621
+ "method": "DELETE"
1622
+ },
1623
+ {
1624
+ "kind": "cli",
1625
+ "name": "label_list",
1626
+ "operation": "list",
1627
+ "objectName": "@happyvertical/smrt-projects:Label"
1628
+ },
1629
+ {
1630
+ "kind": "cli",
1631
+ "name": "label_get",
1632
+ "operation": "get",
1633
+ "objectName": "@happyvertical/smrt-projects:Label"
1634
+ },
1635
+ {
1636
+ "kind": "cli",
1637
+ "name": "label_create",
1638
+ "operation": "create",
1639
+ "objectName": "@happyvertical/smrt-projects:Label"
1640
+ },
1641
+ {
1642
+ "kind": "cli",
1643
+ "name": "label_update",
1644
+ "operation": "update",
1645
+ "objectName": "@happyvertical/smrt-projects:Label"
1646
+ },
1647
+ {
1648
+ "kind": "cli",
1649
+ "name": "label_delete",
1650
+ "operation": "delete",
1651
+ "objectName": "@happyvertical/smrt-projects:Label"
1652
+ },
1653
+ {
1654
+ "kind": "mcp",
1655
+ "name": "label_list",
1656
+ "operation": "list",
1657
+ "objectName": "@happyvertical/smrt-projects:Label"
1658
+ },
1659
+ {
1660
+ "kind": "mcp",
1661
+ "name": "label_get",
1662
+ "operation": "get",
1663
+ "objectName": "@happyvertical/smrt-projects:Label"
1664
+ },
1665
+ {
1666
+ "kind": "mcp",
1667
+ "name": "label_create",
1668
+ "operation": "create",
1669
+ "objectName": "@happyvertical/smrt-projects:Label"
1670
+ },
1671
+ {
1672
+ "kind": "api",
1673
+ "name": "projects.list",
1674
+ "operation": "list",
1675
+ "objectName": "@happyvertical/smrt-projects:Project",
1676
+ "path": "/projects",
1677
+ "method": "GET"
1678
+ },
1679
+ {
1680
+ "kind": "api",
1681
+ "name": "projects.get",
1682
+ "operation": "get",
1683
+ "objectName": "@happyvertical/smrt-projects:Project",
1684
+ "path": "/projects/[id]",
1685
+ "method": "GET"
1686
+ },
1687
+ {
1688
+ "kind": "api",
1689
+ "name": "projects.create",
1690
+ "operation": "create",
1691
+ "objectName": "@happyvertical/smrt-projects:Project",
1692
+ "path": "/projects",
1693
+ "method": "POST"
1694
+ },
1695
+ {
1696
+ "kind": "api",
1697
+ "name": "projects.update",
1698
+ "operation": "update",
1699
+ "objectName": "@happyvertical/smrt-projects:Project",
1700
+ "path": "/projects/[id]",
1701
+ "method": "PATCH"
1702
+ },
1703
+ {
1704
+ "kind": "cli",
1705
+ "name": "project_list",
1706
+ "operation": "list",
1707
+ "objectName": "@happyvertical/smrt-projects:Project"
1708
+ },
1709
+ {
1710
+ "kind": "cli",
1711
+ "name": "project_get",
1712
+ "operation": "get",
1713
+ "objectName": "@happyvertical/smrt-projects:Project"
1714
+ },
1715
+ {
1716
+ "kind": "cli",
1717
+ "name": "project_sync",
1718
+ "operation": "sync",
1719
+ "objectName": "@happyvertical/smrt-projects:Project"
1720
+ },
1721
+ {
1722
+ "kind": "cli",
1723
+ "name": "project_addItem",
1724
+ "operation": "addItem",
1725
+ "objectName": "@happyvertical/smrt-projects:Project"
1726
+ },
1727
+ {
1728
+ "kind": "cli",
1729
+ "name": "project_updateItemStatus",
1730
+ "operation": "updateItemStatus",
1731
+ "objectName": "@happyvertical/smrt-projects:Project"
1732
+ },
1733
+ {
1734
+ "kind": "cli",
1735
+ "name": "project_listItems",
1736
+ "operation": "listItems",
1737
+ "objectName": "@happyvertical/smrt-projects:Project"
1738
+ },
1739
+ {
1740
+ "kind": "mcp",
1741
+ "name": "project_list",
1742
+ "operation": "list",
1743
+ "objectName": "@happyvertical/smrt-projects:Project"
1744
+ },
1745
+ {
1746
+ "kind": "mcp",
1747
+ "name": "project_get",
1748
+ "operation": "get",
1749
+ "objectName": "@happyvertical/smrt-projects:Project"
1750
+ },
1751
+ {
1752
+ "kind": "mcp",
1753
+ "name": "project_sync",
1754
+ "operation": "sync",
1755
+ "objectName": "@happyvertical/smrt-projects:Project"
1756
+ },
1757
+ {
1758
+ "kind": "mcp",
1759
+ "name": "project_addItem",
1760
+ "operation": "addItem",
1761
+ "objectName": "@happyvertical/smrt-projects:Project"
1762
+ },
1763
+ {
1764
+ "kind": "mcp",
1765
+ "name": "project_updateItemStatus",
1766
+ "operation": "updateItemStatus",
1767
+ "objectName": "@happyvertical/smrt-projects:Project"
1768
+ },
1769
+ {
1770
+ "kind": "api",
1771
+ "name": "issues.list",
1772
+ "operation": "list",
1773
+ "objectName": "@happyvertical/smrt-projects:PullRequest",
1774
+ "path": "/issues",
1775
+ "method": "GET"
1776
+ },
1777
+ {
1778
+ "kind": "api",
1779
+ "name": "issues.get",
1780
+ "operation": "get",
1781
+ "objectName": "@happyvertical/smrt-projects:PullRequest",
1782
+ "path": "/issues/[id]",
1783
+ "method": "GET"
1784
+ },
1785
+ {
1786
+ "kind": "api",
1787
+ "name": "issues.create",
1788
+ "operation": "create",
1789
+ "objectName": "@happyvertical/smrt-projects:PullRequest",
1790
+ "path": "/issues",
1791
+ "method": "POST"
1792
+ },
1793
+ {
1794
+ "kind": "api",
1795
+ "name": "issues.update",
1796
+ "operation": "update",
1797
+ "objectName": "@happyvertical/smrt-projects:PullRequest",
1798
+ "path": "/issues/[id]",
1799
+ "method": "PATCH"
1800
+ },
1801
+ {
1802
+ "kind": "cli",
1803
+ "name": "pullrequest_list",
1804
+ "operation": "list",
1805
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1806
+ },
1807
+ {
1808
+ "kind": "cli",
1809
+ "name": "pullrequest_get",
1810
+ "operation": "get",
1811
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1812
+ },
1813
+ {
1814
+ "kind": "cli",
1815
+ "name": "pullrequest_sync",
1816
+ "operation": "sync",
1817
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1818
+ },
1819
+ {
1820
+ "kind": "cli",
1821
+ "name": "pullrequest_summarize",
1822
+ "operation": "summarize",
1823
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1824
+ },
1825
+ {
1826
+ "kind": "cli",
1827
+ "name": "pullrequest_merge",
1828
+ "operation": "merge",
1829
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1830
+ },
1831
+ {
1832
+ "kind": "cli",
1833
+ "name": "pullrequest_markReady",
1834
+ "operation": "markReady",
1835
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1836
+ },
1837
+ {
1838
+ "kind": "mcp",
1839
+ "name": "pullrequest_list",
1840
+ "operation": "list",
1841
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1842
+ },
1843
+ {
1844
+ "kind": "mcp",
1845
+ "name": "pullrequest_get",
1846
+ "operation": "get",
1847
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1848
+ },
1849
+ {
1850
+ "kind": "mcp",
1851
+ "name": "pullrequest_sync",
1852
+ "operation": "sync",
1853
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1854
+ },
1855
+ {
1856
+ "kind": "mcp",
1857
+ "name": "pullrequest_summarize",
1858
+ "operation": "summarize",
1859
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1860
+ },
1861
+ {
1862
+ "kind": "mcp",
1863
+ "name": "pullrequest_merge",
1864
+ "operation": "merge",
1865
+ "objectName": "@happyvertical/smrt-projects:PullRequest"
1866
+ },
1867
+ {
1868
+ "kind": "api",
1869
+ "name": "repositories.list",
1870
+ "operation": "list",
1871
+ "objectName": "@happyvertical/smrt-projects:Repository",
1872
+ "path": "/repositories",
1873
+ "method": "GET"
1874
+ },
1875
+ {
1876
+ "kind": "api",
1877
+ "name": "repositories.get",
1878
+ "operation": "get",
1879
+ "objectName": "@happyvertical/smrt-projects:Repository",
1880
+ "path": "/repositories/[id]",
1881
+ "method": "GET"
1882
+ },
1883
+ {
1884
+ "kind": "api",
1885
+ "name": "repositories.create",
1886
+ "operation": "create",
1887
+ "objectName": "@happyvertical/smrt-projects:Repository",
1888
+ "path": "/repositories",
1889
+ "method": "POST"
1890
+ },
1891
+ {
1892
+ "kind": "api",
1893
+ "name": "repositories.update",
1894
+ "operation": "update",
1895
+ "objectName": "@happyvertical/smrt-projects:Repository",
1896
+ "path": "/repositories/[id]",
1897
+ "method": "PATCH"
1898
+ },
1899
+ {
1900
+ "kind": "cli",
1901
+ "name": "repository_list",
1902
+ "operation": "list",
1903
+ "objectName": "@happyvertical/smrt-projects:Repository"
1904
+ },
1905
+ {
1906
+ "kind": "cli",
1907
+ "name": "repository_get",
1908
+ "operation": "get",
1909
+ "objectName": "@happyvertical/smrt-projects:Repository"
1910
+ },
1911
+ {
1912
+ "kind": "cli",
1913
+ "name": "repository_sync",
1914
+ "operation": "sync",
1915
+ "objectName": "@happyvertical/smrt-projects:Repository"
1916
+ },
1917
+ {
1918
+ "kind": "cli",
1919
+ "name": "repository_create",
1920
+ "operation": "create",
1921
+ "objectName": "@happyvertical/smrt-projects:Repository"
1922
+ },
1923
+ {
1924
+ "kind": "mcp",
1925
+ "name": "repository_list",
1926
+ "operation": "list",
1927
+ "objectName": "@happyvertical/smrt-projects:Repository"
1928
+ },
1929
+ {
1930
+ "kind": "mcp",
1931
+ "name": "repository_get",
1932
+ "operation": "get",
1933
+ "objectName": "@happyvertical/smrt-projects:Repository"
1934
+ },
1935
+ {
1936
+ "kind": "mcp",
1937
+ "name": "repository_sync",
1938
+ "operation": "sync",
1939
+ "objectName": "@happyvertical/smrt-projects:Repository"
1940
+ }
1941
+ ],
1942
+ "prompts": [
1943
+ {
1944
+ "filePath": "src/prompts.ts"
1945
+ }
1946
+ ],
1947
+ "relationshipsV2": {
1948
+ "foreignKeyFields": 4,
1949
+ "crossPackageRefFields": 0,
1950
+ "junctionCollections": 0,
1951
+ "hierarchicalObjects": 0,
1952
+ "polymorphicAssociations": 0,
1953
+ "uuidColumns": 19
1954
+ },
1955
+ "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"
1956
+ }