libre-webui 0.21.3 → 0.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +308 -328
- package/backend/dist/cli/migrateSqliteToPostgres.d.ts +2 -0
- package/backend/dist/cli/migrateSqliteToPostgres.d.ts.map +1 -0
- package/backend/dist/cli/migrateSqliteToPostgres.js +113 -0
- package/backend/dist/cli/migrateSqliteToPostgres.js.map +1 -0
- package/backend/dist/cli/recoveryBackup.d.ts +3 -0
- package/backend/dist/cli/recoveryBackup.d.ts.map +1 -0
- package/backend/dist/cli/recoveryBackup.js +251 -0
- package/backend/dist/cli/recoveryBackup.js.map +1 -0
- package/backend/dist/cli/recoveryInventory.d.ts +2 -0
- package/backend/dist/cli/recoveryInventory.d.ts.map +1 -0
- package/backend/dist/cli/recoveryInventory.js +109 -0
- package/backend/dist/cli/recoveryInventory.js.map +1 -0
- package/backend/dist/db.d.ts +27 -0
- package/backend/dist/db.d.ts.map +1 -1
- package/backend/dist/db.js +333 -16
- package/backend/dist/db.js.map +1 -1
- package/backend/dist/env.d.ts.map +1 -1
- package/backend/dist/env.js +12 -2
- package/backend/dist/env.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +235 -47
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/main.d.ts +2 -0
- package/backend/dist/main.d.ts.map +1 -0
- package/backend/dist/main.js +137 -0
- package/backend/dist/main.js.map +1 -0
- package/backend/dist/middleware/auth.d.ts.map +1 -1
- package/backend/dist/middleware/auth.js +7 -3
- package/backend/dist/middleware/auth.js.map +1 -1
- package/backend/dist/middleware/chatCancellationAdmission.d.ts +7 -0
- package/backend/dist/middleware/chatCancellationAdmission.d.ts.map +1 -0
- package/backend/dist/middleware/chatCancellationAdmission.js +17 -0
- package/backend/dist/middleware/chatCancellationAdmission.js.map +1 -0
- package/backend/dist/middleware/coordinatedRateLimit.d.ts +18 -0
- package/backend/dist/middleware/coordinatedRateLimit.d.ts.map +1 -0
- package/backend/dist/middleware/coordinatedRateLimit.js +52 -0
- package/backend/dist/middleware/coordinatedRateLimit.js.map +1 -0
- package/backend/dist/middleware/sharedRateLimit.d.ts +26 -0
- package/backend/dist/middleware/sharedRateLimit.d.ts.map +1 -0
- package/backend/dist/middleware/sharedRateLimit.js +99 -0
- package/backend/dist/middleware/sharedRateLimit.js.map +1 -0
- package/backend/dist/models/personaModel.d.ts +1 -26
- package/backend/dist/models/personaModel.d.ts.map +1 -1
- package/backend/dist/models/personaModel.js +54 -247
- package/backend/dist/models/personaModel.js.map +1 -1
- package/backend/dist/models/userModel.d.ts +23 -66
- package/backend/dist/models/userModel.d.ts.map +1 -1
- package/backend/dist/models/userModel.js +110 -187
- package/backend/dist/models/userModel.js.map +1 -1
- package/backend/dist/persistence/chatGenerationTypes.d.ts +24 -0
- package/backend/dist/persistence/chatGenerationTypes.d.ts.map +1 -0
- package/backend/dist/persistence/chatGenerationTypes.js +7 -0
- package/backend/dist/persistence/chatGenerationTypes.js.map +1 -0
- package/backend/dist/persistence/extensionTypes.d.ts +185 -0
- package/backend/dist/persistence/extensionTypes.d.ts.map +1 -0
- package/backend/dist/persistence/extensionTypes.js +13 -0
- package/backend/dist/persistence/extensionTypes.js.map +1 -0
- package/backend/dist/persistence/identityDeletionTypes.d.ts +16 -0
- package/backend/dist/persistence/identityDeletionTypes.d.ts.map +1 -0
- package/backend/dist/persistence/identityDeletionTypes.js +7 -0
- package/backend/dist/persistence/identityDeletionTypes.js.map +1 -0
- package/backend/dist/persistence/index.d.ts +48 -0
- package/backend/dist/persistence/index.d.ts.map +1 -0
- package/backend/dist/persistence/index.js +159 -0
- package/backend/dist/persistence/index.js.map +1 -0
- package/backend/dist/persistence/postgresConfig.d.ts +32 -0
- package/backend/dist/persistence/postgresConfig.d.ts.map +1 -0
- package/backend/dist/persistence/postgresConfig.js +91 -0
- package/backend/dist/persistence/postgresConfig.js.map +1 -0
- package/backend/dist/persistence/postgresCoreMigration.d.ts +8 -0
- package/backend/dist/persistence/postgresCoreMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresCoreMigration.js +179 -0
- package/backend/dist/persistence/postgresCoreMigration.js.map +1 -0
- package/backend/dist/persistence/postgresDatabase.d.ts +40 -0
- package/backend/dist/persistence/postgresDatabase.d.ts.map +1 -0
- package/backend/dist/persistence/postgresDatabase.js +148 -0
- package/backend/dist/persistence/postgresDatabase.js.map +1 -0
- package/backend/dist/persistence/postgresExtensionMigration.d.ts +4 -0
- package/backend/dist/persistence/postgresExtensionMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresExtensionMigration.js +143 -0
- package/backend/dist/persistence/postgresExtensionMigration.js.map +1 -0
- package/backend/dist/persistence/postgresExtensionRepositories.d.ts +6 -0
- package/backend/dist/persistence/postgresExtensionRepositories.d.ts.map +1 -0
- package/backend/dist/persistence/postgresExtensionRepositories.js +550 -0
- package/backend/dist/persistence/postgresExtensionRepositories.js.map +1 -0
- package/backend/dist/persistence/postgresImportState.d.ts +9 -0
- package/backend/dist/persistence/postgresImportState.d.ts.map +1 -0
- package/backend/dist/persistence/postgresImportState.js +64 -0
- package/backend/dist/persistence/postgresImportState.js.map +1 -0
- package/backend/dist/persistence/postgresMigrationRegistry.d.ts +4 -0
- package/backend/dist/persistence/postgresMigrationRegistry.d.ts.map +1 -0
- package/backend/dist/persistence/postgresMigrationRegistry.js +33 -0
- package/backend/dist/persistence/postgresMigrationRegistry.js.map +1 -0
- package/backend/dist/persistence/postgresMigrationTypes.d.ts +24 -0
- package/backend/dist/persistence/postgresMigrationTypes.d.ts.map +1 -0
- package/backend/dist/persistence/postgresMigrationTypes.js +7 -0
- package/backend/dist/persistence/postgresMigrationTypes.js.map +1 -0
- package/backend/dist/persistence/postgresMigrations.d.ts +15 -0
- package/backend/dist/persistence/postgresMigrations.d.ts.map +1 -0
- package/backend/dist/persistence/postgresMigrations.js +333 -0
- package/backend/dist/persistence/postgresMigrations.js.map +1 -0
- package/backend/dist/persistence/postgresPersistence.d.ts +17 -0
- package/backend/dist/persistence/postgresPersistence.d.ts.map +1 -0
- package/backend/dist/persistence/postgresPersistence.js +332 -0
- package/backend/dist/persistence/postgresPersistence.js.map +1 -0
- package/backend/dist/persistence/postgresPluginDefinitionMigration.d.ts +4 -0
- package/backend/dist/persistence/postgresPluginDefinitionMigration.d.ts.map +1 -0
- package/backend/dist/persistence/postgresPluginDefinitionMigration.js +40 -0
- package/backend/dist/persistence/postgresPluginDefinitionMigration.js.map +1 -0
- package/backend/dist/persistence/postgresResourceRepositories.d.ts +7 -0
- package/backend/dist/persistence/postgresResourceRepositories.d.ts.map +1 -0
- package/backend/dist/persistence/postgresResourceRepositories.js +776 -0
- package/backend/dist/persistence/postgresResourceRepositories.js.map +1 -0
- package/backend/dist/persistence/postgresSchemaInspector.d.ts +14 -0
- package/backend/dist/persistence/postgresSchemaInspector.d.ts.map +1 -0
- package/backend/dist/persistence/postgresSchemaInspector.js +817 -0
- package/backend/dist/persistence/postgresSchemaInspector.js.map +1 -0
- package/backend/dist/persistence/resourceTypes.d.ts +207 -0
- package/backend/dist/persistence/resourceTypes.d.ts.map +1 -0
- package/backend/dist/persistence/resourceTypes.js +38 -0
- package/backend/dist/persistence/resourceTypes.js.map +1 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.d.ts +4 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.js +494 -0
- package/backend/dist/persistence/sqliteExtensionRepositories.js.map +1 -0
- package/backend/dist/persistence/sqliteMigrations.d.ts +93 -0
- package/backend/dist/persistence/sqliteMigrations.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteMigrations.js +2232 -0
- package/backend/dist/persistence/sqliteMigrations.js.map +1 -0
- package/backend/dist/persistence/sqlitePersistence.d.ts +23 -0
- package/backend/dist/persistence/sqlitePersistence.d.ts.map +1 -0
- package/backend/dist/persistence/sqlitePersistence.js +596 -0
- package/backend/dist/persistence/sqlitePersistence.js.map +1 -0
- package/backend/dist/persistence/sqliteResourceRepositories.d.ts +4 -0
- package/backend/dist/persistence/sqliteResourceRepositories.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteResourceRepositories.js +663 -0
- package/backend/dist/persistence/sqliteResourceRepositories.js.map +1 -0
- package/backend/dist/persistence/sqliteSyncExecutor.d.ts +5 -0
- package/backend/dist/persistence/sqliteSyncExecutor.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteSyncExecutor.js +19 -0
- package/backend/dist/persistence/sqliteSyncExecutor.js.map +1 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.d.ts +80 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.d.ts.map +1 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.js +1543 -0
- package/backend/dist/persistence/sqliteToPostgresMigration.js.map +1 -0
- package/backend/dist/persistence/types.d.ts +131 -0
- package/backend/dist/persistence/types.d.ts.map +1 -0
- package/backend/dist/persistence/types.js +18 -0
- package/backend/dist/persistence/types.js.map +1 -0
- package/backend/dist/persistence/voiceProfileNameLookup.d.ts +9 -0
- package/backend/dist/persistence/voiceProfileNameLookup.d.ts.map +1 -0
- package/backend/dist/persistence/voiceProfileNameLookup.js +15 -0
- package/backend/dist/persistence/voiceProfileNameLookup.js.map +1 -0
- package/backend/dist/platform/coordination/index.d.ts +7 -0
- package/backend/dist/platform/coordination/index.d.ts.map +1 -0
- package/backend/dist/platform/coordination/index.js +24 -0
- package/backend/dist/platform/coordination/index.js.map +1 -0
- package/backend/dist/platform/coordination/localCoordinator.d.ts +49 -0
- package/backend/dist/platform/coordination/localCoordinator.d.ts.map +1 -0
- package/backend/dist/platform/coordination/localCoordinator.js +380 -0
- package/backend/dist/platform/coordination/localCoordinator.js.map +1 -0
- package/backend/dist/platform/coordination/redisCoordinator.d.ts +83 -0
- package/backend/dist/platform/coordination/redisCoordinator.d.ts.map +1 -0
- package/backend/dist/platform/coordination/redisCoordinator.js +726 -0
- package/backend/dist/platform/coordination/redisCoordinator.js.map +1 -0
- package/backend/dist/platform/coordination/service.d.ts +11 -0
- package/backend/dist/platform/coordination/service.d.ts.map +1 -0
- package/backend/dist/platform/coordination/service.js +55 -0
- package/backend/dist/platform/coordination/service.js.map +1 -0
- package/backend/dist/platform/coordination/sharedAdmission.d.ts +53 -0
- package/backend/dist/platform/coordination/sharedAdmission.d.ts.map +1 -0
- package/backend/dist/platform/coordination/sharedAdmission.js +194 -0
- package/backend/dist/platform/coordination/sharedAdmission.js.map +1 -0
- package/backend/dist/platform/coordination/types.d.ts +76 -0
- package/backend/dist/platform/coordination/types.d.ts.map +1 -0
- package/backend/dist/platform/coordination/types.js +32 -0
- package/backend/dist/platform/coordination/types.js.map +1 -0
- package/backend/dist/platform/events/durableEventGateway.d.ts +54 -0
- package/backend/dist/platform/events/durableEventGateway.d.ts.map +1 -0
- package/backend/dist/platform/events/durableEventGateway.js +262 -0
- package/backend/dist/platform/events/durableEventGateway.js.map +1 -0
- package/backend/dist/platform/events/index.d.ts +3 -0
- package/backend/dist/platform/events/index.d.ts.map +1 -0
- package/backend/dist/platform/events/index.js +8 -0
- package/backend/dist/platform/events/index.js.map +1 -0
- package/backend/dist/platform/events/service.d.ts +8 -0
- package/backend/dist/platform/events/service.d.ts.map +1 -0
- package/backend/dist/platform/events/service.js +25 -0
- package/backend/dist/platform/events/service.js.map +1 -0
- package/backend/dist/platform/jobs/chatGenerationEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/chatGenerationEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/chatGenerationEnqueuer.js +55 -0
- package/backend/dist/platform/jobs/chatGenerationEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/documentIngestionEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/documentIngestionEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/documentIngestionEnqueuer.js +38 -0
- package/backend/dist/platform/jobs/documentIngestionEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/domainJobContracts.d.ts +30 -0
- package/backend/dist/platform/jobs/domainJobContracts.d.ts.map +1 -0
- package/backend/dist/platform/jobs/domainJobContracts.js +53 -0
- package/backend/dist/platform/jobs/domainJobContracts.js.map +1 -0
- package/backend/dist/platform/jobs/domainJobHandlers.d.ts +11 -0
- package/backend/dist/platform/jobs/domainJobHandlers.d.ts.map +1 -0
- package/backend/dist/platform/jobs/domainJobHandlers.js +617 -0
- package/backend/dist/platform/jobs/domainJobHandlers.js.map +1 -0
- package/backend/dist/platform/jobs/durableEventIdentity.d.ts +8 -0
- package/backend/dist/platform/jobs/durableEventIdentity.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableEventIdentity.js +33 -0
- package/backend/dist/platform/jobs/durableEventIdentity.js.map +1 -0
- package/backend/dist/platform/jobs/durableJobRuntime.d.ts +57 -0
- package/backend/dist/platform/jobs/durableJobRuntime.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableJobRuntime.js +131 -0
- package/backend/dist/platform/jobs/durableJobRuntime.js.map +1 -0
- package/backend/dist/platform/jobs/durableJobRuntimeBackend.d.ts +28 -0
- package/backend/dist/platform/jobs/durableJobRuntimeBackend.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableJobRuntimeBackend.js +62 -0
- package/backend/dist/platform/jobs/durableJobRuntimeBackend.js.map +1 -0
- package/backend/dist/platform/jobs/durableJobService.d.ts +85 -0
- package/backend/dist/platform/jobs/durableJobService.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableJobService.js +726 -0
- package/backend/dist/platform/jobs/durableJobService.js.map +1 -0
- package/backend/dist/platform/jobs/durableJobTypes.d.ts +195 -0
- package/backend/dist/platform/jobs/durableJobTypes.d.ts.map +1 -0
- package/backend/dist/platform/jobs/durableJobTypes.js +72 -0
- package/backend/dist/platform/jobs/durableJobTypes.js.map +1 -0
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.d.ts +87 -0
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.d.ts.map +1 -0
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.js +429 -0
- package/backend/dist/platform/jobs/embeddedDurableJobWorker.js.map +1 -0
- package/backend/dist/platform/jobs/identityDeletionEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/identityDeletionEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/identityDeletionEnqueuer.js +36 -0
- package/backend/dist/platform/jobs/identityDeletionEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/index.d.ts +18 -0
- package/backend/dist/platform/jobs/index.d.ts.map +1 -0
- package/backend/dist/platform/jobs/index.js +34 -0
- package/backend/dist/platform/jobs/index.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.d.ts +4 -0
- package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.js +25 -0
- package/backend/dist/platform/jobs/postgresDurableEventIdempotencyMigration.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.d.ts +4 -0
- package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.js +23 -0
- package/backend/dist/platform/jobs/postgresDurableEventReplayIndexMigration.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobMigration.d.ts +11 -0
- package/backend/dist/platform/jobs/postgresDurableJobMigration.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobMigration.js +106 -0
- package/backend/dist/platform/jobs/postgresDurableJobMigration.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobRepository.d.ts +88 -0
- package/backend/dist/platform/jobs/postgresDurableJobRepository.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobRepository.js +1185 -0
- package/backend/dist/platform/jobs/postgresDurableJobRepository.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobService.d.ts +86 -0
- package/backend/dist/platform/jobs/postgresDurableJobService.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobService.js +696 -0
- package/backend/dist/platform/jobs/postgresDurableJobService.js.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobWorker.d.ts +53 -0
- package/backend/dist/platform/jobs/postgresDurableJobWorker.d.ts.map +1 -0
- package/backend/dist/platform/jobs/postgresDurableJobWorker.js +393 -0
- package/backend/dist/platform/jobs/postgresDurableJobWorker.js.map +1 -0
- package/backend/dist/platform/jobs/resourceDeletionEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/resourceDeletionEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/resourceDeletionEnqueuer.js +43 -0
- package/backend/dist/platform/jobs/resourceDeletionEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/sqliteDurableJobRepository.d.ts +166 -0
- package/backend/dist/platform/jobs/sqliteDurableJobRepository.d.ts.map +1 -0
- package/backend/dist/platform/jobs/sqliteDurableJobRepository.js +1008 -0
- package/backend/dist/platform/jobs/sqliteDurableJobRepository.js.map +1 -0
- package/backend/dist/platform/jobs/videoGenerationEnqueuer.d.ts +4 -0
- package/backend/dist/platform/jobs/videoGenerationEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/videoGenerationEnqueuer.js +46 -0
- package/backend/dist/platform/jobs/videoGenerationEnqueuer.js.map +1 -0
- package/backend/dist/platform/jobs/workExecutionEnqueuer.d.ts +3 -0
- package/backend/dist/platform/jobs/workExecutionEnqueuer.d.ts.map +1 -0
- package/backend/dist/platform/jobs/workExecutionEnqueuer.js +38 -0
- package/backend/dist/platform/jobs/workExecutionEnqueuer.js.map +1 -0
- package/backend/dist/platform/ollamaRuntimeConfig.d.ts +40 -0
- package/backend/dist/platform/ollamaRuntimeConfig.d.ts.map +1 -0
- package/backend/dist/platform/ollamaRuntimeConfig.js +72 -0
- package/backend/dist/platform/ollamaRuntimeConfig.js.map +1 -0
- package/backend/dist/platform/recovery/backupArchive.d.ts +120 -0
- package/backend/dist/platform/recovery/backupArchive.d.ts.map +1 -0
- package/backend/dist/platform/recovery/backupArchive.js +842 -0
- package/backend/dist/platform/recovery/backupArchive.js.map +1 -0
- package/backend/dist/platform/recovery/index.d.ts +3 -0
- package/backend/dist/platform/recovery/index.d.ts.map +1 -0
- package/backend/dist/platform/recovery/index.js +8 -0
- package/backend/dist/platform/recovery/index.js.map +1 -0
- package/backend/dist/platform/recovery/teamBackupArchive.d.ts +98 -0
- package/backend/dist/platform/recovery/teamBackupArchive.d.ts.map +1 -0
- package/backend/dist/platform/recovery/teamBackupArchive.js +1203 -0
- package/backend/dist/platform/recovery/teamBackupArchive.js.map +1 -0
- package/backend/dist/platform/runtimeConfig.d.ts +70 -0
- package/backend/dist/platform/runtimeConfig.d.ts.map +1 -0
- package/backend/dist/platform/runtimeConfig.js +205 -0
- package/backend/dist/platform/runtimeConfig.js.map +1 -0
- package/backend/dist/platform/storage/aesGcmKeyring.d.ts +26 -0
- package/backend/dist/platform/storage/aesGcmKeyring.d.ts.map +1 -0
- package/backend/dist/platform/storage/aesGcmKeyring.js +135 -0
- package/backend/dist/platform/storage/aesGcmKeyring.js.map +1 -0
- package/backend/dist/platform/storage/blobReferenceRepository.d.ts +36 -0
- package/backend/dist/platform/storage/blobReferenceRepository.d.ts.map +1 -0
- package/backend/dist/platform/storage/blobReferenceRepository.js +117 -0
- package/backend/dist/platform/storage/blobReferenceRepository.js.map +1 -0
- package/backend/dist/platform/storage/blobStore.d.ts +111 -0
- package/backend/dist/platform/storage/blobStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/blobStore.js +46 -0
- package/backend/dist/platform/storage/blobStore.js.map +1 -0
- package/backend/dist/platform/storage/documentVectorIndex.d.ts +44 -0
- package/backend/dist/platform/storage/documentVectorIndex.d.ts.map +1 -0
- package/backend/dist/platform/storage/documentVectorIndex.js +110 -0
- package/backend/dist/platform/storage/documentVectorIndex.js.map +1 -0
- package/backend/dist/platform/storage/durableBlobQuotaPolicy.d.ts +82 -0
- package/backend/dist/platform/storage/durableBlobQuotaPolicy.d.ts.map +1 -0
- package/backend/dist/platform/storage/durableBlobQuotaPolicy.js +583 -0
- package/backend/dist/platform/storage/durableBlobQuotaPolicy.js.map +1 -0
- package/backend/dist/platform/storage/index.d.ts +19 -0
- package/backend/dist/platform/storage/index.d.ts.map +1 -0
- package/backend/dist/platform/storage/index.js +35 -0
- package/backend/dist/platform/storage/index.js.map +1 -0
- package/backend/dist/platform/storage/localEncryptedBlobStore.d.ts +120 -0
- package/backend/dist/platform/storage/localEncryptedBlobStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/localEncryptedBlobStore.js +1205 -0
- package/backend/dist/platform/storage/localEncryptedBlobStore.js.map +1 -0
- package/backend/dist/platform/storage/personaMemoryIndexing.d.ts +12 -0
- package/backend/dist/platform/storage/personaMemoryIndexing.d.ts.map +1 -0
- package/backend/dist/platform/storage/personaMemoryIndexing.js +25 -0
- package/backend/dist/platform/storage/personaMemoryIndexing.js.map +1 -0
- package/backend/dist/platform/storage/pgVectorStore.d.ts +37 -0
- package/backend/dist/platform/storage/pgVectorStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/pgVectorStore.js +493 -0
- package/backend/dist/platform/storage/pgVectorStore.js.map +1 -0
- package/backend/dist/platform/storage/platformDomainRepositories.d.ts +244 -0
- package/backend/dist/platform/storage/platformDomainRepositories.d.ts.map +1 -0
- package/backend/dist/platform/storage/platformDomainRepositories.js +7 -0
- package/backend/dist/platform/storage/platformDomainRepositories.js.map +1 -0
- package/backend/dist/platform/storage/platformStorageRuntime.d.ts +35 -0
- package/backend/dist/platform/storage/platformStorageRuntime.d.ts.map +1 -0
- package/backend/dist/platform/storage/platformStorageRuntime.js +299 -0
- package/backend/dist/platform/storage/platformStorageRuntime.js.map +1 -0
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.d.ts +4 -0
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.d.ts.map +1 -0
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js +1017 -0
- package/backend/dist/platform/storage/postgresPlatformDomainRepositories.js.map +1 -0
- package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.d.ts +4 -0
- package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.d.ts.map +1 -0
- package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.js +40 -0
- package/backend/dist/platform/storage/postgresResourceDeletionLifecycleMigration.js.map +1 -0
- package/backend/dist/platform/storage/resourceContentCleanup.d.ts +29 -0
- package/backend/dist/platform/storage/resourceContentCleanup.d.ts.map +1 -0
- package/backend/dist/platform/storage/resourceContentCleanup.js +100 -0
- package/backend/dist/platform/storage/resourceContentCleanup.js.map +1 -0
- package/backend/dist/platform/storage/resourceDeletionLifecycle.d.ts +14 -0
- package/backend/dist/platform/storage/resourceDeletionLifecycle.d.ts.map +1 -0
- package/backend/dist/platform/storage/resourceDeletionLifecycle.js +31 -0
- package/backend/dist/platform/storage/resourceDeletionLifecycle.js.map +1 -0
- package/backend/dist/platform/storage/s3EncryptedBlobStore.d.ts +140 -0
- package/backend/dist/platform/storage/s3EncryptedBlobStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/s3EncryptedBlobStore.js +1309 -0
- package/backend/dist/platform/storage/s3EncryptedBlobStore.js.map +1 -0
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts +71 -0
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js +766 -0
- package/backend/dist/platform/storage/sqliteEncryptedVectorStore.js.map +1 -0
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.d.ts +4 -0
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.d.ts.map +1 -0
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js +1037 -0
- package/backend/dist/platform/storage/sqlitePlatformDomainRepositories.js.map +1 -0
- package/backend/dist/platform/storage/sqliteToTeamStorageMigration.d.ts +25 -0
- package/backend/dist/platform/storage/sqliteToTeamStorageMigration.d.ts.map +1 -0
- package/backend/dist/platform/storage/sqliteToTeamStorageMigration.js +1292 -0
- package/backend/dist/platform/storage/sqliteToTeamStorageMigration.js.map +1 -0
- package/backend/dist/platform/storage/storageFactory.d.ts +83 -0
- package/backend/dist/platform/storage/storageFactory.d.ts.map +1 -0
- package/backend/dist/platform/storage/storageFactory.js +530 -0
- package/backend/dist/platform/storage/storageFactory.js.map +1 -0
- package/backend/dist/platform/storage/storageSchemaContracts.d.ts +22 -0
- package/backend/dist/platform/storage/storageSchemaContracts.d.ts.map +1 -0
- package/backend/dist/platform/storage/storageSchemaContracts.js +299 -0
- package/backend/dist/platform/storage/storageSchemaContracts.js.map +1 -0
- package/backend/dist/platform/storage/vectorStore.d.ts +117 -0
- package/backend/dist/platform/storage/vectorStore.d.ts.map +1 -0
- package/backend/dist/platform/storage/vectorStore.js +40 -0
- package/backend/dist/platform/storage/vectorStore.js.map +1 -0
- package/backend/dist/platform/workPersistence/index.d.ts +9 -0
- package/backend/dist/platform/workPersistence/index.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/index.js +14 -0
- package/backend/dist/platform/workPersistence/index.js.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.d.ts +9 -0
- package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.js +47 -0
- package/backend/dist/platform/workPersistence/postgresWorkLifecycleMigration.js.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.d.ts +3 -0
- package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.js +28 -0
- package/backend/dist/platform/workPersistence/postgresWorkMessageContentMigration.js.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkMigration.d.ts +3 -0
- package/backend/dist/platform/workPersistence/postgresWorkMigration.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkMigration.js +101 -0
- package/backend/dist/platform/workPersistence/postgresWorkMigration.js.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts +79 -0
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.js +521 -0
- package/backend/dist/platform/workPersistence/postgresWorkPersistence.js.map +1 -0
- package/backend/dist/platform/workPersistence/service.d.ts +6 -0
- package/backend/dist/platform/workPersistence/service.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/service.js +27 -0
- package/backend/dist/platform/workPersistence/service.js.map +1 -0
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts +77 -0
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js +463 -0
- package/backend/dist/platform/workPersistence/sqliteWorkPersistence.js.map +1 -0
- package/backend/dist/platform/workPersistence/types.d.ts +159 -0
- package/backend/dist/platform/workPersistence/types.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/types.js +13 -0
- package/backend/dist/platform/workPersistence/types.js.map +1 -0
- package/backend/dist/platform/workPersistence/workExecutionTypes.d.ts +13 -0
- package/backend/dist/platform/workPersistence/workExecutionTypes.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/workExecutionTypes.js +7 -0
- package/backend/dist/platform/workPersistence/workExecutionTypes.js.map +1 -0
- package/backend/dist/platform/workPersistence/workMessageContentCodec.d.ts +8 -0
- package/backend/dist/platform/workPersistence/workMessageContentCodec.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/workMessageContentCodec.js +25 -0
- package/backend/dist/platform/workPersistence/workMessageContentCodec.js.map +1 -0
- package/backend/dist/platform/workPersistence/workTextSafety.d.ts +3 -0
- package/backend/dist/platform/workPersistence/workTextSafety.d.ts.map +1 -0
- package/backend/dist/platform/workPersistence/workTextSafety.js +8 -0
- package/backend/dist/platform/workPersistence/workTextSafety.js.map +1 -0
- package/backend/dist/routes/agentCli.js +1 -1
- package/backend/dist/routes/agentCli.js.map +1 -1
- package/backend/dist/routes/artifacts.d.ts.map +1 -1
- package/backend/dist/routes/artifacts.js +2 -1
- package/backend/dist/routes/artifacts.js.map +1 -1
- package/backend/dist/routes/auth.d.ts.map +1 -1
- package/backend/dist/routes/auth.js +64 -18
- package/backend/dist/routes/auth.js.map +1 -1
- package/backend/dist/routes/chat.d.ts.map +1 -1
- package/backend/dist/routes/chat.js +519 -85
- package/backend/dist/routes/chat.js.map +1 -1
- package/backend/dist/routes/documents.d.ts.map +1 -1
- package/backend/dist/routes/documents.js +134 -28
- package/backend/dist/routes/documents.js.map +1 -1
- package/backend/dist/routes/embeddings.d.ts.map +1 -1
- package/backend/dist/routes/embeddings.js +2 -1
- package/backend/dist/routes/embeddings.js.map +1 -1
- package/backend/dist/routes/health.d.ts +3 -0
- package/backend/dist/routes/health.d.ts.map +1 -0
- package/backend/dist/routes/health.js +52 -0
- package/backend/dist/routes/health.js.map +1 -0
- package/backend/dist/routes/huggingfaceHub.d.ts.map +1 -1
- package/backend/dist/routes/huggingfaceHub.js +2 -1
- package/backend/dist/routes/huggingfaceHub.js.map +1 -1
- package/backend/dist/routes/imageGen.d.ts.map +1 -1
- package/backend/dist/routes/imageGen.js +42 -10
- package/backend/dist/routes/imageGen.js.map +1 -1
- package/backend/dist/routes/jobs.d.ts +3 -0
- package/backend/dist/routes/jobs.d.ts.map +1 -0
- package/backend/dist/routes/jobs.js +126 -0
- package/backend/dist/routes/jobs.js.map +1 -0
- package/backend/dist/routes/libreClaw.d.ts.map +1 -1
- package/backend/dist/routes/libreClaw.js +10 -7
- package/backend/dist/routes/libreClaw.js.map +1 -1
- package/backend/dist/routes/media.d.ts.map +1 -1
- package/backend/dist/routes/media.js +523 -77
- 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 +21 -21
- package/backend/dist/routes/notes.js.map +1 -1
- package/backend/dist/routes/ollama.d.ts.map +1 -1
- package/backend/dist/routes/ollama.js +40 -12
- package/backend/dist/routes/ollama.js.map +1 -1
- package/backend/dist/routes/personas.d.ts.map +1 -1
- package/backend/dist/routes/personas.js +4 -2
- package/backend/dist/routes/personas.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +79 -51
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/routes/preferences.d.ts.map +1 -1
- package/backend/dist/routes/preferences.js +290 -25
- package/backend/dist/routes/preferences.js.map +1 -1
- package/backend/dist/routes/search.d.ts.map +1 -1
- package/backend/dist/routes/search.js +23 -14
- package/backend/dist/routes/search.js.map +1 -1
- package/backend/dist/routes/stt.d.ts +9 -0
- package/backend/dist/routes/stt.d.ts.map +1 -0
- package/backend/dist/routes/stt.js +217 -0
- package/backend/dist/routes/stt.js.map +1 -0
- package/backend/dist/routes/systemDiagnostics.d.ts.map +1 -1
- package/backend/dist/routes/systemDiagnostics.js +2 -1
- package/backend/dist/routes/systemDiagnostics.js.map +1 -1
- package/backend/dist/routes/tts.d.ts.map +1 -1
- package/backend/dist/routes/tts.js +577 -28
- 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 +16 -25
- package/backend/dist/routes/users.js.map +1 -1
- package/backend/dist/routes/work.d.ts.map +1 -1
- package/backend/dist/routes/work.js +167 -113
- package/backend/dist/routes/work.js.map +1 -1
- package/backend/dist/services/agentAccessService.d.ts +2 -2
- package/backend/dist/services/agentAccessService.d.ts.map +1 -1
- package/backend/dist/services/agentAccessService.js +5 -14
- package/backend/dist/services/agentAccessService.js.map +1 -1
- package/backend/dist/services/agentCliService.d.ts +3 -2
- package/backend/dist/services/agentCliService.d.ts.map +1 -1
- package/backend/dist/services/agentCliService.js +44 -16
- package/backend/dist/services/agentCliService.js.map +1 -1
- package/backend/dist/services/assistantCompletionService.d.ts +2 -1
- package/backend/dist/services/assistantCompletionService.d.ts.map +1 -1
- package/backend/dist/services/assistantCompletionService.js +7 -3
- package/backend/dist/services/assistantCompletionService.js.map +1 -1
- package/backend/dist/services/authService.d.ts +7 -2
- package/backend/dist/services/authService.d.ts.map +1 -1
- package/backend/dist/services/authService.js +23 -10
- package/backend/dist/services/authService.js.map +1 -1
- package/backend/dist/services/chatGenerationService.d.ts +5 -4
- package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
- package/backend/dist/services/chatGenerationService.js +23 -17
- package/backend/dist/services/chatGenerationService.js.map +1 -1
- package/backend/dist/services/chatRequestService.d.ts +4 -3
- package/backend/dist/services/chatRequestService.d.ts.map +1 -1
- package/backend/dist/services/chatRequestService.js +3 -3
- package/backend/dist/services/chatRequestService.js.map +1 -1
- package/backend/dist/services/chatService.d.ts +66 -16
- package/backend/dist/services/chatService.d.ts.map +1 -1
- package/backend/dist/services/chatService.js +402 -111
- package/backend/dist/services/chatService.js.map +1 -1
- package/backend/dist/services/codexOAuthService.d.ts +2 -2
- package/backend/dist/services/codexOAuthService.d.ts.map +1 -1
- package/backend/dist/services/codexOAuthService.js +63 -7
- package/backend/dist/services/codexOAuthService.js.map +1 -1
- package/backend/dist/services/dataArchiveService.d.ts +88 -0
- package/backend/dist/services/dataArchiveService.d.ts.map +1 -0
- package/backend/dist/services/dataArchiveService.js +1027 -0
- package/backend/dist/services/dataArchiveService.js.map +1 -0
- package/backend/dist/services/documentService.d.ts +67 -14
- package/backend/dist/services/documentService.d.ts.map +1 -1
- package/backend/dist/services/documentService.js +938 -193
- package/backend/dist/services/documentService.js.map +1 -1
- package/backend/dist/services/durableChatCompletion.d.ts +16 -0
- package/backend/dist/services/durableChatCompletion.d.ts.map +1 -0
- package/backend/dist/services/durableChatCompletion.js +34 -0
- package/backend/dist/services/durableChatCompletion.js.map +1 -0
- package/backend/dist/services/durableChatGenerationService.d.ts +19 -0
- package/backend/dist/services/durableChatGenerationService.d.ts.map +1 -0
- package/backend/dist/services/durableChatGenerationService.js +341 -0
- package/backend/dist/services/durableChatGenerationService.js.map +1 -0
- package/backend/dist/services/embeddingService.d.ts +1 -1
- package/backend/dist/services/embeddingService.d.ts.map +1 -1
- package/backend/dist/services/embeddingService.js +16 -13
- package/backend/dist/services/embeddingService.js.map +1 -1
- package/backend/dist/services/encryptionService.d.ts +28 -1
- package/backend/dist/services/encryptionService.d.ts.map +1 -1
- package/backend/dist/services/encryptionService.js +131 -51
- package/backend/dist/services/encryptionService.js.map +1 -1
- package/backend/dist/services/followUpService.d.ts +1 -1
- package/backend/dist/services/followUpService.d.ts.map +1 -1
- package/backend/dist/services/followUpService.js +1 -1
- package/backend/dist/services/followUpService.js.map +1 -1
- package/backend/dist/services/galleryService.d.ts +38 -37
- package/backend/dist/services/galleryService.d.ts.map +1 -1
- package/backend/dist/services/galleryService.js +356 -251
- package/backend/dist/services/galleryService.js.map +1 -1
- package/backend/dist/services/healthService.d.ts +65 -0
- package/backend/dist/services/healthService.d.ts.map +1 -0
- package/backend/dist/services/healthService.js +379 -0
- package/backend/dist/services/healthService.js.map +1 -0
- package/backend/dist/services/legacyCiphertextIntegrity.d.ts +40 -0
- package/backend/dist/services/legacyCiphertextIntegrity.d.ts.map +1 -0
- package/backend/dist/services/legacyCiphertextIntegrity.js +406 -0
- package/backend/dist/services/legacyCiphertextIntegrity.js.map +1 -0
- package/backend/dist/services/mediaGenerationJobService.d.ts +27 -5
- package/backend/dist/services/mediaGenerationJobService.d.ts.map +1 -1
- package/backend/dist/services/mediaGenerationJobService.js +185 -55
- package/backend/dist/services/mediaGenerationJobService.js.map +1 -1
- package/backend/dist/services/memoryService.d.ts +7 -83
- package/backend/dist/services/memoryService.d.ts.map +1 -1
- package/backend/dist/services/memoryService.js +428 -573
- package/backend/dist/services/memoryService.js.map +1 -1
- package/backend/dist/services/memoryUtils.d.ts.map +1 -1
- package/backend/dist/services/memoryUtils.js +8 -1
- package/backend/dist/services/memoryUtils.js.map +1 -1
- package/backend/dist/services/modelAccessService.d.ts +3 -3
- package/backend/dist/services/modelAccessService.d.ts.map +1 -1
- package/backend/dist/services/modelAccessService.js +8 -16
- package/backend/dist/services/modelAccessService.js.map +1 -1
- package/backend/dist/services/mutationEngineService.d.ts +0 -7
- package/backend/dist/services/mutationEngineService.d.ts.map +1 -1
- package/backend/dist/services/mutationEngineService.js +7 -78
- package/backend/dist/services/mutationEngineService.js.map +1 -1
- package/backend/dist/services/ollamaService.d.ts +4 -4
- package/backend/dist/services/ollamaService.d.ts.map +1 -1
- package/backend/dist/services/ollamaService.js +62 -31
- package/backend/dist/services/ollamaService.js.map +1 -1
- package/backend/dist/services/personaService.d.ts.map +1 -1
- package/backend/dist/services/personaService.js +19 -54
- package/backend/dist/services/personaService.js.map +1 -1
- package/backend/dist/services/pluginActivationService.d.ts +6 -5
- package/backend/dist/services/pluginActivationService.d.ts.map +1 -1
- package/backend/dist/services/pluginActivationService.js +36 -76
- package/backend/dist/services/pluginActivationService.js.map +1 -1
- package/backend/dist/services/pluginAudioGenerationService.d.ts +11 -6
- package/backend/dist/services/pluginAudioGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginAudioGenerationService.js +74 -16
- package/backend/dist/services/pluginAudioGenerationService.js.map +1 -1
- package/backend/dist/services/pluginCacheInvalidation.d.ts +38 -0
- package/backend/dist/services/pluginCacheInvalidation.d.ts.map +1 -0
- package/backend/dist/services/pluginCacheInvalidation.js +198 -0
- package/backend/dist/services/pluginCacheInvalidation.js.map +1 -0
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts +3 -3
- package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
- package/backend/dist/services/pluginCapabilityRegistryService.js +11 -7
- package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
- package/backend/dist/services/pluginCredentialsService.d.ts +9 -8
- package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
- package/backend/dist/services/pluginCredentialsService.js +48 -89
- package/backend/dist/services/pluginCredentialsService.js.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.d.ts +8 -7
- package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
- package/backend/dist/services/pluginEmbeddingService.js +13 -11
- package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.d.ts +10 -8
- package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginImageGenerationService.js +119 -14
- package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
- package/backend/dist/services/pluginSTTService.d.ts +47 -0
- package/backend/dist/services/pluginSTTService.d.ts.map +1 -0
- package/backend/dist/services/pluginSTTService.js +199 -0
- package/backend/dist/services/pluginSTTService.js.map +1 -0
- package/backend/dist/services/pluginService.d.ts +94 -40
- package/backend/dist/services/pluginService.d.ts.map +1 -1
- package/backend/dist/services/pluginService.js +833 -275
- package/backend/dist/services/pluginService.js.map +1 -1
- package/backend/dist/services/pluginTTSService.d.ts +26 -8
- package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
- package/backend/dist/services/pluginTTSService.js +277 -25
- package/backend/dist/services/pluginTTSService.js.map +1 -1
- package/backend/dist/services/pluginUsageService.d.ts +4 -4
- package/backend/dist/services/pluginUsageService.d.ts.map +1 -1
- package/backend/dist/services/pluginUsageService.js +44 -93
- package/backend/dist/services/pluginUsageService.js.map +1 -1
- package/backend/dist/services/pluginVariablesService.d.ts +14 -7
- package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
- package/backend/dist/services/pluginVariablesService.js +116 -81
- package/backend/dist/services/pluginVariablesService.js.map +1 -1
- package/backend/dist/services/pluginVideoGenerationService.d.ts +19 -8
- package/backend/dist/services/pluginVideoGenerationService.d.ts.map +1 -1
- package/backend/dist/services/pluginVideoGenerationService.js +116 -20
- package/backend/dist/services/pluginVideoGenerationService.js.map +1 -1
- package/backend/dist/services/preferencesService.d.ts +31 -21
- package/backend/dist/services/preferencesService.d.ts.map +1 -1
- package/backend/dist/services/preferencesService.js +104 -102
- package/backend/dist/services/preferencesService.js.map +1 -1
- package/backend/dist/services/recoveryInventoryService.d.ts +244 -0
- package/backend/dist/services/recoveryInventoryService.d.ts.map +1 -0
- package/backend/dist/services/recoveryInventoryService.js +1436 -0
- package/backend/dist/services/recoveryInventoryService.js.map +1 -0
- package/backend/dist/services/simpleGitHubOAuth.js +3 -3
- package/backend/dist/services/simpleGitHubOAuth.js.map +1 -1
- package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -1
- package/backend/dist/services/simpleHuggingFaceOAuth.js +3 -3
- package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -1
- package/backend/dist/services/systemDiagnosticsService.d.ts.map +1 -1
- package/backend/dist/services/systemDiagnosticsService.js +2 -2
- package/backend/dist/services/systemDiagnosticsService.js.map +1 -1
- package/backend/dist/services/systemSettingsService.d.ts +5 -0
- package/backend/dist/services/systemSettingsService.d.ts.map +1 -0
- package/backend/dist/services/systemSettingsService.js +24 -0
- package/backend/dist/services/systemSettingsService.js.map +1 -0
- package/backend/dist/services/titleGenerationService.d.ts +1 -1
- package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
- package/backend/dist/services/titleGenerationService.js +1 -1
- package/backend/dist/services/titleGenerationService.js.map +1 -1
- package/backend/dist/services/voiceProfileService.d.ts +44 -0
- package/backend/dist/services/voiceProfileService.d.ts.map +1 -0
- package/backend/dist/services/voiceProfileService.js +195 -0
- package/backend/dist/services/voiceProfileService.js.map +1 -0
- package/backend/dist/services/webSearchService.d.ts +7 -7
- package/backend/dist/services/webSearchService.d.ts.map +1 -1
- package/backend/dist/services/webSearchService.js +40 -35
- package/backend/dist/services/webSearchService.js.map +1 -1
- package/backend/dist/services/websocketTicketService.d.ts +39 -0
- package/backend/dist/services/websocketTicketService.d.ts.map +1 -0
- package/backend/dist/services/websocketTicketService.js +183 -0
- package/backend/dist/services/websocketTicketService.js.map +1 -0
- package/backend/dist/services/workAccessService.d.ts +3 -3
- package/backend/dist/services/workAccessService.d.ts.map +1 -1
- package/backend/dist/services/workAccessService.js +8 -16
- package/backend/dist/services/workAccessService.js.map +1 -1
- package/backend/dist/services/workAdminService.d.ts +3 -3
- package/backend/dist/services/workAdminService.d.ts.map +1 -1
- package/backend/dist/services/workAdminService.js +4 -4
- package/backend/dist/services/workAdminService.js.map +1 -1
- package/backend/dist/services/workAgentService.d.ts +25 -1
- package/backend/dist/services/workAgentService.d.ts.map +1 -1
- package/backend/dist/services/workAgentService.js +294 -126
- package/backend/dist/services/workAgentService.js.map +1 -1
- package/backend/dist/services/workEventService.d.ts +15 -2
- package/backend/dist/services/workEventService.d.ts.map +1 -1
- package/backend/dist/services/workEventService.js +201 -3
- package/backend/dist/services/workEventService.js.map +1 -1
- package/backend/dist/services/workKubernetesDriver.d.ts +8 -7
- package/backend/dist/services/workKubernetesDriver.d.ts.map +1 -1
- package/backend/dist/services/workKubernetesDriver.js +65 -21
- package/backend/dist/services/workKubernetesDriver.js.map +1 -1
- package/backend/dist/services/workModelProviderService.d.ts +2 -2
- package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
- package/backend/dist/services/workModelProviderService.js +38 -34
- package/backend/dist/services/workModelProviderService.js.map +1 -1
- package/backend/dist/services/workPolicyService.d.ts +7 -7
- package/backend/dist/services/workPolicyService.d.ts.map +1 -1
- package/backend/dist/services/workPolicyService.js +50 -51
- package/backend/dist/services/workPolicyService.js.map +1 -1
- package/backend/dist/services/workPreviewProxyService.d.ts +8 -8
- package/backend/dist/services/workPreviewProxyService.d.ts.map +1 -1
- package/backend/dist/services/workPreviewProxyService.js +47 -44
- package/backend/dist/services/workPreviewProxyService.js.map +1 -1
- package/backend/dist/services/workRuntimeDriver.d.ts +21 -18
- package/backend/dist/services/workRuntimeDriver.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeDriver.js +69 -20
- package/backend/dist/services/workRuntimeDriver.js.map +1 -1
- package/backend/dist/services/workRuntimeService.d.ts +18 -13
- package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeService.js +438 -194
- package/backend/dist/services/workRuntimeService.js.map +1 -1
- package/backend/dist/services/workRuntimeShared.d.ts +2 -0
- package/backend/dist/services/workRuntimeShared.d.ts.map +1 -1
- package/backend/dist/services/workRuntimeShared.js.map +1 -1
- package/backend/dist/services/workTaskService.d.ts +42 -36
- package/backend/dist/services/workTaskService.d.ts.map +1 -1
- package/backend/dist/services/workTaskService.js +445 -350
- package/backend/dist/services/workTaskService.js.map +1 -1
- package/backend/dist/services/workTerminalService.d.ts +1 -1
- package/backend/dist/services/workTerminalService.d.ts.map +1 -1
- package/backend/dist/services/workTerminalService.js +33 -6
- package/backend/dist/services/workTerminalService.js.map +1 -1
- package/backend/dist/storage.d.ts +72 -40
- package/backend/dist/storage.d.ts.map +1 -1
- package/backend/dist/storage.js +312 -660
- package/backend/dist/storage.js.map +1 -1
- package/backend/dist/types/index.d.ts +28 -0
- package/backend/dist/types/index.d.ts.map +1 -1
- package/backend/dist/types/index.js.map +1 -1
- package/backend/dist/types/work.d.ts +7 -2
- package/backend/dist/types/work.d.ts.map +1 -1
- package/backend/dist/utils/chatCancellation.d.ts +48 -0
- package/backend/dist/utils/chatCancellation.d.ts.map +1 -0
- package/backend/dist/utils/chatCancellation.js +152 -0
- package/backend/dist/utils/chatCancellation.js.map +1 -0
- package/backend/dist/utils/chatDocumentContext.d.ts +1 -1
- package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
- package/backend/dist/utils/chatDocumentContext.js +11 -5
- package/backend/dist/utils/chatDocumentContext.js.map +1 -1
- package/backend/dist/utils/chatStreamCoalescer.d.ts +15 -0
- package/backend/dist/utils/chatStreamCoalescer.d.ts.map +1 -0
- package/backend/dist/utils/chatStreamCoalescer.js +59 -0
- package/backend/dist/utils/chatStreamCoalescer.js.map +1 -0
- package/backend/dist/utils/dataDirectory.d.ts +49 -0
- package/backend/dist/utils/dataDirectory.d.ts.map +1 -0
- package/backend/dist/utils/dataDirectory.js +291 -0
- package/backend/dist/utils/dataDirectory.js.map +1 -0
- package/backend/dist/utils/generationUtils.d.ts.map +1 -1
- package/backend/dist/utils/generationUtils.js +18 -6
- package/backend/dist/utils/generationUtils.js.map +1 -1
- package/backend/dist/utils/jwt.d.ts.map +1 -1
- package/backend/dist/utils/jwt.js +2 -3
- package/backend/dist/utils/jwt.js.map +1 -1
- package/backend/dist/utils/ollamaModelDefaults.d.ts.map +1 -1
- package/backend/dist/utils/ollamaModelDefaults.js +2 -7
- package/backend/dist/utils/ollamaModelDefaults.js.map +1 -1
- package/backend/dist/utils/ollamaStreaming.d.ts +2 -1
- package/backend/dist/utils/ollamaStreaming.d.ts.map +1 -1
- package/backend/dist/utils/ollamaStreaming.js +49 -11
- package/backend/dist/utils/ollamaStreaming.js.map +1 -1
- package/backend/dist/utils/pluginConnectionVariables.d.ts.map +1 -1
- package/backend/dist/utils/pluginConnectionVariables.js +11 -3
- package/backend/dist/utils/pluginConnectionVariables.js.map +1 -1
- package/backend/dist/utils/pluginDefinitionTrust.d.ts.map +1 -1
- package/backend/dist/utils/pluginDefinitionTrust.js +4 -3
- package/backend/dist/utils/pluginDefinitionTrust.js.map +1 -1
- package/backend/dist/utils/pluginStreaming.d.ts +2 -1
- package/backend/dist/utils/pluginStreaming.d.ts.map +1 -1
- package/backend/dist/utils/pluginStreaming.js +5 -1
- package/backend/dist/utils/pluginStreaming.js.map +1 -1
- package/backend/dist/utils/pluginUpload.d.ts +1 -0
- package/backend/dist/utils/pluginUpload.d.ts.map +1 -1
- package/backend/dist/utils/pluginUpload.js +14 -4
- package/backend/dist/utils/pluginUpload.js.map +1 -1
- package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
- package/backend/dist/utils/pluginValidation.js +29 -1
- package/backend/dist/utils/pluginValidation.js.map +1 -1
- package/backend/dist/utils/sttAudioUpload.d.ts +24 -0
- package/backend/dist/utils/sttAudioUpload.d.ts.map +1 -0
- package/backend/dist/utils/sttAudioUpload.js +500 -0
- package/backend/dist/utils/sttAudioUpload.js.map +1 -0
- package/backend/dist/utils/ttsVoiceCloneUpload.d.ts +34 -0
- package/backend/dist/utils/ttsVoiceCloneUpload.d.ts.map +1 -0
- package/backend/dist/utils/ttsVoiceCloneUpload.js +224 -0
- package/backend/dist/utils/ttsVoiceCloneUpload.js.map +1 -0
- package/backend/dist/utils/websocketMessages.d.ts +2 -1
- package/backend/dist/utils/websocketMessages.d.ts.map +1 -1
- package/backend/dist/utils/websocketMessages.js +16 -2
- package/backend/dist/utils/websocketMessages.js.map +1 -1
- package/backend/dist/websocketServer.d.ts +4 -1
- package/backend/dist/websocketServer.d.ts.map +1 -1
- package/backend/dist/websocketServer.js +290 -44
- package/backend/dist/websocketServer.js.map +1 -1
- package/backend/dist/workTerminalServer.d.ts +9 -0
- package/backend/dist/workTerminalServer.d.ts.map +1 -1
- package/backend/dist/workTerminalServer.js +221 -52
- package/backend/dist/workTerminalServer.js.map +1 -1
- package/backend/dist/worker.d.ts +2 -0
- package/backend/dist/worker.d.ts.map +1 -0
- package/backend/dist/worker.js +250 -0
- package/backend/dist/worker.js.map +1 -0
- package/backend/package.json +19 -9
- package/bin/cli.js +126 -99
- package/bin/runtime-paths.js +108 -0
- package/frontend/dist/artifact-runtime/.build-fingerprint +1 -1
- package/frontend/dist/artifact-runtime/framer-motion.js +5 -5
- package/frontend/dist/artifact-runtime/lucide-react.js +1 -1
- package/frontend/dist/assets/index-Jtx9Amhz.js +16 -0
- package/frontend/dist/assets/index-kxtZQLV6.css +1 -0
- package/frontend/dist/assets/{markdown-math-ClQbWekD.css → markdown-math-ClTedVi7.css} +1 -1
- package/frontend/dist/index.html +18 -18
- package/frontend/dist/js/{ArtifactContainer-Dy2Q0iIL.js → ArtifactContainer-fZegtmva.js} +1 -1
- package/frontend/dist/js/{ArtifactDemoPage-K79dWshB.js → ArtifactDemoPage-BDBXYv9l.js} +1 -1
- package/frontend/dist/js/{ArtifactSandboxFrame-DhqLNUtY.js → ArtifactSandboxFrame-BN16NtKe.js} +3 -3
- package/frontend/dist/js/{ArtifactSlideOutPanel-Cl8JG7bz.js → ArtifactSlideOutPanel-x1fS85Ww.js} +1 -1
- package/frontend/dist/js/{Button-CTXHujOd.js → Button-BV44cTnj.js} +1 -1
- package/frontend/dist/js/ChatPage-C_pXh7WN.js +23 -0
- package/frontend/dist/js/{FirstTimeSetup-kHhRzGJ8.js → FirstTimeSetup-oRrlZnBm.js} +1 -1
- package/frontend/dist/js/GalleryPage-CV_vbE7X.js +1 -0
- package/frontend/dist/js/{HomePage-C1L8WAXL.js → HomePage-P-e7Huco.js} +1 -1
- package/frontend/dist/js/{LibreClawPage-Dyua8IUu.js → LibreClawPage-Cee06SUM.js} +1 -1
- package/frontend/dist/js/{ModelManagerModals-CuMRGUd-.js → ModelManagerModals-D7jIT3v1.js} +1 -1
- package/frontend/dist/js/{ModelSelector-CqHc-Ln4.js → ModelSelector-DXucbvrz.js} +1 -1
- package/frontend/dist/js/ModelsPage-C3_fZpMM.js +2 -0
- package/frontend/dist/js/NotesPage-rEIPWGIb.js +1 -0
- package/frontend/dist/js/{OptimizedSyntaxHighlighter-CWYUn9Oe.js → OptimizedSyntaxHighlighter-XwqZEoTf.js} +1 -1
- package/frontend/dist/js/{PersonasPage-D_6WBCH5.js → PersonasPage-BXtepFuD.js} +2 -2
- package/frontend/dist/js/PluginUsagePage-hhu8cxsu.js +1 -0
- package/frontend/dist/js/RichMessageContent-DkiEvdSg.js +3 -0
- package/frontend/dist/js/SettingsModal-BNxCtJ51.js +1 -0
- package/frontend/dist/js/{SettingsToggle-DLHlCDBl.js → SettingsToggle-WTa0rgvY.js} +1 -1
- package/frontend/dist/js/{SystemPage-BMWEet9e.js → SystemPage-BvvKFuoG.js} +1 -1
- package/frontend/dist/js/UserManagementPage-BccyR7si.js +1 -0
- package/frontend/dist/js/WorkPage-BgxrvY3I.js +6 -0
- package/frontend/dist/js/api-BvPDxsUQ.js +14 -0
- package/frontend/dist/js/appStore-DRSSjaHn.js +2 -0
- package/frontend/dist/js/ar-xTSvTq05.js +2 -0
- package/frontend/dist/js/authStore-BVykIRec.js +4 -0
- package/frontend/dist/js/{babel-CmENXdZw.js → babel-D24oDI9y.js} +1 -1
- package/frontend/dist/js/bn-iYAsohEA.js +2 -0
- package/frontend/dist/js/chatStore-UPp5TV_t.js +3 -0
- package/frontend/dist/js/{config-DkV1ka7I.js → config-BTlPm-cZ.js} +1 -1
- package/frontend/dist/js/cs-YBHN88Hb.js +2 -0
- package/frontend/dist/js/da-D7qlLy_k.js +2 -0
- package/frontend/dist/js/de-DV671k2c.js +2 -0
- package/frontend/dist/js/es-kyBgzNq-.js +2 -0
- package/frontend/dist/js/{estree-D5KP-qbw.js → estree-CfYahF_d.js} +1 -1
- package/frontend/dist/js/fr-Cw1vut7I.js +2 -0
- package/frontend/dist/js/hi-DWEFC024.js +2 -0
- package/frontend/dist/js/{html-Cm9c2akd.js → html-BJsDX1UZ.js} +1 -1
- package/frontend/dist/js/id-DlMHjjy0.js +2 -0
- package/frontend/dist/js/is-B9E_a7dG.js +2 -0
- package/frontend/dist/js/it-DawmVbLC.js +2 -0
- package/frontend/dist/js/ja-DmVvwY3W.js +2 -0
- package/frontend/dist/js/ko-DzOPpkVs.js +2 -0
- package/frontend/dist/js/{markdown-B2u7CnKN.js → markdown-GLyuUNig.js} +1 -1
- package/frontend/dist/js/markdown-core-BmPPZiuD.js +31 -0
- package/frontend/dist/js/{markdown-math-B7FlYsmr.js → markdown-math-mH7AZ_mb.js} +6 -6
- package/frontend/dist/js/{messageCodeStyles-DalG2j6U.js → messageCodeStyles-BHddEFP1.js} +1 -1
- package/frontend/dist/js/ms-DpsaOPht.js +2 -0
- package/frontend/dist/js/nl-B1d8W22n.js +2 -0
- package/frontend/dist/js/pl-nCncRVgt.js +2 -0
- package/frontend/dist/js/{postcss-B5WIGhAY.js → postcss-Bx9CTcIc.js} +1 -1
- package/frontend/dist/js/pt-DHw8fGuu.js +2 -0
- package/frontend/dist/js/{react-vendor-DPNXrO-8.js → react-vendor-C5yShNlM.js} +1 -1
- package/frontend/dist/js/{router-vendor-Ca9zqOqT.js → router-vendor-CbPDks39.js} +1 -1
- package/frontend/dist/js/ru-Derl_YP_.js +2 -0
- package/frontend/dist/js/{standalone-Dwm1daef.js → standalone-Dh56V0YW.js} +1 -1
- package/frontend/dist/js/sv-pJAfBVo0.js +2 -0
- package/frontend/dist/js/{syntax-highlight-Ca9bHsaz.js → syntax-highlight-3EEX6CGL.js} +3 -3
- package/frontend/dist/js/th-C_7fIGnk.js +2 -0
- package/frontend/dist/js/tr-CPqsJvaP.js +2 -0
- package/frontend/dist/js/{typescript-CwieSptM.js → typescript-DRy7A9w4.js} +1 -1
- package/frontend/dist/js/{ui-BnDZpjfc.js → ui-CuY4IifA.js} +2 -2
- package/frontend/dist/js/ui-vendor-D3Ahl1x5.js +177 -0
- package/frontend/dist/js/uk-3o8P_kFi.js +2 -0
- package/frontend/dist/js/{useTranslation-CXY69qNk.js → useTranslation-C3ei3mJq.js} +1 -1
- package/frontend/dist/js/{utils-BM0_0iFj.js → utils-CuC1beTY.js} +1 -1
- package/frontend/dist/js/{utils-vendor-1zob7nK9.js → utils-vendor-BBa8OxtB.js} +1 -1
- package/frontend/dist/js/vi-Dv6N7OVD.js +2 -0
- package/frontend/dist/js/{workApi-BOS7crs9.js → workApi-DHuYNHLf.js} +2 -2
- package/frontend/dist/js/{yaml-QD4znPfZ.js → yaml-DioTxVLA.js} +1 -1
- package/frontend/dist/js/zh-qg5iqtPi.js +2 -0
- package/package.json +16 -5
- package/plugins/huggingface.json +12 -3
- package/plugins/llama-cpp.json +18 -6
- package/plugins/longcat-audiodit.json +114 -0
- package/plugins/openai.json +18 -0
- package/frontend/dist/assets/index-BBpNbfKW.js +0 -16
- package/frontend/dist/assets/index-BLATyFmD.css +0 -1
- package/frontend/dist/js/ChatPage-BBayfMLS.js +0 -16
- package/frontend/dist/js/GalleryPage-By8VI39Q.js +0 -1
- package/frontend/dist/js/ModelsPage-ODeXhDDk.js +0 -2
- package/frontend/dist/js/NotesPage-CApzDjOq.js +0 -1
- package/frontend/dist/js/PluginUsagePage-kutS6SOd.js +0 -1
- package/frontend/dist/js/RichMessageContent-g6WT75Te.js +0 -3
- package/frontend/dist/js/SettingsModal-B7z51BCx.js +0 -1
- package/frontend/dist/js/UserManagementPage-D08lM51c.js +0 -1
- package/frontend/dist/js/WorkPage-DdVLefsK.js +0 -6
- package/frontend/dist/js/api-CLEmGcEh.js +0 -14
- package/frontend/dist/js/appStore-CGdhvp9P.js +0 -2
- package/frontend/dist/js/ar-BTmB2WVm.js +0 -2
- package/frontend/dist/js/authStore-Dh3beEOq.js +0 -4
- package/frontend/dist/js/bn-CQnH7YVT.js +0 -2
- package/frontend/dist/js/chatStore-CDeYWL_q.js +0 -3
- package/frontend/dist/js/cs-oTTZkQXr.js +0 -2
- package/frontend/dist/js/da-Br0gB6J6.js +0 -2
- package/frontend/dist/js/de-DE2iztTF.js +0 -2
- package/frontend/dist/js/es-DgthfVtl.js +0 -2
- package/frontend/dist/js/fr-BjxjFwPh.js +0 -2
- package/frontend/dist/js/hi-D1q7E-9N.js +0 -2
- package/frontend/dist/js/id-CDJZqLTF.js +0 -2
- package/frontend/dist/js/is-BU7Um_Tq.js +0 -2
- package/frontend/dist/js/it-CdAxr8P_.js +0 -2
- package/frontend/dist/js/ja-BLbQwz9u.js +0 -2
- package/frontend/dist/js/ko-CY5lpkAe.js +0 -2
- package/frontend/dist/js/markdown-core-DHnR5Hw8.js +0 -16
- package/frontend/dist/js/ms-tQ8AYXEQ.js +0 -2
- package/frontend/dist/js/nl-CRNi2oWT.js +0 -2
- package/frontend/dist/js/pl-CWtFRS_W.js +0 -2
- package/frontend/dist/js/pt-C7SPoLF8.js +0 -2
- package/frontend/dist/js/ru-Dz4AX8xc.js +0 -2
- package/frontend/dist/js/sv-ETy5-boa.js +0 -2
- package/frontend/dist/js/th-DpuMqvxU.js +0 -2
- package/frontend/dist/js/tr-C-1AYAqg.js +0 -2
- package/frontend/dist/js/ui-vendor-xUzKqAXI.js +0 -177
- package/frontend/dist/js/uk-CyS680gr.js +0 -2
- package/frontend/dist/js/vi-BG8HuiTz.js +0 -2
- package/frontend/dist/js/zh-NCs2mkHj.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={common:{loading:`جاري التحميل...`,save:`حفظ`,saving:`جاري الحفظ...`,cancel:`إلغاء`,delete:`حذف`,edit:`تعديل`,close:`إغلاق`,back:`رجوع`,next:`التالي`,confirm:`تأكيد`,error:`خطأ`,success:`نجاح`,warning:`تحذير`,or:`أو`,optional:`اختياري`,enabled:`مُفعّل`,disabled:`معطّل`,on:`تشغيل`,off:`إيقاف`,yes:`نعم`,no:`لا`,search:`بحث`,noResults:`لم يتم العثور على نتائج`,retry:`إعادة المحاولة`,refresh:`تحديث`,download:`تحميل`,upload:`رفع`,export:`تصدير`,import:`استيراد`,reset:`إعادة تعيين`,apply:`تطبيق`,clear:`مسح`,all:`الكل`,none:`لا شيء`,default:`افتراضي`,custom:`مخصص`,remove:`إزالة`,home:`الرئيسية`,more:`أكثر`},brand:{name:`Libre WebUI`,shortName:`Libre`},auth:{login:{title:`مرحباً بعودتك`,subtitle:`سجّل الدخول إلى حسابك للمتابعة`,username:`اسم المستخدم`,usernamePlaceholder:`أدخل اسم المستخدم`,password:`كلمة المرور`,passwordPlaceholder:`أدخل كلمة المرور`,signIn:`تسجيل الدخول`,signingIn:`جاري تسجيل الدخول...`,noAccount:`ليس لديك حساب؟`,signUpHere:`سجّل هنا`,loginSuccess:`تم تسجيل الدخول بنجاح!`,loginFailed:`فشل تسجيل الدخول`,checkCredentials:`فشل تسجيل الدخول. يرجى التحقق من بيانات الاعتماد.`,enterBoth:`يرجى إدخال اسم المستخدم وكلمة المرور`,githubSuccess:`تم تسجيل الدخول عبر GitHub بنجاح!`,githubFailed:`فشلت مصادقة GitHub`,githubVerifyFailed:`فشل التحقق من مصادقة GitHub`,approvalPending:`حسابك في انتظار موافقة المسؤول.`,verificationFailed:`فشل التحقق الأمني. حدّث الصفحة وحاول مجددًا.`},signup:{title:`إنشاء حساب`,subtitle:`سجّل للحصول على حساب جديد`,username:`اسم المستخدم`,usernamePlaceholder:`اختر اسم مستخدم`,email:`البريد الإلكتروني`,emailPlaceholder:`your@email.com`,password:`كلمة المرور`,passwordPlaceholder:`اختر كلمة مرور`,confirmPassword:`تأكيد كلمة المرور`,confirmPasswordPlaceholder:`أكّد كلمة المرور`,createAccount:`إنشاء حساب`,creatingAccount:`جاري إنشاء الحساب...`,hasAccount:`لديك حساب بالفعل؟`,signInHere:`سجّل الدخول هنا`,signupSuccess:`تم إنشاء الحساب بنجاح!`,signupFailed:`فشل التسجيل`,tryAgain:`فشل التسجيل. يرجى المحاولة مرة أخرى.`,usernameRequired:`اسم المستخدم وكلمة المرور مطلوبان`,passwordMismatch:`كلمات المرور غير متطابقة`,passwordTooShort:`يجب أن تكون كلمة المرور 6 أحرف على الأقل`,approvalPending:`تم استلام التسجيل. يجب أن يوافق المسؤول على حسابك.`,awaitingApproval:`في انتظار الموافقة`,awaitingApprovalDescription:`تم إنشاء حسابك، ولكن يجب أن يقوم المسؤول بتفعيله قبل أن تتمكن من تسجيل الدخول.`,backToSignIn:`العودة لتسجيل الدخول`},logout:{button:`تسجيل الخروج`,success:`تم تسجيل الخروج بنجاح`},oauth:{continueWith:`المتابعة مع {{provider}}`,connectingTo:`جاري الاتصال بـ {{provider}}...`,github:`GitHub`,huggingFace:`Hugging Face`},checkingAuth:`جاري التحقق من المصادقة...`,welcome:`مرحباً`,noEmail:`لم يتم تقديم بريد إلكتروني`,role:`الدور`,id:`المعرف`,userId:`معرف المستخدم`,signInDescription:`سجّل الدخول بحساب GitHub الخاص بك للمتابعة`,signInWithGitHub:`تسجيل الدخول بواسطة GitHub`,jwtActive:`مصادقة JWT نشطة`,jwtDescription:`مصادقة JWT مع GitHub OAuth`,github:`GitHub`,provider:`المزود`,tagline:`يجب أن يخضع مكدس الذكاء الاصطناعي الخاص بك لك.`,selfHosted:`مستضاف ذاتيًا · Apache 2.0`,highlights:{local:{title:`محلي أولاً`,body:`تبقى محادثاتك وملفاتك على الجهاز الذي تشغل هذا عليه.`},providers:{title:`أي مزود`,body:`نماذج محلية عبر Ollama، بالإضافة إلى المزودين عن بُعد الذين تختار إضافتهم.`},work:{title:`عمل معزول`,body:`امنح النموذج مساحة عمل معزولة بالملفات والطرفية والمعاينة.`}}},setup:{welcome:{title:`مرحباً بك في Libre WebUI`,subtitle:`لنبدأ`,description:`قم بإعداد Libre WebUI الخاص بك في خطوات قليلة`,createAdmin:`إنشاء حساب المسؤول`,features:{secure:{title:`آمن وخاص`,description:`محادثاتك تبقى على جهازك`},fast:{title:`سريع ومتجاوب`,description:`محسّن للسرعة والأداء`},openSource:{title:`مفتوح المصدر`,description:`برنامج مجاني ومفتوح المصدر`}}},admin:{title:`إنشاء حساب المسؤول`,subtitle:`إعداد المسؤول`,description:`أنشئ أول حساب مسؤول لـ Libre WebUI الخاص بك`,usernamePlaceholder:`أدخل اسم المسؤول`,passwordPlaceholder:`أدخل كلمة المرور (6 أحرف على الأقل)`,confirmPlaceholder:`أكّد كلمة المرور`,creating:`جاري الإنشاء...`,createAdmin:`إنشاء المسؤول`,success:`تم إنشاء حساب المسؤول بنجاح!`,failed:`فشل إنشاء حساب المسؤول`,fillAllFields:`يرجى ملء جميع الحقول`,note:`سيكون هذا حساب المسؤول الرئيسي لـ Libre WebUI الخاص بك`,approvalUnexpected:`تعذر تفعيل المسؤول الأولي. يرجى المحاولة مرة أخرى.`},encryptionKey:{title:`احفظ مفتاح التشفير`,subtitle:`مهم: احفظ هذا المفتاح`,description:`يحمي مفتاح التشفير هذا بياناتك الحساسة. احفظه بأمان - ستحتاجه إذا احتجت لاستعادة قاعدة البيانات.`,warning:`تحذير`,warningText:`إذا فقدت هذا المفتاح واحتجت لاستعادة قاعدة البيانات، ستكون بياناتك المشفرة (مفاتيح API، التفضيلات) غير قابلة للاسترداد.`,label:`مفتاح التشفير الخاص بك`,loading:`جاري التحميل...`,copyToClipboard:`نسخ إلى الحافظة`,copied:`تم نسخ مفتاح التشفير إلى الحافظة!`,copyFailed:`فشل نسخ المفتاح إلى الحافظة`,envNote:`هذا المفتاح محفوظ أيضاً في ملف backend/.env كـ ENCRYPTION_KEY`,acknowledgment:`لقد حفظت مفتاح التشفير في مكان آمن وأفهم أن فقدانه قد يؤدي إلى فقدان البيانات.`,confirmRequired:`يرجى التأكيد على أنك حفظت مفتاح التشفير`,continue:`المتابعة إلى Libre WebUI`}},chat:{greeting:{morning:`صباح الخير`,afternoon:`مساء الخير`,evening:`مساء الخير`,night:`تصبح على خير`},followUp:`متابعة`,welcome:{helpToday:`كيف يمكنني مساعدتك اليوم؟`,helpTonight:`كيف يمكنني مساعدتك الليلة؟`,variety:{create:{title:`ماذا نصنع؟`,subtitle:`ابدأ بفكرة، أو رسم أولي، أو مشكلة عنيدة.`},explore:{title:`من أين نبدأ؟`,subtitle:`هات السؤال الذي لا يكفّ عن العودة إلى ذهنك.`},imagine:{title:`ما الذي تتخيّله؟`,subtitle:`يمكننا أن نمنحه شكلاً معًا.`},focus:{title:`ما الذي يستحق انتباهك؟`,subtitle:`لنجعل الخطوة التالية واضحة.`},untangle:{title:`ما الذي يبدو معقّدًا؟`,subtitle:`أعطني النسخة الفوضوية أولًا.`},momentum:{title:`لننطلق عندما تكون جاهزًا.`,subtitle:`تابع فكرة أو خطة أو خيطًا تركته دون إكمال.`},open:{title:`ما الذي يشغل بالك؟`,subtitle:`خاطرة صغيرة أو مشروع طموح. كلاهما مناسب.`},challenge:{title:`ما الذي نحاول حلّه؟`,subtitle:`أخبرني بما لا يعمل بعد.`},draft:{title:`لنبدأ من مكان ما.`,subtitle:`لا يشترط أن يكون مصقولًا.`},possibility:{title:`إلى ماذا يمكن أن يتحول هذا؟`,subtitle:`أرني المادة الخام.`},unexpected:{title:`لنصنع شيئًا غير متوقع.`,subtitle:`أعطني قيدًا، أو مزاجًا، أو فكرة لم تكتمل بعد.`}}},input:{placeholder:`أرسل رسالة`,messagePlaceholder:`رسالة...`,attachImages:`إرفاق صور`,attachments:`المرفقات والميزات المتقدمة`,sendMessage:`إرسال الرسالة`,stopGeneration:`إيقاف التوليد`,menu:{uploadImages:`رفع صور`,attachDocument:`إرفاق مستند`,attachWebpage:`إرفاق صفحة ويب`,structuredOutput:`إخراج منظم`,attach:`إرفاق`,documentAttached:`تم إرفاق المستند`,webpageAttached:`تم إرفاق صفحة الويب`,attachFailed:`تعذر الإرفاق`,attachKnowledge:`إرفاق معرفة`,noCollections:`لا توجد مجموعات بعد — أنشئ واحدة في الإعدادات ← المستندات`},voiceInput:`إدخال صوتي`,voiceStop:`إيقاف الاستماع`,transcriptionSource:`مصدر التعرّف على الكلام`,browserSpeech:`خدمة التعرّف على الكلام في المتصفح`,providerTranscriptionDisclosure:`تسجيل الصوت وإرساله إلى {{provider}} لتحويله إلى نص`,webSearchOn:`البحث في الويب مفعّل — تستخدم الردود نتائج حية`,webSearchOff:`ابحث في الويب لهذه الرسالة`},session:{new:`محادثة جديدة`,work:`العمل`,chat:`محادثة`,private:`خاص`,privateMode:`الوضع الخاص`,privateDescription:`لن يتم حفظ هذه المحادثة`,privateTooltip:`ابدأ محادثة خاصة لن يتم حفظها`,deleteConfirm:`هل أنت متأكد من حذف هذه المحادثة؟`,generatingTitle:`جاري توليد العنوان`,noChats:`لا توجد محادثات بعد`,createFirst:`أنشئ أول محادثة أعلاه`,chats:`المحادثات`,renameChat:`إعادة تسمية المحادثة`,openNewTab:`فتح في تبويب جديد`,pinChat:`تثبيت`,unpinChat:`إلغاء التثبيت`,deleteChat:`حذف المحادثة`,incognito:`دردشة مخفية`,archiveChat:`أرشفة المحادثة`,groups:{pinned:`المثبتة`,today:`اليوم`,yesterday:`أمس`,previous7Days:`آخر 7 أيام`,previous30Days:`آخر 30 يومًا`,older:`أقدم`},folder:{new:`مجلد جديد`,namePlaceholder:`اسم المجلد`,move:`نقل إلى مجلد`,remove:`إزالة من المجلد`,delete:`حذف المجلد`,deleteConfirm:`حذف هذا المجلد؟ ستبقى المحادثات بداخله.`}},persona:{applied:`تم تطبيق الشخصية`,label:`الشخصية`,loadFailed:`فشل تحميل تفاصيل الشخصية`,removeFailed:`فشل في إزالة الشخصية`},model:{updated:`تم تحديث النموذج`,noModels:`لا توجد نماذج متاحة`,noModelsDescription:`لا توجد نماذج متاحة. تأكد من تشغيل Ollama وتثبيت النماذج.`,pullCommand:`ollama pull llama3.2:3b`,noModelsTooltip:`لا توجد نماذج متاحة. يرجى التأكد من تشغيل Ollama وتثبيت النماذج.`,selectBeforePrivateChat:`اختر نموذجاً متاحاً قبل بدء محادثة خاصة`,selectBeforeSending:`اختر نموذجاً متاحاً قبل الإرسال`},footer:{disclaimer:`قد يرتكب الذكاء الاصطناعي أخطاء - تحقق من المعلومات المهمة`,images:`{{count}} صورة`,images_plural:`{{count}} صور`,structuredOutput:`مخرجات منظمة`},mediaUpload:{dropImagesHere:`أفلت الصور هنا أو`,supportedFormats:`يدعم: JPG، PNG، GIF، WebP (حد أقصى 10 ميجابايت لكل صورة)`,browse:`تصفح`},structuredOutput:{title:`تنسيق الاستجابة`,none:`بدون (لغة طبيعية)`,noneDescription:`استجابة باللغة الطبيعية الافتراضية`,json:`JSON`,jsonDescription:`تنسيق JSON منظم`,list:`قائمة`,listDescription:`مصفوفة من العناصر`,summary:`ملخص`,summaryDescription:`ملخص المستند مع النقاط الرئيسية`,analysis:`تحليل`,analysisDescription:`تحليل منظم مع الإيجابيات والسلبيات`,custom:`مخطط مخصص`,customDescription:`حدد مخطط JSON الخاص بك`,customSchema:`مخطط JSON مخصص`,schemaPreview:`معاينة المخطط`,applySchema:`تطبيق المخطط`,cancel:`إلغاء`,enabled:`تم تفعيل المخرجات المنظمة`},controls:{title:`عناصر تحكم المحادثة`,systemPrompt:`موجه النظام`,systemPromptPlaceholder:`تعليمات تنطبق على هذه المحادثة فقط…`,advancedParams:`معلمات متقدمة`,advancedParamsDescription:`تجاوزات لهذه المحادثة. الحقول الفارغة تستخدم الإعدادات العامة.`,fromModel:`من النموذج`,fromModelHint:`هذه القيمة مأخوذة من الإعدادات التي يوصي بها النموذج نفسه.`,contextCapped:`تم تحديد السياق عند {{context}} من أصل {{trained}} تم تدريب النموذج عليها، حتى يظل قابلاً للتحميل.`,saved:`تم حفظ عناصر التحكم`,saveFailed:`تعذر حفظ عناصر التحكم`,params:{temperature:`درجة الحرارة`,topP:`Top P`,topK:`Top K`,minP:`Min P`,maxTokens:`أقصى عدد رموز`,repeatPenalty:`عقوبة التكرار`,seed:`البذرة`,contextLength:`طول السياق`}},message:{sources:`المصادر`},toasts:{chatCreated:`تم إنشاء محادثة جديدة`,createFailed:`فشل إنشاء الجلسة`,loadFailed:`فشل تحميل الجلسات`,chatDeleted:`تم حذف المحادثة`,deleteFailed:`فشل حذف المحادثة`,deleteSessionFailed:`فشل حذف الجلسة`,historyCleared:`تم مسح سجل المحادثات بالكامل`,historyClearFailed:`فشل مسح سجل المحادثات`,titleUpdated:`تم تحديث عنوان المحادثة`,updateFailed:`فشل تحديث الجلسة`,noValidSession:`لا توجد جلسة محادثة صالحة. يرجى إنشاء محادثة أو تحديدها.`,sessionNotFound:`الجلسة غير موجودة أو غير صالحة. يرجى تحديد أو إنشاء جلسة محادثة صالحة.`,noModelProvider:`لا يوجد مزود نماذج متاح`,modelUnavailable:`النموذج المحدد "{{model}}" غير متوفر من {{provider}}. أعد تنشيط هذا المزود أو حدد نموذجًا آخر.`,modelSwitched:`تم التبديل إلى {{model}} (النموذج السابق لم يعد متوفرًا)`,modelsLoadFailed:`فشل تحميل النماذج`,modelUpdated:`تم تحديث النموذج للمحادثة الحالية`,modelUpdateFailed:`فشل تحديث نموذج الجلسة`},documents:{title:`مستندات في السياق`}},sidebar:{navigation:{chat:`محادثة`,models:`النماذج`,personas:`الشخصيات`,imagine:`تخيّل`,work:`العمل`,settings:`الإعدادات`,userManagement:`إدارة المستخدمين`,signOut:`تسجيل الخروج`,agents:`الوكلاء`,exploreLabel:`استكشاف`,usageAnalytics:`استخدام المزود`,system:`النظام`,notes:`الملاحظات`},toggleSize:`تبديل حجم الشريط الجانبي`,expandSidebar:`توسيع الشريط الجانبي`},user:{menu:{changePicture:`تغيير الصورة`,settings:`الإعدادات`,userManagement:`إدارة المستخدمين`,logout:`تسجيل الخروج`,usageAnalytics:`استخدام المزود`,system:`النظام`},avatar:{title:`تغيير صورة الملف الشخصي`,updated:`تم تحديث صورة الملف الشخصي`,updateFailed:`فشل تحديث صورة الملف الشخصي`,saving:`جاري الحفظ...`,label:`الصورة الرمزية`,uploadAvatarImage:`رفع صورة رمزية`,dragAndDrop:`اسحب وأفلت صورة أو انقر للتصفح`,chooseImage:`اختر صورة`,uploading:`جاري الرفع...`,enterImageUrl:`أو أدخل رابط الصورة`,supportedFormats:`الصيغ المدعومة: JPG، PNG، GIF، WebP (الحد الأقصى 2 ميجابايت). الصور المربعة تعمل بشكل أفضل.`,customAvatar:`صورة رمزية مخصصة`,clickToChange:`انقر للتغيير أو الإزالة`,removed:`تمت إزالة الصورة الرمزية`,uploaded:`تم رفع الصورة الرمزية بنجاح`,invalidFile:`يرجى اختيار ملف صورة صالح`,fileTooLarge:`يجب أن يكون حجم الصورة الرمزية أقل من 2 ميجابايت`,readFailed:`فشل قراءة ملف الصورة`,uploadFailed:`فشل رفع الصورة الرمزية`},profile:{noEmail:`لم يتم تقديم بريد إلكتروني`}},settings:JSON.parse(`{"title":"الإعدادات","tabs":{"appearance":"المظهر","model":"النموذج","systemMessage":"رسالة النظام","plugins":"الإضافات","search":"البحث","generation":"التوليد","documents":"المستندات","tts":"تحويل النص إلى كلام","imageGen":"توليد الصور","data":"البيانات","shortcuts":"الاختصارات","about":"حول"},"appearance":{"title":"المظهر","language":{"title":"اللغة","description":"اختر لغتك المفضلة"},"theme":{"title":"السمة","light":"فاتح","dark":"داكن","amoled":"أسود نقي","system":"النظام"},"accent":{"title":"لون التمييز","custom":"لون مخصص","useColor":"استخدام {{color}} كلون تمييز","behaviorTitle":"لوحة ألوان الواجهة","behaviorDescription":"اختر ما إذا كان لون التمييز يقتصر على عناصر التحكم أو يكيّف الواجهة الفاتحة أو الداكنة بالكامل.","defaultStyle":"افتراضي","defaultStyleDescription":"الاحتفاظ بالأسطح المحايدة للوضعين الفاتح والداكن.","adaptedStyle":"التكيف مع لون التمييز","adaptedStyleDescription":"تلوين الأسطح والحدود والنصوص بلون التمييز."},"chatInterface":{"title":"واجهة المحادثة","showUsername":"إظهار اسم المستخدم","showUsernameDescription":"عرض اسم المستخدم في رسائل المحادثة","followUpSuggestions":"اقتراحات المتابعة","followUpSuggestionsDescription":"اقتراح ردود سريعة بعد كل استجابة","hapticFeedback":"ردود فعل لمسية (Android)","hapticFeedbackDescription":"استخدام اهتزاز خفيف للإجراءات المهمة على الهاتف"},"background":{"title":"صورة الخلفية","enable":"تفعيل صورة الخلفية","enableDescription":"عرض خلفية مخصصة مع تأثير التمويه","blur":"التمويه","opacity":"الشفافية","upload":"رفع صورة الخلفية","dragDrop":"اسحب وأفلت صورة أو انقر للتصفح","chooseImage":"اختر صورة"}},"saveSettings":"حفظ الإعدادات","model":{"title":"إعدادات النموذج","defaultModel":"النموذج الافتراضي","defaultModelDescription":"سيتم استخدام هذا النموذج افتراضياً للمحادثات الجديدة","selectModel":"اختر نموذجاً","updateAll":"تحديث جميع النماذج","updateAllDescription":"التحقق من التحديثات وسحب أحدث إصدارات جميع النماذج المثبتة","updateAllButton":"تحديث الكل","updating":"جاري تحديث النماذج...","currentModelInfo":"معلومات النموذج الحالي","name":"الاسم","size":"الحجم","family":"العائلة","format":"التنسيق","status":"الحالة","statusStarting":"جاري البدء...","statusComplete":"مكتمل","statusError":"خطأ","bulkOperations":"العمليات المجمعة","autoTitle":{"title":"توليد العنوان التلقائي","enable":"تفعيل العنوان التلقائي","enableDescription":"توليد عناوين تلقائياً للمحادثات الجديدة","taskModel":"نموذج المهام","selectTaskModel":"اختر نموذج المهام","taskModelDescription":"النموذج المستخدم لتوليد عناوين المحادثات"},"persona":"شخصية","updatingModel":"تحديث {{name}} ({{current}}/{{total}})","modelsProgress":"{{current}} من {{total}} نماذج","specializedModels":"نماذج متخصصة","visionModel":"نموذج الرؤية","selectVisionModel":"استخدام نموذج الدردشة الحالي","visionModelDescription":"يُستخدم تلقائيًا كلما احتوى سياق الدردشة الصادر على صور. اختر نموذجًا يدعم إدخال الصور.","visionModelUpdateFailed":"فشل تحديث نموذج الرؤية: {{error}}","visionModelNoProvider":"نموذج الرؤية هذا ليس له هوية مزوّد. اختر نموذجاً متاحاً."},"systemMessage":{"title":"رسالة النظام","description":"عيّن رسالة نظام مخصصة ستُستخدم لجميع المحادثات الجديدة.","placeholder":"أدخل رسالة النظام...","saved":"تم حفظ رسالة النظام","saveFailed":"فشل حفظ رسالة النظام"},"plugins":{"title":"الإضافات","description":"إدارة الإضافات المثبتة","addNew":"إضافة إضافة جديدة","upload":"رفع إضافة","addJson":"إضافة JSON","uploading":"جاري الرفع...","jsonPlaceholder":"الصق إعدادات JSON للإضافة...","install":"تثبيت الإضافة","noPlugins":"لا توجد إضافات مثبتة","noPluginsDescription":"أضف إضافة لتوسيع الوظائف","loading":"جاري تحميل الإضافات...","installed":"الإضافات المثبتة","active":"الإضافات النشطة","activeLabel":"نشط","inactive":"غير نشط","activate":"تفعيل","deactivate":"إلغاء التفعيل","models":"نماذج","apiKeySet":"تم تعيين مفتاح API","apiKeyConfiguration":"إعداد مفتاح API","apiKeyEnvAlternative":"بدلاً من ذلك، عيّن","environmentVariable":"متغير البيئة","apiKeyConfigured":"تم إعداد مفتاح API","apiKeyPlaceholder":"أدخل مفتاح API...","saveApiKey":"حفظ مفتاح API","apiKey":{"title":"مفتاح API","placeholder":"أدخل مفتاح API","save":"حفظ المفتاح","remove":"إزالة المفتاح","configured":"تم إعداد مفتاح API","notConfigured":"مفتاح API مطلوب","saved":"تم حفظ مفتاح API بنجاح","removed":"تم إزالة مفتاح API","saveFailed":"فشل حفظ مفتاح API","removeFailed":"فشل إزالة مفتاح API","enterKey":"يرجى إدخال مفتاح API"},"variables":"Variables","providerConnections":"اتصالات المزود","providerConnectionsDescription":"اتصل، وقم بتكوين، وفحص مزودي النماذج عبر الإضافات.","providers":"المزودون","searchProviders":"ابحث عن المزودين","noProvidersFound":"لا يوجد مزودون يطابقون بحثك.","selectProvider":"اختر مزودًا","selectProviderDescription":"اختر مزودًا لفحص اتصاله وكتالوج النماذج الخاص به.","apiKeyDescription":"قم بتخزين مفتاح API شخصي لـ {{name}}.","showApiKey":"إظهار مفتاح API","hideApiKey":"إخفاء مفتاح API","configure":"تكوين","providerSettings":"إعدادات المزود","status":"الحالة","defaultEndpoint":"نقطة النهاية الافتراضية","modelCatalog":"كتالوج النماذج","modelCatalogDescription":"النماذج المكتشفة والمكونة لهذا المزود وقدراته.","refreshModels":"تحديث النماذج","noModelsConfigured":"لا توجد نماذج مكونة لهذا المزود.","modelId":"معرف النموذج","capabilities":"القدرات","modelCatalogUpdated":"تم تحديث كتالوج النماذج: {{count}} نماذج.","modelCatalogUnchanged":"كتالوج النماذج محدث بالفعل.","modelCatalogNeedsApiKey":"أضف مفتاح API صالح لهذا المزود لتحميل قائمة نماذجه المباشرة.","modelCatalogUnavailable":"تعذر تحميل قائمة نماذج المزود.","modelCatalogRefreshFailed":"فشل تحديث كتالوج النماذج","capability":{"chat":"دردشة","embedding":"تضمين","image":"صورة","speech":"كلام","transcription":"نسخ"},"exportPlugin":"تصدير الإضافة","deletePlugin":"حذف الإضافة"},"generation":{"title":"خيارات التوليد","description":"إعداد كيفية توليد الذكاء الاصطناعي للاستجابات","scopeLabel":"يُطبَّق على","scopeAll":"كل النماذج","scopeModel":"{{model}} فقط","scopeAllHint":"القيم التي يستخدمها كل نموذج ما لم يكن له إعداد خاص به.","scopeModelHint":"يُحفظ لهذا النموذج وحده، ويتجاوز الإعدادات العامة.","coreParameters":"المعلمات الأساسية","temperature":"درجة الحرارة","temperatureDescription":"يتحكم في العشوائية. القيم الأقل أكثر تركيزاً، والقيم الأعلى أكثر إبداعاً.","topP":"Top P","topPDescription":"يتحكم في التنوع عبر أخذ العينات النووية. القيم الأقل تركز على الرموز المحتملة.","topK":"Top K","topKDescription":"يحد اختيار الرموز لأكثر K رمز احتمالاً. عيّن 0 للتعطيل.","minP":"Min P","minPDescription":"الحد الأدنى لاحتمال اختيار الرمز.","generationControl":"التحكم في التوليد","maxTokens":"الحد الأقصى للرموز","maxTokensDescription":"الحد الأقصى لعدد الرموز المولدة في الاستجابة.","repeatPenalty":"عقوبة التكرار","repeatPenaltyDescription":"يعاقب الرموز المتكررة. القيم الأعلى تقلل التكرار.","contextLength":"طول السياق","contextLengthDescription":"الحد الأقصى لحجم نافذة السياق للمحادثات.","seed":"البذرة","optional":"اختياري","random":"عشوائي","seedDescription":"عيّن بذرة محددة للمخرجات القابلة للتكرار.","advancedOptions":"خيارات متقدمة","presencePenalty":"عقوبة الوجود","presencePenaltyDescription":"يعاقب الرموز التي تظهر في السياق.","frequencyPenalty":"عقوبة التكرار","frequencyPenaltyDescription":"يعاقب الرموز المستخدمة بشكل متكرر.","stopSequences":"تسلسلات الإيقاف","commaSeparated":"مفصولة بفواصل","stopSequencesDescription":"رموز مخصصة ستوقف التوليد عند مصادفتها.","resetDefaults":"إعادة تعيين الافتراضيات","saveOptions":"حفظ الخيارات","embeddingSettings":"إعدادات التضمين","enableEmbeddings":"تفعيل تضمين المستندات","advancedSettings":"إعدادات التوليد المتقدمة","advancedSettingsDescription":"أخذ العينات، وحدود الرموز، والسياق، والعقوبات، وتسلسلات الإيقاف"},"documents":{"title":"إعدادات المستندات","embeddings":{"title":"التضمينات","enable":"تفعيل تضمين المستندات","model":"نموذج التضمين","modelDescription":"اختر النموذج المستخدم لتضمين المستندات","chunkSize":"حجم القطعة","chunkSizeInTokens":"(بالرموز)","chunkSizeDescription":"حجم قطع النص للتضمين","chunkOverlap":"تداخل القطع","chunkOverlapInTokens":"(بالرموز)","chunkOverlapDescription":"التداخل بين القطع المتتالية","similarityThreshold":"عتبة التشابه","similarityDescription":"الحد الأدنى لدرجة التشابه لتضمين النتائج","status":"حالة التضمين","statusLabel":"الحالة","available":"متاح","unavailable":"غير متاح","chunksWithEmbeddings":"قطع مع تضمينات","coverage":"التغطية","regenerate":"إعادة توليد التضمينات","regenerating":"جاري إعادة التوليد..."},"collections":{"title":"مجموعات المعرفة","description":"اجمع المستندات في مجموعات وأرفقها بأي محادثة.","namePlaceholder":"اسم المجموعة","create":"إنشاء","none":"بدون مجموعة","deleteConfirm":"حذف هذه المجموعة؟ ستبقى المستندات بداخلها.","createFailed":"فشل إنشاء المجموعة","deleteFailed":"فشل حذف المجموعة","assignFailed":"فشل نقل المستند"},"library":{"title":"المستندات المرفوعة","description":"المستندات المتاحة كسياق للمحادثة. المستند المرفوع في محادثة يبقى في محادثته فقط؛ أما المستند بلا محادثة ولا مجموعة فينضم إلى كل المحادثات.","empty":"لا توجد مستندات مرفوعة بعد.","chatScope":"محادثة واحدة","everyChatScope":"كل المحادثات","deleteConfirm":"حذف \\"{{name}}\\"؟ سيختفي من كل المحادثات.","deleteFailed":"فشل حذف المستند"}},"tts":{"title":"تحويل النص إلى كلام","description":"إعداد إعدادات تحويل النص إلى كلام لقراءة الرسائل بصوت عالٍ","loadingProviders":"جاري تحميل مزودي TTS...","noProviders":"لا يوجد مزودو TTS","noProvidersDescription":"قم بإعداد إضافة مع دعم TTS لتفعيل تحويل النص إلى كلام","enable":"تفعيل TTS","enableDescription":"السماح بتحويل النص إلى كلام لرسائل المساعد","autoPlay":"تشغيل تلقائي للاستجابات","autoPlayDescription":"قراءة رسائل المساعد الجديدة بصوت عالٍ تلقائياً","streamSentences":"تشغيل طبيعي على دفعات","streamSentencesDescription":"إنشاء عدة دفعات تراعي العبارات مسبقًا وتشغيلها كاستجابة واحدة متواصلة.","voiceConfiguration":"إعداد الصوت","model":"نموذج TTS","modelDescription":"اختر النموذج لتوليد الكلام","voice":"الصوت","selectVoice":"اختر صوتاً","voiceDescription":"اختر الصوت لتحويل النص إلى كلام","providerDefaultVoice":"يختار هذا النموذج صوته الافتراضي ما لم تقدّم تسجيلاً مرجعيًا عند إنشاء الكلام.","voiceCloningAvailable":"استنساخ الصوت متاح","voiceCloningAvailableDescription":"استخدم «تخيّل ← الصوت» لإنشاء كلام من تسجيل مرجعي تم بإذن صاحبه ونصه المطابق بدقة. ويمكنك اختياريًا حفظ المرجع كصوت قابل لإعادة الاستخدام.","savedVoiceOption":"{{name}} (صوت محفوظ)","savedVoices":"الأصوات المحفوظة","loadingSavedVoices":"جارٍ تحميل الأصوات المحفوظة…","deleteSavedVoice":"حذف الصوت المحفوظ {{name}}","deleteSavedVoiceConfirm":"هل تريد حذف الصوت المحفوظ «{{name}}»؟ ستتم إزالة تسجيله المرجعي ونصه.","savedVoiceDeleted":"تم حذف الصوت المحفوظ","savedVoicePreferenceCleanupFailed":"تم حذف الصوت المحفوظ، لكن تعذرت إعادة ضبط إعدادات الكلام","savedVoiceDeleteFailed":"تعذر حذف الصوت المحفوظ","speed":"السرعة","speedSlow":"0.5x","speedNormal":"1.0x","speedFast":"2.0x","availableProviders":"المزودون المتاحون","models":"نماذج","test":"اختبار","testing":"جاري الاختبار...","stop":"إيقاف"},"imageGen":{"title":"توليد الصور","description":"إعداد إعدادات ومزودي توليد الصور","loadingProviders":"جاري تحميل مزودي توليد الصور...","noProviders":"لا يوجد مزودو توليد صور","noProvidersDescription":"قم بإعداد إضافة مع دعم توليد الصور","enable":"تفعيل توليد الصور","enableDescription":"السماح بتوليد الصور بالذكاء الاصطناعي في المحادثات","configuration":"الإعداد","model":"النموذج","modelDescription":"اختر النموذج لتوليد الصور","size":"الحجم","sizeDescription":"دقة الصور المولدة","quality":"الجودة","qualityDescription":"مستوى جودة الصور المولدة","style":"الأسلوب","styleDescription":"إعداد الأسلوب المسبق للصور المولدة","availableProviders":"المزودون المتاحون","models":"نماذج"},"data":{"title":"إدارة البيانات","export":"تصدير البيانات","exportDescription":"نزّل أرشيفًا قابلاً للنقل يضم التفضيلات ومجلدات المحادثات والجلسات والرسائل والملاحظات ومجموعات المعرفة ونصوص المستندات المستخرجة.","exportAll":"تصدير جميع البيانات","import":"استيراد البيانات","importDescription":"استيراد البيانات من تصدير سابق.","importData":"استيراد البيانات","importing":"جاري الاستيراد...","clearSessions":"مسح الجلسات","clearSessionsDescription":"حذف جميع جلسات المحادثة. لا يمكن التراجع عن هذا الإجراء.","clearAll":"مسح الكل","clearing":"جاري المسح...","importOptions":"خيارات الاستيراد","importOptionsDescription":"اختر كيفية التعامل مع البيانات الموجودة","validatingArchive":"جارٍ التحقق من الأرشيف وحساب التغييرات…","archiveValidationFailed":"فشل التحقق من الأرشيف","preflightReport":"معاينة الاستيراد","preflightIncoming":"{{folders}} مجلدات · {{sessions}} محادثات · {{messages}} رسائل · {{notes}} ملاحظات · {{collections}} مجموعات · {{documents}} مستندات · {{chunks}} مقاطع","preflightRemappedIds":"ستُعاد تعيين {{count}} معرّفات لحماية بيانات حساب آخر.","skipDuplicates":"تخطي المكررات","overwrite":"الكتابة فوق الموجود","importResults":"نتائج الاستيراد","preferences":"التفضيلات","imported":"تم الاستيراد","failed":"فشل","sessions":"الجلسات","sessionFolders":"مجلدات الجلسات","notes":"الملاحظات","knowledgeCollections":"مجموعات المعرفة","importedLabel":"تم الاستيراد","overwrittenLabel":"تمت الكتابة فوقه","skipped":"تم التخطي","toCreate":"للإنشاء","toOverwrite":"للكتابة فوقه","toSkip":"للتخطي","documents":"المستندات","warnings":"تحذيرات","refreshAfterImportFailed":"تم استيراد البيانات، لكن تعذّر تحديث بعض العروض. أعد تحميل Libre WebUI لرؤية جميع التغييرات.","errors":"أخطاء","archivedChats":{"title":"المحادثات المؤرشفة","empty":"لا توجد محادثات مؤرشفة","unarchive":"إلغاء الأرشفة"},"archiveScopeV3":"يشمل التفضيلات والمحادثات والمجلدات والملاحظات ومجموعات المعرفة ونصوص المستندات المستخرجة. يستثني الحسابات والأسرار والأصوات الحيوية المستنسخة والوسائط المنشأة والشخصيات والذاكرة وبيانات أو وحدات تخزين Work."},"about":{"title":"حول","versionLabel":"الإصدار","ollama":{"title":"حالة Ollama","version":"الإصدار","healthy":"سليم","unhealthy":"غير سليم"},"stats":{"models":"النماذج","sessions":"الجلسات"},"features":{"privacy":{"title":"الخصوصية أولاً","description":"بياناتك تبقى على جهازك"},"openSource":{"title":"مفتوح المصدر","description":"برنامج مجاني ومفتوح المصدر"},"localInference":{"title":"استدلال محلي","description":"تشغيل نماذج الذكاء الاصطناعي محلياً مع Ollama"}},"openSourceBy":"مفتوح المصدر بواسطة {{company}}","links":{"title":"الروابط","github":"GitHub","githubDescription":"عرض الكود المصدري والمساهمة","website":"الموقع","websiteDescription":"زيارة موقعنا","ollama":"Ollama","ollamaDescription":"معرفة المزيد عن Ollama","documentation":"التوثيق","reportIssue":"الإبلاغ عن المشاكل","reportIssueDescription":"تقارير الأخطاء وطلبات الميزات","gitlab":"مرآة GitLab","gitlabDescription":"مستودع GitLab مستضاف ذاتياً","documentationDescription":"أدلة ودروس ومرجع API"},"version":"الإصدار {{version}}"},"groups":{"general":"عام","chat":"الدردشة","media":"الصوت والصور","connections":"الاتصالات"},"search":{"title":"البحث في الويب","description":"ابحث في الويب عبر مثيل SearXNG مستضاف ذاتيًا. عند التفعيل، يظهر زر البحث في المحادثة ويمكن لمهام Work المتصلة بالشبكة البحث.","enableLabel":"تفعيل البحث في الويب","enableDescription":"إتاحة البحث في الويب للمحادثات ومهام Work. تُنفَّذ عمليات البحث من جانب الخادم عبر المثيل المُهيأ.","urlLabel":"عنوان SearXNG","urlDescription":"عنوان URL الأساسي لمثيل SearXNG بحيث يكون متاحًا من الخادم. توفر حزمة النشر الخاص المرفقة http://searxng:8080.","maxResultsLabel":"النتائج لكل بحث","maxResultsDescription":"عدد النتائج التي تُغذي الرد أو استدعاء الأداة، من 1 إلى 10.","maxResultsInvalid":"يجب أن يكون عدد النتائج بين 1 و10.","safeSearchLabel":"البحث الآمن","safeSearchDescription":"اطلب من المحرك تصفية النتائج الصريحة.","test":"اختبار الاتصال","testing":"جارٍ الاختبار…","testOk":"البحث يعمل — تم إرجاع {{results}} نتيجة","testFailed":"فشل اختبار البحث","save":"حفظ","saved":"تم حفظ إعدادات البحث","saveFailed":"تعذر حفظ إعدادات البحث"}}`),models:{title:`النماذج`,subtitle:`سحب وإدارة ومراقبة نماذج Ollama`,installed:`النماذج المثبتة`,available:`النماذج المتاحة`,pull:`سحب النموذج`,pulling:`جاري السحب...`,delete:`حذف النموذج`,deleting:`جاري الحذف...`,size:`الحجم`,modified:`تم التعديل`,family:`العائلة`,parameters:`المعلمات`,quantization:`التكميم`,noModels:`لا توجد نماذج مثبتة`,pullFirst:`اسحب نموذجاً للبدء`,noModelsFound:`لم يتم العثور على نماذج`},personas:{title:`الشخصيات`,create:`إنشاء شخصية`,edit:`تعديل الشخصية`,delete:`حذف الشخصية`,name:`الاسم`,description:`الوصف`,systemPrompt:`موجه النظام`,model:`النموذج`,avatar:`الصورة الرمزية`,background:`الخلفية`,noPersonas:`لم يتم إنشاء شخصيات`,createFirst:`أنشئ أول شخصية لتخصيص تجربة المحادثة`},gallery:{title:`المعرض`,subtitle:`معرض الصور المولدة بالذكاء الاصطناعي`,imageCount:`{{count}} صورة`,generate:`توليد صورة`,generateDescription:`إنشاء صور بالذكاء الاصطناعي`,generating:`جاري التوليد...`,prompt:`الموجه`,promptPlaceholder:`صف الصورة التي تريد توليدها...`,noImages:`لم يتم توليد صور بعد`,download:`تحميل`,delete:`حذف`,regenerate:`إعادة التوليد`,model:`النموذج`,size:`الحجم`,quality:`الجودة`,created:`تم الإنشاء`},errors:{generic:`حدث خطأ`,network:`خطأ في الشبكة. يرجى التحقق من الاتصال.`,unauthorized:`غير مصرح لك بتنفيذ هذا الإجراء.`,notFound:`لم يتم العثور على المورد المطلوب.`,serverError:`خطأ في الخادم. يرجى المحاولة لاحقاً.`,validation:`يرجى التحقق من المدخلات والمحاولة مرة أخرى.`},keyboard:{title:`اختصارات لوحة المفاتيح`,toggleSidebar:`تبديل الشريط الجانبي`,openSettings:`فتح الإعدادات`,toggleDarkMode:`تبديل الوضع الداكن`,showShortcuts:`إظهار اختصارات لوحة المفاتيح`,closeModals:`إغلاق النوافذ المنبثقة`,groups:{navigation:`التنقل`,general:`عام`,chat:`المحادثة`,workspace:`مساحة العمل`},actions:{sendMessage:`إرسال الرسالة`,newLine:`سطر جديد في الرسالة`,saveEdit:`حفظ الرسالة المعدّلة`,cancelEdit:`إلغاء التعديل`,saveFile:`حفظ الملف`,formatCode:`تنسيق الشيفرة`},description:`كل اختصارات لوحة المفاتيح المتاحة في Libre WebUI.`,newChat:`محادثة جديدة`,newWork:`جلسة عمل جديدة`,openPalette:`فتح لوحة الأوامر`},modelManager:{title:`النماذج`,loading:`جاري تحميل النماذج...`,systemStatus:{online:`Ollama متصل`,offline:`Ollama غير متصل`,models:`نموذج`,models_plural:`نماذج`,running:`قيد التشغيل`,vram:`VRAM`},sections:{pull:`سحب نموذج جديد`,library:`تصفح المكتبة`,running:`النماذج قيد التشغيل`,local:`النماذج المحلية`,advanced:`إجراءات متقدمة`,huggingface:`HuggingFace Hub`},pull:{placeholder:`أدخل اسم النموذج (مثل llama3.2:3b، deepseek-r1:14b)`,button:`سحب`,cancel:`إلغاء`,popular:`النماذج الشائعة:`,browseAll:`تصفح جميع النماذج على ollama.com`,success:`تم سحب النموذج {{name}} بنجاح`,cancelled:`تم إلغاء سحب النموذج`,failed:`فشل سحب النموذج`,enterName:`يرجى إدخال اسم النموذج`,restricted:`تثبيت النماذج مقصور على المسؤولين في هذا المثيل.`},progress:{starting:`جاري التهيئة...`,pulling:`جاري تحميل النموذج...`,pullingLayer:`تحميل`,verifying:`جاري التحقق من السلامة...`,verifyingDigest:`التحقق من تجزئة sha256`,writing:`جاري كتابة البيان...`,cleaning:`جاري التنظيف...`},library:{available:`متاح`,search:`البحث عن نماذج...`,noResults:`لم يتم العثور على نماذج تطابق معاييرك`,installed:`مثبت`,more:`+{{count}} المزيد`,refresh:`تحديث المكتبة`},local:{noModels:`لم يتم تثبيت نماذج بعد`,pullToStart:`اسحب نموذجاً أعلاه للبدء`,installed:`مثبت`,running:`قيد التشغيل`,info:`معلومات`,copy:`نسخ`,delete:`حذف`,deleteConfirm:`هل أنت متأكد من حذف النموذج "{{name}}"؟`,deleteSuccess:`تم حذف النموذج {{name}} بنجاح`,deleteFailed:`فشل حذف النموذج`},advanced:{createModel:`إنشاء نموذج`,fromModelfile:`من Modelfile`,copyModel:`نسخ نموذج`,duplicateExisting:`تكرار موجود`,testEmbeddings:`اختبار التضمينات`,generateVectors:`توليد المتجهات`,healthCheck:`فحص الصحة`,testConnection:`اختبار الاتصال`,healthy:`Ollama سليم!`},modals:{details:{title:`تفاصيل النموذج`,info:`معلومات النموذج`,family:`العائلة`,parameters:`المعلمات`,quantization:`التكميم`,format:`التنسيق`,systemPrompt:`موجه النظام`,template:`القالب`,license:`الترخيص`,modelfile:`Modelfile`,noDetails:`لا تتوفر تفاصيل`},copy:{title:`نسخ النموذج`,source:`النموذج المصدر`,selectModel:`اختر نموذجاً...`,newName:`اسم النموذج الجديد`,placeholder:`مثل my-custom-model`,copying:`جاري النسخ...`,button:`نسخ النموذج`,success:`تم نسخ النموذج إلى {{name}}`,failed:`فشل نسخ النموذج`,enterBoth:`يرجى إدخال أسماء المصدر والوجهة`},create:{title:`إنشاء نموذج مخصص`,name:`اسم النموذج`,namePlaceholder:`مثل my-assistant`,modelfile:`Modelfile`,modelfilePlaceholder:`FROM llama3.2
|
|
2
|
+
SYSTEM You are a helpful assistant.`,see:`راجع`,docs:`توثيق Modelfile`,docsLink:`لمرجع الصيغة`,creating:`جاري الإنشاء...`,button:`إنشاء النموذج`,success:`تم إنشاء النموذج {{name}} بنجاح`,failed:`فشل إنشاء النموذج`,enterBoth:`يرجى إدخال اسم النموذج ومحتوى Modelfile`},embeddings:{title:`اختبار التضمينات`,model:`نموذج التضمين`,selectModel:`اختر نموذجاً...`,recommended:`موصى به: nomic-embed-text، mxbai-embed-large`,input:`نص الإدخال`,placeholder:`أدخل النص لتوليد التضمينات...`,generating:`جاري التوليد...`,button:`توليد التضمينات`,result:`النتيجة ({{count}} بُعد)`,success:`تم توليد متجه تضمين من {{count}} بُعد`,failed:`فشل توليد التضمينات`,enterBoth:`يرجى اختيار نموذج وإدخال نص`}},huggingface:{browseAll:`تصفح الكل على HuggingFace`,checkingGguf:`البحث عن ملفات GGUF...`,noGgufAvailable:`لا توجد ملفات GGUF متاحة للسحب المباشر من Ollama`,ggufFilesCount:`ملفات GGUF ({{count}}) - سحب مباشر إلى Ollama`,noModelsFound:`لم يتم العثور على نماذج`,noResults:`لم يتم العثور على نماذج. حاول تعديل البحث أو المرشحات.`,browseAllLink:`تصفح الكل`,search:`البحث في نماذج HuggingFace...`,by:`بواسطة`,gated:`وصول مقيد`,viewOnHF:`عرض على HuggingFace`,sortDownloads:`التنزيلات`,sortLikes:`الإعجابات`,sortRecent:`الأحدث`,taskTextGeneration:`توليد النص`,taskTextToSpeech:`تحويل النص إلى كلام`,taskTextToImage:`تحويل النص إلى صورة`,taskSpeechRecognition:`التعرف على الكلام`,tasks:{textGen:`توليد النص`,tts:`تحويل النص إلى كلام`,image:`تحويل النص إلى صورة`,stt:`التعرف على الكلام`},sort:{downloads:`الأكثر تنزيلاً`,likes:`الأكثر إعجاباً`,recent:`المحدثة مؤخراً`}}},personaManager:{title:`الشخصيات`,subtitle:`إنشاء وإدارة شخصيات الذكاء الاصطناعي مع شخصيات وذكريات وسلوكيات مخصصة`,loading:`جاري تحميل الشخصيات...`,createButton:`إنشاء شخصية`,importExport:`استيراد/تصدير`,stats:{title:`شخصياتك`,count:`تم إنشاء {{count}} شخصية`,count_plural:`تم إنشاء {{count}} شخصيات`},empty:{title:`لا توجد شخصيات بعد`,description:`أنشئ أول شخصية للبدء مع تفاعلات الذكاء الاصطناعي المخصصة`,button:`أنشئ شخصيتك الأولى`},deleteConfirm:`هل أنت متأكد من حذف "{{name}}"؟`,deleteSuccess:`تم حذف الشخصية "{{name}}" بنجاح`,downloadSuccess:`تم تحميل الشخصية "{{name}}" بنجاح`,failed:`فشل {{action}} الشخصية`},personaForm:{title:{create:`إنشاء شخصية جديدة`,edit:`تعديل الشخصية`},subtitle:{create:`أنشئ شخصية ذكاء اصطناعي جديدة مع شخصية مخصصة وأنظمة ذاكرة وقدرات تعلم تكيفية`,edit:`خصص شخصية الذكاء الاصطناعي مع ذاكرة متقدمة وتعلم تكيفي ومعلمات ذكية`},loading:`جاري تحميل النموذج...`,saved:`تم الحفظ`,tabs:{basic:`أساسي`,parameters:`المعلمات`,memory:`الذاكرة والتعلم`,advanced:`متقدم`},basic:{name:`الاسم`,namePlaceholder:`أدخل اسم الشخصية`,model:`النموذج`,selectModel:`اختر نموذجاً`,description:`الوصف`,descriptionPlaceholder:`صف شخصيتك...`,systemPrompt:`موجه النظام`,systemPromptPlaceholder:`أدخل موجه النظام الذي يحدد سلوك شخصيتك...`,systemPromptHint:`يحدد موجه النظام كيف ستتصرف شخصيتك وتستجيب.`},parameters:{temperature:`درجة الحرارة`,temperatureHint:`يتحكم في الإبداع مقابل الاتساق`,topP:`Top-P`,topPHint:`يتحكم في تنوع الاستجابة`,topK:`Top-K`,topKHint:`يحد المفردات لأعلى k رمز`,contextWindow:`نافذة السياق`,contextWindowHint:`الحد الأقصى لطول سجل المحادثة`,maxTokens:`الحد الأقصى للرموز`,maxTokensHint:`الحد الأقصى لطول الاستجابة`,repeatPenalty:`عقوبة التكرار`,repeatPenaltyHint:`يقلل الاستجابات المتكررة`},memory:{title:`نظام الذاكرة`,subtitle:`الشخصية تتذكر المحادثات بمرور الوقت`,enableHint:`فعّل نظام الذاكرة للسماح لشخصيتك بتذكر المحادثات وبناء السياق بمرور الوقت.`,loading:`جاري تحميل حالة الذاكرة...`,noData:`لا توجد بيانات ذاكرة بعد`,memories:`الذكريات`,mbUsed:`ميجابايت مستخدمة`,lastBackup:`آخر نسخة احتياطية`,never:`أبداً`,maxMemories:`الحد الأقصى للذكريات`,maxMemoriesHint:`كم ذكرى يمكن لهذه الشخصية تخزينها`,retention:`الاحتفاظ بالذاكرة`,retentionHint:`أيام الاحتفاظ بالذكريات قبل التنظيف`,autoCleanup:`تنظيف تلقائي للذكريات القديمة`,wipeAll:`مسح جميع الذكريات`,wipeCannot:`لا يمكن التراجع عن هذا`,wipeButton:`مسح`,wiping:`جاري المسح...`,wipeConfirm:`هل أنت متأكد من مسح جميع الذكريات؟ لا يمكن التراجع عن هذا.`,wipeSuccess:`تم مسح {{count}} ذكرى`},learning:{title:`التعلم التكيفي`,subtitle:`الشخصية تتطور بناءً على التفاعلات`,enableHint:`فعّل التعلم التكيفي للسماح لشخصيتك بالتطور وتخصيص الاستجابات بناءً على تفاعلاتك.`,speed:`سرعة التعلم`,slow:`بطيء`,slowDesc:`تغييرات تدريجية`,balanced:`متوازن`,balancedDesc:`وتيرة معتدلة`,fast:`سريع`,fastDesc:`تكيف سريع`,autoAdapt:`التكيف التلقائي مع تفضيلات المستخدم`,whatLearns:`ما تتعلمه الشخصية:`,conversationTone:`نبرة المحادثة`,responseStyle:`أسلوب الاستجابة`,userPreferences:`تفضيلات المستخدم`,topicInterests:`اهتمامات الموضوع`},advanced:{embeddingModel:`نموذج التضمين`,embeddingHint:`اختر النموذج المستخدم لتشفير الذاكرة والبحث الدلالي. يتم عرض نماذج التضمين أولاً، تليها النماذج الأخرى المتاحة.`,noModels:`لم يتم العثور على نماذج`,embeddingModels:`نماذج التضمين`,otherModels:`نماذج أخرى`,installHint:`ثبّت نموذج تضمين:`,recommended:`موصى به: nomic-embed-text، mxbai-embed-large، bge-m3، snowflake-arctic-embed`,aboutTitle:`حول الإعدادات المتقدمة`,aboutDescription:`يُستخدم نموذج التضمين بواسطة نظام الذاكرة لفهم المعنى الدلالي والعثور على الذكريات ذات الصلة أثناء المحادثات. اختر نموذجاً يتناسب مع حالة استخدامك والموارد المتاحة.`},actions:{cancel:`إلغاء`,save:`حفظ`,saving:`جاري الحفظ...`,saveClose:`حفظ وإغلاق`,create:`إنشاء`},success:{created:`تم إنشاء الشخصية`,updated:`تم تحديث الشخصية`},error:{saveFailed:`فشل الحفظ`}},personaCard:{enhanced:`محسّن`,systemPrompt:`موجه النظام`,memories:`ذكريات`,use:`استخدام`,editTooltip:`تعديل الشخصية`,downloadTooltip:`تحميل الشخصية`,backup:`نسخة احتياطية`,exportDNA:`تصدير DNA`,wipeMemories:`مسح الذكريات`,wipeConfirm:`هل أنت متأكد من مسح جميع ذكريات هذه الشخصية؟ لا يمكن التراجع عن هذا الإجراء.`,wipeSuccess:`تم مسح {{count}} ذكرى`,backupSuccess:`تم تحميل نسخة الشخصية الاحتياطية بنجاح`,dnaSuccess:`تم تصدير DNA الشخصية بنجاح`,failed:`فشل {{action}}`},userManager:{title:`إدارة المستخدمين`,subtitle:`إدارة حسابات المستخدمين والصلاحيات`,pageDescription:`إدارة حسابات المستخدمين والأذونات وعناصر التحكم في الوصول لمثيل Libre WebUI الخاص بك.`,loading:`جاري تحميل المستخدمين...`,createUser:`إنشاء مستخدم`,search:`البحث عن مستخدمين...`,noUsers:`لم يتم العثور على مستخدمين`,noUsersMatching:`لا يوجد مستخدمون يطابقون بحثك`,columns:{user:`المستخدم`,email:`البريد الإلكتروني`,role:`الدور`,created:`تم الإنشاء`,actions:`الإجراءات`},roles:{admin:`مسؤول`,user:`مستخدم`},noEmail:`لا يوجد بريد إلكتروني`,deleteConfirm:`هل أنت متأكد من حذف المستخدم "{{name}}"؟`,deleteSuccess:`تم حذف المستخدم بنجاح`,deleteFailed:`فشل حذف المستخدم`,cannotDeleteSelf:`لا يمكنك حذف حسابك الخاص`,form:{title:{create:`إنشاء مستخدم`,edit:`تعديل المستخدم`},username:`اسم المستخدم`,usernamePlaceholder:`أدخل اسم المستخدم`,email:`البريد الإلكتروني`,emailPlaceholder:`أدخل البريد الإلكتروني (اختياري)`,password:`كلمة المرور`,passwordPlaceholder:`أدخل كلمة المرور`,passwordHint:`اتركها فارغة للاحتفاظ بكلمة المرور الحالية`,role:`الدور`,creating:`جاري الإنشاء...`,updating:`جاري التحديث...`,createButton:`إنشاء مستخدم`,updateButton:`تحديث المستخدم`,createSuccess:`تم إنشاء المستخدم بنجاح`,updateSuccess:`تم تحديث المستخدم بنجاح`,createFailed:`فشل إنشاء المستخدم`,updateFailed:`فشل تحديث المستخدم`},approval:{title:`الموافقات المعلقة`,description:`راجع التسجيلات الجديدة قبل السماح لها بالدخول إلى هذا المثيل.`,registered:`مسجل`,activate:`تفعيل الحساب`,reject:`رفض التسجيل`,approved:`يمكن لـ {{name}} الآن تسجيل الدخول.`,failed:`تعذر الموافقة على الحساب.`,notification:`{{count}} تسجيل ينتظر موافقتك.`,notificationBadge:`{{count}} موافقات مستخدمين معلقة`},workAccess:{title:`الوصول إلى Work`,description:`السماح لجميع المستخدمين النشطين بإنشاء مهام Work وتشغيلها في بيئات معزولة. يتمتع المسؤولون بالوصول دائمًا؛ وتبقى مجلدات المضيف مقصورة على المسؤولين.`,saved:`تم تحديث الوصول إلى Work`,saveFailed:`تعذر تحديث الوصول إلى Work`},workPolicies:{title:`سياسات Work`,description:`إعدادات تشغيل مسماة (الصورة، الحدود، الإيقاف عند الخمول) يمكن إنشاء المهام وفقها. الحقول الفارغة ترث الإعدادات العامة.`,add:`إضافة سياسة`,name:`الاسم`,image:`الصورة`,memory:`الذاكرة`,cpu:`المعالجات`,pids:`حد PID`,workspaceSize:`حجم مساحة العمل`,idleMinutes:`الإيقاف عند الخمول (دقائق)`,networkDefault:`الشبكة الافتراضية`,networkInherit:`وراثة الافتراضي`,networkOn:`مفعّلة`,networkOff:`معطّلة`,save:`حفظ`,cancel:`إلغاء`,edit:`تعديل السياسة`,delete:`حذف السياسة`,deleteConfirm:`هل تريد حذف هذه السياسة؟ ستعود المهام التي تستخدمها إلى الإعدادات العامة.`,empty:`لا توجد سياسات بعد. تستخدم المهام إعدادات التشغيل العامة.`,saved:`تم حفظ سياسة Work`,deleted:`تم حذف سياسة Work`,failed:`تعذر حفظ سياسة Work`,invalidNumber:`يجب أن يكون حد PID والإيقاف عند الخمول أرقامًا.`},modelAccess:{title:`تنزيل النماذج`,description:`السماح لجميع المستخدمين النشطين بسحب النماذج من Ollama ومتصفح Hugging Face. يمكن للمسؤولين دائمًا تنزيل النماذج.`,saved:`تم تحديث صلاحية تنزيل النماذج`,saveFailed:`تعذر تحديث صلاحية تنزيل النماذج`},webSearchAccess:{title:`البحث في الويب`,description:`السماح لجميع المستخدمين النشطين باستخدام البحث في الويب في المحادثات ومهام Work. يمكن للمسؤولين استخدامه دائمًا. يُهيأ المحرك في الإعدادات > البحث.`,saved:`تم تحديث صلاحية البحث في الويب`,saveFailed:`تعذر تحديث صلاحية البحث في الويب`},agentAccess:{title:`الوكلاء`,description:`إتاحة قسم الوكلاء (Libre Claw) للمسؤولين. تعمل واجهات الوكلاء على المضيف بهوية مستخدم الخادم، خارج بيئة Work المعزولة.`,saved:`تم تحديث الوصول إلى الوكلاء`,saveFailed:`تعذر تحديث الوصول إلى الوكلاء`,lockedByEnv:`مثبَّت بواسطة متغير البيئة AGENT_CLI_MODELS_ENABLED.`}},chatHistory:{label:`سجل المحادثة`,jumpToTurn:`الانتقال إلى الدور {{index}} من {{total}}`},chatMessage:{you:`أنت`,assistant:`المساعد`,system:`النظام`,copy:`نسخ`,copyMessage:`نسخ الرسالة`,copied:`تم النسخ!`,regenerate:`إعادة التوليد`,regenerateResponse:`إعادة توليد الاستجابة`,edit:`تعديل`,editSystemMessage:`تعديل رسالة النظام`,saveChanges:`حفظ التغييرات`,cancelEditing:`إلغاء التعديل`,saveAndSubmit:`حفظ وإرسال`,goodResponse:`رد جيد`,badResponse:`رد سيئ`,delete:`حذف`,deleteConfirm:`حذف هذه الرسالة؟`,branch:`تفرع`,speaking:`جاري التحدث...`,speakMessage:`نطق الرسالة`,stopSpeaking:`إيقاف التحدث`,showMore:`عرض المزيد`,showLess:`عرض أقل`,thinking:`يفكر`,thoughtFor:`فكّر لمدة {{duration}}`,hiddenLines:`الأسطر المخفية: {{count}}`,systemMessagePlaceholder:`أدخل رسالة النظام...`,fullSizeImage:`صورة بالحجم الكامل`,startConversation:`ابدأ محادثة`,startConversationDescription:`أرسل رسالة للبدء في الدردشة مع مساعدك الذكي. اطرح أسئلة، احصل على مساعدة في البرمجة، أو أجرِ محادثة طبيعية.`,scrollToBottom:`انتقل إلى الأسفل`,newMessages:`رسائل جديدة`},imageGallery:{title:`معرض الصور`,noImages:`لا توجد صور بعد`,noImagesHint:`ولّد أول صورة باستخدام اللوحة على اليمين`,delete:`حذف`,download:`تحميل`,deleteConfirm:`هل أنت متأكد من حذف هذه الصورة؟`,deleteSuccess:`تم حذف الصورة`,deleteFailed:`فشل حذف الصورة`,downloadFailed:`فشل تحميل الصورة`,loadMore:`تحميل المزيد ({{current}} من {{total}})`,loadFailed:`فشل تحميل المعرض`},imageGeneration:{title:`توليد صورة`,prompt:`الموجه`,promptPlaceholder:`صف الصورة التي تريد إنشاءها...`,model:`النموذج`,selectModel:`اختر نموذجاً`,noModels:`لا توجد نماذج توليد صور متاحة`,configurePlugin:`قم بإعداد إضافة مع دعم توليد الصور`,size:`الحجم`,quality:`الجودة`,style:`الأسلوب`,generate:`توليد`,generating:`جاري التوليد...`,success:`تم توليد الصورة بنجاح`,failed:`فشل توليد الصورة`,enterPrompt:`يرجى إدخال موجه`,promptTooLong:`يتجاوز النص الحد الأقصى البالغ {{max}} حرف`},errorBoundary:{title:`حدث خطأ ما`,description:`واجهنا خطأ غير متوقع. يرجى تحديث الصفحة.`,tryAgain:`تحديث الصفحة`,goHome:`الذهاب للرئيسية`,errorDetails:`تفاصيل الخطأ (التطوير)`},documents:{title:`المستندات`,upload:`رفع مستند`,uploading:`جاري الرفع...`,noDocuments:`لم يتم رفع مستندات`,uploadHint:`ارفع مستندات لاستخدامها في محادثاتك`,delete:`حذف`,deleteConfirm:`هل أنت متأكد من حذف هذا المستند؟`,deleteSuccess:`تم حذف المستند`,deleteFailed:`فشل حذف المستند`,uploadSuccess:`تم رفع المستند بنجاح`,uploadFailed:`فشل رفع المستند`,types:`مدعوم: PDF، TXT، MD، DOCX`,unsupportedFileType:`يتم دعم ملفات PDF وTXT فقط`,fileSizeTooLarge:`يجب أن يكون حجم الملف أقل من 10 ميجابايت`,uploadSuccessWithName:`تم رفع المستند "{{name}}" بنجاح`,removeSuccess:`تم إزالة المستند بنجاح`,removeFailed:`فشل إزالة المستند`,removeError:`حدث خطأ أثناء إزالة المستند`,clickToUpload:`انقر للرفع`,orDragAndDrop:`أو اسحب وأفلت`,fileTypesAndSize:`ملفات PDF أو TXT حتى 10 ميجابايت`,uploadedDocuments:`المستندات المرفوعة`,removeDocument:`إزالة المستند`},ttsButton:{speak:`تحدث`,stop:`إيقاف`,speaking:`جاري التحدث...`,generateFailed:`فشل توليد الكلام`,playbackFailed:`فشل تشغيل الصوت`,stopSpeaking:`إيقاف التحدث`,preparingSpeech:`جارٍ تحضير الكلام...`,generatingSpeech:`جاري توليد الكلام...`,bufferingSpeech:`جارٍ تخزين الكلام مؤقتًا...`,enableAudio:`تمكين الصوت والقراءة بصوت عالٍ`,enableAudioShort:`تمكين الصوت`,readAloud:`قراءة بصوت عالٍ`},artifacts:{title:`المخرجات`,code:`الكود`,preview:`معاينة`,copy:`نسخ الكود`,copied:`تم النسخ!`,download:`تحميل`,expand:`توسيع`,collapse:`طي`,openInNewTab:`فتح في علامة تبويب جديدة`,invalidSvg:`محتوى SVG غير صالح`,invalidJson:`محتوى JSON غير صالح`,previewMode:`وضع المعاينة`,codeMode:`وضع الكود`,copyContent:`نسخ المحتوى`,openInPanel:`فتح في اللوحة`,openInNewWindow:`فتح في نافذة جديدة`,created:`تم الإنشاء`,closePanelEsc:`إغلاق اللوحة (Esc)`,copyButton:`نسخ`,open:`فتح`,dragEdgeToResize:`اسحب الحافة لتغيير الحجم`,previewUnavailable:`Preview unavailable`,previewUnavailableDescription:`This artifact does not contain renderable preview content. Switch to code view to inspect the source.`,versionOf:`الإصدار {{current}} من {{total}}`,previousVersion:`الإصدار السابق`,nextVersion:`الإصدار التالي`},personaImportExport:{title:`استيراد وتصدير الشخصيات`,description:`صدّر شخصياتك لمشاركتها أو استورد شخصيات من الآخرين`,exportPersonas:`تصدير الشخصيات`,importPersonas:`استيراد الشخصيات`,noPersonasToExport:`لا توجد شخصيات للتصدير`,personasAvailable:`{{count}} شخصية متاحة`,personasAvailable_plural:`{{count}} شخصيات متاحة`,exportAll:`تصدير الكل`,uploadJsonFile:`رفع ملف JSON`,pasteJsonLabel:`لصق بيانات JSON`,pasteJsonPlaceholder:`الصق بيانات JSON للشخصية هنا...`,importing:`جاري الاستيراد...`,importButton:`استيراد الشخصية/الشخصيات`,expectedFormat:`تنسيق JSON المتوقع:`,exportSuccess:`تم تصدير الشخصية "{{name}}" بنجاح`,exportFailed:`فشل تصدير الشخصية`,exportAllSuccess:`تم تصدير جميع الشخصيات {{count}} بنجاح`,exportAllFailed:`فشل تصدير الشخصيات`,pasteJsonData:`يرجى لصق بيانات JSON للشخصية`,importMultipleSuccess:`تم استيراد {{count}} شخصيات بنجاح`,importMultipleFailed:`فشل استيراد {{count}} شخصيات`,importNoneFailed:`فشل استيراد أي شخصيات`,importSuccess:`تم استيراد الشخصية بنجاح`,importFailed:`فشل استيراد الشخصية`},generationStats:{details:`التفاصيل`,promptTokens:`رموز الإدخال:`,generatedTokens:`الرموز المولدة:`,totalTokens:`إجمالي الرموز:`,speed:`السرعة:`,promptEval:`تقييم الإدخال:`,generation:`التوليد:`,modelLoad:`تحميل النموذج:`,totalTime:`الوقت الإجمالي:`,generatedAt:`تم التوليد في:`},userMenu:{loggedOut:`تم تسجيل الخروج بنجاح`,pictureUpdated:`تم تحديث صورة الملف الشخصي`,failedUpdateAvatar:`فشل تحديث الصورة الرمزية`,failedUpdatePicture:`فشل تحديث صورة الملف الشخصي`,noEmail:`لم يتم تقديم بريد إلكتروني`,changePicture:`تغيير الصورة`,settings:`الإعدادات`,userManagement:`إدارة المستخدمين`,signOut:`تسجيل الخروج`,changeProfilePicture:`تغيير صورة الملف الشخصي`},pluginManager:{title:`مدير الإضافات`,upload:`تحميل`,addJson:`إضافة JSON`,browseHF:`تصفح HF Hub`,confirmDelete:`هل أنت متأكد من حذف هذا الإضافة؟`,uploading:`جاري تحميل الإضافة...`,pasteJson:`الصق JSON الإضافة هنا...`,installPlugin:`تثبيت الإضافة`,loading:`جاري تحميل الإضافات...`,noPlugins:`لم يتم تثبيت أي إضافة`,noPluginsDescription:`قم بتحميل ملف إضافة أو أضف إضافة من JSON للبدء.`,active:`نشط`,id:`المعرف`,endpoint:`نقطة النهاية`,activate:`تفعيل`,deactivate:`تعطيل`,activePlugin:`الإضافة النشطة`,activePluginDescription:`سيتم توجيه جميع طلبات الدردشة عبر هذه الإضافة`,variables:{title:`المتغيرات`,save:`حفظ`,saving:`جاري الحفظ...`,saved:`تم حفظ المتغيرات`,saveFailed:`فشل حفظ المتغيرات`,resetDefaults:`إعادة التعيين للافتراضي`,reset:`تم إعادة تعيين المتغيرات`,sensitiveSet:`تم تعيين القيمة (أدخل قيمة جديدة للتغيير)`,resetFailed:`فشل إعادة تعيين المتغيرات`,showValue:`إظهار قيمة {{label}}`,hideValue:`إخفاء قيمة {{label}}`,connection:`اتصال`,advanced:`معلمات متقدمة`,inherited:`استخدام افتراضي للمزود`,inheritedValue:`استخدام افتراضي للمزود ({{value}})`,enabled:`ممكّن`,disabled:`معطّل`,required:`القيمة مطلوبة`,fullApiEndpoint:`URL كامل لنقطة نهاية API`,endpointHelp:`أدخل URL الطلب الكامل، بما في ذلك مسار العملية الخاص به (على سبيل المثال، /v1/chat/completions)، وليس فقط URL الأساسي للمزود.`,invalidUrl:`أدخل URL كامل وصالح لنقطة نهاية API، على سبيل المثال https://provider.example/v1/chat/completions`,insecureUrl:`يجب أن تستخدم نقاط نهاية API بروتوكول HTTP أو HTTPS.`,httpWarning:`لا يقوم HTTP بتشفير بيانات الاعتماد أو حركة المرور. استخدمه فقط على شبكة موثوقة.`,invalidBaseUrl:`لا يمكن أن تحتوي عناوين URL الأساسية على سلسلة استعلام أو جزء.`,invalidApiPath:`يجب أن يبدأ بـ / وألا يحتوي على URL أو استعلام أو جزء أو مقطع ..`,tooLong:`القيمة طويلة جدًا`}},huggingface:{title:`متصفح نماذج HuggingFace`,subtitle:`تصفح واختيار النماذج من المركز`,searchPlaceholder:`البحث عن نماذج...`,filters:`عوامل التصفية`,task:`المهمة`,sortBy:`ترتيب حسب`,noModels:`لم يتم العثور على نماذج`,adjustSearch:`حاول ضبط البحث أو عوامل التصفية`,gated:`مقيد`,selected:`محدد`,select:`اختيار`,refresh:`تحديث`,modelsFound:`نماذج موجودة`},demoMode:{title:`وضع تجريبي`,github:`GitHub`},personaBackground:{label:`صورة الخلفية`,uploadBackgroundImage:`رفع صورة الخلفية`,dragAndDrop:`اسحب وأفلت صورة أو انقر للتصفح`,chooseImage:`اختيار صورة`,uploading:`جارٍ الرفع...`,enterImageUrl:`أو أدخل رابط الصورة`,supportedFormats:`يدعم: JPG, PNG, GIF, WebP (الحد الأقصى 5 ميجابايت). الصور العريضة الأفقية تعمل بشكل أفضل.`,customBackground:`صورة خلفية مخصصة`,clickToChange:`انقر للتغيير أو الإزالة`,removed:`تم إزالة الخلفية`,uploaded:`تم رفع الخلفية بنجاح`,invalidFile:`يرجى اختيار ملف صورة صالح`,fileTooLarge:`يجب أن يكون حجم صورة الخلفية أقل من 5 ميجابايت`,readFailed:`فشل في قراءة ملف الصورة`,uploadFailed:`فشل في رفع صورة الخلفية`},modelSelector:{searchInstalled:`البحث في النماذج المثبتة...`,searchOllama:`البحث في مكتبة Ollama...`,searchHuggingFace:`البحث في HuggingFace...`,selectModel:`اختر نموذجًا`,personas:`الشخصيات`,ollamaModels:`نماذج Ollama`,pluginModels:`نماذج الإضافات`,actions:`الإجراءات`,installed:`مثبت`,use:`استخدام`,pull:`تنزيل`,pullRestricted:`تثبيت النماذج مقصور على المسؤولين في هذا المثيل.`,adminOnlyPull:`للمسؤولين فقط`,legacyProvider:`المزود غير مسجل`,providerNotRecorded:`المزود غير مسجل`,providerUnavailable:`المزود غير متاح`,reselectProvider:`أعد اختيار مزود لتثبيت هذا النموذج`,unavailable:`غير متاح`,unavailableSelections:`اختيارات غير متاحة`,agentModels:`الوكلاء`},libreClaw:{title:`الوكلاء`,subtitle:`يعمل الوكيل المحلي والموافقات والجداول الزمنية والذاكرة والأدوات والاستخدام.`,dashboard:`لوحة المعلومات`,connection:{disconnectedTitle:`خدمة Libre Claw غير متصلة`,disconnectedDescription:`ابدأ تشغيله محليًا باستخدام <command>libre-claw start</command> أو قم بتعيين <env>LIBRE_CLAW_BASE_URL</env> في بيئة الواجهة الخلفية.`},status:{connected:`متصل`,disconnected:`غير متصل`,activeRuns:`{{count}} نشط`,activeRuns_plural:`{{count}} نشط`},states:{queued:`في قائمة الانتظار`,running:`قيد التشغيل`,blocked:`محظور`,done:`تم`,failed:`فشل`,cancelled:`تم الإلغاء`},startRun:{title:`بدء تشغيل الوكيل`,placeholder:`اطلب من Libre Claw فحص الريبو، أو إصلاح الخلل، أو إجراء مراجعة، أو جدولة تقرير...`,chatRun:`تشغيل الدردشة`,goalMode:`وضع الهدف`,providerOverride:`تجاوز الموفر`,modelOverride:`تجاوز النموذج`,run:`تشغيل`},modelRoute:{title:`الطريق النموذجي`,providerPlaceholder:`مزود`,modelPlaceholder:`نموذج`,persistGlobal:`استمر في Libre Claw التكوين العام`,saveModel:`حفظ النموذج`,theme:`سمة Libre Claw`,saveTheme:`حفظ الموضوع`},runs:{title:`التشغيلات`,empty:`لا توجد تشغيلات Libre Claw بعد.`},timeline:{title:`الخط الزمني للتشغيل`,empty:`حدد تشغيلًا لتفقد أحداثه.`,streaming:`الجري...`,assistantResponse:`رد مساعد`,resultOk:`حسنا`,resultError:`خطأ`,labels:{userMessage:`رسالة المستخدم`,toolCall:`استدعاء الأداة`,toolResult:`نتيجة الأداة`,approvalRequest:`طلب الموافقة`,approvalResponse:`رد الموافقة`,runStarted:`بدأ التشغيل`,runFinished:`انتهى التشغيل`,usage:`الاستخدام`,error:`خطأ`}},approvals:{needed:`الموافقة مطلوبة`,allowOnce:`السماح مرة واحدة`,alwaysAllowTool:`السماح دائمًا بالأداة`,deny:`رفض`,toolApprovalRequested:`تم طلب الموافقة على الأداة`},automations:{title:`الأتمتة`,namePlaceholder:`الاسم`,schedulePlaceholder:`daily 09:00`,promptPlaceholder:`موجه الأتمتة`,create:`إنشاء`,empty:`لا توجد عمليات أتمتة مجدولة Libre Claw.`,runNow:`تشغيل الآن`,pause:`وقفة`,resume:`استئناف`,routes:{report:`تقرير`,telegram:`Telegram`},status:{active:`نشط`,paused:`متوقف مؤقتًا`}},usageFallback:{title:`الاستخدام والاحتياطي`,usage:`الاستخدام`,fallbackRoute:`الطريق الاحتياطي`,noUsage:`لا توجد سجلات استخدام حتى الآن.`},metrics:{provider:`مزود`,model:`نموذج`,input:`الإدخال`,output:`الإخراج`,cached:`مخبأة`,reasoning:`المنطق`,cost:`التكلفة`,tool:`أداة`,resolution:`القرار`,state:`الحالة`,stopReason:`سبب التوقف`,tokens:`{{formatted}} رمز مميز`,tokens_plural:`{{formatted}} الرموز`},fallbacks:{tool:`أداة`,unknown:`غير معروف`,resolved:`حلها`,unknownError:`خطأ غير معروف`},toasts:{loadStatusFailed:`لا يمكن تحميل حالة Libre Claw`,enterTask:`أدخل مهمة لـ Libre Claw`,runStarted:`بدأ تشغيل Libre Claw`,startRunFailed:`تعذر بدء تشغيل Libre Claw`,runCancelled:`تم إلغاء التشغيل`,cancelRunFailed:`تعذر إلغاء التشغيل`,approved:`تمت الموافقة عليه`,denied:`مرفوض`,resolvePermissionFailed:`لا يمكن حل الإذن`,providerModelRequired:`مطلوب الموفر والنموذج`,modelUpdated:`تم تحديث نموذج Libre Claw`,updateModelFailed:`لا يمكن تحديث النموذج`,themeUpdated:`تم تحديث سمة Libre Claw`,updateThemeFailed:`لا يمكن تحديث الموضوع`,automationRequired:`مطلوب اسم الأتمتة والجدول الزمني والموجه`,automationCreated:`تم إنشاء الأتمتة`,createAutomationFailed:`لا يمكن إنشاء الأتمتة`,automationUpdated:`تم تحديث الأتمتة`,updateAutomationFailed:`لا يمكن تحديث الأتمتة`}},work:JSON.parse(`{"title":"العمل","subtitle":"مساحات عمل معزولة للنماذج","tasks":{"title":"مهام العمل","subtitle":"مساحات عمل محلية دائمة","new":"مهمة جديدة","emptyTitle":"لا توجد مهام عمل بعد","empty":"ستظهر مهام العمل هنا بعد إرسال الرسالة الأولى.","untitled":"مهمة بلا عنوان","actions":"إجراءات المهمة","delete":"حذف المهمة","deleteNamed":"حذف {{title}}","deleteConfirm":"هل تريد حذف «{{title}}» ومساحة عملها نهائيًا؟","close":"إغلاق مهام العمل","open":"فتح مهام العمل","rename":"عنوان المهمة","loading":"جارٍ تحميل المهمة…","notFound":"مهمة العمل هذه غير متاحة","back":"بدء مهمة جديدة","status":"الحالة: {{status}}"},"landing":{"title":"بدء مهمة عمل جديدة","description":"امنح نموذجًا محليًا أو تابعًا لمزوّد مُعدّ مساحة عمل دائمة ومعزولة. يمكنه فحص الملفات وتشغيل الأدوات والمتابعة من حيث توقف عند عودتك.","isolated":"معزولة","isolatedBody":"لكل مهمة حاويتها وملفاتها الخاصة.","durable":"دائمة","durableBody":"يمكنك العودة إلى محادثتها ومساحة عملها لاحقًا.","controlled":"مضبوطة","controlledBody":"تبقى بيئة التشغيل وملفات المهمة معزولة عن النظام المضيف."},"composer":{"placeholder":"صِف ما تريد بناءه أو تغييره…","model":"نموذج العمل","noModels":"لا توجد نماذج متوافقة مع وضع العمل","cancel":"إيقاف","send":"تشغيل","hint":"تحتفظ كل مهمة بملفاتها وسجلها الخاصين. راجع مخرجات النموذج قبل استخدامها.","remoteTitle":"مزوّد بعيد","remoteHint":"تُرسل المحادثة ومخرجات الأدوات إلى الخدمة المُعدّة. قد يجري التشغيل المستقل الواحد عدة اتصالات بالمزوّد وقد تترتب عليه رسوم. تبقى ملفات مساحة العمل محلية ما لم تُرجع إحدى الأدوات محتوياتها.","remoteDismiss":"تجاهل","remoteDismissLabel":"تجاهل إشعار المزوّد البعيد","remoteDismissFailed":"تعذّر حفظ تفضيل المزوّد البعيد.","noModelSelected":"لم يتم اختيار نموذج متوافق مع وضع العمل."},"conversation":{"ready":"مساحة العمل جاهزة","empty":"تابع المهمة أدناه. تظل هذه المحادثة وملفاتها مرتبطة بمساحة العمل هذه.","loadOlder":"تحميل الرسائل الأقدم"},"status":{"preparing":"جارٍ تجهيز مساحة العمل المعزولة…","running":"جارٍ العمل داخل مساحة العمل المحلية…"},"statusLabels":{"idle":"خامل","thinking":"يفكّر","complete":"مكتمل","needsInput":"بحاجة إلى إدخال","error":"خطأ"},"live":{"connecting":"جارٍ الاتصال بالتحديثات المباشرة…","reconnecting":"جارٍ إعادة الاتصال بالتحديثات المباشرة…","unavailable":"التحديثات المباشرة غير متاحة","newActivity":"نشاط جديد","skillsLoaded":"مهارات مساحة العمل · {{count}}"},"runtime":{"unavailable":"بيئة التشغيل غير متاحة","ready":"بيئة التشغيل جاهزة","readyOllama":"Docker جاهز","readyPlugin":"Docker والمكوّن الإضافي جاهزان","readyHybrid":"Docker والنماذج جاهزة","reason":"يلزم توفر Docker ومزوّد نماذج متاح عبر Ollama أو مكوّن إضافي."},"workspace":{"label":"طرق عرض مساحة العمل","files":"الملفات","activity":"النشاط","preview":"المعاينة","resize":"تغيير حجم المحادثة ومساحة العمل","resizeHint":"اسحب لتغيير الحجم. استخدم مفاتيح الأسهم للتحكم الدقيق. انقر نقرًا مزدوجًا أو اضغط Enter لإعادة التعيين.","splitSize":"المحادثة {{conversation}}٪، مساحة العمل {{workspace}}٪","terminal":"الطرفية","git":"Git"},"files":{"discard":"هل تريد تجاهل التغييرات غير المحفوظة في الملف؟","leaveWithDraft":"هل تريد مغادرة هذا الملف؟ سيبقى تعديلك غير المحفوظ كمسودة في المتصفح.","up":"المجلد الأصل","back":"العودة إلى الملفات","empty":"لا توجد ملفات في هذا المجلد بعد.","select":"اختر ملفًا لفحصه وتعديله.","editorLabel":"محرر الملف: {{path}}","format":"تنسيق","formatted":"تم تنسيق الشيفرة.","formatFailed":"تعذّر تنسيق هذا الملف.","formatShortcut":"تنسيق (Shift+Alt+F)","formatTooLarge":"يقتصر التنسيق على الملفات التي تقل عن 100,000 محرف و4,000 سطر.","formatUnsupported":"التنسيق غير متاح لهذا النوع من الملفات.","saveShortcut":"حفظ (⌘/Ctrl+S)","highlightPaused":"تم إيقاف التمييز المباشر مؤقتًا للملفات الكبيرة للحفاظ على استجابة المحرر.","plainTextLarge":"نص عادي · ملف كبير","changes":"التغييرات","changesSince":"ما تغيّر منذ الدور الأخير","diffLabel":"التغييرات منذ الدور الأخير: {{path}}","diffFolded":"{{count}} سطرًا دون تغيير"},"activity":{"empty":"ستظهر الأوامر وعمليات الملفات ونتائج الأدوات هنا.","toolActivity":"نشاط الأداة","details":"التفاصيل","kinds":{"message":"رسالة","toolCall":"استدعاء أداة","toolResult":"نتيجة أداة","error":"خطأ"}},"preview":{"command":"أمر تشغيل اختياري","start":"بدء المعاينة","stop":"إيقاف المعاينة","open":"فتح","starting":"جارٍ بدء المعاينة…","frameTitle":"معاينة مساحة العمل","failed":"تعذّر بدء المعاينة. راجع «النشاط»، ثم جرّب أمرًا آخر.","empty":"شغّل التطبيق داخل مساحة العمل هذه لمعاينته هنا."},"mobile":{"surface":"واجهة المهمة","conversation":"المحادثة","workspace":"مساحة العمل"},"toasts":{"runFailed":"تعذّر بدء مهمة العمل.","updateFailed":"تعذّر تحديث هذه المهمة.","renameFailed":"تعذّر تغيير اسم هذه المهمة.","cancelled":"تم إيقاف تشغيل المهمة.","cancelFailed":"تعذّر إيقاف تشغيل المهمة.","deleteFailed":"تعذّر حذف مهمة العمل هذه.","saveFailed":"تعذّر حفظ هذا الملف.","saved":"تم حفظ الملف.","previewFailed":"تعذّر بدء المعاينة.","previewStopFailed":"تعذّر إيقاف المعاينة."},"terminal":{"connecting":"جارٍ فتح صدفة داخل بيئة العزل…","closed":"انتهت جلسة الطرفية.","failed":"تعذّر بدء جلسة الطرفية.","reconnect":"إعادة الاتصال","unavailable":"الطرفية التفاعلية غير متاحة في هذا النشر.","blockedByRun":"النموذج يستخدم هذه الحاوية. تفتح الطرفية عند انتهاء الدور.","taskRunning":"دور النموذج قيد التنفيذ"},"policy":{"label":"سياسة التشغيل","default":"افتراضي (الحدود العامة)"},"git":{"actionFailed":"فشل إجراء Git.","blockedByPreview":"أوقف المعاينة قبل تغيير حالة Git.","blockedByRun":"تتاح إجراءات الكتابة في Git بعد انتهاء دور النموذج.","branchCreated":"تم إنشاء {{name}}.","branchSwitched":"تم التبديل إلى {{name}}.","clean":"شجرة العمل نظيفة.","commit":"إيداع التغييرات المجهزة","commitMessage":"رسالة الإيداع","committed":"تم إنشاء الإيداع.","detached":"HEAD منفصل","diff":"معاينة الفرق","diffFailed":"تعذر تحميل هذا الفرق.","history":"السجل المحلي","initialize":"تهيئة Git","initializeDescription":"أنشئ مستودعًا محليًا للحالة والفروق والفروع والإيداعات. لا تُربط أي بيانات اعتماد بعيدة.","initialized":"تمت تهيئة مستودع Git.","loadFailed":"تعذر تحميل حالة Git.","localOnly":"Git محلي فقط. يتطلب الدفع والسحب وطلبات الدمج وسيط اعتماد موثوقًا منفصلًا.","newBranch":"فرع محلي جديد","noCommits":"لا توجد إيداعات بعد.","noDiff":"لا يوجد فرق نصي بعد. تظهر الملفات غير المتتبعة بعد التجهيز.","notInitialized":"لم تتم تهيئة Git","selectChange":"اختر ملفًا معدلًا لفحص فرقه.","selectPath":"اختيار {{path}}","stageAll":"تجهيز الكل","stageSelected":"تجهيز {{count}}","staged":"تم تجهيز التغييرات.","switchBranch":"تبديل الفرع المحلي","changes":"التغييرات","createBranch":"إنشاء","filterFiles":"تصفية الملفات المتغيّرة","noFilterMatches":"لا توجد ملفات متغيّرة تطابق هذا الفلتر.","allChanges":"كل التغييرات","diffTruncated":"هذا الفرق مقتطع.","binaryFile":"ملف ثنائي، لا يوجد فرق نصي."},"hostWorkspace":{"hint":"اتركه فارغًا لمساحة عمل معزولة، أو وجّه المهمة إلى مجلد على هذا الجهاز.","label":"مجلد مساحة العمل (اختياري)","warning":"يمكن للمهمة قراءة هذا المجلد والكتابة فيه مباشرة. اتركه فارغًا لاستخدام مساحة عمل معزولة."}}`),usageAnalytics:{eyebrow:`الإدارة`,title:`استخدام المزود`,description:`تابع مكالمات API الصادرة واستهلاك النماذج عبر الإضافات الممكّنة في هذا المثيل.`,days:`{{count}} أيام`,refresh:`تحديث الاستخدام`,loadFailed:`تعذر تحميل استخدام المزود.`,metrics:{calls:`المكالمات`,tokens:`الرموز`},cards:{calls:`مكالمات API`,callsDetail:`عبر {{count}} مستخدم نشط`,tokens:`الرموز المُبلغ عنها`,tokensDetail:`الاستخدام المُبلغ عنه في {{count}} مكالمة`,success:`معدل النجاح`,successDetail:`{{count}} مكالمة فاشلة`,latency:`متوسط زمن الاستجابة`,latencyDetail:`وقت المزود من البداية للنهاية`},activity:{title:`الاستهلاك بمرور الوقت`,callsDescription:`الطلبات الصادرة اليومية للإضافات الممكّنة`,tokensDescription:`إجمالي الرموز اليومية التي أبلغ عنها المزودون`,chartLabel:`مخطط {{metric}} اليومي للمزود`},models:{title:`استهلاك النموذج`,description:`النماذج التي تحمل أكبر قدر من حركة المرور في هذه الفترة.`,model:`النموذج`,success:`النجاح`,latency:`زمن الاستجابة`},providers:{title:`حركة مرور الإضافات الممكّنة`},capabilities:{title:`مزيج القدرات`,characters:`{{count}} حرف`,bytes:`{{count}} بايت`,images:`{{count}} صورة`,jobs:`{{count}} مهمة فيديو`,inputs:`{{count}} مدخل`,reportedTokens:`{{count}} رمز مُبلغ عنه`},empty:{title:`لا توجد مكالمات مزود بعد`,description:`ستظهر المكالمات هنا بعد أن تعالج إضافة ممكّنة طلبات الدردشة، أو العمل، أو التضمين، أو الصورة، أو الكلام، أو الصوت، أو الفيديو.`},privacyNote:`يتم قياس الاستخدام على الخادم عند حدود الإضافة الصادرة. يخزن Libre WebUI المزود، والنموذج، والتوقيت، والحالة، والعدادات المُبلغ عنها — وليس المطالبات، أو الاستجابات، أو نقاط النهاية، أو بيانات الاعتماد، أو هيئات أخطاء المزود. تشمل إجماليات الرموز فقط المكالمات التي أعاد فيها المزود بيانات الاستخدام الوصفية.`,heatmap:{title:`عام من النشاط`,description:`استدعاءات المزوّد اليومية خلال العام الماضي، ملوّنة حسب النموذج الأكثر استخدامًا في كل يوم.`,calls:`استدعاءات`,noCalls:`لا استدعاءات`,other:`نماذج أخرى`,less:`أقل`,more:`أكثر`,yearTotal:`{{formatted}} استدعاءً خلال العام الماضي`}},systemPage:{eyebrow:`الإدارة`,title:`النظام`,description:`راقب الجهاز ووقت التشغيل الذي يستضيف مثيل Libre WebUI هذا.`,updated:`تم التحديث {{date}}`,refresh:`تحديث معلومات النظام`,loadFailed:`تعذر تحميل معلومات النظام.`,cards:{uptime:`وقت تشغيل المضيف`,uptimeDetail:`يعمل منذ {{date}}`,memory:`الذاكرة المستخدمة`,memoryDetail:`{{used}} من {{total}}`,freeSpace:`مساحة فارغة`,freeSpaceDetail:`{{label}} · {{total}} الإجمالي`,containers:`الحاويات قيد التشغيل`,containersDetail:`{{total}} حاوية معروفة لـ Docker`,dockerUnavailable:`Docker غير متاح`,unavailable:`غير متاح`},host:{title:`المضيف ووقت التشغيل`,description:`تفاصيل نظام التشغيل والمعالج وعملية Libre WebUI.`,container:`وقت تشغيل الحاوية`,native:`وقت تشغيل أصلي`,hostname:`اسم المضيف`,operatingSystem:`نظام التشغيل`,processor:`المعالج`,logicalCpus:`وحدات CPU منطقية`,loadAverage:`متوسط الحمل · 1 / 5 / 15 دقيقة`,libreVersion:`Libre WebUI`,nodeVersion:`Node.js`,process:`العملية`,workingDirectory:`دليل العمل`},memory:{title:`الذاكرة`,description:`ذاكرة النظام المرئية لوقت التشغيل واستخدام عملية التطبيق.`,usedOf:`{{used}} مستخدمة من {{total}}`,free:`{{value}} فارغة`,processRss:`RSS العملية`,heapUsed:`كومة V8 المستخدمة`,heapTotal:`إجمالي كومة V8`,external:`ذاكرة خارجية`},storage:{title:`التخزين`,description:`المساحة المتاحة لنظام ملفات وقت التشغيل وبيانات التطبيق الدائمة.`,used:`{{value}} مستخدمة`,free:`{{value}} فارغة`,empty:`معلومات نظام الملفات غير متاحة في وقت التشغيل هذا.`},docker:{title:`Docker`,description:`حالة Docker Engine للقراءة فقط وقائمة مختصرة من الحاويات.`,connected:`متصل`,unavailable:`غير متاح`,unavailableDetail:`تشخيصات Docker Engine غير متاحة.`,socketStatus:`مقبس محلي: {{status}}`,mounted:`مُثبت`,notMounted:`غير مُثبت`,running:`قيد التشغيل`,stopped:`متوقف`,paused:`متوقف مؤقتًا`,total:`الإجمالي`,version:`الإصدار`,host:`المضيف`,architecture:`البنية`,cpus:`وحدات CPU`,memory:`الذاكرة`,container:`الحاوية`,image:`الصورة`,state:`الحالة`,created:`تم الإنشاء`,empty:`Docker متصل ولا توجد حاويات مدرجة حاليًا.`},network:{title:`الشبكة`,description:`الواجهات والعناوين وعدادات حركة مرور Linux المرئية لوقت التشغيل.`,internal:`داخلي`,empty:`لا توجد واجهات شبكة مرئية لوقت تشغيل التطبيق.`},securityNote:`هذه الصفحة مخصصة للمسؤولين فقط. يُرجع الخادم ملخصات تشغيلية فقط: فهو لا يكشف متغيرات البيئة، أو بيانات الاعتماد، أو تسميات Docker، أو التثبيتات، أو أوامر الحاوية، أو حمولات الفحص. عندما يعمل Libre WebUI في حاوية، تأتي تفاصيل CPU والذاكرة على مستوى المضيف من Docker Engine عندما يكون مقبسه المحلي متاحًا؛ تصف القيم الأخرى وقت تشغيل التطبيق.`,work:{title:`Work`,description:`بيئات معزولة لجميع المستخدمين`,access:`الوصول`,accessAdmins:`المسؤولون فقط`,accessAllUsers:`جميع المستخدمين`,runtimeAvailable:`متاح`,runtimeUnavailable:`غير متاح`,activeRuntimes:`بيئات التشغيل النشطة`,pendingCleanups:`عمليات تنظيف معلقة`,orphans:`حاويات يتيمة`,owner:`المالك`,task:`المهمة`,state:`الحالة`,preview:`المعاينة`,terminals:`الطرفيات`,updated:`آخر تحديث`,stateRunning:`قيد التشغيل`,stateStopped:`متوقف`,stateStarting:`قيد البدء`,stateUnknown:`غير معروف`,noTasks:`لا توجد مهام Work بعد.`}},mediaGeneration:{title:`توليد الوسائط`,description:`أنشئ فيديو أو صوتًا أو موسيقى أو كلامًا باستخدام مزود وسائط مُفعّل.`,image:`صورة`,video:`فيديو`,audio:`صوت`,sound:`صوت`,speech:`كلام`,model:`النموذج`,voice:`الصوت أو معرف الصوت`,cloneVoice:`استنساخ صوت مرجعي`,cloneVoiceDescription:`أنشئ هذا الكلام استنادًا إلى تسجيل مرجعي بدلاً من صوت مُعد مسبقًا.`,referenceAudio:`الصوت المرجعي`,referenceTranscript:`النص المطابق للتسجيل المرجعي`,referenceTranscriptPlaceholder:`أدخل بالضبط ما يُقال في التسجيل المرجعي…`,referenceAudioTooLarge:`يجب ألا يتجاوز حجم الصوت المرجعي {{max}}.`,cloneConsent:`لا تستنسخ صوتًا إلا بإذن المتحدث. يُرسل التسجيل إلى المزوّد المحدد لإنشاء هذا المقطع ولا يحفظه Libre WebUI.`,saveVoiceProfile:`حفظ كصوت قابل لإعادة الاستخدام`,saveVoiceProfileDescription:`خزّن هذا التسجيل المرجعي ونصه بأمان. يرسلهما Libre WebUI إلى المزوّد المحدد مع كل دفعة كلام تستخدم هذا الصوت.`,voiceProfileName:`اسم الصوت المحفوظ`,voiceProfileNamePlaceholder:`مثال: صوتي`,voiceStorageConsent:`أؤكد أن لدي إذن المتحدث لاستنساخ هذا الصوت وحفظه. سيبقى المرجع محفوظًا حتى أحذفه.`,successWithSavedVoice:`تم إنشاء الوسائط وأصبح «{{name}}» متاحًا الآن في إعدادات الكلام`,resolution:`الدقة`,aspectRatio:`نسبة العرض إلى الارتفاع`,duration:`المدة`,providerDefault:`افتراضي للمزود`,generateAudio:`توليد صوت مع الفيديو عند الدعم`,prompt:`المطالبة`,text:`النص للتحدث`,videoPlaceholder:`صف المشهد، والحركة، والكاميرا، والإضاءة...`,audioPlaceholder:`أدخل النص الذي تريد للصوت أن ينطقه...`,soundPlaceholder:`صف الصوت، أو الموسيقى، أو الأجواء، أو الاستجابة المنطوقة التي تريدها...`,generate:`توليد`,generating:`جارٍ التوليد… قد يستغرق هذا عدة دقائق`,success:`تم توليد الوسائط وحفظها في Imagine`,failed:`فشل توليد الوسائط`,loadFailed:`فشل تحميل مزودي الوسائط`,noModels:`لا تتوفر نماذج {{kind}}. قم بتفعيل مزود متوافق واحفظ بيانات اعتماده أولاً.`},mediaGallery:{itemCount:`{{count}} عناصر`,empty:`لا توجد وسائط مولدة بعد`,emptyHint:`قم بتوليد صورة أو فيديو أو مقطع صوتي وسيظهر هنا.`,filters:{all:`الكل`,image:`الصور`,video:`مقاطع الفيديو`,audio:`الصوت`}},whatsNew:{title:`ما الجديد`,releaseNotes:`ملاحظات الإصدار`,cta:`حسنًا، هيا بنا`},notes:{title:`الملاحظات`,new:`ملاحظة جديدة`,untitled:`بدون عنوان`,empty:`لا توجد ملاحظات بعد`,selectOrCreate:`اختر ملاحظة أو أنشئ واحدة جديدة`,contentPlaceholder:`اكتب بصيغة ماركداون…`,saved:`تم الحفظ`,saveFailed:`تعذر حفظ الملاحظة`,createFailed:`تعذر إنشاء ملاحظة`,deleteConfirm:`حذف هذه الملاحظة؟`,deleteFailed:`تعذر حذف الملاحظة`},home:{active:`نشط`,continue:`متابعة`,start:`ابدأ`,explore:`استكشاف`},palette:{empty:`لا توجد نتائج.`,placeholder:`ابحث في المحادثات وWork والإجراءات…`,toggleTheme:`تبديل السمة`,actions:`الإجراءات`,chats:`المحادثات`,search:`بحث`,settings:`الإعدادات`,work:`العمل`},tabs:{actions:`إجراءات التبويب`,close:`إغلاق التبويب`,closeAll:`إغلاق كل التبويبات`,closeOthers:`إغلاق التبويبات الأخرى`,closeRight:`إغلاق التبويبات إلى اليمين`,home:`الرئيسية`,label:`التبويبات المفتوحة`,new:`تبويب جديد`,newWork:`Work جديد`,chat:`محادثة`,newChat:`محادثة جديدة`,work:`العمل`}};export{e as default};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["js/workApi-DHuYNHLf.js","js/rolldown-runtime-hePW80VL.js","js/router-vendor-CbPDks39.js","js/markdown-core-BmPPZiuD.js","js/utils-vendor-BBa8OxtB.js","js/logger-DSXjF4ye.js","js/config-BTlPm-cZ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,p as n}from"./router-vendor-CbPDks39.js";import{t as r,u as i}from"./chatStore-UPp5TV_t.js";import{o as a,t as o}from"./utils-vendor-BBa8OxtB.js";import{i as s,t as c}from"./logger-DSXjF4ye.js";import{r as l,t as u}from"./workApi-DHuYNHLf.js";import{h as d,u as f}from"./api-BvPDxsUQ.js";import{t as p}from"./appStore-DRSSjaHn.js";var m=1e5,h=`[Earlier live output omitted]
|
|
3
|
+
|
|
4
|
+
`,g=e=>e&&typeof e==`object`&&!Array.isArray(e)?e:void 0,_=(e,...t)=>{for(let n of t){let t=e[n];if(typeof t==`string`&&t.trim())return t}},v=(e,...t)=>{for(let n of t){let t=e[n];if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t!=`string`||!t.trim())continue;let r=Number(t);if(Number.isFinite(r))return r}},y=(e,t)=>{let n=String(e||``).trim().toLowerCase().replace(/[\s-]+/g,`_`);return n===`queued`?`queued`:n===`preparing`||n===`starting`?`preparing`:n===`thinking`||n===`running`||n===`working`?`thinking`:n===`using_tool`||n===`tool`||n===`tool_call`?`using_tool`:n===`responding`||n===`streaming`||n===`assistant`?`responding`:n===`completed`||n===`complete`||n===`done`?`completed`:n===`needs_input`||n===`needsinput`||n===`blocked`?`needs_input`:n===`failed`||n===`error`?`failed`:n===`cancelled`||n===`canceled`||n===`stopped`?`cancelled`:t},b=(e,t)=>{let n=_(t,`total`);if(n!==void 0)return x(n);let r=_(t,`text`,`content`,`delta`,`reasoning`)||``;return t.replace===!0||t.cumulative===!0?x(r):x(e+r)},x=e=>{let t=e.startsWith(h),n=t?e.slice(31):e;return!t&&n.length<=m?n:t&&n.length<=99969?h+n:h+n.slice(-99969)},S=(e,t,n,r)=>{if(r===n)return e;if(r.startsWith(n)){let i=r.slice(n.length),a=e[e.length-1];return a&&a.kind===t?[...e.slice(0,-1),{kind:t,text:x(a.text+i)}]:[...e,{kind:t,text:x(i)}]}return[...e.filter(e=>e.kind!==t),{kind:t,text:r}]},C=(e,t)=>e.some(e=>e.kind===`tool`&&e.toolId===t)?e:[...e,{kind:`tool`,toolId:t}],w=(e,t)=>{let n=g(e.usage)||e,r={...t};for(let[e,t]of[[`inputTokens`,[`inputTokens`,`input_tokens`,`promptTokens`,`prompt_tokens`]],[`outputTokens`,[`outputTokens`,`output_tokens`,`completionTokens`,`completion_tokens`]],[`reasoningTokens`,[`reasoningTokens`,`reasoning_tokens`]],[`cachedTokens`,[`cachedTokens`,`cached_tokens`]],[`totalTokens`,[`totalTokens`,`total_tokens`]],[`tokensPerSecond`,[`tokensPerSecond`,`tokens_per_second`]],[`durationMs`,[`durationMs`,`duration_ms`]]]){let i=v(n,...t);i!==void 0&&(r[e]=i)}return r.totalTokens===void 0&&(r.inputTokens!==void 0||r.outputTokens!==void 0)&&(r.totalTokens=(r.inputTokens||0)+(r.outputTokens||0)),r},T=(e,t)=>{let n=g(e.skill)||e,r=_(n,`name`,`title`,`skill`)||`Skill`;return{id:_(n,`id`,`skillId`,`skill_id`)||`${r}-${t}`,name:r,description:_(n,`description`,`summary`)}},E=(e,t,n)=>{let r=g(e.tool)||e,i=g(r.message),a=i?g(i.metadata):void 0,o=a?{...a,...r}:r,s=_(o,`name`,`toolName`,`tool_name`,`function`)||`tool`;return{id:_(o,`id`,`toolCallId`,`tool_call_id`,`callId`)||`${s}-${n}`,name:s,status:o.isError===!0||o.is_error===!0?`error`:`running`,arguments:o.arguments??o.input??o.args??o.parameters??void 0,metadata:g(o.metadata)||a,startedAt:v(o,`startedAt`,`started_at`,`timestamp`)||t}},D=(e,t)=>Array.isArray(e)?e.flatMap((e,n)=>{let r=g(e);if(!r)return[];let i=E(r,t,n),a=_(r,`output`,`content`,`result`),o=y(r.status,`using_tool`);return[{...i,status:r.isError===!0||r.is_error===!0?`error`:o===`completed`?`completed`:i.status,output:a,finishedAt:v(r,`finishedAt`,`finished_at`),durationMs:v(r,`durationMs`,`duration_ms`)}]}):[],O=(e,t,n)=>({taskId:e,runId:t,connection:`idle`,phase:`queued`,lastEventId:0,reasoning:``,response:``,timeline:[],tools:[],skills:[],startedAt:n,terminal:!1}),k=(e,t)=>{let n=g(t.data.liveRun)||g(t.data.live_run)||g(t.data.run)||t.data,r=g(t.data.task)||g(t.data.detail),i=r?g(r.activeRun):void 0,a=_(n,`reasoning`,`thinking`),o=_(n,`response`,`assistant`,`content`),s=y(n.phase??n.status??i?.status??r?.status,e.phase),c=e.lastEventId>0&&s!==`completed`&&s!==`needs_input`&&s!==`failed`&&s!==`cancelled`&&n.phase===void 0?e.phase:s,l=D(n.tools??n.toolActivities??n.tool_activities,t.timestamp),u=n.skills,d=Array.isArray(u)?u.flatMap((e,t)=>{let n=g(e);return n?[T(n,t)]:[]}):e.skills,f=n.terminal===!0||c===`completed`||c===`needs_input`||c===`failed`||c===`cancelled`,p=a===void 0?e.reasoning:x(a),m=o===void 0?e.response:x(o),h=l.length>0?l:e.tools,b=S(e.timeline,`reasoning`,e.reasoning,p);for(let e of h)b=C(b,e.id);return b=S(b,`response`,e.response,m),{...e,phase:c,reasoning:p,response:m,timeline:b,tools:h,skills:d,usage:g(n.usage)?w(n,e.usage):e.usage,round:v(n,`round`,`roundIndex`,`round_index`)??e.round,roundLimit:v(n,`roundLimit`,`round_limit`)??e.roundLimit,startedAt:v(n,`startedAt`,`started_at`)??(i?v(i,`startedAt`,`started_at`):void 0)??e.startedAt,finishedAt:v(n,`finishedAt`,`finished_at`)??e.finishedAt,error:_(n,`error`,`message`)??e.error,terminal:f}},A=(e,t)=>{let n=e.findIndex(e=>e.id===t.id);if(n===-1)return[...e,t];let r=[...e];return r[n]={...e[n],...t},r},j=(e,t)=>{let n=e?.taskId===t.taskId&&e.runId===t.runId?e:O(t.taskId,t.runId,t.timestamp);if(t.type!==`snapshot`&&t.id<=n.lastEventId)return n;let r={...n,connection:`connected`,connectionError:void 0,lastEventId:Math.max(n.lastEventId,t.id)};if(t.type===`snapshot`)r=k(r,t);else if(t.type===`run_state`){let e=y(t.data.phase??t.data.status??t.data.state,r.phase);r={...r,phase:e,round:v(t.data,`round`,`roundIndex`,`round_index`)??r.round,roundLimit:v(t.data,`roundLimit`,`round_limit`)??r.roundLimit,startedAt:v(t.data,`startedAt`,`started_at`)??r.startedAt,terminal:r.terminal||e===`completed`||e===`needs_input`||e===`failed`||e===`cancelled`}}else if(t.type===`reasoning_delta`){let e=b(r.reasoning,t.data);r={...r,phase:`thinking`,reasoning:e,timeline:S(r.timeline,`reasoning`,r.reasoning,e)}}else if(t.type===`assistant_delta`){let e=b(r.response,t.data);r={...r,phase:`responding`,response:e,timeline:S(r.timeline,`response`,r.response,e)}}else if(t.type===`tool_call`){let e=E(t.data,t.timestamp,r.tools.length);r={...r,phase:`using_tool`,tools:A(r.tools,e),timeline:C(r.timeline,e.id)}}else if(t.type===`tool_result`){let e=E(t.data,t.timestamp,r.tools.length),n=r.tools.find(t=>t.id===e.id),i=t.data.isError===!0||t.data.is_error===!0||t.data.error===!0;r={...r,phase:`thinking`,tools:A(r.tools,{...n,...e,status:i?`error`:`completed`,arguments:n?.arguments??e.arguments,startedAt:n?.startedAt??e.startedAt,output:_(t.data,`output`,`content`,`result`,`message`)||``,finishedAt:v(t.data,`finishedAt`,`finished_at`)||t.timestamp,durationMs:v(t.data,`durationMs`,`duration_ms`)})}}else if(t.type===`usage`)r={...r,usage:w(t.data,r.usage)};else if(t.type===`skill_loaded`){let e=T(t.data,r.skills.length);r={...r,skills:r.skills.some(t=>t.id===e.id)?r.skills:[...r.skills,e]}}else if(t.type===`error`)r={...r,phase:`failed`,error:_(t.data,`message`,`error`)||`The Work run stopped unexpectedly.`,finishedAt:v(t.data,`finishedAt`,`finished_at`)||t.timestamp,terminal:t.data.terminal!==!1};else if(t.type===`done`){let e=y(t.data.status??t.data.state??t.data.phase,`completed`);r={...r,phase:e,error:_(t.data,`error`,`message`)??r.error,usage:g(t.data.usage)?w(t.data,r.usage):r.usage,finishedAt:v(t.data,`finishedAt`,`finished_at`)||t.timestamp,terminal:!0}}return r},M=(e,t)=>Error(t?.error||t?.message||e),N=(e,t)=>{if(typeof e==`object`&&e&&`response`in e){let t=e.response,n=t?.data?.error||t?.data?.message;if(n)return n}return e instanceof Error&&e.message?e.message:t},P=e=>[...e].sort((e,t)=>t.updatedAt-e.updatedAt||t.createdAt-e.createdAt||e.id.localeCompare(t.id)),ee=({messages:e,messageCursor:t,hasMoreMessages:n,...r})=>r,F=(e,t)=>{let n=new Map(e.map(e=>[e.id,e]));for(let e of t)n.set(e.id,e);return[...n.values()].sort((e,t)=>e.messageIndex-t.messageIndex||e.createdAt-t.createdAt||e.id.localeCompare(t.id))},I=(e,t)=>{if(!e||e.id!==t.id)return t;let n=e.updatedAt>t.updatedAt?{...t,...e}:{...e,...t};if(e.messages.length===0)return{...n,messages:t.messages,messageCursor:t.messageCursor,hasMoreMessages:t.hasMoreMessages};let r=Math.max(...e.messages.map(e=>e.messageIndex)),i=Math.min(...t.messages.map(e=>e.messageIndex)),a=t.messages.length>0&&r+1<i;return{...n,messages:F(e.messages,t.messages),messageCursor:a?t.messageCursor:e.messageCursor,hasMoreMessages:a?t.hasMoreMessages:e.hasMoreMessages}},L=(e,t)=>{let n=e.find(e=>e.id===t.id);if(n&&n.updatedAt>t.updatedAt)return e;let r=ee(t),i=e.findIndex(e=>e.id===t.id);if(i===-1)return[r,...e];let a=[...e];return a[i]=r,a},R=(e,t)=>{let n=new Map(t.map(e=>[e.id,e])),r=new Set(e.map(e=>e.id)),i=P(t.filter(e=>!r.has(e.id))),a=e.flatMap(e=>{let t=n.get(e.id);return t?[e.updatedAt>t.updatedAt?e:t]:[]});return[...i,...a]},z=a((e,t)=>{let n=0,r=0,i=0,a=0,o=0,s=null,c=0,l=0,d=0,f=null,p=0,m=new Set,h=new Set,g=new Map,_=(e,t)=>`${e}\u0000${t}`,v=e=>e===n,y=e=>{if(!v(e))throw Error(`Work session changed.`)},b=()=>{l+=1,d+=1,f=null,h.clear()},x=()=>{let t=++c;return h.add(t),e({loadingFiles:!0}),t},S=(n,r,i)=>{h.delete(n),v(r)&&t().selectedTaskId===i&&e({loadingFiles:h.size>0})},C=e=>t().selectedTaskId===e,w=t=>{let n=++p;return g.set(n,t),C(t)&&e({actionLoading:!0,error:null}),n},T=(n,r)=>{if(g.delete(n),!v(r))return;let i=t().selectedTaskId;e({actionLoading:[...g.values()].some(e=>e===i)})},E=(t,n,r)=>{v(n)&&C(t)&&e({error:r})},D=(t,r=n,i=!1)=>{v(r)&&(i&&(o+=1),e(e=>({tasks:L(e.tasks,t),selectedTask:e.selectedTaskId===t.id?I(e.selectedTask,t):e.selectedTask})))},k=async(e,t,r)=>{let i=n,a=w(r);try{let n=await e();if(y(i),!n.success||!n.data)throw M(t,n);return D(n.data,i,!0),n.data}catch(e){let n=N(e,t);throw E(r,i,n),Error(n)}finally{T(a,i)}};return{capabilities:null,tasks:[],selectedTaskId:null,selectedTask:null,files:[],selectedFile:null,liveRuns:{},loadingTasks:!1,loadingTask:!1,loadingOlderMessages:!1,loadingFiles:!1,actionLoading:!1,error:null,loadCapabilities:async()=>{let t=n;try{let n=await u.capabilities();if(y(t),!n.success||!n.data)throw M(`Could not inspect the Work runtime.`,n);e({capabilities:n.data})}catch(n){v(t)&&e({capabilities:{available:!1,runtime:`docker`,image:``,reason:N(n,`The Work runtime is unavailable.`)}})}},loadTasks:async(t=!1)=>{let c=n,l=++r,d=o;t||(i=l,m.add(l),e({loadingTasks:!0,error:null}));try{let t=await u.listTasks();if(y(c),!t.success||!t.data)throw M(`Could not load Work tasks.`,t);let n=P(t.data);if(l<=a||d!==o)return;a=l,e(e=>{let t=R(e.tasks,n),r=e.selectedTaskId?t.find(t=>t.id===e.selectedTaskId):void 0,i=r&&e.selectedTask?{...e.selectedTask,...r,messages:e.selectedTask.messages,messageCursor:e.selectedTask.messageCursor,hasMoreMessages:e.selectedTask.hasMoreMessages}:e.selectedTask,a=s,o=a!==null&&l>a.requestId;return o&&(s=null),{tasks:t,selectedTask:i,...o&&e.error===a.message?{error:null}:{}}})}catch(n){let r=N(n,`Could not load Work tasks.`);!t&&v(c)&&l===i&&l>a&&d===o&&(s={requestId:l,message:r},e({error:r}))}finally{m.delete(l),!t&&v(c)&&e({loadingTasks:m.size>0})}},selectTask:t=>{b(),e(e=>({selectedTaskId:t,selectedTask:t&&e.selectedTask?.id===t?e.selectedTask:null,files:[],selectedFile:null,loadingFiles:!1,loadingOlderMessages:!1,actionLoading:[...g.values()].some(e=>e===t),error:null}))},loadTask:async(t,r=!1)=>{let i=n;r||e({loadingTask:!0,error:null});try{let e=await u.getTask(t);if(y(i),!e.success||!e.data)throw M(`Could not load this Work task.`,e);return D(e.data,i),e.data}catch(t){let n=N(t,`Could not load this Work task.`);throw!r&&v(i)&&e({error:n}),Error(n)}finally{!r&&v(i)&&e({loadingTask:!1})}},loadOlderMessages:async r=>{let i=n,a=t().selectedTask,o=a?.id===r?a.messageCursor:void 0;if(!a||a.id!==r||!a.hasMoreMessages||o===void 0)return[];e({loadingOlderMessages:!0,error:null});try{let t=await u.getMessages(r,o);if(y(i),!t.success||!t.data)throw M(`Could not load older Work messages.`,t);let n=t.data;return e(e=>{if(e.selectedTask?.id!==r)return{};let t=e.selectedTask.messageCursor===o;return{selectedTask:{...e.selectedTask,messages:F(e.selectedTask.messages,n.messages),messageCursor:t?n.cursor:e.selectedTask.messageCursor,hasMoreMessages:t?n.hasMore:e.selectedTask.hasMoreMessages}}}),n.messages}catch(n){let a=N(n,`Could not load older Work messages.`);throw v(i)&&t().selectedTaskId===r&&e({error:a}),Error(a)}finally{v(i)&&t().selectedTaskId===r&&e({loadingOlderMessages:!1})}},createTask:e=>k(()=>u.createTask(e),`Could not create the Work task.`,null),updateTask:(e,t)=>k(()=>u.updateTask(e,t),`Could not update the Work task.`,e),deleteTask:async r=>{let i=n,a=w(r);try{let n=await u.deleteTask(r);if(y(i),!n.success)throw M(`Could not delete the Work task.`,n);t().selectedTaskId===r&&b(),o+=1,e(e=>({tasks:e.tasks.filter(e=>e.id!==r),selectedTaskId:e.selectedTaskId===r?null:e.selectedTaskId,selectedTask:e.selectedTaskId===r?null:e.selectedTask,files:e.selectedTaskId===r?[]:e.files,selectedFile:e.selectedTaskId===r?null:e.selectedFile,liveRuns:Object.fromEntries(Object.entries(e.liveRuns).filter(([e])=>e!==r))}))}catch(e){let t=N(e,`Could not delete the Work task.`);throw E(r,i,t),Error(t)}finally{T(a,i)}},startRun:async(e,t)=>{let r=n,i=w(e);try{let n=await u.startRun(e,t);if(y(r),!n.success||!n.data)throw M(`Could not start the Work run.`,n);return D(n.data,r,!0),n.data}catch(t){let n=N(t,`Could not start the Work run.`);throw E(e,r,n),Error(n)}finally{T(i,r)}},cancelRun:async e=>{let r=n,i=w(e);try{let n=await u.cancelRun(e);if(y(r),!n.success)throw M(`Could not cancel the Work run.`,n);return n.data?(D(n.data,r,!0),n.data):(o+=1,await t().loadTask(e,!0))}catch(t){let n=N(t,`Could not cancel the Work run.`);throw E(e,r,n),Error(n)}finally{T(i,r)}},beginLiveRun:(t,n,r)=>{e(e=>{let i=e.liveRuns[t];return{liveRuns:{...e.liveRuns,[t]:i?.runId===n?{...i,startedAt:i.startedAt??r}:O(t,n,r)}}})},applyRunEvent:e=>{t().applyRunEvents([e])},applyRunEvents:t=>{t.length!==0&&e(e=>{let n={...e.liveRuns},r=e.tasks,i=e.selectedTask;for(let a of t){n[a.taskId]=j(n[a.taskId],a);let t=a.type===`snapshot`?a.data.task??a.data.detail:void 0,o=t&&typeof t==`object`&&!Array.isArray(t)&&t.id===a.taskId&&Array.isArray(t.messages)?t:void 0;o&&(r=L(r,o),e.selectedTaskId===o.id&&(i=I(i,o)))}return{liveRuns:n,tasks:r,selectedTask:i}})},setLiveRunConnection:(t,n,r,i)=>{e(e=>{let a=e.liveRuns[t];return!a||a.runId!==n?{}:{liveRuns:{...e.liveRuns,[t]:{...a,connection:r,connectionError:i}}}})},clearLiveRun:(t,n)=>{e(e=>{if(n&&e.liveRuns[t]?.runId!==n)return{};let r={...e.liveRuns};return delete r[t],{liveRuns:r}})},loadFiles:async(r,i=``)=>{let a=n,o=++l,s=x();try{let n=await u.listFiles(r,i);if(y(a),!n.success||!n.data)throw M(`Could not load workspace files.`,n);return o===l&&t().selectedTaskId===r&&e({files:n.data}),n.data}catch(n){let i=N(n,`Could not load workspace files.`);throw o===l&&v(a)&&t().selectedTaskId===r&&e({error:i}),Error(i)}finally{S(s,a,r)}},loadFile:async(r,i)=>{let a=n,o=++d,s=_(r,i);f=s;let c=x();try{let n=await u.getFile(r,i);if(y(a),!n.success||!n.data)throw M(`Could not open this workspace file.`,n);if(o!==d||f!==s||!v(a)||t().selectedTaskId!==r)throw Error(`Work file request was superseded.`);return e({selectedFile:n.data}),n.data}catch(n){let i=N(n,`Could not open this file.`);throw o===d&&v(a)&&t().selectedTaskId===r&&e({error:i}),Error(i)}finally{S(c,a,r)}},clearSelectedFile:()=>{d+=1,f=null,e({selectedFile:null})},saveFile:async(r,i,a,o)=>{let s=n,c=w(r),l=_(r,i);f===l&&(d+=1,f=null);try{let n=await u.saveFile(r,i,a,o);if(y(s),!n.success||!n.data)throw M(`Could not save this workspace file.`,n);return t().selectedTaskId===r&&t().selectedFile?.path===i&&(f===l&&(d+=1,f=null),e({selectedFile:n.data})),n.data}catch(e){let t=N(e,`Could not save this file.`);throw E(r,s,t),Error(t)}finally{T(c,s)}},startPreview:(e,t)=>k(()=>u.startPreview(e,t),`Could not start the workspace preview.`,e),stopPreview:e=>k(()=>u.stopPreview(e),`Could not stop the workspace preview.`,e),clearError:()=>e({error:null}),clearAllState:()=>{n+=1,i=++r,a=i,o+=1,s=null,m.clear(),g.clear(),b(),e({capabilities:null,tasks:[],selectedTaskId:null,selectedTask:null,files:[],selectedFile:null,liveRuns:{},loadingTasks:!1,loadingTask:!1,loadingOlderMessages:!1,loadingFiles:!1,actionLoading:!1,error:null})}}}),B=async(e,t,n)=>{let r=await t(e);return r.success&&await n(),r},V=c(`store:plugin-store`),H=a((e,t)=>({plugins:[],pluginStatus:[],pluginVariables:{},isLoading:!1,isUploading:!1,error:null,loadPlugins:async()=>{e({isLoading:!0,error:null});try{let t=await f.getAllPlugins();t.success&&t.data?e({plugins:t.data}):e({error:t.error||`Failed to load plugins`})}catch(t){e({error:i(t,`Failed to load plugins`)})}finally{e({isLoading:!1})}},uploadPlugin:async n=>{e({isUploading:!0,error:null});try{let r=await f.uploadPlugin(n);r.success&&r.data?await t().loadPlugins():e({error:r.error||`Failed to upload plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to upload plugin`})}finally{e({isUploading:!1})}},installPlugin:async n=>{e({isLoading:!0,error:null});try{let r=await f.installPlugin(n);r.success&&r.data?await t().loadPlugins():e({error:r.error||`Failed to install plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to install plugin`})}finally{e({isLoading:!1})}},updatePlugin:async(n,r)=>{e({isLoading:!0,error:null});try{let i=await f.updatePlugin(n,r);i.success&&i.data?await t().loadPlugins():e({error:i.error||`Failed to update plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to update plugin`})}finally{e({isLoading:!1})}},deletePlugin:async n=>{e({isLoading:!0,error:null});try{let r=await f.deletePlugin(n);r.success?await t().loadPlugins():e({error:r.error||`Failed to delete plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to delete plugin`})}finally{e({isLoading:!1})}},activatePlugin:async n=>{e({isLoading:!0,error:null});try{let r=await B(n,f.activatePlugin,()=>t().loadPlugins());r.success||e({error:r.error||`Failed to activate plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to activate plugin`})}finally{e({isLoading:!1})}},deactivatePlugin:async n=>{e({isLoading:!0,error:null});try{let r=await f.deactivatePlugin(n);r.success?await t().loadPlugins():e({error:r.error||`Failed to deactivate plugin`})}catch(t){e({error:t instanceof Error?t.message:`Failed to deactivate plugin`})}finally{e({isLoading:!1})}},loadPluginStatus:async()=>{try{let t=await f.getPluginStatus();t.success&&t.data&&e({pluginStatus:t.data})}catch(e){V.error(`Failed to load plugin status:`,e)}},exportPlugin:async t=>{e({isLoading:!0,error:null});try{let e=await f.exportPlugin(t),n=window.URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`${t}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),window.URL.revokeObjectURL(n)}catch(t){e({error:t instanceof Error?t.message:`Failed to export plugin`})}finally{e({isLoading:!1})}},fetchPluginVariables:async t=>{try{let n=await f.getVariables(t);n.success&&n.data&&e(e=>({pluginVariables:{...e.pluginVariables,[t]:n.data}}))}catch(e){V.error(`Failed to fetch plugin variables:`,e)}},updatePluginVariables:async(e,n,r=[])=>{try{return(await f.setVariables(e,n,r)).success?(await t().fetchPluginVariables(e),!0):!1}catch(e){return V.error(`Failed to update plugin variables:`,e),!1}},resetPluginVariables:async t=>{try{let n=await f.resetVariables(t);return n.success&&n.data===!0?(e(e=>{let n={...e.pluginVariables};return delete n[t],{pluginVariables:n}}),!0):!1}catch(e){return V.error(`Failed to reset plugin variables:`,e),!1}},clearError:()=>e({error:null}),setError:t=>e({error:t})})),U=`libre-webui:work-draft:`,W=(e,t)=>`${U}${e}:${t}`,te=(e,t)=>{try{let n=window.sessionStorage.getItem(W(e,t));if(!n)return null;let r=JSON.parse(n);return typeof r.content==`string`?{content:r.content,baseUpdatedAt:typeof r.baseUpdatedAt==`number`?r.baseUpdatedAt:void 0}:null}catch{return null}},ne=(e,t,n)=>{try{return window.sessionStorage.setItem(W(e,t),JSON.stringify(n)),!0}catch{return!1}},re=(e,t)=>{try{window.sessionStorage.removeItem(W(e,t))}catch{}},ie=e=>{let t=`${U}${e}:`;try{for(let e=window.sessionStorage.length-1;e>=0;e--){let n=window.sessionStorage.key(e);n?.startsWith(t)&&window.sessionStorage.removeItem(n)}}catch{}},G=()=>{try{for(let e=window.sessionStorage.length-1;e>=0;e--){let t=window.sessionStorage.key(e);t?.startsWith(U)&&window.sessionStorage.removeItem(t)}}catch{}},ae=`/ws/work-terminal`;function K(e,t,n){let r;try{r=new URL(e)}catch{throw Error(`${t} must be an absolute URL.`)}if(!n.includes(r.protocol))throw Error(`${t} must use ${n.join(` or `)}.`);if(r.username||r.password||r.search||r.hash)throw Error(`${t} must not contain credentials, a query, or a fragment.`);return r}function q(e){return e.replace(/\/+$/,``)}function oe(e){return q(K(e,`VITE_WS_BASE_URL`,[`ws:`,`wss:`]).toString())}function se(e){let t=K(e,`VITE_API_BASE_URL`,[`http:`,`https:`]);return t.protocol=t.protocol===`https:`?`wss:`:`ws:`,t.pathname=t.pathname.replace(/\/api\/?$/,``),q(t.toString())}function J(e){let t=e.websocketBaseUrl?.trim();if(t)return oe(t);if(e.protocol===`file:`)return`ws://localhost:3001`;let n=e.apiBaseUrl?.trim();if(n)return se(n);let r=e.protocol===`https:`?`wss:`:`ws:`;return e.production?`${r}//${e.host}`:`${r}//${e.hostname}:3001`}function Y(e,t,n){let r=J(t),i=new URL(`${r}/${e.replace(/^\/+/,``)}`);for(let[e,t]of Object.entries(n))i.searchParams.set(e,t);return i.toString()}function ce(e,t){return Y(`/ws`,t,{ticket:e})}function le(e,t,n){return Y(ae,n,{taskId:e,ticket:t})}var X=c(`websocket`),Z=new class{constructor(){n(this,`ws`,null),n(this,`urlEnvironment`,void 0),n(this,`reconnectAttempts`,0),n(this,`maxReconnectAttempts`,5),n(this,`reconnectDelay`,1e3),n(this,`messageHandlers`,new Map),n(this,`connectPromise`,null),n(this,`shouldReconnect`,!1),n(this,`connectionEpoch`,0),this.urlEnvironment={protocol:window.location.protocol,host:window.location.host,hostname:window.location.hostname,apiBaseUrl:void 0,websocketBaseUrl:void 0,production:!0},X.debug(`WebSocket base URL resolved:`,J(this.urlEnvironment))}connect(){if(s())return X.debug(`Demo mode active: skipping WebSocket connection.`),Promise.resolve();if(this.ws?.readyState===WebSocket.OPEN)return Promise.resolve();if(this.connectPromise)return this.connectPromise;this.shouldReconnect=!0;let e=++this.connectionEpoch,t=this.openWithTicket(e).finally(()=>{this.connectPromise===t&&(this.connectPromise=null)});return this.connectPromise=t,t}async openWithTicket(e){let t;try{t=await l.post(`/auth/websocket-ticket`,{audience:`chat`})}catch(t){throw this.shouldReconnect&&e===this.connectionEpoch&&this.attemptReconnect(),t}let n=t.data.data?.ticket;if(!n)throw Error(`The server did not issue a WebSocket ticket.`);if(!(!this.shouldReconnect||e!==this.connectionEpoch))return X.debug(`WebSocket: Attempting to connect`),new Promise((t,r)=>{try{let i=ce(n,this.urlEnvironment);X.debug(`WebSocket: Connecting with a one-use ticket`);let a=new WebSocket(i);this.ws=a,a.onopen=()=>{if(!this.shouldReconnect||e!==this.connectionEpoch){a.close(),t();return}X.debug(`WebSocket connected successfully`),this.reconnectAttempts=0,t()},a.onmessage=e=>{try{let t=JSON.parse(e.data),n=this.messageHandlers.get(t.type);n?n(t.data):t.type===`connected`?X.debug(`WebSocket: Server confirmed connection`):X.warn(`WebSocket: No handler for message type:`,t.type)}catch(e){X.error(`Failed to parse WebSocket message:`,e)}},a.onclose=()=>{X.debug(`WebSocket disconnected`),this.ws===a&&(this.ws=null),this.shouldReconnect&&e===this.connectionEpoch&&this.attemptReconnect()},a.onerror=e=>{X.error(`WebSocket error:`,e),r(e)}}catch(e){r(e)}})}disconnect(){this.shouldReconnect=!1,this.connectionEpoch+=1,this.connectPromise=null,this.ws&&(this.ws.close(),this.ws=null)}send(e){return this.ws&&this.ws.readyState===WebSocket.OPEN?(X.debug(`WebSocket: Sending message:`,e),this.ws.send(JSON.stringify(e)),!0):(X.warn(`WebSocket is not connected. ReadyState:`,this.ws?.readyState),!1)}onMessage(e,t){this.messageHandlers.delete(e),this.messageHandlers.set(e,t)}offMessage(e){this.messageHandlers.delete(e)}dispatchMessage(e,t){this.messageHandlers.get(e)?.(t)}attemptReconnect(){if(s()){X.debug(`Demo mode active: skipping WebSocket reconnection.`);return}this.reconnectAttempts<this.maxReconnectAttempts?(this.reconnectAttempts++,X.debug(`Attempting to reconnect... (${this.reconnectAttempts}/${this.maxReconnectAttempts})`),setTimeout(()=>{this.shouldReconnect&&this.connect().catch(()=>{})},this.reconnectDelay*this.reconnectAttempts)):X.error(`Max reconnection attempts reached`)}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}},ue=e({useAuthStore:()=>$}),Q=c(`auth-store`),$=a()(o((e,n)=>({user:null,token:null,systemInfo:null,workAccess:null,isAuthenticated:!1,isLoading:!1,login:(t,i,a)=>{let o=n().user?.id===t.id;localStorage.setItem(`auth-token`,i);let c=r.getState();c.clearAllState&&c.clearAllState(),z.getState().clearAllState(),o||(G(),p.getState().clearUserState()),e({user:t,token:i,systemInfo:a,isAuthenticated:!0,isLoading:!1}),setTimeout(async()=>{try{let e=H.getState();Q.debug(`Reinitializing app after login...`),Q.debug(`Reconnecting WebSocket with auth token...`),Z.disconnect(),await Z.connect();try{!(await d.checkHealth()).success&&!s()&&Q.warn(`Ollama service not available after login`)}catch(e){Q.warn(`Ollama health check failed after login; continuing provider initialization:`,e)}let t=p.getState();await Promise.all([c.loadModels(),c.loadSessions(),c.loadPreferences(),t.loadPreferences(),e.loadPlugins(),n().refreshWorkAccess()]),Q.debug(`Reinitialized app after login`)}catch(e){Q.error(`Failed to reinitialize app after login:`,e)}},100)},logout:()=>{localStorage.removeItem(`auth-token`),Q.debug(`Disconnecting WebSocket on logout...`),Z.disconnect();let t=r.getState();t.clearAllState&&t.clearAllState(),z.getState().clearAllState(),G(),p.getState().clearUserState(),e({user:null,token:null,workAccess:null,isAuthenticated:!1,isLoading:!1})},setUser:t=>{e({user:t})},setSystemInfo:t=>{e({systemInfo:t})},setLoading:t=>{e({isLoading:t})},isAdmin:()=>{let{user:e}=n();return e?.role===`admin`},requiresAuth:()=>{let{systemInfo:e}=n();return e?.requiresAuth??!1},canUseWork:()=>{let{systemInfo:e,user:t,workAccess:r}=n();return e?.requiresAuth===!1||t?.role===`admin`||r?.allowed===!0},canUseAgents:()=>{let{systemInfo:e,user:t}=n();return e?.agentsEnabled===!0?e?.requiresAuth===!1||t?.role===`admin`:!1},refreshWorkAccess:async()=>{try{let{workApi:n}=await t(async()=>{let{workApi:e}=await import(`./workApi-DHuYNHLf.js`).then(e=>e.n);return{workApi:e}},__vite__mapDeps([0,1,2,3,4,5,6])),r=await n.access();r.success&&r.data&&e({workAccess:r.data})}catch(e){Q.debug(`Could not load Work access mode:`,e)}}}),{name:`auth-store`,partialize:e=>({user:e.user,token:e.token,systemInfo:e.systemInfo,workAccess:e.workAccess,isAuthenticated:e.isAuthenticated})}));export{re as a,ne as c,le as i,H as l,$ as n,ie as o,Z as r,te as s,ue as t,z as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{p as e}from"./router-vendor-
|
|
1
|
+
import{p as e}from"./router-vendor-CbPDks39.js";var t=Object.defineProperty,n=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},r={};n(r,{parsers:()=>Gi});var i={};n(i,{__babel_estree:()=>Pi,__js_expression:()=>ji,__ts_expression:()=>Mi,__vue_event_binding:()=>ki,__vue_expression:()=>ji,__vue_ts_event_binding:()=>Ai,__vue_ts_expression:()=>Mi,babel:()=>ki,"babel-flow":()=>Ni,"babel-ts":()=>Ai});var a=(e,t)=>(n,r,...i)=>n|1&&r==null?void 0:(t.call(r)??r[e]).apply(r,i),o=String.prototype.replaceAll??function(e,t){return e.global?this.replace(e,t):this.split(e).join(t)},s=a(`replaceAll`,function(){if(typeof this==`string`)return o}),c=Object.hasOwn??Function.prototype.call.bind(Object.prototype.hasOwnProperty),l=class{constructor(e,t,n){this.line=void 0,this.column=void 0,n!==void 0&&(this.index=void 0),this.line=e,this.column=t,n!==void 0&&(this.index=n)}},u=class{constructor(t,n){e(this,`start`,void 0),e(this,`end`,void 0),e(this,`filename`,void 0),e(this,`identifierName`,void 0),this.start=t,this.end=n}};function d(e,t){let{line:n,column:r,index:i}=e;return new l(n,r+t,i+t)}var f=`BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED`,p={ImportMetaOutsideModule:{message:`import.meta may appear only with 'sourceType: "module"'`,code:f},ImportOutsideModule:{message:`'import' and 'export' may appear only with 'sourceType: "module"'`,code:f}},m={ArrayPattern:`array destructuring pattern`,AssignmentExpression:`assignment expression`,AssignmentPattern:`assignment expression`,ArrowFunctionExpression:`arrow function expression`,ConditionalExpression:`conditional expression`,CatchClause:`catch clause`,ForOfStatement:`for-of statement`,ForInStatement:`for-in statement`,ForStatement:`for-loop`,FormalParameters:`function parameter list`,Identifier:`identifier`,ImportSpecifier:`import specifier`,ImportDefaultSpecifier:`import default specifier`,ImportNamespaceSpecifier:`import namespace specifier`,ObjectPattern:`object destructuring pattern`,ParenthesizedExpression:`parenthesized expression`,RestElement:`rest element`,UpdateExpression:{true:`prefix operation`,false:`postfix operation`},VariableDeclarator:`variable declaration`,YieldExpression:`yield expression`},h=e=>e.type===`UpdateExpression`?m.UpdateExpression[`${e.prefix}`]:m[e.type],ee={AccessorIsGenerator:({kind:e})=>`A ${e}ter cannot be a generator.`,ArgumentsInClass:`'arguments' is only allowed in functions and class methods.`,AsyncFunctionInSingleStatementContext:`Async functions can only be declared at the top level or inside a block.`,AwaitBindingIdentifier:`Can not use 'await' as identifier inside an async function.`,AwaitBindingIdentifierInStaticBlock:`Can not use 'await' as identifier inside a static block.`,AwaitExpressionFormalParameter:`'await' is not allowed in async function parameters.`,AwaitUsingNotInAsyncContext:`'await using' is only allowed within async functions and at the top levels of modules.`,AwaitNotInAsyncContext:`'await' is only allowed within async functions and at the top levels of modules.`,BadGetterArity:`A 'get' accessor must not have any formal parameters.`,BadSetterArity:`A 'set' accessor must have exactly one formal parameter.`,BadSetterRestParameter:`A 'set' accessor function argument must not be a rest parameter.`,ConstructorClassField:`Classes may not have a field named 'constructor'.`,ConstructorClassPrivateField:`Classes may not have a private field named '#constructor'.`,ConstructorIsAccessor:`Class constructor may not be an accessor.`,ConstructorIsAsync:`Constructor can't be an async function.`,ConstructorIsGenerator:`Constructor can't be a generator.`,DeclarationMissingInitializer:({kind:e})=>`Missing initializer in ${e} declaration.`,DecoratorArgumentsOutsideParentheses:`Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.`,DecoratorsBeforeAfterExport:`Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.`,DecoratorConstructor:`Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?`,DecoratorSemicolon:`Decorators must not be followed by a semicolon.`,DecoratorStaticBlock:`Decorators can't be used with a static block.`,DeferImportRequiresNamespace:'Only `import defer * as x from "./module"` is valid.',DeletePrivateField:`Deleting a private field is not allowed.`,DestructureNamedImport:`ES2015 named imports do not destructure. Use another statement for destructuring after the import.`,DuplicateConstructor:`Duplicate constructor in the same class.`,DuplicateDefaultExport:`Only one default export allowed per module.`,DuplicateExport:({exportName:e})=>`\`${e}\` has already been exported. Exported identifiers must be unique.`,DuplicateProto:`Redefinition of __proto__ property.`,DuplicateRegExpFlags:`Duplicate regular expression flag.`,ElementAfterRest:`Rest element must be last element.`,EscapedCharNotAnIdentifier:`Invalid Unicode escape.`,ExportBindingIsString:({localName:e,exportName:t})=>`A string literal cannot be used as an exported binding without \`from\`.
|
|
2
2
|
- Did you mean \`export { '${e}' as '${t}' } from 'some-module'\`?`,ExportDefaultFromAsIdentifier:`'from' is not allowed as an identifier after 'export default'.`,ForInOfLoopInitializer:({type:e})=>`'${e===`ForInStatement`?`for-in`:`for-of`}' loop variable declaration may not have an initializer.`,ForInUsing:`For-in loop may not start with 'using' declaration.`,ForOfAsync:`The left-hand side of a for-of loop may not be 'async'.`,ForOfLet:`The left-hand side of a for-of loop may not start with 'let'.`,GeneratorInSingleStatementContext:`Generators can only be declared at the top level or inside a block.`,IllegalBreakContinue:({type:e})=>`Unsyntactic ${e===`BreakStatement`?`break`:`continue`}.`,IllegalLanguageModeDirective:`Illegal 'use strict' directive in function with non-simple parameter list.`,IllegalReturn:`'return' outside of function.`,ImportBindingIsString:({importName:e})=>`A string literal cannot be used as an imported binding.
|
|
3
3
|
- Did you mean \`import { "${e}" as foo }\`?`,ImportCallArity:({phase:e})=>`\`import${e?`.${e}`:``}()\` requires exactly one or two arguments.`,ImportCallNotNewExpression:({phase:e})=>`Cannot use new with import${e?`.${e}`:``}().`,ImportCallSpreadArgument:({phase:e})=>`\`...\` is not allowed in \`import${e?`.${e}`:``}()\`.`,IncompatibleRegExpUVFlags:`The 'u' and 'v' regular expression flags cannot be enabled at the same time.`,InvalidBigIntLiteral:`Invalid BigIntLiteral.`,InvalidCodePoint:`Code point out of bounds.`,InvalidCoverDiscardElement:`'void' must be followed by an expression when not used in a binding position.`,InvalidCoverInitializedName:`Invalid shorthand property initializer.`,InvalidDigit:({radix:e})=>`Expected number in radix ${e}.`,InvalidEscapeSequence:`Bad character escape sequence.`,InvalidEscapeSequenceTemplate:`Invalid escape sequence in template.`,InvalidEscapedReservedWord:({reservedWord:e})=>`Escape sequence in keyword ${e}.`,InvalidIdentifier:({identifierName:e})=>`Invalid identifier ${e}.`,InvalidLhs:({ancestor:e})=>`Invalid left-hand side in ${h(e)}.`,InvalidLhsBinding:({ancestor:e})=>`Binding invalid left-hand side in ${h(e)}.`,InvalidLhsOptionalChaining:({ancestor:e})=>`Invalid optional chaining in the left-hand side of ${h(e)}.`,InvalidNumber:`Invalid number.`,InvalidOrMissingExponent:`Floating-point numbers require a valid exponent after the 'e'.`,InvalidOrUnexpectedToken:({unexpected:e})=>`Unexpected character '${e}'.`,InvalidParenthesizedAssignment:`Invalid parenthesized assignment pattern.`,InvalidPrivateFieldResolution:({identifierName:e})=>`Private name #${e} is not defined.`,InvalidPropertyBindingPattern:`Binding member expression.`,InvalidRestAssignmentPattern:`Invalid rest operator's argument.`,LabelRedeclaration:({labelName:e})=>`Label '${e}' is already declared.`,LetInLexicalBinding:`'let' is disallowed as a lexically bound name.`,LineTerminatorBeforeArrow:`No line break is allowed before '=>'.`,MalformedRegExpFlags:`Invalid regular expression flag.`,MissingClassName:`A class name is required.`,MissingEqInAssignment:`Only '=' operator can be used for specifying default value.`,MissingSemicolon:`Missing semicolon.`,MissingPlugin:({missingPlugin:e})=>`This experimental syntax requires enabling the parser plugin: ${e.map(e=>JSON.stringify(e)).join(`, `)}.`,MissingOneOfPlugins:({missingPlugin:e})=>`This experimental syntax requires enabling one of the following parser plugin(s): ${e.map(e=>JSON.stringify(e)).join(`, `)}.`,MissingUnicodeEscape:`Expecting Unicode escape sequence \\uXXXX.`,MixingCoalesceWithLogical:`Nullish coalescing operator(??) requires parens when mixing with logical operators.`,ModuleAttributeInvalidValue:`Only string literals are allowed as module attribute values.`,ModuleAttributesWithDuplicateKeys:({key:e})=>`Duplicate key "${e}" is not allowed in module attributes.`,ModuleExportNameHasLoneSurrogate:({surrogateCharCode:e})=>`An export name cannot include a lone surrogate, found '\\u${e.toString(16)}'.`,ModuleExportUndefined:({localName:e})=>`Export '${e}' is not defined.`,MultipleDefaultsInSwitch:`Multiple default clauses.`,NewlineAfterThrow:`Illegal newline after throw.`,NoCatchOrFinally:`Missing catch or finally clause.`,NumberIdentifier:`Identifier directly after number.`,NumericSeparatorInEscapeSequence:`Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.`,ObsoleteAwaitStar:`'await*' has been removed from the async functions proposal. Use Promise.all() instead.`,OptionalChainingNoNew:`Constructors in/after an Optional Chain are not allowed.`,OptionalChainingNoTemplate:`Tagged Template Literals are not allowed in optionalChain.`,OverrideOnConstructor:`'override' modifier cannot appear on a constructor declaration.`,ParamDupe:`Argument name clash.`,PatternHasAccessor:`Object pattern can't contain getter or setter.`,PatternHasMethod:`Object pattern can't contain methods.`,PrivateInExpectedIn:({identifierName:e})=>`Private names are only allowed in property accesses (\`obj.#${e}\`) or in \`in\` expressions (\`#${e} in obj\`).`,PrivateNameRedeclaration:({identifierName:e})=>`Duplicate private name #${e}.`,RestTrailingComma:`Unexpected trailing comma after rest element.`,SloppyFunction:`In non-strict mode code, functions can only be declared at top level or inside a block.`,SloppyFunctionAnnexB:`In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.`,SourcePhaseImportRequiresDefault:'Only `import source x from "./module"` is valid.',StaticPrototype:`Classes may not have static property named prototype.`,SuperCallNotNewExpression:`Cannot use new with super(...).`,SuperNotAllowed:"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",SuperPrivateField:`Private fields can't be accessed on super.`,TrailingDecorator:`Decorators must be attached to a class element.`,UnexpectedArgumentPlaceholder:`Unexpected argument placeholder.`,UnexpectedDigitAfterHash:`Unexpected digit after hash token.`,UnexpectedImportExport:`'import' and 'export' may only appear at the top level.`,UnexpectedKeyword:({keyword:e})=>`Unexpected keyword '${e}'.`,UnexpectedLeadingDecorator:`Leading decorators must be attached to a class declaration.`,UnexpectedLexicalDeclaration:`Lexical declaration cannot appear in a single-statement context.`,UnexpectedNewTarget:"`new.target` can only be used in functions or class properties.",UnexpectedNumericSeparator:`A numeric separator is only allowed between two digits.`,UnexpectedPrivateField:`Unexpected private name.`,UnexpectedReservedWord:({reservedWord:e})=>`Unexpected reserved word '${e}'.`,UnexpectedSuper:`'super' is only allowed in object methods and classes.`,UnexpectedToken:({expected:e,unexpected:t})=>`Unexpected token${t?` '${t}'.`:``}${e?`, expected "${e}"`:``}`,UnexpectedTokenUnaryExponentiation:`Illegal expression. Wrap left hand side or entire exponentiation in parentheses.`,UnexpectedUsingDeclaration:"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.",UnexpectedVoidPattern:`Unexpected void binding.`,UnsupportedDecoratorExport:`A decorated export must export a class declaration.`,UnsupportedDefaultExport:"Only expressions, functions or classes are allowed as the `default` export.",UnsupportedImport:"`import` can only be used in `import()` or `import.meta`.",UnsupportedMetaProperty:({target:e,onlyValidPropertyName:t})=>`The only valid meta property for ${e} is ${e}.${t}.`,UnsupportedParameterDecorator:`Decorators cannot be used to decorate parameters.`,UnsupportedPropertyDecorator:`Decorators cannot be used to decorate object literal properties.`,UnsupportedSuper:`'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).`,UnterminatedComment:`Unterminated comment.`,UnterminatedRegExp:`Unterminated regular expression.`,UnterminatedString:`Unterminated string constant.`,UnterminatedTemplate:`Unterminated template.`,UsingDeclarationExport:`Using declaration cannot be exported.`,UsingDeclarationHasBindingPattern:`Using declaration cannot have destructuring patterns.`,VarRedeclaration:({identifierName:e})=>`Identifier '${e}' has already been declared.`,VoidPatternCatchClauseParam:"A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.",VoidPatternInitializer:`A void binding may not have an initializer.`,YieldBindingIdentifier:`Can not use 'yield' as identifier inside a generator.`,YieldInParameter:`Yield expression is not allowed in formal parameters.`,YieldNotInGeneratorFunction:`'yield' is only allowed within generator functions.`,ZeroDigitNumericSeparator:`Numeric separator can not be used after leading 0.`},te={StrictDelete:`Deleting local variable in strict mode.`,StrictEvalArguments:({referenceName:e})=>`Assigning to '${e}' in strict mode.`,StrictEvalArgumentsBinding:({bindingName:e})=>`Binding '${e}' in strict mode.`,StrictFunction:`In strict mode code, functions can only be declared at top level or inside a block.`,StrictNumericEscape:`The only valid numeric escape in strict mode is '\\0'.`,StrictOctalLiteral:`Legacy octal literals are not allowed in strict mode.`,StrictWith:`'with' in strict mode.`},ne={ParseExpressionEmptyInput:`Unexpected parseExpression() input: The input is empty or contains only comments.`,ParseExpressionExpectsEOF:({unexpected:e})=>`Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`${String.fromCodePoint(e)}\`.`},re=new Set([`ArrowFunctionExpression`,`AssignmentExpression`,`ConditionalExpression`,`YieldExpression`]),ie={PipeTopicRequiresHackPipes:'Topic references are only supported when using the `"proposal": "hack"` version of the pipeline proposal.',PipeTopicUnbound:`Topic reference is unbound; it must be inside a pipe body.`,PipeTopicUnconfiguredToken:({token:e})=>`Invalid topic token ${e}. In order to use ${e} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${e}" }.`,PipeTopicUnused:`Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.`,PipeUnparenthesizedBody:({type:e})=>`Hack-style pipe body cannot be an unparenthesized ${h({type:e})}; please wrap it in parentheses.`,PipelineUnparenthesized:`Cannot mix binary operator with solo-await F#-style pipeline. Please wrap the pipeline in parentheses.`},ae={UnsupportedBind:`Binding should be performed on object property.`,UnsupportedBindRHS:`The right-hand side of binding can not be super or import.`};function oe(e,t,n){Object.defineProperty(e,t,{enumerable:!1,configurable:!0,value:n})}function se({toMessage:e,code:t,reasonCode:n,syntaxPlugin:r}){let i=n===`MissingPlugin`||n===`MissingOneOfPlugins`;return function a(o,s,c){let u=SyntaxError();return u.code=t,u.reasonCode=n,u.loc=o,u.pos=s,u.syntaxPlugin=r,i&&(u.missingPlugin=c.missingPlugin),oe(u,`clone`,function(e={}){let{line:t,column:n,index:r=s}=e.loc??o;return a(new l(t,n),r,{...c,...e.details})}),oe(u,`details`,c),Object.defineProperty(u,"message",{configurable:!0,get(){let t=`${e(c)} (${o.line}:${o.column})`;return this.message=t,t},set(e){Object.defineProperty(this,"message",{value:e,writable:!0})}}),u}}function g(e,t){if(Array.isArray(e))return t=>g(t,e[0]);let n={};for(let r of Object.keys(e)){let i=e[r],{message:a,...o}=typeof i==`string`?{message:()=>i}:typeof i==`function`?{message:i}:i;n[r]=se({code:`BABEL_PARSER_SYNTAX_ERROR`,reasonCode:r,toMessage:typeof a==`string`?()=>a:a,...t?{syntaxPlugin:t}:{},...o})}return n}var _={...g(p),...g(ee),...g(te),...g(ne),...g`pipelineOperator`(ie),...g`functionBind`(ae)};function ce(){return{sourceType:`script`,sourceFilename:void 0,startIndex:0,startColumn:0,startLine:1,allowAwaitOutsideFunction:!1,allowReturnOutsideFunction:!1,allowNewTargetOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,allowUndeclaredExports:!1,allowYieldOutsideFunction:!1,plugins:[],strictMode:void 0,ranges:!1,locations:!0,tokens:!1,createImportExpressions:!0,createParenthesizedExpressions:!1,errorRecovery:!1,attachComment:!0,annexB:!0}}function le(e){let t=ce();if(e==null)return t;if(e.annexB!=null&&e.annexB!==!1)throw Error("The `annexB` option can only be set to `false`.");for(let n of Object.keys(t))e[n]!=null&&(t[n]=e[n]);if(t.startLine===1)e.startIndex==null&&t.startColumn>0?t.startIndex=t.startColumn:e.startColumn==null&&t.startIndex>0&&(t.startColumn=t.startIndex);else if(e.startColumn==null||e.startIndex==null)throw Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`.");if(t.sourceType===`commonjs`){if(e.allowAwaitOutsideFunction!=null)throw Error("The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.");if(e.allowReturnOutsideFunction!=null)throw Error("`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.");if(e.allowNewTargetOutsideFunction!=null)throw Error("`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.")}return t}function v(e){let{start:t,end:n}=e.loc;return e.loc.start=new l(t.line,t.column),e.loc.end=new l(n.line,n.column),e}var ue=e=>class extends e{createPosition(e){return new l(e.line,e.column)}parse(){let e=super.parse();return this.optionFlags&512&&(e.tokens=e.tokens.map(v)),v(e)}parseRegExpLiteral({pattern:e,flags:t}){let n=null;try{n=new RegExp(e,t)}catch{}let r=this.estreeParseLiteral(n);return r.regex={pattern:e,flags:t},r}parseBigIntLiteral(e){let t;try{t=BigInt(e)}catch{t=null}let n=this.estreeParseLiteral(t);return n.bigint=String(n.value||e),n}estreeParseLiteral(e){return this.parseLiteral(e,`Literal`)}parseStringLiteral(e){return this.estreeParseLiteral(e)}parseNumericLiteral(e){return this.estreeParseLiteral(e)}parseNullLiteral(){return this.estreeParseLiteral(null)}parseBooleanLiteral(e){return this.estreeParseLiteral(e)}estreeParseChainExpression(e,t){let n=this.startNodeAtNode(e);return n.expression=e,this.finishNodeAtNode(n,`ChainExpression`,t)}directiveToStmt(e){let t=e.value;delete e.value,this.castNodeTo(t,`Literal`),t.raw=t.extra.raw,t.value=t.extra.expressionValue;let n=this.castNodeTo(e,`ExpressionStatement`);return n.expression=t,n.directive=t.extra.rawValue,delete t.extra,n}fillOptionalPropertiesForTSESLint(e){}cloneEstreeStringLiteral(e){let{start:t,end:n,loc:r,range:i,raw:a,value:o}=e,s=Object.create(e.constructor.prototype);return s.type=`Literal`,s.start=t,s.end=n,s.loc=r,s.range=i,s.raw=a,s.value=o,s}initFunction(e,t){super.initFunction(e,t),e.expression=!1}checkDeclaration(e){e!=null&&this.isObjectProperty(e)?this.checkDeclaration(e.value):super.checkDeclaration(e)}getObjectOrClassMethodParams(e){return e.value.params}isValidDirective(e){return e.type===`ExpressionStatement`&&e.expression.type===`Literal`&&typeof e.expression.value==`string`&&!e.expression.extra?.parenthesized}parseBlockBody(e,t,n,r,i){super.parseBlockBody(e,t,n,r,i),e.body=e.directives.map(e=>this.directiveToStmt(e)).concat(e.body),delete e.directives}parsePrivateName(){let e=super.parsePrivateName();return this.convertPrivateNameToPrivateIdentifier(e)}convertPrivateNameToPrivateIdentifier(e){let t=super.getPrivateNameSV(e);return delete e.id,e.name=t,this.castNodeTo(e,`PrivateIdentifier`)}isPrivateName(e){return e.type===`PrivateIdentifier`}getPrivateNameSV(e){return e.name}parseLiteral(e,t){let n=super.parseLiteral(e,t);return n.raw=n.extra.raw,delete n.extra,n}parseFunctionBody(e,t,n=!1){super.parseFunctionBody(e,t,n),e.expression=e.body.type!==`BlockStatement`}parseMethod(e,t,n,r,i,a,o=!1){let s=this.startNode();s.kind=e.kind,s=super.parseMethod(s,t,n,r,i,a,o),delete s.kind;let{typeParameters:c}=e;return c&&(delete e.typeParameters,s.typeParameters=c,this.resetStartLocationFromNode(s,c)),e.value=this.castNodeTo(s,this.hasPlugin(`typescript`)&&!s.body?`TSEmptyBodyFunctionExpression`:`FunctionExpression`),a===`ClassPrivateMethod`&&(e.computed=!1),this.hasPlugin(`typescript`)&&e.abstract?(delete e.abstract,this.finishNode(e,`TSAbstractMethodDefinition`)):a===`ObjectMethod`?(e.kind===`method`&&(e.kind=`init`),e.shorthand=!1,this.finishNode(e,`Property`)):this.finishNode(e,`MethodDefinition`)}nameIsConstructor(e){return e.type===`Literal`?e.value===`constructor`:super.nameIsConstructor(e)}parseClassProperty(...e){let t=super.parseClassProperty(...e);return t.abstract&&this.hasPlugin(`typescript`)?(delete t.abstract,this.castNodeTo(t,`TSAbstractPropertyDefinition`)):this.castNodeTo(t,`PropertyDefinition`),t}parseClassPrivateProperty(...e){let t=super.parseClassPrivateProperty(...e);return t.abstract&&this.hasPlugin(`typescript`)?this.castNodeTo(t,`TSAbstractPropertyDefinition`):this.castNodeTo(t,`PropertyDefinition`),t.computed=!1,t}parseClassAccessorProperty(e){let t=super.parseClassAccessorProperty(e);return t.abstract&&this.hasPlugin(`typescript`)?(delete t.abstract,this.castNodeTo(t,`TSAbstractAccessorProperty`)):this.castNodeTo(t,`AccessorProperty`),t}parseObjectProperty(e,t,n,r){let i=super.parseObjectProperty(e,t,n,r);return i&&(i.kind=`init`,this.castNodeTo(i,`Property`)),i}finishObjectProperty(e){return e.kind=`init`,this.finishNode(e,`Property`)}isValidLVal(e,t,n,r){return e===`Property`?`value`:super.isValidLVal(e,t,n,r)}isAssignable(e,t){return e!=null&&this.isObjectProperty(e)?this.isAssignable(e.value,t):super.isAssignable(e,t)}toAssignable(e,t=!1){if(e!=null&&this.isObjectProperty(e)){let{key:n,value:r}=e;this.isPrivateName(n)&&this.classScope.usePrivateName(this.getPrivateNameSV(n),n.start),this.toAssignable(r,t)}else super.toAssignable(e,t)}toAssignableObjectExpressionProp(e,t,n){e.type===`Property`&&(e.kind===`get`||e.kind===`set`)?this.raise(_.PatternHasAccessor,e.key):e.type===`Property`&&e.method?this.raise(_.PatternHasMethod,e.key):super.toAssignableObjectExpressionProp(e,t,n)}finishCallExpression(e,t){let n=super.finishCallExpression(e,t);return n.callee.type===`Import`?(this.castNodeTo(n,`ImportExpression`),n.source=n.arguments[0],n.options=n.arguments[1]??null,delete n.arguments,delete n.callee):n.type===`OptionalCallExpression`?this.castNodeTo(n,`CallExpression`):n.optional=!1,n}parseExport(e,t){let n=this.state.lastTokStartLoc,r=super.parseExport(e,t);switch(r.type){case`ExportAllDeclaration`:r.exported=null;break;case`ExportNamedDeclaration`:r.specifiers.length===1&&r.specifiers[0].type===`ExportNamespaceSpecifier`&&(this.castNodeTo(r,`ExportAllDeclaration`),r.exported=r.specifiers[0].exported,delete r.specifiers);case`ExportDefaultDeclaration`:{let{declaration:e}=r;e?.type===`ClassDeclaration`&&e.decorators?.length>0&&e.start===r.start&&this.resetStartLocation(r,n)}}return r}stopParseSubscript(e,t){let n=super.stopParseSubscript(e,t);return t.optionalChainMember?this.estreeParseChainExpression(n,e):n}parseMember(e,t,n,r,i){let a=super.parseMember(e,t,n,r,i);return a.type===`OptionalMemberExpression`?this.castNodeTo(a,`MemberExpression`):a.optional=!1,a}isOptionalMemberExpression(e){return e.type===`ChainExpression`?e.expression.type===`MemberExpression`:super.isOptionalMemberExpression(e)}hasPropertyAsPrivateName(e){return e.type===`ChainExpression`&&(e=e.expression),super.hasPropertyAsPrivateName(e)}isObjectProperty(e){return e.type===`Property`&&e.kind===`init`&&!e.method}isObjectMethod(e){return e.type===`Property`&&(e.method||e.kind===`get`||e.kind===`set`)}castNodeTo(e,t){let n=super.castNodeTo(e,t);return this.fillOptionalPropertiesForTSESLint(n),n}cloneIdentifier(e){let t=super.cloneIdentifier(e);return this.fillOptionalPropertiesForTSESLint(t),t}cloneStringLiteral(e){return e.type===`Literal`?this.cloneEstreeStringLiteral(e):super.cloneStringLiteral(e)}finishNodeAt(e,t,n){return v(super.finishNodeAt(e,t,n))}finishNodeAtNode(e,t,n){return v(super.finishNodeAtNode(e,t,n))}finishNode(e,t){let n=super.finishNode(e,t);return this.fillOptionalPropertiesForTSESLint(n),n}resetStartLocation(e,t){super.resetStartLocation(e,t),v(e)}resetEndLocation(e,t=this.state.lastTokEndLoc){super.resetEndLocation(e,t),v(e)}},y=!0,b=!0,de=!0,fe=!0,x=!0,pe=!0,me=class{constructor(t,n={}){e(this,`label`,void 0),e(this,`keyword`,void 0),e(this,`beforeExpr`,void 0),e(this,`startsExpr`,void 0),e(this,`rightAssociative`,void 0),e(this,`isLoop`,void 0),e(this,`isAssign`,void 0),e(this,`prefix`,void 0),e(this,`postfix`,void 0),e(this,`binop`,void 0),this.label=t,this.keyword=n.keyword,this.beforeExpr=!!n.beforeExpr,this.startsExpr=!!n.startsExpr,this.rightAssociative=!!n.rightAssociative,this.isLoop=!!n.isLoop,this.isAssign=!!n.isAssign,this.prefix=!!n.prefix,this.postfix=!!n.postfix,this.binop=n.binop==null?null:n.binop}},he=new Map;function S(e,t={}){t.keyword=e;let n=T(e,t);return he.set(e,n),n}function C(e,t){return T(e,{beforeExpr:y,binop:t})}var w=-1,ge=[],_e=[],ve=[],ye=[],be=[],xe=[];function T(e,t={}){return++w,_e.push(e),ve.push(t.binop??-1),ye.push(t.beforeExpr??!1),be.push(t.startsExpr??!1),xe.push(t.prefix??!1),ge.push(new me(e,t)),w}function E(e,t={}){return++w,he.set(e,w),_e.push(e),ve.push(t.binop??-1),ye.push(t.beforeExpr??!1),be.push(t.startsExpr??!1),xe.push(t.prefix??!1),ge.push(new me(`name`,t)),w}var Se={bracketL:T(`[`,{beforeExpr:y,startsExpr:b}),bracketR:T(`]`),braceL:T(`{`,{beforeExpr:y,startsExpr:b}),braceBarL:T(`{|`,{beforeExpr:y,startsExpr:b}),braceR:T(`}`),braceBarR:T(`|}`),parenL:T(`(`,{beforeExpr:y,startsExpr:b}),parenR:T(`)`),comma:T(`,`,{beforeExpr:y}),semi:T(`;`,{beforeExpr:y}),colon:T(`:`,{beforeExpr:y}),doubleColon:T(`::`,{beforeExpr:y}),dot:T(`.`),question:T(`?`,{beforeExpr:y}),questionDot:T(`?.`),arrow:T(`=>`,{beforeExpr:y}),template:T(`template`),ellipsis:T(`...`,{beforeExpr:y}),backQuote:T("`",{startsExpr:b}),dollarBraceL:T("${",{beforeExpr:y,startsExpr:b}),templateTail:T("...`",{startsExpr:b}),templateNonTail:T("...${",{beforeExpr:y,startsExpr:b}),at:T(`@`),hash:T(`#`,{startsExpr:b}),interpreterDirective:T(`#!...`),eq:T(`=`,{beforeExpr:y,isAssign:fe}),assign:T(`_=`,{beforeExpr:y,isAssign:fe}),slashAssign:T(`_=`,{beforeExpr:y,isAssign:fe}),xorAssign:T(`_=`,{beforeExpr:y,isAssign:fe}),moduloAssign:T(`_=`,{beforeExpr:y,isAssign:fe}),incDec:T(`++/--`,{prefix:x,postfix:pe,startsExpr:b}),bang:T(`!`,{beforeExpr:y,prefix:x,startsExpr:b}),tilde:T(`~`,{beforeExpr:y,prefix:x,startsExpr:b}),doubleCaret:T(`^^`,{startsExpr:b}),doubleAt:T(`@@`,{startsExpr:b}),pipeline:C(`|>`,0),nullishCoalescing:C(`??`,1),logicalOR:C(`||`,1),logicalAND:C(`&&`,2),bitwiseOR:C(`|`,3),bitwiseXOR:C(`^`,4),bitwiseAND:C(`&`,5),equality:C(`==/!=/===/!==`,6),lt:C(`</>/<=/>=`,7),gt:C(`</>/<=/>=`,7),relational:C(`</>/<=/>=`,7),bitShift:C(`<</>>/>>>`,8),bitShiftL:C(`<</>>/>>>`,8),bitShiftR:C(`<</>>/>>>`,8),plusMin:T(`+/-`,{beforeExpr:y,binop:9,prefix:x,startsExpr:b}),modulo:T(`%`,{binop:10,startsExpr:b}),star:T(`*`,{binop:10}),slash:C(`/`,10),exponent:T(`**`,{beforeExpr:y,binop:11,rightAssociative:!0}),_in:S(`in`,{beforeExpr:y,binop:7}),_instanceof:S(`instanceof`,{beforeExpr:y,binop:7}),_break:S(`break`),_case:S(`case`,{beforeExpr:y}),_catch:S(`catch`),_continue:S(`continue`),_debugger:S(`debugger`),_default:S(`default`,{beforeExpr:y}),_else:S(`else`,{beforeExpr:y}),_finally:S(`finally`),_function:S(`function`,{startsExpr:b}),_if:S(`if`),_return:S(`return`,{beforeExpr:y}),_switch:S(`switch`),_throw:S(`throw`,{beforeExpr:y,prefix:x,startsExpr:b}),_try:S(`try`),_var:S(`var`),_const:S(`const`),_with:S(`with`),_new:S(`new`,{beforeExpr:y,startsExpr:b}),_this:S(`this`,{startsExpr:b}),_super:S(`super`,{startsExpr:b}),_class:S(`class`,{startsExpr:b}),_extends:S(`extends`,{beforeExpr:y}),_export:S(`export`),_import:S(`import`,{startsExpr:b}),_null:S(`null`,{startsExpr:b}),_true:S(`true`,{startsExpr:b}),_false:S(`false`,{startsExpr:b}),_typeof:S(`typeof`,{beforeExpr:y,prefix:x,startsExpr:b}),_void:S(`void`,{beforeExpr:y,prefix:x,startsExpr:b}),_delete:S(`delete`,{beforeExpr:y,prefix:x,startsExpr:b}),_do:S(`do`,{isLoop:de,beforeExpr:y}),_for:S(`for`,{isLoop:de}),_while:S(`while`,{isLoop:de}),_as:E(`as`,{startsExpr:b}),_assert:E(`assert`,{startsExpr:b}),_async:E(`async`,{startsExpr:b}),_await:E(`await`,{startsExpr:b}),_defer:E(`defer`,{startsExpr:b}),_from:E(`from`,{startsExpr:b}),_get:E(`get`,{startsExpr:b}),_let:E(`let`,{startsExpr:b}),_meta:E(`meta`,{startsExpr:b}),_of:E(`of`,{startsExpr:b}),_sent:E(`sent`,{startsExpr:b}),_set:E(`set`,{startsExpr:b}),_source:E(`source`,{startsExpr:b}),_static:E(`static`,{startsExpr:b}),_using:E(`using`,{startsExpr:b}),_yield:E(`yield`,{startsExpr:b}),_asserts:E(`asserts`,{startsExpr:b}),_checks:E(`checks`,{startsExpr:b}),_exports:E(`exports`,{startsExpr:b}),_global:E(`global`,{startsExpr:b}),_implements:E(`implements`,{startsExpr:b}),_intrinsic:E(`intrinsic`,{startsExpr:b}),_infer:E(`infer`,{startsExpr:b}),_is:E(`is`,{startsExpr:b}),_mixins:E(`mixins`,{startsExpr:b}),_proto:E(`proto`,{startsExpr:b}),_require:E(`require`,{startsExpr:b}),_satisfies:E(`satisfies`,{startsExpr:b}),_keyof:E(`keyof`,{startsExpr:b}),_readonly:E(`readonly`,{startsExpr:b}),_unique:E(`unique`,{startsExpr:b}),_abstract:E(`abstract`,{startsExpr:b}),_declare:E(`declare`,{startsExpr:b}),_enum:E(`enum`,{startsExpr:b}),_module:E(`module`,{startsExpr:b}),_namespace:E(`namespace`,{startsExpr:b}),_interface:E(`interface`,{startsExpr:b}),_type:E(`type`,{startsExpr:b}),_opaque:E(`opaque`,{startsExpr:b}),name:T(`name`,{startsExpr:b}),placeholder:T(`%%`,{startsExpr:b}),string:T(`string`,{startsExpr:b}),num:T(`num`,{startsExpr:b}),bigint:T(`bigint`,{startsExpr:b}),regexp:T(`regexp`,{startsExpr:b}),privateName:T(`#name`,{startsExpr:b}),eof:T(`eof`),jsxName:T(`jsxName`),jsxText:T(`jsxText`,{beforeExpr:y}),jsxTagStart:T(`jsxTagStart`,{startsExpr:b}),jsxTagEnd:T(`jsxTagEnd`)};function D(e){return e>=89&&e<=129}function Ce(e){return e<=88}function O(e){return e>=54&&e<=129}function we(e){return e>=54&&e<=132}function Te(e){return ye[e]}function k(e){return be[e]}function Ee(e){return e>=25&&e<=29}function De(e){return e>=125&&e<=127}function Oe(e){return e>=86&&e<=88}function ke(e){return e>=54&&e<=88}function Ae(e){return e>=35&&e<=55}function je(e){return e===30}function Me(e){return xe[e]}function Ne(e){return e>=117&&e<=119}function Pe(e){return e>=120&&e<=126}function A(e){return _e[e]}function Fe(e){return ve[e]}function Ie(e){return e===53}function Le(e){return e>=20&&e<=21}function Re(e){return ge[e]}var ze=class{constructor(t,n){e(this,`token`,void 0),e(this,`preserveSpace`,void 0),this.token=t,this.preserveSpace=!!n}},j={brace:new ze(`{`),j_oTag:new ze(`<tag`),j_cTag:new ze(`</tag`),j_expr:new ze(`<tag>...</tag>`,!0)},Be=`\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc`,Ve=`\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65`,He=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,7,25,39,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,5,57,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,24,43,261,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,33,24,3,24,45,74,6,0,67,12,65,1,2,0,15,4,10,7381,42,31,98,114,8702,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,208,30,2,2,2,1,2,6,3,4,10,1,225,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4381,3,5773,3,7472,16,621,2467,541,1507,4938,6,8489],Ue=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,78,5,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,199,7,137,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,55,9,266,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,233,0,3,0,8,1,6,0,475,6,110,6,6,9,4759,9,787719,239],We=RegExp(`[`+Be+`]`),Ge=RegExp(`[`+Be+Ve+`]`);function Ke(e,t){let n=65536;for(let r=0,i=t.length;r<i;r+=2){if(n+=t[r],n>e)return!1;if(n+=t[r+1],n>=e)return!0}return!1}function M(e){return e<65?e===36:e<=90?!0:e<97?e===95:e<=122?!0:e<=65535?e>=170&&We.test(String.fromCharCode(e)):Ke(e,He)}function N(e){return e<48?e===36:e<58?!0:e<65?!1:e<=90?!0:e<97?e===95:e<=122?!0:e<=65535?e>=170&&Ge.test(String.fromCharCode(e)):Ke(e,He)||Ke(e,Ue)}var qe={keyword:`break.case.catch.continue.debugger.default.do.else.finally.for.function.if.return.switch.throw.try.var.const.while.with.new.this.super.class.extends.export.import.null.true.false.in.instanceof.typeof.void.delete`.split(`.`),strict:[`implements`,`interface`,`let`,`package`,`private`,`protected`,`public`,`static`,`yield`],strictBind:[`eval`,`arguments`]},Je=new Set(qe.keyword),Ye=new Set(qe.strict),Xe=new Set(qe.strictBind);function Ze(e,t){return t&&e===`await`||e===`enum`}function Qe(e,t){return Ze(e,t)||Ye.has(e)}function $e(e){return Xe.has(e)}function et(e,t){return Qe(e,t)||$e(e)}function tt(e){return Je.has(e)}function nt(e,t,n){return e===64&&t===64&&M(n)}var rt=new Set(`break.case.catch.continue.debugger.default.do.else.finally.for.function.if.return.switch.throw.try.var.const.while.with.new.this.super.class.extends.export.import.null.true.false.in.instanceof.typeof.void.delete.implements.interface.let.package.private.protected.public.static.yield.eval.arguments.enum.await`.split(`.`));function it(e){return rt.has(e)}var at=class{constructor(t){e(this,`flags`,0),e(this,`names`,new Map),e(this,`firstLexicalName`,``),this.flags=t}},ot=class{constructor(t,n){e(this,`parser`,void 0),e(this,`scopeStack`,[]),e(this,`inModule`,void 0),e(this,`undefinedExports`,new Map),this.parser=t,this.inModule=n}get inTopLevel(){return(this.currentScope().flags&1)>0}get inFunction(){return(this.currentVarScopeFlags()&2)>0}get allowSuper(){return(this.currentThisScopeFlags()&16)>0}get allowDirectSuper(){return(this.currentThisScopeFlags()&32)>0}get allowNewTarget(){return(this.currentThisScopeFlags()&512)>0}get inClass(){return(this.currentThisScopeFlags()&64)>0}get inClassAndNotInNonArrowFunction(){let e=this.currentThisScopeFlags();return(e&64)>0&&!(e&2)}get inStaticBlock(){for(let e=this.scopeStack.length-1;;e--){let{flags:t}=this.scopeStack[e];if(t&128)return!0;if(t&3779)return!1}}get inNonArrowFunction(){return(this.currentThisScopeFlags()&2)>0}get inBareCaseStatement(){return(this.currentScope().flags&256)>0}get treatFunctionsAsVar(){return this.treatFunctionsAsVarInScope(this.currentScope())}createScope(e){return new at(e)}enter(e){this.scopeStack.push(this.createScope(e))}exit(){return this.scopeStack.pop().flags}treatFunctionsAsVarInScope(e){return!!(e.flags&130||!this.parser.inModule&&e.flags&1)}declareName(e,t,n){let r=this.currentScope();if(t&8||t&16){this.checkRedeclarationInScope(r,e,t,n);let i=r.names.get(e)||0;t&16?i|=4:(r.firstLexicalName||(r.firstLexicalName=e),i|=2),r.names.set(e,i),t&8&&this.maybeExportDefined(r,e)}else if(t&4)for(let i=this.scopeStack.length-1;i>=0&&(r=this.scopeStack[i],this.checkRedeclarationInScope(r,e,t,n),r.names.set(e,(r.names.get(e)||0)|1),this.maybeExportDefined(r,e),!(r.flags&3715));--i);this.parser.inModule&&r.flags&1&&this.undefinedExports.delete(e)}maybeExportDefined(e,t){this.parser.inModule&&e.flags&1&&this.undefinedExports.delete(t)}checkRedeclarationInScope(e,t,n,r){this.isRedeclaredInScope(e,t,n)&&this.parser.raise(_.VarRedeclaration,r,{identifierName:t})}isRedeclaredInScope(e,t,n){if(!(n&1))return!1;if(n&8)return e.names.has(t);let r=e.names.get(t)||0;return n&16?(r&2)>0||!this.treatFunctionsAsVarInScope(e)&&(r&1)>0:(r&2)>0&&!(e.flags&8&&e.firstLexicalName===t)||!this.treatFunctionsAsVarInScope(e)&&(r&4)>0}checkLocalExport(e){let{name:t}=e;this.scopeStack[0].names.has(t)||this.undefinedExports.set(t,e.start)}currentScope(){return this.scopeStack[this.scopeStack.length-1]}currentVarScopeFlags(){for(let e=this.scopeStack.length-1;;e--){let{flags:t}=this.scopeStack[e];if(t&3715)return t}}currentThisScopeFlags(){for(let e=this.scopeStack.length-1;;e--){let{flags:t}=this.scopeStack[e];if(t&3779&&!(t&4))return t}}},st=class extends at{constructor(...t){super(...t),e(this,`declareFunctions`,new Set)}},ct=class extends ot{createScope(e){return new st(e)}declareName(e,t,n){let r=this.currentScope();if(t&2048){this.checkRedeclarationInScope(r,e,t,n),this.maybeExportDefined(r,e),r.declareFunctions.add(e);return}super.declareName(e,t,n)}isRedeclaredInScope(e,t,n){if(super.isRedeclaredInScope(e,t,n))return!0;if(n&2048&&!e.declareFunctions.has(t)){let n=e.names.get(t);return(n&4)>0||(n&2)>0}return!1}checkLocalExport(e){this.scopeStack[0].declareFunctions.has(e.name)||super.checkLocalExport(e)}},lt=new Set([`_`,`any`,`bool`,`boolean`,`empty`,`extends`,`false`,`interface`,`mixed`,`null`,`number`,`static`,`string`,`true`,`typeof`,`void`]),P=g`flow`({AmbiguousConditionalArrow:`Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.`,AmbiguousDeclareModuleKind:"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.",AssignReservedType:({reservedType:e})=>`Cannot overwrite reserved type ${e}.`,DeclareClassElement:"The `declare` modifier can only appear on class fields.",DeclareClassFieldInitializer:"Initializers are not allowed in fields with the `declare` modifier.",DuplicateDeclareModuleExports:"Duplicate `declare module.exports` statement.",EnumBooleanMemberNotInitialized:({memberName:e,enumName:t})=>`Boolean enum members need to be initialized. Use either \`${e} = true,\` or \`${e} = false,\` in enum \`${t}\`.`,EnumDuplicateMemberName:({memberName:e,enumName:t})=>`Enum member names need to be unique, but the name \`${e}\` has already been used before in enum \`${t}\`.`,EnumInconsistentMemberValues:({enumName:e})=>`Enum \`${e}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,EnumInvalidExplicitType:({invalidEnumType:e,enumName:t})=>`Enum type \`${e}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${t}\`.`,EnumInvalidExplicitTypeUnknownSupplied:({enumName:e})=>`Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${e}\`.`,EnumInvalidMemberInitializerPrimaryType:({enumName:e,memberName:t,explicitType:n})=>`Enum \`${e}\` has type \`${n}\`, so the initializer of \`${t}\` needs to be a ${n} literal.`,EnumInvalidMemberInitializerSymbolType:({enumName:e,memberName:t})=>`Symbol enum members cannot be initialized. Use \`${t},\` in enum \`${e}\`.`,EnumInvalidMemberInitializerUnknownType:({enumName:e,memberName:t})=>`The enum member initializer for \`${t}\` needs to be a literal (either a boolean, number, or string) in enum \`${e}\`.`,EnumInvalidMemberName:({enumName:e,memberName:t,suggestion:n})=>`Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${t}\`, consider using \`${n}\`, in enum \`${e}\`.`,EnumNumberMemberNotInitialized:({enumName:e,memberName:t})=>`Number enum members need to be initialized, e.g. \`${t} = 1\` in enum \`${e}\`.`,EnumStringMemberInconsistentlyInitialized:({enumName:e})=>`String enum members need to consistently either all use initializers, or use no initializers, in enum \`${e}\`.`,GetterMayNotHaveThisParam:"A getter cannot have a `this` parameter.",ImportTypeShorthandOnlyInPureImport:"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.",InexactInsideExact:`Explicit inexact syntax cannot appear inside an explicit exact object type.`,InexactInsideNonObject:`Explicit inexact syntax cannot appear in class or interface definitions.`,InexactVariance:`Explicit inexact syntax cannot have variance.`,InvalidNonTypeImportInDeclareModule:"Imports within a `declare module` body must always be `import type` or `import typeof`.",MissingTypeParamDefault:`Type parameter declaration needs a default, since a preceding type parameter declaration has a default.`,NestedDeclareModule:"`declare module` cannot be used inside another `declare module`.",NestedFlowComment:`Cannot have a flow comment inside another flow comment.`,PatternIsOptional:{message:`A binding pattern parameter cannot be optional in an implementation signature.`},SetterMayNotHaveThisParam:"A setter cannot have a `this` parameter.",SpreadVariance:`Spread properties cannot have variance.`,ThisParamAnnotationRequired:"A type annotation is required for the `this` parameter.",ThisParamBannedInConstructor:"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.",ThisParamMayNotBeOptional:"The `this` parameter cannot be optional.",ThisParamMustBeFirst:"The `this` parameter must be the first function parameter.",ThisParamNoDefault:"The `this` parameter may not have a default value.",TypeBeforeInitializer:"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",TypeCastInPattern:`The type cast expression is expected to be wrapped with parenthesis.`,UnexpectedExplicitInexactInObject:`Explicit inexact syntax must appear at the end of an inexact object.`,UnexpectedReservedType:({reservedType:e})=>`Unexpected reserved type ${e}.`,UnexpectedReservedUnderscore:"`_` is only allowed as a type argument to call or new.",UnexpectedSpaceBetweenModuloChecks:"Spaces between `%` and `checks` are not allowed here.",UnexpectedSpreadType:`Spread operator cannot appear in class or interface definitions.`,UnexpectedSubtractionOperand:`Unexpected token, expected "number" or "bigint".`,UnexpectedTokenAfterTypeParameter:`Expected an arrow function after this type parameter declaration.`,UnexpectedTypeParameterBeforeAsyncArrowFunction:"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.",UnsupportedDeclareExportKind:({unsupportedExportKind:e,suggestion:t})=>`\`declare export ${e}\` is not supported. Use \`${t}\` instead.`,UnsupportedStatementInDeclareModule:`Only declares and type imports are allowed inside declare module.`,UnterminatedFlowComment:`Unterminated flow-comment.`});function ut(e){return e.type===`DeclareExportAllDeclaration`||e.type===`DeclareExportDeclaration`&&(!e.declaration||e.declaration.type!==`TypeAlias`&&e.declaration.type!==`InterfaceDeclaration`)}function dt(e){return e.importKind===`type`||e.importKind===`typeof`}var ft={const:`declare export var`,let:`declare export var`,type:`export type`,interface:`export interface`};function pt(e,t){let n=[],r=[];for(let i=0;i<e.length;i++)(t(e[i],i,e)?n:r).push(e[i]);return[n,r]}var mt=/\*?\s*@((?:no)?flow)\b/,ht=t=>class extends t{constructor(...t){super(...t),e(this,`flowPragma`,void 0)}getScopeHandler(){return ct}shouldParseTypes(){return this.getPluginOption(`flow`,`all`)||this.flowPragma===`flow`}finishToken(e,t){e!==130&&e!==9&&e!==24&&this.flowPragma===void 0&&(this.flowPragma=null),super.finishToken(e,t)}addComment(e){if(this.flowPragma===void 0){let t=mt.exec(e.value);if(t)if(t[1]===`flow`)this.flowPragma=`flow`;else if(t[1]===`noflow`)this.flowPragma=`noflow`;else throw Error(`Unexpected flow pragma`)}super.addComment(e)}flowParseTypeInitialiser(e){let t=this.state.inType;this.state.inType=!0,this.expect(e||10);let n=this.flowParseType();return this.state.inType=t,n}flowParsePredicate(){let e=this.startNode(),t=this.state.startLoc;return this.next(),this.expectContextual(106),this.state.lastTokStartLoc.index>t.index+1&&this.raise(P.UnexpectedSpaceBetweenModuloChecks,t),this.eat(6)?(e.value=super.parseExpression(),this.expect(7),this.finishNode(e,`DeclaredPredicate`)):this.finishNode(e,`InferredPredicate`)}flowParseTypeAndPredicateInitialiser(e){let t=this.state.inType;this.state.inType=!0,this.expect(10);let n=null,r=null;return e&&this.match(50)?(this.state.inType=t,r=this.flowParsePredicate()):(n=this.flowParseType(),this.state.inType=t,this.match(50)&&(r=this.flowParsePredicate())),[n,r]}flowParseDeclareClass(e){return this.next(),this.flowParseInterfaceish(e,!0),this.finishNode(e,`DeclareClass`)}flowParseDeclareFunction(e){this.next();let t=e.id=this.parseIdentifier(),n=this.startNode(),r=this.startNode();n.typeParameters=this.match(43)?this.flowParseTypeParameterDeclaration():null,this.expect(6);let i=this.flowParseFunctionTypeParams();return n.params=i.params,n.rest=i.rest,n.this=i._this,this.expect(7),[n.returnType,e.predicate]=this.flowParseTypeAndPredicateInitialiser(!1),r.typeAnnotation=this.finishNode(n,`FunctionTypeAnnotation`),t.typeAnnotation=this.finishNode(r,`TypeAnnotation`),this.resetEndLocation(t),this.semicolon(),this.scope.declareName(e.id.name,2048,e.id.start),this.finishNode(e,`DeclareFunction`)}flowParseDeclare(e,t){if(this.match(76))return this.flowParseDeclareClass(e);if(this.match(64))return this.flowParseDeclareFunction(e);if(this.match(70))return this.flowParseDeclareVariable(e);if(this.eatContextual(123))return this.match(12)?this.flowParseDeclareModuleExports(e):(t&&this.raise(P.NestedDeclareModule,this.state.lastTokStartLoc),this.flowParseDeclareModule(e));if(this.isContextual(126))return this.flowParseDeclareTypeAlias(e);if(this.isContextual(127))return this.flowParseDeclareOpaqueType(e);if(this.isContextual(125))return this.flowParseDeclareInterface(e);if(this.match(78))return this.flowParseDeclareExportDeclaration(e,t);throw this.unexpected()}flowParseDeclareVariable(e){return this.next(),e.id=this.flowParseTypeAnnotatableIdentifier(),this.scope.declareName(e.id.name,5,e.id.start),this.semicolon(),this.finishNode(e,`DeclareVariable`)}flowParseDeclareModule(e){this.scope.enter(0),e.id=this.match(130)?super.parseExprAtom():this.parseIdentifier();let t=this.startNode(),n=t.body=[];for(this.expect(2);!this.match(4);){let e=this.startNode();this.match(79)?(this.next(),!this.isContextual(126)&&!this.match(83)&&this.raise(P.InvalidNonTypeImportInDeclareModule,this.state.lastTokStartLoc),n.push(super.parseImport(e))):(this.expectContextual(121,P.UnsupportedStatementInDeclareModule),n.push(this.flowParseDeclare(e,!0)))}this.scope.exit(),this.expect(4),e.body=this.finishNode(t,`BlockStatement`);let r=null,i=!1;return n.forEach(e=>{ut(e)?(r===`CommonJS`&&this.raise(P.AmbiguousDeclareModuleKind,e),r=`ES`):e.type===`DeclareModuleExports`&&(i&&this.raise(P.DuplicateDeclareModuleExports,e),r===`ES`&&this.raise(P.AmbiguousDeclareModuleKind,e),r=`CommonJS`,i=!0)}),e.kind=r||`CommonJS`,this.finishNode(e,`DeclareModule`)}flowParseDeclareExportDeclaration(e,t){if(this.expect(78),this.eat(61))return this.match(64)||this.match(76)?e.declaration=this.flowParseDeclare(this.startNode()):(e.declaration=this.flowParseType(),this.semicolon()),e.default=!0,this.finishNode(e,`DeclareExportDeclaration`);if(this.match(71)||this.isLet()||(this.isContextual(126)||this.isContextual(125))&&!t){let e=this.state.value;throw this.raise(P.UnsupportedDeclareExportKind,this.state.startLoc,{unsupportedExportKind:e,suggestion:ft[e]})}if(this.match(70)||this.match(64)||this.match(76)||this.isContextual(127))return e.declaration=this.flowParseDeclare(this.startNode()),e.default=!1,this.finishNode(e,`DeclareExportDeclaration`);if(this.match(51)||this.match(2)||this.isContextual(125)||this.isContextual(126)||this.isContextual(127)){let t=this.parseExport(e,null);return t.type===`ExportNamedDeclaration`?(t.default=!1,delete t.exportKind,this.castNodeTo(t,`DeclareExportDeclaration`)):this.castNodeTo(t,`DeclareExportAllDeclaration`)}throw this.unexpected()}flowParseDeclareModuleExports(e){return this.next(),this.expectContextual(107),e.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(e,`DeclareModuleExports`)}flowParseDeclareTypeAlias(e){this.next();let t=this.flowParseTypeAlias(e);return this.castNodeTo(t,`DeclareTypeAlias`),t}flowParseDeclareOpaqueType(e){return this.next(),this.flowParseOpaqueType(e,!0)}flowParseDeclareInterface(e){return this.next(),this.flowParseInterfaceish(e,!1),this.finishNode(e,`DeclareInterface`)}flowParseInterfaceish(e,t){if(e.id=this.flowParseRestrictedIdentifier(!t,!0),this.scope.declareName(e.id.name,t?17:8201,e.id.start),e.typeParameters=this.match(43)?this.flowParseTypeParameterDeclaration():null,e.extends=[],this.eat(77))do e.extends.push(this.flowParseInterfaceExtends());while(!t&&this.eat(8));if(t){let t=[],n=[];if(this.eatContextual(113))do n.push(this.flowParseInterfaceExtends());while(this.eat(8));if(this.eatContextual(109))do t.push(this.flowParseClassImplements());while(this.eat(8));e.implements=t,e.mixins=n}e.body=this.flowParseObjectType({allowStatic:t,allowExact:!1,allowSpread:!1,allowProto:t,allowInexact:!1})}flowParseInterfaceExtends(){let e=this.startNode();return e.id=this.flowParseQualifiedTypeIdentifier(),e.typeParameters=this.match(43)?this.flowParseTypeParameterInstantiation():null,this.finishNode(e,`InterfaceExtends`)}flowParseInterface(e){return this.flowParseInterfaceish(e,!1),this.finishNode(e,`InterfaceDeclaration`)}checkNotUnderscore(e){e===`_`&&this.raise(P.UnexpectedReservedUnderscore,this.state.startLoc)}checkReservedType(e,t,n){lt.has(e)&&this.raise(n?P.AssignReservedType:P.UnexpectedReservedType,t,{reservedType:e})}flowParseRestrictedIdentifierName(e,t){return this.checkReservedType(this.state.value,this.state.startLoc,t),this.parseIdentifierName(e)}flowParseRestrictedIdentifier(e,t){let n=this.startNode(),r=this.flowParseRestrictedIdentifierName(e,t);return this.createIdentifier(n,r)}flowParseTypeAlias(e){return e.id=this.flowParseRestrictedIdentifier(!1,!0),this.scope.declareName(e.id.name,8201,e.id.start),e.typeParameters=this.match(43)?this.flowParseTypeParameterDeclaration():null,e.right=this.flowParseTypeInitialiser(25),this.semicolon(),this.finishNode(e,`TypeAlias`)}flowParseOpaqueType(e,t){return this.expectContextual(126),e.id=this.flowParseRestrictedIdentifier(!0,!0),this.scope.declareName(e.id.name,8201,e.id.start),e.typeParameters=this.match(43)?this.flowParseTypeParameterDeclaration():null,e.supertype=null,this.match(10)&&(e.supertype=this.flowParseTypeInitialiser(10)),e.impltype=null,t||(e.impltype=this.flowParseTypeInitialiser(25)),this.semicolon(),this.finishNode(e,t?`DeclareOpaqueType`:`OpaqueType`)}flowParseTypeParameterBound(){if(this.match(10)||this.isContextual(77)){let e=this.startNode();return this.next(),e.typeAnnotation=this.flowParseType(),this.finishNode(e,`TypeAnnotation`)}}flowParseTypeParameter(e=!1){let t=this.state.startLoc,n=this.startNode(),r=this.flowParseVariance();return n.name=this.flowParseRestrictedIdentifierName(),n.variance=r,n.bound=this.flowParseTypeParameterBound(),this.match(25)?(this.eat(25),n.default=this.flowParseType()):e&&this.raise(P.MissingTypeParamDefault,t),this.finishNode(n,`TypeParameter`)}flowParseTypeParameterDeclaration(){let e=this.state.inType,t=this.startNode();t.params=[],this.state.inType=!0,this.match(43)||this.match(138)?this.next():this.unexpected();let n=!1;do{let e=this.flowParseTypeParameter(n);t.params.push(e),e.default&&(n=!0),this.match(44)||this.expect(8)}while(!this.match(44));return this.expect(44),this.state.inType=e,this.finishNode(t,`TypeParameterDeclaration`)}flowInTopLevelContext(e){if(this.curContext()!==j.brace){let t=this.state.context;this.state.context=[t[0]];try{return e()}finally{this.state.context=t}}return e()}flowParseTypeParameterInstantiationInExpression(){if(this.reScan_lt()===43)return this.flowParseTypeParameterInstantiation()}flowParseTypeParameterInstantiation(){let e=this.startNode(),t=this.state.inType;return this.state.inType=!0,e.params=[],this.flowInTopLevelContext(()=>{this.expect(43);let t=this.state.noAnonFunctionType;for(this.state.noAnonFunctionType=!1;!this.match(44);)e.params.push(this.flowParseType()),this.match(44)||this.expect(8);this.state.noAnonFunctionType=t}),this.state.inType=t,!this.state.inType&&this.curContext()===j.brace&&this.reScan_lt_gt(),this.expect(44),this.finishNode(e,`TypeParameterInstantiation`)}flowParseTypeParameterInstantiationCallOrNew(){if(this.reScan_lt()!==43)return null;let e=this.startNode(),t=this.state.inType;for(e.params=[],this.state.inType=!0,this.expect(43);!this.match(44);)e.params.push(this.flowParseTypeOrImplicitInstantiation()),this.match(44)||this.expect(8);return this.expect(44),this.state.inType=t,this.finishNode(e,`TypeParameterInstantiation`)}flowParseInterfaceType(){let e=this.startNode();if(this.expectContextual(125),e.extends=[],this.eat(77))do e.extends.push(this.flowParseInterfaceExtends());while(this.eat(8));return e.body=this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!1,allowProto:!1,allowInexact:!1}),this.finishNode(e,`InterfaceTypeAnnotation`)}flowParseObjectPropertyKey(){return this.match(131)||this.match(130)?super.parseExprAtom():this.parseIdentifier(!0)}flowParseObjectTypeIndexer(e,t,n){return e.static=t,this.lookahead().type===10?(e.id=this.parseIdentifier(!0),e.key=this.flowParseTypeInitialiser()):(e.id=null,e.key=this.flowParseType()),this.expect(1),e.value=this.flowParseTypeInitialiser(),e.variance=n,this.finishNode(e,`ObjectTypeIndexer`)}flowParseObjectTypeInternalSlot(e,t){return e.static=t,e.id=this.parseIdentifier(!0),this.expect(1),this.expect(1),this.match(43)||this.match(6)?(e.method=!0,e.optional=!1,e.value=this.flowParseObjectTypeMethodish(this.startNodeAtNode(e))):(e.method=!1,this.eat(13)&&(e.optional=!0),e.value=this.flowParseTypeInitialiser()),this.finishNode(e,`ObjectTypeInternalSlot`)}flowParseObjectTypeMethodish(e){for(e.params=[],e.rest=null,e.typeParameters=null,e.this=null,this.match(43)&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(6),this.match(74)&&(e.this=this.flowParseFunctionTypeParam(!0),e.this.name=null,this.match(7)||this.expect(8));!this.match(7)&&!this.match(17);)e.params.push(this.flowParseFunctionTypeParam(!1)),this.match(7)||this.expect(8);return this.eat(17)&&(e.rest=this.flowParseFunctionTypeParam(!1)),this.expect(7),e.returnType=this.flowParseTypeInitialiser(),this.finishNode(e,`FunctionTypeAnnotation`)}flowParseObjectTypeCallProperty(e,t){let n=this.startNode();return e.static=t,e.value=this.flowParseObjectTypeMethodish(n),this.finishNode(e,`ObjectTypeCallProperty`)}flowParseObjectType({allowStatic:e,allowExact:t,allowSpread:n,allowProto:r,allowInexact:i}){let a=this.state.inType;this.state.inType=!0;let o=this.startNode();o.callProperties=[],o.properties=[],o.indexers=[],o.internalSlots=[];let s,c,l=!1;for(t&&this.match(3)?(this.expect(3),s=5,c=!0):(this.expect(2),s=4,c=!1),o.exact=c;!this.match(s);){let t=!1,a=null,s=null,u=this.startNode();if(r&&this.isContextual(114)){let t=this.lookahead();t.type!==10&&t.type!==13&&(this.next(),a=this.state.startLoc,e=!1)}if(e&&this.isContextual(102)){let e=this.lookahead();e.type!==10&&e.type!==13&&(this.next(),t=!0)}let d=this.flowParseVariance();if(this.eat(0))a!=null&&this.unexpected(a),this.eat(0)?(d&&this.unexpected(d.start),o.internalSlots.push(this.flowParseObjectTypeInternalSlot(u,t))):o.indexers.push(this.flowParseObjectTypeIndexer(u,t,d));else if(this.match(6)||this.match(43))a!=null&&this.unexpected(a),d&&this.unexpected(d.start),o.callProperties.push(this.flowParseObjectTypeCallProperty(u,t));else{let e=`init`;(this.isContextual(95)||this.isContextual(100))&&we(this.lookahead().type)&&(e=this.state.value,this.next());let r=this.flowParseObjectTypeProperty(u,t,a,d,e,n,i??!c);r===null?(l=!0,s=this.state.lastTokStartLoc):o.properties.push(r)}this.flowObjectTypeSemicolon(),s&&!this.match(4)&&!this.match(5)&&this.raise(P.UnexpectedExplicitInexactInObject,s)}this.expect(s),n&&(o.inexact=l);let u=this.finishNode(o,`ObjectTypeAnnotation`);return this.state.inType=a,u}flowParseObjectTypeProperty(e,t,n,r,i,a,o){if(this.eat(17))return this.match(8)||this.match(9)||this.match(4)||this.match(5)?(a?o||this.raise(P.InexactInsideExact,this.state.lastTokStartLoc):this.raise(P.InexactInsideNonObject,this.state.lastTokStartLoc),r&&this.raise(P.InexactVariance,r),null):(a||this.raise(P.UnexpectedSpreadType,this.state.lastTokStartLoc),n!=null&&this.unexpected(n),r&&this.raise(P.SpreadVariance,r),e.argument=this.flowParseType(),this.finishNode(e,`ObjectTypeSpreadProperty`));{e.key=this.flowParseObjectPropertyKey(),e.static=t,e.proto=n!=null,e.kind=i;let o=!1;return this.match(43)||this.match(6)?(e.method=!0,n!=null&&this.unexpected(n),r&&this.unexpected(r.start),e.value=this.flowParseObjectTypeMethodish(this.startNodeAtNode(e)),i===`get`||i===`set`?this.flowCheckGetterSetterParams(e):!t&&!a&&e.key.name===`constructor`&&e.value.this&&this.raise(P.ThisParamBannedInConstructor,e.value.this)):(i!==`init`&&this.unexpected(),e.method=!1,this.eat(13)&&(o=!0),e.value=this.flowParseTypeInitialiser(),e.variance=r),e.optional=o,this.finishNode(e,`ObjectTypeProperty`)}}flowCheckGetterSetterParams(e){let t=e.kind===`get`?0:1,n=e.value,r=n.params.length+ +!!n.rest;n.this&&this.raise(e.kind===`get`?P.GetterMayNotHaveThisParam:P.SetterMayNotHaveThisParam,n.this),r!==t&&this.raise(e.kind===`get`?_.BadGetterArity:_.BadSetterArity,e),e.kind===`set`&&n.rest&&this.raise(_.BadSetterRestParameter,e)}flowObjectTypeSemicolon(){!this.eat(9)&&!this.eat(8)&&!this.match(4)&&!this.match(5)&&this.unexpected()}flowParseQualifiedTypeIdentifier(e,t){e??(e=this.state.startLoc);let n=t||this.flowParseRestrictedIdentifier(!0);for(;this.eat(12);){let t=this.startNodeAt(e);t.qualification=n,t.id=this.flowParseRestrictedIdentifier(!0),n=this.finishNode(t,`QualifiedTypeIdentifier`)}return n}flowParseGenericType(e,t){let n=this.startNodeAt(e);return n.typeParameters=null,n.id=this.flowParseQualifiedTypeIdentifier(e,t),this.match(43)&&(n.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(n,`GenericTypeAnnotation`)}flowParseTypeofType(){let e=this.startNode();return this.expect(83),e.argument=this.flowParsePrimaryType(),this.finishNode(e,`TypeofTypeAnnotation`)}flowParseTupleType(){let e=this.startNode();for(e.types=[],this.expect(0);this.state.pos<this.length&&!this.match(1)&&(e.types.push(this.flowParseType()),!this.match(1));)this.expect(8);return this.expect(1),this.finishNode(e,`TupleTypeAnnotation`)}flowParseFunctionTypeParam(e){let t=null,n=!1,r,i=this.startNode(),a=this.lookahead(),o=this.state.type===74;return a.type===10||a.type===13?(o&&!e&&this.raise(P.ThisParamMustBeFirst,i),t=this.parseIdentifier(o),this.eat(13)&&(n=!0,o&&this.raise(P.ThisParamMayNotBeOptional,i)),r=this.flowParseTypeInitialiser()):r=this.flowParseType(),i.name=t,i.optional=n,i.typeAnnotation=r,this.finishNode(i,`FunctionTypeParam`)}reinterpretTypeAsFunctionTypeParam(e){let t=this.startNodeAtNode(e);return t.name=null,t.optional=!1,t.typeAnnotation=e,this.finishNode(t,`FunctionTypeParam`)}flowParseFunctionTypeParams(e=[]){let t=null,n=null;for(this.match(74)&&(n=this.flowParseFunctionTypeParam(!0),n.name=null,this.match(7)||this.expect(8));!this.match(7)&&!this.match(17);)e.push(this.flowParseFunctionTypeParam(!1)),this.match(7)||this.expect(8);return this.eat(17)&&(t=this.flowParseFunctionTypeParam(!1)),{params:e,rest:t,_this:n}}flowIdentToTypeAnnotation(e,t,n){switch(n.name){case`any`:return this.finishNode(t,`AnyTypeAnnotation`);case`bool`:case`boolean`:return this.finishNode(t,`BooleanTypeAnnotation`);case`mixed`:return this.finishNode(t,`MixedTypeAnnotation`);case`empty`:return this.finishNode(t,`EmptyTypeAnnotation`);case`number`:return this.finishNode(t,`NumberTypeAnnotation`);case`string`:return this.finishNode(t,`StringTypeAnnotation`);case`symbol`:return this.finishNode(t,`SymbolTypeAnnotation`);default:return this.checkNotUnderscore(n.name),this.flowParseGenericType(e,n)}}flowParsePrimaryType(){let e=this.state.startLoc,t=this.startNode(),n,r,i=!1,a=this.state.noAnonFunctionType;switch(this.state.type){case 2:return this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!0,allowProto:!1,allowInexact:!0});case 3:return this.flowParseObjectType({allowStatic:!1,allowExact:!0,allowSpread:!0,allowProto:!1,allowInexact:!1});case 0:return this.state.noAnonFunctionType=!1,r=this.flowParseTupleType(),this.state.noAnonFunctionType=a,r;case 43:{let e=this.startNode();return e.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(6),n=this.flowParseFunctionTypeParams(),e.params=n.params,e.rest=n.rest,e.this=n._this,this.expect(7),this.expect(15),e.returnType=this.flowParseType(),this.finishNode(e,`FunctionTypeAnnotation`)}case 6:{let e=this.startNode();if(this.next(),!this.match(7)&&!this.match(17))if(D(this.state.type)||this.match(74)){let e=this.lookahead().type;i=e!==13&&e!==10}else i=!0;if(i){if(this.state.noAnonFunctionType=!1,r=this.flowParseType(),this.state.noAnonFunctionType=a,this.state.noAnonFunctionType||!(this.match(8)||this.match(7)&&this.lookahead().type===15))return this.expect(7),r;this.eat(8)}return n=r?this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(r)]):this.flowParseFunctionTypeParams(),e.params=n.params,e.rest=n.rest,e.this=n._this,this.expect(7),this.expect(15),e.returnType=this.flowParseType(),e.typeParameters=null,this.finishNode(e,`FunctionTypeAnnotation`)}case 130:return this.parseLiteral(this.state.value,`StringLiteralTypeAnnotation`);case 81:case 82:return t.value=this.match(81),this.next(),this.finishNode(t,`BooleanLiteralTypeAnnotation`);case 49:if(this.state.value===`-`){if(this.next(),this.match(131))return this.parseLiteralAtNode(-this.state.value,`NumberLiteralTypeAnnotation`,t);if(this.match(132))return this.parseLiteralAtNode(-this.state.value,`BigIntLiteralTypeAnnotation`,t);throw this.raise(P.UnexpectedSubtractionOperand,this.state.startLoc)}throw this.unexpected();case 131:return this.parseLiteral(this.state.value,`NumberLiteralTypeAnnotation`);case 132:return this.parseLiteral(this.state.value,`BigIntLiteralTypeAnnotation`);case 84:return this.next(),this.finishNode(t,`VoidTypeAnnotation`);case 80:return this.next(),this.finishNode(t,`NullLiteralTypeAnnotation`);case 74:return this.next(),this.finishNode(t,`ThisTypeAnnotation`);case 51:return this.next(),this.finishNode(t,`ExistsTypeAnnotation`);case 83:return this.flowParseTypeofType();default:if(ke(this.state.type)){let e=A(this.state.type);return this.next(),super.createIdentifier(t,e)}if(D(this.state.type))return this.isContextual(125)?this.flowParseInterfaceType():this.flowIdentToTypeAnnotation(e,t,this.parseIdentifier())}throw this.unexpected()}flowParsePostfixType(){let e=this.state.startLoc,t=this.flowParsePrimaryType(),n=!1;for(;(this.match(0)||this.match(14))&&!this.canInsertSemicolon();){let r=this.startNodeAt(e),i=this.eat(14);n=n||i,this.expect(0),!i&&this.match(1)?(r.elementType=t,this.next(),t=this.finishNode(r,`ArrayTypeAnnotation`)):(r.objectType=t,r.indexType=this.flowParseType(),this.expect(1),n?(r.optional=i,t=this.finishNode(r,`OptionalIndexedAccessType`)):t=this.finishNode(r,`IndexedAccessType`))}return t}flowParsePrefixType(){let e=this.startNode();return this.eat(13)?(e.typeAnnotation=this.flowParsePrefixType(),this.finishNode(e,`NullableTypeAnnotation`)):this.flowParsePostfixType()}flowParseAnonFunctionWithoutParens(){let e=this.flowParsePrefixType();if(!this.state.noAnonFunctionType&&this.eat(15)){let t=this.startNodeAtNode(e);return t.params=[this.reinterpretTypeAsFunctionTypeParam(e)],t.rest=null,t.this=null,t.returnType=this.flowParseType(),t.typeParameters=null,this.finishNode(t,`FunctionTypeAnnotation`)}return e}flowParseIntersectionType(){let e=this.startNode();this.eat(41);let t=this.flowParseAnonFunctionWithoutParens();for(e.types=[t];this.eat(41);)e.types.push(this.flowParseAnonFunctionWithoutParens());return e.types.length===1?t:this.finishNode(e,`IntersectionTypeAnnotation`)}flowParseUnionType(){let e=this.startNode();this.eat(39);let t=this.flowParseIntersectionType();for(e.types=[t];this.eat(39);)e.types.push(this.flowParseIntersectionType());return e.types.length===1?t:this.finishNode(e,`UnionTypeAnnotation`)}flowParseType(){let e=this.state.inType;this.state.inType=!0;let t=this.flowParseUnionType();return this.state.inType=e,t}flowParseTypeOrImplicitInstantiation(){if(this.state.type===128&&this.state.value===`_`){let e=this.state.startLoc,t=this.parseIdentifier();return this.flowParseGenericType(e,t)}return this.flowParseType()}flowParseTypeAnnotation(){let e=this.startNode();return e.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(e,`TypeAnnotation`)}flowParseTypeAnnotatableIdentifier(){let e=this.startNode(),t=this.parseIdentifierName();return this.match(10)&&(e.typeAnnotation=this.flowParseTypeAnnotation()),this.createIdentifier(e,t)}typeCastToParameter(e){return e.expression.typeAnnotation=e.typeAnnotation,this.resetEndLocationFromNode(e.expression,e.typeAnnotation),e.expression}flowParseVariance(){let e=null;return this.match(49)?(e=this.startNode(),this.state.value===`+`?e.kind=`plus`:e.kind=`minus`,this.next(),this.finishNode(e,`Variance`)):e}parseFunctionBody(e,t,n=!1){if(t){this.forwardNoArrowParamsConversionAt(e,()=>super.parseFunctionBody(e,!0,n));return}super.parseFunctionBody(e,!1,n)}parseFunctionBodyAndFinish(e,t,n=!1){if(this.match(10)){let n=this.startNode();t===`FunctionDeclaration`||t===`FunctionExpression`||t===`ArrowFunctionExpression`?[n.typeAnnotation,e.predicate]=this.flowParseTypeAndPredicateInitialiser(!0):n.typeAnnotation=this.flowParseTypeInitialiser(),e.returnType=n.typeAnnotation?this.finishNode(n,`TypeAnnotation`):null}return super.parseFunctionBodyAndFinish(e,t,n)}parseStatementLike(e){if(this.state.strict&&this.isContextual(125)){if(O(this.lookahead().type)){let e=this.startNode();return this.next(),this.flowParseInterface(e)}}else if(this.isContextual(122)){let e=this.startNode();return this.next(),this.flowParseEnumDeclaration(e)}let t=super.parseStatementLike(e);return this.flowPragma===void 0&&!this.isValidDirective(t)&&(this.flowPragma=null),t}parseExpressionStatement(e,t,n){if(t.type===`Identifier`){if(t.name===`declare`){if(this.match(76)||D(this.state.type)||this.match(64)||this.match(70)||this.match(78))return this.flowParseDeclare(e)}else if(D(this.state.type)){if(t.name===`interface`)return this.flowParseInterface(e);if(t.name===`type`)return this.flowParseTypeAlias(e);if(t.name===`opaque`)return this.flowParseOpaqueType(e,!1)}}return super.parseExpressionStatement(e,t,n)}shouldParseExportDeclaration(){let{type:e}=this.state;return e===122||De(e)?!this.state.containsEsc:super.shouldParseExportDeclaration()}isExportDefaultSpecifier(){let{type:e}=this.state;return e===122||De(e)?this.state.containsEsc:super.isExportDefaultSpecifier()}parseExportDefaultExpression(){if(this.isContextual(122)){let e=this.startNode();return this.next(),this.flowParseEnumDeclaration(e)}return super.parseExportDefaultExpression()}parseConditional(e,t,n){if(!this.match(13))return e;if(n!=null){let t=this.lookaheadCharCode();if(t===44||t===61||t===58||t===41)return this.setOptionalParametersError(n),e}this.expect(13);let r=this.state.clone(),i=this.state.noArrowAt,a=this.startNodeAt(t),{consequent:o,failed:s}=this.tryParseConditionalConsequent(),c=this.getArrowLikeExpressions(o),l=c[0],u=c[1];if(s||u.length>0){let e=[...i];if(u.length>0){this.state=r,this.state.noArrowAt=e;for(let t=0;t<u.length;t++)e.push(u[t].start);({consequent:o,failed:s}=this.tryParseConditionalConsequent()),[l]=this.getArrowLikeExpressions(o)}s&&l.length>1&&this.raise(P.AmbiguousConditionalArrow,r.startLoc),s&&l.length===1&&(this.state=r,e.push(l[0].start),this.state.noArrowAt=e,{consequent:o}=this.tryParseConditionalConsequent())}return this.getArrowLikeExpressions(o,!0),this.state.noArrowAt=i,this.expect(10),a.test=e,a.consequent=o,a.alternate=this.forwardNoArrowParamsConversionAt(a,()=>this.parseMaybeAssign(void 0,void 0)),this.finishNode(a,`ConditionalExpression`)}tryParseConditionalConsequent(){this.state.noArrowParamsConversionAt.push(this.state.start);let e=this.parseMaybeAssignAllowIn(),t=!this.match(10);return this.state.noArrowParamsConversionAt.pop(),{consequent:e,failed:t}}getArrowLikeExpressions(e,t){let n=[e],r=[];for(;n.length!==0;){let e=n.pop();e.type===`ArrowFunctionExpression`&&e.body.type!==`BlockStatement`?(e.typeParameters||!e.returnType?this.finishArrowValidation(e):r.push(e),n.push(e.body)):e.type===`ConditionalExpression`&&(n.push(e.consequent),n.push(e.alternate))}return t?(r.forEach(e=>this.finishArrowValidation(e)),[r,[]]):pt(r,e=>e.params.every(e=>this.isAssignable(e,!0)))}finishArrowValidation(e){this.toAssignableList(e.params,e.extra?.trailingCommaLoc,!1),this.scope.enter(518),super.checkParams(e,!1,!0),this.scope.exit()}forwardNoArrowParamsConversionAt(e,t){let n;return this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(e.start))?(this.state.noArrowParamsConversionAt.push(this.state.start),n=t(),this.state.noArrowParamsConversionAt.pop()):n=t(),n}parseParenItem(e,t){let n=super.parseParenItem(e,t);if(this.eat(13)&&(n.optional=!0,this.resetEndLocation(e)),this.match(10)){let e=this.startNodeAt(t);return e.expression=n,e.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(e,`TypeCastExpression`)}return n}assertModuleNodeAllowed(e){e.type===`ImportDeclaration`&&(e.importKind===`type`||e.importKind===`typeof`)||e.type===`ExportNamedDeclaration`&&e.exportKind===`type`||e.type===`ExportAllDeclaration`&&e.exportKind===`type`||super.assertModuleNodeAllowed(e)}parseExportDeclaration(e){if(this.isContextual(126)){e.exportKind=`type`;let t=this.startNode();return this.next(),this.match(2)?(e.specifiers=this.parseExportSpecifiers(!0),super.parseExportFrom(e),null):this.flowParseTypeAlias(t)}if(this.isContextual(127)){e.exportKind=`type`;let t=this.startNode();return this.next(),this.flowParseOpaqueType(t,!1)}if(this.isContextual(125)){e.exportKind=`type`;let t=this.startNode();return this.next(),this.flowParseInterface(t)}if(this.isContextual(122)){e.exportKind=`value`;let t=this.startNode();return this.next(),this.flowParseEnumDeclaration(t)}return super.parseExportDeclaration(e)}eatExportStar(e){return super.eatExportStar(e)?!0:this.isContextual(126)&&this.lookahead().type===51?(e.exportKind=`type`,this.next(),this.next(),!0):!1}maybeParseExportNamespaceSpecifier(e){let{startLoc:t}=this.state,n=super.maybeParseExportNamespaceSpecifier(e);return n&&e.exportKind===`type`&&this.unexpected(t),n}parseClassId(e,t,n){if((!t||n)&&this.isContextual(109)){e.id=null;return}super.parseClassId(e,t,n),this.match(43)&&(e.typeParameters=this.flowParseTypeParameterDeclaration())}parseClassMember(e,t,n){let{startLoc:r}=this.state;if(this.isContextual(121)){if(super.parseClassMemberFromModifier(e,t))return;t.declare=!0}super.parseClassMember(e,t,n),t.declare&&(t.type!==`ClassProperty`&&t.type!==`ClassPrivateProperty`&&t.type!==`PropertyDefinition`?this.raise(P.DeclareClassElement,r):t.value&&this.raise(P.DeclareClassFieldInitializer,t.value))}isIterator(e){return e===`iterator`||e===`asyncIterator`}readIterator(){let e=super.readWord1(),t=`@@`+e;(!this.isIterator(e)||!this.state.inType)&&this.raise(_.InvalidIdentifier,this.state.curPosition(),{identifierName:t}),this.finishToken(128,t)}getTokenFromCode(e){let t=this.input.charCodeAt(this.state.pos+1);e===123&&t===124?this.finishOp(3,2):this.state.inType&&(e===62||e===60)?this.finishOp(e===62?44:43,1):this.state.inType&&e===63?t===46?this.finishOp(14,2):this.finishOp(13,1):nt(e,t,this.input.charCodeAt(this.state.pos+2))?(this.state.pos+=2,this.readIterator()):super.getTokenFromCode(e)}isAssignable(e,t){return e.type===`TypeCastExpression`?this.isAssignable(e.expression,t):super.isAssignable(e,t)}toAssignable(e,t=!1){!t&&e.type===`AssignmentExpression`&&e.left.type===`TypeCastExpression`&&(e.left=this.typeCastToParameter(e.left)),super.toAssignable(e,t)}toAssignableListItem(e,t,n){let r=e[t];r.type===`TypeCastExpression`&&(e[t]=this.typeCastToParameter(r)),super.toAssignableListItem(e,t,n)}toReferencedList(e,t){for(let n=0;n<e.length;n++){let r=e[n];r?.type===`TypeCastExpression`&&!r.extra?.parenthesized&&(e.length>1||!t)&&this.raise(P.TypeCastInPattern,r.typeAnnotation)}return e}parseArrayLike(e,t){let n=super.parseArrayLike(e,t);return n.type===`ArrayExpression`&&this.toReferencedList(n.elements),n}isValidLVal(e,t,n,r){return e===`TypeCastExpression`||super.isValidLVal(e,t,n,r)}parseClassProperty(e){return this.match(10)&&(e.typeAnnotation=this.flowParseTypeAnnotation()),super.parseClassProperty(e)}parseClassPrivateProperty(e){return this.match(10)&&(e.typeAnnotation=this.flowParseTypeAnnotation()),super.parseClassPrivateProperty(e)}isClassMethod(){return this.match(43)||super.isClassMethod()}isClassProperty(){return this.match(10)||super.isClassProperty()}isNonstaticConstructor(e){return!this.match(10)&&super.isNonstaticConstructor(e)}pushClassMethod(e,t,n,r,i,a){if(t.variance&&this.unexpected(t.variance.start),delete t.variance,this.match(43)&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),super.pushClassMethod(e,t,n,r,i,a),t.params&&i){let e=t.params;e.length>0&&this.isThisParam(e[0])&&this.raise(P.ThisParamBannedInConstructor,t)}else if(t.type===`MethodDefinition`&&i&&t.value.params){let e=t.value.params;e.length>0&&this.isThisParam(e[0])&&this.raise(P.ThisParamBannedInConstructor,t)}}pushClassPrivateMethod(e,t,n,r){t.variance&&this.unexpected(t.variance.start),delete t.variance,this.match(43)&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),super.pushClassPrivateMethod(e,t,n,r)}flowParseClassImplements(){let e=this.startNode();return e.id=this.flowParseRestrictedIdentifier(!0),e.typeParameters=this.match(43)?this.flowParseTypeParameterInstantiation():null,this.finishNode(e,`ClassImplements`)}parseClassSuper(e){if(super.parseClassSuper(e),e.superClass&&(this.match(43)||this.match(47))&&(e.superTypeArguments=this.flowParseTypeParameterInstantiationInExpression()),this.eatContextual(109)){let t=e.implements=[];do t.push(this.flowParseClassImplements());while(this.eat(8))}}checkGetterSetterParams(e){super.checkGetterSetterParams(e);let t=this.getObjectOrClassMethodParams(e);if(t.length>0){let n=t[0];this.isThisParam(n)&&e.kind===`get`?this.raise(P.GetterMayNotHaveThisParam,n):this.isThisParam(n)&&this.raise(P.SetterMayNotHaveThisParam,n)}}parsePropertyNamePrefixOperator(e){e.variance=this.flowParseVariance()}parseObjPropValue(e,t,n,r,i,a,o){e.variance&&this.unexpected(e.variance.start),delete e.variance;let s;this.match(43)&&!a&&(s=this.flowParseTypeParameterDeclaration(),this.match(6)||this.unexpected());let c=super.parseObjPropValue(e,t,n,r,i,a,o);return s&&((c.value||c).typeParameters=s),c}parseFunctionParamType(e){return this.eat(13)&&(e.type!==`Identifier`&&this.raise(P.PatternIsOptional,e),this.isThisParam(e)&&this.raise(P.ThisParamMayNotBeOptional,e),e.optional=!0),this.match(10)?e.typeAnnotation=this.flowParseTypeAnnotation():this.isThisParam(e)&&this.raise(P.ThisParamAnnotationRequired,e),this.match(25)&&this.isThisParam(e)&&this.raise(P.ThisParamNoDefault,e),this.resetEndLocation(e),e}parseMaybeDefault(e,t){let n=super.parseMaybeDefault(e,t);return n.type===`AssignmentPattern`&&n.typeAnnotation&&n.right.start<n.typeAnnotation.start&&this.raise(P.TypeBeforeInitializer,n.typeAnnotation),n}parseImportSpecifierLocal(e,t,n){t.local=dt(e)?this.flowParseRestrictedIdentifier(!0,!0):this.parseIdentifier(),e.specifiers.push(this.finishImportSpecifier(t,n))}isPotentialImportPhase(e){if(super.isPotentialImportPhase(e))return!0;if(this.isContextual(126)){if(!e)return!0;let t=this.lookaheadCharCode();return t===123||t===42}return!e&&this.isContextual(83)}applyImportPhase(e,t,n,r){if(super.applyImportPhase(e,t,n,r),t){if(!n&&this.match(61))return;e.exportKind=n===`type`?n:`value`}else n===`type`&&this.match(51)&&this.unexpected(),e.importKind=n===`type`||n===`typeof`?n:`value`}parseImportSpecifier(e,t,n,r,i){let a=e.imported,o=null;a.type===`Identifier`&&(a.name===`type`?o=`type`:a.name===`typeof`&&(o=`typeof`));let s=!1;if(this.isContextual(89)&&!this.isLookaheadContextual(`as`)){let t=this.parseIdentifier(!0);o!==null&&!O(this.state.type)?(e.imported=t,e.importKind=o,e.local=this.cloneIdentifier(t)):(e.imported=a,e.importKind=null,e.local=this.parseIdentifier())}else{if(o!==null&&O(this.state.type))e.imported=this.parseIdentifier(!0),e.importKind=o;else{if(t)throw this.raise(_.ImportBindingIsString,e,{importName:a.value});e.imported=a,e.importKind=null}this.eatContextual(89)?e.local=this.parseIdentifier():(s=!0,e.local=this.cloneIdentifier(e.imported))}let c=dt(e);return n&&c&&this.raise(P.ImportTypeShorthandOnlyInPureImport,e),(n||c)&&this.checkReservedType(e.local.name,e.local.start,!0),s&&!n&&!c&&this.checkReservedWord(e.local.name,e.start,!0,!0),this.finishImportSpecifier(e,`ImportSpecifier`)}parseBindingAtom(){return this.state.type===74?this.parseIdentifier(!0):super.parseBindingAtom()}parseFunctionParams(e,t){let n=e.kind;n!==`get`&&n!==`set`&&this.match(43)&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),super.parseFunctionParams(e,t)}parseVarId(e,t){super.parseVarId(e,t),this.match(10)&&(e.id.typeAnnotation=this.flowParseTypeAnnotation(),this.resetEndLocation(e.id))}parseAsyncArrowFromCallExpression(e,t){if(this.match(10)){let t=this.state.noAnonFunctionType;this.state.noAnonFunctionType=!0,e.returnType=this.flowParseTypeAnnotation(),this.state.noAnonFunctionType=t}return super.parseAsyncArrowFromCallExpression(e,t)}shouldParseAsyncArrow(){return this.match(10)||super.shouldParseAsyncArrow()}parseMaybeAssign(e,t){let n=null,r;if(this.hasPlugin(`jsx`)&&(this.match(138)||this.match(43))){if(n=this.state.clone(),r=this.tryParse(()=>super.parseMaybeAssign(e,t),n),!r.error)return r.node;let{context:i}=this.state,a=i[i.length-1];(a===j.j_oTag||a===j.j_expr)&&i.pop()}if(r?.error||this.match(43)){n=n||this.state.clone();let i,a=this.tryParse(n=>{i=this.flowParseTypeParameterDeclaration();let r=this.forwardNoArrowParamsConversionAt(i,()=>{let n=super.parseMaybeAssign(e,t);return this.resetStartLocationFromNode(n,i),n});r.extra?.parenthesized&&n();let a=this.maybeUnwrapTypeCastExpression(r);return a.type!==`ArrowFunctionExpression`&&n(),a.typeParameters=i,this.resetStartLocationFromNode(a,i),r},n),o=null;if(a.node&&this.maybeUnwrapTypeCastExpression(a.node).type===`ArrowFunctionExpression`){if(!a.error&&!a.aborted)return a.node.async&&this.raise(P.UnexpectedTypeParameterBeforeAsyncArrowFunction,i),a.node;o=a.node}if(r?.node)return this.state=r.failState,r.node;if(o)return this.state=a.failState,o;throw r?.thrown?r.error:a.thrown?a.error:this.raise(P.UnexpectedTokenAfterTypeParameter,i)}return super.parseMaybeAssign(e,t)}parseArrow(e){if(this.match(10)){let t=this.tryParse(()=>{let t=this.state.noAnonFunctionType;this.state.noAnonFunctionType=!0;let n=this.startNode();return[n.typeAnnotation,e.predicate]=this.flowParseTypeAndPredicateInitialiser(!0),this.state.noAnonFunctionType=t,this.canInsertSemicolon()&&this.unexpected(),this.match(15)||this.unexpected(),n});if(t.thrown)return null;t.error&&(this.state=t.failState),e.returnType=t.node.typeAnnotation?this.finishNode(t.node,`TypeAnnotation`):null}return super.parseArrow(e)}shouldParseArrow(e){return this.match(10)||super.shouldParseArrow(e)}setArrowFunctionParameters(e,t){this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(e.start))?e.params=t:super.setArrowFunctionParameters(e,t)}checkParams(e,t,n,r=!0){if(!(n&&this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(e.start)))){for(let t=0;t<e.params.length;t++)this.isThisParam(e.params[t])&&t>0&&this.raise(P.ThisParamMustBeFirst,e.params[t]);super.checkParams(e,t,n,r)}}parseParenAndDistinguishExpression(e){return super.parseParenAndDistinguishExpression(e&&!this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start)))}parseSubscripts(e,t,n){if(e.type===`Identifier`&&e.name===`async`&&this.state.noArrowAt.includes(t.index)){this.next();let n=this.startNodeAt(t);n.callee=e,n.arguments=super.parseCallExpressionArguments(),e=this.finishNode(n,`CallExpression`)}else if(e.type===`Identifier`&&e.name===`async`&&this.match(43)){let r=this.state.clone(),i=this.tryParse(e=>this.parseAsyncArrowWithTypeParameters(t)||e(),r);if(!i.error&&!i.aborted)return i.node;let a=this.tryParse(()=>super.parseSubscripts(e,t,n),r);if(a.node&&!a.error)return a.node;if(i.node)return this.state=i.failState,i.node;if(a.node)return this.state=a.failState,a.node;throw i.error||a.error}return super.parseSubscripts(e,t,n)}parseSubscript(e,t,n,r){if(this.match(14)&&this.isLookaheadToken_lt()){if(r.optionalChainMember=!0,n)return r.stop=!0,e;this.next();let i=this.startNodeAt(t);return i.callee=e,i.typeArguments=this.flowParseTypeParameterInstantiationInExpression(),this.expect(6),i.arguments=this.parseCallExpressionArguments(),i.optional=!0,this.finishCallExpression(i,!0)}if(!n&&this.shouldParseTypes()&&(this.match(43)||this.match(47))){let n=this.startNodeAt(t);n.callee=e;let i=this.tryParse(()=>(n.typeArguments=this.flowParseTypeParameterInstantiationCallOrNew(),this.expect(6),n.arguments=super.parseCallExpressionArguments(),r.optionalChainMember&&(n.optional=!1),this.finishCallExpression(n,r.optionalChainMember)));if(i.node)return i.error&&(this.state=i.failState),i.node}return super.parseSubscript(e,t,n,r)}parseNewCallee(e){super.parseNewCallee(e);let t=null;this.shouldParseTypes()&&this.match(43)&&(t=this.tryParse(()=>this.flowParseTypeParameterInstantiationCallOrNew()).node),e.typeArguments=t}parseAsyncArrowWithTypeParameters(e){let t=this.startNodeAt(e);if(this.parseFunctionParams(t,!1),this.parseArrow(t))return super.parseArrowExpression(t,void 0,!0)}readToken_mult_modulo(e){let t=this.input.charCodeAt(this.state.pos+1);if(e===42&&t===47&&this.state.hasFlowComment){this.state.hasFlowComment=!1,this.state.pos+=2,this.nextToken();return}super.readToken_mult_modulo(e)}readToken_pipe_amp(e){let t=this.input.charCodeAt(this.state.pos+1);if(e===124&&t===125){this.finishOp(5,2);return}super.readToken_pipe_amp(e)}parseTopLevel(e,t){let n=super.parseTopLevel(e,t);return this.state.hasFlowComment&&this.raise(P.UnterminatedFlowComment,this.state.curPosition()),n}skipBlockComment(){if(this.hasPlugin(`flowComments`)&&this.skipFlowComment()){if(this.state.hasFlowComment)throw this.raise(P.NestedFlowComment,this.state.startLoc);this.hasFlowCommentCompletion();let e=this.skipFlowComment();e&&(this.state.pos+=e,this.state.hasFlowComment=!0);return}return super.skipBlockComment(this.state.hasFlowComment?`*-/`:`*/`)}skipFlowComment(){let{pos:e}=this.state,t=2;for(;[32,9].includes(this.input.charCodeAt(e+t));)t++;let n=this.input.charCodeAt(t+e),r=this.input.charCodeAt(t+e+1);return n===58&&r===58?t+2:this.input.slice(t+e,t+e+12)===`flow-include`?t+12:n===58&&r!==58&&t}hasFlowCommentCompletion(){if(this.input.indexOf(`*/`,this.state.pos)===-1)throw this.raise(_.UnterminatedComment,this.state.curPosition())}flowEnumErrorBooleanMemberNotInitialized(e,t){this.raise(P.EnumBooleanMemberNotInitialized,e,t)}flowEnumErrorInvalidMemberInitializer(e,t){return this.raise(t.explicitType?t.explicitType===`symbol`?P.EnumInvalidMemberInitializerSymbolType:P.EnumInvalidMemberInitializerPrimaryType:P.EnumInvalidMemberInitializerUnknownType,e,t)}flowEnumErrorNumberMemberNotInitialized(e,t){this.raise(P.EnumNumberMemberNotInitialized,e,t)}flowEnumErrorStringMemberInconsistentlyInitialized(e,t){this.raise(P.EnumStringMemberInconsistentlyInitialized,e,t)}flowEnumMemberInit(){let e=this.state.startLoc,t=()=>this.match(8)||this.match(4);switch(this.state.type){case 131:{let e=this.parseNumericLiteral(this.state.value);if(t())return{type:`number`,loc:e.start,value:e};break}case 130:{let e=this.parseStringLiteral(this.state.value);if(t())return{type:`string`,loc:e.start,value:e};break}case 81:case 82:{let e=this.parseBooleanLiteral(this.match(81));if(t())return{type:`boolean`,loc:e.start,value:e}}}return{type:`invalid`,loc:e}}flowEnumMemberRaw(){let e=this.state.startLoc;return{id:this.parseIdentifier(!0),init:this.eat(25)?this.flowEnumMemberInit():{type:`none`,loc:e}}}flowEnumCheckExplicitTypeMismatch(e,t,n){let{explicitType:r}=t;r!==null&&r!==n&&this.flowEnumErrorInvalidMemberInitializer(e,t)}flowEnumMembers({enumName:e,explicitType:t}){let n=new Set,r={booleanMembers:[],numberMembers:[],stringMembers:[],defaultedMembers:[]},i=!1;for(;!this.match(4);){if(this.eat(17)){i=!0;break}let a=this.startNode(),{id:o,init:s}=this.flowEnumMemberRaw(),c=o.name;if(c===``)continue;/^[a-z]/.test(c)&&this.raise(P.EnumInvalidMemberName,o,{memberName:c,suggestion:c[0].toUpperCase()+c.slice(1),enumName:e}),n.has(c)&&this.raise(P.EnumDuplicateMemberName,o,{memberName:c,enumName:e}),n.add(c);let l={enumName:e,explicitType:t,memberName:c};switch(a.id=o,s.type){case`boolean`:this.flowEnumCheckExplicitTypeMismatch(s.loc,l,`boolean`),a.init=s.value,r.booleanMembers.push(this.finishNode(a,`EnumBooleanMember`));break;case`number`:this.flowEnumCheckExplicitTypeMismatch(s.loc,l,`number`),a.init=s.value,r.numberMembers.push(this.finishNode(a,`EnumNumberMember`));break;case`string`:this.flowEnumCheckExplicitTypeMismatch(s.loc,l,`string`),a.init=s.value,r.stringMembers.push(this.finishNode(a,`EnumStringMember`));break;case`invalid`:throw this.flowEnumErrorInvalidMemberInitializer(s.loc,l);case`none`:switch(t){case`boolean`:this.flowEnumErrorBooleanMemberNotInitialized(s.loc,l);break;case`number`:this.flowEnumErrorNumberMemberNotInitialized(s.loc,l);break;default:r.defaultedMembers.push(this.finishNode(a,`EnumDefaultedMember`))}}this.match(4)||this.expect(8)}return{members:r,hasUnknownMembers:i}}flowEnumStringMembers(e,t,{enumName:n}){if(e.length===0)return t;if(t.length===0)return e;if(t.length>e.length){for(let t of e)this.flowEnumErrorStringMemberInconsistentlyInitialized(t,{enumName:n});return t}for(let e of t)this.flowEnumErrorStringMemberInconsistentlyInitialized(e,{enumName:n});return e}flowEnumParseExplicitType({enumName:e}){if(!this.eatContextual(98))return null;if(!D(this.state.type))throw this.raise(P.EnumInvalidExplicitTypeUnknownSupplied,this.state.startLoc,{enumName:e});let{value:t}=this.state;return this.next(),t!==`boolean`&&t!==`number`&&t!==`string`&&t!==`symbol`&&this.raise(P.EnumInvalidExplicitType,this.state.startLoc,{enumName:e,invalidEnumType:t}),t}flowEnumBody(e,t){let n=t.name,r=t.start,i=this.flowEnumParseExplicitType({enumName:n});this.expect(2);let{members:a,hasUnknownMembers:o}=this.flowEnumMembers({enumName:n,explicitType:i});switch(e.hasUnknownMembers=o,i){case`boolean`:return e.explicitType=!0,e.members=a.booleanMembers,this.expect(4),this.finishNode(e,`EnumBooleanBody`);case`number`:return e.explicitType=!0,e.members=a.numberMembers,this.expect(4),this.finishNode(e,`EnumNumberBody`);case`string`:return e.explicitType=!0,e.members=this.flowEnumStringMembers(a.stringMembers,a.defaultedMembers,{enumName:n}),this.expect(4),this.finishNode(e,`EnumStringBody`);case`symbol`:return e.members=a.defaultedMembers,this.expect(4),this.finishNode(e,`EnumSymbolBody`);default:{let t=()=>(e.members=[],this.expect(4),this.finishNode(e,`EnumStringBody`));e.explicitType=!1;let i=a.booleanMembers.length,o=a.numberMembers.length,s=a.stringMembers.length,c=a.defaultedMembers.length;if(!i&&!o&&!s&&!c)return t();if(!i&&!o)return e.members=this.flowEnumStringMembers(a.stringMembers,a.defaultedMembers,{enumName:n}),this.expect(4),this.finishNode(e,`EnumStringBody`);if(!o&&!s&&i>=c){for(let e of a.defaultedMembers)this.flowEnumErrorBooleanMemberNotInitialized(e.start,{enumName:n,memberName:e.id.name});return e.members=a.booleanMembers,this.expect(4),this.finishNode(e,`EnumBooleanBody`)}if(!i&&!s&&o>=c){for(let e of a.defaultedMembers)this.flowEnumErrorNumberMemberNotInitialized(e.start,{enumName:n,memberName:e.id.name});return e.members=a.numberMembers,this.expect(4),this.finishNode(e,`EnumNumberBody`)}return this.raise(P.EnumInconsistentMemberValues,r,{enumName:n}),t()}}}flowParseEnumDeclaration(e){let t=this.parseIdentifier();return e.id=t,e.body=this.flowEnumBody(this.startNode(),t),this.finishNode(e,`EnumDeclaration`)}jsxParseOpeningElementAfterName(e){return this.shouldParseTypes()&&(this.match(43)||this.match(47))&&(e.typeArguments=this.flowParseTypeParameterInstantiationInExpression()),super.jsxParseOpeningElementAfterName(e)}isLookaheadToken_lt(){let e=this.nextTokenStart();if(this.input.charCodeAt(e)===60){let t=this.input.charCodeAt(e+1);return t!==60&&t!==61}return!1}reScan_lt_gt(){let{type:e}=this.state;e===43?(--this.state.pos,this.readToken_lt()):e===44&&(--this.state.pos,this.readToken_gt())}reScan_lt(){let{type:e}=this.state;return e===47?(this.state.pos-=2,this.finishOp(43,1),43):e}maybeUnwrapTypeCastExpression(e){return e.type===`TypeCastExpression`?e.expression:e}},gt=RegExp(`\\r\\n|[\\r\\n\\u2028\\u2029]`,`g`);function F(e){switch(e){case 10:case 13:case 8232:case 8233:return!0;default:return!1}}function _t(e,t,n){for(let r=t;r<n;r++)if(F(e.charCodeAt(r)))return!0;return!1}var vt=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,yt=/(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g;function bt(e){switch(e){case 9:case 11:case 12:case 32:case 160:case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8239:case 8287:case 12288:case 65279:return!0;default:return!1}}var I=g`jsx`({AttributeIsEmpty:`JSX attributes must only be assigned a non-empty expression.`,MissingClosingTagElement:({openingTagName:e})=>`Expected corresponding JSX closing tag for <${e}>.`,MissingClosingTagFragment:`Expected corresponding JSX closing tag for <>.`,UnexpectedSequenceExpression:`Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?`,UnexpectedToken:({unexpected:e,HTMLEntity:t})=>`Unexpected token \`${e}\`. Did you mean \`${t}\` or \`{'${e}'}\`?`,UnsupportedJsxValue:`JSX value should be either an expression or a quoted JSX text.`,UnterminatedJsxContent:`Unterminated JSX contents.`,UnwrappedAdjacentJSXElements:`Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?`});function L(e){return e?e.type===`JSXOpeningFragment`||e.type===`JSXClosingFragment`:!1}function xt(e){if(e.type===`JSXIdentifier`)return e.name;if(e.type===`JSXNamespacedName`)return e.namespace.name+`:`+e.name.name;if(e.type===`JSXMemberExpression`)return xt(e.object)+`.`+xt(e.property);throw Error(`Node had unexpected type: `+e.type)}var St=e=>class extends e{jsxReadToken(){let e=``,t=this.state.pos;for(;;){if(this.state.pos>=this.length)throw this.raise(I.UnterminatedJsxContent,this.state.startLoc);let n=this.input.charCodeAt(this.state.pos);switch(n){case 60:case 123:if(this.state.pos===this.state.start){n===60&&this.state.canStartJSXElement?(++this.state.pos,this.finishToken(138)):super.getTokenFromCode(n);return}e+=this.input.slice(t,this.state.pos),this.finishToken(137,e);return;case 38:e+=this.input.slice(t,this.state.pos),e+=this.jsxReadEntity(),t=this.state.pos;break;case 62:case 125:this.raise(I.UnexpectedToken,this.state.curPosition(),{unexpected:this.input[this.state.pos],HTMLEntity:n===125?`}`:`>`});default:F(n)?(e+=this.input.slice(t,this.state.pos),e+=this.jsxReadNewLine(!0),t=this.state.pos):++this.state.pos}}}jsxReadNewLine(e){let t=this.input.charCodeAt(this.state.pos),n;return++this.state.pos,t===13&&this.input.charCodeAt(this.state.pos)===10?(++this.state.pos,n=e?`
|
|
4
4
|
`:`\r
|