ommlds 0.0.0.dev469__tar.gz → 0.0.0.dev471__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ommlds might be problematic. Click here for more details.
- {ommlds-0.0.0.dev469/ommlds.egg-info → ommlds-0.0.0.dev471}/PKG-INFO +3 -3
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/.omlish-manifests.json +1 -1
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/catalog.py +13 -8
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/inject.py +15 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/catalogs/base.py +7 -1
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/chat.py +5 -1
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/stream.py +10 -4
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/chat.py +9 -2
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/search.py +6 -1
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/stream.py +10 -4
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/mistral.py +9 -2
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/ollama/chat.py +1 -1
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/chat.py +9 -2
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/completion.py +9 -2
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/embedding.py +9 -2
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/stream.py +10 -4
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/tools/git.py +4 -1
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471/ommlds.egg-info}/PKG-INFO +3 -3
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/SOURCES.txt +1 -1
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/requires.txt +2 -2
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/pyproject.toml +3 -3
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/LICENSE +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/MANIFEST.in +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/README.md +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/__about__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/funcs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/names.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/params.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/_hacks/patches.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/assemble.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/events.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/google/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/google/protocol/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/google/protocol/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/google/protocol/types.py +0 -0
- {ommlds-0.0.0.dev469/ommlds → ommlds-0.0.0.dev471/ommlds/backends}/huggingface.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/llamacpp/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/llamacpp/buildwheel.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/llamacpp/logging.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/__main__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/caching.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/cli.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/generation.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/limits.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/loading.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/LICENSE +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/base.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/bpe.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/naive.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/detokenization/spm.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/loading.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/tokenization.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/mlx/tokenization/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/ollama/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/ollama/protocol.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/_common.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/chunk.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/contentpart.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/message.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/request.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/response.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/responseformat.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/chatcompletion/tokenlogprob.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/openai/protocol/completionusage.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/LICENSE +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/__main__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/attention.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/cli.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/fetch.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/llm.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/loading.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/quantization.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/sampling.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/tokenization.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/llama3/transformer.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/__main__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/cli.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/clip.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/sdxl.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/models/sdxl/unet.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/tinygrad/tinygrad.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/torch/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/torch/backends.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/torch/devices.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/torch/purge.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/transformers/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/transformers/filecache.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/transformers/streamers.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/__main__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/backends/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/backends/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/backends/standard.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/main.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/base.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/injection.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/backends/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/injection.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/rendering.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/services.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/tools.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/ai/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/inmemory.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/storage.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/state/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/interactive.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/oneshot.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/chat/user/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/configs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/content/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/content/messages.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/content/strings.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/driver.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/injection.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/manager.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/phases/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/markdown.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/raw.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/rendering/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/session.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/confirmation.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/execution.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/injection.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/rendering.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/chat/tools/weather.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/completion/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/completion/configs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/completion/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/completion/session.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/embedding/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/embedding/configs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/embedding/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/embedding/session.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/sessions/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/state/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/state/inject.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/cli/state/storage.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/datasets/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/datasets/lib/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/datasets/lib/movies.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/_typedvalues.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/catalogs/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/catalogs/simple.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/catalogs/strings.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/names.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/protocol.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/duckduckgo/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/duckduckgo/search.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/names.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/tools.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/huggingface/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/huggingface/configs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/huggingface/repos.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/chat.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/completion.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/format.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/llamacpp/stream.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/mlx/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/mlx/chat.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/ollama/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/format.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/names.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/sentencepiece/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/sentencepiece/tokens.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/sqlite.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/tinygrad/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/tinygrad/chat.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/tokenizers/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/tokenizers/tokens.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/transformers/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/transformers/sentence.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/transformers/tokens.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/transformers/transformers.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/strings/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/strings/manifests.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/strings/parsing.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/strings/resolving.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/choices/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/choices/adapters.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/choices/services.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/choices/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/formats.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/history.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/messages.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/metadata.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/services.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/adapters.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/joining.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/services.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/stream/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/templating.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/execution.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/ids.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/parsing.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/tools/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/transforms/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/transforms/base.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/transforms/metadata.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/transforms/services.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/chat/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/completion.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/configs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/images.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/json.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/materialize.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/metadata.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/namespaces.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/placeholders.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/prepare.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/sequence.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/simple.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/text.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/base.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/interleave.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/squeeze.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/stringify.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/transforms/strings.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/content/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/docs/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/docs/docs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/docs/dtypes.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/docs/filters.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/envs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/json.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/bash.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/code/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/code/prompts.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/binfiles.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/context.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/errors.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/suggestions.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/edit.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/ls.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/read.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/recursivels/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/recursivels/execution.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/recursivels/rendering.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/fs/tools/recursivels/running.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/context.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/tools/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/tools/read.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/tools/write.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/lib/todo/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/llms/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/llms/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/llms/tokens.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/llms/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/metadata.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/configs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/names.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/repos/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/models/repos/resolving.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/registries/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/registries/globals.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/registries/manifests.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/registries/registry.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/resources.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/search.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/_origclasses.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/_typedvalues.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/facades.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/requests.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/responses.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/services/services.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/standard.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/stream/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/stream/services.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/stream/wrap.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/applypatch.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/base.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/dumb.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/LICENSE +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/hermes2.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/llama31.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/text/toolparsing/llamacpp/utils.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/specials.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/tokenizers.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tokens/vocabs.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/catalog.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/context.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/errors.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/executors.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/execution/reflect.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/fns.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/jsonschema.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/reflect.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/tools/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/utils.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/_marshal.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/embeddings.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/index.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/search.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/similarity.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/stores.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/vectors/types.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/__main__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/cli.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/client.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/server.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/server/service.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/tools/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/tools/ocr.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/analyze.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/convert.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/models.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/text/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/text/mfh.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/text/wtp.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/utils/__init__.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/utils/io.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/utils/progress.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/utils/xml.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/wiki/xml.py +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/dependency_links.txt +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/entry_points.txt +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds.egg-info/top_level.txt +0 -0
- {ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ommlds
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev471
|
|
4
4
|
Summary: ommlds
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,8 +14,8 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: omdev==0.0.0.
|
|
18
|
-
Requires-Dist: omlish==0.0.0.
|
|
17
|
+
Requires-Dist: omdev==0.0.0.dev471
|
|
18
|
+
Requires-Dist: omlish==0.0.0.dev471
|
|
19
19
|
Provides-Extra: all
|
|
20
20
|
Requires-Dist: llama-cpp-python~=0.3; extra == "all"
|
|
21
21
|
Requires-Dist: mlx~=0.29; extra == "all"
|
|
@@ -15,33 +15,38 @@ from .types import ServiceT
|
|
|
15
15
|
##
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
class
|
|
18
|
+
class CatalogBackendProvider(BackendProvider[ServiceT], lang.Abstract):
|
|
19
|
+
class Instantiator(lang.Func2['mc.BackendCatalog.Backend', BackendConfigs | None, ta.Awaitable[ta.Any]]):
|
|
20
|
+
pass
|
|
21
|
+
|
|
19
22
|
def __init__(
|
|
20
23
|
self,
|
|
21
24
|
*,
|
|
22
25
|
name: BackendName,
|
|
23
26
|
catalog: 'mc.BackendCatalog',
|
|
24
27
|
configs: BackendConfigs | None = None,
|
|
28
|
+
instantiator: Instantiator | None = None,
|
|
25
29
|
) -> None:
|
|
26
30
|
super().__init__()
|
|
27
31
|
|
|
28
32
|
self._name = name
|
|
29
33
|
self._catalog = catalog
|
|
30
34
|
self._configs = configs
|
|
35
|
+
if instantiator is None:
|
|
36
|
+
instantiator = CatalogBackendProvider.Instantiator(lang.as_async(lambda be, cfgs: be.factory(*cfgs or [])))
|
|
37
|
+
self._instantiator = instantiator
|
|
31
38
|
|
|
32
39
|
@contextlib.asynccontextmanager
|
|
33
40
|
async def _provide_backend(self, cls: type[ServiceT]) -> ta.AsyncIterator[ServiceT]:
|
|
41
|
+
be = self._catalog.get_backend(cls, self._name)
|
|
42
|
+
|
|
34
43
|
service: ServiceT
|
|
35
|
-
async with lang.async_or_sync_maybe_managing(self.
|
|
36
|
-
cls,
|
|
37
|
-
self._name,
|
|
38
|
-
*(self._configs or []),
|
|
39
|
-
)) as service:
|
|
44
|
+
async with lang.async_or_sync_maybe_managing(await self._instantiator(be, self._configs)) as service:
|
|
40
45
|
yield service
|
|
41
46
|
|
|
42
47
|
|
|
43
48
|
class CatalogChatChoicesServiceBackendProvider(
|
|
44
|
-
|
|
49
|
+
CatalogBackendProvider['mc.ChatChoicesService'],
|
|
45
50
|
ChatChoicesServiceBackendProvider,
|
|
46
51
|
):
|
|
47
52
|
def provide_backend(self) -> ta.AsyncContextManager['mc.ChatChoicesService']:
|
|
@@ -49,7 +54,7 @@ class CatalogChatChoicesServiceBackendProvider(
|
|
|
49
54
|
|
|
50
55
|
|
|
51
56
|
class CatalogChatChoicesStreamServiceBackendProvider(
|
|
52
|
-
|
|
57
|
+
CatalogBackendProvider['mc.ChatChoicesStreamService'],
|
|
53
58
|
ChatChoicesStreamServiceBackendProvider,
|
|
54
59
|
):
|
|
55
60
|
def provide_backend(self) -> ta.AsyncContextManager['mc.ChatChoicesStreamService']:
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import typing as ta
|
|
2
|
+
|
|
1
3
|
from omlish import inject as inj
|
|
2
4
|
from omlish import lang
|
|
3
5
|
|
|
6
|
+
from ..... import minichain as mc
|
|
4
7
|
from .injection import backend_configs
|
|
5
8
|
|
|
6
9
|
|
|
@@ -34,4 +37,16 @@ def bind_backends(
|
|
|
34
37
|
|
|
35
38
|
#
|
|
36
39
|
|
|
40
|
+
async def catalog_backend_instantiator_provider(injector: inj.AsyncInjector) -> _catalog.CatalogBackendProvider.Instantiator: # noqa
|
|
41
|
+
async def inner(be: 'mc.BackendCatalog.Backend', cfgs: _types.BackendConfigs | None) -> ta.Any:
|
|
42
|
+
kwt = inj.build_kwargs_target(be.factory, non_strict=True)
|
|
43
|
+
kw = await injector.provide_kwargs(kwt)
|
|
44
|
+
return be.factory(*cfgs or [], **kw)
|
|
45
|
+
|
|
46
|
+
return _catalog.CatalogBackendProvider.Instantiator(inner)
|
|
47
|
+
|
|
48
|
+
els.append(inj.bind(_catalog.CatalogBackendProvider.Instantiator, to_async_fn=catalog_backend_instantiator_provider)) # noqa
|
|
49
|
+
|
|
50
|
+
#
|
|
51
|
+
|
|
37
52
|
return inj.as_elements(*els)
|
|
@@ -21,7 +21,13 @@ class BackendCatalog(lang.Abstract):
|
|
|
21
21
|
def get_backend(self, service_cls: type[T], name: str) -> Backend:
|
|
22
22
|
raise NotImplementedError
|
|
23
23
|
|
|
24
|
-
def new_backend(
|
|
24
|
+
def new_backend(
|
|
25
|
+
self,
|
|
26
|
+
service_cls: ta.Any,
|
|
27
|
+
name: str,
|
|
28
|
+
*args: ta.Any,
|
|
29
|
+
**kwargs: ta.Any,
|
|
30
|
+
) -> ta.Any:
|
|
25
31
|
be = self.get_backend(service_cls, name)
|
|
26
32
|
return be.factory(*be.configs or [], *args, **kwargs)
|
|
27
33
|
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/chat.py
RENAMED
|
@@ -46,9 +46,12 @@ class AnthropicChatChoicesService:
|
|
|
46
46
|
def __init__(
|
|
47
47
|
self,
|
|
48
48
|
*configs: ApiKey | ModelName,
|
|
49
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
49
50
|
) -> None:
|
|
50
51
|
super().__init__()
|
|
51
52
|
|
|
53
|
+
self._http_client = http_client
|
|
54
|
+
|
|
52
55
|
with tv.consume(*configs) as cc:
|
|
53
56
|
self._api_key = check.not_none(ApiKey.pop_secret(cc, env='ANTHROPIC_API_KEY'))
|
|
54
57
|
self._model_name = cc.pop(self.DEFAULT_MODEL_NAME)
|
|
@@ -88,7 +91,7 @@ class AnthropicChatChoicesService:
|
|
|
88
91
|
|
|
89
92
|
raw_request = msh.marshal(a_req)
|
|
90
93
|
|
|
91
|
-
raw_response = http.
|
|
94
|
+
raw_response = await http.async_request(
|
|
92
95
|
'https://api.anthropic.com/v1/messages',
|
|
93
96
|
headers={
|
|
94
97
|
http.consts.HEADER_CONTENT_TYPE: http.consts.CONTENT_TYPE_JSON,
|
|
@@ -96,6 +99,7 @@ class AnthropicChatChoicesService:
|
|
|
96
99
|
b'anthropic-version': b'2023-06-01',
|
|
97
100
|
},
|
|
98
101
|
data=json.dumps(raw_request).encode('utf-8'),
|
|
102
|
+
client=self._http_client,
|
|
99
103
|
)
|
|
100
104
|
|
|
101
105
|
response = json.loads(check.not_none(raw_response.data).decode('utf-8'))
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/anthropic/stream.py
RENAMED
|
@@ -39,9 +39,15 @@ from .protocol import build_protocol_tool
|
|
|
39
39
|
# )
|
|
40
40
|
@static_check_is_chat_choices_stream_service
|
|
41
41
|
class AnthropicChatChoicesStreamService:
|
|
42
|
-
def __init__(
|
|
42
|
+
def __init__(
|
|
43
|
+
self,
|
|
44
|
+
*configs: Config,
|
|
45
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
46
|
+
) -> None:
|
|
43
47
|
super().__init__()
|
|
44
48
|
|
|
49
|
+
self._http_client = http_client
|
|
50
|
+
|
|
45
51
|
with tv.consume(*configs) as cc:
|
|
46
52
|
self._model_name = cc.pop(AnthropicChatChoicesService.DEFAULT_MODEL_NAME)
|
|
47
53
|
self._api_key = check.not_none(ApiKey.pop_secret(cc, env='ANTHROPIC_API_KEY'))
|
|
@@ -84,8 +90,8 @@ class AnthropicChatChoicesStreamService:
|
|
|
84
90
|
)
|
|
85
91
|
|
|
86
92
|
async with UseResources.or_new(request.options) as rs:
|
|
87
|
-
http_client = rs.
|
|
88
|
-
http_response = rs.
|
|
93
|
+
http_client = await rs.enter_async_context(http.manage_async_client(self._http_client))
|
|
94
|
+
http_response = await rs.enter_async_context(await http_client.stream_request(http_request))
|
|
89
95
|
|
|
90
96
|
async def inner(sink: StreamResponseSink[AiChoicesDeltas]) -> ta.Sequence[ChatChoicesOutputs] | None:
|
|
91
97
|
msg_start: AnthropicSseDecoderEvents.MessageStart | None = None
|
|
@@ -95,7 +101,7 @@ class AnthropicChatChoicesStreamService:
|
|
|
95
101
|
db = DelimitingBuffer([b'\r', b'\n', b'\r\n'])
|
|
96
102
|
sd = sse.SseDecoder()
|
|
97
103
|
while True:
|
|
98
|
-
b = http_response.stream.read1(self.READ_CHUNK_SIZE)
|
|
104
|
+
b = await http_response.stream.read1(self.READ_CHUNK_SIZE)
|
|
99
105
|
for l in db.feed(b):
|
|
100
106
|
if isinstance(l, DelimitingBuffer.Incomplete):
|
|
101
107
|
# FIXME: handle
|
|
@@ -40,9 +40,15 @@ from .tools import build_tool_spec_schema
|
|
|
40
40
|
class GoogleChatChoicesService:
|
|
41
41
|
DEFAULT_MODEL_NAME: ta.ClassVar[ModelName] = ModelName(check.not_none(MODEL_NAMES.default))
|
|
42
42
|
|
|
43
|
-
def __init__(
|
|
43
|
+
def __init__(
|
|
44
|
+
self,
|
|
45
|
+
*configs: ApiKey | ModelName,
|
|
46
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
47
|
+
) -> None:
|
|
44
48
|
super().__init__()
|
|
45
49
|
|
|
50
|
+
self._http_client = http_client
|
|
51
|
+
|
|
46
52
|
with tv.consume(*configs) as cc:
|
|
47
53
|
self._model_name = cc.pop(self.DEFAULT_MODEL_NAME)
|
|
48
54
|
self._api_key = ApiKey.pop_secret(cc, env='GEMINI_API_KEY')
|
|
@@ -149,11 +155,12 @@ class GoogleChatChoicesService:
|
|
|
149
155
|
|
|
150
156
|
model_name = MODEL_NAMES.resolve(self._model_name.v)
|
|
151
157
|
|
|
152
|
-
resp = http.
|
|
158
|
+
resp = await http.async_request(
|
|
153
159
|
f'{self.BASE_URL.rstrip("/")}/{model_name}:generateContent?key={key}',
|
|
154
160
|
headers={'Content-Type': 'application/json'},
|
|
155
161
|
data=json.dumps_compact(req_dct).encode('utf-8'),
|
|
156
162
|
method='POST',
|
|
163
|
+
client=self._http_client,
|
|
157
164
|
)
|
|
158
165
|
|
|
159
166
|
resp_dct = json.loads(check.not_none(resp.data).decode('utf-8'))
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/search.py
RENAMED
|
@@ -82,12 +82,16 @@ class CseSearchService:
|
|
|
82
82
|
self,
|
|
83
83
|
cse_id: str | None = None,
|
|
84
84
|
cse_api_key: str | None = None,
|
|
85
|
+
*,
|
|
86
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
85
87
|
) -> None:
|
|
86
88
|
super().__init__()
|
|
87
89
|
|
|
88
90
|
self._cse_id = cse_id
|
|
89
91
|
self._cse_api_key = cse_api_key
|
|
90
92
|
|
|
93
|
+
self._http_client = http_client
|
|
94
|
+
|
|
91
95
|
async def invoke(
|
|
92
96
|
self,
|
|
93
97
|
request: SearchRequest,
|
|
@@ -97,8 +101,9 @@ class CseSearchService:
|
|
|
97
101
|
cx=check.non_empty_str(self._cse_id),
|
|
98
102
|
q=request.v,
|
|
99
103
|
))
|
|
100
|
-
resp = http.
|
|
104
|
+
resp = await http.async_request(
|
|
101
105
|
f'https://www.googleapis.com/customsearch/v1?{qs}',
|
|
106
|
+
client=self._http_client,
|
|
102
107
|
)
|
|
103
108
|
out = check.not_none(resp.data)
|
|
104
109
|
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/google/stream.py
RENAMED
|
@@ -46,9 +46,15 @@ from .tools import build_tool_spec_schema
|
|
|
46
46
|
class GoogleChatChoicesStreamService:
|
|
47
47
|
DEFAULT_MODEL_NAME: ta.ClassVar[ModelName] = ModelName(check.not_none(MODEL_NAMES.default))
|
|
48
48
|
|
|
49
|
-
def __init__(
|
|
49
|
+
def __init__(
|
|
50
|
+
self,
|
|
51
|
+
*configs: ApiKey | ModelName,
|
|
52
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
53
|
+
) -> None:
|
|
50
54
|
super().__init__()
|
|
51
55
|
|
|
56
|
+
self._http_client = http_client
|
|
57
|
+
|
|
52
58
|
with tv.consume(*configs) as cc:
|
|
53
59
|
self._model_name = cc.pop(self.DEFAULT_MODEL_NAME)
|
|
54
60
|
self._api_key = ApiKey.pop_secret(cc, env='GEMINI_API_KEY')
|
|
@@ -163,13 +169,13 @@ class GoogleChatChoicesStreamService:
|
|
|
163
169
|
)
|
|
164
170
|
|
|
165
171
|
async with UseResources.or_new(request.options) as rs:
|
|
166
|
-
http_client = rs.
|
|
167
|
-
http_response = rs.
|
|
172
|
+
http_client = await rs.enter_async_context(http.manage_async_client(self._http_client))
|
|
173
|
+
http_response = await rs.enter_async_context(await http_client.stream_request(http_request))
|
|
168
174
|
|
|
169
175
|
async def inner(sink: StreamResponseSink[AiChoicesDeltas]) -> ta.Sequence[ChatChoicesOutputs] | None:
|
|
170
176
|
db = DelimitingBuffer([b'\r', b'\n', b'\r\n'])
|
|
171
177
|
while True:
|
|
172
|
-
b = http_response.stream.read1(self.READ_CHUNK_SIZE)
|
|
178
|
+
b = await http_response.stream.read1(self.READ_CHUNK_SIZE)
|
|
173
179
|
for bl in db.feed(b):
|
|
174
180
|
if isinstance(bl, DelimitingBuffer.Incomplete):
|
|
175
181
|
# FIXME: handle
|
|
@@ -40,10 +40,16 @@ class MistralChatChoicesService:
|
|
|
40
40
|
AiMessage: 'assistant',
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
def __init__(
|
|
43
|
+
def __init__(
|
|
44
|
+
self,
|
|
45
|
+
*,
|
|
46
|
+
api_key: str | None = None,
|
|
47
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
48
|
+
) -> None:
|
|
44
49
|
super().__init__()
|
|
45
50
|
|
|
46
51
|
self._api_key = api_key
|
|
52
|
+
self._http_client = http_client
|
|
47
53
|
|
|
48
54
|
def _get_msg_content(self, m: Message) -> str | None:
|
|
49
55
|
if isinstance(m, AiMessage):
|
|
@@ -73,7 +79,7 @@ class MistralChatChoicesService:
|
|
|
73
79
|
],
|
|
74
80
|
}
|
|
75
81
|
|
|
76
|
-
resp = http.
|
|
82
|
+
resp = await http.async_request(
|
|
77
83
|
'https://api.mistral.ai/v1/chat/completions',
|
|
78
84
|
method='POST',
|
|
79
85
|
data=json.dumps_compact(req_dct).encode('utf-8'),
|
|
@@ -82,6 +88,7 @@ class MistralChatChoicesService:
|
|
|
82
88
|
'Accept': 'application/json',
|
|
83
89
|
'Authorization': f'Bearer {key}',
|
|
84
90
|
},
|
|
91
|
+
client=self._http_client,
|
|
85
92
|
)
|
|
86
93
|
|
|
87
94
|
if resp.status == 429:
|
|
@@ -66,7 +66,7 @@ class BaseOllamaChatChoicesService(lang.Abstract):
|
|
|
66
66
|
|
|
67
67
|
#
|
|
68
68
|
|
|
69
|
-
ROLE_MAP: ta.ClassVar[ta.Mapping[type[Message], pt.Role]] = {
|
|
69
|
+
ROLE_MAP: ta.ClassVar[ta.Mapping[type[Message], pt.Role]] = { # noqa
|
|
70
70
|
SystemMessage: 'system',
|
|
71
71
|
UserMessage: 'user',
|
|
72
72
|
AiMessage: 'assistant',
|
|
@@ -42,9 +42,15 @@ from .names import MODEL_NAMES
|
|
|
42
42
|
class OpenaiChatChoicesService:
|
|
43
43
|
DEFAULT_MODEL_NAME: ta.ClassVar[ModelName] = ModelName(check.not_none(MODEL_NAMES.default))
|
|
44
44
|
|
|
45
|
-
def __init__(
|
|
45
|
+
def __init__(
|
|
46
|
+
self,
|
|
47
|
+
*configs: ApiKey | ModelName | DefaultOptions,
|
|
48
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
49
|
+
) -> None:
|
|
46
50
|
super().__init__()
|
|
47
51
|
|
|
52
|
+
self._http_client = http_client
|
|
53
|
+
|
|
48
54
|
with tv.consume(*configs) as cc:
|
|
49
55
|
self._model_name = cc.pop(self.DEFAULT_MODEL_NAME)
|
|
50
56
|
self._api_key = ApiKey.pop_secret(cc, env='OPENAI_API_KEY')
|
|
@@ -68,13 +74,14 @@ class OpenaiChatChoicesService:
|
|
|
68
74
|
|
|
69
75
|
raw_request = msh.marshal(rh.oai_request())
|
|
70
76
|
|
|
71
|
-
http_response = http.
|
|
77
|
+
http_response = await http.async_request(
|
|
72
78
|
'https://api.openai.com/v1/chat/completions',
|
|
73
79
|
headers={
|
|
74
80
|
http.consts.HEADER_CONTENT_TYPE: http.consts.CONTENT_TYPE_JSON,
|
|
75
81
|
http.consts.HEADER_AUTH: http.consts.format_bearer_auth_header(check.not_none(self._api_key).reveal()),
|
|
76
82
|
},
|
|
77
83
|
data=json.dumps(raw_request).encode('utf-8'),
|
|
84
|
+
client=self._http_client,
|
|
78
85
|
)
|
|
79
86
|
|
|
80
87
|
raw_response = json.loads(check.not_none(http_response.data).decode('utf-8'))
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/completion.py
RENAMED
|
@@ -23,9 +23,15 @@ from ....standard import ApiKey
|
|
|
23
23
|
class OpenaiCompletionService:
|
|
24
24
|
DEFAULT_MODEL_NAME: ta.ClassVar[str] = 'gpt-3.5-turbo-instruct'
|
|
25
25
|
|
|
26
|
-
def __init__(
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
*configs: Config,
|
|
29
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
30
|
+
) -> None:
|
|
27
31
|
super().__init__()
|
|
28
32
|
|
|
33
|
+
self._http_client = http_client
|
|
34
|
+
|
|
29
35
|
with tv.consume(*configs) as cc:
|
|
30
36
|
self._api_key = ApiKey.pop_secret(cc, env='OPENAI_API_KEY')
|
|
31
37
|
|
|
@@ -41,13 +47,14 @@ class OpenaiCompletionService:
|
|
|
41
47
|
stream=False,
|
|
42
48
|
)
|
|
43
49
|
|
|
44
|
-
raw_response = http.
|
|
50
|
+
raw_response = await http.async_request(
|
|
45
51
|
'https://api.openai.com/v1/completions',
|
|
46
52
|
headers={
|
|
47
53
|
http.consts.HEADER_CONTENT_TYPE: http.consts.CONTENT_TYPE_JSON,
|
|
48
54
|
http.consts.HEADER_AUTH: http.consts.format_bearer_auth_header(check.not_none(self._api_key).reveal()),
|
|
49
55
|
},
|
|
50
56
|
data=json.dumps(raw_request).encode('utf-8'),
|
|
57
|
+
client=self._http_client,
|
|
51
58
|
)
|
|
52
59
|
|
|
53
60
|
response = json.loads(check.not_none(raw_response.data).decode('utf-8'))
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/embedding.py
RENAMED
|
@@ -22,9 +22,15 @@ from ....vectors.types import Vector
|
|
|
22
22
|
class OpenaiEmbeddingService:
|
|
23
23
|
model = 'text-embedding-3-small'
|
|
24
24
|
|
|
25
|
-
def __init__(
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
*configs: Config,
|
|
28
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
29
|
+
) -> None:
|
|
26
30
|
super().__init__()
|
|
27
31
|
|
|
32
|
+
self._http_client = http_client
|
|
33
|
+
|
|
28
34
|
with tv.consume(*configs) as cc:
|
|
29
35
|
self._api_key = ApiKey.pop_secret(cc, env='OPENAI_API_KEY')
|
|
30
36
|
|
|
@@ -34,13 +40,14 @@ class OpenaiEmbeddingService:
|
|
|
34
40
|
input=check.isinstance(request.v, str),
|
|
35
41
|
)
|
|
36
42
|
|
|
37
|
-
raw_response = http.
|
|
43
|
+
raw_response = await http.async_request(
|
|
38
44
|
'https://api.openai.com/v1/embeddings',
|
|
39
45
|
headers={
|
|
40
46
|
http.consts.HEADER_CONTENT_TYPE: http.consts.CONTENT_TYPE_JSON,
|
|
41
47
|
http.consts.HEADER_AUTH: http.consts.format_bearer_auth_header(check.not_none(self._api_key).reveal()),
|
|
42
48
|
},
|
|
43
49
|
data=json.dumps(raw_request).encode('utf-8'),
|
|
50
|
+
client=self._http_client,
|
|
44
51
|
)
|
|
45
52
|
|
|
46
53
|
response = json.loads(check.not_none(raw_response.data).decode('utf-8'))
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/minichain/backends/impls/openai/stream.py
RENAMED
|
@@ -41,9 +41,15 @@ from .names import MODEL_NAMES
|
|
|
41
41
|
# )
|
|
42
42
|
@static_check_is_chat_choices_stream_service
|
|
43
43
|
class OpenaiChatChoicesStreamService:
|
|
44
|
-
def __init__(
|
|
44
|
+
def __init__(
|
|
45
|
+
self,
|
|
46
|
+
*configs: Config,
|
|
47
|
+
http_client: http.AsyncHttpClient | None = None,
|
|
48
|
+
) -> None:
|
|
45
49
|
super().__init__()
|
|
46
50
|
|
|
51
|
+
self._http_client = http_client
|
|
52
|
+
|
|
47
53
|
with tv.consume(*configs) as cc:
|
|
48
54
|
self._model_name = cc.pop(OpenaiChatChoicesService.DEFAULT_MODEL_NAME)
|
|
49
55
|
self._api_key = ApiKey.pop_secret(cc, env='OPENAI_API_KEY')
|
|
@@ -81,14 +87,14 @@ class OpenaiChatChoicesStreamService:
|
|
|
81
87
|
)
|
|
82
88
|
|
|
83
89
|
async with UseResources.or_new(request.options) as rs:
|
|
84
|
-
http_client = rs.
|
|
85
|
-
http_response = rs.
|
|
90
|
+
http_client = await rs.enter_async_context(http.manage_async_client(self._http_client))
|
|
91
|
+
http_response = await rs.enter_async_context(await http_client.stream_request(http_request))
|
|
86
92
|
|
|
87
93
|
async def inner(sink: StreamResponseSink[AiChoicesDeltas]) -> ta.Sequence[ChatChoicesOutputs]:
|
|
88
94
|
db = DelimitingBuffer([b'\r', b'\n', b'\r\n'])
|
|
89
95
|
sd = sse.SseDecoder()
|
|
90
96
|
while True:
|
|
91
|
-
b = http_response.stream.read1(self.READ_CHUNK_SIZE)
|
|
97
|
+
b = await http_response.stream.read1(self.READ_CHUNK_SIZE)
|
|
92
98
|
for l in db.feed(b):
|
|
93
99
|
if isinstance(l, DelimitingBuffer.Incomplete):
|
|
94
100
|
# FIXME: handle
|
|
@@ -16,6 +16,7 @@ from omdev.tools.git.messages import GitMessageGenerator
|
|
|
16
16
|
from omlish import check
|
|
17
17
|
from omlish import lang
|
|
18
18
|
from omlish.configs.classes import Configurable
|
|
19
|
+
from omlish.http import all as http
|
|
19
20
|
from omlish.subprocesses.sync import subprocesses
|
|
20
21
|
|
|
21
22
|
from .. import minichain as mc
|
|
@@ -76,7 +77,9 @@ class OpenaiGitAiBackend(GitAiBackend['OpenaiGitAiBackend.Config']):
|
|
|
76
77
|
if (sec := load_secrets().try_get(key.lower())) is not None:
|
|
77
78
|
os.environ[key] = sec.reveal()
|
|
78
79
|
|
|
79
|
-
llm = OpenaiChatChoicesService(
|
|
80
|
+
llm = OpenaiChatChoicesService(
|
|
81
|
+
http_client=http.SyncAsyncHttpClient(http.client()),
|
|
82
|
+
)
|
|
80
83
|
|
|
81
84
|
resp = lang.sync_await(llm.invoke(mc.ChatChoicesRequest(
|
|
82
85
|
[mc.UserMessage(prompt)],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ommlds
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev471
|
|
4
4
|
Summary: ommlds
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -14,8 +14,8 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
14
14
|
Requires-Python: >=3.13
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
-
Requires-Dist: omdev==0.0.0.
|
|
18
|
-
Requires-Dist: omlish==0.0.0.
|
|
17
|
+
Requires-Dist: omdev==0.0.0.dev471
|
|
18
|
+
Requires-Dist: omlish==0.0.0.dev471
|
|
19
19
|
Provides-Extra: all
|
|
20
20
|
Requires-Dist: llama-cpp-python~=0.3; extra == "all"
|
|
21
21
|
Requires-Dist: mlx~=0.29; extra == "all"
|
|
@@ -5,7 +5,6 @@ pyproject.toml
|
|
|
5
5
|
ommlds/.omlish-manifests.json
|
|
6
6
|
ommlds/__about__.py
|
|
7
7
|
ommlds/__init__.py
|
|
8
|
-
ommlds/huggingface.py
|
|
9
8
|
ommlds.egg-info/PKG-INFO
|
|
10
9
|
ommlds.egg-info/SOURCES.txt
|
|
11
10
|
ommlds.egg-info/dependency_links.txt
|
|
@@ -18,6 +17,7 @@ ommlds/_hacks/names.py
|
|
|
18
17
|
ommlds/_hacks/params.py
|
|
19
18
|
ommlds/_hacks/patches.py
|
|
20
19
|
ommlds/backends/__init__.py
|
|
20
|
+
ommlds/backends/huggingface.py
|
|
21
21
|
ommlds/backends/anthropic/__init__.py
|
|
22
22
|
ommlds/backends/anthropic/protocol/__init__.py
|
|
23
23
|
ommlds/backends/anthropic/protocol/_marshal.py
|
|
@@ -13,7 +13,7 @@ urls = {source = 'https://github.com/wrmsr/omlish'}
|
|
|
13
13
|
license = 'BSD-3-Clause'
|
|
14
14
|
readme = 'README.md'
|
|
15
15
|
requires-python = '>=3.13'
|
|
16
|
-
version = '0.0.0.
|
|
16
|
+
version = '0.0.0.dev471'
|
|
17
17
|
classifiers = [
|
|
18
18
|
'Development Status :: 2 - Pre-Alpha',
|
|
19
19
|
'Intended Audience :: Developers',
|
|
@@ -24,8 +24,8 @@ classifiers = [
|
|
|
24
24
|
]
|
|
25
25
|
description = 'ommlds'
|
|
26
26
|
dependencies = [
|
|
27
|
-
'omdev == 0.0.0.
|
|
28
|
-
'omlish == 0.0.0.
|
|
27
|
+
'omdev == 0.0.0.dev471',
|
|
28
|
+
'omlish == 0.0.0.dev471',
|
|
29
29
|
]
|
|
30
30
|
|
|
31
31
|
[project.optional-dependencies]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/__init__.py
RENAMED
|
File without changes
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/_marshal.py
RENAMED
|
File without changes
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/assemble.py
RENAMED
|
File without changes
|
{ommlds-0.0.0.dev469 → ommlds-0.0.0.dev471}/ommlds/backends/anthropic/protocol/sse/events.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|