earshot-observability 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. earshot_observability-0.1.0/.dockerignore +38 -0
  2. earshot_observability-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +80 -0
  3. earshot_observability-0.1.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  4. earshot_observability-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +46 -0
  5. earshot_observability-0.1.0/.github/ISSUE_TEMPLATE/integration_request.yml +47 -0
  6. earshot_observability-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +24 -0
  7. earshot_observability-0.1.0/.github/dependabot.yml +65 -0
  8. earshot_observability-0.1.0/.github/release.yml +24 -0
  9. earshot_observability-0.1.0/.github/workflows/ci.yml +184 -0
  10. earshot_observability-0.1.0/.github/workflows/release.yml +200 -0
  11. earshot_observability-0.1.0/.gitignore +44 -0
  12. earshot_observability-0.1.0/.nvmrc +1 -0
  13. earshot_observability-0.1.0/.prettierignore +8 -0
  14. earshot_observability-0.1.0/.prettierrc +4 -0
  15. earshot_observability-0.1.0/CONTEXT.md +55 -0
  16. earshot_observability-0.1.0/CONTRIBUTING.md +55 -0
  17. earshot_observability-0.1.0/Dockerfile +60 -0
  18. earshot_observability-0.1.0/LICENSE +201 -0
  19. earshot_observability-0.1.0/PKG-INFO +222 -0
  20. earshot_observability-0.1.0/README.md +164 -0
  21. earshot_observability-0.1.0/SECURITY.md +48 -0
  22. earshot_observability-0.1.0/apps/ingest/app.py +42 -0
  23. earshot_observability-0.1.0/apps/ingest/tests/conftest.py +21 -0
  24. earshot_observability-0.1.0/apps/ingest/tests/fixtures/connectors/README.md +61 -0
  25. earshot_observability-0.1.0/apps/ingest/tests/test_api.py +965 -0
  26. earshot_observability-0.1.0/apps/ingest/tests/test_container_security.py +25 -0
  27. earshot_observability-0.1.0/apps/ingest/tests/test_delivery_receipts.py +174 -0
  28. earshot_observability-0.1.0/apps/ingest/tests/test_e2e.py +300 -0
  29. earshot_observability-0.1.0/apps/ingest/tests/test_elevenlabs_connector.py +611 -0
  30. earshot_observability-0.1.0/apps/ingest/tests/test_finalized_adapter_conformance.py +129 -0
  31. earshot_observability-0.1.0/apps/ingest/tests/test_framework_integrations.py +505 -0
  32. earshot_observability-0.1.0/apps/ingest/tests/test_ingest_security_regressions.py +258 -0
  33. earshot_observability-0.1.0/apps/ingest/tests/test_privacy_e2e.py +101 -0
  34. earshot_observability-0.1.0/apps/ingest/tests/test_projects.py +212 -0
  35. earshot_observability-0.1.0/apps/ingest/tests/test_real_provider_deliveries.py +136 -0
  36. earshot_observability-0.1.0/apps/ingest/tests/test_retell_connector.py +410 -0
  37. earshot_observability-0.1.0/apps/ingest/tests/test_ringg_connector.py +295 -0
  38. earshot_observability-0.1.0/apps/ingest/tests/test_storage.py +1086 -0
  39. earshot_observability-0.1.0/apps/ingest/tests/test_turn_facts.py +639 -0
  40. earshot_observability-0.1.0/apps/ingest/tests/test_vapi_connector.py +370 -0
  41. earshot_observability-0.1.0/apps/viewer/README.md +56 -0
  42. earshot_observability-0.1.0/apps/viewer/index.html +12 -0
  43. earshot_observability-0.1.0/apps/viewer/package.json +34 -0
  44. earshot_observability-0.1.0/apps/viewer/src/App.module.css +122 -0
  45. earshot_observability-0.1.0/apps/viewer/src/App.test.tsx +168 -0
  46. earshot_observability-0.1.0/apps/viewer/src/App.tsx +169 -0
  47. earshot_observability-0.1.0/apps/viewer/src/api/auth.ts +55 -0
  48. earshot_observability-0.1.0/apps/viewer/src/api/client.test.ts +58 -0
  49. earshot_observability-0.1.0/apps/viewer/src/api/client.ts +55 -0
  50. earshot_observability-0.1.0/apps/viewer/src/api/hooks.ts +68 -0
  51. earshot_observability-0.1.0/apps/viewer/src/api/schema.d.ts +3333 -0
  52. earshot_observability-0.1.0/apps/viewer/src/components/EmptyState.module.css +21 -0
  53. earshot_observability-0.1.0/apps/viewer/src/components/EmptyState.tsx +10 -0
  54. earshot_observability-0.1.0/apps/viewer/src/components/Waveform.tsx +14 -0
  55. earshot_observability-0.1.0/apps/viewer/src/features/fleet/FleetDashboard.module.css +193 -0
  56. earshot_observability-0.1.0/apps/viewer/src/features/fleet/FleetDashboard.tsx +176 -0
  57. earshot_observability-0.1.0/apps/viewer/src/features/fleet/fleet.test.ts +73 -0
  58. earshot_observability-0.1.0/apps/viewer/src/features/fleet/fleet.ts +59 -0
  59. earshot_observability-0.1.0/apps/viewer/src/features/inspector/CallGraph.module.css +101 -0
  60. earshot_observability-0.1.0/apps/viewer/src/features/inspector/CallGraph.tsx +227 -0
  61. earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionHeader.module.css +103 -0
  62. earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionHeader.tsx +46 -0
  63. earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionInspector.a11y.test.tsx +144 -0
  64. earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionInspector.module.css +32 -0
  65. earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionInspector.tsx +146 -0
  66. earshot_observability-0.1.0/apps/viewer/src/features/inspector/StageDrawer.tsx +140 -0
  67. earshot_observability-0.1.0/apps/viewer/src/features/inspector/TurnDrawer.tsx +124 -0
  68. earshot_observability-0.1.0/apps/viewer/src/features/inspector/TurnTimeline.module.css +254 -0
  69. earshot_observability-0.1.0/apps/viewer/src/features/inspector/TurnTimeline.tsx +229 -0
  70. earshot_observability-0.1.0/apps/viewer/src/features/inspector/__fixtures__/analysis.json +454 -0
  71. earshot_observability-0.1.0/apps/viewer/src/features/inspector/__fixtures__/incident.json +1670 -0
  72. earshot_observability-0.1.0/apps/viewer/src/features/inspector/drawer.module.css +291 -0
  73. earshot_observability-0.1.0/apps/viewer/src/features/inspector/inspector.a11y.test.tsx +117 -0
  74. earshot_observability-0.1.0/apps/viewer/src/features/inspector/timeline.test.ts +344 -0
  75. earshot_observability-0.1.0/apps/viewer/src/features/inspector/timeline.ts +533 -0
  76. earshot_observability-0.1.0/apps/viewer/src/features/inspector/useInitialFocus.ts +12 -0
  77. earshot_observability-0.1.0/apps/viewer/src/features/sessions/SessionRail.module.css +138 -0
  78. earshot_observability-0.1.0/apps/viewer/src/features/sessions/SessionRail.tsx +64 -0
  79. earshot_observability-0.1.0/apps/viewer/src/lib/format.test.ts +36 -0
  80. earshot_observability-0.1.0/apps/viewer/src/lib/format.ts +23 -0
  81. earshot_observability-0.1.0/apps/viewer/src/lib/status.ts +18 -0
  82. earshot_observability-0.1.0/apps/viewer/src/main.tsx +31 -0
  83. earshot_observability-0.1.0/apps/viewer/src/styles/global.css +63 -0
  84. earshot_observability-0.1.0/apps/viewer/src/styles/tokens.css +101 -0
  85. earshot_observability-0.1.0/apps/viewer/src/test/setup.ts +1 -0
  86. earshot_observability-0.1.0/apps/viewer/src/test/utils.tsx +20 -0
  87. earshot_observability-0.1.0/apps/viewer/src/vite-env.d.ts +1 -0
  88. earshot_observability-0.1.0/apps/viewer/tsconfig.app.json +21 -0
  89. earshot_observability-0.1.0/apps/viewer/tsconfig.json +4 -0
  90. earshot_observability-0.1.0/apps/viewer/tsconfig.node.json +13 -0
  91. earshot_observability-0.1.0/apps/viewer/vite.config.ts +17 -0
  92. earshot_observability-0.1.0/apps/viewer/vitest.config.ts +14 -0
  93. earshot_observability-0.1.0/compose.yaml +27 -0
  94. earshot_observability-0.1.0/docs/README.md +48 -0
  95. earshot_observability-0.1.0/docs/adapters/livekit.md +156 -0
  96. earshot_observability-0.1.0/docs/adapters/pipecat.md +110 -0
  97. earshot_observability-0.1.0/docs/adapters/providers.md +123 -0
  98. earshot_observability-0.1.0/docs/adr/0001-canonical-incidents-derived-turn-facts.md +34 -0
  99. earshot_observability-0.1.0/docs/adr/0002-project-scope-and-external-identities.md +34 -0
  100. earshot_observability-0.1.0/docs/adr/0003-finalized-connectors-before-live-otlp.md +25 -0
  101. earshot_observability-0.1.0/docs/analysis.md +90 -0
  102. earshot_observability-0.1.0/docs/architecture.md +160 -0
  103. earshot_observability-0.1.0/docs/backend-api.md +184 -0
  104. earshot_observability-0.1.0/docs/conformance.md +199 -0
  105. earshot_observability-0.1.0/docs/connectors.md +120 -0
  106. earshot_observability-0.1.0/docs/development.md +198 -0
  107. earshot_observability-0.1.0/docs/incident-bundle.md +190 -0
  108. earshot_observability-0.1.0/docs/privacy.md +145 -0
  109. earshot_observability-0.1.0/docs/release.md +155 -0
  110. earshot_observability-0.1.0/docs/research/external-observability-sdk-patterns.md +271 -0
  111. earshot_observability-0.1.0/docs/research/pre-release-first-principles-audit.md +623 -0
  112. earshot_observability-0.1.0/docs/research/pre-release-hardening-outcome.md +151 -0
  113. earshot_observability-0.1.0/docs/sdk.md +318 -0
  114. earshot_observability-0.1.0/docs/semantic-conventions.md +142 -0
  115. earshot_observability-0.1.0/docs/storage.md +192 -0
  116. earshot_observability-0.1.0/examples/livekit_console/README.md +161 -0
  117. earshot_observability-0.1.0/examples/livekit_console/_runtime.py +168 -0
  118. earshot_observability-0.1.0/examples/livekit_console/agent.py +205 -0
  119. earshot_observability-0.1.0/examples/livekit_console/drive_audio.py +258 -0
  120. earshot_observability-0.1.0/examples/livekit_console/drive_once.py +161 -0
  121. earshot_observability-0.1.0/examples/pipecat_headless/README.md +75 -0
  122. earshot_observability-0.1.0/examples/pipecat_headless/drive.py +718 -0
  123. earshot_observability-0.1.0/examples/provider_adapters/drive_cartesia.py +143 -0
  124. earshot_observability-0.1.0/examples/provider_adapters/drive_deepgram.py +137 -0
  125. earshot_observability-0.1.0/examples/provider_adapters/drive_sarvam.py +176 -0
  126. earshot_observability-0.1.0/examples/provider_adapters/inspect_pipeline.py +127 -0
  127. earshot_observability-0.1.0/fixtures/conformance/canonical-vector.expected.json +5 -0
  128. earshot_observability-0.1.0/fixtures/conformance/canonical-vector.input.json +287 -0
  129. earshot_observability-0.1.0/fixtures/faults/barge_in.incident.json +393 -0
  130. earshot_observability-0.1.0/fixtures/faults/device_unavailable.incident.json +230 -0
  131. earshot_observability-0.1.0/fixtures/faults/fast_endpointing.incident.json +286 -0
  132. earshot_observability-0.1.0/fixtures/faults/llm_delay.incident.json +503 -0
  133. earshot_observability-0.1.0/fixtures/faults/native_s2s_interruption.incident.json +235 -0
  134. earshot_observability-0.1.0/fixtures/faults/privacy_opt_out.incident.json +209 -0
  135. earshot_observability-0.1.0/fixtures/faults/scenarios.json +92 -0
  136. earshot_observability-0.1.0/fixtures/faults/security_regressions.json +57 -0
  137. earshot_observability-0.1.0/fixtures/faults/slow_endpointing.incident.json +286 -0
  138. earshot_observability-0.1.0/fixtures/faults/stt_delay.incident.json +503 -0
  139. earshot_observability-0.1.0/fixtures/faults/telephony_handoff.incident.json +349 -0
  140. earshot_observability-0.1.0/fixtures/faults/tool_timeout_retry.incident.json +305 -0
  141. earshot_observability-0.1.0/fixtures/faults/tts_delay.incident.json +503 -0
  142. earshot_observability-0.1.0/fixtures/faults/webrtc_degradation.incident.json +219 -0
  143. earshot_observability-0.1.0/fixtures/faults/websocket_reconnect.incident.json +360 -0
  144. earshot_observability-0.1.0/fixtures/golden/expected_semantics.json +14 -0
  145. earshot_observability-0.1.0/fixtures/golden/livekit_metrics.json +100 -0
  146. earshot_observability-0.1.0/fixtures/golden/pipecat_spans.json +118 -0
  147. earshot_observability-0.1.0/fixtures/invalid/mutations.json +109 -0
  148. earshot_observability-0.1.0/fixtures/valid/complete.json +527 -0
  149. earshot_observability-0.1.0/fixtures/valid/minimal.json +33 -0
  150. earshot_observability-0.1.0/package.json +29 -0
  151. earshot_observability-0.1.0/packages/sdk-python/src/earshot/__init__.py +125 -0
  152. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/__init__.py +11 -0
  153. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/base.py +26 -0
  154. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/livekit.py +2084 -0
  155. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/pipecat.py +819 -0
  156. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/__init__.py +15 -0
  157. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/base.py +201 -0
  158. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/cartesia.py +343 -0
  159. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/deepgram.py +441 -0
  160. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/openai_realtime.py +436 -0
  161. earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/sarvam.py +236 -0
  162. earshot_observability-0.1.0/packages/sdk-python/src/earshot/analysis.py +880 -0
  163. earshot_observability-0.1.0/packages/sdk-python/src/earshot/api.py +1410 -0
  164. earshot_observability-0.1.0/packages/sdk-python/src/earshot/browser_session.py +89 -0
  165. earshot_observability-0.1.0/packages/sdk-python/src/earshot/cli.py +371 -0
  166. earshot_observability-0.1.0/packages/sdk-python/src/earshot/clock.py +39 -0
  167. earshot_observability-0.1.0/packages/sdk-python/src/earshot/codec.py +318 -0
  168. earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/__init__.py +38 -0
  169. earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/elevenlabs.py +504 -0
  170. earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/kernel.py +288 -0
  171. earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/retell.py +301 -0
  172. earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/ringg.py +269 -0
  173. earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/types.py +148 -0
  174. earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/vapi.py +343 -0
  175. earshot_observability-0.1.0/packages/sdk-python/src/earshot/context.py +129 -0
  176. earshot_observability-0.1.0/packages/sdk-python/src/earshot/contract.py +641 -0
  177. earshot_observability-0.1.0/packages/sdk-python/src/earshot/explanation.py +308 -0
  178. earshot_observability-0.1.0/packages/sdk-python/src/earshot/exporter.py +1183 -0
  179. earshot_observability-0.1.0/packages/sdk-python/src/earshot/generated/__init__.py +0 -0
  180. earshot_observability-0.1.0/packages/sdk-python/src/earshot/generated/earshot/__init__.py +0 -0
  181. earshot_observability-0.1.0/packages/sdk-python/src/earshot/generated/earshot/v1alpha1/__init__.py +0 -0
  182. earshot_observability-0.1.0/packages/sdk-python/src/earshot/generated/earshot/v1alpha1/incident_pb2.py +38 -0
  183. earshot_observability-0.1.0/packages/sdk-python/src/earshot/measurement_semantics.py +54 -0
  184. earshot_observability-0.1.0/packages/sdk-python/src/earshot/pipeline.py +676 -0
  185. earshot_observability-0.1.0/packages/sdk-python/src/earshot/privacy.py +1137 -0
  186. earshot_observability-0.1.0/packages/sdk-python/src/earshot/py.typed +1 -0
  187. earshot_observability-0.1.0/packages/sdk-python/src/earshot/recorder.py +1948 -0
  188. earshot_observability-0.1.0/packages/sdk-python/src/earshot/sdk.py +1292 -0
  189. earshot_observability-0.1.0/packages/sdk-python/src/earshot/storage.py +3110 -0
  190. earshot_observability-0.1.0/packages/sdk-python/src/earshot/validation.py +2235 -0
  191. earshot_observability-0.1.0/packages/sdk-python/src/earshot/versions.py +15 -0
  192. earshot_observability-0.1.0/packages/sdk-python/src/earshot/web/assets/index-DXBWyP_c.js +60 -0
  193. earshot_observability-0.1.0/packages/sdk-python/src/earshot/web/assets/index-DolUwwS_.css +1 -0
  194. earshot_observability-0.1.0/packages/sdk-python/src/earshot/web/index.html +13 -0
  195. earshot_observability-0.1.0/packages/sdk-python/tests/adapter_conformance.py +136 -0
  196. earshot_observability-0.1.0/packages/sdk-python/tests/conftest.py +25 -0
  197. earshot_observability-0.1.0/packages/sdk-python/tests/incident_factory.py +333 -0
  198. earshot_observability-0.1.0/packages/sdk-python/tests/test_adapter_conformance.py +336 -0
  199. earshot_observability-0.1.0/packages/sdk-python/tests/test_analysis.py +803 -0
  200. earshot_observability-0.1.0/packages/sdk-python/tests/test_cli.py +213 -0
  201. earshot_observability-0.1.0/packages/sdk-python/tests/test_codec.py +464 -0
  202. earshot_observability-0.1.0/packages/sdk-python/tests/test_contract_validation.py +753 -0
  203. earshot_observability-0.1.0/packages/sdk-python/tests/test_explanation.py +186 -0
  204. earshot_observability-0.1.0/packages/sdk-python/tests/test_exporter_durable.py +447 -0
  205. earshot_observability-0.1.0/packages/sdk-python/tests/test_exporter_fault_injection.py +269 -0
  206. earshot_observability-0.1.0/packages/sdk-python/tests/test_livekit_otel_adapter.py +1708 -0
  207. earshot_observability-0.1.0/packages/sdk-python/tests/test_local_network.py +104 -0
  208. earshot_observability-0.1.0/packages/sdk-python/tests/test_pipecat_headless_driver.py +880 -0
  209. earshot_observability-0.1.0/packages/sdk-python/tests/test_pipeline_facade.py +319 -0
  210. earshot_observability-0.1.0/packages/sdk-python/tests/test_privacy_provenance_quality.py +1642 -0
  211. earshot_observability-0.1.0/packages/sdk-python/tests/test_properties.py +113 -0
  212. earshot_observability-0.1.0/packages/sdk-python/tests/test_provider_adapter_parity.py +111 -0
  213. earshot_observability-0.1.0/packages/sdk-python/tests/test_provider_adapters_deepgram_cartesia.py +687 -0
  214. earshot_observability-0.1.0/packages/sdk-python/tests/test_provider_adapters_openai_sarvam.py +471 -0
  215. earshot_observability-0.1.0/packages/sdk-python/tests/test_recorder_exporter_adapters.py +1906 -0
  216. earshot_observability-0.1.0/packages/sdk-python/tests/test_recorder_limits.py +251 -0
  217. earshot_observability-0.1.0/packages/sdk-python/tests/test_release_identity.py +65 -0
  218. earshot_observability-0.1.0/packages/sdk-python/tests/test_sdk.py +417 -0
  219. earshot_observability-0.1.0/packages/sdk-python/tests/test_sdk_context_sampling.py +281 -0
  220. earshot_observability-0.1.0/packages/sdk-python/tests/test_sdk_delivery_modes.py +391 -0
  221. earshot_observability-0.1.0/packages/sdk-python/tests/test_sdk_security_regressions.py +166 -0
  222. earshot_observability-0.1.0/packages/sdk-python/tests/test_shared_fixtures.py +293 -0
  223. earshot_observability-0.1.0/packages/sdk-python/tests/test_spa_serving.py +71 -0
  224. earshot_observability-0.1.0/packages/sdk-python/tests/test_versions.py +58 -0
  225. earshot_observability-0.1.0/pnpm-lock.yaml +2711 -0
  226. earshot_observability-0.1.0/pnpm-workspace.yaml +3 -0
  227. earshot_observability-0.1.0/proto/earshot/v1alpha1/incident.proto +33 -0
  228. earshot_observability-0.1.0/pyproject.toml +111 -0
  229. earshot_observability-0.1.0/scripts/check_release.py +71 -0
  230. earshot_observability-0.1.0/scripts/check_sdist.py +42 -0
  231. earshot_observability-0.1.0/scripts/check_semconv.py +59 -0
  232. earshot_observability-0.1.0/scripts/check_wheel.py +70 -0
  233. earshot_observability-0.1.0/scripts/generate_canonical_vector.py +60 -0
  234. earshot_observability-0.1.0/scripts/generate_complete_fixture.py +23 -0
  235. earshot_observability-0.1.0/scripts/generate_contract.py +98 -0
  236. earshot_observability-0.1.0/scripts/generate_fault_fixtures.py +712 -0
  237. earshot_observability-0.1.0/scripts/generate_openapi.py +51 -0
  238. earshot_observability-0.1.0/scripts/smoke-container.sh +89 -0
  239. earshot_observability-0.1.0/scripts/smoke_artifact.py +205 -0
  240. earshot_observability-0.1.0/semconv/README.md +20 -0
  241. earshot_observability-0.1.0/semconv/earshot.yaml +342 -0
  242. earshot_observability-0.1.0/spec/backend-api.openapi.json +6147 -0
  243. earshot_observability-0.1.0/spec/derived-analysis.schema.json +444 -0
  244. earshot_observability-0.1.0/spec/incident-bundle.schema.json +2737 -0
  245. earshot_observability-0.1.0/tsconfig.base.json +14 -0
  246. earshot_observability-0.1.0/turbo.json +15 -0
@@ -0,0 +1,38 @@
1
+ .git
2
+ .github
3
+ .env
4
+ .env.*
5
+ .npmrc
6
+ .pypirc
7
+ .aws
8
+ .ssh
9
+ *.key
10
+ *.pem
11
+ *.p12
12
+ *.pfx
13
+ id_rsa
14
+ id_ed25519
15
+ local
16
+ local/**
17
+ .venv
18
+ .venv2
19
+ .earshot
20
+ **/.earshot
21
+ docs/private
22
+ node_modules
23
+ **/node_modules
24
+ dist
25
+ **/dist
26
+ packages/sdk-python/src/earshot/web
27
+ coverage
28
+ htmlcov
29
+ *.sqlite3
30
+ *.sqlite3-shm
31
+ *.sqlite3-wal
32
+ __pycache__
33
+ **/__pycache__
34
+ *.pyc
35
+ .claude
36
+ *.log
37
+ earshot_pipecat_incident.json
38
+ .DS_Store
@@ -0,0 +1,80 @@
1
+ name: Bug report
2
+ description: Report a reproducible Earshot defect using synthetic evidence.
3
+ title: "[Bug]: "
4
+ labels: [bug, triage]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for helping improve Earshot. Do not attach real recordings, transcripts,
10
+ phone numbers, credentials, signed URLs, or customer incident artifacts. Replace
11
+ every sensitive value with a unique synthetic sentinel.
12
+ - type: textarea
13
+ id: summary
14
+ attributes:
15
+ label: What happened?
16
+ description: Describe the observed behavior and why it is incorrect.
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ id: expected
21
+ attributes:
22
+ label: What should have happened?
23
+ validations:
24
+ required: true
25
+ - type: textarea
26
+ id: reproduction
27
+ attributes:
28
+ label: Minimal synthetic reproduction
29
+ description: Include the smallest code or fixture that reproduces the problem.
30
+ render: shell
31
+ validations:
32
+ required: true
33
+ - type: input
34
+ id: version
35
+ attributes:
36
+ label: Earshot version or commit
37
+ placeholder: 0.1.0 or git SHA
38
+ validations:
39
+ required: true
40
+ - type: dropdown
41
+ id: surface
42
+ attributes:
43
+ label: Affected surface
44
+ options:
45
+ - Python SDK lifecycle
46
+ - Incident contract or validation
47
+ - Export or delivery
48
+ - Storage or purge
49
+ - Local API or authentication
50
+ - Viewer
51
+ - Analysis or turn facts
52
+ - Pipecat adapter
53
+ - LiveKit adapter
54
+ - Provider connector
55
+ - Packaging or container
56
+ - Other
57
+ validations:
58
+ required: true
59
+ - type: textarea
60
+ id: environment
61
+ attributes:
62
+ label: Environment
63
+ description: OS, Python/Node version, framework/provider SDK version, and deployment shape.
64
+ validations:
65
+ required: true
66
+ - type: textarea
67
+ id: diagnostics
68
+ attributes:
69
+ label: Sanitized diagnostics
70
+ description: Include synthetic logs or validation output only when useful.
71
+ render: text
72
+ - type: checkboxes
73
+ id: privacy
74
+ attributes:
75
+ label: Privacy confirmation
76
+ options:
77
+ - label: I removed all real voice-session content, credentials, and customer identifiers.
78
+ required: true
79
+ - label: I searched existing issues before filing this report.
80
+ required: true
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: https://github.com/Kkartik14/Earshot/security/advisories/new
5
+ about: Report vulnerabilities privately. Never put secrets or real voice-session data in an issue.
6
+ - name: Documentation
7
+ url: https://github.com/Kkartik14/Earshot/tree/main/docs
8
+ about: Review the architecture, contracts, adapters, privacy model, and release guidance.
@@ -0,0 +1,46 @@
1
+ name: Feature request
2
+ description: Propose a capability grounded in a concrete voice-observability problem.
3
+ title: "[Feature]: "
4
+ labels: [enhancement, triage]
5
+ body:
6
+ - type: textarea
7
+ id: problem
8
+ attributes:
9
+ label: Problem
10
+ description: What voice-observability task cannot be completed today, and by whom?
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: scenario
15
+ attributes:
16
+ label: Concrete scenario
17
+ description: Describe the runtime, evidence available, and expected operational decision.
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: proposal
22
+ attributes:
23
+ label: Proposed behavior
24
+ description: Focus on the public behavior or contract, not only an implementation.
25
+ validations:
26
+ required: true
27
+ - type: textarea
28
+ id: evidence
29
+ attributes:
30
+ label: Evidence and coverage implications
31
+ description: What is measured, inferred, unavailable, or not observed?
32
+ validations:
33
+ required: true
34
+ - type: textarea
35
+ id: alternatives
36
+ attributes:
37
+ label: Alternatives considered
38
+ - type: checkboxes
39
+ id: scope
40
+ attributes:
41
+ label: Scope confirmation
42
+ options:
43
+ - label: This keeps Earshot an observability SDK rather than making it own the voice runtime.
44
+ required: true
45
+ - label: This request contains no real customer or voice-session data.
46
+ required: true
@@ -0,0 +1,47 @@
1
+ name: Integration request
2
+ description: Request support for a voice runtime, provider, or finalized evidence surface.
3
+ title: "[Integration]: "
4
+ labels: [integration, triage]
5
+ body:
6
+ - type: input
7
+ id: system
8
+ attributes:
9
+ label: Runtime or provider
10
+ placeholder: Provider and SDK/package name
11
+ validations:
12
+ required: true
13
+ - type: input
14
+ id: versions
15
+ attributes:
16
+ label: Versions in use
17
+ placeholder: Package version and relevant API version
18
+ validations:
19
+ required: true
20
+ - type: textarea
21
+ id: surface
22
+ attributes:
23
+ label: Available evidence surface
24
+ description: Describe native OTel spans, callbacks, finalized payloads, APIs, or documented hooks.
25
+ validations:
26
+ required: true
27
+ - type: textarea
28
+ id: semantics
29
+ attributes:
30
+ label: Voice semantics exposed
31
+ description: Identify turn boundaries, STT/LLM/TTS timing, interruption, transport, and coverage facts.
32
+ validations:
33
+ required: true
34
+ - type: textarea
35
+ id: references
36
+ attributes:
37
+ label: Primary documentation
38
+ description: Link official SDK/API documentation and public synthetic examples.
39
+ validations:
40
+ required: true
41
+ - type: checkboxes
42
+ id: data
43
+ attributes:
44
+ label: Data handling
45
+ options:
46
+ - label: I will not attach captured production payloads, recordings, transcripts, or credentials.
47
+ required: true
@@ -0,0 +1,24 @@
1
+ ## Summary
2
+
3
+ <!-- What changes, and what user-visible or contract-level problem does it solve? -->
4
+
5
+ ## Evidence model
6
+
7
+ - [ ] Measured, estimated, inferred, unavailable, and not-observed facts remain distinct.
8
+ - [ ] No client render, playout, human-heard, network-quality, or global-clock claim is invented.
9
+ - [ ] Contract/generated artifact changes are committed together, or this PR does not change them.
10
+
11
+ ## Privacy and security
12
+
13
+ - [ ] Tests and fixtures use synthetic sentinel data only.
14
+ - [ ] No transcript, recording, phone number, credential, signed URL, or customer identifier is committed.
15
+ - [ ] New capture/export/storage paths have fail-closed privacy coverage.
16
+
17
+ ## Verification
18
+
19
+ <!-- List exact commands and meaningful manual checks. -->
20
+
21
+ ## Compatibility and release
22
+
23
+ - [ ] Public API, persisted schema, adapter, dependency-range, and migration impacts are documented.
24
+ - [ ] Release notes or documentation are updated when users must act.
@@ -0,0 +1,65 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: pip
5
+ directory: /
6
+ schedule:
7
+ interval: weekly
8
+ day: monday
9
+ time: "04:00"
10
+ timezone: Asia/Kolkata
11
+ open-pull-requests-limit: 5
12
+ versioning-strategy: increase-if-necessary
13
+ labels: [dependencies, python]
14
+ commit-message:
15
+ prefix: deps(python)
16
+ groups:
17
+ python-minor-and-patch:
18
+ patterns: ["*"]
19
+ update-types: [minor, patch]
20
+
21
+ - package-ecosystem: npm
22
+ directory: /
23
+ schedule:
24
+ interval: weekly
25
+ day: monday
26
+ time: "04:15"
27
+ timezone: Asia/Kolkata
28
+ open-pull-requests-limit: 5
29
+ labels: [dependencies, javascript]
30
+ commit-message:
31
+ prefix: deps(js)
32
+ groups:
33
+ javascript-minor-and-patch:
34
+ patterns: ["*"]
35
+ update-types: [minor, patch]
36
+
37
+ - package-ecosystem: github-actions
38
+ directory: /
39
+ schedule:
40
+ interval: weekly
41
+ day: monday
42
+ time: "04:30"
43
+ timezone: Asia/Kolkata
44
+ open-pull-requests-limit: 5
45
+ labels: [dependencies, github-actions]
46
+ commit-message:
47
+ prefix: deps(actions)
48
+ groups:
49
+ github-actions:
50
+ patterns: ["*"]
51
+
52
+ - package-ecosystem: docker
53
+ directory: /
54
+ schedule:
55
+ interval: weekly
56
+ day: monday
57
+ time: "04:45"
58
+ timezone: Asia/Kolkata
59
+ open-pull-requests-limit: 5
60
+ labels: [dependencies, docker]
61
+ commit-message:
62
+ prefix: deps(docker)
63
+ groups:
64
+ container-base-images:
65
+ patterns: ["*"]
@@ -0,0 +1,24 @@
1
+ changelog:
2
+ exclude:
3
+ labels:
4
+ - skip-changelog
5
+ - duplicate
6
+ - invalid
7
+ - question
8
+ categories:
9
+ - title: Breaking changes
10
+ labels: [breaking]
11
+ - title: Features
12
+ labels: [feature, enhancement]
13
+ - title: Fixes
14
+ labels: [bug, fix]
15
+ - title: Integrations
16
+ labels: [integration, adapter, connector]
17
+ - title: Security
18
+ labels: [security]
19
+ - title: Documentation
20
+ labels: [documentation]
21
+ - title: Dependencies
22
+ labels: [dependencies]
23
+ - title: Other changes
24
+ labels: ["*"]
@@ -0,0 +1,184 @@
1
+ name: ci
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ concurrency:
11
+ group: ci-${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ python:
16
+ name: Python contract, backend, and adapters
17
+ runs-on: ubuntu-latest
18
+ timeout-minutes: 25
19
+ steps:
20
+ - uses: actions/checkout@v6
21
+ - uses: actions/setup-python@v6
22
+ with:
23
+ python-version: "3.11"
24
+ cache: pip
25
+ - name: Install backend and pinned framework lanes
26
+ run: python -m pip install -e '.[dev,pipecat-groq,livekit]'
27
+ - name: Smoke-import headless Pipecat providers
28
+ run: >-
29
+ python -c "from pipecat.services.groq.llm import GroqLLMService;
30
+ from pipecat.services.groq.stt import GroqSTTService;
31
+ from pipecat.services.groq.tts import GroqTTSService"
32
+ - name: Check generated contracts
33
+ run: |
34
+ python scripts/generate_contract.py --check
35
+ python scripts/generate_openapi.py --check
36
+ python scripts/check_semconv.py
37
+ - name: Lint
38
+ run: |
39
+ ruff check packages/sdk-python/src packages/sdk-python/tests apps/ingest scripts examples
40
+ ruff format --check packages/sdk-python/src packages/sdk-python/tests apps/ingest scripts examples
41
+ - name: Test with branch coverage
42
+ run: pytest --cov=earshot --cov-report=term-missing -q
43
+
44
+ python-compatibility:
45
+ name: Python ${{ matrix.python-version }} adapter conformance
46
+ runs-on: ubuntu-latest
47
+ timeout-minutes: 15
48
+ strategy:
49
+ fail-fast: false
50
+ matrix:
51
+ python-version: ["3.11", "3.12", "3.13"]
52
+ steps:
53
+ - uses: actions/checkout@v6
54
+ - uses: actions/setup-python@v6
55
+ with:
56
+ python-version: ${{ matrix.python-version }}
57
+ cache: pip
58
+ - name: Install dependency-free adapter test environment
59
+ run: python -m pip install -e '.[dev]'
60
+ - name: Exercise every raw and finalized adapter public seam
61
+ run: >-
62
+ pytest -q
63
+ packages/sdk-python/tests/test_adapter_conformance.py
64
+ apps/ingest/tests/test_finalized_adapter_conformance.py
65
+
66
+ framework-compatibility:
67
+ name: ${{ matrix.integration }} ${{ matrix.lane }} compatibility
68
+ runs-on: ubuntu-latest
69
+ timeout-minutes: 20
70
+ strategy:
71
+ fail-fast: false
72
+ matrix:
73
+ include:
74
+ - integration: pipecat
75
+ lane: minimum
76
+ dependency: pipecat-ai[tracing]==1.5.0
77
+ - integration: pipecat
78
+ lane: current
79
+ dependency: pipecat-ai[tracing]>=1.5.0,<1.6
80
+ - integration: livekit
81
+ lane: minimum
82
+ dependency: livekit-agents==1.6.5
83
+ - integration: livekit
84
+ lane: current
85
+ dependency: livekit-agents>=1.6.5,<1.7
86
+ steps:
87
+ - uses: actions/checkout@v6
88
+ - uses: actions/setup-python@v6
89
+ with:
90
+ python-version: "3.11"
91
+ cache: pip
92
+ - name: Install framework dependency lane
93
+ env:
94
+ FRAMEWORK_DEPENDENCY: ${{ matrix.dependency }}
95
+ run: |
96
+ python -m pip install -e '.[dev]'
97
+ python -m pip install --upgrade "$FRAMEWORK_DEPENDENCY"
98
+ - name: Exercise real framework objects and conformance fixtures
99
+ run: |
100
+ pytest -q apps/ingest/tests/test_framework_integrations.py \
101
+ -k '${{ matrix.integration }}'
102
+ pytest -q packages/sdk-python/tests/test_adapter_conformance.py \
103
+ -k '${{ matrix.integration }}'
104
+
105
+ macos-smoke:
106
+ name: macOS framework smoke
107
+ runs-on: macos-14
108
+ timeout-minutes: 20
109
+ steps:
110
+ - uses: actions/checkout@v6
111
+ - uses: actions/setup-python@v6
112
+ with:
113
+ python-version: "3.12"
114
+ cache: pip
115
+ - name: Install newest supported framework dependencies
116
+ run: python -m pip install --upgrade -e '.[dev,pipecat,livekit]'
117
+ - name: Exercise public seams and real dependency models
118
+ run: |
119
+ pytest -q packages/sdk-python/tests/test_adapter_conformance.py
120
+ pytest -q apps/ingest/tests/test_framework_integrations.py \
121
+ -k 'metric_models_are_consumed_as_real_objects or real_readable_spans_have_lifecycle_root_and_sibling_stages'
122
+
123
+ artifacts:
124
+ name: Clean wheel and source distribution
125
+ runs-on: ubuntu-latest
126
+ timeout-minutes: 20
127
+ steps:
128
+ - uses: actions/checkout@v6
129
+ - uses: actions/setup-python@v6
130
+ with:
131
+ python-version: "3.11"
132
+ cache: pip
133
+ - uses: pnpm/action-setup@v6
134
+ - uses: actions/setup-node@v6
135
+ with:
136
+ node-version-file: .nvmrc
137
+ cache: pnpm
138
+ - name: Build viewer and release artifacts from a clean checkout
139
+ run: |
140
+ python -m pip install 'build>=1.2,<2'
141
+ pnpm install --frozen-lockfile
142
+ pnpm --filter @earshot/viewer bundle
143
+ python -m build --wheel --sdist --outdir dist
144
+ - name: Inspect artifact contents and dependency metadata
145
+ run: |
146
+ python scripts/check_wheel.py dist/*.whl
147
+ python scripts/check_sdist.py dist/*.tar.gz
148
+ - name: Install and smoke base and server variants
149
+ run: |
150
+ python scripts/smoke_artifact.py dist/*.whl
151
+ python scripts/smoke_artifact.py dist/*.tar.gz
152
+
153
+ typescript:
154
+ name: TypeScript compatibility packages
155
+ runs-on: ubuntu-latest
156
+ timeout-minutes: 15
157
+ steps:
158
+ - uses: actions/checkout@v6
159
+ - uses: pnpm/action-setup@v6
160
+ - uses: actions/setup-node@v6
161
+ with:
162
+ node-version-file: .nvmrc
163
+ cache: pnpm
164
+ - name: Install locked dependencies
165
+ run: pnpm install --frozen-lockfile
166
+ - name: Check generated viewer API types
167
+ run: |
168
+ pnpm --filter @earshot/viewer gen:api
169
+ git diff --exit-code -- apps/viewer/src/api/schema.d.ts
170
+ - name: Test, typecheck, build, and format
171
+ run: |
172
+ pnpm test
173
+ pnpm typecheck
174
+ pnpm build
175
+ pnpm format:check
176
+
177
+ container:
178
+ name: Single-image smoke test
179
+ runs-on: ubuntu-latest
180
+ timeout-minutes: 10
181
+ steps:
182
+ - uses: actions/checkout@v6
183
+ - name: Build and exercise hardened container
184
+ run: sh scripts/smoke-container.sh