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.
- earshot_observability-0.1.0/.dockerignore +38 -0
- earshot_observability-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +80 -0
- earshot_observability-0.1.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
- earshot_observability-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +46 -0
- earshot_observability-0.1.0/.github/ISSUE_TEMPLATE/integration_request.yml +47 -0
- earshot_observability-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +24 -0
- earshot_observability-0.1.0/.github/dependabot.yml +65 -0
- earshot_observability-0.1.0/.github/release.yml +24 -0
- earshot_observability-0.1.0/.github/workflows/ci.yml +184 -0
- earshot_observability-0.1.0/.github/workflows/release.yml +200 -0
- earshot_observability-0.1.0/.gitignore +44 -0
- earshot_observability-0.1.0/.nvmrc +1 -0
- earshot_observability-0.1.0/.prettierignore +8 -0
- earshot_observability-0.1.0/.prettierrc +4 -0
- earshot_observability-0.1.0/CONTEXT.md +55 -0
- earshot_observability-0.1.0/CONTRIBUTING.md +55 -0
- earshot_observability-0.1.0/Dockerfile +60 -0
- earshot_observability-0.1.0/LICENSE +201 -0
- earshot_observability-0.1.0/PKG-INFO +222 -0
- earshot_observability-0.1.0/README.md +164 -0
- earshot_observability-0.1.0/SECURITY.md +48 -0
- earshot_observability-0.1.0/apps/ingest/app.py +42 -0
- earshot_observability-0.1.0/apps/ingest/tests/conftest.py +21 -0
- earshot_observability-0.1.0/apps/ingest/tests/fixtures/connectors/README.md +61 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_api.py +965 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_container_security.py +25 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_delivery_receipts.py +174 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_e2e.py +300 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_elevenlabs_connector.py +611 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_finalized_adapter_conformance.py +129 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_framework_integrations.py +505 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_ingest_security_regressions.py +258 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_privacy_e2e.py +101 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_projects.py +212 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_real_provider_deliveries.py +136 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_retell_connector.py +410 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_ringg_connector.py +295 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_storage.py +1086 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_turn_facts.py +639 -0
- earshot_observability-0.1.0/apps/ingest/tests/test_vapi_connector.py +370 -0
- earshot_observability-0.1.0/apps/viewer/README.md +56 -0
- earshot_observability-0.1.0/apps/viewer/index.html +12 -0
- earshot_observability-0.1.0/apps/viewer/package.json +34 -0
- earshot_observability-0.1.0/apps/viewer/src/App.module.css +122 -0
- earshot_observability-0.1.0/apps/viewer/src/App.test.tsx +168 -0
- earshot_observability-0.1.0/apps/viewer/src/App.tsx +169 -0
- earshot_observability-0.1.0/apps/viewer/src/api/auth.ts +55 -0
- earshot_observability-0.1.0/apps/viewer/src/api/client.test.ts +58 -0
- earshot_observability-0.1.0/apps/viewer/src/api/client.ts +55 -0
- earshot_observability-0.1.0/apps/viewer/src/api/hooks.ts +68 -0
- earshot_observability-0.1.0/apps/viewer/src/api/schema.d.ts +3333 -0
- earshot_observability-0.1.0/apps/viewer/src/components/EmptyState.module.css +21 -0
- earshot_observability-0.1.0/apps/viewer/src/components/EmptyState.tsx +10 -0
- earshot_observability-0.1.0/apps/viewer/src/components/Waveform.tsx +14 -0
- earshot_observability-0.1.0/apps/viewer/src/features/fleet/FleetDashboard.module.css +193 -0
- earshot_observability-0.1.0/apps/viewer/src/features/fleet/FleetDashboard.tsx +176 -0
- earshot_observability-0.1.0/apps/viewer/src/features/fleet/fleet.test.ts +73 -0
- earshot_observability-0.1.0/apps/viewer/src/features/fleet/fleet.ts +59 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/CallGraph.module.css +101 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/CallGraph.tsx +227 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionHeader.module.css +103 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionHeader.tsx +46 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionInspector.a11y.test.tsx +144 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionInspector.module.css +32 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/SessionInspector.tsx +146 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/StageDrawer.tsx +140 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/TurnDrawer.tsx +124 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/TurnTimeline.module.css +254 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/TurnTimeline.tsx +229 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/__fixtures__/analysis.json +454 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/__fixtures__/incident.json +1670 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/drawer.module.css +291 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/inspector.a11y.test.tsx +117 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/timeline.test.ts +344 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/timeline.ts +533 -0
- earshot_observability-0.1.0/apps/viewer/src/features/inspector/useInitialFocus.ts +12 -0
- earshot_observability-0.1.0/apps/viewer/src/features/sessions/SessionRail.module.css +138 -0
- earshot_observability-0.1.0/apps/viewer/src/features/sessions/SessionRail.tsx +64 -0
- earshot_observability-0.1.0/apps/viewer/src/lib/format.test.ts +36 -0
- earshot_observability-0.1.0/apps/viewer/src/lib/format.ts +23 -0
- earshot_observability-0.1.0/apps/viewer/src/lib/status.ts +18 -0
- earshot_observability-0.1.0/apps/viewer/src/main.tsx +31 -0
- earshot_observability-0.1.0/apps/viewer/src/styles/global.css +63 -0
- earshot_observability-0.1.0/apps/viewer/src/styles/tokens.css +101 -0
- earshot_observability-0.1.0/apps/viewer/src/test/setup.ts +1 -0
- earshot_observability-0.1.0/apps/viewer/src/test/utils.tsx +20 -0
- earshot_observability-0.1.0/apps/viewer/src/vite-env.d.ts +1 -0
- earshot_observability-0.1.0/apps/viewer/tsconfig.app.json +21 -0
- earshot_observability-0.1.0/apps/viewer/tsconfig.json +4 -0
- earshot_observability-0.1.0/apps/viewer/tsconfig.node.json +13 -0
- earshot_observability-0.1.0/apps/viewer/vite.config.ts +17 -0
- earshot_observability-0.1.0/apps/viewer/vitest.config.ts +14 -0
- earshot_observability-0.1.0/compose.yaml +27 -0
- earshot_observability-0.1.0/docs/README.md +48 -0
- earshot_observability-0.1.0/docs/adapters/livekit.md +156 -0
- earshot_observability-0.1.0/docs/adapters/pipecat.md +110 -0
- earshot_observability-0.1.0/docs/adapters/providers.md +123 -0
- earshot_observability-0.1.0/docs/adr/0001-canonical-incidents-derived-turn-facts.md +34 -0
- earshot_observability-0.1.0/docs/adr/0002-project-scope-and-external-identities.md +34 -0
- earshot_observability-0.1.0/docs/adr/0003-finalized-connectors-before-live-otlp.md +25 -0
- earshot_observability-0.1.0/docs/analysis.md +90 -0
- earshot_observability-0.1.0/docs/architecture.md +160 -0
- earshot_observability-0.1.0/docs/backend-api.md +184 -0
- earshot_observability-0.1.0/docs/conformance.md +199 -0
- earshot_observability-0.1.0/docs/connectors.md +120 -0
- earshot_observability-0.1.0/docs/development.md +198 -0
- earshot_observability-0.1.0/docs/incident-bundle.md +190 -0
- earshot_observability-0.1.0/docs/privacy.md +145 -0
- earshot_observability-0.1.0/docs/release.md +155 -0
- earshot_observability-0.1.0/docs/research/external-observability-sdk-patterns.md +271 -0
- earshot_observability-0.1.0/docs/research/pre-release-first-principles-audit.md +623 -0
- earshot_observability-0.1.0/docs/research/pre-release-hardening-outcome.md +151 -0
- earshot_observability-0.1.0/docs/sdk.md +318 -0
- earshot_observability-0.1.0/docs/semantic-conventions.md +142 -0
- earshot_observability-0.1.0/docs/storage.md +192 -0
- earshot_observability-0.1.0/examples/livekit_console/README.md +161 -0
- earshot_observability-0.1.0/examples/livekit_console/_runtime.py +168 -0
- earshot_observability-0.1.0/examples/livekit_console/agent.py +205 -0
- earshot_observability-0.1.0/examples/livekit_console/drive_audio.py +258 -0
- earshot_observability-0.1.0/examples/livekit_console/drive_once.py +161 -0
- earshot_observability-0.1.0/examples/pipecat_headless/README.md +75 -0
- earshot_observability-0.1.0/examples/pipecat_headless/drive.py +718 -0
- earshot_observability-0.1.0/examples/provider_adapters/drive_cartesia.py +143 -0
- earshot_observability-0.1.0/examples/provider_adapters/drive_deepgram.py +137 -0
- earshot_observability-0.1.0/examples/provider_adapters/drive_sarvam.py +176 -0
- earshot_observability-0.1.0/examples/provider_adapters/inspect_pipeline.py +127 -0
- earshot_observability-0.1.0/fixtures/conformance/canonical-vector.expected.json +5 -0
- earshot_observability-0.1.0/fixtures/conformance/canonical-vector.input.json +287 -0
- earshot_observability-0.1.0/fixtures/faults/barge_in.incident.json +393 -0
- earshot_observability-0.1.0/fixtures/faults/device_unavailable.incident.json +230 -0
- earshot_observability-0.1.0/fixtures/faults/fast_endpointing.incident.json +286 -0
- earshot_observability-0.1.0/fixtures/faults/llm_delay.incident.json +503 -0
- earshot_observability-0.1.0/fixtures/faults/native_s2s_interruption.incident.json +235 -0
- earshot_observability-0.1.0/fixtures/faults/privacy_opt_out.incident.json +209 -0
- earshot_observability-0.1.0/fixtures/faults/scenarios.json +92 -0
- earshot_observability-0.1.0/fixtures/faults/security_regressions.json +57 -0
- earshot_observability-0.1.0/fixtures/faults/slow_endpointing.incident.json +286 -0
- earshot_observability-0.1.0/fixtures/faults/stt_delay.incident.json +503 -0
- earshot_observability-0.1.0/fixtures/faults/telephony_handoff.incident.json +349 -0
- earshot_observability-0.1.0/fixtures/faults/tool_timeout_retry.incident.json +305 -0
- earshot_observability-0.1.0/fixtures/faults/tts_delay.incident.json +503 -0
- earshot_observability-0.1.0/fixtures/faults/webrtc_degradation.incident.json +219 -0
- earshot_observability-0.1.0/fixtures/faults/websocket_reconnect.incident.json +360 -0
- earshot_observability-0.1.0/fixtures/golden/expected_semantics.json +14 -0
- earshot_observability-0.1.0/fixtures/golden/livekit_metrics.json +100 -0
- earshot_observability-0.1.0/fixtures/golden/pipecat_spans.json +118 -0
- earshot_observability-0.1.0/fixtures/invalid/mutations.json +109 -0
- earshot_observability-0.1.0/fixtures/valid/complete.json +527 -0
- earshot_observability-0.1.0/fixtures/valid/minimal.json +33 -0
- earshot_observability-0.1.0/package.json +29 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/__init__.py +125 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/__init__.py +11 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/base.py +26 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/livekit.py +2084 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/pipecat.py +819 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/__init__.py +15 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/base.py +201 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/cartesia.py +343 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/deepgram.py +441 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/openai_realtime.py +436 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/adapters/providers/sarvam.py +236 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/analysis.py +880 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/api.py +1410 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/browser_session.py +89 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/cli.py +371 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/clock.py +39 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/codec.py +318 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/__init__.py +38 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/elevenlabs.py +504 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/kernel.py +288 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/retell.py +301 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/ringg.py +269 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/types.py +148 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/connectors/vapi.py +343 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/context.py +129 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/contract.py +641 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/explanation.py +308 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/exporter.py +1183 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/generated/__init__.py +0 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/generated/earshot/__init__.py +0 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/generated/earshot/v1alpha1/__init__.py +0 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/generated/earshot/v1alpha1/incident_pb2.py +38 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/measurement_semantics.py +54 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/pipeline.py +676 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/privacy.py +1137 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/py.typed +1 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/recorder.py +1948 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/sdk.py +1292 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/storage.py +3110 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/validation.py +2235 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/versions.py +15 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/web/assets/index-DXBWyP_c.js +60 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/web/assets/index-DolUwwS_.css +1 -0
- earshot_observability-0.1.0/packages/sdk-python/src/earshot/web/index.html +13 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/adapter_conformance.py +136 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/conftest.py +25 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/incident_factory.py +333 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_adapter_conformance.py +336 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_analysis.py +803 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_cli.py +213 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_codec.py +464 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_contract_validation.py +753 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_explanation.py +186 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_exporter_durable.py +447 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_exporter_fault_injection.py +269 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_livekit_otel_adapter.py +1708 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_local_network.py +104 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_pipecat_headless_driver.py +880 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_pipeline_facade.py +319 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_privacy_provenance_quality.py +1642 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_properties.py +113 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_provider_adapter_parity.py +111 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_provider_adapters_deepgram_cartesia.py +687 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_provider_adapters_openai_sarvam.py +471 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_recorder_exporter_adapters.py +1906 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_recorder_limits.py +251 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_release_identity.py +65 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_sdk.py +417 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_sdk_context_sampling.py +281 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_sdk_delivery_modes.py +391 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_sdk_security_regressions.py +166 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_shared_fixtures.py +293 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_spa_serving.py +71 -0
- earshot_observability-0.1.0/packages/sdk-python/tests/test_versions.py +58 -0
- earshot_observability-0.1.0/pnpm-lock.yaml +2711 -0
- earshot_observability-0.1.0/pnpm-workspace.yaml +3 -0
- earshot_observability-0.1.0/proto/earshot/v1alpha1/incident.proto +33 -0
- earshot_observability-0.1.0/pyproject.toml +111 -0
- earshot_observability-0.1.0/scripts/check_release.py +71 -0
- earshot_observability-0.1.0/scripts/check_sdist.py +42 -0
- earshot_observability-0.1.0/scripts/check_semconv.py +59 -0
- earshot_observability-0.1.0/scripts/check_wheel.py +70 -0
- earshot_observability-0.1.0/scripts/generate_canonical_vector.py +60 -0
- earshot_observability-0.1.0/scripts/generate_complete_fixture.py +23 -0
- earshot_observability-0.1.0/scripts/generate_contract.py +98 -0
- earshot_observability-0.1.0/scripts/generate_fault_fixtures.py +712 -0
- earshot_observability-0.1.0/scripts/generate_openapi.py +51 -0
- earshot_observability-0.1.0/scripts/smoke-container.sh +89 -0
- earshot_observability-0.1.0/scripts/smoke_artifact.py +205 -0
- earshot_observability-0.1.0/semconv/README.md +20 -0
- earshot_observability-0.1.0/semconv/earshot.yaml +342 -0
- earshot_observability-0.1.0/spec/backend-api.openapi.json +6147 -0
- earshot_observability-0.1.0/spec/derived-analysis.schema.json +444 -0
- earshot_observability-0.1.0/spec/incident-bundle.schema.json +2737 -0
- earshot_observability-0.1.0/tsconfig.base.json +14 -0
- 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
|