()
| 310 | } |
| 311 | |
| 312 | async function startApplication(): Promise<void> { |
| 313 | const appStartedAt = nowMs(); |
| 314 | startupTrace.markPhase('start_application_start'); |
| 315 | try { |
| 316 | await initializeBeforeRender(); |
| 317 | } catch (error) { |
| 318 | log.error('Failed to initialize BitFun (pre-render)', error); |
| 319 | } |
| 320 | |
| 321 | startupTrace.markPhase('startup_step_start', { step: 'load_i18n_provider', mode: 'static' }); |
| 322 | startupTrace.markPhase('startup_step_end', { |
| 323 | step: 'load_i18n_provider', |
| 324 | durationMs: 0, |
| 325 | mode: 'static', |
| 326 | }); |
| 327 | const isAgentCompanionWindow = new URLSearchParams(window.location.search) |
| 328 | .get('bitfunWindow') === 'agent-companion'; |
| 329 | |
| 330 | const renderStartedAt = nowMs(); |
| 331 | if (isAgentCompanionWindow) { |
| 332 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( |
| 333 | <AppErrorBoundary> |
| 334 | <I18nProvider> |
| 335 | <AgentCompanionDesktopPet /> |
| 336 | </I18nProvider> |
| 337 | </AppErrorBoundary> |
| 338 | ); |
| 339 | logElapsed(log, 'Startup step completed', renderStartedAt, { |
| 340 | data: { |
| 341 | step: 'scheduleAgentCompanionRender', |
| 342 | sinceStartupMs: elapsedMs(appStartedAt), |
| 343 | }, |
| 344 | }); |
| 345 | startupTrace.markPhase('agent_companion_render_scheduled', { |
| 346 | sinceStartupMs: elapsedMs(appStartedAt), |
| 347 | }); |
| 348 | startupTrace.flushSummary('agent_companion_render_scheduled'); |
| 349 | return; |
| 350 | } |
| 351 | |
| 352 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( |
| 353 | <AppErrorBoundary> |
| 354 | <I18nProvider> |
| 355 | <WorkspaceProvider> |
| 356 | <App /> |
| 357 | </WorkspaceProvider> |
| 358 | </I18nProvider> |
| 359 | </AppErrorBoundary> |
| 360 | ); |
| 361 | logElapsed(log, 'Startup step completed', renderStartedAt, { |
| 362 | data: { |
| 363 | step: 'scheduleInitialRender', |
| 364 | sinceStartupMs: elapsedMs(appStartedAt), |
| 365 | }, |
| 366 | }); |
| 367 | startupTrace.markPhase('react_render_scheduled', { |
| 368 | sinceStartupMs: elapsedMs(appStartedAt), |
| 369 | }); |
no test coverage detected