ommlds 0.0.0.dev463__tar.gz → 0.0.0.dev465__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 (396) hide show
  1. {ommlds-0.0.0.dev463/ommlds.egg-info → ommlds-0.0.0.dev465}/PKG-INFO +3 -3
  2. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/.omlish-manifests.json +2 -2
  3. ommlds-0.0.0.dev465/ommlds/cli/inject.py +37 -0
  4. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/main.py +34 -59
  5. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/backends/catalog.py +5 -5
  6. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/backends/inject.py +37 -0
  7. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/backends/injection.py +16 -0
  8. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/backends/types.py +3 -3
  9. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat/ai/inject.py +78 -0
  10. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat/ai/injection.py +14 -0
  11. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/chat/ai/rendering.py +13 -10
  12. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat/ai/services.py +81 -0
  13. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat/ai/tools.py +44 -0
  14. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/chat/ai/types.py +5 -5
  15. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat/state/inject.py +40 -0
  16. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/chat/state/inmemory.py +1 -1
  17. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/chat/state/storage.py +2 -2
  18. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/chat/state/types.py +1 -1
  19. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat/user/inject.py +61 -0
  20. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/chat/user/interactive.py +1 -1
  21. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/chat/user/oneshot.py +1 -1
  22. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/chat/user/types.py +1 -1
  23. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/configs.py +4 -1
  24. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/content/messages.py +6 -2
  25. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/content/strings.py +2 -2
  26. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/driver.py +2 -2
  27. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/inject.py +82 -0
  28. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/phases/inject.py +27 -0
  29. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/phases/injection.py +14 -0
  30. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/phases.py → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/phases/manager.py +2 -28
  31. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/phases/types.py +29 -0
  32. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/rendering/inject.py +32 -0
  33. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/rendering/markdown.py +2 -2
  34. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/rendering/raw.py +6 -6
  35. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/rendering/types.py +1 -1
  36. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/session.py +1 -1
  37. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/tools/confirmation.py +4 -4
  38. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/tools/execution.py +18 -5
  39. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/tools/inject.py +145 -0
  40. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/tools/injection.py +29 -0
  41. ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/tools/rendering.py +58 -0
  42. {ommlds-0.0.0.dev463/ommlds/cli → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/tools/weather.py +1 -1
  43. ommlds-0.0.0.dev465/ommlds/cli/sessions/completion/configs.py +21 -0
  44. ommlds-0.0.0.dev465/ommlds/cli/sessions/completion/inject.py +28 -0
  45. ommlds-0.0.0.dev463/ommlds/cli/sessions/completion/completion.py → ommlds-0.0.0.dev465/ommlds/cli/sessions/completion/session.py +4 -9
  46. ommlds-0.0.0.dev465/ommlds/cli/sessions/embedding/configs.py +21 -0
  47. ommlds-0.0.0.dev465/ommlds/cli/sessions/embedding/inject.py +28 -0
  48. ommlds-0.0.0.dev463/ommlds/cli/sessions/embedding/embedding.py → ommlds-0.0.0.dev465/ommlds/cli/sessions/embedding/session.py +4 -9
  49. ommlds-0.0.0.dev465/ommlds/cli/sessions/inject.py +38 -0
  50. ommlds-0.0.0.dev465/ommlds/cli/state/inject.py +28 -0
  51. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/anthropic/chat.py +4 -61
  52. ommlds-0.0.0.dev465/ommlds/minichain/backends/impls/anthropic/protocol.py +109 -0
  53. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/anthropic/stream.py +17 -17
  54. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465/ommlds.egg-info}/PKG-INFO +3 -3
  55. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds.egg-info/SOURCES.txt +56 -47
  56. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds.egg-info/requires.txt +2 -2
  57. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/pyproject.toml +3 -3
  58. ommlds-0.0.0.dev463/ommlds/cli/inject.py +0 -55
  59. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat/base.py +0 -42
  60. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat/code.py +0 -125
  61. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat/inject.py +0 -98
  62. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat/interactive.py +0 -70
  63. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat/printing.py +0 -126
  64. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat/prompt.py +0 -161
  65. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat/state.py +0 -110
  66. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat/tools.py +0 -97
  67. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/_inject.py +0 -105
  68. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/ai/services.py +0 -70
  69. ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/inject.py +0 -143
  70. ommlds-0.0.0.dev463/ommlds/cli/sessions/inject.py +0 -26
  71. ommlds-0.0.0.dev463/ommlds/cli/tools/config.py +0 -14
  72. ommlds-0.0.0.dev463/ommlds/cli/tools/inject.py +0 -75
  73. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/LICENSE +0 -0
  74. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/MANIFEST.in +0 -0
  75. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/README.md +0 -0
  76. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/__about__.py +0 -0
  77. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/__init__.py +0 -0
  78. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/_hacks/__init__.py +0 -0
  79. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/_hacks/patches.py +0 -0
  80. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/__init__.py +0 -0
  81. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/anthropic/__init__.py +0 -0
  82. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/anthropic/protocol/__init__.py +0 -0
  83. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/anthropic/protocol/_marshal.py +0 -0
  84. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/anthropic/protocol/sse/__init__.py +0 -0
  85. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/anthropic/protocol/sse/_marshal.py +0 -0
  86. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/anthropic/protocol/sse/assemble.py +0 -0
  87. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/anthropic/protocol/sse/events.py +0 -0
  88. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/anthropic/protocol/types.py +0 -0
  89. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/google/__init__.py +0 -0
  90. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/google/protocol/__init__.py +0 -0
  91. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/google/protocol/_marshal.py +0 -0
  92. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/google/protocol/types.py +0 -0
  93. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/llamacpp/__init__.py +0 -0
  94. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/llamacpp/buildwheel.py +0 -0
  95. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/llamacpp/logging.py +0 -0
  96. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/__init__.py +0 -0
  97. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/__main__.py +0 -0
  98. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/caching.py +0 -0
  99. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/cli.py +0 -0
  100. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/generation.py +0 -0
  101. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/limits.py +0 -0
  102. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/loading.py +0 -0
  103. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/LICENSE +0 -0
  104. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/__init__.py +0 -0
  105. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/detokenization/__init__.py +0 -0
  106. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/detokenization/base.py +0 -0
  107. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/detokenization/bpe.py +0 -0
  108. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/detokenization/naive.py +0 -0
  109. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/detokenization/spm.py +0 -0
  110. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/loading.py +0 -0
  111. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/tokenization.py +0 -0
  112. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/mlx/tokenization/types.py +0 -0
  113. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/__init__.py +0 -0
  114. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/__init__.py +0 -0
  115. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/_common.py +0 -0
  116. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/_marshal.py +0 -0
  117. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/chatcompletion/__init__.py +0 -0
  118. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/chatcompletion/chunk.py +0 -0
  119. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/chatcompletion/contentpart.py +0 -0
  120. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/chatcompletion/message.py +0 -0
  121. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/chatcompletion/request.py +0 -0
  122. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/chatcompletion/response.py +0 -0
  123. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/chatcompletion/responseformat.py +0 -0
  124. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/chatcompletion/tokenlogprob.py +0 -0
  125. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/openai/protocol/completionusage.py +0 -0
  126. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/__init__.py +0 -0
  127. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/LICENSE +0 -0
  128. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/__init__.py +0 -0
  129. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/__init__.py +0 -0
  130. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/__main__.py +0 -0
  131. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/attention.py +0 -0
  132. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/cli.py +0 -0
  133. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/fetch.py +0 -0
  134. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/llm.py +0 -0
  135. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/loading.py +0 -0
  136. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/quantization.py +0 -0
  137. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/sampling.py +0 -0
  138. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/tokenization.py +0 -0
  139. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/llama3/transformer.py +0 -0
  140. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/sdxl/__init__.py +0 -0
  141. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/sdxl/__main__.py +0 -0
  142. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/sdxl/cli.py +0 -0
  143. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/sdxl/clip.py +0 -0
  144. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/sdxl/sdxl.py +0 -0
  145. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/models/sdxl/unet.py +0 -0
  146. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/tinygrad/tinygrad.py +0 -0
  147. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/torch/__init__.py +0 -0
  148. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/torch/backends.py +0 -0
  149. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/torch/devices.py +0 -0
  150. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/backends/torch/purge.py +0 -0
  151. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/__init__.py +0 -0
  152. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/__main__.py +0 -0
  153. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/backends/__init__.py +0 -0
  154. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/backends/inject.py +0 -0
  155. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/backends/standard.py +0 -0
  156. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/sessions/__init__.py +0 -0
  157. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/sessions/base.py +0 -0
  158. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/sessions/chat/__init__.py +0 -0
  159. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/backends}/__init__.py +0 -0
  160. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/backends → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat}/__init__.py +0 -0
  161. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat/ai}/__init__.py +0 -0
  162. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/ai → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat/state}/__init__.py +0 -0
  163. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/state → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/chat/user}/__init__.py +0 -0
  164. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/chat/user → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/content}/__init__.py +0 -0
  165. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2/content → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat/phases}/__init__.py +0 -0
  166. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/rendering/__init__.py +0 -0
  167. {ommlds-0.0.0.dev463/ommlds/cli/sessions/chat2 → ommlds-0.0.0.dev465/ommlds/cli/sessions/chat}/tools/__init__.py +0 -0
  168. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/sessions/completion/__init__.py +0 -0
  169. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/cli/sessions/embedding/__init__.py +0 -0
  170. {ommlds-0.0.0.dev463/ommlds/cli/tools → ommlds-0.0.0.dev465/ommlds/cli/state}/__init__.py +0 -0
  171. /ommlds-0.0.0.dev463/ommlds/cli/state.py → /ommlds-0.0.0.dev465/ommlds/cli/state/storage.py +0 -0
  172. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/datasets/__init__.py +0 -0
  173. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/datasets/lib/__init__.py +0 -0
  174. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/datasets/lib/movies.py +0 -0
  175. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/huggingface.py +0 -0
  176. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/__init__.py +0 -0
  177. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/_marshal.py +0 -0
  178. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/_typedvalues.py +0 -0
  179. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/__init__.py +0 -0
  180. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/catalogs/__init__.py +0 -0
  181. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/catalogs/base.py +0 -0
  182. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/catalogs/simple.py +0 -0
  183. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/catalogs/strings.py +0 -0
  184. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/__init__.py +0 -0
  185. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/anthropic/__init__.py +0 -0
  186. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/anthropic/names.py +0 -0
  187. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/duckduckgo/__init__.py +0 -0
  188. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/duckduckgo/search.py +0 -0
  189. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/google/__init__.py +0 -0
  190. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/google/chat.py +0 -0
  191. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/google/names.py +0 -0
  192. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/google/search.py +0 -0
  193. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/google/stream.py +0 -0
  194. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/google/tools.py +0 -0
  195. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/huggingface/__init__.py +0 -0
  196. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/huggingface/configs.py +0 -0
  197. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/huggingface/repos.py +0 -0
  198. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/llamacpp/__init__.py +0 -0
  199. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/llamacpp/chat.py +0 -0
  200. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/llamacpp/completion.py +0 -0
  201. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/llamacpp/format.py +0 -0
  202. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/llamacpp/stream.py +0 -0
  203. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/mistral.py +0 -0
  204. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/mlx/__init__.py +0 -0
  205. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/mlx/chat.py +0 -0
  206. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/openai/__init__.py +0 -0
  207. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/openai/chat.py +0 -0
  208. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/openai/completion.py +0 -0
  209. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/openai/embedding.py +0 -0
  210. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/openai/format.py +0 -0
  211. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/openai/format2.py +0 -0
  212. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/openai/names.py +0 -0
  213. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/openai/stream.py +0 -0
  214. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/sentencepiece/__init__.py +0 -0
  215. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/sentencepiece/tokens.py +0 -0
  216. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/sqlite.py +0 -0
  217. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/tinygrad/__init__.py +0 -0
  218. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/tinygrad/chat.py +0 -0
  219. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/tokenizers/__init__.py +0 -0
  220. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/tokenizers/tokens.py +0 -0
  221. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/transformers/__init__.py +0 -0
  222. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/transformers/sentence.py +0 -0
  223. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/transformers/tokens.py +0 -0
  224. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/impls/transformers/transformers.py +0 -0
  225. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/strings/__init__.py +0 -0
  226. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/strings/manifests.py +0 -0
  227. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/strings/parsing.py +0 -0
  228. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/backends/strings/resolving.py +0 -0
  229. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/__init__.py +0 -0
  230. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/_marshal.py +0 -0
  231. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/choices/__init__.py +0 -0
  232. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/choices/adapters.py +0 -0
  233. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/choices/services.py +0 -0
  234. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/choices/types.py +0 -0
  235. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/formats.py +0 -0
  236. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/history.py +0 -0
  237. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/messages.py +0 -0
  238. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/metadata.py +0 -0
  239. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/services.py +0 -0
  240. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/stream/__init__.py +0 -0
  241. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/stream/_marshal.py +0 -0
  242. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/stream/adapters.py +0 -0
  243. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/stream/services.py +0 -0
  244. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/stream/types.py +0 -0
  245. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/templating.py +0 -0
  246. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/tools/__init__.py +0 -0
  247. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/tools/execution.py +0 -0
  248. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/tools/ids.py +0 -0
  249. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/tools/parsing.py +0 -0
  250. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/tools/types.py +0 -0
  251. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/transforms/__init__.py +0 -0
  252. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/transforms/base.py +0 -0
  253. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/transforms/metadata.py +0 -0
  254. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/transforms/services.py +0 -0
  255. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/chat/types.py +0 -0
  256. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/completion.py +0 -0
  257. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/configs.py +0 -0
  258. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/__init__.py +0 -0
  259. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/_marshal.py +0 -0
  260. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/images.py +0 -0
  261. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/json.py +0 -0
  262. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/materialize.py +0 -0
  263. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/metadata.py +0 -0
  264. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/namespaces.py +0 -0
  265. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/placeholders.py +0 -0
  266. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/prepare.py +0 -0
  267. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/sequence.py +0 -0
  268. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/simple.py +0 -0
  269. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/text.py +0 -0
  270. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/transforms/__init__.py +0 -0
  271. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/transforms/base.py +0 -0
  272. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/transforms/interleave.py +0 -0
  273. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/transforms/squeeze.py +0 -0
  274. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/transforms/stringify.py +0 -0
  275. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/transforms/strings.py +0 -0
  276. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/content/types.py +0 -0
  277. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/docs/__init__.py +0 -0
  278. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/docs/docs.py +0 -0
  279. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/docs/dtypes.py +0 -0
  280. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/docs/filters.py +0 -0
  281. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/envs.py +0 -0
  282. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/json.py +0 -0
  283. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/__init__.py +0 -0
  284. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/bash.py +0 -0
  285. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/code/__init__.py +0 -0
  286. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/code/prompts.py +0 -0
  287. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/__init__.py +0 -0
  288. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/binfiles.py +0 -0
  289. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/context.py +0 -0
  290. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/errors.py +0 -0
  291. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/suggestions.py +0 -0
  292. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/tools/__init__.py +0 -0
  293. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/tools/edit.py +0 -0
  294. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/tools/ls.py +0 -0
  295. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/tools/read.py +0 -0
  296. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/tools/recursivels/__init__.py +0 -0
  297. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/tools/recursivels/execution.py +0 -0
  298. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/tools/recursivels/rendering.py +0 -0
  299. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/fs/tools/recursivels/running.py +0 -0
  300. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/todo/__init__.py +0 -0
  301. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/todo/context.py +0 -0
  302. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/todo/tools/__init__.py +0 -0
  303. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/todo/tools/read.py +0 -0
  304. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/todo/tools/write.py +0 -0
  305. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/lib/todo/types.py +0 -0
  306. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/llms/__init__.py +0 -0
  307. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/llms/_marshal.py +0 -0
  308. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/llms/tokens.py +0 -0
  309. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/llms/types.py +0 -0
  310. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/metadata.py +0 -0
  311. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/models/__init__.py +0 -0
  312. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/models/configs.py +0 -0
  313. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/models/names.py +0 -0
  314. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/models/repos/__init__.py +0 -0
  315. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/models/repos/resolving.py +0 -0
  316. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/registries/__init__.py +0 -0
  317. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/registries/globals.py +0 -0
  318. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/registries/manifests.py +0 -0
  319. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/registries/registry.py +0 -0
  320. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/resources.py +0 -0
  321. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/search.py +0 -0
  322. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/services/__init__.py +0 -0
  323. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/services/_marshal.py +0 -0
  324. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/services/_origclasses.py +0 -0
  325. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/services/_typedvalues.py +0 -0
  326. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/services/facades.py +0 -0
  327. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/services/requests.py +0 -0
  328. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/services/responses.py +0 -0
  329. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/services/services.py +0 -0
  330. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/standard.py +0 -0
  331. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/stream/__init__.py +0 -0
  332. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/stream/services.py +0 -0
  333. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/stream/wrap.py +0 -0
  334. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/__init__.py +0 -0
  335. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/applypatch.py +0 -0
  336. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/toolparsing/__init__.py +0 -0
  337. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/toolparsing/base.py +0 -0
  338. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/toolparsing/dumb.py +0 -0
  339. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/toolparsing/llamacpp/LICENSE +0 -0
  340. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/toolparsing/llamacpp/__init__.py +0 -0
  341. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/toolparsing/llamacpp/hermes2.py +0 -0
  342. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/toolparsing/llamacpp/llama31.py +0 -0
  343. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/toolparsing/llamacpp/types.py +0 -0
  344. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/text/toolparsing/llamacpp/utils.py +0 -0
  345. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tokens/__init__.py +0 -0
  346. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tokens/specials.py +0 -0
  347. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tokens/tokenizers.py +0 -0
  348. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tokens/types.py +0 -0
  349. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tokens/vocabs.py +0 -0
  350. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/__init__.py +0 -0
  351. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/_marshal.py +0 -0
  352. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/execution/__init__.py +0 -0
  353. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/execution/catalog.py +0 -0
  354. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/execution/context.py +0 -0
  355. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/execution/errors.py +0 -0
  356. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/execution/executors.py +0 -0
  357. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/execution/reflect.py +0 -0
  358. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/fns.py +0 -0
  359. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/jsonschema.py +0 -0
  360. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/reflect.py +0 -0
  361. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/tools/types.py +0 -0
  362. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/types.py +0 -0
  363. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/utils.py +0 -0
  364. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/vectors/__init__.py +0 -0
  365. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/vectors/_marshal.py +0 -0
  366. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/vectors/embeddings.py +0 -0
  367. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/vectors/index.py +0 -0
  368. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/vectors/search.py +0 -0
  369. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/vectors/similarity.py +0 -0
  370. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/vectors/stores.py +0 -0
  371. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/minichain/vectors/types.py +0 -0
  372. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/server/__init__.py +0 -0
  373. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/server/__main__.py +0 -0
  374. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/server/cli.py +0 -0
  375. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/server/client.py +0 -0
  376. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/server/server.py +0 -0
  377. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/server/service.py +0 -0
  378. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/tools/__init__.py +0 -0
  379. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/tools/git.py +0 -0
  380. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/tools/ocr.py +0 -0
  381. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/__init__.py +0 -0
  382. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/analyze.py +0 -0
  383. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/convert.py +0 -0
  384. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/models.py +0 -0
  385. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/text/__init__.py +0 -0
  386. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/text/mfh.py +0 -0
  387. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/text/wtp.py +0 -0
  388. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/utils/__init__.py +0 -0
  389. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/utils/io.py +0 -0
  390. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/utils/progress.py +0 -0
  391. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/utils/xml.py +0 -0
  392. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds/wiki/xml.py +0 -0
  393. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds.egg-info/dependency_links.txt +0 -0
  394. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds.egg-info/entry_points.txt +0 -0
  395. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/ommlds.egg-info/top_level.txt +0 -0
  396. {ommlds-0.0.0.dev463 → ommlds-0.0.0.dev465}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommlds
3
- Version: 0.0.0.dev463
3
+ Version: 0.0.0.dev465
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.dev463
18
- Requires-Dist: omlish==0.0.0.dev463
17
+ Requires-Dist: omdev==0.0.0.dev465
18
+ Requires-Dist: omlish==0.0.0.dev465
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"
@@ -18,7 +18,7 @@
18
18
  "module": ".minichain.backends.impls.anthropic.chat",
19
19
  "attr": null,
20
20
  "file": "ommlds/minichain/backends/impls/anthropic/chat.py",
21
- "line": 39,
21
+ "line": 38,
22
22
  "value": {
23
23
  "!.minichain.registries.manifests.RegistryManifest": {
24
24
  "module": "ommlds.minichain.backends.impls.anthropic.chat",
@@ -63,7 +63,7 @@
63
63
  "module": ".minichain.backends.impls.anthropic.stream",
64
64
  "attr": null,
65
65
  "file": "ommlds/minichain/backends/impls/anthropic/stream.py",
66
- "line": 33,
66
+ "line": 35,
67
67
  "value": {
68
68
  "!.minichain.registries.manifests.RegistryManifest": {
69
69
  "module": "ommlds.minichain.backends.impls.anthropic.stream",
@@ -0,0 +1,37 @@
1
+ import typing as ta
2
+
3
+ from omlish import inject as inj
4
+ from omlish import lang
5
+
6
+
7
+ with lang.auto_proxy_import(globals()):
8
+ from .backends import inject as _backends
9
+ from .sessions import inject as _sessions
10
+ from .state import inject as _state
11
+
12
+
13
+ ##
14
+
15
+
16
+ def bind_main(
17
+ *,
18
+ session_cfg: ta.Any,
19
+ enable_backend_strings: bool = False,
20
+ ) -> inj.Elements:
21
+ els: list[inj.Elemental] = []
22
+
23
+ #
24
+
25
+ els.extend([
26
+ _backends.bind_backends(
27
+ enable_backend_strings=enable_backend_strings,
28
+ ),
29
+
30
+ _sessions.bind_sessions(session_cfg),
31
+
32
+ _state.bind_state(),
33
+ ])
34
+
35
+ #
36
+
37
+ return inj.as_elements(*els)
@@ -24,13 +24,9 @@ from omlish.subprocesses.sync import subprocesses
24
24
  from .. import minichain as mc
25
25
  from .inject import bind_main
26
26
  from .sessions.base import Session
27
- from .sessions.chat.code import CodeChatSession
28
- from .sessions.chat.interactive import InteractiveChatSession
29
- from .sessions.chat.prompt import PromptChatSession
30
- from .sessions.chat2.session import Chat2Session
31
- from .sessions.completion.completion import CompletionSession
32
- from .sessions.embedding.embedding import EmbeddingSession
33
- from .tools.config import ToolsConfig
27
+ from .sessions.chat.configs import ChatConfig
28
+ from .sessions.completion.configs import CompletionConfig
29
+ from .sessions.embedding.configs import EmbeddingConfig
34
30
 
35
31
 
36
32
  if ta.TYPE_CHECKING:
@@ -57,6 +53,7 @@ async def _a_main(args: ta.Any = None) -> None:
57
53
  parser.add_argument('-C', '--completion', action='store_true')
58
54
 
59
55
  parser.add_argument('-n', '--new', action='store_true')
56
+ parser.add_argument('--ephemeral', action='store_true')
60
57
 
61
58
  parser.add_argument('-e', '--editor', action='store_true')
62
59
  parser.add_argument('-i', '--interactive', action='store_true')
@@ -67,8 +64,6 @@ async def _a_main(args: ta.Any = None) -> None:
67
64
  parser.add_argument('-E', '--embed', action='store_true')
68
65
  parser.add_argument('-j', '--image', action='store_true')
69
66
 
70
- parser.add_argument('-2', '--two', action='store_true')
71
-
72
67
  parser.add_argument('--enable-fs-tools', action='store_true')
73
68
  parser.add_argument('--enable-todo-tools', action='store_true')
74
69
  parser.add_argument('--enable-unsafe-tools-do-not-use-lol', action='store_true')
@@ -93,6 +88,7 @@ async def _a_main(args: ta.Any = None) -> None:
93
88
  elif args.interactive:
94
89
  if args.prompt:
95
90
  raise ValueError('Must not provide prompt')
91
+ content = None
96
92
 
97
93
  elif args.code:
98
94
  if args.prompt:
@@ -129,77 +125,56 @@ async def _a_main(args: ta.Any = None) -> None:
129
125
 
130
126
  #
131
127
 
132
- session_cfg: Session.Config
128
+ session_cfg: ta.Any
133
129
 
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:
144
- session_cfg = InteractiveChatSession.Config(
145
- backend=args.backend,
146
- model_name=args.model_name,
147
- new=bool(args.new),
148
- dangerous_no_tool_confirmation=bool(args.dangerous_no_tool_confirmation),
149
- )
150
-
151
- elif args.code:
152
- session_cfg = CodeChatSession.Config(
153
- backend=args.backend,
154
- model_name=args.model_name,
155
- new=bool(args.new),
156
- dangerous_no_tool_confirmation=bool(args.dangerous_no_tool_confirmation),
157
- initial_message=content, # noqa
158
- markdown=bool(args.markdown),
159
- )
160
-
161
- elif args.embed:
162
- session_cfg = EmbeddingSession.Config(
130
+ if args.embed:
131
+ session_cfg = EmbeddingConfig(
163
132
  check.not_none(content), # noqa
164
133
  backend=args.backend,
165
134
  )
166
135
 
167
136
  elif args.completion:
168
- session_cfg = CompletionSession.Config(
137
+ session_cfg = CompletionConfig(
169
138
  check.not_none(content), # noqa
170
139
  backend=args.backend,
171
140
  )
172
141
 
173
142
  else:
174
- session_cfg = PromptChatSession.Config(
175
- check.not_none(content), # noqa
143
+ system_content: mc.Content | None = None
144
+ if (args.new or args.ephemeral) and args.code:
145
+ from ..minichain.lib.code.prompts import CODE_AGENT_SYSTEM_PROMPT
146
+ system_content = CODE_AGENT_SYSTEM_PROMPT
147
+
148
+ session_cfg = ChatConfig(
176
149
  backend=args.backend,
177
150
  model_name=args.model_name,
178
- new=bool(args.new),
179
- stream=bool(args.stream),
151
+ state='ephemeral' if args.ephemeral else 'new' if args.new else 'continue',
152
+ initial_system_content=system_content,
153
+ initial_user_content=content, # noqa
154
+ interactive=bool(args.interactive),
180
155
  markdown=bool(args.markdown),
156
+ stream=bool(args.stream),
157
+ enable_tools=(
158
+ args.enable_fs_tools or
159
+ args.enable_todo_tools or
160
+ args.enable_unsafe_tools_do_not_use_lol or
161
+ args.enable_test_weather_tool or
162
+ args.code
163
+ ),
164
+ enabled_tools={
165
+ *(['fs'] if args.enable_fs_tools else []),
166
+ *(['todo'] if args.enable_todo_tools else []),
167
+ *(['weather'] if args.enable_test_weather_tool else []),
168
+ # FIXME: enable_unsafe_tools_do_not_use_lol
169
+ },
181
170
  dangerous_no_tool_confirmation=bool(args.dangerous_no_tool_confirmation),
182
171
  )
183
172
 
184
173
  #
185
174
 
186
- tools_config = ToolsConfig(
187
- enable_fs_tools=args.enable_fs_tools or args.code,
188
- enable_todo_tools=args.enable_todo_tools or args.code,
189
- enable_unsafe_tools_do_not_use_lol=args.enable_unsafe_tools_do_not_use_lol,
190
- enable_test_weather_tool=args.enable_test_weather_tool,
191
- )
192
-
193
- #
194
-
195
175
  with inj.create_managed_injector(bind_main(
196
176
  session_cfg=session_cfg,
197
- tools_config=tools_config,
198
- enable_backend_strings=isinstance(session_cfg, (
199
- Chat2Session.Config,
200
- CodeChatSession.Config,
201
- PromptChatSession.Config,
202
- )),
177
+ enable_backend_strings=isinstance(session_cfg, ChatConfig),
203
178
  )) as injector:
204
179
  await injector[Session].run()
205
180
 
@@ -20,7 +20,7 @@ class _CatalogBackendProvider(BackendProvider[ServiceT], lang.Abstract):
20
20
  self,
21
21
  *,
22
22
  name: BackendName,
23
- catalog: mc.BackendCatalog,
23
+ catalog: 'mc.BackendCatalog',
24
24
  configs: BackendConfigs | None = None,
25
25
  ) -> None:
26
26
  super().__init__()
@@ -41,16 +41,16 @@ class _CatalogBackendProvider(BackendProvider[ServiceT], lang.Abstract):
41
41
 
42
42
 
43
43
  class CatalogChatChoicesServiceBackendProvider(
44
- _CatalogBackendProvider[mc.ChatChoicesService],
44
+ _CatalogBackendProvider['mc.ChatChoicesService'],
45
45
  ChatChoicesServiceBackendProvider,
46
46
  ):
47
- def provide_backend(self) -> ta.AsyncContextManager[mc.ChatChoicesService]:
47
+ def provide_backend(self) -> ta.AsyncContextManager['mc.ChatChoicesService']:
48
48
  return self._provide_backend(mc.ChatChoicesService) # type: ignore[type-abstract]
49
49
 
50
50
 
51
51
  class CatalogChatChoicesStreamServiceBackendProvider(
52
- _CatalogBackendProvider[mc.ChatChoicesStreamService],
52
+ _CatalogBackendProvider['mc.ChatChoicesStreamService'],
53
53
  ChatChoicesStreamServiceBackendProvider,
54
54
  ):
55
- def provide_backend(self) -> ta.AsyncContextManager[mc.ChatChoicesStreamService]:
55
+ def provide_backend(self) -> ta.AsyncContextManager['mc.ChatChoicesStreamService']:
56
56
  return self._provide_backend(mc.ChatChoicesStreamService) # type: ignore[type-abstract]
@@ -0,0 +1,37 @@
1
+ from omlish import inject as inj
2
+ from omlish import lang
3
+
4
+ from .injection import backend_configs
5
+
6
+
7
+ with lang.auto_proxy_import(globals()):
8
+ from . import catalog as _catalog
9
+ from . import types as _types
10
+
11
+
12
+ ##
13
+
14
+
15
+ def bind_backends(
16
+ *,
17
+ backend: str | None = None,
18
+ ) -> inj.Elements:
19
+ els: list[inj.Elemental] = []
20
+
21
+ #
22
+
23
+ els.append(backend_configs().bind_items_provider(singleton=True))
24
+
25
+ #
26
+
27
+ if backend is not None:
28
+ els.append(inj.bind(_types.BackendName, to_const=backend))
29
+
30
+ els.extend([
31
+ inj.bind(_types.ChatChoicesServiceBackendProvider, to_ctor=_catalog.CatalogChatChoicesServiceBackendProvider, singleton=True), # noqa
32
+ inj.bind(_types.ChatChoicesStreamServiceBackendProvider, to_ctor=_catalog.CatalogChatChoicesStreamServiceBackendProvider, singleton=True), # noqa
33
+ ])
34
+
35
+ #
36
+
37
+ return inj.as_elements(*els)
@@ -0,0 +1,16 @@
1
+ from omlish import inject as inj
2
+ from omlish import lang
3
+
4
+ from ..... import minichain as mc
5
+
6
+
7
+ with lang.auto_proxy_import(globals()):
8
+ from . import types as _types
9
+
10
+
11
+ ##
12
+
13
+
14
+ @lang.cached_function
15
+ def backend_configs() -> 'inj.ItemsBinderHelper[mc.Config]':
16
+ return inj.items_binder_helper[mc.Config](_types.BackendConfigs)
@@ -13,7 +13,7 @@ ServiceT = ta.TypeVar('ServiceT', bound=mc.Service)
13
13
 
14
14
 
15
15
  BackendName = ta.NewType('BackendName', str)
16
- BackendConfigs = ta.NewType('BackendConfigs', ta.Sequence[mc.Config])
16
+ BackendConfigs = ta.NewType('BackendConfigs', ta.Sequence['mc.Config'])
17
17
 
18
18
 
19
19
  ##
@@ -28,9 +28,9 @@ class BackendProvider(lang.Abstract, ta.Generic[ServiceT]):
28
28
  ##
29
29
 
30
30
 
31
- class ChatChoicesServiceBackendProvider(BackendProvider[mc.ChatChoicesService], lang.Abstract):
31
+ class ChatChoicesServiceBackendProvider(BackendProvider['mc.ChatChoicesService'], lang.Abstract):
32
32
  pass
33
33
 
34
34
 
35
- class ChatChoicesStreamServiceBackendProvider(BackendProvider[mc.ChatChoicesStreamService], lang.Abstract):
35
+ class ChatChoicesStreamServiceBackendProvider(BackendProvider['mc.ChatChoicesStreamService'], lang.Abstract):
36
36
  pass
@@ -0,0 +1,78 @@
1
+ from omlish import inject as inj
2
+ from omlish import lang
3
+
4
+ from ...... import minichain as mc
5
+ from .injection import chat_options_providers
6
+
7
+
8
+ with lang.auto_proxy_import(globals()):
9
+ from . import rendering as _rendering
10
+ from . import services as _services
11
+ from . import tools as _tools
12
+ from . import types as _types
13
+
14
+
15
+ ##
16
+
17
+
18
+ def bind_ai(
19
+ *,
20
+ stream: bool = False,
21
+ silent: bool = False,
22
+ enable_tools: bool = False,
23
+ ) -> inj.Elements:
24
+ els: list[inj.Elemental] = []
25
+
26
+ #
27
+
28
+ els.append(chat_options_providers().bind_items_provider(singleton=True))
29
+
30
+ def _provide_chat_choices_options_provider(
31
+ ps: _services.ChatChoicesServiceOptionsProviders,
32
+ ) -> _services.ChatChoicesServiceOptionsProvider:
33
+ return _services.ChatChoicesServiceOptionsProvider(lambda: [o for p in ps for o in p()])
34
+
35
+ els.append(inj.bind(_provide_chat_choices_options_provider, singleton=True))
36
+
37
+ #
38
+
39
+ ai_stack = inj.wrapper_binder_helper(_types.AiChatGenerator)
40
+
41
+ if stream:
42
+ stream_ai_stack = inj.wrapper_binder_helper(_types.StreamAiChatGenerator)
43
+
44
+ els.append(stream_ai_stack.push_bind(to_ctor=_services.ChatChoicesStreamServiceStreamAiChatGenerator, singleton=True)) # noqa
45
+
46
+ if not silent:
47
+ els.append(stream_ai_stack.push_bind(to_ctor=_rendering.RenderingStreamAiChatGenerator, singleton=True))
48
+
49
+ els.extend([
50
+ inj.bind(_types.StreamAiChatGenerator, to_key=stream_ai_stack.top),
51
+ ai_stack.push_bind(to_key=_types.StreamAiChatGenerator),
52
+ ])
53
+
54
+ else:
55
+ els.append(ai_stack.push_bind(to_ctor=_services.ChatChoicesServiceAiChatGenerator, singleton=True))
56
+
57
+ if not silent:
58
+ els.append(ai_stack.push_bind(to_ctor=_rendering.RenderingAiChatGenerator, singleton=True))
59
+
60
+ if enable_tools:
61
+ els.append(ai_stack.push_bind(to_ctor=_tools.ToolExecutingAiChatGenerator, singleton=True))
62
+
63
+ els.append(inj.bind(_types.AiChatGenerator, to_key=ai_stack.top))
64
+
65
+ #
66
+
67
+ if enable_tools:
68
+ def _provide_tools_chat_choices_options_provider(tc: mc.ToolCatalog) -> _services.ChatChoicesServiceOptionsProvider: # noqa
69
+ return _services.ChatChoicesServiceOptionsProvider(lambda: [
70
+ mc.Tool(tce.spec)
71
+ for tce in tc.by_name.values()
72
+ ])
73
+
74
+ els.append(chat_options_providers().bind_item(to_fn=_provide_tools_chat_choices_options_provider, singleton=True)) # noqa
75
+
76
+ #
77
+
78
+ return inj.as_elements(*els)
@@ -0,0 +1,14 @@
1
+ from omlish import inject as inj
2
+ from omlish import lang
3
+
4
+
5
+ with lang.auto_proxy_import(globals()):
6
+ from . import services as _services
7
+
8
+
9
+ ##
10
+
11
+
12
+ @lang.cached_function
13
+ def chat_options_providers() -> 'inj.ItemsBinderHelper[_services.ChatChoicesServiceOptionsProvider]':
14
+ return inj.items_binder_helper[_services.ChatChoicesServiceOptionsProvider](_services.ChatChoicesServiceOptionsProviders) # noqa
@@ -4,6 +4,7 @@ from ...... import minichain as mc
4
4
  from ...content.messages import MessageContentExtractor
5
5
  from ...content.messages import MessageContentExtractorImpl
6
6
  from ...rendering.types import ContentRendering
7
+ from ...rendering.types import StreamContentRendering
7
8
  from .types import AiChatGenerator
8
9
  from .types import StreamAiChatGenerator
9
10
 
@@ -27,7 +28,7 @@ class RenderingAiChatGenerator(AiChatGenerator):
27
28
  self._extractor = extractor
28
29
  self._renderer = renderer
29
30
 
30
- async def get_next_ai_messages(self, chat: mc.Chat) -> mc.AiChat:
31
+ async def get_next_ai_messages(self, chat: 'mc.Chat') -> 'mc.Chat':
31
32
  out = await self._wrapped.get_next_ai_messages(chat)
32
33
 
33
34
  for msg in out:
@@ -43,7 +44,7 @@ class RenderingStreamAiChatGenerator(StreamAiChatGenerator):
43
44
  *,
44
45
  wrapped: StreamAiChatGenerator,
45
46
  extractor: MessageContentExtractor | None = None,
46
- renderer: ContentRendering,
47
+ renderer: StreamContentRendering,
47
48
  ) -> None:
48
49
  super().__init__()
49
50
 
@@ -55,13 +56,15 @@ class RenderingStreamAiChatGenerator(StreamAiChatGenerator):
55
56
 
56
57
  async def get_next_ai_messages_streamed(
57
58
  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
59
+ chat: 'mc.Chat',
60
+ delta_callback: ta.Callable[['mc.AiChoiceDelta'], ta.Awaitable[None]] | None = None,
61
+ ) -> mc.Chat:
62
+ async with self._renderer.create_context() as renderer:
63
+ async def inner(delta: mc.AiChoiceDelta) -> None:
64
+ if isinstance(delta, mc.ContentAiChoiceDelta):
65
+ await renderer.render_content(delta.c)
63
66
 
64
- if delta_callback is not None:
65
- await delta_callback(delta)
67
+ if delta_callback is not None:
68
+ await delta_callback(delta)
66
69
 
67
- return await self._wrapped.get_next_ai_messages_streamed(chat, delta_callback=inner)
70
+ return await self._wrapped.get_next_ai_messages_streamed(chat, delta_callback=inner)
@@ -0,0 +1,81 @@
1
+ import typing as ta
2
+
3
+ from omlish import check
4
+ from omlish import lang
5
+
6
+ from ...... import minichain as mc
7
+ from ...backends.types import ChatChoicesServiceBackendProvider
8
+ from ...backends.types import ChatChoicesStreamServiceBackendProvider
9
+ from .types import AiChatGenerator
10
+ from .types import StreamAiChatGenerator
11
+
12
+
13
+ ##
14
+
15
+
16
+ class ChatChoicesServiceOptionsProvider(lang.Func0[ta.Sequence['mc.ChatChoicesOptions']]):
17
+ pass
18
+
19
+
20
+ ChatChoicesServiceOptionsProviders = ta.NewType('ChatChoicesServiceOptionsProviders', ta.Sequence[ChatChoicesServiceOptionsProvider]) # noqa
21
+
22
+
23
+ ##
24
+
25
+
26
+ class ChatChoicesServiceAiChatGenerator(AiChatGenerator):
27
+ def __init__(
28
+ self,
29
+ service_provider: ChatChoicesServiceBackendProvider,
30
+ *,
31
+ options: ChatChoicesServiceOptionsProvider | None = None,
32
+ ) -> None:
33
+ super().__init__()
34
+
35
+ self._service_provider = service_provider
36
+ self._options = options
37
+
38
+ async def get_next_ai_messages(self, chat: 'mc.Chat') -> 'mc.Chat':
39
+ opts = self._options() if self._options is not None else []
40
+
41
+ async with self._service_provider.provide_backend() as service:
42
+ resp = await service.invoke(mc.ChatChoicesRequest(chat, opts))
43
+
44
+ return check.single(resp.v).ms
45
+
46
+
47
+ class ChatChoicesStreamServiceStreamAiChatGenerator(StreamAiChatGenerator):
48
+ def __init__(
49
+ self,
50
+ service_provider: ChatChoicesStreamServiceBackendProvider,
51
+ *,
52
+ options: ChatChoicesServiceOptionsProvider | None = None,
53
+ ) -> None:
54
+ super().__init__()
55
+
56
+ self._service_provider = service_provider
57
+ self._options = options
58
+
59
+ async def get_next_ai_messages_streamed(
60
+ self,
61
+ chat: 'mc.Chat',
62
+ delta_callback: ta.Callable[['mc.AiChoiceDelta'], ta.Awaitable[None]] | None = None,
63
+ ) -> mc.AiChat:
64
+ opts = self._options() if self._options is not None else []
65
+
66
+ lst: list[str] = []
67
+
68
+ async with self._service_provider.provide_backend() as service:
69
+ async with (await service.invoke(mc.ChatChoicesStreamRequest(chat, opts))).v as st_resp:
70
+ async for o in st_resp:
71
+ choice = check.single(o.choices)
72
+
73
+ for delta in choice.deltas:
74
+ if delta_callback is not None:
75
+ await delta_callback(delta)
76
+
77
+ c = check.isinstance(delta, mc.ContentAiChoiceDelta).c # noqa
78
+ if c is not None:
79
+ lst.append(check.isinstance(c, str))
80
+
81
+ return [mc.AiMessage(''.join(lst))]
@@ -0,0 +1,44 @@
1
+ from ...... import minichain as mc
2
+ from ...tools.execution import ToolUseExecutor
3
+ from .types import AiChatGenerator
4
+
5
+
6
+ ##
7
+
8
+
9
+ class ToolExecutingAiChatGenerator(AiChatGenerator):
10
+ def __init__(
11
+ self,
12
+ *,
13
+ wrapped: AiChatGenerator,
14
+ executor: ToolUseExecutor,
15
+ ) -> None:
16
+ super().__init__()
17
+
18
+ self._wrapped = wrapped
19
+ self._executor = executor
20
+
21
+ async def get_next_ai_messages(self, chat: 'mc.Chat') -> 'mc.Chat':
22
+ out: list[mc.Message] = []
23
+
24
+ while True:
25
+ new = await self._wrapped.get_next_ai_messages([*chat, *out])
26
+
27
+ out.extend(new)
28
+
29
+ cont = False
30
+
31
+ for msg in new:
32
+ if isinstance(msg, mc.ToolUseMessage):
33
+ trm = await self._executor.execute_tool_use(
34
+ msg.tu,
35
+ # fs_tool_context,
36
+ # todo_tool_context, # noqa
37
+ )
38
+
39
+ out.append(trm)
40
+
41
+ cont = True
42
+
43
+ if not cont:
44
+ return out
@@ -11,18 +11,18 @@ from ...... import minichain as mc
11
11
 
12
12
  class AiChatGenerator(lang.Abstract):
13
13
  @abc.abstractmethod
14
- def get_next_ai_messages(self, chat: mc.Chat) -> ta.Awaitable[mc.AiChat]:
14
+ def get_next_ai_messages(self, chat: 'mc.Chat') -> ta.Awaitable['mc.Chat']:
15
15
  raise NotImplementedError
16
16
 
17
17
 
18
18
  class StreamAiChatGenerator(AiChatGenerator, lang.Abstract):
19
- def get_next_ai_messages(self, chat: mc.Chat) -> ta.Awaitable[mc.AiChat]:
19
+ def get_next_ai_messages(self, chat: 'mc.Chat') -> ta.Awaitable['mc.Chat']:
20
20
  return self.get_next_ai_messages_streamed(chat)
21
21
 
22
22
  @abc.abstractmethod
23
23
  def get_next_ai_messages_streamed(
24
24
  self,
25
- chat: mc.Chat,
26
- delta_callback: ta.Callable[[mc.AiChoiceDelta], ta.Awaitable[None]] | None = None,
27
- ) -> ta.Awaitable[mc.AiChat]:
25
+ chat: 'mc.Chat',
26
+ delta_callback: ta.Callable[['mc.AiChoiceDelta'], ta.Awaitable[None]] | None = None,
27
+ ) -> ta.Awaitable['mc.Chat']:
28
28
  raise NotImplementedError
@@ -0,0 +1,40 @@
1
+ import typing as ta
2
+
3
+ from omlish import inject as inj
4
+ from omlish import lang
5
+
6
+ from ...phases.injection import phase_callbacks
7
+ from ...phases.types import ChatPhase
8
+ from ...phases.types import ChatPhaseCallback
9
+
10
+
11
+ with lang.auto_proxy_import(globals()):
12
+ from . import inmemory as _inmemory
13
+ from . import storage as _storage
14
+ from . import types as _types
15
+
16
+
17
+ ##
18
+
19
+
20
+ def bind_state(
21
+ *,
22
+ state: ta.Literal['new', 'continue', 'ephemeral'] = 'continue',
23
+ ) -> inj.Elements:
24
+ els: list[inj.Elemental] = []
25
+
26
+ if state in ('continue', 'new'):
27
+ els.append(inj.bind(_types.ChatStateManager, to_ctor=_storage.StateStorageChatStateManager, singleton=True))
28
+
29
+ if state == 'new':
30
+ els.append(phase_callbacks().bind_item(to_fn=lang.typed_lambda(cm=_types.ChatStateManager)(
31
+ lambda cm: ChatPhaseCallback(ChatPhase.STARTING, cm.clear_state),
32
+ )))
33
+
34
+ elif state == 'ephemeral':
35
+ els.append(inj.bind(_types.ChatStateManager, to_ctor=_inmemory.InMemoryChatStateManager, singleton=True))
36
+
37
+ else:
38
+ raise TypeError(state)
39
+
40
+ return inj.as_elements(*els)
@@ -25,7 +25,7 @@ class InMemoryChatStateManager(ChatStateManager):
25
25
  self._state = ChatState()
26
26
  return self._state
27
27
 
28
- async def extend_chat(self, chat_additions: mc.Chat) -> ChatState:
28
+ async def extend_chat(self, chat_additions: 'mc.Chat') -> ChatState:
29
29
  self._state = dc.replace(
30
30
  self._state,
31
31
  chat=[*self._state.chat, *chat_additions],