ommlds 0.0.0.dev461__tar.gz → 0.0.0.dev463__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 (372) hide show
  1. {ommlds-0.0.0.dev461/ommlds.egg-info → ommlds-0.0.0.dev463}/PKG-INFO +7 -7
  2. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/.omlish-manifests.json +4 -5
  3. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/__about__.py +2 -2
  4. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/loading.py +58 -1
  5. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/main.py +18 -2
  6. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/chat/state.py +3 -3
  7. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/_inject.py +105 -0
  8. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/backends/catalog.py +56 -0
  9. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/backends/types.py +36 -0
  10. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/ai/rendering.py +67 -0
  11. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/ai/services.py +70 -0
  12. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/ai/types.py +28 -0
  13. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/state/inmemory.py +34 -0
  14. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/state/storage.py +53 -0
  15. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/state/types.py +38 -0
  16. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/user/interactive.py +29 -0
  17. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/user/oneshot.py +25 -0
  18. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/user/types.py +15 -0
  19. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/configs.py +33 -0
  20. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/content/messages.py +30 -0
  21. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/content/strings.py +42 -0
  22. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/driver.py +43 -0
  23. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/inject.py +143 -0
  24. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/phases.py +55 -0
  25. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/rendering/markdown.py +52 -0
  26. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/rendering/raw.py +73 -0
  27. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/rendering/types.py +21 -0
  28. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/session.py +27 -0
  29. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/tools/confirmation.py +46 -0
  30. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/tools/execution.py +53 -0
  31. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/inject.py +6 -1
  32. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/state.py +40 -23
  33. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/anthropic/names.py +3 -4
  34. ommlds-0.0.0.dev463/ommlds/minichain/text/toolparsing/__init__.py +0 -0
  35. ommlds-0.0.0.dev463/ommlds/minichain/tools/__init__.py +0 -0
  36. ommlds-0.0.0.dev463/ommlds/minichain/tools/execution/__init__.py +0 -0
  37. ommlds-0.0.0.dev463/ommlds/minichain/vectors/__init__.py +0 -0
  38. ommlds-0.0.0.dev463/ommlds/server/__init__.py +0 -0
  39. ommlds-0.0.0.dev463/ommlds/tools/__init__.py +0 -0
  40. ommlds-0.0.0.dev463/ommlds/wiki/__init__.py +0 -0
  41. ommlds-0.0.0.dev463/ommlds/wiki/text/__init__.py +0 -0
  42. ommlds-0.0.0.dev463/ommlds/wiki/utils/__init__.py +0 -0
  43. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463/ommlds.egg-info}/PKG-INFO +7 -7
  44. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds.egg-info/SOURCES.txt +33 -0
  45. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds.egg-info/requires.txt +6 -6
  46. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/pyproject.toml +7 -7
  47. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/LICENSE +0 -0
  48. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/MANIFEST.in +0 -0
  49. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/README.md +0 -0
  50. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/__init__.py +0 -0
  51. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/_hacks/__init__.py +0 -0
  52. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/_hacks/patches.py +0 -0
  53. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/__init__.py +0 -0
  54. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/anthropic/__init__.py +0 -0
  55. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/anthropic/protocol/__init__.py +0 -0
  56. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/anthropic/protocol/_marshal.py +0 -0
  57. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/anthropic/protocol/sse/__init__.py +0 -0
  58. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/anthropic/protocol/sse/_marshal.py +0 -0
  59. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/anthropic/protocol/sse/assemble.py +0 -0
  60. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/anthropic/protocol/sse/events.py +0 -0
  61. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/anthropic/protocol/types.py +0 -0
  62. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/google/__init__.py +0 -0
  63. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/google/protocol/__init__.py +0 -0
  64. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/google/protocol/_marshal.py +0 -0
  65. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/google/protocol/types.py +0 -0
  66. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/llamacpp/__init__.py +0 -0
  67. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/llamacpp/buildwheel.py +0 -0
  68. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/llamacpp/logging.py +0 -0
  69. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/__init__.py +0 -0
  70. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/__main__.py +0 -0
  71. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/caching.py +0 -0
  72. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/cli.py +0 -0
  73. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/generation.py +0 -0
  74. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/limits.py +0 -0
  75. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/LICENSE +0 -0
  76. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/__init__.py +0 -0
  77. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/detokenization/__init__.py +0 -0
  78. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/detokenization/base.py +0 -0
  79. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/detokenization/bpe.py +0 -0
  80. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/detokenization/naive.py +0 -0
  81. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/detokenization/spm.py +0 -0
  82. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/loading.py +0 -0
  83. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/tokenization.py +0 -0
  84. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/mlx/tokenization/types.py +0 -0
  85. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/__init__.py +0 -0
  86. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/__init__.py +0 -0
  87. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/_common.py +0 -0
  88. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/_marshal.py +0 -0
  89. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/chatcompletion/__init__.py +0 -0
  90. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/chatcompletion/chunk.py +0 -0
  91. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/chatcompletion/contentpart.py +0 -0
  92. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/chatcompletion/message.py +0 -0
  93. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/chatcompletion/request.py +0 -0
  94. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/chatcompletion/response.py +0 -0
  95. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/chatcompletion/responseformat.py +0 -0
  96. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/chatcompletion/tokenlogprob.py +0 -0
  97. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/openai/protocol/completionusage.py +0 -0
  98. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/__init__.py +0 -0
  99. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/LICENSE +0 -0
  100. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/__init__.py +0 -0
  101. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/__init__.py +0 -0
  102. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/__main__.py +0 -0
  103. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/attention.py +0 -0
  104. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/cli.py +0 -0
  105. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/fetch.py +0 -0
  106. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/llm.py +0 -0
  107. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/loading.py +0 -0
  108. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/quantization.py +0 -0
  109. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/sampling.py +0 -0
  110. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/tokenization.py +0 -0
  111. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/llama3/transformer.py +0 -0
  112. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/sdxl/__init__.py +0 -0
  113. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/sdxl/__main__.py +0 -0
  114. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/sdxl/cli.py +0 -0
  115. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/sdxl/clip.py +0 -0
  116. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/sdxl/sdxl.py +0 -0
  117. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/models/sdxl/unet.py +0 -0
  118. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/tinygrad/tinygrad.py +0 -0
  119. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/torch/__init__.py +0 -0
  120. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/torch/backends.py +0 -0
  121. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/torch/devices.py +0 -0
  122. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/backends/torch/purge.py +0 -0
  123. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/__init__.py +0 -0
  124. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/__main__.py +0 -0
  125. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/backends/__init__.py +0 -0
  126. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/backends/inject.py +0 -0
  127. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/backends/standard.py +0 -0
  128. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/inject.py +0 -0
  129. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/__init__.py +0 -0
  130. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/base.py +0 -0
  131. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/chat/__init__.py +0 -0
  132. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/chat/base.py +0 -0
  133. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/chat/code.py +0 -0
  134. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/chat/inject.py +0 -0
  135. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/chat/interactive.py +0 -0
  136. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/chat/printing.py +0 -0
  137. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/chat/prompt.py +0 -0
  138. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/chat/tools.py +0 -0
  139. {ommlds-0.0.0.dev461/ommlds/cli/sessions/completion → ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2}/__init__.py +0 -0
  140. {ommlds-0.0.0.dev461/ommlds/cli/sessions/embedding → ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/backends}/__init__.py +0 -0
  141. {ommlds-0.0.0.dev461/ommlds/cli/tools → ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat}/__init__.py +0 -0
  142. {ommlds-0.0.0.dev461/ommlds/datasets → ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/ai}/__init__.py +0 -0
  143. {ommlds-0.0.0.dev461/ommlds/datasets/lib → ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/state}/__init__.py +0 -0
  144. {ommlds-0.0.0.dev461/ommlds/minichain/backends → ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/user}/__init__.py +0 -0
  145. {ommlds-0.0.0.dev461/ommlds/minichain/backends/catalogs → ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/content}/__init__.py +0 -0
  146. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls → ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/rendering}/__init__.py +0 -0
  147. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/anthropic → ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/tools}/__init__.py +0 -0
  148. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/duckduckgo → ommlds-0.0.0.dev463/ommlds/cli/sessions/completion}/__init__.py +0 -0
  149. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/completion/completion.py +0 -0
  150. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/google → ommlds-0.0.0.dev463/ommlds/cli/sessions/embedding}/__init__.py +0 -0
  151. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/sessions/embedding/embedding.py +0 -0
  152. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/huggingface → ommlds-0.0.0.dev463/ommlds/cli/tools}/__init__.py +0 -0
  153. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/tools/config.py +0 -0
  154. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/tools/inject.py +0 -0
  155. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/cli/tools/weather.py +0 -0
  156. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/llamacpp → ommlds-0.0.0.dev463/ommlds/datasets}/__init__.py +0 -0
  157. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/mlx → ommlds-0.0.0.dev463/ommlds/datasets/lib}/__init__.py +0 -0
  158. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/datasets/lib/movies.py +0 -0
  159. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/huggingface.py +0 -0
  160. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/__init__.py +0 -0
  161. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/_marshal.py +0 -0
  162. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/_typedvalues.py +0 -0
  163. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/openai → ommlds-0.0.0.dev463/ommlds/minichain/backends}/__init__.py +0 -0
  164. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/sentencepiece → ommlds-0.0.0.dev463/ommlds/minichain/backends/catalogs}/__init__.py +0 -0
  165. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/catalogs/base.py +0 -0
  166. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/catalogs/simple.py +0 -0
  167. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/catalogs/strings.py +0 -0
  168. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/tinygrad → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls}/__init__.py +0 -0
  169. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/tokenizers → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/anthropic}/__init__.py +0 -0
  170. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/anthropic/chat.py +0 -0
  171. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/anthropic/stream.py +0 -0
  172. {ommlds-0.0.0.dev461/ommlds/minichain/backends/impls/transformers → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/duckduckgo}/__init__.py +0 -0
  173. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/duckduckgo/search.py +0 -0
  174. {ommlds-0.0.0.dev461/ommlds/minichain/backends/strings → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/google}/__init__.py +0 -0
  175. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/google/chat.py +0 -0
  176. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/google/names.py +0 -0
  177. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/google/search.py +0 -0
  178. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/google/stream.py +0 -0
  179. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/google/tools.py +0 -0
  180. {ommlds-0.0.0.dev461/ommlds/minichain/chat → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/huggingface}/__init__.py +0 -0
  181. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/huggingface/configs.py +0 -0
  182. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/huggingface/repos.py +0 -0
  183. {ommlds-0.0.0.dev461/ommlds/minichain/chat/choices → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/llamacpp}/__init__.py +0 -0
  184. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/llamacpp/chat.py +0 -0
  185. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/llamacpp/completion.py +0 -0
  186. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/llamacpp/format.py +0 -0
  187. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/llamacpp/stream.py +0 -0
  188. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/mistral.py +0 -0
  189. {ommlds-0.0.0.dev461/ommlds/minichain/chat/stream → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/mlx}/__init__.py +0 -0
  190. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/mlx/chat.py +0 -0
  191. {ommlds-0.0.0.dev461/ommlds/minichain/chat/tools → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/openai}/__init__.py +0 -0
  192. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/openai/chat.py +0 -0
  193. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/openai/completion.py +0 -0
  194. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/openai/embedding.py +0 -0
  195. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/openai/format.py +0 -0
  196. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/openai/format2.py +0 -0
  197. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/openai/names.py +0 -0
  198. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/openai/stream.py +0 -0
  199. {ommlds-0.0.0.dev461/ommlds/minichain/chat/transforms → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/sentencepiece}/__init__.py +0 -0
  200. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/sentencepiece/tokens.py +0 -0
  201. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/sqlite.py +0 -0
  202. {ommlds-0.0.0.dev461/ommlds/minichain/content/transforms → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/tinygrad}/__init__.py +0 -0
  203. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/tinygrad/chat.py +0 -0
  204. {ommlds-0.0.0.dev461/ommlds/minichain/lib → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/tokenizers}/__init__.py +0 -0
  205. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/tokenizers/tokens.py +0 -0
  206. {ommlds-0.0.0.dev461/ommlds/minichain/lib/code → ommlds-0.0.0.dev463/ommlds/minichain/backends/impls/transformers}/__init__.py +0 -0
  207. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/transformers/sentence.py +0 -0
  208. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/transformers/tokens.py +0 -0
  209. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/impls/transformers/transformers.py +0 -0
  210. {ommlds-0.0.0.dev461/ommlds/minichain/lib/fs → ommlds-0.0.0.dev463/ommlds/minichain/backends/strings}/__init__.py +0 -0
  211. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/strings/manifests.py +0 -0
  212. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/strings/parsing.py +0 -0
  213. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/backends/strings/resolving.py +0 -0
  214. {ommlds-0.0.0.dev461/ommlds/minichain/lib/fs/tools → ommlds-0.0.0.dev463/ommlds/minichain/chat}/__init__.py +0 -0
  215. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/_marshal.py +0 -0
  216. {ommlds-0.0.0.dev461/ommlds/minichain/lib/fs/tools/recursivels → ommlds-0.0.0.dev463/ommlds/minichain/chat/choices}/__init__.py +0 -0
  217. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/choices/adapters.py +0 -0
  218. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/choices/services.py +0 -0
  219. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/choices/types.py +0 -0
  220. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/formats.py +0 -0
  221. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/history.py +0 -0
  222. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/messages.py +0 -0
  223. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/metadata.py +0 -0
  224. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/services.py +0 -0
  225. {ommlds-0.0.0.dev461/ommlds/minichain/lib/todo → ommlds-0.0.0.dev463/ommlds/minichain/chat/stream}/__init__.py +0 -0
  226. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/stream/_marshal.py +0 -0
  227. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/stream/adapters.py +0 -0
  228. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/stream/services.py +0 -0
  229. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/stream/types.py +0 -0
  230. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/templating.py +0 -0
  231. {ommlds-0.0.0.dev461/ommlds/minichain/lib/todo → ommlds-0.0.0.dev463/ommlds/minichain/chat}/tools/__init__.py +0 -0
  232. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/tools/execution.py +0 -0
  233. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/tools/ids.py +0 -0
  234. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/tools/parsing.py +0 -0
  235. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/tools/types.py +0 -0
  236. {ommlds-0.0.0.dev461/ommlds/minichain/llms → ommlds-0.0.0.dev463/ommlds/minichain/chat/transforms}/__init__.py +0 -0
  237. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/transforms/base.py +0 -0
  238. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/transforms/metadata.py +0 -0
  239. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/transforms/services.py +0 -0
  240. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/chat/types.py +0 -0
  241. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/completion.py +0 -0
  242. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/configs.py +0 -0
  243. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/__init__.py +0 -0
  244. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/_marshal.py +0 -0
  245. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/images.py +0 -0
  246. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/json.py +0 -0
  247. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/materialize.py +0 -0
  248. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/metadata.py +0 -0
  249. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/namespaces.py +0 -0
  250. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/placeholders.py +0 -0
  251. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/prepare.py +0 -0
  252. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/sequence.py +0 -0
  253. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/simple.py +0 -0
  254. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/text.py +0 -0
  255. {ommlds-0.0.0.dev461/ommlds/minichain/models → ommlds-0.0.0.dev463/ommlds/minichain/content/transforms}/__init__.py +0 -0
  256. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/transforms/base.py +0 -0
  257. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/transforms/interleave.py +0 -0
  258. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/transforms/squeeze.py +0 -0
  259. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/transforms/stringify.py +0 -0
  260. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/transforms/strings.py +0 -0
  261. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/content/types.py +0 -0
  262. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/docs/__init__.py +0 -0
  263. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/docs/docs.py +0 -0
  264. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/docs/dtypes.py +0 -0
  265. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/docs/filters.py +0 -0
  266. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/envs.py +0 -0
  267. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/json.py +0 -0
  268. {ommlds-0.0.0.dev461/ommlds/minichain/models/repos → ommlds-0.0.0.dev463/ommlds/minichain/lib}/__init__.py +0 -0
  269. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/bash.py +0 -0
  270. {ommlds-0.0.0.dev461/ommlds/minichain/registries → ommlds-0.0.0.dev463/ommlds/minichain/lib/code}/__init__.py +0 -0
  271. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/code/prompts.py +0 -0
  272. {ommlds-0.0.0.dev461/ommlds/minichain/stream → ommlds-0.0.0.dev463/ommlds/minichain/lib/fs}/__init__.py +0 -0
  273. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/binfiles.py +0 -0
  274. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/context.py +0 -0
  275. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/errors.py +0 -0
  276. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/suggestions.py +0 -0
  277. {ommlds-0.0.0.dev461/ommlds/minichain/text → ommlds-0.0.0.dev463/ommlds/minichain/lib/fs/tools}/__init__.py +0 -0
  278. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/tools/edit.py +0 -0
  279. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/tools/ls.py +0 -0
  280. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/tools/read.py +0 -0
  281. {ommlds-0.0.0.dev461/ommlds/minichain/text/toolparsing → ommlds-0.0.0.dev463/ommlds/minichain/lib/fs/tools/recursivels}/__init__.py +0 -0
  282. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/tools/recursivels/execution.py +0 -0
  283. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/tools/recursivels/rendering.py +0 -0
  284. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/fs/tools/recursivels/running.py +0 -0
  285. {ommlds-0.0.0.dev461/ommlds/minichain/tools → ommlds-0.0.0.dev463/ommlds/minichain/lib/todo}/__init__.py +0 -0
  286. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/todo/context.py +0 -0
  287. {ommlds-0.0.0.dev461/ommlds/minichain/tools/execution → ommlds-0.0.0.dev463/ommlds/minichain/lib/todo/tools}/__init__.py +0 -0
  288. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/todo/tools/read.py +0 -0
  289. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/todo/tools/write.py +0 -0
  290. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/lib/todo/types.py +0 -0
  291. {ommlds-0.0.0.dev461/ommlds/minichain/vectors → ommlds-0.0.0.dev463/ommlds/minichain/llms}/__init__.py +0 -0
  292. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/llms/_marshal.py +0 -0
  293. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/llms/tokens.py +0 -0
  294. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/llms/types.py +0 -0
  295. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/metadata.py +0 -0
  296. {ommlds-0.0.0.dev461/ommlds/server → ommlds-0.0.0.dev463/ommlds/minichain/models}/__init__.py +0 -0
  297. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/models/configs.py +0 -0
  298. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/models/names.py +0 -0
  299. {ommlds-0.0.0.dev461/ommlds/tools → ommlds-0.0.0.dev463/ommlds/minichain/models/repos}/__init__.py +0 -0
  300. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/models/repos/resolving.py +0 -0
  301. {ommlds-0.0.0.dev461/ommlds/wiki → ommlds-0.0.0.dev463/ommlds/minichain/registries}/__init__.py +0 -0
  302. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/registries/globals.py +0 -0
  303. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/registries/manifests.py +0 -0
  304. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/registries/registry.py +0 -0
  305. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/resources.py +0 -0
  306. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/search.py +0 -0
  307. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/services/__init__.py +0 -0
  308. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/services/_marshal.py +0 -0
  309. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/services/_origclasses.py +0 -0
  310. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/services/_typedvalues.py +0 -0
  311. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/services/facades.py +0 -0
  312. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/services/requests.py +0 -0
  313. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/services/responses.py +0 -0
  314. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/services/services.py +0 -0
  315. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/standard.py +0 -0
  316. {ommlds-0.0.0.dev461/ommlds/wiki/text → ommlds-0.0.0.dev463/ommlds/minichain/stream}/__init__.py +0 -0
  317. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/stream/services.py +0 -0
  318. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/stream/wrap.py +0 -0
  319. {ommlds-0.0.0.dev461/ommlds/wiki/utils → ommlds-0.0.0.dev463/ommlds/minichain/text}/__init__.py +0 -0
  320. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/text/applypatch.py +0 -0
  321. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/text/toolparsing/base.py +0 -0
  322. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/text/toolparsing/dumb.py +0 -0
  323. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/text/toolparsing/llamacpp/LICENSE +0 -0
  324. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/text/toolparsing/llamacpp/__init__.py +0 -0
  325. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/text/toolparsing/llamacpp/hermes2.py +0 -0
  326. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/text/toolparsing/llamacpp/llama31.py +0 -0
  327. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/text/toolparsing/llamacpp/types.py +0 -0
  328. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/text/toolparsing/llamacpp/utils.py +0 -0
  329. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tokens/__init__.py +0 -0
  330. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tokens/specials.py +0 -0
  331. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tokens/tokenizers.py +0 -0
  332. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tokens/types.py +0 -0
  333. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tokens/vocabs.py +0 -0
  334. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/_marshal.py +0 -0
  335. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/execution/catalog.py +0 -0
  336. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/execution/context.py +0 -0
  337. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/execution/errors.py +0 -0
  338. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/execution/executors.py +0 -0
  339. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/execution/reflect.py +0 -0
  340. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/fns.py +0 -0
  341. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/jsonschema.py +0 -0
  342. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/reflect.py +0 -0
  343. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/tools/types.py +0 -0
  344. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/types.py +0 -0
  345. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/utils.py +0 -0
  346. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/vectors/_marshal.py +0 -0
  347. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/vectors/embeddings.py +0 -0
  348. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/vectors/index.py +0 -0
  349. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/vectors/search.py +0 -0
  350. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/vectors/similarity.py +0 -0
  351. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/vectors/stores.py +0 -0
  352. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/minichain/vectors/types.py +0 -0
  353. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/server/__main__.py +0 -0
  354. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/server/cli.py +0 -0
  355. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/server/client.py +0 -0
  356. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/server/server.py +0 -0
  357. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/server/service.py +0 -0
  358. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/tools/git.py +0 -0
  359. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/tools/ocr.py +0 -0
  360. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/wiki/analyze.py +0 -0
  361. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/wiki/convert.py +0 -0
  362. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/wiki/models.py +0 -0
  363. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/wiki/text/mfh.py +0 -0
  364. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/wiki/text/wtp.py +0 -0
  365. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/wiki/utils/io.py +0 -0
  366. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/wiki/utils/progress.py +0 -0
  367. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/wiki/utils/xml.py +0 -0
  368. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds/wiki/xml.py +0 -0
  369. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds.egg-info/dependency_links.txt +0 -0
  370. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds.egg-info/entry_points.txt +0 -0
  371. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/ommlds.egg-info/top_level.txt +0 -0
  372. {ommlds-0.0.0.dev461 → ommlds-0.0.0.dev463}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommlds
3
- Version: 0.0.0.dev461
3
+ Version: 0.0.0.dev463
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.dev461
18
- Requires-Dist: omlish==0.0.0.dev461
17
+ Requires-Dist: omdev==0.0.0.dev463
18
+ Requires-Dist: omlish==0.0.0.dev463
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"
@@ -23,7 +23,7 @@ Requires-Dist: mlx-lm~=0.28; sys_platform == "darwin" and extra == "all"
23
23
  Requires-Dist: tiktoken~=0.12; extra == "all"
24
24
  Requires-Dist: tinygrad~=0.11; extra == "all"
25
25
  Requires-Dist: tokenizers~=0.22; extra == "all"
26
- Requires-Dist: torch~=2.8; extra == "all"
26
+ Requires-Dist: torch~=2.9; extra == "all"
27
27
  Requires-Dist: transformers~=4.57; extra == "all"
28
28
  Requires-Dist: sentence-transformers~=5.1; extra == "all"
29
29
  Requires-Dist: huggingface-hub~=0.35; extra == "all"
@@ -31,7 +31,7 @@ Requires-Dist: datasets~=4.2; extra == "all"
31
31
  Requires-Dist: numpy>=1.26; extra == "all"
32
32
  Requires-Dist: pytesseract~=0.3; extra == "all"
33
33
  Requires-Dist: rapidocr-onnxruntime~=1.4; extra == "all"
34
- Requires-Dist: pillow~=11.3; extra == "all"
34
+ Requires-Dist: pillow~=12.0; extra == "all"
35
35
  Requires-Dist: ddgs~=9.6; extra == "all"
36
36
  Requires-Dist: mwparserfromhell~=0.7; extra == "all"
37
37
  Requires-Dist: wikitextparser~=0.56; extra == "all"
@@ -43,7 +43,7 @@ Requires-Dist: mlx-lm~=0.28; sys_platform == "darwin" and extra == "backends"
43
43
  Requires-Dist: tiktoken~=0.12; extra == "backends"
44
44
  Requires-Dist: tinygrad~=0.11; extra == "backends"
45
45
  Requires-Dist: tokenizers~=0.22; extra == "backends"
46
- Requires-Dist: torch~=2.8; extra == "backends"
46
+ Requires-Dist: torch~=2.9; extra == "backends"
47
47
  Requires-Dist: transformers~=4.57; extra == "backends"
48
48
  Requires-Dist: sentence-transformers~=5.1; extra == "backends"
49
49
  Provides-Extra: huggingface
@@ -55,7 +55,7 @@ Provides-Extra: ocr
55
55
  Requires-Dist: pytesseract~=0.3; extra == "ocr"
56
56
  Requires-Dist: rapidocr-onnxruntime~=1.4; extra == "ocr"
57
57
  Provides-Extra: pillow
58
- Requires-Dist: pillow~=11.3; extra == "pillow"
58
+ Requires-Dist: pillow~=12.0; extra == "pillow"
59
59
  Provides-Extra: search
60
60
  Requires-Dist: ddgs~=9.6; extra == "search"
61
61
  Provides-Extra: wiki
@@ -33,7 +33,7 @@
33
33
  "module": ".minichain.backends.impls.anthropic.names",
34
34
  "attr": "_BACKEND_STRINGS_MANIFEST",
35
35
  "file": "ommlds/minichain/backends/impls/anthropic/names.py",
36
- "line": 35,
36
+ "line": 34,
37
37
  "value": {
38
38
  "!.minichain.backends.strings.manifests.BackendStringsManifest": {
39
39
  "service_cls_names": [
@@ -50,10 +50,9 @@
50
50
  "claude-sonnet-4-5-20250929": null,
51
51
  "claude-sonnet-4-5": "claude-sonnet-4-5-20250929",
52
52
  "claude-sonnet": "claude-sonnet-4-5",
53
- "claude-3-5-haiku-latest": null,
54
- "claude-haiku-3-5-latest": "claude-3-5-haiku-latest",
55
- "claude-haiku-3-5": "claude-haiku-3-5-latest",
56
- "claude-haiku": "claude-haiku-3-5",
53
+ "claude-haiku-4-5-20251001": null,
54
+ "claude-haiku-4-5": "claude-haiku-4-5-20251001",
55
+ "claude-haiku": "claude-haiku-4-5",
57
56
  "claude": "claude-haiku"
58
57
  }
59
58
  }
@@ -30,7 +30,7 @@ class Project(ProjectBase):
30
30
 
31
31
  'tokenizers ~= 0.22',
32
32
 
33
- 'torch ~= 2.8',
33
+ 'torch ~= 2.9',
34
34
 
35
35
  'transformers ~= 4.57',
36
36
  'sentence-transformers ~= 5.1',
@@ -52,7 +52,7 @@ class Project(ProjectBase):
52
52
  ],
53
53
 
54
54
  'pillow': [
55
- 'pillow ~= 11.3',
55
+ 'pillow ~= 12.0',
56
56
  ],
57
57
 
58
58
  'search': [
@@ -15,6 +15,63 @@ from .tokenization import load_tokenization
15
15
  ##
16
16
 
17
17
 
18
+ def get_model_path(
19
+ path_or_hf_repo: str,
20
+ revision: str | None = None,
21
+ ) -> tuple[pathlib.Path, str | None]:
22
+ """
23
+ Ensures the model is available locally. If the path does not exist locally,
24
+ it is downloaded from the Hugging Face Hub.
25
+
26
+ Args:
27
+ path_or_hf_repo (str): The local path or Hugging Face repository ID of the model.
28
+ revision (str, optional): A revision id which can be a branch name, a tag, or a commit hash.
29
+
30
+ Returns:
31
+ Tuple[Path, str]: A tuple containing the local file path and the Hugging Face repo ID.
32
+ """
33
+
34
+ model_path = pathlib.Path(path_or_hf_repo)
35
+
36
+ if not model_path.exists():
37
+ from huggingface_hub import snapshot_download
38
+ hf_path = path_or_hf_repo
39
+ model_path = pathlib.Path(
40
+ snapshot_download(
41
+ path_or_hf_repo,
42
+ revision=revision,
43
+ allow_patterns=[
44
+ '*.jinja',
45
+ '*.json',
46
+ '*.jsonl',
47
+ '*.py',
48
+ '*.txt',
49
+
50
+ 'model*.safetensors',
51
+
52
+ '*.tiktoken',
53
+ 'tiktoken.model',
54
+ 'tokenizer.model',
55
+ ],
56
+ ),
57
+ )
58
+
59
+ else:
60
+ from huggingface_hub import ModelCard
61
+
62
+ card_path = model_path / 'README.md'
63
+ if card_path.is_file():
64
+ card = ModelCard.load(card_path)
65
+ hf_path = card.data.base_model
66
+ else:
67
+ hf_path = None
68
+
69
+ return model_path, hf_path
70
+
71
+
72
+ ##
73
+
74
+
18
75
  @dc.dataclass(frozen=True, kw_only=True)
19
76
  class LoadedModel:
20
77
  path: pathlib.Path
@@ -46,7 +103,7 @@ def load_model(
46
103
  ) -> LoadedModel:
47
104
  # FIXME: get_model_path return annotation is wrong:
48
105
  # https://github.com/ml-explore/mlx-lm/blob/9ee2b7358f5e258af7b31a8561acfbbe56ad5085/mlx_lm/utils.py#L82
49
- model_path_res = ta.cast(ta.Any, mlx_lm.utils.get_model_path(path_or_hf_repo))
106
+ model_path_res = ta.cast(ta.Any, get_model_path(path_or_hf_repo))
50
107
  if isinstance(model_path_res, tuple):
51
108
  model_path = check.isinstance(model_path_res[0], pathlib.Path)
52
109
  else:
@@ -27,6 +27,7 @@ from .sessions.base import Session
27
27
  from .sessions.chat.code import CodeChatSession
28
28
  from .sessions.chat.interactive import InteractiveChatSession
29
29
  from .sessions.chat.prompt import PromptChatSession
30
+ from .sessions.chat2.session import Chat2Session
30
31
  from .sessions.completion.completion import CompletionSession
31
32
  from .sessions.embedding.embedding import EmbeddingSession
32
33
  from .tools.config import ToolsConfig
@@ -66,6 +67,8 @@ async def _a_main(args: ta.Any = None) -> None:
66
67
  parser.add_argument('-E', '--embed', action='store_true')
67
68
  parser.add_argument('-j', '--image', action='store_true')
68
69
 
70
+ parser.add_argument('-2', '--two', action='store_true')
71
+
69
72
  parser.add_argument('--enable-fs-tools', action='store_true')
70
73
  parser.add_argument('--enable-todo-tools', action='store_true')
71
74
  parser.add_argument('--enable-unsafe-tools-do-not-use-lol', action='store_true')
@@ -128,7 +131,16 @@ async def _a_main(args: ta.Any = None) -> None:
128
131
 
129
132
  session_cfg: Session.Config
130
133
 
131
- if args.interactive:
134
+ if args.two:
135
+ session_cfg = Chat2Session.Config(
136
+ backend=args.backend,
137
+ model_name=args.model_name,
138
+ state='ephemeral',
139
+ initial_content=content, # noqa
140
+ # dangerous_no_tool_confirmation=bool(args.dangerous_no_tool_confirmation),
141
+ )
142
+
143
+ elif args.interactive:
132
144
  session_cfg = InteractiveChatSession.Config(
133
145
  backend=args.backend,
134
146
  model_name=args.model_name,
@@ -183,7 +195,11 @@ async def _a_main(args: ta.Any = None) -> None:
183
195
  with inj.create_managed_injector(bind_main(
184
196
  session_cfg=session_cfg,
185
197
  tools_config=tools_config,
186
- enable_backend_strings=isinstance(session_cfg, (PromptChatSession.Config, CodeChatSession.Config)),
198
+ enable_backend_strings=isinstance(session_cfg, (
199
+ Chat2Session.Config,
200
+ CodeChatSession.Config,
201
+ PromptChatSession.Config,
202
+ )),
187
203
  )) as injector:
188
204
  await injector[Session].run()
189
205
 
@@ -86,7 +86,7 @@ class StateStorageChatStateManager(ChatStateManager):
86
86
  def get_state(self) -> ChatState:
87
87
  if self._state is not None:
88
88
  return self._state
89
- state: ChatState | None = self._storage.load_state(self._key, ChatState)
89
+ state: ChatState | None = lang.sync_await(self._storage.load_state(self._key, ChatState))
90
90
  if state is None:
91
91
  state = ChatState()
92
92
  self._state = state
@@ -94,7 +94,7 @@ class StateStorageChatStateManager(ChatStateManager):
94
94
 
95
95
  def clear_state(self) -> ChatState:
96
96
  state = ChatState()
97
- self._storage.save_state(self._key, state, ChatState)
97
+ lang.sync_await(self._storage.save_state(self._key, state, ChatState))
98
98
  self._state = state
99
99
  return state
100
100
 
@@ -105,6 +105,6 @@ class StateStorageChatStateManager(ChatStateManager):
105
105
  chat=[*state.chat, *chat_additions],
106
106
  updated_at=lang.utcnow(),
107
107
  )
108
- self._storage.save_state(self._key, state, ChatState)
108
+ lang.sync_await(self._storage.save_state(self._key, state, ChatState))
109
109
  self._state = state
110
110
  return state
@@ -0,0 +1,105 @@
1
+ from omlish import lang
2
+
3
+
4
+ with lang.auto_proxy_init(globals()):
5
+ from .backends.catalog import ( # noqa
6
+ CatalogChatChoicesServiceBackendProvider,
7
+ CatalogChatChoicesStreamServiceBackendProvider,
8
+ )
9
+
10
+ from .backends.types import ( # noqa
11
+ BackendName,
12
+ BackendConfigs,
13
+ BackendProvider,
14
+ ChatChoicesServiceBackendProvider,
15
+ ChatChoicesStreamServiceBackendProvider,
16
+ )
17
+
18
+ from .chat.ai.rendering import ( # noqa
19
+ RenderingAiChatGenerator,
20
+ RenderingStreamAiChatGenerator,
21
+ )
22
+
23
+ from .chat.ai.services import ( # noqa
24
+ ChatChoicesServiceOptions,
25
+ ChatChoicesServiceAiChatGenerator,
26
+ ChatChoicesStreamServiceStreamAiChatGenerator,
27
+ )
28
+
29
+ from .chat.ai.types import ( # noqa
30
+ AiChatGenerator,
31
+ StreamAiChatGenerator,
32
+ )
33
+
34
+ from .chat.state.inmemory import ( # noqa
35
+ InMemoryChatStateManager,
36
+ )
37
+
38
+ from .chat.state.storage import ( # noqa
39
+ StateStorageChatStateManager,
40
+ )
41
+
42
+ from .chat.state.types import ( # noqa
43
+ ChatState,
44
+ ChatStateManager,
45
+ )
46
+
47
+ from .chat.user.interactive import ( # noqa
48
+ InteractiveUserChatInput,
49
+ )
50
+
51
+ from .chat.user.oneshot import ( # noqa
52
+ OneshotUserChatInputInitialChat,
53
+ OneshotUserChatInput,
54
+ )
55
+
56
+ from .chat.user.types import ( # noqa
57
+ UserChatInput,
58
+ )
59
+
60
+ from .content.messages import ( # noqa
61
+ MessageContentExtractor,
62
+ MessageContentExtractorImpl,
63
+ )
64
+
65
+ from .content.strings import ( # noqa
66
+ ContentStringifier,
67
+ ContentStringifierImpl,
68
+ )
69
+
70
+ from .rendering.markdown import ( # noqa
71
+ MarkdownContentRendering,
72
+ MarkdownStreamContentRendering,
73
+ )
74
+
75
+ from .rendering.raw import ( # noqa
76
+ RawContentRendering,
77
+ RawContentStreamRendering,
78
+ )
79
+
80
+ from .rendering.types import ( # noqa
81
+ ContentRendering,
82
+ StreamContentRendering,
83
+ )
84
+
85
+ from .tools.confirmation import ( # noqa
86
+ ToolExecutionRequestDeniedError,
87
+ ToolExecutionConfirmation,
88
+ InteractiveToolExecutionConfirmation,
89
+ )
90
+
91
+ from .tools.execution import ( # noqa
92
+ ToolUseExecutor,
93
+ ToolUseExecutorImpl,
94
+ )
95
+
96
+ from .driver import ( # noqa
97
+ ChatDriver,
98
+ )
99
+
100
+ from .phases import ( # noqa
101
+ ChatPhase,
102
+ ChatPhaseCallback,
103
+ ChatPhaseCallbacks,
104
+ ChatPhaseManager,
105
+ )
@@ -0,0 +1,56 @@
1
+ import contextlib
2
+ import typing as ta
3
+
4
+ from omlish import lang
5
+
6
+ from ..... import minichain as mc
7
+ from .types import BackendConfigs
8
+ from .types import BackendName
9
+ from .types import BackendProvider
10
+ from .types import ChatChoicesServiceBackendProvider
11
+ from .types import ChatChoicesStreamServiceBackendProvider
12
+ from .types import ServiceT
13
+
14
+
15
+ ##
16
+
17
+
18
+ class _CatalogBackendProvider(BackendProvider[ServiceT], lang.Abstract):
19
+ def __init__(
20
+ self,
21
+ *,
22
+ name: BackendName,
23
+ catalog: mc.BackendCatalog,
24
+ configs: BackendConfigs | None = None,
25
+ ) -> None:
26
+ super().__init__()
27
+
28
+ self._name = name
29
+ self._catalog = catalog
30
+ self._configs = configs
31
+
32
+ @contextlib.asynccontextmanager
33
+ async def _provide_backend(self, cls: type[ServiceT]) -> ta.AsyncIterator[ServiceT]:
34
+ service: ServiceT
35
+ async with lang.async_maybe_managing(self._catalog.get_backend(
36
+ cls,
37
+ self._name,
38
+ *(self._configs or []),
39
+ )) as service:
40
+ yield service
41
+
42
+
43
+ class CatalogChatChoicesServiceBackendProvider(
44
+ _CatalogBackendProvider[mc.ChatChoicesService],
45
+ ChatChoicesServiceBackendProvider,
46
+ ):
47
+ def provide_backend(self) -> ta.AsyncContextManager[mc.ChatChoicesService]:
48
+ return self._provide_backend(mc.ChatChoicesService) # type: ignore[type-abstract]
49
+
50
+
51
+ class CatalogChatChoicesStreamServiceBackendProvider(
52
+ _CatalogBackendProvider[mc.ChatChoicesStreamService],
53
+ ChatChoicesStreamServiceBackendProvider,
54
+ ):
55
+ def provide_backend(self) -> ta.AsyncContextManager[mc.ChatChoicesStreamService]:
56
+ return self._provide_backend(mc.ChatChoicesStreamService) # type: ignore[type-abstract]
@@ -0,0 +1,36 @@
1
+ import abc
2
+ import typing as ta
3
+
4
+ from omlish import lang
5
+
6
+ from ..... import minichain as mc
7
+
8
+
9
+ ServiceT = ta.TypeVar('ServiceT', bound=mc.Service)
10
+
11
+
12
+ ##
13
+
14
+
15
+ BackendName = ta.NewType('BackendName', str)
16
+ BackendConfigs = ta.NewType('BackendConfigs', ta.Sequence[mc.Config])
17
+
18
+
19
+ ##
20
+
21
+
22
+ class BackendProvider(lang.Abstract, ta.Generic[ServiceT]):
23
+ @abc.abstractmethod
24
+ def provide_backend(self) -> ta.AsyncContextManager[ServiceT]:
25
+ raise NotImplementedError
26
+
27
+
28
+ ##
29
+
30
+
31
+ class ChatChoicesServiceBackendProvider(BackendProvider[mc.ChatChoicesService], lang.Abstract):
32
+ pass
33
+
34
+
35
+ class ChatChoicesStreamServiceBackendProvider(BackendProvider[mc.ChatChoicesStreamService], lang.Abstract):
36
+ pass
@@ -0,0 +1,67 @@
1
+ import typing as ta
2
+
3
+ from ...... import minichain as mc
4
+ from ...content.messages import MessageContentExtractor
5
+ from ...content.messages import MessageContentExtractorImpl
6
+ from ...rendering.types import ContentRendering
7
+ from .types import AiChatGenerator
8
+ from .types import StreamAiChatGenerator
9
+
10
+
11
+ ##
12
+
13
+
14
+ class RenderingAiChatGenerator(AiChatGenerator):
15
+ def __init__(
16
+ self,
17
+ *,
18
+ wrapped: AiChatGenerator,
19
+ extractor: MessageContentExtractor | None = None,
20
+ renderer: ContentRendering,
21
+ ) -> None:
22
+ super().__init__()
23
+
24
+ self._wrapped = wrapped
25
+ if extractor is None:
26
+ extractor = MessageContentExtractorImpl()
27
+ self._extractor = extractor
28
+ self._renderer = renderer
29
+
30
+ async def get_next_ai_messages(self, chat: mc.Chat) -> mc.AiChat:
31
+ out = await self._wrapped.get_next_ai_messages(chat)
32
+
33
+ for msg in out:
34
+ if (c := self._extractor.extract_message_content(msg)) is not None:
35
+ await self._renderer.render_content(c)
36
+
37
+ return out
38
+
39
+
40
+ class RenderingStreamAiChatGenerator(StreamAiChatGenerator):
41
+ def __init__(
42
+ self,
43
+ *,
44
+ wrapped: StreamAiChatGenerator,
45
+ extractor: MessageContentExtractor | None = None,
46
+ renderer: ContentRendering,
47
+ ) -> None:
48
+ super().__init__()
49
+
50
+ self._wrapped = wrapped
51
+ if extractor is None:
52
+ extractor = MessageContentExtractorImpl()
53
+ self._extractor = extractor
54
+ self._renderer = renderer
55
+
56
+ async def get_next_ai_messages_streamed(
57
+ self,
58
+ chat: mc.Chat,
59
+ delta_callback: ta.Callable[[mc.AiChoiceDelta], ta.Awaitable[None]] | None = None,
60
+ ) -> mc.AiChat:
61
+ async def inner(delta: mc.AiChoiceDelta) -> None:
62
+ # FIXME: render lol
63
+
64
+ if delta_callback is not None:
65
+ await delta_callback(delta)
66
+
67
+ return await self._wrapped.get_next_ai_messages_streamed(chat, delta_callback=inner)
@@ -0,0 +1,70 @@
1
+ import typing as ta
2
+
3
+ from omlish import check
4
+
5
+ from ...... import minichain as mc
6
+ from ...backends.types import ChatChoicesServiceBackendProvider
7
+ from .types import AiChatGenerator
8
+ from .types import StreamAiChatGenerator
9
+
10
+
11
+ ##
12
+
13
+
14
+ ChatChoicesServiceOptions = ta.NewType('ChatChoicesServiceOptions', ta.Sequence[mc.ChatChoicesOptions])
15
+
16
+
17
+ ##
18
+
19
+
20
+ class ChatChoicesServiceAiChatGenerator(AiChatGenerator):
21
+ def __init__(
22
+ self,
23
+ service_provider: ChatChoicesServiceBackendProvider,
24
+ *,
25
+ options: ChatChoicesServiceOptions | None = None,
26
+ ) -> None:
27
+ super().__init__()
28
+
29
+ self._service_provider = service_provider
30
+ self._options = options
31
+
32
+ async def get_next_ai_messages(self, chat: mc.Chat) -> mc.AiChat:
33
+ async with self._service_provider.provide_backend() as service:
34
+ resp = await service.invoke(mc.ChatChoicesRequest(chat, self._options or []))
35
+
36
+ return check.single(resp.v).ms
37
+
38
+
39
+ class ChatChoicesStreamServiceStreamAiChatGenerator(StreamAiChatGenerator):
40
+ def __init__(
41
+ self,
42
+ service: mc.ChatChoicesStreamService,
43
+ *,
44
+ options: ChatChoicesServiceOptions | None = None,
45
+ ) -> None:
46
+ super().__init__()
47
+
48
+ self._service = service
49
+ self._options = options
50
+
51
+ async def get_next_ai_messages_streamed(
52
+ self,
53
+ chat: mc.Chat,
54
+ delta_callback: ta.Callable[[mc.AiChoiceDelta], ta.Awaitable[None]] | None = None,
55
+ ) -> mc.AiChat:
56
+ lst: list[str] = []
57
+
58
+ async with (await self._service.invoke(mc.ChatChoicesStreamRequest(chat, self._options or []))).v as st_resp:
59
+ async for o in st_resp:
60
+ choice = check.single(o.choices)
61
+
62
+ for delta in choice.deltas:
63
+ if delta_callback is not None:
64
+ await delta_callback(delta)
65
+
66
+ c = check.isinstance(delta, mc.ContentAiChoiceDelta).c # noqa
67
+ if c is not None:
68
+ lst.append(check.isinstance(c, str))
69
+
70
+ return [mc.AiMessage(''.join(lst))]
@@ -0,0 +1,28 @@
1
+ import abc
2
+ import typing as ta
3
+
4
+ from omlish import lang
5
+
6
+ from ...... import minichain as mc
7
+
8
+
9
+ ##
10
+
11
+
12
+ class AiChatGenerator(lang.Abstract):
13
+ @abc.abstractmethod
14
+ def get_next_ai_messages(self, chat: mc.Chat) -> ta.Awaitable[mc.AiChat]:
15
+ raise NotImplementedError
16
+
17
+
18
+ class StreamAiChatGenerator(AiChatGenerator, lang.Abstract):
19
+ def get_next_ai_messages(self, chat: mc.Chat) -> ta.Awaitable[mc.AiChat]:
20
+ return self.get_next_ai_messages_streamed(chat)
21
+
22
+ @abc.abstractmethod
23
+ def get_next_ai_messages_streamed(
24
+ self,
25
+ chat: mc.Chat,
26
+ delta_callback: ta.Callable[[mc.AiChoiceDelta], ta.Awaitable[None]] | None = None,
27
+ ) -> ta.Awaitable[mc.AiChat]:
28
+ raise NotImplementedError
@@ -0,0 +1,34 @@
1
+ import dataclasses as dc
2
+
3
+ from omlish import lang
4
+
5
+ from ...... import minichain as mc
6
+ from .types import ChatState
7
+ from .types import ChatStateManager
8
+
9
+
10
+ ##
11
+
12
+
13
+ class InMemoryChatStateManager(ChatStateManager):
14
+ def __init__(self, initial_state: ChatState | None = None) -> None:
15
+ super().__init__()
16
+
17
+ if initial_state is None:
18
+ initial_state = ChatState()
19
+ self._state = initial_state
20
+
21
+ async def get_state(self) -> ChatState:
22
+ return self._state
23
+
24
+ async def clear_state(self) -> ChatState:
25
+ self._state = ChatState()
26
+ return self._state
27
+
28
+ async def extend_chat(self, chat_additions: mc.Chat) -> ChatState:
29
+ self._state = dc.replace(
30
+ self._state,
31
+ chat=[*self._state.chat, *chat_additions],
32
+ updated_at=lang.utcnow(),
33
+ )
34
+ return self._state