Skip to content

Conversation

dlarocque
Copy link
Contributor

Adds LiveSession.sendFunctionResponses, which sends function responses to the server in the realtime message format. This message format is required by the Google AI backend to enable function calling during a realtime audio conversation.

Since we used the non-realtime message format to send function call responses returned from StartAudioConversationOptions.functionCallingHandler, function calling during realtime audio conversations caused the WebSocket connection to close when using the startAudioConversation happy path.

Breaking Change: StartAudioConversationOptions.functionCallingHandler now must return a Promise<FunctionResponse>, instead of a Promise<Part>. I made this change because the Part needed to be a FunctionResponsePart for this feature to work, and FunctionResponse is the only property in FunctionResponsePart. So this just simplifies things by removing the additional layers of types. This breaking change does not break our semantic versioning policy since this API is in Public Preview.

This fixes #9264

@dlarocque dlarocque requested a review from hsubox76 September 23, 2025 19:42
@dlarocque dlarocque requested review from a team as code owners September 23, 2025 19:42
Copy link

changeset-bot bot commented Sep 23, 2025

🦋 Changeset detected

Latest commit: e182238

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
firebase Minor
@firebase/ai Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link
Contributor

github-actions bot commented Sep 23, 2025

Changeset File Check ✅

  • No modified packages are missing from the changeset file.
  • No changeset formatting errors detected.

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Sep 23, 2025

Size Report 1

Affected Products

  • @firebase/ai

    TypeBase (cb3bdd8)Merge (be35e11)Diff
    browser62.4 kB63.3 kB+880 B (+1.4%)
    main66.1 kB67.1 kB+977 B (+1.5%)
    module62.4 kB63.3 kB+880 B (+1.4%)
  • @firebase/analytics

    TypeBase (cb3bdd8)Merge (be35e11)Diff
    browser21.5 kB21.6 kB+88 B (+0.4%)
    main22.7 kB22.8 kB+88 B (+0.4%)
    module21.5 kB21.6 kB+88 B (+0.4%)
  • bundle

    TypeBase (cb3bdd8)Merge (be35e11)Diff
    analytics (logEvent)43.8 kB44.1 kB+340 B (+0.8%)
  • firebase

    TypeBase (cb3bdd8)Merge (be35e11)Diff
    firebase-ai.js49.3 kB49.9 kB+608 B (+1.2%)
    firebase-analytics-compat.js25.4 kB25.4 kB+35 B (+0.1%)
    firebase-analytics.js29.3 kB29.4 kB+50 B (+0.2%)
    firebase-compat.js809 kB809 kB+35 B (+0.0%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/GXpT6yq4Sm.html

@dlarocque dlarocque requested a review from a team as a code owner September 23, 2025 19:53
@google-oss-bot
Copy link
Contributor

google-oss-bot commented Sep 23, 2025

Size Analysis Report 1

Affected Products

  • @firebase/ai

    • ChatSession

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size21.6 kB21.7 kB+58 B (+0.3%)
      size-with-ext-deps39.3 kB39.4 kB+56 B (+0.1%)
    • GenerativeModel

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size25.3 kB25.4 kB+58 B (+0.2%)
      size-with-ext-deps43.1 kB43.2 kB+56 B (+0.1%)
    • LiveGenerativeModel

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size12.7 kB12.9 kB+224 B (+1.8%)
      size-with-ext-deps30.3 kB30.6 kB+226 B (+0.7%)
    • LiveSession

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size9.08 kB9.31 kB+224 B (+2.5%)
      size-with-ext-deps26.7 kB26.9 kB+226 B (+0.8%)
    • URLRetrievalStatus

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size?6.90 kB? (?)
      size-with-ext-deps?24.5 kB? (?)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions?

      chromeAdapterFactory
      decodeInstanceIdentifier
      factory
      registerAI

      ?
      classes?

      AIError
      AIService
      Backend
      ChromeAdapterImpl
      GoogleAIBackend
      VertexAIBackend

      ?
      variables?

      11 dependencies

      AIErrorCode
      AI_TYPE
      Availability
      BackendType
      DEFAULT_LOCATION
      InferenceMode
      Task
      URLRetrievalStatus
      logger
      name
      version

      ?
      enums??

      External Dependency

      ModuleBase (cb3bdd8)Merge (be35e11)Diff
      @firebase/app?

      _registerComponent
      registerVersion

      ?
      @firebase/component?

      Component

      ?
      @firebase/logger?

      Logger

      ?
      @firebase/util?

      FirebaseError

      ?
    • getGenerativeModel

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size25.7 kB25.7 kB+58 B (+0.2%)
      size-with-ext-deps43.5 kB43.5 kB+56 B (+0.1%)
    • getLiveGenerativeModel

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size15.1 kB15.4 kB+224 B (+1.5%)
      size-with-ext-deps32.8 kB33.1 kB+226 B (+0.7%)
    • startAudioConversation

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size12.7 kB12.7 kB+17 B (+0.1%)
      size-with-ext-deps30.5 kB30.5 kB+17 B (+0.1%)
  • @firebase/analytics

    • getAnalytics

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.3 kB10.6 kB+338 B (+3.3%)
      size-with-ext-deps43.7 kB44.0 kB+340 B (+0.8%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      25 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getAnalytics
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      27 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getAnalytics
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • getGoogleAnalyticsClientId

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.2 kB10.5 kB+340 B (+3.3%)
      size-with-ext-deps36.6 kB37.0 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      25 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getGoogleAnalyticsClientId
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      internalGetGoogleAnalyticsClientId
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      27 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getGoogleAnalyticsClientId
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      internalGetGoogleAnalyticsClientId
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • initializeAnalytics

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.2 kB10.5 kB+339 B (+3.3%)
      size-with-ext-deps37.0 kB37.3 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      24 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      26 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • isSupported

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.1 kB10.4 kB+338 B (+3.4%)
      size-with-ext-deps36.5 kB36.9 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      24 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      isSupported
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      26 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      isSupported
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • logEvent

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size9.94 kB10.3 kB+338 B (+3.4%)
      size-with-ext-deps36.4 kB36.7 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      23 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      25 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • setAnalyticsCollectionEnabled

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.1 kB10.4 kB+339 B (+3.4%)
      size-with-ext-deps36.6 kB36.9 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      25 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setAnalyticsCollectionEnabled
      setAnalyticsCollectionEnabled$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      27 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setAnalyticsCollectionEnabled
      setAnalyticsCollectionEnabled$1
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • setConsent

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.1 kB10.4 kB+339 B (+3.4%)
      size-with-ext-deps36.5 kB36.9 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      25 dependencies

      _initializeAnalytics
      _setConsentDefaultForInit
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setConsent
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      27 dependencies

      _initializeAnalytics
      _setConsentDefaultForInit
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setConsent
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • setCurrentScreen

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.2 kB10.5 kB+340 B (+3.3%)
      size-with-ext-deps36.6 kB37.0 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      25 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setCurrentScreen
      setCurrentScreen$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      27 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setCurrentScreen
      setCurrentScreen$1
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • setDefaultEventParameters

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.1 kB10.4 kB+339 B (+3.4%)
      size-with-ext-deps36.5 kB36.9 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      25 dependencies

      _initializeAnalytics
      _setDefaultEventParametersForInit
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setDefaultEventParameters
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      27 dependencies

      _initializeAnalytics
      _setDefaultEventParametersForInit
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setDefaultEventParameters
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • setUserId

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.2 kB10.5 kB+340 B (+3.3%)
      size-with-ext-deps36.6 kB37.0 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      25 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserId
      setUserId$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      27 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserId
      setUserId$1
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

    • setUserProperties

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.3 kB10.3 kB+35 B (+0.3%)
      size-with-ext-deps36.7 kB36.7 kB+35 B (+0.1%)
    • settings

      Size

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      size10.1 kB10.4 kB+339 B (+3.4%)
      size-with-ext-deps36.5 kB36.9 kB+340 B (+0.9%)

      Dependency

      TypeBase (cb3bdd8)Merge (be35e11)Diff
      functions

      24 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      settings
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      26 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      createGtagTrustedTypesScriptURL
      createTrustedTypesPolicy
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserProperties
      setUserProperties$1
      settings
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag

      + setUserProperties
      + setUserProperties$1

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/vmH3W3hUw9.html


Added a `sendFunctionResponses` method to `LiveSession`, allowing function responses to be sent during realtime sessions.
Fixes an issue where function responses during audio conversations caused the WebSocket connection to close. See [GitHub Issue #9264](https://github.com/firebase/firebase-js-sdk/issues/9264).
- **Breaking Change**: `StartAudioConversationOptions`' `functionCallingHandler` must now return a `Promise<FunctionResponse>`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Breaking Change**: `StartAudioConversationOptions`' `functionCallingHandler` must now return a `Promise<FunctionResponse>`.
- **Breaking Change**: Changed `StartAudioConversationOptions` and `functionCallingHandler` so that they must now return a `Promise<FunctionResponse>`.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

functionCallingHandler is what changed, and it is a property of StartAudioConversationOptions.

Updated this to be:

 - **Breaking Change**: Changed the `functionCallingHandler` property in `StartAudioConversationOptions` so that it now must return a `Promise<FunctionResponse>`.
   This breaking change is allowed in a minor release since the Live API is in Public Preview.

wdyt?

@dlarocque dlarocque merged commit 0bb2fe6 into main Sep 29, 2025
38 checks passed
@dlarocque dlarocque deleted the dl/live-functionresponses branch September 29, 2025 18:03
andrewbrook added a commit that referenced this pull request Sep 29, 2025
* docs: Fix docgen script to clean out package temp folders first (#9250)

* Version Packages (#9258)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Expose setUserProperties from internal analytics instance (#9263)

* feat(ai): add support for URL context (#9254)

* docs(ai): tag code execution with "beta" tag (public preview) (#9274)

* fix(ai): Handle empty parts when streaming (#9262)

* feat(ai): Add method to send function responses in a live session (#9272)

* Update ai model name used for e2e tests (#9282)

---------

Co-authored-by: Google Open Source Bot <[email protected]>
Co-authored-by: Christina Holland <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Daniel La Rocque <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Firebase Live API WebSocket Connection Closes on Function Calling
5 participants