ommlds 0.0.0.dev469__tar.gz → 0.0.0.dev471__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.

Potentially problematic release.


This version of ommlds might be problematic. Click here for more details.

Files changed (391) hide show
  1. {ommlds-0.0.0.dev469/ommlds.egg-info → ommlds-0.0.0.dev471}/PKG-INFO +3 -3
  2. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/.omlish-manifests.json +1 -1
  3. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/catalog.py +13 -8
  4. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/inject.py +15 -0
  5. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/catalogs/base.py +7 -1
  6. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/chat.py +5 -1
  7. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/stream.py +10 -4
  8. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/chat.py +9 -2
  9. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/search.py +6 -1
  10. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/stream.py +10 -4
  11. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/mistral.py +9 -2
  12. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/ollama/chat.py +1 -1
  13. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/chat.py +9 -2
  14. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/completion.py +9 -2
  15. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/embedding.py +9 -2
  16. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/stream.py +10 -4
  17. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/tools/git.py +4 -1
  18. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471/ommlds.egg-info}/PKG-INFO +3 -3
  19. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/SOURCES.txt +1 -1
  20. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/requires.txt +2 -2
  21. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/pyproject.toml +3 -3
  22. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/LICENSE +0 -0
  23. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/MANIFEST.in +0 -0
  24. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/README.md +0 -0
  25. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/__about__.py +0 -0
  26. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/__init__.py +0 -0
  27. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/__init__.py +0 -0
  28. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/funcs.py +0 -0
  29. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/names.py +0 -0
  30. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/params.py +0 -0
  31. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/patches.py +0 -0
  32. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/__init__.py +0 -0
  33. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/__init__.py +0 -0
  34. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/__init__.py +0 -0
  35. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/_marshal.py +0 -0
  36. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/__init__.py +0 -0
  37. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/_marshal.py +0 -0
  38. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/assemble.py +0 -0
  39. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/events.py +0 -0
  40. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/types.py +0 -0
  41. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/google/__init__.py +0 -0
  42. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/google/protocol/__init__.py +0 -0
  43. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/google/protocol/_marshal.py +0 -0
  44. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/google/protocol/types.py +0 -0
  45. {ommlds-0.0.0.dev469/ommlds → ommlds-0.0.0.dev471/ommlds/backends}/huggingface.py +0 -0
  46. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/llamacpp/__init__.py +0 -0
  47. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/llamacpp/buildwheel.py +0 -0
  48. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/llamacpp/logging.py +0 -0
  49. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/__init__.py +0 -0
  50. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/__main__.py +0 -0
  51. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/caching.py +0 -0
  52. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/cli.py +0 -0
  53. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/generation.py +0 -0
  54. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/limits.py +0 -0
  55. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/loading.py +0 -0
  56. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/LICENSE +0 -0
  57. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/__init__.py +0 -0
  58. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/__init__.py +0 -0
  59. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/base.py +0 -0
  60. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/bpe.py +0 -0
  61. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/naive.py +0 -0
  62. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/spm.py +0 -0
  63. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/loading.py +0 -0
  64. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/tokenization.py +0 -0
  65. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/types.py +0 -0
  66. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/ollama/__init__.py +0 -0
  67. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/ollama/protocol.py +0 -0
  68. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/__init__.py +0 -0
  69. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/__init__.py +0 -0
  70. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/_common.py +0 -0
  71. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/_marshal.py +0 -0
  72. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/__init__.py +0 -0
  73. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/chunk.py +0 -0
  74. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/contentpart.py +0 -0
  75. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/message.py +0 -0
  76. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/request.py +0 -0
  77. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/response.py +0 -0
  78. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/responseformat.py +0 -0
  79. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/tokenlogprob.py +0 -0
  80. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/completionusage.py +0 -0
  81. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/__init__.py +0 -0
  82. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/LICENSE +0 -0
  83. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/__init__.py +0 -0
  84. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/__init__.py +0 -0
  85. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/__main__.py +0 -0
  86. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/attention.py +0 -0
  87. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/cli.py +0 -0
  88. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/fetch.py +0 -0
  89. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/llm.py +0 -0
  90. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/loading.py +0 -0
  91. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/quantization.py +0 -0
  92. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/sampling.py +0 -0
  93. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/tokenization.py +0 -0
  94. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/transformer.py +0 -0
  95. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/__init__.py +0 -0
  96. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/__main__.py +0 -0
  97. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/cli.py +0 -0
  98. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/clip.py +0 -0
  99. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/sdxl.py +0 -0
  100. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/unet.py +0 -0
  101. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/tinygrad.py +0 -0
  102. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/torch/__init__.py +0 -0
  103. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/torch/backends.py +0 -0
  104. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/torch/devices.py +0 -0
  105. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/torch/purge.py +0 -0
  106. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/transformers/__init__.py +0 -0
  107. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/transformers/filecache.py +0 -0
  108. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/transformers/streamers.py +0 -0
  109. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/__init__.py +0 -0
  110. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/__main__.py +0 -0
  111. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/backends/__init__.py +0 -0
  112. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/backends/inject.py +0 -0
  113. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/backends/standard.py +0 -0
  114. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/inject.py +0 -0
  115. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/main.py +0 -0
  116. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/__init__.py +0 -0
  117. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/base.py +0 -0
  118. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/__init__.py +0 -0
  119. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/__init__.py +0 -0
  120. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/injection.py +0 -0
  121. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/types.py +0 -0
  122. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/__init__.py +0 -0
  123. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/__init__.py +0 -0
  124. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/inject.py +0 -0
  125. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/injection.py +0 -0
  126. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/rendering.py +0 -0
  127. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/services.py +0 -0
  128. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/tools.py +0 -0
  129. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/types.py +0 -0
  130. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/__init__.py +0 -0
  131. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/inject.py +0 -0
  132. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/inmemory.py +0 -0
  133. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/storage.py +0 -0
  134. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/types.py +0 -0
  135. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/__init__.py +0 -0
  136. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/inject.py +0 -0
  137. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/interactive.py +0 -0
  138. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/oneshot.py +0 -0
  139. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/types.py +0 -0
  140. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/configs.py +0 -0
  141. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/content/__init__.py +0 -0
  142. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/content/messages.py +0 -0
  143. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/content/strings.py +0 -0
  144. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/driver.py +0 -0
  145. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/inject.py +0 -0
  146. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/__init__.py +0 -0
  147. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/inject.py +0 -0
  148. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/injection.py +0 -0
  149. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/manager.py +0 -0
  150. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/types.py +0 -0
  151. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/__init__.py +0 -0
  152. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/inject.py +0 -0
  153. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/markdown.py +0 -0
  154. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/raw.py +0 -0
  155. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/types.py +0 -0
  156. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/session.py +0 -0
  157. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/__init__.py +0 -0
  158. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/confirmation.py +0 -0
  159. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/execution.py +0 -0
  160. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/inject.py +0 -0
  161. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/injection.py +0 -0
  162. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/rendering.py +0 -0
  163. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/weather.py +0 -0
  164. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/completion/__init__.py +0 -0
  165. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/completion/configs.py +0 -0
  166. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/completion/inject.py +0 -0
  167. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/completion/session.py +0 -0
  168. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/embedding/__init__.py +0 -0
  169. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/embedding/configs.py +0 -0
  170. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/embedding/inject.py +0 -0
  171. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/embedding/session.py +0 -0
  172. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/inject.py +0 -0
  173. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/state/__init__.py +0 -0
  174. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/state/inject.py +0 -0
  175. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/state/storage.py +0 -0
  176. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/datasets/__init__.py +0 -0
  177. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/datasets/lib/__init__.py +0 -0
  178. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/datasets/lib/movies.py +0 -0
  179. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/__init__.py +0 -0
  180. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/_marshal.py +0 -0
  181. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/_typedvalues.py +0 -0
  182. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/__init__.py +0 -0
  183. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/catalogs/__init__.py +0 -0
  184. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/catalogs/simple.py +0 -0
  185. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/catalogs/strings.py +0 -0
  186. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/__init__.py +0 -0
  187. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/__init__.py +0 -0
  188. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/names.py +0 -0
  189. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/protocol.py +0 -0
  190. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/duckduckgo/__init__.py +0 -0
  191. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/duckduckgo/search.py +0 -0
  192. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/__init__.py +0 -0
  193. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/names.py +0 -0
  194. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/tools.py +0 -0
  195. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/huggingface/__init__.py +0 -0
  196. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/huggingface/configs.py +0 -0
  197. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/huggingface/repos.py +0 -0
  198. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/__init__.py +0 -0
  199. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/chat.py +0 -0
  200. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/completion.py +0 -0
  201. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/format.py +0 -0
  202. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/stream.py +0 -0
  203. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/mlx/__init__.py +0 -0
  204. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/mlx/chat.py +0 -0
  205. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/ollama/__init__.py +0 -0
  206. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/__init__.py +0 -0
  207. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/format.py +0 -0
  208. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/names.py +0 -0
  209. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/sentencepiece/__init__.py +0 -0
  210. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/sentencepiece/tokens.py +0 -0
  211. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/sqlite.py +0 -0
  212. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/tinygrad/__init__.py +0 -0
  213. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/tinygrad/chat.py +0 -0
  214. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/tokenizers/__init__.py +0 -0
  215. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/tokenizers/tokens.py +0 -0
  216. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/transformers/__init__.py +0 -0
  217. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/transformers/sentence.py +0 -0
  218. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/transformers/tokens.py +0 -0
  219. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/transformers/transformers.py +0 -0
  220. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/strings/__init__.py +0 -0
  221. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/strings/manifests.py +0 -0
  222. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/strings/parsing.py +0 -0
  223. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/strings/resolving.py +0 -0
  224. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/__init__.py +0 -0
  225. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/_marshal.py +0 -0
  226. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/choices/__init__.py +0 -0
  227. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/choices/adapters.py +0 -0
  228. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/choices/services.py +0 -0
  229. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/choices/types.py +0 -0
  230. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/formats.py +0 -0
  231. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/history.py +0 -0
  232. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/messages.py +0 -0
  233. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/metadata.py +0 -0
  234. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/services.py +0 -0
  235. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/__init__.py +0 -0
  236. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/_marshal.py +0 -0
  237. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/adapters.py +0 -0
  238. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/joining.py +0 -0
  239. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/services.py +0 -0
  240. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/types.py +0 -0
  241. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/templating.py +0 -0
  242. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/__init__.py +0 -0
  243. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/execution.py +0 -0
  244. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/ids.py +0 -0
  245. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/parsing.py +0 -0
  246. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/types.py +0 -0
  247. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/transforms/__init__.py +0 -0
  248. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/transforms/base.py +0 -0
  249. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/transforms/metadata.py +0 -0
  250. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/transforms/services.py +0 -0
  251. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/types.py +0 -0
  252. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/completion.py +0 -0
  253. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/configs.py +0 -0
  254. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/__init__.py +0 -0
  255. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/_marshal.py +0 -0
  256. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/images.py +0 -0
  257. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/json.py +0 -0
  258. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/materialize.py +0 -0
  259. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/metadata.py +0 -0
  260. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/namespaces.py +0 -0
  261. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/placeholders.py +0 -0
  262. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/prepare.py +0 -0
  263. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/sequence.py +0 -0
  264. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/simple.py +0 -0
  265. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/text.py +0 -0
  266. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/__init__.py +0 -0
  267. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/base.py +0 -0
  268. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/interleave.py +0 -0
  269. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/squeeze.py +0 -0
  270. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/stringify.py +0 -0
  271. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/strings.py +0 -0
  272. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/types.py +0 -0
  273. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/docs/__init__.py +0 -0
  274. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/docs/docs.py +0 -0
  275. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/docs/dtypes.py +0 -0
  276. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/docs/filters.py +0 -0
  277. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/envs.py +0 -0
  278. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/json.py +0 -0
  279. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/__init__.py +0 -0
  280. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/bash.py +0 -0
  281. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/code/__init__.py +0 -0
  282. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/code/prompts.py +0 -0
  283. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/__init__.py +0 -0
  284. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/binfiles.py +0 -0
  285. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/context.py +0 -0
  286. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/errors.py +0 -0
  287. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/suggestions.py +0 -0
  288. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/__init__.py +0 -0
  289. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/edit.py +0 -0
  290. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/ls.py +0 -0
  291. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/read.py +0 -0
  292. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/recursivels/__init__.py +0 -0
  293. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/recursivels/execution.py +0 -0
  294. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/recursivels/rendering.py +0 -0
  295. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/recursivels/running.py +0 -0
  296. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/__init__.py +0 -0
  297. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/context.py +0 -0
  298. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/tools/__init__.py +0 -0
  299. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/tools/read.py +0 -0
  300. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/tools/write.py +0 -0
  301. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/types.py +0 -0
  302. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/llms/__init__.py +0 -0
  303. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/llms/_marshal.py +0 -0
  304. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/llms/tokens.py +0 -0
  305. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/llms/types.py +0 -0
  306. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/metadata.py +0 -0
  307. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/__init__.py +0 -0
  308. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/configs.py +0 -0
  309. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/names.py +0 -0
  310. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/repos/__init__.py +0 -0
  311. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/repos/resolving.py +0 -0
  312. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/registries/__init__.py +0 -0
  313. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/registries/globals.py +0 -0
  314. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/registries/manifests.py +0 -0
  315. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/registries/registry.py +0 -0
  316. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/resources.py +0 -0
  317. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/search.py +0 -0
  318. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/__init__.py +0 -0
  319. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/_marshal.py +0 -0
  320. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/_origclasses.py +0 -0
  321. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/_typedvalues.py +0 -0
  322. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/facades.py +0 -0
  323. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/requests.py +0 -0
  324. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/responses.py +0 -0
  325. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/services.py +0 -0
  326. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/standard.py +0 -0
  327. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/stream/__init__.py +0 -0
  328. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/stream/services.py +0 -0
  329. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/stream/wrap.py +0 -0
  330. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/__init__.py +0 -0
  331. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/applypatch.py +0 -0
  332. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/__init__.py +0 -0
  333. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/base.py +0 -0
  334. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/dumb.py +0 -0
  335. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/LICENSE +0 -0
  336. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/__init__.py +0 -0
  337. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/hermes2.py +0 -0
  338. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/llama31.py +0 -0
  339. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/types.py +0 -0
  340. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/utils.py +0 -0
  341. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/__init__.py +0 -0
  342. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/specials.py +0 -0
  343. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/tokenizers.py +0 -0
  344. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/types.py +0 -0
  345. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/vocabs.py +0 -0
  346. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/__init__.py +0 -0
  347. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/_marshal.py +0 -0
  348. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/__init__.py +0 -0
  349. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/catalog.py +0 -0
  350. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/context.py +0 -0
  351. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/errors.py +0 -0
  352. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/executors.py +0 -0
  353. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/reflect.py +0 -0
  354. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/fns.py +0 -0
  355. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/jsonschema.py +0 -0
  356. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/reflect.py +0 -0
  357. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/types.py +0 -0
  358. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/types.py +0 -0
  359. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/utils.py +0 -0
  360. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/__init__.py +0 -0
  361. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/_marshal.py +0 -0
  362. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/embeddings.py +0 -0
  363. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/index.py +0 -0
  364. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/search.py +0 -0
  365. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/similarity.py +0 -0
  366. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/stores.py +0 -0
  367. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/types.py +0 -0
  368. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/__init__.py +0 -0
  369. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/__main__.py +0 -0
  370. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/cli.py +0 -0
  371. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/client.py +0 -0
  372. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/server.py +0 -0
  373. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/service.py +0 -0
  374. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/tools/__init__.py +0 -0
  375. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/tools/ocr.py +0 -0
  376. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/__init__.py +0 -0
  377. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/analyze.py +0 -0
  378. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/convert.py +0 -0
  379. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/models.py +0 -0
  380. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/text/__init__.py +0 -0
  381. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/text/mfh.py +0 -0
  382. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/text/wtp.py +0 -0
  383. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/utils/__init__.py +0 -0
  384. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/utils/io.py +0 -0
  385. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/utils/progress.py +0 -0
  386. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/utils/xml.py +0 -0
  387. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/xml.py +0 -0
  388. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/dependency_links.txt +0 -0
  389. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/entry_points.txt +0 -0
  390. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/top_level.txt +0 -0
  391. {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommlds
3
- Version: 0.0.0.dev469
3
+ Version: 0.0.0.dev471
4
4
  Summary: ommlds
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,8 +14,8 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omdev==0.0.0.dev469
18
- Requires-Dist: omlish==0.0.0.dev469
17
+ Requires-Dist: omdev==0.0.0.dev471
18
+ Requires-Dist: omlish==0.0.0.dev471
19
19
  Provides-Extra: all
20
20
  Requires-Dist: llama-cpp-python~=0.3; extra == "all"
21
21
  Requires-Dist: mlx~=0.29; extra == "all"
@@ -714,7 +714,7 @@
714
714
  "module": ".tools.git",
715
715
  "attr": null,
716
716
  "file": "ommlds/tools/git.py",
717
- "line": 186,
717
+ "line": 189,
718
718
  "value": {
719
719
  "!omdev.tools.git.messages.GitMessageGeneratorManifest": {
720
720
  "module": "ommlds.tools.git",
@@ -15,33 +15,38 @@ from .types import ServiceT
15
15
  ##
16
16
 
17
17
 
18
- class _CatalogBackendProvider(BackendProvider[ServiceT], lang.Abstract):
18
+ class CatalogBackendProvider(BackendProvider[ServiceT], lang.Abstract):
19
+ class Instantiator(lang.Func2['mc.BackendCatalog.Backend', BackendConfigs | None, ta.Awaitable[ta.Any]]):
20
+ pass
21
+
19
22
  def __init__(
20
23
  self,
21
24
  *,
22
25
  name: BackendName,
23
26
  catalog: 'mc.BackendCatalog',
24
27
  configs: BackendConfigs | None = None,
28
+ instantiator: Instantiator | None = None,
25
29
  ) -> None:
26
30
  super().__init__()
27
31
 
28
32
  self._name = name
29
33
  self._catalog = catalog
30
34
  self._configs = configs
35
+ if instantiator is None:
36
+ instantiator = CatalogBackendProvider.Instantiator(lang.as_async(lambda be, cfgs: be.factory(*cfgs or [])))
37
+ self._instantiator = instantiator
31
38
 
32
39
  @contextlib.asynccontextmanager
33
40
  async def _provide_backend(self, cls: type[ServiceT]) -> ta.AsyncIterator[ServiceT]:
41
+ be = self._catalog.get_backend(cls, self._name)
42
+
34
43
  service: ServiceT
35
- async with lang.async_or_sync_maybe_managing(self._catalog.new_backend(
36
- cls,
37
- self._name,
38
- *(self._configs or []),
39
- )) as service:
44
+ async with lang.async_or_sync_maybe_managing(await self._instantiator(be, self._configs)) as service:
40
45
  yield service
41
46
 
42
47
 
43
48
  class CatalogChatChoicesServiceBackendProvider(
44
- _CatalogBackendProvider['mc.ChatChoicesService'],
49
+ CatalogBackendProvider['mc.ChatChoicesService'],
45
50
  ChatChoicesServiceBackendProvider,
46
51
  ):
47
52
  def provide_backend(self) -> ta.AsyncContextManager['mc.ChatChoicesService']:
@@ -49,7 +54,7 @@ class CatalogChatChoicesServiceBackendProvider(
49
54
 
50
55
 
51
56
  class CatalogChatChoicesStreamServiceBackendProvider(
52
- _CatalogBackendProvider['mc.ChatChoicesStreamService'],
57
+ CatalogBackendProvider['mc.ChatChoicesStreamService'],
53
58
  ChatChoicesStreamServiceBackendProvider,
54
59
  ):
55
60
  def provide_backend(self) -> ta.AsyncContextManager['mc.ChatChoicesStreamService']:
@@ -1,6 +1,9 @@
1
+ import typing as ta
2
+
1
3
  from omlish import inject as inj
2
4
  from omlish import lang
3
5
 
6
+ from ..... import minichain as mc
4
7
  from .injection import backend_configs
5
8
 
6
9
 
@@ -34,4 +37,16 @@ def bind_backends(
34
37
 
35
38
  #
36
39
 
40
+ async def catalog_backend_instantiator_provider(injector: inj.AsyncInjector) -> _catalog.CatalogBackendProvider.Instantiator: # noqa
41
+ async def inner(be: 'mc.BackendCatalog.Backend', cfgs: _types.BackendConfigs | None) -> ta.Any:
42
+ kwt = inj.build_kwargs_target(be.factory, non_strict=True)
43
+ kw = await injector.provide_kwargs(kwt)
44
+ return be.factory(*cfgs or [], **kw)
45
+
46
+ return _catalog.CatalogBackendProvider.Instantiator(inner)
47
+
48
+ els.append(inj.bind(_catalog.CatalogBackendProvider.Instantiator, to_async_fn=catalog_backend_instantiator_provider)) # noqa
49
+
50
+ #
51
+
37
52
  return inj.as_elements(*els)
@@ -21,7 +21,13 @@ class BackendCatalog(lang.Abstract):
21
21
  def get_backend(self, service_cls: type[T], name: str) -> Backend:
22
22
  raise NotImplementedError
23
23
 
24
- def new_backend(self, service_cls: ta.Any, name: str, *args: ta.Any, **kwargs: ta.Any) -> ta.Any:
24
+ def new_backend(
25
+ self,
26
+ service_cls: ta.Any,
27
+ name: str,
28
+ *args: ta.Any,
29
+ **kwargs: ta.Any,
30
+ ) -> ta.Any:
25
31
  be = self.get_backend(service_cls, name)
26
32
  return be.factory(*be.configs or [], *args, **kwargs)
27
33
 
@@ -46,9 +46,12 @@ class AnthropicChatChoicesService:
46
46
  def __init__(
47
47
  self,
48
48
  *configs: ApiKey | ModelName,
49
+ http_client: http.AsyncHttpClient | None = None,
49
50
  ) -> None:
50
51
  super().__init__()
51
52
 
53
+ self._http_client = http_client
54
+
52
55
  with tv.consume(*configs) as cc:
53
56
  self._api_key = check.not_none(ApiKey.pop_secret(cc, env='ANTHROPIC_API_KEY'))
54
57
  self._model_name = cc.pop(self.DEFAULT_MODEL_NAME)
@@ -88,7 +91,7 @@ class AnthropicChatChoicesService:
88
91
 
89
92
  raw_request = msh.marshal(a_req)
90
93
 
91
- raw_response = http.request(
94
+ raw_response = await http.async_request(
92
95
  'https://api.anthropic.com/v1/messages',
93
96
  headers={
94
97
  http.consts.HEADER_CONTENT_TYPE: http.consts.CONTENT_TYPE_JSON,
@@ -96,6 +99,7 @@ class AnthropicChatChoicesService:
96
99
  b'anthropic-version': b'2023-06-01',
97
100
  },
98
101
  data=json.dumps(raw_request).encode('utf-8'),
102
+ client=self._http_client,
99
103
  )
100
104
 
101
105
  response = json.loads(check.not_none(raw_response.data).decode('utf-8'))
@@ -39,9 +39,15 @@ from .protocol import build_protocol_tool
39
39
  # )
40
40
  @static_check_is_chat_choices_stream_service
41
41
  class AnthropicChatChoicesStreamService:
42
- def __init__(self, *configs: Config) -> None:
42
+ def __init__(
43
+ self,
44
+ *configs: Config,
45
+ http_client: http.AsyncHttpClient | None = None,
46
+ ) -> None:
43
47
  super().__init__()
44
48
 
49
+ self._http_client = http_client
50
+
45
51
  with tv.consume(*configs) as cc:
46
52
  self._model_name = cc.pop(AnthropicChatChoicesService.DEFAULT_MODEL_NAME)
47
53
  self._api_key = check.not_none(ApiKey.pop_secret(cc, env='ANTHROPIC_API_KEY'))
@@ -84,8 +90,8 @@ class AnthropicChatChoicesStreamService:
84
90
  )
85
91
 
86
92
  async with UseResources.or_new(request.options) as rs:
87
- http_client = rs.enter_context(http.client())
88
- http_response = rs.enter_context(http_client.stream_request(http_request))
93
+ http_client = await rs.enter_async_context(http.manage_async_client(self._http_client))
94
+ http_response = await rs.enter_async_context(await http_client.stream_request(http_request))
89
95
 
90
96
  async def inner(sink: StreamResponseSink[AiChoicesDeltas]) -> ta.Sequence[ChatChoicesOutputs] | None:
91
97
  msg_start: AnthropicSseDecoderEvents.MessageStart | None = None
@@ -95,7 +101,7 @@ class AnthropicChatChoicesStreamService:
95
101
  db = DelimitingBuffer([b'\r', b'\n', b'\r\n'])
96
102
  sd = sse.SseDecoder()
97
103
  while True:
98
- b = http_response.stream.read1(self.READ_CHUNK_SIZE)
104
+ b = await http_response.stream.read1(self.READ_CHUNK_SIZE)
99
105
  for l in db.feed(b):
100
106
  if isinstance(l, DelimitingBuffer.Incomplete):
101
107
  # FIXME: handle
@@ -40,9 +40,15 @@ from .tools import build_tool_spec_schema
40
40
  class GoogleChatChoicesService:
41
41
  DEFAULT_MODEL_NAME: ta.ClassVar[ModelName] = ModelName(check.not_none(MODEL_NAMES.default))
42
42
 
43
- def __init__(self, *configs: ApiKey | ModelName) -> None:
43
+ def __init__(
44
+ self,
45
+ *configs: ApiKey | ModelName,
46
+ http_client: http.AsyncHttpClient | None = None,
47
+ ) -> None:
44
48
  super().__init__()
45
49
 
50
+ self._http_client = http_client
51
+
46
52
  with tv.consume(*configs) as cc:
47
53
  self._model_name = cc.pop(self.DEFAULT_MODEL_NAME)
48
54
  self._api_key = ApiKey.pop_secret(cc, env='GEMINI_API_KEY')
@@ -149,11 +155,12 @@ class GoogleChatChoicesService:
149
155
 
150
156
  model_name = MODEL_NAMES.resolve(self._model_name.v)
151
157
 
152
- resp = http.request(
158
+ resp = await http.async_request(
153
159
  f'{self.BASE_URL.rstrip("/")}/{model_name}:generateContent?key={key}',
154
160
  headers={'Content-Type': 'application/json'},
155
161
  data=json.dumps_compact(req_dct).encode('utf-8'),
156
162
  method='POST',
163
+ client=self._http_client,
157
164
  )
158
165
 
159
166
  resp_dct = json.loads(check.not_none(resp.data).decode('utf-8'))
@@ -82,12 +82,16 @@ class CseSearchService:
82
82
  self,
83
83
  cse_id: str | None = None,
84
84
  cse_api_key: str | None = None,
85
+ *,
86
+ http_client: http.AsyncHttpClient | None = None,
85
87
  ) -> None:
86
88
  super().__init__()
87
89
 
88
90
  self._cse_id = cse_id
89
91
  self._cse_api_key = cse_api_key
90
92
 
93
+ self._http_client = http_client
94
+
91
95
  async def invoke(
92
96
  self,
93
97
  request: SearchRequest,
@@ -97,8 +101,9 @@ class CseSearchService:
97
101
  cx=check.non_empty_str(self._cse_id),
98
102
  q=request.v,
99
103
  ))
100
- resp = http.request(
104
+ resp = await http.async_request(
101
105
  f'https://www.googleapis.com/customsearch/v1?{qs}',
106
+ client=self._http_client,
102
107
  )
103
108
  out = check.not_none(resp.data)
104
109
 
@@ -46,9 +46,15 @@ from .tools import build_tool_spec_schema
46
46
  class GoogleChatChoicesStreamService:
47
47
  DEFAULT_MODEL_NAME: ta.ClassVar[ModelName] = ModelName(check.not_none(MODEL_NAMES.default))
48
48
 
49
- def __init__(self, *configs: ApiKey | ModelName) -> None:
49
+ def __init__(
50
+ self,
51
+ *configs: ApiKey | ModelName,
52
+ http_client: http.AsyncHttpClient | None = None,
53
+ ) -> None:
50
54
  super().__init__()
51
55
 
56
+ self._http_client = http_client
57
+
52
58
  with tv.consume(*configs) as cc:
53
59
  self._model_name = cc.pop(self.DEFAULT_MODEL_NAME)
54
60
  self._api_key = ApiKey.pop_secret(cc, env='GEMINI_API_KEY')
@@ -163,13 +169,13 @@ class GoogleChatChoicesStreamService:
163
169
  )
164
170
 
165
171
  async with UseResources.or_new(request.options) as rs:
166
- http_client = rs.enter_context(http.client())
167
- http_response = rs.enter_context(http_client.stream_request(http_request))
172
+ http_client = await rs.enter_async_context(http.manage_async_client(self._http_client))
173
+ http_response = await rs.enter_async_context(await http_client.stream_request(http_request))
168
174
 
169
175
  async def inner(sink: StreamResponseSink[AiChoicesDeltas]) -> ta.Sequence[ChatChoicesOutputs] | None:
170
176
  db = DelimitingBuffer([b'\r', b'\n', b'\r\n'])
171
177
  while True:
172
- b = http_response.stream.read1(self.READ_CHUNK_SIZE)
178
+ b = await http_response.stream.read1(self.READ_CHUNK_SIZE)
173
179
  for bl in db.feed(b):
174
180
  if isinstance(bl, DelimitingBuffer.Incomplete):
175
181
  # FIXME: handle
@@ -40,10 +40,16 @@ class MistralChatChoicesService:
40
40
  AiMessage: 'assistant',
41
41
  }
42
42
 
43
- def __init__(self, *, api_key: str | None = None) -> None:
43
+ def __init__(
44
+ self,
45
+ *,
46
+ api_key: str | None = None,
47
+ http_client: http.AsyncHttpClient | None = None,
48
+ ) -> None:
44
49
  super().__init__()
45
50
 
46
51
  self._api_key = api_key
52
+ self._http_client = http_client
47
53
 
48
54
  def _get_msg_content(self, m: Message) -> str | None:
49
55
  if isinstance(m, AiMessage):
@@ -73,7 +79,7 @@ class MistralChatChoicesService:
73
79
  ],
74
80
  }
75
81
 
76
- resp = http.request(
82
+ resp = await http.async_request(
77
83
  'https://api.mistral.ai/v1/chat/completions',
78
84
  method='POST',
79
85
  data=json.dumps_compact(req_dct).encode('utf-8'),
@@ -82,6 +88,7 @@ class MistralChatChoicesService:
82
88
  'Accept': 'application/json',
83
89
  'Authorization': f'Bearer {key}',
84
90
  },
91
+ client=self._http_client,
85
92
  )
86
93
 
87
94
  if resp.status == 429:
@@ -66,7 +66,7 @@ class BaseOllamaChatChoicesService(lang.Abstract):
66
66
 
67
67
  #
68
68
 
69
- ROLE_MAP: ta.ClassVar[ta.Mapping[type[Message], pt.Role]] = {
69
+ ROLE_MAP: ta.ClassVar[ta.Mapping[type[Message], pt.Role]] = { # noqa
70
70
  SystemMessage: 'system',
71
71
  UserMessage: 'user',
72
72
  AiMessage: 'assistant',
@@ -42,9 +42,15 @@ from .names import MODEL_NAMES
42
42
  class OpenaiChatChoicesService:
43
43
  DEFAULT_MODEL_NAME: ta.ClassVar[ModelName] = ModelName(check.not_none(MODEL_NAMES.default))
44
44
 
45
- def __init__(self, *configs: ApiKey | ModelName | DefaultOptions) -> None:
45
+ def __init__(
46
+ self,
47
+ *configs: ApiKey | ModelName | DefaultOptions,
48
+ http_client: http.AsyncHttpClient | None = None,
49
+ ) -> None:
46
50
  super().__init__()
47
51
 
52
+ self._http_client = http_client
53
+
48
54
  with tv.consume(*configs) as cc:
49
55
  self._model_name = cc.pop(self.DEFAULT_MODEL_NAME)
50
56
  self._api_key = ApiKey.pop_secret(cc, env='OPENAI_API_KEY')
@@ -68,13 +74,14 @@ class OpenaiChatChoicesService:
68
74
 
69
75
  raw_request = msh.marshal(rh.oai_request())
70
76
 
71
- http_response = http.request(
77
+ http_response = await http.async_request(
72
78
  'https://api.openai.com/v1/chat/completions',
73
79
  headers={
74
80
  http.consts.HEADER_CONTENT_TYPE: http.consts.CONTENT_TYPE_JSON,
75
81
  http.consts.HEADER_AUTH: http.consts.format_bearer_auth_header(check.not_none(self._api_key).reveal()),
76
82
  },
77
83
  data=json.dumps(raw_request).encode('utf-8'),
84
+ client=self._http_client,
78
85
  )
79
86
 
80
87
  raw_response = json.loads(check.not_none(http_response.data).decode('utf-8'))
@@ -23,9 +23,15 @@ from ....standard import ApiKey
23
23
  class OpenaiCompletionService:
24
24
  DEFAULT_MODEL_NAME: ta.ClassVar[str] = 'gpt-3.5-turbo-instruct'
25
25
 
26
- def __init__(self, *configs: Config) -> None:
26
+ def __init__(
27
+ self,
28
+ *configs: Config,
29
+ http_client: http.AsyncHttpClient | None = None,
30
+ ) -> None:
27
31
  super().__init__()
28
32
 
33
+ self._http_client = http_client
34
+
29
35
  with tv.consume(*configs) as cc:
30
36
  self._api_key = ApiKey.pop_secret(cc, env='OPENAI_API_KEY')
31
37
 
@@ -41,13 +47,14 @@ class OpenaiCompletionService:
41
47
  stream=False,
42
48
  )
43
49
 
44
- raw_response = http.request(
50
+ raw_response = await http.async_request(
45
51
  'https://api.openai.com/v1/completions',
46
52
  headers={
47
53
  http.consts.HEADER_CONTENT_TYPE: http.consts.CONTENT_TYPE_JSON,
48
54
  http.consts.HEADER_AUTH: http.consts.format_bearer_auth_header(check.not_none(self._api_key).reveal()),
49
55
  },
50
56
  data=json.dumps(raw_request).encode('utf-8'),
57
+ client=self._http_client,
51
58
  )
52
59
 
53
60
  response = json.loads(check.not_none(raw_response.data).decode('utf-8'))
@@ -22,9 +22,15 @@ from ....vectors.types import Vector
22
22
  class OpenaiEmbeddingService:
23
23
  model = 'text-embedding-3-small'
24
24
 
25
- def __init__(self, *configs: Config) -> None:
25
+ def __init__(
26
+ self,
27
+ *configs: Config,
28
+ http_client: http.AsyncHttpClient | None = None,
29
+ ) -> None:
26
30
  super().__init__()
27
31
 
32
+ self._http_client = http_client
33
+
28
34
  with tv.consume(*configs) as cc:
29
35
  self._api_key = ApiKey.pop_secret(cc, env='OPENAI_API_KEY')
30
36
 
@@ -34,13 +40,14 @@ class OpenaiEmbeddingService:
34
40
  input=check.isinstance(request.v, str),
35
41
  )
36
42
 
37
- raw_response = http.request(
43
+ raw_response = await http.async_request(
38
44
  'https://api.openai.com/v1/embeddings',
39
45
  headers={
40
46
  http.consts.HEADER_CONTENT_TYPE: http.consts.CONTENT_TYPE_JSON,
41
47
  http.consts.HEADER_AUTH: http.consts.format_bearer_auth_header(check.not_none(self._api_key).reveal()),
42
48
  },
43
49
  data=json.dumps(raw_request).encode('utf-8'),
50
+ client=self._http_client,
44
51
  )
45
52
 
46
53
  response = json.loads(check.not_none(raw_response.data).decode('utf-8'))
@@ -41,9 +41,15 @@ from .names import MODEL_NAMES
41
41
  # )
42
42
  @static_check_is_chat_choices_stream_service
43
43
  class OpenaiChatChoicesStreamService:
44
- def __init__(self, *configs: Config) -> None:
44
+ def __init__(
45
+ self,
46
+ *configs: Config,
47
+ http_client: http.AsyncHttpClient | None = None,
48
+ ) -> None:
45
49
  super().__init__()
46
50
 
51
+ self._http_client = http_client
52
+
47
53
  with tv.consume(*configs) as cc:
48
54
  self._model_name = cc.pop(OpenaiChatChoicesService.DEFAULT_MODEL_NAME)
49
55
  self._api_key = ApiKey.pop_secret(cc, env='OPENAI_API_KEY')
@@ -81,14 +87,14 @@ class OpenaiChatChoicesStreamService:
81
87
  )
82
88
 
83
89
  async with UseResources.or_new(request.options) as rs:
84
- http_client = rs.enter_context(http.client())
85
- http_response = rs.enter_context(http_client.stream_request(http_request))
90
+ http_client = await rs.enter_async_context(http.manage_async_client(self._http_client))
91
+ http_response = await rs.enter_async_context(await http_client.stream_request(http_request))
86
92
 
87
93
  async def inner(sink: StreamResponseSink[AiChoicesDeltas]) -> ta.Sequence[ChatChoicesOutputs]:
88
94
  db = DelimitingBuffer([b'\r', b'\n', b'\r\n'])
89
95
  sd = sse.SseDecoder()
90
96
  while True:
91
- b = http_response.stream.read1(self.READ_CHUNK_SIZE)
97
+ b = await http_response.stream.read1(self.READ_CHUNK_SIZE)
92
98
  for l in db.feed(b):
93
99
  if isinstance(l, DelimitingBuffer.Incomplete):
94
100
  # FIXME: handle
@@ -16,6 +16,7 @@ from omdev.tools.git.messages import GitMessageGenerator
16
16
  from omlish import check
17
17
  from omlish import lang
18
18
  from omlish.configs.classes import Configurable
19
+ from omlish.http import all as http
19
20
  from omlish.subprocesses.sync import subprocesses
20
21
 
21
22
  from .. import minichain as mc
@@ -76,7 +77,9 @@ class OpenaiGitAiBackend(GitAiBackend['OpenaiGitAiBackend.Config']):
76
77
  if (sec := load_secrets().try_get(key.lower())) is not None:
77
78
  os.environ[key] = sec.reveal()
78
79
 
79
- llm = OpenaiChatChoicesService()
80
+ llm = OpenaiChatChoicesService(
81
+ http_client=http.SyncAsyncHttpClient(http.client()),
82
+ )
80
83
 
81
84
  resp = lang.sync_await(llm.invoke(mc.ChatChoicesRequest(
82
85
  [mc.UserMessage(prompt)],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommlds
3
- Version: 0.0.0.dev469
3
+ Version: 0.0.0.dev471
4
4
  Summary: ommlds
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,8 +14,8 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omdev==0.0.0.dev469
18
- Requires-Dist: omlish==0.0.0.dev469
17
+ Requires-Dist: omdev==0.0.0.dev471
18
+ Requires-Dist: omlish==0.0.0.dev471
19
19
  Provides-Extra: all
20
20
  Requires-Dist: llama-cpp-python~=0.3; extra == "all"
21
21
  Requires-Dist: mlx~=0.29; extra == "all"
@@ -5,7 +5,6 @@ pyproject.toml
5
5
  ommlds/.omlish-manifests.json
6
6
  ommlds/__about__.py
7
7
  ommlds/__init__.py
8
- ommlds/huggingface.py
9
8
  ommlds.egg-info/PKG-INFO
10
9
  ommlds.egg-info/SOURCES.txt
11
10
  ommlds.egg-info/dependency_links.txt
@@ -18,6 +17,7 @@ ommlds/_hacks/names.py
18
17
  ommlds/_hacks/params.py
19
18
  ommlds/_hacks/patches.py
20
19
  ommlds/backends/__init__.py
20
+ ommlds/backends/huggingface.py
21
21
  ommlds/backends/anthropic/__init__.py
22
22
  ommlds/backends/anthropic/protocol/__init__.py
23
23
  ommlds/backends/anthropic/protocol/_marshal.py
@@ -1,5 +1,5 @@
1
- omdev==0.0.0.dev469
2
- omlish==0.0.0.dev469
1
+ omdev==0.0.0.dev471
2
+ omlish==0.0.0.dev471
3
3
 
4
4
  [all]
5
5
  llama-cpp-python~=0.3
@@ -13,7 +13,7 @@ urls = {source = 'https://github.com/wrmsr/omlish'}
13
13
  license = 'BSD-3-Clause'
14
14
  readme = 'README.md'
15
15
  requires-python = '>=3.13'
16
- version = '0.0.0.dev469'
16
+ version = '0.0.0.dev471'
17
17
  classifiers = [
18
18
  'Development Status :: 2 - Pre-Alpha',
19
19
  'Intended Audience :: Developers',
@@ -24,8 +24,8 @@ classifiers = [
24
24
  ]
25
25
  description = 'ommlds'
26
26
  dependencies = [
27
- 'omdev == 0.0.0.dev469',
28
- 'omlish == 0.0.0.dev469',
27
+ 'omdev == 0.0.0.dev471',
28
+ 'omlish == 0.0.0.dev471',
29
29
  ]
30
30
 
31
31
  [project.optional-dependencies]
File without changes
File without changes
File without changes