@happyvertical/smrt-projects 0.40.66 → 0.40.67

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 (43) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +489 -420
  4. package/dist/index.js.map +1 -1
  5. package/dist/managed-client.d.ts +9 -0
  6. package/dist/managed-client.d.ts.map +1 -1
  7. package/dist/manifest.json +1 -1
  8. package/dist/playground.js +48 -3
  9. package/dist/playground.js.map +1 -1
  10. package/dist/project-board-types.d.ts +12 -0
  11. package/dist/project-board-types.d.ts.map +1 -0
  12. package/dist/project-board-types.js +0 -0
  13. package/dist/services/delivery-service.d.ts +1 -1
  14. package/dist/services/delivery-service.d.ts.map +1 -1
  15. package/dist/services/index.d.ts +1 -0
  16. package/dist/services/index.d.ts.map +1 -1
  17. package/dist/services/project-board-service.d.ts +32 -0
  18. package/dist/services/project-board-service.d.ts.map +1 -0
  19. package/dist/smrt-knowledge.json +5 -3
  20. package/dist/svelte/DevelopmentBoard.svelte +54 -74
  21. package/dist/svelte/DevelopmentBoard.svelte.d.ts.map +1 -1
  22. package/dist/svelte/ProjectBoard.svelte +157 -0
  23. package/dist/svelte/ProjectBoard.svelte.d.ts +32 -0
  24. package/dist/svelte/ProjectBoard.svelte.d.ts.map +1 -0
  25. package/dist/svelte/components/__tests__/ProjectBoard.test.js +156 -0
  26. package/dist/svelte/i18n.d.ts +2 -0
  27. package/dist/svelte/i18n.d.ts.map +1 -1
  28. package/dist/svelte/i18n.js +2 -0
  29. package/dist/svelte/index.d.ts +4 -1
  30. package/dist/svelte/index.d.ts.map +1 -1
  31. package/dist/svelte/index.js +3 -1
  32. package/dist/svelte/playground.d.ts +99 -0
  33. package/dist/svelte/playground.d.ts.map +1 -1
  34. package/dist/svelte/playground.js +49 -3
  35. package/dist/svelte/project-board-types.d.ts +3 -0
  36. package/dist/svelte/project-board-types.d.ts.map +1 -0
  37. package/dist/svelte/project-board-types.js +1 -0
  38. package/dist/types.d.ts +1 -1
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/ui.d.ts.map +1 -1
  41. package/dist/ui.js +10 -1
  42. package/dist/ui.js.map +1 -1
  43. package/package.json +11 -10
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import { getModuleConfig } from "@happyvertical/smrt-config";
11
11
  import { getRepository } from "@happyvertical/repos";
12
12
  import { CommercialUsageService } from "@happyvertical/smrt-subscriptions";
13
13
  //#region src/__smrt-register__.ts
14
- ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-projects\",\"packageVersion\":\"0.40.66\",\"objects\":{\"@happyvertical/smrt-projects:DevelopmentRequestHistoryCollection\":{\"name\":\"developmentrequesthistorycollection\",\"className\":\"DevelopmentRequestHistoryCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestHistoryCollection\",\"collection\":\"developmentrequesthistories\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/DevelopmentRequestHistories.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"listForRequest\":{\"name\":\"listForRequest\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"requestId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<DevelopmentRequestHistory[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"development_request_histories\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"DevelopmentRequestHistory\",\"exportName\":\"DevelopmentRequestHistoryCollection\",\"collectionExportName\":\"DevelopmentRequestHistoryCollectionCollection\",\"schema\":{\"tableName\":\"development_request_histories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_request_histories\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"development_request_histories_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_request_histories_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"97a2530c\"}},\"@happyvertical/smrt-projects:DevelopmentRequestCollection\":{\"name\":\"developmentrequestcollection\",\"className\":\"DevelopmentRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestCollection\",\"collection\":\"developmentrequests\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/DevelopmentRequests.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"createManaged\":{\"name\":\"createManaged\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"any\",\"optional\":false}],\"returnType\":\"Promise<DevelopmentRequest>\",\"isStatic\":false,\"isPublic\":true},\"listByIntegrationRequester\":{\"name\":\"listByIntegrationRequester\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<DevelopmentRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"transitionStatus\":{\"name\":\"transitionStatus\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"requestId\",\"type\":\"string\",\"optional\":false},{\"name\":\"transition\",\"type\":\"DevelopmentRequestTransitionInput\",\"optional\":false}],\"returnType\":\"Promise<DevelopmentRequest>\",\"isStatic\":false,\"isPublic\":true},\"listForProject\":{\"name\":\"listForProject\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"projectId\",\"type\":\"string\",\"optional\":false},{\"name\":\"status\",\"type\":\"DevelopmentRequestStatus\",\"optional\":true}],\"returnType\":\"Promise<DevelopmentRequest[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"development_requests\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"DevelopmentRequest\",\"exportName\":\"DevelopmentRequestCollection\",\"collectionExportName\":\"DevelopmentRequestCollectionCollection\",\"schema\":{\"tableName\":\"development_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_requests\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"development_requests_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"9d07b06c\"}},\"@happyvertical/smrt-projects:IssueCollection\":{\"name\":\"issuecollection\",\"className\":\"IssueCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:IssueCollection\",\"collection\":\"issues\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/Issues.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"discover\":{\"name\":\"discover\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByRepository\":{\"name\":\"findByRepository\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findOpen\":{\"name\":\"findOpen\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByLabel\":{\"name\":\"findByLabel\",\"async\":true,\"parameters\":[{\"name\":\"label\",\"type\":\"string\",\"optional\":false},{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByAssignee\":{\"name\":\"findByAssignee\",\"async\":true,\"parameters\":[{\"name\":\"assignee\",\"type\":\"string\",\"optional\":false},{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findNeedingReview\":{\"name\":\"findNeedingReview\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByNumber\":{\"name\":\"findByNumber\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":false},{\"name\":\"number\",\"type\":\"number\",\"optional\":false}],\"returnType\":\"Promise<Issue | null>\",\"isStatic\":false,\"isPublic\":true},\"findWithUnincorporatedFeedback\":{\"name\":\"findWithUnincorporatedFeedback\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"batchSync\":{\"name\":\"batchSync\",\"async\":true,\"parameters\":[{\"name\":\"repository\",\"type\":\"Repository\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Issue\",\"exportName\":\"IssueCollection\",\"collectionExportName\":\"IssueCollectionCollection\",\"schema\":{\"tableName\":\"issue_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"issue_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"issue_collections_id_idx\",\"columns\":[\"id\"]},{\"name\":\"issue_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"93b3c6f0\"}},\"@happyvertical/smrt-projects:ProjectIntegrationAuditCollection\":{\"name\":\"projectintegrationauditcollection\",\"className\":\"ProjectIntegrationAuditCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectIntegrationAuditCollection\",\"collection\":\"projectintegrationaudits\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/ProjectIntegrationAudits.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"listForIntegration\":{\"name\":\"listForIntegration\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"integrationId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegrationAudit[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"project_integration_audits\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProjectIntegrationAudit\",\"exportName\":\"ProjectIntegrationAuditCollection\",\"collectionExportName\":\"ProjectIntegrationAuditCollectionCollection\",\"schema\":{\"tableName\":\"project_integration_audits\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_integration_audits\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"project_integration_audits_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_integration_audits_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"3066e366\"}},\"@happyvertical/smrt-projects:ProjectIntegrationCollection\":{\"name\":\"projectintegrationcollection\",\"className\":\"ProjectIntegrationCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectIntegrationCollection\",\"collection\":\"projectintegrations\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/ProjectIntegrations.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"provision\":{\"name\":\"provision\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"rotate\":{\"name\":\"rotate\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"integrationId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"revoke\":{\"name\":\"revoke\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"integrationId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegration>\",\"isStatic\":false,\"isPublic\":true},\"authenticate\":{\"name\":\"authenticate\",\"async\":true,\"parameters\":[{\"name\":\"credential\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegration | null>\",\"isStatic\":false,\"isPublic\":true},\"listForProject\":{\"name\":\"listForProject\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"projectId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegration[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"integrationId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegration | null>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"project_integrations\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProjectIntegration\",\"exportName\":\"ProjectIntegrationCollection\",\"collectionExportName\":\"ProjectIntegrationCollectionCollection\",\"schema\":{\"tableName\":\"project_integrations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_integrations\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"project_integrations_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_integrations_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"61d58a70\"}},\"@happyvertical/smrt-projects:ProjectCollection\":{\"name\":\"projectcollection\",\"className\":\"ProjectCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectCollection\",\"collection\":\"projects\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/Projects.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"findByTitle\":{\"name\":\"findByTitle\",\"async\":true,\"parameters\":[{\"name\":\"title\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project | null>\",\"isStatic\":false,\"isPublic\":true},\"findByOwner\":{\"name\":\"findByOwner\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"findByProvider\":{\"name\":\"findByProvider\",\"async\":true,\"parameters\":[{\"name\":\"providerType\",\"type\":\"ProjectProviderType\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreate\":{\"name\":\"getOrCreate\",\"async\":true,\"parameters\":[{\"name\":\"projectId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Project>\",\"isStatic\":false,\"isPublic\":true},\"syncAll\":{\"name\":\"syncAll\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithItemsInStatus\":{\"name\":\"findWithItemsInStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"getStatistics\":{\"name\":\"getStatistics\",\"async\":true,\"parameters\":[{\"name\":\"projectId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Project\",\"exportName\":\"ProjectCollection\",\"collectionExportName\":\"ProjectCollectionCollection\",\"schema\":{\"tableName\":\"project_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"project_collections_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"f713c200\"}},\"@happyvertical/smrt-projects:PullRequestCollection\":{\"name\":\"pullrequestcollection\",\"className\":\"PullRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:PullRequestCollection\",\"collection\":\"issues\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/PullRequests.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"discover\":{\"name\":\"discover\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findByRepository\":{\"name\":\"findByRepository\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findOpen\":{\"name\":\"findOpen\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findDrafts\":{\"name\":\"findDrafts\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findReadyToMerge\":{\"name\":\"findReadyToMerge\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findByBranch\":{\"name\":\"findByBranch\",\"async\":true,\"parameters\":[{\"name\":\"branch\",\"type\":\"string\",\"optional\":false},{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findByNumber\":{\"name\":\"findByNumber\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":false},{\"name\":\"number\",\"type\":\"number\",\"optional\":false}],\"returnType\":\"Promise<PullRequest | null>\",\"isStatic\":false,\"isPublic\":true},\"findAIReadyToMerge\":{\"name\":\"findAIReadyToMerge\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySize\":{\"name\":\"findBySize\",\"async\":true,\"parameters\":[{\"name\":\"size\",\"type\":\"'xs' | 's' | 'm' | 'l' | 'xl'\",\"optional\":false},{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"batchSync\":{\"name\":\"batchSync\",\"async\":true,\"parameters\":[{\"name\":\"repository\",\"type\":\"Repository\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"issues\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"PullRequest\",\"exportName\":\"PullRequestCollection\",\"collectionExportName\":\"PullRequestCollectionCollection\",\"schema\":{\"tableName\":\"issues\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"issues\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"issues_id_idx\",\"columns\":[\"id\"]},{\"name\":\"issues_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"798511d0\"}},\"@happyvertical/smrt-projects:RepositoryCollection\":{\"name\":\"repositorycollection\",\"className\":\"RepositoryCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:RepositoryCollection\",\"collection\":\"repositories\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/Repositories.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"findByFullName\":{\"name\":\"findByFullName\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false},{\"name\":\"name\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Repository | null>\",\"isStatic\":false,\"isPublic\":true},\"findByOwner\":{\"name\":\"findByOwner\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findByProvider\":{\"name\":\"findByProvider\",\"async\":true,\"parameters\":[{\"name\":\"providerType\",\"type\":\"RepositoryProviderType\",\"optional\":false}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreate\":{\"name\":\"getOrCreate\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false},{\"name\":\"name\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Repository>\",\"isStatic\":false,\"isPublic\":true},\"syncAll\":{\"name\":\"syncAll\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithOpenIssues\":{\"name\":\"findWithOpenIssues\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Repository\",\"exportName\":\"RepositoryCollection\",\"collectionExportName\":\"RepositoryCollectionCollection\",\"schema\":{\"tableName\":\"repository_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"repository_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"repository_collections_id_idx\",\"columns\":[\"id\"]},{\"name\":\"repository_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"a9b3565e\"}},\"@happyvertical/smrt-projects:Comment\":{\"name\":\"comment\",\"className\":\"Comment\",\"qualifiedName\":\"@happyvertical/smrt-projects:Comment\",\"collection\":\"comments\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Comment.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"issueId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Issue\"},\"commentId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"body\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"author\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false},\"url\":{\"type\":\"text\",\"required\":false,\"default\":\"\"}},\"methods\":{\"isQuestion\":{\"name\":\"isQuestion\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isApproval\":{\"name\":\"isApproval\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"requestsChanges\":{\"name\":\"requestsChanges\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"extractActionItems\":{\"name\":\"extractActionItems\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"summarize\":{\"name\":\"summarize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"getSentiment\":{\"name\":\"getSentiment\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<'positive' | 'negative' | 'neutral'>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Comment\",\"collectionExportName\":\"CommentCollection\",\"schema\":{\"tableName\":\"comments\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"comments\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"issue_id\\\" UUID,\\n \\\"comment_id\\\" TEXT DEFAULT '',\\n \\\"body\\\" TEXT DEFAULT '',\\n \\\"author\\\" TEXT DEFAULT '',\\n \\\"url\\\" TEXT DEFAULT ''\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"issue_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false},\"comment_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"body\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"author\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"comments_id_idx\",\"columns\":[\"id\"]},{\"name\":\"comments_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"ed899e3f\"}},\"@happyvertical/smrt-projects:DevelopmentRequest\":{\"name\":\"developmentrequest\",\"className\":\"DevelopmentRequest\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequest\",\"collection\":\"developmentrequests\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/DevelopmentRequest.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"projectId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"integrationId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProjectIntegration\",\"_meta\":{\"required\":true}},\"requesterId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"participantId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"type\":{\"type\":\"text\",\"required\":false,\"default\":\"feature\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"evidence\":{\"type\":\"text\",\"required\":false,\"default\":\"[]\"},\"visibility\":{\"type\":\"text\",\"required\":false,\"default\":\"requester\"},\"origin\":{\"type\":\"text\",\"required\":false,\"default\":\"managed-app\"},\"discussion\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"status\":{\"type\":\"text\",\"required\":false,\"default\":\"submitted\"}},\"methods\":{\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"getEvidence\":{\"name\":\"getEvidence\",\"async\":false,\"parameters\":[],\"returnType\":\"DevelopmentRequestEvidence[]\",\"isStatic\":false,\"isPublic\":true},\"setEvidence\":{\"name\":\"setEvidence\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"DevelopmentRequestEvidence[] | string\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"development_requests\",\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"DevelopmentRequest\",\"collectionExportName\":\"DevelopmentRequestCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"integrationId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"development_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_requests\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"project_id\\\" TEXT DEFAULT '',\\n \\\"integration_id\\\" UUID NOT NULL,\\n \\\"requester_id\\\" TEXT DEFAULT '',\\n \\\"participant_id\\\" TEXT DEFAULT '',\\n \\\"type\\\" TEXT DEFAULT 'feature',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"evidence\\\" TEXT DEFAULT '[]',\\n \\\"visibility\\\" TEXT DEFAULT 'requester',\\n \\\"origin\\\" TEXT DEFAULT 'managed-app',\\n \\\"discussion\\\" TEXT DEFAULT '',\\n \\\"status\\\" TEXT DEFAULT 'submitted'\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"project_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"integration_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"requester_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"participant_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"feature\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"evidence\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"[]\"},\"visibility\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"requester\"},\"origin\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"managed-app\"},\"discussion\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"submitted\"}},\"indexes\":[{\"name\":\"development_requests_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"0f9594f9\"}},\"@happyvertical/smrt-projects:DevelopmentRequestHistory\":{\"name\":\"developmentrequesthistory\",\"className\":\"DevelopmentRequestHistory\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestHistory\",\"collection\":\"developmentrequesthistories\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/DevelopmentRequestHistory.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"requestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"DevelopmentRequest\",\"_meta\":{\"required\":true}},\"fromStatus\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"toStatus\":{\"type\":\"text\",\"required\":false,\"default\":\"submitted\"},\"actorType\":{\"type\":\"text\",\"required\":false,\"default\":\"system\"},\"actorId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"note\":{\"type\":\"text\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"development_request_histories\",\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"DevelopmentRequestHistory\",\"collectionExportName\":\"DevelopmentRequestHistoryCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"requestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"development_request_histories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_request_histories\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"request_id\\\" UUID NOT NULL,\\n \\\"from_status\\\" TEXT DEFAULT '',\\n \\\"to_status\\\" TEXT DEFAULT 'submitted',\\n \\\"actor_type\\\" TEXT DEFAULT 'system',\\n \\\"actor_id\\\" TEXT DEFAULT '',\\n \\\"note\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"from_status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"to_status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"submitted\"},\"actor_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"system\"},\"actor_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"note\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"development_request_histories_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_request_histories_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"483a3831\"}},\"@happyvertical/smrt-projects:Issue\":{\"name\":\"issue\",\"className\":\"Issue\",\"qualifiedName\":\"@happyvertical/smrt-projects:Issue\",\"collection\":\"issues\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Issue.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"repositoryId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Repository\",\"_meta\":{\"required\":true}},\"number\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"nodeId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"title\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"body\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"state\":{\"type\":\"text\",\"required\":false,\"default\":\"open\"},\"author\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"labels\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"assignees\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"commentsCount\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"lastSyncedAt\":{\"type\":\"datetime\",\"required\":false},\"originalBody\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"synthesisCount\":{\"type\":\"integer\",\"required\":false,\"default\":0}},\"methods\":{\"getAiUsageSnapshot\":{\"name\":\"getAiUsageSnapshot\",\"async\":false,\"parameters\":[],\"returnType\":\"AiUsageSnapshot | undefined\",\"isStatic\":false,\"isPublic\":true},\"resetAiUsage\":{\"name\":\"resetAiUsage\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"listAiUsage\":{\"name\":\"listAiUsage\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiUsageListOptions\",\"optional\":true}],\"returnType\":\"Promise<SmrtAiUsageRecord[]>\",\"isStatic\":false,\"isPublic\":true},\"summarizeAiUsage\":{\"name\":\"summarizeAiUsage\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiUsageSummaryOptions\",\"optional\":true}],\"returnType\":\"Promise<Record<string, AiUsageStats>>\",\"isStatic\":false,\"isPublic\":true},\"destroy\":{\"name\":\"destroy\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"markAsPersisted\":{\"name\":\"markAsPersisted\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"requireInsertOnSave\":{\"name\":\"requireInsertOnSave\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"loadDataFromDb\":{\"name\":\"loadDataFromDb\",\"async\":true,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string>\",\"optional\":false}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getFields\":{\"name\":\"getFields\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"toJSON\":{\"name\":\"toJSON\",\"async\":false,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"toPlainObject\":{\"name\":\"toPlainObject\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"toPublicJSON\":{\"name\":\"toPublicJSON\",\"async\":false,\"parameters\":[{\"name\":\"options\",\"type\":\"PublicJsonOptions\",\"optional\":true}],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"getId\":{\"name\":\"getId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSlug\":{\"name\":\"getSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSavedId\":{\"name\":\"getSavedId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"isSaved\":{\"name\":\"isSaved\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"classifyConstraintError\":{\"name\":\"classifyConstraintError\",\"async\":false,\"parameters\":[{\"name\":\"message\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"'unique' | 'not_null' | null\",\"isStatic\":true,\"isPublic\":true},\"loadFromId\":{\"name\":\"loadFromId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"loadFromSlug\":{\"name\":\"loadFromSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"is\":{\"name\":\"is\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"do\":{\"name\":\"do\",\"async\":true,\"parameters\":[{\"name\":\"instructions\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"describe\":{\"name\":\"describe\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"delete\":{\"name\":\"delete\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"isRelatedLoaded\":{\"name\":\"isRelatedLoaded\",\"async\":false,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"_setLoadedRelationship\":{\"name\":\"_setLoadedRelationship\",\"async\":false,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"any\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"loadRelated\":{\"name\":\"loadRelated\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"loadRelatedMany\":{\"name\":\"loadRelatedMany\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any[]>\",\"isStatic\":false,\"isPublic\":true},\"getRelated\":{\"name\":\"getRelated\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"getAvailableTools\":{\"name\":\"getAvailableTools\",\"async\":false,\"parameters\":[],\"returnType\":\"AITool[]\",\"isStatic\":false,\"isPublic\":true},\"executeToolCall\":{\"name\":\"executeToolCall\",\"async\":true,\"parameters\":[{\"name\":\"toolCall\",\"type\":\"ToolCall\",\"optional\":false}],\"returnType\":\"Promise<ToolCallResult>\",\"isStatic\":false,\"isPublic\":true},\"remember\":{\"name\":\"remember\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"recall\":{\"name\":\"recall\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"recallAll\":{\"name\":\"recallAll\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Map<string>>\",\"isStatic\":false,\"isPublic\":true},\"forget\":{\"name\":\"forget\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"forgetScope\":{\"name\":\"forgetScope\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"generateEmbeddings\":{\"name\":\"generateEmbeddings\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"GenerateEmbeddingsOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getEmbedding\":{\"name\":\"getEmbedding\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"model\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<number[] | null>\",\"isStatic\":false,\"isPublic\":true},\"hasStaleEmbeddings\":{\"name\":\"hasStaleEmbeddings\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"clearEmbeddings\":{\"name\":\"clearEmbeddings\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getRepository\":{\"name\":\"getRepository\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Repository>\",\"isStatic\":false,\"isPublic\":true},\"getClient\":{\"name\":\"getClient\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<IRepository>\",\"isStatic\":false,\"isPublic\":true},\"clearCache\":{\"name\":\"clearCache\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"sync\":{\"name\":\"sync\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SyncOptions\",\"optional\":true}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"getComments\":{\"name\":\"getComments\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Comment[]>\",\"isStatic\":false,\"isPublic\":true},\"addComment\":{\"name\":\"addComment\",\"async\":true,\"parameters\":[{\"name\":\"body\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Comment>\",\"isStatic\":false,\"isPublic\":true},\"incorporateFeedback\":{\"name\":\"incorporateFeedback\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"IncorporateFeedbackOptions\",\"optional\":true}],\"returnType\":\"Promise<IncorporateFeedbackResult>\",\"isStatic\":false,\"isPublic\":true},\"rollback\":{\"name\":\"rollback\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"needsReview\":{\"name\":\"needsReview\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isBugReport\":{\"name\":\"isBugReport\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isFeatureRequest\":{\"name\":\"isFeatureRequest\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"suggestLabels\":{\"name\":\"suggestLabels\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"close\":{\"name\":\"close\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addLabels\":{\"name\":\"addLabels\",\"async\":true,\"parameters\":[{\"name\":\"labels\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeLabel\":{\"name\":\"removeLabel\",\"async\":true,\"parameters\":[{\"name\":\"label\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"assign\":{\"name\":\"assign\",\"async\":true,\"parameters\":[{\"name\":\"assignees\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getUrl\":{\"name\":\"getUrl\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"sync\",\"incorporateFeedback\"]},\"cli\":{\"include\":[\"list\",\"get\",\"sync\",\"incorporateFeedback\",\"rollback\"],\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Issue\",\"collectionExportName\":\"IssueCollection\",\"validationRules\":[{\"field\":\"repositoryId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"issues\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"issues\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"repository_id\\\" UUID,\\n \\\"number\\\" INTEGER DEFAULT 0,\\n \\\"node_id\\\" TEXT DEFAULT '',\\n \\\"title\\\" TEXT DEFAULT '',\\n \\\"body\\\" TEXT DEFAULT '',\\n \\\"state\\\" TEXT DEFAULT 'open',\\n \\\"author\\\" TEXT DEFAULT '',\\n \\\"labels\\\" JSON DEFAULT '[]',\\n \\\"assignees\\\" JSON DEFAULT '[]',\\n \\\"comments_count\\\" INTEGER DEFAULT 0,\\n \\\"last_synced_at\\\" TIMESTAMP,\\n \\\"original_body\\\" TEXT DEFAULT '',\\n \\\"synthesis_count\\\" INTEGER DEFAULT 0,\\n \\\"head_ref\\\" TEXT DEFAULT '',\\n \\\"base_ref\\\" TEXT DEFAULT '',\\n \\\"merged\\\" BOOLEAN DEFAULT FALSE,\\n \\\"merged_at\\\" TIMESTAMP,\\n \\\"mergeable\\\" BOOLEAN DEFAULT TRUE,\\n \\\"draft\\\" BOOLEAN DEFAULT FALSE,\\n \\\"additions\\\" INTEGER DEFAULT 0,\\n \\\"deletions\\\" INTEGER DEFAULT 0,\\n \\\"changed_files\\\" INTEGER DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"repository_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false},\"number\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"node_id\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"title\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"body\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"state\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"open\"},\"author\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"labels\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]},\"assignees\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]},\"comments_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"last_synced_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"original_body\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"synthesis_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"head_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"base_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"merged\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false},\"merged_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"mergeable\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"draft\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false},\"additions\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"deletions\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"changed_files\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0}},\"indexes\":[{\"name\":\"issues_id_idx\",\"columns\":[\"id\"]},{\"name\":\"issues_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"issues_meta_type_idx\",\"columns\":[\"_meta_type\"]}],\"version\":\"e187bb4a\"}},\"@happyvertical/smrt-projects:Label\":{\"name\":\"label\",\"className\":\"Label\",\"qualifiedName\":\"@happyvertical/smrt-projects:Label\",\"collection\":\"labels\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Label.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"repositoryId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Repository\"},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"color\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"}},\"methods\":{\"isTypeLabel\":{\"name\":\"isTypeLabel\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isPriorityLabel\":{\"name\":\"isPriorityLabel\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isStatusLabel\":{\"name\":\"isStatusLabel\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"getCategory\":{\"name\":\"getCategory\",\"async\":false,\"parameters\":[],\"returnType\":\"'type' | 'priority' | 'status' | 'area' | 'other'\",\"isStatic\":false,\"isPublic\":true},\"getPriorityLevel\":{\"name\":\"getPriorityLevel\",\"async\":false,\"parameters\":[],\"returnType\":\"number | null\",\"isStatic\":false,\"isPublic\":true},\"getHexColor\":{\"name\":\"getHexColor\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true},\"createInRepository\":{\"name\":\"createInRepository\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"updateInRepository\":{\"name\":\"updateInRepository\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]}},\"extends\":\"SmrtObject\",\"exportName\":\"Label\",\"collectionExportName\":\"LabelCollection\",\"schema\":{\"tableName\":\"labels\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"labels\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"repository_id\\\" UUID,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"color\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT ''\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"repository_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"color\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"labels_id_idx\",\"columns\":[\"id\"]},{\"name\":\"labels_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"698e39f8\"}},\"@happyvertical/smrt-projects:Project\":{\"name\":\"project\",\"className\":\"Project\",\"qualifiedName\":\"@happyvertical/smrt-projects:Project\",\"collection\":\"projects\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Project.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"projectId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"projectNumber\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"title\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"owner\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"url\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"providerType\":{\"type\":\"text\",\"required\":false,\"default\":\"github\"},\"tokenConfigKey\":{\"type\":\"text\",\"required\":false,\"default\":\"GITHUB_TOKEN\"},\"statuses\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"fields\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"statusFieldId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"statusOptions\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"lastSyncedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getClient\":{\"name\":\"getClient\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<IProject>\",\"isStatic\":false,\"isPublic\":true},\"clearClient\":{\"name\":\"clearClient\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"sync\":{\"name\":\"sync\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SyncOptions\",\"optional\":true}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"addItem\":{\"name\":\"addItem\",\"async\":true,\"parameters\":[{\"name\":\"item\",\"type\":\"Issue | PullRequest\",\"optional\":false}],\"returnType\":\"Promise<ProjectItem>\",\"isStatic\":false,\"isPublic\":true},\"removeItem\":{\"name\":\"removeItem\",\"async\":true,\"parameters\":[{\"name\":\"itemId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getItem\":{\"name\":\"getItem\",\"async\":true,\"parameters\":[{\"name\":\"itemId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectItem | null>\",\"isStatic\":false,\"isPublic\":true},\"listItems\":{\"name\":\"listItems\",\"async\":true,\"parameters\":[{\"name\":\"filters\",\"type\":\"ItemFilters\",\"optional\":true}],\"returnType\":\"Promise<ProjectItem[]>\",\"isStatic\":false,\"isPublic\":true},\"updateItemStatus\":{\"name\":\"updateItemStatus\",\"async\":true,\"parameters\":[{\"name\":\"itemId\",\"type\":\"string\",\"optional\":false},{\"name\":\"status\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"updateItemField\":{\"name\":\"updateItemField\",\"async\":true,\"parameters\":[{\"name\":\"itemId\",\"type\":\"string\",\"optional\":false},{\"name\":\"fieldId\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"any\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getStatuses\":{\"name\":\"getStatuses\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProjectStatus[]>\",\"isStatic\":false,\"isPublic\":true},\"getFields\":{\"name\":\"getFields\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProjectField[]>\",\"isStatic\":false,\"isPublic\":true},\"getItemsByStatus\":{\"name\":\"getItemsByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectItem[]>\",\"isStatic\":false,\"isPublic\":true},\"moveItem\":{\"name\":\"moveItem\",\"async\":true,\"parameters\":[{\"name\":\"item\",\"type\":\"Issue | PullRequest\",\"optional\":false},{\"name\":\"status\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"analyzeHealth\":{\"name\":\"analyzeHealth\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"getByTitle\":{\"name\":\"getByTitle\",\"async\":true,\"parameters\":[{\"name\":\"title\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<Project | null>\",\"isStatic\":true,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"sync\",\"addItem\",\"updateItemStatus\"]},\"cli\":{\"include\":[\"list\",\"get\",\"sync\",\"addItem\",\"updateItemStatus\",\"listItems\"],\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Project\",\"collectionExportName\":\"ProjectCollection\",\"schema\":{\"tableName\":\"projects\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"projects\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"project_id\\\" TEXT DEFAULT '',\\n \\\"project_number\\\" INTEGER DEFAULT 0,\\n \\\"title\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"owner\\\" TEXT DEFAULT '',\\n \\\"url\\\" TEXT DEFAULT '',\\n \\\"provider_type\\\" TEXT DEFAULT 'github',\\n \\\"token_config_key\\\" TEXT DEFAULT 'GITHUB_TOKEN',\\n \\\"statuses\\\" JSON DEFAULT '[]',\\n \\\"fields\\\" JSON DEFAULT '[]',\\n \\\"status_field_id\\\" TEXT DEFAULT '',\\n \\\"status_options\\\" JSON DEFAULT '{}',\\n \\\"last_synced_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"project_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"project_number\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0},\"title\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"owner\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"provider_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"github\"},\"token_config_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"GITHUB_TOKEN\"},\"statuses\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":[]},\"fields\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":[]},\"status_field_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"status_options\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"last_synced_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"projects_id_idx\",\"columns\":[\"id\"]},{\"name\":\"projects_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"2e8c344a\"}},\"@happyvertical/smrt-projects:ProjectIntegration\":{\"name\":\"projectintegration\",\"className\":\"ProjectIntegration\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectIntegration\",\"collection\":\"projectintegrations\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/ProjectIntegration.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"projectId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"credentialHash\":{\"type\":\"text\",\"required\":false,\"default\":\"\",\"_meta\":{\"sensitive\":true},\"sensitive\":true},\"capabilities\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"status\":{\"type\":\"text\",\"required\":false,\"default\":\"active\"},\"revokedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"hasCapability\":{\"name\":\"hasCapability\",\"async\":false,\"parameters\":[{\"name\":\"capability\",\"type\":\"ProjectIntegrationCapability\",\"optional\":false}],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"project_integrations\",\"conflictColumns\":[\"tenant_id\",\"project_id\",\"name\"],\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProjectIntegration\",\"collectionExportName\":\"ProjectIntegrationCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"project_integrations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_integrations\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"project_id\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"credential_hash\\\" TEXT DEFAULT '',\\n \\\"capabilities\\\" JSON DEFAULT '[]',\\n \\\"status\\\" TEXT DEFAULT 'active',\\n \\\"revoked_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"project_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"credential_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"capabilities\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":[]},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"active\"},\"revoked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"project_integrations_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_integrations_tenant_id_project_id_idx\",\"columns\":[\"tenant_id\",\"project_id\",\"name\"],\"unique\":true}],\"version\":\"bfbaa783\"}},\"@happyvertical/smrt-projects:ProjectIntegrationAudit\":{\"name\":\"projectintegrationaudit\",\"className\":\"ProjectIntegrationAudit\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectIntegrationAudit\",\"collection\":\"projectintegrationaudits\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/ProjectIntegrationAudit.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"integrationId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProjectIntegration\",\"_meta\":{\"required\":true}},\"action\":{\"type\":\"text\",\"required\":false,\"default\":\"created\"},\"note\":{\"type\":\"text\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"project_integration_audits\",\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProjectIntegrationAudit\",\"collectionExportName\":\"ProjectIntegrationAuditCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"integrationId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"project_integration_audits\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_integration_audits\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"integration_id\\\" UUID NOT NULL,\\n \\\"action\\\" TEXT DEFAULT 'created',\\n \\\"note\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"integration_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"action\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"created\"},\"note\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"project_integration_audits_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_integration_audits_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"acf40ff8\"}},\"@happyvertical/smrt-projects:PullRequest\":{\"name\":\"pullrequest\",\"className\":\"PullRequest\",\"qualifiedName\":\"@happyvertical/smrt-projects:PullRequest\",\"collection\":\"issues\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/PullRequest.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"repositoryId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Repository\",\"_meta\":{\"required\":true}},\"number\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"nodeId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"title\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"body\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"state\":{\"type\":\"text\",\"required\":false,\"default\":\"open\"},\"author\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"labels\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"assignees\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"commentsCount\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"lastSyncedAt\":{\"type\":\"datetime\",\"required\":false},\"originalBody\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"synthesisCount\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"headRef\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"baseRef\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"merged\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"mergedAt\":{\"type\":\"datetime\",\"required\":false},\"mergeable\":{\"type\":\"boolean\",\"required\":false,\"default\":true},\"draft\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"additions\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"deletions\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"changedFiles\":{\"type\":\"integer\",\"required\":false,\"default\":0}},\"methods\":{\"getAiUsageSnapshot\":{\"name\":\"getAiUsageSnapshot\",\"async\":false,\"parameters\":[],\"returnType\":\"AiUsageSnapshot | undefined\",\"isStatic\":false,\"isPublic\":true},\"resetAiUsage\":{\"name\":\"resetAiUsage\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"listAiUsage\":{\"name\":\"listAiUsage\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiUsageListOptions\",\"optional\":true}],\"returnType\":\"Promise<SmrtAiUsageRecord[]>\",\"isStatic\":false,\"isPublic\":true},\"summarizeAiUsage\":{\"name\":\"summarizeAiUsage\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiUsageSummaryOptions\",\"optional\":true}],\"returnType\":\"Promise<Record<string, AiUsageStats>>\",\"isStatic\":false,\"isPublic\":true},\"destroy\":{\"name\":\"destroy\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"markAsPersisted\":{\"name\":\"markAsPersisted\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"requireInsertOnSave\":{\"name\":\"requireInsertOnSave\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"loadDataFromDb\":{\"name\":\"loadDataFromDb\",\"async\":true,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string>\",\"optional\":false}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getFields\":{\"name\":\"getFields\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"toJSON\":{\"name\":\"toJSON\",\"async\":false,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"toPlainObject\":{\"name\":\"toPlainObject\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"toPublicJSON\":{\"name\":\"toPublicJSON\",\"async\":false,\"parameters\":[{\"name\":\"options\",\"type\":\"PublicJsonOptions\",\"optional\":true}],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"getId\":{\"name\":\"getId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSlug\":{\"name\":\"getSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSavedId\":{\"name\":\"getSavedId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"isSaved\":{\"name\":\"isSaved\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"classifyConstraintError\":{\"name\":\"classifyConstraintError\",\"async\":false,\"parameters\":[{\"name\":\"message\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"'unique' | 'not_null' | null\",\"isStatic\":true,\"isPublic\":true},\"loadFromId\":{\"name\":\"loadFromId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"loadFromSlug\":{\"name\":\"loadFromSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"is\":{\"name\":\"is\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"do\":{\"name\":\"do\",\"async\":true,\"parameters\":[{\"name\":\"instructions\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"describe\":{\"name\":\"describe\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"delete\":{\"name\":\"delete\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"isRelatedLoaded\":{\"name\":\"isRelatedLoaded\",\"async\":false,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"_setLoadedRelationship\":{\"name\":\"_setLoadedRelationship\",\"async\":false,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"any\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"loadRelated\":{\"name\":\"loadRelated\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"loadRelatedMany\":{\"name\":\"loadRelatedMany\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any[]>\",\"isStatic\":false,\"isPublic\":true},\"getRelated\":{\"name\":\"getRelated\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"getAvailableTools\":{\"name\":\"getAvailableTools\",\"async\":false,\"parameters\":[],\"returnType\":\"AITool[]\",\"isStatic\":false,\"isPublic\":true},\"executeToolCall\":{\"name\":\"executeToolCall\",\"async\":true,\"parameters\":[{\"name\":\"toolCall\",\"type\":\"ToolCall\",\"optional\":false}],\"returnType\":\"Promise<ToolCallResult>\",\"isStatic\":false,\"isPublic\":true},\"remember\":{\"name\":\"remember\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"recall\":{\"name\":\"recall\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"recallAll\":{\"name\":\"recallAll\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Map<string>>\",\"isStatic\":false,\"isPublic\":true},\"forget\":{\"name\":\"forget\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"forgetScope\":{\"name\":\"forgetScope\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"generateEmbeddings\":{\"name\":\"generateEmbeddings\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"GenerateEmbeddingsOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getEmbedding\":{\"name\":\"getEmbedding\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"model\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<number[] | null>\",\"isStatic\":false,\"isPublic\":true},\"hasStaleEmbeddings\":{\"name\":\"hasStaleEmbeddings\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"clearEmbeddings\":{\"name\":\"clearEmbeddings\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getRepository\":{\"name\":\"getRepository\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Repository>\",\"isStatic\":false,\"isPublic\":true},\"getClient\":{\"name\":\"getClient\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<IRepository>\",\"isStatic\":false,\"isPublic\":true},\"clearCache\":{\"name\":\"clearCache\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"sync\":{\"name\":\"sync\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SyncOptions\",\"optional\":true}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"getComments\":{\"name\":\"getComments\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Comment[]>\",\"isStatic\":false,\"isPublic\":true},\"addComment\":{\"name\":\"addComment\",\"async\":true,\"parameters\":[{\"name\":\"body\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Comment>\",\"isStatic\":false,\"isPublic\":true},\"incorporateFeedback\":{\"name\":\"incorporateFeedback\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"IncorporateFeedbackOptions\",\"optional\":true}],\"returnType\":\"Promise<IncorporateFeedbackResult>\",\"isStatic\":false,\"isPublic\":true},\"rollback\":{\"name\":\"rollback\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"needsReview\":{\"name\":\"needsReview\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isBugReport\":{\"name\":\"isBugReport\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isFeatureRequest\":{\"name\":\"isFeatureRequest\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"suggestLabels\":{\"name\":\"suggestLabels\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"close\":{\"name\":\"close\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addLabels\":{\"name\":\"addLabels\",\"async\":true,\"parameters\":[{\"name\":\"labels\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeLabel\":{\"name\":\"removeLabel\",\"async\":true,\"parameters\":[{\"name\":\"label\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"assign\":{\"name\":\"assign\",\"async\":true,\"parameters\":[{\"name\":\"assignees\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getUrl\":{\"name\":\"getUrl\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true},\"summarize\":{\"name\":\"summarize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"merge\":{\"name\":\"merge\",\"async\":true,\"parameters\":[{\"name\":\"method\",\"type\":\"MergeMethod\",\"optional\":true,\"default\":\"squash\"}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"markReady\":{\"name\":\"markReady\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"convertToDraft\":{\"name\":\"convertToDraft\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"requestReviewers\":{\"name\":\"requestReviewers\",\"async\":true,\"parameters\":[{\"name\":\"reviewers\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"findLinkedIssue\":{\"name\":\"findLinkedIssue\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Issue | null>\",\"isStatic\":false,\"isPublic\":true},\"isReadyToMerge\":{\"name\":\"isReadyToMerge\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"suggestReviewers\":{\"name\":\"suggestReviewers\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getChangeSize\":{\"name\":\"getChangeSize\",\"async\":false,\"parameters\":[],\"returnType\":\"'xs' | 's' | 'm' | 'l' | 'xl'\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"sync\",\"summarize\",\"merge\"]},\"cli\":{\"include\":[\"list\",\"get\",\"sync\",\"summarize\",\"merge\",\"markReady\"],\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"tableName\":\"issues\",\"tableStrategy\":\"sti\"},\"extends\":\"Issue\",\"exportName\":\"PullRequest\",\"collectionExportName\":\"PullRequestCollection\",\"validationRules\":[{\"field\":\"repositoryId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"issues\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"issues\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"repository_id\\\" UUID,\\n \\\"number\\\" INTEGER DEFAULT 0,\\n \\\"node_id\\\" TEXT DEFAULT '',\\n \\\"title\\\" TEXT DEFAULT '',\\n \\\"body\\\" TEXT DEFAULT '',\\n \\\"state\\\" TEXT DEFAULT 'open',\\n \\\"author\\\" TEXT DEFAULT '',\\n \\\"labels\\\" JSON DEFAULT '[]',\\n \\\"assignees\\\" JSON DEFAULT '[]',\\n \\\"comments_count\\\" INTEGER DEFAULT 0,\\n \\\"last_synced_at\\\" TIMESTAMP,\\n \\\"original_body\\\" TEXT DEFAULT '',\\n \\\"synthesis_count\\\" INTEGER DEFAULT 0,\\n \\\"head_ref\\\" TEXT DEFAULT '',\\n \\\"base_ref\\\" TEXT DEFAULT '',\\n \\\"merged\\\" BOOLEAN DEFAULT FALSE,\\n \\\"merged_at\\\" TIMESTAMP,\\n \\\"mergeable\\\" BOOLEAN DEFAULT TRUE,\\n \\\"draft\\\" BOOLEAN DEFAULT FALSE,\\n \\\"additions\\\" INTEGER DEFAULT 0,\\n \\\"deletions\\\" INTEGER DEFAULT 0,\\n \\\"changed_files\\\" INTEGER DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"repository_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false},\"number\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"node_id\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"title\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"body\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"state\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"open\"},\"author\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"labels\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]},\"assignees\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]},\"comments_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"last_synced_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"original_body\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"synthesis_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"head_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"base_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"merged\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false},\"merged_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"mergeable\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"draft\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false},\"additions\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"deletions\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"changed_files\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0}},\"indexes\":[{\"name\":\"issues_id_idx\",\"columns\":[\"id\"]},{\"name\":\"issues_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"issues_meta_type_idx\",\"columns\":[\"_meta_type\"]}],\"version\":\"f42d9cf0\"}},\"@happyvertical/smrt-projects:Repository\":{\"name\":\"repository\",\"className\":\"Repository\",\"qualifiedName\":\"@happyvertical/smrt-projects:Repository\",\"collection\":\"repositories\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Repository.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"owner\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"fullName\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"defaultBranch\":{\"type\":\"text\",\"required\":false,\"default\":\"main\"},\"isPrivate\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"providerType\":{\"type\":\"text\",\"required\":false,\"default\":\"github\"},\"baseUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"tokenConfigKey\":{\"type\":\"text\",\"required\":false,\"default\":\"GITHUB_TOKEN\"},\"lastSyncedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getClient\":{\"name\":\"getClient\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<IRepository>\",\"isStatic\":false,\"isPublic\":true},\"clearClient\":{\"name\":\"clearClient\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"sync\":{\"name\":\"sync\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SyncOptions\",\"optional\":true}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"getIssues\":{\"name\":\"getIssues\",\"async\":true,\"parameters\":[{\"name\":\"filters\",\"type\":\"SearchFilters\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"getPullRequests\":{\"name\":\"getPullRequests\",\"async\":true,\"parameters\":[{\"name\":\"filters\",\"type\":\"SearchFilters\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"createIssue\":{\"name\":\"createIssue\",\"async\":true,\"parameters\":[{\"name\":\"data\",\"type\":\"CreateIssueInput\",\"optional\":false}],\"returnType\":\"Promise<Issue>\",\"isStatic\":false,\"isPublic\":true},\"createPullRequest\":{\"name\":\"createPullRequest\",\"async\":true,\"parameters\":[{\"name\":\"data\",\"type\":\"CreatePRInput\",\"optional\":false}],\"returnType\":\"Promise<PullRequest>\",\"isStatic\":false,\"isPublic\":true},\"hasOpenIssuesMatching\":{\"name\":\"hasOpenIssuesMatching\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"summarizeActivity\":{\"name\":\"summarizeActivity\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"getByFullName\":{\"name\":\"getByFullName\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false},{\"name\":\"name\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<Repository | null>\",\"isStatic\":true,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"sync\"]},\"cli\":{\"include\":[\"list\",\"get\",\"sync\",\"create\"],\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Repository\",\"collectionExportName\":\"RepositoryCollection\",\"schema\":{\"tableName\":\"repositories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"repositories\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"owner\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"full_name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"default_branch\\\" TEXT DEFAULT 'main',\\n \\\"is_private\\\" BOOLEAN DEFAULT FALSE,\\n \\\"provider_type\\\" TEXT DEFAULT 'github',\\n \\\"base_url\\\" TEXT DEFAULT '',\\n \\\"token_config_key\\\" TEXT DEFAULT 'GITHUB_TOKEN',\\n \\\"last_synced_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"owner\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"full_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"default_branch\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"main\"},\"is_private\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"provider_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"github\"},\"base_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"token_config_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"GITHUB_TOKEN\"},\"last_synced_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"repositories_id_idx\",\"columns\":[\"id\"]},{\"name\":\"repositories_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"c302a5e5\"}},\"@happyvertical/smrt-projects:DevelopmentRequestWorkLink\":{\"name\":\"developmentrequestworklink\",\"className\":\"DevelopmentRequestWorkLink\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestWorkLink\",\"collection\":\"developmentrequestworklinks\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"requestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"DevelopmentRequest\",\"_meta\":{\"required\":true}},\"workItemType\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"workItemId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"canonicalStatus\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"providerRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"metadata\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"lastProjectedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"development_request_work_links\",\"conflictColumns\":[\"request_id\",\"work_item_type\",\"work_item_id\"],\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"DevelopmentRequestWorkLink\",\"collectionExportName\":\"DevelopmentRequestWorkLinkCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"requestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"development_request_work_links\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_request_work_links\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"request_id\\\" UUID NOT NULL,\\n \\\"work_item_type\\\" TEXT,\\n \\\"work_item_id\\\" TEXT,\\n \\\"canonical_status\\\" TEXT,\\n \\\"provider_ref\\\" TEXT,\\n \\\"metadata\\\" TEXT,\\n \\\"last_projected_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"work_item_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"work_item_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"canonical_status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"provider_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_projected_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"development_request_work_links_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_request_work_links_request_id_work_item_type_idx\",\"columns\":[\"request_id\",\"work_item_type\",\"work_item_id\"],\"unique\":true}],\"version\":\"d832a71f\"}},\"@happyvertical/smrt-projects:ProjectDeliveryEvent\":{\"name\":\"projectdeliveryevent\",\"className\":\"ProjectDeliveryEvent\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectDeliveryEvent\",\"collection\":\"projectdeliveryevents\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"integrationId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProjectIntegration\",\"_meta\":{\"required\":true}},\"requestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"DevelopmentRequest\",\"_meta\":{\"required\":true}},\"idempotencyKey\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"sequence\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"type\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"payload\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"occurredAt\":{\"type\":\"datetime\",\"required\":false},\"deliveredAt\":{\"type\":\"datetime\",\"required\":false},\"deliveryAttempts\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"lastDeliveryError\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"project_delivery_events\",\"conflictColumns\":[\"integration_id\",\"idempotency_key\"],\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProjectDeliveryEvent\",\"collectionExportName\":\"ProjectDeliveryEventCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"integrationId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"requestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"project_delivery_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_delivery_events\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"integration_id\\\" UUID NOT NULL,\\n \\\"request_id\\\" UUID NOT NULL,\\n \\\"idempotency_key\\\" TEXT,\\n \\\"sequence\\\" INTEGER DEFAULT 0,\\n \\\"type\\\" TEXT,\\n \\\"payload\\\" TEXT,\\n \\\"occurred_at\\\" TIMESTAMP,\\n \\\"delivered_at\\\" TIMESTAMP,\\n \\\"delivery_attempts\\\" INTEGER DEFAULT 0,\\n \\\"last_delivery_error\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"integration_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"idempotency_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"sequence\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0},\"type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"payload\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"occurred_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"delivered_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"delivery_attempts\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0},\"last_delivery_error\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"project_delivery_events_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_delivery_events_integration_id_idempotency_key_idx\",\"columns\":[\"integration_id\",\"idempotency_key\"],\"unique\":true}],\"version\":\"d231f634\"}},\"@happyvertical/smrt-projects:PreviewApproval\":{\"name\":\"previewapproval\",\"className\":\"PreviewApproval\",\"qualifiedName\":\"@happyvertical/smrt-projects:PreviewApproval\",\"collection\":\"previewapprovals\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"requestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"DevelopmentRequest\",\"_meta\":{\"required\":true}},\"previewId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"previewUrl\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"decidedByRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"reason\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"decidedAt\":{\"type\":\"datetime\",\"required\":false},\"staleAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"preview_approvals\",\"conflictColumns\":[\"request_id\",\"preview_id\"],\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"PreviewApproval\",\"collectionExportName\":\"PreviewApprovalCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"requestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"preview_approvals\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"preview_approvals\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"request_id\\\" UUID NOT NULL,\\n \\\"preview_id\\\" TEXT,\\n \\\"preview_url\\\" TEXT,\\n \\\"status\\\" TEXT,\\n \\\"decided_by_ref\\\" TEXT,\\n \\\"reason\\\" TEXT,\\n \\\"decided_at\\\" TIMESTAMP,\\n \\\"stale_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"preview_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"preview_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"decided_by_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"reason\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"decided_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"stale_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"preview_approvals_id_idx\",\"columns\":[\"id\"]},{\"name\":\"preview_approvals_request_id_preview_id_idx\",\"columns\":[\"request_id\",\"preview_id\"],\"unique\":true}],\"version\":\"a6f8ab0a\"}},\"@happyvertical/smrt-projects:AssistanceRequest\":{\"name\":\"assistancerequest\",\"className\":\"AssistanceRequest\",\"qualifiedName\":\"@happyvertical/smrt-projects:AssistanceRequest\",\"collection\":\"assistancerequests\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"integrationId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProjectIntegration\",\"_meta\":{\"required\":true}},\"requesterId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"subject\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"applicationContext\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"conversation\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"evidence\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"classification\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"supportCaseId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"developmentRequestId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"deliveryHandoffLinkedAt\":{\"type\":\"datetime\",\"required\":false},\"createdAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"assistance_requests\",\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"AssistanceRequest\",\"collectionExportName\":\"AssistanceRequestCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"integrationId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"assistance_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"assistance_requests\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"integration_id\\\" UUID NOT NULL,\\n \\\"requester_id\\\" TEXT,\\n \\\"subject\\\" TEXT,\\n \\\"application_context\\\" TEXT,\\n \\\"conversation\\\" TEXT,\\n \\\"evidence\\\" TEXT,\\n \\\"classification\\\" TEXT,\\n \\\"support_case_id\\\" TEXT,\\n \\\"development_request_id\\\" TEXT,\\n \\\"delivery_handoff_linked_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"integration_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"requester_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"subject\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"application_context\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"conversation\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"evidence\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"classification\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"support_case_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"development_request_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"delivery_handoff_linked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"assistance_requests_id_idx\",\"columns\":[\"id\"]},{\"name\":\"assistance_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"3ca6f508\"}},\"@happyvertical/smrt-projects:AssistanceRequestEvent\":{\"name\":\"assistancerequestevent\",\"className\":\"AssistanceRequestEvent\",\"qualifiedName\":\"@happyvertical/smrt-projects:AssistanceRequestEvent\",\"collection\":\"assistancerequestevents\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"assistanceRequestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"AssistanceRequest\",\"_meta\":{\"required\":true}},\"priorClassification\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"resultingClassification\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"actorRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"reason\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"resultingLinks\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"occurredAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"assistance_request_events\",\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"AssistanceRequestEvent\",\"collectionExportName\":\"AssistanceRequestEventCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"assistanceRequestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"assistance_request_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"assistance_request_events\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"assistance_request_id\\\" UUID NOT NULL,\\n \\\"prior_classification\\\" TEXT,\\n \\\"resulting_classification\\\" TEXT,\\n \\\"actor_ref\\\" TEXT,\\n \\\"reason\\\" TEXT,\\n \\\"resulting_links\\\" TEXT,\\n \\\"occurred_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"assistance_request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"prior_classification\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resulting_classification\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"actor_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"reason\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resulting_links\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"occurred_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"assistance_request_events_id_idx\",\"columns\":[\"id\"]},{\"name\":\"assistance_request_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"896f3684\"}},\"@happyvertical/smrt-projects:DevelopmentRequestWorkLinkCollection\":{\"name\":\"developmentrequestworklinkcollection\",\"className\":\"DevelopmentRequestWorkLinkCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestWorkLinkCollection\",\"collection\":\"developmentrequestworklinks\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"development_request_work_links\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"DevelopmentRequestWorkLink\",\"exportName\":\"DevelopmentRequestWorkLinkCollection\",\"collectionExportName\":\"DevelopmentRequestWorkLinkCollectionCollection\",\"schema\":{\"tableName\":\"development_request_work_links\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_request_work_links\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"development_request_work_links_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_request_work_links_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"ff9733d7\"}},\"@happyvertical/smrt-projects:ProjectDeliveryEventCollection\":{\"name\":\"projectdeliveryeventcollection\",\"className\":\"ProjectDeliveryEventCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectDeliveryEventCollection\",\"collection\":\"projectdeliveryevents\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"project_delivery_events\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProjectDeliveryEvent\",\"exportName\":\"ProjectDeliveryEventCollection\",\"collectionExportName\":\"ProjectDeliveryEventCollectionCollection\",\"schema\":{\"tableName\":\"project_delivery_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_delivery_events\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"project_delivery_events_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_delivery_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"90db5058\"}},\"@happyvertical/smrt-projects:PreviewApprovalCollection\":{\"name\":\"previewapprovalcollection\",\"className\":\"PreviewApprovalCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:PreviewApprovalCollection\",\"collection\":\"previewapprovals\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"preview_approvals\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"PreviewApproval\",\"exportName\":\"PreviewApprovalCollection\",\"collectionExportName\":\"PreviewApprovalCollectionCollection\",\"schema\":{\"tableName\":\"preview_approvals\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"preview_approvals\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"preview_approvals_id_idx\",\"columns\":[\"id\"]},{\"name\":\"preview_approvals_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"79411098\"}},\"@happyvertical/smrt-projects:AssistanceRequestCollection\":{\"name\":\"assistancerequestcollection\",\"className\":\"AssistanceRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:AssistanceRequestCollection\",\"collection\":\"assistancerequests\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"assistance_requests\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"AssistanceRequest\",\"exportName\":\"AssistanceRequestCollection\",\"collectionExportName\":\"AssistanceRequestCollectionCollection\",\"schema\":{\"tableName\":\"assistance_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"assistance_requests\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"assistance_requests_id_idx\",\"columns\":[\"id\"]},{\"name\":\"assistance_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"1ac4a6f2\"}},\"@happyvertical/smrt-projects:AssistanceRequestEventCollection\":{\"name\":\"assistancerequesteventcollection\",\"className\":\"AssistanceRequestEventCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:AssistanceRequestEventCollection\",\"collection\":\"assistancerequestevents\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"assistance_request_events\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"AssistanceRequestEvent\",\"exportName\":\"AssistanceRequestEventCollection\",\"collectionExportName\":\"AssistanceRequestEventCollectionCollection\",\"schema\":{\"tableName\":\"assistance_request_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"assistance_request_events\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"assistance_request_events_id_idx\",\"columns\":[\"id\"]},{\"name\":\"assistance_request_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"13f0ffe9\"}},\"@happyvertical/smrt-projects:ServiceTimeEntry\":{\"name\":\"servicetimeentry\",\"className\":\"ServiceTimeEntry\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceTimeEntry\",\"collection\":\"servicetimeentries\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"caseId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-support:SupportCase\",\"_meta\":{\"nullable\":true}},\"workRefType\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"workRefId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"specialistId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-support:SupportSpecialist\",\"_meta\":{\"nullable\":true}},\"participantKind\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"participantProfileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"nullable\":true}},\"agentRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"source\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"description\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"startedAt\":{\"type\":\"datetime\",\"required\":false},\"endedAt\":{\"type\":\"datetime\",\"required\":false},\"durationSeconds\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"evidence\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"submittedAt\":{\"type\":\"datetime\",\"required\":false},\"submittedByProfileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"nullable\":true}},\"approvedAt\":{\"type\":\"datetime\",\"required\":false},\"approvedByProfileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"nullable\":true}},\"approvalPath\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"rejectedAt\":{\"type\":\"datetime\",\"required\":false},\"rejectedByProfileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"nullable\":true}},\"rejectionReason\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"correctionOfId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"ServiceTimeEntry\"},\"metadata\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"getEvidence\":{\"name\":\"getEvidence\",\"async\":false,\"parameters\":[],\"returnType\":\"ServiceEvidence[]\",\"isStatic\":false,\"isPublic\":true},\"setEvidence\":{\"name\":\"setEvidence\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"ServiceEvidence[]\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"durationHours\":{\"name\":\"durationHours\",\"async\":false,\"parameters\":[],\"returnType\":\"number\",\"isStatic\":false,\"isPublic\":true},\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"service_time_entries\",\"api\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ServiceTimeEntry\",\"collectionExportName\":\"ServiceTimeEntryCollection\",\"schema\":{\"tableName\":\"service_time_entries\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_time_entries\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"case_id\\\" UUID,\\n \\\"work_ref_type\\\" TEXT,\\n \\\"work_ref_id\\\" TEXT,\\n \\\"specialist_id\\\" UUID,\\n \\\"participant_kind\\\" TEXT,\\n \\\"participant_profile_id\\\" UUID,\\n \\\"agent_ref\\\" TEXT,\\n \\\"source\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"started_at\\\" TIMESTAMP,\\n \\\"ended_at\\\" TIMESTAMP,\\n \\\"duration_seconds\\\" INTEGER DEFAULT 0,\\n \\\"evidence\\\" TEXT,\\n \\\"status\\\" TEXT,\\n \\\"submitted_at\\\" TIMESTAMP,\\n \\\"submitted_by_profile_id\\\" UUID,\\n \\\"approved_at\\\" TIMESTAMP,\\n \\\"approved_by_profile_id\\\" UUID,\\n \\\"approval_path\\\" TEXT,\\n \\\"rejected_at\\\" TIMESTAMP,\\n \\\"rejected_by_profile_id\\\" UUID,\\n \\\"rejection_reason\\\" TEXT,\\n \\\"correction_of_id\\\" UUID,\\n \\\"metadata\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"case_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"work_ref_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"work_ref_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"specialist_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"participant_kind\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"participant_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"agent_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"ended_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"duration_seconds\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0},\"evidence\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"submitted_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"submitted_by_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"approved_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"approved_by_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"approval_path\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"rejected_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"rejected_by_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"rejection_reason\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"correction_of_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"service_time_entries_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_time_entries_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"78af3c7b\"}},\"@happyvertical/smrt-projects:ServiceChargeSnapshot\":{\"name\":\"servicechargesnapshot\",\"className\":\"ServiceChargeSnapshot\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceChargeSnapshot\",\"collection\":\"servicechargesnapshots\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"timeEntryId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ServiceTimeEntry\",\"_meta\":{\"required\":true}},\"amount\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"currency\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"pricingVersion\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"strategy\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"rateSnapshot\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"sourceChargeRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"createdAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"service_charge_snapshots\",\"conflictColumns\":[\"time_entry_id\"],\"api\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ServiceChargeSnapshot\",\"collectionExportName\":\"ServiceChargeSnapshotCollection\",\"validationRules\":[{\"field\":\"timeEntryId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"service_charge_snapshots\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_charge_snapshots\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"time_entry_id\\\" UUID NOT NULL,\\n \\\"amount\\\" REAL DEFAULT 0,\\n \\\"currency\\\" TEXT,\\n \\\"pricing_version\\\" TEXT,\\n \\\"strategy\\\" TEXT,\\n \\\"rate_snapshot\\\" TEXT,\\n \\\"source_charge_ref\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"time_entry_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"amount\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false,\"default\":0},\"currency\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"pricing_version\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"strategy\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"rate_snapshot\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source_charge_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"service_charge_snapshots_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_charge_snapshots_time_entry_id_idx\",\"columns\":[\"time_entry_id\"],\"unique\":true}],\"version\":\"f6d68265\"}},\"@happyvertical/smrt-projects:ServiceCompensationSnapshot\":{\"name\":\"servicecompensationsnapshot\",\"className\":\"ServiceCompensationSnapshot\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceCompensationSnapshot\",\"collection\":\"servicecompensationsnapshots\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"timeEntryId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ServiceTimeEntry\",\"_meta\":{\"required\":true}},\"amount\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"currency\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"termsVersion\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"rateSnapshot\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"createdAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"service_compensation_snapshots\",\"conflictColumns\":[\"time_entry_id\"],\"api\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ServiceCompensationSnapshot\",\"collectionExportName\":\"ServiceCompensationSnapshotCollection\",\"validationRules\":[{\"field\":\"timeEntryId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"service_compensation_snapshots\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_compensation_snapshots\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"time_entry_id\\\" UUID NOT NULL,\\n \\\"amount\\\" REAL DEFAULT 0,\\n \\\"currency\\\" TEXT,\\n \\\"terms_version\\\" TEXT,\\n \\\"rate_snapshot\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"time_entry_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"amount\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false,\"default\":0},\"currency\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"terms_version\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"rate_snapshot\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"service_compensation_snapshots_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_compensation_snapshots_time_entry_id_idx\",\"columns\":[\"time_entry_id\"],\"unique\":true}],\"version\":\"2ab5d52f\"}},\"@happyvertical/smrt-projects:ServiceTimeEntryCollection\":{\"name\":\"servicetimeentrycollection\",\"className\":\"ServiceTimeEntryCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceTimeEntryCollection\",\"collection\":\"servicetimeentries\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"forWork\":{\"name\":\"forWork\",\"async\":true,\"parameters\":[{\"name\":\"workRefType\",\"type\":\"string\",\"optional\":false},{\"name\":\"workRefId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ServiceTimeEntry[]>\",\"isStatic\":false,\"isPublic\":true},\"forCase\":{\"name\":\"forCase\",\"async\":true,\"parameters\":[{\"name\":\"caseId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ServiceTimeEntry[]>\",\"isStatic\":false,\"isPublic\":true},\"forSpecialist\":{\"name\":\"forSpecialist\",\"async\":true,\"parameters\":[{\"name\":\"specialistId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ServiceTimeEntry[]>\",\"isStatic\":false,\"isPublic\":true},\"pendingApproval\":{\"name\":\"pendingApproval\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ServiceTimeEntry[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"service_time_entries\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ServiceTimeEntry\",\"exportName\":\"ServiceTimeEntryCollection\",\"collectionExportName\":\"ServiceTimeEntryCollectionCollection\",\"schema\":{\"tableName\":\"service_time_entries\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_time_entries\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"service_time_entries_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_time_entries_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"2c3a20bf\"}},\"@happyvertical/smrt-projects:ServiceChargeSnapshotCollection\":{\"name\":\"servicechargesnapshotcollection\",\"className\":\"ServiceChargeSnapshotCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceChargeSnapshotCollection\",\"collection\":\"servicechargesnapshots\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"service_charge_snapshots\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ServiceChargeSnapshot\",\"exportName\":\"ServiceChargeSnapshotCollection\",\"collectionExportName\":\"ServiceChargeSnapshotCollectionCollection\",\"schema\":{\"tableName\":\"service_charge_snapshots\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_charge_snapshots\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"service_charge_snapshots_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_charge_snapshots_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"29633321\"}},\"@happyvertical/smrt-projects:ServiceCompensationSnapshotCollection\":{\"name\":\"servicecompensationsnapshotcollection\",\"className\":\"ServiceCompensationSnapshotCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceCompensationSnapshotCollection\",\"collection\":\"servicecompensationsnapshots\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"service_compensation_snapshots\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ServiceCompensationSnapshot\",\"exportName\":\"ServiceCompensationSnapshotCollection\",\"collectionExportName\":\"ServiceCompensationSnapshotCollectionCollection\",\"schema\":{\"tableName\":\"service_compensation_snapshots\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_compensation_snapshots\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"service_compensation_snapshots_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_compensation_snapshots_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"1fbc57ea\"}}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-prompts\",\"@happyvertical/smrt-subscriptions\",\"@happyvertical/smrt-tenancy\"]}"));
14
+ ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-projects\",\"packageVersion\":\"0.40.67\",\"objects\":{\"@happyvertical/smrt-projects:DevelopmentRequestHistoryCollection\":{\"name\":\"developmentrequesthistorycollection\",\"className\":\"DevelopmentRequestHistoryCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestHistoryCollection\",\"collection\":\"developmentrequesthistories\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/DevelopmentRequestHistories.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"listForRequest\":{\"name\":\"listForRequest\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"requestId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<DevelopmentRequestHistory[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"development_request_histories\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"DevelopmentRequestHistory\",\"exportName\":\"DevelopmentRequestHistoryCollection\",\"collectionExportName\":\"DevelopmentRequestHistoryCollectionCollection\",\"schema\":{\"tableName\":\"development_request_histories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_request_histories\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"development_request_histories_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_request_histories_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"97a2530c\"}},\"@happyvertical/smrt-projects:DevelopmentRequestCollection\":{\"name\":\"developmentrequestcollection\",\"className\":\"DevelopmentRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestCollection\",\"collection\":\"developmentrequests\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/DevelopmentRequests.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"createManaged\":{\"name\":\"createManaged\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"any\",\"optional\":false}],\"returnType\":\"Promise<DevelopmentRequest>\",\"isStatic\":false,\"isPublic\":true},\"listByIntegrationRequester\":{\"name\":\"listByIntegrationRequester\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<DevelopmentRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"transitionStatus\":{\"name\":\"transitionStatus\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"requestId\",\"type\":\"string\",\"optional\":false},{\"name\":\"transition\",\"type\":\"DevelopmentRequestTransitionInput\",\"optional\":false}],\"returnType\":\"Promise<DevelopmentRequest>\",\"isStatic\":false,\"isPublic\":true},\"listForProject\":{\"name\":\"listForProject\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"projectId\",\"type\":\"string\",\"optional\":false},{\"name\":\"status\",\"type\":\"DevelopmentRequestStatus\",\"optional\":true}],\"returnType\":\"Promise<DevelopmentRequest[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"development_requests\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"DevelopmentRequest\",\"exportName\":\"DevelopmentRequestCollection\",\"collectionExportName\":\"DevelopmentRequestCollectionCollection\",\"schema\":{\"tableName\":\"development_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_requests\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"development_requests_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"9d07b06c\"}},\"@happyvertical/smrt-projects:IssueCollection\":{\"name\":\"issuecollection\",\"className\":\"IssueCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:IssueCollection\",\"collection\":\"issues\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/Issues.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"discover\":{\"name\":\"discover\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByRepository\":{\"name\":\"findByRepository\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findOpen\":{\"name\":\"findOpen\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByLabel\":{\"name\":\"findByLabel\",\"async\":true,\"parameters\":[{\"name\":\"label\",\"type\":\"string\",\"optional\":false},{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByAssignee\":{\"name\":\"findByAssignee\",\"async\":true,\"parameters\":[{\"name\":\"assignee\",\"type\":\"string\",\"optional\":false},{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findNeedingReview\":{\"name\":\"findNeedingReview\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByNumber\":{\"name\":\"findByNumber\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":false},{\"name\":\"number\",\"type\":\"number\",\"optional\":false}],\"returnType\":\"Promise<Issue | null>\",\"isStatic\":false,\"isPublic\":true},\"findWithUnincorporatedFeedback\":{\"name\":\"findWithUnincorporatedFeedback\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"batchSync\":{\"name\":\"batchSync\",\"async\":true,\"parameters\":[{\"name\":\"repository\",\"type\":\"Repository\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Issue\",\"exportName\":\"IssueCollection\",\"collectionExportName\":\"IssueCollectionCollection\",\"schema\":{\"tableName\":\"issue_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"issue_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"issue_collections_id_idx\",\"columns\":[\"id\"]},{\"name\":\"issue_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"93b3c6f0\"}},\"@happyvertical/smrt-projects:ProjectIntegrationAuditCollection\":{\"name\":\"projectintegrationauditcollection\",\"className\":\"ProjectIntegrationAuditCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectIntegrationAuditCollection\",\"collection\":\"projectintegrationaudits\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/ProjectIntegrationAudits.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"listForIntegration\":{\"name\":\"listForIntegration\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"integrationId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegrationAudit[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"project_integration_audits\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProjectIntegrationAudit\",\"exportName\":\"ProjectIntegrationAuditCollection\",\"collectionExportName\":\"ProjectIntegrationAuditCollectionCollection\",\"schema\":{\"tableName\":\"project_integration_audits\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_integration_audits\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"project_integration_audits_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_integration_audits_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"3066e366\"}},\"@happyvertical/smrt-projects:ProjectIntegrationCollection\":{\"name\":\"projectintegrationcollection\",\"className\":\"ProjectIntegrationCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectIntegrationCollection\",\"collection\":\"projectintegrations\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/ProjectIntegrations.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"provision\":{\"name\":\"provision\",\"async\":true,\"parameters\":[{\"name\":\"input\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"rotate\":{\"name\":\"rotate\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"integrationId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"revoke\":{\"name\":\"revoke\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"integrationId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegration>\",\"isStatic\":false,\"isPublic\":true},\"authenticate\":{\"name\":\"authenticate\",\"async\":true,\"parameters\":[{\"name\":\"credential\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegration | null>\",\"isStatic\":false,\"isPublic\":true},\"listForProject\":{\"name\":\"listForProject\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"projectId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegration[]>\",\"isStatic\":false,\"isPublic\":true},\"findActive\":{\"name\":\"findActive\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"integrationId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectIntegration | null>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"project_integrations\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProjectIntegration\",\"exportName\":\"ProjectIntegrationCollection\",\"collectionExportName\":\"ProjectIntegrationCollectionCollection\",\"schema\":{\"tableName\":\"project_integrations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_integrations\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"project_integrations_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_integrations_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"61d58a70\"}},\"@happyvertical/smrt-projects:ProjectCollection\":{\"name\":\"projectcollection\",\"className\":\"ProjectCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectCollection\",\"collection\":\"projects\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/Projects.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"findByTitle\":{\"name\":\"findByTitle\",\"async\":true,\"parameters\":[{\"name\":\"title\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project | null>\",\"isStatic\":false,\"isPublic\":true},\"findByOwner\":{\"name\":\"findByOwner\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"findByProvider\":{\"name\":\"findByProvider\",\"async\":true,\"parameters\":[{\"name\":\"providerType\",\"type\":\"ProjectProviderType\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreate\":{\"name\":\"getOrCreate\",\"async\":true,\"parameters\":[{\"name\":\"projectId\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Project>\",\"isStatic\":false,\"isPublic\":true},\"syncAll\":{\"name\":\"syncAll\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithItemsInStatus\":{\"name\":\"findWithItemsInStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"getStatistics\":{\"name\":\"getStatistics\",\"async\":true,\"parameters\":[{\"name\":\"projectId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Project[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Project\",\"exportName\":\"ProjectCollection\",\"collectionExportName\":\"ProjectCollectionCollection\",\"schema\":{\"tableName\":\"project_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"project_collections_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"f713c200\"}},\"@happyvertical/smrt-projects:PullRequestCollection\":{\"name\":\"pullrequestcollection\",\"className\":\"PullRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:PullRequestCollection\",\"collection\":\"issues\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/PullRequests.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"discover\":{\"name\":\"discover\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findByRepository\":{\"name\":\"findByRepository\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findOpen\":{\"name\":\"findOpen\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findDrafts\":{\"name\":\"findDrafts\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findReadyToMerge\":{\"name\":\"findReadyToMerge\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findByBranch\":{\"name\":\"findByBranch\",\"async\":true,\"parameters\":[{\"name\":\"branch\",\"type\":\"string\",\"optional\":false},{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findByNumber\":{\"name\":\"findByNumber\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":false},{\"name\":\"number\",\"type\":\"number\",\"optional\":false}],\"returnType\":\"Promise<PullRequest | null>\",\"isStatic\":false,\"isPublic\":true},\"findAIReadyToMerge\":{\"name\":\"findAIReadyToMerge\",\"async\":true,\"parameters\":[{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findBySize\":{\"name\":\"findBySize\",\"async\":true,\"parameters\":[{\"name\":\"size\",\"type\":\"'xs' | 's' | 'm' | 'l' | 'xl'\",\"optional\":false},{\"name\":\"repositoryId\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"batchSync\":{\"name\":\"batchSync\",\"async\":true,\"parameters\":[{\"name\":\"repository\",\"type\":\"Repository\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"issues\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"PullRequest\",\"exportName\":\"PullRequestCollection\",\"collectionExportName\":\"PullRequestCollectionCollection\",\"schema\":{\"tableName\":\"issues\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"issues\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"issues_id_idx\",\"columns\":[\"id\"]},{\"name\":\"issues_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"798511d0\"}},\"@happyvertical/smrt-projects:RepositoryCollection\":{\"name\":\"repositorycollection\",\"className\":\"RepositoryCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:RepositoryCollection\",\"collection\":\"repositories\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/collections/Repositories.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"findByFullName\":{\"name\":\"findByFullName\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false},{\"name\":\"name\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Repository | null>\",\"isStatic\":false,\"isPublic\":true},\"findByOwner\":{\"name\":\"findByOwner\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findByProvider\":{\"name\":\"findByProvider\",\"async\":true,\"parameters\":[{\"name\":\"providerType\",\"type\":\"RepositoryProviderType\",\"optional\":false}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"getOrCreate\":{\"name\":\"getOrCreate\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false},{\"name\":\"name\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Repository>\",\"isStatic\":false,\"isPublic\":true},\"syncAll\":{\"name\":\"syncAll\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithOpenIssues\":{\"name\":\"findWithOpenIssues\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findByTenant\":{\"name\":\"findByTenant\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findGlobal\":{\"name\":\"findGlobal\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true},\"findWithGlobals\":{\"name\":\"findWithGlobals\",\"async\":true,\"parameters\":[{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Repository[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"Repository\",\"exportName\":\"RepositoryCollection\",\"collectionExportName\":\"RepositoryCollectionCollection\",\"schema\":{\"tableName\":\"repository_collections\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"repository_collections\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"repository_collections_id_idx\",\"columns\":[\"id\"]},{\"name\":\"repository_collections_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"a9b3565e\"}},\"@happyvertical/smrt-projects:Comment\":{\"name\":\"comment\",\"className\":\"Comment\",\"qualifiedName\":\"@happyvertical/smrt-projects:Comment\",\"collection\":\"comments\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Comment.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"issueId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Issue\"},\"commentId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"body\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"author\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"updatedAt\":{\"type\":\"datetime\",\"required\":false},\"url\":{\"type\":\"text\",\"required\":false,\"default\":\"\"}},\"methods\":{\"isQuestion\":{\"name\":\"isQuestion\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isApproval\":{\"name\":\"isApproval\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"requestsChanges\":{\"name\":\"requestsChanges\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"extractActionItems\":{\"name\":\"extractActionItems\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"summarize\":{\"name\":\"summarize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"getSentiment\":{\"name\":\"getSentiment\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<'positive' | 'negative' | 'neutral'>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Comment\",\"collectionExportName\":\"CommentCollection\",\"schema\":{\"tableName\":\"comments\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"comments\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"issue_id\\\" UUID,\\n \\\"comment_id\\\" TEXT DEFAULT '',\\n \\\"body\\\" TEXT DEFAULT '',\\n \\\"author\\\" TEXT DEFAULT '',\\n \\\"url\\\" TEXT DEFAULT ''\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"issue_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false},\"comment_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"body\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"author\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"comments_id_idx\",\"columns\":[\"id\"]},{\"name\":\"comments_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"ed899e3f\"}},\"@happyvertical/smrt-projects:DevelopmentRequest\":{\"name\":\"developmentrequest\",\"className\":\"DevelopmentRequest\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequest\",\"collection\":\"developmentrequests\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/DevelopmentRequest.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"projectId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"integrationId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProjectIntegration\",\"_meta\":{\"required\":true}},\"requesterId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"participantId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"type\":{\"type\":\"text\",\"required\":false,\"default\":\"feature\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"evidence\":{\"type\":\"text\",\"required\":false,\"default\":\"[]\"},\"visibility\":{\"type\":\"text\",\"required\":false,\"default\":\"requester\"},\"origin\":{\"type\":\"text\",\"required\":false,\"default\":\"managed-app\"},\"discussion\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"status\":{\"type\":\"text\",\"required\":false,\"default\":\"submitted\"}},\"methods\":{\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"getEvidence\":{\"name\":\"getEvidence\",\"async\":false,\"parameters\":[],\"returnType\":\"DevelopmentRequestEvidence[]\",\"isStatic\":false,\"isPublic\":true},\"setEvidence\":{\"name\":\"setEvidence\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"DevelopmentRequestEvidence[] | string\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"development_requests\",\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"DevelopmentRequest\",\"collectionExportName\":\"DevelopmentRequestCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"integrationId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"development_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_requests\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"project_id\\\" TEXT DEFAULT '',\\n \\\"integration_id\\\" UUID NOT NULL,\\n \\\"requester_id\\\" TEXT DEFAULT '',\\n \\\"participant_id\\\" TEXT DEFAULT '',\\n \\\"type\\\" TEXT DEFAULT 'feature',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"evidence\\\" TEXT DEFAULT '[]',\\n \\\"visibility\\\" TEXT DEFAULT 'requester',\\n \\\"origin\\\" TEXT DEFAULT 'managed-app',\\n \\\"discussion\\\" TEXT DEFAULT '',\\n \\\"status\\\" TEXT DEFAULT 'submitted'\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"project_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"integration_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"requester_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"participant_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"feature\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"evidence\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"[]\"},\"visibility\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"requester\"},\"origin\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"managed-app\"},\"discussion\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"submitted\"}},\"indexes\":[{\"name\":\"development_requests_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"0f9594f9\"}},\"@happyvertical/smrt-projects:DevelopmentRequestHistory\":{\"name\":\"developmentrequesthistory\",\"className\":\"DevelopmentRequestHistory\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestHistory\",\"collection\":\"developmentrequesthistories\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/DevelopmentRequestHistory.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"requestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"DevelopmentRequest\",\"_meta\":{\"required\":true}},\"fromStatus\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"toStatus\":{\"type\":\"text\",\"required\":false,\"default\":\"submitted\"},\"actorType\":{\"type\":\"text\",\"required\":false,\"default\":\"system\"},\"actorId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"note\":{\"type\":\"text\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"development_request_histories\",\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"DevelopmentRequestHistory\",\"collectionExportName\":\"DevelopmentRequestHistoryCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"requestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"development_request_histories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_request_histories\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"request_id\\\" UUID NOT NULL,\\n \\\"from_status\\\" TEXT DEFAULT '',\\n \\\"to_status\\\" TEXT DEFAULT 'submitted',\\n \\\"actor_type\\\" TEXT DEFAULT 'system',\\n \\\"actor_id\\\" TEXT DEFAULT '',\\n \\\"note\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"from_status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"to_status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"submitted\"},\"actor_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"system\"},\"actor_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"note\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"development_request_histories_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_request_histories_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"483a3831\"}},\"@happyvertical/smrt-projects:Issue\":{\"name\":\"issue\",\"className\":\"Issue\",\"qualifiedName\":\"@happyvertical/smrt-projects:Issue\",\"collection\":\"issues\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Issue.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"repositoryId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Repository\",\"_meta\":{\"required\":true}},\"number\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"nodeId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"title\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"body\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"state\":{\"type\":\"text\",\"required\":false,\"default\":\"open\"},\"author\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"labels\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"assignees\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"commentsCount\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"lastSyncedAt\":{\"type\":\"datetime\",\"required\":false},\"originalBody\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"synthesisCount\":{\"type\":\"integer\",\"required\":false,\"default\":0}},\"methods\":{\"getAiUsageSnapshot\":{\"name\":\"getAiUsageSnapshot\",\"async\":false,\"parameters\":[],\"returnType\":\"AiUsageSnapshot | undefined\",\"isStatic\":false,\"isPublic\":true},\"resetAiUsage\":{\"name\":\"resetAiUsage\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"listAiUsage\":{\"name\":\"listAiUsage\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiUsageListOptions\",\"optional\":true}],\"returnType\":\"Promise<SmrtAiUsageRecord[]>\",\"isStatic\":false,\"isPublic\":true},\"summarizeAiUsage\":{\"name\":\"summarizeAiUsage\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiUsageSummaryOptions\",\"optional\":true}],\"returnType\":\"Promise<Record<string, AiUsageStats>>\",\"isStatic\":false,\"isPublic\":true},\"destroy\":{\"name\":\"destroy\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"markAsPersisted\":{\"name\":\"markAsPersisted\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"requireInsertOnSave\":{\"name\":\"requireInsertOnSave\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"loadDataFromDb\":{\"name\":\"loadDataFromDb\",\"async\":true,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string>\",\"optional\":false}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getFields\":{\"name\":\"getFields\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"toJSON\":{\"name\":\"toJSON\",\"async\":false,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"toPlainObject\":{\"name\":\"toPlainObject\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"toPublicJSON\":{\"name\":\"toPublicJSON\",\"async\":false,\"parameters\":[{\"name\":\"options\",\"type\":\"PublicJsonOptions\",\"optional\":true}],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"getId\":{\"name\":\"getId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSlug\":{\"name\":\"getSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSavedId\":{\"name\":\"getSavedId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"isSaved\":{\"name\":\"isSaved\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"classifyConstraintError\":{\"name\":\"classifyConstraintError\",\"async\":false,\"parameters\":[{\"name\":\"message\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"'unique' | 'not_null' | null\",\"isStatic\":true,\"isPublic\":true},\"loadFromId\":{\"name\":\"loadFromId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"loadFromSlug\":{\"name\":\"loadFromSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"is\":{\"name\":\"is\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"do\":{\"name\":\"do\",\"async\":true,\"parameters\":[{\"name\":\"instructions\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"describe\":{\"name\":\"describe\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"delete\":{\"name\":\"delete\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"isRelatedLoaded\":{\"name\":\"isRelatedLoaded\",\"async\":false,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"_setLoadedRelationship\":{\"name\":\"_setLoadedRelationship\",\"async\":false,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"any\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"loadRelated\":{\"name\":\"loadRelated\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"loadRelatedMany\":{\"name\":\"loadRelatedMany\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any[]>\",\"isStatic\":false,\"isPublic\":true},\"getRelated\":{\"name\":\"getRelated\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"getAvailableTools\":{\"name\":\"getAvailableTools\",\"async\":false,\"parameters\":[],\"returnType\":\"AITool[]\",\"isStatic\":false,\"isPublic\":true},\"executeToolCall\":{\"name\":\"executeToolCall\",\"async\":true,\"parameters\":[{\"name\":\"toolCall\",\"type\":\"ToolCall\",\"optional\":false}],\"returnType\":\"Promise<ToolCallResult>\",\"isStatic\":false,\"isPublic\":true},\"remember\":{\"name\":\"remember\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"recall\":{\"name\":\"recall\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"recallAll\":{\"name\":\"recallAll\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Map<string>>\",\"isStatic\":false,\"isPublic\":true},\"forget\":{\"name\":\"forget\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"forgetScope\":{\"name\":\"forgetScope\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"generateEmbeddings\":{\"name\":\"generateEmbeddings\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"GenerateEmbeddingsOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getEmbedding\":{\"name\":\"getEmbedding\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"model\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<number[] | null>\",\"isStatic\":false,\"isPublic\":true},\"hasStaleEmbeddings\":{\"name\":\"hasStaleEmbeddings\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"clearEmbeddings\":{\"name\":\"clearEmbeddings\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getRepository\":{\"name\":\"getRepository\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Repository>\",\"isStatic\":false,\"isPublic\":true},\"getClient\":{\"name\":\"getClient\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<IRepository>\",\"isStatic\":false,\"isPublic\":true},\"clearCache\":{\"name\":\"clearCache\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"sync\":{\"name\":\"sync\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SyncOptions\",\"optional\":true}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"getComments\":{\"name\":\"getComments\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Comment[]>\",\"isStatic\":false,\"isPublic\":true},\"addComment\":{\"name\":\"addComment\",\"async\":true,\"parameters\":[{\"name\":\"body\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Comment>\",\"isStatic\":false,\"isPublic\":true},\"incorporateFeedback\":{\"name\":\"incorporateFeedback\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"IncorporateFeedbackOptions\",\"optional\":true}],\"returnType\":\"Promise<IncorporateFeedbackResult>\",\"isStatic\":false,\"isPublic\":true},\"rollback\":{\"name\":\"rollback\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"needsReview\":{\"name\":\"needsReview\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isBugReport\":{\"name\":\"isBugReport\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isFeatureRequest\":{\"name\":\"isFeatureRequest\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"suggestLabels\":{\"name\":\"suggestLabels\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"close\":{\"name\":\"close\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addLabels\":{\"name\":\"addLabels\",\"async\":true,\"parameters\":[{\"name\":\"labels\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeLabel\":{\"name\":\"removeLabel\",\"async\":true,\"parameters\":[{\"name\":\"label\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"assign\":{\"name\":\"assign\",\"async\":true,\"parameters\":[{\"name\":\"assignees\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getUrl\":{\"name\":\"getUrl\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableStrategy\":\"sti\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"sync\",\"incorporateFeedback\"]},\"cli\":{\"include\":[\"list\",\"get\",\"sync\",\"incorporateFeedback\",\"rollback\"],\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Issue\",\"collectionExportName\":\"IssueCollection\",\"validationRules\":[{\"field\":\"repositoryId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"issues\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"issues\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"repository_id\\\" UUID,\\n \\\"number\\\" INTEGER DEFAULT 0,\\n \\\"node_id\\\" TEXT DEFAULT '',\\n \\\"title\\\" TEXT DEFAULT '',\\n \\\"body\\\" TEXT DEFAULT '',\\n \\\"state\\\" TEXT DEFAULT 'open',\\n \\\"author\\\" TEXT DEFAULT '',\\n \\\"labels\\\" JSON DEFAULT '[]',\\n \\\"assignees\\\" JSON DEFAULT '[]',\\n \\\"comments_count\\\" INTEGER DEFAULT 0,\\n \\\"last_synced_at\\\" TIMESTAMP,\\n \\\"original_body\\\" TEXT DEFAULT '',\\n \\\"synthesis_count\\\" INTEGER DEFAULT 0,\\n \\\"head_ref\\\" TEXT DEFAULT '',\\n \\\"base_ref\\\" TEXT DEFAULT '',\\n \\\"merged\\\" BOOLEAN DEFAULT FALSE,\\n \\\"merged_at\\\" TIMESTAMP,\\n \\\"mergeable\\\" BOOLEAN DEFAULT TRUE,\\n \\\"draft\\\" BOOLEAN DEFAULT FALSE,\\n \\\"additions\\\" INTEGER DEFAULT 0,\\n \\\"deletions\\\" INTEGER DEFAULT 0,\\n \\\"changed_files\\\" INTEGER DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"repository_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false},\"number\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"node_id\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"title\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"body\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"state\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"open\"},\"author\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"labels\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]},\"assignees\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]},\"comments_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"last_synced_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"original_body\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"synthesis_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"head_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"base_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"merged\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false},\"merged_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"mergeable\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"draft\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false},\"additions\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"deletions\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"changed_files\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0}},\"indexes\":[{\"name\":\"issues_id_idx\",\"columns\":[\"id\"]},{\"name\":\"issues_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"issues_meta_type_idx\",\"columns\":[\"_meta_type\"]}],\"version\":\"e187bb4a\"}},\"@happyvertical/smrt-projects:Label\":{\"name\":\"label\",\"className\":\"Label\",\"qualifiedName\":\"@happyvertical/smrt-projects:Label\",\"collection\":\"labels\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Label.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"repositoryId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"Repository\"},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"color\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"}},\"methods\":{\"isTypeLabel\":{\"name\":\"isTypeLabel\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isPriorityLabel\":{\"name\":\"isPriorityLabel\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isStatusLabel\":{\"name\":\"isStatusLabel\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"getCategory\":{\"name\":\"getCategory\",\"async\":false,\"parameters\":[],\"returnType\":\"'type' | 'priority' | 'status' | 'area' | 'other'\",\"isStatic\":false,\"isPublic\":true},\"getPriorityLevel\":{\"name\":\"getPriorityLevel\",\"async\":false,\"parameters\":[],\"returnType\":\"number | null\",\"isStatic\":false,\"isPublic\":true},\"getHexColor\":{\"name\":\"getHexColor\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true},\"createInRepository\":{\"name\":\"createInRepository\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"updateInRepository\":{\"name\":\"updateInRepository\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"create\"]},\"cli\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]}},\"extends\":\"SmrtObject\",\"exportName\":\"Label\",\"collectionExportName\":\"LabelCollection\",\"schema\":{\"tableName\":\"labels\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"labels\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"repository_id\\\" UUID,\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"color\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT ''\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"repository_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"color\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"}},\"indexes\":[{\"name\":\"labels_id_idx\",\"columns\":[\"id\"]},{\"name\":\"labels_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"698e39f8\"}},\"@happyvertical/smrt-projects:Project\":{\"name\":\"project\",\"className\":\"Project\",\"qualifiedName\":\"@happyvertical/smrt-projects:Project\",\"collection\":\"projects\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Project.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"projectId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"projectNumber\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"title\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"owner\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"url\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"providerType\":{\"type\":\"text\",\"required\":false,\"default\":\"github\"},\"tokenConfigKey\":{\"type\":\"text\",\"required\":false,\"default\":\"GITHUB_TOKEN\"},\"statuses\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"fields\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"statusFieldId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"statusOptions\":{\"type\":\"json\",\"required\":false,\"default\":{}},\"lastSyncedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getClient\":{\"name\":\"getClient\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<IProject>\",\"isStatic\":false,\"isPublic\":true},\"clearClient\":{\"name\":\"clearClient\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"sync\":{\"name\":\"sync\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SyncOptions\",\"optional\":true}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"addItem\":{\"name\":\"addItem\",\"async\":true,\"parameters\":[{\"name\":\"item\",\"type\":\"Issue | PullRequest\",\"optional\":false}],\"returnType\":\"Promise<ProjectItem>\",\"isStatic\":false,\"isPublic\":true},\"removeItem\":{\"name\":\"removeItem\",\"async\":true,\"parameters\":[{\"name\":\"itemId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getItem\":{\"name\":\"getItem\",\"async\":true,\"parameters\":[{\"name\":\"itemId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectItem | null>\",\"isStatic\":false,\"isPublic\":true},\"listItems\":{\"name\":\"listItems\",\"async\":true,\"parameters\":[{\"name\":\"filters\",\"type\":\"ItemFilters\",\"optional\":true}],\"returnType\":\"Promise<ProjectItem[]>\",\"isStatic\":false,\"isPublic\":true},\"updateItemStatus\":{\"name\":\"updateItemStatus\",\"async\":true,\"parameters\":[{\"name\":\"itemId\",\"type\":\"string\",\"optional\":false},{\"name\":\"status\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"updateItemField\":{\"name\":\"updateItemField\",\"async\":true,\"parameters\":[{\"name\":\"itemId\",\"type\":\"string\",\"optional\":false},{\"name\":\"fieldId\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"any\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getStatuses\":{\"name\":\"getStatuses\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProjectStatus[]>\",\"isStatic\":false,\"isPublic\":true},\"getFields\":{\"name\":\"getFields\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ProjectField[]>\",\"isStatic\":false,\"isPublic\":true},\"getItemsByStatus\":{\"name\":\"getItemsByStatus\",\"async\":true,\"parameters\":[{\"name\":\"status\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ProjectItem[]>\",\"isStatic\":false,\"isPublic\":true},\"moveItem\":{\"name\":\"moveItem\",\"async\":true,\"parameters\":[{\"name\":\"item\",\"type\":\"Issue | PullRequest\",\"optional\":false},{\"name\":\"status\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"analyzeHealth\":{\"name\":\"analyzeHealth\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"getByTitle\":{\"name\":\"getByTitle\",\"async\":true,\"parameters\":[{\"name\":\"title\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<Project | null>\",\"isStatic\":true,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"sync\",\"addItem\",\"updateItemStatus\"]},\"cli\":{\"include\":[\"list\",\"get\",\"sync\",\"addItem\",\"updateItemStatus\",\"listItems\"],\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Project\",\"collectionExportName\":\"ProjectCollection\",\"schema\":{\"tableName\":\"projects\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"projects\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"project_id\\\" TEXT DEFAULT '',\\n \\\"project_number\\\" INTEGER DEFAULT 0,\\n \\\"title\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"owner\\\" TEXT DEFAULT '',\\n \\\"url\\\" TEXT DEFAULT '',\\n \\\"provider_type\\\" TEXT DEFAULT 'github',\\n \\\"token_config_key\\\" TEXT DEFAULT 'GITHUB_TOKEN',\\n \\\"statuses\\\" JSON DEFAULT '[]',\\n \\\"fields\\\" JSON DEFAULT '[]',\\n \\\"status_field_id\\\" TEXT DEFAULT '',\\n \\\"status_options\\\" JSON DEFAULT '{}',\\n \\\"last_synced_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"project_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"project_number\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0},\"title\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"owner\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"provider_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"github\"},\"token_config_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"GITHUB_TOKEN\"},\"statuses\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":[]},\"fields\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":[]},\"status_field_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"status_options\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":{}},\"last_synced_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"projects_id_idx\",\"columns\":[\"id\"]},{\"name\":\"projects_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"2e8c344a\"}},\"@happyvertical/smrt-projects:ProjectIntegration\":{\"name\":\"projectintegration\",\"className\":\"ProjectIntegration\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectIntegration\",\"collection\":\"projectintegrations\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/ProjectIntegration.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"projectId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"credentialHash\":{\"type\":\"text\",\"required\":false,\"default\":\"\",\"_meta\":{\"sensitive\":true},\"sensitive\":true},\"capabilities\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"status\":{\"type\":\"text\",\"required\":false,\"default\":\"active\"},\"revokedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"hasCapability\":{\"name\":\"hasCapability\",\"async\":false,\"parameters\":[{\"name\":\"capability\",\"type\":\"ProjectIntegrationCapability\",\"optional\":false}],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isActive\":{\"name\":\"isActive\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"project_integrations\",\"conflictColumns\":[\"tenant_id\",\"project_id\",\"name\"],\"api\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProjectIntegration\",\"collectionExportName\":\"ProjectIntegrationCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"}],\"schema\":{\"tableName\":\"project_integrations\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_integrations\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"project_id\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"credential_hash\\\" TEXT DEFAULT '',\\n \\\"capabilities\\\" JSON DEFAULT '[]',\\n \\\"status\\\" TEXT DEFAULT 'active',\\n \\\"revoked_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"project_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"credential_hash\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"capabilities\":{\"type\":\"JSON\",\"notNull\":false,\"unique\":false,\"default\":[]},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"active\"},\"revoked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"project_integrations_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_integrations_tenant_id_project_id_idx\",\"columns\":[\"tenant_id\",\"project_id\",\"name\"],\"unique\":true}],\"version\":\"bfbaa783\"}},\"@happyvertical/smrt-projects:ProjectIntegrationAudit\":{\"name\":\"projectintegrationaudit\",\"className\":\"ProjectIntegrationAudit\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectIntegrationAudit\",\"collection\":\"projectintegrationaudits\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/ProjectIntegrationAudit.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"integrationId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProjectIntegration\",\"_meta\":{\"required\":true}},\"action\":{\"type\":\"text\",\"required\":false,\"default\":\"created\"},\"note\":{\"type\":\"text\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"project_integration_audits\",\"api\":false,\"mcp\":false,\"cli\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProjectIntegrationAudit\",\"collectionExportName\":\"ProjectIntegrationAuditCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"integrationId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"project_integration_audits\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_integration_audits\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"integration_id\\\" UUID NOT NULL,\\n \\\"action\\\" TEXT DEFAULT 'created',\\n \\\"note\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"integration_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"action\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"created\"},\"note\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"project_integration_audits_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_integration_audits_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"acf40ff8\"}},\"@happyvertical/smrt-projects:PullRequest\":{\"name\":\"pullrequest\",\"className\":\"PullRequest\",\"qualifiedName\":\"@happyvertical/smrt-projects:PullRequest\",\"collection\":\"issues\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/PullRequest.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"created_at\":{\"type\":\"datetime\",\"required\":false},\"updated_at\":{\"type\":\"datetime\",\"required\":false},\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"repositoryId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"Repository\",\"_meta\":{\"required\":true}},\"number\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"nodeId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"title\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"body\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"state\":{\"type\":\"text\",\"required\":false,\"default\":\"open\"},\"author\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"labels\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"assignees\":{\"type\":\"json\",\"required\":false,\"default\":[]},\"commentsCount\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"lastSyncedAt\":{\"type\":\"datetime\",\"required\":false},\"originalBody\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"synthesisCount\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"headRef\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"baseRef\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"merged\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"mergedAt\":{\"type\":\"datetime\",\"required\":false},\"mergeable\":{\"type\":\"boolean\",\"required\":false,\"default\":true},\"draft\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"additions\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"deletions\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"changedFiles\":{\"type\":\"integer\",\"required\":false,\"default\":0}},\"methods\":{\"getAiUsageSnapshot\":{\"name\":\"getAiUsageSnapshot\",\"async\":false,\"parameters\":[],\"returnType\":\"AiUsageSnapshot | undefined\",\"isStatic\":false,\"isPublic\":true},\"resetAiUsage\":{\"name\":\"resetAiUsage\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"listAiUsage\":{\"name\":\"listAiUsage\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiUsageListOptions\",\"optional\":true}],\"returnType\":\"Promise<SmrtAiUsageRecord[]>\",\"isStatic\":false,\"isPublic\":true},\"summarizeAiUsage\":{\"name\":\"summarizeAiUsage\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiUsageSummaryOptions\",\"optional\":true}],\"returnType\":\"Promise<Record<string, AiUsageStats>>\",\"isStatic\":false,\"isPublic\":true},\"destroy\":{\"name\":\"destroy\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"markAsPersisted\":{\"name\":\"markAsPersisted\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"requireInsertOnSave\":{\"name\":\"requireInsertOnSave\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"loadDataFromDb\":{\"name\":\"loadDataFromDb\",\"async\":true,\"parameters\":[{\"name\":\"data\",\"type\":\"Record<string>\",\"optional\":false}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getFields\":{\"name\":\"getFields\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"toJSON\":{\"name\":\"toJSON\",\"async\":false,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"toPlainObject\":{\"name\":\"toPlainObject\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"toPublicJSON\":{\"name\":\"toPublicJSON\",\"async\":false,\"parameters\":[{\"name\":\"options\",\"type\":\"PublicJsonOptions\",\"optional\":true}],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"getId\":{\"name\":\"getId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSlug\":{\"name\":\"getSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"getSavedId\":{\"name\":\"getSavedId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"isSaved\":{\"name\":\"isSaved\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"classifyConstraintError\":{\"name\":\"classifyConstraintError\",\"async\":false,\"parameters\":[{\"name\":\"message\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"'unique' | 'not_null' | null\",\"isStatic\":true,\"isPublic\":true},\"loadFromId\":{\"name\":\"loadFromId\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"loadFromSlug\":{\"name\":\"loadFromSlug\",\"async\":true,\"parameters\":[],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"is\":{\"name\":\"is\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"do\":{\"name\":\"do\",\"async\":true,\"parameters\":[{\"name\":\"instructions\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"describe\":{\"name\":\"describe\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"AiOperationOptions\",\"optional\":true}],\"returnType\":\"any\",\"isStatic\":false,\"isPublic\":true},\"delete\":{\"name\":\"delete\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"isRelatedLoaded\":{\"name\":\"isRelatedLoaded\",\"async\":false,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"_setLoadedRelationship\":{\"name\":\"_setLoadedRelationship\",\"async\":false,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"value\",\"type\":\"any\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"loadRelated\":{\"name\":\"loadRelated\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"loadRelatedMany\":{\"name\":\"loadRelatedMany\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any[]>\",\"isStatic\":false,\"isPublic\":true},\"getRelated\":{\"name\":\"getRelated\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"opts\",\"type\":\"LoadRelatedOptions\",\"optional\":true}],\"returnType\":\"Promise<any>\",\"isStatic\":false,\"isPublic\":true},\"getAvailableTools\":{\"name\":\"getAvailableTools\",\"async\":false,\"parameters\":[],\"returnType\":\"AITool[]\",\"isStatic\":false,\"isPublic\":true},\"executeToolCall\":{\"name\":\"executeToolCall\",\"async\":true,\"parameters\":[{\"name\":\"toolCall\",\"type\":\"ToolCall\",\"optional\":false}],\"returnType\":\"Promise<ToolCallResult>\",\"isStatic\":false,\"isPublic\":true},\"remember\":{\"name\":\"remember\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"recall\":{\"name\":\"recall\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"recallAll\":{\"name\":\"recallAll\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":true}],\"returnType\":\"Promise<Map<string>>\",\"isStatic\":false,\"isPublic\":true},\"forget\":{\"name\":\"forget\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"forgetScope\":{\"name\":\"forgetScope\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"object\",\"optional\":false}],\"returnType\":\"Promise<number>\",\"isStatic\":false,\"isPublic\":true},\"generateEmbeddings\":{\"name\":\"generateEmbeddings\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"GenerateEmbeddingsOptions\",\"optional\":true}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getEmbedding\":{\"name\":\"getEmbedding\",\"async\":true,\"parameters\":[{\"name\":\"fieldName\",\"type\":\"string\",\"optional\":false},{\"name\":\"model\",\"type\":\"string\",\"optional\":true}],\"returnType\":\"Promise<number[] | null>\",\"isStatic\":false,\"isPublic\":true},\"hasStaleEmbeddings\":{\"name\":\"hasStaleEmbeddings\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"clearEmbeddings\":{\"name\":\"clearEmbeddings\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getRepository\":{\"name\":\"getRepository\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Repository>\",\"isStatic\":false,\"isPublic\":true},\"getClient\":{\"name\":\"getClient\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<IRepository>\",\"isStatic\":false,\"isPublic\":true},\"clearCache\":{\"name\":\"clearCache\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"sync\":{\"name\":\"sync\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SyncOptions\",\"optional\":true}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"getComments\":{\"name\":\"getComments\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Comment[]>\",\"isStatic\":false,\"isPublic\":true},\"addComment\":{\"name\":\"addComment\",\"async\":true,\"parameters\":[{\"name\":\"body\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<Comment>\",\"isStatic\":false,\"isPublic\":true},\"incorporateFeedback\":{\"name\":\"incorporateFeedback\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"IncorporateFeedbackOptions\",\"optional\":true}],\"returnType\":\"Promise<IncorporateFeedbackResult>\",\"isStatic\":false,\"isPublic\":true},\"rollback\":{\"name\":\"rollback\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true},\"needsReview\":{\"name\":\"needsReview\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isBugReport\":{\"name\":\"isBugReport\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"isFeatureRequest\":{\"name\":\"isFeatureRequest\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"suggestLabels\":{\"name\":\"suggestLabels\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"close\":{\"name\":\"close\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"addLabels\":{\"name\":\"addLabels\",\"async\":true,\"parameters\":[{\"name\":\"labels\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"removeLabel\":{\"name\":\"removeLabel\",\"async\":true,\"parameters\":[{\"name\":\"label\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"assign\":{\"name\":\"assign\",\"async\":true,\"parameters\":[{\"name\":\"assignees\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"getUrl\":{\"name\":\"getUrl\",\"async\":false,\"parameters\":[],\"returnType\":\"string\",\"isStatic\":false,\"isPublic\":true},\"summarize\":{\"name\":\"summarize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"merge\":{\"name\":\"merge\",\"async\":true,\"parameters\":[{\"name\":\"method\",\"type\":\"MergeMethod\",\"optional\":true,\"default\":\"squash\"}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"markReady\":{\"name\":\"markReady\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"convertToDraft\":{\"name\":\"convertToDraft\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"requestReviewers\":{\"name\":\"requestReviewers\",\"async\":true,\"parameters\":[{\"name\":\"reviewers\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<void>\",\"isStatic\":false,\"isPublic\":true},\"findLinkedIssue\":{\"name\":\"findLinkedIssue\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<Issue | null>\",\"isStatic\":false,\"isPublic\":true},\"isReadyToMerge\":{\"name\":\"isReadyToMerge\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"suggestReviewers\":{\"name\":\"suggestReviewers\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string[]>\",\"isStatic\":false,\"isPublic\":true},\"getChangeSize\":{\"name\":\"getChangeSize\",\"async\":false,\"parameters\":[],\"returnType\":\"'xs' | 's' | 'm' | 'l' | 'xl'\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"sync\",\"summarize\",\"merge\"]},\"cli\":{\"include\":[\"list\",\"get\",\"sync\",\"summarize\",\"merge\",\"markReady\"],\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"},\"tableName\":\"issues\",\"tableStrategy\":\"sti\"},\"extends\":\"Issue\",\"exportName\":\"PullRequest\",\"collectionExportName\":\"PullRequestCollection\",\"validationRules\":[{\"field\":\"repositoryId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"issues\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"issues\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"_meta_type\\\" TEXT NOT NULL,\\n \\\"_meta_data\\\" JSON,\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"repository_id\\\" UUID,\\n \\\"number\\\" INTEGER DEFAULT 0,\\n \\\"node_id\\\" TEXT DEFAULT '',\\n \\\"title\\\" TEXT DEFAULT '',\\n \\\"body\\\" TEXT DEFAULT '',\\n \\\"state\\\" TEXT DEFAULT 'open',\\n \\\"author\\\" TEXT DEFAULT '',\\n \\\"labels\\\" JSON DEFAULT '[]',\\n \\\"assignees\\\" JSON DEFAULT '[]',\\n \\\"comments_count\\\" INTEGER DEFAULT 0,\\n \\\"last_synced_at\\\" TIMESTAMP,\\n \\\"original_body\\\" TEXT DEFAULT '',\\n \\\"synthesis_count\\\" INTEGER DEFAULT 0,\\n \\\"head_ref\\\" TEXT DEFAULT '',\\n \\\"base_ref\\\" TEXT DEFAULT '',\\n \\\"merged\\\" BOOLEAN DEFAULT FALSE,\\n \\\"merged_at\\\" TIMESTAMP,\\n \\\"mergeable\\\" BOOLEAN DEFAULT TRUE,\\n \\\"draft\\\" BOOLEAN DEFAULT FALSE,\\n \\\"additions\\\" INTEGER DEFAULT 0,\\n \\\"deletions\\\" INTEGER DEFAULT 0,\\n \\\"changed_files\\\" INTEGER DEFAULT 0\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"_meta_type\":{\"type\":\"TEXT\",\"notNull\":true},\"_meta_data\":{\"type\":\"JSON\",\"notNull\":false},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false},\"repository_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false},\"number\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"node_id\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"title\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"body\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"state\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"open\"},\"author\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"labels\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]},\"assignees\":{\"type\":\"JSON\",\"notNull\":false,\"default\":[]},\"comments_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"last_synced_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"original_body\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"synthesis_count\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"head_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"base_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"default\":\"\"},\"merged\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false},\"merged_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false},\"mergeable\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":true},\"draft\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"default\":false},\"additions\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"deletions\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0},\"changed_files\":{\"type\":\"INTEGER\",\"notNull\":false,\"default\":0}},\"indexes\":[{\"name\":\"issues_id_idx\",\"columns\":[\"id\"]},{\"name\":\"issues_slug_context_meta_type_idx\",\"columns\":[\"slug\",\"context\",\"_meta_type\"],\"unique\":true},{\"name\":\"issues_meta_type_idx\",\"columns\":[\"_meta_type\"]}],\"version\":\"f42d9cf0\"}},\"@happyvertical/smrt-projects:Repository\":{\"name\":\"repository\",\"className\":\"Repository\",\"qualifiedName\":\"@happyvertical/smrt-projects:Repository\",\"collection\":\"repositories\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/Repository.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"owner\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"name\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"fullName\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"defaultBranch\":{\"type\":\"text\",\"required\":false,\"default\":\"main\"},\"isPrivate\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"providerType\":{\"type\":\"text\",\"required\":false,\"default\":\"github\"},\"baseUrl\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"tokenConfigKey\":{\"type\":\"text\",\"required\":false,\"default\":\"GITHUB_TOKEN\"},\"lastSyncedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"getClient\":{\"name\":\"getClient\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<IRepository>\",\"isStatic\":false,\"isPublic\":true},\"clearClient\":{\"name\":\"clearClient\",\"async\":false,\"parameters\":[],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"sync\":{\"name\":\"sync\",\"async\":true,\"parameters\":[{\"name\":\"options\",\"type\":\"SyncOptions\",\"optional\":true}],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"getIssues\":{\"name\":\"getIssues\",\"async\":true,\"parameters\":[{\"name\":\"filters\",\"type\":\"SearchFilters\",\"optional\":true}],\"returnType\":\"Promise<Issue[]>\",\"isStatic\":false,\"isPublic\":true},\"getPullRequests\":{\"name\":\"getPullRequests\",\"async\":true,\"parameters\":[{\"name\":\"filters\",\"type\":\"SearchFilters\",\"optional\":true}],\"returnType\":\"Promise<PullRequest[]>\",\"isStatic\":false,\"isPublic\":true},\"createIssue\":{\"name\":\"createIssue\",\"async\":true,\"parameters\":[{\"name\":\"data\",\"type\":\"CreateIssueInput\",\"optional\":false}],\"returnType\":\"Promise<Issue>\",\"isStatic\":false,\"isPublic\":true},\"createPullRequest\":{\"name\":\"createPullRequest\",\"async\":true,\"parameters\":[{\"name\":\"data\",\"type\":\"CreatePRInput\",\"optional\":false}],\"returnType\":\"Promise<PullRequest>\",\"isStatic\":false,\"isPublic\":true},\"hasOpenIssuesMatching\":{\"name\":\"hasOpenIssuesMatching\",\"async\":true,\"parameters\":[{\"name\":\"criteria\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true},\"summarizeActivity\":{\"name\":\"summarizeActivity\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<string>\",\"isStatic\":false,\"isPublic\":true},\"getByFullName\":{\"name\":\"getByFullName\",\"async\":true,\"parameters\":[{\"name\":\"owner\",\"type\":\"string\",\"optional\":false},{\"name\":\"name\",\"type\":\"string\",\"optional\":false},{\"name\":\"options\",\"type\":\"SmrtObjectOptions\",\"optional\":true}],\"returnType\":\"Promise<Repository | null>\",\"isStatic\":true,\"isPublic\":true}},\"decoratorConfig\":{\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\"]},\"mcp\":{\"include\":[\"list\",\"get\",\"sync\"]},\"cli\":{\"include\":[\"list\",\"get\",\"sync\",\"create\"],\"skipApiCheck\":true},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"Repository\",\"collectionExportName\":\"RepositoryCollection\",\"schema\":{\"tableName\":\"repositories\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"repositories\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"owner\\\" TEXT DEFAULT '',\\n \\\"name\\\" TEXT DEFAULT '',\\n \\\"full_name\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"default_branch\\\" TEXT DEFAULT 'main',\\n \\\"is_private\\\" BOOLEAN DEFAULT FALSE,\\n \\\"provider_type\\\" TEXT DEFAULT 'github',\\n \\\"base_url\\\" TEXT DEFAULT '',\\n \\\"token_config_key\\\" TEXT DEFAULT 'GITHUB_TOKEN',\\n \\\"last_synced_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"owner\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"full_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"default_branch\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"main\"},\"is_private\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"provider_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"github\"},\"base_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"token_config_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"GITHUB_TOKEN\"},\"last_synced_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"repositories_id_idx\",\"columns\":[\"id\"]},{\"name\":\"repositories_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"c302a5e5\"}},\"@happyvertical/smrt-projects:DevelopmentRequestWorkLink\":{\"name\":\"developmentrequestworklink\",\"className\":\"DevelopmentRequestWorkLink\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestWorkLink\",\"collection\":\"developmentrequestworklinks\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"requestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"DevelopmentRequest\",\"_meta\":{\"required\":true}},\"workItemType\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"workItemId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"canonicalStatus\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"providerRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"metadata\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"lastProjectedAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"development_request_work_links\",\"conflictColumns\":[\"request_id\",\"work_item_type\",\"work_item_id\"],\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"DevelopmentRequestWorkLink\",\"collectionExportName\":\"DevelopmentRequestWorkLinkCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"requestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"development_request_work_links\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_request_work_links\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"request_id\\\" UUID NOT NULL,\\n \\\"work_item_type\\\" TEXT,\\n \\\"work_item_id\\\" TEXT,\\n \\\"canonical_status\\\" TEXT,\\n \\\"provider_ref\\\" TEXT,\\n \\\"metadata\\\" TEXT,\\n \\\"last_projected_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"work_item_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"work_item_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"canonical_status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"provider_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"last_projected_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"development_request_work_links_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_request_work_links_request_id_work_item_type_idx\",\"columns\":[\"request_id\",\"work_item_type\",\"work_item_id\"],\"unique\":true}],\"version\":\"d832a71f\"}},\"@happyvertical/smrt-projects:ProjectDeliveryEvent\":{\"name\":\"projectdeliveryevent\",\"className\":\"ProjectDeliveryEvent\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectDeliveryEvent\",\"collection\":\"projectdeliveryevents\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"integrationId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProjectIntegration\",\"_meta\":{\"required\":true}},\"requestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"DevelopmentRequest\",\"_meta\":{\"required\":true}},\"idempotencyKey\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"sequence\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"type\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"payload\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"occurredAt\":{\"type\":\"datetime\",\"required\":false},\"deliveredAt\":{\"type\":\"datetime\",\"required\":false},\"deliveryAttempts\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"lastDeliveryError\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"project_delivery_events\",\"conflictColumns\":[\"integration_id\",\"idempotency_key\"],\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ProjectDeliveryEvent\",\"collectionExportName\":\"ProjectDeliveryEventCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"integrationId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"},{\"field\":\"requestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"project_delivery_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_delivery_events\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"integration_id\\\" UUID NOT NULL,\\n \\\"request_id\\\" UUID NOT NULL,\\n \\\"idempotency_key\\\" TEXT,\\n \\\"sequence\\\" INTEGER DEFAULT 0,\\n \\\"type\\\" TEXT,\\n \\\"payload\\\" TEXT,\\n \\\"occurred_at\\\" TIMESTAMP,\\n \\\"delivered_at\\\" TIMESTAMP,\\n \\\"delivery_attempts\\\" INTEGER DEFAULT 0,\\n \\\"last_delivery_error\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"integration_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"idempotency_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"sequence\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0},\"type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"payload\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"occurred_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"delivered_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"delivery_attempts\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0},\"last_delivery_error\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"project_delivery_events_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_delivery_events_integration_id_idempotency_key_idx\",\"columns\":[\"integration_id\",\"idempotency_key\"],\"unique\":true}],\"version\":\"d231f634\"}},\"@happyvertical/smrt-projects:PreviewApproval\":{\"name\":\"previewapproval\",\"className\":\"PreviewApproval\",\"qualifiedName\":\"@happyvertical/smrt-projects:PreviewApproval\",\"collection\":\"previewapprovals\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"requestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"DevelopmentRequest\",\"_meta\":{\"required\":true}},\"previewId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"previewUrl\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"decidedByRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"reason\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"createdAt\":{\"type\":\"datetime\",\"required\":false},\"decidedAt\":{\"type\":\"datetime\",\"required\":false},\"staleAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"preview_approvals\",\"conflictColumns\":[\"request_id\",\"preview_id\"],\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"PreviewApproval\",\"collectionExportName\":\"PreviewApprovalCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"requestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"preview_approvals\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"preview_approvals\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"request_id\\\" UUID NOT NULL,\\n \\\"preview_id\\\" TEXT,\\n \\\"preview_url\\\" TEXT,\\n \\\"status\\\" TEXT,\\n \\\"decided_by_ref\\\" TEXT,\\n \\\"reason\\\" TEXT,\\n \\\"decided_at\\\" TIMESTAMP,\\n \\\"stale_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"preview_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"preview_url\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"decided_by_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"reason\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"decided_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"stale_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"preview_approvals_id_idx\",\"columns\":[\"id\"]},{\"name\":\"preview_approvals_request_id_preview_id_idx\",\"columns\":[\"request_id\",\"preview_id\"],\"unique\":true}],\"version\":\"a6f8ab0a\"}},\"@happyvertical/smrt-projects:AssistanceRequest\":{\"name\":\"assistancerequest\",\"className\":\"AssistanceRequest\",\"qualifiedName\":\"@happyvertical/smrt-projects:AssistanceRequest\",\"collection\":\"assistancerequests\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"integrationId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ProjectIntegration\",\"_meta\":{\"required\":true}},\"requesterId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"subject\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"applicationContext\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"conversation\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"evidence\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"classification\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"supportCaseId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"developmentRequestId\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"deliveryHandoffLinkedAt\":{\"type\":\"datetime\",\"required\":false},\"createdAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"assistance_requests\",\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"AssistanceRequest\",\"collectionExportName\":\"AssistanceRequestCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"integrationId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"assistance_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"assistance_requests\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"integration_id\\\" UUID NOT NULL,\\n \\\"requester_id\\\" TEXT,\\n \\\"subject\\\" TEXT,\\n \\\"application_context\\\" TEXT,\\n \\\"conversation\\\" TEXT,\\n \\\"evidence\\\" TEXT,\\n \\\"classification\\\" TEXT,\\n \\\"support_case_id\\\" TEXT,\\n \\\"development_request_id\\\" TEXT,\\n \\\"delivery_handoff_linked_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"integration_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"requester_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"subject\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"application_context\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"conversation\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"evidence\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"classification\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"support_case_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"development_request_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"delivery_handoff_linked_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"assistance_requests_id_idx\",\"columns\":[\"id\"]},{\"name\":\"assistance_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"3ca6f508\"}},\"@happyvertical/smrt-projects:AssistanceRequestEvent\":{\"name\":\"assistancerequestevent\",\"className\":\"AssistanceRequestEvent\",\"qualifiedName\":\"@happyvertical/smrt-projects:AssistanceRequestEvent\",\"collection\":\"assistancerequestevents\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":true,\"_meta\":{\"sqlType\":\"UUID\",\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":true,\"autoPopulate\":true,\"nullable\":false,\"mode\":\"required\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"assistanceRequestId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"AssistanceRequest\",\"_meta\":{\"required\":true}},\"priorClassification\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"resultingClassification\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"actorRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"reason\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"resultingLinks\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"occurredAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"assistance_request_events\",\"api\":false,\"cli\":false,\"mcp\":false,\"tenantScoped\":{\"mode\":\"required\"}},\"extends\":\"SmrtObject\",\"exportName\":\"AssistanceRequestEvent\",\"collectionExportName\":\"AssistanceRequestEventCollection\",\"validationRules\":[{\"field\":\"tenantId\",\"rule\":\"required\",\"fieldType\":\"text\"},{\"field\":\"assistanceRequestId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"assistance_request_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"assistance_request_events\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID NOT NULL,\\n \\\"assistance_request_id\\\" UUID NOT NULL,\\n \\\"prior_classification\\\" TEXT,\\n \\\"resulting_classification\\\" TEXT,\\n \\\"actor_ref\\\" TEXT,\\n \\\"reason\\\" TEXT,\\n \\\"resulting_links\\\" TEXT,\\n \\\"occurred_at\\\" TIMESTAMP\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":true,\"unique\":false},\"assistance_request_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"prior_classification\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resulting_classification\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"actor_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"reason\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"resulting_links\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"occurred_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"assistance_request_events_id_idx\",\"columns\":[\"id\"]},{\"name\":\"assistance_request_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"896f3684\"}},\"@happyvertical/smrt-projects:DevelopmentRequestWorkLinkCollection\":{\"name\":\"developmentrequestworklinkcollection\",\"className\":\"DevelopmentRequestWorkLinkCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:DevelopmentRequestWorkLinkCollection\",\"collection\":\"developmentrequestworklinks\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"development_request_work_links\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"DevelopmentRequestWorkLink\",\"exportName\":\"DevelopmentRequestWorkLinkCollection\",\"collectionExportName\":\"DevelopmentRequestWorkLinkCollectionCollection\",\"schema\":{\"tableName\":\"development_request_work_links\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"development_request_work_links\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"development_request_work_links_id_idx\",\"columns\":[\"id\"]},{\"name\":\"development_request_work_links_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"ff9733d7\"}},\"@happyvertical/smrt-projects:ProjectDeliveryEventCollection\":{\"name\":\"projectdeliveryeventcollection\",\"className\":\"ProjectDeliveryEventCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ProjectDeliveryEventCollection\",\"collection\":\"projectdeliveryevents\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"project_delivery_events\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ProjectDeliveryEvent\",\"exportName\":\"ProjectDeliveryEventCollection\",\"collectionExportName\":\"ProjectDeliveryEventCollectionCollection\",\"schema\":{\"tableName\":\"project_delivery_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"project_delivery_events\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"project_delivery_events_id_idx\",\"columns\":[\"id\"]},{\"name\":\"project_delivery_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"90db5058\"}},\"@happyvertical/smrt-projects:PreviewApprovalCollection\":{\"name\":\"previewapprovalcollection\",\"className\":\"PreviewApprovalCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:PreviewApprovalCollection\",\"collection\":\"previewapprovals\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"preview_approvals\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"PreviewApproval\",\"exportName\":\"PreviewApprovalCollection\",\"collectionExportName\":\"PreviewApprovalCollectionCollection\",\"schema\":{\"tableName\":\"preview_approvals\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"preview_approvals\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"preview_approvals_id_idx\",\"columns\":[\"id\"]},{\"name\":\"preview_approvals_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"79411098\"}},\"@happyvertical/smrt-projects:AssistanceRequestCollection\":{\"name\":\"assistancerequestcollection\",\"className\":\"AssistanceRequestCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:AssistanceRequestCollection\",\"collection\":\"assistancerequests\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"assistance_requests\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"AssistanceRequest\",\"exportName\":\"AssistanceRequestCollection\",\"collectionExportName\":\"AssistanceRequestCollectionCollection\",\"schema\":{\"tableName\":\"assistance_requests\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"assistance_requests\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"assistance_requests_id_idx\",\"columns\":[\"id\"]},{\"name\":\"assistance_requests_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"1ac4a6f2\"}},\"@happyvertical/smrt-projects:AssistanceRequestEventCollection\":{\"name\":\"assistancerequesteventcollection\",\"className\":\"AssistanceRequestEventCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:AssistanceRequestEventCollection\",\"collection\":\"assistancerequestevents\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/delivery-control-plane.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"assistance_request_events\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"AssistanceRequestEvent\",\"exportName\":\"AssistanceRequestEventCollection\",\"collectionExportName\":\"AssistanceRequestEventCollectionCollection\",\"schema\":{\"tableName\":\"assistance_request_events\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"assistance_request_events\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"assistance_request_events_id_idx\",\"columns\":[\"id\"]},{\"name\":\"assistance_request_events_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"13f0ffe9\"}},\"@happyvertical/smrt-projects:ServiceTimeEntry\":{\"name\":\"servicetimeentry\",\"className\":\"ServiceTimeEntry\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceTimeEntry\",\"collection\":\"servicetimeentries\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"caseId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-support:SupportCase\",\"_meta\":{\"nullable\":true}},\"workRefType\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"workRefId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"nullable\":true}},\"specialistId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-support:SupportSpecialist\",\"_meta\":{\"nullable\":true}},\"participantKind\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"participantProfileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"nullable\":true}},\"agentRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"source\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"description\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"startedAt\":{\"type\":\"datetime\",\"required\":false},\"endedAt\":{\"type\":\"datetime\",\"required\":false},\"durationSeconds\":{\"type\":\"integer\",\"required\":false,\"default\":0},\"evidence\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"status\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"submittedAt\":{\"type\":\"datetime\",\"required\":false},\"submittedByProfileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"nullable\":true}},\"approvedAt\":{\"type\":\"datetime\",\"required\":false},\"approvedByProfileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"nullable\":true}},\"approvalPath\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"rejectedAt\":{\"type\":\"datetime\",\"required\":false},\"rejectedByProfileId\":{\"type\":\"crossPackageRef\",\"required\":false,\"related\":\"@happyvertical/smrt-profiles:Profile\",\"_meta\":{\"nullable\":true}},\"rejectionReason\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"correctionOfId\":{\"type\":\"foreignKey\",\"required\":false,\"related\":\"ServiceTimeEntry\"},\"metadata\":{\"type\":\"text\",\"required\":false,\"_meta\":{}}},\"methods\":{\"getEvidence\":{\"name\":\"getEvidence\",\"async\":false,\"parameters\":[],\"returnType\":\"ServiceEvidence[]\",\"isStatic\":false,\"isPublic\":true},\"setEvidence\":{\"name\":\"setEvidence\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"ServiceEvidence[]\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"Record<string>\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"value\",\"type\":\"Record<string>\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true},\"durationHours\":{\"name\":\"durationHours\",\"async\":false,\"parameters\":[],\"returnType\":\"number\",\"isStatic\":false,\"isPublic\":true},\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"service_time_entries\",\"api\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ServiceTimeEntry\",\"collectionExportName\":\"ServiceTimeEntryCollection\",\"schema\":{\"tableName\":\"service_time_entries\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_time_entries\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"case_id\\\" UUID,\\n \\\"work_ref_type\\\" TEXT,\\n \\\"work_ref_id\\\" TEXT,\\n \\\"specialist_id\\\" UUID,\\n \\\"participant_kind\\\" TEXT,\\n \\\"participant_profile_id\\\" UUID,\\n \\\"agent_ref\\\" TEXT,\\n \\\"source\\\" TEXT,\\n \\\"description\\\" TEXT,\\n \\\"started_at\\\" TIMESTAMP,\\n \\\"ended_at\\\" TIMESTAMP,\\n \\\"duration_seconds\\\" INTEGER DEFAULT 0,\\n \\\"evidence\\\" TEXT,\\n \\\"status\\\" TEXT,\\n \\\"submitted_at\\\" TIMESTAMP,\\n \\\"submitted_by_profile_id\\\" UUID,\\n \\\"approved_at\\\" TIMESTAMP,\\n \\\"approved_by_profile_id\\\" UUID,\\n \\\"approval_path\\\" TEXT,\\n \\\"rejected_at\\\" TIMESTAMP,\\n \\\"rejected_by_profile_id\\\" UUID,\\n \\\"rejection_reason\\\" TEXT,\\n \\\"correction_of_id\\\" UUID,\\n \\\"metadata\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"case_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"work_ref_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"work_ref_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"specialist_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"participant_kind\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"participant_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"agent_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"started_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"ended_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"duration_seconds\":{\"type\":\"INTEGER\",\"notNull\":false,\"unique\":false,\"default\":0},\"evidence\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"status\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"submitted_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"submitted_by_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"approved_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"approved_by_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"approval_path\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"rejected_at\":{\"type\":\"TIMESTAMP\",\"notNull\":false,\"unique\":false},\"rejected_by_profile_id\":{\"type\":\"UUID\",\"referenceKind\":\"crossPackageRef\",\"notNull\":false,\"unique\":false},\"rejection_reason\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"correction_of_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":false,\"unique\":false},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"service_time_entries_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_time_entries_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"78af3c7b\"}},\"@happyvertical/smrt-projects:ServiceChargeSnapshot\":{\"name\":\"servicechargesnapshot\",\"className\":\"ServiceChargeSnapshot\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceChargeSnapshot\",\"collection\":\"servicechargesnapshots\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"timeEntryId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ServiceTimeEntry\",\"_meta\":{\"required\":true}},\"amount\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"currency\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"pricingVersion\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"strategy\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"rateSnapshot\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"sourceChargeRef\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"createdAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"service_charge_snapshots\",\"conflictColumns\":[\"time_entry_id\"],\"api\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ServiceChargeSnapshot\",\"collectionExportName\":\"ServiceChargeSnapshotCollection\",\"validationRules\":[{\"field\":\"timeEntryId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"service_charge_snapshots\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_charge_snapshots\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"time_entry_id\\\" UUID NOT NULL,\\n \\\"amount\\\" REAL DEFAULT 0,\\n \\\"currency\\\" TEXT,\\n \\\"pricing_version\\\" TEXT,\\n \\\"strategy\\\" TEXT,\\n \\\"rate_snapshot\\\" TEXT,\\n \\\"source_charge_ref\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"time_entry_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"amount\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false,\"default\":0},\"currency\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"pricing_version\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"strategy\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"rate_snapshot\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"source_charge_ref\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"service_charge_snapshots_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_charge_snapshots_time_entry_id_idx\",\"columns\":[\"time_entry_id\"],\"unique\":true}],\"version\":\"f6d68265\"}},\"@happyvertical/smrt-projects:ServiceCompensationSnapshot\":{\"name\":\"servicecompensationsnapshot\",\"className\":\"ServiceCompensationSnapshot\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceCompensationSnapshot\",\"collection\":\"servicecompensationsnapshots\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{\"tenantId\":{\"type\":\"text\",\"required\":false,\"_meta\":{\"sqlType\":\"UUID\",\"nullable\":true,\"__tenancy\":{\"isTenantIdField\":true,\"autoFilter\":true,\"required\":false,\"autoPopulate\":true,\"nullable\":true,\"mode\":\"optional\",\"field\":\"tenantId\",\"allowSuperAdminBypass\":false}}},\"timeEntryId\":{\"type\":\"foreignKey\",\"required\":true,\"related\":\"ServiceTimeEntry\",\"_meta\":{\"required\":true}},\"amount\":{\"type\":\"decimal\",\"required\":false,\"default\":0},\"currency\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"termsVersion\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"rateSnapshot\":{\"type\":\"text\",\"required\":false,\"_meta\":{}},\"createdAt\":{\"type\":\"datetime\",\"required\":false}},\"methods\":{\"initialize\":{\"name\":\"initialize\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true},\"save\":{\"name\":\"save\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"service_compensation_snapshots\",\"conflictColumns\":[\"time_entry_id\"],\"api\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"]},\"mcp\":{\"include\":[\"list\",\"get\"]},\"tenantScoped\":{\"mode\":\"optional\"}},\"extends\":\"SmrtObject\",\"exportName\":\"ServiceCompensationSnapshot\",\"collectionExportName\":\"ServiceCompensationSnapshotCollection\",\"validationRules\":[{\"field\":\"timeEntryId\",\"rule\":\"required\",\"fieldType\":\"foreignKey\"}],\"schema\":{\"tableName\":\"service_compensation_snapshots\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_compensation_snapshots\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"tenant_id\\\" UUID,\\n \\\"time_entry_id\\\" UUID NOT NULL,\\n \\\"amount\\\" REAL DEFAULT 0,\\n \\\"currency\\\" TEXT,\\n \\\"terms_version\\\" TEXT,\\n \\\"rate_snapshot\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"tenant_id\":{\"type\":\"UUID\",\"referenceKind\":\"tenantId\",\"notNull\":false,\"unique\":false},\"time_entry_id\":{\"type\":\"UUID\",\"referenceKind\":\"foreignKey\",\"notNull\":true,\"unique\":false},\"amount\":{\"type\":\"REAL\",\"notNull\":false,\"unique\":false,\"default\":0},\"currency\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"terms_version\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"rate_snapshot\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"service_compensation_snapshots_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_compensation_snapshots_time_entry_id_idx\",\"columns\":[\"time_entry_id\"],\"unique\":true}],\"version\":\"2ab5d52f\"}},\"@happyvertical/smrt-projects:ServiceTimeEntryCollection\":{\"name\":\"servicetimeentrycollection\",\"className\":\"ServiceTimeEntryCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceTimeEntryCollection\",\"collection\":\"servicetimeentries\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{\"forWork\":{\"name\":\"forWork\",\"async\":true,\"parameters\":[{\"name\":\"workRefType\",\"type\":\"string\",\"optional\":false},{\"name\":\"workRefId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ServiceTimeEntry[]>\",\"isStatic\":false,\"isPublic\":true},\"forCase\":{\"name\":\"forCase\",\"async\":true,\"parameters\":[{\"name\":\"caseId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ServiceTimeEntry[]>\",\"isStatic\":false,\"isPublic\":true},\"forSpecialist\":{\"name\":\"forSpecialist\",\"async\":true,\"parameters\":[{\"name\":\"specialistId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<ServiceTimeEntry[]>\",\"isStatic\":false,\"isPublic\":true},\"pendingApproval\":{\"name\":\"pendingApproval\",\"async\":true,\"parameters\":[],\"returnType\":\"Promise<ServiceTimeEntry[]>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"service_time_entries\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ServiceTimeEntry\",\"exportName\":\"ServiceTimeEntryCollection\",\"collectionExportName\":\"ServiceTimeEntryCollectionCollection\",\"schema\":{\"tableName\":\"service_time_entries\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_time_entries\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"service_time_entries_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_time_entries_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"2c3a20bf\"}},\"@happyvertical/smrt-projects:ServiceChargeSnapshotCollection\":{\"name\":\"servicechargesnapshotcollection\",\"className\":\"ServiceChargeSnapshotCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceChargeSnapshotCollection\",\"collection\":\"servicechargesnapshots\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"service_charge_snapshots\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ServiceChargeSnapshot\",\"exportName\":\"ServiceChargeSnapshotCollection\",\"collectionExportName\":\"ServiceChargeSnapshotCollectionCollection\",\"schema\":{\"tableName\":\"service_charge_snapshots\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_charge_snapshots\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"service_charge_snapshots_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_charge_snapshots_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"29633321\"}},\"@happyvertical/smrt-projects:ServiceCompensationSnapshotCollection\":{\"name\":\"servicecompensationsnapshotcollection\",\"className\":\"ServiceCompensationSnapshotCollection\",\"qualifiedName\":\"@happyvertical/smrt-projects:ServiceCompensationSnapshotCollection\",\"collection\":\"servicecompensationsnapshots\",\"filePath\":\"/home/runner/_work/smrt/smrt/packages/projects/src/models/service-evidence.ts\",\"packageName\":\"@happyvertical/smrt-projects\",\"fields\":{},\"methods\":{},\"decoratorConfig\":{\"tableName\":\"service_compensation_snapshots\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"ServiceCompensationSnapshot\",\"exportName\":\"ServiceCompensationSnapshotCollection\",\"collectionExportName\":\"ServiceCompensationSnapshotCollectionCollection\",\"schema\":{\"tableName\":\"service_compensation_snapshots\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"service_compensation_snapshots\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"service_compensation_snapshots_id_idx\",\"columns\":[\"id\"]},{\"name\":\"service_compensation_snapshots_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true}],\"version\":\"1fbc57ea\"}}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-prompts\",\"@happyvertical/smrt-subscriptions\",\"@happyvertical/smrt-tenancy\"]}"));
15
15
  //#endregion
16
16
  //#region src/models/DevelopmentRequestHistory.ts
17
17
  var __defProp$9 = Object.defineProperty;
@@ -1659,54 +1659,7 @@ var RepositoryCollection = class extends SmrtCollection {
1659
1659
  }
1660
1660
  };
1661
1661
  //#endregion
1662
- //#region src/managed-client.ts
1663
- var ManagedProjectClient = class ManagedProjectClient {
1664
- #db;
1665
- #integration;
1666
- #requesterId;
1667
- constructor(integration, options) {
1668
- this.#integration = integration;
1669
- this.#db = options.db;
1670
- this.#requesterId = options.requesterId;
1671
- }
1672
- static async authenticate(credential, options) {
1673
- if (!options.requesterId.trim()) throw new Error("Managed project client requires a stable requesterId");
1674
- const integration = await (await ProjectIntegrationCollection.create({ db: options.db })).authenticate(credential);
1675
- if (!integration) throw new Error("Invalid or revoked project integration credential");
1676
- return new ManagedProjectClient(integration, options);
1677
- }
1678
- async createRequest(input) {
1679
- const integration = await this.#requireCapability("requests:create");
1680
- if (!input.description.trim()) throw new Error("Managed request creation requires a description");
1681
- return (await DevelopmentRequestCollection.create({ db: this.#db })).createManaged({
1682
- ...input,
1683
- tenantId: integration.tenantId,
1684
- projectId: integration.projectId,
1685
- integrationId: integration.id,
1686
- requesterId: this.#requesterId
1687
- });
1688
- }
1689
- async listRequests() {
1690
- const integration = await this.#requireCapability("requests:read-own");
1691
- return (await DevelopmentRequestCollection.create({ db: this.#db })).listByIntegrationRequester({
1692
- tenantId: integration.tenantId,
1693
- integrationId: integration.id,
1694
- requesterId: this.#requesterId
1695
- });
1696
- }
1697
- async #requireCapability(capability) {
1698
- const tenantId = this.#integration.tenantId;
1699
- const integrationId = this.#integration.id;
1700
- if (!tenantId || !integrationId) throw new Error("Invalid or revoked project integration credential");
1701
- const integration = await (await ProjectIntegrationCollection.create({ db: this.#db })).findActive(tenantId, integrationId);
1702
- if (!integration) throw new Error("Invalid or revoked project integration credential");
1703
- if (!integration.hasCapability(capability)) throw new Error(`Managed project integration lacks required capability '${capability}'`);
1704
- return integration;
1705
- }
1706
- };
1707
- //#endregion
1708
- //#region src/models/Comment.ts
1709
- var Comment_exports = /* @__PURE__ */ __exportAll({ Comment: () => Comment });
1662
+ //#region src/models/delivery-control-plane.ts
1710
1663
  var __defProp$3 = Object.defineProperty;
1711
1664
  var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
1712
1665
  var __decorateClass$3 = (decorators, target, key, kind) => {
@@ -1715,125 +1668,6 @@ var __decorateClass$3 = (decorators, target, key, kind) => {
1715
1668
  if (kind && result) __defProp$3(target, key, result);
1716
1669
  return result;
1717
1670
  };
1718
- var logger = createLogger({ level: "info" });
1719
- var Comment = class extends SmrtObject {
1720
- tenantId = null;
1721
- issueId;
1722
- /**
1723
- * Provider-specific comment ID
1724
- */
1725
- commentId = "";
1726
- /**
1727
- * Comment body text
1728
- */
1729
- body = "";
1730
- /**
1731
- * Comment author's login
1732
- */
1733
- author = "";
1734
- /**
1735
- * When the comment was created
1736
- */
1737
- createdAt = null;
1738
- /**
1739
- * When the comment was last updated
1740
- */
1741
- updatedAt = null;
1742
- /**
1743
- * Comment URL
1744
- */
1745
- url = "";
1746
- constructor(options = {}) {
1747
- super(options);
1748
- if (options.issueId !== void 0) this.issueId = options.issueId;
1749
- if (options.commentId !== void 0) this.commentId = options.commentId;
1750
- if (options.body !== void 0) this.body = options.body;
1751
- if (options.author !== void 0) this.author = options.author;
1752
- if (options.createdAt !== void 0) this.createdAt = options.createdAt;
1753
- if (options.updatedAt !== void 0) this.updatedAt = options.updatedAt;
1754
- if (options.url !== void 0) this.url = options.url;
1755
- if (options.tenantId !== void 0) this.tenantId = options.tenantId;
1756
- }
1757
- /**
1758
- * AI-powered: Check if this comment contains a question
1759
- */
1760
- async isQuestion() {
1761
- return await this.is("This comment contains a question or request for clarification");
1762
- }
1763
- /**
1764
- * AI-powered: Check if this comment contains approval
1765
- */
1766
- async isApproval() {
1767
- return await this.is("This comment expresses approval, agreement, or a positive response (LGTM, +1, approved, etc.)");
1768
- }
1769
- /**
1770
- * AI-powered: Check if this comment requests changes
1771
- */
1772
- async requestsChanges() {
1773
- return await this.is("This comment requests changes, modifications, or improvements to the issue/PR");
1774
- }
1775
- /**
1776
- * AI-powered: Extract action items from this comment
1777
- *
1778
- * @returns Array of action items
1779
- */
1780
- async extractActionItems() {
1781
- const result = await this.do(`Extract any action items, tasks, or requests from this comment.
1782
- Return a JSON array of strings, each representing one action item.
1783
- If no action items, return an empty array [].
1784
- Only return the JSON array, nothing else.
1785
-
1786
- Comment: ${this.body}`, { includeData: false });
1787
- try {
1788
- return JSON.parse(result);
1789
- } catch (error) {
1790
- logger.warn("Failed to parse action items JSON", {
1791
- error: error instanceof Error ? error.message : error,
1792
- response: result
1793
- });
1794
- return [];
1795
- }
1796
- }
1797
- /**
1798
- * AI-powered: Summarize this comment
1799
- *
1800
- * @returns Brief summary
1801
- */
1802
- async summarize() {
1803
- return await this.do(`Summarize this comment in one sentence.
1804
- Comment by ${this.author}: ${this.body}`, { includeData: false });
1805
- }
1806
- /**
1807
- * Get the sentiment of this comment
1808
- *
1809
- * @returns Sentiment classification
1810
- */
1811
- async getSentiment() {
1812
- const normalized = (await this.do(`Classify the sentiment of this comment as exactly one of: positive, negative, neutral
1813
- Only return one word.
1814
- Comment: ${this.body}`, { includeData: false })).toLowerCase().trim();
1815
- if (normalized.includes("positive")) return "positive";
1816
- if (normalized.includes("negative")) return "negative";
1817
- return "neutral";
1818
- }
1819
- };
1820
- __decorateClass$3([tenantId({ nullable: true })], Comment.prototype, "tenantId", 2);
1821
- __decorateClass$3([foreignKey("Issue")], Comment.prototype, "issueId", 2);
1822
- Comment = __decorateClass$3([TenantScoped({ mode: "optional" }), smrt({
1823
- api: { include: ["list", "get"] },
1824
- mcp: { include: ["list", "get"] },
1825
- cli: { include: ["list", "get"] }
1826
- })], Comment);
1827
- //#endregion
1828
- //#region src/models/delivery-control-plane.ts
1829
- var __defProp$2 = Object.defineProperty;
1830
- var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
1831
- var __decorateClass$2 = (decorators, target, key, kind) => {
1832
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
1833
- for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
1834
- if (kind && result) __defProp$2(target, key, result);
1835
- return result;
1836
- };
1837
1671
  function parseProjectJson(value, fallback) {
1838
1672
  try {
1839
1673
  return JSON.parse(value);
@@ -1856,14 +1690,14 @@ var DevelopmentRequestWorkLink = class extends SmrtObject {
1856
1690
  metadata = "{}";
1857
1691
  lastProjectedAt = null;
1858
1692
  };
1859
- __decorateClass$2([tenantId()], DevelopmentRequestWorkLink.prototype, "tenantId", 2);
1860
- __decorateClass$2([foreignKey("DevelopmentRequest", { required: true })], DevelopmentRequestWorkLink.prototype, "requestId", 2);
1861
- __decorateClass$2([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "workItemType", 2);
1862
- __decorateClass$2([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "workItemId", 2);
1863
- __decorateClass$2([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "canonicalStatus", 2);
1864
- __decorateClass$2([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "providerRef", 2);
1865
- __decorateClass$2([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "metadata", 2);
1866
- DevelopmentRequestWorkLink = __decorateClass$2([TenantScoped({ mode: "required" }), smrt({
1693
+ __decorateClass$3([tenantId()], DevelopmentRequestWorkLink.prototype, "tenantId", 2);
1694
+ __decorateClass$3([foreignKey("DevelopmentRequest", { required: true })], DevelopmentRequestWorkLink.prototype, "requestId", 2);
1695
+ __decorateClass$3([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "workItemType", 2);
1696
+ __decorateClass$3([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "workItemId", 2);
1697
+ __decorateClass$3([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "canonicalStatus", 2);
1698
+ __decorateClass$3([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "providerRef", 2);
1699
+ __decorateClass$3([field({ type: "text" })], DevelopmentRequestWorkLink.prototype, "metadata", 2);
1700
+ DevelopmentRequestWorkLink = __decorateClass$3([TenantScoped({ mode: "required" }), smrt({
1867
1701
  tableName: "development_request_work_links",
1868
1702
  conflictColumns: [
1869
1703
  "request_id",
@@ -1885,14 +1719,14 @@ var ProjectDeliveryEvent = class extends SmrtObject {
1885
1719
  deliveryAttempts = 0;
1886
1720
  lastDeliveryError = "";
1887
1721
  };
1888
- __decorateClass$2([tenantId()], ProjectDeliveryEvent.prototype, "tenantId", 2);
1889
- __decorateClass$2([foreignKey("ProjectIntegration", { required: true })], ProjectDeliveryEvent.prototype, "integrationId", 2);
1890
- __decorateClass$2([foreignKey("DevelopmentRequest", { required: true })], ProjectDeliveryEvent.prototype, "requestId", 2);
1891
- __decorateClass$2([field({ type: "text" })], ProjectDeliveryEvent.prototype, "idempotencyKey", 2);
1892
- __decorateClass$2([field({ type: "text" })], ProjectDeliveryEvent.prototype, "type", 2);
1893
- __decorateClass$2([field({ type: "text" })], ProjectDeliveryEvent.prototype, "payload", 2);
1894
- __decorateClass$2([field({ type: "text" })], ProjectDeliveryEvent.prototype, "lastDeliveryError", 2);
1895
- ProjectDeliveryEvent = __decorateClass$2([TenantScoped({ mode: "required" }), smrt({
1722
+ __decorateClass$3([tenantId()], ProjectDeliveryEvent.prototype, "tenantId", 2);
1723
+ __decorateClass$3([foreignKey("ProjectIntegration", { required: true })], ProjectDeliveryEvent.prototype, "integrationId", 2);
1724
+ __decorateClass$3([foreignKey("DevelopmentRequest", { required: true })], ProjectDeliveryEvent.prototype, "requestId", 2);
1725
+ __decorateClass$3([field({ type: "text" })], ProjectDeliveryEvent.prototype, "idempotencyKey", 2);
1726
+ __decorateClass$3([field({ type: "text" })], ProjectDeliveryEvent.prototype, "type", 2);
1727
+ __decorateClass$3([field({ type: "text" })], ProjectDeliveryEvent.prototype, "payload", 2);
1728
+ __decorateClass$3([field({ type: "text" })], ProjectDeliveryEvent.prototype, "lastDeliveryError", 2);
1729
+ ProjectDeliveryEvent = __decorateClass$3([TenantScoped({ mode: "required" }), smrt({
1896
1730
  tableName: "project_delivery_events",
1897
1731
  conflictColumns: ["integration_id", "idempotency_key"],
1898
1732
  ...INTERNAL_SURFACES
@@ -1909,14 +1743,14 @@ var PreviewApproval = class extends SmrtObject {
1909
1743
  decidedAt = null;
1910
1744
  staleAt = null;
1911
1745
  };
1912
- __decorateClass$2([tenantId()], PreviewApproval.prototype, "tenantId", 2);
1913
- __decorateClass$2([foreignKey("DevelopmentRequest", { required: true })], PreviewApproval.prototype, "requestId", 2);
1914
- __decorateClass$2([field({ type: "text" })], PreviewApproval.prototype, "previewId", 2);
1915
- __decorateClass$2([field({ type: "text" })], PreviewApproval.prototype, "previewUrl", 2);
1916
- __decorateClass$2([field({ type: "text" })], PreviewApproval.prototype, "status", 2);
1917
- __decorateClass$2([field({ type: "text" })], PreviewApproval.prototype, "decidedByRef", 2);
1918
- __decorateClass$2([field({ type: "text" })], PreviewApproval.prototype, "reason", 2);
1919
- PreviewApproval = __decorateClass$2([TenantScoped({ mode: "required" }), smrt({
1746
+ __decorateClass$3([tenantId()], PreviewApproval.prototype, "tenantId", 2);
1747
+ __decorateClass$3([foreignKey("DevelopmentRequest", { required: true })], PreviewApproval.prototype, "requestId", 2);
1748
+ __decorateClass$3([field({ type: "text" })], PreviewApproval.prototype, "previewId", 2);
1749
+ __decorateClass$3([field({ type: "text" })], PreviewApproval.prototype, "previewUrl", 2);
1750
+ __decorateClass$3([field({ type: "text" })], PreviewApproval.prototype, "status", 2);
1751
+ __decorateClass$3([field({ type: "text" })], PreviewApproval.prototype, "decidedByRef", 2);
1752
+ __decorateClass$3([field({ type: "text" })], PreviewApproval.prototype, "reason", 2);
1753
+ PreviewApproval = __decorateClass$3([TenantScoped({ mode: "required" }), smrt({
1920
1754
  tableName: "preview_approvals",
1921
1755
  conflictColumns: ["request_id", "preview_id"],
1922
1756
  ...INTERNAL_SURFACES
@@ -1935,17 +1769,17 @@ var AssistanceRequest = class extends SmrtObject {
1935
1769
  deliveryHandoffLinkedAt = null;
1936
1770
  createdAt = /* @__PURE__ */ new Date();
1937
1771
  };
1938
- __decorateClass$2([tenantId()], AssistanceRequest.prototype, "tenantId", 2);
1939
- __decorateClass$2([foreignKey("ProjectIntegration", { required: true })], AssistanceRequest.prototype, "integrationId", 2);
1940
- __decorateClass$2([field({ type: "text" })], AssistanceRequest.prototype, "requesterId", 2);
1941
- __decorateClass$2([field({ type: "text" })], AssistanceRequest.prototype, "subject", 2);
1942
- __decorateClass$2([field({ type: "text" })], AssistanceRequest.prototype, "applicationContext", 2);
1943
- __decorateClass$2([field({ type: "text" })], AssistanceRequest.prototype, "conversation", 2);
1944
- __decorateClass$2([field({ type: "text" })], AssistanceRequest.prototype, "evidence", 2);
1945
- __decorateClass$2([field({ type: "text" })], AssistanceRequest.prototype, "classification", 2);
1946
- __decorateClass$2([field({ type: "text" })], AssistanceRequest.prototype, "supportCaseId", 2);
1947
- __decorateClass$2([field({ type: "text" })], AssistanceRequest.prototype, "developmentRequestId", 2);
1948
- AssistanceRequest = __decorateClass$2([TenantScoped({ mode: "required" }), smrt({
1772
+ __decorateClass$3([tenantId()], AssistanceRequest.prototype, "tenantId", 2);
1773
+ __decorateClass$3([foreignKey("ProjectIntegration", { required: true })], AssistanceRequest.prototype, "integrationId", 2);
1774
+ __decorateClass$3([field({ type: "text" })], AssistanceRequest.prototype, "requesterId", 2);
1775
+ __decorateClass$3([field({ type: "text" })], AssistanceRequest.prototype, "subject", 2);
1776
+ __decorateClass$3([field({ type: "text" })], AssistanceRequest.prototype, "applicationContext", 2);
1777
+ __decorateClass$3([field({ type: "text" })], AssistanceRequest.prototype, "conversation", 2);
1778
+ __decorateClass$3([field({ type: "text" })], AssistanceRequest.prototype, "evidence", 2);
1779
+ __decorateClass$3([field({ type: "text" })], AssistanceRequest.prototype, "classification", 2);
1780
+ __decorateClass$3([field({ type: "text" })], AssistanceRequest.prototype, "supportCaseId", 2);
1781
+ __decorateClass$3([field({ type: "text" })], AssistanceRequest.prototype, "developmentRequestId", 2);
1782
+ AssistanceRequest = __decorateClass$3([TenantScoped({ mode: "required" }), smrt({
1949
1783
  tableName: "assistance_requests",
1950
1784
  ...INTERNAL_SURFACES
1951
1785
  })], AssistanceRequest);
@@ -1959,14 +1793,14 @@ var AssistanceRequestEvent = class extends SmrtObject {
1959
1793
  resultingLinks = "{}";
1960
1794
  occurredAt = /* @__PURE__ */ new Date();
1961
1795
  };
1962
- __decorateClass$2([tenantId()], AssistanceRequestEvent.prototype, "tenantId", 2);
1963
- __decorateClass$2([foreignKey("AssistanceRequest", { required: true })], AssistanceRequestEvent.prototype, "assistanceRequestId", 2);
1964
- __decorateClass$2([field({ type: "text" })], AssistanceRequestEvent.prototype, "priorClassification", 2);
1965
- __decorateClass$2([field({ type: "text" })], AssistanceRequestEvent.prototype, "resultingClassification", 2);
1966
- __decorateClass$2([field({ type: "text" })], AssistanceRequestEvent.prototype, "actorRef", 2);
1967
- __decorateClass$2([field({ type: "text" })], AssistanceRequestEvent.prototype, "reason", 2);
1968
- __decorateClass$2([field({ type: "text" })], AssistanceRequestEvent.prototype, "resultingLinks", 2);
1969
- AssistanceRequestEvent = __decorateClass$2([TenantScoped({ mode: "required" }), smrt({
1796
+ __decorateClass$3([tenantId()], AssistanceRequestEvent.prototype, "tenantId", 2);
1797
+ __decorateClass$3([foreignKey("AssistanceRequest", { required: true })], AssistanceRequestEvent.prototype, "assistanceRequestId", 2);
1798
+ __decorateClass$3([field({ type: "text" })], AssistanceRequestEvent.prototype, "priorClassification", 2);
1799
+ __decorateClass$3([field({ type: "text" })], AssistanceRequestEvent.prototype, "resultingClassification", 2);
1800
+ __decorateClass$3([field({ type: "text" })], AssistanceRequestEvent.prototype, "actorRef", 2);
1801
+ __decorateClass$3([field({ type: "text" })], AssistanceRequestEvent.prototype, "reason", 2);
1802
+ __decorateClass$3([field({ type: "text" })], AssistanceRequestEvent.prototype, "resultingLinks", 2);
1803
+ AssistanceRequestEvent = __decorateClass$3([TenantScoped({ mode: "required" }), smrt({
1970
1804
  tableName: "assistance_request_events",
1971
1805
  ...INTERNAL_SURFACES
1972
1806
  })], AssistanceRequestEvent);
@@ -1986,6 +1820,449 @@ var AssistanceRequestEventCollection = class extends SmrtCollection {
1986
1820
  static _itemClass = AssistanceRequestEvent;
1987
1821
  };
1988
1822
  //#endregion
1823
+ //#region src/services/delivery-service.ts
1824
+ var ProjectDeliveryService = class ProjectDeliveryService {
1825
+ constructor(integrations, requests, events, approvals, workAdapter, approvalPolicy) {
1826
+ this.integrations = integrations;
1827
+ this.requests = requests;
1828
+ this.events = events;
1829
+ this.approvals = approvals;
1830
+ this.workAdapter = workAdapter;
1831
+ this.approvalPolicy = approvalPolicy;
1832
+ }
1833
+ integrations;
1834
+ requests;
1835
+ events;
1836
+ approvals;
1837
+ workAdapter;
1838
+ approvalPolicy;
1839
+ static async create(options = {}, dependencies = {}) {
1840
+ const integrations = await ProjectIntegrationCollection.create(options);
1841
+ const sharedOptions = {
1842
+ ...options,
1843
+ db: integrations.db
1844
+ };
1845
+ const [requests, events, approvals] = await Promise.all([
1846
+ DevelopmentRequestCollection.create(sharedOptions),
1847
+ ProjectDeliveryEventCollection.create(sharedOptions),
1848
+ PreviewApprovalCollection.create(sharedOptions)
1849
+ ]);
1850
+ return new ProjectDeliveryService(integrations, requests, events, approvals, dependencies.workAdapter, dependencies.approvalPolicy);
1851
+ }
1852
+ async record(input) {
1853
+ const integration = await requireActiveIntegrationCapability(this.integrations, input.integration, "delivery:write");
1854
+ if (!input.idempotencyKey.trim()) throw new Error("Delivery event idempotencyKey is required.");
1855
+ const existing = (await withTenant({ tenantId: integration.tenantId }, () => this.events.list({
1856
+ where: {
1857
+ integrationId: integration.id,
1858
+ idempotencyKey: input.idempotencyKey
1859
+ },
1860
+ limit: 1
1861
+ })))[0];
1862
+ if (existing) {
1863
+ await this.applySideEffects(integration, existing);
1864
+ return existing;
1865
+ }
1866
+ const request = await this.requestForIntegration(integration, input.requestId);
1867
+ const event = await withTenant({ tenantId: integration.tenantId }, () => this.events.create({
1868
+ tenantId: integration.tenantId,
1869
+ integrationId: requiredId$2(integration.id, "Project Integration"),
1870
+ requestId: input.requestId,
1871
+ idempotencyKey: input.idempotencyKey,
1872
+ sequence: input.sequence,
1873
+ type: input.type,
1874
+ payload: JSON.stringify(input.payload),
1875
+ occurredAt: input.occurredAt ?? /* @__PURE__ */ new Date()
1876
+ }));
1877
+ await withTenant({ tenantId: integration.tenantId }, () => event.save());
1878
+ await this.applySideEffects(integration, event, request);
1879
+ return event;
1880
+ }
1881
+ async applySideEffects(integration, event, loadedRequest) {
1882
+ const request = loadedRequest ?? await this.requestForIntegration(integration, event.requestId);
1883
+ const payload = parseProjectJson(event.payload, {});
1884
+ if (event.type === "preview") await this.upsertPreview(request, payload);
1885
+ if ((event.type === "completed" || event.type === "deployment" || event.type === "rejected") && !await this.isLatestTerminalEvent(event)) return;
1886
+ if ((event.type === "completed" || event.type === "deployment") && request.status !== "completed") await this.requests.transitionStatus(request.tenantId, event.requestId, {
1887
+ status: "completed",
1888
+ actorType: "integration",
1889
+ actorId: integration.id ?? "",
1890
+ note: event.type
1891
+ });
1892
+ if (event.type === "rejected" && request.status !== "declined") await this.requests.transitionStatus(request.tenantId, event.requestId, {
1893
+ status: "declined",
1894
+ actorType: "integration",
1895
+ actorId: integration.id ?? "",
1896
+ note: String(payload.reason ?? "Delivery rejected")
1897
+ });
1898
+ }
1899
+ async listForIntegration(integration, requestId) {
1900
+ const active = await requireActiveIntegrationCapability(this.integrations, integration, "delivery:read");
1901
+ await this.requestForIntegration(active, requestId);
1902
+ return withTenant({ tenantId: active.tenantId }, () => this.events.list({
1903
+ where: {
1904
+ integrationId: active.id,
1905
+ requestId
1906
+ },
1907
+ orderBy: "sequence ASC"
1908
+ }));
1909
+ }
1910
+ async deliverPending(sender, tenantId, integrationId) {
1911
+ const pending = await withTenant({ tenantId }, () => this.events.list({
1912
+ where: integrationId ? {
1913
+ integrationId,
1914
+ deliveredAt: null
1915
+ } : { deliveredAt: null },
1916
+ orderBy: "sequence ASC"
1917
+ }));
1918
+ for (const event of pending) {
1919
+ if (!await this.integrations.findActive(tenantId, event.integrationId)) continue;
1920
+ event.deliveryAttempts += 1;
1921
+ try {
1922
+ await sender.send(event);
1923
+ event.deliveredAt = /* @__PURE__ */ new Date();
1924
+ event.lastDeliveryError = "";
1925
+ } catch (error) {
1926
+ event.lastDeliveryError = error instanceof Error ? error.message : String(error);
1927
+ }
1928
+ await withTenant({ tenantId }, () => event.save());
1929
+ }
1930
+ }
1931
+ async replay(sender, integration, afterSequence = -1) {
1932
+ const active = await requireActiveIntegrationCapability(this.integrations, integration, "delivery:read");
1933
+ const events = (await withTenant({ tenantId: active.tenantId }, () => this.events.list({
1934
+ where: { integrationId: active.id },
1935
+ orderBy: "sequence ASC"
1936
+ }))).filter((event) => event.sequence > afterSequence);
1937
+ for (const event of events) await sender.send(event);
1938
+ }
1939
+ async decidePreview(integration, preview, input) {
1940
+ const active = await requireActiveIntegrationCapability(this.integrations, integration, "previews:approve");
1941
+ if (preview.tenantId !== active.tenantId) throw new Error("Preview is outside this Project Integration tenant.");
1942
+ if (preview.status === "stale") throw new Error("Stale previews cannot be approved.");
1943
+ if (preview.status !== "pending") return preview;
1944
+ const request = await this.requestForIntegration(active, preview.requestId);
1945
+ if (this.approvalPolicy && !await this.approvalPolicy.canApprove({
1946
+ integration: active,
1947
+ requestId: preview.requestId,
1948
+ previewId: preview.previewId
1949
+ })) throw new Error("Preview approval denied by policy.");
1950
+ if (!this.workAdapter?.requestApproval) throw new Error("Control-plane approval adapter is not configured.");
1951
+ await this.workAdapter.requestApproval({
1952
+ request,
1953
+ previewId: preview.previewId,
1954
+ idempotencyKey: `preview-approval:${requiredId$2(preview.id, "Preview Approval")}`,
1955
+ approved: input.approved,
1956
+ reason: input.reason
1957
+ });
1958
+ preview.status = input.approved ? "approved" : "rejected";
1959
+ preview.decidedByRef = input.actorRef;
1960
+ preview.reason = input.reason;
1961
+ preview.decidedAt = /* @__PURE__ */ new Date();
1962
+ await withTenant({ tenantId: active.tenantId }, () => preview.save());
1963
+ return preview;
1964
+ }
1965
+ async markPreviewStale(preview) {
1966
+ if (preview.status === "pending") {
1967
+ preview.status = "stale";
1968
+ preview.staleAt = /* @__PURE__ */ new Date();
1969
+ await withTenant({ tenantId: preview.tenantId }, () => preview.save());
1970
+ }
1971
+ return preview;
1972
+ }
1973
+ async requestForIntegration(integration, requestId) {
1974
+ const request = await withTenant({ tenantId: integration.tenantId }, () => this.requests.get({ id: requestId }));
1975
+ if (!request || request.integrationId !== integration.id || request.projectId !== integration.projectId) throw new Error("Development Request is outside this Project Integration.");
1976
+ return request;
1977
+ }
1978
+ async isLatestTerminalEvent(event) {
1979
+ const latest = (await withTenant({ tenantId: event.tenantId }, () => this.events.list({
1980
+ where: {
1981
+ integrationId: event.integrationId,
1982
+ requestId: event.requestId,
1983
+ type: [
1984
+ "completed",
1985
+ "deployment",
1986
+ "rejected"
1987
+ ]
1988
+ },
1989
+ orderBy: "sequence DESC",
1990
+ limit: 1
1991
+ })))[0];
1992
+ return !latest || latest.sequence <= event.sequence;
1993
+ }
1994
+ async upsertPreview(request, payload) {
1995
+ const previewId = String(payload.previewId ?? "");
1996
+ if (!previewId) return;
1997
+ if ((await withTenant({ tenantId: request.tenantId }, () => this.approvals.list({
1998
+ where: {
1999
+ requestId: request.id,
2000
+ previewId
2001
+ },
2002
+ limit: 1
2003
+ })))[0]) return;
2004
+ const approval = await withTenant({ tenantId: request.tenantId }, () => this.approvals.create({
2005
+ tenantId: request.tenantId,
2006
+ requestId: requiredId$2(request.id, "Development Request"),
2007
+ previewId,
2008
+ previewUrl: String(payload.previewUrl ?? ""),
2009
+ status: "pending",
2010
+ createdAt: /* @__PURE__ */ new Date()
2011
+ }));
2012
+ await withTenant({ tenantId: request.tenantId }, () => approval.save());
2013
+ }
2014
+ };
2015
+ function requireIntegrationCapability(integration, capability) {
2016
+ if (!integration.isActive()) throw new Error("Project Integration is revoked.");
2017
+ if (!integration.hasCapability(capability)) throw new Error(`Project Integration lacks capability '${capability}'.`);
2018
+ }
2019
+ async function requireActiveIntegrationCapability(integrations, integration, capability) {
2020
+ const integrationId = requiredId$2(integration.id, "Project Integration");
2021
+ const active = await integrations.findActive(integration.tenantId, integrationId);
2022
+ if (!active) throw new Error("Project Integration is revoked.");
2023
+ requireIntegrationCapability(active, capability);
2024
+ return active;
2025
+ }
2026
+ function requiredId$2(value, label) {
2027
+ if (!value) throw new Error(`${label} must be saved.`);
2028
+ return value;
2029
+ }
2030
+ //#endregion
2031
+ //#region src/services/project-board-service.ts
2032
+ var ProjectBoardService = class ProjectBoardService {
2033
+ constructor(integrations, projects) {
2034
+ this.integrations = integrations;
2035
+ this.projects = projects;
2036
+ }
2037
+ integrations;
2038
+ projects;
2039
+ static async create(options = {}) {
2040
+ const integrations = await ProjectIntegrationCollection.create(options);
2041
+ const projects = await ProjectCollection.create({
2042
+ ...options,
2043
+ db: integrations.db
2044
+ });
2045
+ return new ProjectBoardService(integrations, projects);
2046
+ }
2047
+ async moveItem(integration, input) {
2048
+ const projectId = requiredInput(input.projectId, "Project ID");
2049
+ const itemId = requiredInput(input.itemId, "Project item ID");
2050
+ const status = requiredInput(input.status, "Project status");
2051
+ const authorized = await this.requireAuthorizedIntegration(integration, projectId);
2052
+ const project = await this.findProject(authorized.tenantId, projectId);
2053
+ if (!project) throw new Error("Project not found for this integration.");
2054
+ if (!(await project.getStatuses()).some((candidate) => candidate.name === status)) throw new Error(`Project status '${status}' is not available.`);
2055
+ const item = (await project.listItems()).find((candidate) => candidate.id === itemId);
2056
+ if (!item) throw new Error("Project item not found.");
2057
+ await this.requireAuthorizedIntegration(integration, projectId);
2058
+ await project.updateItemStatus(itemId, status);
2059
+ return {
2060
+ projectId,
2061
+ itemId,
2062
+ previousStatus: item.status ?? null,
2063
+ status
2064
+ };
2065
+ }
2066
+ async requireAuthorizedIntegration(integration, projectId) {
2067
+ if (!(integration instanceof ProjectIntegration)) throw new Error("Project board moves require an authenticated Project Integration.");
2068
+ const active = await requireActiveIntegrationCapability(this.integrations, integration, "projects:write");
2069
+ if (active.projectId !== projectId) throw new Error("Project is outside this Project Integration.");
2070
+ return active;
2071
+ }
2072
+ async findProject(tenantId, projectId) {
2073
+ const tenantProject = (await withTenant({ tenantId }, () => this.projects.list({
2074
+ where: {
2075
+ projectId,
2076
+ tenantId
2077
+ },
2078
+ limit: 1
2079
+ })))[0];
2080
+ if (tenantProject) return tenantProject;
2081
+ return (await this.projects.findGlobal()).find((candidate) => candidate.projectId === projectId);
2082
+ }
2083
+ };
2084
+ function requiredInput(value, label) {
2085
+ if (!value?.trim()) throw new Error(`${label} is required.`);
2086
+ return value;
2087
+ }
2088
+ //#endregion
2089
+ //#region src/managed-client.ts
2090
+ var ManagedProjectClient = class ManagedProjectClient {
2091
+ #db;
2092
+ #integration;
2093
+ #requesterId;
2094
+ constructor(integration, options) {
2095
+ this.#integration = integration;
2096
+ this.#db = options.db;
2097
+ this.#requesterId = options.requesterId;
2098
+ }
2099
+ static async authenticate(credential, options) {
2100
+ if (!options.requesterId.trim()) throw new Error("Managed project client requires a stable requesterId");
2101
+ const integration = await (await ProjectIntegrationCollection.create({ db: options.db })).authenticate(credential);
2102
+ if (!integration) throw new Error("Invalid or revoked project integration credential");
2103
+ return new ManagedProjectClient(integration, options);
2104
+ }
2105
+ async createRequest(input) {
2106
+ const integration = await this.#requireCapability("requests:create");
2107
+ if (!input.description.trim()) throw new Error("Managed request creation requires a description");
2108
+ return (await DevelopmentRequestCollection.create({ db: this.#db })).createManaged({
2109
+ ...input,
2110
+ tenantId: integration.tenantId,
2111
+ projectId: integration.projectId,
2112
+ integrationId: integration.id,
2113
+ requesterId: this.#requesterId
2114
+ });
2115
+ }
2116
+ async listRequests() {
2117
+ const integration = await this.#requireCapability("requests:read-own");
2118
+ return (await DevelopmentRequestCollection.create({ db: this.#db })).listByIntegrationRequester({
2119
+ tenantId: integration.tenantId,
2120
+ integrationId: integration.id,
2121
+ requesterId: this.#requesterId
2122
+ });
2123
+ }
2124
+ /**
2125
+ * Move a project-board item through this authenticated integration.
2126
+ *
2127
+ * The browser submits only the move intent. This client keeps the credential
2128
+ * authentication boundary server-side and ProjectBoardService reloads active
2129
+ * capability state again immediately before the provider mutation.
2130
+ */
2131
+ async moveProjectBoardItem(input) {
2132
+ const integration = await this.#requireCapability("projects:write");
2133
+ return (await ProjectBoardService.create({ db: this.#db })).moveItem(integration, input);
2134
+ }
2135
+ async #requireCapability(capability) {
2136
+ const tenantId = this.#integration.tenantId;
2137
+ const integrationId = this.#integration.id;
2138
+ if (!tenantId || !integrationId) throw new Error("Invalid or revoked project integration credential");
2139
+ const integration = await (await ProjectIntegrationCollection.create({ db: this.#db })).findActive(tenantId, integrationId);
2140
+ if (!integration) throw new Error("Invalid or revoked project integration credential");
2141
+ if (!integration.hasCapability(capability)) throw new Error(`Managed project integration lacks required capability '${capability}'`);
2142
+ return integration;
2143
+ }
2144
+ };
2145
+ //#endregion
2146
+ //#region src/models/Comment.ts
2147
+ var Comment_exports = /* @__PURE__ */ __exportAll({ Comment: () => Comment });
2148
+ var __defProp$2 = Object.defineProperty;
2149
+ var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
2150
+ var __decorateClass$2 = (decorators, target, key, kind) => {
2151
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
2152
+ for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result;
2153
+ if (kind && result) __defProp$2(target, key, result);
2154
+ return result;
2155
+ };
2156
+ var logger = createLogger({ level: "info" });
2157
+ var Comment = class extends SmrtObject {
2158
+ tenantId = null;
2159
+ issueId;
2160
+ /**
2161
+ * Provider-specific comment ID
2162
+ */
2163
+ commentId = "";
2164
+ /**
2165
+ * Comment body text
2166
+ */
2167
+ body = "";
2168
+ /**
2169
+ * Comment author's login
2170
+ */
2171
+ author = "";
2172
+ /**
2173
+ * When the comment was created
2174
+ */
2175
+ createdAt = null;
2176
+ /**
2177
+ * When the comment was last updated
2178
+ */
2179
+ updatedAt = null;
2180
+ /**
2181
+ * Comment URL
2182
+ */
2183
+ url = "";
2184
+ constructor(options = {}) {
2185
+ super(options);
2186
+ if (options.issueId !== void 0) this.issueId = options.issueId;
2187
+ if (options.commentId !== void 0) this.commentId = options.commentId;
2188
+ if (options.body !== void 0) this.body = options.body;
2189
+ if (options.author !== void 0) this.author = options.author;
2190
+ if (options.createdAt !== void 0) this.createdAt = options.createdAt;
2191
+ if (options.updatedAt !== void 0) this.updatedAt = options.updatedAt;
2192
+ if (options.url !== void 0) this.url = options.url;
2193
+ if (options.tenantId !== void 0) this.tenantId = options.tenantId;
2194
+ }
2195
+ /**
2196
+ * AI-powered: Check if this comment contains a question
2197
+ */
2198
+ async isQuestion() {
2199
+ return await this.is("This comment contains a question or request for clarification");
2200
+ }
2201
+ /**
2202
+ * AI-powered: Check if this comment contains approval
2203
+ */
2204
+ async isApproval() {
2205
+ return await this.is("This comment expresses approval, agreement, or a positive response (LGTM, +1, approved, etc.)");
2206
+ }
2207
+ /**
2208
+ * AI-powered: Check if this comment requests changes
2209
+ */
2210
+ async requestsChanges() {
2211
+ return await this.is("This comment requests changes, modifications, or improvements to the issue/PR");
2212
+ }
2213
+ /**
2214
+ * AI-powered: Extract action items from this comment
2215
+ *
2216
+ * @returns Array of action items
2217
+ */
2218
+ async extractActionItems() {
2219
+ const result = await this.do(`Extract any action items, tasks, or requests from this comment.
2220
+ Return a JSON array of strings, each representing one action item.
2221
+ If no action items, return an empty array [].
2222
+ Only return the JSON array, nothing else.
2223
+
2224
+ Comment: ${this.body}`, { includeData: false });
2225
+ try {
2226
+ return JSON.parse(result);
2227
+ } catch (error) {
2228
+ logger.warn("Failed to parse action items JSON", {
2229
+ error: error instanceof Error ? error.message : error,
2230
+ response: result
2231
+ });
2232
+ return [];
2233
+ }
2234
+ }
2235
+ /**
2236
+ * AI-powered: Summarize this comment
2237
+ *
2238
+ * @returns Brief summary
2239
+ */
2240
+ async summarize() {
2241
+ return await this.do(`Summarize this comment in one sentence.
2242
+ Comment by ${this.author}: ${this.body}`, { includeData: false });
2243
+ }
2244
+ /**
2245
+ * Get the sentiment of this comment
2246
+ *
2247
+ * @returns Sentiment classification
2248
+ */
2249
+ async getSentiment() {
2250
+ const normalized = (await this.do(`Classify the sentiment of this comment as exactly one of: positive, negative, neutral
2251
+ Only return one word.
2252
+ Comment: ${this.body}`, { includeData: false })).toLowerCase().trim();
2253
+ if (normalized.includes("positive")) return "positive";
2254
+ if (normalized.includes("negative")) return "negative";
2255
+ return "neutral";
2256
+ }
2257
+ };
2258
+ __decorateClass$2([tenantId({ nullable: true })], Comment.prototype, "tenantId", 2);
2259
+ __decorateClass$2([foreignKey("Issue")], Comment.prototype, "issueId", 2);
2260
+ Comment = __decorateClass$2([TenantScoped({ mode: "optional" }), smrt({
2261
+ api: { include: ["list", "get"] },
2262
+ mcp: { include: ["list", "get"] },
2263
+ cli: { include: ["list", "get"] }
2264
+ })], Comment);
2265
+ //#endregion
1989
2266
  //#region src/models/Label.ts
1990
2267
  var __defProp$1 = Object.defineProperty;
1991
2268
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
@@ -2440,214 +2717,6 @@ var ServiceCompensationSnapshotCollection = class extends SmrtCollection {
2440
2717
  static _itemClass = ServiceCompensationSnapshot;
2441
2718
  };
2442
2719
  //#endregion
2443
- //#region src/services/delivery-service.ts
2444
- var ProjectDeliveryService = class ProjectDeliveryService {
2445
- constructor(integrations, requests, events, approvals, workAdapter, approvalPolicy) {
2446
- this.integrations = integrations;
2447
- this.requests = requests;
2448
- this.events = events;
2449
- this.approvals = approvals;
2450
- this.workAdapter = workAdapter;
2451
- this.approvalPolicy = approvalPolicy;
2452
- }
2453
- integrations;
2454
- requests;
2455
- events;
2456
- approvals;
2457
- workAdapter;
2458
- approvalPolicy;
2459
- static async create(options = {}, dependencies = {}) {
2460
- const integrations = await ProjectIntegrationCollection.create(options);
2461
- const sharedOptions = {
2462
- ...options,
2463
- db: integrations.db
2464
- };
2465
- const [requests, events, approvals] = await Promise.all([
2466
- DevelopmentRequestCollection.create(sharedOptions),
2467
- ProjectDeliveryEventCollection.create(sharedOptions),
2468
- PreviewApprovalCollection.create(sharedOptions)
2469
- ]);
2470
- return new ProjectDeliveryService(integrations, requests, events, approvals, dependencies.workAdapter, dependencies.approvalPolicy);
2471
- }
2472
- async record(input) {
2473
- const integration = await requireActiveIntegrationCapability(this.integrations, input.integration, "delivery:write");
2474
- if (!input.idempotencyKey.trim()) throw new Error("Delivery event idempotencyKey is required.");
2475
- const existing = (await withTenant({ tenantId: integration.tenantId }, () => this.events.list({
2476
- where: {
2477
- integrationId: integration.id,
2478
- idempotencyKey: input.idempotencyKey
2479
- },
2480
- limit: 1
2481
- })))[0];
2482
- if (existing) {
2483
- await this.applySideEffects(integration, existing);
2484
- return existing;
2485
- }
2486
- const request = await this.requestForIntegration(integration, input.requestId);
2487
- const event = await withTenant({ tenantId: integration.tenantId }, () => this.events.create({
2488
- tenantId: integration.tenantId,
2489
- integrationId: requiredId$2(integration.id, "Project Integration"),
2490
- requestId: input.requestId,
2491
- idempotencyKey: input.idempotencyKey,
2492
- sequence: input.sequence,
2493
- type: input.type,
2494
- payload: JSON.stringify(input.payload),
2495
- occurredAt: input.occurredAt ?? /* @__PURE__ */ new Date()
2496
- }));
2497
- await withTenant({ tenantId: integration.tenantId }, () => event.save());
2498
- await this.applySideEffects(integration, event, request);
2499
- return event;
2500
- }
2501
- async applySideEffects(integration, event, loadedRequest) {
2502
- const request = loadedRequest ?? await this.requestForIntegration(integration, event.requestId);
2503
- const payload = parseProjectJson(event.payload, {});
2504
- if (event.type === "preview") await this.upsertPreview(request, payload);
2505
- if ((event.type === "completed" || event.type === "deployment" || event.type === "rejected") && !await this.isLatestTerminalEvent(event)) return;
2506
- if ((event.type === "completed" || event.type === "deployment") && request.status !== "completed") await this.requests.transitionStatus(request.tenantId, event.requestId, {
2507
- status: "completed",
2508
- actorType: "integration",
2509
- actorId: integration.id ?? "",
2510
- note: event.type
2511
- });
2512
- if (event.type === "rejected" && request.status !== "declined") await this.requests.transitionStatus(request.tenantId, event.requestId, {
2513
- status: "declined",
2514
- actorType: "integration",
2515
- actorId: integration.id ?? "",
2516
- note: String(payload.reason ?? "Delivery rejected")
2517
- });
2518
- }
2519
- async listForIntegration(integration, requestId) {
2520
- const active = await requireActiveIntegrationCapability(this.integrations, integration, "delivery:read");
2521
- await this.requestForIntegration(active, requestId);
2522
- return withTenant({ tenantId: active.tenantId }, () => this.events.list({
2523
- where: {
2524
- integrationId: active.id,
2525
- requestId
2526
- },
2527
- orderBy: "sequence ASC"
2528
- }));
2529
- }
2530
- async deliverPending(sender, tenantId, integrationId) {
2531
- const pending = await withTenant({ tenantId }, () => this.events.list({
2532
- where: integrationId ? {
2533
- integrationId,
2534
- deliveredAt: null
2535
- } : { deliveredAt: null },
2536
- orderBy: "sequence ASC"
2537
- }));
2538
- for (const event of pending) {
2539
- if (!await this.integrations.findActive(tenantId, event.integrationId)) continue;
2540
- event.deliveryAttempts += 1;
2541
- try {
2542
- await sender.send(event);
2543
- event.deliveredAt = /* @__PURE__ */ new Date();
2544
- event.lastDeliveryError = "";
2545
- } catch (error) {
2546
- event.lastDeliveryError = error instanceof Error ? error.message : String(error);
2547
- }
2548
- await withTenant({ tenantId }, () => event.save());
2549
- }
2550
- }
2551
- async replay(sender, integration, afterSequence = -1) {
2552
- const active = await requireActiveIntegrationCapability(this.integrations, integration, "delivery:read");
2553
- const events = (await withTenant({ tenantId: active.tenantId }, () => this.events.list({
2554
- where: { integrationId: active.id },
2555
- orderBy: "sequence ASC"
2556
- }))).filter((event) => event.sequence > afterSequence);
2557
- for (const event of events) await sender.send(event);
2558
- }
2559
- async decidePreview(integration, preview, input) {
2560
- const active = await requireActiveIntegrationCapability(this.integrations, integration, "previews:approve");
2561
- if (preview.tenantId !== active.tenantId) throw new Error("Preview is outside this Project Integration tenant.");
2562
- if (preview.status === "stale") throw new Error("Stale previews cannot be approved.");
2563
- if (preview.status !== "pending") return preview;
2564
- const request = await this.requestForIntegration(active, preview.requestId);
2565
- if (this.approvalPolicy && !await this.approvalPolicy.canApprove({
2566
- integration: active,
2567
- requestId: preview.requestId,
2568
- previewId: preview.previewId
2569
- })) throw new Error("Preview approval denied by policy.");
2570
- if (!this.workAdapter?.requestApproval) throw new Error("Control-plane approval adapter is not configured.");
2571
- await this.workAdapter.requestApproval({
2572
- request,
2573
- previewId: preview.previewId,
2574
- idempotencyKey: `preview-approval:${requiredId$2(preview.id, "Preview Approval")}`,
2575
- approved: input.approved,
2576
- reason: input.reason
2577
- });
2578
- preview.status = input.approved ? "approved" : "rejected";
2579
- preview.decidedByRef = input.actorRef;
2580
- preview.reason = input.reason;
2581
- preview.decidedAt = /* @__PURE__ */ new Date();
2582
- await withTenant({ tenantId: active.tenantId }, () => preview.save());
2583
- return preview;
2584
- }
2585
- async markPreviewStale(preview) {
2586
- if (preview.status === "pending") {
2587
- preview.status = "stale";
2588
- preview.staleAt = /* @__PURE__ */ new Date();
2589
- await withTenant({ tenantId: preview.tenantId }, () => preview.save());
2590
- }
2591
- return preview;
2592
- }
2593
- async requestForIntegration(integration, requestId) {
2594
- const request = await withTenant({ tenantId: integration.tenantId }, () => this.requests.get({ id: requestId }));
2595
- if (!request || request.integrationId !== integration.id || request.projectId !== integration.projectId) throw new Error("Development Request is outside this Project Integration.");
2596
- return request;
2597
- }
2598
- async isLatestTerminalEvent(event) {
2599
- const latest = (await withTenant({ tenantId: event.tenantId }, () => this.events.list({
2600
- where: {
2601
- integrationId: event.integrationId,
2602
- requestId: event.requestId,
2603
- type: [
2604
- "completed",
2605
- "deployment",
2606
- "rejected"
2607
- ]
2608
- },
2609
- orderBy: "sequence DESC",
2610
- limit: 1
2611
- })))[0];
2612
- return !latest || latest.sequence <= event.sequence;
2613
- }
2614
- async upsertPreview(request, payload) {
2615
- const previewId = String(payload.previewId ?? "");
2616
- if (!previewId) return;
2617
- if ((await withTenant({ tenantId: request.tenantId }, () => this.approvals.list({
2618
- where: {
2619
- requestId: request.id,
2620
- previewId
2621
- },
2622
- limit: 1
2623
- })))[0]) return;
2624
- const approval = await withTenant({ tenantId: request.tenantId }, () => this.approvals.create({
2625
- tenantId: request.tenantId,
2626
- requestId: requiredId$2(request.id, "Development Request"),
2627
- previewId,
2628
- previewUrl: String(payload.previewUrl ?? ""),
2629
- status: "pending",
2630
- createdAt: /* @__PURE__ */ new Date()
2631
- }));
2632
- await withTenant({ tenantId: request.tenantId }, () => approval.save());
2633
- }
2634
- };
2635
- function requireIntegrationCapability(integration, capability) {
2636
- if (!integration.isActive()) throw new Error("Project Integration is revoked.");
2637
- if (!integration.hasCapability(capability)) throw new Error(`Project Integration lacks capability '${capability}'.`);
2638
- }
2639
- async function requireActiveIntegrationCapability(integrations, integration, capability) {
2640
- const integrationId = requiredId$2(integration.id, "Project Integration");
2641
- const active = await integrations.findActive(integration.tenantId, integrationId);
2642
- if (!active) throw new Error("Project Integration is revoked.");
2643
- requireIntegrationCapability(active, capability);
2644
- return active;
2645
- }
2646
- function requiredId$2(value, label) {
2647
- if (!value) throw new Error(`${label} must be saved.`);
2648
- return value;
2649
- }
2650
- //#endregion
2651
2720
  //#region src/services/assistance-request-service.ts
2652
2721
  var AssistanceRequestService = class AssistanceRequestService {
2653
2722
  constructor(integrations, development, requests, events, support) {
@@ -3163,6 +3232,6 @@ var SubscriptionServiceCommercialResolver = class SubscriptionServiceCommercialR
3163
3232
  }
3164
3233
  };
3165
3234
  //#endregion
3166
- export { AssistanceRequest, AssistanceRequestCollection, AssistanceRequestEvent, AssistanceRequestEventCollection, AssistanceRequestService, Comment, DevelopmentRequest, DevelopmentRequestCollection, DevelopmentRequestHistory, DevelopmentRequestHistoryCollection, DevelopmentRequestService, DevelopmentRequestWorkLink, DevelopmentRequestWorkLinkCollection, Issue, IssueCollection, Label, ManagedProjectClient, PROJECTS_MODULE_META, PROJECTS_UI_SLOTS, PreviewApproval, PreviewApprovalCollection, Project, ProjectCollection, ProjectDeliveryEvent, ProjectDeliveryEventCollection, ProjectDeliveryService, ProjectIntegration, ProjectIntegrationAudit, ProjectIntegrationAuditCollection, ProjectIntegrationCollection, PullRequest, PullRequestCollection, Repository, RepositoryCollection, ServiceChargeSnapshot, ServiceChargeSnapshotCollection, ServiceCompensationSnapshot, ServiceCompensationSnapshotCollection, ServiceEvidenceService, ServiceTimeEntry, ServiceTimeEntryCollection, SubscriptionServiceCommercialResolver, issueIncorporateFeedbackPrompt, Repositories_exports as n, parseProjectJson, Issues_exports as r, requireActiveIntegrationCapability, requireIntegrationCapability, Comment_exports as t };
3235
+ export { AssistanceRequest, AssistanceRequestCollection, AssistanceRequestEvent, AssistanceRequestEventCollection, AssistanceRequestService, Comment, DevelopmentRequest, DevelopmentRequestCollection, DevelopmentRequestHistory, DevelopmentRequestHistoryCollection, DevelopmentRequestService, DevelopmentRequestWorkLink, DevelopmentRequestWorkLinkCollection, Issue, IssueCollection, Label, ManagedProjectClient, PROJECTS_MODULE_META, PROJECTS_UI_SLOTS, PreviewApproval, PreviewApprovalCollection, Project, ProjectBoardService, ProjectCollection, ProjectDeliveryEvent, ProjectDeliveryEventCollection, ProjectDeliveryService, ProjectIntegration, ProjectIntegrationAudit, ProjectIntegrationAuditCollection, ProjectIntegrationCollection, PullRequest, PullRequestCollection, Repository, RepositoryCollection, ServiceChargeSnapshot, ServiceChargeSnapshotCollection, ServiceCompensationSnapshot, ServiceCompensationSnapshotCollection, ServiceEvidenceService, ServiceTimeEntry, ServiceTimeEntryCollection, SubscriptionServiceCommercialResolver, issueIncorporateFeedbackPrompt, Repositories_exports as n, parseProjectJson, Issues_exports as r, requireActiveIntegrationCapability, requireIntegrationCapability, Comment_exports as t };
3167
3236
 
3168
3237
  //# sourceMappingURL=index.js.map