()
| 340 | this.parallelOutputMode = COUNCIL_OUTPUT_PARALLEL; |
| 341 | this.deleteHistoryReturnFocusEl = null; |
| 342 | this.isDeletingAllChats = false; |
| 343 | this.appVersionSignature = null; |
| 344 | this.updateAvailableSignature = null; |
| 345 | this.updateToastVisible = false; |
| 346 | this.updateToastDismissed = false; |
| 347 | this.updateCheckInterval = null; |
| 348 | this.updateCheckInFlight = false; |
| 349 | this.pendingStorageRefresh = false; |
| 350 | this.storageReloadTimer = null; |
| 351 | this.pendingModelAvailabilityRefresh = false; |
| 352 | this.pendingTicketCode = null; |
| 353 | this.pendingCouncilConfig = null; |
| 354 | this.appRouteRoot = configureAppRouteRoot(options.routeRoot || '/'); |
| 355 | this.hasInitialLinkContext = this.detectInitialLinkContext(); |
| 356 | this.splitCodeWarningOverlay = null; |
| 357 | this.councilController = new CouncilController({ |
| 358 | app: this, |
| 359 | chatDB, |
| 360 | inferenceService: this.inferenceService, |
| 361 | ticketClient |
| 362 | }); |
| 363 | this.extensions = Array.isArray(options.extensions) ? options.extensions : []; |
| 364 | this.welcomePanelEnabled = options.welcomePanel !== false; |
| 365 | // A host may make sign-in a condition of using the page (the Log in |
| 366 | // dialog cannot be closed while signed out) and name the legal pages |
| 367 | // the dialog links to. |
| 368 | this.signInPolicy = Object.freeze({ |
| 369 | required: options.signIn?.required === true, |
| 370 | termsUrl: typeof options.signIn?.termsUrl === 'string' ? options.signIn.termsUrl : '', |
| 371 | privacyUrl: typeof options.signIn?.privacyUrl === 'string' ? options.signIn.privacyUrl : '', |
| 372 | // Trusted host presentation only; account operations stay in AccountModal. |
no test coverage detected