a11-kit 0.2.1__tar.gz → 0.2.2__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 (323) hide show
  1. {a11_kit-0.2.1 → a11_kit-0.2.2}/PKG-INFO +1 -1
  2. a11_kit-0.2.2/VERSION +1 -0
  3. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/_native.pyi +610 -0
  4. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/cli/chat_ui.py +131 -5
  5. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/cli/commands/chat.py +18 -1
  6. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/cli/tests/test_chat_shell_tools.py +26 -1
  7. a11_kit-0.2.2/a11/cli/tests/test_chat_voice.py +101 -0
  8. a11_kit-0.2.2/a11/cli/voice.py +191 -0
  9. a11_kit-0.2.2/a11/sdk/audio/__init__.py +12 -0
  10. a11_kit-0.2.2/a11/sdk/audio/client.py +271 -0
  11. a11_kit-0.2.2/a11/sdk/audio/tests/test_audio.py +147 -0
  12. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/prompt.py +5 -0
  13. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/ollama/interact_with_ollama.py +16 -3
  14. a11_kit-0.2.2/a11/sdk/ollama/tests/test_interact_with_ollama.py +226 -0
  15. a11_kit-0.2.2/a11/stores/__init__.py +0 -0
  16. a11_kit-0.2.2/a11/stores/tests/__init__.py +0 -0
  17. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/CMakeLists.txt +176 -0
  18. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/cmake/a11Config.cmake.in +30 -0
  19. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/CMakeLists.txt +4 -0
  20. a11_kit-0.2.2/cpp/python/audio_bindings.cc +498 -0
  21. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/bindings.h +3 -0
  22. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/interop.cc +26 -0
  23. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/interop.h +31 -0
  24. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/module.cc +4 -2
  25. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/net_bindings.cc +0 -47
  26. a11_kit-0.2.2/cpp/sdk/audio/CMakeLists.txt +8 -0
  27. a11_kit-0.2.2/cpp/sdk/audio/audio_buffer.cc +18 -0
  28. a11_kit-0.2.2/cpp/sdk/audio/audio_buffer.h +52 -0
  29. a11_kit-0.2.2/cpp/sdk/audio/audio_input.cc +480 -0
  30. a11_kit-0.2.2/cpp/sdk/audio/audio_input.h +182 -0
  31. a11_kit-0.2.2/cpp/sdk/audio/device.cc +104 -0
  32. a11_kit-0.2.2/cpp/sdk/audio/device.h +60 -0
  33. a11_kit-0.2.2/cpp/sdk/audio/internal/audio_processing.cc +261 -0
  34. a11_kit-0.2.2/cpp/sdk/audio/internal/audio_processing.h +124 -0
  35. a11_kit-0.2.2/cpp/sdk/audio/internal/portaudio_session.cc +59 -0
  36. a11_kit-0.2.2/cpp/sdk/audio/internal/portaudio_session.h +47 -0
  37. a11_kit-0.2.2/cpp/sdk/audio/internal/sample_ring.h +116 -0
  38. a11_kit-0.2.2/cpp/sdk/audio/speech_recognizer.cc +621 -0
  39. a11_kit-0.2.2/cpp/sdk/audio/speech_recognizer.h +164 -0
  40. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/CMakeLists.txt +12 -0
  41. a11_kit-0.2.2/cpp/tests/audio_buffer_test.cc +46 -0
  42. a11_kit-0.2.2/cpp/tests/audio_input_test.cc +72 -0
  43. a11_kit-0.2.2/cpp/tests/audio_processing_test.cc +133 -0
  44. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/install_smoke/CMakeLists.txt +4 -0
  45. a11_kit-0.2.2/cpp/tests/install_smoke/smoke.cc +23 -0
  46. a11_kit-0.2.2/cpp/tests/sample_ring_test.cc +78 -0
  47. a11_kit-0.2.2/cpp/tests/speech_recognizer_test.cc +45 -0
  48. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/bootstrap_wheel_deps.sh +60 -1
  49. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/generate_stubs.py +17 -0
  50. a11_kit-0.2.1/VERSION +0 -1
  51. a11_kit-0.2.1/cpp/tests/install_smoke/smoke.cc +0 -8
  52. {a11_kit-0.2.1 → a11_kit-0.2.2}/.clang-format +0 -0
  53. {a11_kit-0.2.1 → a11_kit-0.2.2}/.clang-tidy +0 -0
  54. {a11_kit-0.2.1 → a11_kit-0.2.2}/AGENTS.md +0 -0
  55. {a11_kit-0.2.1 → a11_kit-0.2.2}/CMakeLists.txt +0 -0
  56. {a11_kit-0.2.1 → a11_kit-0.2.2}/README.md +0 -0
  57. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/.gitignore +0 -0
  58. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/__init__.py +0 -0
  59. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/_asyncio.py +0 -0
  60. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/_native_options.py +0 -0
  61. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/_native_protocol.py +0 -0
  62. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/actions/__init__.py +0 -0
  63. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/actions/_native_action.py +0 -0
  64. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/actions/action.py +0 -0
  65. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/actions/registry.py +0 -0
  66. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/actions/tests/__init__.py +0 -0
  67. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/actions/tests/test_action.py +0 -0
  68. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/cli/__init__.py +0 -0
  69. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/cli/__main__.py +0 -0
  70. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/cli/app.py +0 -0
  71. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/cli/backends.py +0 -0
  72. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/cli/commands/__init__.py +0 -0
  73. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/cli/tests/__init__.py +0 -0
  74. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/conftest.py +0 -0
  75. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/data/README.md +0 -0
  76. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/data/__init__.py +0 -0
  77. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/data/msgpack_utils.py +0 -0
  78. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/data/serialization.py +0 -0
  79. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/data/tests/test_serialization.py +0 -0
  80. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/data/types.py +0 -0
  81. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/demos/__init__.py +0 -0
  82. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/demos/echo_client_webrtc.py +0 -0
  83. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/demos/echo_server.py +0 -0
  84. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/demos/echo_server_webrtc.py +0 -0
  85. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/__init__.py +0 -0
  86. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/http2.py +0 -0
  87. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/http_sse_wire_stream.py +0 -0
  88. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/in_process_wire_stream.py +0 -0
  89. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/signalling.py +0 -0
  90. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/tests/__init__.py +0 -0
  91. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/tests/test_in_process_wire_stream.py +0 -0
  92. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/tests/test_native_network.py +0 -0
  93. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/tests/test_websocket_session_echo.py +0 -0
  94. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/tests/test_wire_stream_with_recv.py +0 -0
  95. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/webrtc_wire_stream.py +0 -0
  96. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/websocket_wire_stream.py +0 -0
  97. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/net/wire_stream.py +0 -0
  98. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/nodes/__init__.py +0 -0
  99. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/nodes/_native_async_node.py +0 -0
  100. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/nodes/async_node.py +0 -0
  101. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/nodes/tests/test_async_node.py +0 -0
  102. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/observability/__init__.py +0 -0
  103. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/observability/tests/__init__.py +0 -0
  104. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/observability/tests/test_observability.py +0 -0
  105. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/py.typed +0 -0
  106. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/redis/__init__.py +0 -0
  107. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/redis/client.py +0 -0
  108. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/redis/tests/test_client.py +0 -0
  109. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/__init__.py +0 -0
  110. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/anthropic/__init__.py +0 -0
  111. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/anthropic/client.py +0 -0
  112. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/anthropic/interact_with_claude.py +0 -0
  113. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/anthropic/interact_with_claude_schema.py +0 -0
  114. {a11_kit-0.2.1/a11/sdk/bash → a11_kit-0.2.2/a11/sdk/audio}/tests/__init__.py +0 -0
  115. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/__init__.py +0 -0
  116. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/handlers.py +0 -0
  117. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/manager.py +0 -0
  118. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/schemas.py +0 -0
  119. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/shell.py +0 -0
  120. {a11_kit-0.2.1/a11/sdk/gemini → a11_kit-0.2.2/a11/sdk/bash/tests}/__init__.py +0 -0
  121. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/tests/test_add_done_callback.py +0 -0
  122. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/tests/test_manager.py +0 -0
  123. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/tests/test_prompt.py +0 -0
  124. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/tests/test_shell_integration.py +0 -0
  125. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/bash/tests/test_shell_with_llm.py +0 -0
  126. {a11_kit-0.2.1/a11/sdk/llm_tools → a11_kit-0.2.2/a11/sdk/gemini}/__init__.py +0 -0
  127. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/gemini/client.py +0 -0
  128. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/gemini/interact_with_gemini.py +0 -0
  129. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/gemini/interact_with_gemini_schema.py +0 -0
  130. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/interact_with_llm.py +0 -0
  131. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/interact_with_llm_schema.py +0 -0
  132. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/llm.py +0 -0
  133. {a11_kit-0.2.1/a11/sdk/llm_tools/tests → a11_kit-0.2.2/a11/sdk/llm_tools}/__init__.py +0 -0
  134. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/llm_tools/adapter.py +0 -0
  135. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/llm_tools/jsonschema_utils.py +0 -0
  136. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/llm_tools/runner.py +0 -0
  137. {a11_kit-0.2.1/a11/sdk → a11_kit-0.2.2/a11/sdk/llm_tools}/tests/__init__.py +0 -0
  138. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/llm_tools/tests/test_autofill_and_allowlist.py +0 -0
  139. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/ollama/__init__.py +0 -0
  140. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/ollama/client.py +0 -0
  141. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/ollama/interact_with_ollama_schema.py +0 -0
  142. {a11_kit-0.2.1/a11/service → a11_kit-0.2.2/a11/sdk/ollama/tests}/__init__.py +0 -0
  143. {a11_kit-0.2.1/a11/service → a11_kit-0.2.2/a11/sdk}/tests/__init__.py +0 -0
  144. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/sdk/tests/test_interact_with_llm.py +0 -0
  145. {a11_kit-0.2.1/a11/stores → a11_kit-0.2.2/a11/service}/__init__.py +0 -0
  146. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/service/_native_session.py +0 -0
  147. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/service/session.py +0 -0
  148. {a11_kit-0.2.1/a11/stores → a11_kit-0.2.2/a11/service}/tests/__init__.py +0 -0
  149. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/service/tests/test_session.py +0 -0
  150. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/status.py +0 -0
  151. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/stores/chunk_store.py +0 -0
  152. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/stores/chunk_store_reader.py +0 -0
  153. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/stores/chunk_store_writer.py +0 -0
  154. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/stores/local_chunk_store.py +0 -0
  155. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/stores/redis_chunk_store.py +0 -0
  156. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/stores/tests/test_chunk_store.py +0 -0
  157. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/stores/tests/test_chunk_store_reader.py +0 -0
  158. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/stores/tests/test_chunk_store_writer.py +0 -0
  159. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/stores/tests/test_redis_chunk_store.py +0 -0
  160. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/tests/__init__.py +0 -0
  161. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/tests/test_native_bindings.py +0 -0
  162. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/tests/test_typing_package.py +0 -0
  163. {a11_kit-0.2.1 → a11_kit-0.2.2}/a11/timing.py +0 -0
  164. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/CMakeLists.txt +0 -0
  165. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/actions/CMakeLists.txt +0 -0
  166. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/actions/action.cc +0 -0
  167. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/actions/action.h +0 -0
  168. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/actions/registry.cc +0 -0
  169. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/actions/registry.h +0 -0
  170. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/actions/schema.cc +0 -0
  171. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/actions/schema.h +0 -0
  172. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/concurrency/CMakeLists.txt +0 -0
  173. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/concurrency/callback_scheduler.cc +0 -0
  174. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/concurrency/callback_scheduler.h +0 -0
  175. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/concurrency/executor.cc +0 -0
  176. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/concurrency/executor.h +0 -0
  177. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/concurrency/future.h +0 -0
  178. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/data/CMakeLists.txt +0 -0
  179. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/data/json.cc +0 -0
  180. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/data/json.h +0 -0
  181. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/data/msgpack.cc +0 -0
  182. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/data/msgpack.h +0 -0
  183. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/data/serialization.cc +0 -0
  184. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/data/serialization.h +0 -0
  185. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/data/types.cc +0 -0
  186. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/data/types.h +0 -0
  187. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/CMakeLists.txt +0 -0
  188. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/byte_chunking.cc +0 -0
  189. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/byte_chunking.h +0 -0
  190. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/channel_wire_stream.cc +0 -0
  191. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/channel_wire_stream.h +0 -0
  192. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/http2.cc +0 -0
  193. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/http2.h +0 -0
  194. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/http_sse_wire_stream.cc +0 -0
  195. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/http_sse_wire_stream.h +0 -0
  196. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/in_process_wire_stream.cc +0 -0
  197. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/in_process_wire_stream.h +0 -0
  198. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/internal/binary_channel.h +0 -0
  199. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/internal/http2_websocket_channel.cc +0 -0
  200. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/internal/http2_websocket_channel.h +0 -0
  201. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/internal/multiplexed_binary_channel.cc +0 -0
  202. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/internal/multiplexed_binary_channel.h +0 -0
  203. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/internal/rtc_binary_channel.cc +0 -0
  204. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/signalling.cc +0 -0
  205. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/signalling.h +0 -0
  206. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/webrtc_wire_stream.cc +0 -0
  207. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/webrtc_wire_stream.h +0 -0
  208. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/websocket_signalling.cc +0 -0
  209. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/websocket_signalling.h +0 -0
  210. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/websocket_wire_stream.cc +0 -0
  211. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/websocket_wire_stream.h +0 -0
  212. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/wire_stream.cc +0 -0
  213. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/wire_stream.h +0 -0
  214. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/wire_stream_with_recv.cc +0 -0
  215. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/net/wire_stream_with_recv.h +0 -0
  216. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/nodes/CMakeLists.txt +0 -0
  217. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/nodes/async_node.cc +0 -0
  218. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/nodes/async_node.h +0 -0
  219. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/nodes/node_map.cc +0 -0
  220. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/nodes/node_map.h +0 -0
  221. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/CMakeLists.txt +0 -0
  222. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/internal/otel_internal.h +0 -0
  223. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/internal/otlp_http_exporter.cc +0 -0
  224. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/internal/otlp_http_exporter.h +0 -0
  225. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/provider.cc +0 -0
  226. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/provider.h +0 -0
  227. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/span.h +0 -0
  228. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/trace_context.cc +0 -0
  229. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/trace_context.h +0 -0
  230. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/tracer.cc +0 -0
  231. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/obs/tracer.h +0 -0
  232. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/service/CMakeLists.txt +0 -0
  233. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/service/session.cc +0 -0
  234. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/service/session.h +0 -0
  235. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/status.cc +0 -0
  236. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/status.h +0 -0
  237. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/CMakeLists.txt +0 -0
  238. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/chunk_store.h +0 -0
  239. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/chunk_store_reader.cc +0 -0
  240. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/chunk_store_reader.h +0 -0
  241. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/chunk_store_writer.cc +0 -0
  242. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/chunk_store_writer.h +0 -0
  243. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/local_chunk_store.cc +0 -0
  244. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/local_chunk_store.h +0 -0
  245. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/redis_chunk_store.cc +0 -0
  246. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/redis_chunk_store.h +0 -0
  247. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/stores/redis_chunk_store_script.h +0 -0
  248. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/time.cc +0 -0
  249. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/a11/time.h +0 -0
  250. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/actions_bindings.cc +0 -0
  251. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/casters.h +0 -0
  252. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/core_bindings.cc +0 -0
  253. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/data_bindings.cc +0 -0
  254. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/http_bindings.cc +0 -0
  255. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/native_types.h +0 -0
  256. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/nodes_bindings.cc +0 -0
  257. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/obs_bindings.cc +0 -0
  258. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/redis_bindings.cc +0 -0
  259. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/service_bindings.cc +0 -0
  260. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/stores_bindings.cc +0 -0
  261. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/python/webrtc_bindings.cc +0 -0
  262. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/redis/CMakeLists.txt +0 -0
  263. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/redis/client.cc +0 -0
  264. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/redis/client.h +0 -0
  265. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/redis/reply.cc +0 -0
  266. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/redis/reply.h +0 -0
  267. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/action_test.cc +0 -0
  268. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/async_node_test.cc +0 -0
  269. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/byte_chunking_test.cc +0 -0
  270. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/chunk_store_reader_test.cc +0 -0
  271. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/chunk_store_writer_test.cc +0 -0
  272. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/data_json_test.cc +0 -0
  273. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/data_types_test.cc +0 -0
  274. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/future_test.cc +0 -0
  275. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/http2_test.cc +0 -0
  276. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/http_sse_wire_stream_test.cc +0 -0
  277. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/in_process_wire_stream_test.cc +0 -0
  278. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/local_chunk_store_test.cc +0 -0
  279. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/obs_action_span_test.cc +0 -0
  280. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/obs_session_stream_test.cc +0 -0
  281. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/obs_trace_context_test.cc +0 -0
  282. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/obs_tracer_test.cc +0 -0
  283. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/redis_chunk_store_test.cc +0 -0
  284. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/redis_client_test.cc +0 -0
  285. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/session_test.cc +0 -0
  286. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/signalling_test.cc +0 -0
  287. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/testdata/localhost-cert.pem +0 -0
  288. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/testdata/localhost-key.pem +0 -0
  289. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/webrtc_wire_stream_test.cc +0 -0
  290. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/websocket_signalling_test.cc +0 -0
  291. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/websocket_wire_stream_test.cc +0 -0
  292. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/tests/wire_stream_with_recv_test.cc +0 -0
  293. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/CMakeLists.txt +0 -0
  294. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/tests/thread_test.cc +0 -0
  295. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/boost_primitives.cc +0 -0
  296. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/boost_primitives.h +0 -0
  297. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/cases.h +0 -0
  298. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/channel/waiter_state.cc +0 -0
  299. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/channel/waiter_state.h +0 -0
  300. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/channel.h +0 -0
  301. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/concurrency.h +0 -0
  302. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/executor.h +0 -0
  303. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/fiber.cc +0 -0
  304. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/fiber.h +0 -0
  305. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/select.cc +0 -0
  306. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/select.h +0 -0
  307. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/selectables.cc +0 -0
  308. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/selectables.h +0 -0
  309. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/thread_pool.cc +0 -0
  310. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/thread_pool.h +0 -0
  311. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/util.cc +0 -0
  312. {a11_kit-0.2.1 → a11_kit-0.2.2}/cpp/thread/thread/util.h +0 -0
  313. {a11_kit-0.2.1 → a11_kit-0.2.2}/pybind11_abseil/__init__.py +0 -0
  314. {a11_kit-0.2.1 → a11_kit-0.2.2}/pyproject.toml +0 -0
  315. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/audit_wheel.py +0 -0
  316. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/build_wheels.py +0 -0
  317. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/check_release_version.py +0 -0
  318. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/freeze_hunt.py +0 -0
  319. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/patches/boost-fiber-macos-futex.md +0 -0
  320. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/patches/boost-fiber-macos-futex.patch +0 -0
  321. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/serialization.py +0 -0
  322. {a11_kit-0.2.1 → a11_kit-0.2.2}/scripts/smoke_cmake_install.sh +0 -0
  323. {a11_kit-0.2.1 → a11_kit-0.2.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: a11-kit
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Concurrent action and streaming runtime with a native C++ backend
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: absl-py>=2.5.0
a11_kit-0.2.2/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.2
@@ -11,6 +11,7 @@ import httpx
11
11
  import collections.abc
12
12
  import msgpack._cmsgpack
13
13
  import typing
14
+ import os
14
15
 
15
16
  T = typing.TypeVar("T")
16
17
 
@@ -18,6 +19,12 @@ class _DoneEvent(typing.Protocol):
18
19
  def is_set(self) -> bool: ...
19
20
  async def wait(self) -> bool: ...
20
21
 
22
+ OnTranscription = collections.abc.Callable[
23
+ [str | None], collections.abc.Awaitable[None]
24
+ ]
25
+ OnRecognitionDone = collections.abc.Callable[
26
+ [], collections.abc.Awaitable[None]
27
+ ]
21
28
  __all__: list[str] = [
22
29
  "ACCEPT",
23
30
  "ACTION_DISPATCH_STATUS_OUTPUT",
@@ -32,6 +39,11 @@ __all__: list[str] = [
32
39
  "ActionSchema",
33
40
  "ActionSettings",
34
41
  "AsyncNode",
42
+ "AudioBuffer",
43
+ "AudioDeviceInfo",
44
+ "AudioInput",
45
+ "AudioInputOptions",
46
+ "AudioSubscription",
35
47
  "CANCEL_ACTION_HEADER",
36
48
  "CANCEL_ACTION_NAME",
37
49
  "CANDIDATE",
@@ -102,6 +114,8 @@ __all__: list[str] = [
102
114
  "SignallingMessageType",
103
115
  "SignallingService",
104
116
  "SignallingTransport",
117
+ "SpeechRecognizer",
118
+ "SpeechRecognizerOptions",
105
119
  "Status",
106
120
  "StreamMode",
107
121
  "TCP",
@@ -129,11 +143,14 @@ __all__: list[str] = [
129
143
  "WireStream",
130
144
  "WireStreamOptions",
131
145
  "WireStreamWithRecv",
146
+ "audio_device_info",
132
147
  "create_in_process_wire_stream_pair",
148
+ "default_audio_input_device",
133
149
  "default_redis_client",
134
150
  "get_http_header",
135
151
  "is_half_close_message",
136
152
  "is_status_chunk",
153
+ "list_audio_devices",
137
154
  "make_half_close_message",
138
155
  "normalize_session_headers",
139
156
  "obs_clear_recorded_spans",
@@ -1559,6 +1576,318 @@ class AsyncNode:
1559
1576
  @writer_options.setter
1560
1577
  def writer_options(self, arg1: ChunkStoreWriterOptions) -> None: ...
1561
1578
 
1579
+ class AudioBuffer:
1580
+ """
1581
+ A captured block of samples stored channel-major (planar). Use `memoryview(buffer)` for a zero-copy (channels x frames) float view, or `channel(i)` for one channel.
1582
+ """
1583
+
1584
+ def __buffer__(self, flags):
1585
+ """
1586
+ Return a buffer object that exposes the underlying memory of the object.
1587
+ """
1588
+
1589
+ def __release_buffer__(self, buffer):
1590
+ """
1591
+ Release the buffer object that exposes the underlying memory of the object.
1592
+ """
1593
+
1594
+ def channel(self, index: int) -> memoryview:
1595
+ """
1596
+ Return a zero-copy read-only view of one channel's samples.
1597
+ """
1598
+
1599
+ @property
1600
+ def end_time(self) -> typing.Any:
1601
+ """
1602
+ Best-effort instant the final sample in this buffer was taken.
1603
+ """
1604
+
1605
+ @property
1606
+ def num_channels(self) -> int:
1607
+ """
1608
+ Number of channels in this buffer.
1609
+ """
1610
+
1611
+ @property
1612
+ def num_frames(self) -> int:
1613
+ """
1614
+ Number of samples per channel in this buffer.
1615
+ """
1616
+
1617
+ @property
1618
+ def sample_rate(self) -> float:
1619
+ """
1620
+ Sample rate, in hertz, the samples were captured at.
1621
+ """
1622
+
1623
+ @property
1624
+ def samples(self) -> memoryview:
1625
+ """
1626
+ A zero-copy read-only ``(channels, frames)`` float view.
1627
+ """
1628
+
1629
+ class AudioDeviceInfo:
1630
+ """
1631
+ Static metadata describing one host audio device.
1632
+ """
1633
+
1634
+ def __repr__(self) -> str: ...
1635
+ @property
1636
+ def default_high_input_latency(self) -> typing.Any:
1637
+ """
1638
+ Suggested latency for robust, buffered input use.
1639
+ """
1640
+
1641
+ @property
1642
+ def default_low_input_latency(self) -> typing.Any:
1643
+ """
1644
+ Suggested latency for interactive input use.
1645
+ """
1646
+
1647
+ @property
1648
+ def default_sample_rate(self) -> float:
1649
+ """
1650
+ Default sample rate in hertz.
1651
+ """
1652
+
1653
+ @property
1654
+ def host_api(self) -> str:
1655
+ """
1656
+ Host API backing the device (e.g. Core Audio, ALSA).
1657
+ """
1658
+
1659
+ @property
1660
+ def index(self) -> int:
1661
+ """
1662
+ PortAudio device index, stable within a process run.
1663
+ """
1664
+
1665
+ @property
1666
+ def is_default_input(self) -> bool:
1667
+ """
1668
+ Whether this is the host default input device.
1669
+ """
1670
+
1671
+ @property
1672
+ def is_default_output(self) -> bool:
1673
+ """
1674
+ Whether this is the host default output device.
1675
+ """
1676
+
1677
+ @property
1678
+ def max_input_channels(self) -> int:
1679
+ """
1680
+ Maximum capture channels the device offers.
1681
+ """
1682
+
1683
+ @property
1684
+ def max_output_channels(self) -> int:
1685
+ """
1686
+ Maximum playback channels the device offers.
1687
+ """
1688
+
1689
+ @property
1690
+ def name(self) -> str:
1691
+ """
1692
+ Human-readable name.
1693
+ """
1694
+
1695
+ class AudioInput:
1696
+ """
1697
+ A capturable input device that samples continuously while at least one subscription is alive.
1698
+ """
1699
+
1700
+ @staticmethod
1701
+ def open(
1702
+ options: (
1703
+ AudioInputOptions | collections.abc.Mapping[str, typing.Any] | None
1704
+ ) = None,
1705
+ ) -> AudioInput:
1706
+ """
1707
+ Resolve the device and validate options without starting capture.
1708
+ """
1709
+
1710
+ def __init__(
1711
+ self,
1712
+ options: (
1713
+ AudioInputOptions | collections.abc.Mapping[str, typing.Any] | None
1714
+ ) = None,
1715
+ ) -> None:
1716
+ """
1717
+ Resolve the device and validate options without starting capture.
1718
+
1719
+ A plain mapping is validated into the same bound options object used by
1720
+ C++, rather than creating a second Python configuration model.
1721
+ """
1722
+
1723
+ def subscribe(self, buffer_size: int) -> AudioSubscription:
1724
+ """
1725
+ Begin receiving buffers of ``buffer_size`` frames per channel.
1726
+
1727
+ Capture starts when the first subscription is created and stops when
1728
+ the last one is closed.
1729
+ """
1730
+
1731
+ @property
1732
+ def capturing(self) -> bool:
1733
+ """
1734
+ Whether a capture stream is currently open.
1735
+ """
1736
+
1737
+ @property
1738
+ def channels(self) -> int:
1739
+ """
1740
+ Number of channels every subscription receives.
1741
+ """
1742
+
1743
+ @property
1744
+ def device(self) -> AudioDeviceInfo:
1745
+ """
1746
+ The captured device's metadata.
1747
+ """
1748
+
1749
+ @property
1750
+ def device_index(self) -> int:
1751
+ """
1752
+ The captured device's index.
1753
+ """
1754
+
1755
+ @property
1756
+ def name(self) -> str:
1757
+ """
1758
+ The captured device's name.
1759
+ """
1760
+
1761
+ @property
1762
+ def sample_rate(self) -> float:
1763
+ """
1764
+ Sample rate, in hertz, capture runs at.
1765
+ """
1766
+
1767
+ class AudioInputOptions:
1768
+ """
1769
+ How an AudioInput opens its capture stream.
1770
+ """
1771
+
1772
+ __hash__: None = None # pyright: ignore[reportIncompatibleMethodOverride]
1773
+ _a11_options_installed: typing.ClassVar[bool] = True
1774
+ @staticmethod
1775
+ def __get_pydantic_core_schema__(option_cls, _source_type, _handler): ...
1776
+ @staticmethod
1777
+ def __get_pydantic_json_schema__(option_cls, _schema, _handler): ...
1778
+ @staticmethod
1779
+ def model_json_schema(
1780
+ option_cls, **_: typing.Any
1781
+ ) -> dict[str, typing.Any]: ...
1782
+ @staticmethod
1783
+ def model_validate(option_cls, value: typing.Any, **_: typing.Any): ...
1784
+ def __copy__(self): ...
1785
+ def __deepcopy__(self, _memo): ...
1786
+ def __eq__(self, other: object) -> bool: ...
1787
+ def __init__(
1788
+ self,
1789
+ device_index: typing.SupportsInt = -1,
1790
+ sample_rate: typing.SupportsFloat = 0.0,
1791
+ channels: typing.SupportsInt = 0,
1792
+ block_frames: typing.SupportsInt = 256,
1793
+ ring_blocks: typing.SupportsInt = 32,
1794
+ ) -> None:
1795
+ """
1796
+ Construct validated audio input options.
1797
+ """
1798
+
1799
+ def __repr__(self) -> str: ...
1800
+ def model_copy(
1801
+ self,
1802
+ *,
1803
+ update: collections.abc.Mapping[str, typing.Any] | None = None,
1804
+ deep: bool = False,
1805
+ ): ...
1806
+ def model_dump(self, **_: typing.Any) -> dict[str, typing.Any]: ...
1807
+
1808
+ @property
1809
+ def block_frames(self) -> int:
1810
+ """
1811
+ Frames per PortAudio callback block.
1812
+ """
1813
+ @block_frames.setter
1814
+ def block_frames(self, arg0: typing.SupportsInt) -> None: ...
1815
+
1816
+ @property
1817
+ def channels(self) -> int:
1818
+ """
1819
+ Requested channel count, or 0 for the device's count.
1820
+ """
1821
+ @channels.setter
1822
+ def channels(self, arg0: typing.SupportsInt) -> None: ...
1823
+
1824
+ @property
1825
+ def device_index(self) -> int:
1826
+ """
1827
+ Device index to capture from, or negative for default.
1828
+ """
1829
+ @device_index.setter
1830
+ def device_index(self, arg0: typing.SupportsInt) -> None: ...
1831
+
1832
+ @property
1833
+ def ring_blocks(self) -> int:
1834
+ """
1835
+ Depth of the internal callback-to-fiber ring, in blocks.
1836
+ """
1837
+ @ring_blocks.setter
1838
+ def ring_blocks(self, arg0: typing.SupportsInt) -> None: ...
1839
+
1840
+ @property
1841
+ def sample_rate(self) -> float:
1842
+ """
1843
+ Requested sample rate in hertz, or 0 for the default.
1844
+ """
1845
+ @sample_rate.setter
1846
+ def sample_rate(self, arg0: typing.SupportsFloat) -> None: ...
1847
+
1848
+ class AudioSubscription:
1849
+ """
1850
+ A live subscription delivering fixed-size buffers from an AudioInput.
1851
+ """
1852
+
1853
+ async def __aenter__(self) -> typing.Self: ...
1854
+ async def __aexit__(self, exc_type, exc, traceback) -> None: ...
1855
+ def __aiter__(self) -> typing.Self: ...
1856
+ async def __anext__(self) -> AudioBuffer: ...
1857
+ def close(self) -> None:
1858
+ """
1859
+ Stop delivering; stops capture if this was the last subscription.
1860
+ """
1861
+
1862
+ async def read(self) -> AudioBuffer:
1863
+ """
1864
+ Await the next captured buffer for this subscription.
1865
+ """
1866
+
1867
+ @property
1868
+ def buffer_size(self) -> int:
1869
+ """
1870
+ Frames per channel in every delivered buffer.
1871
+ """
1872
+
1873
+ @property
1874
+ def channels(self) -> int:
1875
+ """
1876
+ Number of channels in every delivered buffer.
1877
+ """
1878
+
1879
+ @property
1880
+ def dropped(self) -> int:
1881
+ """
1882
+ Buffers dropped because this subscription fell behind.
1883
+ """
1884
+
1885
+ @property
1886
+ def sample_rate(self) -> float:
1887
+ """
1888
+ Sample rate, in hertz, of every delivered buffer.
1889
+ """
1890
+
1562
1891
  class ChannelFramingOptions:
1563
1892
  def __init__(self) -> None:
1564
1893
  """
@@ -4822,6 +5151,272 @@ class SignallingTransport:
4822
5151
  Register an async callback invoked for each inbound message.
4823
5152
  """
4824
5153
 
5154
+ class SpeechRecognizer:
5155
+ """
5156
+ Restartable local automatic speech recognizer backed by whisper.cpp. It invokes inference only for speech endpointed by its adaptive VAD.
5157
+ """
5158
+
5159
+ @staticmethod
5160
+ def create(
5161
+ model_path: str | os.PathLike[str],
5162
+ source: AudioInput | AudioSubscription | None = None,
5163
+ options: (
5164
+ SpeechRecognizerOptions
5165
+ | collections.abc.Mapping[str, typing.Any]
5166
+ | None
5167
+ ) = None,
5168
+ ) -> SpeechRecognizer:
5169
+ """
5170
+ Load a model and construct a recognizer.
5171
+ """
5172
+
5173
+ def __init__(
5174
+ self,
5175
+ model_path: str | os.PathLike[str],
5176
+ source: AudioInput | AudioSubscription | None = None,
5177
+ options: (
5178
+ SpeechRecognizerOptions
5179
+ | collections.abc.Mapping[str, typing.Any]
5180
+ | None
5181
+ ) = None,
5182
+ ) -> None:
5183
+ """
5184
+ Load a whisper.cpp GGML/GGUF model for local recognition.
5185
+
5186
+ Pass an :class:`AudioInput` to create a fresh subscription per run, an
5187
+ :class:`AudioSubscription` to consume that subscription once, or
5188
+ ``None`` to use the system default input. Loading happens once, so the
5189
+ same recognizer can be paused while an agent responds and restarted for
5190
+ the next user turn without reloading model weights.
5191
+ """
5192
+
5193
+ def get_status(self) -> typing.Any:
5194
+ """
5195
+ Return the current or final recognition status.
5196
+ """
5197
+
5198
+ async def start(
5199
+ self, on_transcription: OnTranscription, on_done: OnRecognitionDone
5200
+ ) -> None:
5201
+ """
5202
+ Start capture and deliver awaited transcription callbacks.
5203
+
5204
+ ``on_transcription`` receives non-empty pieces as speech endpoints are
5205
+ decoded, then exactly one ``None``. ``on_done`` follows that terminal
5206
+ marker. Silence does not invoke whisper or produce a piece.
5207
+ """
5208
+
5209
+ async def stop(self) -> None:
5210
+ """
5211
+ Stop capture and await the terminal piece and done callbacks.
5212
+ """
5213
+
5214
+ @property
5215
+ def model_path(self) -> str:
5216
+ """
5217
+ Path of the loaded whisper model.
5218
+ """
5219
+
5220
+ @property
5221
+ def options(self) -> SpeechRecognizerOptions:
5222
+ """
5223
+ The validated native options used by this recognizer.
5224
+ """
5225
+
5226
+ @property
5227
+ def running(self) -> bool:
5228
+ """
5229
+ Whether a recognition run is active.
5230
+ """
5231
+
5232
+ class SpeechRecognizerOptions:
5233
+ """
5234
+ Configuration for whisper.cpp transcription and adaptive VAD.
5235
+ """
5236
+
5237
+ _a11_options_installed: typing.ClassVar[bool] = True
5238
+ @staticmethod
5239
+ def __get_pydantic_core_schema__(option_cls, _source_type, _handler): ...
5240
+ @staticmethod
5241
+ def __get_pydantic_json_schema__(option_cls, _schema, _handler): ...
5242
+ @staticmethod
5243
+ def model_json_schema(
5244
+ option_cls, **_: typing.Any
5245
+ ) -> dict[str, typing.Any]: ...
5246
+ @staticmethod
5247
+ def model_validate(option_cls, value: typing.Any, **_: typing.Any): ...
5248
+ def __copy__(self): ...
5249
+ def __deepcopy__(self, _memo): ...
5250
+ def __eq__(self, other: object) -> bool: ...
5251
+ def __init__(
5252
+ self,
5253
+ language: str = "auto",
5254
+ translate: bool = False,
5255
+ inference_threads: typing.SupportsInt = 0,
5256
+ use_gpu: bool = True,
5257
+ flash_attention: bool = True,
5258
+ use_context: bool = False,
5259
+ initial_prompt: str = "",
5260
+ subscription_buffer_millis: typing.SupportsInt = 100,
5261
+ vad_threshold: typing.SupportsFloat = 0.009999999776482582,
5262
+ vad_noise_ratio: typing.SupportsFloat = 2.5,
5263
+ vad_window_millis: typing.SupportsInt = 20,
5264
+ min_speech_millis: typing.SupportsInt = 250,
5265
+ min_silence_millis: typing.SupportsInt = 600,
5266
+ speech_pad_millis: typing.SupportsInt = 160,
5267
+ max_speech_seconds: typing.SupportsInt = 30,
5268
+ vad_model_path: str = "",
5269
+ silero_threshold: typing.SupportsFloat = 0.5,
5270
+ ) -> None:
5271
+ """
5272
+ Construct validated speech recognition options.
5273
+ """
5274
+
5275
+ def __repr__(self) -> str: ...
5276
+ def model_copy(
5277
+ self,
5278
+ *,
5279
+ update: collections.abc.Mapping[str, typing.Any] | None = None,
5280
+ deep: bool = False,
5281
+ ): ...
5282
+ def model_dump(self, **_: typing.Any) -> dict[str, typing.Any]: ...
5283
+
5284
+ @property
5285
+ def flash_attention(self) -> bool:
5286
+ """
5287
+ Use flash attention when supported.
5288
+ """
5289
+ @flash_attention.setter
5290
+ def flash_attention(self, arg0: bool) -> None: ...
5291
+
5292
+ @property
5293
+ def inference_threads(self) -> int:
5294
+ """
5295
+ Decoder threads, or zero for the bounded default.
5296
+ """
5297
+ @inference_threads.setter
5298
+ def inference_threads(self, arg0: typing.SupportsInt) -> None: ...
5299
+
5300
+ @property
5301
+ def initial_prompt(self) -> str:
5302
+ """
5303
+ Optional initial decoder prompt.
5304
+ """
5305
+ @initial_prompt.setter
5306
+ def initial_prompt(self, arg0: str) -> None: ...
5307
+
5308
+ @property
5309
+ def language(self) -> str:
5310
+ """
5311
+ Whisper language code, or 'auto'.
5312
+ """
5313
+ @language.setter
5314
+ def language(self, arg0: str) -> None: ...
5315
+
5316
+ @property
5317
+ def max_speech_seconds(self) -> int:
5318
+ """
5319
+ Maximum utterance duration before splitting.
5320
+ """
5321
+ @max_speech_seconds.setter
5322
+ def max_speech_seconds(self, arg0: typing.SupportsInt) -> None: ...
5323
+
5324
+ @property
5325
+ def min_silence_millis(self) -> int:
5326
+ """
5327
+ Silence needed to endpoint speech.
5328
+ """
5329
+ @min_silence_millis.setter
5330
+ def min_silence_millis(self, arg0: typing.SupportsInt) -> None: ...
5331
+
5332
+ @property
5333
+ def min_speech_millis(self) -> int:
5334
+ """
5335
+ Minimum voiced duration accepted.
5336
+ """
5337
+ @min_speech_millis.setter
5338
+ def min_speech_millis(self, arg0: typing.SupportsInt) -> None: ...
5339
+
5340
+ @property
5341
+ def silero_threshold(self) -> float:
5342
+ """
5343
+ Silero speech-probability threshold in (0, 1].
5344
+ """
5345
+ @silero_threshold.setter
5346
+ def silero_threshold(self, arg0: typing.SupportsFloat) -> None: ...
5347
+
5348
+ @property
5349
+ def speech_pad_millis(self) -> int:
5350
+ """
5351
+ Audio retained around an utterance.
5352
+ """
5353
+ @speech_pad_millis.setter
5354
+ def speech_pad_millis(self, arg0: typing.SupportsInt) -> None: ...
5355
+
5356
+ @property
5357
+ def subscription_buffer_millis(self) -> int:
5358
+ """
5359
+ Duration of internally-created capture buffers.
5360
+ """
5361
+ @subscription_buffer_millis.setter
5362
+ def subscription_buffer_millis(self, arg0: typing.SupportsInt) -> None: ...
5363
+
5364
+ @property
5365
+ def translate(self) -> bool:
5366
+ """
5367
+ Translate speech to English.
5368
+ """
5369
+ @translate.setter
5370
+ def translate(self, arg0: bool) -> None: ...
5371
+
5372
+ @property
5373
+ def use_context(self) -> bool:
5374
+ """
5375
+ Carry decoder context between utterances.
5376
+ """
5377
+ @use_context.setter
5378
+ def use_context(self, arg0: bool) -> None: ...
5379
+
5380
+ @property
5381
+ def use_gpu(self) -> bool:
5382
+ """
5383
+ Use a compiled GPU backend when available.
5384
+ """
5385
+ @use_gpu.setter
5386
+ def use_gpu(self, arg0: bool) -> None: ...
5387
+
5388
+ @property
5389
+ def vad_model_path(self) -> str:
5390
+ """
5391
+ Path to a Silero VAD model; empty disables Silero VAD.
5392
+ """
5393
+ @vad_model_path.setter
5394
+ def vad_model_path(self, arg0: str) -> None: ...
5395
+
5396
+ @property
5397
+ def vad_noise_ratio(self) -> float:
5398
+ """
5399
+ Speech threshold relative to learned noise.
5400
+ """
5401
+ @vad_noise_ratio.setter
5402
+ def vad_noise_ratio(self, arg0: typing.SupportsFloat) -> None: ...
5403
+
5404
+ @property
5405
+ def vad_threshold(self) -> float:
5406
+ """
5407
+ Absolute RMS speech threshold.
5408
+ """
5409
+ @vad_threshold.setter
5410
+ def vad_threshold(self, arg0: typing.SupportsFloat) -> None: ...
5411
+
5412
+ @property
5413
+ def vad_window_millis(self) -> int:
5414
+ """
5415
+ RMS analysis window duration.
5416
+ """
5417
+ @vad_window_millis.setter
5418
+ def vad_window_millis(self, arg0: typing.SupportsInt) -> None: ...
5419
+
4825
5420
  class Status:
4826
5421
  __hash__: None = None # pyright: ignore[reportIncompatibleMethodOverride]
4827
5422
  @staticmethod
@@ -6713,6 +7308,11 @@ class _StringSchemaMapView:
6713
7308
  Return a view of the map's values.
6714
7309
  """
6715
7310
 
7311
+ def audio_device_info(index: typing.SupportsInt) -> AudioDeviceInfo:
7312
+ """
7313
+ Return metadata for the audio device at `index`.
7314
+ """
7315
+
6716
7316
  def create_in_process_wire_stream_pair(
6717
7317
  options: WireStreamOptions | None = None,
6718
7318
  first_options: WireStreamOptions | None = None,
@@ -6722,6 +7322,11 @@ def create_in_process_wire_stream_pair(
6722
7322
  Create a connected pair of in-process wire streams (free-function form of InProcessWireStream.create_pair).
6723
7323
  """
6724
7324
 
7325
+ def default_audio_input_device() -> AudioDeviceInfo:
7326
+ """
7327
+ Return metadata for the host's default input device.
7328
+ """
7329
+
6725
7330
  def default_redis_client() -> RedisClient:
6726
7331
  """
6727
7332
  Return the process-global client configured from A11_REDIS_*.
@@ -6742,6 +7347,11 @@ def is_status_chunk(chunk: Chunk) -> bool:
6742
7347
  Return True when the chunk carries an action status.
6743
7348
  """
6744
7349
 
7350
+ def list_audio_devices() -> list[AudioDeviceInfo]:
7351
+ """
7352
+ Return metadata for every audio device, in index order.
7353
+ """
7354
+
6745
7355
  def make_half_close_message(trailers: typing.Any = {}) -> WireMessage:
6746
7356
  """
6747
7357
  Build a half-close wire message carrying the given trailers.