ommlds 0.0.0.dev504__tar.gz → 0.0.0.dev505__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. {ommlds-0.0.0.dev504/ommlds.egg-info → ommlds-0.0.0.dev505}/PKG-INFO +6 -6
  2. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/__about__.py +1 -1
  3. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/_dataclasses.py +170 -1
  4. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/app.py +34 -0
  5. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/configs.py +1 -1
  6. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/inject.py +14 -0
  7. ommlds-0.0.0.dev505/ommlds/cli/sessions/chat/interfaces/textual/inputhistory.py +174 -0
  8. ommlds-0.0.0.dev505/ommlds/cli/sessions/chat/interfaces/textual/widgets/input.py +70 -0
  9. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505/ommlds.egg-info}/PKG-INFO +6 -6
  10. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds.egg-info/SOURCES.txt +1 -0
  11. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds.egg-info/requires.txt +5 -5
  12. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/pyproject.toml +6 -6
  13. ommlds-0.0.0.dev504/ommlds/cli/sessions/chat/interfaces/textual/widgets/input.py +0 -36
  14. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/LICENSE +0 -0
  15. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/MANIFEST.in +0 -0
  16. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/README.md +0 -0
  17. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/.omlish-manifests.json +0 -0
  18. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/README.md +0 -0
  19. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/__init__.py +0 -0
  20. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/_hacks/__init__.py +0 -0
  21. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/_hacks/funcs.py +0 -0
  22. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/_hacks/names.py +0 -0
  23. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/_hacks/params.py +0 -0
  24. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/_hacks/patches.py +0 -0
  25. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/__init__.py +0 -0
  26. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/anthropic/__init__.py +0 -0
  27. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/anthropic/protocol/__init__.py +0 -0
  28. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/anthropic/protocol/_dataclasses.py +0 -0
  29. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/anthropic/protocol/_marshal.py +0 -0
  30. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/anthropic/protocol/sse/__init__.py +0 -0
  31. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/anthropic/protocol/sse/_marshal.py +0 -0
  32. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/anthropic/protocol/sse/assemble.py +0 -0
  33. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/anthropic/protocol/sse/events.py +0 -0
  34. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/anthropic/protocol/types.py +0 -0
  35. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/cerebras/__init__.py +0 -0
  36. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/cerebras/_dataclasses.py +0 -0
  37. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/cerebras/_marshal.py +0 -0
  38. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/cerebras/protocol.py +0 -0
  39. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/google/__init__.py +0 -0
  40. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/google/protocol/__init__.py +0 -0
  41. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/google/protocol/_dataclasses.py +0 -0
  42. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/google/protocol/_marshal.py +0 -0
  43. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/google/protocol/types.py +0 -0
  44. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/groq/__init__.py +0 -0
  45. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/groq/_dataclasses.py +0 -0
  46. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/groq/_marshal.py +0 -0
  47. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/groq/clients.py +0 -0
  48. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/groq/protocol.py +0 -0
  49. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/huggingface.py +0 -0
  50. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/llamacpp/__init__.py +0 -0
  51. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/llamacpp/buildwheel.py +0 -0
  52. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/llamacpp/logging.py +0 -0
  53. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/__init__.py +0 -0
  54. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/__main__.py +0 -0
  55. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/caching.py +0 -0
  56. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/cli.py +0 -0
  57. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/generation.py +0 -0
  58. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/limits.py +0 -0
  59. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/loading.py +0 -0
  60. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/LICENSE +0 -0
  61. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/__init__.py +0 -0
  62. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/detokenization/__init__.py +0 -0
  63. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/detokenization/base.py +0 -0
  64. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/detokenization/bpe.py +0 -0
  65. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/detokenization/naive.py +0 -0
  66. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/detokenization/spm.py +0 -0
  67. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/loading.py +0 -0
  68. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/tokenization.py +0 -0
  69. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/mlx/tokenization/types.py +0 -0
  70. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/ollama/__init__.py +0 -0
  71. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/ollama/_dataclasses.py +0 -0
  72. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/ollama/protocol.py +0 -0
  73. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/__init__.py +0 -0
  74. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/__init__.py +0 -0
  75. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/_common.py +0 -0
  76. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/_dataclasses.py +0 -0
  77. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/_marshal.py +0 -0
  78. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/chatcompletion/__init__.py +0 -0
  79. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/chatcompletion/chunk.py +0 -0
  80. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/chatcompletion/contentpart.py +0 -0
  81. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/chatcompletion/message.py +0 -0
  82. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/chatcompletion/request.py +0 -0
  83. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/chatcompletion/response.py +0 -0
  84. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/chatcompletion/responseformat.py +0 -0
  85. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/chatcompletion/tokenlogprob.py +0 -0
  86. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/openai/protocol/completionusage.py +0 -0
  87. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tavily/__init__.py +0 -0
  88. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tavily/_dataclasses.py +0 -0
  89. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tavily/protocol.py +0 -0
  90. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/__init__.py +0 -0
  91. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/LICENSE +0 -0
  92. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/__init__.py +0 -0
  93. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/__init__.py +0 -0
  94. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/__main__.py +0 -0
  95. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/attention.py +0 -0
  96. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/cli.py +0 -0
  97. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/fetch.py +0 -0
  98. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/llm.py +0 -0
  99. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/loading.py +0 -0
  100. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/quantization.py +0 -0
  101. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/sampling.py +0 -0
  102. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/tokenization.py +0 -0
  103. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/llama3/transformer.py +0 -0
  104. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/sdxl/__init__.py +0 -0
  105. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/sdxl/__main__.py +0 -0
  106. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/sdxl/cli.py +0 -0
  107. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/sdxl/clip.py +0 -0
  108. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/sdxl/sdxl.py +0 -0
  109. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/models/sdxl/unet.py +0 -0
  110. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/tinygrad/tinygrad.py +0 -0
  111. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/torch/__init__.py +0 -0
  112. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/torch/backends.py +0 -0
  113. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/torch/devices.py +0 -0
  114. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/torch/purge.py +0 -0
  115. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/transformers/__init__.py +0 -0
  116. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/transformers/filecache.py +0 -0
  117. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/backends/transformers/streamers.py +0 -0
  118. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/__init__.py +0 -0
  119. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/__main__.py +0 -0
  120. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/asyncs.py +0 -0
  121. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/backends/__init__.py +0 -0
  122. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/backends/catalog.py +0 -0
  123. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/backends/configs.py +0 -0
  124. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/backends/inject.py +0 -0
  125. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/backends/injection.py +0 -0
  126. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/backends/meta.py +0 -0
  127. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/backends/types.py +0 -0
  128. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/content/__init__.py +0 -0
  129. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/content/messages.py +0 -0
  130. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/content/strings.py +0 -0
  131. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/inject.py +0 -0
  132. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/inputs/__init__.py +0 -0
  133. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/inputs/asyncs.py +0 -0
  134. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/inputs/sync.py +0 -0
  135. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/main.py +0 -0
  136. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/rendering/__init__.py +0 -0
  137. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/rendering/configs.py +0 -0
  138. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/rendering/inject.py +0 -0
  139. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/rendering/markdown.py +0 -0
  140. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/rendering/raw.py +0 -0
  141. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/rendering/types.py +0 -0
  142. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/secrets.py +0 -0
  143. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/__init__.py +0 -0
  144. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/base.py +0 -0
  145. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/__init__.py +0 -0
  146. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/configs.py +0 -0
  147. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/__init__.py +0 -0
  148. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/ai/__init__.py +0 -0
  149. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/ai/configs.py +0 -0
  150. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/ai/events.py +0 -0
  151. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/ai/inject.py +0 -0
  152. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/ai/injection.py +0 -0
  153. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/ai/rendering.py +0 -0
  154. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/ai/services.py +0 -0
  155. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/ai/tools.py +0 -0
  156. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/ai/types.py +0 -0
  157. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/configs.py +0 -0
  158. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/events/__init__.py +0 -0
  159. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/events/inject.py +0 -0
  160. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/events/injection.py +0 -0
  161. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/events/manager.py +0 -0
  162. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/events/types.py +0 -0
  163. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/impl.py +0 -0
  164. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/inject.py +0 -0
  165. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/phases/__init__.py +0 -0
  166. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/phases/inject.py +0 -0
  167. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/phases/injection.py +0 -0
  168. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/phases/manager.py +0 -0
  169. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/phases/types.py +0 -0
  170. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/state/__init__.py +0 -0
  171. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/state/configs.py +0 -0
  172. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/state/ids.py +0 -0
  173. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/state/inject.py +0 -0
  174. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/state/inmemory.py +0 -0
  175. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/state/storage.py +0 -0
  176. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/state/types.py +0 -0
  177. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/__init__.py +0 -0
  178. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/configs.py +0 -0
  179. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/confirmation.py +0 -0
  180. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/errorhandling.py +0 -0
  181. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/execution.py +0 -0
  182. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/fs/__init__.py +0 -0
  183. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/fs/configs.py +0 -0
  184. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/fs/inject.py +0 -0
  185. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/inject.py +0 -0
  186. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/injection.py +0 -0
  187. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/rendering.py +0 -0
  188. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/todo/__init__.py +0 -0
  189. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/todo/configs.py +0 -0
  190. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/todo/inject.py +0 -0
  191. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/weather/__init__.py +0 -0
  192. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/weather/configs.py +0 -0
  193. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/weather/inject.py +0 -0
  194. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/tools/weather/tools.py +0 -0
  195. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/types.py +0 -0
  196. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/user/__init__.py +0 -0
  197. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/user/configs.py +0 -0
  198. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/drivers/user/inject.py +0 -0
  199. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/__init__.py +0 -0
  200. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/commands/__init__.py +0 -0
  201. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/commands/base.py +0 -0
  202. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/commands/configs.py +0 -0
  203. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/commands/inject.py +0 -0
  204. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/commands/injection.py +0 -0
  205. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/commands/manager.py +0 -0
  206. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/commands/simple.py +0 -0
  207. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/commands/types.py +0 -0
  208. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/configs.py +0 -0
  209. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/facade.py +0 -0
  210. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/inject.py +0 -0
  211. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/facades/ui.py +0 -0
  212. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/inject.py +0 -0
  213. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/__init__.py +0 -0
  214. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/bare/__init__.py +0 -0
  215. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/bare/configs.py +0 -0
  216. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/bare/inject.py +0 -0
  217. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/bare/interactive.py +0 -0
  218. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/bare/oneshot.py +0 -0
  219. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/bare/tools.py +0 -0
  220. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/base.py +0 -0
  221. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/configs.py +0 -0
  222. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/inject.py +0 -0
  223. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/__init__.py +0 -0
  224. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/facades.py +0 -0
  225. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/interface.py +0 -0
  226. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/styles/__init__.py +0 -0
  227. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/styles/input.tcss +0 -0
  228. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/styles/markdown.tcss +0 -0
  229. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/styles/messages.tcss +0 -0
  230. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/tools.py +0 -0
  231. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/widgets/__init__.py +0 -0
  232. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/interfaces/textual/widgets/messages.py +0 -0
  233. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/chat/session.py +0 -0
  234. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/completion/__init__.py +0 -0
  235. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/completion/configs.py +0 -0
  236. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/completion/inject.py +0 -0
  237. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/completion/session.py +0 -0
  238. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/configs.py +0 -0
  239. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/embedding/__init__.py +0 -0
  240. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/embedding/configs.py +0 -0
  241. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/embedding/inject.py +0 -0
  242. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/embedding/session.py +0 -0
  243. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/sessions/inject.py +0 -0
  244. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/state/__init__.py +0 -0
  245. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/state/inject.py +0 -0
  246. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/cli/state/storage.py +0 -0
  247. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/datasets/__init__.py +0 -0
  248. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/datasets/lib/__init__.py +0 -0
  249. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/datasets/lib/movies.py +0 -0
  250. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/__init__.py +0 -0
  251. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/_dataclasses.py +0 -0
  252. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/_marshal.py +0 -0
  253. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/_typedvalues.py +0 -0
  254. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/__init__.py +0 -0
  255. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/catalogs/__init__.py +0 -0
  256. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/catalogs/base.py +0 -0
  257. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/catalogs/simple.py +0 -0
  258. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/catalogs/strings.py +0 -0
  259. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/__init__.py +0 -0
  260. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/anthropic/__init__.py +0 -0
  261. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/anthropic/chat.py +0 -0
  262. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/anthropic/names.py +0 -0
  263. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/anthropic/protocol.py +0 -0
  264. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/anthropic/stream.py +0 -0
  265. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/cerebras/__init__.py +0 -0
  266. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/cerebras/chat.py +0 -0
  267. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/cerebras/names.py +0 -0
  268. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/cerebras/protocol.py +0 -0
  269. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/cerebras/stream.py +0 -0
  270. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/duckduckgo/__init__.py +0 -0
  271. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/duckduckgo/search.py +0 -0
  272. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/dummy/__init__.py +0 -0
  273. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/dummy/chat.py +0 -0
  274. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/google/__init__.py +0 -0
  275. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/google/chat.py +0 -0
  276. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/google/names.py +0 -0
  277. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/google/protocol.py +0 -0
  278. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/google/search.py +0 -0
  279. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/google/stream.py +0 -0
  280. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/google/tools.py +0 -0
  281. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/groq/__init__.py +0 -0
  282. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/groq/chat.py +0 -0
  283. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/groq/names.py +0 -0
  284. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/groq/protocol.py +0 -0
  285. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/groq/stream.py +0 -0
  286. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/huggingface/__init__.py +0 -0
  287. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/huggingface/configs.py +0 -0
  288. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/huggingface/repos.py +0 -0
  289. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/llamacpp/__init__.py +0 -0
  290. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/llamacpp/chat.py +0 -0
  291. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/llamacpp/completion.py +0 -0
  292. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/llamacpp/format.py +0 -0
  293. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/llamacpp/stream.py +0 -0
  294. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/mistral.py +0 -0
  295. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/mlx/__init__.py +0 -0
  296. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/mlx/chat.py +0 -0
  297. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/ollama/__init__.py +0 -0
  298. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/ollama/chat.py +0 -0
  299. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/ollama/protocol.py +0 -0
  300. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/openai/__init__.py +0 -0
  301. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/openai/chat.py +0 -0
  302. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/openai/completion.py +0 -0
  303. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/openai/embedding.py +0 -0
  304. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/openai/format.py +0 -0
  305. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/openai/names.py +0 -0
  306. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/openai/stream.py +0 -0
  307. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/sentencepiece/__init__.py +0 -0
  308. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/sentencepiece/tokens.py +0 -0
  309. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/sqlite.py +0 -0
  310. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/tavily.py +0 -0
  311. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/tinygrad/__init__.py +0 -0
  312. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/tinygrad/chat.py +0 -0
  313. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/tokenizers/__init__.py +0 -0
  314. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/tokenizers/tokens.py +0 -0
  315. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/transformers/__init__.py +0 -0
  316. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/transformers/sentence.py +0 -0
  317. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/transformers/tokens.py +0 -0
  318. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/impls/transformers/transformers.py +0 -0
  319. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/strings/__init__.py +0 -0
  320. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/strings/manifests.py +0 -0
  321. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/strings/parsing.py +0 -0
  322. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/backends/strings/resolving.py +0 -0
  323. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/__init__.py +0 -0
  324. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/_marshal.py +0 -0
  325. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/choices/__init__.py +0 -0
  326. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/choices/adapters.py +0 -0
  327. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/choices/services.py +0 -0
  328. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/choices/stream/__init__.py +0 -0
  329. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/choices/stream/adapters.py +0 -0
  330. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/choices/stream/joining.py +0 -0
  331. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/choices/stream/services.py +0 -0
  332. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/choices/stream/types.py +0 -0
  333. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/choices/types.py +0 -0
  334. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/content.py +0 -0
  335. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/formats.py +0 -0
  336. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/history.py +0 -0
  337. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/messages.py +0 -0
  338. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/metadata.py +0 -0
  339. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/services.py +0 -0
  340. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/stream/__init__.py +0 -0
  341. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/stream/_marshal.py +0 -0
  342. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/stream/joining.py +0 -0
  343. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/stream/services.py +0 -0
  344. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/stream/types.py +0 -0
  345. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/templating.py +0 -0
  346. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/tools/__init__.py +0 -0
  347. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/tools/execution.py +0 -0
  348. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/tools/ids.py +0 -0
  349. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/tools/parsing.py +0 -0
  350. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/tools/types.py +0 -0
  351. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/transforms/__init__.py +0 -0
  352. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/transforms/base.py +0 -0
  353. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/transforms/metadata.py +0 -0
  354. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/transforms/services.py +0 -0
  355. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/chat/types.py +0 -0
  356. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/completion.py +0 -0
  357. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/configs.py +0 -0
  358. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/__init__.py +0 -0
  359. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/_marshal.py +0 -0
  360. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/code.py +0 -0
  361. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/composite.py +0 -0
  362. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/content.py +0 -0
  363. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/dynamic.py +0 -0
  364. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/emphasis.py +0 -0
  365. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/images.py +0 -0
  366. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/json.py +0 -0
  367. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/link.py +0 -0
  368. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/markdown.py +0 -0
  369. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/metadata.py +0 -0
  370. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/namespaces.py +0 -0
  371. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/placeholders.py +0 -0
  372. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/quote.py +0 -0
  373. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/raw.py +0 -0
  374. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/recursive.py +0 -0
  375. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/section.py +0 -0
  376. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/sequence.py +0 -0
  377. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/standard.py +0 -0
  378. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/tag.py +0 -0
  379. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/templates.py +0 -0
  380. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/text.py +0 -0
  381. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/__init__.py +0 -0
  382. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/json.py +0 -0
  383. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/markdown.py +0 -0
  384. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/materialize.py +0 -0
  385. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/metadata.py +0 -0
  386. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/prepare.py +0 -0
  387. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/recursive.py +0 -0
  388. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/standard.py +0 -0
  389. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/stringify.py +0 -0
  390. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/strings.py +0 -0
  391. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/transform/templates.py +0 -0
  392. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/content/visitors.py +0 -0
  393. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/docs/__init__.py +0 -0
  394. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/docs/docs.py +0 -0
  395. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/docs/dtypes.py +0 -0
  396. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/docs/filters.py +0 -0
  397. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/envs.py +0 -0
  398. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/http/__init__.py +0 -0
  399. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/http/stream.py +0 -0
  400. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/json.py +0 -0
  401. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/__init__.py +0 -0
  402. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/bash.py +0 -0
  403. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/code/__init__.py +0 -0
  404. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/code/prompts.py +0 -0
  405. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/__init__.py +0 -0
  406. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/binfiles.py +0 -0
  407. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/context.py +0 -0
  408. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/errors.py +0 -0
  409. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/suggestions.py +0 -0
  410. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/tools/__init__.py +0 -0
  411. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/tools/edit.py +0 -0
  412. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/tools/ls.py +0 -0
  413. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/tools/read.py +0 -0
  414. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/tools/recursivels/__init__.py +0 -0
  415. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/tools/recursivels/execution.py +0 -0
  416. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/tools/recursivels/rendering.py +0 -0
  417. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/fs/tools/recursivels/running.py +0 -0
  418. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/todo/__init__.py +0 -0
  419. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/todo/context.py +0 -0
  420. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/todo/tools/__init__.py +0 -0
  421. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/todo/tools/read.py +0 -0
  422. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/todo/tools/write.py +0 -0
  423. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/lib/todo/types.py +0 -0
  424. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/llms/__init__.py +0 -0
  425. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/llms/_marshal.py +0 -0
  426. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/llms/tokens.py +0 -0
  427. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/llms/types.py +0 -0
  428. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/metadata.py +0 -0
  429. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/models/__init__.py +0 -0
  430. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/models/configs.py +0 -0
  431. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/models/names.py +0 -0
  432. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/models/repos/__init__.py +0 -0
  433. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/models/repos/resolving.py +0 -0
  434. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/registries/__init__.py +0 -0
  435. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/registries/globals.py +0 -0
  436. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/registries/manifests.py +0 -0
  437. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/registries/registry.py +0 -0
  438. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/resources.py +0 -0
  439. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/search.py +0 -0
  440. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/services/README.md +0 -0
  441. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/services/__init__.py +0 -0
  442. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/services/_marshal.py +0 -0
  443. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/services/_origclasses.py +0 -0
  444. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/services/_typedvalues.py +0 -0
  445. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/services/facades.py +0 -0
  446. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/services/requests.py +0 -0
  447. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/services/responses.py +0 -0
  448. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/services/services.py +0 -0
  449. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/standard.py +0 -0
  450. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/stream/__init__.py +0 -0
  451. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/stream/services.py +0 -0
  452. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/__init__.py +0 -0
  453. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/applypatch.py +0 -0
  454. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/toolparsing/__init__.py +0 -0
  455. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/toolparsing/base.py +0 -0
  456. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/toolparsing/dumb.py +0 -0
  457. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/toolparsing/llamacpp/LICENSE +0 -0
  458. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/toolparsing/llamacpp/__init__.py +0 -0
  459. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/toolparsing/llamacpp/hermes2.py +0 -0
  460. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/toolparsing/llamacpp/llama31.py +0 -0
  461. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/toolparsing/llamacpp/types.py +0 -0
  462. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/text/toolparsing/llamacpp/utils.py +0 -0
  463. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tokens/__init__.py +0 -0
  464. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tokens/specials.py +0 -0
  465. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tokens/tokenizers.py +0 -0
  466. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tokens/types.py +0 -0
  467. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tokens/vocabs.py +0 -0
  468. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/__init__.py +0 -0
  469. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/_marshal.py +0 -0
  470. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/execution/__init__.py +0 -0
  471. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/execution/catalog.py +0 -0
  472. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/execution/context.py +0 -0
  473. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/execution/errorhandling.py +0 -0
  474. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/execution/errors.py +0 -0
  475. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/execution/executors.py +0 -0
  476. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/execution/reflect.py +0 -0
  477. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/fns.py +0 -0
  478. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/jsonschema.py +0 -0
  479. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/reflect.py +0 -0
  480. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/tools/types.py +0 -0
  481. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/types.py +0 -0
  482. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/utils.py +0 -0
  483. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/vectors/__init__.py +0 -0
  484. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/vectors/_marshal.py +0 -0
  485. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/vectors/embeddings.py +0 -0
  486. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/vectors/index.py +0 -0
  487. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/vectors/search.py +0 -0
  488. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/vectors/similarity.py +0 -0
  489. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/vectors/stores.py +0 -0
  490. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/vectors/types.py +0 -0
  491. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/wrappers/__init__.py +0 -0
  492. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/wrappers/firstinwins.py +0 -0
  493. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/wrappers/instrument.py +0 -0
  494. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/wrappers/retry.py +0 -0
  495. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/wrappers/services.py +0 -0
  496. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/minichain/wrappers/stream.py +0 -0
  497. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/nanochat/LICENSE +0 -0
  498. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/nanochat/__init__.py +0 -0
  499. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/nanochat/rustbpe/LICENSE +0 -0
  500. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/nanochat/rustbpe/README.md +0 -0
  501. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/nanochat/tokenizers.py +0 -0
  502. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/server/__init__.py +0 -0
  503. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/server/__main__.py +0 -0
  504. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/server/cli.py +0 -0
  505. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/server/client.py +0 -0
  506. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/server/server.py +0 -0
  507. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/server/service.py +0 -0
  508. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/specs/__init__.py +0 -0
  509. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/specs/mcp/__init__.py +0 -0
  510. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/specs/mcp/_marshal.py +0 -0
  511. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/specs/mcp/clients.py +0 -0
  512. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/specs/mcp/protocol.py +0 -0
  513. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/tools/__init__.py +0 -0
  514. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/tools/git.py +0 -0
  515. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/tools/ocr.py +0 -0
  516. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/__init__.py +0 -0
  517. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/analyze.py +0 -0
  518. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/convert.py +0 -0
  519. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/models.py +0 -0
  520. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/text/__init__.py +0 -0
  521. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/text/mfh.py +0 -0
  522. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/text/wtp.py +0 -0
  523. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/utils/__init__.py +0 -0
  524. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/utils/io.py +0 -0
  525. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/utils/progress.py +0 -0
  526. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/utils/xml.py +0 -0
  527. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds/wiki/xml.py +0 -0
  528. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds.egg-info/dependency_links.txt +0 -0
  529. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds.egg-info/entry_points.txt +0 -0
  530. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/ommlds.egg-info/top_level.txt +0 -0
  531. {ommlds-0.0.0.dev504 → ommlds-0.0.0.dev505}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommlds
3
- Version: 0.0.0.dev504
3
+ Version: 0.0.0.dev505
4
4
  Summary: ommlds
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,14 +14,14 @@ 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: omlish==0.0.0.dev504
17
+ Requires-Dist: omlish==0.0.0.dev505
18
18
  Provides-Extra: all
19
- Requires-Dist: omdev==0.0.0.dev504; extra == "all"
19
+ Requires-Dist: omdev==0.0.0.dev505; extra == "all"
20
20
  Requires-Dist: llama-cpp-python~=0.3; extra == "all"
21
21
  Requires-Dist: mlx~=0.30; sys_platform == "darwin" and extra == "all"
22
22
  Requires-Dist: mlx-lm~=0.29; sys_platform == "darwin" and extra == "all"
23
23
  Requires-Dist: tiktoken~=0.12; extra == "all"
24
- Requires-Dist: tinygrad~=0.11; extra == "all"
24
+ Requires-Dist: tinygrad~=0.12; extra == "all"
25
25
  Requires-Dist: tokenizers~=0.22; extra == "all"
26
26
  Requires-Dist: torch~=2.9; extra == "all"
27
27
  Requires-Dist: transformers~=4.57; extra == "all"
@@ -38,13 +38,13 @@ Requires-Dist: mwparserfromhell~=0.7; extra == "all"
38
38
  Requires-Dist: wikitextparser~=0.56; extra == "all"
39
39
  Requires-Dist: lxml>=5.3; python_version < "3.13" and extra == "all"
40
40
  Provides-Extra: omdev
41
- Requires-Dist: omdev==0.0.0.dev504; extra == "omdev"
41
+ Requires-Dist: omdev==0.0.0.dev505; extra == "omdev"
42
42
  Provides-Extra: backends
43
43
  Requires-Dist: llama-cpp-python~=0.3; extra == "backends"
44
44
  Requires-Dist: mlx~=0.30; sys_platform == "darwin" and extra == "backends"
45
45
  Requires-Dist: mlx-lm~=0.29; sys_platform == "darwin" and extra == "backends"
46
46
  Requires-Dist: tiktoken~=0.12; extra == "backends"
47
- Requires-Dist: tinygrad~=0.11; extra == "backends"
47
+ Requires-Dist: tinygrad~=0.12; extra == "backends"
48
48
  Requires-Dist: tokenizers~=0.22; extra == "backends"
49
49
  Requires-Dist: torch~=2.9; extra == "backends"
50
50
  Requires-Dist: transformers~=4.57; extra == "backends"
@@ -29,7 +29,7 @@ class Project(ProjectBase):
29
29
  'tiktoken ~= 0.12',
30
30
 
31
31
  # 'tinygrad @ git+https://github.com/tinygrad/tinygrad',
32
- 'tinygrad ~= 0.11',
32
+ 'tinygrad ~= 0.12',
33
33
 
34
34
  'tokenizers ~= 0.22',
35
35
 
@@ -1320,7 +1320,6 @@ def _process_dataclass__2eae35290b327f0d934cd6747eeb9064b6f01259():
1320
1320
  ),
1321
1321
  cls_names=(
1322
1322
  ('ommlds.cli.main', 'InterfaceConfig'),
1323
- ('ommlds.cli.main', 'TextualInterfaceConfig'),
1324
1323
  ),
1325
1324
  )
1326
1325
  def _process_dataclass__d65d18393f357ae0fb02bb80268c6f1473462613():
@@ -1740,6 +1739,176 @@ def _process_dataclass__76648be4a999973a966584081092052c01632d85():
1740
1739
  return _process_dataclass
1741
1740
 
1742
1741
 
1742
+ @_register(
1743
+ plan_repr=(
1744
+ "Plans(tup=(CopyPlan(fields=('enable_tools', 'dangerous_no_tool_confirmation', 'input_history_file')), EqPlan(f"
1745
+ "ields=('enable_tools', 'dangerous_no_tool_confirmation', 'input_history_file')), FrozenPlan(fields=('enable_to"
1746
+ "ols', 'dangerous_no_tool_confirmation', 'input_history_file'), allow_dynamic_dunder_attrs=False), HashPlan(act"
1747
+ "ion='add', fields=('enable_tools', 'dangerous_no_tool_confirmation', 'input_history_file'), cache=False), Init"
1748
+ "Plan(fields=(InitPlan.Field(name='enable_tools', annotation=OpRef(name='init.fields.0.annotation'), default=Op"
1749
+ "Ref(name='init.fields.0.default'), default_factory=None, init=True, override=False, field_type=FieldType.INSTA"
1750
+ "NCE, coerce=None, validate=None, check_type=None), InitPlan.Field(name='dangerous_no_tool_confirmation', annot"
1751
+ "ation=OpRef(name='init.fields.1.annotation'), default=OpRef(name='init.fields.1.default'), default_factory=Non"
1752
+ "e, init=True, override=False, field_type=FieldType.INSTANCE, coerce=None, validate=None, check_type=None), Ini"
1753
+ "tPlan.Field(name='input_history_file', annotation=OpRef(name='init.fields.2.annotation'), default=OpRef(name='"
1754
+ "init.fields.2.default'), default_factory=None, init=True, override=False, field_type=FieldType.INSTANCE, coerc"
1755
+ "e=None, validate=None, check_type=None)), self_param='self', std_params=(), kw_only_params=('enable_tools', 'd"
1756
+ "angerous_no_tool_confirmation', 'input_history_file'), frozen=True, slots=False, post_init_params=None, init_f"
1757
+ "ns=(), validate_fns=()), ReprPlan(fields=(ReprPlan.Field(name='enable_tools', kw_only=True, fn=None), ReprPlan"
1758
+ ".Field(name='dangerous_no_tool_confirmation', kw_only=True, fn=None), ReprPlan.Field(name='input_history_file'"
1759
+ ", kw_only=True, fn=None)), id=False, terse=False, default_fn=None)))"
1760
+ ),
1761
+ plan_repr_sha1='f515764cf4b50b208c232c9355d9b2ed75cf26f4',
1762
+ op_ref_idents=(
1763
+ '__dataclass__init__fields__0__annotation',
1764
+ '__dataclass__init__fields__0__default',
1765
+ '__dataclass__init__fields__1__annotation',
1766
+ '__dataclass__init__fields__1__default',
1767
+ '__dataclass__init__fields__2__annotation',
1768
+ '__dataclass__init__fields__2__default',
1769
+ ),
1770
+ cls_names=(
1771
+ ('ommlds.cli.main', 'TextualInterfaceConfig'),
1772
+ ),
1773
+ )
1774
+ def _process_dataclass__f515764cf4b50b208c232c9355d9b2ed75cf26f4():
1775
+ def _process_dataclass(
1776
+ *,
1777
+ __dataclass__cls,
1778
+ __dataclass__init__fields__0__annotation,
1779
+ __dataclass__init__fields__0__default,
1780
+ __dataclass__init__fields__1__annotation,
1781
+ __dataclass__init__fields__1__default,
1782
+ __dataclass__init__fields__2__annotation,
1783
+ __dataclass__init__fields__2__default,
1784
+ __dataclass__FieldFnValidationError, # noqa
1785
+ __dataclass__FieldTypeValidationError, # noqa
1786
+ __dataclass__FnValidationError, # noqa
1787
+ __dataclass__FrozenInstanceError=dataclasses.FrozenInstanceError, # noqa
1788
+ __dataclass__FunctionType=types.FunctionType, # noqa
1789
+ __dataclass__HAS_DEFAULT_FACTORY=dataclasses._HAS_DEFAULT_FACTORY, # noqa
1790
+ __dataclass__MISSING=dataclasses.MISSING, # noqa
1791
+ __dataclass__None=None, # noqa
1792
+ __dataclass__TypeError=TypeError, # noqa
1793
+ __dataclass___recursive_repr=reprlib.recursive_repr, # noqa
1794
+ __dataclass__isinstance=isinstance, # noqa
1795
+ __dataclass__object_setattr=object.__setattr__, # noqa
1796
+ __dataclass__property=property, # noqa
1797
+ ):
1798
+ def __copy__(self):
1799
+ if self.__class__ is not __dataclass__cls:
1800
+ raise TypeError(self)
1801
+ return __dataclass__cls( # noqa
1802
+ enable_tools=self.enable_tools,
1803
+ dangerous_no_tool_confirmation=self.dangerous_no_tool_confirmation,
1804
+ input_history_file=self.input_history_file,
1805
+ )
1806
+
1807
+ __copy__.__qualname__ = f"{__dataclass__cls.__qualname__}.__copy__"
1808
+ if '__copy__' in __dataclass__cls.__dict__:
1809
+ raise __dataclass__TypeError(f"Cannot overwrite attribute __copy__ in class {__dataclass__cls.__name__}")
1810
+ setattr(__dataclass__cls, '__copy__', __copy__)
1811
+
1812
+ def __eq__(self, other):
1813
+ if self is other:
1814
+ return True
1815
+ if self.__class__ is not other.__class__:
1816
+ return NotImplemented
1817
+ return (
1818
+ self.enable_tools == other.enable_tools and
1819
+ self.dangerous_no_tool_confirmation == other.dangerous_no_tool_confirmation and
1820
+ self.input_history_file == other.input_history_file
1821
+ )
1822
+
1823
+ __eq__.__qualname__ = f"{__dataclass__cls.__qualname__}.__eq__"
1824
+ if '__eq__' in __dataclass__cls.__dict__:
1825
+ raise __dataclass__TypeError(f"Cannot overwrite attribute __eq__ in class {__dataclass__cls.__name__}")
1826
+ setattr(__dataclass__cls, '__eq__', __eq__)
1827
+
1828
+ __dataclass___setattr_frozen_fields = {
1829
+ 'enable_tools',
1830
+ 'dangerous_no_tool_confirmation',
1831
+ 'input_history_file',
1832
+ }
1833
+
1834
+ def __setattr__(self, name, value):
1835
+ if (
1836
+ type(self) is __dataclass__cls
1837
+ or name in __dataclass___setattr_frozen_fields
1838
+ ):
1839
+ raise __dataclass__FrozenInstanceError(f"cannot assign to field {name!r}")
1840
+ super(__dataclass__cls, self).__setattr__(name, value)
1841
+
1842
+ __setattr__.__qualname__ = f"{__dataclass__cls.__qualname__}.__setattr__"
1843
+ if '__setattr__' in __dataclass__cls.__dict__:
1844
+ raise __dataclass__TypeError(f"Cannot overwrite attribute __setattr__ in class {__dataclass__cls.__name__}")
1845
+ setattr(__dataclass__cls, '__setattr__', __setattr__)
1846
+
1847
+ __dataclass___delattr_frozen_fields = {
1848
+ 'enable_tools',
1849
+ 'dangerous_no_tool_confirmation',
1850
+ 'input_history_file',
1851
+ }
1852
+
1853
+ def __delattr__(self, name):
1854
+ if (
1855
+ type(self) is __dataclass__cls
1856
+ or name in __dataclass___delattr_frozen_fields
1857
+ ):
1858
+ raise __dataclass__FrozenInstanceError(f"cannot delete field {name!r}")
1859
+ super(__dataclass__cls, self).__delattr__(name)
1860
+
1861
+ __delattr__.__qualname__ = f"{__dataclass__cls.__qualname__}.__delattr__"
1862
+ if '__delattr__' in __dataclass__cls.__dict__:
1863
+ raise __dataclass__TypeError(f"Cannot overwrite attribute __delattr__ in class {__dataclass__cls.__name__}")
1864
+ setattr(__dataclass__cls, '__delattr__', __delattr__)
1865
+
1866
+ def __hash__(self):
1867
+ return hash((
1868
+ self.enable_tools,
1869
+ self.dangerous_no_tool_confirmation,
1870
+ self.input_history_file,
1871
+ ))
1872
+
1873
+ __hash__.__qualname__ = f"{__dataclass__cls.__qualname__}.__hash__"
1874
+ setattr(__dataclass__cls, '__hash__', __hash__)
1875
+
1876
+ def __init__(
1877
+ self,
1878
+ *,
1879
+ enable_tools: __dataclass__init__fields__0__annotation = __dataclass__init__fields__0__default,
1880
+ dangerous_no_tool_confirmation: __dataclass__init__fields__1__annotation = __dataclass__init__fields__1__default,
1881
+ input_history_file: __dataclass__init__fields__2__annotation = __dataclass__init__fields__2__default,
1882
+ ) -> __dataclass__None:
1883
+ __dataclass__object_setattr(self, 'enable_tools', enable_tools)
1884
+ __dataclass__object_setattr(self, 'dangerous_no_tool_confirmation', dangerous_no_tool_confirmation)
1885
+ __dataclass__object_setattr(self, 'input_history_file', input_history_file)
1886
+
1887
+ __init__.__qualname__ = f"{__dataclass__cls.__qualname__}.__init__"
1888
+ if '__init__' in __dataclass__cls.__dict__:
1889
+ raise __dataclass__TypeError(f"Cannot overwrite attribute __init__ in class {__dataclass__cls.__name__}")
1890
+ setattr(__dataclass__cls, '__init__', __init__)
1891
+
1892
+ @__dataclass___recursive_repr()
1893
+ def __repr__(self):
1894
+ parts = []
1895
+ parts.append(f"enable_tools={self.enable_tools!r}")
1896
+ parts.append(f"dangerous_no_tool_confirmation={self.dangerous_no_tool_confirmation!r}")
1897
+ parts.append(f"input_history_file={self.input_history_file!r}")
1898
+ return (
1899
+ f"{self.__class__.__qualname__}("
1900
+ f"{', '.join(parts)}"
1901
+ f")"
1902
+ )
1903
+
1904
+ __repr__.__qualname__ = f"{__dataclass__cls.__qualname__}.__repr__"
1905
+ if '__repr__' in __dataclass__cls.__dict__:
1906
+ raise __dataclass__TypeError(f"Cannot overwrite attribute __repr__ in class {__dataclass__cls.__name__}")
1907
+ setattr(__dataclass__cls, '__repr__', __repr__)
1908
+
1909
+ return _process_dataclass
1910
+
1911
+
1743
1912
  @_register(
1744
1913
  plan_repr=(
1745
1914
  "Plans(tup=(CopyPlan(fields=('enabled_tools', 'verbose')), EqPlan(fields=('enabled_tools', 'verbose')), FrozenP"
@@ -1,3 +1,8 @@
1
+ """
2
+ TODO:
3
+ - textual.getters.query_one
4
+ - AUTO_FOCUS
5
+ """
1
6
  import asyncio
2
7
  import os
3
8
  import typing as ta
@@ -15,6 +20,7 @@ from ...drivers.events.types import AiDeltaChatEvent
15
20
  from ...drivers.events.types import AiMessagesChatEvent
16
21
  from ...drivers.types import ChatDriver
17
22
  from ...facades.facade import ChatFacade
23
+ from .inputhistory import InputHistoryManager
18
24
  from .styles import read_app_css
19
25
  from .widgets.input import InputOuter
20
26
  from .widgets.input import InputTextArea
@@ -55,6 +61,7 @@ class ChatApp(tx.App):
55
61
  chat_event_queue: ChatEventQueue,
56
62
  backend_name: BackendName | None = None,
57
63
  devtools_setup: tx.DevtoolsSetup | None = None,
64
+ input_history_manager: InputHistoryManager,
58
65
  ) -> None:
59
66
  super().__init__()
60
67
 
@@ -65,6 +72,7 @@ class ChatApp(tx.App):
65
72
  self._chat_driver = chat_driver
66
73
  self._chat_event_queue = chat_event_queue
67
74
  self._backend_name = backend_name
75
+ self._input_history_manager = input_history_manager
68
76
 
69
77
  self._chat_action_queue: asyncio.Queue[ta.Any] = asyncio.Queue()
70
78
 
@@ -263,8 +271,34 @@ class ChatApp(tx.App):
263
271
  ),
264
272
  )
265
273
 
274
+ self._input_history_manager.add(event.text)
275
+
266
276
  await self._chat_action_queue.put(ChatApp.UserInput(event.text))
267
277
 
278
+ def _move_input_cursor_to_end(self) -> None:
279
+ ita = self._get_input_text_area()
280
+ ln = ita.document.line_count - 1
281
+ lt = ita.document.lines[ln]
282
+ ita.move_cursor((ln, len(lt)))
283
+
284
+ @tx.on(InputTextArea.HistoryPrevious)
285
+ async def on_input_text_area_history_previous(self, event: InputTextArea.HistoryPrevious) -> None:
286
+ if (entry := self._input_history_manager.get_previous(event.text)) is not None:
287
+ self._get_input_text_area().text = entry
288
+ self._move_input_cursor_to_end()
289
+
290
+ @tx.on(InputTextArea.HistoryNext)
291
+ async def on_input_text_area_history_next(self, event: InputTextArea.HistoryNext) -> None:
292
+ if (entry := self._input_history_manager.get_next(event.text)) is not None:
293
+ ita = self._get_input_text_area()
294
+ ita.text = entry
295
+ self._move_input_cursor_to_end()
296
+ else:
297
+ # At the end of history, clear the input
298
+ ita = self._get_input_text_area()
299
+ ita.clear()
300
+ self._input_history_manager.reset_position()
301
+
268
302
  @tx.on(tx.Key)
269
303
  async def on_key(self, event: tx.Key) -> None:
270
304
  if event in self._input_focused_key_events:
@@ -8,4 +8,4 @@ from ..configs import InterfaceConfig
8
8
 
9
9
  @dc.dataclass(frozen=True, kw_only=True)
10
10
  class TextualInterfaceConfig(InterfaceConfig):
11
- pass
11
+ input_history_file: str | None = None
@@ -20,6 +20,7 @@ with lang.auto_proxy_import(globals()):
20
20
  from ...facades import ui as _facades_ui
21
21
  from . import app as _app
22
22
  from . import facades as _facades
23
+ from . import inputhistory as _inputhistory
23
24
  from . import interface as _interface
24
25
  from . import tools as _tools
25
26
 
@@ -94,4 +95,17 @@ def bind_textual(cfg: TextualInterfaceConfig = TextualInterfaceConfig()) -> inj.
94
95
 
95
96
  #
96
97
 
98
+ def _make_input_history_storage() -> _inputhistory.InputHistoryStorage:
99
+ if cfg.input_history_file is not None:
100
+ return _inputhistory.FileInputHistoryStorage(path=cfg.input_history_file)
101
+ else:
102
+ return _inputhistory.InMemoryInputHistoryStorage()
103
+
104
+ els.extend([
105
+ inj.bind(_inputhistory.InputHistoryStorage, to_fn=_make_input_history_storage, singleton=True),
106
+ inj.bind(_inputhistory.InputHistoryManager, singleton=True),
107
+ ])
108
+
109
+ #
110
+
97
111
  return inj.as_elements(*els)
@@ -0,0 +1,174 @@
1
+ import abc
2
+ import json
3
+ import os
4
+ import typing as ta
5
+
6
+ from omlish import lang
7
+
8
+
9
+ ##
10
+
11
+
12
+ class InputHistoryStorage(lang.Abstract):
13
+ @abc.abstractmethod
14
+ def load(self) -> list[str]:
15
+ raise NotImplementedError
16
+
17
+ @abc.abstractmethod
18
+ def save(self, entries: ta.Sequence[str]) -> None:
19
+ raise NotImplementedError
20
+
21
+
22
+ class InMemoryInputHistoryStorage(InputHistoryStorage):
23
+ def __init__(self) -> None:
24
+ super().__init__()
25
+
26
+ self._entries: list[str] = []
27
+
28
+ def load(self) -> list[str]:
29
+ return list(self._entries)
30
+
31
+ def save(self, entries: ta.Sequence[str]) -> None:
32
+ self._entries = list(entries)
33
+
34
+
35
+ class FileInputHistoryStorage(InputHistoryStorage):
36
+ def __init__(self, *, path: str) -> None:
37
+ super().__init__()
38
+
39
+ self._path = path
40
+
41
+ def load(self) -> list[str]:
42
+ if not os.path.exists(self._path):
43
+ return []
44
+
45
+ try:
46
+ with open(self._path) as f:
47
+ data = json.load(f)
48
+ if isinstance(data, list) and all(isinstance(e, str) for e in data):
49
+ return data
50
+ return []
51
+ except (json.JSONDecodeError, OSError):
52
+ return []
53
+
54
+ def save(self, entries: ta.Sequence[str]) -> None:
55
+ try:
56
+ dir_path = os.path.dirname(self._path)
57
+ if dir_path:
58
+ os.makedirs(dir_path, exist_ok=True)
59
+ with open(self._path, 'w') as f:
60
+ json.dump(list(entries), f, indent=2)
61
+ except OSError:
62
+ pass
63
+
64
+
65
+ ##
66
+
67
+
68
+ class InputHistoryManager:
69
+ """
70
+ Manages input history with readline-style navigation.
71
+
72
+ History position semantics:
73
+ - Position starts at len(history) (one past the end)
74
+ - Moving 'previous' decrements position
75
+ - Moving 'next' increments position
76
+ - Position is clamped to [0, len(history)]
77
+ - Position len(history) represents 'no history item selected'
78
+ """
79
+
80
+ def __init__(
81
+ self,
82
+ *,
83
+ storage: InputHistoryStorage,
84
+ max_entries: int = 1000,
85
+ ) -> None:
86
+ super().__init__()
87
+
88
+ self._storage = storage
89
+ self._max_entries = max_entries
90
+
91
+ self._entries: list[str] = self._storage.load()
92
+ self._position: int = len(self._entries)
93
+ self._current_draft: str = ''
94
+
95
+ def add(self, text: str) -> None:
96
+ """Add a new history entry and reset position."""
97
+
98
+ if not text.strip():
99
+ return
100
+
101
+ # Don't add duplicate consecutive entries
102
+ if self._entries and self._entries[-1] == text:
103
+ self.reset_position()
104
+ return
105
+
106
+ self._entries.append(text)
107
+
108
+ # Trim to max size
109
+ if len(self._entries) > self._max_entries:
110
+ self._entries = self._entries[-self._max_entries:]
111
+
112
+ self._storage.save(self._entries)
113
+ self.reset_position()
114
+
115
+ def get_previous(self, text: str | None = None) -> str | None:
116
+ """
117
+ Navigate to previous (older) history entry.
118
+
119
+ Args:
120
+ text: Current text in the input field (saved as draft when at end of history)
121
+
122
+ Returns:
123
+ The previous history entry, or None if at the beginning
124
+ """
125
+
126
+ if not self._entries:
127
+ return None
128
+
129
+ # Save current draft if we're at the end
130
+ if self._position == len(self._entries) and text is not None:
131
+ self._current_draft = text
132
+
133
+ # Move to previous entry
134
+ if self._position > 0:
135
+ self._position -= 1
136
+ return self._entries[self._position]
137
+
138
+ # Already at oldest entry
139
+ return self._entries[0] if self._entries else None
140
+
141
+ def get_next(self, text: str | None = None) -> str | None:
142
+ """
143
+ Navigate to next (newer) history entry.
144
+
145
+ Args:
146
+ text: Current text in the input field (unused for now)
147
+
148
+ Returns:
149
+ The next history entry, the saved draft if moving past the end, or None
150
+ """
151
+
152
+ if not self._entries:
153
+ return None
154
+
155
+ # Move to next entry
156
+ if self._position < len(self._entries):
157
+ self._position += 1
158
+
159
+ # If we moved past the end, return the draft
160
+ if self._position == len(self._entries):
161
+ draft = self._current_draft
162
+ self._current_draft = ''
163
+ return draft
164
+
165
+ return self._entries[self._position]
166
+
167
+ # Already at newest position
168
+ return None
169
+
170
+ def reset_position(self) -> None:
171
+ """Reset history position to the end (no history item selected)."""
172
+
173
+ self._position = len(self._entries)
174
+ self._current_draft = ''
@@ -0,0 +1,70 @@
1
+ import dataclasses as dc
2
+ import typing as ta
3
+
4
+ from omdev.tui import textual as tx
5
+
6
+
7
+ ##
8
+
9
+
10
+ class InputTextArea(tx.TextArea):
11
+ @dc.dataclass()
12
+ class Submitted(tx.Message):
13
+ text: str
14
+
15
+ @dc.dataclass()
16
+ class HistoryPrevious(tx.Message):
17
+ text: str
18
+
19
+ @dc.dataclass()
20
+ class HistoryNext(tx.Message):
21
+ text: str
22
+
23
+ @dc.dataclass()
24
+ class HistoryReset(tx.Message):
25
+ pass
26
+
27
+ def __init__(self, **kwargs: ta.Any) -> None:
28
+ super().__init__(**kwargs)
29
+
30
+ BINDINGS: ta.ClassVar[ta.Sequence[tx.Binding]] = [ # type: ignore[assignment]
31
+ tx.Binding(
32
+ 'enter',
33
+ 'submit',
34
+ priority=True,
35
+ ),
36
+ tx.Binding(
37
+ 'ctrl+p',
38
+ 'history_previous',
39
+ ),
40
+ tx.Binding(
41
+ 'ctrl+n',
42
+ 'history_next',
43
+ ),
44
+ ]
45
+
46
+ def action_submit(self) -> None:
47
+ if text := self.text.strip():
48
+ self.post_message(self.Submitted(text))
49
+
50
+ def action_cursor_up(self, select: bool = False) -> None:
51
+ # FIXME: if empty -> history_previous
52
+ super().action_cursor_up(select=select)
53
+
54
+ def action_cursor_down(self, select: bool = False) -> None:
55
+ super().action_cursor_down(select=select)
56
+
57
+ def action_history_previous(self) -> None:
58
+ self.post_message(self.HistoryPrevious(self.text))
59
+
60
+ def action_history_next(self) -> None:
61
+ self.post_message(self.HistoryNext(self.text))
62
+
63
+
64
+ class InputOuter(tx.Static):
65
+ def compose(self) -> tx.ComposeResult:
66
+ with tx.Vertical(id='input-vertical'):
67
+ with tx.Vertical(id='input-vertical2'):
68
+ with tx.Horizontal(id='input-horizontal'):
69
+ yield tx.Static('>', id='input-glyph')
70
+ yield InputTextArea(placeholder='...', id='input')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommlds
3
- Version: 0.0.0.dev504
3
+ Version: 0.0.0.dev505
4
4
  Summary: ommlds
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,14 +14,14 @@ 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: omlish==0.0.0.dev504
17
+ Requires-Dist: omlish==0.0.0.dev505
18
18
  Provides-Extra: all
19
- Requires-Dist: omdev==0.0.0.dev504; extra == "all"
19
+ Requires-Dist: omdev==0.0.0.dev505; extra == "all"
20
20
  Requires-Dist: llama-cpp-python~=0.3; extra == "all"
21
21
  Requires-Dist: mlx~=0.30; sys_platform == "darwin" and extra == "all"
22
22
  Requires-Dist: mlx-lm~=0.29; sys_platform == "darwin" and extra == "all"
23
23
  Requires-Dist: tiktoken~=0.12; extra == "all"
24
- Requires-Dist: tinygrad~=0.11; extra == "all"
24
+ Requires-Dist: tinygrad~=0.12; extra == "all"
25
25
  Requires-Dist: tokenizers~=0.22; extra == "all"
26
26
  Requires-Dist: torch~=2.9; extra == "all"
27
27
  Requires-Dist: transformers~=4.57; extra == "all"
@@ -38,13 +38,13 @@ Requires-Dist: mwparserfromhell~=0.7; extra == "all"
38
38
  Requires-Dist: wikitextparser~=0.56; extra == "all"
39
39
  Requires-Dist: lxml>=5.3; python_version < "3.13" and extra == "all"
40
40
  Provides-Extra: omdev
41
- Requires-Dist: omdev==0.0.0.dev504; extra == "omdev"
41
+ Requires-Dist: omdev==0.0.0.dev505; extra == "omdev"
42
42
  Provides-Extra: backends
43
43
  Requires-Dist: llama-cpp-python~=0.3; extra == "backends"
44
44
  Requires-Dist: mlx~=0.30; sys_platform == "darwin" and extra == "backends"
45
45
  Requires-Dist: mlx-lm~=0.29; sys_platform == "darwin" and extra == "backends"
46
46
  Requires-Dist: tiktoken~=0.12; extra == "backends"
47
- Requires-Dist: tinygrad~=0.11; extra == "backends"
47
+ Requires-Dist: tinygrad~=0.12; extra == "backends"
48
48
  Requires-Dist: tokenizers~=0.22; extra == "backends"
49
49
  Requires-Dist: torch~=2.9; extra == "backends"
50
50
  Requires-Dist: transformers~=4.57; extra == "backends"
@@ -224,6 +224,7 @@ ommlds/cli/sessions/chat/interfaces/textual/app.py
224
224
  ommlds/cli/sessions/chat/interfaces/textual/configs.py
225
225
  ommlds/cli/sessions/chat/interfaces/textual/facades.py
226
226
  ommlds/cli/sessions/chat/interfaces/textual/inject.py
227
+ ommlds/cli/sessions/chat/interfaces/textual/inputhistory.py
227
228
  ommlds/cli/sessions/chat/interfaces/textual/interface.py
228
229
  ommlds/cli/sessions/chat/interfaces/textual/tools.py
229
230
  ommlds/cli/sessions/chat/interfaces/textual/styles/__init__.py
@@ -1,10 +1,10 @@
1
- omlish==0.0.0.dev504
1
+ omlish==0.0.0.dev505
2
2
 
3
3
  [all]
4
- omdev==0.0.0.dev504
4
+ omdev==0.0.0.dev505
5
5
  llama-cpp-python~=0.3
6
6
  tiktoken~=0.12
7
- tinygrad~=0.11
7
+ tinygrad~=0.12
8
8
  tokenizers~=0.22
9
9
  torch~=2.9
10
10
  transformers~=4.57
@@ -30,7 +30,7 @@ mlx-lm~=0.29
30
30
  [backends]
31
31
  llama-cpp-python~=0.3
32
32
  tiktoken~=0.12
33
- tinygrad~=0.11
33
+ tinygrad~=0.12
34
34
  tokenizers~=0.22
35
35
  torch~=2.9
36
36
  transformers~=4.57
@@ -55,7 +55,7 @@ pytesseract~=0.3
55
55
  rapidocr-onnxruntime~=1.4
56
56
 
57
57
  [omdev]
58
- omdev==0.0.0.dev504
58
+ omdev==0.0.0.dev505
59
59
 
60
60
  [pillow]
61
61
  pillow~=12.1