6.9 KiB
6.9 KiB
NoteFlow gRPC Layer
Location
src/noteflow/grpc/
Core Files
Service (service.py)
Main NoteFlowServicer - gRPC service implementation composing all mixins.
Client (client.py)
Python gRPC client wrapper for testing and internal use.
Proto (proto/noteflow.proto)
Service definition with bidirectional streaming and RPC methods.
Key RPC Groups:
- Streaming:
StreamTranscription(AudioChunk) -> TranscriptUpdate(bidirectional) - Meeting Lifecycle: CreateMeeting, StopMeeting, ListMeetings, GetMeeting, DeleteMeeting
- Summaries: GenerateSummary, ListSummarizationTemplates, CreateSummarizationTemplate
- Diarization: RefineSpeakerDiarization, RenameSpeaker, GetDiarizationJobStatus
- Annotations: AddAnnotation, GetAnnotation, ListAnnotations, UpdateAnnotation, DeleteAnnotation
- Export: ExportTranscript (Markdown, HTML, PDF)
- Calendar: Calendar event sync and OAuth
- Webhooks: Webhook config and delivery management
- OIDC: Authentication via OpenID Connect
- Tasks: Task CRUD (Strategy B)
- Analytics: Dashboard data aggregation (Strategy B)
- Assistant: AI chat interactions (Strategy B)
Server Mixins (mixins/)
Streaming Mixin (streaming/)
Bidirectional ASR streaming.
Files:
_mixin.py- Main StreamingMixin_session.py- Stream session lifecycle_session_helpers.py- Session helper utilities_session_init_helpers.py- Session initialization_asr.py- ASR engine integration_metadata.py- Stream metadata handling_partials.py- Partial transcript handling_cleanup.py- Resource cleanup_types.py- Type definitions_processing/- Audio processing pipeline_audio_ops.py- Audio operations_chunk_tracking.py- Chunk tracking_congestion.py- Backpressure handling_vad_processing.py- VAD processing_constants.py,_types.py
Diarization Mixin (diarization/)
Speaker diarization (streaming + offline refinement).
Files:
_mixin.py- Main DiarizationMixin_jobs.py- Background job management_job_validation.py- Job validation_streaming.py- Real-time diarization_refinement.py- Offline refinement with pyannote_execution.py- Job execution_speaker.py- Speaker assignment_status.py- Job status tracking_types.py- Type definitions
Summarization Mixin (summarization/)
Summary generation and templates.
Files:
_generation_mixin.py- Summary generation flow_templates_mixin.py- Template CRUD mixin_template_crud.py- Template CRUD operations_consent_mixin.py- Cloud consent mixin_consent.py- Consent handling_summary_generation.py- Core generation logic_template_resolution.py- Template lookup_context_builders.py- Context preparation_constants.py- Summarization constants
Meeting Mixin (meeting/)
Meeting lifecycle management.
Files:
meeting_mixin.py- Meeting state management_project_scope.py- Project scoping_stop_ops.py- Stop operations_post_processing.py- Post-meeting processing_title_generation.py- Auto title generation
Project Mixin (project/)
Project management operations.
Files:
_mixin.py- Main ProjectMixin_membership.py- Member management_converters.py- Project converters
OIDC Mixin (oidc/)
OpenID Connect authentication.
Files:
oidc_mixin.py- Main OidcMixin_support.py- OIDC support utilities
Converters (converters/)
Proto <-> Domain conversion.
Files:
_domain.py- Domain entity conversion_external.py- External entity conversion_streaming.py- Streaming type conversion_timestamps.py- Timestamp conversion_id_parsing.py- ID parsing and validation_oidc.py- OIDC entity conversion_export.py- Export type conversion_task_analytics.py- Task/analytics conversion
Error Helpers (errors/)
gRPC error handling.
Files:
_abort.py-abort_not_found(),abort_invalid_argument()_require.py- Precondition checks_fetch.py- Fetch with error handling_parse.py- Parsing helpers_webhooks.py- Webhook error handling_constants.py- Error constants
Other Mixins (Top-level files)
annotation.py- Segment annotations CRUDasr_config.py- ASR configuration managementassistant.py- AI assistant interactions (Strategy B)analytics_mixin.py- Analytics data (Strategy B)tasks.py- Task management (Strategy B)calendar.py- Calendar synccalendar_oauth_config.py- OAuth client configentities.py- Named entity extractionexport.py- Export operationshf_token.py- HuggingFace token managementidentity.py- User/workspace identityobservability.py- Usage tracking, metricspreferences.py- User preferencesstreaming_config.py- Streaming configurationsync.py- State synchronizationwebhooks.py- Webhook managementdiarization_job.py- Job status/management
Servicer Protocols
servicer_core/protocols.py- Core servicer protocolservicer_other/protocols.py- Additional protocolsprotocols.py- ServicerHost protocol_repository_protocols.py- Repository protocols_servicer_state.py- Servicer state management
Supporting Modules
_audio_processing.py- Audio utilities_metrics.py- gRPC metrics_model_status.py- Model status tracking_processing_status.py- Processing status_sync_execution.py- Sync execution helpers_task_callbacks.py- Task callback handling_types.py- Shared types
Server Bootstrap (server/)
Files:
__main__.py- Server entry point__init__.py- Server exportshealth.py- Health check service
Startup (startup/)
Server startup sequence and service initialization.
Client Mixins (client_mixins/)
Client-side gRPC operations.
streaming.py- Client streaming operationsmeeting.py- Meeting CRUD operationsdiarization.py- Diarization requestsexport.py- Export requestsannotation.py- Annotation operationsconverters.py- Response convertersprotocols.py- ClientHost protocol
Interceptors (interceptors/)
gRPC interceptors for identity context propagation.
Types (types/)
gRPC-related type definitions.
Config (config/)
gRPC configuration.
Identity (identity/)
Identity management for gRPC context.
Critical Paths
Recording Flow
- Client:
StreamTranscription(AudioChunk)-> gRPC streaming - Server: StreamingMixin consumes chunks
- ASR Engine: Transcribe via faster-whisper
- VAD: Segment by silence
- Diarization: Assign speakers (streaming)
- Repository: Persist Segments
- Client: Receive
TranscriptUpdatewith segments
Summary Generation Flow
- Client:
GenerateSummary(meeting_id)-> gRPC call - SummarizationService: Fetch segments
- SummarizerProvider: Call LLM
- Citation Verifier: Validate claims
- Template Renderer: Apply template
- Repository: Persist Summary
- Client: Receive Summary