Initial implementation of google-dialog#68
Merged
Merged
Conversation
…cancellation symmetric to the function call invocation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a new “google-dialog” service backed by the Gemini Live API, wiring it into the context-switch registry and updating examples to support multiple live dialog providers (OpenAI, Azure OpenAI, Google).
Changes:
- Introduces
services/google-dialog(params/events + client session loop) and registers it under"google-dialog". - Refactors
examples/dialog.rsinto a provider-based CLI with model/voice listing and shared function-call handling. - Adjusts
context-switch-coreexports and performs repo-wide import cleanups; adds thegemini-live-rssubmodule + related workspace dependencies.
Reviewed changes
Copilot reviewed 38 out of 38 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/tests.rs | Import path cleanup to match new context_switch_core re-exports. |
| src/protocol.rs | Updates imports for BillingId/RequestId after core export changes. |
| src/lib.rs | Re-exports GoogleDialog from the top-level services module. |
| src/context_switch.rs | Registers "google-dialog" service and minor comment touch-up. |
| services/playback/src/lib.rs | Import cleanup and minor anyhow usage refactor. |
| services/openai-dialog/src/lib.rs | Import cleanup to use top-level Conversation. |
| services/openai-dialog/src/client.rs | Import regrouping; no logic change. |
| services/google-transcribe/src/transcribe.rs | Import cleanup and uses ConversationOutput directly. |
| services/google-dialog/src/types.rs | Adds Google dialog params + service event types. |
| services/google-dialog/src/lib.rs | Adds GoogleDialog service entrypoint and output-modality parsing. |
| services/google-dialog/src/client.rs | Implements Gemini Live session loop, IO/event handling, and billing mapping. |
| services/google-dialog/Cargo.toml | New crate manifest for google-dialog. |
| services/elevenlabs/src/transcribe.rs | Import cleanup; extracts language helpers import. |
| services/azure/src/translate.rs | Import cleanup to use re-exported core types. |
| services/azure/src/transcribe.rs | Import cleanup to use re-exported core types. |
| services/azure/src/synthesize.rs | Import cleanup to use re-exported core types. |
| services/aristech/src/transcribe.rs | Import cleanup to use re-exported core types. |
| services/aristech/src/synthesize.rs | Import cleanup to use re-exported core types. |
| examples/transcribe.rs | Updates imports to new context_switch_core re-exports. |
| examples/dialog.rs | New provider-based CLI and refactored conversation/playback wiring. |
| examples/dialog_providers/openai.rs | Provider implementation + OpenAI model listing helper. |
| examples/dialog_providers/mod.rs | Provider API trait + dispatcher. |
| examples/dialog_providers/google.rs | Provider implementation + Gemini model listing + voice validation. |
| examples/dialog_providers/azure_openai.rs | Provider implementation for Azure OpenAI (deployment-based). |
| examples/azure-translate.rs | Import cleanup to new context_switch_core re-exports. |
| examples/aristech-transcribe.rs | Import cleanup; adds a spellcheck ignore comment. |
| examples/aristech-synthesize.rs | Import cleanup; minor reordering. |
| core/src/lib.rs | Makes conversation module private and re-exports conversation types at crate root. |
| core/src/conversation.rs | Fixes comment wording (“its” → “it’s”). |
| core/src/billing_context.rs | Import formatting cleanup. |
| Cargo.toml | Adds google-dialog/gemini-live wiring, submodule deps, and workspace metadata. |
| audio-knife/src/main.rs | Import cleanup to new BillingId re-export. |
| .vscode/settings.json | Removes VS Code spellchecker settings file. |
| .harper-dictionary.txt | Updates spelling dictionary entries (e.g., alsa, inband). |
| .gitmodules | Adds external/gemini-live-rs submodule entry. |
| .github/copilot-instructions.md | Adds/expands repo coding guidelines. |
| .env.example | Adds GEMINI_API_KEY example entry. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR uses the Gemini Live API to implement a Google based live dialog option for the context switch protocol and audio knife.