From ba6bb64bbcccd2561f64600164738d928a52665f Mon Sep 17 00:00:00 2001 From: Ric Date: Mon, 12 Jan 2026 09:20:37 -0800 Subject: [PATCH] fix: respect custom authorization headers in extra-openai-models When users configure custom authorization headers in extra-openai-models.yaml for OpenAI-compatible APIs with Basic Auth or other auth schemes, the custom header was being overridden by "Bearer DUMMY_KEY". This fix checks if custom headers already include an authorization header (case-insensitive) and skips setting the dummy API key in that case. Fixes #1328 --- ._.git | Bin 0 -> 4096 bytes ._.github | Bin 0 -> 4096 bytes ._.gitignore | Bin 0 -> 4096 bytes ._.readthedocs.yaml | Bin 0 -> 4096 bytes ._.venv | Bin 0 -> 4096 bytes ._AGENTS.md | Bin 0 -> 4096 bytes ._Justfile | Bin 0 -> 4096 bytes ._LICENSE | Bin 0 -> 4096 bytes ._MANIFEST.in | Bin 0 -> 4096 bytes ._README.md | Bin 0 -> 4096 bytes ._docs | Bin 0 -> 4096 bytes ._llm | Bin 0 -> 4096 bytes ._mypy.ini | Bin 0 -> 4096 bytes ._pyproject.toml | Bin 0 -> 4096 bytes ._pytest.ini | Bin 0 -> 4096 bytes ._ruff.toml | Bin 0 -> 4096 bytes ._tests | Bin 0 -> 4096 bytes .github/._FUNDING.yml | Bin 0 -> 4096 bytes .github/._dependabot.yml | Bin 0 -> 4096 bytes .github/._workflows | Bin 0 -> 4096 bytes .github/workflows/._cog.yml | Bin 0 -> 4096 bytes .github/workflows/._publish.yml | Bin 0 -> 4096 bytes .github/workflows/._stable-docs.yml | Bin 0 -> 4096 bytes .github/workflows/._test.yml | Bin 0 -> 4096 bytes docs/._.gitignore | Bin 0 -> 4096 bytes docs/._Makefile | Bin 0 -> 4096 bytes docs/.__templates | Bin 0 -> 4096 bytes docs/._aliases.md | Bin 0 -> 4096 bytes docs/._changelog.md | Bin 0 -> 4096 bytes docs/._conf.py | Bin 0 -> 4096 bytes docs/._contributing.md | Bin 0 -> 4096 bytes docs/._embeddings | Bin 0 -> 4096 bytes docs/._fragments.md | Bin 0 -> 4096 bytes docs/._help.md | Bin 0 -> 4096 bytes docs/._index.md | Bin 0 -> 4096 bytes docs/._logging.md | Bin 0 -> 4096 bytes docs/._openai-models.md | Bin 0 -> 4096 bytes docs/._other-models.md | Bin 0 -> 4096 bytes docs/._plugins | Bin 0 -> 4096 bytes docs/._python-api.md | Bin 0 -> 4096 bytes docs/._related-tools.md | Bin 0 -> 4096 bytes docs/._requirements.txt | Bin 0 -> 4096 bytes docs/._schemas.md | Bin 0 -> 4096 bytes docs/._setup.md | Bin 0 -> 4096 bytes docs/._templates.md | Bin 0 -> 4096 bytes docs/._tools.md | Bin 0 -> 4096 bytes docs/._usage.md | Bin 0 -> 4096 bytes docs/_templates/._base.html | Bin 0 -> 4096 bytes docs/embeddings/._cli.md | Bin 0 -> 4096 bytes docs/embeddings/._index.md | Bin 0 -> 4096 bytes docs/embeddings/._python-api.md | Bin 0 -> 4096 bytes docs/embeddings/._storage.md | Bin 0 -> 4096 bytes docs/embeddings/._writing-plugins.md | Bin 0 -> 4096 bytes docs/plugins/._advanced-model-plugins.md | Bin 0 -> 4096 bytes docs/plugins/._directory.md | Bin 0 -> 4096 bytes docs/plugins/._index.md | Bin 0 -> 4096 bytes docs/plugins/._installing-plugins.md | Bin 0 -> 4096 bytes docs/plugins/._llm-markov | Bin 0 -> 4096 bytes docs/plugins/._plugin-hooks.md | Bin 0 -> 4096 bytes docs/plugins/._plugin-utilities.md | Bin 0 -> 4096 bytes docs/plugins/._tutorial-model-plugin.md | Bin 0 -> 4096 bytes docs/plugins/llm-markov/._llm_markov.py | Bin 0 -> 4096 bytes docs/plugins/llm-markov/._pyproject.toml | Bin 0 -> 4096 bytes llm/.___init__.py | Bin 0 -> 4096 bytes llm/.___main__.py | Bin 0 -> 4096 bytes llm/._cli.py | Bin 0 -> 4096 bytes llm/._default_plugins | Bin 0 -> 4096 bytes llm/._embeddings.py | Bin 0 -> 4096 bytes llm/._embeddings_migrations.py | Bin 0 -> 4096 bytes llm/._errors.py | Bin 0 -> 4096 bytes llm/._hookspecs.py | Bin 0 -> 4096 bytes llm/._migrations.py | Bin 0 -> 4096 bytes llm/._models.py | Bin 0 -> 4096 bytes llm/._plugins.py | Bin 0 -> 4096 bytes llm/._py.typed | Bin 0 -> 4096 bytes llm/._templates.py | Bin 0 -> 4096 bytes llm/._tools.py | Bin 0 -> 4096 bytes llm/._utils.py | Bin 0 -> 4096 bytes llm/default_plugins/.___init__.py | Bin 0 -> 4096 bytes llm/default_plugins/._default_tools.py | Bin 0 -> 4096 bytes llm/default_plugins/._openai_models.py | Bin 0 -> 4096 bytes llm/default_plugins/openai_models.py | 11 ++++- tests/._cassettes | Bin 0 -> 4096 bytes tests/._conftest.py | Bin 0 -> 4096 bytes tests/._test-llm-load-plugins.sh | Bin 0 -> 4096 bytes tests/._test_aliases.py | Bin 0 -> 4096 bytes tests/._test_async.py | Bin 0 -> 4096 bytes tests/._test_attachments.py | Bin 0 -> 4096 bytes tests/._test_chat.py | Bin 0 -> 4096 bytes tests/._test_chat_templates.py | Bin 0 -> 4096 bytes tests/._test_cli_openai_models.py | Bin 0 -> 4096 bytes tests/._test_cli_options.py | Bin 0 -> 4096 bytes tests/._test_embed.py | Bin 0 -> 4096 bytes tests/._test_embed_cli.py | Bin 0 -> 4096 bytes tests/._test_encode_decode.py | Bin 0 -> 4096 bytes tests/._test_fragments_cli.py | Bin 0 -> 4096 bytes tests/._test_keys.py | Bin 0 -> 4096 bytes tests/._test_llm.py | Bin 0 -> 4096 bytes tests/._test_llm_logs.py | Bin 0 -> 4096 bytes tests/._test_migrate.py | Bin 0 -> 4096 bytes tests/._test_plugins.py | Bin 0 -> 4096 bytes tests/._test_templates.py | Bin 0 -> 4096 bytes tests/._test_tools.py | Bin 0 -> 4096 bytes tests/._test_tools_streaming.py | Bin 0 -> 4096 bytes tests/._test_utils.py | Bin 0 -> 4096 bytes tests/cassettes/._test_tools | Bin 0 -> 4096 bytes tests/cassettes/._test_tools_streaming | Bin 0 -> 4096 bytes .../test_tools/._test_tool_use_basic.yaml | Bin 0 -> 4096 bytes .../._test_tool_use_chain_of_two_calls.yaml | Bin 0 -> 4096 bytes .../._test_tools_streaming_variant_a.yaml | Bin 0 -> 4096 bytes .../._test_tools_streaming_variant_b.yaml | Bin 0 -> 4096 bytes .../._test_tools_streaming_variant_c.yaml | Bin 0 -> 4096 bytes tests/test_llm.py | 38 ++++++++++++++++++ 113 files changed, 47 insertions(+), 2 deletions(-) create mode 100755 ._.git create mode 100755 ._.github create mode 100755 ._.gitignore create mode 100755 ._.readthedocs.yaml create mode 100755 ._.venv create mode 100755 ._AGENTS.md create mode 100755 ._Justfile create mode 100755 ._LICENSE create mode 100755 ._MANIFEST.in create mode 100755 ._README.md create mode 100755 ._docs create mode 100755 ._llm create mode 100755 ._mypy.ini create mode 100755 ._pyproject.toml create mode 100755 ._pytest.ini create mode 100755 ._ruff.toml create mode 100755 ._tests create mode 100755 .github/._FUNDING.yml create mode 100755 .github/._dependabot.yml create mode 100755 .github/._workflows create mode 100755 .github/workflows/._cog.yml create mode 100755 .github/workflows/._publish.yml create mode 100755 .github/workflows/._stable-docs.yml create mode 100755 .github/workflows/._test.yml create mode 100755 docs/._.gitignore create mode 100755 docs/._Makefile create mode 100755 docs/.__templates create mode 100755 docs/._aliases.md create mode 100755 docs/._changelog.md create mode 100755 docs/._conf.py create mode 100755 docs/._contributing.md create mode 100755 docs/._embeddings create mode 100755 docs/._fragments.md create mode 100755 docs/._help.md create mode 100755 docs/._index.md create mode 100755 docs/._logging.md create mode 100755 docs/._openai-models.md create mode 100755 docs/._other-models.md create mode 100755 docs/._plugins create mode 100755 docs/._python-api.md create mode 100755 docs/._related-tools.md create mode 100755 docs/._requirements.txt create mode 100755 docs/._schemas.md create mode 100755 docs/._setup.md create mode 100755 docs/._templates.md create mode 100755 docs/._tools.md create mode 100755 docs/._usage.md create mode 100755 docs/_templates/._base.html create mode 100755 docs/embeddings/._cli.md create mode 100755 docs/embeddings/._index.md create mode 100755 docs/embeddings/._python-api.md create mode 100755 docs/embeddings/._storage.md create mode 100755 docs/embeddings/._writing-plugins.md create mode 100755 docs/plugins/._advanced-model-plugins.md create mode 100755 docs/plugins/._directory.md create mode 100755 docs/plugins/._index.md create mode 100755 docs/plugins/._installing-plugins.md create mode 100755 docs/plugins/._llm-markov create mode 100755 docs/plugins/._plugin-hooks.md create mode 100755 docs/plugins/._plugin-utilities.md create mode 100755 docs/plugins/._tutorial-model-plugin.md create mode 100755 docs/plugins/llm-markov/._llm_markov.py create mode 100755 docs/plugins/llm-markov/._pyproject.toml create mode 100755 llm/.___init__.py create mode 100755 llm/.___main__.py create mode 100755 llm/._cli.py create mode 100755 llm/._default_plugins create mode 100755 llm/._embeddings.py create mode 100755 llm/._embeddings_migrations.py create mode 100755 llm/._errors.py create mode 100755 llm/._hookspecs.py create mode 100755 llm/._migrations.py create mode 100755 llm/._models.py create mode 100755 llm/._plugins.py create mode 100755 llm/._py.typed create mode 100755 llm/._templates.py create mode 100755 llm/._tools.py create mode 100755 llm/._utils.py create mode 100755 llm/default_plugins/.___init__.py create mode 100755 llm/default_plugins/._default_tools.py create mode 100644 llm/default_plugins/._openai_models.py create mode 100755 tests/._cassettes create mode 100755 tests/._conftest.py create mode 100755 tests/._test-llm-load-plugins.sh create mode 100755 tests/._test_aliases.py create mode 100755 tests/._test_async.py create mode 100755 tests/._test_attachments.py create mode 100755 tests/._test_chat.py create mode 100755 tests/._test_chat_templates.py create mode 100755 tests/._test_cli_openai_models.py create mode 100755 tests/._test_cli_options.py create mode 100755 tests/._test_embed.py create mode 100755 tests/._test_embed_cli.py create mode 100755 tests/._test_encode_decode.py create mode 100755 tests/._test_fragments_cli.py create mode 100755 tests/._test_keys.py create mode 100644 tests/._test_llm.py create mode 100755 tests/._test_llm_logs.py create mode 100755 tests/._test_migrate.py create mode 100755 tests/._test_plugins.py create mode 100755 tests/._test_templates.py create mode 100755 tests/._test_tools.py create mode 100755 tests/._test_tools_streaming.py create mode 100755 tests/._test_utils.py create mode 100755 tests/cassettes/._test_tools create mode 100755 tests/cassettes/._test_tools_streaming create mode 100755 tests/cassettes/test_tools/._test_tool_use_basic.yaml create mode 100755 tests/cassettes/test_tools/._test_tool_use_chain_of_two_calls.yaml create mode 100755 tests/cassettes/test_tools_streaming/._test_tools_streaming_variant_a.yaml create mode 100755 tests/cassettes/test_tools_streaming/._test_tools_streaming_variant_b.yaml create mode 100755 tests/cassettes/test_tools_streaming/._test_tools_streaming_variant_c.yaml diff --git a/._.git b/._.git new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._.github b/._.github new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._.gitignore b/._.gitignore new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._.readthedocs.yaml b/._.readthedocs.yaml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._.venv b/._.venv new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._AGENTS.md b/._AGENTS.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._Justfile b/._Justfile new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._LICENSE b/._LICENSE new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._MANIFEST.in b/._MANIFEST.in new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._README.md b/._README.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._docs b/._docs new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._llm b/._llm new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._mypy.ini b/._mypy.ini new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._pyproject.toml b/._pyproject.toml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._pytest.ini b/._pytest.ini new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._ruff.toml b/._ruff.toml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/._tests b/._tests new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/.github/._FUNDING.yml b/.github/._FUNDING.yml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/.github/._dependabot.yml b/.github/._dependabot.yml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/.github/._workflows b/.github/._workflows new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/.github/workflows/._cog.yml b/.github/workflows/._cog.yml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/.github/workflows/._publish.yml b/.github/workflows/._publish.yml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/.github/workflows/._stable-docs.yml b/.github/workflows/._stable-docs.yml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/.github/workflows/._test.yml b/.github/workflows/._test.yml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._.gitignore b/docs/._.gitignore new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._Makefile b/docs/._Makefile new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/.__templates b/docs/.__templates new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._aliases.md b/docs/._aliases.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._changelog.md b/docs/._changelog.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._conf.py b/docs/._conf.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._contributing.md b/docs/._contributing.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._embeddings b/docs/._embeddings new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._fragments.md b/docs/._fragments.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._help.md b/docs/._help.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._index.md b/docs/._index.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._logging.md b/docs/._logging.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._openai-models.md b/docs/._openai-models.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._other-models.md b/docs/._other-models.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._plugins b/docs/._plugins new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._python-api.md b/docs/._python-api.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._related-tools.md b/docs/._related-tools.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._requirements.txt b/docs/._requirements.txt new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._schemas.md b/docs/._schemas.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._setup.md b/docs/._setup.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._templates.md b/docs/._templates.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._tools.md b/docs/._tools.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/._usage.md b/docs/._usage.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/_templates/._base.html b/docs/_templates/._base.html new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/embeddings/._cli.md b/docs/embeddings/._cli.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/embeddings/._index.md b/docs/embeddings/._index.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/embeddings/._python-api.md b/docs/embeddings/._python-api.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/embeddings/._storage.md b/docs/embeddings/._storage.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/embeddings/._writing-plugins.md b/docs/embeddings/._writing-plugins.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/._advanced-model-plugins.md b/docs/plugins/._advanced-model-plugins.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/._directory.md b/docs/plugins/._directory.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/._index.md b/docs/plugins/._index.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/._installing-plugins.md b/docs/plugins/._installing-plugins.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/._llm-markov b/docs/plugins/._llm-markov new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/._plugin-hooks.md b/docs/plugins/._plugin-hooks.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/._plugin-utilities.md b/docs/plugins/._plugin-utilities.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/._tutorial-model-plugin.md b/docs/plugins/._tutorial-model-plugin.md new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/llm-markov/._llm_markov.py b/docs/plugins/llm-markov/._llm_markov.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/docs/plugins/llm-markov/._pyproject.toml b/docs/plugins/llm-markov/._pyproject.toml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/.___init__.py b/llm/.___init__.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/.___main__.py b/llm/.___main__.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._cli.py b/llm/._cli.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._default_plugins b/llm/._default_plugins new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._embeddings.py b/llm/._embeddings.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._embeddings_migrations.py b/llm/._embeddings_migrations.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._errors.py b/llm/._errors.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._hookspecs.py b/llm/._hookspecs.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._migrations.py b/llm/._migrations.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._models.py b/llm/._models.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._plugins.py b/llm/._plugins.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._py.typed b/llm/._py.typed new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._templates.py b/llm/._templates.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._tools.py b/llm/._tools.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/._utils.py b/llm/._utils.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/default_plugins/.___init__.py b/llm/default_plugins/.___init__.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/default_plugins/._default_tools.py b/llm/default_plugins/._default_tools.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/default_plugins/._openai_models.py b/llm/default_plugins/._openai_models.py new file mode 100644 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/llm/default_plugins/openai_models.py b/llm/default_plugins/openai_models.py index ccca240cf..56c6fe09a 100644 --- a/llm/default_plugins/openai_models.py +++ b/llm/default_plugins/openai_models.py @@ -680,6 +680,12 @@ def set_usage(self, response, usage): input=input_tokens, output=output_tokens, details=simplify_usage_dict(usage) ) + def _headers_include_auth(self): + """Check if custom headers include an authorization header (case-insensitive).""" + if not self.headers: + return False + return any(key.lower() == "authorization" for key in self.headers) + def get_client(self, key, *, async_=False): kwargs = {} if self.api_base: @@ -692,9 +698,10 @@ def get_client(self, key, *, async_=False): kwargs["engine"] = self.api_engine if self.needs_key: kwargs["api_key"] = self.get_key(key) - else: + elif not self._headers_include_auth(): # OpenAI-compatible models don't need a key, but the - # openai client library requires one + # openai client library requires one - unless custom + # headers already provide authorization kwargs["api_key"] = "DUMMY_KEY" if self.headers: kwargs["default_headers"] = self.headers diff --git a/tests/._cassettes b/tests/._cassettes new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._conftest.py b/tests/._conftest.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test-llm-load-plugins.sh b/tests/._test-llm-load-plugins.sh new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_aliases.py b/tests/._test_aliases.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_async.py b/tests/._test_async.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_attachments.py b/tests/._test_attachments.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_chat.py b/tests/._test_chat.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_chat_templates.py b/tests/._test_chat_templates.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_cli_openai_models.py b/tests/._test_cli_openai_models.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_cli_options.py b/tests/._test_cli_options.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_embed.py b/tests/._test_embed.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_embed_cli.py b/tests/._test_embed_cli.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_encode_decode.py b/tests/._test_encode_decode.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_fragments_cli.py b/tests/._test_fragments_cli.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_keys.py b/tests/._test_keys.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_llm.py b/tests/._test_llm.py new file mode 100644 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_llm_logs.py b/tests/._test_llm_logs.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_migrate.py b/tests/._test_migrate.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_plugins.py b/tests/._test_plugins.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_templates.py b/tests/._test_templates.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_tools.py b/tests/._test_tools.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_tools_streaming.py b/tests/._test_tools_streaming.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/._test_utils.py b/tests/._test_utils.py new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/cassettes/._test_tools b/tests/cassettes/._test_tools new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/cassettes/._test_tools_streaming b/tests/cassettes/._test_tools_streaming new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/cassettes/test_tools/._test_tool_use_basic.yaml b/tests/cassettes/test_tools/._test_tool_use_basic.yaml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/cassettes/test_tools/._test_tool_use_chain_of_two_calls.yaml b/tests/cassettes/test_tools/._test_tool_use_chain_of_two_calls.yaml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/cassettes/test_tools_streaming/._test_tools_streaming_variant_a.yaml b/tests/cassettes/test_tools_streaming/._test_tools_streaming_variant_a.yaml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/cassettes/test_tools_streaming/._test_tools_streaming_variant_b.yaml b/tests/cassettes/test_tools_streaming/._test_tools_streaming_variant_b.yaml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/cassettes/test_tools_streaming/._test_tools_streaming_variant_c.yaml b/tests/cassettes/test_tools_streaming/._test_tools_streaming_variant_c.yaml new file mode 100755 index 0000000000000000000000000000000000000000..a94c0a1ada19468598694e0907c9df66cee4d498 GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103vf+zv$ zV3+~K+-O=D5#plB`MG+D1qC^&dId%KWvO|IdC92^j7$vCb@#gpX8*X3rgfA%8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O*h2u+*#u!QkPFGkELJE=EzU13N={Ws y%P-1S$jmEA%`3^w&r8h7sZ_{GO)F7I%1O-22KI%ax`s4`>VLRbWEkZB{|5k1BPnM9 literal 0 HcmV?d00001 diff --git a/tests/test_llm.py b/tests/test_llm.py index 334d40f6f..ce7c98f38 100644 --- a/tests/test_llm.py +++ b/tests/test_llm.py @@ -431,6 +431,44 @@ def test_openai_localai_configuration(mocked_localai, user_path): } +EXTRA_MODELS_YAML_WITH_AUTH = """ +- model_id: custom-auth-model + model_name: my-model + api_base: "http://custom-auth.localhost" + headers: + authorization: "Basic dXNlcjpwYXNzd29yZA==" +""" + + +def test_openai_custom_auth_headers(httpx_mock, user_path): + """Test that custom authorization headers are used instead of DUMMY_KEY.""" + httpx_mock.add_response( + method="POST", + url="http://custom-auth.localhost/chat/completions", + json={ + "model": "my-model", + "usage": {"prompt_tokens": 1, "completion_tokens": 2, "total_tokens": 3}, + "choices": [{"message": {"content": "Authenticated response"}}], + }, + headers={"Content-Type": "application/json"}, + ) + # Write the configuration file with custom auth header + config_path = user_path / "extra-openai-models.yaml" + config_path.write_text(EXTRA_MODELS_YAML_WITH_AUTH, "utf-8") + # Run the prompt + runner = CliRunner() + result = runner.invoke( + cli, ["--no-stream", "--model", "custom-auth-model", "test prompt"] + ) + assert result.exit_code == 0 + assert result.output == "Authenticated response\n" + # Check that the custom authorization header was sent, not DUMMY_KEY + last_request = httpx_mock.get_requests()[-1] + auth_header = last_request.headers.get("authorization") + assert auth_header == "Basic dXNlcjpwYXNzd29yZA==" + assert "Bearer DUMMY_KEY" not in str(last_request.headers) + + @pytest.mark.parametrize( "args,exit_code", (