@vreko/cli 3.0.1

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 (98) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +45 -0
  3. package/dist/CeremonyView-LQS7FTMK.js +134 -0
  4. package/dist/CeremonyView-LQS7FTMK.js.map +1 -0
  5. package/dist/InitApp-7K5DTYSW.js +1479 -0
  6. package/dist/InitApp-7K5DTYSW.js.map +1 -0
  7. package/dist/SkippedTestDetector-PJSKSOZR.js +7 -0
  8. package/dist/SkippedTestDetector-PJSKSOZR.js.map +1 -0
  9. package/dist/TuiApp-FX23XQBK.js +8 -0
  10. package/dist/TuiApp-FX23XQBK.js.map +1 -0
  11. package/dist/analysis-ABEO6RTN.js +8 -0
  12. package/dist/analysis-ABEO6RTN.js.map +1 -0
  13. package/dist/auth-XNBEBNPY.js +7669 -0
  14. package/dist/auth-XNBEBNPY.js.map +1 -0
  15. package/dist/ceremony-M7CXVBVA.js +45 -0
  16. package/dist/ceremony-M7CXVBVA.js.map +1 -0
  17. package/dist/chunk-A3QSZJPD.js +3147 -0
  18. package/dist/chunk-A3QSZJPD.js.map +1 -0
  19. package/dist/chunk-ASGZ5B6C.js +3969 -0
  20. package/dist/chunk-ASGZ5B6C.js.map +1 -0
  21. package/dist/chunk-DMXC2JTC.js +58 -0
  22. package/dist/chunk-DMXC2JTC.js.map +1 -0
  23. package/dist/chunk-EEBSK2IH.js +161 -0
  24. package/dist/chunk-EEBSK2IH.js.map +1 -0
  25. package/dist/chunk-EWOJGXRX.js +22 -0
  26. package/dist/chunk-EWOJGXRX.js.map +1 -0
  27. package/dist/chunk-F7GEJLP7.js +2389 -0
  28. package/dist/chunk-F7GEJLP7.js.map +1 -0
  29. package/dist/chunk-GOYL3F4T.js +605 -0
  30. package/dist/chunk-GOYL3F4T.js.map +1 -0
  31. package/dist/chunk-GRMRYWYS.js +17 -0
  32. package/dist/chunk-GRMRYWYS.js.map +1 -0
  33. package/dist/chunk-GSUGROXB.js +1951 -0
  34. package/dist/chunk-GSUGROXB.js.map +1 -0
  35. package/dist/chunk-H7773ONB.js +50 -0
  36. package/dist/chunk-H7773ONB.js.map +1 -0
  37. package/dist/chunk-HFQHU5LC.js +445 -0
  38. package/dist/chunk-HFQHU5LC.js.map +1 -0
  39. package/dist/chunk-IVHUBLJD.js +318 -0
  40. package/dist/chunk-IVHUBLJD.js.map +1 -0
  41. package/dist/chunk-KJWKY4L4.js +14 -0
  42. package/dist/chunk-KJWKY4L4.js.map +1 -0
  43. package/dist/chunk-MJVY2XUN.js +1793 -0
  44. package/dist/chunk-MJVY2XUN.js.map +1 -0
  45. package/dist/chunk-QWZVCJII.js +1797 -0
  46. package/dist/chunk-QWZVCJII.js.map +1 -0
  47. package/dist/chunk-VTSNRV3V.js +3237 -0
  48. package/dist/chunk-VTSNRV3V.js.map +1 -0
  49. package/dist/chunk-W5B4GTXR.js +1466 -0
  50. package/dist/chunk-W5B4GTXR.js.map +1 -0
  51. package/dist/chunk-WZEZLVOW.js +4995 -0
  52. package/dist/chunk-WZEZLVOW.js.map +1 -0
  53. package/dist/chunk-YPTTIXKC.js +199 -0
  54. package/dist/chunk-YPTTIXKC.js.map +1 -0
  55. package/dist/chunk-Z55UGM6X.js +6360 -0
  56. package/dist/chunk-Z55UGM6X.js.map +1 -0
  57. package/dist/chunk-ZIIRQODJ.js +110 -0
  58. package/dist/chunk-ZIIRQODJ.js.map +1 -0
  59. package/dist/chunk-ZSUQ4FMB.js +77 -0
  60. package/dist/chunk-ZSUQ4FMB.js.map +1 -0
  61. package/dist/client-JMTSZS3V.js +10 -0
  62. package/dist/client-JMTSZS3V.js.map +1 -0
  63. package/dist/deprecated-snap.js +19 -0
  64. package/dist/deprecated-snap.js.map +1 -0
  65. package/dist/dist-2KWBZFLA.js +14 -0
  66. package/dist/dist-2KWBZFLA.js.map +1 -0
  67. package/dist/dist-5ZYKNNU3.js +7 -0
  68. package/dist/dist-5ZYKNNU3.js.map +1 -0
  69. package/dist/dist-CP3RFHPI.js +11 -0
  70. package/dist/dist-CP3RFHPI.js.map +1 -0
  71. package/dist/gecko-53ITAGG6.js +56 -0
  72. package/dist/gecko-53ITAGG6.js.map +1 -0
  73. package/dist/guards-QAFC64NO.js +7 -0
  74. package/dist/guards-QAFC64NO.js.map +1 -0
  75. package/dist/index.js +57785 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/init-command-246JIVXM.js +7 -0
  78. package/dist/init-command-246JIVXM.js.map +1 -0
  79. package/dist/init-core-KAI7LCXZ.js +12 -0
  80. package/dist/init-core-KAI7LCXZ.js.map +1 -0
  81. package/dist/init-scan-RZNYDTUV.js +1919 -0
  82. package/dist/init-scan-RZNYDTUV.js.map +1 -0
  83. package/dist/local-service-adapter-6KNN6WQL.js +8 -0
  84. package/dist/local-service-adapter-6KNN6WQL.js.map +1 -0
  85. package/dist/secure-credentials-JXWAQLS2.js +306 -0
  86. package/dist/secure-credentials-JXWAQLS2.js.map +1 -0
  87. package/dist/tui-TPJPUS2R.js +111 -0
  88. package/dist/tui-TPJPUS2R.js.map +1 -0
  89. package/dist/vreko-dir-O3RLG7PI.js +8 -0
  90. package/dist/vreko-dir-O3RLG7PI.js.map +1 -0
  91. package/package.json +132 -0
  92. package/scripts/check-banned-words.ts +152 -0
  93. package/scripts/hooks/posttooluse-file-notify.sh +108 -0
  94. package/scripts/hooks/pretooluse-fragile-guard.sh +82 -0
  95. package/scripts/post-install-notice.js +24 -0
  96. package/scripts/postinstall.mjs +84 -0
  97. package/scripts/preuninstall.mjs +34 -0
  98. package/scripts/verify-jsx-transform.mjs +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../packages/platform/dist/db/schema/vreko/credit-topups.js","../../../packages/platform/dist/db/schema/vreko/credits-ledger.js","../../../packages/platform/dist/db/schema/vreko/device-trials.js","../../../packages/platform/dist/db/schema/vreko/snapshots.js","../../../packages/platform/dist/db/schema/vreko/trials.js","../../../packages/platform/dist/db/schema/vreko/waitlist.js","../../../packages/platform/src/db/schema/vreko/credit-topups.ts","../../../packages/platform/src/db/schema/vreko/credits-ledger.ts","../../../packages/platform/src/db/schema/vreko/device-trials.ts","../../../packages/platform/src/db/schema/vreko/snapshots.ts","../../../packages/platform/src/db/schema/vreko/trials.ts","../../../packages/platform/src/db/schema/vreko/waitlist.ts","../../../packages/platform/src/db/schema/postgres.ts","../../../packages/platform/dist/db/schema/vreko/subscriptions.js","../../../packages/platform/dist/db/schema/vreko/admin.js","../../../packages/platform/dist/db/schema/vreko/ai-changes.js","../../../packages/platform/dist/db/schema/vreko/analysis-events.js","../../../packages/platform/dist/db/schema/vreko/api-key-metadata.js","../../../packages/platform/dist/db/schema/vreko/api-key-usage.js","../../../packages/platform/dist/db/schema/vreko/api-keys.js","../../../packages/platform/dist/db/schema/vreko/bypass-events.js","../../../packages/platform/dist/db/schema/vreko/capability-audit.js","../../../packages/platform/dist/db/schema/vreko/ci-outcomes.js","../../../packages/platform/dist/db/schema/vreko/code-contexts.js","../../../packages/platform/dist/db/schema/vreko/codebase-bindings.js","../../../packages/platform/dist/db/schema/vreko/conflict-log.js","../../../packages/platform/dist/db/schema/vreko/device-auth-codes.js","../../../packages/platform/dist/db/schema/vreko/device-bindings.js","../../../packages/platform/dist/db/schema/vreko/device-code.js","../../../packages/platform/dist/db/schema/vreko/engagement-tracking.js","../../../packages/platform/dist/db/schema/vreko/enterprise-auth.js","../../../packages/platform/dist/db/schema/vreko/error-logs.js","../../../packages/platform/dist/db/schema/vreko/extension-sessions.js","../../../packages/platform/dist/db/schema/vreko/feature-usage.js","../../../packages/platform/dist/db/schema/vreko/feedback.js","../../../packages/platform/dist/db/schema/vreko/file-snapshot-sessions.js","../../../packages/platform/dist/db/schema/vreko/fingerprints.js","../../../packages/platform/dist/db/schema/vreko/flywheel.js","../../../packages/platform/dist/db/schema/vreko/github-integrations.js","../../../packages/platform/dist/db/schema/vreko/invite-codes.js","../../../packages/platform/dist/db/schema/vreko/leads.js","../../../packages/platform/dist/db/schema/vreko/loops.js","../../../packages/platform/dist/db/schema/vreko/mcp.js","../../../packages/platform/dist/db/schema/vreko/mcp-learnings.js","../../../packages/platform/dist/db/schema/vreko/mcp-sessions.js","../../../packages/platform/dist/db/schema/vreko/nurture-track.js","../../../packages/platform/dist/db/schema/vreko/org-daily-metrics.js","../../../packages/platform/dist/db/schema/vreko/patterns.js","../../../packages/platform/dist/db/schema/vreko/pioneers.js","../../../packages/platform/dist/db/schema/vreko/policy-evaluations.js","../../../packages/platform/dist/db/schema/vreko/post-accept-outcomes.js","../../../packages/platform/dist/db/schema/vreko/predictions.js","../../../packages/platform/dist/db/schema/vreko/quarantine-events.js","../../../packages/platform/dist/db/schema/vreko/rate-limiting.js","../../../packages/platform/dist/db/schema/vreko/repo-personalities.js","../../../packages/platform/dist/db/schema/vreko/response-cache.js","../../../packages/platform/dist/db/schema/vreko/retention-config.js","../../../packages/platform/dist/db/schema/vreko/rollback-events.js","../../../packages/platform/dist/db/schema/vreko/rule-violations.js","../../../packages/platform/dist/db/schema/vreko/sagas.js","../../../packages/platform/dist/db/schema/vreko/scheduled-emails.js","../../../packages/platform/dist/db/schema/vreko/security-events.js","../../../packages/platform/dist/db/schema/vreko/suppression-patterns.js","../../../packages/platform/dist/db/schema/vreko/teams.js","../../../packages/platform/dist/db/schema/vreko/telemetry-events.js","../../../packages/platform/dist/db/schema/vreko/telemetry-outbox.js","../../../packages/platform/dist/db/schema/vreko/trust-scores.js","../../../packages/platform/dist/db/schema/vreko/usage-tracking.js","../../../packages/platform/dist/db/schema/vreko/user-analytics-identities.js","../../../packages/platform/dist/db/schema/vreko/user-attributions.js","../../../packages/platform/dist/db/schema/vreko/user-daily-metrics.js","../../../packages/platform/dist/db/schema/vreko/user-detection-capabilities.js","../../../packages/platform/dist/db/schema/vreko/user-lifecycle-state.js","../../../packages/platform/dist/db/schema/vreko/user-product-metrics.js","../../../packages/platform/dist/db/schema/vreko/user-profiles.js","../../../packages/platform/dist/db/schema/vreko/user-safety-profiles.js","../../../packages/platform/dist/db/schema/vreko/webhooks.js","../../../packages/platform/dist/db/schema/vreko/workspace-links.js","../../../packages/platform/dist/db/schema/vreko/workspace-settings.js","../../../packages/platform/dist/db/schema/vreko/intelligence.js","../../../packages/platform/dist/db/schema/vreko/repositories.js","../../../packages/platform/dist/db/schema/vreko/tasks.js"],"names":["topupStatusEnum","pgEnum","TOPUP_PACKS","priceCents","perCredit","savings","creditTopups","pgTable","id","text","primaryKey","$defaultFn","nanoid","userId","references","user","onDelete","organizationId","organization","packSize","integer","notNull","stripePaymentIntentId","stripeCheckoutSessionId","stripeCustomerId","status","default","ledgerTransactionId","metadata","jsonb","createdAt","timestamp","defaultNow","completedAt","refundedAt","table","userIdIdx","uniqueIndex","on","orgIdIdx","statusIdx","stripePaymentIdx","stripeCheckoutIdx","creditTopupsRelations","relations","one","fields","getTopupPackDetails","isValidPackSize","size","creditTransactionTypeEnum","creditJobTypeEnum","creditTransactionStatusEnum","creditsLedger","credits","balanceAfter","transactionType","jobType","jobId","estimatedCredits","estimatedCostCents","actualCostCents","tokensUsed","graphNodes","fileCount","topupId","billingPeriodStart","billingPeriodEnd","finalizedAt","transactionTypeIdx","createdAtIdx","billingPeriodIdx","creditsLedgerRelations","deviceTrials","uuid","defaultRandom","deviceFingerprint","unique","apiKeyId","apiKeys","snapshotsUsed","apiCallsUsed","snapshotLimit","apiCallLimit","convertedAt","installCount","blockedUntil","lastSeenAt","deviceFingerprintIdx","userIdx","blockedUntilIdx","deviceTrialsRelations","apiKey","snapshots","idempotencyKey","name","description","trigger","totalSizeBytes","fileHashes","$type","gitBranch","gitCommit","gitDirty","boolean","riskScore","riskFactors","projectPath","workspaceId","cloudBackupEnabled","cloudBackupUrl","encryptionKeyId","encryptedDataKey","encryptionAlgorithm","expiresAt","index","apiKeyIdIdx","userCreatedAtIdx","snapshotFiles","snapshotId","filePath","fileHash","fileSizeBytes","changeType","linesChanged","containsSecrets","riskLevel","snapshotIdIdx","snapshotFilePathIdx","snapshotsRelations","many","files","snapshotFilesRelations","snapshot","trialStatusEnum","trials","startedAt","endsAt","canceledAt","features","json","autoExtended","extensionReason","updatedAt","trialsRelations","waitlistStatusEnum","waitlist","email","githubUsername","editor","language","teamSize","queuePosition","referralCode","intent","hubspotContactId","hubspotSyncedAt","emailSent","emailSentAt","invitedAt","acceptedAt","waitlistReferrals","referrerId","referredEmail","referredId","pointsAwarded","waitlistTasks","waitlistId","taskType","completed","pointsEarned","waitlistRelations","referrals","relationName","referredBy","tasks","auditLogs","waitlistAuditLogs","waitlistReferralsRelations","referrer","referred","waitlistTasksRelations","waitlistEntry","action","waitlistAuditLogsRelations","text7","purchaseTypeEnum","subscriptionStatusEnum","planTypeEnum","length","emailVerified","username","displayUsername","banned","banReason","banExpires","onboardingComplete","paymentsCustomerId","locale","totalSnapshots","totalRecoveries","subscriptionTier","tierExpiresAt","withTimezone","twoFactorEnabled","normalizedEmail","varchar","concurrentDeviceCount","maxObservedDevices","pioneer","pioneerCohort","pioneerActivatedAt","ipAddress","userAgent","impersonatedBy","activeOrganizationId","token","account","accountId","providerId","accessToken","refreshToken","idToken","accessTokenExpiresAt","refreshTokenExpiresAt","scope","identifier","value","passkey","publicKey","deviceType","backedUp","transports","twoFactor","secret","backupCodes","rateLimit","key","count","lastRequest","bigint","mode","jwks","subscriptions","stripeSubscriptionId","plan","currentPeriodStart","currentPeriodEnd","cancelAtPeriodEnd","trialEnd","seats","monthlyCreditsAllowance","currentCreditBalance","topupCreditBalance","creditOverage","subscriptionsRelations","limits","usageLimits","activationCodeTypeEnum","adminActionEnum","adminTargetTypeEnum","superAdminRoleEnum","activationCodes","code","type","tier","durationDays","maxRedemptions","currentRedemptions","campaign","notes","validFrom","createdById","revokedAt","revokedById","revokedReason","where","sql","activationCodeRedemptions","codeId","tierGranted","redeemedAt","subscriptionId","adminAuditLog","adminId","targetType","targetId","superAdmins","role","permissions","addedById","addedAt","lastAccessAt","activationCodesRelations","createdBy","revokedBy","redemptions","activationCodeRedemptionsRelations","subscription","adminAuditLogRelations","admin","superAdminsRelations","addedBy","adminEmailSends","adminUserId","recipientEmail","recipientUserId","template","subject","bodyPreview","resendId","sentAt","adminTierChanges","targetUserId","previousTier","newTier","reason","aiChanges","workspaceFingerprint","sessionId","aiTool","aiConfidence","real","diffHash","snapshotType","outcome","revertedAt","revertSnapshotId","syncedAt","snapshotIdUnique","workspaceIdx","sessionIdx","aiChangesRelations","analysisEvents","requestId","lineStart","lineEnd","characterStart","characterEnd","detectedPatterns","analysisTimeMs","clientType","clientVersion","ideVersion","projectId","analysisEventsRelations","apiKeyMetadata","environment","scopes","JSON","stringify","rateLimitPerMinute","rateLimitPerHour","dailyRequestLimit","lastUsedAt","lastUsedIp","inet","lastUsedClient","totalRequests","isActive","signingSecret","apiKeyMetadataRelations","apiKeyUsage","endpoint","requestCount","crypto","randomUUID","keyPreview","array","orgId","revoked","bypassEvents","forced","ruleId","ruleName","violationDescription","bypassEventsRelations","capabilityAudit","capabilityType","change","performanceBefore","performanceAfter","capabilityAuditRelations","ciOutcomes","aiChangeId","pipeline","testsPassed","testsFailed","coverageDelta","durationMs","runUrl","occurredAt","aiChangeIdIdx","occurredAtIdx","codeContexts","workspaceHash","filePathHash","fileExtension","lineCount","lastAnalysis","lastAnalysisAt","lastRefactor","lastRefactorAt","analysisCount","refactorCount","lastAccessedAt","userIdWorkspaceHashIndex","lastAccessedAtIndex","userWorkspacePathUnique","codeContextsRelations","codebaseBindings","generatedAlwaysAsIdentity","codebaseHash","repoSignature","machineIdHash","signalSources","firstSeen","lastSeen","codebaseBindingsRelations","conflictLog","existingAccountId","newAccountId","resolution","resolvedAt","conflictLogRelations","existingAccount","newAccount","deviceAuthCodes","deviceCode","userCode","clientId","verificationUri","approved","approvedAt","issuedApiKeyId","deviceCodeIdx","userCodeIdx","expiresAtIdx","approvedIdx","deviceBindings","vscodeMachineId","platformSignature","serialAvailable","trustScore","deviceBindingsRelations","lastPolledAt","pollingInterval","deniedReason","engagementScores","totalEngagementScore","usageScore","feedbackQualityScore","communityScore","referralScore","betaTier","tierUnlockedAt","qualifyingActions","lastUpdatedAt","engagementActions","actionType","tierProgressBefore","tierProgressAfter","engagementScoreDelta","performedAt","engagementScoresRelations","actions","engagementActionsRelations","score","ssoProviderEnum","ssoProtocolEnum","ssoProviderStatusEnum","ssoConfiguration","configId","provider","protocol","isEnabled","enforceSso","samlConfig","oidcConfig","allowedDomains","autoProvisioning","enabled","defaultRole","syncGroups","lastAuthAt","ssoSession","ssoConfigId","idpSessionId","authenticatedAt","transformTypeEnum","riskDecisionEnum","authMethodEnum","actorTypeEnum","ssoAttributeMappings","sourceAttribute","targetField","transformType","transformConfig","isRequired","defaultValue","riskAssessments","factors","decision","challengeCompleted","geoLocation","trustedDevices","deviceName","userSessionContext","authMethod","riskAssessmentId","mfaCompleted","mfaMethod","lastActivityAt","terminatedAt","terminationReason","conditionalAccessPolicies","priority","conditions","enterpriseAuditLog","actorId","actorType","resourceType","resourceId","ssoConfigurationRelations","attributeMappings","sessions","ssoSessionRelations","config","ssoAttributeMappingsRelations","riskAssessmentsRelations","trustedDevicesRelations","userSessionContextRelations","riskAssessment","conditionalAccessPoliciesRelations","enterpriseAuditLogRelations","actor","severityLevelEnum","errorLogs","errorId","errorCode","errorType","severity","message","stackTrace","method","requestBody","serviceName","version","errorLogs202510","errorLogsRelations","sessionSeverityEnum","extensionSessions","sessionStart","sessionEnd","extensionVersion","vscodeVersion","platform","requestsCount","highestSeverity","aiPresent","issuesByType","bytesSaved","aiAssistLevel","aiConfidenceScore","aiProvider","aiMetadata","extensionSessionsRelations","featureCategoryEnum","featureUsage","featureName","featureCategory","triggerMethod","fileType","projectType","projectSize","success","filesAffected","featureUsage202510","featureUsageRelations","session","feedback","feedbackType","feedbackText","rating","userCreatedAtIndex","apiKeyCreatedAtIndex","feedbackTypeCheck","check","fileSnapshotSessions","endedAt","snapshotIds","aiToolsActive","concurrentSessionCount","fileConflictsDetected","peakRiskScore","rollbacksPerformed","healthDelta","primaryStack","workspaceScale","coherenceScore","startedAtIdx","userStartedIdx","fileSnapshotSessionsRelations","fingerprints","workspaceKey","policy","scan","driftFull","driftTruncated","similarity64","similarityAlg","factsStored","receivedAt","fingerprintsRelations","userSyncPreferences","personalSyncEnabled","choiceMadeAt","lastSyncedFromDevice","userSyncPreferencesRelations","userContributionPreferences","sharedLearningEnabled","promptVersion","userContributionPreferencesRelations","sessionIngests","externalSessionId","activeOrgId","scopePersonal","scopeGlobal","scopeOrgMode","consentPersonalSync","consentSharedLearning","consentedAt","consentPromptVersion","filesTouchedCount","serviceBoundariesCrossed","riskEventCount","rollbackEventCount","aiAttributedRatio","payload","outcomeLabeledAt","orgIdx","outcomeIdx","externalIdIdx","sessionIngestsRelations","reflections","sessionReflections","outcomeLabels","sessionIngestId","qualifiedAt","enqueuedAt","source","modelUsed","creditsConsumed","reflection","failed","failureReason","failureCount","sessionReflectionsRelations","sessionIngest","labelType","confidence","observationWindowDays","labeledAt","observedAt","signalData","labelTypeIdx","outcomeLabelsRelations","sessionIngestLog","scopesApplied","requestPath","sessionIngestLogRelations","githubInstallations","githubInstallationId","githubAccountId","githubAccountType","githubAccountLogin","repositorySelection","selectedRepositoryIds","webhookId","webhookSecret","webhookActive","suspended","suspendedAt","installedAt","githubPrAnalyses","installationId","repoId","prNumber","aiContributionPercentage","decimal","precision","scale","estimatedAiTool","filesChanged","linesAdded","linesRemoved","patternsDetected","checkStatus","checkConclusion","checkDetailsUrl","hasCoAuthorTag","coAuthorTools","fedToCalibration","analyzedAt","githubInstallationsRelations","prAnalyses","githubPrAnalysesRelations","installation","inviteCodes","maxUses","currentUses","label","cohort","invitedEmail","pendingApiKeys","rawKey","purpose","burnInviteCode","db","rows","update","set","Date","and","eq","returning","leads","loops","loopType","iterationCount","errorMessage","loopTypeCheck","observationTypeEnum","observationSeverityEnum","observationSourceEnum","invocationTypeEnum","invocationStatusEnum","deviceTypeEnum","conflictStrategyEnum","mcpObservations","context","lineNumber","toolName","processed","processedAt","syncVersion","deviceId","typeIdx","idempotencyIdx","syncIdx","contextIdx","using","mcpObservationsRelations","mcpToolInvocations","toolVersion","invocationType","requestPayload","responsePayload","inputTokens","outputTokens","toolIdx","billingIdx","mcpToolInvocationsRelations","extensionSyncState","lastSyncAt","syncWindowStart","syncWindowEnd","pendingChangesCount","pendingChanges","lastConflictAt","conflictResolutionStrategy","lastHeartbeatAt","isOnline","uniqueUserWorkspaceDevice","pendingIdx","heartbeatIdx","extensionSyncStateRelations","mcpAggregatedLearnings","patternKey","patternType","workspaceCount","workspaceIds","totalOccurrences","firstSeenAt","mcpAggregatedLearningsRelations","mcpActivityEvents","eventType","totalBytes","mcpActivityEventsRelations","mcpSessions","taskDescription","snapshotCount","riskAnalysisCount","learningsRecorded","detectedStack","flushIdempotencyKey","mcpSessionsRelations","nurtureTrack","trackName","trackVersion","currentStep","totalSteps","lastEmailSentId","lastEmailSentAt","lastEmailOpenedAt","lastEmailClickedAt","emailsSent","emailsOpened","emailsClicked","unsubscribed","paused","pausedAt","resumedAt","enrolledAt","trackNameIdx","pausedIdx","completedIdx","orgDailyMetrics","date","incidentsDetected","incidentsPrevented","timeToRestoreMs","snapshotsCreated","snapshotsRestored","highSeverityRisks","mediumSeverityRisks","lowSeverityRisks","apiCalls","apiErrors","featuresUsed","avgResponseTimeMs","p95ResponseTimeMs","activeUsers","clientVersions","orgDateUnique","dateIndex","vector256","customType","dataType","toDriver","join","fromDriver","replace","split","map","v","Number","parseFloat","patterns","patternSignature","embedding","toolAffinity","fileTypes","occurrenceCount","successRate","isGlobal","patternsRelations","pioneerCodeStatusEnum","pioneers","githubId","contactEmail","joinedAt","githubStarred","lastSyncedAt","surveyCompletedAt","experienceLevel","codebaseSize","t","pioneerCodes","pioneerRedemptions","pioneerId","primaryIde","aiTools","posthogSyncedAt","welcomeEmailSentAt","policyEvaluations","policyName","policyVersion","evaluationResult","violations","remediationSteps","evaluationResultCheck","postAcceptOutcomes","suggestionId","editsMade","timeToEditMs","timeToSubmitMs","userFeedback","predictions","predictionType","predictedValue","modelVersion","latencyMs","contextHash","actualOutcome","wasCorrect","outcomeRecordedAt","feedbackSource","predictionsRelations","quarantineEvents","originalEvent","errorReason","errorStack","attemptedAt","retryCount","lastAttemptedAt","attemptedAtIndex","rateLimitViolations","limitType","limitValue","currentValue","retryAfterSeconds","rateLimitViolationsRelations","tokenBuckets","tokens","numeric","capacity","refillRate","lastRefill","userIdIndex","tokenBucketsRelations","repoPersonalities","repoName","riskProfile","aiTolerance","volatility","incidentCount","totalCommits","primaryLanguage","frameworks","repoPersonalitiesRelations","responseCache","cacheKey","response","hitCount","lastHitAt","cacheKeyIndex","expiryIndex","responseCacheRelations","retentionConfig","tableName","retentionDays","lastRunAt","rollbackEvents","riskScoreAtSnapshot","riskScoreWasCorrect","timeToRollback","fileCategory","blastRadiusBucket","wasFragileFile","userOccurredIdx","riskScoreIdx","rollbackEventsRelations","ruleViolations","ruleCategory","matchText","pattern","remediation","remediationLink","ruleViolationsRelations","sagaStatusEnum","sagaStepStatusEnum","sagas","sagaId","sagaType","steps","error","maxRetries","failedAt","scheduledEmails","scheduledAt","firedAt","cancelledAt","securityEvents","detectionMethod","securityEventsRelations","suppressionPatterns","useCount","suppressedViolations","falsePositives","suppressionPatternsRelations","teamRoleEnum","teams","slug","avatarUrl","ownerId","settings","ownerIdIndex","slugIndex","teamsRelations","owner","teamMembers","teamId","invitedBy","teamIdIndex","teamUserUnique","teamMembersRelations","team","invitedByUser","telemetryEvents","eventCategory","properties","telemetryIdempotencyKeys","responseData","telemetryDailyStats","totalEvents","featureUsageEvents","errorEvents","lifecycleEvents","engagementEvents","platforms","topFeatures","telemetryOutbox","posthogPayload","processingErrors","trustScores","toolId","contextKey","momentum","sampleCount","recentWindow","lastCalibration","trustScoresRelations","apiUsageLogs","responseTimeMs","responseStatus","clientPlatform","countryCode","apiUsageLogsRelations","apiUsageLogs202510","apiUsageLogs202511","usageStatsDaily","totalTokens","successfulRequests","failedRequests","endpointsUsed","userIdDateIndex","userIdDateUnique","usageStatsDailyRelations","userAnalyticsIdentities","posthogUserId","posthogDistinctId","resendContactId","anonymousId","synced","posthogUserIdIdx","hubspotContactIdIdx","anonymousIdIdx","userAttributions","campaignId","fingerprint","conversionData","utmParams","userAttributionsRelations","userDailyMetrics","minutesSavedEstimate","aiSessions","userDateUnique","dateIdx","userDetectionCapabilities","customRiskIndicators","falsePositivePatterns","thresholdOverrides","totalDetectionsAnalyzed","accuracyScore","toolAccuracy","lastUpdated","userDetectionCapabilitiesRelations","lifecycleStageEnum","userLifecycleState","stage","stagedAt","transitionReason","snapshotsSinceStart","daysSinceLastActivity","stageIdx","updatedAtIdx","userProductMetrics","snapshotsTotal","restoresTotal","minutesSavedTotal","aiSessionsTotal","snapshots7d","restores7d","minutesSaved7d","aiSessions7d","snapshots30d","restores30d","lastSnapshotAt","lastRestoreAt","lastSnapshotIdx","userProfiles","displayName","company","onboardingCompleted","onboardingStep","useCases","userProfilesRelations","userSafetyProfiles","totalAnalyses","totalViolations","totalBlocked","totalBypassed","averageRiskScore","highestRiskScore","securityViolations","privacyViolations","complianceViolations","autoBlockHighRisk","notifyOnViolation","notifyOnBypass","suppressionPatternsLearned","bypassPatternsLearned","profileResetAt","userSafetyProfilesRelations","webhookEvents","eventId","sourceId","webhookEventsRelations","WORKSPACE_LINK_TTL_MS","TIER_STALENESS_THRESHOLD_MS","workspaceLinks","tierRefreshedAt","lastSeenIdx","workspaceSettings","autoAnalyze","inlineSuggestions","maxFileSizeKB","ignoredPatterns","customRules","languageSettings","userWorkspaceUnique","workspaceSettingsRelations","learnings","enum","keywords","domain","accessCount","appliedCount","relevanceScore","archived","archivedAt","workspaceTierIdx","userActiveIdx","learningsRelations","intelligencePatterns","usageCount","highConfIdx","activeIdx","intelligencePatternsRelations","file","prevention","promotedToPattern","uniqueWorkspaceTypeFile","violationsRelations","sessionContext","lastCheckpoint","appliedLearnings","sessionContextRelations","repositories","externalRepoId","fullName","visibility","orgNameIdx","externalIdx","repoMemberships","membershipId","member","repositoryId","membershipRepoUnique","repoIdx","repositoriesRelations","repoMembershipsRelations","membership","repository","taskStatusEnum","taskOutcomeEnum","taskEventTypeEnum","fileActionEnum","learningCategoryEnum","learningConfidenceEnum","migrationSourceEnum","closedAt","ceremonyJson","continuesFrom","migrationSource","originalSessionId","taskEvents","taskId","seq","payloadJson","taskFiles","path","hashBefore","hashAfter","taskLearnings","contentHash","content","category","taskSessions","isWriter","connectedAt","disconnectedAt","tasksRelations","continuedFrom","continuedBy","events","taskEventsRelations","task","taskFilesRelations","taskLearningsRelations","taskSessionsRelations","fileChangeCountsSql","learningCountSql","sessionCountSql","pulseCountSql"],"mappings":"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","file":"chunk-Z55UGM6X.js","sourcesContent":["// ESM imports fixed for Node.js v22+\n/**\n * Credit Top-Ups Schema\n *\n * Tracks purchased credit packs for Pro and Team tiers.\n * Per pricing_spec_v3.md:\n *\n * | Pack | Price | Per-Credit | Savings |\n * |------|-------|------------|---------|\n * | 50 credits | $5 | $0.10 | - |\n * | 100 credits | $9 | $0.09 | 10% |\n * | 250 credits | $20 | $0.08 | 20% |\n *\n * Top-ups do not expire. They're consumed after the monthly included allowance is depleted.\n * Free tier users cannot purchase top-ups (must upgrade to Pro).\n *\n * @module credit-topups\n */\nimport { relations } from \"drizzle-orm\";\nimport { integer, jsonb, pgEnum, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { organization, user } from \"../postgres.js\";\n// Top-up status enum\nexport const topupStatusEnum = pgEnum(\"topup_status\", [\n \"pending\", // Payment initiated but not completed\n \"completed\", // Payment successful, credits added\n \"failed\", // Payment failed\n \"refunded\", // Payment refunded, credits removed\n \"canceled\", // User canceled before payment\n]);\n// Top-up pack sizes (per spec)\nexport const TOPUP_PACKS = {\n 50: { priceCents: 500, perCredit: 0.1, savings: 0 },\n 100: { priceCents: 900, perCredit: 0.09, savings: 10 },\n 250: { priceCents: 2000, perCredit: 0.08, savings: 20 },\n};\n/**\n * Credit Top-Ups Table\n *\n * Tracks all credit pack purchases.\n */\nexport const creditTopups = pgTable(\"credit_topups\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\").references(() => user.id, {\n onDelete: \"cascade\",\n }),\n organizationId: text(\"organization_id\").references(() => organization.id, {\n onDelete: \"cascade\",\n }),\n // Pack details\n packSize: integer(\"pack_size\").notNull(), // 50, 100, or 250\n priceCents: integer(\"price_cents\").notNull(), // 500, 900, or 2000\n // Stripe integration\n stripePaymentIntentId: text(\"stripe_payment_intent_id\"),\n stripeCheckoutSessionId: text(\"stripe_checkout_session_id\"),\n stripeCustomerId: text(\"stripe_customer_id\"),\n // Status tracking\n status: topupStatusEnum(\"status\").notNull().default(\"pending\"),\n // Ledger reference (credits added via ledger)\n ledgerTransactionId: text(\"ledger_transaction_id\"), // Reference to credits_ledger entry\n // Additional metadata\n metadata: jsonb(\"metadata\").default({}),\n // Timestamps\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n completedAt: timestamp(\"completed_at\"),\n refundedAt: timestamp(\"refunded_at\"),\n}, (table) => ({\n // Indexes\n userIdIdx: uniqueIndex(\"idx_credit_topups_user_id\").on(table.userId),\n orgIdIdx: uniqueIndex(\"idx_credit_topups_org_id\").on(table.organizationId),\n statusIdx: uniqueIndex(\"idx_credit_topups_status\").on(table.status),\n stripePaymentIdx: uniqueIndex(\"idx_credit_topups_stripe_payment\").on(table.stripePaymentIntentId),\n stripeCheckoutIdx: uniqueIndex(\"idx_credit_topups_stripe_checkout\").on(table.stripeCheckoutSessionId),\n}));\n/**\n * Relations for credit top-ups\n */\nexport const creditTopupsRelations = relations(creditTopups, ({ one }) => ({\n user: one(user, {\n fields: [creditTopups.userId],\n references: [user.id],\n }),\n organization: one(organization, {\n fields: [creditTopups.organizationId],\n references: [organization.id],\n }),\n}));\n/**\n * Helper function to get pack details\n */\nexport function getTopupPackDetails(packSize) {\n return TOPUP_PACKS[packSize];\n}\n/**\n * Helper function to validate pack size\n */\nexport function isValidPackSize(size) {\n return size in TOPUP_PACKS;\n}\n","// ESM imports fixed for Node.js v22+\n/**\n * Credits Ledger Schema\n *\n * Tracks all credit transactions for the credit-based billing system.\n * Per pricing_spec_v3.md: Credits apply only to operations with real server-side compute cost.\n *\n * Transaction types:\n * - monthly_allowance: Monthly credit grant based on tier\n * - top_up: Purchased credit pack\n * - job_consumption: Credits consumed by a job\n * - refund: Credits returned (e.g., job failed)\n * - admin_adjustment: Manual adjustment by admin\n *\n * @module credits-ledger\n */\nimport { relations } from \"drizzle-orm\";\nimport { integer, jsonb, pgEnum, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { organization, user } from \"../postgres.js\";\n// Transaction type enum\nexport const creditTransactionTypeEnum = pgEnum(\"credit_transaction_type\", [\n \"monthly_allowance\",\n \"top_up\",\n \"job_consumption\",\n \"refund\",\n \"admin_adjustment\",\n]);\n// Job type enum for credit consumption\nexport const creditJobTypeEnum = pgEnum(\"credit_job_type\", [\n \"deep_risk_sweep\",\n \"full_codebase_scan\",\n \"memory_sync\",\n \"synthesis\",\n \"layer3_personalization\",\n \"ai_refactor_plan\",\n \"fleet_analysis\",\n \"vitals_history\",\n]);\n// Transaction status enum\nexport const creditTransactionStatusEnum = pgEnum(\"credit_transaction_status\", [\n \"pending\", // Reserved but not yet finalized\n \"completed\", // Transaction finalized\n \"failed\", // Transaction failed\n \"reversed\", // Transaction reversed (refund)\n]);\n/**\n * Credits Ledger Table\n *\n * Every credit transaction is recorded here with running balance.\n * This is the source of truth for credit balance calculations.\n */\nexport const creditsLedger = pgTable(\"credits_ledger\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\").references(() => user.id, {\n onDelete: \"cascade\",\n }),\n organizationId: text(\"organization_id\").references(() => organization.id, {\n onDelete: \"cascade\",\n }),\n // Credit transaction details\n credits: integer(\"credits\").notNull(), // positive = add, negative = consume\n balanceAfter: integer(\"balance_after\").notNull(), // Running balance after this transaction\n // Transaction metadata\n transactionType: creditTransactionTypeEnum(\"transaction_type\").notNull(),\n status: creditTransactionStatusEnum(\"status\").notNull().default(\"completed\"),\n // Job-specific fields (for job_consumption type)\n jobType: creditJobTypeEnum(\"job_type\"),\n jobId: text(\"job_id\"), // Reference to the actual job (e.g., analysis ID)\n estimatedCredits: integer(\"estimated_credits\"), // Original estimate before job ran\n // Cost tracking (for internal analysis, per spec Phase 1)\n estimatedCostCents: integer(\"estimated_cost_cents\"), // Estimated internal cost\n actualCostCents: integer(\"actual_cost_cents\"), // Actual internal cost\n tokensUsed: integer(\"tokens_used\"), // LLM tokens if applicable\n graphNodes: integer(\"graph_nodes\"), // Graph size if applicable\n fileCount: integer(\"file_count\"), // File count if applicable\n // Stripe integration (for top-ups)\n stripePaymentIntentId: text(\"stripe_payment_intent_id\"),\n stripeCheckoutSessionId: text(\"stripe_checkout_session_id\"),\n // Top-up pack reference\n topupId: text(\"topup_id\"), // Reference to credit_topups table\n // Billing period tracking\n billingPeriodStart: timestamp(\"billing_period_start\"),\n billingPeriodEnd: timestamp(\"billing_period_end\"),\n // Additional metadata\n metadata: jsonb(\"metadata\").default({}),\n // Timestamps\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n finalizedAt: timestamp(\"finalized_at\"),\n}, (table) => ({\n // Indexes for common queries\n userIdIdx: uniqueIndex(\"idx_credits_ledger_user_id\").on(table.userId),\n orgIdIdx: uniqueIndex(\"idx_credits_ledger_org_id\").on(table.organizationId),\n transactionTypeIdx: uniqueIndex(\"idx_credits_ledger_transaction_type\").on(table.transactionType),\n createdAtIdx: uniqueIndex(\"idx_credits_ledger_created_at\").on(table.createdAt),\n billingPeriodIdx: uniqueIndex(\"idx_credits_ledger_billing_period\").on(table.userId, table.billingPeriodStart),\n stripePaymentIdx: uniqueIndex(\"idx_credits_ledger_stripe_payment\").on(table.stripePaymentIntentId),\n}));\n/**\n * Relations for credits ledger\n */\nexport const creditsLedgerRelations = relations(creditsLedger, ({ one }) => ({\n user: one(user, {\n fields: [creditsLedger.userId],\n references: [user.id],\n }),\n organization: one(organization, {\n fields: [creditsLedger.organizationId],\n references: [organization.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { integer, pgTable, text, timestamp, uniqueIndex, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys, user } from \"../postgres.js\";\n/**\n * Device Trials Table\n *\n * Tracks anonymous VSCode extension trials using device fingerprints.\n * Enables progressive authentication: device → email → payment.\n *\n * Progressive Funnel:\n * 1. Anonymous trial: 50 snapshots (device fingerprint only)\n * 2. Email signup: 1000 snapshots (links device to user)\n * 3. Paid tier: Unlimited snapshots (full account)\n *\n * Anti-abuse: Blocks after 3 reinstalls within 24h with 24h cooldown\n */\nexport const deviceTrials = pgTable(\"device_trials\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Device Identity (from VSCode machineId)\n deviceFingerprint: text(\"device_fingerprint\").notNull().unique(),\n // API Key for this device trial\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .references(() => apiKeys.id, { onDelete: \"cascade\" }),\n // Usage Tracking\n snapshotsUsed: integer(\"snapshots_used\").notNull().default(0),\n apiCallsUsed: integer(\"api_calls_used\").notNull().default(0),\n // Limits (increase on conversion)\n snapshotLimit: integer(\"snapshot_limit\").notNull().default(50),\n apiCallLimit: integer(\"api_call_limit\").notNull().default(10000),\n // User Conversion (null until email signup)\n userId: text(\"user_id\").references(() => user.id, {\n onDelete: \"cascade\",\n }),\n convertedAt: timestamp(\"converted_at\"),\n // Abuse Prevention\n installCount: integer(\"install_count\").notNull().default(1),\n blockedUntil: timestamp(\"blocked_until\"), // null = not blocked\n // Timestamps\n lastSeenAt: timestamp(\"last_seen_at\").defaultNow(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n}, (table) => ({\n // Index for fast fingerprint lookups\n deviceFingerprintIdx: uniqueIndex(\"device_trials_fingerprint_idx\").on(table.deviceFingerprint),\n // Index for finding all devices for a user\n userIdx: uniqueIndex(\"device_trials_user_idx\").on(table.userId),\n // Index for checking blocked devices\n blockedUntilIdx: uniqueIndex(\"device_trials_blocked_idx\").on(table.blockedUntil),\n}));\nexport const deviceTrialsRelations = relations(deviceTrials, ({ one }) => ({\n user: one(user, {\n fields: [deviceTrials.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [deviceTrials.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, index, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys, user } from \"../postgres.js\";\n/**\n * Snapshots - Privacy-first metadata storage\n *\n * PRIVACY PRINCIPLE: Store only metadata by default.\n * File content storage requires explicit user opt-in via cloudBackup permission.\n */\nexport const snapshots = pgTable(\"snapshots\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .references(() => apiKeys.id, { onDelete: \"cascade\" }),\n // Idempotency key for duplicate prevention\n idempotencyKey: text(\"idempotency_key\").unique(), // Optional client-provided idempotency key\n // Snapshot metadata (always stored)\n name: text(\"name\"), // Optional user-provided name\n description: text(\"description\"), // Optional description\n trigger: text(\"trigger\").notNull(), // \"manual\", \"auto\", \"pre_command\", \"risk_detection\"\n // File metadata (no actual content by default)\n fileCount: integer(\"file_count\").notNull().default(0),\n totalSizeBytes: integer(\"total_size_bytes\").notNull().default(0),\n fileHashes: jsonb(\"file_hashes\").$type().default([]), // SHA-256 hashes\n // Git context (metadata only)\n gitBranch: text(\"git_branch\"),\n gitCommit: text(\"git_commit\"),\n gitDirty: boolean(\"git_dirty\").default(false),\n // Risk analysis metadata\n riskScore: integer(\"risk_score\"), // 0-100\n riskFactors: jsonb(\"risk_factors\")\n .$type()\n .default([]),\n // Project context\n projectPath: text(\"project_path\"),\n workspaceId: text(\"workspace_id\"), // For future team features\n // Cloud backup (only if user opted in)\n cloudBackupEnabled: boolean(\"cloud_backup_enabled\").default(false),\n cloudBackupUrl: text(\"cloud_backup_url\"), // S3/storage URL if backed up\n // Encryption fields for server-side KMS encryption\n // MVP Note: Server-side KMS encryption with Row Level Security (RLS) to isolate rows\n // Post-MVP: Will add client-side E2EE with user-controlled keys\n encryptionKeyId: text(\"encryption_key_id\"), // KMS key identifier\n encryptedDataKey: text(\"encrypted_data_key\"), // Data encryption key encrypted with KMS key\n encryptionAlgorithm: text(\"encryption_algorithm\").default(\"AES-256-GCM\"), // Encryption algorithm used\n // Timestamps\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n expiresAt: timestamp(\"expires_at\"), // For automatic cleanup\n // Metadata for additional context\n metadata: jsonb(\"metadata\")\n .$type()\n .default({}),\n}, (table) => ({\n // FK indexes for query performance (3-10x improvement on JOINs)\n userIdIdx: index(\"snapshots_user_id_idx\").on(table.userId),\n apiKeyIdIdx: index(\"snapshots_api_key_id_idx\").on(table.apiKeyId),\n // Composite index for common query pattern: user's recent snapshots\n userCreatedAtIdx: index(\"snapshots_user_created_at_idx\").on(table.userId, table.createdAt),\n}));\n/**\n * Snapshot Files - Individual file metadata\n * Only stores file paths and hashes, NOT content (unless cloud backup enabled)\n */\nexport const snapshotFiles = pgTable(\"snapshot_files\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n snapshotId: uuid(\"snapshot_id\")\n .notNull()\n .references(() => snapshots.id, { onDelete: \"cascade\" }),\n // File metadata\n filePath: text(\"file_path\").notNull(), // Relative path in project\n fileHash: text(\"file_hash\").notNull(), // SHA-256 hash\n fileSizeBytes: integer(\"file_size_bytes\").notNull(),\n // Change detection\n changeType: text(\"change_type\"), // \"added\", \"modified\", \"deleted\"\n linesChanged: integer(\"lines_changed\"),\n // Risk flags\n containsSecrets: boolean(\"contains_secrets\").default(false),\n riskLevel: text(\"risk_level\"), // \"low\", \"medium\", \"high\"\n // Cloud backup (only if snapshot has cloudBackupEnabled)\n cloudBackupUrl: text(\"cloud_backup_url\"), // Individual file backup URL\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n}, (table) => ({\n // FK index for query performance on snapshot file lookups\n snapshotIdIdx: index(\"snapshot_files_snapshot_id_idx\").on(table.snapshotId),\n // Composite index for finding files by path within a snapshot\n snapshotFilePathIdx: index(\"snapshot_files_snapshot_path_idx\").on(table.snapshotId, table.filePath),\n}));\n// Relations\nexport const snapshotsRelations = relations(snapshots, ({ one, many }) => ({\n user: one(user, {\n fields: [snapshots.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [snapshots.apiKeyId],\n references: [apiKeys.id],\n }),\n files: many(snapshotFiles),\n}));\nexport const snapshotFilesRelations = relations(snapshotFiles, ({ one }) => ({\n snapshot: one(snapshots, {\n fields: [snapshotFiles.snapshotId],\n references: [snapshots.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Trial Schema\n * Tracks user trial periods for Pro features\n */\nimport { relations } from \"drizzle-orm\";\nimport { boolean, index, json, pgEnum, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\nexport const trialStatusEnum = pgEnum(\"trial_status\", [\"active\", \"expired\", \"converted\", \"canceled\"]);\nexport const trials = pgTable(\"trials\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .unique()\n .references(() => user.id, { onDelete: \"cascade\" }),\n status: trialStatusEnum(\"status\").notNull().default(\"active\"),\n startedAt: timestamp(\"started_at\").notNull().defaultNow(),\n endsAt: timestamp(\"ends_at\").notNull(),\n convertedAt: timestamp(\"converted_at\"), // When trial converted to paid subscription\n canceledAt: timestamp(\"canceled_at\"),\n features: json(\"features\")\n .$type()\n .default([\"cloud_backup\", \"api_access\", \"advanced_analytics\", \"priority_support\"]),\n autoExtended: boolean(\"auto_extended\").notNull().default(false), // Whether trial was auto-extended\n extensionReason: text(\"extension_reason\"), // Reason for extension (e.g., 'pioneer_benefit', 'support_request')\n metadata: json(\"metadata\").$type(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => [\n index(\"trials_user_id_idx\").on(table.userId),\n index(\"trials_status_idx\").on(table.status),\n index(\"trials_ends_at_idx\").on(table.endsAt),\n]);\nexport const trialsRelations = relations(trials, ({ one }) => ({\n user: one(user, {\n fields: [trials.userId],\n references: [user.id],\n }),\n}));\n","import { relations } from \"drizzle-orm\";\nimport { index, integer, json, pgEnum, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\n// Waitlist status enum\nexport const waitlistStatusEnum = pgEnum(\"waitlist_status\", [\"pending\", \"invited\", \"accepted\", \"rejected\", \"hold\"]);\n// Main waitlist table\nexport const waitlist = pgTable(\"waitlist\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n email: text(\"email\").notNull().unique(),\n githubUsername: text(\"github_username\"),\n editor: text(\"editor\"),\n language: text(\"language\"),\n teamSize: text(\"team_size\"),\n queuePosition: integer(\"queue_position\").notNull(),\n status: waitlistStatusEnum(\"status\").notNull().default(\"pending\"),\n referralCode: text(\"referral_code\").notNull().unique(),\n // Solo or team intent, captured from application form\n intent: text(\"intent\"),\n // HubSpot integration\n hubspotContactId: text(\"hubspot_contact_id\"),\n hubspotSyncedAt: timestamp(\"hubspot_synced_at\"),\n // Email tracking\n emailSent: timestamp(\"email_sent\"),\n emailSentAt: timestamp(\"email_sent_at\"),\n // Invitation tracking\n invitedAt: timestamp(\"invited_at\"),\n acceptedAt: timestamp(\"accepted_at\"),\n // Metadata\n metadata: json(\"metadata\").$type(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => [\n uniqueIndex(\"waitlist_email_idx\").on(table.email),\n uniqueIndex(\"waitlist_referral_code_idx\").on(table.referralCode),\n index(\"waitlist_status_idx\").on(table.status),\n index(\"waitlist_queue_position_idx\").on(table.queuePosition),\n]);\n// Referrals table\nexport const waitlistReferrals = pgTable(\"waitlist_referrals\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n referrerId: text(\"referrer_id\")\n .notNull()\n .references(() => waitlist.id, { onDelete: \"cascade\" }),\n referredEmail: text(\"referred_email\").notNull(),\n referredId: text(\"referred_id\").references(() => waitlist.id, {\n onDelete: \"set null\",\n }),\n pointsAwarded: integer(\"points_awarded\").default(0).notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n}, (table) => [\n index(\"waitlist_referrals_referrer_idx\").on(table.referrerId),\n index(\"waitlist_referrals_referred_idx\").on(table.referredId),\n]);\n// Queue jump tasks\nexport const waitlistTasks = pgTable(\"waitlist_tasks\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n waitlistId: text(\"waitlist_id\")\n .notNull()\n .references(() => waitlist.id, { onDelete: \"cascade\" }),\n taskType: text(\"task_type\").notNull(), // 'github', 'demo', 'snapshot'\n completed: timestamp(\"completed\"),\n pointsEarned: integer(\"points_earned\").notNull(),\n metadata: json(\"metadata\").$type(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n}, (table) => [\n index(\"waitlist_tasks_waitlist_idx\").on(table.waitlistId),\n index(\"waitlist_tasks_type_idx\").on(table.taskType),\n]);\n// Relations\nexport const waitlistRelations = relations(waitlist, ({ many }) => ({\n referrals: many(waitlistReferrals, { relationName: \"referrer\" }),\n referredBy: many(waitlistReferrals, { relationName: \"referred\" }),\n tasks: many(waitlistTasks),\n auditLogs: many(waitlistAuditLogs),\n}));\nexport const waitlistReferralsRelations = relations(waitlistReferrals, ({ one }) => ({\n referrer: one(waitlist, {\n fields: [waitlistReferrals.referrerId],\n references: [waitlist.id],\n relationName: \"referrer\",\n }),\n referred: one(waitlist, {\n fields: [waitlistReferrals.referredId],\n references: [waitlist.id],\n relationName: \"referred\",\n }),\n}));\nexport const waitlistTasksRelations = relations(waitlistTasks, ({ one }) => ({\n waitlistEntry: one(waitlist, {\n fields: [waitlistTasks.waitlistId],\n references: [waitlist.id],\n }),\n}));\n// Audit logs for waitlist actions\nexport const waitlistAuditLogs = pgTable(\"waitlist_audit_logs\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n waitlistId: text(\"waitlist_id\")\n .notNull()\n .references(() => waitlist.id, { onDelete: \"cascade\" }),\n action: text(\"action\").notNull(), // 'joined', 'invited', 'accepted', 'rejected', 'hold', 'position_updated', 'referral_earned'\n userId: text(\"user_id\"), // Better Auth user ID if applicable\n metadata: json(\"metadata\").$type(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n}, (table) => [\n index(\"waitlist_audit_logs_waitlist_idx\").on(table.waitlistId),\n index(\"waitlist_audit_logs_action_idx\").on(table.action),\n index(\"waitlist_audit_logs_created_at_idx\").on(table.createdAt),\n]);\nexport const waitlistAuditLogsRelations = relations(waitlistAuditLogs, ({ one }) => ({\n waitlistEntry: one(waitlist, {\n fields: [waitlistAuditLogs.waitlistId],\n references: [waitlist.id],\n }),\n}));\n","/**\n * Credit Top-Ups Schema\n *\n * Tracks purchased credit packs for Pro and Team tiers.\n * Per pricing_spec_v3.md:\n *\n * | Pack | Price | Per-Credit | Savings |\n * |------|-------|------------|---------|\n * | 50 credits | $5 | $0.10 | - |\n * | 100 credits | $9 | $0.09 | 10% |\n * | 250 credits | $20 | $0.08 | 20% |\n *\n * Top-ups do not expire. They're consumed after the monthly included allowance is depleted.\n * Free tier users cannot purchase top-ups (must upgrade to Pro).\n *\n * @module credit-topups\n */\n\nimport { relations } from \"drizzle-orm\";\nimport { integer, jsonb, pgEnum, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { organization, user } from \"../postgres\";\n\n// Top-up status enum\nexport const topupStatusEnum = pgEnum(\"topup_status\", [\n\t\"pending\", // Payment initiated but not completed\n\t\"completed\", // Payment successful, credits added\n\t\"failed\", // Payment failed\n\t\"refunded\", // Payment refunded, credits removed\n\t\"canceled\", // User canceled before payment\n]);\n\n// Top-up pack sizes (per spec)\nexport const TOPUP_PACKS = {\n\t50: { priceCents: 500, perCredit: 0.1, savings: 0 },\n\t100: { priceCents: 900, perCredit: 0.09, savings: 10 },\n\t250: { priceCents: 2000, perCredit: 0.08, savings: 20 },\n} as const;\n\nexport type TopupPackSize = keyof typeof TOPUP_PACKS;\n\n/**\n * Credit Top-Ups Table\n *\n * Tracks all credit pack purchases.\n */\nexport const creditTopups = pgTable(\n\t\"credit_topups\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tuserId: text(\"user_id\").references(() => user.id, {\n\t\t\tonDelete: \"cascade\",\n\t\t}),\n\t\torganizationId: text(\"organization_id\").references(() => organization.id, {\n\t\t\tonDelete: \"cascade\",\n\t\t}),\n\n\t\t// Pack details\n\t\tpackSize: integer(\"pack_size\").notNull(), // 50, 100, or 250\n\t\tpriceCents: integer(\"price_cents\").notNull(), // 500, 900, or 2000\n\n\t\t// Stripe integration\n\t\tstripePaymentIntentId: text(\"stripe_payment_intent_id\"),\n\t\tstripeCheckoutSessionId: text(\"stripe_checkout_session_id\"),\n\t\tstripeCustomerId: text(\"stripe_customer_id\"),\n\n\t\t// Status tracking\n\t\tstatus: topupStatusEnum(\"status\").notNull().default(\"pending\"),\n\n\t\t// Ledger reference (credits added via ledger)\n\t\tledgerTransactionId: text(\"ledger_transaction_id\"), // Reference to credits_ledger entry\n\n\t\t// Additional metadata\n\t\tmetadata: jsonb(\"metadata\").default({}),\n\n\t\t// Timestamps\n\t\tcreatedAt: timestamp(\"created_at\").defaultNow().notNull(),\n\t\tcompletedAt: timestamp(\"completed_at\"),\n\t\trefundedAt: timestamp(\"refunded_at\"),\n\t},\n\t(table) => ({\n\t\t// Indexes\n\t\tuserIdIdx: uniqueIndex(\"idx_credit_topups_user_id\").on(table.userId),\n\t\torgIdIdx: uniqueIndex(\"idx_credit_topups_org_id\").on(table.organizationId),\n\t\tstatusIdx: uniqueIndex(\"idx_credit_topups_status\").on(table.status),\n\t\tstripePaymentIdx: uniqueIndex(\"idx_credit_topups_stripe_payment\").on(table.stripePaymentIntentId),\n\t\tstripeCheckoutIdx: uniqueIndex(\"idx_credit_topups_stripe_checkout\").on(table.stripeCheckoutSessionId),\n\t}),\n);\n\n/**\n * Relations for credit top-ups\n */\nexport const creditTopupsRelations = relations(creditTopups, ({ one }) => ({\n\tuser: one(user, {\n\t\tfields: [creditTopups.userId],\n\t\treferences: [user.id],\n\t}),\n\torganization: one(organization, {\n\t\tfields: [creditTopups.organizationId],\n\t\treferences: [organization.id],\n\t}),\n}));\n\n// Type exports\nexport type CreditTopup = typeof creditTopups.$inferSelect;\nexport type NewCreditTopup = typeof creditTopups.$inferInsert;\nexport type TopupStatus = (typeof topupStatusEnum.enumValues)[number];\n\n/**\n * Helper function to get pack details\n */\nexport function getTopupPackDetails(packSize: TopupPackSize) {\n\treturn TOPUP_PACKS[packSize];\n}\n\n/**\n * Helper function to validate pack size\n */\nexport function isValidPackSize(size: number): size is TopupPackSize {\n\treturn size in TOPUP_PACKS;\n}\n","/**\n * Credits Ledger Schema\n *\n * Tracks all credit transactions for the credit-based billing system.\n * Per pricing_spec_v3.md: Credits apply only to operations with real server-side compute cost.\n *\n * Transaction types:\n * - monthly_allowance: Monthly credit grant based on tier\n * - top_up: Purchased credit pack\n * - job_consumption: Credits consumed by a job\n * - refund: Credits returned (e.g., job failed)\n * - admin_adjustment: Manual adjustment by admin\n *\n * @module credits-ledger\n */\n\nimport { relations } from \"drizzle-orm\";\nimport { integer, jsonb, pgEnum, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { organization, user } from \"../postgres\";\n\n// Transaction type enum\nexport const creditTransactionTypeEnum = pgEnum(\"credit_transaction_type\", [\n\t\"monthly_allowance\",\n\t\"top_up\",\n\t\"job_consumption\",\n\t\"refund\",\n\t\"admin_adjustment\",\n]);\n\n// Job type enum for credit consumption\nexport const creditJobTypeEnum = pgEnum(\"credit_job_type\", [\n\t\"deep_risk_sweep\",\n\t\"full_codebase_scan\",\n\t\"memory_sync\",\n\t\"synthesis\",\n\t\"layer3_personalization\",\n\t\"ai_refactor_plan\",\n\t\"fleet_analysis\",\n\t\"vitals_history\",\n]);\n\n// Transaction status enum\nexport const creditTransactionStatusEnum = pgEnum(\"credit_transaction_status\", [\n\t\"pending\", // Reserved but not yet finalized\n\t\"completed\", // Transaction finalized\n\t\"failed\", // Transaction failed\n\t\"reversed\", // Transaction reversed (refund)\n]);\n\n/**\n * Credits Ledger Table\n *\n * Every credit transaction is recorded here with running balance.\n * This is the source of truth for credit balance calculations.\n */\nexport const creditsLedger = pgTable(\n\t\"credits_ledger\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tuserId: text(\"user_id\").references(() => user.id, {\n\t\t\tonDelete: \"cascade\",\n\t\t}),\n\t\torganizationId: text(\"organization_id\").references(() => organization.id, {\n\t\t\tonDelete: \"cascade\",\n\t\t}),\n\n\t\t// Credit transaction details\n\t\tcredits: integer(\"credits\").notNull(), // positive = add, negative = consume\n\t\tbalanceAfter: integer(\"balance_after\").notNull(), // Running balance after this transaction\n\n\t\t// Transaction metadata\n\t\ttransactionType: creditTransactionTypeEnum(\"transaction_type\").notNull(),\n\t\tstatus: creditTransactionStatusEnum(\"status\").notNull().default(\"completed\"),\n\n\t\t// Job-specific fields (for job_consumption type)\n\t\tjobType: creditJobTypeEnum(\"job_type\"),\n\t\tjobId: text(\"job_id\"), // Reference to the actual job (e.g., analysis ID)\n\t\testimatedCredits: integer(\"estimated_credits\"), // Original estimate before job ran\n\n\t\t// Cost tracking (for internal analysis, per spec Phase 1)\n\t\testimatedCostCents: integer(\"estimated_cost_cents\"), // Estimated internal cost\n\t\tactualCostCents: integer(\"actual_cost_cents\"), // Actual internal cost\n\t\ttokensUsed: integer(\"tokens_used\"), // LLM tokens if applicable\n\t\tgraphNodes: integer(\"graph_nodes\"), // Graph size if applicable\n\t\tfileCount: integer(\"file_count\"), // File count if applicable\n\n\t\t// Stripe integration (for top-ups)\n\t\tstripePaymentIntentId: text(\"stripe_payment_intent_id\"),\n\t\tstripeCheckoutSessionId: text(\"stripe_checkout_session_id\"),\n\n\t\t// Top-up pack reference\n\t\ttopupId: text(\"topup_id\"), // Reference to credit_topups table\n\n\t\t// Billing period tracking\n\t\tbillingPeriodStart: timestamp(\"billing_period_start\"),\n\t\tbillingPeriodEnd: timestamp(\"billing_period_end\"),\n\n\t\t// Additional metadata\n\t\tmetadata: jsonb(\"metadata\").default({}),\n\n\t\t// Timestamps\n\t\tcreatedAt: timestamp(\"created_at\").defaultNow().notNull(),\n\t\tfinalizedAt: timestamp(\"finalized_at\"),\n\t},\n\t(table) => ({\n\t\t// Indexes for common queries\n\t\tuserIdIdx: uniqueIndex(\"idx_credits_ledger_user_id\").on(table.userId),\n\t\torgIdIdx: uniqueIndex(\"idx_credits_ledger_org_id\").on(table.organizationId),\n\t\ttransactionTypeIdx: uniqueIndex(\"idx_credits_ledger_transaction_type\").on(table.transactionType),\n\t\tcreatedAtIdx: uniqueIndex(\"idx_credits_ledger_created_at\").on(table.createdAt),\n\t\tbillingPeriodIdx: uniqueIndex(\"idx_credits_ledger_billing_period\").on(table.userId, table.billingPeriodStart),\n\t\tstripePaymentIdx: uniqueIndex(\"idx_credits_ledger_stripe_payment\").on(table.stripePaymentIntentId),\n\t}),\n);\n\n/**\n * Relations for credits ledger\n */\nexport const creditsLedgerRelations = relations(creditsLedger, ({ one }) => ({\n\tuser: one(user, {\n\t\tfields: [creditsLedger.userId],\n\t\treferences: [user.id],\n\t}),\n\torganization: one(organization, {\n\t\tfields: [creditsLedger.organizationId],\n\t\treferences: [organization.id],\n\t}),\n}));\n\n// Type exports\nexport type CreditsLedger = typeof creditsLedger.$inferSelect;\nexport type NewCreditsLedger = typeof creditsLedger.$inferInsert;\nexport type CreditTransactionType = (typeof creditTransactionTypeEnum.enumValues)[number];\nexport type CreditJobType = (typeof creditJobTypeEnum.enumValues)[number];\nexport type CreditTransactionStatus = (typeof creditTransactionStatusEnum.enumValues)[number];\n","import { relations } from \"drizzle-orm\";\nimport { integer, pgTable, text, timestamp, uniqueIndex, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys, user } from \"../postgres\";\n\n/**\n * Device Trials Table\n *\n * Tracks anonymous VSCode extension trials using device fingerprints.\n * Enables progressive authentication: device → email → payment.\n *\n * Progressive Funnel:\n * 1. Anonymous trial: 50 snapshots (device fingerprint only)\n * 2. Email signup: 1000 snapshots (links device to user)\n * 3. Paid tier: Unlimited snapshots (full account)\n *\n * Anti-abuse: Blocks after 3 reinstalls within 24h with 24h cooldown\n */\nexport const deviceTrials = pgTable(\n\t\"device_trials\",\n\t{\n\t\tid: uuid(\"id\").primaryKey().defaultRandom(),\n\n\t\t// Device Identity (from VSCode machineId)\n\t\tdeviceFingerprint: text(\"device_fingerprint\").notNull().unique(),\n\n\t\t// API Key for this device trial\n\t\tapiKeyId: text(\"api_key_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => apiKeys.id, { onDelete: \"cascade\" }),\n\n\t\t// Usage Tracking\n\t\tsnapshotsUsed: integer(\"snapshots_used\").notNull().default(0),\n\t\tapiCallsUsed: integer(\"api_calls_used\").notNull().default(0),\n\n\t\t// Limits (increase on conversion)\n\t\tsnapshotLimit: integer(\"snapshot_limit\").notNull().default(50),\n\t\tapiCallLimit: integer(\"api_call_limit\").notNull().default(10000),\n\n\t\t// User Conversion (null until email signup)\n\t\tuserId: text(\"user_id\").references(() => user.id, {\n\t\t\tonDelete: \"cascade\",\n\t\t}),\n\t\tconvertedAt: timestamp(\"converted_at\"),\n\n\t\t// Abuse Prevention\n\t\tinstallCount: integer(\"install_count\").notNull().default(1),\n\t\tblockedUntil: timestamp(\"blocked_until\"), // null = not blocked\n\n\t\t// Timestamps\n\t\tlastSeenAt: timestamp(\"last_seen_at\").defaultNow(),\n\t\tcreatedAt: timestamp(\"created_at\").defaultNow().notNull(),\n\t},\n\t(table) => ({\n\t\t// Index for fast fingerprint lookups\n\t\tdeviceFingerprintIdx: uniqueIndex(\"device_trials_fingerprint_idx\").on(table.deviceFingerprint),\n\t\t// Index for finding all devices for a user\n\t\tuserIdx: uniqueIndex(\"device_trials_user_idx\").on(table.userId),\n\t\t// Index for checking blocked devices\n\t\tblockedUntilIdx: uniqueIndex(\"device_trials_blocked_idx\").on(table.blockedUntil),\n\t}),\n);\n\nexport const deviceTrialsRelations = relations(deviceTrials, ({ one }) => ({\n\tuser: one(user, {\n\t\tfields: [deviceTrials.userId],\n\t\treferences: [user.id],\n\t}),\n\tapiKey: one(apiKeys, {\n\t\tfields: [deviceTrials.apiKeyId],\n\t\treferences: [apiKeys.id],\n\t}),\n}));\n","import { relations } from \"drizzle-orm\";\nimport { boolean, index, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys, user } from \"../postgres\";\n\n/**\n * Snapshots - Privacy-first metadata storage\n *\n * PRIVACY PRINCIPLE: Store only metadata by default.\n * File content storage requires explicit user opt-in via cloudBackup permission.\n */\nexport const snapshots = pgTable(\n\t\"snapshots\",\n\t{\n\t\tid: uuid(\"id\").primaryKey().defaultRandom(),\n\n\t\t// Ownership\n\t\tuserId: text(\"user_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\t\tapiKeyId: text(\"api_key_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => apiKeys.id, { onDelete: \"cascade\" }),\n\n\t\t// Idempotency key for duplicate prevention\n\t\tidempotencyKey: text(\"idempotency_key\").unique(), // Optional client-provided idempotency key\n\n\t\t// Snapshot metadata (always stored)\n\t\tname: text(\"name\"), // Optional user-provided name\n\t\tdescription: text(\"description\"), // Optional description\n\t\ttrigger: text(\"trigger\").notNull(), // \"manual\", \"auto\", \"pre_command\", \"risk_detection\"\n\n\t\t// File metadata (no actual content by default)\n\t\tfileCount: integer(\"file_count\").notNull().default(0),\n\t\ttotalSizeBytes: integer(\"total_size_bytes\").notNull().default(0),\n\t\tfileHashes: jsonb(\"file_hashes\").$type<string[]>().default([]), // SHA-256 hashes\n\n\t\t// Git context (metadata only)\n\t\tgitBranch: text(\"git_branch\"),\n\t\tgitCommit: text(\"git_commit\"),\n\t\tgitDirty: boolean(\"git_dirty\").default(false),\n\n\t\t// Risk analysis metadata\n\t\triskScore: integer(\"risk_score\"), // 0-100\n\t\triskFactors: jsonb(\"risk_factors\")\n\t\t\t.$type<\n\t\t\t\t{\n\t\t\t\t\ttype: string;\n\t\t\t\t\tseverity: \"low\" | \"medium\" | \"high\";\n\t\t\t\t\tmessage: string;\n\t\t\t\t}[]\n\t\t\t>()\n\t\t\t.default([]),\n\n\t\t// Project context\n\t\tprojectPath: text(\"project_path\"),\n\t\tworkspaceId: text(\"workspace_id\"), // For future team features\n\n\t\t// Cloud backup (only if user opted in)\n\t\tcloudBackupEnabled: boolean(\"cloud_backup_enabled\").default(false),\n\t\tcloudBackupUrl: text(\"cloud_backup_url\"), // S3/storage URL if backed up\n\n\t\t// Encryption fields for server-side KMS encryption\n\t\t// MVP Note: Server-side KMS encryption with Row Level Security (RLS) to isolate rows\n\t\t// Post-MVP: Will add client-side E2EE with user-controlled keys\n\t\tencryptionKeyId: text(\"encryption_key_id\"), // KMS key identifier\n\t\tencryptedDataKey: text(\"encrypted_data_key\"), // Data encryption key encrypted with KMS key\n\t\tencryptionAlgorithm: text(\"encryption_algorithm\").default(\"AES-256-GCM\"), // Encryption algorithm used\n\n\t\t// Timestamps\n\t\tcreatedAt: timestamp(\"created_at\").defaultNow().notNull(),\n\t\texpiresAt: timestamp(\"expires_at\"), // For automatic cleanup\n\n\t\t// Metadata for additional context\n\t\tmetadata: jsonb(\"metadata\")\n\t\t\t.$type<{\n\t\t\t\tclientVersion?: string;\n\t\t\t\tideVersion?: string;\n\t\t\t\tplatform?: string;\n\t\t\t\ttags?: string[];\n\t\t\t}>()\n\t\t\t.default({}),\n\t},\n\t(table) => ({\n\t\t// FK indexes for query performance (3-10x improvement on JOINs)\n\t\tuserIdIdx: index(\"snapshots_user_id_idx\").on(table.userId),\n\t\tapiKeyIdIdx: index(\"snapshots_api_key_id_idx\").on(table.apiKeyId),\n\t\t// Composite index for common query pattern: user's recent snapshots\n\t\tuserCreatedAtIdx: index(\"snapshots_user_created_at_idx\").on(table.userId, table.createdAt),\n\t}),\n);\n\n/**\n * Snapshot Files - Individual file metadata\n * Only stores file paths and hashes, NOT content (unless cloud backup enabled)\n */\nexport const snapshotFiles = pgTable(\n\t\"snapshot_files\",\n\t{\n\t\tid: uuid(\"id\").primaryKey().defaultRandom(),\n\n\t\tsnapshotId: uuid(\"snapshot_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => snapshots.id, { onDelete: \"cascade\" }),\n\n\t\t// File metadata\n\t\tfilePath: text(\"file_path\").notNull(), // Relative path in project\n\t\tfileHash: text(\"file_hash\").notNull(), // SHA-256 hash\n\t\tfileSizeBytes: integer(\"file_size_bytes\").notNull(),\n\n\t\t// Change detection\n\t\tchangeType: text(\"change_type\"), // \"added\", \"modified\", \"deleted\"\n\t\tlinesChanged: integer(\"lines_changed\"),\n\n\t\t// Risk flags\n\t\tcontainsSecrets: boolean(\"contains_secrets\").default(false),\n\t\triskLevel: text(\"risk_level\"), // \"low\", \"medium\", \"high\"\n\n\t\t// Cloud backup (only if snapshot has cloudBackupEnabled)\n\t\tcloudBackupUrl: text(\"cloud_backup_url\"), // Individual file backup URL\n\n\t\tcreatedAt: timestamp(\"created_at\").defaultNow().notNull(),\n\t},\n\t(table) => ({\n\t\t// FK index for query performance on snapshot file lookups\n\t\tsnapshotIdIdx: index(\"snapshot_files_snapshot_id_idx\").on(table.snapshotId),\n\t\t// Composite index for finding files by path within a snapshot\n\t\tsnapshotFilePathIdx: index(\"snapshot_files_snapshot_path_idx\").on(table.snapshotId, table.filePath),\n\t}),\n);\n\n// Relations\nexport const snapshotsRelations = relations(snapshots, ({ one, many }) => ({\n\tuser: one(user, {\n\t\tfields: [snapshots.userId],\n\t\treferences: [user.id],\n\t}),\n\tapiKey: one(apiKeys, {\n\t\tfields: [snapshots.apiKeyId],\n\t\treferences: [apiKeys.id],\n\t}),\n\tfiles: many(snapshotFiles),\n}));\n\nexport const snapshotFilesRelations = relations(snapshotFiles, ({ one }) => ({\n\tsnapshot: one(snapshots, {\n\t\tfields: [snapshotFiles.snapshotId],\n\t\treferences: [snapshots.id],\n\t}),\n}));\n\n// Type exports\nexport type Snapshot = typeof snapshots.$inferSelect;\nexport type NewSnapshot = typeof snapshots.$inferInsert;\nexport type SnapshotFile = typeof snapshotFiles.$inferSelect;\nexport type NewSnapshotFile = typeof snapshotFiles.$inferInsert;\n","/**\n * Trial Schema\n * Tracks user trial periods for Pro features\n */\n\nimport { relations } from \"drizzle-orm\";\nimport { boolean, index, json, pgEnum, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres\";\n\nexport const trialStatusEnum = pgEnum(\"trial_status\", [\"active\", \"expired\", \"converted\", \"canceled\"]);\n\nexport const trials = pgTable(\n\t\"trials\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tuserId: text(\"user_id\")\n\t\t\t.notNull()\n\t\t\t.unique()\n\t\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\t\tstatus: trialStatusEnum(\"status\").notNull().default(\"active\"),\n\t\tstartedAt: timestamp(\"started_at\").notNull().defaultNow(),\n\t\tendsAt: timestamp(\"ends_at\").notNull(),\n\t\tconvertedAt: timestamp(\"converted_at\"), // When trial converted to paid subscription\n\t\tcanceledAt: timestamp(\"canceled_at\"),\n\t\tfeatures: json(\"features\")\n\t\t\t.$type<string[]>()\n\t\t\t.default([\"cloud_backup\", \"api_access\", \"advanced_analytics\", \"priority_support\"]),\n\t\tautoExtended: boolean(\"auto_extended\").notNull().default(false), // Whether trial was auto-extended\n\t\textensionReason: text(\"extension_reason\"), // Reason for extension (e.g., 'pioneer_benefit', 'support_request')\n\t\tmetadata: json(\"metadata\").$type<Record<string, unknown>>(),\n\t\tcreatedAt: timestamp(\"created_at\").notNull().defaultNow(),\n\t\tupdatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n\t},\n\t(table) => [\n\t\tindex(\"trials_user_id_idx\").on(table.userId),\n\t\tindex(\"trials_status_idx\").on(table.status),\n\t\tindex(\"trials_ends_at_idx\").on(table.endsAt),\n\t],\n);\n\nexport const trialsRelations = relations(trials, ({ one }) => ({\n\tuser: one(user, {\n\t\tfields: [trials.userId],\n\t\treferences: [user.id],\n\t}),\n}));\n\nexport type Trial = typeof trials.$inferSelect;\nexport type NewTrial = typeof trials.$inferInsert;\n","import { relations } from \"drizzle-orm\";\nimport { index, integer, json, pgEnum, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\n\n// Waitlist status enum\nexport const waitlistStatusEnum = pgEnum(\"waitlist_status\", [\"pending\", \"invited\", \"accepted\", \"rejected\", \"hold\"]);\n\n// Main waitlist table\nexport const waitlist = pgTable(\n\t\"waitlist\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\temail: text(\"email\").notNull().unique(),\n\t\tgithubUsername: text(\"github_username\"),\n\t\teditor: text(\"editor\"),\n\t\tlanguage: text(\"language\"),\n\t\tteamSize: text(\"team_size\"),\n\t\tqueuePosition: integer(\"queue_position\").notNull(),\n\t\tstatus: waitlistStatusEnum(\"status\").notNull().default(\"pending\"),\n\t\treferralCode: text(\"referral_code\").notNull().unique(),\n\t\t// Solo or team intent, captured from application form\n\t\tintent: text(\"intent\"),\n\n\t\t// HubSpot integration\n\t\thubspotContactId: text(\"hubspot_contact_id\"),\n\t\thubspotSyncedAt: timestamp(\"hubspot_synced_at\"),\n\n\t\t// Email tracking\n\t\temailSent: timestamp(\"email_sent\"),\n\t\temailSentAt: timestamp(\"email_sent_at\"),\n\n\t\t// Invitation tracking\n\t\tinvitedAt: timestamp(\"invited_at\"),\n\t\tacceptedAt: timestamp(\"accepted_at\"),\n\n\t\t// Metadata\n\t\tmetadata: json(\"metadata\").$type<{\n\t\t\treferrer?: string;\n\t\t\tutmSource?: string;\n\t\t\tutmMedium?: string;\n\t\t\tutmCampaign?: string;\n\t\t\tuserAgent?: string;\n\t\t}>(),\n\n\t\tcreatedAt: timestamp(\"created_at\").notNull().defaultNow(),\n\t\tupdatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n\t},\n\t(table) => [\n\t\tuniqueIndex(\"waitlist_email_idx\").on(table.email),\n\t\tuniqueIndex(\"waitlist_referral_code_idx\").on(table.referralCode),\n\t\tindex(\"waitlist_status_idx\").on(table.status),\n\t\tindex(\"waitlist_queue_position_idx\").on(table.queuePosition),\n\t],\n);\n\n// Referrals table\nexport const waitlistReferrals = pgTable(\n\t\"waitlist_referrals\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\treferrerId: text(\"referrer_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => waitlist.id, { onDelete: \"cascade\" }),\n\t\treferredEmail: text(\"referred_email\").notNull(),\n\t\treferredId: text(\"referred_id\").references(() => waitlist.id, {\n\t\t\tonDelete: \"set null\",\n\t\t}),\n\t\tpointsAwarded: integer(\"points_awarded\").default(0).notNull(),\n\t\tcreatedAt: timestamp(\"created_at\").notNull().defaultNow(),\n\t},\n\t(table) => [\n\t\tindex(\"waitlist_referrals_referrer_idx\").on(table.referrerId),\n\t\tindex(\"waitlist_referrals_referred_idx\").on(table.referredId),\n\t],\n);\n\n// Queue jump tasks\nexport const waitlistTasks = pgTable(\n\t\"waitlist_tasks\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\twaitlistId: text(\"waitlist_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => waitlist.id, { onDelete: \"cascade\" }),\n\t\ttaskType: text(\"task_type\").notNull(), // 'github', 'demo', 'snapshot'\n\t\tcompleted: timestamp(\"completed\"),\n\t\tpointsEarned: integer(\"points_earned\").notNull(),\n\t\tmetadata: json(\"metadata\").$type<{\n\t\t\tgithubStarred?: boolean;\n\t\t\tdemoWatched?: boolean;\n\t\t\tsnapshotCreated?: boolean;\n\t\t}>(),\n\t\tcreatedAt: timestamp(\"created_at\").notNull().defaultNow(),\n\t},\n\t(table) => [\n\t\tindex(\"waitlist_tasks_waitlist_idx\").on(table.waitlistId),\n\t\tindex(\"waitlist_tasks_type_idx\").on(table.taskType),\n\t],\n);\n\n// Relations\nexport const waitlistRelations = relations(waitlist, ({ many }) => ({\n\treferrals: many(waitlistReferrals, { relationName: \"referrer\" }),\n\treferredBy: many(waitlistReferrals, { relationName: \"referred\" }),\n\ttasks: many(waitlistTasks),\n\tauditLogs: many(waitlistAuditLogs),\n}));\n\nexport const waitlistReferralsRelations = relations(waitlistReferrals, ({ one }) => ({\n\treferrer: one(waitlist, {\n\t\tfields: [waitlistReferrals.referrerId],\n\t\treferences: [waitlist.id],\n\t\trelationName: \"referrer\",\n\t}),\n\treferred: one(waitlist, {\n\t\tfields: [waitlistReferrals.referredId],\n\t\treferences: [waitlist.id],\n\t\trelationName: \"referred\",\n\t}),\n}));\n\nexport const waitlistTasksRelations = relations(waitlistTasks, ({ one }) => ({\n\twaitlistEntry: one(waitlist, {\n\t\tfields: [waitlistTasks.waitlistId],\n\t\treferences: [waitlist.id],\n\t}),\n}));\n\n// Audit logs for waitlist actions\nexport const waitlistAuditLogs = pgTable(\n\t\"waitlist_audit_logs\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\twaitlistId: text(\"waitlist_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => waitlist.id, { onDelete: \"cascade\" }),\n\t\taction: text(\"action\").notNull(), // 'joined', 'invited', 'accepted', 'rejected', 'hold', 'position_updated', 'referral_earned'\n\t\tuserId: text(\"user_id\"), // Better Auth user ID if applicable\n\t\tmetadata: json(\"metadata\").$type<{\n\t\t\toldPosition?: number;\n\t\t\tnewPosition?: number;\n\t\t\tpointsEarned?: number;\n\t\t\tipAddress?: string;\n\t\t\tuserAgent?: string;\n\t\t}>(),\n\t\tcreatedAt: timestamp(\"created_at\").notNull().defaultNow(),\n\t},\n\t(table) => [\n\t\tindex(\"waitlist_audit_logs_waitlist_idx\").on(table.waitlistId),\n\t\tindex(\"waitlist_audit_logs_action_idx\").on(table.action),\n\t\tindex(\"waitlist_audit_logs_created_at_idx\").on(table.createdAt),\n\t],\n);\n\nexport const waitlistAuditLogsRelations = relations(waitlistAuditLogs, ({ one }) => ({\n\twaitlistEntry: one(waitlist, {\n\t\tfields: [waitlistAuditLogs.waitlistId],\n\t\treferences: [waitlist.id],\n\t}),\n}));\n\n// Type exports\nexport type Waitlist = typeof waitlist.$inferSelect;\nexport type NewWaitlist = typeof waitlist.$inferInsert;\nexport type WaitlistReferral = typeof waitlistReferrals.$inferSelect;\nexport type NewWaitlistReferral = typeof waitlistReferrals.$inferInsert;\nexport type WaitlistTask = typeof waitlistTasks.$inferSelect;\nexport type NewWaitlistTask = typeof waitlistTasks.$inferInsert;\nexport type WaitlistAuditLog = typeof waitlistAuditLogs.$inferSelect;\nexport type NewWaitlistAuditLog = typeof waitlistAuditLogs.$inferInsert;\n","import { relations } from \"drizzle-orm\";\nimport {\n\tbigint,\n\tboolean,\n\tindex,\n\tinteger,\n\tjson,\n\tpgEnum,\n\tpgTable,\n\ttext,\n\ttimestamp,\n\tuniqueIndex,\n\tvarchar,\n} from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\n\n// Enums\nexport const purchaseTypeEnum = pgEnum(\"PurchaseType\", [\"SUBSCRIPTION\", \"ONE_TIME\"]);\n\n// Add new enums for Vreko\nexport const subscriptionStatusEnum = pgEnum(\"subscription_status\", [\n\t\"active\",\n\t\"canceled\",\n\t\"past_due\",\n\t\"trialing\",\n\t\"paused\",\n]);\n\nexport const planTypeEnum = pgEnum(\"plan_type\", [\"free\", \"pro\", \"team\", \"enterprise\"]);\n\n// Tables\nexport const user = pgTable(\"user\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\tname: text(\"name\").notNull(),\n\temail: text(\"email\").notNull().unique(),\n\temailVerified: boolean(\"emailVerified\").notNull().default(false),\n\timage: text(\"image\"),\n\tcreatedAt: timestamp(\"createdAt\").notNull().defaultNow(),\n\tupdatedAt: timestamp(\"updatedAt\").notNull().defaultNow(),\n\tusername: text(\"username\").unique(),\n\tdisplayUsername: text(\"displayUsername\").unique(), // Better Auth username plugin\n\trole: text(\"role\"),\n\tbanned: boolean(\"banned\"),\n\tbanReason: text(\"banReason\"),\n\tbanExpires: timestamp(\"banExpires\"),\n\tonboardingComplete: boolean(\"onboardingComplete\").default(false).notNull(),\n\tpaymentsCustomerId: text(\"paymentsCustomerId\"),\n\tlocale: text(\"locale\"),\n\ttotalSnapshots: integer(\"totalSnapshots\").default(0).notNull(),\n\ttotalRecoveries: integer(\"totalRecoveries\").default(0).notNull(),\n\tsubscriptionTier: planTypeEnum(\"subscription_tier\").default(\"free\"), // Add subscription tier field\n\ttierExpiresAt: timestamp(\"tier_expires_at\", { withTimezone: true }), // Timed admin tier grants\n\ttwoFactorEnabled: boolean(\"twoFactorEnabled\").default(false), // Required by Better Auth twoFactor plugin\n\tdeviceFingerprint: text(\"deviceFingerprint\"), // Added for fraud prevention\n\t// Abuse Defense Phase 1 fields\n\tnormalizedEmail: varchar(\"normalized_email\", { length: 255 }), // For email deduplication\n\tconcurrentDeviceCount: integer(\"concurrent_device_count\").default(0).notNull(), // Active devices\n\tmaxObservedDevices: integer(\"max_observed_devices\").default(0).notNull(), // High watermark\n\t// Pioneer Program\n\tpioneer: boolean(\"pioneer\").default(false),\n\tpioneerCohort: integer(\"pioneer_cohort\"),\n\tpioneerActivatedAt: timestamp(\"pioneer_activated_at\", { withTimezone: true }),\n});\n\nexport const session = pgTable(\n\t\"session\",\n\t{\n\t\tid: varchar(\"id\", { length: 255 })\n\t\t\t.$defaultFn(() => nanoid())\n\t\t\t.primaryKey(),\n\t\texpiresAt: timestamp(\"expiresAt\").notNull(),\n\t\tipAddress: text(\"ipAddress\"),\n\t\tuserAgent: text(\"userAgent\"),\n\t\tuserId: text(\"userId\")\n\t\t\t.notNull()\n\t\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\t\timpersonatedBy: text(\"impersonatedBy\"),\n\t\tactiveOrganizationId: text(\"activeOrganizationId\"),\n\t\ttoken: text(\"token\").notNull(),\n\t\tcreatedAt: timestamp(\"createdAt\").notNull(),\n\t\tupdatedAt: timestamp(\"updatedAt\").notNull(),\n\t},\n\n\t(table) => [uniqueIndex(\"session_token_idx\").on(table.token)],\n);\n\nexport const account = pgTable(\"account\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\taccountId: text(\"accountId\").notNull(),\n\tproviderId: text(\"providerId\").notNull(),\n\tuserId: text(\"userId\")\n\t\t.notNull()\n\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\taccessToken: text(\"accessToken\"),\n\trefreshToken: text(\"refreshToken\"),\n\tidToken: text(\"idToken\"),\n\texpiresAt: timestamp(\"expiresAt\"),\n\tpassword: text(\"password\"),\n\taccessTokenExpiresAt: timestamp(\"accessTokenExpiresAt\"),\n\trefreshTokenExpiresAt: timestamp(\"refreshTokenExpiresAt\"),\n\tscope: text(\"scope\"),\n\tcreatedAt: timestamp(\"createdAt\").notNull(),\n\tupdatedAt: timestamp(\"updatedAt\").notNull(),\n});\n\nexport const verification = pgTable(\"verification\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\tidentifier: text(\"identifier\").notNull(),\n\tvalue: text(\"value\").notNull(),\n\texpiresAt: timestamp(\"expiresAt\").notNull(),\n\tcreatedAt: timestamp(\"createdAt\"),\n\tupdatedAt: timestamp(\"updatedAt\"),\n});\n\nexport const passkey = pgTable(\"passkey\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\tname: text(\"name\"),\n\tpublicKey: text(\"publicKey\").notNull(),\n\tuserId: text(\"userId\")\n\t\t.notNull()\n\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\tcredentialID: text(\"credentialID\").notNull(),\n\tcounter: integer(\"counter\").notNull(),\n\tdeviceType: text(\"deviceType\").notNull(),\n\tbackedUp: boolean(\"backedUp\").notNull(),\n\ttransports: text(\"transports\"),\n\tcreatedAt: timestamp(\"createdAt\"),\n});\n\nexport const twoFactor = pgTable(\"twoFactor\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\tsecret: text(\"secret\").notNull(),\n\tbackupCodes: text(\"backupCodes\").notNull(),\n\tuserId: text(\"userId\")\n\t\t.notNull()\n\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n});\n\n// Better Auth rate limiting table\n// Note: lastRequest uses default string mode for Better Auth compatibility\nexport const rateLimit = pgTable(\"rateLimit\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\tkey: text(\"key\").notNull(),\n\tcount: integer(\"count\").notNull().default(0),\n\tlastRequest: bigint(\"lastRequest\", { mode: \"number\" }).notNull(),\n});\n\n// Better Auth JWKS table (for JWT plugin)\n// Stores JSON Web Key Set for signing JWTs\nexport const jwks = pgTable(\"jwks\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\tpublicKey: text(\"publicKey\").notNull(),\n\tprivateKey: text(\"privateKey\").notNull(),\n\tcreatedAt: timestamp(\"createdAt\").notNull().defaultNow(),\n});\n\nexport const organization = pgTable(\n\t\"organization\",\n\t{\n\t\tid: varchar(\"id\", { length: 255 })\n\t\t\t.$defaultFn(() => nanoid())\n\t\t\t.primaryKey(),\n\t\tname: text(\"name\").notNull(),\n\t\tslug: text(\"slug\"),\n\t\tlogo: text(\"logo\"),\n\t\tcreatedAt: timestamp(\"createdAt\").notNull(),\n\t\tmetadata: text(\"metadata\"),\n\t\tpaymentsCustomerId: text(\"paymentsCustomerId\"),\n\t},\n\n\t(table) => [uniqueIndex(\"organization_slug_idx\").on(table.slug)],\n);\n\nexport const member = pgTable(\n\t\"member\",\n\t{\n\t\tid: varchar(\"id\", { length: 255 })\n\t\t\t.$defaultFn(() => nanoid())\n\t\t\t.primaryKey(),\n\t\torganizationId: text(\"organizationId\")\n\t\t\t.notNull()\n\t\t\t.references(() => organization.id, { onDelete: \"cascade\" }),\n\t\tuserId: text(\"userId\")\n\t\t\t.notNull()\n\t\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\t\trole: text(\"role\").notNull(),\n\t\tcreatedAt: timestamp(\"createdAt\").notNull(),\n\t},\n\n\t(table) => [uniqueIndex(\"member_user_org_idx\").on(table.userId, table.organizationId)],\n);\n\nexport const invitation = pgTable(\"invitation\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\torganizationId: text(\"organizationId\")\n\t\t.notNull()\n\t\t.references(() => organization.id, { onDelete: \"cascade\" }),\n\temail: text(\"email\").notNull(),\n\trole: text(\"role\"),\n\tstatus: text(\"status\").notNull(),\n\texpiresAt: timestamp(\"expiresAt\").notNull(),\n\tinviterId: text(\"inviterId\")\n\t\t.notNull()\n\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n});\n\nexport const purchase = pgTable(\"purchase\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\torganizationId: text(\"organizationId\").references(() => organization.id, {\n\t\tonDelete: \"cascade\",\n\t}),\n\tuserId: text(\"userId\").references(() => user.id, {\n\t\tonDelete: \"cascade\",\n\t}),\n\ttype: purchaseTypeEnum(\"type\").notNull(),\n\tcustomerId: text(\"customerId\").notNull(),\n\tsubscriptionId: text(\"subscriptionId\").unique(),\n\tproductId: text(\"productId\").notNull(),\n\tstatus: text(\"status\"),\n\tcreatedAt: timestamp(\"createdAt\").defaultNow().notNull(),\n\tupdatedAt: timestamp(\"updatedAt\"),\n});\n\nexport const aiChat = pgTable(\"aiChat\", {\n\tid: varchar(\"id\", { length: 255 })\n\t\t.$defaultFn(() => nanoid())\n\t\t.primaryKey(),\n\torganizationId: text(\"organizationId\").references(() => organization.id, {\n\t\tonDelete: \"cascade\",\n\t}),\n\tuserId: text(\"userId\").references(() => user.id, { onDelete: \"cascade\" }),\n\ttitle: text(\"title\"),\n\tmessages: json(\"messages\").$type<Array<object>>(),\n\tcreatedAt: timestamp(\"createdAt\").defaultNow().notNull(),\n\tupdatedAt: timestamp(\"updatedAt\"),\n});\n\n// Add Vreko specific tables\n// API Keys table - This is the main integration point\nexport const apiKeys = pgTable(\n\t\"api_keys\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tuserId: text(\"user_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\t\torganizationId: text(\"organization_id\").references(() => organization.id, {\n\t\t\tonDelete: \"cascade\",\n\t\t}),\n\t\tname: text(\"name\").notNull().default(\"Default Key\"),\n\t\tkey: text(\"key\").unique().notNull(), // Hashed version\n\t\tstart: text(\"start\").notNull(), // First few chars for lookup (Better Auth required)\n\t\tprefix: text(\"prefix\").notNull().default(\"sk_live_\"), // Key prefix (Better Auth required)\n\t\tkeyPreview: text(\"key_preview\").notNull(), // First 8 chars for display\n\t\tpermissions: json(\"permissions\")\n\t\t\t.$type<{\n\t\t\t\tmaxSnapshots?: number;\n\t\t\t\tcloudBackup?: boolean;\n\t\t\t\tadvancedDetection?: boolean;\n\t\t\t\tcustomRules?: boolean;\n\t\t\t\tteamSharing?: boolean;\n\t\t\t}>()\n\t\t\t.default({}),\n\t\t// Better Auth required fields\n\t\tenabled: boolean(\"enabled\").default(true),\n\t\trateLimitEnabled: boolean(\"rate_limit_enabled\").default(false),\n\t\trateLimitTimeWindow: integer(\"rate_limit_time_window\"), // Time window in ms\n\t\trateLimitMax: integer(\"rate_limit_max\"), // Max requests per window\n\t\tremaining: integer(\"remaining\"), // Remaining requests\n\t\trefillInterval: integer(\"refill_interval\"), // Rate limit refill interval in ms\n\t\trefillAmount: integer(\"refill_amount\"), // Rate limit refill amount\n\t\tlastRefillAt: timestamp(\"last_refill_at\"),\n\t\tmetadata: json(\"metadata\").$type<Record<string, unknown>>(), // Better Auth metadata\n\t\t// Vreko specific fields\n\t\tlastUsedAt: timestamp(\"last_used_at\"),\n\t\texpiresAt: timestamp(\"expires_at\"),\n\t\trevokedAt: timestamp(\"revoked_at\"),\n\t\tcreatedAt: timestamp(\"created_at\").defaultNow().notNull(),\n\t\tupdatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n\t},\n\n\t(table) => {\n\t\treturn {\n\t\t\tuserIdx: index(\"api_keys_user_idx\").on(table.userId),\n\t\t\torgIdx: index(\"api_keys_org_idx\").on(table.organizationId),\n\t\t\tkeyIdx: uniqueIndex(\"api_keys_key_idx\").on(table.key),\n\t\t\tstartIdx: index(\"api_keys_start_idx\").on(table.start), // Index for quick lookup\n\t\t};\n\t},\n);\n\n// Client Tokens table - for VS Code extension and other clients\nexport const clientTokens = pgTable(\n\t\"client_tokens\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tuserId: text(\"user_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\t\tname: text(\"name\").notNull(),\n\t\ttoken: text(\"token\").unique().notNull(), // Hashed version\n\t\ttokenPreview: text(\"token_preview\").notNull(), // First 8 chars for display\n\t\tpermissions: json(\"permissions\")\n\t\t\t.$type<{\n\t\t\t\tmaxSnapshots?: number;\n\t\t\t\tcloudBackup?: boolean;\n\t\t\t\tadvancedDetection?: boolean;\n\t\t\t\tcustomRules?: boolean;\n\t\t\t\tteamSharing?: boolean;\n\t\t\t}>()\n\t\t\t.default({}),\n\t\tlastUsedAt: timestamp(\"last_used_at\"),\n\t\texpiresAt: timestamp(\"expires_at\"),\n\t\trevokedAt: timestamp(\"revoked_at\"),\n\t\tcreatedAt: timestamp(\"created_at\").defaultNow().notNull(),\n\t},\n\n\t(table) => {\n\t\treturn {\n\t\t\tuserIdx: index(\"client_tokens_user_idx\").on(table.userId),\n\t\t\ttokenIdx: uniqueIndex(\"client_tokens_token_idx\").on(table.token),\n\t\t};\n\t},\n);\n\n// Usage tracking from the dev tools\nexport const apiUsage = pgTable(\n\t\"api_usage\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tapiKeyId: text(\"api_key_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => apiKeys.id, { onDelete: \"cascade\" }),\n\t\tendpoint: text(\"endpoint\").notNull(), // 'snapshot', 'recovery', 'status'\n\t\tmethod: text(\"method\").notNull(),\n\t\tstatusCode: integer(\"status_code\"),\n\t\tmetadata: json(\"metadata\").$type<{\n\t\t\tfilesProtected?: number;\n\t\t\tsnapshotId?: string;\n\t\t\taiTool?: string;\n\t\t}>(),\n\t\ttimestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n\t},\n\n\t(table) => {\n\t\treturn {\n\t\t\tkeyIdx: index(\"api_usage_key_idx\").on(table.apiKeyId),\n\t\t\ttimestampIdx: index(\"api_usage_timestamp_idx\").on(table.timestamp),\n\t\t};\n\t},\n);\n\n// VS Code Extension Session Tracking - defined in extension-auth.ts\n// (Removed duplicate - use extension-auth.ts version instead)\n\n// Subscription management\nexport const subscriptions = pgTable(\n\t\"subscriptions\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tuserId: text(\"user_id\").references(() => user.id, {\n\t\t\tonDelete: \"cascade\",\n\t\t}),\n\t\torganizationId: text(\"organization_id\").references(() => organization.id, {\n\t\t\tonDelete: \"cascade\",\n\t\t}),\n\t\tstripeSubscriptionId: text(\"stripe_subscription_id\").unique(),\n\t\tstripeCustomerId: text(\"stripe_customer_id\"),\n\t\tplan: planTypeEnum(\"plan\").notNull().default(\"free\"),\n\t\tstatus: subscriptionStatusEnum(\"status\").notNull().default(\"active\"),\n\t\tcurrentPeriodStart: timestamp(\"current_period_start\"),\n\t\tcurrentPeriodEnd: timestamp(\"current_period_end\"),\n\t\tcancelAtPeriodEnd: boolean(\"cancel_at_period_end\").default(false),\n\t\ttrialEnd: timestamp(\"trial_end\"),\n\t\tseats: integer(\"seats\").default(1),\n\t\tmetadata: json(\"metadata\"),\n\t\tcreatedAt: timestamp(\"created_at\").defaultNow().notNull(),\n\t\tupdatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n\t},\n\n\t(table) => {\n\t\treturn {\n\t\t\tuserIdx: uniqueIndex(\"subscriptions_user_idx\").on(table.userId),\n\t\t\torgIdx: uniqueIndex(\"subscriptions_org_idx\").on(table.organizationId),\n\t\t\tstripeIdx: uniqueIndex(\"subscriptions_stripe_idx\").on(table.stripeSubscriptionId),\n\t\t};\n\t},\n);\n\n// Usage limits based on plan\nexport const usageLimits = pgTable(\n\t\"usage_limits\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tsubscriptionId: text(\"subscription_id\").references(() => subscriptions.id, {\n\t\t\tonDelete: \"cascade\",\n\t\t}),\n\t\tmonth: timestamp(\"month\").notNull(),\n\t\tsnapshotsUsed: integer(\"snapshots_used\").default(0),\n\t\tsnapshotsLimit: integer(\"snapshots_limit\"), // null = unlimited\n\t\tcloudStorageUsedMb: integer(\"cloud_storage_used_mb\").default(0),\n\t\tcloudStorageLimitMb: integer(\"cloud_storage_limit_mb\"),\n\t\tapiCallsUsed: integer(\"api_calls_used\").default(0),\n\t\tapiCallsLimit: integer(\"api_calls_limit\"),\n\n\t\t// Credit system fields (pricing_spec_v3.md)\n\t\tcreditsUsed: integer(\"credits_used\").default(0), // Month-to-date credit consumption\n\t\tcreditsLimit: integer(\"credits_limit\"), // Monthly credit allowance (null = unlimited)\n\t\tcreditsByJobType: json(\"credits_by_job_type\").default({}), // Breakdown by job type\n\t},\n\n\t(table) => {\n\t\treturn {\n\t\t\tsubscriptionMonthUnique: uniqueIndex(\"usage_limits_subscription_month_unique\").on(\n\t\t\t\ttable.subscriptionId,\n\t\t\t\ttable.month,\n\t\t\t),\n\t\t};\n\t},\n);\n\n// Relations\nexport const userRelations = relations(user, ({ many }) => ({\n\tsessions: many(session),\n\taccounts: many(account),\n\tpasskeys: many(passkey),\n\tinvitations: many(invitation),\n\tpurchases: many(purchase),\n\tmemberships: many(member),\n\taiChats: many(aiChat),\n\ttwoFactors: many(twoFactor),\n\tapiKeys: many(apiKeys), // Add relation for API keys\n\tsubscriptions: many(subscriptions), // Add relation for subscriptions\n}));\n\nexport const organizationRelations = relations(organization, ({ many }) => ({\n\tmembers: many(member),\n\tinvitations: many(invitation),\n\tpurchases: many(purchase),\n\taiChats: many(aiChat),\n\tapiKeys: many(apiKeys), // Add relation for API keys\n\tsubscriptions: many(subscriptions), // Add relation for subscriptions\n}));\n\nexport const sessionRelations = relations(session, ({ one }) => ({\n\tuser: one(user, {\n\t\tfields: [session.userId],\n\t\treferences: [user.id],\n\t}),\n}));\n\nexport const accountRelations = relations(account, ({ one }) => ({\n\tuser: one(user, {\n\t\tfields: [account.userId],\n\t\treferences: [user.id],\n\t}),\n}));\n\nexport const passkeyRelations = relations(passkey, ({ one }) => ({\n\tuser: one(user, {\n\t\tfields: [passkey.userId],\n\t\treferences: [user.id],\n\t}),\n}));\n\nexport const invitationRelations = relations(invitation, ({ one }) => ({\n\torganization: one(organization, {\n\t\tfields: [invitation.organizationId],\n\t\treferences: [organization.id],\n\t}),\n\tinviter: one(user, {\n\t\tfields: [invitation.inviterId],\n\t\treferences: [user.id],\n\t}),\n}));\n\nexport const purchaseRelations = relations(purchase, ({ one }) => ({\n\torganization: one(organization, {\n\t\tfields: [purchase.organizationId],\n\t\treferences: [organization.id],\n\t}),\n\tuser: one(user, {\n\t\tfields: [purchase.userId],\n\t\treferences: [user.id],\n\t}),\n}));\n\nexport const aiChatRelations = relations(aiChat, ({ one }) => ({\n\torganization: one(organization, {\n\t\tfields: [aiChat.organizationId],\n\t\treferences: [organization.id],\n\t}),\n\tuser: one(user, {\n\t\tfields: [aiChat.userId],\n\t\treferences: [user.id],\n\t}),\n}));\n\nexport const twoFactorRelations = relations(twoFactor, ({ one }) => ({\n\tuser: one(user, {\n\t\tfields: [twoFactor.userId],\n\t\treferences: [user.id],\n\t}),\n}));\n\n// Add relations for new tables\nexport const apiKeysRelations = relations(apiKeys, ({ one, many }) => ({\n\tuser: one(user, {\n\t\tfields: [apiKeys.userId],\n\t\treferences: [user.id],\n\t}),\n\torganization: one(organization, {\n\t\tfields: [apiKeys.organizationId],\n\t\treferences: [organization.id],\n\t}),\n\tusage: many(apiUsage),\n\t// extensionSessions relation is defined in extension-auth.ts\n}));\n\nexport const clientTokensRelations = relations(clientTokens, ({ one }) => ({\n\tuser: one(user, {\n\t\tfields: [clientTokens.userId],\n\t\treferences: [user.id],\n\t}),\n}));\n\nexport const apiUsageRelations = relations(apiUsage, ({ one }) => ({\n\tapiKey: one(apiKeys, {\n\t\tfields: [apiUsage.apiKeyId],\n\t\treferences: [apiKeys.id],\n\t}),\n}));\n\n// extensionSessionsRelations - defined in extension-auth.ts\n// (Removed duplicate)\n\nexport const subscriptionsRelations = relations(subscriptions, ({ one, many }) => ({\n\tuser: one(user, {\n\t\tfields: [subscriptions.userId],\n\t\treferences: [user.id],\n\t}),\n\torganization: one(organization, {\n\t\tfields: [subscriptions.organizationId],\n\t\treferences: [organization.id],\n\t}),\n\tlimits: many(usageLimits),\n}));\n\nexport const usageLimitsRelations = relations(usageLimits, ({ one }) => ({\n\tsubscription: one(subscriptions, {\n\t\tfields: [usageLimits.subscriptionId],\n\t\treferences: [subscriptions.id],\n\t}),\n}));\n\n// Newsletter Subscribers table\nexport const newsletterSubscribers = pgTable(\n\t\"newsletter_subscribers\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\temail: text(\"email\").notNull().unique(),\n\t\tsource: text(\"source\").default(\"website\"), // website, extension, api, etc.\n\t\thubspotContactId: text(\"hubspot_contact_id\"), // HubSpot contact ID for sync\n\t\thubspotSyncedAt: timestamp(\"hubspot_synced_at\"), // Last sync to HubSpot\n\t\tsubscribedAt: timestamp(\"subscribed_at\").notNull().defaultNow(),\n\t\tunsubscribedAt: timestamp(\"unsubscribed_at\"),\n\t\tmetadata: json(\"metadata\").$type<{\n\t\t\treferrer?: string;\n\t\t\tutmSource?: string;\n\t\t\tutmMedium?: string;\n\t\t\tutmCampaign?: string;\n\t\t\tuserAgent?: string;\n\t\t}>(),\n\t\tcreatedAt: timestamp(\"created_at\").notNull().defaultNow(),\n\t\tupdatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n\t},\n\n\t(table) => [uniqueIndex(\"newsletter_email_idx\").on(table.email)],\n);\n\nexport const newsletterSubscribersRelations = relations(newsletterSubscribers, () => ({}));\n\nexport * from \"./vreko/credit-topups\";\n// Credit system schema exports (pricing_spec_v3.md)\nexport * from \"./vreko/credits-ledger\";\nexport { deviceTrials } from \"./vreko/device-trials\";\n// Vreko schema imports\nexport * from \"./vreko/snapshots\";\nexport { type NewTrial, type Trial, trialStatusEnum, trials, trialsRelations } from \"./vreko/trials\";\nexport * from \"./vreko/waitlist\";\n\nimport { creditTopups } from \"./vreko/credit-topups\";\nimport { creditsLedger } from \"./vreko/credits-ledger\";\nimport { waitlist, waitlistReferrals, waitlistTasks } from \"./vreko/waitlist\";\n\n// Schema namespace export - all tables as a single object\n// Note: extensionSessions is exported from extension-auth.ts via index.ts\nexport const schema = {\n\tuser,\n\tsession,\n\taccount,\n\tverification,\n\tpasskey,\n\ttwoFactor,\n\trateLimit,\n\tjwks,\n\torganization,\n\tmember,\n\tinvitation,\n\tpurchase,\n\taiChat,\n\tapiKeys,\n\tclientTokens, // Add client tokens to schema\n\tapiUsage,\n\tsubscriptions,\n\tusageLimits,\n\tnewsletterSubscribers,\n\twaitlist,\n\twaitlistReferrals,\n\twaitlistTasks,\n\t// Credit system (pricing_spec_v3.md)\n\tcreditsLedger,\n\tcreditTopups,\n\t// Note: emailDeliveries and emailPreferences are defined below this export\n};\n\n// Database type for Supabase client integration\nexport type Database = {\n\tpublic: {\n\t\tTables: {\n\t\t\tuser: {\n\t\t\t\tRow: typeof user.$inferSelect;\n\t\t\t\tInsert: typeof user.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof user.$inferInsert>;\n\t\t\t};\n\t\t\tsession: {\n\t\t\t\tRow: typeof session.$inferSelect;\n\t\t\t\tInsert: typeof session.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof session.$inferInsert>;\n\t\t\t};\n\t\t\taccount: {\n\t\t\t\tRow: typeof account.$inferSelect;\n\t\t\t\tInsert: typeof account.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof account.$inferInsert>;\n\t\t\t};\n\t\t\tverification: {\n\t\t\t\tRow: typeof verification.$inferSelect;\n\t\t\t\tInsert: typeof verification.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof verification.$inferInsert>;\n\t\t\t};\n\t\t\tpasskey: {\n\t\t\t\tRow: typeof passkey.$inferSelect;\n\t\t\t\tInsert: typeof passkey.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof passkey.$inferInsert>;\n\t\t\t};\n\t\t\ttwoFactor: {\n\t\t\t\tRow: typeof twoFactor.$inferSelect;\n\t\t\t\tInsert: typeof twoFactor.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof twoFactor.$inferInsert>;\n\t\t\t};\n\t\t\torganization: {\n\t\t\t\tRow: typeof organization.$inferSelect;\n\t\t\t\tInsert: typeof organization.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof organization.$inferInsert>;\n\t\t\t};\n\t\t\tmember: {\n\t\t\t\tRow: typeof member.$inferSelect;\n\t\t\t\tInsert: typeof member.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof member.$inferInsert>;\n\t\t\t};\n\t\t\tinvitation: {\n\t\t\t\tRow: typeof invitation.$inferSelect;\n\t\t\t\tInsert: typeof invitation.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof invitation.$inferInsert>;\n\t\t\t};\n\t\t\tpurchase: {\n\t\t\t\tRow: typeof purchase.$inferSelect;\n\t\t\t\tInsert: typeof purchase.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof purchase.$inferInsert>;\n\t\t\t};\n\t\t\taiChat: {\n\t\t\t\tRow: typeof aiChat.$inferSelect;\n\t\t\t\tInsert: typeof aiChat.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof aiChat.$inferInsert>;\n\t\t\t};\n\t\t\tapi_keys: {\n\t\t\t\tRow: typeof apiKeys.$inferSelect;\n\t\t\t\tInsert: typeof apiKeys.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof apiKeys.$inferInsert>;\n\t\t\t};\n\t\t\tapi_usage: {\n\t\t\t\tRow: typeof apiUsage.$inferSelect;\n\t\t\t\tInsert: typeof apiUsage.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof apiUsage.$inferInsert>;\n\t\t\t};\n\n\t\t\tsubscriptions: {\n\t\t\t\tRow: typeof subscriptions.$inferSelect;\n\t\t\t\tInsert: typeof subscriptions.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof subscriptions.$inferInsert>;\n\t\t\t};\n\t\t\tusage_limits: {\n\t\t\t\tRow: typeof usageLimits.$inferSelect;\n\t\t\t\tInsert: typeof usageLimits.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof usageLimits.$inferInsert>;\n\t\t\t};\n\t\t\tnewsletter_subscribers: {\n\t\t\t\tRow: typeof newsletterSubscribers.$inferSelect;\n\t\t\t\tInsert: typeof newsletterSubscribers.$inferInsert;\n\t\t\t\tUpdate: Partial<typeof newsletterSubscribers.$inferInsert>;\n\t\t\t};\n\t\t};\n\t};\n};\n\n// Type exports\nexport type ApiKey = typeof apiKeys.$inferSelect;\nexport type NewApiKey = typeof apiKeys.$inferInsert;\nexport type ClientToken = typeof clientTokens.$inferSelect;\nexport type NewClientToken = typeof clientTokens.$inferInsert;\nexport type Subscription = typeof subscriptions.$inferSelect;\nexport type NewSubscription = typeof subscriptions.$inferInsert;\nexport type NewsletterSubscriber = typeof newsletterSubscribers.$inferSelect;\nexport type NewNewsletterSubscriber = typeof newsletterSubscribers.$inferInsert;\n\n// Agent Suggestions table\nexport const agentSuggestions = pgTable(\n\t\"agent_suggestions\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tuserId: text(\"user_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\t\tapiKeyId: text(\"api_key_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => apiKeys.id, { onDelete: \"cascade\" }),\n\t\tsessionId: text(\"session_id\"),\n\t\trequestId: text(\"request_id\").notNull(),\n\t\tsuggestionId: text(\"suggestion_id\").notNull(),\n\t\tsuggestionText: text(\"suggestion_text\").notNull(),\n\t\tsuggestionType: text(\"suggestion_type\"),\n\t\tfilePath: text(\"file_path\"),\n\t\tlineStart: integer(\"line_start\"),\n\t\tlineEnd: integer(\"line_end\"),\n\t\tcharacterStart: integer(\"character_start\"),\n\t\tcharacterEnd: integer(\"character_end\"),\n\t\taccepted: boolean(\"accepted\").default(false),\n\t\tdismissed: boolean(\"dismissed\").default(false),\n\t\ttimestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n\t\tcreatedAt: timestamp(\"created_at\").defaultNow().notNull(),\n\t},\n\t(table) => {\n\t\treturn {\n\t\t\tuserCreatedAtIndex: index(\"agent_suggestions_user_created_at_idx\").on(table.userId, table.createdAt),\n\t\t\tapiKeyCreatedAtIndex: index(\"agent_suggestions_api_key_created_at_idx\").on(table.apiKeyId, table.createdAt),\n\t\t\t// Check constraint is not directly supported in drizzle-orm/pg-core pgTable builder yet in this version or syntax might differ,\n\t\t\t// but we can skip it for now or add it via raw SQL if needed.\n\t\t\t// The original file had a check constraint.\n\t\t};\n\t},\n);\n\nexport type AgentSuggestion = typeof agentSuggestions.$inferSelect;\nexport type NewAgentSuggestion = typeof agentSuggestions.$inferInsert;\n\n// Email System enums\nexport const emailCategoryEnum = pgEnum(\"email_category\", [\n\t\"authentication\",\n\t\"onboarding\",\n\t\"product\",\n\t\"billing\",\n\t\"marketing\",\n]);\n\nexport const emailStatusEnum = pgEnum(\"email_status\", [\n\t\"pending\",\n\t\"sent\",\n\t\"delivered\",\n\t\"opened\",\n\t\"clicked\",\n\t\"bounced\",\n\t\"failed\",\n]);\n\n// Email deliveries table\nexport const emailDeliveries = pgTable(\n\t\"email_deliveries\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tuserId: text(\"user_id\")\n\t\t\t.notNull()\n\t\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\t\ttemplateId: text(\"template_id\").notNull(),\n\t\tcategory: emailCategoryEnum(\"category\").notNull(),\n\t\tprovider: text(\"provider\").notNull(), // 'resend' | 'hubspot'\n\n\t\t// Delivery details\n\t\trecipientEmail: text(\"recipient_email\").notNull(),\n\t\tsubject: text(\"subject\").notNull(),\n\t\tstatus: emailStatusEnum(\"status\").notNull().default(\"pending\"),\n\n\t\t// Provider-specific IDs\n\t\tresendEmailId: text(\"resend_email_id\"),\n\t\thubspotEngagementId: text(\"hubspot_engagement_id\"),\n\n\t\t// Timestamps\n\t\tsentAt: timestamp(\"sent_at\"),\n\t\tdeliveredAt: timestamp(\"delivered_at\"),\n\t\topenedAt: timestamp(\"opened_at\"),\n\t\tclickedAt: timestamp(\"clicked_at\"),\n\t\tfailedAt: timestamp(\"failed_at\"),\n\n\t\t// Error tracking\n\t\terrorMessage: text(\"error_message\"),\n\t\tretryCount: integer(\"retry_count\").notNull().default(0),\n\n\t\t// Context\n\t\tmetadata: json(\"metadata\").$type<Record<string, unknown>>(),\n\n\t\tcreatedAt: timestamp(\"created_at\").notNull().defaultNow(),\n\t\tupdatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n\t},\n\t(table) => [\n\t\tindex(\"email_deliveries_user_id_idx\").on(table.userId),\n\t\tindex(\"email_deliveries_status_idx\").on(table.status),\n\t\tindex(\"email_deliveries_sent_at_idx\").on(table.sentAt),\n\t\tindex(\"email_deliveries_category_idx\").on(table.category),\n\t\tindex(\"email_deliveries_template_id_idx\").on(table.templateId),\n\t],\n);\n\n// Email preferences table\nexport const emailPreferences = pgTable(\n\t\"email_preferences\",\n\t{\n\t\tid: text(\"id\")\n\t\t\t.primaryKey()\n\t\t\t.$defaultFn(() => nanoid()),\n\t\tuserId: text(\"user_id\")\n\t\t\t.notNull()\n\t\t\t.unique()\n\t\t\t.references(() => user.id, { onDelete: \"cascade\" }),\n\n\t\t// Global opt-out\n\t\tunsubscribedAll: boolean(\"unsubscribed_all\").notNull().default(false),\n\t\tunsubscribedAt: timestamp(\"unsubscribed_at\"),\n\t\tunsubscribeSource: text(\"unsubscribe_source\"), // 'resend' | 'hubspot' | 'app'\n\n\t\t// Category-specific preferences\n\t\tenabledCategories: json(\"enabled_categories\").$type<string[]>().default([\"authentication\", \"billing\"]),\n\n\t\t// Digest preferences\n\t\tdigestFrequency: text(\"digest_frequency\").notNull().default(\"weekly\"), // 'daily' | 'weekly' | 'never'\n\t\tdigestDay: integer(\"digest_day\"), // 0-6 for day of week\n\t\tdigestTime: text(\"digest_time\").notNull().default(\"09:00\"), // HH:MM format\n\n\t\t// HubSpot sync\n\t\thubspotContactId: text(\"hubspot_contact_id\"),\n\t\tlastSyncedToHubspot: timestamp(\"last_synced_to_hubspot\"),\n\n\t\tcreatedAt: timestamp(\"created_at\").notNull().defaultNow(),\n\t\tupdatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n\t},\n\t(table) => [\n\t\tindex(\"email_preferences_user_id_idx\").on(table.userId),\n\t\tindex(\"email_preferences_hubspot_contact_id_idx\").on(table.hubspotContactId),\n\t],\n);\n\nexport type EmailDelivery = typeof emailDeliveries.$inferSelect;\nexport type NewEmailDelivery = typeof emailDeliveries.$inferInsert;\nexport type EmailPreferences = typeof emailPreferences.$inferSelect;\nexport type NewEmailPreferences = typeof emailPreferences.$inferInsert;\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, integer, json, pgEnum, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { organization, usageLimits, user } from \"../postgres.js\";\n// Enums - matching those in postgres.ts\nexport const planTypeEnum = pgEnum(\"plan_type\", [\"free\", \"pro\", \"team\", \"enterprise\"]);\n/**\n * Subscription status enum with full lifecycle states.\n *\n * State transitions:\n * - free → trialing (trial started)\n * - trialing → active (trial converted)\n * - trialing → canceled (trial ended without payment)\n * - active → past_due (payment failed)\n * - past_due → active (payment succeeded)\n * - past_due → suspended (grace period expired)\n * - suspended → active (payment method updated)\n * - suspended → churned (period ends without reactivation)\n * - active → canceled (user canceled, end of term)\n * - canceled → churned (subscription period ended)\n *\n * @see implementation-plan.md Part 2.1 Account State Machine\n */\nexport const subscriptionStatusEnum = pgEnum(\"subscription_status\", [\n \"active\",\n \"canceled\",\n \"past_due\",\n \"trialing\",\n \"paused\",\n \"suspended\", // Grace period expired, cloud features paused\n \"churned\", // Subscription fully ended, no renewal\n]);\n// Subscriptions table - matching the definition in postgres.ts\nexport const subscriptions = pgTable(\"subscriptions\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\").references(() => user.id, {\n onDelete: \"cascade\",\n }),\n organizationId: text(\"organization_id\").references(() => organization.id, {\n onDelete: \"cascade\",\n }),\n stripeSubscriptionId: text(\"stripe_subscription_id\").unique(),\n stripeCustomerId: text(\"stripe_customer_id\"),\n plan: planTypeEnum(\"plan\").notNull().default(\"free\"),\n status: subscriptionStatusEnum(\"status\").notNull().default(\"active\"),\n currentPeriodStart: timestamp(\"current_period_start\"),\n currentPeriodEnd: timestamp(\"current_period_end\"),\n cancelAtPeriodEnd: boolean(\"cancel_at_period_end\").default(false),\n trialEnd: timestamp(\"trial_end\"),\n seats: integer(\"seats\").default(1),\n metadata: json(\"metadata\"),\n // Credit system fields (pricing_spec_v3.md)\n monthlyCreditsAllowance: integer(\"monthly_credits_allowance\").default(25), // 25 for free, 200 for pro/team\n currentCreditBalance: integer(\"current_credit_balance\").default(0), // Included credits remaining this period\n topupCreditBalance: integer(\"topup_credit_balance\").default(0), // Purchased credits (never expire)\n creditOverage: integer(\"credit_overage\").default(0), // Negative balance tracking (soft cap at -100)\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\nexport const subscriptionsRelations = relations(subscriptions, ({ one, many }) => ({\n user: one(user, {\n fields: [subscriptions.userId],\n references: [user.id],\n }),\n organization: one(organization, {\n fields: [subscriptions.organizationId],\n references: [organization.id],\n }),\n limits: many(usageLimits),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Super Admin Schema\n *\n * Tables for Super Admin panel functionality:\n * - Activation codes for trials and enterprise onboarding\n * - Admin audit logging for compliance\n * - Super admin role management\n */\nimport { relations, sql } from \"drizzle-orm\";\nimport { index, integer, jsonb, pgEnum, pgTable, text, timestamp, unique, uuid, varchar } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\nimport { subscriptions } from \"./subscriptions.js\";\n// =============================================================================\n// Enums\n// =============================================================================\n/**\n * Activation code types\n */\nexport const activationCodeTypeEnum = pgEnum(\"activation_code_type\", [\n \"TRIAL\",\n \"ENTERPRISE\",\n \"PIONEER\",\n \"LIFETIME\",\n \"PROMOTIONAL\",\n]);\n/**\n * Admin action types for audit logging\n */\nexport const adminActionEnum = pgEnum(\"admin_action\", [\n \"CODE_CREATED\",\n \"CODE_REVOKED\",\n \"CODE_BATCH_CREATED\",\n \"SUBSCRIPTION_OVERRIDE\",\n \"USER_IMPERSONATED\",\n \"ORG_CREATED\",\n \"TIER_CHANGED\",\n \"USER_SUSPENDED\",\n \"USER_UNSUSPENDED\",\n \"TRIAL_EXTENDED\",\n \"ADMIN_ADDED\",\n \"ADMIN_REMOVED\",\n]);\n/**\n * Admin target types for audit logging\n */\nexport const adminTargetTypeEnum = pgEnum(\"admin_target_type\", [\n \"USER\",\n \"ORGANIZATION\",\n \"SUBSCRIPTION\",\n \"CODE\",\n \"ADMIN\",\n]);\n/**\n * Super admin role levels\n */\nexport const superAdminRoleEnum = pgEnum(\"super_admin_role\", [\"OWNER\", \"ADMIN\", \"SUPPORT\", \"READONLY\"]);\n// =============================================================================\n// Tables\n// =============================================================================\n/**\n * Activation Codes - for trials and enterprise onboarding\n *\n * Code format: SB-{TYPE}-{RANDOM}\n * Examples: SB-TRIAL-A7X9K2, SB-ENT-M3P8Q1, SB-VIP-Z5N2R4\n */\nexport const activationCodes = pgTable(\"activation_codes\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Code identifier (SB-TYPE-RANDOM format)\n code: varchar(\"code\", { length: 32 }).unique().notNull(),\n // Code configuration\n type: activationCodeTypeEnum(\"type\").notNull(),\n tier: varchar(\"tier\", { length: 50 }), // 'pro', 'enterprise', etc.\n durationDays: integer(\"duration_days\"), // null = unlimited\n maxRedemptions: integer(\"max_redemptions\").default(1).notNull(),\n currentRedemptions: integer(\"current_redemptions\").default(0).notNull(),\n // Campaign tracking\n campaign: varchar(\"campaign\", { length: 100 }), // 'yc_demo', 'producthunt'\n notes: text(\"notes\"),\n // Validity period\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n validFrom: timestamp(\"valid_from\", { withTimezone: true }).defaultNow().notNull(),\n // Creation metadata\n createdById: text(\"created_by_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"set null\" }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n // Revocation (soft delete)\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n revokedById: text(\"revoked_by_id\").references(() => user.id, { onDelete: \"set null\" }),\n revokedReason: text(\"revoked_reason\"),\n}, (table) => [\n // Unique constraint on code\n index(\"activation_codes_code_idx\").on(table.code),\n // Query by creator\n index(\"activation_codes_created_by_idx\").on(table.createdById, table.createdAt),\n // Active codes by type (for dashboard stats)\n index(\"activation_codes_active_type_idx\")\n .on(table.type)\n .where(sql `revoked_at IS NULL`),\n // Campaign tracking\n index(\"activation_codes_campaign_idx\").on(table.campaign),\n]);\n/**\n * Activation Code Redemptions - audit trail for code usage\n */\nexport const activationCodeRedemptions = pgTable(\"activation_code_redemptions\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Code reference\n codeId: uuid(\"code_id\")\n .notNull()\n .references(() => activationCodes.id, { onDelete: \"cascade\" }),\n // User who redeemed\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // What was granted\n tierGranted: varchar(\"tier_granted\", { length: 50 }).notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }), // null = permanent\n // Redemption metadata\n redeemedAt: timestamp(\"redeemed_at\", { withTimezone: true }).defaultNow().notNull(),\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n userAgent: text(\"user_agent\"),\n // Linked subscription (if created)\n subscriptionId: text(\"subscription_id\").references(() => subscriptions.id, {\n onDelete: \"set null\",\n }),\n}, (table) => [\n // Prevent double redemption by same user\n unique(\"activation_code_redemptions_unique\").on(table.codeId, table.userId),\n // Query redemptions by user\n index(\"activation_code_redemptions_user_idx\").on(table.userId, table.redeemedAt),\n // Query redemptions by code\n index(\"activation_code_redemptions_code_idx\").on(table.codeId),\n]);\n/**\n * Admin Audit Log - track all super admin actions\n */\nexport const adminAuditLog = pgTable(\"admin_audit_log\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Who performed the action\n adminId: text(\"admin_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"set null\" }),\n // What action was performed\n action: adminActionEnum(\"action\").notNull(),\n // Target of the action\n targetType: adminTargetTypeEnum(\"target_type\").notNull(),\n targetId: text(\"target_id\"), // UUID or text ID depending on target type\n // Action-specific details\n metadata: jsonb(\"metadata\").$type(),\n // Request context\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n userAgent: text(\"user_agent\"),\n // Timestamp\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => [\n // Query by admin\n index(\"admin_audit_log_admin_idx\").on(table.adminId, table.createdAt),\n // Query by target\n index(\"admin_audit_log_target_idx\").on(table.targetType, table.targetId),\n // Query by action type\n index(\"admin_audit_log_action_idx\").on(table.action, table.createdAt),\n // Time-based queries\n index(\"admin_audit_log_created_at_idx\").on(table.createdAt),\n]);\n/**\n * Super Admins - who can access the admin panel\n */\nexport const superAdmins = pgTable(\"super_admins\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // User reference (one-to-one)\n userId: text(\"user_id\")\n .unique()\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Role level\n role: superAdminRoleEnum(\"role\").notNull().default(\"READONLY\"),\n // Granular permissions (JSON object)\n // e.g., { \"codes.create\": true, \"users.suspend\": false }\n permissions: jsonb(\"permissions\").$type(),\n // Who added this admin\n addedById: text(\"added_by_id\").references(() => user.id, { onDelete: \"set null\" }),\n // Timestamps\n addedAt: timestamp(\"added_at\", { withTimezone: true }).defaultNow().notNull(),\n lastAccessAt: timestamp(\"last_access_at\", { withTimezone: true }),\n}, (table) => [\n // Fast lookup by user\n index(\"super_admins_user_idx\").on(table.userId),\n // Query by role\n index(\"super_admins_role_idx\").on(table.role),\n]);\n// =============================================================================\n// Relations\n// =============================================================================\nexport const activationCodesRelations = relations(activationCodes, ({ one, many }) => ({\n createdBy: one(user, {\n fields: [activationCodes.createdById],\n references: [user.id],\n relationName: \"codeCreator\",\n }),\n revokedBy: one(user, {\n fields: [activationCodes.revokedById],\n references: [user.id],\n relationName: \"codeRevoker\",\n }),\n redemptions: many(activationCodeRedemptions),\n}));\nexport const activationCodeRedemptionsRelations = relations(activationCodeRedemptions, ({ one }) => ({\n code: one(activationCodes, {\n fields: [activationCodeRedemptions.codeId],\n references: [activationCodes.id],\n }),\n user: one(user, {\n fields: [activationCodeRedemptions.userId],\n references: [user.id],\n }),\n subscription: one(subscriptions, {\n fields: [activationCodeRedemptions.subscriptionId],\n references: [subscriptions.id],\n }),\n}));\nexport const adminAuditLogRelations = relations(adminAuditLog, ({ one }) => ({\n admin: one(user, {\n fields: [adminAuditLog.adminId],\n references: [user.id],\n }),\n}));\nexport const superAdminsRelations = relations(superAdmins, ({ one }) => ({\n user: one(user, {\n fields: [superAdmins.userId],\n references: [user.id],\n }),\n addedBy: one(user, {\n fields: [superAdmins.addedById],\n references: [user.id],\n relationName: \"adminAdder\",\n }),\n}));\n// =============================================================================\n// Admin Email Sends (0024_admin_dashboard_tables)\n// =============================================================================\n/**\n * Admin Email Sends - audit trail for admin-initiated emails\n */\nexport const adminEmailSends = pgTable(\"admin_email_sends\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n adminUserId: text(\"admin_user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"set null\" }),\n recipientEmail: text(\"recipient_email\").notNull(),\n recipientUserId: text(\"recipient_user_id\").references(() => user.id, { onDelete: \"set null\" }),\n template: text(\"template\").notNull(),\n subject: text(\"subject\").notNull(),\n bodyPreview: text(\"body_preview\"),\n resendId: text(\"resend_id\"),\n sentAt: timestamp(\"sent_at\", { withTimezone: true }).notNull().defaultNow(),\n}, (table) => [\n index(\"admin_email_sends_admin_idx\").on(table.adminUserId, table.sentAt),\n index(\"admin_email_sends_recipient_idx\").on(table.recipientUserId),\n]);\n// =============================================================================\n// Admin Tier Changes (0024_admin_dashboard_tables)\n// =============================================================================\n/**\n * Admin Tier Changes - audit trail for admin tier overrides\n * These are manual overrides only - separate from Stripe billing.\n */\nexport const adminTierChanges = pgTable(\"admin_tier_changes\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n adminUserId: text(\"admin_user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"set null\" }),\n targetUserId: text(\"target_user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n previousTier: text(\"previous_tier\").notNull(),\n newTier: text(\"new_tier\").notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n reason: text(\"reason\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n}, (table) => [index(\"admin_tier_changes_target_idx\").on(table.targetUserId, table.createdAt)]);\n","// ESM imports fixed for Node.js v22+\n/**\n * AI Changes - Durable server-side records for AI-attributed file changes.\n *\n * Each row represents one snapshot event attributed to an AI tool.\n * Idempotency key: snapshotId (daemon-generated, text format: \"snapshot-<ts>-<nanoid>\")\n */\nimport { relations } from \"drizzle-orm\";\nimport { index, integer, pgTable, real, text, timestamp, unique, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n// ============================================================================\n// ai_changes Table\n// ============================================================================\nexport const aiChanges = pgTable(\"ai_changes\", {\n // Primary key - server-generated UUID\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Idempotency key - daemon-generated snapshot ID (text, NOT uuid)\n // Format: \"snapshot-<timestamp>-<nanoid>\"; unique constraint required for onConflictDoUpdate\n snapshotId: text(\"snapshot_id\").notNull(),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n workspaceFingerprint: text(\"workspace_fingerprint\").notNull(),\n // Session context - may be null if snapshot happens outside a session\n sessionId: text(\"session_id\"),\n // AI attribution (from SnapshotManifest)\n aiTool: text(\"ai_tool\").$type(), // nullable - not every snapshot is AI-attributed\n aiConfidence: real(\"ai_confidence\"), // 0.0–1.0, null if not attributed\n // Content identity - SHA-256 hash of all file diffs in the snapshot (VR-SPEC-B-1/B-3)\n diffHash: text(\"diff_hash\"), // Populated by daemon at snapshot creation time\n // File count in this snapshot\n fileCount: integer(\"file_count\").notNull().default(0),\n // Risk score at time of change (0.0–10.0)\n riskScore: real(\"risk_score\"),\n // Snapshot role in the change lifecycle\n snapshotType: text(\"snapshot_type\").$type(),\n // Outcome tracking\n outcome: text(\"outcome\").$type(), // null = not yet determined\n // Revert linkage - populated when outcome = \"reverted\"\n revertedAt: timestamp(\"reverted_at\", { withTimezone: true }),\n revertSnapshotId: text(\"revert_snapshot_id\"), // ID of the snapshot used to revert\n // Timestamps\n syncedAt: timestamp(\"synced_at\", { withTimezone: true }).defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => ({\n // Unique constraint on snapshot_id - idempotency key for onConflictDoUpdate\n snapshotIdUnique: unique(\"ai_changes_snapshot_id_unique\").on(table.snapshotId),\n userIdIdx: index(\"ai_changes_user_id_idx\").on(table.userId),\n workspaceIdx: index(\"ai_changes_workspace_idx\").on(table.workspaceFingerprint),\n sessionIdx: index(\"ai_changes_session_idx\").on(table.sessionId),\n snapshotIdIdx: index(\"ai_changes_snapshot_id_idx\").on(table.snapshotId),\n createdAtIdx: index(\"ai_changes_created_at_idx\").on(table.createdAt),\n}));\n// ============================================================================\n// Relations\n// ============================================================================\nexport const aiChangesRelations = relations(aiChanges, ({ one }) => ({\n user: one(user, {\n fields: [aiChanges.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys, user } from \"../postgres.js\";\n/**\n * Analysis Events - Time-series table for code analysis events\n *\n * This table will be converted to a hypertable in Supabase for efficient time-series queries\n */\nexport const analysisEvents = pgTable(\"analysis_events\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .references(() => apiKeys.id, { onDelete: \"cascade\" }),\n // Analysis metadata\n sessionId: text(\"session_id\"), // For grouping related analyses\n requestId: text(\"request_id\").notNull(), // Unique ID for this analysis request\n // Code context\n filePath: text(\"file_path\"),\n lineStart: integer(\"line_start\"),\n lineEnd: integer(\"line_end\"),\n characterStart: integer(\"character_start\"),\n characterEnd: integer(\"character_end\"),\n // Risk analysis results\n riskScore: integer(\"risk_score\"), // 0-100\n riskLevel: text(\"risk_level\"), // \"low\", \"medium\", \"high\"\n riskFactors: jsonb(\"risk_factors\")\n .$type()\n .default([]),\n // Detection details\n detectedPatterns: jsonb(\"detected_patterns\")\n .$type()\n .default([]),\n // Performance metrics\n analysisTimeMs: integer(\"analysis_time_ms\"),\n fileSizeBytes: integer(\"file_size_bytes\"),\n // Client context\n clientType: text(\"client_type\"), // \"vscode\", \"cli\", \"mcp\", \"web\"\n clientVersion: text(\"client_version\"),\n ideVersion: text(\"ide_version\"),\n // Git context\n gitBranch: text(\"git_branch\"),\n gitCommit: text(\"git_commit\"),\n // Project context\n projectId: text(\"project_id\"),\n workspaceId: text(\"workspace_id\"),\n // Timestamps\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n});\n// Relations\nexport const analysisEventsRelations = relations(analysisEvents, ({ one }) => ({\n user: one(user, {\n fields: [analysisEvents.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [analysisEvents.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, inet, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys, user } from \"../postgres.js\";\n// API key metadata table - extends Better Auth api_key table\nexport const apiKeyMetadata = pgTable(\"api_key_metadata\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .unique()\n .references(() => apiKeys.id), // References Better Auth api_key.id\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Key details\n name: text(\"name\").notNull(), // \"VS Code - Work Laptop\"\n environment: text(\"environment\").default(\"production\"), // \"development\" | \"production\"\n // Permissions/scopes\n scopes: jsonb(\"scopes\").default(JSON.stringify([\"code:analyze\", \"code:refactor\", \"code:search\"])),\n // Usage limits per key (optional override)\n rateLimitPerMinute: integer(\"rate_limit_per_minute\"),\n rateLimitPerHour: integer(\"rate_limit_per_hour\"),\n dailyRequestLimit: integer(\"daily_request_limit\"),\n // Tracking\n lastUsedAt: timestamp(\"last_used_at\"),\n lastUsedIp: inet(\"last_used_ip\"),\n lastUsedClient: text(\"last_used_client\"), // \"vscode-1.2.3\"\n totalRequests: integer(\"total_requests\").default(0),\n // Security\n isActive: boolean(\"is_active\").default(true),\n expiresAt: timestamp(\"expires_at\"),\n signingSecret: text(\"signing_secret\").notNull(), // HMAC-SHA256 signing secret (256-bit)\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\nexport const apiKeyMetadataRelations = relations(apiKeyMetadata, ({ one }) => ({\n user: one(user, {\n fields: [apiKeyMetadata.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [apiKeyMetadata.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n","import { integer, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nexport const apiKeyUsage = pgTable(\"api_key_usage\", {\n id: uuid(\"id\").primaryKey().defaultRandom().notNull(),\n apiKeyId: text(\"api_key_id\").notNull(),\n endpoint: text(\"endpoint\").notNull(),\n requestCount: integer(\"request_count\").default(1).notNull(),\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n});\n","import { boolean, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nexport const apiKeys = pgTable(\"api_keys\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => crypto.randomUUID())\n .notNull(),\n userId: text(\"user_id\").notNull(),\n name: text(\"name\"),\n key: text(\"key\").notNull(), // Hashed API key\n keyPreview: text(\"key_preview\").notNull(), // First 12 chars for display (e.g., \"sk_live_abc123...\")\n permissions: text(\"permissions\").array().default([]).notNull(), // Array of ApiKeyScope values\n orgId: text(\"org_id\"),\n createdBy: text(\"created_by\"),\n revoked: boolean(\"revoked\").default(false).notNull(),\n revokedAt: timestamp(\"revoked_at\"), // When the key was revoked\n lastUsedAt: timestamp(\"last_used_at\"),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n expiresAt: timestamp(\"expires_at\"),\n});\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys, user } from \"../postgres.js\";\n/**\n * Bypass Events - Track when users bypass safety checks\n */\nexport const bypassEvents = pgTable(\"bypass_events\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .references(() => apiKeys.id, { onDelete: \"cascade\" }),\n // Bypass details\n reason: text(\"reason\"), // User provided reason for bypass\n forced: boolean(\"forced\").notNull().default(false), // Whether bypass was forced by admin\n // Context\n filePath: text(\"file_path\"),\n lineStart: integer(\"line_start\"),\n lineEnd: integer(\"line_end\"),\n characterStart: integer(\"character_start\"),\n characterEnd: integer(\"character_end\"),\n // Risk at time of bypass\n riskScore: integer(\"risk_score\"), // 0-100\n riskLevel: text(\"risk_level\"), // \"low\", \"medium\", \"high\", \"critical\"\n // Violation details\n ruleId: text(\"rule_id\"),\n ruleName: text(\"rule_name\"),\n violationDescription: text(\"violation_description\"),\n // Metadata\n metadata: jsonb(\"metadata\").$type().default({}),\n // Context\n clientType: text(\"client_type\"), // \"vscode\", \"cli\", \"mcp\", \"web\"\n clientVersion: text(\"client_version\"),\n ideVersion: text(\"ide_version\"),\n // Git context\n gitBranch: text(\"git_branch\"),\n gitCommit: text(\"git_commit\"),\n // Project context\n projectId: text(\"project_id\"),\n workspaceId: text(\"workspace_id\"),\n // Timestamps\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n});\n// Relations\nexport const bypassEventsRelations = relations(bypassEvents, ({ one }) => ({\n user: one(user, {\n fields: [bypassEvents.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [bypassEvents.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n// =============================================================================\n// SCHEMA DEFINITION\n// =============================================================================\n/**\n * Capability Audit - Immutable change history for user detection capabilities\n *\n * Privacy: Pattern keys and metadata only, no code content (C-006)\n *\n * This table provides:\n * - Complete audit trail of all capability changes\n * - Before/after performance metrics for impact analysis\n * - Causality tracking (why changes were made)\n * - Context for debugging (session, workspace)\n *\n * Design notes:\n * - Append-only (no updates or deletes except via CASCADE)\n * - Idempotency key prevents duplicate entries on retry\n * - Partitioning by created_at recommended at 50M+ rows\n */\nexport const capabilityAudit = pgTable(\"capability_audit\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // ===================\n // OWNERSHIP\n // ===================\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // ===================\n // WHAT CHANGED\n // ===================\n /** Type of capability change */\n capabilityType: text(\"capability_type\").$type().notNull(),\n /** Detailed change payload (type depends on capabilityType) */\n change: jsonb(\"change\").$type(),\n /** Human-readable reason for the change */\n reason: text(\"reason\"),\n // ===================\n // PERFORMANCE IMPACT\n // ===================\n /** Performance metrics before the change */\n performanceBefore: jsonb(\"performance_before\").$type(),\n /** Performance metrics after the change */\n performanceAfter: jsonb(\"performance_after\").$type(),\n // ===================\n // CONTEXT\n // ===================\n /** MCP session ID where change originated */\n sessionId: uuid(\"session_id\"),\n /** Workspace ID (hashed) where change originated */\n workspaceId: text(\"workspace_id\"),\n /** Client type that triggered the change */\n clientType: text(\"client_type\"), // \"vscode\", \"mcp\", \"web\", \"cli\"\n // ===================\n // IDEMPOTENCY\n // ===================\n /** Unique key to prevent duplicate audit entries on retry */\n idempotencyKey: text(\"idempotency_key\").unique(),\n // ===================\n // TIMESTAMPS\n // ===================\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n});\n// =============================================================================\n// RELATIONS\n// =============================================================================\nexport const capabilityAuditRelations = relations(capabilityAudit, ({ one }) => ({\n user: one(user, {\n fields: [capabilityAudit.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * CI Outcomes - Pipeline results linked to AI-attributed changes.\n *\n * Each row represents one CI pipeline run that observed an ai_changes record.\n * Parent table: ai_changes (FK on ai_change_id with CASCADE delete)\n */\nimport { index, integer, pgTable, real, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { aiChanges } from \"./ai-changes.js\";\n// ============================================================================\n// ci_outcomes Table\n// ============================================================================\nexport const ciOutcomes = pgTable(\"ci_outcomes\", {\n // Primary key - server-generated UUID\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // FK to ai_changes.id (UUID PK) - CASCADE on parent delete\n aiChangeId: uuid(\"ai_change_id\")\n .notNull()\n .references(() => aiChanges.id, { onDelete: \"cascade\" }),\n // CI pipeline metadata\n pipeline: text(\"pipeline\").$type().notNull(), // \"github-actions\" | \"gitlab-ci\" | \"jenkins\" | \"other\"\n status: text(\"status\").$type().notNull(), // \"passed\" | \"failed\" | \"skipped\" | \"pending\"\n // Test counts\n testsPassed: integer(\"tests_passed\"),\n testsFailed: integer(\"tests_failed\"),\n // Coverage change (can be negative, e.g. -2.3 = lost 2.3% coverage)\n coverageDelta: real(\"coverage_delta\"),\n // Pipeline duration\n durationMs: integer(\"duration_ms\"),\n // Link to the CI run for drilldown\n runUrl: text(\"run_url\"),\n // Timestamps\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => ({\n aiChangeIdIdx: index(\"ci_outcomes_ai_change_id_idx\").on(table.aiChangeId),\n statusIdx: index(\"ci_outcomes_status_idx\").on(table.status),\n occurredAtIdx: index(\"ci_outcomes_occurred_at_idx\").on(table.occurredAt),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { integer, jsonb, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\nexport const codeContexts = pgTable(\"code_contexts\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Context identification (hashed for privacy)\n workspaceHash: text(\"workspace_hash\").notNull(),\n filePathHash: text(\"file_path_hash\").notNull(),\n // File metadata only (never store actual code)\n fileExtension: text(\"file_extension\").notNull(),\n fileSizeBytes: integer(\"file_size_bytes\"),\n lineCount: integer(\"line_count\"),\n language: text(\"language\"), // Detected language\n // Analysis results cache (can be reused)\n lastAnalysis: jsonb(\"last_analysis\"),\n lastAnalysisAt: timestamp(\"last_analysis_at\"),\n lastRefactor: jsonb(\"last_refactor\"),\n lastRefactorAt: timestamp(\"last_refactor_at\"),\n // Usage tracking\n analysisCount: integer(\"analysis_count\").default(0),\n refactorCount: integer(\"refactor_count\").default(0),\n lastAccessedAt: timestamp(\"last_accessed_at\").defaultNow(),\n createdAt: timestamp(\"created_at\").defaultNow(),\n updatedAt: timestamp(\"updated_at\").defaultNow(),\n}, (table) => ({\n userIdWorkspaceHashIndex: uniqueIndex(\"idx_code_contexts_user_workspace\").on(table.userId, table.workspaceHash),\n lastAccessedAtIndex: uniqueIndex(\"idx_code_contexts_last_accessed\").on(table.lastAccessedAt),\n userWorkspacePathUnique: uniqueIndex(\"idx_code_contexts_user_workspace_path_unique\").on(table.userId, table.workspaceHash, table.filePathHash),\n}));\nexport const codeContextsRelations = relations(codeContexts, ({ one }) => ({\n user: one(user, {\n fields: [codeContexts.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Codebase Bindings - Abuse Defense Phase 1\n *\n * Tracks codebase-to-account bindings for abuse prevention.\n * Links repositories to accounts via device bindings.\n *\n * PRIVACY: Only hashed codebase fingerprints are stored.\n * Git remote URLs are normalized before hashing.\n */\nimport { relations } from \"drizzle-orm\";\nimport { index, integer, pgTable, timestamp, uniqueIndex, varchar } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Codebase Bindings table - Maps codebase fingerprints to accounts\n */\nexport const codebaseBindings = pgTable(\"codebase_bindings\", {\n id: integer(\"id\").primaryKey().generatedAlwaysAsIdentity(),\n /** Canonical codebase identity from daemon */\n codebaseHash: varchar(\"codebase_hash\", { length: 64 }).notNull(),\n /** Initial commit hash - nullable (shallow clones, new repos) */\n repoSignature: varchar(\"repo_signature\", { length: 64 }),\n /** Account this codebase is bound to */\n accountId: varchar(\"account_id\", { length: 255 })\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n /** Device this binding was created from */\n machineIdHash: varchar(\"machine_id_hash\", { length: 64 }).notNull(),\n /** User's tier at time of binding */\n tier: varchar(\"tier\", { length: 20 }).notNull().default(\"free\"),\n /** Which signals contributed to the fingerprint */\n signalSources: varchar(\"signal_sources\", { length: 255 }),\n firstSeen: timestamp(\"first_seen\", { withTimezone: true }).defaultNow().notNull(),\n lastSeen: timestamp(\"last_seen\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => [\n uniqueIndex(\"uq_codebase_account\").on(table.codebaseHash, table.accountId),\n /** Index for account lookups */\n index(\"codebase_bindings_account_id_idx\").on(table.accountId),\n /** Index for codebase hash lookups */\n index(\"codebase_bindings_hash_idx\").on(table.codebaseHash),\n]);\n// Relations\nexport const codebaseBindingsRelations = relations(codebaseBindings, ({ one }) => ({\n account: one(user, {\n fields: [codebaseBindings.accountId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Conflict Log - Abuse Defense Phase 1\n *\n * Logs device and codebase conflicts for abuse monitoring.\n * Phase 1: Log conflicts, notify users, but never hard-block.\n */\nimport { relations } from \"drizzle-orm\";\nimport { index, integer, jsonb, pgTable, timestamp, varchar } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Conflict Log table - Records device/codebase conflicts\n */\nexport const conflictLog = pgTable(\"conflict_log\", {\n id: integer(\"id\").primaryKey().generatedAlwaysAsIdentity(),\n /** Type of conflict: \"device\" | \"codebase\" */\n type: varchar(\"type\", { length: 20 }).notNull(),\n /** Device hash involved in conflict */\n machineIdHash: varchar(\"machine_id_hash\", { length: 64 }),\n /** Codebase hash involved in conflict */\n codebaseHash: varchar(\"codebase_hash\", { length: 64 }),\n /** Account that previously owned the device/codebase */\n existingAccountId: varchar(\"existing_account_id\", { length: 255 })\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n /** Account attempting to bind */\n newAccountId: varchar(\"new_account_id\", { length: 255 })\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n /** Enrichment: IP, user agent, etc. added async */\n metadata: jsonb(\"metadata\").$type(),\n /** When the conflict was detected */\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n /** null = unresolved, \"legitimate\" | \"abuse\" | \"dismissed\" */\n resolution: varchar(\"resolution\", { length: 20 }),\n resolvedAt: timestamp(\"resolved_at\", { withTimezone: true }),\n}, (table) => [\n /** Index for type-based queries */\n index(\"conflict_log_type_idx\").on(table.type),\n /** Index for existing account lookups */\n index(\"conflict_log_existing_account_idx\").on(table.existingAccountId),\n /** Index for new account lookups */\n index(\"conflict_log_new_account_idx\").on(table.newAccountId),\n /** Index for time-based queries */\n index(\"conflict_log_created_at_idx\").on(table.createdAt),\n]);\n// Relations\nexport const conflictLogRelations = relations(conflictLog, ({ one }) => ({\n existingAccount: one(user, {\n fields: [conflictLog.existingAccountId],\n references: [user.id],\n }),\n newAccount: one(user, {\n fields: [conflictLog.newAccountId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { index, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\n// Device auth codes table\n// Tracks RFC 8628 device authorization flow (for VS Code extension auth)\nexport const deviceAuthCodes = pgTable(\"device_auth_codes\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n // Device code credentials\n deviceCode: text(\"device_code\").notNull().unique(),\n userCode: text(\"user_code\").notNull(),\n // Client identifier\n clientId: text(\"client_id\").notNull(), // \"vscode-extension\"\n // Verification URI\n verificationUri: text(\"verification_uri\").notNull(),\n // User who approved (null until approved)\n userId: text(\"user_id\").references(() => user.id, { onDelete: \"cascade\" }),\n // Status\n approved: text(\"approved\").notNull().default(\"false\"),\n approvedAt: timestamp(\"approved_at\"),\n // Expiration\n expiresAt: timestamp(\"expires_at\").notNull(),\n // API Key issued after approval\n issuedApiKeyId: text(\"issued_api_key_id\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => ({\n deviceCodeIdx: index(\"device_auth_codes_device_code_idx\").on(table.deviceCode),\n userCodeIdx: index(\"device_auth_codes_user_code_idx\").on(table.userCode),\n userIdIdx: index(\"device_auth_codes_user_id_idx\").on(table.userId),\n expiresAtIdx: index(\"device_auth_codes_expires_at_idx\").on(table.expiresAt),\n approvedIdx: index(\"device_auth_codes_approved_idx\").on(table.approved),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Device Bindings - Abuse Defense Phase 1\n *\n * Tracks device-to-account bindings for abuse prevention.\n * One device can only be bound to one account (enforced by unique index).\n *\n * PRIVACY: Only hashed device fingerprints are stored.\n * Raw hardware identifiers NEVER leave the daemon.\n */\nimport { relations } from \"drizzle-orm\";\nimport { boolean, index, integer, pgTable, timestamp, uniqueIndex, varchar } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Device Bindings table - Maps device fingerprints to accounts\n */\nexport const deviceBindings = pgTable(\"device_bindings\", {\n id: integer(\"id\").primaryKey().generatedAlwaysAsIdentity(),\n /** SHA-256 hash (32 hex chars) from daemon device fingerprint */\n machineIdHash: varchar(\"machine_id_hash\", { length: 64 }).notNull(),\n /** Account this device is bound to */\n accountId: varchar(\"account_id\", { length: 255 })\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n /** VS Code machineId (Phase 2 - nullable for now) */\n vscodeMachineId: varchar(\"vscode_machine_id\", { length: 64 }),\n /** Platform signature (coarser, for fleet analytics) */\n platformSignature: varchar(\"platform_signature\", { length: 64 }),\n /** Whether platform serial was available during fingerprinting */\n serialAvailable: boolean(\"serial_available\").default(true),\n /** Server-side ground truth - survives ~/.vreko/ deletion */\n firstSeen: timestamp(\"first_seen\", { withTimezone: true }).defaultNow().notNull(),\n /** Updated on every bind call */\n lastSeen: timestamp(\"last_seen\", { withTimezone: true }).defaultNow().notNull(),\n /** Abuse trust score: starts at 100, degrades on suspicious signals */\n trustScore: integer(\"trust_score\").default(100).notNull(),\n}, (table) => [\n /** One device can only be bound to one account */\n uniqueIndex(\"uq_device_account\").on(table.machineIdHash, table.accountId),\n /** Index for account lookups */\n index(\"device_bindings_account_id_idx\").on(table.accountId),\n /** Index for device hash lookups */\n index(\"device_bindings_machine_id_idx\").on(table.machineIdHash),\n]);\n// Relations\nexport const deviceBindingsRelations = relations(deviceBindings, ({ one }) => ({\n account: one(user, {\n fields: [deviceBindings.accountId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { index, integer, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Better Auth Device Authorization Grant (RFC 8628)\n * OAuth 2.0 device flow for headless/CLI authentication\n */\nexport const deviceCode = pgTable(\"device_code\", {\n id: text(\"id\").primaryKey(),\n deviceCode: text(\"device_code\").notNull(),\n userCode: text(\"user_code\").notNull(),\n userId: text(\"user_id\").references(() => user.id, { onDelete: \"cascade\" }),\n expiresAt: timestamp(\"expires_at\").notNull(),\n status: text(\"status\").notNull(), // \"pending\" | \"approved\" | \"denied\" | \"expired\"\n lastPolledAt: timestamp(\"last_polled_at\"),\n pollingInterval: integer(\"polling_interval\"),\n clientId: text(\"client_id\"),\n scope: text(\"scope\"),\n // Reason for denial - null unless status is \"denied\"\n deniedReason: text(\"denied_reason\"),\n}, (table) => ({\n deviceCodeIdx: index(\"device_code_device_code_idx\").on(table.deviceCode),\n userCodeIdx: index(\"device_code_user_code_idx\").on(table.userCode),\n userIdIdx: index(\"device_code_user_id_idx\").on(table.userId),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { index, integer, jsonb, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Engagement Scores - Community engagement tracking\n *\n * Tracks user engagement actions for beta eligibility and growth loops.\n * Powers the community-driven growth strategy.\n */\nexport const engagementScores = pgTable(\"engagement_scores\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => crypto.randomUUID()),\n // User\n userId: text(\"user_id\")\n .unique()\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Score components\n totalEngagementScore: integer(\"total_engagement_score\").default(0).notNull(),\n usageScore: integer(\"usage_score\").default(0).notNull(), // Snapshots, recoveries, etc.\n feedbackQualityScore: integer(\"feedback_quality_score\").default(0).notNull(),\n communityScore: integer(\"community_score\").default(0).notNull(), // GitHub, Discord, etc.\n referralScore: integer(\"referral_score\").default(0).notNull(),\n // Beta tier\n betaTier: text(\"beta_tier\").default(\"none\").notNull(), // 'none', 'early_access', 'beta', 'lifetime_free'\n tierUnlockedAt: timestamp(\"tier_unlocked_at\"),\n // Qualifying actions (for transparency)\n qualifyingActions: jsonb(\"qualifying_actions\").$type().default([]),\n // Timestamps\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n lastUpdatedAt: timestamp(\"last_updated_at\").defaultNow().notNull(),\n}, (table) => [\n // Unique: one score per user\n index(\"engagement_scores_user_idx\").on(table.userId),\n // Query by tier\n index(\"engagement_scores_tier_idx\").on(table.betaTier),\n // Leaderboard query\n index(\"engagement_scores_total_idx\").on(table.totalEngagementScore),\n]);\n/**\n * Engagement Actions - Individual engagement action log\n *\n * Tracks each community action for points calculation and audit trail.\n */\nexport const engagementActions = pgTable(\"engagement_actions\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => crypto.randomUUID()),\n // User\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Action details\n actionType: text(\"action_type\").notNull(), // 'github_star', 'disaster_story_shared', etc.\n pointsEarned: integer(\"points_earned\").notNull(),\n // Progress tracking\n tierProgressBefore: integer(\"tier_progress_before\").notNull(),\n tierProgressAfter: integer(\"tier_progress_after\").notNull(),\n engagementScoreDelta: integer(\"engagement_score_delta\").notNull(),\n // Action metadata\n metadata: jsonb(\"metadata\").$type().default({}),\n // Timestamp\n performedAt: timestamp(\"performed_at\").defaultNow().notNull(),\n}, (table) => [\n // Query by user\n index(\"engagement_actions_user_idx\").on(table.userId),\n // Query by action type (for analytics)\n index(\"engagement_actions_type_idx\").on(table.actionType),\n // Query recent actions\n index(\"engagement_actions_time_idx\").on(table.performedAt),\n]);\nexport const engagementScoresRelations = relations(engagementScores, ({ one, many }) => ({\n user: one(user, {\n fields: [engagementScores.userId],\n references: [user.id],\n }),\n actions: many(engagementActions),\n}));\nexport const engagementActionsRelations = relations(engagementActions, ({ one }) => ({\n user: one(user, {\n fields: [engagementActions.userId],\n references: [user.id],\n }),\n score: one(engagementScores, {\n fields: [engagementActions.userId],\n references: [engagementScores.userId],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Enterprise Auth Schema\n *\n * Tables for enterprise authentication features:\n * - SSO configuration (providers)\n * - SSO sessions\n * - SSO attribute mappings\n * - Risk-based authentication\n * - Trusted device management\n * - Session context tracking\n * - Conditional access policies\n * - Enterprise audit logging\n */\nimport { relations, sql } from \"drizzle-orm\";\nimport { boolean, index, integer, jsonb, pgEnum, pgTable, text, timestamp, unique, uuid, varchar, } from \"drizzle-orm/pg-core\";\nimport { organization, user } from \"../postgres.js\";\n// =============================================================================\n// SSO Provider Enums\n// =============================================================================\n/**\n * Supported SSO providers\n */\nexport const ssoProviderEnum = pgEnum(\"sso_provider\", [\n \"okta\",\n \"azure_ad\",\n \"google_workspace\",\n \"onelogin\",\n \"ping_identity\",\n \"custom_saml\",\n \"custom_oidc\",\n]);\n/**\n * SSO protocol types\n */\nexport const ssoProtocolEnum = pgEnum(\"sso_protocol\", [\"saml2\", \"oidc\"]);\n/**\n * SSO provider status\n */\nexport const ssoProviderStatusEnum = pgEnum(\"sso_provider_status\", [\"active\", \"inactive\", \"testing\"]);\n// =============================================================================\n// SSO Configuration Table (Drizzle version of SQL migration 0016)\n// =============================================================================\n/**\n * SSO Configuration - enterprise IdP configuration per organization\n *\n * Stores SAML/OIDC configuration for enterprise single sign-on\n */\nexport const ssoConfiguration = pgTable(\"sso_configuration\", {\n configId: uuid(\"config_id\").primaryKey().defaultRandom(),\n // Organization reference\n organizationId: text(\"organization_id\")\n .notNull()\n .references(() => organization.id, { onDelete: \"cascade\" }),\n // Provider info\n provider: ssoProviderEnum(\"provider\").notNull(),\n protocol: ssoProtocolEnum(\"protocol\").notNull(),\n // Status flags\n isEnabled: boolean(\"is_enabled\").default(false).notNull(),\n enforceSso: boolean(\"enforce_sso\").default(false).notNull(),\n // SAML configuration\n samlConfig: jsonb(\"saml_config\").$type(),\n // OIDC configuration\n oidcConfig: jsonb(\"oidc_config\").$type(),\n // Domain restrictions\n allowedDomains: text(\"allowed_domains\").array(),\n // Auto-provisioning settings\n autoProvisioning: jsonb(\"auto_provisioning\")\n .$type()\n .default({ enabled: false, defaultRole: \"member\", syncGroups: false }),\n // Timestamps\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow().notNull(),\n lastAuthAt: timestamp(\"last_auth_at\", { withTimezone: true }),\n}, (table) => [\n // Query by organization\n index(\"sso_config_org_idx\").on(table.organizationId),\n // Query enabled configs\n index(\"sso_config_enabled_idx\")\n .on(table.isEnabled)\n .where(sql `is_enabled = true`),\n // Unique config per org\n unique(\"sso_config_unique_org\").on(table.organizationId),\n]);\n/**\n * SSO Session - tracks SSO-authenticated sessions for single logout\n */\nexport const ssoSession = pgTable(\"sso_session\", {\n sessionId: uuid(\"session_id\").primaryKey().defaultRandom(),\n // User reference\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // SSO config reference\n ssoConfigId: uuid(\"sso_config_id\")\n .notNull()\n .references(() => ssoConfiguration.configId, { onDelete: \"cascade\" }),\n // IdP session info (for single logout)\n idpSessionId: text(\"idp_session_id\"),\n // Session timing\n authenticatedAt: timestamp(\"authenticated_at\", { withTimezone: true }).defaultNow().notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n // Client info\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n userAgent: text(\"user_agent\"),\n}, (table) => [\n // Query by user\n index(\"sso_session_user_idx\").on(table.userId),\n // Query by config\n index(\"sso_session_config_idx\").on(table.ssoConfigId),\n // Cleanup expired sessions\n index(\"sso_session_expires_idx\").on(table.expiresAt),\n // Lookup by IdP session ID\n index(\"sso_session_idp_idx\")\n .on(table.idpSessionId)\n .where(sql `idp_session_id IS NOT NULL`),\n]);\n// =============================================================================\n// Enums\n// =============================================================================\n/**\n * Attribute transform types for SSO mapping\n */\nexport const transformTypeEnum = pgEnum(\"transform_type\", [\"DIRECT\", \"REGEX\", \"LOOKUP\", \"CUSTOM\"]);\n/**\n * Risk assessment decision outcomes\n */\nexport const riskDecisionEnum = pgEnum(\"risk_decision\", [\"ALLOW\", \"CHALLENGE_MFA\", \"CHALLENGE_EMAIL\", \"BLOCK\"]);\n/**\n * Authentication methods for session context\n */\nexport const authMethodEnum = pgEnum(\"auth_method\", [\n \"PASSWORD\",\n \"SSO_SAML\",\n \"SSO_OIDC\",\n \"API_KEY\",\n \"OAUTH\",\n \"MAGIC_LINK\",\n \"PASSKEY\",\n]);\n/**\n * Actor types for enterprise audit log\n */\nexport const actorTypeEnum = pgEnum(\"actor_type\", [\"USER\", \"SYSTEM\", \"API\"]);\n// =============================================================================\n// Tables\n// =============================================================================\n/**\n * SSO Attribute Mappings - map IdP attributes to Vreko fields\n *\n * Used during SSO login to transform IdP-provided attributes\n * into Vreko user fields (e.g., groups -> role)\n */\nexport const ssoAttributeMappings = pgTable(\"sso_attribute_mappings\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Reference to SSO configuration (from 0016 migration)\n // Note: We use text since sso_configuration uses uuid but we reference by config_id\n configId: uuid(\"config_id\").notNull(),\n // Mapping definition\n sourceAttribute: varchar(\"source_attribute\", { length: 100 }).notNull(), // \"groups\", \"department\"\n targetField: varchar(\"target_field\", { length: 100 }).notNull(), // \"role\", \"team\"\n // Transform configuration\n transformType: transformTypeEnum(\"transform_type\").notNull().default(\"DIRECT\"),\n transformConfig: jsonb(\"transform_config\").$type(),\n // Validation\n isRequired: boolean(\"is_required\").default(false).notNull(),\n defaultValue: text(\"default_value\"),\n // Timestamps\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => [\n // Query mappings by config\n index(\"sso_attribute_mappings_config_idx\").on(table.configId),\n // Unique mapping per source/target pair per config\n unique(\"sso_attribute_mappings_unique\").on(table.configId, table.sourceAttribute, table.targetField),\n]);\n/**\n * Risk Assessments - login risk scoring\n *\n * Calculated during authentication to determine if additional\n * verification is required (MFA, email challenge, or block)\n */\nexport const riskAssessments = pgTable(\"risk_assessments\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // User context\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n sessionId: varchar(\"session_id\", { length: 100 }),\n // Risk calculation\n score: integer(\"score\").notNull(), // 0-100\n factors: jsonb(\"factors\").notNull().$type(),\n decision: riskDecisionEnum(\"decision\").notNull(),\n // Challenge tracking\n challengeCompleted: boolean(\"challenge_completed\"),\n // Request context\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n userAgent: text(\"user_agent\"),\n geoLocation: jsonb(\"geo_location\").$type(),\n // Timestamp\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => [\n // Query by user\n index(\"risk_assessments_user_idx\").on(table.userId, table.createdAt),\n // Query by decision for analytics\n index(\"risk_assessments_decision_idx\").on(table.decision, table.createdAt),\n // Query by score range for analytics\n index(\"risk_assessments_score_idx\").on(table.score),\n]);\n/**\n * Trusted Devices - skip MFA for known devices\n *\n * When a user marks a device as trusted after MFA,\n * future logins from that device skip the MFA challenge\n */\nexport const trustedDevices = pgTable(\"trusted_devices\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // User owner\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Device identification\n deviceFingerprint: varchar(\"device_fingerprint\", { length: 64 }).notNull(),\n deviceName: varchar(\"device_name\", { length: 100 }), // \"Chrome on MacBook Pro\"\n // Usage tracking\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }).defaultNow().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(), // Trust expires after 30 days\n // Origin context\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n}, (table) => [\n // Unique device per user\n unique(\"trusted_devices_unique\").on(table.userId, table.deviceFingerprint),\n // Query by user\n index(\"trusted_devices_user_idx\").on(table.userId),\n // Cleanup expired devices\n index(\"trusted_devices_expires_idx\").on(table.expiresAt),\n]);\n/**\n * User Session Context - rich session data for audit\n *\n * Captures detailed context about each session for\n * security monitoring and compliance requirements\n */\nexport const userSessionContext = pgTable(\"user_session_context\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Session identity\n sessionId: varchar(\"session_id\", { length: 100 }).unique().notNull(),\n // User reference\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Authentication details\n authMethod: authMethodEnum(\"auth_method\").notNull(),\n ssoConfigId: uuid(\"sso_config_id\"), // Reference to sso_configuration\n riskAssessmentId: uuid(\"risk_assessment_id\").references(() => riskAssessments.id, {\n onDelete: \"set null\",\n }),\n // MFA status\n mfaCompleted: boolean(\"mfa_completed\").default(false).notNull(),\n mfaMethod: varchar(\"mfa_method\", { length: 50 }), // \"totp\", \"backup_code\", \"passkey\"\n // Request context\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n userAgent: text(\"user_agent\"),\n geoLocation: jsonb(\"geo_location\").$type(),\n // Lifecycle timestamps\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n lastActivityAt: timestamp(\"last_activity_at\", { withTimezone: true }).defaultNow().notNull(),\n terminatedAt: timestamp(\"terminated_at\", { withTimezone: true }),\n terminationReason: varchar(\"termination_reason\", { length: 100 }), // \"logout\", \"expired\", \"revoked\", \"suspicious\"\n}, (table) => [\n // Query by user\n index(\"user_session_context_user_idx\").on(table.userId, table.createdAt),\n // Active sessions\n index(\"user_session_context_active_idx\")\n .on(table.userId)\n .where(sql `terminated_at IS NULL`),\n // Query by auth method for analytics\n index(\"user_session_context_method_idx\").on(table.authMethod),\n]);\n/**\n * Conditional Access Policies - enterprise auth rules\n *\n * Organization-specific policies that control authentication\n * requirements based on conditions (IP range, time, device, etc.)\n */\nexport const conditionalAccessPolicies = pgTable(\"conditional_access_policies\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Organization scope\n organizationId: text(\"organization_id\")\n .notNull()\n .references(() => organization.id, { onDelete: \"cascade\" }),\n // Policy definition\n name: varchar(\"name\", { length: 100 }).notNull(),\n description: text(\"description\"),\n priority: integer(\"priority\").default(0).notNull(), // Lower = higher priority\n isEnabled: boolean(\"is_enabled\").default(true).notNull(),\n // Conditions - when this policy applies\n conditions: jsonb(\"conditions\").notNull().$type(),\n // Actions - what to do when conditions match\n actions: jsonb(\"actions\").notNull().$type(),\n // Metadata\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow().notNull(),\n createdById: text(\"created_by_id\").references(() => user.id, { onDelete: \"set null\" }),\n}, (table) => [\n // Query policies by org\n index(\"conditional_access_policies_org_idx\").on(table.organizationId),\n // Active policies by priority\n index(\"conditional_access_policies_active_idx\")\n .on(table.organizationId, table.priority)\n .where(sql `is_enabled = true`),\n]);\n/**\n * Enterprise Audit Log - per-org audit trail\n *\n * Detailed audit log for enterprise compliance,\n * partitioned by time for efficient retention management\n */\nexport const enterpriseAuditLog = pgTable(\"enterprise_audit_log\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Organization scope\n organizationId: text(\"organization_id\")\n .notNull()\n .references(() => organization.id, { onDelete: \"cascade\" }),\n // Actor (who performed the action)\n actorId: text(\"actor_id\").references(() => user.id, { onDelete: \"set null\" }),\n actorType: actorTypeEnum(\"actor_type\").notNull(),\n // Action details\n action: varchar(\"action\", { length: 100 }).notNull(), // \"sso.login\", \"member.invited\", etc.\n resourceType: varchar(\"resource_type\", { length: 100 }), // \"user\", \"sso_config\", \"policy\"\n resourceId: text(\"resource_id\"),\n // Additional context\n metadata: jsonb(\"metadata\").$type(),\n // Request context\n ipAddress: varchar(\"ip_address\", { length: 45 }),\n userAgent: text(\"user_agent\"),\n // Timestamp\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => [\n // Query by org and time (primary query pattern)\n index(\"enterprise_audit_log_org_time_idx\").on(table.organizationId, table.createdAt),\n // Query by actor\n index(\"enterprise_audit_log_actor_idx\").on(table.actorId),\n // Query by action type\n index(\"enterprise_audit_log_action_idx\").on(table.action, table.createdAt),\n // Query by resource\n index(\"enterprise_audit_log_resource_idx\").on(table.resourceType, table.resourceId),\n]);\n// =============================================================================\n// Relations\n// =============================================================================\nexport const ssoConfigurationRelations = relations(ssoConfiguration, ({ one, many }) => ({\n organization: one(organization, {\n fields: [ssoConfiguration.organizationId],\n references: [organization.id],\n }),\n attributeMappings: many(ssoAttributeMappings),\n sessions: many(ssoSession),\n}));\nexport const ssoSessionRelations = relations(ssoSession, ({ one }) => ({\n user: one(user, {\n fields: [ssoSession.userId],\n references: [user.id],\n }),\n config: one(ssoConfiguration, {\n fields: [ssoSession.ssoConfigId],\n references: [ssoConfiguration.configId],\n }),\n}));\nexport const ssoAttributeMappingsRelations = relations(ssoAttributeMappings, ({ one }) => ({\n config: one(ssoConfiguration, {\n fields: [ssoAttributeMappings.configId],\n references: [ssoConfiguration.configId],\n }),\n}));\nexport const riskAssessmentsRelations = relations(riskAssessments, ({ one }) => ({\n user: one(user, {\n fields: [riskAssessments.userId],\n references: [user.id],\n }),\n}));\nexport const trustedDevicesRelations = relations(trustedDevices, ({ one }) => ({\n user: one(user, {\n fields: [trustedDevices.userId],\n references: [user.id],\n }),\n}));\nexport const userSessionContextRelations = relations(userSessionContext, ({ one }) => ({\n user: one(user, {\n fields: [userSessionContext.userId],\n references: [user.id],\n }),\n riskAssessment: one(riskAssessments, {\n fields: [userSessionContext.riskAssessmentId],\n references: [riskAssessments.id],\n }),\n}));\nexport const conditionalAccessPoliciesRelations = relations(conditionalAccessPolicies, ({ one }) => ({\n organization: one(organization, {\n fields: [conditionalAccessPolicies.organizationId],\n references: [organization.id],\n }),\n createdBy: one(user, {\n fields: [conditionalAccessPolicies.createdById],\n references: [user.id],\n }),\n}));\nexport const enterpriseAuditLogRelations = relations(enterpriseAuditLog, ({ one }) => ({\n organization: one(organization, {\n fields: [enterpriseAuditLog.organizationId],\n references: [organization.id],\n }),\n actor: one(user, {\n fields: [enterpriseAuditLog.actorId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { bigint, jsonb, pgEnum, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { apiKeys, user } from \"../postgres.js\";\n// Enums\nexport const severityLevelEnum = pgEnum(\"severity_level\", [\"debug\", \"info\", \"warning\", \"error\", \"critical\"]);\n// Error logs (partitioned by month)\nexport const errorLogs = pgTable(\"error_logs\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n // Error identification\n errorId: text(\"error_id\")\n .notNull()\n .$defaultFn(() => nanoid()),\n errorCode: text(\"error_code\"),\n errorType: text(\"error_type\"), // \"APIError\", \"ValidationError\", etc.\n // Context\n userId: text(\"user_id\").references(() => user.id, { onDelete: \"cascade\" }),\n apiKeyId: text(\"api_key_id\"),\n requestId: text(\"request_id\"),\n // Error details\n severity: severityLevelEnum(\"severity\").notNull().default(\"error\"),\n message: text(\"message\").notNull(),\n stackTrace: text(\"stack_trace\"),\n // Request context\n endpoint: text(\"endpoint\"),\n method: text(\"method\"),\n requestBody: jsonb(\"request_body\"),\n // Environment\n serviceName: text(\"service_name\").default(\"api\"),\n environment: text(\"environment\").default(\"production\"),\n version: text(\"version\"),\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\n// Partition tables for error_logs\nexport const errorLogs202510 = pgTable(\"error_logs_2025_10\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n // Error identification\n errorId: text(\"error_id\")\n .notNull()\n .$defaultFn(() => nanoid()),\n errorCode: text(\"error_code\"),\n errorType: text(\"error_type\"), // \"APIError\", \"ValidationError\", etc.\n // Context\n userId: text(\"user_id\").references(() => user.id, { onDelete: \"cascade\" }),\n apiKeyId: text(\"api_key_id\"),\n requestId: text(\"request_id\"),\n // Error details\n severity: severityLevelEnum(\"severity\").notNull().default(\"error\"),\n message: text(\"message\").notNull(),\n stackTrace: text(\"stack_trace\"),\n // Request context\n endpoint: text(\"endpoint\"),\n method: text(\"method\"),\n requestBody: jsonb(\"request_body\"),\n // Environment\n serviceName: text(\"service_name\").default(\"api\"),\n environment: text(\"environment\").default(\"production\"),\n version: text(\"version\"),\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\nexport const errorLogsRelations = relations(errorLogs, ({ one }) => ({\n user: one(user, {\n fields: [errorLogs.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [errorLogs.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, integer, json, pgEnum, pgTable, real, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { apiKeys, user } from \"../postgres.js\";\n// Session severity enum (different from error log severity)\nexport const sessionSeverityEnum = pgEnum(\"session_severity\", [\"low\", \"medium\", \"high\", \"critical\"]);\n// Extension sessions table - matching the definition in postgres.ts\nexport const extensionSessions = pgTable(\"extension_sessions\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n apiKeyId: text(\"api_key_id\").references(() => apiKeys.id, { onDelete: \"cascade\" }), // Nullable until API key system is integrated\n // Session timing\n sessionStart: timestamp(\"session_start\").defaultNow().notNull(),\n sessionEnd: timestamp(\"session_end\"),\n // Extension context (privacy-safe)\n extensionVersion: text(\"extension_version\").notNull(),\n vscodeVersion: text(\"vscode_version\").notNull(),\n platform: text(\"platform\").notNull(), // 'darwin', 'win32', 'linux'\n // Activity metrics\n requestsCount: integer(\"requests_count\").default(0).notNull(),\n // Workspace info (hashed for privacy)\n workspaceHash: text(\"workspace_hash\"),\n // Denormalized session summary fields for performance\n highestSeverity: sessionSeverityEnum(\"highest_severity\"),\n aiPresent: boolean(\"ai_present\").default(false),\n issuesByType: json(\"issues_by_type\").$type().default({}),\n bytesSaved: integer(\"bytes_saved\").default(0),\n // AI detection results (v1 schema)\n aiAssistLevel: text(\"ai_assist_level\").notNull().default(\"unknown\"), // 'none' | 'light' | 'medium' | 'heavy' | 'unknown'\n aiConfidenceScore: real(\"ai_confidence_score\").default(0).notNull(),\n aiProvider: text(\"ai_provider\").notNull().default(\"none\"), // 'cursor' | 'claude' | 'unknown' | 'none'\n aiMetadata: json(\"ai_metadata\").$type(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n});\nexport const extensionSessionsRelations = relations(extensionSessions, ({ one }) => ({\n user: one(user, {\n fields: [extensionSessions.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [extensionSessions.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { bigint, boolean, integer, jsonb, pgEnum, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\nimport { extensionSessions } from \"./extension-sessions.js\";\n// Enums\nexport const featureCategoryEnum = pgEnum(\"feature_category\", [\n \"code_analysis\",\n \"code_refactor\",\n \"code_search\",\n \"git_operations\",\n \"ai_assistance\",\n \"debugging\",\n \"testing\",\n \"documentation\",\n]);\n// Feature usage tracking (partitioned by month)\nexport const featureUsage = pgTable(\"feature_usage\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n sessionId: text(\"session_id\").references(() => extensionSessions.id),\n // Feature identification\n featureName: text(\"feature_name\").notNull(),\n featureCategory: featureCategoryEnum(\"feature_category\").notNull(),\n // Trigger method\n triggerMethod: text(\"trigger_method\"), // \"command_palette\", \"context_menu\", \"keyboard_shortcut\"\n // Context\n fileType: text(\"file_type\"),\n projectType: text(\"project_type\"),\n projectSize: text(\"project_size\"),\n // Metrics\n durationMs: integer(\"duration_ms\"),\n success: boolean(\"success\").default(true),\n // Impact (when applicable)\n linesChanged: integer(\"lines_changed\"),\n filesAffected: integer(\"files_affected\"),\n // Client\n clientVersion: text(\"client_version\"),\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\n// Partition tables for feature_usage\nexport const featureUsage202510 = pgTable(\"feature_usage_2025_10\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n sessionId: text(\"session_id\").references(() => extensionSessions.id),\n // Feature identification\n featureName: text(\"feature_name\").notNull(),\n featureCategory: featureCategoryEnum(\"feature_category\").notNull(),\n // Trigger method\n triggerMethod: text(\"trigger_method\"), // \"command_palette\", \"context_menu\", \"keyboard_shortcut\"\n // Context\n fileType: text(\"file_type\"),\n projectType: text(\"project_type\"),\n projectSize: text(\"project_size\"),\n // Metrics\n durationMs: integer(\"duration_ms\"),\n success: boolean(\"success\").default(true),\n // Impact (when applicable)\n linesChanged: integer(\"lines_changed\"),\n filesAffected: integer(\"files_affected\"),\n // Client\n clientVersion: text(\"client_version\"),\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\nexport const featureUsageRelations = relations(featureUsage, ({ one }) => ({\n user: one(user, {\n fields: [featureUsage.userId],\n references: [user.id],\n }),\n session: one(extensionSessions, {\n fields: [featureUsage.sessionId],\n references: [extensionSessions.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { sql } from \"drizzle-orm\";\nimport { check, index, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys } from \"./api-keys.js\";\nexport const feedback = pgTable(\"feedback\", {\n id: uuid(\"id\").primaryKey().defaultRandom().notNull(),\n userId: text(\"user_id\").notNull(),\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .references(() => apiKeys.id, { onDelete: \"cascade\" }),\n sessionId: text(\"session_id\"),\n requestId: text(\"request_id\"),\n feedbackType: text(\"feedback_type\").notNull(),\n feedbackText: text(\"feedback_text\"),\n rating: integer(\"rating\"),\n metadata: jsonb(\"metadata\").default({}),\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n}, (table) => {\n return {\n userCreatedAtIndex: index(\"feedback_user_created_at_idx\").on(table.userId, table.createdAt),\n apiKeyCreatedAtIndex: index(\"feedback_api_key_created_at_idx\").on(table.apiKeyId, table.createdAt),\n feedbackTypeCheck: check(\"feedback_feedback_type_check\", sql `feedback_type IN ('positive', 'negative', 'neutral', 'bug_report')`),\n };\n});\n","// ESM imports fixed for Node.js v22+\n/**\n * File Snapshot Sessions - Synced session metadata for cross-machine dashboard access\n *\n * This table stores session metadata pushed from local-service daemon on session end.\n * It feeds the ML flywheel with training signals while enabling remote dashboard access.\n *\n * PRIVACY: Only metadata syncs - file content NEVER leaves device.\n * WORKSPACE FINGERPRINT: sha256(gitRemote + userId) for privacy + stability + user isolation.\n */\nimport { relations } from \"drizzle-orm\";\nimport { index, integer, jsonb, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n// =============================================================================\n// File Snapshot Sessions Table\n// =============================================================================\nexport const fileSnapshotSessions = pgTable(\"file_snapshot_sessions\", {\n // Primary key - matches local daemon-generated ID\n id: text(\"id\").primaryKey(),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Workspace fingerprint: sha256(gitRemote + userId)\n // - Privacy: raw path never stored\n // - Stability: same workspace across machines maps to same fingerprint\n // - User isolation: different users' copies of same repo produce different fingerprints\n workspaceFingerprint: text(\"workspace_fingerprint\").notNull(),\n // Timing\n startedAt: timestamp(\"started_at\", { withTimezone: true }).notNull(),\n endedAt: timestamp(\"ended_at\", { withTimezone: true }),\n // Core session data\n reason: text(\"reason\").notNull(), // 'manual', 'auto', 'pre_command', 'risk_detection'\n snapshotIds: jsonb(\"snapshot_ids\").$type().default([]),\n // ML Flywheel fields (typed columns, NOT in metadata blob)\n // These feed the risk model training pipeline\n // AIToolBehaviorSignal - which AI tools were active\n aiToolsActive: jsonb(\"ai_tools_active\").$type().default([]),\n // Cross-session conflict data\n concurrentSessionCount: integer(\"concurrent_session_count\").default(0),\n fileConflictsDetected: integer(\"file_conflicts_detected\").default(0),\n // Key model feedback signal - peak risk during session\n peakRiskScore: integer(\"peak_risk_score\"), // 0-100\n // Core quality metric - how many rollbacks happened\n rollbacksPerformed: integer(\"rollbacks_performed\").default(0),\n // Session outcome classification\n outcome: text(\"outcome\").$type(),\n // Health delta - can be negative (degradation)\n healthDelta: integer(\"health_delta\"),\n // Clustering signals - enable cohort analysis\n primaryStack: jsonb(\"primary_stack\").$type().default([]), // e.g., [\"nextjs\", \"typescript\", \"pnpm\"]\n workspaceScale: text(\"workspace_scale\").$type(),\n // Session quality metrics\n coherenceScore: text(\"coherence_score\").$type(),\n fileCount: integer(\"file_count\").default(0),\n // Sync metadata\n syncedAt: timestamp(\"synced_at\", { withTimezone: true }).defaultNow(),\n // Extension data only (NOT for known flywheel fields)\n // Use sparingly - prefer typed columns for queryable data\n metadata: jsonb(\"metadata\").$type().default({}),\n}, (table) => ({\n // User lookup index\n userIdIdx: index(\"file_snapshot_sessions_user_id_idx\").on(table.userId),\n // Workspace lookup index\n workspaceIdx: index(\"file_snapshot_sessions_workspace_idx\").on(table.workspaceFingerprint),\n // Time-based queries for dashboard\n startedAtIdx: index(\"file_snapshot_sessions_started_at_idx\").on(table.startedAt),\n // Composite for common query: user's recent sessions\n userStartedIdx: index(\"file_snapshot_sessions_user_started_idx\").on(table.userId, table.startedAt),\n}));\n// =============================================================================\n// Relations\n// =============================================================================\nexport const fileSnapshotSessionsRelations = relations(fileSnapshotSessions, ({ one }) => ({\n user: one(user, {\n fields: [fileSnapshotSessions.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Fingerprints - Workspace architecture fingerprint storage\n *\n * Facts-first, policy-aware, strict-schema fingerprint storage.\n *\n * SECURITY INVARIANTS:\n * - Never store raw manifests/lockfiles/SBOMs\n * - Only validated Facts and derived hashes are persisted\n * - Minimal mode: dependencies.inventory must be empty\n * - Strict-private with emitComponentNames=false: only hashed component IDs (cid_...)\n */\nimport { relations } from \"drizzle-orm\";\nimport { index, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Fingerprints table - Stores workspace architecture fingerprints\n */\nexport const fingerprints = pgTable(\"fingerprints\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Ownership - scoped to user for tenant isolation\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Workspace reference - logical workspace within user scope\n workspaceId: uuid(\"workspace_id\").notNull(),\n workspaceKey: text(\"workspace_key\").notNull(), // Original key for lookup\n // Policy at time of fingerprint (immutable record)\n policy: jsonb(\"policy\").$type().notNull(),\n // Scan metadata\n scan: jsonb(\"scan\").$type().notNull(),\n // Computed hashes\n driftFull: text(\"drift_full\").notNull(), // SHA-256 full (64 hex chars)\n driftTruncated: text(\"drift_truncated\").notNull(), // Truncated to 32 chars for transport\n similarity64: text(\"similarity_64\"), // SimHash-64 (16 hex chars), null if not enabled\n similarityAlg: text(\"similarity_alg\"), // \"simhash64-v1\" if similarity enabled\n // Facts storage level\n factsStored: text(\"facts_stored\").notNull().default(\"summary\"), // \"none\" | \"summary\" | \"full\"\n // Timestamps\n receivedAt: timestamp(\"received_at\").notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n}, (table) => [\n // Index for workspace lookups (most common query pattern)\n index(\"fingerprints_workspace_id_idx\").on(table.workspaceId),\n // Index for user-scoped queries\n index(\"fingerprints_user_id_idx\").on(table.userId),\n // Composite index for latest fingerprint lookup\n index(\"fingerprints_workspace_received_idx\").on(table.workspaceId, table.receivedAt),\n]);\n// Relations\nexport const fingerprintsRelations = relations(fingerprints, ({ one }) => ({\n user: one(user, {\n fields: [fingerprints.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Flywheel Pipeline Schema\n *\n * Session intelligence: ingest, reflection, outcome labeling.\n * Converts closing ceremony session data into structured intelligence.\n *\n * PRIVACY: Only metadata syncs - file content NEVER leaves device.\n * CONSENT: Personal sync and shared learning are separate controls.\n * IDENTITY: userId is stamped server-side from auth context, never from client.\n */\nimport { relations } from \"drizzle-orm\";\nimport { boolean, index, integer, jsonb, pgTable, real, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { organization, user } from \"../postgres.js\";\n// =============================================================================\n// USER SYNC PREFERENCES (personal cloud sync control)\n// =============================================================================\nexport const userSyncPreferences = pgTable(\"user_sync_preferences\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n personalSyncEnabled: boolean(\"personal_sync_enabled\").notNull().default(false),\n choiceMadeAt: timestamp(\"choice_made_at\", { withTimezone: true }),\n lastSyncedFromDevice: timestamp(\"last_synced_from_device\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n}, (table) => ({\n userIdx: index(\"user_sync_preferences_user_idx\").on(table.userId),\n}));\nexport const userSyncPreferencesRelations = relations(userSyncPreferences, ({ one }) => ({\n user: one(user, {\n fields: [userSyncPreferences.userId],\n references: [user.id],\n }),\n}));\n// =============================================================================\n// USER CONTRIBUTION PREFERENCES (shared learning control)\n// =============================================================================\nexport const userContributionPreferences = pgTable(\"user_contribution_preferences\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n sharedLearningEnabled: boolean(\"shared_learning_enabled\").notNull().default(false),\n choiceMadeAt: timestamp(\"choice_made_at\", { withTimezone: true }),\n promptVersion: text(\"prompt_version\").notNull().default(\"1.0\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n}, (table) => ({\n userIdx: index(\"user_contribution_preferences_user_idx\").on(table.userId),\n}));\nexport const userContributionPreferencesRelations = relations(userContributionPreferences, ({ one }) => ({\n user: one(user, {\n fields: [userContributionPreferences.userId],\n references: [user.id],\n }),\n}));\n// =============================================================================\n// SESSION INGESTS (canonical session record)\n// =============================================================================\nexport const sessionIngests = pgTable(\"session_ingests\", {\n // Internal DB key\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Stable client identifier\n externalSessionId: text(\"external_session_id\").notNull().unique(),\n // Stamped server-side from auth context - never from client payload\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n tier: text(\"tier\").notNull(),\n activeOrgId: text(\"active_org_id\").references(() => organization.id, { onDelete: \"set null\" }),\n // Effective scopes at ingest time (derived, stored for audit)\n scopePersonal: boolean(\"scope_personal\").notNull().default(false),\n scopeGlobal: boolean(\"scope_global\").notNull().default(false),\n scopeOrgMode: text(\"scope_org_mode\").$type().notNull().default(\"none\"),\n // Consent snapshot from ceremony\n consentPersonalSync: boolean(\"consent_personal_sync\").notNull(),\n consentSharedLearning: boolean(\"consent_shared_learning\").notNull(),\n consentedAt: timestamp(\"consented_at\", { withTimezone: true }).notNull(),\n consentPromptVersion: text(\"consent_prompt_version\").notNull(),\n // Session summary (metadata only)\n startedAt: timestamp(\"started_at\", { withTimezone: true }).notNull(),\n endedAt: timestamp(\"ended_at\", { withTimezone: true }).notNull(),\n durationMs: integer(\"duration_ms\").notNull(),\n filesTouchedCount: integer(\"files_touched_count\").notNull().default(0),\n serviceBoundariesCrossed: integer(\"service_boundaries_crossed\").notNull().default(0),\n peakRiskScore: real(\"peak_risk_score\").notNull().default(0),\n riskEventCount: integer(\"risk_event_count\").notNull().default(0),\n rollbackEventCount: integer(\"rollback_event_count\").notNull().default(0),\n aiAttributedRatio: real(\"ai_attributed_ratio\").notNull().default(0),\n aiToolsActive: text(\"ai_tools_active\").array().notNull().default([]),\n // Full payload stored for worker access (no blobs in queues)\n payload: jsonb(\"payload\").notNull(),\n // Outcome (populated by outcome labeling job)\n outcome: text(\"outcome\").$type().default(\"pending\"),\n outcomeLabeledAt: timestamp(\"outcome_labeled_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n}, (table) => ({\n // User lookup for dashboard\n userIdx: index(\"session_ingests_user_idx\").on(table.userId, table.createdAt),\n // Organization lookup for team dashboards\n orgIdx: index(\"session_ingests_org_idx\").on(table.activeOrgId, table.createdAt),\n // Outcome lookup for pending labeling jobs\n outcomeIdx: index(\"session_ingests_outcome_idx\").on(table.outcome),\n // External session ID lookup\n externalIdIdx: index(\"session_ingests_external_id_idx\").on(table.externalSessionId),\n}));\nexport const sessionIngestsRelations = relations(sessionIngests, ({ one, many }) => ({\n user: one(user, {\n fields: [sessionIngests.userId],\n references: [user.id],\n }),\n organization: one(organization, {\n fields: [sessionIngests.activeOrgId],\n references: [organization.id],\n }),\n reflections: many(sessionReflections),\n outcomeLabels: many(outcomeLabels),\n}));\n// =============================================================================\n// SESSION REFLECTIONS\n// =============================================================================\nexport const sessionReflections = pgTable(\"session_reflections\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // FK to canonical record by internal ID\n sessionIngestId: uuid(\"session_ingest_id\")\n .notNull()\n .references(() => sessionIngests.id, { onDelete: \"cascade\" }),\n // Denormalized for query convenience - always consistent with session_ingests\n externalSessionId: text(\"external_session_id\").notNull(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id),\n activeOrgId: text(\"active_org_id\").references(() => organization.id, { onDelete: \"set null\" }),\n scopeGlobal: boolean(\"scope_global\").notNull(),\n qualifiedAt: timestamp(\"qualified_at\", { withTimezone: true }).notNull(),\n enqueuedAt: timestamp(\"enqueued_at\", { withTimezone: true }).notNull(),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n source: text(\"source\").$type(),\n modelUsed: text(\"model_used\"),\n creditsConsumed: real(\"credits_consumed\"),\n reflection: jsonb(\"reflection\"),\n failed: boolean(\"failed\").notNull().default(false),\n failureReason: text(\"failure_reason\"),\n failureCount: integer(\"failure_count\").notNull().default(0),\n}, (table) => ({\n sessionIdx: index(\"session_reflections_session_idx\").on(table.sessionIngestId),\n userIdx: index(\"session_reflections_user_idx\").on(table.userId, table.completedAt),\n externalIdIdx: index(\"session_reflections_external_id_idx\").on(table.externalSessionId),\n}));\nexport const sessionReflectionsRelations = relations(sessionReflections, ({ one }) => ({\n sessionIngest: one(sessionIngests, {\n fields: [sessionReflections.sessionIngestId],\n references: [sessionIngests.id],\n }),\n user: one(user, {\n fields: [sessionReflections.userId],\n references: [user.id],\n }),\n organization: one(organization, {\n fields: [sessionReflections.activeOrgId],\n references: [organization.id],\n }),\n}));\n// =============================================================================\n// OUTCOME LABELS (anonymized training layer - no user_id FK by design)\n// =============================================================================\nexport const outcomeLabels = pgTable(\"outcome_labels\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n sessionIngestId: uuid(\"session_ingest_id\")\n .notNull()\n .references(() => sessionIngests.id, { onDelete: \"cascade\" }),\n externalSessionId: text(\"external_session_id\").notNull(),\n // No user_id by design - this is the anonymized training layer\n labelType: text(\"label_type\").$type().notNull(),\n confidence: real(\"confidence\").notNull(),\n observationWindowDays: integer(\"observation_window_days\").notNull().default(7),\n labeledAt: timestamp(\"labeled_at\", { withTimezone: true }).notNull(),\n observedAt: timestamp(\"observed_at\", { withTimezone: true }),\n signalData: jsonb(\"signal_data\"),\n}, (table) => ({\n sessionIdx: index(\"outcome_labels_session_idx\").on(table.sessionIngestId),\n labelTypeIdx: index(\"outcome_labels_label_type_idx\").on(table.labelType),\n externalIdIdx: index(\"outcome_labels_external_id_idx\").on(table.externalSessionId),\n}));\nexport const outcomeLabelsRelations = relations(outcomeLabels, ({ one }) => ({\n sessionIngest: one(sessionIngests, {\n fields: [outcomeLabels.sessionIngestId],\n references: [sessionIngests.id],\n }),\n}));\n// =============================================================================\n// SESSION INGEST LOG (audit trail for every flush)\n// =============================================================================\nexport const sessionIngestLog = pgTable(\"session_ingest_log\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n externalSessionId: text(\"external_session_id\"),\n scopesApplied: text(\"scopes_applied\").array().notNull(),\n activeOrgId: text(\"active_org_id\").references(() => organization.id, { onDelete: \"set null\" }),\n clientType: text(\"client_type\").$type().notNull().default(\"unknown\"),\n requestPath: text(\"request_path\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n}, (table) => ({\n userIdx: index(\"session_ingest_log_user_idx\").on(table.userId, table.createdAt),\n orgIdx: index(\"session_ingest_log_org_idx\").on(table.activeOrgId, table.createdAt),\n}));\nexport const sessionIngestLogRelations = relations(sessionIngestLog, ({ one }) => ({\n user: one(user, {\n fields: [sessionIngestLog.userId],\n references: [user.id],\n }),\n organization: one(organization, {\n fields: [sessionIngestLog.activeOrgId],\n references: [organization.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, decimal, index, integer, jsonb, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * GitHub Installations - GitHub App integration tracking\n *\n * Stores GitHub App installation metadata and webhook configuration.\n * Links GitHub organizations/users to Vreko users for ground truth collection.\n */\nexport const githubInstallations = pgTable(\"github_installations\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => crypto.randomUUID()),\n // Vreko user who installed the app\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // GitHub installation details\n githubInstallationId: text(\"github_installation_id\").unique().notNull(),\n githubAccountId: text(\"github_account_id\").notNull(), // User or org ID\n githubAccountType: text(\"github_account_type\").notNull(), // 'User' or 'Organization'\n githubAccountLogin: text(\"github_account_login\").notNull(), // Username or org name\n // Permissions granted\n permissions: jsonb(\"permissions\").$type().default({}),\n repositorySelection: text(\"repository_selection\").notNull(), // 'all' or 'selected'\n selectedRepositoryIds: jsonb(\"selected_repository_ids\").$type().default([]),\n // Webhook configuration\n webhookId: text(\"webhook_id\"),\n webhookSecret: text(\"webhook_secret\"), // Encrypted\n webhookActive: boolean(\"webhook_active\").default(true),\n // Status\n suspended: boolean(\"suspended\").default(false),\n suspendedAt: timestamp(\"suspended_at\"),\n // Timestamps\n installedAt: timestamp(\"installed_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n}, (table) => [\n // Unique GitHub installation per app\n uniqueIndex(\"github_installations_github_id_idx\").on(table.githubInstallationId),\n // Query by Vreko user\n index(\"github_installations_user_idx\").on(table.userId),\n // Query active installations\n index(\"github_installations_active_idx\").on(table.suspended),\n]);\n/**\n * GitHub PR Analyses - Pull request AI contribution analysis\n *\n * Stores analysis results from GitHub PR checks.\n * Provides ground truth for trust calibration via Co-authored-by tags.\n */\nexport const githubPrAnalyses = pgTable(\"github_pr_analyses\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => crypto.randomUUID()),\n // Link to installation\n installationId: text(\"installation_id\")\n .notNull()\n .references(() => githubInstallations.id, { onDelete: \"cascade\" }),\n // PR identification (hashed for privacy)\n repoId: text(\"repo_id\").notNull(), // Hashed\n prNumber: integer(\"pr_number\").notNull(),\n // Analysis results\n riskScore: integer(\"risk_score\").notNull(), // 0-100\n aiContributionPercentage: decimal(\"ai_contribution_percentage\", { precision: 5, scale: 2 }), // 0.00-100.00\n estimatedAiTool: text(\"estimated_ai_tool\"), // 'cursor', 'copilot', etc.\n // Metrics\n filesChanged: integer(\"files_changed\").notNull(),\n linesAdded: integer(\"lines_added\").notNull(),\n linesRemoved: integer(\"lines_removed\").notNull(),\n // Patterns detected\n patternsDetected: jsonb(\"patterns_detected\").$type().default([]),\n // Check status\n checkStatus: text(\"check_status\").notNull(), // 'queued', 'in_progress', 'completed'\n checkConclusion: text(\"check_conclusion\"), // 'success', 'neutral', 'failure'\n checkDetailsUrl: text(\"check_details_url\"),\n // Ground truth (if commit has Co-authored-by)\n hasCoAuthorTag: boolean(\"has_co_author_tag\").default(false),\n coAuthorTools: jsonb(\"co_author_tools\").$type().default([]),\n fedToCalibration: boolean(\"fed_to_calibration\").default(false),\n // Timestamps\n analyzedAt: timestamp(\"analyzed_at\").defaultNow().notNull(),\n}, (table) => [\n // Unique: one analysis per PR\n uniqueIndex(\"github_pr_analyses_repo_pr_idx\").on(table.repoId, table.prNumber),\n // Query by installation\n index(\"github_pr_analyses_installation_idx\").on(table.installationId),\n // Query ground truth data\n index(\"github_pr_analyses_ground_truth_idx\").on(table.hasCoAuthorTag, table.fedToCalibration),\n]);\nexport const githubInstallationsRelations = relations(githubInstallations, ({ one, many }) => ({\n user: one(user, {\n fields: [githubInstallations.userId],\n references: [user.id],\n }),\n prAnalyses: many(githubPrAnalyses),\n}));\nexport const githubPrAnalysesRelations = relations(githubPrAnalyses, ({ one }) => ({\n installation: one(githubInstallations, {\n fields: [githubPrAnalyses.installationId],\n references: [githubInstallations.id],\n }),\n}));\n","import { and, eq, sql } from \"drizzle-orm\";\nimport { integer, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\n// ============================================================================\n// Alpha Invite Codes\n// ============================================================================\n// Single-use or multi-use codes gating console.vreko.dev registration.\n// Each code carries an optional label for cohort tracking.\n// Replaces the Pioneer invite-code system with a minimal, auditable model.\n// ============================================================================\nexport const inviteCodes = pgTable(\"invite_codes\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n code: text(\"code\").notNull().unique(),\n // Creator (null = system-generated)\n createdBy: text(\"created_by\"),\n // How many times this code can be redeemed\n maxUses: integer(\"max_uses\").notNull().default(1),\n // Running count - incremented atomically on each redemption\n currentUses: integer(\"current_uses\").notNull().default(0),\n // Optional human-readable cohort label (e.g. \"beta-march-2026\")\n label: text(\"label\"),\n // Numeric cohort identifier for the accept flow (default cohort 1)\n cohort: integer(\"cohort\").notNull().default(1),\n // Optional hard expiry\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n // Soft-delete: set to revoke a code without losing audit history\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n // Optional pre-authorized email - pioneer email-first access flow\n invitedEmail: text(\"invited_email\"),\n});\n// ============================================================================\n// Pending API Keys\n// ============================================================================\n// Short-lived (5-min TTL) table that bridges the gap between API key creation\n// in the server-side user.create.after hook and the client reading it on the\n// /activate/welcome page. Only one pending key per userId at a time.\n// ============================================================================\nexport const pendingApiKeys = pgTable(\"pending_api_keys\", {\n userId: text(\"user_id\").primaryKey(),\n rawKey: text(\"raw_key\").notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n // Discriminator for multi-purpose use (e.g. 'api_key' | 'pioneer_magic_claim')\n purpose: text(\"purpose\").notNull().default(\"api_key\"),\n});\n// ============================================================================\n// Helper: atomic invite-code burn\n// ============================================================================\n// Returns the updated row if the burn succeeded, or null if the code was\n// already exhausted (concurrent redemption caught here).\n// ============================================================================\nexport async function burnInviteCode(\n// biome-ignore lint/suspicious/noExplicitAny: accepts any Drizzle NodePgDatabase variant\ndb, codeId) {\n const rows = await db\n .update(inviteCodes)\n .set({\n currentUses: sql `${inviteCodes.currentUses} + 1`,\n updatedAt: new Date(),\n })\n .where(and(eq(inviteCodes.id, codeId), sql `${inviteCodes.currentUses} < ${inviteCodes.maxUses}`))\n .returning();\n return rows[0] ?? null;\n}\n","import { integer, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nexport const leads = pgTable(\"leads\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n email: text(\"email\").notNull().unique(),\n intent: text(\"intent\"), // 'solo' | 'team'\n referralCode: text(\"referral_code\"),\n source: text(\"source\").notNull().default(\"homepage\"),\n queuePosition: integer(\"queue_position\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n});\n","// ESM imports fixed for Node.js v22+\nimport { sql } from \"drizzle-orm\";\nimport { boolean, check, index, integer, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys } from \"./api-keys.js\";\nexport const loops = pgTable(\"loops\", {\n id: uuid(\"id\").primaryKey().defaultRandom().notNull(),\n userId: text(\"user_id\").notNull(),\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .references(() => apiKeys.id, { onDelete: \"cascade\" }),\n sessionId: text(\"session_id\"),\n requestId: text(\"request_id\").notNull(),\n loopType: text(\"loop_type\").notNull(),\n iterationCount: integer(\"iteration_count\").default(0),\n durationMs: integer(\"duration_ms\"),\n success: boolean(\"success\").default(false),\n errorMessage: text(\"error_message\"),\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n}, (table) => {\n return {\n userCreatedAtIndex: index(\"loops_user_created_at_idx\").on(table.userId, table.createdAt),\n apiKeyCreatedAtIndex: index(\"loops_api_key_created_at_idx\").on(table.apiKeyId, table.createdAt),\n loopTypeCheck: check(\"loops_loop_type_check\", sql `loop_type IN ('retry', 'recovery', 'optimization', 'validation')`),\n };\n});\n","// ESM imports fixed for Node.js v22+\n/**\n * MCP Persistent Storage Schema\n *\n * Drizzle ORM schema for MCP observations, tool invocations, and extension sync state.\n * These tables persist data from the MCP bridge to prevent data loss on server restart.\n *\n * Tables:\n * - mcp_observations: Stores observations from VSCode extension\n * - mcp_tool_invocations: Tracks tool calls for billing and analytics\n * - extension_sync_state: Manages offline-first sync state\n */\nimport { relations, sql } from \"drizzle-orm\";\nimport { boolean, index, integer, jsonb, pgEnum, pgTable, text, timestamp, unique, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n// ============================================================================\n// Enums\n// ============================================================================\nexport const observationTypeEnum = pgEnum(\"observation_type\", [\"risk\", \"pattern\", \"suggestion\", \"warning\", \"progress\"]);\nexport const observationSeverityEnum = pgEnum(\"observation_severity\", [\"low\", \"medium\", \"high\", \"critical\"]);\nexport const observationSourceEnum = pgEnum(\"observation_source\", [\"extension\", \"mcp-server\", \"dashboard\", \"api\"]);\nexport const invocationTypeEnum = pgEnum(\"invocation_type\", [\"inline-edit\", \"chat\", \"command\", \"suggestion\"]);\nexport const invocationStatusEnum = pgEnum(\"invocation_status\", [\"pending\", \"success\", \"error\", \"timeout\"]);\nexport const deviceTypeEnum = pgEnum(\"device_type\", [\"vscode\", \"cursor\", \"windsurf\", \"cli\"]);\nexport const conflictStrategyEnum = pgEnum(\"conflict_resolution_strategy\", [\"server-wins\", \"client-wins\", \"merge\"]);\n// ============================================================================\n// MCP Observations Table\n// ============================================================================\nexport const mcpObservations = pgTable(\"mcp_observations\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n workspaceId: text(\"workspace_id\").notNull(),\n userId: text(\"user_id\").references(() => user.id, { onDelete: \"cascade\" }),\n // Observation content\n type: observationTypeEnum(\"type\").notNull(),\n severity: observationSeverityEnum(\"severity\"),\n message: text(\"message\").notNull(),\n context: jsonb(\"context\").default({}),\n filePath: text(\"file_path\"),\n lineNumber: integer(\"line_number\"),\n // Source tracking\n source: observationSourceEnum(\"source\").default(\"extension\"),\n toolName: text(\"tool_name\"),\n // Processing status\n processed: boolean(\"processed\").default(false),\n processedAt: timestamp(\"processed_at\", { withTimezone: true }),\n // Idempotency\n idempotencyKey: text(\"idempotency_key\").unique(),\n // CRDT sync metadata\n syncVersion: integer(\"sync_version\").default(0),\n deviceId: text(\"device_id\"),\n // Timestamps\n observedAt: timestamp(\"observed_at\", { withTimezone: true }).defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => ({\n // Performance indexes\n workspaceIdx: index(\"idx_mcp_observations_workspace\").on(table.workspaceId, table.createdAt),\n userIdx: index(\"idx_mcp_observations_user\").on(table.userId, table.createdAt),\n typeIdx: index(\"idx_mcp_observations_type\")\n .on(table.type, table.createdAt)\n .where(sql `${table.processed} = false`),\n idempotencyIdx: index(\"idx_mcp_observations_idempotency\")\n .on(table.idempotencyKey)\n .where(sql `${table.idempotencyKey} IS NOT NULL`),\n syncIdx: index(\"idx_mcp_observations_sync\").on(table.deviceId, table.syncVersion),\n contextIdx: index(\"idx_mcp_observations_context\").using(\"gin\", table.context),\n}));\nexport const mcpObservationsRelations = relations(mcpObservations, ({ one }) => ({\n user: one(user, {\n fields: [mcpObservations.userId],\n references: [user.id],\n }),\n}));\n// ============================================================================\n// MCP Tool Invocations Table\n// ============================================================================\nexport const mcpToolInvocations = pgTable(\"mcp_tool_invocations\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n workspaceId: text(\"workspace_id\").notNull(),\n userId: text(\"user_id\").references(() => user.id, { onDelete: \"cascade\" }),\n // Invocation details\n toolName: text(\"tool_name\").notNull(),\n toolVersion: text(\"tool_version\"),\n invocationType: invocationTypeEnum(\"invocation_type\"),\n // Request/Response tracking\n requestPayload: jsonb(\"request_payload\"),\n responsePayload: jsonb(\"response_payload\"),\n status: invocationStatusEnum(\"status\"),\n errorMessage: text(\"error_message\"),\n // Performance metrics\n startedAt: timestamp(\"started_at\", { withTimezone: true }).defaultNow(),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n durationMs: integer(\"duration_ms\"),\n // Token usage\n inputTokens: integer(\"input_tokens\").default(0),\n outputTokens: integer(\"output_tokens\").default(0),\n // Idempotency\n idempotencyKey: text(\"idempotency_key\").unique(),\n // Source tracking\n source: text(\"source\").default(\"extension\"),\n sessionId: text(\"session_id\"),\n // Timestamps\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => ({\n // Performance indexes\n workspaceIdx: index(\"idx_mcp_invocations_workspace\").on(table.workspaceId, table.createdAt),\n userIdx: index(\"idx_mcp_invocations_user\").on(table.userId, table.createdAt),\n toolIdx: index(\"idx_mcp_invocations_tool\").on(table.toolName, table.createdAt),\n statusIdx: index(\"idx_mcp_invocations_status\")\n .on(table.status, table.createdAt)\n .where(sql `${table.status} = 'pending'`),\n sessionIdx: index(\"idx_mcp_invocations_session\").on(table.sessionId, table.createdAt),\n billingIdx: index(\"idx_mcp_invocations_billing\")\n .on(table.userId, table.createdAt)\n .where(sql `${table.status} = 'success'`),\n}));\nexport const mcpToolInvocationsRelations = relations(mcpToolInvocations, ({ one }) => ({\n user: one(user, {\n fields: [mcpToolInvocations.userId],\n references: [user.id],\n }),\n}));\n// ============================================================================\n// Extension Sync State Table\n// ============================================================================\nexport const extensionSyncState = pgTable(\"extension_sync_state\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n workspaceId: text(\"workspace_id\").notNull(),\n deviceId: text(\"device_id\").notNull(),\n // Sync metadata\n lastSyncAt: timestamp(\"last_sync_at\", { withTimezone: true }),\n syncVersion: integer(\"sync_version\").default(0),\n // Device info\n deviceType: deviceTypeEnum(\"device_type\"),\n deviceName: text(\"device_name\"),\n // Sync window\n syncWindowStart: timestamp(\"sync_window_start\", { withTimezone: true }),\n syncWindowEnd: timestamp(\"sync_window_end\", { withTimezone: true }),\n // Pending changes\n pendingChangesCount: integer(\"pending_changes_count\").default(0),\n pendingChanges: jsonb(\"pending_changes\").default([]),\n // Conflict resolution\n lastConflictAt: timestamp(\"last_conflict_at\", { withTimezone: true }),\n conflictResolutionStrategy: conflictStrategyEnum(\"conflict_resolution_strategy\").default(\"server-wins\"),\n // Health check\n lastHeartbeatAt: timestamp(\"last_heartbeat_at\", { withTimezone: true }),\n isOnline: boolean(\"is_online\").default(true),\n // Timestamps\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => ({\n // Unique constraint: one sync state per user/workspace/device\n uniqueUserWorkspaceDevice: unique().on(table.userId, table.workspaceId, table.deviceId),\n // Performance indexes\n userIdx: index(\"idx_sync_state_user\").on(table.userId, table.lastSyncAt),\n workspaceIdx: index(\"idx_sync_state_workspace\").on(table.workspaceId, table.lastSyncAt),\n pendingIdx: index(\"idx_sync_state_pending\")\n .on(table.userId, table.pendingChangesCount)\n .where(sql `${table.pendingChangesCount} > 0`),\n heartbeatIdx: index(\"idx_sync_state_heartbeat\").on(table.lastHeartbeatAt).where(sql `${table.isOnline} = true`),\n}));\nexport const extensionSyncStateRelations = relations(extensionSyncState, ({ one }) => ({\n user: one(user, {\n fields: [extensionSyncState.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { integer, jsonb, pgTable, real, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * MCP Aggregated Learnings - Cross-workspace pattern aggregation\n * Privacy: Pattern keys only, no code content (C-006)\n *\n * Auto-promotion rules:\n * - 2+ workspaces with same pattern → promoted to user preferences\n * - High confidence (>0.8) → included in recommendations\n */\nexport const mcpAggregatedLearnings = pgTable(\"mcp_aggregated_learnings\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Pattern identification (no code content)\n patternKey: text(\"pattern_key\").notNull(), // e.g., \"typescript\", \"react-hooks\", \"vitest\"\n patternType: text(\"pattern_type\").notNull(), // \"stack\", \"practice\", \"preference\"\n // Cross-workspace aggregation\n workspaceCount: integer(\"workspace_count\").default(1).notNull(),\n workspaceIds: jsonb(\"workspace_ids\").default(JSON.stringify([])).notNull(), // Array of workspace IDs seen\n totalOccurrences: integer(\"total_occurrences\").default(1).notNull(),\n confidence: real(\"confidence\").default(0.5).notNull(), // 0.0-1.0\n // Last seen metadata\n lastSeenAt: timestamp(\"last_seen_at\").defaultNow().notNull(),\n firstSeenAt: timestamp(\"first_seen_at\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\nexport const mcpAggregatedLearningsRelations = relations(mcpAggregatedLearnings, ({ one }) => ({\n user: one(user, {\n fields: [mcpAggregatedLearnings.userId],\n references: [user.id],\n }),\n}));\n/**\n * MCP Activity Events - Metadata-only activity tracking\n * Privacy: Event types and counts only, never code content (C-006)\n */\nexport const mcpActivityEvents = pgTable(\"mcp_activity_events\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n sessionId: uuid(\"session_id\").notNull(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Event metadata (no code content)\n eventType: text(\"event_type\").notNull(), // \"snapshot_created\", \"risk_analyzed\", \"learning_recorded\"\n // Aggregate data only\n fileCount: integer(\"file_count\"), // Number of files, not paths\n totalBytes: integer(\"total_bytes\"), // Size, not content\n riskLevel: text(\"risk_level\"), // \"low\", \"medium\", \"high\", \"critical\"\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n});\nexport const mcpActivityEventsRelations = relations(mcpActivityEvents, ({ one }) => ({\n user: one(user, {\n fields: [mcpActivityEvents.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * MCP Sessions - Tracks development sessions for cross-workspace learning\n * Privacy: Metadata only, no code content (C-006)\n */\nexport const mcpSessions = pgTable(\"mcp_sessions\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n workspaceId: text(\"workspace_id\").notNull(), // Hashed workspace identifier\n // Session metadata\n taskDescription: text(\"task_description\"), // User-provided, not code\n startedAt: timestamp(\"started_at\").defaultNow().notNull(),\n endedAt: timestamp(\"ended_at\"),\n // Aggregate metrics (no code content)\n snapshotCount: integer(\"snapshot_count\").default(0),\n riskAnalysisCount: integer(\"risk_analysis_count\").default(0),\n learningsRecorded: integer(\"learnings_recorded\").default(0),\n // Framework/stack detection (metadata only)\n detectedStack: jsonb(\"detected_stack\").default(JSON.stringify({})),\n // Example: { frameworks: [\"nextjs\"], languages: [\"typescript\"], packageManager: \"pnpm\" }\n // Idempotency key for flush operations (prevents duplicate writes on retry)\n flushIdempotencyKey: text(\"flush_idempotency_key\").unique(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\nexport const mcpSessionsRelations = relations(mcpSessions, ({ one }) => ({\n user: one(user, {\n fields: [mcpSessions.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { index, integer, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\n// Nurture track table\n// Email sequencing and nurture path enrollment tracking\nexport const nurtureTrack = pgTable(\"nurture_track\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Nurture campaign tracking\n trackName: text(\"track_name\").notNull(), // \"onboarding\", \"engagement\", \"reactivation\"\n trackVersion: text(\"track_version\").notNull().default(\"1\"),\n // Step in nurture sequence\n currentStep: integer(\"current_step\").notNull().default(0),\n totalSteps: integer(\"total_steps\").notNull(),\n // Email details for current step\n lastEmailSentId: text(\"last_email_sent_id\"),\n lastEmailSentAt: timestamp(\"last_email_sent_at\"),\n lastEmailOpenedAt: timestamp(\"last_email_opened_at\"),\n lastEmailClickedAt: timestamp(\"last_email_clicked_at\"),\n // Engagement tracking\n emailsSent: integer(\"emails_sent\").notNull().default(0),\n emailsOpened: integer(\"emails_opened\").notNull().default(0),\n emailsClicked: integer(\"emails_clicked\").notNull().default(0),\n unsubscribed: text(\"unsubscribed\").notNull().default(\"false\"),\n // Pause/resume tracking\n paused: text(\"paused\").notNull().default(\"false\"),\n pausedAt: timestamp(\"paused_at\"),\n resumedAt: timestamp(\"resumed_at\"),\n // Completion status\n completedAt: timestamp(\"completed_at\"),\n enrolledAt: timestamp(\"enrolled_at\").notNull().defaultNow(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => ({\n userIdIdx: index(\"nurture_track_user_id_idx\").on(table.userId),\n trackNameIdx: index(\"nurture_track_track_name_idx\").on(table.trackName),\n pausedIdx: index(\"nurture_track_paused_idx\").on(table.paused),\n completedIdx: index(\"nurture_track_completed_at_idx\").on(table.completedAt),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { integer, jsonb, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { organization } from \"../postgres.js\";\n// Organization daily metrics table\n// Stores aggregated metrics for each organization on a daily basis\nexport const orgDailyMetrics = pgTable(\"org_daily_metrics\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n organizationId: text(\"organization_id\")\n .notNull()\n .references(() => organization.id, { onDelete: \"cascade\" }),\n date: timestamp(\"date\").notNull(),\n // Incident metrics\n incidentsDetected: integer(\"incidents_detected\").notNull().default(0),\n incidentsPrevented: integer(\"incidents_prevented\").notNull().default(0),\n timeToRestoreMs: integer(\"time_to_restore_ms\"), // Average time to restore\n // Snapshot metrics\n snapshotsCreated: integer(\"snapshots_created\").notNull().default(0),\n snapshotsRestored: integer(\"snapshots_restored\").notNull().default(0),\n bytesSaved: integer(\"bytes_saved\").notNull().default(0),\n // Risk metrics\n highSeverityRisks: integer(\"high_severity_risks\").notNull().default(0),\n mediumSeverityRisks: integer(\"medium_severity_risks\").notNull().default(0),\n lowSeverityRisks: integer(\"low_severity_risks\").notNull().default(0),\n // API usage metrics\n apiCalls: integer(\"api_calls\").notNull().default(0),\n apiErrors: integer(\"api_errors\").notNull().default(0),\n // Feature adoption metrics\n featuresUsed: jsonb(\"features_used\").default(JSON.stringify({})), // { \"feature_name\": count }\n // Performance metrics\n avgResponseTimeMs: integer(\"avg_response_time_ms\"),\n p95ResponseTimeMs: integer(\"p95_response_time_ms\"),\n // Client metrics\n activeUsers: integer(\"active_users\").notNull().default(0),\n clientVersions: jsonb(\"client_versions\").default(JSON.stringify({})), // { \"version\": count }\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => ({\n orgDateUnique: uniqueIndex(\"org_daily_metrics_org_date_unique\").on(table.organizationId, table.date),\n dateIndex: uniqueIndex(\"org_daily_metrics_date_idx\").on(table.date),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, customType, decimal, index, integer, pgTable, text, timestamp, uniqueIndex, } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Custom vector type for pgvector extension\n * Stores 256-dimensional float vectors for similarity search\n */\nconst vector256 = customType({\n dataType() {\n return \"vector(256)\";\n },\n toDriver(value) {\n return `[${value.join(\",\")}]`;\n },\n fromDriver(value) {\n // Parse vector string like \"[0.1,0.2,...]\" to array\n return value\n .replace(/[[\\]]/g, \"\")\n .split(\",\")\n .map((v) => Number.parseFloat(v));\n },\n});\n/**\n * Patterns - Code pattern library with vector similarity search\n *\n * Stores pattern signatures with pgvector embeddings for fast similarity matching.\n * Supports both local (per-user) and global (anonymized community) patterns.\n *\n * REQUIRES: pgvector extension enabled in database (Migration 0011)\n */\nexport const patterns = pgTable(\"patterns\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => crypto.randomUUID()),\n // Optional ownership (null = global pattern)\n userId: text(\"user_id\").references(() => user.id, { onDelete: \"cascade\" }),\n // Pattern identification\n patternSignature: text(\"pattern_signature\").unique().notNull(), // AST-based hash\n // Vector embedding for similarity search (256 dimensions)\n // P0-1: Cast to vector(256) via migration 0011_enable_pgvector.sql\n embedding: vector256(\"embedding\"),\n // Classification\n patternType: text(\"pattern_type\").notNull(), // 'dangerous', 'beneficial', 'neutral'\n toolAffinity: text(\"tool_affinity\").array(), // ['cursor', 'copilot', ...]\n fileTypes: text(\"file_types\").array(), // ['.ts', '.tsx', ...]\n // Success metrics\n occurrenceCount: integer(\"occurrence_count\").default(1).notNull(),\n successRate: decimal(\"success_rate\", { precision: 4, scale: 3 }), // 0.000-1.000\n // Timestamps\n firstSeenAt: timestamp(\"first_seen_at\").defaultNow().notNull(),\n lastSeenAt: timestamp(\"last_seen_at\").defaultNow().notNull(),\n // Global vs local\n isGlobal: boolean(\"is_global\").default(false).notNull(),\n}, (table) => [\n // Unique pattern signature\n uniqueIndex(\"patterns_signature_idx\").on(table.patternSignature),\n // Query by user\n index(\"patterns_user_idx\").on(table.userId),\n // Query by type\n index(\"patterns_type_idx\").on(table.patternType),\n // Query global patterns\n index(\"patterns_global_idx\").on(table.isGlobal),\n // P0-1: HNSW index for vector similarity search (created in migration 0011)\n // CREATE INDEX patterns_embedding_hnsw_idx ON patterns USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64);\n]);\nexport const patternsRelations = relations(patterns, ({ one }) => ({\n user: one(user, {\n fields: [patterns.userId],\n references: [user.id],\n }),\n}));\n","import { boolean, index, integer, jsonb, pgEnum, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\n// ============================================================================\n// Enums\n// ============================================================================\n// Pioneer tiers removed per CANON.md (April decision)\n// No tier names: Seedling, Grower, Cultivator, Guardian are dead\n// No point actions, weekly caps, or leaderboard mechanics\n// No gamification of any kind\nexport const pioneerCodeStatusEnum = pgEnum(\"pioneer_code_status\", [\n \"active\",\n \"exhausted\",\n \"deactivated\",\n \"expired\",\n \"revoked\",\n]);\n// ============================================================================\n// pioneers\n// ============================================================================\nexport const pioneers = pgTable(\"pioneers\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\").notNull().unique(),\n username: text(\"username\").notNull(),\n githubId: text(\"github_id\").notNull().unique(),\n contactEmail: text(\"contact_email\"),\n // Tier and points removed per CANON.md (April decision)\n joinedAt: timestamp(\"joined_at\").notNull().defaultNow(),\n referralCode: text(\"referral_code\").notNull().unique(),\n githubStarred: boolean(\"github_starred\").notNull().default(false),\n // Leaderboard visibility removed per CANON.md\n referredBy: text(\"referred_by\"),\n lastSyncedAt: timestamp(\"last_synced_at\"),\n // Survey fields (Spec 2 Phase 5)\n surveyCompletedAt: timestamp(\"survey_completed_at\"),\n experienceLevel: text(\"experience_level\"),\n codebaseSize: text(\"codebase_size\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (t) => []);\n// ============================================================================\n// pioneer_actions - REMOVED per CANON.md (April decision)\n// No point actions, weekly caps, or leaderboard mechanics\n// ============================================================================\n// ============================================================================\n// pioneer_tier_history - REMOVED per CANON.md (April decision)\n// No tier names or progression\n// ============================================================================\n// ============================================================================\n// pioneer_codes\n// ============================================================================\nexport const pioneerCodes = pgTable(\"pioneer_codes\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n code: text(\"code\").notNull().unique(),\n createdBy: text(\"created_by\"),\n maxRedemptions: integer(\"max_redemptions\").notNull().default(1),\n currentRedemptions: integer(\"current_redemptions\").notNull().default(0),\n status: pioneerCodeStatusEnum(\"status\").notNull().default(\"active\"),\n cohort: integer(\"cohort\").notNull().default(1),\n label: text(\"label\"),\n expiresAt: timestamp(\"expires_at\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (t) => [index(\"pioneer_codes_status_idx\").on(t.status), index(\"pioneer_codes_cohort_idx\").on(t.cohort)]);\n// ============================================================================\n// pioneer_redemptions\n// ============================================================================\nexport const pioneerRedemptions = pgTable(\"pioneer_redemptions\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n codeId: text(\"code_id\").notNull(),\n userId: text(\"user_id\").notNull().unique(),\n pioneerId: text(\"pioneer_id\"),\n primaryIde: text(\"primary_ide\").notNull(),\n aiTools: jsonb(\"ai_tools\").notNull().default([]),\n redeemedAt: timestamp(\"redeemed_at\").defaultNow(),\n hubspotSyncedAt: timestamp(\"hubspot_synced_at\"),\n posthogSyncedAt: timestamp(\"posthog_synced_at\"),\n welcomeEmailSentAt: timestamp(\"welcome_email_sent_at\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n}, (t) => [\n index(\"pioneer_redemptions_code_id_idx\").on(t.codeId),\n index(\"pioneer_redemptions_pioneer_id_idx\").on(t.pioneerId),\n]);\n","// ESM imports fixed for Node.js v22+\nimport { sql } from \"drizzle-orm\";\nimport { check, index, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys } from \"./api-keys.js\";\nexport const policyEvaluations = pgTable(\"policy_evaluations\", {\n id: uuid(\"id\").primaryKey().defaultRandom().notNull(),\n userId: text(\"user_id\").notNull(),\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .references(() => apiKeys.id, { onDelete: \"cascade\" }),\n sessionId: text(\"session_id\"),\n requestId: text(\"request_id\").notNull(),\n policyName: text(\"policy_name\").notNull(),\n policyVersion: text(\"policy_version\"),\n evaluationResult: text(\"evaluation_result\"),\n violations: jsonb(\"violations\").default([]),\n remediationSteps: jsonb(\"remediation_steps\").default([]),\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n}, (table) => {\n return {\n userCreatedAtIndex: index(\"policy_evaluations_user_created_at_idx\").on(table.userId, table.createdAt),\n apiKeyCreatedAtIndex: index(\"policy_evaluations_api_key_created_at_idx\").on(table.apiKeyId, table.createdAt),\n evaluationResultCheck: check(\"policy_evaluations_evaluation_result_check\", sql `evaluation_result IN ('passed', 'failed', 'warning', 'error')`),\n };\n});\n","// ESM imports fixed for Node.js v22+\nimport { index, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys } from \"./api-keys.js\";\nexport const postAcceptOutcomes = pgTable(\"post_accept_outcomes\", {\n id: uuid(\"id\").primaryKey().defaultRandom().notNull(),\n userId: text(\"user_id\").notNull(),\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .references(() => apiKeys.id, { onDelete: \"cascade\" }),\n suggestionId: text(\"suggestion_id\").notNull(),\n editsMade: jsonb(\"edits_made\").default([]),\n timeToEditMs: integer(\"time_to_edit_ms\"),\n timeToSubmitMs: integer(\"time_to_submit_ms\"),\n userFeedback: text(\"user_feedback\"),\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n}, (table) => {\n return {\n userCreatedAtIndex: index(\"post_accept_outcomes_user_created_at_idx\").on(table.userId, table.createdAt),\n apiKeyCreatedAtIndex: index(\"post_accept_outcomes_api_key_created_at_idx\").on(table.apiKeyId, table.createdAt),\n };\n});\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, decimal, index, integer, jsonb, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Predictions - ML-based risk and recovery predictions\n *\n * Stores predictions made by the tiered prediction engine and their outcomes.\n * Used for model accuracy tracking and calibration loop feedback.\n */\nexport const predictions = pgTable(\"predictions\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => crypto.randomUUID()),\n // Session context\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n sessionId: text(\"session_id\").notNull(), // Groups related predictions\n // Prediction details\n predictionType: text(\"prediction_type\").notNull(), // 'risk_level', 'will_need_recovery', 'ai_tool_confidence'\n predictedValue: decimal(\"predicted_value\", { precision: 5, scale: 4 }).notNull(), // 0.0000-1.0000\n confidence: decimal(\"confidence\", { precision: 4, scale: 3 }).notNull(), // Model confidence\n // Model metadata\n modelVersion: text(\"model_version\").notNull(),\n source: text(\"source\").notNull(), // 'cache', 'heuristic', 'ml'\n latencyMs: integer(\"latency_ms\"), // How long prediction took\n // Features used (for explainability)\n featuresUsed: jsonb(\"features_used\").$type().default([]),\n contextHash: text(\"context_hash\"), // Anonymized context identifier\n // Outcome tracking\n actualOutcome: boolean(\"actual_outcome\"), // Filled in later\n wasCorrect: boolean(\"was_correct\"), // Prediction accuracy\n outcomeRecordedAt: timestamp(\"outcome_recorded_at\"),\n feedbackSource: text(\"feedback_source\"), // 'user_action', 'build_result', 'recovery_triggered'\n // Timestamps\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n}, (table) => [\n // Query by user\n index(\"predictions_user_idx\").on(table.userId),\n // Query by session\n index(\"predictions_session_idx\").on(table.sessionId),\n // Query by model version (for A/B testing)\n index(\"predictions_model_idx\").on(table.modelVersion),\n // Query accuracy (for monitoring)\n index(\"predictions_accuracy_idx\").on(table.wasCorrect),\n]);\nexport const predictionsRelations = relations(predictions, ({ one }) => ({\n user: one(user, {\n fields: [predictions.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { index, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys } from \"./api-keys.js\";\n/**\n * Quarantine Events - Dead-letter queue for failed telemetry events\n *\n * This table stores events that failed to be processed for any reason,\n * allowing for inspection, debugging, and replay of failed events.\n */\nexport const quarantineEvents = pgTable(\"quarantine_events\", {\n id: uuid(\"id\").primaryKey().defaultRandom().notNull(),\n userId: text(\"user_id\"),\n apiKeyId: text(\"api_key_id\").references(() => apiKeys.id, { onDelete: \"cascade\" }),\n originalEvent: jsonb(\"original_event\").notNull(),\n errorReason: text(\"error_reason\").notNull(),\n errorStack: text(\"error_stack\"),\n attemptedAt: timestamp(\"attempted_at\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n // Retry logic columns (for replayQuarantined implementation)\n retryCount: integer(\"retry_count\").default(0).notNull(),\n lastAttemptedAt: timestamp(\"last_attempted_at\"),\n}, (table) => {\n return {\n attemptedAtIndex: index(\"quarantine_events_attempted_at_idx\").on(table.attemptedAt),\n userCreatedAtIndex: index(\"quarantine_events_user_created_at_idx\").on(table.userId, table.createdAt),\n apiKeyCreatedAtIndex: index(\"quarantine_events_api_key_created_at_idx\").on(table.apiKeyId, table.createdAt),\n };\n});\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { bigint, integer, jsonb, numeric, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { apiKeys, planTypeEnum, user } from \"../postgres.js\";\n// Rate limiting violations\nexport const rateLimitViolations = pgTable(\"rate_limit_violations\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n apiKeyId: text(\"api_key_id\").notNull(),\n // Violation details\n limitType: text(\"limit_type\").notNull(), // \"per_minute\", \"per_hour\", \"daily\", \"monthly\"\n limitValue: integer(\"limit_value\").notNull(),\n currentValue: integer(\"current_value\").notNull(),\n // Context\n endpoint: text(\"endpoint\"),\n plan: planTypeEnum(\"plan\"),\n // Response\n retryAfterSeconds: integer(\"retry_after_seconds\"),\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\nexport const rateLimitViolationsRelations = relations(rateLimitViolations, ({ one }) => ({\n user: one(user, {\n fields: [rateLimitViolations.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [rateLimitViolations.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n// Token bucket state (for smooth rate limiting)\nexport const tokenBuckets = pgTable(\"token_buckets\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .unique()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Bucket state\n tokens: numeric(\"tokens\").notNull(), // Current tokens\n capacity: integer(\"capacity\").notNull(), // Max tokens\n refillRate: numeric(\"refill_rate\").notNull(), // Tokens per second\n lastRefill: timestamp(\"last_refill\").defaultNow(),\n updatedAt: timestamp(\"updated_at\").defaultNow(),\n}, (table) => ({\n userIdIndex: uniqueIndex(\"idx_token_buckets_user\").on(table.userId),\n}));\nexport const tokenBucketsRelations = relations(tokenBuckets, ({ one }) => ({\n user: one(user, {\n fields: [tokenBuckets.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { decimal, index, integer, jsonb, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Repository Personalities - Per-repo risk profiles\n *\n * Builds risk and AI tolerance profiles for each repository based on historical behavior.\n * Used for context-specific risk prediction and pattern matching.\n */\nexport const repoPersonalities = pgTable(\"repo_personalities\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => crypto.randomUUID()),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Repository identification (hashed for privacy)\n repoId: text(\"repo_id\").notNull(), // Hash of repo path or GitHub repo ID\n repoName: text(\"repo_name\"), // Optional display name\n // Risk profile\n riskProfile: text(\"risk_profile\").notNull(), // 'production', 'experimental', 'stable'\n aiTolerance: decimal(\"ai_tolerance\", { precision: 4, scale: 3 }).default(\"0.5\"), // 0.000-1.000\n volatility: decimal(\"volatility\", { precision: 4, scale: 3 }).default(\"0.5\"), // Change frequency\n // Historical metrics\n incidentCount: integer(\"incident_count\").default(0),\n totalCommits: integer(\"total_commits\").default(0),\n aiContributionPercentage: decimal(\"ai_contribution_percentage\", { precision: 5, scale: 2 }), // 0.00-100.00\n // Language and framework context\n primaryLanguage: text(\"primary_language\"),\n frameworks: jsonb(\"frameworks\").$type().default([]),\n // Timestamps\n firstSeenAt: timestamp(\"first_seen_at\").defaultNow().notNull(),\n lastUpdatedAt: timestamp(\"last_updated_at\").defaultNow().notNull(),\n}, (table) => [\n // Unique: one personality per user/repo\n uniqueIndex(\"repo_personalities_user_repo_idx\").on(table.userId, table.repoId),\n // Query by user\n index(\"repo_personalities_user_idx\").on(table.userId),\n // Query by profile type\n index(\"repo_personalities_profile_idx\").on(table.riskProfile),\n]);\nexport const repoPersonalitiesRelations = relations(repoPersonalities, ({ one }) => ({\n user: one(user, {\n fields: [repoPersonalities.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { index, integer, jsonb, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\nexport const responseCache = pgTable(\"response_cache\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n // Cache key (hash of normalized request)\n cacheKey: text(\"cache_key\").notNull().unique(),\n userId: text(\"user_id\").notNull(),\n endpoint: text(\"endpoint\").notNull(),\n // Cached response\n response: jsonb(\"response\").notNull(),\n tokensUsed: integer(\"tokens_used\").default(0),\n // Cache management\n expiresAt: timestamp(\"expires_at\").notNull(),\n hitCount: integer(\"hit_count\").default(0),\n lastHitAt: timestamp(\"last_hit_at\").defaultNow(),\n createdAt: timestamp(\"created_at\").defaultNow(),\n}, (table) => ({\n userIdIndex: index(\"idx_response_cache_user\").on(table.userId),\n cacheKeyIndex: uniqueIndex(\"idx_response_cache_key\").on(table.cacheKey),\n expiryIndex: index(\"idx_response_cache_expiry\").on(table.expiresAt),\n}));\nexport const responseCacheRelations = relations(responseCache, ({ one }) => ({\n user: one(user, {\n fields: [responseCache.userId],\n references: [user.id],\n }),\n}));\n","import { boolean, integer, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nexport const retentionConfig = pgTable(\"retention_config\", {\n id: uuid(\"id\").primaryKey().defaultRandom().notNull(),\n tableName: text(\"table_name\").notNull(),\n retentionDays: integer(\"retention_days\").notNull(),\n isEnabled: boolean(\"is_enabled\").default(true).notNull(),\n lastRunAt: timestamp(\"last_run_at\"),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\n","// ESM imports fixed for Node.js v22+\n/**\n * Rollback Events - Labeled training data for the ML flywheel\n *\n * This is THE MOST VALUABLE TABLE in the sync architecture.\n * Rollback events are labeled training data - not just context like sessions.\n *\n * When a user rolls back to a snapshot, we capture:\n * - The risk score at the time of the snapshot (model prediction)\n * - Whether the rollback happened (ground truth - risk was real)\n * - Time to rollback (urgency signal)\n * - AI tool context (which AI was active during the risky edit)\n *\n * PRIVACY: No code content stored - only metadata for model training.\n */\nimport { relations } from \"drizzle-orm\";\nimport { boolean, index, integer, pgTable, real, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n// =============================================================================\n// Rollback Events Table\n// =============================================================================\nexport const rollbackEvents = pgTable(\"rollback_events\", {\n // Primary key - server-generated UUID\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Workspace fingerprint: sha256(gitRemote + userId)\n workspaceFingerprint: text(\"workspace_fingerprint\").notNull(),\n // Session context - references the local daemon session ID\n sessionId: text(\"session_id\").notNull(),\n // Snapshot that was rolled back to\n snapshotId: text(\"snapshot_id\").notNull(),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Risk model training signals\n // The risk score at the time the snapshot was taken (0-100)\n riskScoreAtSnapshot: integer(\"risk_score_at_snapshot\").notNull(),\n // Ground truth: did the rollback happen? If true, the risk score was correct.\n // This is the key label for model training.\n riskScoreWasCorrect: boolean(\"risk_score_was_correct\"),\n // Time from snapshot creation to rollback (seconds)\n // Shorter time = more urgent/accurate risk detection\n timeToRollback: integer(\"time_to_rollback\"), // seconds\n // AI context - which AI tool was active during the risky edit\n aiTool: text(\"ai_tool\"), // e.g., 'cursor', 'claude', 'copilot', 'none'\n // AI's confidence at the time (if available)\n aiConfidence: real(\"ai_confidence\"),\n // File categorization for pattern analysis\n fileCategory: text(\"file_category\").$type(),\n // Blast radius - how many files were affected\n blastRadiusBucket: text(\"blast_radius_bucket\").$type(),\n // Was this a known high-risk file pattern?\n wasFragileFile: boolean(\"was_fragile_file\").default(false),\n // Timestamps\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n syncedAt: timestamp(\"synced_at\", { withTimezone: true }).defaultNow(),\n}, (table) => ({\n // User lookup index\n userIdIdx: index(\"rollback_events_user_id_idx\").on(table.userId),\n // Workspace lookup index\n workspaceIdx: index(\"rollback_events_workspace_idx\").on(table.workspaceFingerprint),\n // Session lookup index\n sessionIdx: index(\"rollback_events_session_idx\").on(table.sessionId),\n // Time-based queries for training data selection\n occurredAtIdx: index(\"rollback_events_occurred_at_idx\").on(table.occurredAt),\n // Composite for training queries: user's rollbacks over time\n userOccurredIdx: index(\"rollback_events_user_occurred_idx\").on(table.userId, table.occurredAt),\n // Risk score analysis queries\n riskScoreIdx: index(\"rollback_events_risk_score_idx\").on(table.riskScoreAtSnapshot),\n}));\n// =============================================================================\n// Relations\n// =============================================================================\nexport const rollbackEventsRelations = relations(rollbackEvents, ({ one }) => ({\n user: one(user, {\n fields: [rollbackEvents.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { apiKeys, user } from \"../postgres.js\";\n/**\n * Rule Violations - Track detected policy/rule violations\n */\nexport const ruleViolations = pgTable(\"rule_violations\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n apiKeyId: text(\"api_key_id\")\n .notNull()\n .references(() => apiKeys.id, { onDelete: \"cascade\" }),\n // Violation details\n ruleId: text(\"rule_id\").notNull(),\n ruleName: text(\"rule_name\").notNull(),\n ruleCategory: text(\"rule_category\"), // \"security\", \"privacy\", \"compliance\", etc.\n // Detection context\n filePath: text(\"file_path\"),\n lineStart: integer(\"line_start\"),\n lineEnd: integer(\"line_end\"),\n characterStart: integer(\"character_start\"),\n characterEnd: integer(\"character_end\"),\n // Violation severity\n severity: text(\"severity\").notNull(), // \"low\", \"medium\", \"high\", \"critical\"\n confidence: integer(\"confidence\"), // 0-100\n // Match details\n matchText: text(\"match_text\"),\n pattern: text(\"pattern\"),\n description: text(\"description\"),\n // Remediation\n remediation: text(\"remediation\"),\n remediationLink: text(\"remediation_link\"),\n // Metadata\n metadata: jsonb(\"metadata\").$type().default({}),\n // Context\n clientType: text(\"client_type\"), // \"vscode\", \"cli\", \"mcp\", \"web\"\n clientVersion: text(\"client_version\"),\n ideVersion: text(\"ide_version\"),\n // Git context\n gitBranch: text(\"git_branch\"),\n gitCommit: text(\"git_commit\"),\n // Project context\n projectId: text(\"project_id\"),\n workspaceId: text(\"workspace_id\"),\n // Timestamps\n timestamp: timestamp(\"timestamp\").defaultNow().notNull(),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n});\n// Relations\nexport const ruleViolationsRelations = relations(ruleViolations, ({ one }) => ({\n user: one(user, {\n fields: [ruleViolations.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [ruleViolations.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n","import { index, json, pgEnum, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\n/**\n * Saga status enum\n */\nexport const sagaStatusEnum = pgEnum(\"saga_status\", [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"compensating\",\n \"compensated\",\n]);\n/**\n * Saga step status enum\n */\nexport const sagaStepStatusEnum = pgEnum(\"saga_step_status\", [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"compensated\",\n \"skipped\",\n]);\n/**\n * Saga instances table - tracks multi-step workflow execution\n */\nexport const sagas = pgTable(\"sagas\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n sagaId: text(\"saga_id\").notNull().unique(),\n sagaType: text(\"saga_type\").notNull(),\n status: sagaStatusEnum(\"status\").notNull().default(\"pending\"),\n context: json(\"context\").$type().notNull(),\n steps: json(\"steps\")\n .$type()\n .notNull(),\n error: text(\"error\"),\n retryCount: text(\"retry_count\").notNull().default(\"0\"),\n maxRetries: text(\"max_retries\").notNull().default(\"3\"),\n startedAt: timestamp(\"started_at\").notNull().defaultNow(),\n completedAt: timestamp(\"completed_at\"),\n failedAt: timestamp(\"failed_at\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => [\n index(\"sagas_saga_id_idx\").on(table.sagaId),\n index(\"sagas_saga_type_idx\").on(table.sagaType),\n index(\"sagas_status_idx\").on(table.status),\n index(\"sagas_started_at_idx\").on(table.startedAt),\n index(\"sagas_created_at_idx\").on(table.createdAt),\n]);\n","import { sql } from \"drizzle-orm\";\nimport { index, jsonb, pgTable, text, timestamp, unique, uuid } from \"drizzle-orm/pg-core\";\n/**\n * Scheduled Emails Table\n *\n * Durable store for time-delayed email sends (e.g. day-3 first_session nudge).\n * A row is \"pending\" while firedAt and cancelledAt are both NULL.\n *\n * Pattern: insert on trigger → poll every 60s → fire handler → mark firedAt\n * Cancellation: upstream event (e.g. first_session fires) → set cancelledAt\n *\n * EMAIL-04 - Spec 2 Phase 3\n */\nexport const scheduledEmails = pgTable(\"scheduled_emails\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\").notNull(),\n eventType: text(\"event_type\").notNull(),\n scheduledAt: timestamp(\"scheduled_at\", { withTimezone: true }).notNull(),\n firedAt: timestamp(\"fired_at\", { withTimezone: true }),\n cancelledAt: timestamp(\"cancelled_at\", { withTimezone: true }),\n payload: jsonb(\"payload\"),\n}, (t) => [\n unique(\"scheduled_emails_user_event_unique\").on(t.userId, t.eventType),\n index(\"scheduled_emails_due_idx\")\n .on(t.scheduledAt)\n .where(sql `${t.firedAt} IS NULL AND ${t.cancelledAt} IS NULL`),\n]);\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { bigint, jsonb, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { apiKeys, user } from \"../postgres.js\";\nimport { severityLevelEnum } from \"./error-logs.js\";\n// Security events\nexport const securityEvents = pgTable(\"security_events\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n userId: text(\"user_id\").references(() => user.id, { onDelete: \"cascade\" }),\n apiKeyId: text(\"api_key_id\"),\n // Event details\n eventType: text(\"event_type\").notNull(), // 'invalid_signature', 'expired_key', 'suspicious_pattern', 'brute_force'\n severity: severityLevelEnum(\"severity\").notNull().default(\"warning\"),\n // Context\n ipAddress: text(\"ip_address\"),\n userAgent: text(\"user_agent\"),\n endpoint: text(\"endpoint\"),\n // Detection\n detectionMethod: text(\"detection_method\"), // 'rate_analysis', 'signature_check', 'pattern_match'\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\nexport const securityEventsRelations = relations(securityEvents, ({ one }) => ({\n user: one(user, {\n fields: [securityEvents.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [securityEvents.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Suppression Patterns - Track user-defined suppression patterns\n */\nexport const suppressionPatterns = pgTable(\"suppression_patterns\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Pattern details\n pattern: text(\"pattern\").notNull(),\n patternType: text(\"pattern_type\").notNull(), // \"regex\", \"glob\", \"literal\"\n description: text(\"description\"),\n // Usage metrics\n useCount: integer(\"use_count\").notNull().default(0),\n lastUsedAt: timestamp(\"last_used_at\"),\n // Effectiveness\n suppressedViolations: integer(\"suppressed_violations\").notNull().default(0),\n falsePositives: integer(\"false_positives\").notNull().default(0),\n // Metadata\n metadata: jsonb(\"metadata\").$type().default({}),\n // Settings\n isActive: boolean(\"is_active\").notNull().default(true),\n isGlobal: boolean(\"is_global\").notNull().default(false), // Apply to all projects\n // Context\n clientType: text(\"client_type\"), // \"vscode\", \"cli\", \"mcp\", \"web\"\n projectId: text(\"project_id\"),\n // Timestamps\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\n// Relations\nexport const suppressionPatternsRelations = relations(suppressionPatterns, ({ one }) => ({\n user: one(user, {\n fields: [suppressionPatterns.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { jsonb, pgEnum, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { subscriptions, user } from \"../postgres.js\";\n// Enums\nexport const teamRoleEnum = pgEnum(\"team_role\", [\"owner\", \"admin\", \"member\", \"billing\"]);\n// Teams\nexport const teams = pgTable(\"teams\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n name: text(\"name\").notNull(),\n slug: text(\"slug\").notNull().unique(),\n avatarUrl: text(\"avatar_url\"),\n ownerId: text(\"owner_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n subscriptionId: text(\"subscription_id\").references(() => subscriptions.id),\n settings: jsonb(\"settings\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n updatedAt: timestamp(\"updated_at\").defaultNow(),\n}, (table) => ({\n ownerIdIndex: uniqueIndex(\"idx_teams_owner\").on(table.ownerId),\n slugIndex: uniqueIndex(\"idx_teams_slug\").on(table.slug),\n}));\nexport const teamsRelations = relations(teams, ({ one }) => ({\n owner: one(user, {\n fields: [teams.ownerId],\n references: [user.id],\n }),\n subscription: one(subscriptions, {\n fields: [teams.subscriptionId],\n references: [subscriptions.id],\n }),\n}));\n// Team members\nexport const teamMembers = pgTable(\"team_members\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n teamId: text(\"team_id\")\n .notNull()\n .references(() => teams.id, { onDelete: \"cascade\" }),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n role: teamRoleEnum(\"role\").notNull().default(\"member\"),\n invitedBy: text(\"invited_by\").references(() => user.id),\n invitedAt: timestamp(\"invited_at\"),\n acceptedAt: timestamp(\"accepted_at\"),\n createdAt: timestamp(\"created_at\").defaultNow(),\n updatedAt: timestamp(\"updated_at\").defaultNow(),\n}, (table) => ({\n teamIdIndex: uniqueIndex(\"idx_team_members_team\").on(table.teamId),\n userIdIndex: uniqueIndex(\"idx_team_members_user\").on(table.userId),\n teamUserUnique: uniqueIndex(\"team_members_team_id_user_id_unique\").on(table.teamId, table.userId),\n}));\nexport const teamMembersRelations = relations(teamMembers, ({ one }) => ({\n team: one(teams, {\n fields: [teamMembers.teamId],\n references: [teams.id],\n }),\n user: one(user, {\n fields: [teamMembers.userId],\n references: [user.id],\n }),\n invitedByUser: one(user, {\n fields: [teamMembers.invitedBy],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { index, integer, json, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { apiKeys, user } from \"../postgres.js\";\n// Telemetry events for time-series tracking\nexport const telemetryEvents = pgTable(\"telemetry_events\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\").references(() => user.id, {\n onDelete: \"cascade\",\n }),\n apiKeyId: text(\"api_key_id\").references(() => apiKeys.id, {\n onDelete: \"cascade\",\n }),\n // Event identification\n eventType: text(\"event_type\").notNull(),\n eventCategory: text(\"event_category\"), // \"lifecycle\", \"feature_usage\", \"error\", \"system\", \"engagement\"\n // Event data\n properties: json(\"properties\").$type().default({}),\n // Platform context\n platform: text(\"platform\"), // \"vscode\", \"cli\", \"web\", \"mcp\", \"mobile\"\n clientVersion: text(\"client_version\"),\n ideVersion: text(\"ide_version\"),\n // Device context (for anonymous users)\n deviceFingerprint: text(\"device_fingerprint\"),\n // Session context\n sessionId: text(\"session_id\"),\n // Metadata\n timestamp: timestamp(\"timestamp\").notNull().defaultNow(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n}, (table) => [\n // Composite indexes for common dashboard query patterns\n index(\"telemetry_events_user_timestamp_idx\").on(table.userId, table.timestamp),\n index(\"telemetry_events_api_key_timestamp_idx\").on(table.apiKeyId, table.timestamp),\n // Per-event-type queries (global aggregates)\n index(\"telemetry_events_event_type_idx\").on(table.eventType),\n // Time-based queries and retention\n index(\"telemetry_events_timestamp_idx\").on(table.timestamp),\n // CRITICAL: Composite index for (user_id, event_type, timestamp DESC) - common dashboard filter\n index(\"telemetry_events_user_event_time_idx\").on(table.userId, table.eventType, table.timestamp),\n]);\n// Idempotency keys for preventing duplicate processing of telemetry events\n// MVP Note: Added for idempotency support in telemetry API to prevent\n// duplicate event processing and inflated analytics/billing\nexport const telemetryIdempotencyKeys = pgTable(\"telemetry_idempotency_keys\", {\n idempotencyKey: text(\"idempotency_key\").primaryKey(),\n responseData: json(\"response_data\").$type().notNull(),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n expiresAt: timestamp(\"expires_at\").notNull(),\n}, (table) => [uniqueIndex(\"telemetry_idempotency_keys_expires_at_idx\").on(table.expiresAt)]);\n// Daily aggregated telemetry stats for performance\nexport const telemetryDailyStats = pgTable(\"telemetry_daily_stats\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\").references(() => user.id, {\n onDelete: \"cascade\",\n }),\n date: timestamp(\"date\").notNull(),\n // Event counts by category\n totalEvents: integer(\"total_events\").notNull().default(0),\n featureUsageEvents: integer(\"feature_usage_events\").notNull().default(0),\n errorEvents: integer(\"error_events\").notNull().default(0),\n lifecycleEvents: integer(\"lifecycle_events\").notNull().default(0),\n engagementEvents: integer(\"engagement_events\").notNull().default(0),\n // Platform usage\n platforms: json(\"platforms\").$type().default({}),\n // Most used features\n topFeatures: json(\"top_features\").$type().default([]),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => [uniqueIndex(\"telemetry_daily_stats_user_date_idx\").on(table.userId, table.date)]);\n","import { boolean, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\n/**\n * Telemetry Event Outbox Table\n *\n * Transactional Outbox Pattern for telemetry events.\n * Ensures events are durably recorded before being sent to PostHog.\n *\n * Pattern: Write event + outbox in same transaction → Background worker processes outbox\n * Enables exactly-once delivery, audit trail, and automatic retry.\n *\n * @see .vreko/audit/leak_map_proven.md for full pipeline documentation\n * @see packages/platform/src/schema/pioneer-event-outbox.ts for reference implementation\n */\nexport const telemetryOutbox = pgTable(\"telemetry_outbox\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Event identification\n eventType: text(\"event_type\").notNull(), // 'save_attempt', 'snapshot_created', etc.\n userId: text(\"user_id\"), // User who triggered the event\n // Event data\n payload: jsonb(\"payload\").notNull(), // Full event properties (filtered)\n posthogPayload: jsonb(\"posthog_payload\").notNull(), // Formatted for PostHog.capture()\n // Processing status\n processed: boolean(\"processed\").default(false),\n processedAt: timestamp(\"processed_at\", { withTimezone: true }),\n processingErrors: jsonb(\"processing_errors\").default([]), // Array of error objects\n retryCount: integer(\"retry_count\").default(0),\n maxRetries: integer(\"max_retries\").default(3),\n // Idempotency\n idempotencyKey: text(\"idempotency_key\").notNull(), // Prevents duplicate events\n // Timestamps\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow(),\n});\n// Indexes for performance (defined in migration)\n// CREATE INDEX idx_telemetry_outbox_unprocessed ON telemetry_outbox(created_at) WHERE NOT processed;\n// CREATE UNIQUE INDEX idx_telemetry_outbox_idempotency ON telemetry_outbox(idempotency_key);\n// CREATE INDEX idx_telemetry_outbox_user ON telemetry_outbox(user_id, created_at);\n// CREATE INDEX idx_telemetry_outbox_event_type ON telemetry_outbox(event_type);\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { decimal, index, integer, jsonb, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Trust Scores - Momentum-based EWMA calibration for AI tools\n *\n * Stores adaptive trust scores that update based on ground truth feedback.\n * Uses exponentially weighted moving average (EWMA) with momentum for fast adaptation.\n */\nexport const trustScores = pgTable(\"trust_scores\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => crypto.randomUUID()),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Tool identification\n toolId: text(\"tool_id\").notNull(), // e.g., 'cursor_0.42', 'copilot_1.2'\n contextKey: text(\"context_key\").notNull(), // e.g., 'react_typescript', 'python_fastapi'\n // Trust score state (EWMA with momentum)\n score: decimal(\"score\", { precision: 4, scale: 3 }).notNull(), // 0.000-1.000\n momentum: decimal(\"momentum\", { precision: 4, scale: 3 }).default(\"0\"), // -1.000 to 1.000\n volatility: decimal(\"volatility\", { precision: 4, scale: 3 }).default(\"0.5\"), // 0.000-1.000\n // Calibration metadata\n sampleCount: integer(\"sample_count\").default(0).notNull(),\n recentWindow: jsonb(\"recent_window\").$type().default([]), // Last 20 outcomes (0 or 1)\n lastCalibration: timestamp(\"last_calibration\").defaultNow().notNull(),\n modelVersion: text(\"model_version\").notNull(), // Which AI detection model\n // Timestamps\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n}, (table) => [\n // Unique constraint: one trust score per user/tool/context\n uniqueIndex(\"trust_scores_user_tool_context_idx\").on(table.userId, table.toolId, table.contextKey),\n // Query by user\n index(\"trust_scores_user_idx\").on(table.userId),\n // Query by tool\n index(\"trust_scores_tool_idx\").on(table.toolId),\n]);\nexport const trustScoresRelations = relations(trustScores, ({ one }) => ({\n user: one(user, {\n fields: [trustScores.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { bigint, integer, jsonb, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { apiKeys, user } from \"../postgres.js\";\n// High-frequency API usage logs (partitioned by month)\nexport const apiUsageLogs = pgTable(\"api_usage_logs\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n // Request identification\n requestId: text(\"request_id\")\n .notNull()\n .$defaultFn(() => nanoid()),\n apiKeyId: text(\"api_key_id\").notNull(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Request details\n endpoint: text(\"endpoint\").notNull(),\n method: text(\"method\").notNull(),\n // Usage metrics\n tokensUsed: integer(\"tokens_used\").default(0),\n requestCount: integer(\"request_count\").default(1),\n // Performance\n responseTimeMs: integer(\"response_time_ms\").notNull(),\n responseStatus: integer(\"response_status\").notNull(),\n // Client info\n clientVersion: text(\"client_version\"),\n clientPlatform: text(\"client_platform\"),\n ideVersion: text(\"ide_version\"),\n // IP/location\n ipAddress: text(\"ip_address\"),\n countryCode: text(\"country_code\"),\n // Error tracking\n errorCode: text(\"error_code\"),\n errorMessage: text(\"error_message\"),\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\nexport const apiUsageLogsRelations = relations(apiUsageLogs, ({ one }) => ({\n user: one(user, {\n fields: [apiUsageLogs.userId],\n references: [user.id],\n }),\n apiKey: one(apiKeys, {\n fields: [apiUsageLogs.apiKeyId],\n references: [apiKeys.id],\n }),\n}));\n// Partition tables for api_usage_logs\nexport const apiUsageLogs202510 = pgTable(\"api_usage_logs_2025_10\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n // Request identification\n requestId: text(\"request_id\")\n .notNull()\n .$defaultFn(() => nanoid()),\n apiKeyId: text(\"api_key_id\").notNull(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Request details\n endpoint: text(\"endpoint\").notNull(),\n method: text(\"method\").notNull(),\n // Usage metrics\n tokensUsed: integer(\"tokens_used\").default(0),\n requestCount: integer(\"request_count\").default(1),\n // Performance\n responseTimeMs: integer(\"response_time_ms\").notNull(),\n responseStatus: integer(\"response_status\").notNull(),\n // Client info\n clientVersion: text(\"client_version\"),\n clientPlatform: text(\"client_platform\"),\n ideVersion: text(\"ide_version\"),\n // IP/location\n ipAddress: text(\"ip_address\"),\n countryCode: text(\"country_code\"),\n // Error tracking\n errorCode: text(\"error_code\"),\n errorMessage: text(\"error_message\"),\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\nexport const apiUsageLogs202511 = pgTable(\"api_usage_logs_2025_11\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n // Request identification\n requestId: text(\"request_id\")\n .notNull()\n .$defaultFn(() => nanoid()),\n apiKeyId: text(\"api_key_id\").notNull(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Request details\n endpoint: text(\"endpoint\").notNull(),\n method: text(\"method\").notNull(),\n // Usage metrics\n tokensUsed: integer(\"tokens_used\").default(0),\n requestCount: integer(\"request_count\").default(1),\n // Performance\n responseTimeMs: integer(\"response_time_ms\").notNull(),\n responseStatus: integer(\"response_status\").notNull(),\n // Client info\n clientVersion: text(\"client_version\"),\n clientPlatform: text(\"client_platform\"),\n ideVersion: text(\"ide_version\"),\n // IP/location\n ipAddress: text(\"ip_address\"),\n countryCode: text(\"country_code\"),\n // Error tracking\n errorCode: text(\"error_code\"),\n errorMessage: text(\"error_message\"),\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\n// Aggregated daily stats (computed nightly)\nexport const usageStatsDaily = pgTable(\"usage_stats_daily\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n date: timestamp(\"date\").notNull(),\n // Counts\n totalRequests: integer(\"total_requests\").default(0),\n totalTokens: bigint(\"total_tokens\", { mode: \"number\" }).default(0),\n successfulRequests: integer(\"successful_requests\").default(0),\n failedRequests: integer(\"failed_requests\").default(0),\n // Performance\n avgResponseTimeMs: integer(\"avg_response_time_ms\"),\n p95ResponseTimeMs: integer(\"p95_response_time_ms\"),\n // Feature usage breakdown\n endpointsUsed: jsonb(\"endpoints_used\").default(JSON.stringify({})),\n // Client info\n clientVersions: jsonb(\"client_versions\").default(JSON.stringify([])),\n updatedAt: timestamp(\"updated_at\").defaultNow(),\n}, (table) => ({\n userIdDateIndex: uniqueIndex(\"idx_usage_stats_user_date\").on(table.userId, table.date),\n dateIndex: uniqueIndex(\"idx_usage_stats_date\").on(table.date),\n userIdDateUnique: uniqueIndex(\"usage_stats_daily_user_id_date_unique\").on(table.userId, table.date),\n}));\nexport const usageStatsDailyRelations = relations(usageStatsDaily, ({ one }) => ({\n user: one(user, {\n fields: [usageStatsDaily.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { index, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\n// User analytics identities table\n// Maps internal user IDs to external analytics platform identifiers\nexport const userAnalyticsIdentities = pgTable(\"user_analytics_identities\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // PostHog identifier\n posthogUserId: text(\"posthog_user_id\"),\n posthogDistinctId: text(\"posthog_distinct_id\"),\n // HubSpot identifier\n hubspotContactId: text(\"hubspot_contact_id\"),\n // Resend (email) identifier\n resendContactId: text(\"resend_contact_id\"),\n // Anonymous tracking identifier (before signup)\n anonymousId: text(\"anonymous_id\"),\n // Status and sync tracking\n synced: text(\"synced\").notNull().default(\"false\"),\n lastSyncedAt: timestamp(\"last_synced_at\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => ({\n userIdIdx: index(\"user_analytics_identities_user_id_idx\").on(table.userId),\n posthogUserIdIdx: index(\"user_analytics_identities_posthog_user_id_idx\").on(table.posthogUserId),\n hubspotContactIdIdx: uniqueIndex(\"user_analytics_identities_hubspot_contact_id_idx\").on(table.hubspotContactId),\n anonymousIdIdx: index(\"user_analytics_identities_anonymous_id_idx\").on(table.anonymousId),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * User Attribution Schema\n * Tracks marketing attribution for user acquisition\n */\nimport { relations } from \"drizzle-orm\";\nimport { index, json, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\nexport const userAttributions = pgTable(\"user_attributions\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .unique()\n .references(() => user.id, { onDelete: \"cascade\" }),\n source: text(\"source\").notNull(), // 'google', 'facebook', 'direct', etc.\n campaignId: text(\"campaign_id\"),\n fingerprint: text(\"fingerprint\").notNull(),\n conversionData: json(\"conversion_data\").$type(),\n utmParams: json(\"utm_params\").$type(),\n referralCode: text(\"referral_code\"),\n convertedAt: timestamp(\"converted_at\"), // When user purchased subscription\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n}, (table) => [\n index(\"user_attributions_user_id_idx\").on(table.userId),\n index(\"user_attributions_fingerprint_idx\").on(table.fingerprint),\n index(\"user_attributions_source_idx\").on(table.source),\n index(\"user_attributions_created_at_idx\").on(table.createdAt),\n]);\nexport const userAttributionsRelations = relations(userAttributions, ({ one }) => ({\n user: one(user, {\n fields: [userAttributions.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { index, integer, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\n// User daily metrics table\n// Stores daily snapshot aggregates for each user\nexport const userDailyMetrics = pgTable(\"user_daily_metrics\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n date: timestamp(\"date\").notNull(),\n // Daily aggregates\n snapshotsCreated: integer(\"snapshots_created\").notNull().default(0),\n snapshotsRestored: integer(\"snapshots_restored\").notNull().default(0),\n minutesSavedEstimate: integer(\"minutes_saved_estimate\").notNull().default(0),\n aiSessions: integer(\"ai_sessions\").notNull().default(0),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => ({\n userDateUnique: uniqueIndex(\"user_daily_metrics_user_date_unique\").on(table.userId, table.date),\n userIdIdx: index(\"user_daily_metrics_user_id_idx\").on(table.userId),\n dateIdx: index(\"user_daily_metrics_date_idx\").on(table.date),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations, sql } from \"drizzle-orm\";\nimport { check, integer, jsonb, numeric, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n// =============================================================================\n// SCHEMA DEFINITION\n// =============================================================================\n/**\n * User Detection Capabilities - Learned improvements from user behavior\n *\n * Privacy: No code content stored, only pattern keys and numerical thresholds (C-006)\n *\n * This table stores per-user learned improvements to AI detection:\n * - False positive patterns (user proceeded after warning)\n * - Custom risk indicators (user-specific patterns)\n * - Threshold overrides (personalized sensitivity)\n * - Accuracy tracking (per-tool detection accuracy)\n *\n * Tier gating:\n * - Free: Basic false positive learning only\n * - Pro: Full customization (thresholds, risk indicators, tool-specific accuracy)\n * - Enterprise: Team-wide capability sharing (future)\n */\nexport const userDetectionCapabilities = pgTable(\"user_detection_capabilities\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .unique() // One capability record per user\n .references(() => user.id, { onDelete: \"cascade\" }),\n // ===================\n // LEARNED IMPROVEMENTS\n // ===================\n /** Custom risk indicators learned from user behavior (Pro+) */\n customRiskIndicators: jsonb(\"custom_risk_indicators\").$type().default([]),\n /** False positive patterns from user proceed actions (Free+) */\n falsePositivePatterns: jsonb(\"false_positive_patterns\").$type().default([]),\n /** User-specific threshold overrides (Pro+) */\n thresholdOverrides: jsonb(\"threshold_overrides\").$type().default({}),\n // ===================\n // ACCURACY TRACKING\n // ===================\n /** Total detections analyzed for this user */\n totalDetectionsAnalyzed: integer(\"total_detections_analyzed\").default(0),\n /** Overall accuracy score (0.0000-1.0000) */\n accuracyScore: numeric(\"accuracy_score\", { precision: 5, scale: 4 }),\n /** Tool-specific accuracy (e.g., { cursor: 0.92, copilot: 0.87 }) (Pro+) */\n toolAccuracy: jsonb(\"tool_accuracy\").$type().default({}),\n // ===================\n // TIER GATING\n // ===================\n /** User's current tier (determines which capabilities are active) */\n tier: text(\"tier\").$type().default(\"free\"),\n // ===================\n // VERSIONING\n // ===================\n /** Optimistic locking version (incremented on each update) */\n version: integer(\"version\").default(1),\n /** Last time capabilities were updated */\n lastUpdated: timestamp(\"last_updated\").defaultNow(),\n /** When this record was created */\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n}, (table) => [\n // Accuracy score must be between 0 and 1\n check(\"accuracy_score_range\", sql `${table.accuracyScore} >= 0 AND ${table.accuracyScore} <= 1`),\n // Tier must be valid\n check(\"tier_valid\", sql `${table.tier} IN ('free', 'pro', 'enterprise')`),\n]);\n// =============================================================================\n// RELATIONS\n// =============================================================================\nexport const userDetectionCapabilitiesRelations = relations(userDetectionCapabilities, ({ one }) => ({\n user: one(user, {\n fields: [userDetectionCapabilities.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { index, pgEnum, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\n// Lifecycle state enum\nexport const lifecycleStageEnum = pgEnum(\"lifecycle_stage\", [\"new\", \"engaged\", \"power_user\", \"at_risk\", \"churned\"]);\n// User lifecycle state table\n// Tracks user progression through lifecycle stages\nexport const userLifecycleState = pgTable(\"user_lifecycle_state\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Current stage\n stage: lifecycleStageEnum(\"stage\").notNull().default(\"new\"),\n // Stage transition tracking\n stagedAt: timestamp(\"staged_at\").notNull().defaultNow(),\n transitionReason: text(\"transition_reason\"),\n // Engagement metrics for state decisions\n snapshotsSinceStart: text(\"snapshots_since_start\").notNull().default(\"0\"),\n daysSinceLastActivity: text(\"days_since_last_activity\").notNull().default(\"0\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => ({\n userIdIdx: index(\"user_lifecycle_state_user_id_idx\").on(table.userId),\n stageIdx: index(\"user_lifecycle_state_stage_idx\").on(table.stage),\n updatedAtIdx: index(\"user_lifecycle_state_updated_at_idx\").on(table.updatedAt),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { index, integer, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\n// User product metrics table\n// Stores lifetime aggregated metrics for each user (rolled up from daily)\nexport const userProductMetrics = pgTable(\"user_product_metrics\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Lifetime aggregates\n snapshotsTotal: integer(\"snapshots_total\").notNull().default(0),\n restoresTotal: integer(\"restores_total\").notNull().default(0),\n minutesSavedTotal: integer(\"minutes_saved_total\").notNull().default(0),\n aiSessionsTotal: integer(\"ai_sessions_total\").notNull().default(0),\n // 7-day rolling window\n snapshots7d: integer(\"snapshots_7d\").notNull().default(0),\n restores7d: integer(\"restores_7d\").notNull().default(0),\n minutesSaved7d: integer(\"minutes_saved_7d\").notNull().default(0),\n aiSessions7d: integer(\"ai_sessions_7d\").notNull().default(0),\n // 30-day rolling window\n snapshots30d: integer(\"snapshots_30d\").notNull().default(0),\n restores30d: integer(\"restores_30d\").notNull().default(0),\n // Last activity tracking\n lastSnapshotAt: timestamp(\"last_snapshot_at\"),\n lastRestoreAt: timestamp(\"last_restore_at\"),\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n}, (table) => ({\n userIdIdx: index(\"user_product_metrics_user_id_idx\").on(table.userId),\n lastSnapshotIdx: index(\"user_product_metrics_last_snapshot_idx\").on(table.lastSnapshotAt),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n// User profiles table - extends Better Auth user table\nexport const userProfiles = pgTable(\"user_profiles\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .unique()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Profile info\n displayName: text(\"display_name\"),\n avatarUrl: text(\"avatar_url\"),\n company: text(\"company\"),\n role: text(\"role\"), // \"developer\", \"team_lead\", \"enterprise_admin\"\n // Onboarding\n onboardingCompleted: boolean(\"onboarding_completed\").default(false),\n onboardingStep: integer(\"onboarding_step\").default(0),\n primaryLanguage: text(\"primary_language\"), // \"typescript\", \"python\", etc.\n useCases: text(\"use_cases\").array(), // Array of use cases\n // Referral tracking\n referralCode: text(\"referral_code\").unique(),\n referredBy: text(\"referred_by\").references(() => user.id),\n // Metadata\n metadata: jsonb(\"metadata\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\nexport const userProfilesRelations = relations(userProfiles, ({ one }) => ({\n user: one(user, {\n fields: [userProfiles.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { boolean, integer, jsonb, pgTable, text, timestamp, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * User Safety Profiles - Track user safety metrics and preferences\n */\nexport const userSafetyProfiles = pgTable(\"user_safety_profiles\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // Ownership\n userId: text(\"user_id\")\n .notNull()\n .unique()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Safety metrics\n totalAnalyses: integer(\"total_analyses\").notNull().default(0),\n totalViolations: integer(\"total_violations\").notNull().default(0),\n totalBlocked: integer(\"total_blocked\").notNull().default(0),\n totalBypassed: integer(\"total_bypassed\").notNull().default(0),\n // Risk scores\n averageRiskScore: integer(\"average_risk_score\"), // 0-100\n highestRiskScore: integer(\"highest_risk_score\"), // 0-100\n // Violation categories\n securityViolations: integer(\"security_violations\").notNull().default(0),\n privacyViolations: integer(\"privacy_violations\").notNull().default(0),\n complianceViolations: integer(\"compliance_violations\").notNull().default(0),\n // Preferences\n autoBlockHighRisk: boolean(\"auto_block_high_risk\").notNull().default(true),\n notifyOnViolation: boolean(\"notify_on_violation\").notNull().default(true),\n notifyOnBypass: boolean(\"notify_on_bypass\").notNull().default(true),\n // Learning\n suppressionPatternsLearned: integer(\"suppression_patterns_learned\").notNull().default(0),\n bypassPatternsLearned: integer(\"bypass_patterns_learned\").notNull().default(0),\n // Metadata\n metadata: jsonb(\"metadata\").$type().default({}),\n // Timestamps\n lastAnalysisAt: timestamp(\"last_analysis_at\"),\n profileResetAt: timestamp(\"profile_reset_at\"),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n});\n// Relations\nexport const userSafetyProfilesRelations = relations(userSafetyProfiles, ({ one }) => ({\n user: one(user, {\n fields: [userSafetyProfiles.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { bigint, boolean, integer, jsonb, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\n// Webhook events\nexport const webhookEvents = pgTable(\"webhook_events\", {\n id: bigint(\"id\", { mode: \"number\" }).primaryKey(),\n eventId: text(\"event_id\")\n .notNull()\n .$defaultFn(() => nanoid()),\n eventType: text(\"event_type\").notNull(), // \"subscription.created\", \"usage.exceeded\"\n source: text(\"source\").notNull(), // \"stripe\", \"github\", \"internal\"\n sourceId: text(\"source_id\"),\n userId: text(\"user_id\").references(() => user.id, { onDelete: \"cascade\" }),\n payload: jsonb(\"payload\").notNull(),\n processed: boolean(\"processed\").default(false),\n processedAt: timestamp(\"processed_at\"),\n errorMessage: text(\"error_message\"),\n retryCount: integer(\"retry_count\").default(0),\n createdAt: timestamp(\"created_at\").defaultNow(),\n});\nexport const webhookEventsRelations = relations(webhookEvents, ({ one }) => ({\n user: one(user, {\n fields: [webhookEvents.userId],\n references: [user.id],\n }),\n}));\n","/**\n * Workspace Links Schema\n *\n * Links MCP workspace IDs to authenticated users for tier resolution.\n * Enables instant Pro tier activation in MCP without restart.\n *\n * Security Enhancements (P0 - 2025-02):\n * - tierRefreshedAt: Prevents stale tier caching after downgrades\n * - expiresAt: Auto-expires links after 90 days for security\n *\n * Design: https://apps/vscode/mco_auth.md\n *\n * @packageDocumentation\n */\nimport { index, pgTable, text, timestamp } from \"drizzle-orm/pg-core\";\n/**\n * Default expiration time for workspace links (90 days)\n * After this period, the link auto-expires and user must re-authenticate\n */\nexport const WORKSPACE_LINK_TTL_MS = 90 * 24 * 60 * 60 * 1000;\n/**\n * Tier staleness threshold (24 hours)\n * If tier hasn't been refreshed in this time, fetch from users table\n */\nexport const TIER_STALENESS_THRESHOLD_MS = 24 * 60 * 60 * 1000;\n/**\n * Workspace Links Table\n *\n * Maps workspace IDs to users for server-side tier resolution.\n * When MCP server receives a request with workspace_id, it looks up\n * this table to determine the user's tier without requiring API key\n * in the MCP config.\n *\n * Security:\n * - workspace_id is 128-bit random (ws_ + 32 hex chars) - unguessable\n * - CASCADE delete ensures cleanup when user is deleted\n * - last_seen_at enables stale workspace cleanup\n */\nexport const workspaceLinks = pgTable(\"workspace_links\", {\n /**\n * Workspace ID (primary key)\n * Format: ws_[32 hex chars] (128 bits of entropy)\n * Example: ws_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6\n */\n workspaceId: text(\"workspace_id\").primaryKey(),\n /**\n * User ID (references auth user table)\n * CASCADE delete removes workspace links when user is deleted\n */\n userId: text(\"user_id\").notNull(),\n /**\n * Subscription tier for this workspace\n * Resolved from user's subscription at link time\n */\n tier: text(\"tier\").$type().notNull().default(\"free\"),\n /**\n * When this workspace was first linked\n */\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n /**\n * Last time this workspace made an MCP request\n * Updated on each tier resolution (fire-and-forget)\n * Used for identifying stale workspaces for cleanup\n */\n lastSeenAt: timestamp(\"last_seen_at\").defaultNow().notNull(),\n /**\n * When the tier was last refreshed from the users/subscriptions table\n * Used to detect stale tiers after user downgrades\n * P0 Security Fix: Prevents privilege escalation via stale cached tier\n */\n tierRefreshedAt: timestamp(\"tier_refreshed_at\").defaultNow().notNull(),\n /**\n * When this workspace link expires\n * Default: 90 days from creation\n * After expiration, link is auto-deleted and user must re-authenticate\n * P0 Security Fix: Prevents indefinite workspace link validity\n */\n expiresAt: timestamp(\"expires_at\").notNull(),\n /**\n * Optional workspace name/path hash for debugging\n * NOT the actual path (privacy protection)\n */\n displayName: text(\"display_name\"),\n}, (table) => ({\n /**\n * Index for efficient user lookup\n * Used when listing all workspaces for a user\n */\n userIdx: index(\"idx_workspace_links_user\").on(table.userId),\n /**\n * Index for cleanup of stale workspaces\n */\n lastSeenIdx: index(\"idx_workspace_links_last_seen\").on(table.lastSeenAt),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { jsonb, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { nanoid } from \"nanoid\";\nimport { user } from \"../postgres.js\";\nexport const workspaceSettings = pgTable(\"workspace_settings\", {\n id: text(\"id\")\n .primaryKey()\n .$defaultFn(() => nanoid()),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n workspaceHash: text(\"workspace_hash\").notNull(),\n // User preferences per workspace\n settings: jsonb(\"settings\").default(JSON.stringify({\n autoAnalyze: true,\n inlineSuggestions: true,\n maxFileSizeKB: 500,\n })),\n // Ignore patterns\n ignoredPatterns: text(\"ignored_patterns\").array().default([\"node_modules/**\", \"dist/**\", \".git/**\"]),\n // Custom rules\n customRules: jsonb(\"custom_rules\").default(JSON.stringify({})),\n // Language-specific settings\n languageSettings: jsonb(\"language_settings\").default(JSON.stringify({})),\n createdAt: timestamp(\"created_at\").defaultNow(),\n updatedAt: timestamp(\"updated_at\").defaultNow(),\n}, (table) => ({\n userIdIndex: uniqueIndex(\"idx_workspace_settings_user\").on(table.userId),\n userWorkspaceUnique: uniqueIndex(\"workspace_settings_user_id_workspace_hash_unique\").on(table.userId, table.workspaceHash),\n}));\nexport const workspaceSettingsRelations = relations(workspaceSettings, ({ one }) => ({\n user: one(user, {\n fields: [workspaceSettings.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Intelligence Layer Schema (Phase 1: Intelligence New Platform)\n *\n * Drizzle ORM schema for learnings, patterns, violations, and session context.\n * These tables sync from local StateStore to Neon PostgreSQL via CRDT.\n */\nimport { relations, sql } from \"drizzle-orm\";\nimport { boolean, index, integer, jsonb, pgTable, real, text, timestamp, unique, uuid } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n/**\n * Learnings Table - Individual learning records synced from StateStore\n */\nexport const learnings = pgTable(\"learnings\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n workspaceId: text(\"workspace_id\").notNull(),\n // Learning content\n type: text(\"type\", {\n enum: [\"pattern\", \"pitfall\", \"efficiency\", \"discovery\", \"workflow\"],\n }).notNull(),\n trigger: text(\"trigger\").notNull(),\n action: text(\"action\").notNull(),\n keywords: jsonb(\"keywords\").default([]).notNull(),\n source: text(\"source\", { enum: [\"survey\", \"manual\", \"violation\", \"curated\"] }),\n tier: text(\"tier\", { enum: [\"hot\", \"warm\", \"cold\"] }).notNull(),\n domain: text(\"domain\"),\n // Usage tracking\n accessCount: integer(\"access_count\").default(0).notNull(),\n appliedCount: integer(\"applied_count\").default(0).notNull(),\n relevanceScore: real(\"relevance_score\").default(1.0).notNull(),\n // Archival support (Phase 2.6b)\n archived: boolean(\"archived\").default(false),\n archivedAt: timestamp(\"archived_at\", { withTimezone: true }),\n // CRDT sync metadata\n syncVersion: integer(\"sync_version\").default(0).notNull(),\n lastSyncedAt: timestamp(\"last_synced_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n lastAccessedAt: timestamp(\"last_accessed_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => ({\n // Performance indexes for dashboard queries (P0-2)\n workspaceTierIdx: index(\"idx_learnings_workspace_tier\")\n .on(table.workspaceId, table.tier)\n .where(sql `${table.archived} = false`),\n userActiveIdx: index(\"idx_learnings_user_active\").on(table.userId, table.archived, table.tier),\n}));\nexport const learningsRelations = relations(learnings, ({ one }) => ({\n user: one(user, {\n fields: [learnings.userId],\n references: [user.id],\n }),\n}));\n/**\n * Intelligence Patterns Table - Promoted patterns from violations\n * Note: Renamed to avoid conflict with existing patterns table (vector embeddings)\n */\nexport const intelligencePatterns = pgTable(\"intelligence_patterns\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n workspaceId: text(\"workspace_id\").notNull(),\n // Pattern content\n name: text(\"name\").notNull(),\n description: text(\"description\").notNull(),\n trigger: text(\"trigger\").notNull(),\n action: text(\"action\").notNull(),\n source: text(\"source\", { enum: [\"violation\", \"manual\", \"curated\"] }).notNull(),\n confidence: real(\"confidence\").default(0.5).notNull(),\n usageCount: integer(\"usage_count\").default(0).notNull(),\n // Archival support\n archived: boolean(\"archived\").default(false),\n // CRDT sync metadata\n syncVersion: integer(\"sync_version\").default(0).notNull(),\n lastSyncedAt: timestamp(\"last_synced_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => ({\n // Performance indexes for pattern queries (P0-2)\n highConfIdx: index(\"idx_intelligence_patterns_high_conf\")\n .on(table.confidence)\n .where(sql `${table.confidence} > 0.8`),\n activeIdx: index(\"idx_intelligence_patterns_active\")\n .on(table.workspaceId, table.createdAt)\n .where(sql `${table.archived} = false`),\n}));\nexport const intelligencePatternsRelations = relations(intelligencePatterns, ({ one }) => ({\n user: one(user, {\n fields: [intelligencePatterns.userId],\n references: [user.id],\n }),\n}));\n/**\n * Violations Table - Violation tracking for pattern promotion\n */\nexport const violations = pgTable(\"violations\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n workspaceId: text(\"workspace_id\").notNull(),\n // Violation content\n type: text(\"type\").notNull(),\n file: text(\"file\").notNull(),\n description: text(\"description\").notNull(),\n reason: text(\"reason\"),\n prevention: text(\"prevention\").notNull(),\n // Tracking\n count: integer(\"count\").default(1).notNull(),\n firstSeen: timestamp(\"first_seen\", { withTimezone: true }).defaultNow().notNull(),\n lastSeen: timestamp(\"last_seen\", { withTimezone: true }).defaultNow().notNull(),\n promotedToPattern: boolean(\"promoted_to_pattern\").default(false),\n // CRDT sync metadata\n syncVersion: integer(\"sync_version\").default(0).notNull(),\n lastSyncedAt: timestamp(\"last_synced_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => ({\n uniqueWorkspaceTypeFile: unique().on(table.workspaceId, table.type, table.file),\n}));\nexport const violationsRelations = relations(violations, ({ one }) => ({\n user: one(user, {\n fields: [violations.userId],\n references: [user.id],\n }),\n}));\n/**\n * Session Context Table - Session-specific context with applied learnings\n */\nexport const sessionContext = pgTable(\"session_context\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n workspaceId: text(\"workspace_id\").notNull(),\n // Session metadata\n taskDescription: text(\"task_description\"),\n startedAt: timestamp(\"started_at\", { withTimezone: true }).notNull(),\n lastCheckpoint: timestamp(\"last_checkpoint\", { withTimezone: true }).defaultNow().notNull(),\n snapshotId: text(\"snapshot_id\"),\n context: jsonb(\"context\").default({}).notNull(),\n // Applied learnings tracking (Phase 2.6a)\n appliedLearnings: jsonb(\"applied_learnings\").default([]).notNull(),\n // CRDT sync metadata\n syncVersion: integer(\"sync_version\").default(0).notNull(),\n lastSyncedAt: timestamp(\"last_synced_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).defaultNow().notNull(),\n}, (table) => ({\n // Performance index for session context lookups (P0-2)\n workspaceIdx: index(\"idx_session_context_workspace\").on(table.workspaceId, table.updatedAt),\n}));\nexport const sessionContextRelations = relations(sessionContext, ({ one }) => ({\n user: one(user, {\n fields: [sessionContext.userId],\n references: [user.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\nimport { relations } from \"drizzle-orm\";\nimport { index, jsonb, pgTable, text, timestamp, uniqueIndex, uuid } from \"drizzle-orm/pg-core\";\nimport { member, organization } from \"../postgres.js\";\n/**\n * Repositories - canonical workspace/repository dimension.\n *\n * Each repository belongs to a single organization (tenant) and represents\n * either a GitHub repo or a local workspace, identified by provider-specific\n * metadata. Other tables should reference repositories.id instead of using\n * free-form workspace or repo identifiers.\n */\nexport const repositories = pgTable(\"repositories\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n organizationId: text(\"organization_id\")\n .notNull()\n .references(() => organization.id, { onDelete: \"cascade\" }),\n provider: text(\"provider\").notNull().default(\"github\"),\n externalRepoId: text(\"external_repo_id\"),\n fullName: text(\"full_name\").notNull(),\n visibility: text(\"visibility\").default(\"private\"),\n metadata: jsonb(\"metadata\").$type().default({}),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n}, (table) => ({\n orgNameIdx: index(\"repositories_org_full_name_idx\").on(table.organizationId, table.fullName),\n externalIdx: index(\"repositories_external_idx\").on(table.provider, table.externalRepoId),\n}));\n/**\n * Repo memberships - per-repository access control.\n *\n * Links an organization membership (member) to a repository with a role and\n * optional permissions. This is the canonical place for repo-scoped roles.\n */\nexport const repoMemberships = pgTable(\"repo_memberships\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n membershipId: text(\"membership_id\")\n .notNull()\n .references(() => member.id, { onDelete: \"cascade\" }),\n repositoryId: uuid(\"repository_id\")\n .notNull()\n .references(() => repositories.id, { onDelete: \"cascade\" }),\n role: text(\"role\").notNull().default(\"contributor\"),\n permissions: jsonb(\"permissions\").$type().default({}),\n createdAt: timestamp(\"created_at\").defaultNow().notNull(),\n updatedAt: timestamp(\"updated_at\").defaultNow().notNull(),\n}, (table) => ({\n membershipRepoUnique: uniqueIndex(\"repo_memberships_membership_repo_unique\").on(table.membershipId, table.repositoryId),\n repoIdx: index(\"repo_memberships_repo_idx\").on(table.repositoryId),\n}));\nexport const repositoriesRelations = relations(repositories, ({ one }) => ({\n organization: one(organization, {\n fields: [repositories.organizationId],\n references: [organization.id],\n }),\n}));\nexport const repoMembershipsRelations = relations(repoMemberships, ({ one }) => ({\n membership: one(member, {\n fields: [repoMemberships.membershipId],\n references: [member.id],\n }),\n repository: one(repositories, {\n fields: [repoMemberships.repositoryId],\n references: [repositories.id],\n }),\n}));\n","// ESM imports fixed for Node.js v22+\n/**\n * Task-First Architecture Database Schema\n *\n * Tasks are the first-class entity in Vreko with stable IDs, display names,\n * accumulated state, and ceremonies. Sessions are daemon connections that come\n * and go underneath a Task.\n *\n * Storage Notes:\n * - Local daemon uses SQLite in WAL mode at ~/.vreko/projects/<project-slug>/tasks.db\n * - Server-side cloud sync uses PostgreSQL (this schema)\n *\n * Key Design Principles:\n * - Derived counters are NEVER stored - always computed from accumulated state\n * - All writes are append-only (events, files, learnings)\n * - Content-hash deduplication for learnings\n * - Quality gates can block ceremony completion\n *\n * @see /devagents/plans/Task_Connonical_impl.md\n * @module platform/db/schema/vreko/tasks\n */\nimport { relations, sql } from \"drizzle-orm\";\nimport { boolean, index, integer, pgEnum, pgTable, text, timestamp, uniqueIndex } from \"drizzle-orm/pg-core\";\nimport { user } from \"../postgres.js\";\n// =============================================================================\n// ENUMS\n// =============================================================================\n/**\n * Task status enum\n *\n * State transitions:\n * - created → active\n * - active → completed, abandoned, failed, ceremony_blocked, auto-ended\n * - ceremony_blocked → active (fix issues), completed (force:true)\n * - completed, abandoned, failed, auto-ended → (terminal)\n */\nexport const taskStatusEnum = pgEnum(\"task_status\", [\n \"created\",\n \"active\",\n \"completed\",\n \"abandoned\",\n \"failed\",\n \"auto-ended\",\n \"ceremony_blocked\",\n]);\n/**\n * Task outcome enum (for vreko_end)\n */\nexport const taskOutcomeEnum = pgEnum(\"task_outcome\", [\"completed\", \"abandoned\", \"failed\"]);\n/**\n * Task event type enum\n */\nexport const taskEventTypeEnum = pgEnum(\"task_event_type\", [\n \"task_created\",\n \"task_resumed\",\n \"task_ended\",\n \"learning_captured\",\n \"pulse_recorded\",\n \"file_changed\",\n \"session_connected\",\n \"session_disconnected\",\n \"ceremony_blocked\",\n \"ceremony_completed\",\n]);\n/**\n * File action enum\n */\nexport const fileActionEnum = pgEnum(\"file_action\", [\"added\", \"modified\", \"deleted\"]);\n/**\n * Learning category enum\n */\nexport const learningCategoryEnum = pgEnum(\"learning_category\", [\n \"pattern\",\n \"gotcha\",\n \"decision\",\n \"convention\",\n \"discovery\",\n]);\n/**\n * Learning confidence enum\n */\nexport const learningConfidenceEnum = pgEnum(\"learning_confidence\", [\"low\", \"medium\", \"high\"]);\n/**\n * Migration source enum\n */\nexport const migrationSourceEnum = pgEnum(\"migration_source\", [\"active_session\", \"completed_session\"]);\n// =============================================================================\n// TASKS TABLE\n// =============================================================================\n/**\n * Tasks table - the first-class entity in Vreko\n *\n * Privacy: Metadata only, no user code content (C-006)\n */\nexport const tasks = pgTable(\"tasks\", {\n // Primary key - monotonic integer\n id: integer(\"id\").primaryKey().generatedAlwaysAsIdentity(),\n // Deterministic kebab-case identifier for matching\n slug: text(\"slug\").notNull().unique(),\n // Human-readable task name provided by LLM\n name: text(\"name\").notNull(),\n // Current status\n status: taskStatusEnum(\"status\").notNull().default(\"created\"),\n // Outcome when task was closed\n outcome: taskOutcomeEnum(\"outcome\"),\n // User who owns this task\n userId: text(\"user_id\")\n .notNull()\n .references(() => user.id, { onDelete: \"cascade\" }),\n // Workspace identifier (hashed)\n workspaceId: text(\"workspace_id\").notNull(),\n // Timestamps\n createdAt: timestamp(\"created_at\").notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\").notNull().defaultNow(),\n closedAt: timestamp(\"closed_at\"),\n // JSON-serialized ceremony object\n ceremonyJson: text(\"ceremony_json\"),\n // Task lineage - references another task this continues from\n continuesFrom: integer(\"continues_from\"), // Self-reference handled by application layer\n // Migration tracking\n migrationSource: migrationSourceEnum(\"migration_source\"),\n originalSessionId: text(\"original_session_id\"), // For correlation with legacy sessions\n}, (table) => [\n // Index for slug lookups (deterministic matching)\n index(\"idx_tasks_slug\").on(table.slug),\n // Index for status filtering\n index(\"idx_tasks_status\").on(table.status),\n // Index for user's tasks\n index(\"idx_tasks_user_id\").on(table.userId),\n // Index for workspace's tasks\n index(\"idx_tasks_workspace_id\").on(table.workspaceId),\n // Index for finding active tasks\n index(\"idx_tasks_active\").on(table.status, table.workspaceId),\n // Index for lineage queries\n index(\"idx_tasks_continues_from\").on(table.continuesFrom),\n]);\n// =============================================================================\n// TASK EVENTS TABLE\n// =============================================================================\n/**\n * Task events table - ordered log of all MCP tool calls and outcomes\n *\n * Events are append-only. The seq field provides ordering within a task.\n */\nexport const taskEvents = pgTable(\"task_events\", {\n // Primary key\n id: integer(\"id\").primaryKey().generatedAlwaysAsIdentity(),\n // Task reference\n taskId: integer(\"task_id\")\n .notNull()\n .references(() => tasks.id, { onDelete: \"cascade\" }),\n // Sequence number within task (monotonically increasing)\n seq: integer(\"seq\").notNull(),\n // Event type\n type: taskEventTypeEnum(\"type\").notNull(),\n // JSON-serialized event payload\n payloadJson: text(\"payload_json\"),\n // Timestamp\n timestamp: timestamp(\"timestamp\").notNull().defaultNow(),\n}, (table) => [\n // Unique constraint on task_id + seq for ordering\n uniqueIndex(\"idx_task_events_task_seq\").on(table.taskId, table.seq),\n // Index for task lookup\n index(\"idx_task_events_task_id\").on(table.taskId),\n // Index for event type filtering\n index(\"idx_task_events_type\").on(table.type),\n]);\n// =============================================================================\n// TASK FILES TABLE\n// =============================================================================\n/**\n * Task files table - file change log entries\n *\n * Files are tracked by the daemon autonomously via Git diff.\n * All writes are append-only.\n */\nexport const taskFiles = pgTable(\"task_files\", {\n // Primary key\n id: integer(\"id\").primaryKey().generatedAlwaysAsIdentity(),\n // Task reference\n taskId: integer(\"task_id\")\n .notNull()\n .references(() => tasks.id, { onDelete: \"cascade\" }),\n // Relative POSIX path from workspace root\n path: text(\"path\").notNull(),\n // Type of file operation\n action: fileActionEnum(\"action\").notNull(),\n // SHA-256 hash before change (null for added files)\n hashBefore: text(\"hash_before\"),\n // SHA-256 hash after change (null for deleted files)\n hashAfter: text(\"hash_after\"),\n // Timestamp\n timestamp: timestamp(\"timestamp\").notNull().defaultNow(),\n}, (table) => [\n // Index for task lookup\n index(\"idx_task_files_task_id\").on(table.taskId),\n // Index for path lookup within task\n index(\"idx_task_files_task_path\").on(table.taskId, table.path),\n]);\n// =============================================================================\n// TASK LEARNINGS TABLE\n// =============================================================================\n/**\n * Task learnings table - captured insights attached to tasks\n *\n * Learnings are deduplicated by content hash and dual-written to:\n * 1. Task-scoped (this table)\n * 2. Global knowledge store (vector_learnings table)\n */\nexport const taskLearnings = pgTable(\"task_learnings\", {\n // Primary key\n id: integer(\"id\").primaryKey().generatedAlwaysAsIdentity(),\n // Task reference\n taskId: integer(\"task_id\")\n .notNull()\n .references(() => tasks.id, { onDelete: \"cascade\" }),\n // SHA-256 hash of content for deduplication\n contentHash: text(\"content_hash\").notNull(),\n // The actual learning content\n content: text(\"content\").notNull(),\n // Category classification\n category: learningCategoryEnum(\"category\"),\n // Where this learning came from\n source: text(\"source\"),\n // Confidence level\n confidence: learningConfidenceEnum(\"confidence\").default(\"medium\"),\n // Timestamp\n timestamp: timestamp(\"timestamp\").notNull().defaultNow(),\n}, (table) => [\n // Unique constraint on task_id + content_hash for deduplication\n uniqueIndex(\"idx_task_learnings_task_hash\").on(table.taskId, table.contentHash),\n // Index for task lookup\n index(\"idx_task_learnings_task_id\").on(table.taskId),\n // Index for category filtering\n index(\"idx_task_learnings_category\").on(table.category),\n]);\n// =============================================================================\n// TASK SESSIONS TABLE\n// =============================================================================\n/**\n * Task sessions table - record of each daemon connection to a Task\n *\n * Sessions are transient connections that come and go underneath a Task.\n * When a session disconnects, the Task remains in its current state.\n */\nexport const taskSessions = pgTable(\"task_sessions\", {\n // Primary key\n id: integer(\"id\").primaryKey().generatedAlwaysAsIdentity(),\n // Task reference\n taskId: integer(\"task_id\")\n .notNull()\n .references(() => tasks.id, { onDelete: \"cascade\" }),\n // Unique session identifier (UUID)\n sessionId: text(\"session_id\").notNull(),\n // Whether this session is the writer (can modify task state)\n isWriter: boolean(\"is_writer\").notNull().default(true),\n // Timestamps\n connectedAt: timestamp(\"connected_at\").notNull().defaultNow(),\n disconnectedAt: timestamp(\"disconnected_at\"),\n}, (table) => [\n // Index for task lookup\n index(\"idx_task_sessions_task_id\").on(table.taskId),\n // Index for session lookup\n index(\"idx_task_sessions_session_id\").on(table.sessionId),\n // Index for finding active sessions\n index(\"idx_task_sessions_active\").on(table.taskId, table.disconnectedAt),\n]);\n// =============================================================================\n// RELATIONS\n// =============================================================================\n/**\n * Task relations\n */\nexport const tasksRelations = relations(tasks, ({ one, many }) => ({\n // User who owns this task\n user: one(user, {\n fields: [tasks.userId],\n references: [user.id],\n }),\n // Task this continues from (lineage)\n continuedFrom: one(tasks, {\n fields: [tasks.continuesFrom],\n references: [tasks.id],\n relationName: \"task_lineage\",\n }),\n // Tasks that continue from this task\n continuedBy: many(tasks, {\n relationName: \"task_lineage\",\n }),\n // Events for this task\n events: many(taskEvents),\n // File changes for this task\n files: many(taskFiles),\n // Learnings for this task\n learnings: many(taskLearnings),\n // Sessions for this task\n sessions: many(taskSessions),\n}));\n/**\n * Task events relations\n */\nexport const taskEventsRelations = relations(taskEvents, ({ one }) => ({\n // Task this event belongs to\n task: one(tasks, {\n fields: [taskEvents.taskId],\n references: [tasks.id],\n }),\n}));\n/**\n * Task files relations\n */\nexport const taskFilesRelations = relations(taskFiles, ({ one }) => ({\n // Task this file belongs to\n task: one(tasks, {\n fields: [taskFiles.taskId],\n references: [tasks.id],\n }),\n}));\n/**\n * Task learnings relations\n */\nexport const taskLearningsRelations = relations(taskLearnings, ({ one }) => ({\n // Task this learning belongs to\n task: one(tasks, {\n fields: [taskLearnings.taskId],\n references: [tasks.id],\n }),\n}));\n/**\n * Task sessions relations\n */\nexport const taskSessionsRelations = relations(taskSessions, ({ one }) => ({\n // Task this session belongs to\n task: one(tasks, {\n fields: [taskSessions.taskId],\n references: [tasks.id],\n }),\n}));\n// =============================================================================\n// DERIVED COUNTER FUNCTIONS\n// =============================================================================\n/**\n * Compute derived counters from accumulated state.\n *\n * CRITICAL: These are NEVER stored independently.\n * They are always computed from the accumulated state.\n * This eliminates the ceremony zeros bug by construction.\n */\n/**\n * SQL to compute file change counts by action type\n * Used for ceremony metrics\n */\nexport const fileChangeCountsSql = sql `\n\tSELECT \n\t\tCOUNT(DISTINCT CASE WHEN action = 'modified' THEN path END) as files_modified,\n\t\tCOUNT(DISTINCT CASE WHEN action = 'added' THEN path END) as files_created,\n\t\tCOUNT(DISTINCT CASE WHEN action = 'deleted' THEN path END) as files_deleted,\n\t\tCOUNT(*) as total_file_operations\n\tFROM task_files\n\tWHERE task_id = $taskId\n`;\n/**\n * SQL to count learnings for a task\n */\nexport const learningCountSql = sql `\n\tSELECT COUNT(*) as count\n\tFROM task_learnings\n\tWHERE task_id = $taskId\n`;\n/**\n * SQL to count sessions for a task\n */\nexport const sessionCountSql = sql `\n\tSELECT COUNT(*) as count\n\tFROM task_sessions\n\tWHERE task_id = $taskId\n`;\n/**\n * SQL to count pulses (pulse_recorded events) for a task\n */\nexport const pulseCountSql = sql `\n\tSELECT COUNT(*) as count\n\tFROM task_events\n\tWHERE task_id = $taskId AND type = 'pulse_recorded'\n`;\n"]}