libre-webui 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -22
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +33 -4
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/middleware/auth.d.ts +7 -0
- package/backend/dist/middleware/auth.d.ts.map +1 -1
- package/backend/dist/middleware/auth.js +26 -0
- package/backend/dist/middleware/auth.js.map +1 -1
- package/backend/dist/middleware/index.d.ts +20 -0
- package/backend/dist/middleware/index.d.ts.map +1 -1
- package/backend/dist/middleware/index.js +105 -2
- package/backend/dist/middleware/index.js.map +1 -1
- package/backend/dist/models/personaModel.d.ts.map +1 -1
- package/backend/dist/models/personaModel.js +2 -0
- package/backend/dist/models/personaModel.js.map +1 -1
- package/backend/dist/observability/otel.d.ts +40 -0
- package/backend/dist/observability/otel.d.ts.map +1 -0
- package/backend/dist/observability/otel.js +337 -0
- package/backend/dist/observability/otel.js.map +1 -0
- package/backend/dist/observability/requestContext.d.ts +14 -0
- package/backend/dist/observability/requestContext.d.ts.map +1 -0
- package/backend/dist/observability/requestContext.js +21 -0
- package/backend/dist/observability/requestContext.js.map +1 -0
- package/backend/dist/persistence/chatGenerationTypes.d.ts +9 -0
- package/backend/dist/persistence/chatGenerationTypes.d.ts.map +1 -1
- package/backend/dist/persistence/extensionTypes.d.ts +13 -0
- package/backend/dist/persistence/extensionTypes.d.ts.map +1 -1
- package/backend/dist/persistence/extensionTypes.js.map +1 -1
- package/backend/dist/persistence/index.d.ts +1 -1
- package/backend/dist/persistence/index.d.ts.map +1 -1
- package/backend/dist/persistence/index.js.map +1 -1
- package/backend/dist/persistence/postgresAgentFoundationMigration.d.ts +9 -0
- package/backend/dist/persistence/postgresAgentFoundationMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresAgentFoundationMigration.js +164 -0
- package/backend/dist/persistence/postgresAgentFoundationMigration.js.map +1 -0
- package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/postgresExtensionRepositories.js +46 -2
- package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -1
- package/backend/dist/persistence/postgresMediaEnterpriseOpsMigration.d.ts +10 -0
- package/backend/dist/persistence/postgresMediaEnterpriseOpsMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresMediaEnterpriseOpsMigration.js +148 -0
- package/backend/dist/persistence/postgresMediaEnterpriseOpsMigration.js.map +1 -0
- package/backend/dist/persistence/postgresMfaPushRecoveryMigration.d.ts +9 -0
- package/backend/dist/persistence/postgresMfaPushRecoveryMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js +107 -0
- package/backend/dist/persistence/postgresMfaPushRecoveryMigration.js.map +1 -0
- package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -1
- package/backend/dist/persistence/postgresMigrationRegistry.js +12 -0
- package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -1
- package/backend/dist/persistence/postgresNotesV2Migration.d.ts +4 -0
- package/backend/dist/persistence/postgresNotesV2Migration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresNotesV2Migration.js +57 -0
- package/backend/dist/persistence/postgresNotesV2Migration.js.map +1 -0
- package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/postgresResourceRepositories.js +1930 -133
- package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -1
- package/backend/dist/persistence/postgresSecurityRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/postgresSecurityRepositories.js +150 -0
- package/backend/dist/persistence/postgresSecurityRepositories.js.map +1 -1
- package/backend/dist/persistence/postgresSkillFilesMigration.d.ts +9 -0
- package/backend/dist/persistence/postgresSkillFilesMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresSkillFilesMigration.js +50 -0
- package/backend/dist/persistence/postgresSkillFilesMigration.js.map +1 -0
- package/backend/dist/persistence/postgresTeamCollaborationMigration.d.ts +10 -0
- package/backend/dist/persistence/postgresTeamCollaborationMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresTeamCollaborationMigration.js +161 -0
- package/backend/dist/persistence/postgresTeamCollaborationMigration.js.map +1 -0
- package/backend/dist/persistence/resourceTypes.d.ts +600 -3
- package/backend/dist/persistence/resourceTypes.d.ts.map +1 -1
- package/backend/dist/persistence/resourceTypes.js.map +1 -1
- package/backend/dist/persistence/securityTypes.d.ts +59 -0
- package/backend/dist/persistence/securityTypes.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteExtensionRepositories.js +26 -4
- package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -1
- package/backend/dist/persistence/sqliteMigrations.d.ts +10 -0
- package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteMigrations.js +1492 -131
- package/backend/dist/persistence/sqliteMigrations.js.map +1 -1
- package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteResourceRepositories.js +1657 -134
- package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -1
- package/backend/dist/persistence/sqliteSecurityRepositories.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteSecurityRepositories.js +134 -0
- package/backend/dist/persistence/sqliteSecurityRepositories.js.map +1 -1
- package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -1
- package/backend/dist/persistence/sqliteToPostgresMigration.js +302 -3
- package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -1
- package/backend/dist/platform/jobs/domainJobContracts.d.ts +10 -0
- package/backend/dist/platform/jobs/domainJobContracts.d.ts.map +1 -1
- package/backend/dist/platform/jobs/domainJobContracts.js +10 -0
- package/backend/dist/platform/jobs/domainJobContracts.js.map +1 -1
- package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -1
- package/backend/dist/platform/jobs/domainJobHandlers.js +374 -4
- package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -1
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.d.ts.map +1 -1
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.js +4 -2
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.js.map +1 -1
- package/backend/dist/platform/jobs/postgresDurableJobWorker.d.ts.map +1 -1
- package/backend/dist/platform/jobs/postgresDurableJobWorker.js +4 -2
- package/backend/dist/platform/jobs/postgresDurableJobWorker.js.map +1 -1
- package/backend/dist/platform/storage/pgVectorStore.d.ts +2 -1
- package/backend/dist/platform/storage/pgVectorStore.d.ts.map +1 -1
- package/backend/dist/platform/storage/pgVectorStore.js +51 -0
- package/backend/dist/platform/storage/pgVectorStore.js.map +1 -1
- package/backend/dist/platform/storage/platformDomainRepositories.d.ts +8 -2
- package/backend/dist/platform/storage/platformDomainRepositories.d.ts.map +1 -1
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.d.ts.map +1 -1
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js +25 -4
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js.map +1 -1
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts +2 -1
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts.map +1 -1
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js +35 -0
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js.map +1 -1
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.d.ts.map +1 -1
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js +26 -3
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js.map +1 -1
- package/backend/dist/platform/storage/vectorStore.d.ts +14 -0
- package/backend/dist/platform/storage/vectorStore.d.ts.map +1 -1
- package/backend/dist/platform/storage/vectorStore.js.map +1 -1
- package/backend/dist/routes/access.d.ts.map +1 -1
- package/backend/dist/routes/access.js +84 -3
- package/backend/dist/routes/access.js.map +1 -1
- package/backend/dist/routes/auth.d.ts.map +1 -1
- package/backend/dist/routes/auth.js +419 -1
- package/backend/dist/routes/auth.js.map +1 -1
- package/backend/dist/routes/calendar.d.ts.map +1 -1
- package/backend/dist/routes/calendar.js +125 -22
- package/backend/dist/routes/calendar.js.map +1 -1
- package/backend/dist/routes/channels.d.ts +3 -0
- package/backend/dist/routes/channels.d.ts.map +1 -0
- package/backend/dist/routes/channels.js +447 -0
- package/backend/dist/routes/channels.js.map +1 -0
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +195 -7
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/costs.d.ts +3 -0
- package/backend/dist/routes/costs.d.ts.map +1 -0
- package/backend/dist/routes/costs.js +191 -0
- package/backend/dist/routes/costs.js.map +1 -0
- package/backend/dist/routes/documents.d.ts.map +1 -1
- package/backend/dist/routes/documents.js +68 -21
- package/backend/dist/routes/documents.js.map +1 -1
- package/backend/dist/routes/evaluations.d.ts +3 -0
- package/backend/dist/routes/evaluations.d.ts.map +1 -0
- package/backend/dist/routes/evaluations.js +352 -0
- package/backend/dist/routes/evaluations.js.map +1 -0
- package/backend/dist/routes/imageGen.d.ts.map +1 -1
- package/backend/dist/routes/imageGen.js +2 -1
- package/backend/dist/routes/imageGen.js.map +1 -1
- package/backend/dist/routes/media.d.ts.map +1 -1
- package/backend/dist/routes/media.js +228 -7
- package/backend/dist/routes/media.js.map +1 -1
- package/backend/dist/routes/notes.d.ts.map +1 -1
- package/backend/dist/routes/notes.js +149 -36
- package/backend/dist/routes/notes.js.map +1 -1
- package/backend/dist/routes/notifications.d.ts +3 -0
- package/backend/dist/routes/notifications.d.ts.map +1 -0
- package/backend/dist/routes/notifications.js +213 -0
- package/backend/dist/routes/notifications.js.map +1 -0
- package/backend/dist/routes/openaiCompat.d.ts +3 -0
- package/backend/dist/routes/openaiCompat.d.ts.map +1 -0
- package/backend/dist/routes/openaiCompat.js +314 -0
- package/backend/dist/routes/openaiCompat.js.map +1 -0
- package/backend/dist/routes/personas.js +1 -1
- package/backend/dist/routes/personas.js.map +1 -1
- package/backend/dist/routes/prompts.d.ts +3 -0
- package/backend/dist/routes/prompts.d.ts.map +1 -0
- package/backend/dist/routes/prompts.js +173 -0
- package/backend/dist/routes/prompts.js.map +1 -0
- package/backend/dist/routes/push.d.ts +3 -0
- package/backend/dist/routes/push.d.ts.map +1 -0
- package/backend/dist/routes/push.js +105 -0
- package/backend/dist/routes/push.js.map +1 -0
- package/backend/dist/routes/recovery.d.ts +3 -0
- package/backend/dist/routes/recovery.d.ts.map +1 -0
- package/backend/dist/routes/recovery.js +83 -0
- package/backend/dist/routes/recovery.js.map +1 -0
- package/backend/dist/routes/search.d.ts.map +1 -1
- package/backend/dist/routes/search.js +29 -1
- package/backend/dist/routes/search.js.map +1 -1
- package/backend/dist/routes/skills.d.ts +3 -0
- package/backend/dist/routes/skills.d.ts.map +1 -0
- package/backend/dist/routes/skills.js +246 -0
- package/backend/dist/routes/skills.js.map +1 -0
- package/backend/dist/routes/stt.d.ts.map +1 -1
- package/backend/dist/routes/stt.js +2 -1
- package/backend/dist/routes/stt.js.map +1 -1
- package/backend/dist/routes/tools.d.ts +3 -0
- package/backend/dist/routes/tools.d.ts.map +1 -0
- package/backend/dist/routes/tools.js +359 -0
- package/backend/dist/routes/tools.js.map +1 -0
- package/backend/dist/routes/tts.d.ts.map +1 -1
- package/backend/dist/routes/tts.js +63 -8
- package/backend/dist/routes/tts.js.map +1 -1
- package/backend/dist/routes/users.d.ts.map +1 -1
- package/backend/dist/routes/users.js +35 -0
- package/backend/dist/routes/users.js.map +1 -1
- package/backend/dist/routes/voiceAccess.d.ts +3 -0
- package/backend/dist/routes/voiceAccess.d.ts.map +1 -0
- package/backend/dist/routes/voiceAccess.js +102 -0
- package/backend/dist/routes/voiceAccess.js.map +1 -0
- package/backend/dist/services/apiTokenService.d.ts +2 -2
- package/backend/dist/services/apiTokenService.d.ts.map +1 -1
- package/backend/dist/services/apiTokenService.js +7 -0
- package/backend/dist/services/apiTokenService.js.map +1 -1
- package/backend/dist/services/authService.d.ts +6 -0
- package/backend/dist/services/authService.d.ts.map +1 -1
- package/backend/dist/services/authService.js +9 -0
- package/backend/dist/services/authService.js.map +1 -1
- package/backend/dist/services/authorizationService.d.ts +8 -4
- package/backend/dist/services/authorizationService.d.ts.map +1 -1
- package/backend/dist/services/authorizationService.js +31 -1
- package/backend/dist/services/authorizationService.js.map +1 -1
- package/backend/dist/services/automationSchedulerService.d.ts.map +1 -1
- package/backend/dist/services/automationSchedulerService.js +40 -3
- package/backend/dist/services/automationSchedulerService.js.map +1 -1
- package/backend/dist/services/automationService.d.ts +4 -1
- package/backend/dist/services/automationService.d.ts.map +1 -1
- package/backend/dist/services/automationService.js +25 -2
- package/backend/dist/services/automationService.js.map +1 -1
- package/backend/dist/services/builtinToolsService.d.ts +20 -0
- package/backend/dist/services/builtinToolsService.d.ts.map +1 -0
- package/backend/dist/services/builtinToolsService.js +661 -0
- package/backend/dist/services/builtinToolsService.js.map +1 -0
- package/backend/dist/services/calendarService.d.ts +74 -0
- package/backend/dist/services/calendarService.d.ts.map +1 -0
- package/backend/dist/services/calendarService.js +339 -0
- package/backend/dist/services/calendarService.js.map +1 -0
- package/backend/dist/services/channelService.d.ts +195 -0
- package/backend/dist/services/channelService.d.ts.map +1 -0
- package/backend/dist/services/channelService.js +1057 -0
- package/backend/dist/services/channelService.js.map +1 -0
- package/backend/dist/services/chatRequestService.d.ts.map +1 -1
- package/backend/dist/services/chatRequestService.js +29 -1
- package/backend/dist/services/chatRequestService.js.map +1 -1
- package/backend/dist/services/chatService.d.ts +61 -1
- package/backend/dist/services/chatService.d.ts.map +1 -1
- package/backend/dist/services/chatService.js +218 -1
- package/backend/dist/services/chatService.js.map +1 -1
- package/backend/dist/services/chatToolRuntimeService.d.ts +55 -0
- package/backend/dist/services/chatToolRuntimeService.d.ts.map +1 -0
- package/backend/dist/services/chatToolRuntimeService.js +389 -0
- package/backend/dist/services/chatToolRuntimeService.js.map +1 -0
- package/backend/dist/services/costGovernanceService.d.ts +102 -0
- package/backend/dist/services/costGovernanceService.d.ts.map +1 -0
- package/backend/dist/services/costGovernanceService.js +463 -0
- package/backend/dist/services/costGovernanceService.js.map +1 -0
- package/backend/dist/services/dataArchiveService.d.ts +6 -0
- package/backend/dist/services/dataArchiveService.d.ts.map +1 -1
- package/backend/dist/services/dataArchiveService.js +26 -4
- package/backend/dist/services/dataArchiveService.js.map +1 -1
- package/backend/dist/services/documentMediaExtractionService.d.ts +40 -0
- package/backend/dist/services/documentMediaExtractionService.d.ts.map +1 -0
- package/backend/dist/services/documentMediaExtractionService.js +157 -0
- package/backend/dist/services/documentMediaExtractionService.js.map +1 -0
- package/backend/dist/services/documentService.d.ts +64 -1
- package/backend/dist/services/documentService.d.ts.map +1 -1
- package/backend/dist/services/documentService.js +342 -83
- package/backend/dist/services/documentService.js.map +1 -1
- package/backend/dist/services/durableChatGenerationService.d.ts +9 -0
- package/backend/dist/services/durableChatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/durableChatGenerationService.js +152 -11
- package/backend/dist/services/durableChatGenerationService.js.map +1 -1
- package/backend/dist/services/encryptionService.d.ts +6 -0
- package/backend/dist/services/encryptionService.d.ts.map +1 -1
- package/backend/dist/services/encryptionService.js +12 -0
- package/backend/dist/services/encryptionService.js.map +1 -1
- package/backend/dist/services/evaluationService.d.ts +111 -0
- package/backend/dist/services/evaluationService.d.ts.map +1 -0
- package/backend/dist/services/evaluationService.js +403 -0
- package/backend/dist/services/evaluationService.js.map +1 -0
- package/backend/dist/services/galleryService.d.ts +6 -0
- package/backend/dist/services/galleryService.d.ts.map +1 -1
- package/backend/dist/services/galleryService.js +26 -0
- package/backend/dist/services/galleryService.js.map +1 -1
- package/backend/dist/services/mcpClientService.d.ts +29 -0
- package/backend/dist/services/mcpClientService.d.ts.map +1 -0
- package/backend/dist/services/mcpClientService.js +189 -0
- package/backend/dist/services/mcpClientService.js.map +1 -0
- package/backend/dist/services/mfaService.d.ts +64 -0
- package/backend/dist/services/mfaService.d.ts.map +1 -0
- package/backend/dist/services/mfaService.js +263 -0
- package/backend/dist/services/mfaService.js.map +1 -0
- package/backend/dist/services/noteService.d.ts +71 -0
- package/backend/dist/services/noteService.d.ts.map +1 -0
- package/backend/dist/services/noteService.js +397 -0
- package/backend/dist/services/noteService.js.map +1 -0
- package/backend/dist/services/notificationService.d.ts +60 -0
- package/backend/dist/services/notificationService.d.ts.map +1 -0
- package/backend/dist/services/notificationService.js +340 -0
- package/backend/dist/services/notificationService.js.map +1 -0
- package/backend/dist/services/openApiToolService.d.ts +38 -0
- package/backend/dist/services/openApiToolService.d.ts.map +1 -0
- package/backend/dist/services/openApiToolService.js +254 -0
- package/backend/dist/services/openApiToolService.js.map +1 -0
- package/backend/dist/services/personaService.d.ts +18 -2
- package/backend/dist/services/personaService.d.ts.map +1 -1
- package/backend/dist/services/personaService.js +113 -4
- package/backend/dist/services/personaService.js.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.d.ts +19 -0
- package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.js +121 -0
- package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
- package/backend/dist/services/pluginService.d.ts +7 -0
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +8 -2
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/preferencesService.d.ts +1 -1
- package/backend/dist/services/preferencesService.d.ts.map +1 -1
- package/backend/dist/services/preferencesService.js +1 -0
- package/backend/dist/services/preferencesService.js.map +1 -1
- package/backend/dist/services/promptService.d.ts +74 -0
- package/backend/dist/services/promptService.d.ts.map +1 -0
- package/backend/dist/services/promptService.js +513 -0
- package/backend/dist/services/promptService.js.map +1 -0
- package/backend/dist/services/recoveryDrillService.d.ts +57 -0
- package/backend/dist/services/recoveryDrillService.d.ts.map +1 -0
- package/backend/dist/services/recoveryDrillService.js +363 -0
- package/backend/dist/services/recoveryDrillService.js.map +1 -0
- package/backend/dist/services/resourceGrantService.d.ts.map +1 -1
- package/backend/dist/services/resourceGrantService.js +62 -17
- package/backend/dist/services/resourceGrantService.js.map +1 -1
- package/backend/dist/services/searchService.d.ts +29 -0
- package/backend/dist/services/searchService.d.ts.map +1 -0
- package/backend/dist/services/searchService.js +0 -0
- package/backend/dist/services/searchService.js.map +1 -0
- package/backend/dist/services/securityAuditService.d.ts.map +1 -1
- package/backend/dist/services/securityAuditService.js +2 -1
- package/backend/dist/services/securityAuditService.js.map +1 -1
- package/backend/dist/services/sharedResourceAccess.d.ts +25 -0
- package/backend/dist/services/sharedResourceAccess.d.ts.map +1 -0
- package/backend/dist/services/sharedResourceAccess.js +59 -0
- package/backend/dist/services/sharedResourceAccess.js.map +1 -0
- package/backend/dist/services/skillService.d.ts +137 -0
- package/backend/dist/services/skillService.d.ts.map +1 -0
- package/backend/dist/services/skillService.js +852 -0
- package/backend/dist/services/skillService.js.map +1 -0
- package/backend/dist/services/toolAccessService.d.ts +9 -0
- package/backend/dist/services/toolAccessService.d.ts.map +1 -0
- package/backend/dist/services/toolAccessService.js +60 -0
- package/backend/dist/services/toolAccessService.js.map +1 -0
- package/backend/dist/services/toolApprovalService.d.ts +34 -0
- package/backend/dist/services/toolApprovalService.d.ts.map +1 -0
- package/backend/dist/services/toolApprovalService.js +188 -0
- package/backend/dist/services/toolApprovalService.js.map +1 -0
- package/backend/dist/services/toolGatewayService.d.ts +53 -0
- package/backend/dist/services/toolGatewayService.d.ts.map +1 -0
- package/backend/dist/services/toolGatewayService.js +249 -0
- package/backend/dist/services/toolGatewayService.js.map +1 -0
- package/backend/dist/services/toolServerService.d.ts +57 -0
- package/backend/dist/services/toolServerService.d.ts.map +1 -0
- package/backend/dist/services/toolServerService.js +521 -0
- package/backend/dist/services/toolServerService.js.map +1 -0
- package/backend/dist/services/voiceAccessService.d.ts +10 -0
- package/backend/dist/services/voiceAccessService.d.ts.map +1 -0
- package/backend/dist/services/voiceAccessService.js +74 -0
- package/backend/dist/services/voiceAccessService.js.map +1 -0
- package/backend/dist/services/voiceProfileService.d.ts +20 -0
- package/backend/dist/services/voiceProfileService.d.ts.map +1 -1
- package/backend/dist/services/voiceProfileService.js +60 -0
- package/backend/dist/services/voiceProfileService.js.map +1 -1
- package/backend/dist/services/webPushService.d.ts +71 -0
- package/backend/dist/services/webPushService.d.ts.map +1 -0
- package/backend/dist/services/webPushService.js +328 -0
- package/backend/dist/services/webPushService.js.map +1 -0
- package/backend/dist/services/webauthnService.d.ts +58 -0
- package/backend/dist/services/webauthnService.d.ts.map +1 -0
- package/backend/dist/services/webauthnService.js +300 -0
- package/backend/dist/services/webauthnService.js.map +1 -0
- package/backend/dist/storage.d.ts +28 -1
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js +100 -1
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/storageMappers.d.ts +2 -2
- package/backend/dist/storageMappers.d.ts.map +1 -1
- package/backend/dist/storageMappers.js.map +1 -1
- package/backend/dist/types/index.d.ts +199 -3
- package/backend/dist/types/index.d.ts.map +1 -1
- package/backend/dist/types/index.js.map +1 -1
- package/backend/dist/types/tools.d.ts +137 -0
- package/backend/dist/types/tools.d.ts.map +1 -0
- package/backend/dist/types/tools.js +25 -0
- package/backend/dist/types/tools.js.map +1 -0
- package/backend/dist/utils/chatDocumentContext.d.ts +26 -1
- package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
- package/backend/dist/utils/chatDocumentContext.js +87 -18
- package/backend/dist/utils/chatDocumentContext.js.map +1 -1
- package/backend/dist/utils/documentExtraction.d.ts +97 -0
- package/backend/dist/utils/documentExtraction.d.ts.map +1 -0
- package/backend/dist/utils/documentExtraction.js +651 -0
- package/backend/dist/utils/documentExtraction.js.map +1 -0
- package/backend/dist/utils/hybridRetrieval.d.ts +34 -0
- package/backend/dist/utils/hybridRetrieval.d.ts.map +1 -0
- package/backend/dist/utils/hybridRetrieval.js +119 -0
- package/backend/dist/utils/hybridRetrieval.js.map +1 -0
- package/backend/dist/utils/icsCalendar.d.ts +27 -0
- package/backend/dist/utils/icsCalendar.d.ts.map +1 -0
- package/backend/dist/utils/icsCalendar.js +313 -0
- package/backend/dist/utils/icsCalendar.js.map +1 -0
- package/backend/dist/utils/imageEditUpload.d.ts +29 -0
- package/backend/dist/utils/imageEditUpload.d.ts.map +1 -0
- package/backend/dist/utils/imageEditUpload.js +82 -0
- package/backend/dist/utils/imageEditUpload.js.map +1 -0
- package/backend/dist/utils/logRedaction.d.ts +2 -0
- package/backend/dist/utils/logRedaction.d.ts.map +1 -0
- package/backend/dist/utils/logRedaction.js +66 -0
- package/backend/dist/utils/logRedaction.js.map +1 -0
- package/backend/dist/utils/logger.d.ts +3 -0
- package/backend/dist/utils/logger.d.ts.map +1 -1
- package/backend/dist/utils/logger.js +63 -20
- package/backend/dist/utils/logger.js.map +1 -1
- package/backend/dist/utils/pluginChatAdapter.d.ts +5 -1
- package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
- package/backend/dist/utils/pluginChatAdapter.js +83 -0
- package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
- package/backend/dist/utils/pluginDefinitionTrust.js +1 -1
- package/backend/dist/utils/resourceLimits.d.ts +61 -2
- package/backend/dist/utils/resourceLimits.d.ts.map +1 -1
- package/backend/dist/utils/resourceLimits.js +59 -0
- package/backend/dist/utils/resourceLimits.js.map +1 -1
- package/backend/dist/utils/toolEgress.d.ts +23 -0
- package/backend/dist/utils/toolEgress.d.ts.map +1 -0
- package/backend/dist/utils/toolEgress.js +169 -0
- package/backend/dist/utils/toolEgress.js.map +1 -0
- package/backend/dist/utils/totp.d.ts +19 -0
- package/backend/dist/utils/totp.d.ts.map +1 -0
- package/backend/dist/utils/totp.js +117 -0
- package/backend/dist/utils/totp.js.map +1 -0
- package/backend/dist/utils/webauthn.d.ts +43 -0
- package/backend/dist/utils/webauthn.d.ts.map +1 -0
- package/backend/dist/utils/webauthn.js +294 -0
- package/backend/dist/utils/webauthn.js.map +1 -0
- package/backend/dist/utils/websocketMessages.d.ts +6 -0
- package/backend/dist/utils/websocketMessages.d.ts.map +1 -1
- package/backend/dist/utils/websocketMessages.js +8 -0
- package/backend/dist/utils/websocketMessages.js.map +1 -1
- package/backend/dist/utils/zipArchive.d.ts +32 -0
- package/backend/dist/utils/zipArchive.d.ts.map +1 -0
- package/backend/dist/utils/zipArchive.js +171 -0
- package/backend/dist/utils/zipArchive.js.map +1 -0
- package/backend/dist/websocketServer.d.ts.map +1 -1
- package/backend/dist/websocketServer.js +142 -35
- package/backend/dist/websocketServer.js.map +1 -1
- package/backend/package.json +1 -1
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/assets/index-DBAf_VaS.js +47 -0
- package/frontend/dist/assets/index-kn_Axjts.css +1 -0
- package/frontend/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
- package/frontend/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
- package/frontend/dist/fonts/jetbrains-mono.css +24 -0
- package/frontend/dist/index.html +27 -20
- package/frontend/dist/js/ArtifactContainer-C9zNtCay.js +1 -0
- package/frontend/dist/js/{ArtifactDemoPage-BeNs3gHp.js → ArtifactDemoPage-C-EBFBCt.js} +1 -1
- package/frontend/dist/js/ArtifactSandboxFrame-CTA1j_d1.js +111 -0
- package/frontend/dist/js/ArtifactSlideOutPanel-BOENbOiv.js +1 -0
- package/frontend/dist/js/AutomationsPage-C58MQ4te.js +1 -0
- package/frontend/dist/js/{Button-BPf_pOxH.js → Button-C0r3J9G_.js} +1 -1
- package/frontend/dist/js/CalendarPage-BcdAZ292.js +1 -0
- package/frontend/dist/js/ChannelsPage-DPr9Yajs.js +1 -0
- package/frontend/dist/js/ChatPage-DsbB748s.js +14 -0
- package/frontend/dist/js/EvaluationsPage-FWIJu2fI.js +2 -0
- package/frontend/dist/js/FirstTimeSetup-Cy-w6xko.js +1 -0
- package/frontend/dist/js/GalleryPage-DDAtxM-x.js +1 -0
- package/frontend/dist/js/HomePage-DLKwmE7n.js +1 -0
- package/frontend/dist/js/LibreClawPage-vKOj-9w9.js +1 -0
- package/frontend/dist/js/{ModelManagerModals-DcLGYN3l.js → ModelManagerModals-BY5TK38_.js} +1 -1
- package/frontend/dist/js/ModelSelector-CoCS6MZ9.js +1 -0
- package/frontend/dist/js/NotesPage-BElIpXgA.js +3 -0
- package/frontend/dist/js/OptimizedSyntaxHighlighter-xgyE3dRA.js +1 -0
- package/frontend/dist/js/PersonasPage-P40jVbfU.js +13 -0
- package/frontend/dist/js/PluginUsagePage-CKUEPCJN.js +1 -0
- package/frontend/dist/js/RichMessageContent-Bm2WaEGi.js +3 -0
- package/frontend/dist/js/SettingsModal-DxSGzx9A.js +19 -0
- package/frontend/dist/js/{SettingsToggle-woG_WebF.js → SettingsToggle-BIVyfGjl.js} +1 -1
- package/frontend/dist/js/SystemPage-BT07dTMT.js +1 -0
- package/frontend/dist/js/UserManagementPage-B9Vz5cm3.js +1 -0
- package/frontend/dist/js/WorkPage-qoN_e_jK.js +6 -0
- package/frontend/dist/js/api-D7Ff5M2Q.js +14 -0
- package/frontend/dist/js/appStore-DmV5wqDz.js +2 -0
- package/frontend/dist/js/ar-YHHTVP8f.js +2 -0
- package/frontend/dist/js/artifactHtml-DDmfpcB0.js +41 -0
- package/frontend/dist/js/{authStore-DbMdvNgJ.js → authStore-BYW8-kP6.js} +3 -3
- package/frontend/dist/js/{babel-BsYoxD-7.js → babel-DSqqk5kt.js} +1 -1
- package/frontend/dist/js/bn-C8VTxBVl.js +2 -0
- package/frontend/dist/js/chatStore-D-NTlArO.js +3 -0
- package/frontend/dist/js/{config-DSOYQ9a3.js → config-BqZ5304Q.js} +1 -1
- package/frontend/dist/js/cs-CCngB5fC.js +2 -0
- package/frontend/dist/js/da-CM2PP2ma.js +2 -0
- package/frontend/dist/js/de-BqVkD-dw.js +2 -0
- package/frontend/dist/js/es-BtWsWBjZ.js +2 -0
- package/frontend/dist/js/{estree-BcnBcOAx.js → estree-DPkpBuOU.js} +3 -3
- package/frontend/dist/js/evaluationsApi-Dnf2dTd-.js +1 -0
- package/frontend/dist/js/fr-C68w9abT.js +2 -0
- package/frontend/dist/js/hi-DtBlcyXZ.js +2 -0
- package/frontend/dist/js/{html-DkY55Jys.js → html-BpGUXG8E.js} +2 -2
- package/frontend/dist/js/id-BWzIu8tn.js +2 -0
- package/frontend/dist/js/is-yeFwu4dJ.js +2 -0
- package/frontend/dist/js/it-AxEMG8Jg.js +2 -0
- package/frontend/dist/js/ja-B-VyokB8.js +2 -0
- package/frontend/dist/js/ko-CvwzYr9k.js +2 -0
- package/frontend/dist/js/{markdown-IZSI9DXw.js → markdown-DCBRWJSK.js} +3 -3
- package/frontend/dist/js/markdown-core-BK7WVOb7.js +32 -0
- package/frontend/dist/js/{markdown-math-DK846gXU.js → markdown-math-e1ByS3KY.js} +5 -5
- package/frontend/dist/js/messageCodeStyles-BQwf7sSz.js +2 -0
- package/frontend/dist/js/ms-BhEwb4b7.js +2 -0
- package/frontend/dist/js/nl-Dq-QRx1L.js +2 -0
- package/frontend/dist/js/pl-BNEy8mQm.js +2 -0
- package/frontend/dist/js/{postcss-BJ0okz7n.js → postcss-Bg15EcFE.js} +1 -1
- package/frontend/dist/js/pt-_3Jl3FdY.js +2 -0
- package/frontend/dist/js/{react-vendor-C5yShNlM.js → react-vendor-BG_HPV6X.js} +1 -1
- package/frontend/dist/js/router-vendor-CbexJIsv.js +1 -0
- package/frontend/dist/js/ru-IhQiJ8ta.js +2 -0
- package/frontend/dist/js/{standalone-Csw3jfJ_.js → standalone-BFrK0R2A.js} +3 -3
- package/frontend/dist/js/sv-DWunXUNz.js +2 -0
- package/frontend/dist/js/{syntax-highlight-3EEX6CGL.js → syntax-highlight-P2zo9o06.js} +4 -4
- package/frontend/dist/js/th-DVnW2yyh.js +2 -0
- package/frontend/dist/js/tr-Do8CFmhR.js +2 -0
- package/frontend/dist/js/{typescript-CnF4UVx7.js → typescript-DYVyvmm_.js} +1 -1
- package/frontend/dist/js/ui-db9meqAB.js +2 -0
- package/frontend/dist/js/ui-vendor-C0DZ8-Cm.js +177 -0
- package/frontend/dist/js/uk-BNPKIZga.js +2 -0
- package/frontend/dist/js/{useTranslation-Bho4HCyg.js → useTranslation-5b5UhAc9.js} +1 -1
- package/frontend/dist/js/{utils-D9W1Lnkn.js → utils-BGrdX9ie.js} +1 -1
- package/frontend/dist/js/{utils-vendor-DWh39_3x.js → utils-vendor-9bQ62WeD.js} +1 -1
- package/frontend/dist/js/vi-CZMFo9je.js +2 -0
- package/frontend/dist/js/{workApi-C3uy9EDT.js → workApi-CcprMH_1.js} +3 -3
- package/frontend/dist/js/{yaml-DzT5hBSH.js → yaml-DUeWcOOH.js} +2 -2
- package/frontend/dist/js/zh-Pg0881v0.js +2 -0
- package/frontend/dist/manifest.webmanifest +32 -0
- package/frontend/dist/sw.js +125 -0
- package/package.json +2 -2
- package/plugins/openai.json +52 -9
- package/frontend/dist/assets/index-6o-Hc2wS.js +0 -41
- package/frontend/dist/assets/index-D-pM957b.css +0 -1
- package/frontend/dist/js/ArtifactContainer-CpUi6ekF.js +0 -1
- package/frontend/dist/js/ArtifactSandboxFrame-qsj_Y3LV.js +0 -151
- package/frontend/dist/js/ArtifactSlideOutPanel-CSFRluWA.js +0 -1
- package/frontend/dist/js/AutomationsPage-KUeWoZNv.js +0 -1
- package/frontend/dist/js/CalendarPage-D9I972w8.js +0 -1
- package/frontend/dist/js/ChatPage-CmBx4oAL.js +0 -16
- package/frontend/dist/js/FirstTimeSetup-Df0YJni3.js +0 -1
- package/frontend/dist/js/GalleryPage-bLCrdJN_.js +0 -1
- package/frontend/dist/js/HomePage-Uc6PEg-U.js +0 -1
- package/frontend/dist/js/LibreClawPage-CG63DHg1.js +0 -1
- package/frontend/dist/js/ModelSelector-yxJC64rM.js +0 -1
- package/frontend/dist/js/ModelsPage-1R_TxgmJ.js +0 -2
- package/frontend/dist/js/NotesPage-L65j5HoW.js +0 -1
- package/frontend/dist/js/OptimizedSyntaxHighlighter-Dz7D1LPB.js +0 -1
- package/frontend/dist/js/PersonasPage-CKeBpHIH.js +0 -13
- package/frontend/dist/js/PluginUsagePage-BX1SKMbW.js +0 -1
- package/frontend/dist/js/RichMessageContent-DiySVYGB.js +0 -3
- package/frontend/dist/js/SettingsModal-68SG1uZ2.js +0 -1
- package/frontend/dist/js/SystemPage-CytpZiQV.js +0 -1
- package/frontend/dist/js/UserManagementPage-BzJBvZiS.js +0 -1
- package/frontend/dist/js/WorkPage-C8gr0QJe.js +0 -6
- package/frontend/dist/js/api-BDtqBtqw.js +0 -14
- package/frontend/dist/js/appStore-0JnCUlEq.js +0 -2
- package/frontend/dist/js/ar-CSpi37Gr.js +0 -2
- package/frontend/dist/js/bn-CyH1BeDD.js +0 -2
- package/frontend/dist/js/chatStore-CHQ2uINS.js +0 -3
- package/frontend/dist/js/cs-Cv2NfRK5.js +0 -2
- package/frontend/dist/js/da-D6D6IvPK.js +0 -2
- package/frontend/dist/js/de-BNoJJTrT.js +0 -2
- package/frontend/dist/js/es-kzo9C7q_.js +0 -2
- package/frontend/dist/js/fr-CjHYvJRp.js +0 -2
- package/frontend/dist/js/hi-BU98AdCQ.js +0 -2
- package/frontend/dist/js/id-CpdedejX.js +0 -2
- package/frontend/dist/js/is-Cp5dDWBH.js +0 -2
- package/frontend/dist/js/it-CuH_cK4U.js +0 -2
- package/frontend/dist/js/ja-BWXXXiHn.js +0 -2
- package/frontend/dist/js/ko-DQgv2M1t.js +0 -2
- package/frontend/dist/js/markdown-core-BmPPZiuD.js +0 -31
- package/frontend/dist/js/messageCodeStyles-BFNR9Wv6.js +0 -2
- package/frontend/dist/js/ms-DCcRoIcX.js +0 -2
- package/frontend/dist/js/nl-CbKR1_EU.js +0 -2
- package/frontend/dist/js/pl-CRyJZccn.js +0 -2
- package/frontend/dist/js/pt-BXYmHFGH.js +0 -2
- package/frontend/dist/js/router-vendor-DGFGM3EP.js +0 -1
- package/frontend/dist/js/ru-M9SyZG4b.js +0 -2
- package/frontend/dist/js/sv-DJ486LTU.js +0 -2
- package/frontend/dist/js/th-Ch7gKtZv.js +0 -2
- package/frontend/dist/js/tr-ClehWhSC.js +0 -2
- package/frontend/dist/js/ui-CC-K19wO.js +0 -2
- package/frontend/dist/js/ui-vendor-B1UgO3vd.js +0 -177
- package/frontend/dist/js/uk-BqAd5zHF.js +0 -2
- package/frontend/dist/js/vi-D9gjlDVB.js +0 -2
- package/frontend/dist/js/zh-DKTyHkiR.js +0 -2
|
@@ -745,6 +745,319 @@ const PERSONAL_AUTOMATIONS_REQUIRED_SCHEMA = {
|
|
|
745
745
|
'created_at',
|
|
746
746
|
],
|
|
747
747
|
};
|
|
748
|
+
const AGENT_FOUNDATION_REQUIRED_SCHEMA = {
|
|
749
|
+
personas: ['bindings'],
|
|
750
|
+
tool_servers: [
|
|
751
|
+
'id',
|
|
752
|
+
'user_id',
|
|
753
|
+
'name',
|
|
754
|
+
'description',
|
|
755
|
+
'kind',
|
|
756
|
+
'base_url',
|
|
757
|
+
'spec',
|
|
758
|
+
'spec_digest',
|
|
759
|
+
'spec_revision',
|
|
760
|
+
'auth_mode',
|
|
761
|
+
'auth_header',
|
|
762
|
+
'access_mode',
|
|
763
|
+
'enabled',
|
|
764
|
+
'timeout_ms',
|
|
765
|
+
'max_response_bytes',
|
|
766
|
+
'created_at',
|
|
767
|
+
'updated_at',
|
|
768
|
+
],
|
|
769
|
+
tool_server_tools: [
|
|
770
|
+
'id',
|
|
771
|
+
'server_id',
|
|
772
|
+
'name',
|
|
773
|
+
'description',
|
|
774
|
+
'params_schema',
|
|
775
|
+
'detail',
|
|
776
|
+
'side_effect',
|
|
777
|
+
'enabled',
|
|
778
|
+
'created_at',
|
|
779
|
+
'updated_at',
|
|
780
|
+
],
|
|
781
|
+
tool_server_credentials: [
|
|
782
|
+
'id',
|
|
783
|
+
'server_id',
|
|
784
|
+
'user_id',
|
|
785
|
+
'secret',
|
|
786
|
+
'created_at',
|
|
787
|
+
'updated_at',
|
|
788
|
+
],
|
|
789
|
+
tool_approvals: [
|
|
790
|
+
'id',
|
|
791
|
+
'user_id',
|
|
792
|
+
'session_id',
|
|
793
|
+
'server_id',
|
|
794
|
+
'tool_name',
|
|
795
|
+
'call_id',
|
|
796
|
+
'arguments_digest',
|
|
797
|
+
'scope',
|
|
798
|
+
'status',
|
|
799
|
+
'created_at',
|
|
800
|
+
'resolved_at',
|
|
801
|
+
'expires_at',
|
|
802
|
+
],
|
|
803
|
+
prompts: [
|
|
804
|
+
'id',
|
|
805
|
+
'user_id',
|
|
806
|
+
'slug',
|
|
807
|
+
'title',
|
|
808
|
+
'description',
|
|
809
|
+
'content',
|
|
810
|
+
'variables',
|
|
811
|
+
'tags',
|
|
812
|
+
'version',
|
|
813
|
+
'created_at',
|
|
814
|
+
'updated_at',
|
|
815
|
+
],
|
|
816
|
+
prompt_versions: [
|
|
817
|
+
'id',
|
|
818
|
+
'prompt_id',
|
|
819
|
+
'version',
|
|
820
|
+
'content',
|
|
821
|
+
'variables',
|
|
822
|
+
'created_at',
|
|
823
|
+
],
|
|
824
|
+
skills: [
|
|
825
|
+
'id',
|
|
826
|
+
'user_id',
|
|
827
|
+
'slug',
|
|
828
|
+
'name',
|
|
829
|
+
'description',
|
|
830
|
+
'instructions',
|
|
831
|
+
'enabled',
|
|
832
|
+
'version',
|
|
833
|
+
'created_at',
|
|
834
|
+
'updated_at',
|
|
835
|
+
],
|
|
836
|
+
skill_versions: ['id', 'skill_id', 'version', 'instructions', 'created_at'],
|
|
837
|
+
};
|
|
838
|
+
const SKILL_FILES_REQUIRED_SCHEMA = {
|
|
839
|
+
skill_files: [
|
|
840
|
+
'id',
|
|
841
|
+
'skill_id',
|
|
842
|
+
'path',
|
|
843
|
+
'content',
|
|
844
|
+
'size',
|
|
845
|
+
'created_at',
|
|
846
|
+
'updated_at',
|
|
847
|
+
],
|
|
848
|
+
};
|
|
849
|
+
const NOTES_V2_REQUIRED_SCHEMA = {
|
|
850
|
+
notes: ['pinned'],
|
|
851
|
+
note_revisions: ['id', 'note_id', 'title', 'content', 'created_at'],
|
|
852
|
+
note_attachments: [
|
|
853
|
+
'id',
|
|
854
|
+
'note_id',
|
|
855
|
+
'blob_id',
|
|
856
|
+
'filename',
|
|
857
|
+
'content_type',
|
|
858
|
+
'size',
|
|
859
|
+
'created_at',
|
|
860
|
+
],
|
|
861
|
+
};
|
|
862
|
+
const TEAM_COLLABORATION_REQUIRED_SCHEMA = {
|
|
863
|
+
calendar_events: [
|
|
864
|
+
'calendar_id',
|
|
865
|
+
'reminder_minutes',
|
|
866
|
+
'last_reminded_occurrence',
|
|
867
|
+
],
|
|
868
|
+
calendars: ['id', 'user_id', 'name', 'color', 'created_at', 'updated_at'],
|
|
869
|
+
channels: [
|
|
870
|
+
'id',
|
|
871
|
+
'type',
|
|
872
|
+
'name',
|
|
873
|
+
'description',
|
|
874
|
+
'dm_key',
|
|
875
|
+
'created_by',
|
|
876
|
+
'created_at',
|
|
877
|
+
'updated_at',
|
|
878
|
+
'archived_at',
|
|
879
|
+
],
|
|
880
|
+
channel_members: [
|
|
881
|
+
'channel_id',
|
|
882
|
+
'user_id',
|
|
883
|
+
'role',
|
|
884
|
+
'joined_at',
|
|
885
|
+
'last_read_at',
|
|
886
|
+
],
|
|
887
|
+
channel_messages: [
|
|
888
|
+
'id',
|
|
889
|
+
'channel_id',
|
|
890
|
+
'user_id',
|
|
891
|
+
'parent_id',
|
|
892
|
+
'author_kind',
|
|
893
|
+
'model',
|
|
894
|
+
'content',
|
|
895
|
+
'metadata',
|
|
896
|
+
'created_at',
|
|
897
|
+
'updated_at',
|
|
898
|
+
'edited_at',
|
|
899
|
+
'deleted_at',
|
|
900
|
+
'pinned_at',
|
|
901
|
+
'pinned_by',
|
|
902
|
+
],
|
|
903
|
+
channel_reactions: ['id', 'message_id', 'user_id', 'emoji', 'created_at'],
|
|
904
|
+
channel_attachments: [
|
|
905
|
+
'id',
|
|
906
|
+
'message_id',
|
|
907
|
+
'channel_id',
|
|
908
|
+
'blob_id',
|
|
909
|
+
'filename',
|
|
910
|
+
'content_type',
|
|
911
|
+
'size',
|
|
912
|
+
'created_by',
|
|
913
|
+
'created_at',
|
|
914
|
+
],
|
|
915
|
+
notifications: [
|
|
916
|
+
'id',
|
|
917
|
+
'user_id',
|
|
918
|
+
'type',
|
|
919
|
+
'title',
|
|
920
|
+
'body',
|
|
921
|
+
'href',
|
|
922
|
+
'source_key',
|
|
923
|
+
'created_at',
|
|
924
|
+
'read_at',
|
|
925
|
+
],
|
|
926
|
+
webhook_targets: [
|
|
927
|
+
'id',
|
|
928
|
+
'name',
|
|
929
|
+
'url',
|
|
930
|
+
'secret',
|
|
931
|
+
'events',
|
|
932
|
+
'enabled',
|
|
933
|
+
'created_by',
|
|
934
|
+
'created_at',
|
|
935
|
+
'updated_at',
|
|
936
|
+
],
|
|
937
|
+
};
|
|
938
|
+
const MEDIA_ENTERPRISE_OPS_REQUIRED_SCHEMA = {
|
|
939
|
+
voice_profiles: [
|
|
940
|
+
'consent_expires_at',
|
|
941
|
+
'revoked_at',
|
|
942
|
+
'transfer_count',
|
|
943
|
+
'last_transfer_at',
|
|
944
|
+
],
|
|
945
|
+
model_tariffs: [
|
|
946
|
+
'id',
|
|
947
|
+
'plugin_id',
|
|
948
|
+
'model',
|
|
949
|
+
'input_per_million',
|
|
950
|
+
'output_per_million',
|
|
951
|
+
'unit_price',
|
|
952
|
+
'currency',
|
|
953
|
+
'effective_from',
|
|
954
|
+
'created_by',
|
|
955
|
+
'created_at',
|
|
956
|
+
],
|
|
957
|
+
usage_budgets: [
|
|
958
|
+
'id',
|
|
959
|
+
'name',
|
|
960
|
+
'principal_type',
|
|
961
|
+
'principal_id',
|
|
962
|
+
'period',
|
|
963
|
+
'amount_usd',
|
|
964
|
+
'mode',
|
|
965
|
+
'created_by',
|
|
966
|
+
'created_at',
|
|
967
|
+
'updated_at',
|
|
968
|
+
],
|
|
969
|
+
message_feedback: [
|
|
970
|
+
'id',
|
|
971
|
+
'user_id',
|
|
972
|
+
'session_id',
|
|
973
|
+
'message_id',
|
|
974
|
+
'rating',
|
|
975
|
+
'tags',
|
|
976
|
+
'comment',
|
|
977
|
+
'model',
|
|
978
|
+
'plugin_id',
|
|
979
|
+
'snapshot',
|
|
980
|
+
'created_at',
|
|
981
|
+
'updated_at',
|
|
982
|
+
],
|
|
983
|
+
arena_votes: [
|
|
984
|
+
'id',
|
|
985
|
+
'user_id',
|
|
986
|
+
'compare_group',
|
|
987
|
+
'model_a',
|
|
988
|
+
'model_b',
|
|
989
|
+
'winner',
|
|
990
|
+
'created_at',
|
|
991
|
+
],
|
|
992
|
+
eval_sets: [
|
|
993
|
+
'id',
|
|
994
|
+
'user_id',
|
|
995
|
+
'name',
|
|
996
|
+
'description',
|
|
997
|
+
'items',
|
|
998
|
+
'created_at',
|
|
999
|
+
'updated_at',
|
|
1000
|
+
],
|
|
1001
|
+
eval_runs: [
|
|
1002
|
+
'id',
|
|
1003
|
+
'set_id',
|
|
1004
|
+
'user_id',
|
|
1005
|
+
'label',
|
|
1006
|
+
'plugin_id',
|
|
1007
|
+
'model',
|
|
1008
|
+
'status',
|
|
1009
|
+
'results',
|
|
1010
|
+
'error',
|
|
1011
|
+
'created_at',
|
|
1012
|
+
'updated_at',
|
|
1013
|
+
'completed_at',
|
|
1014
|
+
],
|
|
1015
|
+
};
|
|
1016
|
+
const MFA_PUSH_RECOVERY_REQUIRED_SCHEMA = {
|
|
1017
|
+
user_mfa: [
|
|
1018
|
+
'user_id',
|
|
1019
|
+
'totp_secret',
|
|
1020
|
+
'activated_at',
|
|
1021
|
+
'last_used_step',
|
|
1022
|
+
'created_at',
|
|
1023
|
+
'updated_at',
|
|
1024
|
+
],
|
|
1025
|
+
mfa_recovery_codes: ['id', 'user_id', 'code_lookup', 'created_at', 'used_at'],
|
|
1026
|
+
webauthn_credentials: [
|
|
1027
|
+
'id',
|
|
1028
|
+
'user_id',
|
|
1029
|
+
'credential_lookup',
|
|
1030
|
+
'credential_data',
|
|
1031
|
+
'name',
|
|
1032
|
+
'sign_count',
|
|
1033
|
+
'created_at',
|
|
1034
|
+
'last_used_at',
|
|
1035
|
+
],
|
|
1036
|
+
push_subscriptions: [
|
|
1037
|
+
'id',
|
|
1038
|
+
'user_id',
|
|
1039
|
+
'session_id',
|
|
1040
|
+
'endpoint_lookup',
|
|
1041
|
+
'subscription',
|
|
1042
|
+
'user_agent',
|
|
1043
|
+
'created_at',
|
|
1044
|
+
'last_used_at',
|
|
1045
|
+
],
|
|
1046
|
+
recovery_drills: [
|
|
1047
|
+
'id',
|
|
1048
|
+
'status',
|
|
1049
|
+
'origin',
|
|
1050
|
+
'started_at',
|
|
1051
|
+
'finished_at',
|
|
1052
|
+
'snapshot_bytes',
|
|
1053
|
+
'rpo_seconds',
|
|
1054
|
+
'restore_ms',
|
|
1055
|
+
'error',
|
|
1056
|
+
'report',
|
|
1057
|
+
'created_by',
|
|
1058
|
+
'created_at',
|
|
1059
|
+
],
|
|
1060
|
+
};
|
|
748
1061
|
export const IDENTITY_EMAIL_LOOKUP_SCHEMA_SQL = `
|
|
749
1062
|
ALTER TABLE users ADD COLUMN email_lookup TEXT;
|
|
750
1063
|
CREATE UNIQUE INDEX idx_users_email_lookup
|
|
@@ -1016,83 +1329,577 @@ export const PERSONAL_AUTOMATIONS_SCHEMA_SQL = `
|
|
|
1016
1329
|
CREATE INDEX IF NOT EXISTS idx_automation_runs_owner_time
|
|
1017
1330
|
ON automation_runs(user_id, scheduled_for);
|
|
1018
1331
|
`;
|
|
1019
|
-
const
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
'
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1332
|
+
export const AGENT_FOUNDATION_TABLES_SQL = `
|
|
1333
|
+
CREATE TABLE IF NOT EXISTS tool_servers (
|
|
1334
|
+
id TEXT PRIMARY KEY,
|
|
1335
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1336
|
+
name TEXT NOT NULL,
|
|
1337
|
+
description TEXT,
|
|
1338
|
+
kind TEXT NOT NULL CHECK (kind IN ('openapi', 'mcp')),
|
|
1339
|
+
base_url TEXT NOT NULL,
|
|
1340
|
+
spec TEXT,
|
|
1341
|
+
spec_digest TEXT,
|
|
1342
|
+
spec_revision INTEGER NOT NULL DEFAULT 1,
|
|
1343
|
+
auth_mode TEXT NOT NULL CHECK (auth_mode IN ('none', 'bearer', 'header')),
|
|
1344
|
+
auth_header TEXT,
|
|
1345
|
+
access_mode TEXT NOT NULL
|
|
1346
|
+
CHECK (access_mode IN ('admins-only', 'all-users', 'granted')),
|
|
1347
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
1348
|
+
timeout_ms INTEGER NOT NULL,
|
|
1349
|
+
max_response_bytes INTEGER NOT NULL,
|
|
1350
|
+
created_at INTEGER NOT NULL,
|
|
1351
|
+
updated_at INTEGER NOT NULL
|
|
1352
|
+
);
|
|
1353
|
+
|
|
1354
|
+
CREATE INDEX IF NOT EXISTS idx_tool_servers_updated
|
|
1355
|
+
ON tool_servers(updated_at);
|
|
1356
|
+
|
|
1357
|
+
CREATE TABLE IF NOT EXISTS tool_server_tools (
|
|
1358
|
+
id TEXT PRIMARY KEY,
|
|
1359
|
+
server_id TEXT NOT NULL REFERENCES tool_servers(id) ON DELETE CASCADE,
|
|
1360
|
+
name TEXT NOT NULL,
|
|
1361
|
+
description TEXT,
|
|
1362
|
+
params_schema TEXT,
|
|
1363
|
+
detail TEXT,
|
|
1364
|
+
side_effect INTEGER NOT NULL DEFAULT 1,
|
|
1365
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
1366
|
+
created_at INTEGER NOT NULL,
|
|
1367
|
+
updated_at INTEGER NOT NULL,
|
|
1368
|
+
UNIQUE (server_id, name)
|
|
1369
|
+
);
|
|
1370
|
+
|
|
1371
|
+
CREATE TABLE IF NOT EXISTS tool_server_credentials (
|
|
1372
|
+
id TEXT PRIMARY KEY,
|
|
1373
|
+
server_id TEXT NOT NULL REFERENCES tool_servers(id) ON DELETE CASCADE,
|
|
1374
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1375
|
+
secret TEXT NOT NULL,
|
|
1376
|
+
created_at INTEGER NOT NULL,
|
|
1377
|
+
updated_at INTEGER NOT NULL,
|
|
1378
|
+
UNIQUE (server_id, user_id)
|
|
1379
|
+
);
|
|
1380
|
+
|
|
1381
|
+
CREATE TABLE IF NOT EXISTS tool_approvals (
|
|
1382
|
+
id TEXT PRIMARY KEY,
|
|
1383
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1384
|
+
session_id TEXT REFERENCES sessions(id) ON DELETE CASCADE,
|
|
1385
|
+
server_id TEXT REFERENCES tool_servers(id) ON DELETE CASCADE,
|
|
1386
|
+
tool_name TEXT NOT NULL,
|
|
1387
|
+
call_id TEXT,
|
|
1388
|
+
arguments_digest TEXT,
|
|
1389
|
+
scope TEXT NOT NULL CHECK (scope IN ('once', 'session', 'always')),
|
|
1390
|
+
status TEXT NOT NULL
|
|
1391
|
+
CHECK (status IN ('pending', 'approved', 'denied', 'expired')),
|
|
1392
|
+
created_at INTEGER NOT NULL,
|
|
1393
|
+
resolved_at INTEGER,
|
|
1394
|
+
expires_at INTEGER
|
|
1395
|
+
);
|
|
1396
|
+
|
|
1397
|
+
CREATE INDEX IF NOT EXISTS idx_tool_approvals_owner
|
|
1398
|
+
ON tool_approvals(user_id, status, created_at);
|
|
1399
|
+
|
|
1400
|
+
CREATE TABLE IF NOT EXISTS prompts (
|
|
1401
|
+
id TEXT PRIMARY KEY,
|
|
1402
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1403
|
+
slug TEXT NOT NULL,
|
|
1404
|
+
title TEXT NOT NULL,
|
|
1405
|
+
description TEXT,
|
|
1406
|
+
content TEXT NOT NULL,
|
|
1407
|
+
variables TEXT,
|
|
1408
|
+
tags TEXT,
|
|
1409
|
+
version INTEGER NOT NULL DEFAULT 1,
|
|
1410
|
+
created_at INTEGER NOT NULL,
|
|
1411
|
+
updated_at INTEGER NOT NULL,
|
|
1412
|
+
UNIQUE (user_id, slug)
|
|
1413
|
+
);
|
|
1414
|
+
|
|
1415
|
+
CREATE INDEX IF NOT EXISTS idx_prompts_owner
|
|
1416
|
+
ON prompts(user_id, updated_at);
|
|
1417
|
+
|
|
1418
|
+
CREATE TABLE IF NOT EXISTS prompt_versions (
|
|
1419
|
+
id TEXT PRIMARY KEY,
|
|
1420
|
+
prompt_id TEXT NOT NULL REFERENCES prompts(id) ON DELETE CASCADE,
|
|
1421
|
+
version INTEGER NOT NULL,
|
|
1422
|
+
content TEXT NOT NULL,
|
|
1423
|
+
variables TEXT,
|
|
1424
|
+
created_at INTEGER NOT NULL,
|
|
1425
|
+
UNIQUE (prompt_id, version)
|
|
1426
|
+
);
|
|
1427
|
+
|
|
1428
|
+
CREATE TABLE IF NOT EXISTS skills (
|
|
1429
|
+
id TEXT PRIMARY KEY,
|
|
1430
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1431
|
+
slug TEXT NOT NULL,
|
|
1432
|
+
name TEXT NOT NULL,
|
|
1433
|
+
description TEXT NOT NULL,
|
|
1434
|
+
instructions TEXT NOT NULL,
|
|
1435
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
1436
|
+
version INTEGER NOT NULL DEFAULT 1,
|
|
1437
|
+
created_at INTEGER NOT NULL,
|
|
1438
|
+
updated_at INTEGER NOT NULL,
|
|
1439
|
+
UNIQUE (user_id, slug)
|
|
1440
|
+
);
|
|
1441
|
+
|
|
1442
|
+
CREATE INDEX IF NOT EXISTS idx_skills_owner
|
|
1443
|
+
ON skills(user_id, updated_at);
|
|
1444
|
+
|
|
1445
|
+
CREATE TABLE IF NOT EXISTS skill_versions (
|
|
1446
|
+
id TEXT PRIMARY KEY,
|
|
1447
|
+
skill_id TEXT NOT NULL REFERENCES skills(id) ON DELETE CASCADE,
|
|
1448
|
+
version INTEGER NOT NULL,
|
|
1449
|
+
instructions TEXT NOT NULL,
|
|
1450
|
+
created_at INTEGER NOT NULL,
|
|
1451
|
+
UNIQUE (skill_id, version)
|
|
1452
|
+
);
|
|
1453
|
+
`;
|
|
1454
|
+
export const AGENT_FOUNDATION_SCHEMA_SQL = `
|
|
1455
|
+
ALTER TABLE personas ADD COLUMN bindings TEXT;
|
|
1456
|
+
${AGENT_FOUNDATION_TABLES_SQL}`;
|
|
1457
|
+
export const SKILL_FILES_SCHEMA_SQL = `
|
|
1458
|
+
CREATE TABLE IF NOT EXISTS skill_files (
|
|
1459
|
+
id TEXT PRIMARY KEY,
|
|
1460
|
+
skill_id TEXT NOT NULL REFERENCES skills(id) ON DELETE CASCADE,
|
|
1461
|
+
path TEXT NOT NULL,
|
|
1462
|
+
content TEXT NOT NULL,
|
|
1463
|
+
size INTEGER NOT NULL,
|
|
1464
|
+
created_at INTEGER NOT NULL,
|
|
1465
|
+
updated_at INTEGER NOT NULL,
|
|
1466
|
+
UNIQUE (skill_id, path)
|
|
1467
|
+
);
|
|
1468
|
+
|
|
1469
|
+
CREATE INDEX IF NOT EXISTS idx_skill_files_skill
|
|
1470
|
+
ON skill_files(skill_id);
|
|
1471
|
+
`;
|
|
1472
|
+
export const NOTES_V2_TABLES_SQL = `
|
|
1473
|
+
CREATE TABLE IF NOT EXISTS note_revisions (
|
|
1474
|
+
id TEXT PRIMARY KEY,
|
|
1475
|
+
note_id TEXT NOT NULL REFERENCES notes(id) ON DELETE CASCADE,
|
|
1476
|
+
title TEXT NOT NULL,
|
|
1477
|
+
content TEXT NOT NULL,
|
|
1478
|
+
created_at INTEGER NOT NULL
|
|
1479
|
+
);
|
|
1480
|
+
|
|
1481
|
+
CREATE INDEX IF NOT EXISTS idx_note_revisions_note
|
|
1482
|
+
ON note_revisions(note_id, created_at);
|
|
1483
|
+
|
|
1484
|
+
CREATE TABLE IF NOT EXISTS note_attachments (
|
|
1485
|
+
id TEXT PRIMARY KEY,
|
|
1486
|
+
note_id TEXT NOT NULL REFERENCES notes(id) ON DELETE CASCADE,
|
|
1487
|
+
blob_id TEXT NOT NULL,
|
|
1488
|
+
filename TEXT NOT NULL,
|
|
1489
|
+
content_type TEXT NOT NULL,
|
|
1490
|
+
size INTEGER NOT NULL,
|
|
1491
|
+
created_at INTEGER NOT NULL
|
|
1492
|
+
);
|
|
1493
|
+
|
|
1494
|
+
CREATE INDEX IF NOT EXISTS idx_note_attachments_note
|
|
1495
|
+
ON note_attachments(note_id);
|
|
1496
|
+
`;
|
|
1497
|
+
export const NOTES_V2_SCHEMA_SQL = `
|
|
1498
|
+
ALTER TABLE notes ADD COLUMN pinned INTEGER DEFAULT 0;
|
|
1499
|
+
|
|
1500
|
+
CREATE TABLE IF NOT EXISTS note_revisions (
|
|
1501
|
+
id TEXT PRIMARY KEY,
|
|
1502
|
+
note_id TEXT NOT NULL REFERENCES notes(id) ON DELETE CASCADE,
|
|
1503
|
+
title TEXT NOT NULL,
|
|
1504
|
+
content TEXT NOT NULL,
|
|
1505
|
+
created_at INTEGER NOT NULL
|
|
1506
|
+
);
|
|
1507
|
+
|
|
1508
|
+
CREATE INDEX IF NOT EXISTS idx_note_revisions_note
|
|
1509
|
+
ON note_revisions(note_id, created_at);
|
|
1510
|
+
|
|
1511
|
+
CREATE TABLE IF NOT EXISTS note_attachments (
|
|
1512
|
+
id TEXT PRIMARY KEY,
|
|
1513
|
+
note_id TEXT NOT NULL REFERENCES notes(id) ON DELETE CASCADE,
|
|
1514
|
+
blob_id TEXT NOT NULL,
|
|
1515
|
+
filename TEXT NOT NULL,
|
|
1516
|
+
content_type TEXT NOT NULL,
|
|
1517
|
+
size INTEGER NOT NULL,
|
|
1518
|
+
created_at INTEGER NOT NULL
|
|
1519
|
+
);
|
|
1520
|
+
|
|
1521
|
+
CREATE INDEX IF NOT EXISTS idx_note_attachments_note
|
|
1522
|
+
ON note_attachments(note_id);
|
|
1523
|
+
`;
|
|
1524
|
+
export const TEAM_COLLABORATION_TABLES_SQL = `
|
|
1525
|
+
CREATE INDEX IF NOT EXISTS idx_calendar_scoped_events
|
|
1526
|
+
ON calendar_events(calendar_id)
|
|
1527
|
+
WHERE calendar_id IS NOT NULL;
|
|
1528
|
+
|
|
1529
|
+
CREATE TABLE IF NOT EXISTS calendars (
|
|
1530
|
+
id TEXT PRIMARY KEY,
|
|
1531
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1532
|
+
name TEXT NOT NULL,
|
|
1533
|
+
color TEXT,
|
|
1534
|
+
created_at INTEGER NOT NULL,
|
|
1535
|
+
updated_at INTEGER NOT NULL
|
|
1536
|
+
);
|
|
1537
|
+
|
|
1538
|
+
CREATE INDEX IF NOT EXISTS idx_calendars_owner
|
|
1539
|
+
ON calendars(user_id, updated_at);
|
|
1540
|
+
|
|
1541
|
+
CREATE TABLE IF NOT EXISTS channels (
|
|
1542
|
+
id TEXT PRIMARY KEY,
|
|
1543
|
+
type TEXT NOT NULL CHECK (type IN ('public', 'private', 'dm')),
|
|
1544
|
+
name TEXT NOT NULL,
|
|
1545
|
+
description TEXT,
|
|
1546
|
+
dm_key TEXT,
|
|
1547
|
+
created_by TEXT,
|
|
1548
|
+
created_at INTEGER NOT NULL,
|
|
1549
|
+
updated_at INTEGER NOT NULL,
|
|
1550
|
+
archived_at INTEGER
|
|
1551
|
+
);
|
|
1552
|
+
|
|
1553
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_channels_dm_key
|
|
1554
|
+
ON channels(dm_key)
|
|
1555
|
+
WHERE dm_key IS NOT NULL;
|
|
1556
|
+
|
|
1557
|
+
CREATE TABLE IF NOT EXISTS channel_members (
|
|
1558
|
+
channel_id TEXT NOT NULL REFERENCES channels(id) ON DELETE CASCADE,
|
|
1559
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1560
|
+
role TEXT NOT NULL CHECK (role IN ('owner', 'member')),
|
|
1561
|
+
joined_at INTEGER NOT NULL,
|
|
1562
|
+
last_read_at INTEGER NOT NULL DEFAULT 0,
|
|
1563
|
+
PRIMARY KEY (channel_id, user_id)
|
|
1564
|
+
);
|
|
1565
|
+
|
|
1566
|
+
CREATE INDEX IF NOT EXISTS idx_channel_members_user
|
|
1567
|
+
ON channel_members(user_id);
|
|
1568
|
+
|
|
1569
|
+
CREATE TABLE IF NOT EXISTS channel_messages (
|
|
1570
|
+
id TEXT PRIMARY KEY,
|
|
1571
|
+
channel_id TEXT NOT NULL REFERENCES channels(id) ON DELETE CASCADE,
|
|
1572
|
+
user_id TEXT,
|
|
1573
|
+
parent_id TEXT,
|
|
1574
|
+
author_kind TEXT NOT NULL DEFAULT 'user' CHECK (author_kind IN ('user', 'model')),
|
|
1575
|
+
model TEXT,
|
|
1576
|
+
content TEXT NOT NULL,
|
|
1577
|
+
metadata TEXT,
|
|
1578
|
+
created_at INTEGER NOT NULL,
|
|
1579
|
+
updated_at INTEGER NOT NULL,
|
|
1580
|
+
edited_at INTEGER,
|
|
1581
|
+
deleted_at INTEGER,
|
|
1582
|
+
pinned_at INTEGER,
|
|
1583
|
+
pinned_by TEXT
|
|
1584
|
+
);
|
|
1585
|
+
|
|
1586
|
+
CREATE INDEX IF NOT EXISTS idx_channel_messages_timeline
|
|
1587
|
+
ON channel_messages(channel_id, created_at, id);
|
|
1588
|
+
|
|
1589
|
+
CREATE INDEX IF NOT EXISTS idx_channel_messages_thread
|
|
1590
|
+
ON channel_messages(parent_id)
|
|
1591
|
+
WHERE parent_id IS NOT NULL;
|
|
1592
|
+
|
|
1593
|
+
CREATE TABLE IF NOT EXISTS channel_reactions (
|
|
1594
|
+
id TEXT PRIMARY KEY,
|
|
1595
|
+
message_id TEXT NOT NULL REFERENCES channel_messages(id) ON DELETE CASCADE,
|
|
1596
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1597
|
+
emoji TEXT NOT NULL,
|
|
1598
|
+
created_at INTEGER NOT NULL,
|
|
1599
|
+
UNIQUE (message_id, user_id, emoji)
|
|
1600
|
+
);
|
|
1601
|
+
|
|
1602
|
+
CREATE TABLE IF NOT EXISTS channel_attachments (
|
|
1603
|
+
id TEXT PRIMARY KEY,
|
|
1604
|
+
message_id TEXT NOT NULL REFERENCES channel_messages(id) ON DELETE CASCADE,
|
|
1605
|
+
channel_id TEXT NOT NULL,
|
|
1606
|
+
blob_id TEXT NOT NULL,
|
|
1607
|
+
filename TEXT NOT NULL,
|
|
1608
|
+
content_type TEXT NOT NULL,
|
|
1609
|
+
size INTEGER NOT NULL,
|
|
1610
|
+
created_by TEXT,
|
|
1611
|
+
created_at INTEGER NOT NULL
|
|
1612
|
+
);
|
|
1613
|
+
|
|
1614
|
+
CREATE INDEX IF NOT EXISTS idx_channel_attachments_message
|
|
1615
|
+
ON channel_attachments(message_id);
|
|
1616
|
+
|
|
1617
|
+
CREATE TABLE IF NOT EXISTS notifications (
|
|
1618
|
+
id TEXT PRIMARY KEY,
|
|
1619
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1620
|
+
type TEXT NOT NULL,
|
|
1621
|
+
title TEXT NOT NULL,
|
|
1622
|
+
body TEXT,
|
|
1623
|
+
href TEXT,
|
|
1624
|
+
source_key TEXT,
|
|
1625
|
+
created_at INTEGER NOT NULL,
|
|
1626
|
+
read_at INTEGER
|
|
1627
|
+
);
|
|
1628
|
+
|
|
1629
|
+
CREATE INDEX IF NOT EXISTS idx_notifications_user
|
|
1630
|
+
ON notifications(user_id, created_at);
|
|
1631
|
+
|
|
1632
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_notifications_dedupe
|
|
1633
|
+
ON notifications(user_id, source_key)
|
|
1634
|
+
WHERE source_key IS NOT NULL;
|
|
1635
|
+
|
|
1636
|
+
CREATE TABLE IF NOT EXISTS webhook_targets (
|
|
1637
|
+
id TEXT PRIMARY KEY,
|
|
1638
|
+
name TEXT NOT NULL,
|
|
1639
|
+
url TEXT NOT NULL,
|
|
1640
|
+
secret TEXT,
|
|
1641
|
+
events TEXT NOT NULL,
|
|
1642
|
+
enabled INTEGER NOT NULL DEFAULT 1 CHECK (enabled IN (0, 1)),
|
|
1643
|
+
created_by TEXT,
|
|
1644
|
+
created_at INTEGER NOT NULL,
|
|
1645
|
+
updated_at INTEGER NOT NULL
|
|
1646
|
+
);
|
|
1647
|
+
`;
|
|
1648
|
+
export const TEAM_COLLABORATION_SCHEMA_SQL = `
|
|
1649
|
+
ALTER TABLE calendar_events ADD COLUMN calendar_id TEXT;
|
|
1650
|
+
ALTER TABLE calendar_events ADD COLUMN reminder_minutes INTEGER;
|
|
1651
|
+
ALTER TABLE calendar_events ADD COLUMN last_reminded_occurrence INTEGER;
|
|
1652
|
+
${TEAM_COLLABORATION_TABLES_SQL}`;
|
|
1653
|
+
export const MEDIA_ENTERPRISE_OPS_TABLES_SQL = `
|
|
1654
|
+
CREATE TABLE IF NOT EXISTS model_tariffs (
|
|
1655
|
+
id TEXT PRIMARY KEY,
|
|
1656
|
+
plugin_id TEXT NOT NULL,
|
|
1657
|
+
model TEXT,
|
|
1658
|
+
input_per_million REAL,
|
|
1659
|
+
output_per_million REAL,
|
|
1660
|
+
unit_price REAL,
|
|
1661
|
+
currency TEXT NOT NULL DEFAULT 'USD',
|
|
1662
|
+
effective_from INTEGER NOT NULL,
|
|
1663
|
+
created_by TEXT,
|
|
1664
|
+
created_at INTEGER NOT NULL
|
|
1665
|
+
);
|
|
1666
|
+
|
|
1667
|
+
CREATE INDEX IF NOT EXISTS idx_model_tariffs_lookup
|
|
1668
|
+
ON model_tariffs(plugin_id, model, effective_from);
|
|
1669
|
+
|
|
1670
|
+
CREATE TABLE IF NOT EXISTS usage_budgets (
|
|
1671
|
+
id TEXT PRIMARY KEY,
|
|
1672
|
+
name TEXT NOT NULL,
|
|
1673
|
+
principal_type TEXT NOT NULL CHECK (principal_type IN ('instance', 'user', 'group')),
|
|
1674
|
+
principal_id TEXT,
|
|
1675
|
+
period TEXT NOT NULL CHECK (period IN ('daily', 'weekly', 'monthly')),
|
|
1676
|
+
amount_usd REAL NOT NULL,
|
|
1677
|
+
mode TEXT NOT NULL CHECK (mode IN ('observe', 'soft', 'hard')),
|
|
1678
|
+
created_by TEXT,
|
|
1679
|
+
created_at INTEGER NOT NULL,
|
|
1680
|
+
updated_at INTEGER NOT NULL
|
|
1681
|
+
);
|
|
1682
|
+
|
|
1683
|
+
CREATE INDEX IF NOT EXISTS idx_usage_budgets_principal
|
|
1684
|
+
ON usage_budgets(principal_type, principal_id);
|
|
1685
|
+
|
|
1686
|
+
CREATE TABLE IF NOT EXISTS message_feedback (
|
|
1687
|
+
id TEXT PRIMARY KEY,
|
|
1688
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1689
|
+
session_id TEXT NOT NULL,
|
|
1690
|
+
message_id TEXT NOT NULL,
|
|
1691
|
+
rating INTEGER NOT NULL CHECK (rating IN (-1, 1)),
|
|
1692
|
+
tags TEXT,
|
|
1693
|
+
comment TEXT,
|
|
1694
|
+
model TEXT,
|
|
1695
|
+
plugin_id TEXT,
|
|
1696
|
+
snapshot TEXT,
|
|
1697
|
+
created_at INTEGER NOT NULL,
|
|
1698
|
+
updated_at INTEGER NOT NULL,
|
|
1699
|
+
UNIQUE (user_id, message_id)
|
|
1700
|
+
);
|
|
1701
|
+
|
|
1702
|
+
CREATE INDEX IF NOT EXISTS idx_message_feedback_owner
|
|
1703
|
+
ON message_feedback(user_id, created_at);
|
|
1704
|
+
|
|
1705
|
+
CREATE TABLE IF NOT EXISTS arena_votes (
|
|
1706
|
+
id TEXT PRIMARY KEY,
|
|
1707
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1708
|
+
compare_group TEXT NOT NULL,
|
|
1709
|
+
model_a TEXT NOT NULL,
|
|
1710
|
+
model_b TEXT NOT NULL,
|
|
1711
|
+
winner TEXT NOT NULL CHECK (winner IN ('a', 'b', 'tie', 'both-bad')),
|
|
1712
|
+
created_at INTEGER NOT NULL,
|
|
1713
|
+
UNIQUE (user_id, compare_group)
|
|
1714
|
+
);
|
|
1715
|
+
|
|
1716
|
+
CREATE INDEX IF NOT EXISTS idx_arena_votes_order
|
|
1717
|
+
ON arena_votes(created_at, id);
|
|
1718
|
+
|
|
1719
|
+
CREATE TABLE IF NOT EXISTS eval_sets (
|
|
1720
|
+
id TEXT PRIMARY KEY,
|
|
1721
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1722
|
+
name TEXT NOT NULL,
|
|
1723
|
+
description TEXT,
|
|
1724
|
+
items TEXT NOT NULL,
|
|
1725
|
+
created_at INTEGER NOT NULL,
|
|
1726
|
+
updated_at INTEGER NOT NULL
|
|
1727
|
+
);
|
|
1728
|
+
|
|
1729
|
+
CREATE INDEX IF NOT EXISTS idx_eval_sets_owner
|
|
1730
|
+
ON eval_sets(user_id, updated_at);
|
|
1731
|
+
|
|
1732
|
+
CREATE TABLE IF NOT EXISTS eval_runs (
|
|
1733
|
+
id TEXT PRIMARY KEY,
|
|
1734
|
+
set_id TEXT NOT NULL REFERENCES eval_sets(id) ON DELETE CASCADE,
|
|
1735
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1736
|
+
label TEXT,
|
|
1737
|
+
plugin_id TEXT,
|
|
1738
|
+
model TEXT NOT NULL,
|
|
1739
|
+
status TEXT NOT NULL CHECK (status IN ('queued', 'running', 'completed', 'failed', 'cancelled')),
|
|
1740
|
+
results TEXT,
|
|
1741
|
+
error TEXT,
|
|
1742
|
+
created_at INTEGER NOT NULL,
|
|
1743
|
+
updated_at INTEGER NOT NULL,
|
|
1744
|
+
completed_at INTEGER
|
|
1745
|
+
);
|
|
1746
|
+
|
|
1747
|
+
CREATE INDEX IF NOT EXISTS idx_eval_runs_owner
|
|
1748
|
+
ON eval_runs(user_id, created_at);
|
|
1749
|
+
|
|
1750
|
+
CREATE INDEX IF NOT EXISTS idx_eval_runs_parent
|
|
1751
|
+
ON eval_runs(set_id);
|
|
1752
|
+
`;
|
|
1753
|
+
export const MEDIA_ENTERPRISE_OPS_SCHEMA_SQL = `
|
|
1754
|
+
ALTER TABLE voice_profiles ADD COLUMN consent_expires_at INTEGER;
|
|
1755
|
+
ALTER TABLE voice_profiles ADD COLUMN revoked_at INTEGER;
|
|
1756
|
+
ALTER TABLE voice_profiles ADD COLUMN transfer_count INTEGER NOT NULL DEFAULT 0;
|
|
1757
|
+
ALTER TABLE voice_profiles ADD COLUMN last_transfer_at INTEGER;
|
|
1758
|
+
${MEDIA_ENTERPRISE_OPS_TABLES_SQL}`;
|
|
1759
|
+
export const MFA_PUSH_RECOVERY_TABLES_SQL = `
|
|
1760
|
+
CREATE TABLE IF NOT EXISTS user_mfa (
|
|
1761
|
+
user_id TEXT PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
|
|
1762
|
+
totp_secret TEXT NOT NULL,
|
|
1763
|
+
activated_at INTEGER,
|
|
1764
|
+
last_used_step INTEGER,
|
|
1765
|
+
created_at INTEGER NOT NULL,
|
|
1766
|
+
updated_at INTEGER NOT NULL
|
|
1767
|
+
);
|
|
1768
|
+
|
|
1769
|
+
CREATE TABLE IF NOT EXISTS mfa_recovery_codes (
|
|
1770
|
+
id TEXT PRIMARY KEY,
|
|
1771
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1772
|
+
code_lookup TEXT NOT NULL UNIQUE,
|
|
1773
|
+
created_at INTEGER NOT NULL,
|
|
1774
|
+
used_at INTEGER
|
|
1775
|
+
);
|
|
1776
|
+
|
|
1777
|
+
CREATE INDEX IF NOT EXISTS idx_mfa_recovery_codes_user
|
|
1778
|
+
ON mfa_recovery_codes(user_id);
|
|
1779
|
+
|
|
1780
|
+
CREATE TABLE IF NOT EXISTS webauthn_credentials (
|
|
1781
|
+
id TEXT PRIMARY KEY,
|
|
1782
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1783
|
+
credential_lookup TEXT NOT NULL UNIQUE,
|
|
1784
|
+
credential_data TEXT NOT NULL,
|
|
1785
|
+
name TEXT,
|
|
1786
|
+
sign_count INTEGER NOT NULL DEFAULT 0,
|
|
1787
|
+
created_at INTEGER NOT NULL,
|
|
1788
|
+
last_used_at INTEGER
|
|
1789
|
+
);
|
|
1790
|
+
|
|
1791
|
+
CREATE INDEX IF NOT EXISTS idx_webauthn_credentials_user
|
|
1792
|
+
ON webauthn_credentials(user_id);
|
|
1793
|
+
|
|
1794
|
+
CREATE TABLE IF NOT EXISTS push_subscriptions (
|
|
1795
|
+
id TEXT PRIMARY KEY,
|
|
1796
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
1797
|
+
session_id TEXT,
|
|
1798
|
+
endpoint_lookup TEXT NOT NULL UNIQUE,
|
|
1799
|
+
subscription TEXT NOT NULL,
|
|
1800
|
+
user_agent TEXT,
|
|
1801
|
+
created_at INTEGER NOT NULL,
|
|
1802
|
+
last_used_at INTEGER
|
|
1803
|
+
);
|
|
1804
|
+
|
|
1805
|
+
CREATE INDEX IF NOT EXISTS idx_push_subscriptions_user
|
|
1806
|
+
ON push_subscriptions(user_id);
|
|
1807
|
+
|
|
1808
|
+
CREATE TABLE IF NOT EXISTS recovery_drills (
|
|
1809
|
+
id TEXT PRIMARY KEY,
|
|
1810
|
+
status TEXT NOT NULL CHECK (status IN ('running', 'passed', 'failed')),
|
|
1811
|
+
origin TEXT NOT NULL CHECK (origin IN ('scheduled', 'manual')),
|
|
1812
|
+
started_at INTEGER NOT NULL,
|
|
1813
|
+
finished_at INTEGER,
|
|
1814
|
+
snapshot_bytes INTEGER,
|
|
1815
|
+
rpo_seconds INTEGER,
|
|
1816
|
+
restore_ms INTEGER,
|
|
1817
|
+
error TEXT,
|
|
1818
|
+
report TEXT,
|
|
1819
|
+
created_by TEXT,
|
|
1820
|
+
created_at INTEGER NOT NULL
|
|
1821
|
+
);
|
|
1822
|
+
|
|
1823
|
+
CREATE INDEX IF NOT EXISTS idx_recovery_drills_started
|
|
1824
|
+
ON recovery_drills(started_at);
|
|
1825
|
+
`;
|
|
1826
|
+
const REQUIRED_SCHEMA = {
|
|
1827
|
+
...LEGACY_REQUIRED_SCHEMA,
|
|
1828
|
+
users: [
|
|
1829
|
+
...LEGACY_REQUIRED_SCHEMA.users,
|
|
1830
|
+
...IDENTITY_EMAIL_LOOKUP_REQUIRED_SCHEMA.users,
|
|
1831
|
+
],
|
|
1832
|
+
voice_profiles: [
|
|
1833
|
+
...LEGACY_REQUIRED_SCHEMA.voice_profiles,
|
|
1834
|
+
...VOICE_PROFILE_NAME_LOOKUP_REQUIRED_SCHEMA.voice_profiles,
|
|
1835
|
+
],
|
|
1836
|
+
...PLATFORM_VECTOR_REQUIRED_SCHEMA,
|
|
1837
|
+
...DURABLE_JOBS_EVENTS_REQUIRED_SCHEMA,
|
|
1838
|
+
...BLOB_REFERENCE_REQUIRED_SCHEMA,
|
|
1839
|
+
...PLUGIN_DEFINITION_REQUIRED_SCHEMA,
|
|
1840
|
+
};
|
|
1841
|
+
const LEGACY_ADDITIVE_COLUMNS = {
|
|
1842
|
+
users: ['avatar', 'account_status', 'approved_at', 'approved_by'],
|
|
1843
|
+
personas: ['embedding_model', 'memory_settings', 'mutation_settings'],
|
|
1844
|
+
sessions: [
|
|
1845
|
+
'persona_id',
|
|
1846
|
+
'provider_type',
|
|
1847
|
+
'provider_id',
|
|
1848
|
+
'archived',
|
|
1849
|
+
'settings',
|
|
1850
|
+
'folder_id',
|
|
1851
|
+
'pinned',
|
|
1852
|
+
],
|
|
1853
|
+
session_messages: [
|
|
1854
|
+
'thinking',
|
|
1855
|
+
'model',
|
|
1856
|
+
'provider_metadata',
|
|
1857
|
+
'images',
|
|
1858
|
+
'statistics',
|
|
1859
|
+
'artifacts',
|
|
1860
|
+
'parent_id',
|
|
1861
|
+
'branch_index',
|
|
1862
|
+
'is_active',
|
|
1863
|
+
'rating',
|
|
1864
|
+
],
|
|
1865
|
+
documents: ['file_type', 'size', 'session_id', 'collection_id'],
|
|
1866
|
+
plugin_credentials: ['routing_auth_fingerprint'],
|
|
1867
|
+
plugin_definition_approvals: ['source_path'],
|
|
1868
|
+
generated_images: ['kind', 'plugin_id', 'mime_type', 'metadata'],
|
|
1869
|
+
voice_profiles: ['routing_fingerprint'],
|
|
1870
|
+
work_tasks: ['provider_type', 'provider_id', 'host_path', 'policy_id'],
|
|
1871
|
+
work_runs: ['provider_type', 'provider_id'],
|
|
1872
|
+
persona_memories: [
|
|
1873
|
+
'memory_type',
|
|
1874
|
+
'access_count',
|
|
1875
|
+
'last_accessed',
|
|
1876
|
+
'decay_factor',
|
|
1877
|
+
'consolidated_from',
|
|
1878
|
+
],
|
|
1879
|
+
};
|
|
1880
|
+
const LEGACY_BOOTSTRAP_CORE_TABLES = [
|
|
1881
|
+
'users',
|
|
1882
|
+
'sessions',
|
|
1883
|
+
'session_messages',
|
|
1884
|
+
'documents',
|
|
1885
|
+
'document_chunks',
|
|
1886
|
+
'user_preferences',
|
|
1887
|
+
'system_settings',
|
|
1888
|
+
'personas',
|
|
1889
|
+
];
|
|
1890
|
+
const addColumnIfMissing = (database, table, column, definition) => {
|
|
1891
|
+
const columns = database
|
|
1892
|
+
.prepare(`PRAGMA table_info(${table})`)
|
|
1893
|
+
.all();
|
|
1894
|
+
if (!columns.some(item => item.name === column)) {
|
|
1895
|
+
database.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
|
|
1896
|
+
}
|
|
1897
|
+
};
|
|
1898
|
+
const ensurePersonaPersistence = (database) => {
|
|
1899
|
+
database.exec(`
|
|
1900
|
+
CREATE TABLE IF NOT EXISTS persona_memories (
|
|
1901
|
+
id TEXT PRIMARY KEY,
|
|
1902
|
+
user_id TEXT NOT NULL,
|
|
1096
1903
|
persona_id TEXT NOT NULL,
|
|
1097
1904
|
content TEXT NOT NULL,
|
|
1098
1905
|
embedding BLOB,
|
|
@@ -1187,6 +1994,36 @@ const REQUIRED_PRIMARY_KEYS = {
|
|
|
1187
1994
|
calendar_events: ['id'],
|
|
1188
1995
|
automations: ['id'],
|
|
1189
1996
|
automation_runs: ['id'],
|
|
1997
|
+
tool_servers: ['id'],
|
|
1998
|
+
tool_server_tools: ['id'],
|
|
1999
|
+
tool_server_credentials: ['id'],
|
|
2000
|
+
tool_approvals: ['id'],
|
|
2001
|
+
prompts: ['id'],
|
|
2002
|
+
prompt_versions: ['id'],
|
|
2003
|
+
skills: ['id'],
|
|
2004
|
+
skill_versions: ['id'],
|
|
2005
|
+
skill_files: ['id'],
|
|
2006
|
+
note_revisions: ['id'],
|
|
2007
|
+
note_attachments: ['id'],
|
|
2008
|
+
calendars: ['id'],
|
|
2009
|
+
channels: ['id'],
|
|
2010
|
+
channel_members: ['channel_id', 'user_id'],
|
|
2011
|
+
channel_messages: ['id'],
|
|
2012
|
+
channel_reactions: ['id'],
|
|
2013
|
+
channel_attachments: ['id'],
|
|
2014
|
+
notifications: ['id'],
|
|
2015
|
+
webhook_targets: ['id'],
|
|
2016
|
+
model_tariffs: ['id'],
|
|
2017
|
+
usage_budgets: ['id'],
|
|
2018
|
+
message_feedback: ['id'],
|
|
2019
|
+
arena_votes: ['id'],
|
|
2020
|
+
eval_sets: ['id'],
|
|
2021
|
+
eval_runs: ['id'],
|
|
2022
|
+
user_mfa: ['user_id'],
|
|
2023
|
+
mfa_recovery_codes: ['id'],
|
|
2024
|
+
webauthn_credentials: ['id'],
|
|
2025
|
+
push_subscriptions: ['id'],
|
|
2026
|
+
recovery_drills: ['id'],
|
|
1190
2027
|
};
|
|
1191
2028
|
const REQUIRED_UNIQUE_KEYS = {
|
|
1192
2029
|
[MIGRATION_TABLE]: [['name']],
|
|
@@ -1206,171 +2043,386 @@ const REQUIRED_UNIQUE_KEYS = {
|
|
|
1206
2043
|
['resource_type', 'resource_id', 'principal_type', 'principal_id'],
|
|
1207
2044
|
],
|
|
1208
2045
|
api_tokens: [['token_hash']],
|
|
2046
|
+
tool_server_tools: [['server_id', 'name']],
|
|
2047
|
+
tool_server_credentials: [['server_id', 'user_id']],
|
|
2048
|
+
prompts: [['user_id', 'slug']],
|
|
2049
|
+
prompt_versions: [['prompt_id', 'version']],
|
|
2050
|
+
skills: [['user_id', 'slug']],
|
|
2051
|
+
skill_versions: [['skill_id', 'version']],
|
|
2052
|
+
skill_files: [['skill_id', 'path']],
|
|
2053
|
+
message_feedback: [['user_id', 'message_id']],
|
|
2054
|
+
arena_votes: [['user_id', 'compare_group']],
|
|
2055
|
+
mfa_recovery_codes: [['code_lookup']],
|
|
2056
|
+
webauthn_credentials: [['credential_lookup']],
|
|
2057
|
+
push_subscriptions: [['endpoint_lookup']],
|
|
1209
2058
|
};
|
|
1210
2059
|
const REQUIRED_FOREIGN_KEYS = [
|
|
1211
2060
|
{
|
|
1212
|
-
table: 'sessions',
|
|
2061
|
+
table: 'sessions',
|
|
2062
|
+
columns: ['user_id'],
|
|
2063
|
+
referencedTable: 'users',
|
|
2064
|
+
referencedColumns: ['id'],
|
|
2065
|
+
onDelete: 'CASCADE',
|
|
2066
|
+
},
|
|
2067
|
+
{
|
|
2068
|
+
table: 'session_messages',
|
|
2069
|
+
columns: ['session_id'],
|
|
2070
|
+
referencedTable: 'sessions',
|
|
2071
|
+
referencedColumns: ['id'],
|
|
2072
|
+
onDelete: 'CASCADE',
|
|
2073
|
+
},
|
|
2074
|
+
{
|
|
2075
|
+
table: 'plugin_credentials',
|
|
2076
|
+
columns: ['user_id'],
|
|
2077
|
+
referencedTable: 'users',
|
|
2078
|
+
referencedColumns: ['id'],
|
|
2079
|
+
onDelete: 'CASCADE',
|
|
2080
|
+
},
|
|
2081
|
+
{
|
|
2082
|
+
table: 'work_tasks',
|
|
2083
|
+
columns: ['user_id'],
|
|
2084
|
+
referencedTable: 'users',
|
|
2085
|
+
referencedColumns: ['id'],
|
|
2086
|
+
onDelete: 'CASCADE',
|
|
2087
|
+
},
|
|
2088
|
+
{
|
|
2089
|
+
table: 'work_runs',
|
|
2090
|
+
columns: ['task_id'],
|
|
2091
|
+
referencedTable: 'work_tasks',
|
|
2092
|
+
referencedColumns: ['id'],
|
|
2093
|
+
onDelete: 'CASCADE',
|
|
2094
|
+
},
|
|
2095
|
+
{
|
|
2096
|
+
table: 'work_messages',
|
|
2097
|
+
columns: ['task_id'],
|
|
2098
|
+
referencedTable: 'work_tasks',
|
|
2099
|
+
referencedColumns: ['id'],
|
|
2100
|
+
onDelete: 'CASCADE',
|
|
2101
|
+
},
|
|
2102
|
+
{
|
|
2103
|
+
table: 'work_messages',
|
|
2104
|
+
columns: ['run_id'],
|
|
2105
|
+
referencedTable: 'work_runs',
|
|
2106
|
+
referencedColumns: ['id'],
|
|
2107
|
+
onDelete: 'SET NULL',
|
|
2108
|
+
},
|
|
2109
|
+
{
|
|
2110
|
+
table: 'persona_memories',
|
|
2111
|
+
columns: ['user_id'],
|
|
2112
|
+
referencedTable: 'users',
|
|
2113
|
+
referencedColumns: ['id'],
|
|
2114
|
+
onDelete: 'CASCADE',
|
|
2115
|
+
},
|
|
2116
|
+
{
|
|
2117
|
+
table: 'persona_memories',
|
|
2118
|
+
columns: ['persona_id'],
|
|
2119
|
+
referencedTable: 'personas',
|
|
2120
|
+
referencedColumns: ['id'],
|
|
2121
|
+
onDelete: 'CASCADE',
|
|
2122
|
+
},
|
|
2123
|
+
{
|
|
2124
|
+
table: 'persona_states',
|
|
2125
|
+
columns: ['persona_id'],
|
|
2126
|
+
referencedTable: 'personas',
|
|
2127
|
+
referencedColumns: ['id'],
|
|
2128
|
+
onDelete: 'CASCADE',
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
table: 'platform_vector_acl',
|
|
2132
|
+
columns: ['namespace', 'owner_user_id', 'vector_id'],
|
|
2133
|
+
referencedTable: 'platform_vector_entries',
|
|
2134
|
+
referencedColumns: ['namespace', 'owner_user_id', 'id'],
|
|
2135
|
+
onDelete: 'CASCADE',
|
|
2136
|
+
},
|
|
2137
|
+
{
|
|
2138
|
+
table: 'platform_vector_attributes',
|
|
2139
|
+
columns: ['namespace', 'owner_user_id', 'vector_id'],
|
|
2140
|
+
referencedTable: 'platform_vector_entries',
|
|
2141
|
+
referencedColumns: ['namespace', 'owner_user_id', 'id'],
|
|
2142
|
+
onDelete: 'CASCADE',
|
|
2143
|
+
},
|
|
2144
|
+
{
|
|
2145
|
+
table: 'platform_job_attempts',
|
|
2146
|
+
columns: ['job_id'],
|
|
2147
|
+
referencedTable: 'platform_jobs',
|
|
2148
|
+
referencedColumns: ['id'],
|
|
2149
|
+
onDelete: 'CASCADE',
|
|
2150
|
+
},
|
|
2151
|
+
{
|
|
2152
|
+
table: 'platform_events',
|
|
2153
|
+
columns: ['stream_id'],
|
|
2154
|
+
referencedTable: 'platform_event_stream_heads',
|
|
2155
|
+
referencedColumns: ['stream_id'],
|
|
2156
|
+
onDelete: 'CASCADE',
|
|
2157
|
+
},
|
|
2158
|
+
{
|
|
2159
|
+
table: 'user_group_members',
|
|
2160
|
+
columns: ['group_id'],
|
|
2161
|
+
referencedTable: 'user_groups',
|
|
2162
|
+
referencedColumns: ['id'],
|
|
2163
|
+
onDelete: 'CASCADE',
|
|
2164
|
+
},
|
|
2165
|
+
{
|
|
2166
|
+
table: 'user_group_members',
|
|
2167
|
+
columns: ['user_id'],
|
|
2168
|
+
referencedTable: 'users',
|
|
2169
|
+
referencedColumns: ['id'],
|
|
2170
|
+
onDelete: 'CASCADE',
|
|
2171
|
+
},
|
|
2172
|
+
{
|
|
2173
|
+
table: 'resource_grants',
|
|
2174
|
+
columns: ['owner_user_id'],
|
|
2175
|
+
referencedTable: 'users',
|
|
2176
|
+
referencedColumns: ['id'],
|
|
2177
|
+
onDelete: 'CASCADE',
|
|
2178
|
+
},
|
|
2179
|
+
{
|
|
2180
|
+
table: 'auth_sessions',
|
|
1213
2181
|
columns: ['user_id'],
|
|
1214
2182
|
referencedTable: 'users',
|
|
1215
2183
|
referencedColumns: ['id'],
|
|
1216
2184
|
onDelete: 'CASCADE',
|
|
1217
2185
|
},
|
|
1218
2186
|
{
|
|
1219
|
-
table: '
|
|
1220
|
-
columns: ['
|
|
1221
|
-
referencedTable: '
|
|
2187
|
+
table: 'api_tokens',
|
|
2188
|
+
columns: ['user_id'],
|
|
2189
|
+
referencedTable: 'users',
|
|
1222
2190
|
referencedColumns: ['id'],
|
|
1223
2191
|
onDelete: 'CASCADE',
|
|
1224
2192
|
},
|
|
1225
2193
|
{
|
|
1226
|
-
table: '
|
|
2194
|
+
table: 'oauth_identities',
|
|
1227
2195
|
columns: ['user_id'],
|
|
1228
2196
|
referencedTable: 'users',
|
|
1229
2197
|
referencedColumns: ['id'],
|
|
1230
2198
|
onDelete: 'CASCADE',
|
|
1231
2199
|
},
|
|
1232
2200
|
{
|
|
1233
|
-
table: '
|
|
2201
|
+
table: 'calendar_events',
|
|
1234
2202
|
columns: ['user_id'],
|
|
1235
2203
|
referencedTable: 'users',
|
|
1236
2204
|
referencedColumns: ['id'],
|
|
1237
2205
|
onDelete: 'CASCADE',
|
|
1238
2206
|
},
|
|
1239
2207
|
{
|
|
1240
|
-
table: '
|
|
1241
|
-
columns: ['
|
|
1242
|
-
referencedTable: '
|
|
2208
|
+
table: 'automations',
|
|
2209
|
+
columns: ['user_id'],
|
|
2210
|
+
referencedTable: 'users',
|
|
1243
2211
|
referencedColumns: ['id'],
|
|
1244
2212
|
onDelete: 'CASCADE',
|
|
1245
2213
|
},
|
|
1246
2214
|
{
|
|
1247
|
-
table: '
|
|
1248
|
-
columns: ['
|
|
1249
|
-
referencedTable: '
|
|
2215
|
+
table: 'automation_runs',
|
|
2216
|
+
columns: ['automation_id'],
|
|
2217
|
+
referencedTable: 'automations',
|
|
1250
2218
|
referencedColumns: ['id'],
|
|
1251
2219
|
onDelete: 'CASCADE',
|
|
1252
2220
|
},
|
|
1253
2221
|
{
|
|
1254
|
-
table: '
|
|
1255
|
-
columns: ['
|
|
1256
|
-
referencedTable: '
|
|
2222
|
+
table: 'automation_runs',
|
|
2223
|
+
columns: ['user_id'],
|
|
2224
|
+
referencedTable: 'users',
|
|
1257
2225
|
referencedColumns: ['id'],
|
|
1258
|
-
onDelete: '
|
|
2226
|
+
onDelete: 'CASCADE',
|
|
1259
2227
|
},
|
|
1260
2228
|
{
|
|
1261
|
-
table: '
|
|
2229
|
+
table: 'tool_servers',
|
|
1262
2230
|
columns: ['user_id'],
|
|
1263
2231
|
referencedTable: 'users',
|
|
1264
2232
|
referencedColumns: ['id'],
|
|
1265
2233
|
onDelete: 'CASCADE',
|
|
1266
2234
|
},
|
|
1267
2235
|
{
|
|
1268
|
-
table: '
|
|
1269
|
-
columns: ['
|
|
1270
|
-
referencedTable: '
|
|
2236
|
+
table: 'tool_server_tools',
|
|
2237
|
+
columns: ['server_id'],
|
|
2238
|
+
referencedTable: 'tool_servers',
|
|
1271
2239
|
referencedColumns: ['id'],
|
|
1272
2240
|
onDelete: 'CASCADE',
|
|
1273
2241
|
},
|
|
1274
2242
|
{
|
|
1275
|
-
table: '
|
|
1276
|
-
columns: ['
|
|
1277
|
-
referencedTable: '
|
|
2243
|
+
table: 'tool_server_credentials',
|
|
2244
|
+
columns: ['server_id'],
|
|
2245
|
+
referencedTable: 'tool_servers',
|
|
1278
2246
|
referencedColumns: ['id'],
|
|
1279
2247
|
onDelete: 'CASCADE',
|
|
1280
2248
|
},
|
|
1281
2249
|
{
|
|
1282
|
-
table: '
|
|
1283
|
-
columns: ['
|
|
1284
|
-
referencedTable: '
|
|
1285
|
-
referencedColumns: ['
|
|
2250
|
+
table: 'tool_server_credentials',
|
|
2251
|
+
columns: ['user_id'],
|
|
2252
|
+
referencedTable: 'users',
|
|
2253
|
+
referencedColumns: ['id'],
|
|
1286
2254
|
onDelete: 'CASCADE',
|
|
1287
2255
|
},
|
|
1288
2256
|
{
|
|
1289
|
-
table: '
|
|
1290
|
-
columns: ['
|
|
1291
|
-
referencedTable: '
|
|
1292
|
-
referencedColumns: ['
|
|
2257
|
+
table: 'tool_approvals',
|
|
2258
|
+
columns: ['user_id'],
|
|
2259
|
+
referencedTable: 'users',
|
|
2260
|
+
referencedColumns: ['id'],
|
|
1293
2261
|
onDelete: 'CASCADE',
|
|
1294
2262
|
},
|
|
1295
2263
|
{
|
|
1296
|
-
table: '
|
|
1297
|
-
columns: ['
|
|
1298
|
-
referencedTable: '
|
|
2264
|
+
table: 'tool_approvals',
|
|
2265
|
+
columns: ['session_id'],
|
|
2266
|
+
referencedTable: 'sessions',
|
|
1299
2267
|
referencedColumns: ['id'],
|
|
1300
2268
|
onDelete: 'CASCADE',
|
|
1301
2269
|
},
|
|
1302
2270
|
{
|
|
1303
|
-
table: '
|
|
1304
|
-
columns: ['
|
|
1305
|
-
referencedTable: '
|
|
1306
|
-
referencedColumns: ['
|
|
2271
|
+
table: 'prompts',
|
|
2272
|
+
columns: ['user_id'],
|
|
2273
|
+
referencedTable: 'users',
|
|
2274
|
+
referencedColumns: ['id'],
|
|
1307
2275
|
onDelete: 'CASCADE',
|
|
1308
2276
|
},
|
|
1309
2277
|
{
|
|
1310
|
-
table: '
|
|
1311
|
-
columns: ['
|
|
1312
|
-
referencedTable: '
|
|
2278
|
+
table: 'prompt_versions',
|
|
2279
|
+
columns: ['prompt_id'],
|
|
2280
|
+
referencedTable: 'prompts',
|
|
1313
2281
|
referencedColumns: ['id'],
|
|
1314
2282
|
onDelete: 'CASCADE',
|
|
1315
2283
|
},
|
|
1316
2284
|
{
|
|
1317
|
-
table: '
|
|
2285
|
+
table: 'skills',
|
|
1318
2286
|
columns: ['user_id'],
|
|
1319
2287
|
referencedTable: 'users',
|
|
1320
2288
|
referencedColumns: ['id'],
|
|
1321
2289
|
onDelete: 'CASCADE',
|
|
1322
2290
|
},
|
|
1323
2291
|
{
|
|
1324
|
-
table: '
|
|
1325
|
-
columns: ['
|
|
2292
|
+
table: 'skill_versions',
|
|
2293
|
+
columns: ['skill_id'],
|
|
2294
|
+
referencedTable: 'skills',
|
|
2295
|
+
referencedColumns: ['id'],
|
|
2296
|
+
onDelete: 'CASCADE',
|
|
2297
|
+
},
|
|
2298
|
+
{
|
|
2299
|
+
table: 'skill_files',
|
|
2300
|
+
columns: ['skill_id'],
|
|
2301
|
+
referencedTable: 'skills',
|
|
2302
|
+
referencedColumns: ['id'],
|
|
2303
|
+
onDelete: 'CASCADE',
|
|
2304
|
+
},
|
|
2305
|
+
{
|
|
2306
|
+
table: 'note_revisions',
|
|
2307
|
+
columns: ['note_id'],
|
|
2308
|
+
referencedTable: 'notes',
|
|
2309
|
+
referencedColumns: ['id'],
|
|
2310
|
+
onDelete: 'CASCADE',
|
|
2311
|
+
},
|
|
2312
|
+
{
|
|
2313
|
+
table: 'note_attachments',
|
|
2314
|
+
columns: ['note_id'],
|
|
2315
|
+
referencedTable: 'notes',
|
|
2316
|
+
referencedColumns: ['id'],
|
|
2317
|
+
onDelete: 'CASCADE',
|
|
2318
|
+
},
|
|
2319
|
+
{
|
|
2320
|
+
table: 'calendars',
|
|
2321
|
+
columns: ['user_id'],
|
|
1326
2322
|
referencedTable: 'users',
|
|
1327
2323
|
referencedColumns: ['id'],
|
|
1328
2324
|
onDelete: 'CASCADE',
|
|
1329
2325
|
},
|
|
1330
2326
|
{
|
|
1331
|
-
table: '
|
|
2327
|
+
table: 'channel_members',
|
|
2328
|
+
columns: ['channel_id'],
|
|
2329
|
+
referencedTable: 'channels',
|
|
2330
|
+
referencedColumns: ['id'],
|
|
2331
|
+
onDelete: 'CASCADE',
|
|
2332
|
+
},
|
|
2333
|
+
{
|
|
2334
|
+
table: 'channel_members',
|
|
1332
2335
|
columns: ['user_id'],
|
|
1333
2336
|
referencedTable: 'users',
|
|
1334
2337
|
referencedColumns: ['id'],
|
|
1335
2338
|
onDelete: 'CASCADE',
|
|
1336
2339
|
},
|
|
1337
2340
|
{
|
|
1338
|
-
table: '
|
|
2341
|
+
table: 'channel_messages',
|
|
2342
|
+
columns: ['channel_id'],
|
|
2343
|
+
referencedTable: 'channels',
|
|
2344
|
+
referencedColumns: ['id'],
|
|
2345
|
+
onDelete: 'CASCADE',
|
|
2346
|
+
},
|
|
2347
|
+
{
|
|
2348
|
+
table: 'channel_reactions',
|
|
2349
|
+
columns: ['message_id'],
|
|
2350
|
+
referencedTable: 'channel_messages',
|
|
2351
|
+
referencedColumns: ['id'],
|
|
2352
|
+
onDelete: 'CASCADE',
|
|
2353
|
+
},
|
|
2354
|
+
{
|
|
2355
|
+
table: 'channel_attachments',
|
|
2356
|
+
columns: ['message_id'],
|
|
2357
|
+
referencedTable: 'channel_messages',
|
|
2358
|
+
referencedColumns: ['id'],
|
|
2359
|
+
onDelete: 'CASCADE',
|
|
2360
|
+
},
|
|
2361
|
+
{
|
|
2362
|
+
table: 'notifications',
|
|
1339
2363
|
columns: ['user_id'],
|
|
1340
2364
|
referencedTable: 'users',
|
|
1341
2365
|
referencedColumns: ['id'],
|
|
1342
2366
|
onDelete: 'CASCADE',
|
|
1343
2367
|
},
|
|
1344
2368
|
{
|
|
1345
|
-
table: '
|
|
2369
|
+
table: 'message_feedback',
|
|
1346
2370
|
columns: ['user_id'],
|
|
1347
2371
|
referencedTable: 'users',
|
|
1348
2372
|
referencedColumns: ['id'],
|
|
1349
2373
|
onDelete: 'CASCADE',
|
|
1350
2374
|
},
|
|
1351
2375
|
{
|
|
1352
|
-
table: '
|
|
2376
|
+
table: 'arena_votes',
|
|
1353
2377
|
columns: ['user_id'],
|
|
1354
2378
|
referencedTable: 'users',
|
|
1355
2379
|
referencedColumns: ['id'],
|
|
1356
2380
|
onDelete: 'CASCADE',
|
|
1357
2381
|
},
|
|
1358
2382
|
{
|
|
1359
|
-
table: '
|
|
2383
|
+
table: 'eval_sets',
|
|
1360
2384
|
columns: ['user_id'],
|
|
1361
2385
|
referencedTable: 'users',
|
|
1362
2386
|
referencedColumns: ['id'],
|
|
1363
2387
|
onDelete: 'CASCADE',
|
|
1364
2388
|
},
|
|
1365
2389
|
{
|
|
1366
|
-
table: '
|
|
1367
|
-
columns: ['
|
|
1368
|
-
referencedTable: '
|
|
2390
|
+
table: 'eval_runs',
|
|
2391
|
+
columns: ['user_id'],
|
|
2392
|
+
referencedTable: 'users',
|
|
1369
2393
|
referencedColumns: ['id'],
|
|
1370
2394
|
onDelete: 'CASCADE',
|
|
1371
2395
|
},
|
|
1372
2396
|
{
|
|
1373
|
-
table: '
|
|
2397
|
+
table: 'eval_runs',
|
|
2398
|
+
columns: ['set_id'],
|
|
2399
|
+
referencedTable: 'eval_sets',
|
|
2400
|
+
referencedColumns: ['id'],
|
|
2401
|
+
onDelete: 'CASCADE',
|
|
2402
|
+
},
|
|
2403
|
+
{
|
|
2404
|
+
table: 'user_mfa',
|
|
2405
|
+
columns: ['user_id'],
|
|
2406
|
+
referencedTable: 'users',
|
|
2407
|
+
referencedColumns: ['id'],
|
|
2408
|
+
onDelete: 'CASCADE',
|
|
2409
|
+
},
|
|
2410
|
+
{
|
|
2411
|
+
table: 'mfa_recovery_codes',
|
|
2412
|
+
columns: ['user_id'],
|
|
2413
|
+
referencedTable: 'users',
|
|
2414
|
+
referencedColumns: ['id'],
|
|
2415
|
+
onDelete: 'CASCADE',
|
|
2416
|
+
},
|
|
2417
|
+
{
|
|
2418
|
+
table: 'webauthn_credentials',
|
|
2419
|
+
columns: ['user_id'],
|
|
2420
|
+
referencedTable: 'users',
|
|
2421
|
+
referencedColumns: ['id'],
|
|
2422
|
+
onDelete: 'CASCADE',
|
|
2423
|
+
},
|
|
2424
|
+
{
|
|
2425
|
+
table: 'push_subscriptions',
|
|
1374
2426
|
columns: ['user_id'],
|
|
1375
2427
|
referencedTable: 'users',
|
|
1376
2428
|
referencedColumns: ['id'],
|
|
@@ -1598,6 +2650,146 @@ const REQUIRED_INDEXES = [
|
|
|
1598
2650
|
table: 'automation_runs',
|
|
1599
2651
|
columns: ['user_id', 'scheduled_for'],
|
|
1600
2652
|
},
|
|
2653
|
+
{
|
|
2654
|
+
name: 'idx_tool_servers_updated',
|
|
2655
|
+
table: 'tool_servers',
|
|
2656
|
+
columns: ['updated_at'],
|
|
2657
|
+
},
|
|
2658
|
+
{
|
|
2659
|
+
name: 'idx_tool_approvals_owner',
|
|
2660
|
+
table: 'tool_approvals',
|
|
2661
|
+
columns: ['user_id', 'status', 'created_at'],
|
|
2662
|
+
},
|
|
2663
|
+
{
|
|
2664
|
+
name: 'idx_prompts_owner',
|
|
2665
|
+
table: 'prompts',
|
|
2666
|
+
columns: ['user_id', 'updated_at'],
|
|
2667
|
+
},
|
|
2668
|
+
{
|
|
2669
|
+
name: 'idx_skills_owner',
|
|
2670
|
+
table: 'skills',
|
|
2671
|
+
columns: ['user_id', 'updated_at'],
|
|
2672
|
+
},
|
|
2673
|
+
{
|
|
2674
|
+
name: 'idx_skill_files_skill',
|
|
2675
|
+
table: 'skill_files',
|
|
2676
|
+
columns: ['skill_id'],
|
|
2677
|
+
},
|
|
2678
|
+
{
|
|
2679
|
+
name: 'idx_note_revisions_note',
|
|
2680
|
+
table: 'note_revisions',
|
|
2681
|
+
columns: ['note_id', 'created_at'],
|
|
2682
|
+
},
|
|
2683
|
+
{
|
|
2684
|
+
name: 'idx_note_attachments_note',
|
|
2685
|
+
table: 'note_attachments',
|
|
2686
|
+
columns: ['note_id'],
|
|
2687
|
+
},
|
|
2688
|
+
{
|
|
2689
|
+
name: 'idx_calendar_scoped_events',
|
|
2690
|
+
table: 'calendar_events',
|
|
2691
|
+
columns: ['calendar_id'],
|
|
2692
|
+
sqlFragment: 'WHERE calendar_id IS NOT NULL',
|
|
2693
|
+
},
|
|
2694
|
+
{
|
|
2695
|
+
name: 'idx_calendars_owner',
|
|
2696
|
+
table: 'calendars',
|
|
2697
|
+
columns: ['user_id', 'updated_at'],
|
|
2698
|
+
},
|
|
2699
|
+
{
|
|
2700
|
+
name: 'idx_channels_dm_key',
|
|
2701
|
+
table: 'channels',
|
|
2702
|
+
columns: ['dm_key'],
|
|
2703
|
+
unique: true,
|
|
2704
|
+
sqlFragment: 'WHERE dm_key IS NOT NULL',
|
|
2705
|
+
},
|
|
2706
|
+
{
|
|
2707
|
+
name: 'idx_channel_members_user',
|
|
2708
|
+
table: 'channel_members',
|
|
2709
|
+
columns: ['user_id'],
|
|
2710
|
+
},
|
|
2711
|
+
{
|
|
2712
|
+
name: 'idx_channel_messages_timeline',
|
|
2713
|
+
table: 'channel_messages',
|
|
2714
|
+
columns: ['channel_id', 'created_at', 'id'],
|
|
2715
|
+
},
|
|
2716
|
+
{
|
|
2717
|
+
name: 'idx_channel_messages_thread',
|
|
2718
|
+
table: 'channel_messages',
|
|
2719
|
+
columns: ['parent_id'],
|
|
2720
|
+
},
|
|
2721
|
+
{
|
|
2722
|
+
name: 'idx_channel_attachments_message',
|
|
2723
|
+
table: 'channel_attachments',
|
|
2724
|
+
columns: ['message_id'],
|
|
2725
|
+
},
|
|
2726
|
+
{
|
|
2727
|
+
name: 'idx_notifications_user',
|
|
2728
|
+
table: 'notifications',
|
|
2729
|
+
columns: ['user_id', 'created_at'],
|
|
2730
|
+
},
|
|
2731
|
+
{
|
|
2732
|
+
name: 'idx_notifications_dedupe',
|
|
2733
|
+
table: 'notifications',
|
|
2734
|
+
columns: ['user_id', 'source_key'],
|
|
2735
|
+
unique: true,
|
|
2736
|
+
sqlFragment: 'WHERE source_key IS NOT NULL',
|
|
2737
|
+
},
|
|
2738
|
+
{
|
|
2739
|
+
name: 'idx_model_tariffs_lookup',
|
|
2740
|
+
table: 'model_tariffs',
|
|
2741
|
+
columns: ['plugin_id', 'model', 'effective_from'],
|
|
2742
|
+
},
|
|
2743
|
+
{
|
|
2744
|
+
name: 'idx_usage_budgets_principal',
|
|
2745
|
+
table: 'usage_budgets',
|
|
2746
|
+
columns: ['principal_type', 'principal_id'],
|
|
2747
|
+
},
|
|
2748
|
+
{
|
|
2749
|
+
name: 'idx_message_feedback_owner',
|
|
2750
|
+
table: 'message_feedback',
|
|
2751
|
+
columns: ['user_id', 'created_at'],
|
|
2752
|
+
},
|
|
2753
|
+
{
|
|
2754
|
+
name: 'idx_arena_votes_order',
|
|
2755
|
+
table: 'arena_votes',
|
|
2756
|
+
columns: ['created_at', 'id'],
|
|
2757
|
+
},
|
|
2758
|
+
{
|
|
2759
|
+
name: 'idx_eval_sets_owner',
|
|
2760
|
+
table: 'eval_sets',
|
|
2761
|
+
columns: ['user_id', 'updated_at'],
|
|
2762
|
+
},
|
|
2763
|
+
{
|
|
2764
|
+
name: 'idx_eval_runs_owner',
|
|
2765
|
+
table: 'eval_runs',
|
|
2766
|
+
columns: ['user_id', 'created_at'],
|
|
2767
|
+
},
|
|
2768
|
+
{
|
|
2769
|
+
name: 'idx_eval_runs_parent',
|
|
2770
|
+
table: 'eval_runs',
|
|
2771
|
+
columns: ['set_id'],
|
|
2772
|
+
},
|
|
2773
|
+
{
|
|
2774
|
+
name: 'idx_mfa_recovery_codes_user',
|
|
2775
|
+
table: 'mfa_recovery_codes',
|
|
2776
|
+
columns: ['user_id'],
|
|
2777
|
+
},
|
|
2778
|
+
{
|
|
2779
|
+
name: 'idx_webauthn_credentials_user',
|
|
2780
|
+
table: 'webauthn_credentials',
|
|
2781
|
+
columns: ['user_id'],
|
|
2782
|
+
},
|
|
2783
|
+
{
|
|
2784
|
+
name: 'idx_push_subscriptions_user',
|
|
2785
|
+
table: 'push_subscriptions',
|
|
2786
|
+
columns: ['user_id'],
|
|
2787
|
+
},
|
|
2788
|
+
{
|
|
2789
|
+
name: 'idx_recovery_drills_started',
|
|
2790
|
+
table: 'recovery_drills',
|
|
2791
|
+
columns: ['started_at'],
|
|
2792
|
+
},
|
|
1601
2793
|
];
|
|
1602
2794
|
const REQUIRED_TABLE_SQL_FRAGMENTS = {
|
|
1603
2795
|
platform_vector_entries: ['CHECK(dimensions > 0)'],
|
|
@@ -1634,6 +2826,37 @@ const REQUIRED_TABLE_SQL_FRAGMENTS = {
|
|
|
1634
2826
|
"permission IN ('read', 'write', 'admin')",
|
|
1635
2827
|
],
|
|
1636
2828
|
security_audit_events: ["result IN ('success', 'denied', 'failure')"],
|
|
2829
|
+
tool_servers: [
|
|
2830
|
+
"kind IN ('openapi', 'mcp')",
|
|
2831
|
+
"auth_mode IN ('none', 'bearer', 'header')",
|
|
2832
|
+
"access_mode IN ('admins-only', 'all-users', 'granted')",
|
|
2833
|
+
],
|
|
2834
|
+
tool_approvals: [
|
|
2835
|
+
"scope IN ('once', 'session', 'always')",
|
|
2836
|
+
"status IN ('pending', 'approved', 'denied', 'expired')",
|
|
2837
|
+
],
|
|
2838
|
+
channels: ["type IN ('public', 'private', 'dm')"],
|
|
2839
|
+
channel_members: ["role IN ('owner', 'member')"],
|
|
2840
|
+
channel_messages: ["author_kind IN ('user', 'model')"],
|
|
2841
|
+
channel_reactions: ['UNIQUE (message_id, user_id, emoji)'],
|
|
2842
|
+
webhook_targets: ['enabled IN (0, 1)'],
|
|
2843
|
+
usage_budgets: [
|
|
2844
|
+
"principal_type IN ('instance', 'user', 'group')",
|
|
2845
|
+
"period IN ('daily', 'weekly', 'monthly')",
|
|
2846
|
+
"mode IN ('observe', 'soft', 'hard')",
|
|
2847
|
+
],
|
|
2848
|
+
message_feedback: ['rating IN (-1, 1)', 'UNIQUE (user_id, message_id)'],
|
|
2849
|
+
arena_votes: [
|
|
2850
|
+
"winner IN ('a', 'b', 'tie', 'both-bad')",
|
|
2851
|
+
'UNIQUE (user_id, compare_group)',
|
|
2852
|
+
],
|
|
2853
|
+
eval_runs: [
|
|
2854
|
+
"status IN ('queued', 'running', 'completed', 'failed', 'cancelled')",
|
|
2855
|
+
],
|
|
2856
|
+
recovery_drills: [
|
|
2857
|
+
"status IN ('running', 'passed', 'failed')",
|
|
2858
|
+
"origin IN ('scheduled', 'manual')",
|
|
2859
|
+
],
|
|
1637
2860
|
};
|
|
1638
2861
|
const quoteIdentifier = (identifier) => `"${identifier.replace(/"/g, '""')}"`;
|
|
1639
2862
|
const normalizeSql = (sql) => sql
|
|
@@ -1855,6 +3078,10 @@ const collectMissingSchema = (database) => [
|
|
|
1855
3078
|
...collectMissingResourceDeletionLifecycleSchema(database),
|
|
1856
3079
|
...collectMissingTrustFoundationSchema(database),
|
|
1857
3080
|
...collectMissingPersonalAutomationsSchema(database),
|
|
3081
|
+
...collectMissingAgentFoundationSchema(database),
|
|
3082
|
+
...collectMissingSkillFilesSchema(database),
|
|
3083
|
+
...collectMissingNotesV2Schema(database),
|
|
3084
|
+
...collectMissingTeamCollaborationSchema(database),
|
|
1858
3085
|
];
|
|
1859
3086
|
const collectMissingMigrationLedgerSchema = (database) => [
|
|
1860
3087
|
...collectMissingColumns(database, {
|
|
@@ -1866,7 +3093,8 @@ const collectMissingLegacySchema = (database) => [
|
|
|
1866
3093
|
...collectMissingColumns(database, LEGACY_REQUIRED_SCHEMA),
|
|
1867
3094
|
...collectMissingStructuralInvariants(database).filter(item => !item.includes('platform_') &&
|
|
1868
3095
|
!item.includes('idx_users_email_lookup') &&
|
|
1869
|
-
!item.includes('idx_voice_profiles_name_lookup')
|
|
3096
|
+
!item.includes('idx_voice_profiles_name_lookup') &&
|
|
3097
|
+
!item.includes('idx_calendar_scoped_events')),
|
|
1870
3098
|
];
|
|
1871
3099
|
const collectMissingIdentityEmailLookupSchema = (database) => [
|
|
1872
3100
|
...collectMissingColumns(database, IDENTITY_EMAIL_LOOKUP_REQUIRED_SCHEMA),
|
|
@@ -1921,6 +3149,46 @@ const collectMissingPersonalAutomationsSchema = (database) => [
|
|
|
1921
3149
|
item.includes('automations') ||
|
|
1922
3150
|
item.includes('automation_runs')),
|
|
1923
3151
|
];
|
|
3152
|
+
const collectMissingAgentFoundationSchema = (database) => [
|
|
3153
|
+
...collectMissingColumns(database, AGENT_FOUNDATION_REQUIRED_SCHEMA),
|
|
3154
|
+
...collectMissingStructuralInvariants(database).filter(item => item.includes('tool_server') ||
|
|
3155
|
+
item.includes('tool_approvals') ||
|
|
3156
|
+
item.includes('prompt') ||
|
|
3157
|
+
item.includes('skill')),
|
|
3158
|
+
];
|
|
3159
|
+
const collectMissingSkillFilesSchema = (database) => [
|
|
3160
|
+
...collectMissingColumns(database, SKILL_FILES_REQUIRED_SCHEMA),
|
|
3161
|
+
...collectMissingStructuralInvariants(database).filter(item => item.includes('skill_files')),
|
|
3162
|
+
];
|
|
3163
|
+
const collectMissingNotesV2Schema = (database) => [
|
|
3164
|
+
...collectMissingColumns(database, NOTES_V2_REQUIRED_SCHEMA),
|
|
3165
|
+
...collectMissingStructuralInvariants(database).filter(item => item.includes('note_revisions') || item.includes('note_attachments')),
|
|
3166
|
+
];
|
|
3167
|
+
const collectMissingTeamCollaborationSchema = (database) => [
|
|
3168
|
+
...collectMissingColumns(database, TEAM_COLLABORATION_REQUIRED_SCHEMA),
|
|
3169
|
+
...collectMissingStructuralInvariants(database).filter(item => item.includes('channel') ||
|
|
3170
|
+
item.includes('notifications') ||
|
|
3171
|
+
item.includes('webhook_targets') ||
|
|
3172
|
+
item.includes('calendars') ||
|
|
3173
|
+
item.includes('idx_calendar_scoped_events')),
|
|
3174
|
+
];
|
|
3175
|
+
const collectMissingMediaEnterpriseOpsSchema = (database) => [
|
|
3176
|
+
...collectMissingColumns(database, MEDIA_ENTERPRISE_OPS_REQUIRED_SCHEMA),
|
|
3177
|
+
...collectMissingStructuralInvariants(database).filter(item => item.includes('model_tariffs') ||
|
|
3178
|
+
item.includes('usage_budgets') ||
|
|
3179
|
+
item.includes('message_feedback') ||
|
|
3180
|
+
item.includes('arena_votes') ||
|
|
3181
|
+
item.includes('eval_sets') ||
|
|
3182
|
+
item.includes('eval_runs')),
|
|
3183
|
+
];
|
|
3184
|
+
const collectMissingMfaPushRecoverySchema = (database) => [
|
|
3185
|
+
...collectMissingColumns(database, MFA_PUSH_RECOVERY_REQUIRED_SCHEMA),
|
|
3186
|
+
...collectMissingStructuralInvariants(database).filter(item => item.includes('user_mfa') ||
|
|
3187
|
+
item.includes('mfa_recovery_codes') ||
|
|
3188
|
+
item.includes('webauthn_credentials') ||
|
|
3189
|
+
item.includes('push_subscriptions') ||
|
|
3190
|
+
item.includes('recovery_drills')),
|
|
3191
|
+
];
|
|
1924
3192
|
const collectMissingIdentityAccountRetirementSchema = (database) => {
|
|
1925
3193
|
const row = database
|
|
1926
3194
|
.prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'users'")
|
|
@@ -1959,6 +3227,12 @@ function collectMissingSchemaAtVersion(database, version) {
|
|
|
1959
3227
|
: []),
|
|
1960
3228
|
...(version >= 14 ? collectMissingTrustFoundationSchema(database) : []),
|
|
1961
3229
|
...(version >= 15 ? collectMissingPersonalAutomationsSchema(database) : []),
|
|
3230
|
+
...(version >= 16 ? collectMissingAgentFoundationSchema(database) : []),
|
|
3231
|
+
...(version >= 17 ? collectMissingSkillFilesSchema(database) : []),
|
|
3232
|
+
...(version >= 18 ? collectMissingNotesV2Schema(database) : []),
|
|
3233
|
+
...(version >= 19 ? collectMissingTeamCollaborationSchema(database) : []),
|
|
3234
|
+
...(version >= 20 ? collectMissingMediaEnterpriseOpsSchema(database) : []),
|
|
3235
|
+
...(version >= 21 ? collectMissingMfaPushRecoverySchema(database) : []),
|
|
1962
3236
|
];
|
|
1963
3237
|
}
|
|
1964
3238
|
const collectMissingLegacyBootstrapSchema = (database) => {
|
|
@@ -2009,6 +3283,12 @@ const DURABLE_EVENT_REPLAY_INDEX_MIGRATION_CHECKSUM = '7d6b769ceadd08791c77ac5c5
|
|
|
2009
3283
|
const TRUST_FOUNDATION_MIGRATION_CHECKSUM = 'c5a73245de3cd3e37db8877c8457c975d789f98c1c71ae1e4fc891ba09e8de5a';
|
|
2010
3284
|
const LEGACY_DURABLE_EVENT_REPLAY_INDEX_MIGRATION_CHECKSUM = 'DURABLE_EVENT_REPLAY_INDEX_CHECKSUM_TO_FREEZE';
|
|
2011
3285
|
const PERSONAL_AUTOMATIONS_MIGRATION_CHECKSUM = '5bfb4a1789480a3cacc09c5a4359a4e77b82b0edafa80f6d78cde73e57ddc70b';
|
|
3286
|
+
const AGENT_FOUNDATION_MIGRATION_CHECKSUM = '7e3a346fae66c073aac800aa45847999a4300b2f17eb3eaf9ed6351e891e2941';
|
|
3287
|
+
const SKILL_FILES_MIGRATION_CHECKSUM = '584e1f9bca79eb5974f997088636d74d7f2c1e5fd816fcd0f6cf74ec30aea161';
|
|
3288
|
+
const NOTES_V2_MIGRATION_CHECKSUM = '05a6758ab2b2a54f9097a5d5604a2bd57e085f1dd16816b5dc96d1eb7a41a399';
|
|
3289
|
+
const TEAM_COLLABORATION_MIGRATION_CHECKSUM = '1cf021c941cfd9207a82e794e58d7553ae24a35b3f8f8a84bb4a0e06d0d77443';
|
|
3290
|
+
const MEDIA_ENTERPRISE_OPS_MIGRATION_CHECKSUM = 'c6bc6d98518f7a279ad7109cfdfcd8a75fbf7e3e157c50bca98142b50ac0f38b';
|
|
3291
|
+
const MFA_PUSH_RECOVERY_MIGRATION_CHECKSUM = '9b2cdc08d2316877af091587113c749aed4b224d6ee12e72626b830da5447005';
|
|
2012
3292
|
const MIGRATIONS = [
|
|
2013
3293
|
{
|
|
2014
3294
|
version: 1,
|
|
@@ -2231,6 +3511,87 @@ const MIGRATIONS = [
|
|
|
2231
3511
|
}
|
|
2232
3512
|
},
|
|
2233
3513
|
},
|
|
3514
|
+
{
|
|
3515
|
+
version: 16,
|
|
3516
|
+
name: 'agent-foundation',
|
|
3517
|
+
checksum: AGENT_FOUNDATION_MIGRATION_CHECKSUM,
|
|
3518
|
+
apply(database) {
|
|
3519
|
+
addColumnIfMissing(database, 'personas', 'bindings', 'TEXT');
|
|
3520
|
+
database.exec(AGENT_FOUNDATION_TABLES_SQL);
|
|
3521
|
+
const missing = collectMissingAgentFoundationSchema(database);
|
|
3522
|
+
if (missing.length > 0) {
|
|
3523
|
+
throw new Error(`SQLite agent foundation schema is incomplete; missing ${missing.join(', ')}`);
|
|
3524
|
+
}
|
|
3525
|
+
},
|
|
3526
|
+
},
|
|
3527
|
+
{
|
|
3528
|
+
version: 17,
|
|
3529
|
+
name: 'skill-files',
|
|
3530
|
+
checksum: SKILL_FILES_MIGRATION_CHECKSUM,
|
|
3531
|
+
apply(database) {
|
|
3532
|
+
database.exec(SKILL_FILES_SCHEMA_SQL);
|
|
3533
|
+
const missing = collectMissingSkillFilesSchema(database);
|
|
3534
|
+
if (missing.length > 0) {
|
|
3535
|
+
throw new Error(`SQLite skill files schema is incomplete; missing ${missing.join(', ')}`);
|
|
3536
|
+
}
|
|
3537
|
+
},
|
|
3538
|
+
},
|
|
3539
|
+
{
|
|
3540
|
+
version: 18,
|
|
3541
|
+
name: 'notes-v2',
|
|
3542
|
+
checksum: NOTES_V2_MIGRATION_CHECKSUM,
|
|
3543
|
+
apply(database) {
|
|
3544
|
+
addColumnIfMissing(database, 'notes', 'pinned', 'INTEGER DEFAULT 0');
|
|
3545
|
+
database.exec(NOTES_V2_TABLES_SQL);
|
|
3546
|
+
const missing = collectMissingNotesV2Schema(database);
|
|
3547
|
+
if (missing.length > 0) {
|
|
3548
|
+
throw new Error(`SQLite notes v2 schema is incomplete; missing ${missing.join(', ')}`);
|
|
3549
|
+
}
|
|
3550
|
+
},
|
|
3551
|
+
},
|
|
3552
|
+
{
|
|
3553
|
+
version: 19,
|
|
3554
|
+
name: 'team-collaboration',
|
|
3555
|
+
checksum: TEAM_COLLABORATION_MIGRATION_CHECKSUM,
|
|
3556
|
+
apply(database) {
|
|
3557
|
+
addColumnIfMissing(database, 'calendar_events', 'calendar_id', 'TEXT');
|
|
3558
|
+
addColumnIfMissing(database, 'calendar_events', 'reminder_minutes', 'INTEGER');
|
|
3559
|
+
addColumnIfMissing(database, 'calendar_events', 'last_reminded_occurrence', 'INTEGER');
|
|
3560
|
+
database.exec(TEAM_COLLABORATION_TABLES_SQL);
|
|
3561
|
+
const missing = collectMissingTeamCollaborationSchema(database);
|
|
3562
|
+
if (missing.length > 0) {
|
|
3563
|
+
throw new Error(`SQLite team collaboration schema is incomplete; missing ${missing.join(', ')}`);
|
|
3564
|
+
}
|
|
3565
|
+
},
|
|
3566
|
+
},
|
|
3567
|
+
{
|
|
3568
|
+
version: 20,
|
|
3569
|
+
name: 'media-enterprise-ops',
|
|
3570
|
+
checksum: MEDIA_ENTERPRISE_OPS_MIGRATION_CHECKSUM,
|
|
3571
|
+
apply(database) {
|
|
3572
|
+
addColumnIfMissing(database, 'voice_profiles', 'consent_expires_at', 'INTEGER');
|
|
3573
|
+
addColumnIfMissing(database, 'voice_profiles', 'revoked_at', 'INTEGER');
|
|
3574
|
+
addColumnIfMissing(database, 'voice_profiles', 'transfer_count', 'INTEGER NOT NULL DEFAULT 0');
|
|
3575
|
+
addColumnIfMissing(database, 'voice_profiles', 'last_transfer_at', 'INTEGER');
|
|
3576
|
+
database.exec(MEDIA_ENTERPRISE_OPS_TABLES_SQL);
|
|
3577
|
+
const missing = collectMissingMediaEnterpriseOpsSchema(database);
|
|
3578
|
+
if (missing.length > 0) {
|
|
3579
|
+
throw new Error(`SQLite media enterprise ops schema is incomplete; missing ${missing.join(', ')}`);
|
|
3580
|
+
}
|
|
3581
|
+
},
|
|
3582
|
+
},
|
|
3583
|
+
{
|
|
3584
|
+
version: 21,
|
|
3585
|
+
name: 'mfa-push-recovery',
|
|
3586
|
+
checksum: MFA_PUSH_RECOVERY_MIGRATION_CHECKSUM,
|
|
3587
|
+
apply(database) {
|
|
3588
|
+
database.exec(MFA_PUSH_RECOVERY_TABLES_SQL);
|
|
3589
|
+
const missing = collectMissingMfaPushRecoverySchema(database);
|
|
3590
|
+
if (missing.length > 0) {
|
|
3591
|
+
throw new Error(`SQLite mfa/push/recovery schema is incomplete; missing ${missing.join(', ')}`);
|
|
3592
|
+
}
|
|
3593
|
+
},
|
|
3594
|
+
},
|
|
2234
3595
|
];
|
|
2235
3596
|
/**
|
|
2236
3597
|
* Whether a pending migration needs foreign-key enforcement suspended before
|